i3bar: properly end the XEMBED protocol by reparenting the dock clients to root, flush connection before disconnecting
This commit is contained in:
parent
bd2a3363c0
commit
1c2c22d117
|
@ -990,15 +990,27 @@ void init_tray() {
|
||||||
*/
|
*/
|
||||||
void clean_xcb() {
|
void clean_xcb() {
|
||||||
i3_output *o_walk;
|
i3_output *o_walk;
|
||||||
|
trayclient *trayclient;
|
||||||
free_workspaces();
|
free_workspaces();
|
||||||
SLIST_FOREACH(o_walk, outputs, slist) {
|
SLIST_FOREACH(o_walk, outputs, slist) {
|
||||||
|
TAILQ_FOREACH(trayclient, o_walk->trayclients, tailq) {
|
||||||
|
/* Unmap, then reparent (to root) the tray client windows */
|
||||||
|
xcb_unmap_window(xcb_connection, trayclient->win);
|
||||||
|
xcb_reparent_window(xcb_connection,
|
||||||
|
trayclient->win,
|
||||||
|
xcb_root,
|
||||||
|
0,
|
||||||
|
0);
|
||||||
|
}
|
||||||
destroy_window(o_walk);
|
destroy_window(o_walk);
|
||||||
|
FREE(o_walk->trayclients);
|
||||||
FREE(o_walk->workspaces);
|
FREE(o_walk->workspaces);
|
||||||
FREE(o_walk->name);
|
FREE(o_walk->name);
|
||||||
}
|
}
|
||||||
FREE_SLIST(outputs, i3_output);
|
FREE_SLIST(outputs, i3_output);
|
||||||
FREE(outputs);
|
FREE(outputs);
|
||||||
|
|
||||||
|
xcb_flush(xcb_connection);
|
||||||
xcb_disconnect(xcb_connection);
|
xcb_disconnect(xcb_connection);
|
||||||
|
|
||||||
ev_check_stop(main_loop, xcb_chk);
|
ev_check_stop(main_loop, xcb_chk);
|
||||||
|
|
Loading…
Reference in New Issue