From: Michael Stapelberg Date: Mon, 30 Jan 2012 16:03:51 +0000 (+0000) Subject: Bugfix: Obey workspace_layout when re-inserting floating containers (+test) (Thanks... X-Git-Tag: 4.2~89^2^2 X-Git-Url: https://git.sur5r.net/?a=commitdiff_plain;h=4f98bbf5ffc18a7b53c5545ce403e4667d75a703;p=i3%2Fi3 Bugfix: Obey workspace_layout when re-inserting floating containers (+test) (Thanks aksr) The code wasn’t using con_attach and therefore didn’t obey workspace_layout. Fixes: #631 --- diff --git a/src/floating.c b/src/floating.c index f7dd2ebc..0637521f 100644 --- a/src/floating.c +++ b/src/floating.c @@ -238,11 +238,10 @@ void floating_disable(Con *con, bool automatic) { /* con_fix_percent will adjust the percent value */ con->percent = 0.0; - TAILQ_INSERT_TAIL(&(con->parent->nodes_head), con, nodes); - TAILQ_INSERT_TAIL(&(con->parent->focus_head), con, focused); - con->floating = FLOATING_USER_OFF; + con_attach(con, con->parent, false); + con_fix_percent(con->parent); // TODO: don’t influence focus handling when Con was not focused before. con_focus(con); diff --git a/testcases/t/167-workspace_layout.t b/testcases/t/167-workspace_layout.t index e4b18adf..6a714124 100644 --- a/testcases/t/167-workspace_layout.t +++ b/testcases/t/167-workspace_layout.t @@ -122,6 +122,24 @@ is($content[1]->{layout}, 'stacked', 'layout stacked'); is(@content, 1, 'one con on target workspace'); is($content[0]->{layout}, 'stacked', 'layout stacked'); +##################################################################### +# 7: toggle floating mode and check that we have a stacked con when +# re-inserting a floating container. +##################################################################### + +$tmp = fresh_workspace; + +$first = open_window; +cmd 'floating toggle'; +cmd 'floating toggle'; + +$second = open_window; + +is($x->input_focus, $second->id, 'second window focused'); +@content = @{get_ws_content($tmp)}; +ok(@content == 1, 'one con at workspace level'); +is($content[0]->{layout}, 'stacked', 'layout stacked'); + exit_gracefully($pid); done_testing;