From 39c2d04a9b1f7ed9339e06a71acdc8b701516270 Mon Sep 17 00:00:00 2001 From: Andreas Kling Date: Sun, 8 Dec 2019 20:28:48 +0100 Subject: [PATCH] WindowServer: Add a dedicated drag cursor --- Base/home/anon/WindowManager.ini | 1 + Base/res/cursors/drag.png | Bin 0 -> 205 bytes Servers/WindowServer/WSCursor.cpp | 2 ++ Servers/WindowServer/WSCursor.h | 1 + Servers/WindowServer/WSWindowManager.cpp | 4 ++++ Servers/WindowServer/WSWindowManager.h | 2 ++ 6 files changed, 10 insertions(+) create mode 100644 Base/res/cursors/drag.png diff --git a/Base/home/anon/WindowManager.ini b/Base/home/anon/WindowManager.ini index 3d9bc70bb1..320767ba04 100644 --- a/Base/home/anon/WindowManager.ini +++ b/Base/home/anon/WindowManager.ini @@ -12,6 +12,7 @@ IBeam=/res/cursors/i-beam.png Disallowed=/res/cursors/disallowed.png Move=/res/cursors/move.png Hand=/res/cursors/hand.png +Drag=/res/cursors/drag.png [Colors] Background=50,50,50 diff --git a/Base/res/cursors/drag.png b/Base/res/cursors/drag.png new file mode 100644 index 0000000000000000000000000000000000000000..b89032b473281f034775ac100c32d72f748b3612 GIT binary patch literal 205 zcmeAS@N?(olHy`uVBq!ia0y~yU=U_tU=ZS9V_;y|$@4Umfq`L)r;B5V#p$z?1Njas zaJ1RmI35<evZUk}lvZxeqDD+T^M!ti1Jq=S)y6L~e#%HGEwh`hdqYXkGO zjm#IS(zz~5C2XHpx3!ifXH#bapA?fRQ$^{fkomsn`JZ-OJTkR)LCDpboBJoV&pqJn z5+-?l%Oc~Q^R!pC`5rL&{WtlF+{`tz_DRps WSCursor::create(WSStandardCursor standard_cursor) return WSWindowManager::the().resize_diagonally_bltr_cursor(); case WSStandardCursor::Hand: return WSWindowManager::the().hand_cursor(); + case WSStandardCursor::Drag: + return WSWindowManager::the().drag_cursor(); } ASSERT_NOT_REACHED(); } diff --git a/Servers/WindowServer/WSCursor.h b/Servers/WindowServer/WSCursor.h index 1c0ebcbb9d..3dae5b741e 100644 --- a/Servers/WindowServer/WSCursor.h +++ b/Servers/WindowServer/WSCursor.h @@ -11,6 +11,7 @@ enum class WSStandardCursor { ResizeDiagonalTLBR, ResizeDiagonalBLTR, Hand, + Drag, }; class WSCursor : public RefCounted { diff --git a/Servers/WindowServer/WSWindowManager.cpp b/Servers/WindowServer/WSWindowManager.cpp index e6b2a86449..825b89f247 100644 --- a/Servers/WindowServer/WSWindowManager.cpp +++ b/Servers/WindowServer/WSWindowManager.cpp @@ -185,6 +185,7 @@ void WSWindowManager::reload_config(bool set_screen) m_i_beam_cursor = get_cursor("IBeam"); m_disallowed_cursor = get_cursor("Disallowed"); m_move_cursor = get_cursor("Move"); + m_drag_cursor = get_cursor("Drag"); m_background_color = m_wm_config->read_color_entry("Colors", "Background", Color::Red); @@ -1103,6 +1104,9 @@ void WSWindowManager::notify_client_changed_app_menubar(WSClientConnection& clie const WSCursor& WSWindowManager::active_cursor() const { + if (m_dnd_client) + return *m_drag_cursor; + if (m_drag_window) return *m_move_cursor; diff --git a/Servers/WindowServer/WSWindowManager.h b/Servers/WindowServer/WSWindowManager.h index eba7e8a44b..61e55b09f4 100644 --- a/Servers/WindowServer/WSWindowManager.h +++ b/Servers/WindowServer/WSWindowManager.h @@ -103,6 +103,7 @@ public: const WSCursor& i_beam_cursor() const { return *m_i_beam_cursor; } const WSCursor& disallowed_cursor() const { return *m_disallowed_cursor; } const WSCursor& move_cursor() const { return *m_move_cursor; } + const WSCursor& drag_cursor() const { return *m_drag_cursor; } void invalidate(const WSWindow&); void invalidate(const WSWindow&, const Rect&); @@ -196,6 +197,7 @@ private: RefPtr m_i_beam_cursor; RefPtr m_disallowed_cursor; RefPtr m_move_cursor; + RefPtr m_drag_cursor; Color m_background_color; Color m_active_window_border_color;