commit 863eedd05e8d292ccef2530d9b4b8b5475b8cbef
parent b92c0ff57fbf9cc9ffb2a33e689acc08b8745f1d
Author: Leonardo Hernandez Hernandez <leohdz172@protonmail.com>
Date: Mon, 31 Jan 2022 14:02:59 -0600
set correct position for unmanaged clients
- don't allow to move/resize with them
- don't focus unmanaged clients on buttonpress()
Diffstat:
1 file changed, 6 insertions(+), 2 deletions(-)
diff --git a/dwl.c b/dwl.c
@@ -645,7 +645,8 @@ buttonpress(struct wl_listener *listener, void *data)
case WLR_BUTTON_PRESSED:;
/* Change focus if the button was _pressed_ over a client */
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);
keyboard = wlr_seat_get_keyboard(seat);
@@ -1328,9 +1329,12 @@ mapnotify(struct wl_listener *listener, void *data)
}
if (client_is_unmanaged(c)) {
+ client_get_geometry(c, &c->geom);
/* Floating, no border */
wlr_scene_node_reparent(c->scene, layers[LyrFloat]);
c->bw = 0;
+ wlr_scene_node_set_position(c->scene, c->geom.x + borderpx,
+ c->geom.y + borderpx);
/* Insert this independent into independents lists. */
wl_list_insert(&independents, &c->link);
@@ -1442,7 +1446,7 @@ moveresize(const Arg *arg)
if (cursor_mode != CurNormal)
return;
xytonode(cursor->x, cursor->y, NULL, &grabc, NULL, NULL, NULL);
- if (!grabc)
+ if (!grabc || client_is_unmanaged(grabc))
return;
/* Float the window and tell motionnotify to grab it */