From 43eda5ad734e20e4759a225698f8977b9e38aa80 Mon Sep 17 00:00:00 2001 From: Jean-Marc Lasgouttes Date: Tue, 14 Apr 2020 22:41:00 +0200 Subject: [PATCH] Reimplement properly bidi icons When the cursor in RTL text, icons for "depth-increment" or "layout-toggle Enumerate" look wrong. Instead of relying on the clumsy "bidi" lfun of 2898c335, this new version relies on a new Toobar tag BidiItem that inserts an action which can have two icons, depending on the direction of the paragraph containing the caret (or of the direction of the UI when no file is open). The alternative icon has the same name as the original one, with a "+rtl" string appended to the lfun string. The alternative icon is only active if the file is found. The icon themes `default', `oxygen' and `classic' have been updated accordingly. Fixes bug #4451. --- lib/Makefile.am | 39 ++++++++++++++---- lib/images/classic/depth-decrement+rtl.png | Bin 0 -> 202 bytes lib/images/classic/depth-increment+rtl.png | Bin 0 -> 205 bytes .../classic/layout-toggle_Description+rtl.png | Bin 0 -> 192 bytes .../classic/layout-toggle_Enumerate+rtl.png | Bin 0 -> 189 bytes .../classic/layout-toggle_Itemize+rtl.png | Bin 0 -> 183 bytes .../classic/layout-toggle_Labeling+rtl.png | Bin 0 -> 158 bytes lib/images/classic/layout-toggle_List+rtl.png | Bin 0 -> 158 bytes .../classic/layout-toggle_Section+rtl.png | Bin 0 -> 238 bytes lib/images/depth-decrement+rtl.svgz | Bin 0 -> 2339 bytes lib/images/depth-increment+rtl.svgz | Bin 0 -> 2378 bytes lib/images/layout-toggle_Description+rtl.svgz | Bin 0 -> 1848 bytes lib/images/layout-toggle_Enumerate+rtl.svgz | Bin 0 -> 2330 bytes lib/images/layout-toggle_Itemize+rtl.svgz | Bin 0 -> 1745 bytes lib/images/layout-toggle_Labeling+rtl.svgz | Bin 0 -> 1857 bytes lib/images/layout-toggle_List+rtl.svgz | Bin 0 -> 1857 bytes lib/images/layout-toggle_Section+rtl.svgz | Bin 0 -> 3565 bytes lib/images/oxygen/depth-decrement+rtl.svgz | Bin 0 -> 2245 bytes lib/images/oxygen/depth-increment+rtl.svgz | Bin 0 -> 2331 bytes .../oxygen/layout-toggle_Description+rtl.svgz | Bin 0 -> 1979 bytes .../oxygen/layout-toggle_Enumerate+rtl.svgz | Bin 0 -> 4121 bytes .../oxygen/layout-toggle_Itemize+rtl.svgz | Bin 0 -> 2122 bytes .../oxygen/layout-toggle_Labeling+rtl.svgz | Bin 0 -> 1937 bytes lib/images/oxygen/layout-toggle_List+rtl.svgz | Bin 0 -> 1937 bytes .../oxygen/layout-toggle_Section+rtl.svgz | Bin 0 -> 2712 bytes lib/ui/stdtoolbars.inc | 21 ++++++---- src/frontends/qt/Action.cpp | 18 ++++---- src/frontends/qt/Action.h | 6 ++- src/frontends/qt/GuiApplication.cpp | 19 +++++++-- src/frontends/qt/GuiApplication.h | 8 +++- src/frontends/qt/GuiToolbar.cpp | 10 ++++- src/frontends/qt/Toolbars.cpp | 16 +++++++ src/frontends/qt/Toolbars.h | 2 + 33 files changed, 108 insertions(+), 31 deletions(-) create mode 100644 lib/images/classic/depth-decrement+rtl.png create mode 100644 lib/images/classic/depth-increment+rtl.png create mode 100644 lib/images/classic/layout-toggle_Description+rtl.png create mode 100644 lib/images/classic/layout-toggle_Enumerate+rtl.png create mode 100644 lib/images/classic/layout-toggle_Itemize+rtl.png create mode 100644 lib/images/classic/layout-toggle_Labeling+rtl.png create mode 100644 lib/images/classic/layout-toggle_List+rtl.png create mode 100644 lib/images/classic/layout-toggle_Section+rtl.png create mode 100644 lib/images/depth-decrement+rtl.svgz create mode 100644 lib/images/depth-increment+rtl.svgz create mode 100644 lib/images/layout-toggle_Description+rtl.svgz create mode 100644 lib/images/layout-toggle_Enumerate+rtl.svgz create mode 100644 lib/images/layout-toggle_Itemize+rtl.svgz create mode 100644 lib/images/layout-toggle_Labeling+rtl.svgz create mode 100644 lib/images/layout-toggle_List+rtl.svgz create mode 100644 lib/images/layout-toggle_Section+rtl.svgz create mode 100644 lib/images/oxygen/depth-decrement+rtl.svgz create mode 100644 lib/images/oxygen/depth-increment+rtl.svgz create mode 100644 lib/images/oxygen/layout-toggle_Description+rtl.svgz create mode 100644 lib/images/oxygen/layout-toggle_Enumerate+rtl.svgz create mode 100644 lib/images/oxygen/layout-toggle_Itemize+rtl.svgz create mode 100644 lib/images/oxygen/layout-toggle_Labeling+rtl.svgz create mode 100644 lib/images/oxygen/layout-toggle_List+rtl.svgz create mode 100644 lib/images/oxygen/layout-toggle_Section+rtl.svgz diff --git a/lib/Makefile.am b/lib/Makefile.am index 0e51df7a13..bdd28b3ef8 100644 --- a/lib/Makefile.am +++ b/lib/Makefile.am @@ -568,7 +568,9 @@ dist_images_DATA1X = \ images/tab-group-close.svgz \ images/copy.svgz \ images/cut.svgz \ + images/depth-decrement+rtl.svgz \ images/depth-decrement.svgz \ + images/depth-increment+rtl.svgz \ images/depth-increment.svgz \ images/dialog-preferences.svgz \ images/dialog-show-new-inset_citation.svgz \ @@ -609,13 +611,18 @@ dist_images_DATA1X = \ images/layout.svgz \ images/layout-document.svgz \ images/layout-paragraph.svgz \ + images/layout-toggle_Chunk.svgz \ + images/layout-toggle_Description+rtl.svgz \ images/layout-toggle_Description.svgz \ + images/layout-toggle_Enumerate+rtl.svgz \ images/layout-toggle_Enumerate.svgz \ + images/layout-toggle_Itemize+rtl.svgz \ images/layout-toggle_Itemize.svgz \ + images/layout-toggle_Labeling+rtl.svgz \ images/layout-toggle_Labeling.svgz \ images/layout-toggle_List.svgz \ images/layout-toggle_LyX-Code.svgz \ - images/layout-toggle_Chunk.svgz \ + images/layout-toggle_Section+rtl.svgz \ images/layout-toggle_Section.svgz \ images/lyxfiles-system.svgz \ images/lyxfiles-user.svgz \ @@ -1853,7 +1860,9 @@ dist_imagesoxygen_DATA1X = \ images/oxygen/closetab.svgz \ images/oxygen/copy.svgz \ images/oxygen/cut.svgz \ + images/oxygen/depth-decrement+rtl.svgz \ images/oxygen/depth-decrement.svgz \ + images/oxygen/depth-increment+rtl.svgz \ images/oxygen/depth-increment.svgz \ images/oxygen/dialog-preferences.svgz \ images/oxygen/dialog-show-new-inset_citation.svgz \ @@ -1892,12 +1901,17 @@ dist_imagesoxygen_DATA1X = \ images/oxygen/layout-paragraph.svgz \ images/oxygen/layout.svgz \ images/oxygen/layout-toggle_Chunk.svgz \ + images/oxygen/layout-toggle_Description+rtl.svgz \ images/oxygen/layout-toggle_Description.svgz \ - images/oxygen/layout-toggle_Enumerate.svgz \ + images/oxygen/layout-toggle_Enumerate+rtl.svgz \ + images/oxygen/layout-toggle_Enumerate.svgz \ + images/oxygen/layout-toggle_Itemize+rtl.svgz \ images/oxygen/layout-toggle_Itemize.svgz \ + images/oxygen/layout-toggle_Labeling+rtl.svgz \ images/oxygen/layout-toggle_Labeling.svgz \ images/oxygen/layout-toggle_List.svgz \ images/oxygen/layout-toggle_LyX-Code.svgz \ + images/oxygen/layout-toggle_Section+rtl.svgz \ images/oxygen/layout-toggle_Section.svgz \ images/oxygen/lyx-quit.svgz \ images/oxygen/marginalnote-insert.svgz \ @@ -2057,7 +2071,9 @@ dist_imagesclassic_DATA = \ images/classic/tab-group-close.png \ images/classic/copy.png \ images/classic/cut.png \ + images/classic/depth-decrement+rtl.png \ images/classic/depth-decrement.png \ + images/classic/depth-increment+rtl.png \ images/classic/depth-increment.png \ images/classic/dialog-preferences.png \ images/classic/dialog-show_mathdelimiter.png \ @@ -2092,14 +2108,19 @@ dist_imagesclassic_DATA = \ images/classic/layout-document.png \ images/classic/layout-paragraph.png \ images/classic/layout.png \ - images/classic/layout-toggle_Description.png \ - images/classic/layout-toggle_Enumerate.png \ - images/classic/layout-toggle_Itemize.png \ - images/classic/layout-toggle_Labeling.png \ - images/classic/layout-toggle_List.png \ - images/classic/layout-toggle_LyX-Code.png \ images/classic/layout-toggle_Chunk.png \ - images/classic/layout-toggle_Section.png \ + images/classic/layout-toggle_Description+rtl.png \ + images/classic/layout-toggle_Description.png \ + images/classic/layout-toggle_Enumerate+rtl.png \ + images/classic/layout-toggle_Enumerate.png \ + images/classic/layout-toggle_Itemize+rtl.png \ + images/classic/layout-toggle_Itemize.png \ + images/classic/layout-toggle_Labeling+rtl.png \ + images/classic/layout-toggle_Labeling.png \ + images/classic/layout-toggle_List.png \ + images/classic/layout-toggle_LyX-Code.png \ + images/classic/layout-toggle_Section+rtl.png \ + images/classic/layout-toggle_Section.png \ images/classic/marginalnote-insert.png \ images/classic/master-buffer-update.png \ images/classic/master-buffer-view.png \ diff --git a/lib/images/classic/depth-decrement+rtl.png b/lib/images/classic/depth-decrement+rtl.png new file mode 100644 index 0000000000000000000000000000000000000000..c5c10d09d864d7dabe0476f9a27c869a0b05f7c5 GIT binary patch literal 202 zcmeAS@N?(olHy`uVBq!ia0vp^A|TAc1|)ksWqE-VTavfC3&Vd9T(EcfWS|IVfk$L9 z0|U1(2s1Lwnj--eWH0gbb!C6dF2-XimLYR304Nmh>Eak-aXL9c;@N}$^=<$E|5xtb zuwb=90+VuEl$(}SKL@+OOW!uz|0|{Qu9%9XDFn7HIxe*-Ekaz>Eak-aXL9c;@N}$^=<$E|5xtb zuwb=90+VuEl$(}SKL`7P1M~j#@cjQDd@^Z9Vu+!@O@l687jqu*WAdj}q}mqEoZ$a$ tLZZUKh-Fz4msF-@PU3UVh?6_Vz|cOu)`&k{O&n+ogQu&X%Q~loCIHm_KJown literal 0 HcmV?d00001 diff --git a/lib/images/classic/layout-toggle_Description+rtl.png b/lib/images/classic/layout-toggle_Description+rtl.png new file mode 100644 index 0000000000000000000000000000000000000000..9725c96ccf11e4ebe8eb461c895a3494a90c3e0a GIT binary patch literal 192 zcmeAS@N?(olHy`uVBq!ia0vp^A|TAc1|)ksWqE-VTavfC3&Vd9T(EcfWS|IVfk$L9 z0|U1(2s1Lwnj--eWH0gbb!C6dF2-ZUtoJ6d0x0C`>Eak-ar*7#jl2wsJj}UA{%OmL z@&+_)*jE{|)HCV12(#BJjWs_GXnAhyFJ_ke&2T+#iHsHRQ>{H6(&(Y-|G;M-1;SD(y$1~iz#)78&qol`;+077It{{R30 literal 0 HcmV?d00001 diff --git a/lib/images/classic/layout-toggle_Enumerate+rtl.png b/lib/images/classic/layout-toggle_Enumerate+rtl.png new file mode 100644 index 0000000000000000000000000000000000000000..9b227449cb76fa6be7e6fcc2f0c4407d4be58669 GIT binary patch literal 189 zcmeAS@N?(olHy`uVBq!ia0vp^A|TAc1|)ksWqE-VTavfC3&Vd9T(EcfWS|IVfk$L9 z0|U1(2s1Lwnj--eWH0gbb!C6dF2>7fZ0dUDHc-gR)5S5w;&gI?M9TwvqxQ~OZH5Lw zAQa@_VC%#Gc){mS^)g=`^gR4;;%n8cH_cGyfD3E$zy4!Jt{eZz`@ab`-==x;bhCNe bMka>GEt22b?0Or4rZRZC`njxgN@xNA$SXS9 literal 0 HcmV?d00001 diff --git a/lib/images/classic/layout-toggle_Itemize+rtl.png b/lib/images/classic/layout-toggle_Itemize+rtl.png new file mode 100644 index 0000000000000000000000000000000000000000..2e861020d531db3b2b04544e33f1d75378e20d6a GIT binary patch literal 183 zcmeAS@N?(olHy`uVBq!ia0vp^A|TAc1|)ksWqE-VTavfC3&Vd9T(EcfWS|IVfk$L9 z0|U1(2s1Lwnj--eWH0gbb!C6dF2-Z2d9UhsE>OtD)5S5w;`G~zj$8~10!*gg{>RTd z=Plw`-Su_Nq8`T3tQ8Udt=l$C(Q`BV@k74gn^NRTqq4@+z23*_oik7Q?$rG6UCESw W$WkeBLD7Anc?_PeelF{r5}E+zpgF1l literal 0 HcmV?d00001 diff --git a/lib/images/classic/layout-toggle_Labeling+rtl.png b/lib/images/classic/layout-toggle_Labeling+rtl.png new file mode 100644 index 0000000000000000000000000000000000000000..5f0c84e08e6eebd23e86e26f2d976600a506cbd9 GIT binary patch literal 158 zcmeAS@N?(olHy`uVBq!ia0vp^A|TAc1|)ksWqE-VTavfC3&Vd9T(EcfWS|IVfk$L9 z0|U1(2s1Lwnj--eWH0gbb!C6dF2-Xa`|PUSOrVgqr;B5V#p&b(iNXd!um9@7@9Slr w@h0o{ANv&0m0I$l-elUxqi-_emKiZH%$vo@{_bS(E1)(8Pgg&ebxsLQ0F+-YE&u=k literal 0 HcmV?d00001 diff --git a/lib/images/classic/layout-toggle_List+rtl.png b/lib/images/classic/layout-toggle_List+rtl.png new file mode 100644 index 0000000000000000000000000000000000000000..5f0c84e08e6eebd23e86e26f2d976600a506cbd9 GIT binary patch literal 158 zcmeAS@N?(olHy`uVBq!ia0vp^A|TAc1|)ksWqE-VTavfC3&Vd9T(EcfWS|IVfk$L9 z0|U1(2s1Lwnj--eWH0gbb!C6dF2-Xa`|PUSOrVgqr;B5V#p&b(iNXd!um9@7@9Slr w@h0o{ANv&0m0I$l-elUxqi-_emKiZH%$vo@{_bS(E1)(8Pgg&ebxsLQ0F+-YE&u=k literal 0 HcmV?d00001 diff --git a/lib/images/classic/layout-toggle_Section+rtl.png b/lib/images/classic/layout-toggle_Section+rtl.png new file mode 100644 index 0000000000000000000000000000000000000000..e17c0dd24bd3afb5e0e51042287cd3e0648b22b2 GIT binary patch literal 238 zcmeAS@N?(olHy`uVBq!ia0vp^A|TAc1|)ksWqE-VV{wqX6T`Z5GB1G~wj^(N7l!{J zxM1({$v_d#0*}aI1_o|n5N2eUHAey{$X?><>&kwUm0y63L0PJ1I#4Lj)5S5w;`G~K zN3H_~9Nwq?)vup_cHQAyR=4=rW-D~GteCjrnpO@E(*%`w3dY7$)0kG?WNBy%5K1>z z`D6a)P}}N@wv`#{8JATgq#fo7-cxteQ}S6QZ@ha&#lc$L&cL^Zii!Rovj1NT4tw)# bZ8=kcp2?S~%X*rCHZyp-`njxgN@xNA*vC*a literal 0 HcmV?d00001 diff --git a/lib/images/depth-decrement+rtl.svgz b/lib/images/depth-decrement+rtl.svgz new file mode 100644 index 0000000000000000000000000000000000000000..cd8799538968452152c3ebbd078ebc472dc46132 GIT binary patch literal 2339 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 J)=Z5t000Nwh_wI! literal 0 HcmV?d00001 diff --git a/lib/images/depth-increment+rtl.svgz b/lib/images/depth-increment+rtl.svgz new file mode 100644 index 0000000000000000000000000000000000000000..7a77e6261da116229dd38dc7b9def752136d4f2c GIT binary patch literal 2378 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 literal 0 HcmV?d00001 diff --git a/lib/images/layout-toggle_Enumerate+rtl.svgz b/lib/images/layout-toggle_Enumerate+rtl.svgz new file mode 100644 index 0000000000000000000000000000000000000000..203ac9f86b08d2fbe66f3c239d58a5edc8671a94 GIT binary patch literal 2330 zcmV+#3FY=5iwFP!000000PR_8Z`(!|{hnXJm9c1o6{&eYWIM&8Nw)!tcCksY*iQjX zj%3ypDUg(9=hyEUQlunHestTU*un||i+Aq(+(phh`MiO9)k(Z`!OP30 zSxzUD^?Ds;8)8&e^U13q3}3%^aaLc?Uj#t_yG1=slk?F=V7aRDmN88xE_Vx8H1&i= zbTZnqCtLQ!ThFdtQZ5!{QMZyseX_$`rL%$Cd$Z;(6SdY(2%9h#f+MVNizdDa_eJ63 zF;PYcnP6?p`82NSO^#ID>rA`4YaQud;{PDf6Qa6YRf(HH(nW=9CT~8x85TnlrA@k{ zrqBMK-91Q(c;V`0oVa?@(_8tydhmpGmNu7oWTt(*blLo}**<6K`3M2C?qQ>8I%px0 zr9nlxX0qkzJ)Wjz;$1i&U1VwYscQ01d3;;0ny@M7^W1%UTdWqYLXkz#{(1Bo!e@i9 zmrSoSxArQ7U>VO*3wc?ck4|RoXVfiRlvV1geo3{Ty`>Tv$eLS(vmuukzqq7n${e!;W%#YQ(wPG9IR#TOzl5{8XG? zRt{7ALVwK$siz^bzy`UK3EuYy7 zYM<{gCd-9A9@CHSetP@G_#!Zdg0NuKXn<~3`DaQo=-h4mwdy-85T~=4y9`y|I1&)H}qhSpBtv#7~&*J8F zw!o3epR)gk!!C>u3wzAX?b218-pI~e+9=JM-0cjj z$;SJBmh1#~Ht9oepXQxNbCBVXMx0?Mp`uMSjhK~0u`v}YB7{pd4s9egM_nM}+r-Yf zrF~ayCgH5asi^%vEqq4u)0T1_S6N&%d$e_XVB90sP34;8a-W7H*c1h6vF&mp?egZ- zSL5cqIi*bgwPT#ci!8sLe)Cg#mBqn7SCtEXaB=FHzc~&2qg&W1UAiQjWeM(ZWpR&4 z?wZC`p}(QvIyxmVyvB)rkI)Zz5~1TbBSM|dfZPS!vQYMUCk5UOgFEk6 zDOnpS&MntQJXW!PhoSu83hh{)Qjr~OTqqff$6?!EXv(5M;gwa0tIc)XpcS@*Q3uRVIyzDyWqiSdfG6qL4_m9|C%DpHbJ=2Z(W1^m^K)r`X(6)~nY(Xhs;70O%FmN6

