From: Michael Stapelberg Date: Wed, 24 Mar 2010 15:06:21 +0000 (+0100) Subject: Bugfix: Don’t unmap windows when current workspace gets reassigned X-Git-Tag: 3.e~6^2~40 X-Git-Url: https://git.sur5r.net/?a=commitdiff_plain;h=0f7ac09c7b0e5c03ac6c90cc589abc7b8bbb2577;p=i3%2Fi3 Bugfix: Don’t unmap windows when current workspace gets reassigned Steps to reproduce were: 1) xrandr --output VGA1 --auto --left-of LVDS1 2) open a terminal on VGA1 3) xrandr --output VGA1 --off --- diff --git a/src/workspace.c b/src/workspace.c index 67874f29..3fe4751b 100644 --- a/src/workspace.c +++ b/src/workspace.c @@ -248,12 +248,17 @@ void workspace_assign_to(Workspace *ws, Output *output, bool hide_it) { if (visible && !hide_it) return; - workspace_unmap_clients(global_conn, ws); - + /* however, if this is the current workspace, we only need to adjust + * the output’s current_workspace pointer (and must not unmap the + * windows) */ if (c_ws == ws) { DLOG("Need to adjust output->current_workspace...\n"); output->current_workspace = c_ws; + ipc_send_event("workspace", I3_IPC_EVENT_WORKSPACE, "{\"change\":\"focus\"}"); + return; } + + workspace_unmap_clients(global_conn, ws); } /*