summaryrefslogtreecommitdiff
path: root/openbox
diff options
context:
space:
mode:
Diffstat (limited to 'openbox')
-rw-r--r--openbox/action.c6
-rw-r--r--openbox/client.c2
-rw-r--r--openbox/event.c2
-rw-r--r--openbox/screen.c4
-rw-r--r--openbox/screen.h2
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();