diff --git a/src/mainx.c b/src/mainx.c index 5e9bf077..67ab25fd 100644 --- a/src/mainx.c +++ b/src/mainx.c @@ -160,6 +160,7 @@ int main(int argc, char *argv[], char *env[]) { REQUEST_ATOM(_NET_WM_WINDOW_TYPE); REQUEST_ATOM(_NET_WM_DESKTOP); REQUEST_ATOM(_NET_WM_WINDOW_TYPE_DOCK); + REQUEST_ATOM(_NET_WM_WINDOW_TYPE_DIALOG); REQUEST_ATOM(_NET_WM_STRUT_PARTIAL); REQUEST_ATOM(WM_PROTOCOLS); REQUEST_ATOM(WM_DELETE_WINDOW); @@ -263,6 +264,7 @@ int main(int argc, char *argv[], char *env[]) { GET_ATOM(_NET_WM_WINDOW_TYPE); GET_ATOM(_NET_WM_DESKTOP); GET_ATOM(_NET_WM_WINDOW_TYPE_DOCK); + GET_ATOM(_NET_WM_WINDOW_TYPE_DIALOG); GET_ATOM(_NET_WM_STRUT_PARTIAL); GET_ATOM(WM_PROTOCOLS); GET_ATOM(WM_DELETE_WINDOW); diff --git a/src/manage.c b/src/manage.c index 09cf66eb..84e0e15f 100644 --- a/src/manage.c +++ b/src/manage.c @@ -256,6 +256,8 @@ void reparent_window(xcb_connection_t *conn, xcb_window_t child, new->force_reconfigure = true; new->container = NULL; SLIST_INSERT_HEAD(&(c_ws->screen->dock_clients), new, dock_clients); + /* If it’s a dock we can’t make it float, so we break */ + break; } else if (atom[i] == atoms[_NET_WM_WINDOW_TYPE_DIALOG]) { /* Set the dialog window to automatically floating, will be used below */ new->floating = FLOATING_AUTO_ON;