Seite 1 von 1
Systray und linke Maustaste mit LMDE6 und PB 6.12
Verfasst: 29.09.2024 19:50
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
Re: Systray und linke Maustaste mit LMDE6 und PB 6.12
Verfasst: 30.09.2024 19:15
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...

Re: Systray und linke Maustaste mit LMDE6 und PB 6.12
Verfasst: 30.09.2024 22:18
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...

Re: Systray und linke Maustaste mit LMDE6 und PB 6.12
Verfasst: 01.10.2024 00:10
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.
Re: Systray und linke Maustaste mit LMDE6 und PB 6.12
Verfasst: 01.10.2024 18:57
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
