Pues si que son raros.
Si el código no es del todo correcto, hacen cosas raras según el tipo de gestor de escritorio que uses.
¿ Qué te parece de esta forma ?. Me he ayudado de una bandera para saber cuando se está mostrando y cuando no.
No descarto que haya código en menuMostrar_Click() que se pueda eliminar.
Código:
' Gambas class file
Private TrayMenu As Menu
Private MenuMostrar As Menu
Private MenuSalir As Menu
Private TrayIcon1 As TrayIcon
Private muestrate As Boolean
Public Sub Form_Open()
'Crear el menú principal del tray icon
TrayMenu = New Menu(Me) As "TrayMenu"
'Crear el submenú "Mostrar"
MenuMostrar = New Menu(TrayMenu) As "MenuMostrar"
MenuMostrar.Text = "&Mostrar"
'Crear el submenú "Salir"
MenuSalir = New Menu(TrayMenu) As "MenuSalir"
MenuSalir.Text = "&Salir"
'Configurar el icono de la bandeja
TrayIcon1 = New TrayIcon As "TrayIcon1"
TrayIcon1.Icon = Stock["gambas"]
TrayIcon1.Tooltip = "Ejemplo básico con TrayIcon"
TrayIcon1.PopupMenu = TrayMenu.Name
TrayIcon1.Visible = True
Me.SkipTaskbar = True
'Me.Hide() No sé si esto merece la pena aquí
End
Public Sub MenuMostrar_Click()
muestrate = Not muestrate
If muestrate Then
Me.Show()
Me.Raise
Me.SetFocus()
MenuMostrar.Text = "&Ocultar"
Else
Me.Hide()
MenuMostrar.Text = "&Mostrar"
Endif
End
Public Sub MenuSalir_Click()
Me.Close()
End
Public Sub Form_Close()
If Not IsNull(TrayIcon1) Then
If TrayIcon1.Visible Then TrayIcon1.Hide
TrayIcon1.Delete
Endif
End
Public Sub Form_Activate()
If muestrate Then
Me.Show()
Else
Me.Hide()
Endif
End
Desde luego el trayicon no iba a funcionar en un escritorio typo Wayland.
Que rollo es eso.
Habría que averiguar antes si es tipo Wayland:
Código:
If Environ["XDG_SESSION_TYPE"] = "wayland" Then
Message.Info("El entorno Wayland puede no soportar icono de bandeja.")
Endif
Y tomar otra alternativa
Saludos