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.
Dana Jansens danakj@orodu.net
5 files changed,
8 insertions(+),
8 deletions(-)
M
openbox/action.c
→
openbox/action.c
@@ -1932,17 +1932,17 @@ }
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)
M
openbox/client.c
→
openbox/client.c
@@ -3261,7 +3261,7 @@ go moving on us */
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 &&
M
openbox/event.c
→
openbox/event.c
@@ -604,7 +604,7 @@ guint d = e->xclient.data.l[0];
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();
M
openbox/screen.c
→
openbox/screen.c
@@ -860,7 +860,7 @@ screen_desktop_names[i] = g_strdup_printf("Desktop %i", i + 1);
} } -void screen_show_desktop(gboolean show) +void screen_show_desktop(gboolean show, gboolean restore_focus) { GList *it;@@ -895,7 +895,7 @@ (c->desktop == screen_desktop || c->desktop == DESKTOP_ALL) &&
client_focus(it->data)) break; } - } else { + } else if (restore_focus) { ObClient *c; /* use NULL for the "old" argument because the desktop was focused
M
openbox/screen.h
→
openbox/screen.h
@@ -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();