Problems:
1) The popupmenu won't go away if I move off of the gadget. Events stop until a menu selection is made. (as reported before)
2) The menu event is not... fixed code it works now!
3) Using the optional position, in PopUpMenu, puts the menu in the upper left corner of the desktop and not the window.
[edit] This is correct behavior. See below...
Code: Select all
Procedure ScanGadgets(x,y,gadget)
If y>GadgetY(gadget) And y<GadgetY(gadget)+GadgetHeight(gadget)
If x>GadgetX(gadget) And x<GadgetX(gadget)+GadgetWidth(gadget)
ProcedureReturn 1
EndIf
EndIf
ProcedureReturn 0
EndProcedure
#Window1=1
#Gadget1=1
#Gadget2=2
Define x.l,y.l,oldx.l,oldy.l
OpenWindow(#Window1,0,0,400,100,"Example",#PB_Window_ScreenCentered|#PB_Window_SystemMenu)
If CreatePopupMenu(0)
MenuItem(1,"none")
MenuItem(2,"50%")
MenuItem(3,"25%")
EndIf
If CreatePopupMenu(10)
MenuItem(11,"none")
MenuItem(12,"200%")
MenuItem(13,"400%")
EndIf
TextGadget(#Gadget1,10,10,200,20,"Popup menu 1",#PB_Text_Border)
TextGadget(#Gadget2,10,40,200,20,"Popup menu 2",#PB_Text_Border)
Repeat
event=WaitWindowEvent()
If event=#PB_Event_Menu
MessageRequester("Menu",Str(EventMenu()))
Else
x=WindowMouseX(#Window1) ; present mouse position
y=WindowMouseY(#Window1)
If (oldx<>x) Or (oldy<>y)
If ScanGadgets(x,y,#Gadget1)
DisplayPopupMenu(0,WindowID(#Window1))
EndIf
If ScanGadgets(x,y,#Gadget2)
DisplayPopupMenu(10,WindowID(#Window1))
EndIf
oldx=x
oldy=y
EndIf
EndIf
Until event=#PB_Event_CloseWindow