From 6988b4e2c4cfd27cbe70066c11b5f9a2112ecea9 Mon Sep 17 00:00:00 2001 From: Miguel Almeida Date: Sun, 2 Mar 2025 19:56:30 +0000 Subject: [PATCH] [EXPLORER] Add Show Desktop button to taskbar customization preview (#7727) Use a 4D lookup table for the notification area settings preview, instead of many if cases. CORE-19738 --- base/shell/explorer/explorer.rc | 18 ++++++++---- base/shell/explorer/res/bmp/184.bmp | Bin 0 -> 12554 bytes base/shell/explorer/res/bmp/185.bmp | Bin 0 -> 12014 bytes base/shell/explorer/res/bmp/186.bmp | Bin 0 -> 12014 bytes base/shell/explorer/res/bmp/187.bmp | Bin 0 -> 12014 bytes base/shell/explorer/res/bmp/188.bmp | Bin 0 -> 12554 bytes base/shell/explorer/res/bmp/189.bmp | Bin 0 -> 12550 bytes base/shell/explorer/resource.h | 18 ++++++++---- base/shell/explorer/trayprop.cpp | 41 ++++++++++++++++++---------- 9 files changed, 51 insertions(+), 26 deletions(-) create mode 100644 base/shell/explorer/res/bmp/184.bmp create mode 100644 base/shell/explorer/res/bmp/185.bmp create mode 100644 base/shell/explorer/res/bmp/186.bmp create mode 100644 base/shell/explorer/res/bmp/187.bmp create mode 100644 base/shell/explorer/res/bmp/188.bmp create mode 100644 base/shell/explorer/res/bmp/189.bmp diff --git a/base/shell/explorer/explorer.rc b/base/shell/explorer/explorer.rc index c27464aebbc..8cafd263310 100644 --- a/base/shell/explorer/explorer.rc +++ b/base/shell/explorer/explorer.rc @@ -49,15 +49,21 @@ IDB_TASKBARPROP_LOCK_GROUP_NOQL BITMAP "res/bmp/150.bmp" IDB_TASKBARPROP_NOLOCK_GROUP_NOQL BITMAP "res/bmp/151.bmp" IDB_TASKBARPROP_LOCK_NOGROUP_NOQL BITMAP "res/bmp/152.bmp" IDB_TASKBARPROP_NOLOCK_NOGROUP_NOQL BITMAP "res/bmp/153.bmp" -IDB_SYSTRAYPROP_SHOW_SECONDS BITMAP "res/bmp/154.bmp" -IDB_SYSTRAYPROP_HIDE_SECONDS BITMAP "res/bmp/155.bmp" +IDB_SYSTRAYPROP_SHOW_SECONDS_NODESK BITMAP "res/bmp/154.bmp" +IDB_SYSTRAYPROP_HIDE_SECONDS_NODESK BITMAP "res/bmp/155.bmp" IDB_STARTMENU BITMAP "res/bmp/158.bmp" IDB_STARTPREVIEW BITMAP "res/bmp/170.bmp" IDB_STARTPREVIEW_CLASSIC BITMAP "res/bmp/171.bmp" -IDB_SYSTRAYPROP_HIDE_CLOCK BITMAP "res/bmp/180.bmp" -IDB_SYSTRAYPROP_HIDE_NOCLOCK BITMAP "res/bmp/181.bmp" -IDB_SYSTRAYPROP_SHOW_CLOCK BITMAP "res/bmp/182.bmp" -IDB_SYSTRAYPROP_SHOW_NOCLOCK BITMAP "res/bmp/183.bmp" +IDB_SYSTRAYPROP_HIDE_CLOCK_NODESK BITMAP "res/bmp/180.bmp" +IDB_SYSTRAYPROP_HIDE_NOCLOCK_NODESK BITMAP "res/bmp/181.bmp" +IDB_SYSTRAYPROP_SHOW_CLOCK_NODESK BITMAP "res/bmp/182.bmp" +IDB_SYSTRAYPROP_SHOW_NOCLOCK_NODESK BITMAP "res/bmp/183.bmp" +IDB_SYSTRAYPROP_SHOW_SECONDS_DESK BITMAP "res/bmp/184.bmp" +IDB_SYSTRAYPROP_HIDE_SECONDS_DESK BITMAP "res/bmp/185.bmp" +IDB_SYSTRAYPROP_HIDE_CLOCK_DESK BITMAP "res/bmp/186.bmp" +IDB_SYSTRAYPROP_HIDE_NOCLOCK_DESK BITMAP "res/bmp/187.bmp" +IDB_SYSTRAYPROP_SHOW_CLOCK_DESK BITMAP "res/bmp/188.bmp" +IDB_SYSTRAYPROP_SHOW_NOCLOCK_DESK BITMAP "res/bmp/189.bmp" CREATEPROCESS_MANIFEST_RESOURCE_ID RT_MANIFEST "explorer.exe.manifest" diff --git a/base/shell/explorer/res/bmp/184.bmp b/base/shell/explorer/res/bmp/184.bmp new file mode 100644 index 0000000000000000000000000000000000000000..866e364ab12675514882c290d35e046d03169a35 GIT binary patch literal 12554 zcmeI2Yfuwc6vw&P7OSmT`w&gvR%;*FS|6ZP0a1{mtrjT7Cn7~rM1lbnhy+2=Vgslk zVyg0zSMY&=fnXpcBrrO)RqBkLcAT;HL(AwmqqbkH|K8nAHj6XXu`+0r{ZIDpx#!;9 zyZhUF&h93eHGjxNCsv~eIXR7|)&k<>G={E;(_pTFmLrC8OEa~Zr6O)Ry1wrLBZWc% zO}!d5yR%TJQXxHS3sj}0INqW~cAgUY4g-{nrl7v00OqbPT)lb~7cN{tqfQT*d=p}1 z@o3ZOplfcz-W6WZHq>F`+^M*J{W|1}{Sf6b67nUpp*5J0AWy-iUoWGhvlBTX6QDU> zgXUx9D3{I0wQJXKI4c1abkXI}VJQHI#01jMH%qrKCB-rinR9Z{otR|eYj zZ8(;n1kK?>w3aKOt56~@G7yHMMAWXIi8a!7xboW--1_TJoI8IGckbLlvLX%YJsGIp zx)%DAYP1w3qqDskZ3R-8R4F(rn}Z_NK3uwdnKC?xo40NvGIljO>DZ@oSHX1pG)(*A zVCpiX`#=)952d3aB?zJ6A?WGpL8Dd!d8Put_x^#!k;`B(GTTMNv_A`M_k;$v0SLwOFf-ru<_%1<>uHwsA#*)cPdsSACQfVlz%*ga1|-g)=E_uVOl z2_Jk&CVoW7Q`YCtNn94?d2)fwMmghSBAw<-wzTwNVcr$*p3?;KbO4^@l~-STo{-ny zc$18Ii-$+=@|G;hyZ)0Q8Q({az>_>Tg7PFUkQZMX$uqM)g^m*3kNCz1Fh=)zeV4rK z0PmZGJUxUVH1wHgZJ=yf)aL6K%K^R*v2c3gNdYiEiw+hz`@?h`p8Y}V{`(Ml-k;Hf z^sr~1gC2qGnCF8`E3xn6OW=|GOl`-5KE7A_|9NEee{7;e0wMvCfJi_jAQBJ>hy?zH Fz(053+MWOa literal 0 HcmV?d00001 diff --git a/base/shell/explorer/res/bmp/185.bmp b/base/shell/explorer/res/bmp/185.bmp new file mode 100644 index 0000000000000000000000000000000000000000..7767600156d5ac971a06937f2334cdbd189c67d8 GIT binary patch literal 12014 zcmeI2%WD%s9LKY%TQ`Z5#QI20tyQD8R#P7b6%QVKwgf@(;6baRUV5omEJ(35YPE+7 zRTL4)L8|pt#ESu z=DJ)|e{kM`(=o&4ir}r`vS>ZYntUwn#ATAE`u9Te=Wig2$K&uYk${oW8<3csgs;gY zWV2aFrBZOUdl%&Mc^E!*050wh!SLyWkjv%Z`RD*l;q>udKTO=Z29F1N;eOu<7(a6u z@Zn+R!DV>Sw+HT??}5*c24VWrKKPOtg11)=!M7(P@NOsuFUJPq>Fa6u{_G~aj~|DL z3q6p@WZ=iEG5B!%B&5@6`1NKSKHcesfZq?XSPTk<0z{)xh@U+I*Uxo>p`{6E0`o(_ z?X>3SV>&i#gJUzXiQEp)=k#=%XKji9!_%}?+llzmlv|(XW-hZ9Jh!6~?J(5i*|mwv zstHfDtwcyYo{b{j*VkfwqNp3+%G*+qr|Ge%Je;ddH53ZrGS7=8R!e&o+wDPUYl)QM zNvKdVhG}`JEM}xq)KgppqM63jg$(#75_ccT7%R zn>@^UEo)&wQR^B>t;+DU1Jp1Vi|adc(P9hXB+@LNv=em=-bai=EvqH9D9Ce>xc^+n zTvU+Zmwy`Nq>e;7_Dh=cJ{0z>cyC@MsaZjuj7`x+Ijbr+sHsHi^5l1+KIwW?4bmkg zkMGE@-t#73pSFuuL$S;l<-QMLENmBTEW@UnCPjHxgQ}u2nrB6rD(+PGJR6)3-vtzukQ>0S4vA0&;&FAO+XXS1T+CnpbUY(ZnfLh literal 0 HcmV?d00001 diff --git a/base/shell/explorer/res/bmp/186.bmp b/base/shell/explorer/res/bmp/186.bmp new file mode 100644 index 0000000000000000000000000000000000000000..4499898262d00087147c3267a03eb54489d6c759 GIT binary patch literal 12014 zcmeI&%WD%s90%}B>());B(XkHQ)|_zt<}`WLB)dypDjU9Jb2KmsFz+U77J1=jau!Y zLKQ_sa*%3$74hQ1gNPz%1VKRwI-SPlz8xqO3K%=F59fD=F?Mo4^7%ZTP7Gs~wfA?1Fn!|+9u5!S?%**@ojM4% zdwjTe5zhv9;r7{ne0nf~xeI&nIXQ~gmk!|Tqj9_$jpO;`2p+$j!?!2b@iuW3)93n; z&1Uia#U$R{JdR8zgP*Ua@bT6Ff`I_y@i>abB4V)^5~mO0>X|+e6(yhq8bhF|-f4_K z^PfG7<~l!8Q=RwUXuDUQ^ZSbY<*8Yjmj`nF@u_VrMXSYgD=o`5qC9&y7}0C;q+7~D zm1m2&-q+T0e9~AGyOg)0Jc;Jjjd)A0mTEX0X5&(CkBqI>B)YjQuJz<9LPpblMs!g~ zrB!cma!B)sjm&K(DDBxKrN^zFHYd@7zV(qv#HVY#jLKEiwBxrTVr2hL2<_^Y(&bW5 ziIaP-S-NbwFDTZ#R7D+mM%PJ+y42HH>SDQb&(PvfhaD!qjY`To`S2vPbG4LC zw|YvTX8rVQyo^>@@61pzmSM6YKs#1R>2R&5SrG}*7MkaGQAO>0xSiQ5dbY2W(ylzo z0`vNFiKwEMr&!q5`sOR0o!^b#nnP&Y3Mp;MvqWQ8QQOMNh_;qRd77T3t5CmmK62u@ zsO;@K4XF2Nt4KnYY4_yZ8T*kJ$w literal 0 HcmV?d00001 diff --git a/base/shell/explorer/res/bmp/187.bmp b/base/shell/explorer/res/bmp/187.bmp new file mode 100644 index 0000000000000000000000000000000000000000..f81efb188cce25d512ba41896f9c9729bd8d0719 GIT binary patch literal 12014 zcmeI&%WD%+6bA52>eM`(B-TevZLJ!$wVL`^sJL+9vn2?M3l~}yb<<77VnK?fQL9~4 zsG^8S7E-ORB5qu`5K#n;ASft-{0$)?kiDPtO6J^5ri(!W)$_rm=T2sr_LsS5CQbGp zF7|lz{8k^k)a8ie@x;}ilEG5o}R{+ zOa_HQ0oiO8mwR`hR4QTg#6Fzg8O7+y{U{cTcsf3W8FhJoXAo02uHfNNKkg13!{n)h z_;Bwco(=56?X!LO^k5jX7xq9sBtEA{@cPmLe0?;AHzP?rpBTpDm$UfxPI*fLNb{|xm-pfkwEJ7AzVGv3yH%5EHKXmye>1( z{>+B`x=rqm-Bwn^+sbZBY!?Af5l zM?IA-LKOC-hP1YMHdp5RTC$mv@T#}+)vzbA5lfq=?Dy&Mo38ri%4Q+#DI$`Q>DksM zN!lVwvM->=C+mIGnDt8cCX#OUB!XgTcv_s291g6H#bN=UthG_Iiz=O6B%SOjB9f8r zNjNpnHA|N*4}^{RZgf#4zK$f$oz$vG#gT~WskKqRIo~^0lXS4Bh)70`{WBccDS!dbCJ*`>ure{bmhgb?D?-?V{B!g@XSd zB5+s(2hVC3ZMHV06?;+*QagB(E$Wu+S(inU*wX>V%^KK3T dje6bwm*c44i{h{V3$OqSumB6N01M0^@CW`_(mDVD literal 0 HcmV?d00001 diff --git a/base/shell/explorer/res/bmp/188.bmp b/base/shell/explorer/res/bmp/188.bmp new file mode 100644 index 0000000000000000000000000000000000000000..7ed2f228ea02eb064c68ffd55bfc3b7df49c428d GIT binary patch literal 12554 zcmeI2dr%Wc9LHH`3)NPreTb%SE42@7tq)MDfG9|jRtuEk6On=_B7yKG5(Gty4G#qo zQPrfs@9M(!>(_DV(j_#i)DVf25Fv_2 zn@R;$a}y43bb+#=4vEX>H{ z&&ttKlz`6mX0#Oup_3)!q-Yt6WQTC&>Q&0{C~n`mjgZLA=%jt0%L#|>{CVgOMM2l4 zNB5C0^$q_{_Ot?YeLpTqh*c@gYIxVblP@wmxxi76^F8# zTJ)4>Kp|NLS63HErBZ11Iz&W8;+NlkgIyUIIJZEpJcH&uA+)UxP|H$~v&kF1 z)mdoW9SEoSvoUYZEV#KYKvwo1B#Tp^@9x5il|HD-NkMx%Wt1HaMOhwHHN{XKPQ&HP zmvON!8|r=QpzP4WKhO``V}($*ox@U3cPJZAqBz_GojtwK|L_y!ss3~fjj)|G35~67 z@Lu5sX>JY{Epmpoy9d&sxu`EILQ`o0sx!jilPdx9Z^wRhv481(CGEZ5A{Ih-Z)4$cp*J_Ia(S{pmJXl2rr%hPvDUgupAdX^2;2z z0a%SkPnP4+$>Y%n&-3BlhyU?Bt1z72+N_7t8yDy2snZO)`ZEnoVVyH5Yi4V-Y7`7p z6X77ws_G1it%lUf>u70xVzEKCW8x_|IZOf$@;q|%SP3DeW#y#eIOS<$^7m-EF=`1a zEh|~#AkX~$2MP))w}VB8iVw@^{Is(*$Zn9U8L5+#6SW8PAp0T3XxcG!bl9WtR zQi*s6a6i_h;TdD||mEU#ujnz9fGBL-BK}H4{ch@OR44h;bN98UzFZ zU$GRxIi3q$K3%lf(v`TmlO-Nx=`zZ5l4*T6M$y4gNehOZDUHa}YdK3^oa0Hzd+&en zp(7!Xj!>`w@J#`OF-#~4M;JdKWR_HV}1>H2QS&25Olc>zn#9OOw}d;N_U33>Ca zx5@N(%wXs$KNv;LRS#qcW)2eY6I&#}wqk25*0zdG?^bIs*jg{B6af*0qOBIxB8rF>MG*l5C=e3_MT<>9 z1rbw~`z?4uz(61n5)v4l+A4L%PCL$6`_M8v&ZzB+_3PPevRS0#OFGWjo^NKe|C~LW z4ZqzzyGfY0X!ukYYsL<9ahXi3#l*#B0-Y0=5&Q!BIA$b2X=%+(l?iju`&~b{C=?24 z8#Smqkb@$%8uFZ-P?weAbej&j`AQhNjZm(bfyUB8SbBSLD2erh(QHEfjuq(c zI1AOTOq3+A!hyIjtGV9<7OdYn-uY>$wtQ~34(7uNF!x%} zcQh4!$K_~B55>}maP;^0qgkhgEL(x!27X6mOcabJZoOETkEFtE>Ox z`HF046-(gj>kXw+36sT)xP*B8`14N)i&%<=q8$1@H^QJhgVus1nA)3QP-j53HUt-H zbJ4zgIlN|0#f)iF;O9FVxp{k#F3W(WuNMm!hoVN6fvzrUl$Qu?c>(lwCD0v_Vorf}FIvUH1(Nb23+U!__hK53OrUm|f-q5$V!PMJF_qRXV>FeIU zeH)&ho~W#EKy>tK7%dj;Ul)Mty(v(vUVyCVV6-)zK=r=uAS_IP2|PXmuFmA~`7;s-HXRR;qCgfpTW5?%E9l`VDDQ@BE#xvZ^jouqtNRxk*5G4}yVz55Vo)T^)4?cIHqUR49y?A*X<0d` zsHDqA*w6PZLPtU*RjyT{Fi(++D>OopMS+TDwbv7KjqWJOxBi!Fdw$&b#lu?@8xVKKPJK z{fLm^_WRFi{3vSeB=MRhiWl>=syy((dy-dPeeHQdUVr0FGT|+u2ffPMMp52#@}MwJ z0ZLTZJjruos3&=Wyf}88u+)ARI-b8Cy)@|KyX0l|c~g*b6n0PY)YDw!$Y-8)EOU&a zjy7?{z7G*=@U`H{KYij!Q5Rtp9U*EImCRFwVJjc-9NOU_EzEN$4)Yvp;!MjhC&G?T tXXM$sk3hhgUz^#wLj@keF8g0?Lioo$Rxkl3zyz286JP>NfC>Dgz~4+G!8-r| literal 0 HcmV?d00001 diff --git a/base/shell/explorer/resource.h b/base/shell/explorer/resource.h index 72b3456270b..d0253e7e9da 100644 --- a/base/shell/explorer/resource.h +++ b/base/shell/explorer/resource.h @@ -39,15 +39,21 @@ #define IDB_TASKBARPROP_NOLOCK_GROUP_NOQL 151 #define IDB_TASKBARPROP_LOCK_NOGROUP_NOQL 152 #define IDB_TASKBARPROP_NOLOCK_NOGROUP_NOQL 153 -#define IDB_SYSTRAYPROP_SHOW_SECONDS 154 -#define IDB_SYSTRAYPROP_HIDE_SECONDS 155 +#define IDB_SYSTRAYPROP_SHOW_SECONDS_NODESK 154 +#define IDB_SYSTRAYPROP_HIDE_SECONDS_NODESK 155 #define IDB_STARTMENU 158 #define IDB_STARTPREVIEW 170 #define IDB_STARTPREVIEW_CLASSIC 171 -#define IDB_SYSTRAYPROP_HIDE_CLOCK 180 -#define IDB_SYSTRAYPROP_HIDE_NOCLOCK 181 -#define IDB_SYSTRAYPROP_SHOW_CLOCK 182 -#define IDB_SYSTRAYPROP_SHOW_NOCLOCK 183 +#define IDB_SYSTRAYPROP_HIDE_CLOCK_NODESK 180 +#define IDB_SYSTRAYPROP_HIDE_NOCLOCK_NODESK 181 +#define IDB_SYSTRAYPROP_SHOW_CLOCK_NODESK 182 +#define IDB_SYSTRAYPROP_SHOW_NOCLOCK_NODESK 183 +#define IDB_SYSTRAYPROP_SHOW_SECONDS_DESK 184 +#define IDB_SYSTRAYPROP_HIDE_SECONDS_DESK 185 +#define IDB_SYSTRAYPROP_HIDE_CLOCK_DESK 186 +#define IDB_SYSTRAYPROP_HIDE_NOCLOCK_DESK 187 +#define IDB_SYSTRAYPROP_SHOW_CLOCK_DESK 188 +#define IDB_SYSTRAYPROP_SHOW_NOCLOCK_DESK 189 /*******************************************************************************\ |* Menu Resources *| diff --git a/base/shell/explorer/trayprop.cpp b/base/shell/explorer/trayprop.cpp index 99983402bc9..875334bf340 100644 --- a/base/shell/explorer/trayprop.cpp +++ b/base/shell/explorer/trayprop.cpp @@ -230,13 +230,14 @@ class CNotifySettingsPage : public CPropertyPageImpl private: HBITMAP m_hbmpTray; HWND m_hwndTaskbar; + static const WORD wImageIdLookupTable[2][2][2][2]; void _UpdateDialog() { BOOL bShowClock = IsDlgButtonChecked(IDC_TASKBARPROP_CLOCK); BOOL bShowSeconds = IsDlgButtonChecked(IDC_TASKBARPROP_SECONDS); BOOL bHideInactive = IsDlgButtonChecked(IDC_TASKBARPROP_HIDEICONS); - UINT uImageId; + BOOL bShowDesktopButton = IsDlgButtonChecked(IDC_TASKBARPROP_DESKTOP); HWND hwndCustomizeNotifyButton = GetDlgItem(IDC_TASKBARPROP_ICONCUST); HWND hwndSeconds = GetDlgItem(IDC_TASKBARPROP_SECONDS); @@ -246,19 +247,7 @@ private: ::EnableWindow(hwndSeconds, bShowClock); if (!bShowSeconds) CheckDlgButton(IDC_TASKBARPROP_SECONDS, BST_UNCHECKED); - - if (bHideInactive && bShowClock && bShowSeconds) - uImageId = IDB_SYSTRAYPROP_HIDE_SECONDS; - else if (bHideInactive && bShowClock && !bShowSeconds) - uImageId = IDB_SYSTRAYPROP_HIDE_CLOCK; - else if (bHideInactive && !bShowClock) - uImageId = IDB_SYSTRAYPROP_HIDE_NOCLOCK; - else if (!bHideInactive && bShowClock && bShowSeconds) - uImageId = IDB_SYSTRAYPROP_SHOW_SECONDS; - else if (!bHideInactive && bShowClock && !bShowSeconds) - uImageId = IDB_SYSTRAYPROP_SHOW_CLOCK; - else if (!bHideInactive && !bShowClock) - uImageId = IDB_SYSTRAYPROP_SHOW_NOCLOCK; + UINT uImageId = wImageIdLookupTable[bShowClock][bShowSeconds][bHideInactive][bShowDesktopButton]; SetBitmap(hwndTrayBitmap, &m_hbmpTray, uImageId); } @@ -324,6 +313,30 @@ public: } }; +const WORD CNotifySettingsPage::wImageIdLookupTable[2][2][2][2] = +{ + { + { + {IDB_SYSTRAYPROP_SHOW_NOCLOCK_NODESK, IDB_SYSTRAYPROP_SHOW_NOCLOCK_DESK}, + {IDB_SYSTRAYPROP_HIDE_NOCLOCK_NODESK, IDB_SYSTRAYPROP_HIDE_NOCLOCK_DESK} + }, + { + {IDB_SYSTRAYPROP_SHOW_NOCLOCK_NODESK, IDB_SYSTRAYPROP_SHOW_NOCLOCK_DESK}, + {IDB_SYSTRAYPROP_HIDE_NOCLOCK_NODESK, IDB_SYSTRAYPROP_HIDE_NOCLOCK_DESK} + } + }, + { + { + {IDB_SYSTRAYPROP_SHOW_CLOCK_NODESK, IDB_SYSTRAYPROP_SHOW_CLOCK_DESK}, + {IDB_SYSTRAYPROP_HIDE_CLOCK_NODESK, IDB_SYSTRAYPROP_HIDE_CLOCK_DESK} + }, + { + {IDB_SYSTRAYPROP_SHOW_SECONDS_NODESK, IDB_SYSTRAYPROP_SHOW_SECONDS_DESK}, + {IDB_SYSTRAYPROP_HIDE_SECONDS_NODESK, IDB_SYSTRAYPROP_HIDE_SECONDS_DESK} + } + } +}; + static int CALLBACK PropSheetProc(HWND hwndDlg, UINT uMsg, LPARAM lParam) {