-
Notifications
You must be signed in to change notification settings - Fork 5.1k
Description
Is there an existing issue for this?
- I have searched the existing issues
Description of the Issue
If a plugin's dialog has tab controls ("SysTabControl32"), when it calls NPPM_DARKMODESUBCLASSANDTHEME in Dark Mode, the dialog will go mostly dark, except the tab control, which is jarring. If that message also subclassed the SysTabControl32 (WC_TABCONTROL), it should allow plugins to have their tab controls in dialogs follow Dark Mode as well.
In #13596, I don't see any mention that tab controls were left out intentionally... but maybe there was a good reason that I don't know about for not including that. If so, we should talk about it, because the tab control being non-darkmode will cause problems with plugins that are trying to use the message to handle dark mode for their dialogs.
And I see in #16537 that adding other controls to Dark Mode has been accepted before, so I'm hoping this is a reasonable request.
Steps to Reproduce
- Download the DLL artifact from the CollectionInterface plugin's darkModeTabControl build and install in
plugins\CollectionInterface\CollectionInterface.dll - Run Notepad++ in Dark Mode
- Plugins > CollectionInterface > Collection Interface: Download, and look at the glaringly white tab interface in the otherwise dark dialog box
Actual Behavior
(screenshot with "Cyan" tones in Dark Mode)
Desired Behavior
Describe the solution you'd like.
I can see that there's a NppDarkMode::subclassTabControl(hwnd) which Notepad++ uses internally to subclass (for example) the ShortcutMapper's tab control.
If DARKMODESUBCLASSANDTHEME (specifically, NppDarkMode::autoSubclassAndThemeChildControls() also called NppDarkMode::subclassTabControl(hwnd); (or equivalent) when it finds a WC_TABCONTROL in the dialog, it would make sure that tab controls are also properly subclassed for Dark Mode. (I say "or equivalent", because I see that the other calls in that function are passing in the NppDarkModeParams p, whereas the existing subclassTabControl() doesn't take that argument; I don't know if it would be better for some reason to add in that parameter to the function: my tests indicate it works as written, without that argument, but I am far from an expert on Dark Mode coding.)
Debug Information
Notepad++ v8.8.1 (64-bit)
Build time : Jun 11 2025 - 15:54:05
Scintilla/Lexilla included : 5.5.6/5.4.4
Boost Regex included : 1_85
Path : C:\usr\local\share\github\notepad-plus-plus\PowerEditor\visual.net\x64\Debug\Notepad++.exe
Command Line :
Admin mode : OFF
Local Conf mode : ON
Cloud Config : OFF
Periodic Backup : ON
Placeholders : OFF
Scintilla Rendering Mode : SC_TECHNOLOGY_DIRECTWRITE (1)
Multi-instance Mode : monoInst
File Status Auto-Detection : cdEnabledNew (for current file/tab only)
Dark Mode : ON
Display Info :
primary monitor: 1920x1080, scaling 100%
visible monitors count: 1
installed Display Class adapters:
0000: Description - Intel(R) UHD Graphics 770
0000: DriverVersion - 32.0.101.6556
OS Name : Windows 11 Home (64-bit)
OS Version : 24H2
OS Build : 26100.4061
Current ANSI codepage : 1252
Plugins :
CollectionInterface (1.0.99.99)Anything else?
No response

