meine kleinen Systray-Icons werden komischer Weise ab Mint 19.x Mate/xfce im Systray doppelt nebeneinander dargestellt.
Finde auch keinen Ansatz, in welche Richtung ich da forschen müßte.
Ich baue und compiliere meine Programme aktuell mit PB 5.73 LTS ohne spezielles Subsystem // CPU dynamisch
Hab ich auf verschiedenen Rechnern ausprobiert - immer das gleiche Muster:
Bis Mint 18.3 werden die Icons so dargestellt, wie ich das auch programmiert habe - ab 19.x wirds komisch..
Hier mal ein komplett lauffähiger Beispielcode, der das demonstriert.
Code: Alles auswählen
;demo systray-icon
EnableExplicit ;deklarierungs-zwang
Global.i ev
Procedure bau_img()
;erzeugt ein image für das systrayicon
CreateImage(1, 16, 16,32) ; leeres bild #1 mit schwarzen hintergrund erzeugen
StartDrawing(ImageOutput(1)) ; alle folgenden zeichen operationen auf das image #1
Circle(8,8,8,$00FF00) ; großer hellgrüner kreis
StopDrawing() ; ende zeichenmodus in #1
EndProcedure
Procedure bau_popmenu()
;erstellt ein popmenü (aber noch nicht sichtbar) für trayicon,
If CreatePopupMenu(50) ; Popup-Menüs beginnen
MenuItem(51, "Beenden")
MenuBar() ;trenner
MenuItem(52, "- - - -")
EndIf ;erstellung popmenü
EndProcedure
Procedure tray_an()
;erzeugt ein systrayicon
AddSysTrayIcon(1, WindowID(0),ImageID(1)) ;systrayicon das image #1 zuweisen
SysTrayIconToolTip(1,"Demo") ;tooltip für das sysicon zuweisen
EndProcedure
; ----------------------
OpenWindow(0, 350, 250 , 225, 95,"Demo-SysIcon",#PB_Window_MinimizeGadget)
StickyWindow(0,#True) ;fenster fest im vordergrund
bau_img() ;image für trayicon bauen
bau_popmenu() ;popmenü bauen
tray_an() ;trayicon platzieren
Repeat ;ereignisschleife
ev = WaitWindowEvent() ;auf ereignis warten und ggf. ereignis in ev speichern
Select ev ;fensterereignis auswählen
Case #PB_Event_CloseWindow
Break ;aus schleife hüpfen und komplett beenden
Case #PB_Event_SysTray ;wenn systray-ereignis angeklickt wurde / egal links,rechts usw.
DisplayPopupMenu(50, WindowID(0)) ; zeigt das Popup-Menü an
Case #PB_Event_Menu ;wenn menü
Select EventMenu() ;auswahl, welches item
Case 51 ;wenn Beenden gedrückt
Break ;aus schleife hüpfen und komplett beenden
EndSelect
EndSelect ;fensterereignis
ForEver
End