From 458c60269b495892ce43af3825814d2f18c342c3 Mon Sep 17 00:00:00 2001 From: Harley Acheson Date: Fri, 6 Sep 2024 19:05:59 +0200 Subject: [PATCH] UI: Hand Cursors Add multiple "hand" mouse cursors. These are mostly needed for Mac, which needs open, close, and pointing hand cursors. This also adds similar for Windows, but just for completeness and testing. Pull Request: https://projects.blender.org/blender/blender/pulls/127164 --- intern/ghost/GHOST_Types.h | 3 +++ intern/ghost/intern/GHOST_SystemWayland.cc | 3 +++ intern/ghost/intern/GHOST_WindowCocoa.mm | 6 ++++++ intern/ghost/intern/GHOST_WindowWin32.cc | 9 +++++++++ release/windows/icons/cursors/handclosed.cur | Bin 0 -> 30894 bytes release/windows/icons/cursors/handopen.cur | Bin 30894 -> 30894 bytes release/windows/icons/cursors/handpoint.cur | Bin 0 -> 30894 bytes release/windows/icons/winblender.rc | 2 ++ source/blender/makesrna/intern/rna_wm_api.cc | 4 +++- .../windowmanager/intern/wm_cursors.cc | 8 +++++++- source/blender/windowmanager/wm_cursors.hh | 3 +++ 11 files changed, 36 insertions(+), 2 deletions(-) create mode 100644 release/windows/icons/cursors/handclosed.cur create mode 100644 release/windows/icons/cursors/handpoint.cur diff --git a/intern/ghost/GHOST_Types.h b/intern/ghost/GHOST_Types.h index e317f3d0603..79255936ca5 100644 --- a/intern/ghost/GHOST_Types.h +++ b/intern/ghost/GHOST_Types.h @@ -363,6 +363,9 @@ typedef enum { GHOST_kStandardCursorLeftHandle, GHOST_kStandardCursorRightHandle, GHOST_kStandardCursorBothHandles, + GHOST_kStandardCursorHandOpen, + GHOST_kStandardCursorHandClosed, + GHOST_kStandardCursorHandPoint, GHOST_kStandardCursorCustom, #define GHOST_kStandardCursorNumCursors (int(GHOST_kStandardCursorCustom) + 1) diff --git a/intern/ghost/intern/GHOST_SystemWayland.cc b/intern/ghost/intern/GHOST_SystemWayland.cc index 9102bbb028e..5396b738a93 100644 --- a/intern/ghost/intern/GHOST_SystemWayland.cc +++ b/intern/ghost/intern/GHOST_SystemWayland.cc @@ -2246,6 +2246,9 @@ static const GWL_Cursor_ShapeInfo ghost_wl_cursors = []() -> GWL_Cursor_ShapeInf CASE_CURSOR(GHOST_kStandardCursorZoomIn, "zoom-in"); CASE_CURSOR(GHOST_kStandardCursorZoomOut, "zoom-out"); CASE_CURSOR(GHOST_kStandardCursorMove, "move"); + CASE_CURSOR(GHOST_kStandardCursorHandOpen, "move"); + CASE_CURSOR(GHOST_kStandardCursorHandClosed, "move"); + CASE_CURSOR(GHOST_kStandardCursorHandPoint, "move"); CASE_CURSOR(GHOST_kStandardCursorNSEWScroll, "all-scroll"); CASE_CURSOR(GHOST_kStandardCursorNSScroll, "size_ver"); CASE_CURSOR(GHOST_kStandardCursorEWScroll, "size_hor"); diff --git a/intern/ghost/intern/GHOST_WindowCocoa.mm b/intern/ghost/intern/GHOST_WindowCocoa.mm index 016c16857f2..c10237d7426 100644 --- a/intern/ghost/intern/GHOST_WindowCocoa.mm +++ b/intern/ghost/intern/GHOST_WindowCocoa.mm @@ -971,6 +971,12 @@ NSCursor *GHOST_WindowCocoa::getStandardCursor(GHOST_TStandardCursor shape) cons return [NSCursor operationNotAllowedCursor]; case GHOST_kStandardCursorMove: return [NSCursor openHandCursor]; + case GHOST_kStandardCursorHandOpen: + return [NSCursor openHandCursor]; + case GHOST_kStandardCursorHandClosed: + return [NSCursor closedHandCursor]; + case GHOST_kStandardCursorHandPoint: + return [NSCursor pointingHandCursor]; case GHOST_kStandardCursorDefault: return [NSCursor arrowCursor]; case GHOST_kStandardCursorKnife: diff --git a/intern/ghost/intern/GHOST_WindowWin32.cc b/intern/ghost/intern/GHOST_WindowWin32.cc index 67a763f13f4..b2de8093dca 100644 --- a/intern/ghost/intern/GHOST_WindowWin32.cc +++ b/intern/ghost/intern/GHOST_WindowWin32.cc @@ -758,8 +758,17 @@ HCURSOR GHOST_WindowWin32::getStandardCursor(GHOST_TStandardCursor shape) const cursor = ::LoadImage(module, "zoomout_cursor", IMAGE_CURSOR, cx, cy, flags); break; case GHOST_kStandardCursorMove: + cursor = ::LoadImage(nullptr, IDC_SIZEALL, IMAGE_CURSOR, cx, cy, flags); + break; + case GHOST_kStandardCursorHandOpen: cursor = ::LoadImage(module, "handopen_cursor", IMAGE_CURSOR, cx, cy, flags); break; + case GHOST_kStandardCursorHandClosed: + cursor = ::LoadImage(module, "handclosed_cursor", IMAGE_CURSOR, cx, cy, flags); + break; + case GHOST_kStandardCursorHandPoint: + cursor = ::LoadImage(module, "handpoint_cursor", IMAGE_CURSOR, cx, cy, flags); + break; case GHOST_kStandardCursorNSEWScroll: cursor = ::LoadImage(module, "scrollnsew_cursor", IMAGE_CURSOR, cx, cy, flags); break; diff --git a/release/windows/icons/cursors/handclosed.cur b/release/windows/icons/cursors/handclosed.cur new file mode 100644 index 0000000000000000000000000000000000000000..1e358d80bc1405fadae7be488e5afd477712081f GIT binary patch literal 30894 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 Z4_#@>58e3iu}A()`Qn#q;GbyU{TG`ZG;#m{ literal 0 HcmV?d00001 diff --git a/release/windows/icons/cursors/handopen.cur b/release/windows/icons/cursors/handopen.cur index cba184488733d51ec1a0efedc6bcaaac558f0404..d63932f0c97c7c62a57f658aef476987481042a0 100644 GIT binary patch literal 30894 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 literal 30894 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 diff --git a/release/windows/icons/cursors/handpoint.cur b/release/windows/icons/cursors/handpoint.cur new file mode 100644 index 0000000000000000000000000000000000000000..92befab246913b1002cb9fa414b1a20c1ee49236 GIT binary patch literal 30894 zcmeI533OG(8OJY+A|N|hD9{9AVnmk6B2u71MA;9vDisc83*xb^XoV`aM!*WP7NMw> zBM9Z-T1C-XK!OVvk0OW_SB#=9C;|e8K$188|Asfuo5xE{fV@07_dDmGxp(foneY4N zn{VdM%$;~%Wv_~toa}iuz3Sfbx}JA|=Xn_!o>#}K(Zll^dG);Xo}Tw7 zB}i8q{lrtWSIJ&^UbfN&6lfsOK%jw>L<5z?XXR3WbSIi9_Y9$qP`?D=QELiSg%e50 zQ%(4ZaISE^&^`uQE3TPPLpV`7ARpvG?zHOFtN*@HqedGY>eZ{aQt`j4S+nNM#*G`l zUAJ!C+2OS4>v+kPT}v4y3!UrNum47NcD7lyYL&$ucid4>yLRnuXP$Xx-l9c|jQILY z>CO^P7mh~<(Pei!M zRMBtG6p{p6c4}&B-q&A$ZHxZ=^UuwvpMGk-{q|d1+>DH{eJeDFatd-iOze*Jorm6c_7?b>C!ckgcAeDh7C`q&fx z9X3u-JN5gP0(DRp!fqQ2=Szn99XfQ#JAC-CE&i5UZYj*o&9&FdmoGPu zJo1Ryx^=6WG-;AKaNvNs`s%Cgvrs5xYSgHauRQPvwS}^ftM^RF9;x#U8#b6ql`0u* zyfh?VfE{)d%38kjHEmV?_aA-qk$LH*myG;Oo_x%qSYb;pa-gu*xf8M-#q0ys9AD~Ry-^CYS9O9ZbQnhN;{93hY z9aQ-*=r{CNWo>`@i6z$#>C@6>&#RU$T}m-#)TmK;^0VLHdFP#l&6_trAiub;YuB#d z$w%y$&L$}R&xGSC8wM!f*<_LESy#>k}D9|TX7qFpYm0Lfx zMES@--rZ?W_*m*zc9^HQ76N@ebp)`P6H%_RvE<}$s=I;eclINEPEHPe+-AkmuCNi( zIq33)5qY|{m@b?8?%{_YHtFf<2dY%5GDgpknKb1|i≥U1Jx=TffSp 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 b#gob(+Gxq^!X*1V-~JlC+-2{LcO>{9&sdWj literal 0 HcmV?d00001 diff --git a/release/windows/icons/winblender.rc b/release/windows/icons/winblender.rc index 2bfcddaa4ca..eb78a4d30d4 100644 --- a/release/windows/icons/winblender.rc +++ b/release/windows/icons/winblender.rc @@ -26,6 +26,8 @@ crossC_cursor CURSOR "cursors/crossc.cur" eraser_cursor CURSOR "cursors/eraser.cur" eyedropper_cursor CURSOR "cursors/eyedropper.cur" handopen_cursor CURSOR "cursors/handopen.cur" +handclosed_cursor CURSOR "cursors/handclosed.cur" +handpoint_cursor CURSOR "cursors/handpoint.cur" knife_cursor CURSOR "cursors/knife.cur" pencil_cursor CURSOR "cursors/pencil.cur" scrollew_cursor CURSOR "cursors/scrollew.cur" diff --git a/source/blender/makesrna/intern/rna_wm_api.cc b/source/blender/makesrna/intern/rna_wm_api.cc index 4673b1b21cf..dcae09fa778 100644 --- a/source/blender/makesrna/intern/rna_wm_api.cc +++ b/source/blender/makesrna/intern/rna_wm_api.cc @@ -45,7 +45,9 @@ const EnumPropertyItem rna_enum_window_cursor_items[] = { {WM_CURSOR_PAINT, "PAINT_CROSS", 0, "Paint Cross", ""}, {WM_CURSOR_DOT, "DOT", 0, "Dot Cursor", ""}, {WM_CURSOR_ERASER, "ERASER", 0, "Eraser", ""}, - {WM_CURSOR_HAND, "HAND", 0, "Hand", ""}, + {WM_CURSOR_HAND, "HAND", 0, "Open Hand", ""}, + {WM_CURSOR_HAND_POINT, "HAND_POINT", 0, "Pointing Hand", ""}, + {WM_CURSOR_HAND_CLOSED, "HAND_CLOSED", 0, "Closed Hand", ""}, {WM_CURSOR_EW_SCROLL, "SCROLL_X", 0, "Scroll-X", ""}, {WM_CURSOR_NS_SCROLL, "SCROLL_Y", 0, "Scroll-Y", ""}, {WM_CURSOR_NSEW_SCROLL, "SCROLL_XY", 0, "Scroll-XY", ""}, diff --git a/source/blender/windowmanager/intern/wm_cursors.cc b/source/blender/windowmanager/intern/wm_cursors.cc index ed12e81fecc..709549ed61f 100644 --- a/source/blender/windowmanager/intern/wm_cursors.cc +++ b/source/blender/windowmanager/intern/wm_cursors.cc @@ -49,6 +49,8 @@ static GHOST_TStandardCursor convert_to_ghost_standard_cursor(WMCursorType curs) case WM_CURSOR_EDIT: case WM_CURSOR_CROSS: return GHOST_kStandardCursorCrosshair; + case WM_CURSOR_MOVE: + return GHOST_kStandardCursorMove; case WM_CURSOR_X_MOVE: return GHOST_kStandardCursorLeftRight; case WM_CURSOR_Y_MOVE: @@ -56,7 +58,11 @@ static GHOST_TStandardCursor convert_to_ghost_standard_cursor(WMCursorType curs) case WM_CURSOR_COPY: return GHOST_kStandardCursorCopy; case WM_CURSOR_HAND: - return GHOST_kStandardCursorMove; + return GHOST_kStandardCursorHandOpen; + case WM_CURSOR_HAND_CLOSED: + return GHOST_kStandardCursorHandClosed; + case WM_CURSOR_HAND_POINT: + return GHOST_kStandardCursorHandPoint; case WM_CURSOR_H_SPLIT: return GHOST_kStandardCursorHorizontalSplit; case WM_CURSOR_V_SPLIT: diff --git a/source/blender/windowmanager/wm_cursors.hh b/source/blender/windowmanager/wm_cursors.hh index c689420bf4d..69258d95a11 100644 --- a/source/blender/windowmanager/wm_cursors.hh +++ b/source/blender/windowmanager/wm_cursors.hh @@ -18,7 +18,10 @@ enum WMCursorType { WM_CURSOR_STOP, WM_CURSOR_EDIT, WM_CURSOR_COPY, + WM_CURSOR_MOVE, WM_CURSOR_HAND, + WM_CURSOR_HAND_CLOSED, + WM_CURSOR_HAND_POINT, WM_CURSOR_CROSS, WM_CURSOR_PAINT,