BindGadgetEvent bug

Just starting out? Need help? Post your questions and find answers here.
wilbert
PureBasic Expert
PureBasic Expert
Posts: 3870
Joined: Sun Aug 08, 2004 5:21 am
Location: Netherlands

BindGadgetEvent bug

Post by wilbert »

Code: Select all

Procedure LostFocus()
  Debug "Active gadget [Lost focus, Bind] : "+Str(GetActiveGadget())
EndProcedure

If OpenWindow(0, 0, 0, 322, 205, "Lost focus", #PB_Window_SystemMenu | #PB_Window_ScreenCentered)
  
  StringGadget(0, 8,  10, 306, 20, "0")
  StringGadget(1, 8,  35, 306, 20, "1")
  StringGadget(2, 8,  60, 306, 20, "2")
  
  BindGadgetEvent(0, @LostFocus(), #PB_EventType_LostFocus)
  BindGadgetEvent(1, @LostFocus(), #PB_EventType_LostFocus)
  BindGadgetEvent(2, @LostFocus(), #PB_EventType_LostFocus)
  
  Repeat
    Event = WaitWindowEvent()
    If Event = #PB_Event_Gadget
      Select EventType()
        Case #PB_EventType_LostFocus
          Debug "Active gadget [Lost focus, Event] : "+Str(GetActiveGadget())
      EndSelect
    EndIf
  Until Event = #PB_Event_CloseWindow
EndIf
The value reported for GetActiveGadget() for the lost focus event isn't the same when using BindGadgetEvent compared to the normal event loop.
When using BindGadgetEvent it often reports the old gadget which has lost focus still as the active gadget.
Windows (x64)
Raspberry Pi OS (Arm64)
Fred
Administrator
Administrator
Posts: 16616
Joined: Fri May 17, 2002 4:39 pm
Location: France
Contact:

Re: BindGadgetEvent bug

Post by Fred »

You can't rely on GetActiveGadget() when handling events, you need to use EventGadget().
Post Reply