From 63feb0eaf938c1767dbf5a1f03b22f181381798b Mon Sep 17 00:00:00 2001 From: nakst <> Date: Wed, 6 Oct 2021 18:37:45 +0100 Subject: [PATCH] designer2 zoom fixes --- res/Theme Source.dat | Bin 583488 -> 583368 bytes res/Theme.dat | Bin 29760 -> 29880 bytes util/designer2.cpp | 26 ++++++++++++++++++-------- 3 files changed, 18 insertions(+), 8 deletions(-) diff --git a/res/Theme Source.dat b/res/Theme Source.dat index 3f5cbb260886f2d06fb61250b8b666273c2794c4..325cad1e27a0e975cdb64f7352fe3194a9210ea4 100644 GIT binary patch delta 456 zcmX|-K}Zx~6vyX%-?;N8!_*8a7FXEA&LQ2=wWyOzg6>{qphBTAc1v_FtGJ7Gh#2Wm z9U_oGky*< zO?$;P&DH6>uiscp=R=XYc=bg!d|3@a!4zDfD_Rs0Sq+WN2Xr!sraTCZS&+-;aS6!# z4wuR4Q(gCSqkF9lUxWBtH^{Tp#N%L!>^FpdU z&Rztm(hZjU(vCqCa^g*xgc&NQjTE)Fg4GaDQ1A{d@_kiie8^BVg(kVn5M$H2D4h0D zS3lU&N#YOA)NRj``WRJu(WAN#Hn>fSVKExB*gK$NndYbjGRH`8tmw{e0B>z8E4z<72b^6SsQl?k7u9U&E>O& z+@q4aFeN5gcO&Q+42ZdHQ*5&s)ka`K=lNWb`tR_lsD{|e^7HQWOsOzcES5Vik@FEz S?ha!jptncr&;O1v!~X-4%cOGv delta 437 zcmX|7&r1S97~OAob3e@>=n|1>7}OzgGmL_i1x-9fQIJ%J47$%X@SqfA5L7Jjbt#s* z;Nq;Tsp}Bu?UHr~VDM~3oIKZq zM*vA)xDhwXHD%;pL zn@8ssMpUp8?6zs?da)%s4EBtp88?Ox>=(zZbwUf+uQ67*y1pHNzs2Ax>jKNN49d)W zG$&g4Emnr@?SWZg8(@D4HVgKT=<6omg~A*>r$l#mz>W*H0Cw7npT!baxNM#=&6;-M zxsPZiX7M*ztB9kMMDGY@f(6-QrG`ZdNpJ*2a0-}96iNqcTzz$7OPB}d5qbq+w?%Fd znB`!RlUWLwAPSd*tru)3*nUx@5-iansQ0xRELpGvU=PKgg%ipLcu^GbgLy=98`zJ6 zb%JdXxm{pe1?%Q)%l5tvk1afXV2|ia0V8@8hrrTArD1M|!U#MYgu*4Tje?DWC5qQ( zf~TNx6`r$V`KG~g9QE`oG6U8Wr=aL2d)zq8@I2v&)}1eaJuP}z0^5$6Ij^T>KIXQ= zbc*O3p|B3@S)q^wRwCk3!Mt%yQ3lwnj&0Q)<$;xnxNTt9EyH;cDpd?vA(D53U2`Ps z1*rntA>s~zoe|6j_PQfiH`4<4S}bnuBJ2cwU(C1*?D<&W>gCwW7ZYsn06aDD=n*|9 z7r9u@Sq5M3G9$yhrwPE%m=m$zp&1u*#TA& zci@S-z>dTw64^JUdI7J9n{N>8SS(Qg$Pf*4&w5*pTt2rx>tGrkC(^$+$$#LF400zR}mfb(x!a$yZ=aHt3m7m2Bn8`Xsf9vrp`^s!tHP!E$(}p;|3PSVp6R8DouH z=iRFoxT3MdsPyw2jeAuG_xLw(TVaxWe0+Rm+8-&A>n~8tT;ngaa+@$2R*$D~N-)X2 zf>GVXAN$9RqGo7q=Dwx^)x}qub{R7OnK`_rxzNZ6aBXwFaWuf6H|HCpfrw^Gpg_&B zH?YGf4PJgTa8jv3e$aBr$OuL9P6rDOe~3Q_)*BzBgf| z24VW!hZP!w-G^2B@$SK^&5`aFYB{HzTc)llxpL@{(qfA_aC4G#W=`+sdFSc5SzByz z3c>D=Amwo(Y=0;i2#r{{VuZm4HyX^9#ULXhWkN=-HZf?+w!ZJ3cm3|6R~}D3-{*ba z@B94T-+Ny9RbE|``ArQ|AD$LMY(``Sg^>8Mj+~)b<>FQ5QfAk0sBRnnn}&{ zA5~yqS@Ja7J=E)P)k3&wCReTlyJgyhQl>p#pc(8NO92zZJ#@_x>VojGvI$`mws`U> zuuQuNBt)Er!L~3q0_L*+=U%%S1^WSuo2E_0=UxQ+F=|L9*cC93vPE~7SR?}YGuzD# zuz5IF81aHLV0TQV*Gsf$0qiA<89T-j*l(6y>j^7hcN1(!tiP*(eVbP#!Sl5ZK?0HG}=be6`YjRPaJM!Q6F$wKEn3drKwnqK|59j?gJ6y-Ya+ zCfP3D1M6XVVXzMvdmk*o*dW+;=4cqquVn1(MEiwbBY-xx@F-YE>{Uv%^b%MGD|i{~ z4x2j#rWlKWr6dflt$zb>T>{4JOoKJBMP|U(vx2i=8yK4ddy<`vC9pBJ#=Sbg3^w^M zu%8$c$Ax%~O*X-b8B3*n<#26+;$TV^*i-tFz=$8s0o#W2`sjE#cTv#Jwd11iN*PlyOu1IwERdtDhDlM-(O9;PzbI>OQypuEA@64)Mm z$662LDp*a@5f{Sj6XMMz>r$qJeaWu6Jg}p&yeFd1L!xsfG_cMg%O}sR+j3YfwBfcU z+2YKepPzpm2n2=<;TDC$6wAxYkDJ@ITGrCOQL9?JDmg9aO;%UG!R| zljb@$88aR9sJM`Fy+vvjf*`roNkOk^)Oo2TcN<;smKgnBdYJvZy6BDRnG_DBQC_F1 zW+)bZ! zA5@pSV}5edqW{cA4@O%mZSSd<6*SOOufjdr-axC9^7ao;4hBbTp?i2BUbH=es6ux~ z5D`Qc_#uxF6NtQHvCk!ZR--3p5HkqfpE~TgAEA5U?G$1PVfutflags & OBJECT_IS_SELECTED) { if (canvas->dragging) { - bounds = UIRectangleAdd(bounds, UI_RECT_2(canvas->dragDeltaX, canvas->dragDeltaY)); + UIRectangle offset = ScaleRectangle(UI_RECT_2(canvas->dragDeltaX, canvas->dragDeltaY), canvas->zoom); + bounds = UIRectangleAdd(bounds, offset); } if (canvas->resizing) { @@ -2182,8 +2188,8 @@ void CanvasSelectObject(Object *object) { if (canvas->showPrototype) CanvasSwitchView(nullptr); UIRectangle bounds = CanvasGetObjectBounds(object); - canvas->panX += bounds.l - UI_RECT_WIDTH(canvas->bounds) / 2; - canvas->panY += bounds.t - UI_RECT_HEIGHT(canvas->bounds) / 2; + canvas->panX += ((bounds.l + bounds.r) / 2 - UI_RECT_WIDTH(canvas->bounds) / 2) / canvas->zoom; + canvas->panY += ((bounds.t + bounds.b) / 2 - UI_RECT_HEIGHT(canvas->bounds) / 2) / canvas->zoom; ObjectSetSelected(object->id); UIElementRefresh(canvas); InspectorPopulate(); @@ -2372,8 +2378,12 @@ int ResizeHandleMessage(UIElement *element, UIMessage message, int di, void *dp) UIElementRefresh(canvas); } else if (message == UI_MSG_LEFT_UP) { Object *object = ObjectFind(selectedObjectID); - UIRectangle canvasOffset = UI_RECT_2((int32_t) canvas->panX - canvas->bounds.l, (int32_t) canvas->panY - canvas->bounds.t); - UIRectangle newBounds = UIRectangleAdd(CanvasGetObjectBounds(object), canvasOffset); + int32_t x = PropertyReadInt32(object, "_graphX"); + int32_t y = PropertyReadInt32(object, "_graphY"); + int32_t w = PropertyReadInt32(object, "_graphW"); + int32_t h = PropertyReadInt32(object, "_graphH"); + UIRectangle oldBounds = UI_RECT_4(x, x + w, y, y + h); + UIRectangle newBounds = UIRectangleAdd(ScaleRectangle(canvas->resizeOffsets, 1.0f / canvas->zoom), oldBounds); canvas->resizing = false; if (object) { @@ -2615,8 +2625,8 @@ int CanvasMessage(UIElement *element, UIMessage message, int di, void *dp) { int32_t dy = canvas->leftDownY - element->window->cursorY; if (canvas->dragging || dx * dx + dy * dy > 200) { - int32_t canvasDragNewX = element->window->cursorX + canvas->panX + canvas->dragOffsetX - element->bounds.l; - int32_t canvasDragNewY = element->window->cursorY + canvas->panY + canvas->dragOffsetY - element->bounds.t; + int32_t canvasDragNewX = (element->window->cursorX + canvas->dragOffsetX - canvas->bounds.l) / canvas->zoom + canvas->panX; + int32_t canvasDragNewY = (element->window->cursorY + canvas->dragOffsetY - canvas->bounds.t) / canvas->zoom + canvas->panY; if (!canvas->showPrototype) canvasDragNewX -= canvasDragNewX % CANVAS_ALIGN, canvasDragNewY -= canvasDragNewY % CANVAS_ALIGN; canvas->dragDeltaX = canvasDragNewX - PropertyReadInt32(ObjectFind(selectedObjectID), "_graphX"); canvas->dragDeltaY = canvasDragNewY - PropertyReadInt32(ObjectFind(selectedObjectID), "_graphY");