]> Dogcows Code - chaz/openbox/commitdiff
focus a window on desktop switch
authorDana Jansens <danakj@orodu.net>
Thu, 27 Mar 2003 23:05:54 +0000 (23:05 +0000)
committerDana Jansens <danakj@orodu.net>
Thu, 27 Mar 2003 23:05:54 +0000 (23:05 +0000)
openbox/screen.c

index 506287303e3af6137430cf860bf529595d0ca813..a051d25039d2753dcb5b391eba6a10689490d014 100644 (file)
@@ -258,6 +258,7 @@ void screen_set_desktop(guint num)
 {
     GList *it;
     guint old;
+    XEvent e;
      
     g_assert(num < screen_num_desktops);
 
@@ -267,6 +268,8 @@ void screen_set_desktop(guint num)
 
     if (old == num) return;
 
+    g_message("Moving to desktop %d", num+1);
+
     /* show windows before hiding the rest to lessen the enter/leave events */
 
     /* show windows from top to bottom */
@@ -283,6 +286,12 @@ void screen_set_desktop(guint num)
             engine_frame_hide(c->frame);
     }
 
+    /* focus the last focused window on the desktop, and ignore enter events
+       from the switch so it doesnt mess with the focus */
+    XSync(ob_display, FALSE);
+    while (XCheckTypedEvent(ob_display, EnterNotify, &e));
+    focus_fallback(TRUE);
+
     dispatch_ob(Event_Ob_Desktop, num, old);
 }
 
This page took 0.026406 seconds and 4 git commands to generate.