Bugfix: Render workspaces created by assignments to use correct coordinates (Thanks meaneye)
Previously, i3 would send width=0, height=0 to windows which were put on workspaces created by an assignment (that is, invisible workspaces, which do not get rendered normally). fixes #653
This commit is contained in:
parent
393a1c0851
commit
372d47842e
16
src/manage.c
16
src/manage.c
|
@ -381,6 +381,22 @@ void manage_window(xcb_window_t window, xcb_get_window_attributes_cookie_t cooki
|
|||
/* Check if any assignments match */
|
||||
run_assignments(cwindow);
|
||||
|
||||
/* If this window was put onto an invisible workspace (via assignments), we
|
||||
* render this workspace. It wouldn’t be rendered in our normal code path
|
||||
* because only the visible workspaces get rendered.
|
||||
*
|
||||
* By rendering the workspace, we assign proper coordinates (read: not
|
||||
* width=0, height=0) to the window, which is important for windows who
|
||||
* actually use them to position their GUI elements, e.g. rhythmbox. */
|
||||
if (ws && !workspace_is_visible(ws)) {
|
||||
/* This is a bit hackish: we need to copy the content container’s rect
|
||||
* to the workspace, because calling render_con() on the content
|
||||
* container would also take the shortcut and not render the invisible
|
||||
* workspace at all. However, just calling render_con() on the
|
||||
* workspace isn’t enough either — it needs the rect. */
|
||||
ws->rect = ws->parent->rect;
|
||||
render_con(ws, true);
|
||||
}
|
||||
tree_render();
|
||||
|
||||
geom_out:
|
||||
|
|
Loading…
Reference in New Issue