|
Post by anixx on Aug 13, 2024 17:18:26 GMT -8
I did not remove the black boxes. Why do you think so? But I noticed, there are no black boxes when opening "This PC"...
|
|
|
Post by anixx on Aug 13, 2024 17:20:49 GMT -8
With your mod now everything works very well for me, very fast and I do not see the black boxes on regular folders! But still there are on special folder, like "networks" (because they load slower).
|
|
|
Post by anixx on Aug 13, 2024 17:33:53 GMT -8
There is a glitch: with your mod the status bar (created by Classic Explorer, a part of Classic shell) sometimes does not appear.
UPDATE: This is 100% reproducible when pressing "Apply to all folders" in folder options dialog and then pressing "OK". Also happens when opening first folder after reboot.
Looks like this:
Even ClientEdge is corrupted.
|
|
waldemar21214
Freshman Member
Posts: 94
OS: Windows 10
Theme: Classic
CPU: i5-12400f
RAM: 16 GB DDR4 3600mhz
GPU: PNY 3060TI
|
Post by waldemar21214 on Aug 14, 2024 1:44:02 GMT -8
The issues you're experiencing are the side effect of the invisible menu items fix. It shouldn't be too hard to fix. As for your fix, I meant this:
I found that the black background appears because the ShellTabWindowClass control does not have attribute "Visible" when created. If to make it visible, the area is white. Or, maybe, CabinetWClass background should be made non-black...
So you're saying that if ShellTabWindowClass is made visible immediately following it's creation, the background color is COLOR_WINDOW?
|
|
|
Post by anixx on Aug 14, 2024 2:16:41 GMT -8
So you're saying that if ShellTabWindowClass is made visible immediately following it's creation, the background color is COLOR_WINDOW?
At least, it is worth trying, I think. Its background is COLOR_WINDOW while CabinetWClass' background is black (this is not the case in old ExplorerFrame though).
Or fixing the CabinetWClass background would fix the issue.
|
|
waldemar21214
Freshman Member
Posts: 94
OS: Windows 10
Theme: Classic
CPU: i5-12400f
RAM: 16 GB DDR4 3600mhz
GPU: PNY 3060TI
|
Post by waldemar21214 on Aug 14, 2024 8:10:33 GMT -8
During class registering, the hbrBackground color for CabinetWclass is set to COLOR_BTNFACE on both 10 and 11. Some time between class registration and CBandSite::_Initialize which I used to probe the hbrBackground for changes, it is changed to NULL which indicates that the window procedure for CabinetWClass handles clearing the rect. I tried hooking SetWindowLongPtrW to intercept this, but it didn't work. Now I'm trying to find a symbol to hook into the wndproc of CabinetWClass. A ordinary Windhawk subclass will not work because we need to get hold of every single message, including the very first ones. I'd rather avoid hooking CreateWindowExW so as not to provoke conflict with ExplorerPatcher. It's the same problem that made my Treeview mod crash every now and then, or not work at all.
My findings on the black box lead me to believe that this problem isn't exclusive to 11 22H2+ or even 11 really, the same thing can be observed on 10 22H2, but the box is white instead of black. Looks equally as shitty if a dark classic theme is used. This means that the fix for this particular problem would be useful not only for 11 22H2 users, but for all classic theme SysListView32 users. Therefore it would be better if it was part of a SysListView32 enabler mod, or ExplorerPatcher.
|
|
|
Post by anixx on Aug 14, 2024 8:46:10 GMT -8
During class registering, the hbrBackground color for CabinetWclass is set to COLOR_BTNFACE on both 10 and 11. Some time between class registration and CBandSite::_Initialize which I used to probe the hbrBackground for changes, it is changed to NULL which indicates that the window procedure for CabinetWClass handles clearing the rect. I tried hooking SetWindowLongPtrW to intercept this, but it didn't work. Now I'm trying to find a symbol to hook into the wndproc of CabinetWClass. A ordinary Windhawk subclass will not work because we need to get hold of every single message, including the very first ones. I'd rather avoid hooking CreateWindowExW so as not to provoke conflict with ExplorerPatcher. It's the same problem that made my Treeview mod crash every now and then, or not work at all.
My findings on the black box lead me to believe that this problem isn't exclusive to 11 22H2+ or even 11 really, the same thing can be observed on 10 22H2, but the box is white instead of black. Looks equally as shitty if a dark classic theme is used. This means that the fix for this particular problem would be useful not only for 11 22H2 users, but for all classic theme SysListView32 users. Therefore it would be better if it was part of a SysListView32 enabler mod, or ExplorerPatcher.
The black box absolutely definitely appears without SysListView32 as well.
|
|
waldemar21214
Freshman Member
Posts: 94
OS: Windows 10
Theme: Classic
CPU: i5-12400f
RAM: 16 GB DDR4 3600mhz
GPU: PNY 3060TI
|
Post by waldemar21214 on Aug 14, 2024 11:34:44 GMT -8
Black box is fixed. With that, I consider the mod functionally done. Some time later I'll add my two cents to the relevant ExplorerPatcher issue because my findings would help ExplorerPatcher.
Now I'm releasing the functionally done version here, but I'll still try to solve the WM_SETREDRAW issue more elegantly, as my current solution can be likened to a demoltion hammer blow to a head.
|
|
|
Post by anixx on Aug 14, 2024 19:09:15 GMT -8
Works great for me! But the issue with disappearing status bar needs to be fixed. It happens randomly after some time with all windows... After this mod, Win11 23H2 is becoming as good for classic theme as Win10.
|
|
|
Post by anixx on Aug 15, 2024 0:02:13 GMT -8
P.S. It seems, the issue with the status bar disappearing, is gone. The mod works completely perfectly now.
|
|
waldemar21214
Freshman Member
Posts: 94
OS: Windows 10
Theme: Classic
CPU: i5-12400f
RAM: 16 GB DDR4 3600mhz
GPU: PNY 3060TI
|
Post by waldemar21214 on Aug 15, 2024 4:21:24 GMT -8
I decided to release this as a single mod. I've also added a option to enable/disable the CabinetWClass background color fix, because the mod also needs to be usable by non-Classic theme users that just want to remove the menu bar. The fix is disabled by default because I think people that just want to remove the menu bar completely is the bigger demographic.
|
|
|
Post by anixx on Aug 15, 2024 5:12:20 GMT -8
I decided to release this as a single mod. I've also added a option to enable/disable the CabinetWClass background color fix, because the mod also needs to be usable by non-Classic theme users that just want to remove the menu bar. The fix is disabled by default because I think people that just want to remove the menu bar completely is the bigger demographic. I do not think this fix negatively affects anyone. Probably, would be better to have it enabled by default, for instance so that I could recommend it in tutorials on Classic theme without further explanations of how to set it up.
Does it bring any troubles to non-classic users? I think, no. I think, the both (actually, all 3) fixes are purely positive and only small part of users (if any) would want to disable one of them.
|
|
waldemar21214
Freshman Member
Posts: 94
OS: Windows 10
Theme: Classic
CPU: i5-12400f
RAM: 16 GB DDR4 3600mhz
GPU: PNY 3060TI
|
Post by waldemar21214 on Aug 15, 2024 5:53:16 GMT -8
The original WM_ERASEBKGN handler is there for a reason (at least I hope it is), and it's non-compatibility with the classic theme is just a sign of the classic's theme deprecation.
Honestly this should be part of ExplorerPatcher anyways as part of "advanced mitigations for correct rendering using classic theme". This isn't Win 11 22H2+ specific. I'll report my findings to ExplorerPatcher devs and they'll take it from here.
|
|
|
Post by anixx on Aug 15, 2024 7:32:46 GMT -8
Honestly this should be part of ExplorerPatcher anyways as part of "advanced mitigations for correct rendering using classic theme". This isn't Win 11 22H2+ specific. I'll report my findings to ExplorerPatcher devs and they'll take it from here. Maybe I can add this to the "Classic theme Explorer Lite" mod in Windhawk. Would this be logical?
|
|
|
Post by anixx on Aug 15, 2024 7:53:06 GMT -8
The original WM_ERASEBKGN handler is there for a reason (at least I hope it is), and it's non-compatibility with the classic theme is just a sign of the classic's theme deprecation. Honestly this should be part of ExplorerPatcher anyways as part of "advanced mitigations for correct rendering using classic theme". This isn't Win 11 22H2+ specific. I'll report my findings to ExplorerPatcher devs and they'll take it from here. Here is a proposed mod that is aimed to replace our patching of StartMenuDLL.dll from OpenShell:
It mainly works, but is it still glitchy. Do you think, this approach can be polished?
|
|
|
Post by OrthodoxWin32 on Aug 15, 2024 11:48:53 GMT -8
Thank you very much waldemar21214 for this mod, it was one of the mods I was really hoping to see made!
|
|
|
Post by OrthodoxWin32 on Aug 15, 2024 11:50:47 GMT -8
Here is a proposed mod that is aimed to replace our patching of StartMenuDLL.dll from OpenShell:
It mainly works, but is it still glitchy. Do you think, this approach can be polished?
Thanks you, I didn't know a mod with this feature was about to be released. Indeed, having this mod finalized would be great, it would make installing the classic theme much easier for beginner users.
|
|
waldemar21214
Freshman Member
Posts: 94
OS: Windows 10
Theme: Classic
CPU: i5-12400f
RAM: 16 GB DDR4 3600mhz
GPU: PNY 3060TI
|
Post by waldemar21214 on Aug 17, 2024 7:04:57 GMT -8
Maybe I can add this to the "Classic theme Explorer Lite" mod in Windhawk. Would this be logical? Potentially yes, but this family of mods is fundamentally flawed because they hook CreateWindowExW which is incompatible with ExplorerPatcher. I've discovered that if the Navigation bar is disabled in ExplorerPatcher, then the mod you're talking about doesn't work at all. Overall, I think mods that modify explorer.exe shouldn't hook CreateWindowExW at all - and in most cases they don't have to, there are countless symbols that can be hooked to the same effect. SetWindowLongPtrW may be impacted too. Here is a proposed mod that is aimed to replace our patching of StartMenuDLL.dll from OpenShell: It mainly works, but is it still glitchy. Do you think, this approach can be polished?
It seems that the author is doing a good job keeping track of problems and fixing them. I've got two remarks: firstly you've mentioned that the mod fails to fix the ExplorerPatcher taskbar implementation. That's because ExplorerPatcher taskbar is a reimplementation, not a mod. Apparently they are working on various theme related options, so maybe in not-so-distant future we will not need any Windhawk mods or OpenShell patches to have a fully classic taskbar on Win 11 24H2. Second, one of the issues you've posted a screen of, I experienced that too with your Classic Taskbar 3d buttons lite: Anyways, not too big of a problem, and not really relevant here.
Thanks for the kind words OrthodoxWin32. Sometimes I enjoy solving a problem like this - I'm fighting the good fight against post-modernity
|
|
|
Post by anixx on Aug 17, 2024 8:56:33 GMT -8
Maybe I can add this to the "Classic theme Explorer Lite" mod in Windhawk. Would this be logical? Potentially yes, but this family of mods is fundamentally flawed because they hook CreateWindowExW which is incompatible with ExplorerPatcher. I've discovered that if the Navigation bar is disabled in ExplorerPatcher, then the mod you're talking about doesn't work at all. This mod is literally a copy of the EP code.
|
|
|
Post by anixx on Aug 17, 2024 9:02:14 GMT -8
Second, one of the issues you've posted a screen of, I experienced that too with your Classic Taskbar 3d buttons lite: Anyways, not too big of a problem, and not really relevant here.
I think, your issue is due to your color scheme. The lines are not black, they are looking light-green, a color from the color scheme.
|
|