BindEvent (PB_Event_ActivateWindow)

Linux specific forum
mestnyi
Addict
Addict
Posts: 1001
Joined: Mon Nov 25, 2013 6:41 am

BindEvent (PB_Event_ActivateWindow)

Post 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
User avatar
mk-soft
Always Here
Always Here
Posts: 5409
Joined: Fri May 12, 2006 6:51 pm
Location: Germany

Re: BindEvent (PB_Event_ActivateWindow)

Post by mk-soft »

No Problem here. Only one Event by activate window...

OS Ubuntu 16.04 X86/X64, PB v5.42, GTK2 and GTK3
My Projects ThreadToGUI / OOP-BaseClass / EventDesigner V3
PB v3.30 / v5.75 - OS Mac Mini OSX 10.xx - VM Window Pro / Linux Ubuntu
Downloads on my Webspace / OneDrive
mestnyi
Addict
Addict
Posts: 1001
Joined: Mon Nov 25, 2013 6:41 am

Re: BindEvent (PB_Event_ActivateWindow)

Post 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
Post Reply