From 7bc509cb4c261627a9d42c2bfc74ef3d3a432563 Mon Sep 17 00:00:00 2001 From: nakst <> Date: Sat, 18 Sep 2021 21:23:27 +0100 Subject: [PATCH] simplify canvas pane shadow --- apps/file_manager/main.cpp | 2 +- desktop/api.cpp | 2 +- desktop/gui.cpp | 26 ++++++++++++++++++-------- res/Theme Source.dat | Bin 52816 -> 53108 bytes res/Themes/Theme.dat | Bin 53868 -> 53944 bytes 5 files changed, 20 insertions(+), 10 deletions(-) diff --git a/apps/file_manager/main.cpp b/apps/file_manager/main.cpp index 63f947d..e021bb9 100644 --- a/apps/file_manager/main.cpp +++ b/apps/file_manager/main.cpp @@ -6,7 +6,7 @@ // TODO Possible candidates for moving in the core API: // - String/paths utils -// - Blocking/non-blocking task systems +// - Blocking task systems // TODO Don't show modals if a folder can't be loaded. // Instead, show a list view with an error message, diff --git a/desktop/api.cpp b/desktop/api.cpp index 8ced5bf..52bcc15 100644 --- a/desktop/api.cpp +++ b/desktop/api.cpp @@ -564,7 +564,7 @@ int EsMessageSend(EsElement *element, EsMessage *message) { response = element->messageClass(element, message); } - if (element->state & UI_STATE_INSPECTING) { + if ((element->state & UI_STATE_INSPECTING) && message->type != ES_MSG_GET_INSPECTOR_INFORMATION) { InspectorNotifyElementEvent(element, "message", "Element processed message '%z' with response %i%z.\n", EnumLookupNameFromValue(enumStrings_EsMessageType, message->type), response, handledByUser ? " (from user callback)" : ""); } diff --git a/desktop/gui.cpp b/desktop/gui.cpp index a38947b..ad511ed 100644 --- a/desktop/gui.cpp +++ b/desktop/gui.cpp @@ -3538,6 +3538,7 @@ struct EsCanvasPane : EsElement { double panX, panY, zoom; bool zoomFit, contentsChanged, center; int previousWidth, previousHeight; + EsPoint lastPanPoint; }; EsElement *CanvasPaneGetCanvas(EsElement *element) { @@ -3601,17 +3602,26 @@ int ProcessCanvasPaneMessage(EsElement *element, EsMessage *message) { } else if (message->type == ES_MSG_PAINT) { EsElement *canvas = CanvasPaneGetCanvas(element); if (!canvas) return 0; - UIStyle *style = GetStyle(MakeStyleKey(ES_STYLE_CANVAS_SHADOW, 0), true); - EsRectangle shadow1 = ES_RECT_4PD(canvas->offsetX + style->preferredWidth, canvas->offsetY + canvas->height, - canvas->width, style->preferredHeight); - EsRectangle shadow2 = ES_RECT_4PD(canvas->offsetX + canvas->width, canvas->offsetY + style->preferredHeight, - style->preferredWidth, canvas->height - style->preferredHeight); - style->PaintLayers(message->painter, shadow1, THEME_CHILD_TYPE_ONLY, ES_FLAGS_DEFAULT); - style->PaintLayers(message->painter, shadow2, THEME_CHILD_TYPE_ONLY, ES_FLAGS_DEFAULT); + EsRectangle shadow = ES_RECT_4PD(canvas->offsetX, canvas->offsetY, canvas->width, canvas->height); + style->PaintLayers(message->painter, shadow, THEME_CHILD_TYPE_ONLY, ES_FLAGS_DEFAULT); + } else if (message->type == ES_MSG_MOUSE_MIDDLE_DOWN) { + pane->lastPanPoint = EsMouseGetPosition(pane); + } else if (message->type == ES_MSG_MOUSE_MIDDLE_DRAG) { + // TODO Set cursor. + EsPoint point = EsMouseGetPosition(pane); + pane->zoomFit = false; + pane->panX -= (float) (point.x - pane->lastPanPoint.y) / pane->zoom; + pane->panY -= (float) (point.x - pane->lastPanPoint.y) / pane->zoom; + pane->lastPanPoint = point; + EsElementRelayout(pane); + } else if (message->type == ES_MSG_GET_CURSOR && pane->window->dragged == pane) { + message->cursorStyle = ES_CURSOR_HAND_DRAG; + } else { + return 0; } - return 0; + return ES_HANDLED; } EsCanvasPane *EsCanvasPaneCreate(EsElement *parent, uint64_t flags, const EsStyle *style) { diff --git a/res/Theme Source.dat b/res/Theme Source.dat index 395a94a0e0891702f23f07fda975a1fdd71438bf..2ba73eaaa93bfbaa2e7b2f819d9c166113b8e584 100644 GIT binary patch delta 127 zcmcaGhxyAqW>!%K1_s-Wtn7^J&0($Ktu}3&1sQ{QSj3tb8z+DCl-}ILt6$2=%*>FI z!jRIyIJu|Xak4woBg|ia@QVawXf&qb(kro@1P(lT>i47`s hlgMNhlbUxmldn<_lR%IslMrtPvpIu+IkVfnnGt&b8Vvvd diff --git a/res/Themes/Theme.dat b/res/Themes/Theme.dat index 7fc9bb1fca7d77ea5ed8b3fee7b32d6b0119ebc7..ed9c15e6b02e298de2a0fe57feab8a24062ec333 100644 GIT binary patch delta 2197 zcmZA3T}TvB6bJA-J0EMcg)xQ(Rz^lfT1Zw#O(_@}6e($1+Q-61_7EwRZeOg@Lp}t# zT?--~Tu=z|LD9em10M{E3=)EjjFc7%Dk?GxD(Zh)XT5XoB0K)h@!WIo&YksRw?5RP z2M<*Z-?}J-SdO2XY9Vr(h0yS#5y7DMT-Zrdr%REB7mY&LL&Nv~n({P^BG^0AAWIa$ zMR_!6J2ePAR+1^>80?ARohSr*YUsi=4a=RpA=+;{VFbomffm?3>Pi>7n|uwHZW*At z?mMNX*-kGaj+N+_rl&Codx_~R%k;YyMqsaCDHyJe$qH1MK;#W;coH^^zSQhE?5$za z1R7PKo%tzanjH~gAwIBGq`*EgOND)AmI2G3?cc4M1^dc6%7*zZ@3!W^z8U%v5eUp* zJEn88c50MzFJqTOO zvWH=>nT^VERCt8QlG!8U?)Y<9I?JAfEoBy$D-GLukH|9C!$;T(WUJ?62DU)CF=!RP zWusvi8|Q^srPQXK48Tr$vNe$gTdm|#g-qBQ88hw3TGm4jBI}st!txTU_0gaTg|H2* zY7s1-{cQUWUpvW;y5uw}bR&|- zo&pF-maLD=SaSgRrJHY5*vhlBla5RUzxw%bsYAc%xD7UHk{i!3Hza`7g%EA z+V%FLW`GZHs49lta31!UZ0REGCz*^EX6zTau!pz0Og#z7Zys07^gkr`A^9uy5!;f+ z<1W+6M50Pp6-f?ECzc0u>&~U+bH8d@hmn+!MHj*nNQWZWI?2QtmGNeDs6f(AdRM}{ zq`DUNfmoQ2p+h5*jVlj{y~lT9$)vgkmP#zfw`r#J1j!~chc?(2RLf697c4=#6~ro@ z@jA_n^dZ?U^%grh0IPCTD{L5+F4c(+qp%&sCSW_sj3!~bh)uz=blhMVE-}Q1S>SHc za31C-zq|n3Lu?VY7n>Ge6RzgE{*q~Lne}gjznQOuo0&z zd9Xv|0V(8)VOqsVj*uh(DT4LeFK%uk}jZ6wD@(gJ(ym;+-m*a^H*?T1wCYZq@f zaMVa%kYpHkigXx-l@ObNl@gnRogp>@DA^^}%jRbz;{BV4Y;HgRqEhh