summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/events.c1
-rw-r--r--src/manage.c10
-rw-r--r--src/manage.h1
3 files changed, 12 insertions, 0 deletions
diff --git a/src/events.c b/src/events.c
index 8115b64..dbc2e94 100644
--- a/src/events.c
+++ b/src/events.c
@@ -904,6 +904,7 @@ handle_signals ()
PRINT_DEBUG (("Switching to %s\n", rp_exec_newwm));
putenv(current_screen()->display_string);
+ unhide_all_windows();
execlp(rp_exec_newwm, rp_exec_newwm, 0);
/* Failed. Clean up. */
diff --git a/src/manage.c b/src/manage.c
index 49e5fd1..9076b16 100644
--- a/src/manage.c
+++ b/src/manage.c
@@ -850,6 +850,16 @@ unhide_window (rp_window *win)
set_state (win, NormalState);
}
+void
+unhide_all_windows ()
+{
+ struct list_head *tmp, *iter;
+ rp_window *win;
+
+ list_for_each_safe_entry (win, iter, tmp, &rp_mapped_window, node)
+ unhide_window (win);
+}
+
/* same as unhide_window except that it makes sure the window is mapped
on the bottom of the window stack. */
void
diff --git a/src/manage.h b/src/manage.h
index ba49d34..d24c343 100644
--- a/src/manage.h
+++ b/src/manage.h
@@ -51,6 +51,7 @@ void grab_keys_all_wins ();
void hide_window (rp_window *win);
void unhide_window (rp_window *win);
+void unhide_all_windows ();
void unhide_window_below (rp_window *win);
void withdraw_window (rp_window *win);
void hide_others (rp_window *win);