[Linux] PB 5.61 (x64) - EventType bei ImageGadget

Hier werden, insbesondere in den Beta-Phasen, Bugmeldungen gepostet. Das offizielle BugForum ist allerdings hier.
Benutzeravatar
Makke
Beiträge: 156
Registriert: 24.08.2011 18:00
Computerausstattung: AMD Ryzen 7 5700X - AMD Radeon RX 6800 XT - 32 GB DDR4 SDRAM
Wohnort: Ruhrpott
Kontaktdaten:

[Linux] PB 5.61 (x64) - EventType bei ImageGadget

Beitrag von Makke »

Hallo zusammen,

der beigefügte Code funktioniert nicht unter den Standarteinstellungen des Compilers. Es werden keine EventType() Ergebnisse empfangen. Wenn ich als Lib-Subsystem jedoch "gtk2" wähle, dann funktioniert es.

Code: Alles auswählen

EnableExplicit

Macro DbgEvtType
  If EvtTyp = #PB_EventType_LeftClick
    Debug "Gadget #" + EvtGdg + " received LEFT click"
  ElseIf EvtTyp = #PB_EventType_RightClick
    Debug "Gadget #" + EvtGdg + " received RIGHT click"
  ElseIf EvtTyp = #PB_EventType_Focus
    Debug "Gadget #" + EvtGdg + " gets focus"
  EndIf
EndMacro

