Bugfix: Correctly maintain focus when setting a workspace to floating

This commit is contained in:
Michael Stapelberg 2011-01-08 00:10:30 +01:00
parent b660769fe0
commit e4bb6d859e

View File

@ -17,6 +17,8 @@
extern xcb_connection_t *conn; extern xcb_connection_t *conn;
void floating_enable(Con *con, bool automatic) { void floating_enable(Con *con, bool automatic) {
bool set_focus = true;
if (con_is_floating(con)) { if (con_is_floating(con)) {
LOG("Container is already in floating mode, not doing anything.\n"); LOG("Container is already in floating mode, not doing anything.\n");
return; return;
@ -58,6 +60,7 @@ void floating_enable(Con *con, bool automatic) {
con_focus(old_focused); con_focus(old_focused);
con = new; con = new;
set_focus = false;
} }
/* 1: detach the container from its parent */ /* 1: detach the container from its parent */
@ -121,6 +124,7 @@ void floating_enable(Con *con, bool automatic) {
TAILQ_INSERT_TAIL(&(nc->nodes_head), con, nodes); TAILQ_INSERT_TAIL(&(nc->nodes_head), con, nodes);
TAILQ_INSERT_TAIL(&(nc->focus_head), con, focused); TAILQ_INSERT_TAIL(&(nc->focus_head), con, focused);
// TODO: dont influence focus handling when Con was not focused before. // TODO: dont influence focus handling when Con was not focused before.
if (set_focus)
con_focus(con); con_focus(con);
} }