i3bar: Set `mapped` flag on trayclient creation
When a trayclient is first created as a structure in memory, explicitly set the `mapped` flag to false. Otherwise it may initialize to `true` in some circumstances without actually being mapped, causing a request to be mapped from the client to be ignored. Create the trayclient in memory before handling a request to be mapped immediately. fixes #1138
This commit is contained in:
parent
cd6fb69977
commit
23b1da598e
|
@ -603,17 +603,18 @@ static void handle_client_message(xcb_client_message_event_t* event) {
|
||||||
* exits/crashes. */
|
* exits/crashes. */
|
||||||
xcb_change_save_set(xcb_connection, XCB_SET_MODE_INSERT, client);
|
xcb_change_save_set(xcb_connection, XCB_SET_MODE_INSERT, client);
|
||||||
|
|
||||||
|
trayclient *tc = smalloc(sizeof(trayclient));
|
||||||
|
tc->win = client;
|
||||||
|
tc->xe_version = xe_version;
|
||||||
|
tc->mapped = false;
|
||||||
|
TAILQ_INSERT_TAIL(output->trayclients, tc, tailq);
|
||||||
|
|
||||||
if (map_it) {
|
if (map_it) {
|
||||||
DLOG("Mapping dock client\n");
|
DLOG("Mapping dock client\n");
|
||||||
xcb_map_window(xcb_connection, client);
|
xcb_map_window(xcb_connection, client);
|
||||||
} else {
|
} else {
|
||||||
DLOG("Not mapping dock client yet\n");
|
DLOG("Not mapping dock client yet\n");
|
||||||
}
|
}
|
||||||
trayclient *tc = smalloc(sizeof(trayclient));
|
|
||||||
tc->win = client;
|
|
||||||
tc->xe_version = xe_version;
|
|
||||||
TAILQ_INSERT_TAIL(output->trayclients, tc, tailq);
|
|
||||||
|
|
||||||
/* Trigger an update to copy the statusline text to the appropriate
|
/* Trigger an update to copy the statusline text to the appropriate
|
||||||
* position */
|
* position */
|
||||||
configure_trayclients();
|
configure_trayclients();
|
||||||
|
|
Loading…
Reference in New Issue