From a14c0ca8812435f9a1fd921bf46eeaafa5f3e362 Mon Sep 17 00:00:00 2001 From: Zishan Rahman Date: Wed, 28 Jan 2026 13:25:01 +0000 Subject: [PATCH 1/3] Change scroll bar opacity in Contrast theme --- style/blockly.css | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/style/blockly.css b/style/blockly.css index 3fa4b395..e62ccc3f 100644 --- a/style/blockly.css +++ b/style/blockly.css @@ -136,7 +136,7 @@ textarea.blocklyCommentText.blocklyTextarea.blocklyText { } [data-theme="contrast"] .blocklyMainWorkspaceScrollbar .blocklyScrollbarHandle { - fill: rgba(255, 255, 255, 0.5) !important; + fill: rgba(255, 255, 255, 0.85) !important; } body[data-theme="contrast"] { From 424b52437cc50494b422cb78576787ea4b75d2c3 Mon Sep 17 00:00:00 2001 From: Zishan Rahman Date: Wed, 28 Jan 2026 13:57:31 +0000 Subject: [PATCH 2/3] Add white coloured bin and zoom icons for use in Contrast theme --- images/blocklywhitesprites.png | Bin 0 -> 24174 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 images/blocklywhitesprites.png diff --git a/images/blocklywhitesprites.png b/images/blocklywhitesprites.png new file mode 100644 index 0000000000000000000000000000000000000000..b712b92f96e2ffb4a917189f29a5d6c3d4495c85 GIT binary patch literal 24174 zcmeHPO^g*q5Uz)h<qQ4W$N3TkwPz*9DYVf_no z(O^iFU^w6n5~B%!@gfHfniwx88VP!Uivj#0WHniKx9ocJYP!0oyZ61>dGmJ7%!cjm zs;{cQs_L2PemvN}e%+e(*>}tafcBoXt2U^%PyN|5v#fqEd;hJcR8!iyVa zR}IQ9F7I6q@YP3iMmA4Z<3-P}-Ovm0=G_2;?*R-e(ctd@uip=Fxews6PXRi%fA;m0 z%amf)_O%;#s)>H4Kcy92hX<5!My02B^^D7<`R#WtT)J<;$4b;$S^aEf<+lF*Ew5Ez z<&G_zD_dSzwCm-{ON-X@^sayA?OQt3ywJ01`O^cX(w^tuJ*sT}uU9ve8VK!?2Cz9m zJK+$F!c7g#Gy=z9VFUOkLZ`zvxCW?xIDiLKFf_J*#(-9LbP-|*24NNpTGjT#g_tM@ z0B|Ih$sj%#Bss)Ou&JS?CtOUt+Xbf$qB?+%T1_PVA-Gda$pH}JEU4#D-q$=h05=T! zdI=Gi0ZWIl$Dk+!K(*wKf_mQNb(LW&TuBf#189Tu2I3;n`$J!5091#+U>D5LfM)fk z)g0qE6AZ%}24V;NV~krq7;gy?!836U&LwVCvjRCUAA zHi=sqz*)F2mgnAaKSr6x!D@hqcqm#9prwz|h)?oGrg_eVtLlMzyB5Sf3V>c@Gh<0h zJN~UiKkRTan?zd)=I7qbm7$FRMmxzia|X9!(3%WjH}Xra4g&aS9iaRm*olX56z%sw zfB=r*F`OLd0c^uqH!Lu0wCyh97Ov(&;~!LgHxs#KPtyL50nz;fzo*Aff4vu?T`4H54Wmr zpZdL*MVYoZH@t*sGCUL4;GBJ)PPKQfQ#`|Op!X`9w6tq z1c$5oQB0f%i~zpD*07L4w^`8ey>T`-jO0@4xd)2MPh`oep3hYPc zd7!$L5buRd>7;Xp58F3tHGncY&jZ+SA_GMRTAYF4=?V32(o3@x^x!qi zOc9vA9{R+iwIO%|sF!}LL#PJO2-*5;pHF4@L{>kqAoA72mHqr(fFQ6b%8Y|)3df++ zB7k6ea!^kB3gnQZVv1k}jF+10KpC`lDob^2Mx2JJgd%|KUTyij&Z2my{7qa0kZR#( zXjD`n!(^s%Ra78V+A=gMDv)6^Q@JWCkSc8%8Wk1DFqx@b6%|O8whWDm3S^kfRIZ8& zB-3`h8DDHlPE(TAe4bt>zc5H^8EWsfF=ZxZ%w9r0OEkJ zzO$ae-?!(xfYdkn!Ud<08mHt-M7^FGv9DtZ9c$>HGtj^N@FgXrW1A4hrOWgKDF<~* z&=`}WmN33bOw?Y^17jyBUcSao7)s}WvDCT%&CxsW0XG4E=7_Gg@#Qy+N^748Ks$0} z(HDfa3eoq6klx<9iM1o5sxKXkM6i@)cyc`Y~Bspog{Lxtc_FK8W zm6t>(CDOay*XXzcIwl)zj%}PhcA@ojTFZ7UabZ~JYT4eZfa!*x+|q%GV2xYKT32gY zm?Ib7ma#=GfaG=oOB^Guxa2a>THAHLUBe#VqjV#m#T#MOBD7P+5By(F;b<>jd<5ZDV$X>Ivdu(M@ zfMAizHVA7%R(|?&4*#qY#eIzy6_6xc`4mQmm9}$P@szSzwj8$1L};yCZW1Hq8qEkTkvP^;E9Dw35sp3?B@a6eU{yru zdaf+(GyQCo@}if5n`S6?Y3!|~VoyqRLQ~rKXzUB3UQdnK4|H$ryz%|L^dDnE&+2un JzF5)s&VQAql_mfH literal 0 HcmV?d00001 From de85a95a64cb0688061e8009440305a5e87e9ddc Mon Sep 17 00:00:00 2001 From: Zishan Rahman Date: Wed, 28 Jan 2026 14:52:20 +0000 Subject: [PATCH 3/3] Change bin and zoom icons to white in Contrast theme --- images/blocklywhitesprites.png | Bin 24174 -> 24174 bytes main/themes.js | 24 ++++++++++++++++++++++++ 2 files changed, 24 insertions(+) diff --git a/images/blocklywhitesprites.png b/images/blocklywhitesprites.png index b712b92f96e2ffb4a917189f29a5d6c3d4495c85..d89b7cbd28232b0cc62c7eb05dc52d76ccff1d48 100644 GIT binary patch literal 24174 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 literal 24174 zcmeHPO^g*q5Uz)h<qQ4W$N3TkwPz*9DYVf_no z(O^iFU^w6n5~B%!@gfHfniwx88VP!Uivj#0WHniKx9ocJYP!0oyZ61>dGmJ7%!cjm zs;{cQs_L2PemvN}e%+e(*>}tafcBoXt2U^%PyN|5v#fqEd;hJcR8!iyVa zR}IQ9F7I6q@YP3iMmA4Z<3-P}-Ovm0=G_2;?*R-e(ctd@uip=Fxews6PXRi%fA;m0 z%amf)_O%;#s)>H4Kcy92hX<5!My02B^^D7<`R#WtT)J<;$4b;$S^aEf<+lF*Ew5Ez z<&G_zD_dSzwCm-{ON-X@^sayA?OQt3ywJ01`O^cX(w^tuJ*sT}uU9ve8VK!?2Cz9m zJK+$F!c7g#Gy=z9VFUOkLZ`zvxCW?xIDiLKFf_J*#(-9LbP-|*24NNpTGjT#g_tM@ z0B|Ih$sj%#Bss)Ou&JS?CtOUt+Xbf$qB?+%T1_PVA-Gda$pH}JEU4#D-q$=h05=T! zdI=Gi0ZWIl$Dk+!K(*wKf_mQNb(LW&TuBf#189Tu2I3;n`$J!5091#+U>D5LfM)fk z)g0qE6AZ%}24V;NV~krq7;gy?!836U&LwVCvjRCUAA zHi=sqz*)F2mgnAaKSr6x!D@hqcqm#9prwz|h)?oGrg_eVtLlMzyB5Sf3V>c@Gh<0h zJN~UiKkRTan?zd)=I7qbm7$FRMmxzia|X9!(3%WjH}Xra4g&aS9iaRm*olX56z%sw zfB=r*F`OLd0c^uqH!Lu0wCyh97Ov(&;~!LgHxs#KPtyL50nz;fzo*Aff4vu?T`4H54Wmr zpZdL*MVYoZH@t*sGCUL4;GBJ)PPKQfQ#`|Op!X`9w6tq z1c$5oQB0f%i~zpD*07L4w^`8ey>T`-jO0@4xd)2MPh`oep3hYPc zd7!$L5buRd>7;Xp58F3tHGncY&jZ+SA_GMRTAYF4=?V32(o3@x^x!qi zOc9vA9{R+iwIO%|sF!}LL#PJO2-*5;pHF4@L{>kqAoA72mHqr(fFQ6b%8Y|)3df++ zB7k6ea!^kB3gnQZVv1k}jF+10KpC`lDob^2Mx2JJgd%|KUTyij&Z2my{7qa0kZR#( zXjD`n!(^s%Ra78V+A=gMDv)6^Q@JWCkSc8%8Wk1DFqx@b6%|O8whWDm3S^kfRIZ8& zB-3`h8DDHlPE(TAe4bt>zc5H^8EWsfF=ZxZ%w9r0OEkJ zzO$ae-?!(xfYdkn!Ud<08mHt-M7^FGv9DtZ9c$>HGtj^N@FgXrW1A4hrOWgKDF<~* z&=`}WmN33bOw?Y^17jyBUcSao7)s}WvDCT%&CxsW0XG4E=7_Gg@#Qy+N^748Ks$0} z(HDfa3eoq6klx<9iM1o5sxKXkM6i@)cyc`Y~Bspog{Lxtc_FK8W zm6t>(CDOay*XXzcIwl)zj%}PhcA@ojTFZ7UabZ~JYT4eZfa!*x+|q%GV2xYKT32gY zm?Ib7ma#=GfaG=oOB^Guxa2a>THAHLUBe#VqjV#m#T#MOBD7P+5By(F;b<>jd<5ZDV$X>Ivdu(M@ zfMAizHVA7%R(|?&4*#qY#eIzy6_6xc`4mQmm9}$P@szSzwj8$1L};yCZW1Hq8qEkTkvP^;E9Dw35sp3?B@a6eU{yru zdaf+(GyQCo@}if5n`S6?Y3!|~VoyqRLQ~rKXzUB3UQdnK4|H$ryz%|L^dDnE&+2un JzF5)s&VQAql_mfH diff --git a/main/themes.js b/main/themes.js index 999b5eed..82061b39 100644 --- a/main/themes.js +++ b/main/themes.js @@ -104,6 +104,29 @@ function setLogos(themeName) { } } +function setIconImage(htmlCollectionIcons, imageURL) { + for (const icon of htmlCollectionIcons) { + for (const image of icon.getElementsByTagName("image")) { + image.setAttribute("xlink:href", imageURL); + } + } +} + +function setBinAndZoomIcons(themeName) { + const binIcon = document.getElementsByClassName("blocklyTrash"); + const zoomIcons = document.getElementsByClassName("blocklyZoom"); + + if (themeName == "contrast") { + const iconsURL = "./images/blocklywhitesprites.png"; + setIconImage(binIcon, iconsURL); + setIconImage(zoomIcons, iconsURL); + } else { + const iconsURL = "/blockly/media/sprites.png"; + setIconImage(binIcon, iconsURL); + setIconImage(zoomIcons, iconsURL); + } +} + // Function to call when switching themes function switchTheme(themeName) { console.log(`Switching to theme: ${themeName}`); @@ -129,6 +152,7 @@ function switchTheme(themeName) { // } setLogos(themeName); + setBinAndZoomIcons(themeName); // Create custom theme for all themes const themeConfig = createThemeConfig(themeName);