From e6e08872e0bf368b753511b458cdc07e4a1f1fb9 Mon Sep 17 00:00:00 2001 From: Jaye Evins Date: Wed, 5 Nov 2025 14:29:15 -0500 Subject: [PATCH] Update built-in cursors. (#246) - Not all Qt::CursorShapes are supported on all platforoms - e.g. on Wayland (Ubuntu 24.04) Qt::SizeAllCursor is not available and falls back to its arrow cursor - added built-in Crosshair and Move cursors, so that they should be available across all platforms - Redesigned existing object creation cursors - Crosshairs are now 3-pixels wide - Added white outlines to all cursors to aid in visibility against diverse backgrounds --- glabels/Cursors.cpp | 14 ++++++++++++++ glabels/Cursors.h | 14 ++++++++++++++ glabels/LabelEditor.cpp | 4 ++-- glabels/cursors.qrc | 2 ++ glabels/cursors/32x32/cursor_barcode.png | Bin 198 -> 531 bytes glabels/cursors/32x32/cursor_box.png | Bin 200 -> 541 bytes glabels/cursors/32x32/cursor_crosshair.png | Bin 0 -> 260 bytes glabels/cursors/32x32/cursor_ellipse.png | Bin 243 -> 632 bytes glabels/cursors/32x32/cursor_image.png | Bin 247 -> 641 bytes glabels/cursors/32x32/cursor_line.png | Bin 198 -> 541 bytes glabels/cursors/32x32/cursor_move.png | Bin 0 -> 281 bytes glabels/cursors/32x32/cursor_text.png | Bin 210 -> 560 bytes 12 files changed, 32 insertions(+), 2 deletions(-) create mode 100644 glabels/cursors/32x32/cursor_crosshair.png create mode 100644 glabels/cursors/32x32/cursor_move.png diff --git a/glabels/Cursors.cpp b/glabels/Cursors.cpp index d8c158d..ac343c3 100644 --- a/glabels/Cursors.cpp +++ b/glabels/Cursors.cpp @@ -26,6 +26,20 @@ namespace glabels { + Cursors::Crosshair::Crosshair() + : QCursor( QPixmap(":cursors/32x32/cursor_crosshair.png"), 15, 15 ) + { + // empty + } + + + Cursors::Move::Move() + : QCursor( QPixmap(":cursors/32x32/cursor_move.png"), 15, 15 ) + { + // empty + } + + Cursors::Barcode::Barcode() : QCursor( QPixmap(":cursors/32x32/cursor_barcode.png"), 7, 7 ) { diff --git a/glabels/Cursors.h b/glabels/Cursors.h index 8512c8c..42ccc84 100644 --- a/glabels/Cursors.h +++ b/glabels/Cursors.h @@ -35,6 +35,20 @@ namespace glabels { + class Crosshair : public QCursor + { + public: + Crosshair(); + }; + + + class Move : public QCursor + { + public: + Move(); + }; + + class Barcode : public QCursor { public: diff --git a/glabels/LabelEditor.cpp b/glabels/LabelEditor.cpp index f5b29fd..8c8db9d 100644 --- a/glabels/LabelEditor.cpp +++ b/glabels/LabelEditor.cpp @@ -635,11 +635,11 @@ namespace glabels if ( mModel->isSelectionAtomic() && !mModel->handleAt( mScale, xWorld, yWorld ).isNull() ) { - setCursor( Qt::CrossCursor ); + setCursor( Cursors::Crosshair() ); } else if ( mModel->objectAt( mScale, xWorld, yWorld ) ) { - setCursor( Qt::SizeAllCursor ); + setCursor( Cursors::Move() ); } else { diff --git a/glabels/cursors.qrc b/glabels/cursors.qrc index a940cac..26102e5 100644 --- a/glabels/cursors.qrc +++ b/glabels/cursors.qrc @@ -4,9 +4,11 @@ cursors/32x32/cursor_barcode.png cursors/32x32/cursor_box.png + cursors/32x32/cursor_crosshair.png cursors/32x32/cursor_ellipse.png cursors/32x32/cursor_image.png cursors/32x32/cursor_line.png + cursors/32x32/cursor_move.png cursors/32x32/cursor_text.png diff --git a/glabels/cursors/32x32/cursor_barcode.png b/glabels/cursors/32x32/cursor_barcode.png index 59ba92859bb03261d42b140851d2684fd5c8af57..107cb82dc2f0f303298359f6e365f7dfd08e5b55 100644 GIT binary patch delta 486 zcmVzyJg+4h#&rc_l?b?oJ93kx>c^ zNFXt}xPSpK_;!tf5kz0s4J={f#IF_ua1{Y91k!(iSR@_HW)uLilOSvr5WBpjpajUa z0I`z`ia=~1AX_OpBQXWY2DwkCC?v=k$esgaE2JZ_laSacsei@EK=vLWTLt0I{P_$F z7GD?`m?t8{lBO{*Y;R{^khp^oQ(4Hsz~9QiueQ|7R@*2KGq|41fFo|Np({|Np;>f$q4) zz;K|wAh9SBtSpuph?&yT7#Kb+XJFusWMB}!01UQh9QJX5?JH&oVsK}00swdtPILO( zhV+p@7=M{bL_t(oh3%Hn3Vsh0*vuvH60n4uoxnE!9*Nn;LMtLNC+`x%#&|$Opcf0OKwCh+U1S-i=K!Tk z&1)xlN_rWZN3n(XZv5JT5qbdTvvt>P<_<(={x1p@2+M9ldJ>jE36wwylt8+`=Z{Y0 c-%*jm1Lbu)Q9VPksQ>@~07*qoM6N<$f>;dGRR910 delta 151 zcmbQta*T0;vMd8*age(c!@6@aFBupZ*pj^6T^Rm@;DWu&Cr|cel*nT*@$_|Nzs1GO z#4DECWqSpv%+1rqF(l&f+slSr39X>*hIG@Jdd_r|;|w=Ls+{ yzyJg+4h#&rc_l?b?oJ93kx>c^ zNFXt}xPSpK_;!tf5kz0s4J={f#IF_ua1{Y91k!(iSR@_HW)uLilOSvr5WBpjpajUa z0I`z`ia=~1AX_OpBQXWY2DwkCC?v=k$esgaE2JZ_laSacsei@EK=vLWTLt0I{P_$F z7GD?`m?t8{lBO{*Y;R{^khp^oQ(4Hsz~9QiueQ|7R@*2KGq|41fFo|Np({|Np;>f$q4) zz;K|wAh9SBtSpuph?&yT7#Kb+XJFusWMB}!01UQh9QJX5?JH&oVsK}00swdtPILO( zhV+p@7=NQlL_t(oh3%Hx4uBvGL#^Tef4ROOA!I0*5;R#8UxaK&yD@MWBFXX{09box z6>1B4K7&W5b6I2uXcVl1ON+px|BAv4ccNS*Q}75uYmY*v1!b~D9ask_ziwq4Zm$7T z5h^`Tkh9v}h7M32MsK#O>SDNxt;1;`#)mEFQ8}+0`Ja;j#Gp-nl(n*#1@!u9G?j#qSG)y#r$_#t}0000l^3ab+F-fzs6>^&7eLAB<$(x=d#Wzp$PyK Cl{Mc0 diff --git a/glabels/cursors/32x32/cursor_crosshair.png b/glabels/cursors/32x32/cursor_crosshair.png new file mode 100644 index 0000000000000000000000000000000000000000..b54eba1433d2c22b06794790689ae405f4bcbec8 GIT binary patch literal 260 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1|*BCs=fdz&H|6fVg?4jBOuH;Rhv&5D7ekj z#W5tJ^=)`GUxNXM^s(RZmH$>a-f1p-Ww)fWv+Y8t+stKO$~h)aDL!YeB-oXmI_Vqh zR)uM5x+Tw?IT#fab}?+{^}e_M=){=}XB(y7pYUm5pBU%hl6PLik8!V1_6s5T?Nt^O&ytVq(R;No9`bcP~}jtoNZvl(iypr@OSc zP{8LuC)hb#Yq`&H&r}q<%)eMbfN2@`f_fjj?{yD!bKZUlvMoMkv=it922WQ%mvv4F FO#m5_Ve|k1 literal 0 HcmV?d00001 diff --git a/glabels/cursors/32x32/cursor_ellipse.png b/glabels/cursors/32x32/cursor_ellipse.png index 40924af40c5803f28a29464dd3f815d7a4fd02d1..52275b7d98060c1dcb54912832c2e4e33d5ff168 100644 GIT binary patch delta 588 zcmV-S0<-<|0r&)vBYy!PX+uL$b5ch_000=3V_;x>zyJg+4h#&rc_l?b?oJ93kx>c^ zNFXt}xPSpK_;!tf5kz0s4J={f#IF_ua1{Y91k!(iSR@_HW)uLilOSvr5WBpjpajUa z0I`z`ia=~1AX_OpBQXWY2DwkCC?v=k$esgaE2JZ_laSacsei@EK=vLWTLt0I{P_$F z7GD?`m?t8{lBO{*Y;R{^khp^oQ(4Hsz~9QiueQ|7R@*2KGq|41fFo|Np({|Np;>f$q4) zz;K|wAh9SBtSpuph?&yT7#Kb+XJFusWMB}!01UQh9QJX5?JH&oVsK}00swdtPILO( zhV+p@7=QjrL_t(oh3!_+4g(eTmK!6c{L)0s`lVjgfg2Qpe3+mhhCsB!2Y|F&+zdc zps1qy?@nYE?j($0kj2|9r34@`<5AUa;|Wb%vd}o;Cd`)5`aiyomjp!8-(bs-63|w3#D}f)WdS=8 z7O>$Nr~IFt0}!y3GS>@OduF=ysCVvy<*8ytz&Sl* ad=&w3V)EEV$onY(0000Px#24YJ`L;(K){{a7>y{D6tO#v8x2XskI zMF-jn0|F5<$oaI+0001UNkl700pMmFUY6>Z{%3aS#AjhYi#5;5nmEYMNkzt63HLq%lkl_T7gmz z9DNMZ3NYC_dv!wDTL6O}@G@o`|5(zTzv00JeSs?f>KZn000000NkvXXu0mjfu3=FW diff --git a/glabels/cursors/32x32/cursor_image.png b/glabels/cursors/32x32/cursor_image.png index e5b4781b4cc2b4f97299e11445bfa8381f0e32a3..a56a20859abfa46d1c1a435afb339e972eac8f8b 100644 GIT binary patch delta 598 zcmV-c0;&D?0f7aOBYy!PX+uL$b5ch_000=3V_;x>zyJg+4h#&rc_l?b?oJ93kx>c^ zNFXt}xPSpK_;!tf5kz0s4J={f#IF_ua1{Y91k!(iSR@_HW)uLilOSvr5WBpjpajUa z0I`z`ia=~1AX_OpBQXWY2DwkCC?v=k$esgaE2JZ_laSacsei@EK=vLWTLt0I{P_$F z7GD?`m?t8{lBO{*Y;R{^khp^oQ(4Hsz~9QiueQ|7R@*2KGq|41fFo|Np({|Np;>f$q4) zz;K|wAh9SBtSpuph?&yT7#Kb+XJFusWMB}!01UQh9QJX5?JH&oVsK}00swdtPILO( zhV+p@7k>cP~)! zKlcFD4fR|RWLDiIWI6$|1khToAw^^zKp)IX7k|h;wYzPQc^{Sb z0%lSzE+U$+ukkVfQ|JY8Z+QbibEO2pt}=qKJ*Eu66-NZYyp;m*#kEimf@vFowP>#y zh^-(p5MeTE?FeEEU^XUZ=B1-}W(SytQ9P25)My?7i=%i)yREteAk#Y10NK{O4KTaq kM;~&avRf|$RR0!!0aO>rH)P^Vo&W#<07*qoM6N<$g3F@(>i_@% delta 202 zcmV;*05$)C1@{4vBOL$%b5ch_0Itp)=>Px#24YJ`L;(K){{a7>y{D6tO#v5w00(qQ zO+^RV3IhTY1Kbwo-~a#scS%G+R9M69l|c@`AP5A(@c%DQpU|cYY7~wb!V+fDZ1bSH z!B{zyJg+4h#&rc_l?b?oJ93kx>c^ zNFXt}xPSpK_;!tf5kz0s4J={f#IF_ua1{Y91k!(iSR@_HW)uLilOSvr5WBpjpajUa z0I`z`ia=~1AX_OpBQXWY2DwkCC?v=k$esgaE2JZ_laSacsei@EK=vLWTLt0I{P_$F z7GD?`m?t8{lBO{*Y;R{^khp^oQ(4Hsz~9QiueQ|7R@*2KGq|41fFo|Np({|Np;>f$q4) zz;K|wAh9SBtSpuph?&yT7#Kb+XJFusWMB}!01UQh9QJX5?JH&oVsK}00swdtPILO( zhV+p@7=NQlL_t(oh3%H%4uBvCguUkbzcT$X#|X?8*jC)upLE=395WO}L`3o(0BC!k zs#*)&PvLRX7FIa{CIu~UeGwS;-y@jyFybPjUc5n&w#P$i3#3`l1lj=dbdh8DdInTA zsQ!!~@79&ImW?3~GKW|KAg748E*wCd{FEE>GCA^S`;~d9c#yq9oaSks=4qbh-!wOG mLj$6e68I}N0kHP7|3W*{sNIUn!#UOf0000~{{NTRi+I?Pw6LDu&gRXwkVufaZ3_!e zhg1VqRZodTO1VlwMsA#@r6M97(2~3Ll8Dq{ME;A2S4IFM@9n{ukwfmy#W!Eu1MQh= zV}6nE3DuL^8d`U86x4#A=M1hoR0PZ%k+-=b3s4NQg9?~op@~2O(qF-ByxHci{PgUR zu>b*9z)BV*m#Cc4`p96S79bHL7@dl@52Ey4(96j>K0^8{V0Kij`mgI4iMaHKq!n=_ fnl&~T79NKW{XDJ+gu}~z00000NkvXXu0mjf6tH!~ literal 0 HcmV?d00001 diff --git a/glabels/cursors/32x32/cursor_text.png b/glabels/cursors/32x32/cursor_text.png index cda6b21d4e003017c991569c01c25ac597bd0e01..756bd2bdc4836951f424f7c4f2c2fa94d5426e04 100644 GIT binary patch delta 515 zcmV+e0{s2b0k8y+BYy!PX+uL$b5ch_000=3V_;x>zyJg+4h#&rc_l?b?oJ93kx>c^ zNFXt}xPSpK_;!tf5kz0s4J={f#IF_ua1{Y91k!(iSR@_HW)uLilOSvr5WBpjpajUa z0I`z`ia=~1AX_OpBQXWY2DwkCC?v=k$esgaE2JZ_laSacsei@EK=vLWTLt0I{P_$F z7GD?`m?t8{lBO{*Y;R{^khp^oQ(4Hsz~9QiueQ|7R@*2KGq|41fFo|Np({|Np;>f$q4) zz;K|wAh9SBtSpuph?&yT7#Kb+XJFusWMB}!01UQh9QJX5?JH&oVsK}00swdtPILO( zhV+p@7=N}&L_t(oh3%G04uCKSL>=S(uZ$aQ8Zuz%Ctb)SZY+V2oy#&OK%>A6R~7-c|1*qvy@hItNJ;)c2#c8^+5%l{(FEE6dUq?waJvVn z9;otpkfYi@hT8$myTDUVODw;b0ADpC{_}ECfJ}(H-{kD}Y)LcZf%?SM0)UoIbpv?C zBM@CCjI`)0cKaA6KmsJdu=LyE2)-e@4k7|EBTee3x&ed9Ts2h{gWCWA002ovPDHLk FV1lv2;0pi% delta 163 zcmdnMa*1(*vMd8*age(c!@6@aFBupZ*pj^6T^Rm@;DWu&Cr|cel&E4a@$_|Nzs1GO zB&v1d-%T!{vLH_v$B>A_Z>JsPWl-Q?Uitfd54S{elc@Z4)~bM60v~r?$~D-f&ceVT zx-RyL00TqbwF`FzEX^0RHu|+oKjS?mc~DR2A`{S{2VbM7#_CHurTR{BWi#CQEw>aX O$l&Sf=d#Wzp$Py{6FK()