summaryrefslogtreecommitdiffstats
path: root/platform/linuxbsd/wayland/display_server_wayland.cpp
diff options
context:
space:
mode:
authorRémi Verschelde <rverschelde@gmail.com>2024-09-16 13:35:35 +0200
committerRémi Verschelde <rverschelde@gmail.com>2024-09-16 13:35:35 +0200
commit4215dfdff728554c910da81a4479fc8c53fff9cd (patch)
tree64117aadf8320c6000172fb8f192541d6d15feec /platform/linuxbsd/wayland/display_server_wayland.cpp
parentebe8f36458d3f4268ba86ddac69aeb7a27085bac (diff)
parentc15cd3acc43b7b5012e41844c1715b84f6c7834c (diff)
downloadredot-engine-4215dfdff728554c910da81a4479fc8c53fff9cd.tar.gz
Merge pull request #96973 from Riteo/pointing-the-obvious
Wayland: Simplify cursor code and fix custom cursors
Diffstat (limited to 'platform/linuxbsd/wayland/display_server_wayland.cpp')
-rw-r--r--platform/linuxbsd/wayland/display_server_wayland.cpp33
1 files changed, 7 insertions, 26 deletions
diff --git a/platform/linuxbsd/wayland/display_server_wayland.cpp b/platform/linuxbsd/wayland/display_server_wayland.cpp
index 2074d7228d..a36748efc1 100644
--- a/platform/linuxbsd/wayland/display_server_wayland.cpp
+++ b/platform/linuxbsd/wayland/display_server_wayland.cpp
@@ -327,15 +327,7 @@ void DisplayServerWayland::mouse_set_mode(MouseMode p_mode) {
bool show_cursor = (p_mode == MOUSE_MODE_VISIBLE || p_mode == MOUSE_MODE_CONFINED);
- if (show_cursor) {
- if (custom_cursors.has(cursor_shape)) {
- wayland_thread.cursor_set_custom_shape(cursor_shape);
- } else {
- wayland_thread.cursor_set_shape(cursor_shape);
- }
- } else {
- wayland_thread.cursor_hide();
- }
+ wayland_thread.cursor_set_visible(show_cursor);
WaylandThread::PointerConstraint constraint = WaylandThread::PointerConstraint::NONE;
@@ -993,11 +985,7 @@ void DisplayServerWayland::cursor_set_shape(CursorShape p_shape) {
return;
}
- if (custom_cursors.has(p_shape)) {
- wayland_thread.cursor_set_custom_shape(p_shape);
- } else {
- wayland_thread.cursor_set_shape(p_shape);
- }
+ wayland_thread.cursor_set_shape(p_shape);
}
DisplayServerWayland::CursorShape DisplayServerWayland::cursor_get_shape() const {
@@ -1009,18 +997,13 @@ DisplayServerWayland::CursorShape DisplayServerWayland::cursor_get_shape() const
void DisplayServerWayland::cursor_set_custom_image(const Ref<Resource> &p_cursor, CursorShape p_shape, const Vector2 &p_hotspot) {
MutexLock mutex_lock(wayland_thread.mutex);
- bool visible = (mouse_mode == MOUSE_MODE_VISIBLE || mouse_mode == MOUSE_MODE_CONFINED);
-
if (p_cursor.is_valid()) {
HashMap<CursorShape, CustomCursor>::Iterator cursor_c = custom_cursors.find(p_shape);
if (cursor_c) {
if (cursor_c->value.rid == p_cursor->get_rid() && cursor_c->value.hotspot == p_hotspot) {
// We have a cached cursor. Nice.
- if (visible) {
- wayland_thread.cursor_set_custom_shape(p_shape);
- }
-
+ wayland_thread.cursor_set_shape(p_shape);
return;
}
@@ -1039,20 +1022,18 @@ void DisplayServerWayland::cursor_set_custom_image(const Ref<Resource> &p_cursor
wayland_thread.cursor_shape_set_custom_image(p_shape, image, p_hotspot);
- if (visible) {
- wayland_thread.cursor_set_custom_shape(p_shape);
- }
+ wayland_thread.cursor_set_shape(p_shape);
} else {
// Clear cache and reset to default system cursor.
- if (cursor_shape == p_shape && visible) {
+ wayland_thread.cursor_shape_clear_custom_image(p_shape);
+
+ if (cursor_shape == p_shape) {
wayland_thread.cursor_set_shape(p_shape);
}
if (custom_cursors.has(p_shape)) {
custom_cursors.erase(p_shape);
}
-
- wayland_thread.cursor_shape_clear_custom_image(p_shape);
}
}