LEi{ff-VFDd>4LX9K!AWyBPxaDcaNNn4b&1r#RfG*0Othts4>H= z^%}il?kT{7ag;wn#$W>!sZhCI3ITW?UzP%9J1NaQM21RitN@!ZZLR0w=qmv!p(*!M z4`)@$i3dS2Ki>nCp!NH4+iH?{_k1FR1`EX;)yhLcwLux-1c#gpy9FFzp>BZ@9MnME z=SfRTP3tkoU>y6_Yu!V$5^T6W1c|OaoT4bq=PCMIr|2KJ3*sj9=f{s~iLK;$7ku6Y zpLfCMUGR(Sg7SHa{>mwOaKF{<$mEjUx#ey)G}_;5D_nNj@LsCA-F@=+V8hT)#%^!H zR7PksGQ7?7uzBm6k~>$x{U0&zT!hPOSIzQrJ-yEA>>_uk?cXf-dFV;^UHbi-vV%*1 z`&g~o8Yw=zs_c__!WFSRh@tmfp)8}i|X6#OB?|A$VbgtWk`L)^_*!(G_l3->Pp$C>{z;q{CE0(UqZC=n$908Rpn A!~g&Q literal 0 HcmV?d00001 diff --git a/lib/images/layout-toggle_Itemize+rtl.svgz b/lib/images/layout-toggle_Itemize+rtl.svgz new file mode 100644 index 0000000000000000000000000000000000000000..dc8b3574949cf14964594715778daf052632142e GIT binary patch literal 1745 zcmV;?1}^y@iwFP!000000OeO(Z`(E$e$TJa6bx&z=t7CQP_eUzwc82|+pxA6_Eazu zZF7-DgQ8}j2Fwf z`TpH^R%{xjqD4k?QLwpL2=kkpi`f^JWqd0cRV*`hT&;{Z#a)@w4KrS>l-eYYv)k=# z-Uw|Wm(EMWvTiOeX660z!Y~ZjwZ#tH z-?LP#*Pz3b6wYgxnA?* zw32-et~h&`YIe9gxPJqGok1(GOR<$HTYx3A3#Ob`?_PD2mTPA!8!Xd$f3)u?Bn4fw zazj&AI<362ALWAZ@_fcnQFW2p0k}^&@eW137L=! zIX5pC)yJ$SZiUR4Y^TENGnx{BpQ{6aX~g3850)w=awch!!r_qH%q%6iVM@N`8Jn8u zT%nKGZ8SMsu4pE9bJIJX-0=b?tR?~>KCx~T+L++D(}1XSZt`&xD{%ix>@<|QxuAK; zj@Nq-Vyz<|V?PRxC)2$?!-@1TC2bC-El$>H=D^N7XSb$%uA`q#cr4vY3H`x>bYZf| zJ;SLoBx8%R$FE1YN*$PjGGkPJFKNcXxK^sw#xodsVPm6HPKiyc+oU>3FzWnS`BWWp zR?k>fvL%;6^|`J@P3#jiFcFJI$&?0HpZw9yeE0Fq-0Ji6W~ke2=8Qo<>Z3iHn?Y<7 zkGRO|mOa$cFpP00+k2CmT59`#*ejm8-6w9)ucLcnvXTsX_~k@+TD@f>d|z+{-FRCv z`BrzdpNsd9+8x;Qun_U=*d-wu!Sb z?pM0;QPhuhCnFzzrpP}6DhNI#Og&a!J$VHzDu(9M=l;7I@Iy?5bGbY-s|_Z%x$=Ujt*%6!U9f zda!vnF;Z5C4eJ-JmzAuhkdv%COV?Z*Id2uu^EY~vL0LD8a+R||tvk)>+gcoen>j7? zYP76P6p*A+9~V4BmE`*u7P5U0f`;&w3twb=BydCT3gN(p9Eh(hVh52At=4-vpf*dN zAit$Fbt72_-~`q0q|gq@uPeztm7Er8B->SVX(TF@WGY>aWk5g@=c~z<{g33p@+{?0~7rM>W?KTIT;}~YV z+yJeE*Na9_1G;4TlRkF-ljH(_=L~Y|3cY*^915nvb#l4yIp_c=I>L!b91U>l?ZPMy zp2nvU{ADy7s#dk0ZZZamY=i=g!z&NkAFwZi4QddZ1UL%ORsAD~J;SZOfRMm7;6cqz zDiYB7NP{Kxt81hmAs1uY4@h)np)e*k!ibD65)`2D(JJk3 z?yiCKEd=%N&a?eYCo3rccKhJd#TG6@tL%(BA?vH9Hx7BT1JTNJ`RPz|z*5NqS+}a_) zB>%lsyIxay$7F553JQ>|TbkZ2tIZOcrrY&4r)t1bCt^-&BpyB+baWJS=n2*LDE7E^ zNc0gY5KTNd+B6`aGY!ILN`pB5MA120k(qGiP~oG1ITkn~OgI|5*1XHyQu{p5R(L literal 0 HcmV?d00001 diff --git a/lib/images/layout-toggle_Labeling+rtl.svgz b/lib/images/layout-toggle_Labeling+rtl.svgz new file mode 100644 index 0000000000000000000000000000000000000000..b24502f98b2e5b61790a05e3cb8964c79dca6fe9 GIT binary patch literal 1857 zcmV-H2fp|piwFP!000000Nq#Hj@!r)eV?yTGziv4OsenA=18*-@$SZeu?b=uL7of_ z*^;*({^MbjP42WQ(;{C?v5%$`oySFz z=Bvf@%jciHU^*#nlqXSE!+AP@aOjao-@l0oWqjOu%u#acc zUOn#BV|RLbr{iL?De|&fnU|LXWs@vBZFieJt(34*YKF*+5DzrG@;ouRJ6&^Bh#e(}g8En&f ze{}8$l04ezavR0EoVD_5{fG}vuul`ah9L>6;aaDwwe81gvY3Lwq#iUoh21X5S9oGD zm4sIs?Ty2vh}{(y)0;F&zZ#o;&7%8aXFXf2R+;|#F)ghR8-JT#!@7C5&MivrQoVP( zO(xrD1vJPCvzT5kt8ZFQ+!Q9!rkxViH<~KI_|)EmC5^ba`Ax^x7MV6t9>dKrYGzgj zd~i;_OA~!=qVt2hUU$&h*>W8v#eOj*$CLXshY7E7zhEb;8-*4S7IYc_N#`cYIBn$R zy4X8Y7Sm;vmHK$UZ$+_jum_Avemof;+#OD&_vfU|#oUUMeVRE~M;=&Xwm?%kMajjIVjb|7pqFLi8XNzsC z+wdGDtR;T^mG(Z<^^8}MExhE_cU6fR>_a?QQY@FHw$8Zv=8qmm(c_1q>U;Vy+#NQb zjg5ZPM+dx^^1xR_Axye$?`x?L0qbN3a#qtxeM&{Icv2zx4!&qv4;L@T{ug#1|V6nIRr5a*E}qVqh+kF`ES zQZC`Sgq*gCtVs`VgdYR}5dyzM@Q3+=Dvl_9=V68d9|c&#Pc9_zmE*Thap)2EaDL*R z!0B-@cF#!fynEE^xd$9VBw<2T?%_USif|6@Q4&fqtQZ0JNDOKU)0eo11wMn?M?Qx^ zC%R|dB+09?h$74cX<5VqA#nh{p-T9YOGhX!na=~JUgReFJQj`g&b#M<^!hzn6pUCD z^en;^ivVn*x*(g++vRK^m#fqN0_8Fs-c5{@?fq8wo7USJUDx4fTbCr>q;ApdlTEYi zgF9r9>zhqeo9V#=Fl%n#Cg_22^I2{9}{7PHFd*e8(JfS;IgU(z4| zk1HQ|2}~hx2Q}h~LLj%bVg0-;3n;Ft-(l`Nl3i7jyU3(bZb!0xRd#+`3{8cqJOGkWqj9VJfrhbynG0KIzC zt&Y=W8bcRY3pyV&ZBE$c2FEo6FN8PQadvWE%ti9lV&4rMa+;Sms+r~z;ivh8p!po57UQ?!~DE)o!lJy zVt!yK#z%%S707|1?mQs_{(fi3A$^EuSa+o%gQpNmdnsuvcV|GDhNjr%$x!%Pk>+D5 zq)Kfv==5yJT3Hf7J8TSCIKZ=#*0pSiT3LVPO=NDhsTb%x0-L>?D85})hlNob?>4(E zvi~b10^hy%_?Qt2lB|Tke8dPWDIozJF@h2X^<*$+1S61_NzVv|;63cRsUaWKEAoN7 zkPjS6Y8GJ3ULB=J~=?mjla!6WANO6jj#IJ{wP`^*y2IP+%wh&)DI1{!~Atc99 ztAP4=9JClh8_O{rIHpJr(>Q|mRtS2I4)hi2AYLA}oWiA*dTp2}JcI}nc@nn-;+FMZ zbT~ox0CjE9J&-j}z+z~#_y8zOu&)Ay2H6#QR?Zpc$E8J;Up@Xkpt`&v30{)t0|T!y v5AYE%|9#N?-y^3mA0X%2Xz2eRLeBdxS@(~G-Q0D#*BAc*C_B^a>>B_8pdgs2 literal 0 HcmV?d00001 diff --git a/lib/images/layout-toggle_List+rtl.svgz b/lib/images/layout-toggle_List+rtl.svgz new file mode 100644 index 0000000000000000000000000000000000000000..b24502f98b2e5b61790a05e3cb8964c79dca6fe9 GIT binary patch literal 1857 zcmV-H2fp|piwFP!000000Nq#Hj@!r)eV?yTGziv4OsenA=18*-@$SZeu?b=uL7of_ z*^;*({^MbjP42WQ(;{C?v5%$`oySFz z=Bvf@%jciHU^*#nlqXSE!+AP@aOjao-@l0oWqjOu%u#acc zUOn#BV|RLbr{iL?De|&fnU|LXWs@vBZFieJt(34*YKF*+5DzrG@;ouRJ6&^Bh#e(}g8En&f ze{}8$l04ezavR0EoVD_5{fG}vuul`ah9L>6;aaDwwe81gvY3Lwq#iUoh21X5S9oGD zm4sIs?Ty2vh}{(y)0;F&zZ#o;&7%8aXFXf2R+;|#F)ghR8-JT#!@7C5&MivrQoVP( zO(xrD1vJPCvzT5kt8ZFQ+!Q9!rkxViH<~KI_|)EmC5^ba`Ax^x7MV6t9>dKrYGzgj zd~i;_OA~!=qVt2hUU$&h*>W8v#eOj*$CLXshY7E7zhEb;8-*4S7IYc_N#`cYIBn$R zy4X8Y7Sm;vmHK$UZ$+_jum_Avemof;+#OD&_vfU|#oUUMeVRE~M;=&Xwm?%kMajjIVjb|7pqFLi8XNzsC z+wdGDtR;T^mG(Z<^^8}MExhE_cU6fR>_a?QQY@FHw$8Zv=8qmm(c_1q>U;Vy+#NQb zjg5ZPM+dx^^1xR_Axye$?`x?L0qbN3a#qtxeM&{Icv2zx4!&qv4;L@T{ug#1|V6nIRr5a*E}qVqh+kF`ES zQZC`Sgq*gCtVs`VgdYR}5dyzM@Q3+=Dvl_9=V68d9|c&#Pc9_zmE*Thap)2EaDL*R z!0B-@cF#!fynEE^xd$9VBw<2T?%_USif|6@Q4&fqtQZ0JNDOKU)0eo11wMn?M?Qx^ zC%R|dB+09?h$74cX<5VqA#nh{p-T9YOGhX!na=~JUgReFJQj`g&b#M<^!hzn6pUCD z^en;^ivVn*x*(g++vRK^m#fqN0_8Fs-c5{@?fq8wo7USJUDx4fTbCr>q;ApdlTEYi zgF9r9>zhqeo9V#=Fl%n#Cg_22^I2{9}{7PHFd*e8(JfS;IgU(z4| zk1HQ|2}~hx2Q}h~LLj%bVg0-;3n;Ft-(l`Nl3i7jyU3(bZb!0xRd#+`3{8cqJOGkWqj9VJfrhbynG0KIzC zt&Y=W8bcRY3pyV&ZBE$c2FEo6FN8PQadvWE%ti9lV&4rMa+;Sms+r~z;ivh8p!po57UQ?!~DE)o!lJy zVt!yK#z%%S707|1?mQs_{(fi3A$^EuSa+o%gQpNmdnsuvcV|GDhNjr%$x!%Pk>+D5 zq)Kfv==5yJT3Hf7J8TSCIKZ=#*0pSiT3LVPO=NDhsTb%x0-L>?D85})hlNob?>4(E zvi~b10^hy%_?Qt2lB|Tke8dPWDIozJF@h2X^<*$+1S61_NzVv|;63cRsUaWKEAoN7 zkPjS6Y8GJ3ULB=J~=?mjla!6WANO6jj#IJ{wP`^*y2IP+%wh&)DI1{!~Atc99 ztAP4=9JClh8_O{rIHpJr(>Q|mRtS2I4)hi2AYLA}oWiA*dTp2}JcI}nc@nn-;+FMZ zbT~ox0CjE9J&-j}z+z~#_y8zOu&)Ay2H6#QR?Zpc$E8J;Up@Xkpt`&v30{)t0|T!y v5AYE%|9#N?-y^3mA0X%2Xz2eRLeBdxS@(~G-Q0D#*BAc*C_B^a>>B_8pdgs2 literal 0 HcmV?d00001 diff --git a/lib/images/layout-toggle_Section+rtl.svgz b/lib/images/layout-toggle_Section+rtl.svgz new file mode 100644 index 0000000000000000000000000000000000000000..8d9e340c1304861623426a470a99acf619e124ea GIT binary patch literal 3565 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 literal 0 HcmV?d00001 diff --git a/lib/images/oxygen/depth-decrement+rtl.svgz b/lib/images/oxygen/depth-decrement+rtl.svgz new file mode 100644 index 0000000000000000000000000000000000000000..ceb1a7d186979138440a8778eae98d286da67640 GIT binary patch literal 2245 zcmV;$2s-y4iwFP!000000M(jXZ`(K)$KUfQwC+oTwP@ZiZqfld#S8}6#R4-e_Hm#{ zw5_Qu8Il|){q%dNizVAi?8eTtYoUn5JOBLg@R01yPY=t)ySI4}XX)*TAUyJH8fH

KE&Wo2!OD7X7iGDc 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 N{{Sl|IF7(8001r;=6e7D literal 0 HcmV?d00001 diff --git a/lib/images/oxygen/layout-toggle_Enumerate+rtl.svgz b/lib/images/oxygen/layout-toggle_Enumerate+rtl.svgz new file mode 100644 index 0000000000000000000000000000000000000000..19907b4464a6398c14571bbcd679fc4695150908 GIT binary patch literal 4121 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 A_5c6? literal 0 HcmV?d00001 diff --git a/lib/images/oxygen/layout-toggle_Labeling+rtl.svgz b/lib/images/oxygen/layout-toggle_Labeling+rtl.svgz new file mode 100644 index 0000000000000000000000000000000000000000..ca26ee0bb611f101f0a82745dae8b6b3bf062a62 GIT binary patch literal 1937 zcmV;C2X6QuiwFP!000000PR_AZ`(Ey{+?flxAnZRLqkOr{v!c|@iWfa$5zks_WzEJeg|P4Y79tiQ21ppiE|cNb7^;GeW2yupWC5>} zJWVRtrU1pg#+2Ot>Hz-={#%8HU>5mWM0^IC+|0PNUcG(QG7V(LGVV>&pg&l55Rxoh z@?sT6ys#R2sXxdEMc5>d9a=75hd?CAW5>It-m{fy$rl6e#nLgG8wkdH-iN@j} z&Ld^QRR55~$$KHw_i4Dx*V2&re4g_6zbAz>Vd78vE$B^JJ*5=iC48f1)3jAMhcrlY zG1Xtp%8y<#KI9_iqG5UEXTZwA`9$u(lbW1=_?Jgg<|!9p7J+3L)ttEi494i|B<5p` z76)ZsyU-}NScGxDnd)Spxk)l$7&ZK!bD&)dGy!o~D*+*CVY0DZlZ!>ZQJzfoS(p}l zf4Wb3zEn|Xj!oTtX0%l%98h;-)Y>kkaWGHK13hw|-ZI=K%j6S}M*xe~LO^XWAXT`i z^G>tM1c~{q=-gK$r_3B+!4~78cq76%0p&`l5*u=C0$APF{7E76RU=!cIZ!~RajL{r z?owWHj561PItza)NphDY#p(7Z@<>zZ+gxPV7Fgt>gP1N6cFv9EzMvSqLxyKiKB1T(0)fq8eC`QO`r`-V+ zV`?JLp2Xcb+!fz!J!v;F%qIiZeA1LWr>7SeO++zw>laB z%-%tnY#qMeHIJAMvwh+YU9%n2x2f$8TpN)Es^Kyd`L=C44>?EBY0eRJs&o5NZ{Z{> zpvQodU>Qo0Y+phffPD{9c7xy#-x$~=uHz$egReVmlzN!%V>384V5kmTY?}lQm@Xfo zj=Np-XG4|QsEUGSxS~z!cH}5D_^i-ShLD3RXl#=~E%E>&h`UdShiyR1BR(K#J12pK zUDNX^fV+no>=B#Ua?VEpp1xAm`Ue)W71ux6+v;U*o3e4WL8;=g&44XF?? zE>gIP%fM-9aab%uA;Mjd(CGJd+UDcPc*hn5#8kZd#s(eUre=v|J|Dj7s|kX`i}i zv=2Xd20%$@$)dHm3*}ny?s=#mwcg#~Flr};i;@cr*H2Z`S6STko7dk{7?0QMe!!K# z&~DPt5BNpa%i{sRh*OIm;9s3u^~>b=sin~Pz7w~~+cJG2b*pv8($_yY^t<#WlzEJ~ zCnmA)ev?W3JqF)sqp!-=!|}Jz7JvFp#{c9ZM$S~koRO{pjkn%o%{4)ASe#PT<`3it zg1n`0Gi*;c4A(w{T)cnA&7qk`k0`L+^HU$!7TI2R)Ir;)ZF@h=)qvUk-%5IQzfXQ* zA;5dIytqWeAA;IA)W09FGi}bJA5%BPVWi&sYU19-gvn3#(9D_2k&3c z?u~Ch*&F9EUDTKG1~KaSgHDuC(|3HQr+l(E Xo;PJ_o2Z{)Zm<3W@Iks1qbmRa5G2^~ literal 0 HcmV?d00001 diff --git a/lib/images/oxygen/layout-toggle_List+rtl.svgz b/lib/images/oxygen/layout-toggle_List+rtl.svgz new file mode 100644 index 0000000000000000000000000000000000000000..ca26ee0bb611f101f0a82745dae8b6b3bf062a62 GIT binary patch literal 1937 zcmV;C2X6QuiwFP!000000PR_AZ`(Ey{+?flxAnZRLqkOr{v!c|@iWfa$5zks_WzEJeg|P4Y79tiQ21ppiE|cNb7^;GeW2yupWC5>} zJWVRtrU1pg#+2Ot>Hz-={#%8HU>5mWM0^IC+|0PNUcG(QG7V(LGVV>&pg&l55Rxoh z@?sT6ys#R2sXxdEMc5>d9a=75hd?CAW5>It-m{fy$rl6e#nLgG8wkdH-iN@j} z&Ld^QRR55~$$KHw_i4Dx*V2&re4g_6zbAz>Vd78vE$B^JJ*5=iC48f1)3jAMhcrlY zG1Xtp%8y<#KI9_iqG5UEXTZwA`9$u(lbW1=_?Jgg<|!9p7J+3L)ttEi494i|B<5p` z76)ZsyU-}NScGxDnd)Spxk)l$7&ZK!bD&)dGy!o~D*+*CVY0DZlZ!>ZQJzfoS(p}l zf4Wb3zEn|Xj!oTtX0%l%98h;-)Y>kkaWGHK13hw|-ZI=K%j6S}M*xe~LO^XWAXT`i z^G>tM1c~{q=-gK$r_3B+!4~78cq76%0p&`l5*u=C0$APF{7E76RU=!cIZ!~RajL{r z?owWHj561PItza)NphDY#p(7Z@<>zZ+gxPV7Fgt>gP1N6cFv9EzMvSqLxyKiKB1T(0)fq8eC`QO`r`-V+ zV`?JLp2Xcb+!fz!J!v;F%qIiZeA1LWr>7SeO++zw>laB z%-%tnY#qMeHIJAMvwh+YU9%n2x2f$8TpN)Es^Kyd`L=C44>?EBY0eRJs&o5NZ{Z{> zpvQodU>Qo0Y+phffPD{9c7xy#-x$~=uHz$egReVmlzN!%V>384V5kmTY?}lQm@Xfo zj=Np-XG4|QsEUGSxS~z!cH}5D_^i-ShLD3RXl#=~E%E>&h`UdShiyR1BR(K#J12pK zUDNX^fV+no>=B#Ua?VEpp1xAm`Ue)W71ux6+v;U*o3e4WL8;=g&44XF?? zE>gIP%fM-9aab%uA;Mjd(CGJd+UDcPc*hn5#8kZd#s(eUre=v|J|Dj7s|kX`i}i zv=2Xd20%$@$)dHm3*}ny?s=#mwcg#~Flr};i;@cr*H2Z`S6STko7dk{7?0QMe!!K# z&~DPt5BNpa%i{sRh*OIm;9s3u^~>b=sin~Pz7w~~+cJG2b*pv8($_yY^t<#WlzEJ~ zCnmA)ev?W3JqF)sqp!-=!|}Jz7JvFp#{c9ZM$S~koRO{pjkn%o%{4)ASe#PT<`3it zg1n`0Gi*;c4A(w{T)cnA&7qk`k0`L+^HU$!7TI2R)Ir;)ZF@h=)qvUk-%5IQzfXQ* zA;5dIytqWeAA;IA)W09FGi}bJA5%BPVWi&sYU19-gvn3#(9D_2k&3c z?u~Ch*&F9EUDTKG1~KaSgHDuC(|3HQr+l(E Xo;PJ_o2Z{)Zm<3W@Iks1qbmRa5G2^~ literal 0 HcmV?d00001 diff --git a/lib/images/oxygen/layout-toggle_Section+rtl.svgz b/lib/images/oxygen/layout-toggle_Section+rtl.svgz new file mode 100644 index 0000000000000000000000000000000000000000..ba5dfa5e16f00b8b9cde249f0ecb56ece1b5ad29 GIT binary patch literal 2712 zcmV;J3TO2niwFP!000000L@ryZ`{Te{qA4Eu2IBBm)vC~<4)t)8{Lp^f7x`_Kytx^M z+x2R7I2^KiBxYT|UA;}x^xdmhm;3wet0YNax81MH;%YGp+}`y~U@VJO)l|Ex9ri1p z@zr8xFJ|_Ftk?Hd(d~9!yAP7>{`CoSUv7@vv(ALmQ|k!-E&e|WOoVLT-StJafn=4n)v$X1)BEFL%Cd4O zPt;7&KeKz5k~ZH}``f&z_N$2=#r8CH{oXy53akutorH5grBpc4k4(AN8D#5ch~=g*`aHy zK5q*+$JuzY?GcHW=y!Ely>xI41-W-L^y2CMCNI0g)j~WyJk%`?(lH4}J(C_8rnD$` z%XVk}+sH0mX@l4Nn2039r zbGFML>RtV*Dqo0Kao6`45GjhK>gVE1R-r`7YO|jMKwnZJBkuz365Uqi{onh%tf3+KIPQrLCyA!f(53$jf}l=enCH zs69E=9$uXFzutd;OmtDK|I_s!=L``;evJWmwK&!uRdlf?U-RKzy~C)W=jAV$^00qA zIAb0jZ>w2pRNGha`FQcgEsI@ELaPr$-84Utk&}WPmDWR3omA;+^nR+OlgnMMrrU?F z?HrZRu~S71&ytYx5PZJm!e*X+mh9~@dYHcK9$Z%Xxm>0xC^BR8NkM|5GDbf$ z5#uLyEMrm%CXdt;uP|+z>J49}{Owt}k|)yXx%bCr+#q=C*Y2AByP%J`4bhc-_pw^H zz)^Gi-R8s1q=RZE;VM(cS-pg}oEf2$BEi$HC70fyD4DTFBq=ASHG-2F>A5qJ!i8P} zGC@3P61KE9)1wNV`6|_5*N#b@kQkTFfm=Y@Cs8VX25Ijye8Vye@({Ezy-W?%L~f<% z*f7iWB%YoaPsuuu{*w?f2jhzFW4Lj051)>j87UE(=M`eZwx#YN?RNFg_q7!p%^hM z_%yf8@$K%~7VXpZDPHmWe7NhY`Gt?|MO^`3?bG&}-qi4OvFU&S!U>uRGq8!2`@FC7 zb~vLQ!caIPp&hHCxH+c*Zma>9>buozw)Nuwri|i{SXNykZm88(D-;tOv%@H z(p1Ax^(moxtZY{X6_YrTeo1wqBZo1-QdfRtfJROAN*TeP2p|1yM zNq1dYt(!gtDf-+NH^@zNx~%uN81z^{$g_(Md%&jY4(t1RUtc%XMfkUFXf95qFgfuc zy?Ol{3cUToC>?)~=yf=$>=1`qp=f%fu-`%z4IxmX5-CcvdbsoW=dsQ5! z$BVCu0qWpq4~wLyN_v0#usDagq11_v3tnrLN$N}gbzUn^FC;(rIyD|s z!kut_?P~~F^oPBa##6$$WBUKTmEnKfTS<#ld3G`;zy4Og9l88ow^GzMTAl1wUw10|9Svq-&J3JRZbb7On(L=XQQ78F(lIy`uUKY zhL!zyeNU!RF#@UW)SsE1c+jk1|U&{ z{sOQJpbxgaHCh>Bu^gR1N|aF!rom(^7Ir_92;yS-^8rNT&;=X|O~FILLrQregP^@JKs;LHZGfkrXd2 zkSLHWMLkx#6#V_qglwSlKLOThn4e7q?*1^srE%yg(^=1lRJ=52yk| z*Foq;r)i1Q3dTLcB(V@0t7)Nv(*nvh%8_xYmlzLPStdpbe8vtH6j1azwH9(Y?J*8J zJ#HHRu0+L*QVA8Z9BWe~v5>O>d##)bl6@?VJqrLLekEbPCFurhuS5Uo$?ETxc=lIl^>0 zwy3dqs3V%5$TyWD<`T^#@Y5ubVHh~1*wgIMC;gR%c@dXI3;D4tXckH;IF50v!eldo zbHo?j!u9x#YD9dcrHVV2DEXtvX)1I^A`~xF2>L4S-0+2}&A}JimL;UYMIJL+KD{^a zgUU7()bl@%&M&SCZ{O(x_m8`WI{C3{yI)(|X2uf()0&EB(VmijWy_ua?z)YCC&NFN S^yj>Hul@&gj{ug88vp>QNk^Fg literal 0 HcmV?d00001 diff --git a/lib/ui/stdtoolbars.inc b/lib/ui/stdtoolbars.inc index 4af3606425..7b6c129600 100644 --- a/lib/ui/stdtoolbars.inc +++ b/lib/ui/stdtoolbars.inc @@ -36,13 +36,18 @@ # Item "Small font" "font-size small" # Item Emphasized set-emph # +# BidiItem is like Item, but an alternative icon (with name ending +# with "+rtl") will be used #include "Action.h" +#include "GuiApplication.h" // DispatchResult.h is needed by the windows compiler because lyx::dispatch // returns a DispatchResult const reference. Gcc does not complain. Weird... @@ -33,27 +34,25 @@ namespace frontend { Action::Action(FuncRequest func, QIcon const & icon, QString const & text, QString const & tooltip, QObject * parent) - : QAction(parent), func_(make_shared(move(func))) + : QAction(parent), func_(make_shared(move(func))), icon_(icon) { - init(icon, text, tooltip); + init(text, tooltip); } Action::Action(shared_ptr func, QIcon const & icon, QString const & text, QString const & tooltip, QObject * parent) - : QAction(parent), func_(func) + : QAction(parent), func_(func), icon_(icon) { - init(icon, text, tooltip); + init(text, tooltip); } -void Action::init(QIcon const & icon, QString const & text, - QString const & tooltip) +void Action::init(QString const & text, QString const & tooltip) { // only Qt/Mac handles that setMenuRole(NoRole); - setIcon(icon); setText(text); setToolTip(tooltip); setStatusTip(tooltip); @@ -76,6 +75,11 @@ void Action::update() setCheckable(false); } + if (rtlIcon_.isNull() || !guiApp->rtlContext()) + setIcon(icon_); + else + setIcon(rtlIcon_); + setEnabled(status.enabled()); } diff --git a/src/frontends/qt/Action.h b/src/frontends/qt/Action.h index 8bc4a71f24..411eb72388 100644 --- a/src/frontends/qt/Action.h +++ b/src/frontends/qt/Action.h @@ -43,6 +43,8 @@ public: QIcon const & icon, QString const & text, QString const & tooltip, QObject * parent); + void setRtlIcon(QIcon const & icon) { rtlIcon_ = icon; } + void update(); Q_SIGNALS: @@ -53,8 +55,10 @@ private Q_SLOTS: void action(); private: - void init(QIcon const & icon, QString const & text, QString const & tooltip); + void init(QString const & text, QString const & tooltip); std::shared_ptr func_; + QIcon icon_; + QIcon rtlIcon_; }; diff --git a/src/frontends/qt/GuiApplication.cpp b/src/frontends/qt/GuiApplication.cpp index 64ab6cf07e..ddc06bd16b 100644 --- a/src/frontends/qt/GuiApplication.cpp +++ b/src/frontends/qt/GuiApplication.cpp @@ -486,7 +486,7 @@ QString themeIconName(QString const & action) } -QString iconName(FuncRequest const & f, bool unknown) +QString iconName(FuncRequest const & f, bool unknown, QString const & suffix) { initializeResources(); QString name1; @@ -527,6 +527,9 @@ QString iconName(FuncRequest const & f, bool unknown) } } + // maybe a suffix? + name1 += suffix; + QStringList imagedirs; imagedirs << "images/" << "images/ipa/"; search_mode mode = theGuiApp()->imageSearchMode(); @@ -611,7 +614,7 @@ QPixmap getPixmap(QString const & path, QString const & name, QString const & ex } -QIcon getIcon(FuncRequest const & f, bool unknown) +QIcon getIcon(FuncRequest const & f, bool unknown, QString const & suffix) { #if (QT_VERSION >= 0x040600) if (lyxrc.use_system_theme_icons) { @@ -628,7 +631,7 @@ QIcon getIcon(FuncRequest const & f, bool unknown) } #endif - QString icon = iconName(f, unknown); + QString icon = iconName(f, unknown, suffix); if (icon.isEmpty()) return QIcon(); @@ -2400,6 +2403,16 @@ void GuiApplication::resetGui() } +bool GuiApplication::rtlContext() const +{ + if (current_view_ && current_view_->currentBufferView()) { + BufferView const * bv = current_view_->currentBufferView(); + return bv->cursor().innerParagraph().isRTL(bv->buffer().params()); + } else + return layoutDirection() == Qt::RightToLeft; +} + + void GuiApplication::createView(int view_id) { createView(QString(), true, view_id); diff --git a/src/frontends/qt/GuiApplication.h b/src/frontends/qt/GuiApplication.h index f5b11c9fae..ba603d644a 100644 --- a/src/frontends/qt/GuiApplication.h +++ b/src/frontends/qt/GuiApplication.h @@ -88,6 +88,8 @@ public: void hideDialogs(std::string const & name, Inset * inset) const; /// void resetGui(); + /// Return true if current position is RTL of if no document is open and interface if RTL + bool rtlContext() const; /// Clipboard & clipboard(); @@ -256,7 +258,8 @@ private: extern GuiApplication * guiApp; /// \return the icon file name for the given action. -QString iconName(FuncRequest const & f, bool unknown); +QString iconName(FuncRequest const & f, bool unknown, + QString const & suffix = QString()); /// \return the pixmap for the given path, name and extension. /// in case of errors a warning is produced and an empty pixmap is returned. @@ -267,7 +270,8 @@ QPixmap getPixmap(QString const & path, QString const & name, QString const & ex bool getPixmap(QPixmap & pixmap, QString const & path); /// \return an icon for the given action. -QIcon getIcon(FuncRequest const & f, bool unknown); +QIcon getIcon(FuncRequest const & f, bool unknown, + QString const & suffix = QString()); /// GuiApplication * theGuiApp(); diff --git a/src/frontends/qt/GuiToolbar.cpp b/src/frontends/qt/GuiToolbar.cpp index 9da3306701..11cb1e3461 100644 --- a/src/frontends/qt/GuiToolbar.cpp +++ b/src/frontends/qt/GuiToolbar.cpp @@ -129,7 +129,10 @@ Action * GuiToolbar::addItem(ToolbarItem const & item) text += " [" + toqstr(bindings.begin()->print(KeySequence::ForGui)) + "]"; Action * act = new Action(item.func_, getIcon(*item.func_, false), text, - text, this); + text, this); + if (item.type_ == ToolbarItem::BIDICOMMAND) + act->setRtlIcon(getIcon(*item.func_, false, "+rtl")); + actions_.append(act); return act; } @@ -518,6 +521,11 @@ void GuiToolbar::add(ToolbarItem const & item) LYXERR0("Unknown dynamic menu type: " << item.name_); break; } + case ToolbarItem::BIDICOMMAND: { + if (!getStatus(*item.func_).unknown()) + addAction(addItem(item)); + break; + } case ToolbarItem::COMMAND: { if (!getStatus(*item.func_).unknown()) addAction(addItem(item)); diff --git a/src/frontends/qt/Toolbars.cpp b/src/frontends/qt/Toolbars.cpp index bf4617cd5b..5455f86765 100644 --- a/src/frontends/qt/Toolbars.cpp +++ b/src/frontends/qt/Toolbars.cpp @@ -63,6 +63,7 @@ ToolbarInfo & ToolbarInfo::read(Lexer & lex) { enum { TO_COMMAND = 1, + TO_BIDICOMMAND, TO_ENDTOOLBAR, TO_SEPARATOR, TO_LAYOUTS, @@ -79,6 +80,7 @@ ToolbarInfo & ToolbarInfo::read(Lexer & lex) }; struct LexerKeyword toolTags[] = { + { "bidiitem", TO_BIDICOMMAND}, { "dynamicmenu", TO_DYNAMICMENU}, { "end", TO_ENDTOOLBAR }, { "exportformats", TO_EXPORTFORMATS }, @@ -138,6 +140,20 @@ ToolbarInfo & ToolbarInfo::read(Lexer & lex) } break; + case TO_BIDICOMMAND: + if (lex.next(true)) { + docstring const tooltip = translateIfPossible(lex.getDocString()); + lex.next(true); + string const func_arg = lex.getString(); + LYXERR(Debug::PARSER, "ToolbarInfo::read TO_BIDICOMMAND func: `" + << func_arg << '\''); + + FuncRequest func = + lyxaction.lookupFunc(func_arg); + add(ToolbarItem(ToolbarItem::BIDICOMMAND, func, tooltip)); + } + break; + case TO_MINIBUFFER: add(ToolbarItem(ToolbarItem::MINIBUFFER, FuncRequest(FuncCode(ToolbarItem::MINIBUFFER)))); diff --git a/src/frontends/qt/Toolbars.h b/src/frontends/qt/Toolbars.h index a4acb419cb..4a0a64fdd0 100644 --- a/src/frontends/qt/Toolbars.h +++ b/src/frontends/qt/Toolbars.h @@ -29,6 +29,8 @@ namespace frontend { class ToolbarItem { public: enum Type { + /// command/action with rtl version + BIDICOMMAND, /// command/action COMMAND, /// the command buffer