From ab84ab91ae6f767f03380fd43108ce0da19bb865 Mon Sep 17 00:00:00 2001 From: nakst <> Date: Thu, 7 Oct 2021 18:46:51 +0100 Subject: [PATCH] bugfixes; designer2 arrow modes --- apps/installer.cpp | 2 +- desktop/styles.header | 2 +- res/Theme Source.dat | Bin 558600 -> 561744 bytes res/Theme.dat | Bin 29936 -> 29672 bytes util/build.c | 3 -- util/designer2.cpp | 73 +++++++++++++++++++++++++++++++----------- 6 files changed, 57 insertions(+), 23 deletions(-) diff --git a/apps/installer.cpp b/apps/installer.cpp index a129044..afd3eaf 100644 --- a/apps/installer.cpp +++ b/apps/installer.cpp @@ -1055,7 +1055,7 @@ void _start() { EsPanel *buttonsRow = EsPanelCreate(panelInstallOptions, ES_CELL_H_FILL | ES_PANEL_HORIZONTAL, &styleButtonsRow); EsButtonOnCommand(EsButtonCreate(buttonsRow, ES_FLAGS_DEFAULT, 0, INTERFACE_STRING(InstallerViewLicenses)), ButtonViewLicenses); - EsButtonOnCommand(EsButtonCreate(buttonsRow, ES_FLAGS_DEFAULT, 0, INTERFACE_STRING(DesktopShutdownAction)), ButtonShutdown); + EsButtonOnCommand(EsButtonCreate(buttonsRow, ES_FLAGS_DEFAULT, ES_STYLE_PUSH_BUTTON_DANGEROUS, INTERFACE_STRING(DesktopShutdownAction)), ButtonShutdown); EsSpacerCreate(buttonsRow, ES_CELL_H_FILL); installButton = EsButtonCreate(buttonsRow, ES_ELEMENT_DISABLED, 0, INTERFACE_STRING(InstallerInstall)); EsButtonOnCommand(installButton, ButtonInstall); diff --git a/desktop/styles.header b/desktop/styles.header index a639fb3..6fde0ba 100644 --- a/desktop/styles.header +++ b/desktop/styles.header @@ -1,4 +1,5 @@ define ES_STYLE_SEPARATOR_HORIZONTAL (ES_STYLE_CAST(1373)) +private define ES_STYLE_SCROLLBAR_PAD (ES_STYLE_CAST(1371)) private define ES_STYLE__TEST_STYLE (ES_STYLE_CAST(1385)) private define ES_STYLE_ACCESS_KEY_HINT (ES_STYLE_CAST(1221)) private define ES_STYLE_ANNOUNCEMENT (ES_STYLE_CAST(1511)) @@ -119,4 +120,3 @@ private define ES_STYLE_WINDOW_TAB_INACTIVE (ES_STYLE_CAST(1409)) private define ES_STYLE_SCROLLBAR_BAR_VERTICAL (ES_STYLE_CAST(1365)) private define ES_STYLE_SCROLLBAR_THUMB_HORIZONTAL (ES_STYLE_CAST(1367)) private define ES_STYLE_SCROLLBAR_THUMB_VERTICAL (ES_STYLE_CAST(1369)) -private define ES_STYLE_SCROLLBAR_PAD (ES_STYLE_CAST(1371)) diff --git a/res/Theme Source.dat b/res/Theme Source.dat index 927e7506590e8dd1680cd40a749c4cfc364c9ab8..81444abfb7f92ff3299bf5c68c0d0693c22ecd1d 100644 GIT binary patch delta 19093 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 diff --git a/res/Theme.dat b/res/Theme.dat index e6cc8c13bb6fa70448009a60539965af44bdd399..133483e852c70f430efb04bcec1e87e7be6090e1 100644 GIT binary patch literal 29672 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 X7NVTPv#($u&;rl4xAYFA6aN1I&IO#! literal 29936 zcmeHQ4|G;Xm7g#9zChDJ15GO^($wOb+O#GiE!3h7G-BG~8f<7&jTPDysRfOSXXzR> z9ywdOhh1qGD^+xH4=RgvMK|r%if($A9&x3bwroWOOQ8r=S`bnSH2C)Sn}6@V$@@Y+ zgIhh@`Odt#@4h>C?%bKV^XJW*@4a(2-TO(U)a&85bSU-yToE9pJ_EjUmbf{qXSf%|cQ%YIa;pJbEijs)(pY_ZDavL%jR z1#mwTakFp}fO}lvn8qaFzLhIhs#q1fxHZ7-1ixZ9hnoi6EkWKIfty|u=Z*Yk0r#4c zEZD`mY6ET_)3CS<#9sj14~!1HPL}}p0YL}#WR?PVUchf9aBmCJT@BnXAagcboO3d- z1MXK^FFB9v2JY5G8cOv5_jI7s&A>eaUFF~$zpcRS$>x|1Uv9gAn<8W>f!hzZ2H?g7{5Ar&Cy4tHaJc~21Kfxp-Oa$A5#Y7}Hz!DA zD{yB9{I&r%D!}ak?yR5=?Fa5_K^g~u8xzFs18!%4>j&<_Ag=njQWpidEN~YGZMqz| zvje&c;LZu?DuH`VkZu)l;{#j`aIXva)dTnX05=u5GlO>70NnWjzb4@B4D>t;xC;aw z+h7ZDw{(oS{)HzkO>6u8F&+;ZS95BRMB z?uvkJ6>x7$;4*3raDOA}24&s=+?4@cH*h~m;xe0ndnft;Df3p~rU(4C1NW$iOa1Kv z?y7+90C1lSaL0iAl!#0D)MBOX2+-_O-zMJjh!IaPO9MFhQNbeI{2TWX`CSzG1NYh7hy=f0;N}E$+kv|w!0iI=#sIe;xc3FP>1TXv?YQ@ix~cZkni`#u zy?udR>KO}c1oQ=;7WPw{^_@0TlL-1 z-y{8H_57K~(?3?SVC*C1V^NNtoi$|Pa*&>ztqV}$y1lfEX-;+15&C8P8Hcg(TuvT)OcJDA3m&g|J-xW zL0?Ke*!^I%U-BX$j=(Zm7;w2l$5G+AS%vsScGYHMo&`>O~W9x zoG0l9Vo3j?&C?>U>RQZ>r@MOFk zez8mPf~U`!mX&tL6g<~boDn*H>_qha?|&cmWs5FH)}yS24;(lU zsV-B##IFNSTki(wU-N{lbS!_>RVV6Hov2fFDy~y?%GD{-Pe6P<$_M;<0Z$b0c>*2> z_#_hq{dmASzkpvW@UOG@<>!!4xIFa%vv@(|L9b(CTzz~<@=U7_-teoN%g*(@43LsO zEn8=L87CsU`q<)mvU{kjQ<)}DXZmn|3n1>pAAR&u-RExIx>fh#>%b?`3LzV-q_Am# zX)k4lJ?~WAWYIvUq5h)kM<`@9j^v|{!z@wGc&wr8O`fsF&Ye58oKHRVl$LY-`t`_Y zUuG)!zVN~ex*sIWd@w!2$B!TXyecPkMN0y1~nk@farzS*Xi_PYdfUUWP7x6Z&qlpQcI% zzqogYhFK>GcOebBKNS6;s1A(W&5-J&=SV1jhQ0Ud(&T4 zqE6F=VH%D!te+gWh9T*@fe%B*(d{D$$)m&ak|BAJJ`B@vq>*tYPtvEQohBn?X527O zl`~jUbLY;5ZE98x8I0fHs9Oi;6zmu9uv7P`hBX={w}-6Gb1&y!);dSMajq0jW!xP? z#A8|MbQ+rdSfjWh9$(}v%yg#l1*ddr^{j+_Qfg~TZA;6*v&iwZZ3)IPma-@YmFO=E zX-iwJ+(T(gl@pDvb|SGYoz8xD3HayhcSpeGvmLMYyM_0=o6j?4nJuMRGB(teE8lS^ z+k%g2XjpAV2-IBT*#PuS0xz>m)1u0xKYsL z0bO5EcD^9cZ8Wwi`iUMU7@E0~mZ&`Gk29^nM2fGeHe!Y4*`Ga`Gd8Wp&!f0JbVh70 znsM9QBW2L?*7y|4;G}usgNir!#|B7|S)Ch2>(%;zP~WD?+-P~i411Z~+QfSiO~_2j zH!PMi1TxQo3uWFS=_v+e=K7v=a$W3k%%M0(Vwtipadd=dV|}j@h(7Q%Z**{zR?Zm{ z3uEt#+}yOcxA#46P3+s>{`NJQk$%qFQWV2?6r)REUqc#tjNu6-r(gNRR=!EY%C|F6oUwo$8x^((C4(APF^SH;oc{_oRoRoUooC=DfNP7 zLe-wixiV>zJZ+oio*%}?931lolXu%5qt%k0M37;W{qdGgwrSpv)IUNH&c5f7bCs=< zrEHiQgZ`y4ISKSLSP);^^S&64LJGFUyRwUVApieD}7Rz(@#C;c-wor|BXdG9#L>s+zoqOQeBK?W> z=TM;z96k(Pee6%+8Pbwxp1wIj>UcI?h~jZiv|i(Nq;j}I#ij1p5Z%yAeMetM!oP=&4MBFyhPYn(X)9unTA{2 zTxEIol^q>z>Q4>!gg~NmItg0#sit@@>mlMsj`J!2`e5{fq10 znWyE5n{at`mY~u%H#A?Z`SHf-jPR~M0nhSFLfyyn38v}ts9{{(df3Y+j_WlW>i_8- zzl=J;C*jickG04VAPP-2P^tRg;CQ0^F~h}}B3(A`Dkn{4)w zFf=+pQ$K7;;h9$V`4%&FzHKD(pD%y<&hDT{IUb@D;|0Jhv(OrA zGOu6WxxQp%t$r3?3aAJA{ZSlK-JLbIplujD!Oqn=UAOMmGgYi_4})hYr^|ab-ezWU zQ9$1N`}>`oIDnKmlcj2nqet#?Y13 z>ma@q$TNYUjmH}X;`J>UZJ9`YOOdHrFH;htcdCIJ&fc+Bt!E-3%N+wr?(P$MqCan3j z$Th!4yN~y!GhaGWzpKQ1KEB^JWBK|SO1}@2A>q*TotdPO_idJk3`xuTw6NRaWk_1y zr-j6YJ|C^*S#NnVWc+*~^TOvcByHvNF;px*cUWfkZXYc@TKcLE({w3y=X4qCkYl?Y zR)&D!GM6Js zzBadIh;r?~_%(JIcp5jLKdc14;)+*oEyv#+Z&XdQnsPxNTYJJi*I|DBvfMj|$n##o zGt0>WoE*!#`7U|(4w0v3;xC4$9Lq|cliubD4Ui}A0hPN=)UC(uSgQp*lXX7c`>5B1 z>{`&t&EM_#%{_}d+9BDQLGeWxIyrXvOV0=gI;M1{Iw)9FZT6}^2uq`6t z%zQRRj&Dbvzpz1e!Wd?7829KAn5)UC2FrybnX}?;$P> zO+5Dh+;hK5rp09Qw7Ej$&q6})QsrL?xhMxi%9s{XZqkIIiRa{Rm1!|iD?i(Wb77e} zJi{{0C3$PBrJcBY z{LZl5>UAxvuA@hfKCwaaB?riwHugx{1041jW2_xkSAmU_#_~KTwj}zA(WzVm_8$`^ z%E|G}A|u>a4A;!HPr|g7Ovk}3NViCH$3^R?#@(6F+JA?1Yp7heCLhi_qEDU|tpXq3 zj~rdf?hne17q#Vg9Qs*<+0(72xY}@=J;MAbgov9duQ+jJo(KRf6j%r){J=c z)6{%5NuD-eZcL+XooMsiC%;jGd7h$vt&y}8dIho3eQuu8S~sGma?y9t>r2A1ZHjeBM`cG;ay!_J@nh8489(i2(liqjT2jSjd|v; zg_VPE4~*|@R||N08=h7UE(18~0{vQseI8wRiYzRTfn%%qTQq*+#(pw%u1xwRPc4hA zB#7lZYjTLcQ#x|wh}I8nQ9GVAU(4shK~J<9{>x4MC|O^GY+g^&9h$N1u5F{cjd=0mLZ_cGoEdgJiQE#BN-Z)y5+Ya8zeoGu)1Zr zb4;m!8LWGyf1j4B+a2KP>xGrU*<_syD?=gQAXdNYFLy3l{?|I!@#Qp>bA#kLNI5f6 zmh(zUPo$T@)CW`2$u>l?H0RoPkL0Oks0O*{a8Y~cn102(H5gxP`Z2=P^|6X8n1ef) zexv0n?X#n^(a8n^(Z@o7XPn)<|bF09~`M zlg`+c*p`cD1KKnvL0LQJ;+$_g_`5PN^Q@umoA_hDFB!_WneO|_nyVhfT+VziSzrID z#P^jQv-6j!?w_sJ-u>2Je)rGqJLZ=6h!P@*GG!l#13MsfY^T%a>7e#y%BXIvuvGH2 zHpJQKaJ+&&_0e|FyY@vsl;L#ND}MjVxjfg5`E9G6??+A8Zl=FyVwzgcKW%;c|NI^C z%9f$Ek>RZQ>e-&%AL(G)JqOe7IoR7h(0jWF*xNn8&h9Ol!wMptZ6o1W=HddzGV8$8 z*ZD!(NFigHW8kUnIz`nytG&?D4*famc*pf#R09YdyC<0f$BR`rh^c^W-;S3Ki)3#W z&lB7{iXrC-bbOD)J$5|9f^dU{S0ass6LL%YS;#ndGkBivx>128roYs>aV%aQGpdG; zL&v%i;_Q8DA2sVnp<@z)=V<(7zr(T2v>~?Xa4eIr&)I}@U+r`LZ_ch5`M$s0I)4DN zCmiahtebqs`YG2J1--BHZf%0~a{|6n|U59fI!t!hy=E8jwNSJZiFQMD&Wn988E@64@jEhUWi_85Zbc{=w?{?js z$CRVNlZNR!`eh$5{j5K?A+d*U-E^h+mQjZ7_Fjgh;eA^8Rg0G)X?dR(5*PY>w2~*& zcK3{*CJXV*OBj+?=26}g4!xn}J7}I^!8*z_F`RB4+y~tzT%P(`h#i=eT`yA02H#7?OUVKOc(AX9s4@OK4U1|HHMfo#6RO+t37PHo(4;;#dmL;g(g^ zEw6l89fAxQHmNlFxVN0hYlTz)U9GZM}DYV@*OWx zrf!`>&^lvNaWkN9nKAnoy&lAI66ba7(|BG`6VeLjV2-0)!*V#)V9q6Y^2sOh?UdQO z!M@t9VYGOWuseSJZbG@P&3rL_(LSDCTJ zjhn$kRtJ{h*_dN_zKF~+d`6w8*)U`ob9@DtC_{b=!!qPpgll@bPJU3+sZmD|y80(m z6!i}jGZ$KV992Mv@#sPb;Krk2dm>4Q z2D5WDA3FUy=mO8->fiu)Bph@QI_jWZx32I>(oVR&N)v7uw#VBB5!c!Vhhfh_yT!hz zQ^qC1X|`M2z@Ivc?ba;Z2}@ZdV6mqG=X>h0)3$Bf^janM#NF-YjXY=0%>#M9`eK+i zT`u0%Ej#VDZY*`9UA&$e%1D`(K(9`|F2Iy;KjhQS%NN=eK6Q3W!VVYP9oiM@f>a9j zv15_Rdu$(N-ZfQlkv#b*<~3B~V7u!ZvOMga2DnstCVeD4E376N(b@ry z*|_fE#&bO91BY*Go6y&?}Ue zw)a=dkm9 z^-lPym}c-CaGu-E^SF6_b~k(_1|7TLS7RGG&+u)*^p|Ji@~qo&7}_tN0D0hfCg~b@ zp7B|Yu6z}SyuI+tD-j=_XBWA~}CA)W=q zvwL_R56{`*xj0#vk9PQV@I04g>cx;5p68cTT>{;}>$5%H0>1EbYoHf+p4-547I-cK zwv{NJJJ3EE`h(~9>~rDyy*R(`=J(hOE<;}6)fD7=D$4Y7rTCpBziV6!&+iDgU4b;G zAx(IGPsZ=R7Q*veD}Ecr@16L4Qq7gn4LrZKX>35A;Q5USzx~kPYRoVzbo|C)1N@|` zzz2R4JonjiUp)7^b8kBLn{$6S_j7aqHTP9>A2jzib1yRY4s$;+_wQCV;lCo`*T8cx zEBB~!Pbv3+a$hI+YR-k{K1uFt^Jv?&IUWJH40gU62Kyd%n0wi~Fv)Pm24W zxL=8TkgA(e4)Be$p|kfu_wd|{(GS0%1$ml-Iu5@Te%bZVC42+kHS!(ie)zSmSZjgr zxDn6Z3mxGd1m8n+v_Y5fTsv>P33>Sd+7|qhxuA#VT3RoB^UdG^&-I$lTaYe1*BH9s zInN(=EA$4x9lm-#_`>(Xs}BMX&-oGOF`QrY!#Cds+2GZOkQew>@EjLb-46NT55O;9 g2-)G6EmDeoDEm70VQb*ocP#t}^aMY(1GMn}3*ZjoT>t<8 diff --git a/util/build.c b/util/build.c index 4a382e3..6e724b4 100644 --- a/util/build.c +++ b/util/build.c @@ -1121,9 +1121,6 @@ void DoCommand(const char *l) { } else if (0 == strcmp(l, "config")) { BuildUtilities(); CallSystem("bin/config_editor"); - } else if (0 == strcmp(l, "designer")) { - BuildUtilities(); - CallSystem("bin/designer \"res/Theme Source.dat\" \"res/Theme.dat\" \"desktop/styles.header\""); } else if (0 == strcmp(l, "designer2")) { BuildUtilities(); CallSystem("bin/designer2"); diff --git a/util/designer2.cpp b/util/designer2.cpp index fb6bd76..cacfe04 100644 --- a/util/designer2.cpp +++ b/util/designer2.cpp @@ -20,7 +20,8 @@ // Prototyping display: previewing state transitions. // TODO Additional features: -// Method to iterate through all the objects that link to selected object. +// Change the type of an object in-place. +// Undoing a delete does not previous an instance's layer. // Sorted list in ObjectAddInstanceCommand. // Hide arrows to colors. // Having to link to the end of a conditional object chain is a bit strange. @@ -213,7 +214,14 @@ const EsInstanceClassEditorSettings instanceClassEditorSettings = { #endif struct Canvas : UIElement { - bool showArrows; +#define ARROW_MODE_NONE (0) +#define ARROW_MODE_ALL (1) +#define ARROW_MODE_FROM (2) +#define ARROW_MODE_TO (3) +#define ARROW_MODE_FROM_OR_TO (4) +#define ARROW_MODE_FROM_AND_TO (5) + uint8_t arrowMode; + bool showPrototype; float zoom; @@ -692,7 +700,7 @@ void DocumentApplyStep(Step step, StepApplyMode mode = STEP_APPLY_NORMAL) { for (uintptr_t i = 0; i < objects.Length(); i++) { if (objects[i].id == step.objectID) { step.object = objects[i]; - objects.DeleteSwap(i); + objects.Delete(i); break; } } @@ -2542,7 +2550,7 @@ int CanvasMessage(UIElement *element, UIMessage message, int di, void *dp) { } } - if (canvas->showArrows && !canvas->showPrototype) { + if (canvas->arrowMode && !canvas->showPrototype) { // Draw object connections. for (uintptr_t i = 0; i < objects.Length(); i++) { @@ -2554,6 +2562,21 @@ int CanvasMessage(UIElement *element, UIMessage message, int di, void *dp) { if (object->properties[j].type == PROP_OBJECT) { Object *target = ObjectFind(object->properties[j].object); if (!target) continue; + + bool sourceIsSelected = object->flags & OBJECT_IS_SELECTED; + bool targetIsSelected = target->flags & OBJECT_IS_SELECTED; + + if (canvas->arrowMode == ARROW_MODE_ALL) { + } else if (canvas->arrowMode == ARROW_MODE_FROM) { + if (!sourceIsSelected) continue; + } else if (canvas->arrowMode == ARROW_MODE_TO) { + if (!targetIsSelected) continue; + } else if (canvas->arrowMode == ARROW_MODE_FROM_OR_TO) { + if (!targetIsSelected && !sourceIsSelected) continue; + } else if (canvas->arrowMode == ARROW_MODE_FROM_AND_TO) { + if (!targetIsSelected || !sourceIsSelected) continue; + } + UIRectangle b2 = CanvasGetObjectBounds(target); CanvasDrawArrow(painter, (b2.l + b2.r) / 2, (b2.t + b2.b) / 2, (b1.l + b1.r) / 2, (b1.t + b1.b) / 2, 0xFF000000); } @@ -2743,11 +2766,22 @@ int CanvasMessage(UIElement *element, UIMessage message, int di, void *dp) { return 0; } -void CanvasToggleArrows(void *) { - canvas->showArrows = !canvas->showArrows; +void CanvasArrowModeInternal(void *cp) { + canvas->arrowMode = (uintptr_t) cp; UIElementRepaint(canvas, nullptr); } +void CanvasArrowMode(void *) { + UIMenu *menu = UIMenuCreate(window->pressed, UI_MENU_NO_SCROLL | UI_MENU_PLACE_ABOVE); + UIMenuAddItem(menu, 0, "None", -1, CanvasArrowModeInternal, (void *) (uintptr_t) ARROW_MODE_NONE); + UIMenuAddItem(menu, 0, "All", -1, CanvasArrowModeInternal, (void *) (uintptr_t) ARROW_MODE_ALL); + UIMenuAddItem(menu, 0, "From selected", -1, CanvasArrowModeInternal, (void *) (uintptr_t) ARROW_MODE_FROM); + UIMenuAddItem(menu, 0, "To selected", -1, CanvasArrowModeInternal, (void *) (uintptr_t) ARROW_MODE_TO); + UIMenuAddItem(menu, 0, "From or to selected", -1, CanvasArrowModeInternal, (void *) (uintptr_t) ARROW_MODE_FROM_OR_TO); + UIMenuAddItem(menu, 0, "From and to selected", -1, CanvasArrowModeInternal, (void *) (uintptr_t) ARROW_MODE_FROM_AND_TO); + UIMenuShow(menu); +} + void CanvasSwitchView(void *) { float z = canvas->swapZoom, x = canvas->swapPanX, y = canvas->swapPanY; canvas->swapZoom = canvas->zoom, canvas->swapPanX = canvas->panX, canvas->swapPanY = canvas->panY; @@ -3243,15 +3277,16 @@ void Export() { exportOffset.offset = ftell(output); exportOffsets.Add(exportOffset); -#define LAYER_READ_INT32(x) sprintf(cPropertyName, "layers_%d_" #x, i); int8_t x = PropertyReadInt32(appearance, cPropertyName) - LAYER_READ_INT32(offset0); - LAYER_READ_INT32(offset1); - LAYER_READ_INT32(offset2); - LAYER_READ_INT32(offset3); - LAYER_READ_INT32(position0); - LAYER_READ_INT32(position1); - LAYER_READ_INT32(position2); - LAYER_READ_INT32(position3); +#define LAYER_READ_INT8(x) sprintf(cPropertyName, "layers_%d_" #x, i); int8_t x = PropertyReadInt32(appearance, cPropertyName) + LAYER_READ_INT8(offset0); + LAYER_READ_INT8(offset1); + LAYER_READ_INT8(offset2); + LAYER_READ_INT8(offset3); + LAYER_READ_INT8(position0); + LAYER_READ_INT8(position1); + LAYER_READ_INT8(position2); + LAYER_READ_INT8(position3); + LAYER_READ_INT8(mode); #undef LAYER_READ_INT32 uint8_t baseDataBuffer[4096]; @@ -3272,8 +3307,8 @@ void Export() { } else if (layerObject->type == OBJ_LAYER_TEXT) { layer.type = THEME_LAYER_TEXT; ThemeLayerText text = {}; - ExportI8(&context, text, blur, object, "blur"); - ExportColor(&context, text, color, object, "color"); + ExportI8(&context, text, blur, layerObject, "blur"); + ExportColor(&context, text, color, layerObject, "color"); ExportWrite(&context, &text, sizeof(text)); } else { assert(false); @@ -3282,6 +3317,7 @@ void Export() { layer.dataByteCount = baseData.position + sizeof(layer); layer.overrideCount = overrideData.position / sizeof(ThemeOverride); layer.overrideListOffset = layer.dataByteCount + ftell(output); + layer.mode = mode; fwrite(&layer, 1, sizeof(layer), output); fwrite(baseData.out, 1, baseData.position, output); fwrite(overrideData.out, 1, overrideData.position, output); @@ -3452,7 +3488,7 @@ int main(int argc, char **argv) { graphControls = UIPanelCreate(canvas, UI_PANEL_HORIZONTAL | UI_ELEMENT_PARENT_PUSH); graphControls->gap = -1; - UIButtonCreate(0, UI_BUTTON_SMALL, "Toggle arrows", -1)->invoke = CanvasToggleArrows; + UIButtonCreate(0, UI_BUTTON_SMALL, "Arrow mode \x18", -1)->invoke = CanvasArrowMode; UIButtonCreate(0, UI_BUTTON_SMALL, "Add object \x18", -1)->invoke = ObjectAddCommand; UIParentPop(); @@ -3468,6 +3504,7 @@ int main(int argc, char **argv) { canvas->zoom = canvas->swapZoom = 1.0f; canvas->previewPrimaryState = THEME_PRIMARY_STATE_IDLE; + canvas->arrowMode = ARROW_MODE_FROM_OR_TO; UIWindowRegisterShortcut(window, UI_SHORTCUT(UI_KEYCODE_LETTER('Z'), 1 /* ctrl */, 0, 0, DocumentUndoStep, 0)); UIWindowRegisterShortcut(window, UI_SHORTCUT(UI_KEYCODE_LETTER('Y'), 1 /* ctrl */, 0, 0, DocumentRedoStep, 0));