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)
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 &&
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();
}
}
-void screen_show_desktop(gboolean show)
+void screen_show_desktop(gboolean show, gboolean restore_focus)
{
GList *it;
client_focus(it->data))
break;
}
- } else {
+ } else if (restore_focus) {
ObClient *c;
/* use NULL for the "old" argument because the desktop was focused
/*! 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();