re-insert floating cons next to the currently focused con of the appropriate workspace
This commit is contained in:
parent
2f5d111936
commit
f462a9a215
|
@ -152,6 +152,14 @@ Con *con_next_focused(Con *con);
|
||||||
*/
|
*/
|
||||||
Con *con_get_next(Con *con, char way, orientation_t orientation);
|
Con *con_get_next(Con *con, char way, orientation_t orientation);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Returns the focused con inside this client, descending the tree as far as
|
||||||
|
* possible. This comes in handy when attaching a con to a workspace at the
|
||||||
|
* currently focused position, for example.
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
Con *con_descend_focused(Con *con);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Returns a "relative" Rect which contains the amount of pixels that need to
|
* Returns a "relative" Rect which contains the amount of pixels that need to
|
||||||
* be added to the original Rect to get the final position (obviously the
|
* be added to the original Rect to get the final position (obviously the
|
||||||
|
|
12
src/con.c
12
src/con.c
|
@ -627,6 +627,18 @@ Con *con_get_next(Con *con, char way, orientation_t orientation) {
|
||||||
return next;
|
return next;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Returns the focused con inside this client, descending the tree as far as
|
||||||
|
* possible. This comes in handy when attaching a con to a workspace at the
|
||||||
|
* currently focused position, for example.
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
Con *con_descend_focused(Con *con) {
|
||||||
|
Con *next = con;
|
||||||
|
while (!TAILQ_EMPTY(&(next->focus_head)))
|
||||||
|
next = TAILQ_FIRST(&(next->focus_head));
|
||||||
|
return next;
|
||||||
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Returns a "relative" Rect which contains the amount of pixels that need to
|
* Returns a "relative" Rect which contains the amount of pixels that need to
|
||||||
|
|
|
@ -149,8 +149,10 @@ void floating_disable(Con *con, bool automatic) {
|
||||||
TAILQ_REMOVE(&(con->parent->parent->focus_head), con->parent, focused);
|
TAILQ_REMOVE(&(con->parent->parent->focus_head), con->parent, focused);
|
||||||
tree_close(con->parent, false, false);
|
tree_close(con->parent, false, false);
|
||||||
|
|
||||||
/* 3: re-attach to previous parent */
|
/* 3: re-attach to the parent of the currently focused con on the workspace
|
||||||
con->parent = con_get_workspace(con);
|
* this floating con was on */
|
||||||
|
Con *focused = con_descend_focused(con_get_workspace(con));
|
||||||
|
con->parent = focused->parent;
|
||||||
|
|
||||||
/* XXX: We adjust the percentage value to start with a fair value. Floating
|
/* XXX: We adjust the percentage value to start with a fair value. Floating
|
||||||
* cons always have 1.0 as percent which doesn’t work so well when
|
* cons always have 1.0 as percent which doesn’t work so well when
|
||||||
|
|
Loading…
Reference in New Issue