Menu PopUp pas si popup que ça.

Codes specifiques à Linux
Avatar de l’utilisateur
falsam
Messages : 7244
Inscription : dim. 22/août/2010 15:24
Localisation : IDF (Yvelines)
Contact :

Menu PopUp pas si popup que ça.

Message par falsam »

J'ai installé la distribution Ubuntu sur mon pc et je commence à tester quelques codes. En suivant le tutoriel de Dobro j'ai pu, je l'espère, installer Pure Basic sous cet environnement.

Je rencontre un soucis sur les menu contextuels de mes exemples car il ne s'affiche pas.
Comme le montre le code, la touche droite de la souris est bien détectée mais le menu popup n’apparaît pas.

Code : Tout sélectionner

Procedure EventMouse()
  Protected wnd.i
  If GetActiveWindow()<>-1
    Wnd=WindowID(GetActiveWindow())
      Protected gdkWnd.l, x.l, y.l, mask.l,  *Window.GTKWindow =Wnd
      gdkWnd = *Window\bin\child\window
      gdk_window_get_pointer_(gdkWnd, @x, @y, @mask)
      
      If (mask & #GDK_BUTTON1_MASK)
        ProcedureReturn 1   
      ElseIf (mask & #GDK_BUTTON3_MASK)
       ProcedureReturn 2
      ElseIf (mask & #GDK_BUTTON2_MASK)
        ProcedureReturn 3
      EndIf 
    EndIf
EndProcedure

If OpenWindow(0, 200, 200, 220, 120, "Exemple de menu contextuel")
    If CreatePopupMenu(0)        
      MenuItem(1, "Couper")  
      MenuItem(2, "Copier")
      MenuItem(3, "Coller")
    EndIf
    
    Repeat
      EventMouse=EventMouse()
      
      Debug EventMouse()
      If EventMouse=2
        DisplayPopupMenu(0,WindowID(0)) 
      EndIf
           
      Select WaitWindowEvent() 
        Case #PB_Event_CloseWindow
          End
      EndSelect
    ForEver
  EndIf
Configuration : Windows 11 Famille 64-bit - PB 6.03 x64 - AMD Ryzen 7 - 16 GO RAM
Vidéo NVIDIA GeForce GTX 1650 Ti - Résolution 1920x1080 - Mise à l'échelle 125%
Guimauve
Messages : 1015
Inscription : mer. 11/févr./2004 0:32
Localisation : Québec, Canada

Re: Menu PopUp pas si popup que ça.

Message par Guimauve »

Bonjour,

Je viens de tester ton code et chez moi (Ubuntu 10.10 x64) j'ai bien un PopUp Menu avec "Couper Copier Coller" qui s'affiche.

A+
Guimauve
Avatar de l’utilisateur
falsam
Messages : 7244
Inscription : dim. 22/août/2010 15:24
Localisation : IDF (Yvelines)
Contact :

Re: Menu PopUp pas si popup que ça.

Message par falsam »

Ha M*** Mince :p

Soucis dans ma config Ubuntu peut être ! (Ubuntu 10.10 x86)
En tout cas merci d'avoir effectuer ce test.
Configuration : Windows 11 Famille 64-bit - PB 6.03 x64 - AMD Ryzen 7 - 16 GO RAM
Vidéo NVIDIA GeForce GTX 1650 Ti - Résolution 1920x1080 - Mise à l'échelle 125%
Guimauve
Messages : 1015
Inscription : mer. 11/févr./2004 0:32
Localisation : Québec, Canada

Re: Menu PopUp pas si popup que ça.

Message par Guimauve »

Re-Bonjour,

Je ne sais pas trop, l'exemple tiré de l'aide de PB ne fonctionne pas correctement. Alors je ne sais pas trop quoi dire !

J'ai pas vraiment le temps aujourd'hui de pousser l'investigation, il est possible que les commandes PopupMenu soient boguées.

A+
Guimauve
Guimauve
Messages : 1015
Inscription : mer. 11/févr./2004 0:32
Localisation : Québec, Canada

Re: Menu PopUp pas si popup que ça.

Message par Guimauve »

Bon j'ai pas pu résister...

Dis moi si le code suivant affiche le PopupMenu lorsque tu clique sur le x pour fermer la fenêtre.

Code : Tout sélectionner

  If OpenWindow(0, 200, 200, 220, 120, "Exemple de menu contextuel")
    If CreatePopupMenu(0)        ; La création du menu contextuel commence...
     ; Vous pouvez utiliser toutes les commandes relatives au menu,
        MenuItem(1, "Ouvrir")    ; comme si c'était un menu normal...
        MenuItem(2, "Enregistrer")
        MenuItem(3, "Enregistrer sous")
        MenuItem(4, "Quitter")
        MenuBar()
        OpenSubMenu("Fic&hiers récents")
          MenuItem(5, "PureBasic.exe")
          MenuItem(6, "Test.txt")
        CloseSubMenu()
    EndIf
    Repeat
      Select WaitWindowEvent()            ; Examine quel type d'évènement est survenu sur la fenêtre
        Case 2           ; Le bouton droit de la souris a été clické =>
          DisplayPopupMenu(0,WindowID(0))  ; On affiche le menu contextuel.
          
        Case #PB_Event_Menu      ; Un élément du menu a été sélectionné
          Select EventMenu()     ; On recupère le numéro de cet élement...
            Case 1 : Debug "Menu : Ouvrir"
            Case 2 : Debug "Menu : Enregistrer"
            Case 3 : Debug "Menu : Enregistrer sous"
            Case 4 : Quitter = 1
            Case 5 : Debug "Menu : PureBasic.exe"
            Case 6 : Debug "Menu : Text.txt"
          EndSelect
        Case #PB_Event_CloseWindow
          Quitter = 1
      EndSelect
    Until Quitter = 1
  EndIf
A+
Guimauve
Avatar de l’utilisateur
falsam
Messages : 7244
Inscription : dim. 22/août/2010 15:24
Localisation : IDF (Yvelines)
Contact :

Re: Menu PopUp pas si popup que ça.

Message par falsam »

Malheureusement je n'ai pas de menu contextuel.
Configuration : Windows 11 Famille 64-bit - PB 6.03 x64 - AMD Ryzen 7 - 16 GO RAM
Vidéo NVIDIA GeForce GTX 1650 Ti - Résolution 1920x1080 - Mise à l'échelle 125%
Crashdisk
Messages : 15
Inscription : sam. 18/févr./2012 17:09

Re: Menu PopUp pas si popup que ça.

Message par Crashdisk »

Bonjour,
même si le topic n'est pas tout jeune, il se trouve que le sujet m'intéresse en ce moment. Ainsi, je me permet d'intervenir ici pour confirmer que le code de Guimauve ne fonctionne pas chez moi non plus. Du moins jusqu'à ce que je remplace ce petit point:

Code : Tout sélectionner

Case 2           ; Le bouton droit de la souris a été clické =>
par

Code : Tout sélectionner

Case #PB_Event_RightClick           ; Le bouton droit de la souris a été clické =>
Edit:
Une fois intégré à mon programme, j'ai du mal à afficher la popup. J'obtiens de meilleurs résultat avec #WM_RBUTTONDOWN sur Windows
La raison m'est encore obscure mais bon ...

En tout cas merci pour vos exemples
Répondre