If OpenWindow(0, 0, 0, 400, 300, "EventType Test", #PB_Window_SystemMenu)
  
  If LoadImage(0, #PB_Compiler_Home + "examples/sources/Data/PureBasic.bmp")
    
    ImageGadget(1, 10, 10, 180, 40, ImageID(0))
    
    If ContainerGadget(5, 10, 80, 380, 50, #PB_Container_Double)
      
      ImageGadget(2, 5, 5, 180, 40, ImageID(0))
      CloseGadgetList()
      
    EndIf
    
    If ScrollAreaGadget(6, 10, 150, 380, 50, 350, 50, WindowWidth(0)/10, #PB_ScrollArea_Single)
      
      ImageGadget(3, 5, 5, 180, 40, ImageID(0))
      CloseGadgetList()
      
    EndIf
    
  EndIf
  
EndIf

Define.i Quit, WndEvt, EvtGdg, EvtTyp

Repeat
  
  WndEvt = WaitWindowEvent()
  EvtGdg = EventGadget()
  
  Select WndEvt
      
    Case #PB_Event_CloseWindow
      Quit = 1
      
    Case #PB_Event_Gadget
      
      EvtTyp = EventType() : Debug "EvtType:" + EvtTyp
      
      Select EvtGdg
          
        Case 1 : DbgEvtType    
        Case 2 : DbgEvtType
        Case 3 : DbgEvtType
        Case 5 : DbgEvtType
        Case 6 : DbgEvtType
          
      EndSelect
      
   EndSelect
   
Until Quit = 1

End
PB-Version: PureBasic 5.45 LTS (Linux - x64) & PureBasic 5.61 (Linux - x64)
OS: Ubuntu 16.04 x86_64
Compilereinstellungen:
[ ] Unicode-Executable erstellen
[ ] Thread-sicheres Executable erstellen
[ ] OnError-Unterstützung einschalten
[ ] Moderne Themen-Unterstützung aktivieren (für Windows XP und höher)
[ ] Administrator-Modus für Windows Vista und höher anfordern
[ ] User-Modus für Windows Vista und höher anfordern (keine Virtualisierung)
Library Subsystem:gtk3 (mit gtk2 funktionieren die CLICK Events)
---
Windows 11 (64 bit)
Benutzeravatar
RSBasic
Admin
Beiträge: 8022
Registriert: 05.10.2006 18:55
Wohnort: Gernsbach
Kontaktdaten:

Re: [Linux] PB 5.61 (x64) - EventType bei ImageGadget

Beitrag von RSBasic »

Guten Morgen Makke,

kannst du den Bug auch im englischem Forum posten? Da besteht wenigstens die Möglichkeit, dass dieser Fehler behoben wird.
Aus privaten Gründen habe ich leider nicht mehr so viel Zeit wie früher. Bitte habt Verständnis dafür.
Bild
Bild
Benutzeravatar
mk-soft
Beiträge: 3695
Registriert: 24.11.2004 13:12
Wohnort: Germany

Re: [Linux] PB 5.61 (x64) - EventType bei ImageGadget

Beitrag von mk-soft »

Alles ist möglich, fragt sich nur wie...
Projekte ThreadToGUI / EventDesigner V3 / OOP-BaseClass-Modul
Downloads auf MyWebspace / OneDrive
Benutzeravatar
Shardik
Beiträge: 738
Registriert: 25.01.2005 12:19

Re: [Linux] PB 5.61 (x64) - EventType bei ImageGadget

Beitrag von Shardik »

mk-soft hat geschrieben:Bug schon bekannt...
Und behoben für GTK3 in PB 5.46 im ASCII- und Unicode-Modus und in PB 5.62... :wink:
Benutzeravatar
DarkSoul
Beiträge: 689
Registriert: 19.10.2006 12:51

Re: [Linux] PB 5.61 (x64) - EventType bei ImageGadget

Beitrag von DarkSoul »

Ach das ist auch ein PB-Bug? :roll:

Das Problem ist schon älter. :|

Ich habe mir ein Workaround gebastelt Habe inzwischen PB mehrmals aktualisiert aber vorsichtshalber den Workaround drin gelassen und seitdem auf ImageGadget() verzichtet. :mrgreen:

GTK3 ist bei mir generell sehr absturzfreudig, wenn es über PB angesprochen wird. Bei WindowOutput() z.B. InvalidMemory. /:->
Bild
Benutzeravatar
mk-soft
Beiträge: 3695
Registriert: 24.11.2004 13:12
Wohnort: Germany

Re: [Linux] PB 5.61 (x64) - EventType bei ImageGadget

Beitrag von mk-soft »

EDIT:

WindowOutput() sollte man bei gtk3 nicht mehr unbedingt nehmen.
Es wird bei leider gtk3 nicht mehr alles unterstützt.
Am besten ein ImageGadget erstellen und dann einfach mit DisableGadget die Event abschalten.
Dann kann man auch Gadgets auf dem ImageGadget legen, wenn das ImageGadget gesperrt ist.

Kleines Beispiel:

Code: Alles auswählen

;-TOP

Procedure DrawBackGround(Image,col1, col2)
  Protected dx, dy
  dx = ImageWidth(Image)
  dy = ImageHeight(Image)
  StartDrawing(ImageOutput(Image))
    DrawingMode(#PB_2DDrawing_Gradient)      
    BackColor($000000)
    GradientColor(0.8, col1)
    GradientColor(0.8, col2)
    FrontColor($000000)
    LinearGradient(0, 0, 0, dy)      
    Box(0, 0, dx, dy)
  StopDrawing()
EndProcedure

Procedure Main()
  
  If OpenWindow(0, #PB_Ignore, #PB_Ignore, 800, 300, "Backgroung Image", #PB_Window_SystemMenu)
    CreateImage(0, WindowWidth(0), WindowHeight(0), 32)
    DrawBackGround(0, $800000, $FF0000)
    ImageGadget(0, 0, 0, WindowWidth(0), WindowHeight(0), ImageID(0))
    DisableGadget(0,1)
    
    StringGadget(1, 10, 10, 780, 25, "")
    ButtonGadget(2, 10, 45, 120, 25, "Button")
    
    Repeat
      Select WaitWindowEvent()
        Case #PB_Event_CloseWindow
          Break
        Case #PB_Event_Gadget
          Select EventGadget()
            Case 2
              DrawBackGround(0, Random($FFFFFF), Random($FFFFFF))
              SetGadgetState(0, ImageID(0))
          EndSelect
      EndSelect
    ForEver
    
  EndIf
  
EndProcedure : Main()
Alles ist möglich, fragt sich nur wie...
Projekte ThreadToGUI / EventDesigner V3 / OOP-BaseClass-Modul
Downloads auf MyWebspace / OneDrive
Antworten