when restoring from show-desktop mode because a window is going to be focused, then don't restore focus how it was before showing the desktop.

This commit is contained in:
Dana Jansens 2007-05-05 02:48:39 +00:00
parent 9389c7e6c8
commit fde5ca09e9
5 changed files with 8 additions and 8 deletions

View file

@ -1932,17 +1932,17 @@ void action_toggle_dockautohide(union ActionData *data)
void action_toggle_show_desktop(union ActionData *data)
{
screen_show_desktop(!screen_showing_desktop);
screen_show_desktop(!screen_showing_desktop, TRUE);
}
void action_show_desktop(union ActionData *data)
{
screen_show_desktop(TRUE);
screen_show_desktop(TRUE, TRUE);
}
void action_unshow_desktop(union ActionData *data)
{
screen_show_desktop(FALSE);
screen_show_desktop(FALSE, TRUE);
}
void action_break_chroot(union ActionData *data)

View file

@ -3261,7 +3261,7 @@ void client_activate(ObClient *self, gboolean here, gboolean user)
event_halt_focus_delay();
if (client_normal(self) && screen_showing_desktop)
screen_show_desktop(FALSE);
screen_show_desktop(FALSE, FALSE);
if (self->iconic)
client_iconify(self, FALSE, here);
if (self->desktop != DESKTOP_ALL &&

View file

@ -604,7 +604,7 @@ static void event_handle_root(XEvent *e)
if (d > 0)
screen_set_num_desktops(d);
} else if (msgtype == prop_atoms.net_showing_desktop) {
screen_show_desktop(e->xclient.data.l[0] != 0);
screen_show_desktop(e->xclient.data.l[0] != 0, TRUE);
} else if (msgtype == prop_atoms.ob_control) {
if (e->xclient.data.l[0] == 1)
ob_reconfigure();

View file

@ -860,7 +860,7 @@ void screen_update_desktop_names()
}
}
void screen_show_desktop(gboolean show)
void screen_show_desktop(gboolean show, gboolean restore_focus)
{
GList *it;
@ -895,7 +895,7 @@ void screen_show_desktop(gboolean show)
client_focus(it->data))
break;
}
} else {
} else if (restore_focus) {
ObClient *c;
/* use NULL for the "old" argument because the desktop was focused

View file

@ -76,7 +76,7 @@ void screen_desktop_popup(guint d, gboolean show);
/*! Shows and focuses the desktop and hides all the client windows, or
returns to the normal state, showing client windows. */
void screen_show_desktop(gboolean show);
void screen_show_desktop(gboolean show, gboolean restore_focus);
/*! Updates the desktop layout from the root property if available */
void screen_update_layout();