...and call it from desktop_move_to_front() in order force an enter event
on the surface below the cursor when cycling views.
Inspired by PR #164 - just restructured it a bit.
Suggested-by: @bi4k8
* @cursor_name - name of cursor, for example "left_ptr" or "grab"
*/
void cursor_set(struct seat *seat, const char *cursor_name);
+
+/**
+ * cursor_update_focus - update cursor focus
+ * @server - server
+ * Use it to force an update of the cursor icon and to send an enter event
+ * to the surface below the cursor.
+ */
+void cursor_update_focus(struct server *server);
+
void cursor_init(struct seat *seat);
void keyboard_init(struct seat *seat);
}
}
+static uint32_t
+msec(const struct timespec *t)
+{
+ return t->tv_sec * 1000 + t->tv_nsec / 1000000;
+}
+
+void
+cursor_update_focus(struct server *server)
+{
+ struct timespec now;
+ clock_gettime(CLOCK_MONOTONIC, &now);
+ process_cursor_motion(server, msec(&now));
+}
+
void
start_drag(struct wl_listener *listener, void *data)
{
#if HAVE_XWAYLAND
move_xwayland_sub_views_to_front(view);
#endif
+ cursor_update_focus(view->server);
}
static void