From fde5ca09e9ea7ab08b6dc06723f19bad6d03af22 Mon Sep 17 00:00:00 2001 From: Dana Jansens Date: Sat, 5 May 2007 02:48:39 +0000 Subject: [PATCH] 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. --- openbox/action.c | 6 +++--- openbox/client.c | 2 +- openbox/event.c | 2 +- openbox/screen.c | 4 ++-- openbox/screen.h | 2 +- 5 files changed, 8 insertions(+), 8 deletions(-) diff --git a/openbox/action.c b/openbox/action.c index 1af396a4..b54e888e 100644 --- a/openbox/action.c +++ b/openbox/action.c @@ -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) diff --git a/openbox/client.c b/openbox/client.c index c0323c26..3ebcc69a 100644 --- a/openbox/client.c +++ b/openbox/client.c @@ -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 && diff --git a/openbox/event.c b/openbox/event.c index efef0faa..badef3d9 100644 --- a/openbox/event.c +++ b/openbox/event.c @@ -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(); diff --git a/openbox/screen.c b/openbox/screen.c index a302828b..8fdbe096 100644 --- a/openbox/screen.c +++ b/openbox/screen.c @@ -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 diff --git a/openbox/screen.h b/openbox/screen.h index bedc2e6d..558081b5 100644 --- a/openbox/screen.h +++ b/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(); -- 2.45.2