Remanage window after property updates (like titles) (#3759)

This commit is contained in:
izzel
2019-08-13 02:50:48 -04:00
committed by Michael Stapelberg
parent 3b88e41dd8
commit 0845d7b264
12 changed files with 279 additions and 84 deletions

View File

@ -533,3 +533,11 @@ bool con_swap(Con *first, Con *second);
*
*/
uint32_t con_rect_size_in_orientation(Con *con);
/**
* Merges container specific data that should move with the window (e.g. marks,
* title format, and the window itself) into another container, and closes the
* old container.
*
*/
void con_merge_into(Con *old, Con *new);

View File

@ -489,6 +489,10 @@ struct Window {
bool shaped;
/** The window has a nonrectangular input shape. */
bool input_shaped;
/* Time when the window became managed. Used to determine whether a window
* should be swallowed after initial management. */
time_t managed_since;
};
/**

View File

@ -37,3 +37,10 @@ void restore_geometry(void);
void manage_window(xcb_window_t window,
xcb_get_window_attributes_cookie_t cookie,
bool needs_to_be_mapped);
/**
* Remanages a window: performs a swallow check and runs assignments.
* Returns con for the window regardless if it updated.
*
*/
Con *remanage_window(Con *con);

View File

@ -69,3 +69,9 @@ struct Startup_Sequence *startup_sequence_get(i3Window *cwindow,
*
*/
char *startup_workspace_for_window(i3Window *cwindow, xcb_get_property_reply_t *startup_id_reply);
/**
* Deletes the startup sequence for a window if it exists.
*
*/
void startup_sequence_delete_by_window(i3Window *win);

View File

@ -22,14 +22,14 @@ void window_free(i3Window *win);
* given window.
*
*/
void window_update_class(i3Window *win, xcb_get_property_reply_t *prop, bool before_mgmt);
void window_update_class(i3Window *win, xcb_get_property_reply_t *prop);
/**
* Updates the name by using _NET_WM_NAME (encoded in UTF-8) for the given
* window. Further updates using window_update_name_legacy will be ignored.
*
*/
void window_update_name(i3Window *win, xcb_get_property_reply_t *prop, bool before_mgmt);
void window_update_name(i3Window *win, xcb_get_property_reply_t *prop);
/**
* Updates the name by using WM_NAME (encoded in COMPOUND_TEXT). We do not
@ -38,7 +38,7 @@ void window_update_name(i3Window *win, xcb_get_property_reply_t *prop, bool befo
* window_update_name()).
*
*/
void window_update_name_legacy(i3Window *win, xcb_get_property_reply_t *prop, bool before_mgmt);
void window_update_name_legacy(i3Window *win, xcb_get_property_reply_t *prop);
/**
* Updates the CLIENT_LEADER (logical parent window).
@ -62,7 +62,7 @@ void window_update_strut_partial(i3Window *win, xcb_get_property_reply_t *prop);
* Updates the WM_WINDOW_ROLE
*
*/
void window_update_role(i3Window *win, xcb_get_property_reply_t *prop, bool before_mgmt);
void window_update_role(i3Window *win, xcb_get_property_reply_t *prop);
/**
* Updates the _NET_WM_WINDOW_TYPE property.