Systray und linke Maustaste mit LMDE6 und PB 6.12

In dieser Linux-Ecke dürfen nur Themen rund um Linux geschrieben werden.
Beiträge, die plattformübergreifend sind, gehören ins 'Allgemein'-Forum.
jogo
Beiträge: 123
Registriert: 22.11.2020 20:05
Computerausstattung: 'ne Handvoll gebrauchte Laptops & PCs mit Mint und LMDE

Systray und linke Maustaste mit LMDE6 und PB 6.12

Beitrag von jogo »

Moin,
Mit LMDE6 und PB 6.12 gelingt mir nicht mehr das Erstellen des SysTrayIcons, wenn als Subsystem GTK2 eingestellt ist.
Mit Subsystem QT wird es zwar erstellt, aber die linke Maustaste wird nicht mehr erkannt, sondern nur die rechte Maustaste.
Ich reagiere auf beide Maustasten mit unterschiedliche Aktionen.
Linke Maus = Popmenü // rechte Maus = Fenster verstecken/vorholen
Das Popmenü wird aber grundsätzlich erstellt, wenn ich es auf die rechten Maustaste lege.
Hat vllt. jemand ein Systray, welches auf die linke Maus reagieren soll?

Bis PB 6.04 lief alles perfekt mit GTK2 als Subsystem
Ich verwende jetzt PureBasic 6.12 Linux Ubuntu 20.04 or 22.04 (x64) auf LMDE6
--
Ideen gibt es viele - man muss sie nur haben...
Mint / LMDE5+6 // PureBasic 6.21
jogo
Beiträge: 123
Registriert: 22.11.2020 20:05
Computerausstattung: 'ne Handvoll gebrauchte Laptops & PCs mit Mint und LMDE

Re: Systray und linke Maustaste mit LMDE6 und PB 6.12

Beitrag von jogo »

hab weitergeforscht und folgendes herausgefunden:
Die linke Maus wird sehr wohl erkannt, Eventtype() liefert bei linke Maus= 2 und bei rechte Maus= 1
und so sind die Konstanten belegt:
Debug #PB_EventType_LeftClick ;liefert 0 // kann also nie erfüllt werden
Debug #PB_EventType_RightClick ;liefert 1 // das passt

Hier mal ein Beispiel aus meiner Eventschleife // der Code funktionierte so seit Jahren bei mir :)

Code: Alles auswählen

      Case  #PB_Event_SysTray       ;wenn systray-ereignis angeklickt wurde / egal links,rechts usw. 
        
        Debug "Eventtype():  " + EventType() ;Anzeige des tatsächlichen Event-Typs
        
        Select EventType()          ;ob, und welche maustaste          
          Case #PB_EventType_LeftClick  ;linke maus
            Debug "Linke Maus"
            DisplayPopupMenu(50, WindowID(0))  ; zeige jetzt das Popup-Menü an            
          
          Case #PB_EventType_RightClick       ;rechte maus 
            Debug "Rechte Maus"
            fen_st()           ;fenster verstecken oder vorholen (je nach dem, wie es gerade ist) 
            
        EndSelect 

      EndSelect
könnte an QT liegen oder an EventType() oder an #PB_EventType_LeftClick. Oder was anderes... :)
--
Ideen gibt es viele - man muss sie nur haben...
Mint / LMDE5+6 // PureBasic 6.21
jogo
Beiträge: 123
Registriert: 22.11.2020 20:05
Computerausstattung: 'ne Handvoll gebrauchte Laptops & PCs mit Mint und LMDE

Re: Systray und linke Maustaste mit LMDE6 und PB 6.12

Beitrag von jogo »

hmm - finde keinen anderen Weg. Ich werte jetzt einfach EventType() direkt mit den Werten 1 oder 2 aus (also ohne die #PB_Konstanten). Erschien mir erstmal am einfachsten. Hoffentlich bleibt das mit der EventType()-Ausgabe so. Und ich muß erstmal meine anderen Codes durchschauen, bevor ich diese für QT kompiliere... :)
--
Ideen gibt es viele - man muss sie nur haben...
Mint / LMDE5+6 // PureBasic 6.21
Benutzeravatar
Macros
Beiträge: 1361
Registriert: 23.12.2005 15:00
Wohnort: Olching(bei FFB)
Kontaktdaten:

Re: Systray und linke Maustaste mit LMDE6 und PB 6.12

Beitrag von Macros »

Hi jogo,

danke fürs teilen deines ganzen Lösungsweges.

Es scheint hier hat sich tatsächlich ein ziemlicher Bug eingeschlichen.
Hier mal ein kompletter Beispielcode:

Code: Alles auswählen

UsePNGImageDecoder()

If OpenWindow(0, 100, 150, 300, 100, "PureBasic - SysTray Example", #PB_Window_SystemMenu)

  LoadImage(0,#PB_Compiler_Home + "examples/sources/Data/world.png")
  
  AddSysTrayIcon(1, WindowID(0), ImageID(0))
  SysTrayIconToolTip(1, "PB World")
  
  Repeat
    Event = WaitWindowEvent()
    
    If Event = #PB_Event_SysTray
      Eventtype=EventType()
      If Eventtype = #PB_EventType_LeftDoubleClick
        MessageRequester("SysTray", "Left DoubleClick on SysTrayIcon "+Str(EventGadget()),0)
      Else
        Debug "Systray event of type "+Str(Eventtype)
      EndIf
      
      
    EndIf
  Until Event = #PB_Event_CloseWindow
  
EndIf
Ich kann für QT bestätigen: Linksklick gibt das Event für einen Doppelklick.
Das Event für einen Linksklick bekomme ich beim Mittelklick auf das Icon.

Zeit für einen Bugreport.
Falls du nicht dazu kommst, mache ich das morgen Abend.
Bild
jogo
Beiträge: 123
Registriert: 22.11.2020 20:05
Computerausstattung: 'ne Handvoll gebrauchte Laptops & PCs mit Mint und LMDE

Re: Systray und linke Maustaste mit LMDE6 und PB 6.12

Beitrag von jogo »

Hi Macros,
Danke für's Feedback War mir nicht sicher, ob es an EventGadget() liegt oder vllt. die Konstanten falsch belegt waren, oder das QT einfach ein falsches Ereignis an EventGadget() meldet.
Wär lieb, wenn du das mit den Bugreport übernehmen würdest - mein englisch ist quasi nicht vorhanden :)
--
Ideen gibt es viele - man muss sie nur haben...
Mint / LMDE5+6 // PureBasic 6.21
Antworten