Even worse is the case with GetActiveWindow()
Code: Select all
Procedure ActivateWindowHandler()
Debug "BindEventActivatewindow " + EventWindow()+" ActiveWindow "+GetActiveWindow()
EndProcedure
Procedure DeactivateWindowHandler()
Debug "BindEventDeactivate window " + EventWindow()+" ActiveWindow "+GetActiveWindow()
EndProcedure
BindEvent(#PB_Event_ActivateWindow, @ActivateWindowHandler())
BindEvent(#PB_Event_DeactivateWindow, @DeactivateWindowHandler())
X = 100
For i = 1 To 2
OpenWindow(i, X, 200, 50, 50, "Window" + Trim(Str(i)) ,#PB_Window_SystemMenu)
X + 200
Next
; BindEvent(#PB_Event_ActivateWindow, @ActivateWindowHandler())
; BindEvent(#PB_Event_DeactivateWindow, @DeactivateWindowHandler())
Repeat
Event = WaitWindowEvent( )
Select Event
Case #PB_Event_DeactivateWindow
Debug "EventDeactivate Window " + EventWindow()+" ActiveWindow "+GetActiveWindow()
Case #PB_Event_ActivateWindow
Debug "EventActivate Window " + EventWindow()+" ActiveWindow "+GetActiveWindow()
EndSelect
Until Event = #PB_Event_CloseWindow
That's kind of the same behavior
Code: Select all
ImportC "-gtk"
gdk_screen_get_active_window( *screen.GdkScreen )
EndImport
Procedure GetActiveWindowID()
Protected GtkWindow, *GdkWindow.GdkWindowObject = gdk_screen_get_active_window( gdk_screen_get_default_() )
If *GdkWindow
gdk_window_get_user_data_(*GdkWindow, @GtkWindow)
EndIf
ProcedureReturn GtkWindow
EndProcedure
Procedure _GetActiveWindow()
If gtk_window_is_active_(WindowID(EventWindow()))
ProcedureReturn - 1
Else
ProcedureReturn EventWindow()
EndIf
EndProcedure
Procedure ActivateWindowHandler()
Debug "BindEventActivatewindow " + EventWindow()+" ActiveWindow "+_GetActiveWindow()
EndProcedure
Procedure DeactivateWindowHandler()
Debug "BindEventDeactivate window " + EventWindow()+" ActiveWindow "+_GetActiveWindow()
EndProcedure
BindEvent(#PB_Event_ActivateWindow, @ActivateWindowHandler())
BindEvent(#PB_Event_DeactivateWindow, @DeactivateWindowHandler())
X = 100
For i = 1 To 2
OpenWindow(i, X, 200, 50, 50, "Window" + Trim(Str(i)) ,#PB_Window_SystemMenu)
X + 200
Next
; BindEvent(#PB_Event_ActivateWindow, @ActivateWindowHandler())
; BindEvent(#PB_Event_DeactivateWindow, @DeactivateWindowHandler())
Repeat
Event = WaitWindowEvent( )
Select Event
Case #PB_Event_DeactivateWindow
Debug "EventDeactivate Window " + EventWindow()+" ActiveWindow "+GetActiveWindow()
Case #PB_Event_ActivateWindow
Debug "EventActivate Window " + EventWindow()+" ActiveWindow "+GetActiveWindow()
EndSelect
Until Event = #PB_Event_CloseWindow