Page 1 of 1

BindEvent (PB_Event_ActivateWindow)

Posted: Wed May 25, 2016 7:04 pm
by mestnyi
Why happens every time when you click on the title? :x

Code: Select all

Procedure ActivateWindowHandler()
    Debug "Activate BindEvent on window #" + EventWindow()
    
  EndProcedure
    
 Procedure DeactivateWindowHandler()
    Debug "Deactivate BindEvent on window #" + EventWindow()
    
  EndProcedure
    
  OpenWindow(0, 100, 100, 200, 200, "Activate bug test", #PB_Window_SizeGadget | #PB_Window_SystemMenu)
  EditorGadget(0, 10, 10, 180, 180)
  
  BindEvent(#PB_Event_ActivateWindow, @ActivateWindowHandler())
  BindEvent(#PB_Event_DeactivateWindow, @DeactivateWindowHandler())
  
  Repeat
    Event = WaitWindowEvent()
    
    Select Event 
       Case #PB_Event_ActivateWindow 
         Debug "Activate event on window #" + EventWindow()
       Case #PB_Event_DeactivateWindow
         Debug "Deactivate event on window #" + EventWindow()
        
    EndSelect
    
  Until Event = #PB_Event_CloseWindow

Re: BindEvent (PB_Event_ActivateWindow)

Posted: Thu May 26, 2016 7:07 pm
by mk-soft
No Problem here. Only one Event by activate window...

OS Ubuntu 16.04 X86/X64, PB v5.42, GTK2 and GTK3

Re: BindEvent (PB_Event_ActivateWindow)

Posted: Sat May 28, 2016 10:21 am
by mestnyi
Even worse is the case with GetActiveWindow() :shock:

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