From 5f4610293c82c60f8c0d38acb916ec25f938acf3 Mon Sep 17 00:00:00 2001 From: Don Ho Date: Sun, 10 Nov 2024 19:49:35 +0100 Subject: [PATCH] Hide inactive tab buttons (Close & Pin) Fix #15298, close #15781 --- PowerEditor/src/Notepad_plus.rc | 24 ++- PowerEditor/src/NppBigSwitch.cpp | 5 + PowerEditor/src/WinControls/TabBar/TabBar.cpp | 55 ++++--- PowerEditor/src/WinControls/TabBar/TabBar.h | 29 ++-- .../dark/tabbar/closeTabButton_hover.ico | Bin 2587 -> 0 bytes .../dark/tabbar/closeTabButton_hoverIn.ico | Bin 0 -> 1741 bytes ...nact.ico => closeTabButton_hoverOnTab.ico} | Bin .../icons/dark/tabbar/closeTabButton_push.ico | Bin 2054 -> 2071 bytes .../dark/tabbar/{saved.ico => empty.ico} | Bin ...ton_hover.ico => pinTabButton_hoverIn.ico} | Bin ....ico => pinTabButton_pinnedHoverOnTab.ico} | Bin ...n_hover.ico => closeTabButton_hoverIn.ico} | Bin ...nact.ico => closeTabButton_hoverOnTab.ico} | Bin .../src/icons/standard/tabbar/empty.ico | Bin 0 -> 790 bytes PowerEditor/src/resource.h | 154 +++++++++--------- 15 files changed, 153 insertions(+), 114 deletions(-) delete mode 100644 PowerEditor/src/icons/dark/tabbar/closeTabButton_hover.ico create mode 100644 PowerEditor/src/icons/dark/tabbar/closeTabButton_hoverIn.ico rename PowerEditor/src/icons/dark/tabbar/{closeTabButton_inact.ico => closeTabButton_hoverOnTab.ico} (100%) rename PowerEditor/src/icons/dark/tabbar/{saved.ico => empty.ico} (100%) rename PowerEditor/src/icons/dark/tabbar/{pinTabButton_hover.ico => pinTabButton_hoverIn.ico} (100%) rename PowerEditor/src/icons/dark/tabbar/{pinTabButton_pinnedHover.ico => pinTabButton_pinnedHoverOnTab.ico} (100%) rename PowerEditor/src/icons/standard/tabbar/{closeTabButton_hover.ico => closeTabButton_hoverIn.ico} (100%) rename PowerEditor/src/icons/standard/tabbar/{closeTabButton_inact.ico => closeTabButton_hoverOnTab.ico} (100%) create mode 100644 PowerEditor/src/icons/standard/tabbar/empty.ico diff --git a/PowerEditor/src/Notepad_plus.rc b/PowerEditor/src/Notepad_plus.rc index 12be73eb5..fb859d01c 100644 --- a/PowerEditor/src/Notepad_plus.rc +++ b/PowerEditor/src/Notepad_plus.rc @@ -275,7 +275,7 @@ IDI_VIEW_MONITORING_DIS_ICON_DM2 ICON "icons/dark/toolbar/filled/monitori IDI_SAVED_ICON ICON "icons/standard/tabbar/saved.ico" -IDI_SAVED_DM_ICON ICON "icons/dark/tabbar/saved.ico" +IDI_SAVED_DM_ICON ICON "icons/dark/tabbar/empty.ico" IDI_SAVED_ALT_ICON ICON "icons/standard/tabbar/saved_alt.ico" IDI_UNSAVED_ICON ICON "icons/standard/tabbar/unsaved.ico" IDI_UNSAVED_DM_ICON ICON "icons/dark/tabbar/unsaved.ico" @@ -327,22 +327,28 @@ IDR_FILEBROWSER BITMAP "icons/standard/toolbar/fileBrowser.bm IDR_FILEMONITORING BITMAP "icons/standard/toolbar/monitoring.bmp" IDR_CLOSETAB ICON "icons/standard/tabbar/closeTabButton.ico" -IDR_CLOSETAB_INACT ICON "icons/standard/tabbar/closeTabButton_inact.ico" -IDR_CLOSETAB_HOVER ICON "icons/standard/tabbar/closeTabButton_hover.ico" +IDR_CLOSETAB_INACT ICON "icons/standard/tabbar/empty.ico" +IDR_CLOSETAB_HOVERIN ICON "icons/standard/tabbar/closeTabButton_hoverIn.ico" +IDR_CLOSETAB_HOVERONTAB ICON "icons/standard/tabbar/closeTabButton_hoverOnTab.ico" IDR_CLOSETAB_PUSH ICON "icons/standard/tabbar/closeTabButton_push.ico" IDR_CLOSETAB_DM ICON "icons/dark/tabbar/closeTabButton.ico" -IDR_CLOSETAB_INACT_DM ICON "icons/dark/tabbar/closeTabButton_inact.ico" -IDR_CLOSETAB_HOVER_DM ICON "icons/dark/tabbar/closeTabButton_hover.ico" +IDR_CLOSETAB_INACT_DM ICON "icons/dark/tabbar/empty.ico" +IDR_CLOSETAB_HOVERIN_DM ICON "icons/dark/tabbar/closeTabButton_hoverIn.ico" +IDR_CLOSETAB_HOVERONTAB_DM ICON "icons/dark/tabbar/closeTabButton_hoverOnTab.ico" IDR_CLOSETAB_PUSH_DM ICON "icons/dark/tabbar/closeTabButton_push.ico" IDR_PINTAB ICON "icons/standard/tabbar/pinTabButton.ico" -IDR_PINTAB_HOVER ICON "icons/standard/tabbar/pinTabButton_pinned.ico" +IDR_PINTAB_INACT ICON "icons/standard/tabbar/empty.ico" +IDR_PINTAB_HOVERIN ICON "icons/standard/tabbar/pinTabButton_pinned.ico" +IDR_PINTAB_HOVERONTAB ICON "icons/standard/tabbar/pinTabButton.ico" IDR_PINTAB_PINNED ICON "icons/standard/tabbar/pinTabButton_pinned.ico" -IDR_PINTAB_PINNEDHOVER ICON "icons/standard/tabbar/pinTabButton.ico" +IDR_PINTAB_PINNEDHOVERIN ICON "icons/standard/tabbar/pinTabButton.ico" IDR_PINTAB_DM ICON "icons/dark/tabbar/pinTabButton.ico" -IDR_PINTAB_HOVER_DM ICON "icons/dark/tabbar/pinTabButton_hover.ico" +IDR_PINTAB_INACT_DM ICON "icons/dark/tabbar/empty.ico" +IDR_PINTAB_HOVERIN_DM ICON "icons/dark/tabbar/pinTabButton_pinned.ico" +IDR_PINTAB_HOVERONTAB_DM ICON "icons/dark/tabbar/pinTabButton.ico" IDR_PINTAB_PINNED_DM ICON "icons/dark/tabbar/pinTabButton_pinned.ico" -IDR_PINTAB_PINNEDHOVER_DM ICON "icons/dark/tabbar/pinTabButton_pinnedHover.ico" +IDR_PINTAB_PINNEDHOVERIN_DM ICON "icons/dark/tabbar/pinTabButton.ico" IDR_DOCMAP_ICO ICON "icons/standard/panels/tabbar/docMap.ico" IDR_DOCMAP_ICO2 ICON "icons/light/panels/tabbar/docMap.ico" diff --git a/PowerEditor/src/NppBigSwitch.cpp b/PowerEditor/src/NppBigSwitch.cpp index 060d2e375..8e1acec14 100644 --- a/PowerEditor/src/NppBigSwitch.cpp +++ b/PowerEditor/src/NppBigSwitch.cpp @@ -4008,6 +4008,9 @@ LRESULT Notepad_plus::process(HWND hwnd, UINT message, WPARAM wParam, LPARAM lPa TabCtrl_SetItemSize(_subDocTab.getHSelf(), tabDpiDynamicalWidth, tabDpiDynamicalHeight); ::SendMessage(_pPublicInterface->getHSelf(), WM_SIZE, 0, 0); + + _mainDocTab.refresh(); + _subDocTab.refresh(); break; } @@ -4059,6 +4062,8 @@ LRESULT Notepad_plus::process(HWND hwnd, UINT message, WPARAM wParam, LPARAM lPa TabCtrl_SetItemSize(_subDocTab.getHSelf(), tabDpiDynamicalWidth, tabDpiDynamicalHeight); ::SendMessage(_pPublicInterface->getHSelf(), WM_SIZE, 0, 0); + _mainDocTab.refresh(); + _subDocTab.refresh(); return TRUE; } diff --git a/PowerEditor/src/WinControls/TabBar/TabBar.cpp b/PowerEditor/src/WinControls/TabBar/TabBar.cpp index a63970cb6..88714101f 100644 --- a/PowerEditor/src/WinControls/TabBar/TabBar.cpp +++ b/PowerEditor/src/WinControls/TabBar/TabBar.cpp @@ -499,12 +499,12 @@ void TabBarPlus::setCloseBtnImageList() if (NppDarkMode::isEnabled()) { iconSize = g_TabCloseBtnSize_DM; - ids = { IDR_CLOSETAB_DM, IDR_CLOSETAB_INACT_DM, IDR_CLOSETAB_HOVER_DM, IDR_CLOSETAB_PUSH_DM }; + ids = { IDR_CLOSETAB_DM, IDR_CLOSETAB_INACT_DM, IDR_CLOSETAB_HOVERIN_DM, IDR_CLOSETAB_HOVERONTAB_DM, IDR_CLOSETAB_PUSH_DM }; } else { iconSize = g_TabCloseBtnSize; - ids = { IDR_CLOSETAB, IDR_CLOSETAB_INACT, IDR_CLOSETAB_HOVER, IDR_CLOSETAB_PUSH }; + ids = { IDR_CLOSETAB, IDR_CLOSETAB_INACT, IDR_CLOSETAB_HOVERIN, IDR_CLOSETAB_HOVERONTAB, IDR_CLOSETAB_PUSH }; } if (_hCloseBtnImgLst != nullptr) @@ -538,12 +538,12 @@ void TabBarPlus::setPinBtnImageList() if (NppDarkMode::isEnabled()) { iconSize = g_TabPinBtnSize_DM; - ids = { IDR_PINTAB_DM, IDR_PINTAB_HOVER_DM, IDR_PINTAB_PINNED_DM, IDR_PINTAB_PINNEDHOVER_DM }; + ids = { IDR_PINTAB_DM, IDR_PINTAB_INACT_DM, IDR_PINTAB_HOVERIN_DM, IDR_PINTAB_HOVERONTAB_DM, IDR_PINTAB_PINNED_DM, IDR_PINTAB_PINNEDHOVERIN_DM }; } else { iconSize = g_TabPinBtnSize; - ids = { IDR_PINTAB, IDR_PINTAB_HOVER, IDR_PINTAB_PINNED, IDR_PINTAB_PINNEDHOVER }; + ids = { IDR_PINTAB, IDR_PINTAB_INACT, IDR_PINTAB_HOVERIN, IDR_PINTAB_HOVERONTAB, IDR_PINTAB_PINNED, IDR_PINTAB_PINNEDHOVERIN }; } if (_hPinBtnImgLst != nullptr) @@ -912,13 +912,21 @@ LRESULT TabBarPlus::runProc(HWND hwnd, UINT Message, WPARAM wParam, LPARAM lPara _isCloseHover = false; } - if (isFromTabToTab || _isCloseHover != isCloseHoverOld) + if (isFromTabToTab || _isCloseHover != isCloseHoverOld || _currentHoverTabItem != -1) { - if (isCloseHoverOld && (isFromTabToTab || !_isCloseHover)) + if (_currentHoverTabItem != -1 || isFromTabToTab) + { InvalidateRect(hwnd, ¤tHoverTabRectOld, FALSE); - - if (_isCloseHover) InvalidateRect(hwnd, &_currentHoverTabRect, FALSE); + } + else + { + if (isCloseHoverOld && (isFromTabToTab || !_isCloseHover)) + InvalidateRect(hwnd, ¤tHoverTabRectOld, FALSE); + + if (_isCloseHover) + InvalidateRect(hwnd, &_currentHoverTabRect, FALSE); + } } if (_isCloseHover) @@ -945,13 +953,21 @@ LRESULT TabBarPlus::runProc(HWND hwnd, UINT Message, WPARAM wParam, LPARAM lPara _isPinHover = false; } - if (isFromTabToTab || _isPinHover != isPinHoverOld) + if (isFromTabToTab || _isPinHover != isPinHoverOld || _currentHoverTabItem != -1) { - if (isPinHoverOld && (isFromTabToTab || !_isPinHover)) + if (_currentHoverTabItem != -1 || isFromTabToTab) + { InvalidateRect(hwnd, ¤tHoverTabRectOld, FALSE); - - if (_isPinHover) InvalidateRect(hwnd, &_currentHoverTabRect, FALSE); + } + else + { + if (isPinHoverOld && (isFromTabToTab || !_isPinHover)) + InvalidateRect(hwnd, ¤tHoverTabRectOld, FALSE); + + if (_isPinHover) + InvalidateRect(hwnd, &_currentHoverTabRect, FALSE); + } } if (_isPinHover) @@ -970,8 +986,7 @@ LRESULT TabBarPlus::runProc(HWND hwnd, UINT Message, WPARAM wParam, LPARAM lPara case WM_MOUSELEAVE: { - if (_isCloseHover || _isPinHover) - InvalidateRect(hwnd, &_currentHoverTabRect, FALSE); + InvalidateRect(hwnd, &_currentHoverTabRect, FALSE); _currentHoverTabItem = -1; _whichCloseClickDown = -1; @@ -1455,9 +1470,9 @@ void TabBarPlus::drawItem(DRAWITEMSTRUCT* pDrawItemStruct, bool isDarkMode) if (_isCloseHover && (_currentHoverTabItem == nTab)) { - if (_whichCloseClickDown == -1) // hover + if (_whichCloseClickDown == -1) // hover in { - idxCloseImg = _closeTabHoverIdx; + idxCloseImg = _closeTabHoverInIdx; } else if (_whichCloseClickDown == _currentHoverTabItem) // pushed { @@ -1466,7 +1481,7 @@ void TabBarPlus::drawItem(DRAWITEMSTRUCT* pDrawItemStruct, bool isDarkMode) } else if (!isSelected) // inactive { - idxCloseImg = _closeTabInactIdx; + idxCloseImg = (_currentHoverTabItem == nTab) ? _closeTabHoverOnTabIdx : _closeTabInactIdx; } RECT buttonRect = _closeButtonZone.getButtonRectFrom(rect, _isVertical); @@ -1523,7 +1538,7 @@ void TabBarPlus::drawItem(DRAWITEMSTRUCT* pDrawItemStruct, bool isDarkMode) { if (_whichPinClickDown == -1) // hover { - idxPinImg = _unpinnedHoverIdx; + idxPinImg = _unpinnedHoverInIdx; } else if (_whichPinClickDown == _currentHoverTabItem) // pushed { @@ -1533,13 +1548,13 @@ void TabBarPlus::drawItem(DRAWITEMSTRUCT* pDrawItemStruct, bool isDarkMode) } else // unpinned inactive { - idxPinImg = _unpinnedIdx; + idxPinImg = (_currentHoverTabItem == nTab) ? _unpinnedHoverOnTabIdx : _unpinnedInactIdx; } } else // current { if (_isPinHover && (_currentHoverTabItem == nTab)) // hover - idxPinImg = _unpinnedHoverIdx; + idxPinImg = _unpinnedHoverInIdx; else idxPinImg = _unpinnedIdx; } diff --git a/PowerEditor/src/WinControls/TabBar/TabBar.h b/PowerEditor/src/WinControls/TabBar/TabBar.h index d0fe125ce..95abfbba8 100644 --- a/PowerEditor/src/WinControls/TabBar/TabBar.h +++ b/PowerEditor/src/WinControls/TabBar/TabBar.h @@ -270,6 +270,13 @@ public : _closeButtonZone.setOrder(newOrder); } + // Hack for forcing the tab width change + // ref: https://github.com/notepad-plus-plus/notepad-plus-plus/pull/15781#issuecomment-2469387409 + void refresh() { + int index = insertAtEnd(L""); + deletItemAt(index); + } + protected: // it's the boss to decide if we do the drag N drop static bool _doDragNDrop; @@ -293,14 +300,17 @@ protected: HIMAGELIST _hCloseBtnImgLst = nullptr; const int _closeTabIdx = 0; const int _closeTabInactIdx = 1; - const int _closeTabHoverIdx = 2; - const int _closeTabPushIdx = 3; + const int _closeTabHoverInIdx = 2; // hover inside of box + const int _closeTabHoverOnTabIdx = 3; // hover on the tab, but outside of box + const int _closeTabPushIdx = 4; HIMAGELIST _hPinBtnImgLst = nullptr; const int _unpinnedIdx = 0; - const int _unpinnedHoverIdx = 1; - const int _pinnedIdx = 2; - const int _pinnedHoverIdx = 3; + const int _unpinnedInactIdx = 1; + const int _unpinnedHoverInIdx = 2; // hover inside of box + const int _unpinnedHoverOnTabIdx = 3; // hover on the tab, but outside of box + const int _pinnedIdx = 4; + const int _pinnedHoverIdx = 5; bool _isCloseHover = false; bool _isPinHover = false; @@ -341,21 +351,18 @@ protected: void drawItem(DRAWITEMSTRUCT *pDrawItemStruct, bool isDarkMode = false); void draggingCursor(POINT screenPoint); - int getTabIndexAt(const POINT & p) - { + int getTabIndexAt(const POINT & p) const { return getTabIndexAt(p.x, p.y); } - int32_t getTabIndexAt(int x, int y) - { + int32_t getTabIndexAt(int x, int y) const { TCHITTESTINFO hitInfo{}; hitInfo.pt.x = x; hitInfo.pt.y = y; return static_cast(::SendMessage(_hSelf, TCM_HITTEST, 0, reinterpret_cast(&hitInfo))); } - bool isPointInParentZone(POINT screenPoint) const - { + bool isPointInParentZone(POINT screenPoint) const { RECT parentZone{}; ::GetWindowRect(_hParent, &parentZone); return (((screenPoint.x >= parentZone.left) && (screenPoint.x <= parentZone.right)) && diff --git a/PowerEditor/src/icons/dark/tabbar/closeTabButton_hover.ico b/PowerEditor/src/icons/dark/tabbar/closeTabButton_hover.ico deleted file mode 100644 index 8c39f6f5a31ccb8fc0553b5dc4260ec1da63c69a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2587 zcmbuAdoE=P$BO)t@XbDylb6zz3*P@S$ltMmz8vqC(01^oV zO$-b`0N4sfDAW(FBm{t}AkgR^+Eg$$MF60#{zF#^0}#0hfK)e^pQXeV#RXX@dpp=e z&~NOB6cfw=wT1NnLAN==&X)p!bn8YyTyjN_Ah|Wl1{ZaRd^Cz05J>`5D%Ie4cnF0U z5J55^M;4NM6!o1J@;m?7?v(VmMFMNaTiTQ)|EGOT4V>fGie z82#-@AxoJqd>SI06vm$O@eeeLGr4wI5_Y;tpx)43+}EWp_DRhP^53gmj0;h-!$M5e zj<||xGv}W8+x;syh3IwB7V~A^RfKx{tuFGEroCcY!R5MW!0QH}<7hsK&3y=v+&R1# zdA@GfSDJa|+dUwq{YC6ST~W^Rc3EE`i{E-;MBR4EqZX}d`J4pZ#1gw`s41`O<-85b zhA>OZ2%6;loQb|M-D}#fzapbgr&K%7=LF%z*fKFP@}MQ0O`L1O?Ks`eP6n&Hl5gx= zv&G%=1~u$J^4XO1v^!TQVP01lk~TrB3W*_JDhihu7>0Cy?PW`(1&sC0C(za}5DT5O z-nSL>V=i_}f{N+a=-rNt>vP;s>EpYz4+a*N(?VuSJt~`0?bhtL$v3*$uV&U{9wvMi zLCqGl7wBYV3S0s9HZE|rmH)Z_;Ohn%sK0#8NL7&%i2vQ!iXXmqY@pec$$XP{3@+w-Pw$a{1KDVB>Eb(O!I( zeS9dksN@W1gs6g7=4v}sUg$d`$&r4ynRY7%gr=CIzT#90JDuTd=~7!{cq6NcqGt& zp~0h?fBC=AXxl);E_KGs(nZ4(MQcVL^2vTKb+|v*^la>2ddP6Lo0stkJ0`-q%-E}| za3TUo^F)}JOz4j)d`gKgRtMe6w?&(TmFbOEC&Y7pUH@KXaKc#ei&Kg#XlrTVxN1%rYri;Mr8vcc@}w^YxRi zFd-x?&stU1U7>~M?OIOnYjlL!aBqE|?VZ8&`gU?^MOP>B)+zQ~05GiTruMi4)L(*} z;~#VqiRq8uVwyx9D)o-4#^%)N@6Val1fUH)p*>gs!Rr1U0B(9$WvGPCYD&aD(kCB3 zzIy=;`l2C=G1LX2sk^5SmtihKe)tgg+x@5R436JiXpkqde$peb5KKyI)7|Smb+{cy zVkRozrdlKIrI77;HV@6pppz_P0W!5$^YiB5XNqRgS+s^rGt)!S>QzJ<^yktD3LN*+laNb2@ebi7}KL4o}R0%FEWjg1M_AHrY9n$bS5ND#X7v| z)ZL4SvhI5{KR>Uc(YTqH6ZT4qdvf2JT_Tcb&v-53MohnDteEj?=zYw{vbq@H)znLU z5QfL!xN40$^+XZGe&?gN{fR3q=L0_=nmXB5`gQq5imFoJiF>Kf#$iwXo~06zfqISw zEF+N!$rrIhQXeCi8Rdo zRRl&h$hWUar%dweGa=)BSETs?A4y8Lz@?e}axT^rf7&)5aCe~JSje!dCmXe4B{aTa zs}kgD9Iue^`ChY^3R>Yno+IaB^>ow6y)Hj%AHC{36SIHQ{cKHpoMi0p9fIQ?I&^5^ z(Tp7Al-LMwqCoYb%a1L z-&D#{Ejbap9D-r_y=C?TCr6!85z7cihp!J8nr2BUw9yhC^GGoJl|JA?p(Nk>^0m%Y zlk~D+qo)h+LHU#Hr3cP04`U&>z0}T?OM7 c+k{rm($@EXms%{UN;4mk=n`DBe|`S{1T3Fk3jhEB diff --git a/PowerEditor/src/icons/dark/tabbar/closeTabButton_hoverIn.ico b/PowerEditor/src/icons/dark/tabbar/closeTabButton_hoverIn.ico new file mode 100644 index 0000000000000000000000000000000000000000..48440e17c04eab8a0ab84a9bfc8ac35b76506200 GIT binary patch literal 1741 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 FV1nZO{r3O> delta 1681 zcmV;C25$M65QY##000311ON~a000002mp-%002e+000ye000002mq-8007eg000;m z000002mrYO004Xg001B$000002msLn001?SLt%d!NklZrE5Jlf0E7~I@ zJ_7|u;Q~nt7nVymNhGueGU5g_mfUe6B)CGj0w~R@({ z8UYql{lYNBT8pXz{Ar#{aH}Q(P1B&NSZgopTm@*FhAhi`?B6??1(anu>U`QsS(YQf zX^9=M1laHQlTo86;&3?l**W*+6FBFpN!KMm3WA{W35H?V8Dlse({je!Ip?ar?^6J| z_ndzKxutD1>$v)ylTHO6liUGIe>O=(K~y-6&D1e&gD?~Z;Qyhj@)6pc!2{fc3$)o7 z7#Q11;6VDs30P3pT*#7rh2{!DUEC!>pco2OhW?Xf$)DfzlT2|Od&^J9b^S%k%tu1PUQOiRf)*K^r1^7eWBQ2QX-vh+bD>e|?B(dtDFT zux~R-5@@X_0j)KXBpGf!`M^F|mVueQs4)i2j5JNXmw7=cCHDLM4Qj1LRaH<*Aq>Oi zpbxdyqAbf<3>Zv#3ROyhnE~KeY_`I`W)`&8f|;R|^1kUR&=@m%v#CKX0*x`=X)Zy% zVAC{{1CUapCjj5XK|TT40KnmJ@b_~`6h$M@Irnu_p>ysytIQ+_g8pn@Vb^s# zAp|bp*Jh!0a?Tyk=W}`8pnv~k{{YIPg*+i9R27p>1s{`>151BKNklZq} z6o&tYs>(-bIYS1H!UfuH3>g^PN|6KfDJMW;V9kY)>?<@^h}Fein#e{N;z+4F^lg4T zz7Ib?VaoFyw~XYb^xqKNxr^OycQ1rsB6-9QV6BMjgD>O|LlxVF{*EOV+$g(V6FelMkqpGS!_@ZD+5(5WDV>&01Qi7QQ;9@xN zSAG>*YcMmUl(Pqal|U)w^?Yf%q6A8*$x)1v1O*{@tRzt=XxnyiT29l|bzQJ#Jf;T# zDFF0+AAHG;EX%xFYwf4|+}nY*c7G9dCXyua7~T$yF z(qD>iW`&(ZW|H^llTHO{e_lyMK~z|U<(EBg+E5gR-_*7|v=SC;B+FhHP^5O_Ph?ijogap&YAnJ{|`3LQ9Xu2^}&A?#GQbr`ZN@aqD+@ZxX!Qiii3_X+OdwkwU z*XO*xKC9R3c*%J6qUr$X$2SNeEKSo_K@hwLZ~@?TL5<%4egL@Me{420RaGCNi#t1D z7{)n8QQw0gm;$IhfjIuvr~&vyQPhoL80WD7gb>#E{jUJtK7r_=c<1~67eWZT2SC&G z)iaBS5EMmy+ye-L;KK>Tw-IVZd!TwkfQvYQH*uM&s-oF!!f~9`)g8w{qtQUC)jE_C zY9;!>YPG`c?JZ}Rq``3`;e>jZC$%JTj^m)y>A*Bi2!a4X5MbLjG)>E7R=EHk&p9Dv=XE6cL?M7f-JaGb3IQaI zS`mmufV6X-7a|d$+wF!8HV)@*ITK8$chkfoaS(=K983ANy@>9>&&*2sBh-old_Ez-^&Y@xvzY;ypFn)>dERUf zKvmTThG8zB8Dh>b%w@0F3(smhQy@vwo#%Nq01|*3{B6vlaSz}d0Lk;bnj}eg(Z#d> b{_pq?q$W2Fd0Fh%^I=* literal 0 HcmV?d00001 diff --git a/PowerEditor/src/resource.h b/PowerEditor/src/resource.h index 0d0c3c5f4..af92d2870 100644 --- a/PowerEditor/src/resource.h +++ b/PowerEditor/src/resource.h @@ -339,80 +339,86 @@ #define IDC_MACRO_RECORDING 1408 -#define IDR_SAVEALL 1500 -#define IDR_CLOSEFILE 1501 -#define IDR_CLOSEALL 1502 -#define IDR_FIND 1503 -#define IDR_REPLACE 1504 -#define IDR_ZOOMIN 1505 -#define IDR_ZOOMOUT 1506 -#define IDR_WRAP 1507 -#define IDR_INVISIBLECHAR 1508 -#define IDR_INDENTGUIDE 1509 -#define IDR_SHOWPANNEL 1510 -#define IDR_STARTRECORD 1511 -#define IDR_STOPRECORD 1512 -#define IDR_PLAYRECORD 1513 -#define IDR_SAVERECORD 1514 -#define IDR_SYNCV 1515 -#define IDR_SYNCH 1516 -#define IDR_FILENEW 1517 -#define IDR_FILEOPEN 1518 -#define IDR_FILESAVE 1519 -#define IDR_PRINT 1520 -#define IDR_CUT 1521 -#define IDR_COPY 1522 -#define IDR_PASTE 1523 -#define IDR_UNDO 1524 -#define IDR_REDO 1525 -#define IDR_M_PLAYRECORD 1526 -#define IDR_DOCMAP 1527 -#define IDR_FUNC_LIST 1528 -#define IDR_FILEBROWSER 1529 -#define IDR_CLOSETAB 1530 -#define IDR_CLOSETAB_INACT 1531 -#define IDR_CLOSETAB_HOVER 1532 -#define IDR_CLOSETAB_PUSH 1533 -#define IDR_FUNC_LIST_ICO 1534 -#define IDR_DOCMAP_ICO 1535 -#define IDR_PROJECTPANEL_ICO 1536 -#define IDR_CLIPBOARDPANEL_ICO 1537 -#define IDR_ASCIIPANEL_ICO 1538 -#define IDR_DOCSWITCHER_ICO 1539 -#define IDR_FILEBROWSER_ICO 1540 -#define IDR_FILEMONITORING 1541 -#define IDR_CLOSETAB_DM 1542 -#define IDR_CLOSETAB_INACT_DM 1543 -#define IDR_CLOSETAB_HOVER_DM 1544 -#define IDR_CLOSETAB_PUSH_DM 1545 -#define IDR_DOCLIST 1546 -#define IDR_DOCLIST_ICO 1547 - -#define IDR_FILEBROWSER_ICO2 1550 -#define IDR_FILEBROWSER_ICO_DM 1551 -#define IDR_FUNC_LIST_ICO2 1552 -#define IDR_FUNC_LIST_ICO_DM 1553 -#define IDR_DOCMAP_ICO2 1554 -#define IDR_DOCMAP_ICO_DM 1555 -#define IDR_DOCLIST_ICO2 1556 -#define IDR_DOCLIST_ICO_DM 1557 -#define IDR_PROJECTPANEL_ICO2 1558 -#define IDR_PROJECTPANEL_ICO_DM 1559 -#define IDR_CLIPBOARDPANEL_ICO2 1560 -#define IDR_CLIPBOARDPANEL_ICO_DM 1561 -#define IDR_ASCIIPANEL_ICO2 1562 -#define IDR_ASCIIPANEL_ICO_DM 1563 -#define IDR_FIND_RESULT_ICO2 1564 -#define IDR_FIND_RESULT_ICO_DM 1565 - -#define IDR_PINTAB 1566 -#define IDR_PINTAB_HOVER 1567 -#define IDR_PINTAB_PINNED 1568 -#define IDR_PINTAB_PINNEDHOVER 1569 -#define IDR_PINTAB_DM 1570 -#define IDR_PINTAB_HOVER_DM 1571 -#define IDR_PINTAB_PINNED_DM 1572 -#define IDR_PINTAB_PINNEDHOVER_DM 1573 +#define IDR_SAVEALL 1500 +#define IDR_CLOSEFILE 1501 +#define IDR_CLOSEALL 1502 +#define IDR_FIND 1503 +#define IDR_REPLACE 1504 +#define IDR_ZOOMIN 1505 +#define IDR_ZOOMOUT 1506 +#define IDR_WRAP 1507 +#define IDR_INVISIBLECHAR 1508 +#define IDR_INDENTGUIDE 1509 +#define IDR_SHOWPANNEL 1510 +#define IDR_STARTRECORD 1511 +#define IDR_STOPRECORD 1512 +#define IDR_PLAYRECORD 1513 +#define IDR_SAVERECORD 1514 +#define IDR_SYNCV 1515 +#define IDR_SYNCH 1516 +#define IDR_FILENEW 1517 +#define IDR_FILEOPEN 1518 +#define IDR_FILESAVE 1519 +#define IDR_PRINT 1520 +#define IDR_CUT 1521 +#define IDR_COPY 1522 +#define IDR_PASTE 1523 +#define IDR_UNDO 1524 +#define IDR_REDO 1525 +#define IDR_M_PLAYRECORD 1526 +#define IDR_DOCMAP 1527 +#define IDR_FUNC_LIST 1528 +#define IDR_FILEBROWSER 1529 +#define IDR_CLOSETAB 1530 +#define IDR_CLOSETAB_INACT 1531 +#define IDR_CLOSETAB_HOVERIN 1532 +#define IDR_CLOSETAB_HOVERONTAB 1533 +#define IDR_CLOSETAB_PUSH 1534 +#define IDR_FUNC_LIST_ICO 1535 +#define IDR_DOCMAP_ICO 1536 +#define IDR_PROJECTPANEL_ICO 1537 +#define IDR_CLIPBOARDPANEL_ICO 1538 +#define IDR_ASCIIPANEL_ICO 1539 +#define IDR_DOCSWITCHER_ICO 1540 +#define IDR_FILEBROWSER_ICO 1541 +#define IDR_FILEMONITORING 1542 +#define IDR_CLOSETAB_DM 1543 +#define IDR_CLOSETAB_INACT_DM 1544 +#define IDR_CLOSETAB_HOVERIN_DM 1545 +#define IDR_CLOSETAB_HOVERONTAB_DM 1546 +#define IDR_CLOSETAB_PUSH_DM 1547 +#define IDR_DOCLIST 1548 +#define IDR_DOCLIST_ICO 1549 + +#define IDR_FILEBROWSER_ICO2 1550 +#define IDR_FILEBROWSER_ICO_DM 1551 +#define IDR_FUNC_LIST_ICO2 1552 +#define IDR_FUNC_LIST_ICO_DM 1553 +#define IDR_DOCMAP_ICO2 1554 +#define IDR_DOCMAP_ICO_DM 1555 +#define IDR_DOCLIST_ICO2 1556 +#define IDR_DOCLIST_ICO_DM 1557 +#define IDR_PROJECTPANEL_ICO2 1558 +#define IDR_PROJECTPANEL_ICO_DM 1559 +#define IDR_CLIPBOARDPANEL_ICO2 1560 +#define IDR_CLIPBOARDPANEL_ICO_DM 1561 +#define IDR_ASCIIPANEL_ICO2 1562 +#define IDR_ASCIIPANEL_ICO_DM 1563 +#define IDR_FIND_RESULT_ICO2 1564 +#define IDR_FIND_RESULT_ICO_DM 1565 + +#define IDR_PINTAB 1566 +#define IDR_PINTAB_INACT 1567 +#define IDR_PINTAB_HOVERIN 1568 +#define IDR_PINTAB_HOVERONTAB 1569 +#define IDR_PINTAB_PINNED 1570 +#define IDR_PINTAB_PINNEDHOVERIN 1571 +#define IDR_PINTAB_DM 1572 +#define IDR_PINTAB_INACT_DM 1573 +#define IDR_PINTAB_HOVERIN_DM 1574 +#define IDR_PINTAB_HOVERONTAB_DM 1575 +#define IDR_PINTAB_PINNED_DM 1576 +#define IDR_PINTAB_PINNEDHOVERIN_DM 1577 #define ID_MACRO 20000 // O .