focus a window on desktop switch
This commit is contained in:
parent
047fe67215
commit
8cc7c8b430
1 changed files with 9 additions and 0 deletions
|
@ -258,6 +258,7 @@ void screen_set_desktop(guint num)
|
||||||
{
|
{
|
||||||
GList *it;
|
GList *it;
|
||||||
guint old;
|
guint old;
|
||||||
|
XEvent e;
|
||||||
|
|
||||||
g_assert(num < screen_num_desktops);
|
g_assert(num < screen_num_desktops);
|
||||||
|
|
||||||
|
@ -267,6 +268,8 @@ void screen_set_desktop(guint num)
|
||||||
|
|
||||||
if (old == num) return;
|
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 before hiding the rest to lessen the enter/leave events */
|
||||||
|
|
||||||
/* show windows from top to bottom */
|
/* show windows from top to bottom */
|
||||||
|
@ -283,6 +286,12 @@ void screen_set_desktop(guint num)
|
||||||
engine_frame_hide(c->frame);
|
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);
|
dispatch_ob(Event_Ob_Desktop, num, old);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue