set correct position for unmanaged clients

- don't allow to move/resize with them
- don't focus unmanaged clients on buttonpress()
This commit is contained in:
Leonardo Hernandez Hernandez 2022-01-31 14:02:59 -06:00 committed by Leonardo Hernández Hernández
parent b92c0ff57f
commit 863eedd05e
No known key found for this signature in database
GPG Key ID: E538897EE11B9624

8
dwl.c
View File

@ -645,7 +645,8 @@ buttonpress(struct wl_listener *listener, void *data)
case WLR_BUTTON_PRESSED:; case WLR_BUTTON_PRESSED:;
/* Change focus if the button was _pressed_ over a client */ /* Change focus if the button was _pressed_ over a client */
xytonode(cursor->x, cursor->y, NULL, &c, NULL, NULL, NULL); xytonode(cursor->x, cursor->y, NULL, &c, NULL, NULL, NULL);
if (c) /* Don't focus unmanaged clients */
if (c && !client_is_unmanaged(c))
focusclient(c, 1); focusclient(c, 1);
keyboard = wlr_seat_get_keyboard(seat); keyboard = wlr_seat_get_keyboard(seat);
@ -1328,9 +1329,12 @@ mapnotify(struct wl_listener *listener, void *data)
} }
if (client_is_unmanaged(c)) { if (client_is_unmanaged(c)) {
client_get_geometry(c, &c->geom);
/* Floating, no border */ /* Floating, no border */
wlr_scene_node_reparent(c->scene, layers[LyrFloat]); wlr_scene_node_reparent(c->scene, layers[LyrFloat]);
c->bw = 0; c->bw = 0;
wlr_scene_node_set_position(c->scene, c->geom.x + borderpx,
c->geom.y + borderpx);
/* Insert this independent into independents lists. */ /* Insert this independent into independents lists. */
wl_list_insert(&independents, &c->link); wl_list_insert(&independents, &c->link);
@ -1442,7 +1446,7 @@ moveresize(const Arg *arg)
if (cursor_mode != CurNormal) if (cursor_mode != CurNormal)
return; return;
xytonode(cursor->x, cursor->y, NULL, &grabc, NULL, NULL, NULL); xytonode(cursor->x, cursor->y, NULL, &grabc, NULL, NULL, NULL);
if (!grabc) if (!grabc || client_is_unmanaged(grabc))
return; return;
/* Float the window and tell motionnotify to grab it */ /* Float the window and tell motionnotify to grab it */