Since I was up most of the night last night with a sick child

However, after I'd already finished it I found several folks have beat me to it already:
http://www.purebasic.fr/english/viewtop ... dget+event
BUT, I thought I'd share the code anyways, maybe it will be of use to someone else:
Code: Select all
Procedure.b MouseOverGadget(window.l, gadget.l, offsetX.l=0, offsetY.l=0)
gadgetX.l = GadgetX(gadget) + offsetX
gadgetY.l = GadgetY(gadget) + offsetY
gadgetW.l = GadgetWidth(gadget)
gadgetH.l = GadgetHeight(gadget)
mouseX.l = WindowMouseX(window)
mouseY.l = WindowMouseY(window)
If (mouseX >= gadgetX) And (mouseY >= gadgetY) And (mouseX <= (gadgetX + gadgetW - 1)) And (mouseY <= (gadgetY + gadgetH - 1))
ProcedureReturn #True
Else
ProcedureReturn #False
EndIf
EndProcedure
If OpenWindow(0, 0, 0, 222, 200, "ButtonGadgets", #PB_Window_SystemMenu | #PB_Window_ScreenCentered)
ButtonGadget(0, 10, 10, 200, 20, "Standard Button")
ButtonGadget(1, 10, 40, 200, 20, "Left Button", #PB_Button_Left)
ButtonGadget(2, 10, 70, 200, 20, "Right Button", #PB_Button_Right)
ButtonGadget(3, 10,100, 200, 60, "Multiline Button (longer text gets automatically wrapped)", #PB_Button_MultiLine)
ButtonGadget(4, 10,170, 200, 20, "Toggle Button", #PB_Button_Toggle)
Repeat
If MouseOverGadget(0,3)
Debug "Over gadget at "+Str(WindowMouseX(window))+", "+Str(WindowMouseY(window))
EndIf
Until WaitWindowEvent() = #PB_Event_CloseWindow
EndIf
Code: Select all
Procedure.b MouseOverGadget(window.l, gadget.l, offsetX.l=0, offsetY.l=0)
gadgetX.l = GadgetX(gadget) + offsetX
gadgetY.l = GadgetY(gadget) + offsetY
gadgetW.l = GadgetWidth(gadget)
gadgetH.l = GadgetHeight(gadget)
mouseX.l = WindowMouseX(window)
mouseY.l = WindowMouseY(window)
If (mouseX >= gadgetX) And (mouseY >= gadgetY) And (mouseX <= (gadgetX + gadgetW - 1)) And (mouseY <= (gadgetY + gadgetH - 1))
ProcedureReturn #True
Else
ProcedureReturn #False
EndIf
EndProcedure
If OpenWindow(0, 0, 0, 322, 220, "PanelGadget", #PB_Window_SystemMenu | #PB_Window_ScreenCentered)
PanelGadget (0, 8, 8, 306, 203)
AddGadgetItem (0, -1, "Panel 1")
PanelGadget (1, 5, 5, 290, 166)
AddGadgetItem(1, -1, "Sub-Panel 1")
AddGadgetItem(1, -1, "Sub-Panel 2")
AddGadgetItem(1, -1, "Sub-Panel 3")
CloseGadgetList()
AddGadgetItem (0, -1,"Panel 2")
ButtonGadget(2, 10, 15, 80, 24,"Button 1")
ButtonGadget(3, 95, 15, 80, 24,"Button 2")
CloseGadgetList()
Repeat
If MouseOverGadget(0,3,GadgetX(0), GadgetY(0)+GetGadgetAttribute(0,#PB_Panel_TabHeight))
Debug "Over gadget at "+Str(WindowMouseX(window))+", "+Str(WindowMouseY(window))
EndIf
Until WaitWindowEvent() = #PB_Event_CloseWindow
EndIf
MouseOverGadget(
Gadget's Window#,
Gadget#,
Offset on X axis if gadget is in a container like a panel gadget (optional),
Offset on Y axis (optional),
)
Returns TRUE if the mouse is moving over the gadget.
