~ruther/dwl

9aec6049ecbefe3618f34002d2239cc9462c07e9 — Leonardo Hernández Hernández 3 years ago 330792b
clients now works as expected in drag motion
1 files changed, 8 insertions(+), 5 deletions(-)

M dwl.c
M dwl.c => dwl.c +8 -5
@@ 1416,16 1416,11 @@ motionnotify(uint32_t time)

	/* time is 0 in internal calls meant to restore pointer focus. */
	if (time) {
		struct wlr_drag_icon *icon;
		wlr_idle_notify_activity(idle, seat);

		/* Update selmon (even while dragging a window) */
		if (sloppyfocus)
			selmon = xytomon(cursor->x, cursor->y);

		if (seat->drag && (icon = seat->drag->icon))
			wlr_scene_node_set_position(icon->data, cursor->x + icon->surface->sx,
					cursor->y + icon->surface->sy);
	}

	/* If we are currently grabbing the mouse, handle and return */


@@ 1564,6 1559,7 @@ pointerfocus(Client *c, struct wlr_surface *surface, double sx, double sy,
{
	struct timespec now;
	int internal_call = !time;
	struct wlr_drag_icon *icon;

	if (sloppyfocus && !internal_call && c && !client_is_unmanaged(c))
		focusclient(c, 0);


@@ 1585,6 1581,13 @@ pointerfocus(Client *c, struct wlr_surface *surface, double sx, double sy,
	wlr_seat_pointer_notify_enter(seat, surface, sx, sy);
	wlr_seat_pointer_notify_motion(seat, time, sx, sy);

	/* If there are is a drag icon, update its position */
	/* For anyone who wants to change this function: for some reason
	 * (maybe a wlroots bug?, or is it intended?) if we change the node position
	 * before telling the seat for a motion, the clients don't recognize the drag */
	if (seat->drag && (icon = seat->drag->icon))
		wlr_scene_node_set_position(icon->data, cursor->x + icon->surface->sx,
				cursor->y + icon->surface->sy);
}

void

Do not follow this link