From e4ebeed6f96b595d8931b818c5d271d97795fc72 Mon Sep 17 00:00:00 2001 From: Don Ho Date: Sat, 19 Jun 2021 14:18:18 +0200 Subject: [PATCH] Make Project Panel toolbar conform to dark mode Close #10039 --- PowerEditor/src/NppDarkMode.cpp | 5 ++++ PowerEditor/src/NppDarkMode.h | 1 + .../WinControls/ProjectPanel/ProjectPanel.cpp | 26 +++++++++++++++++++ 3 files changed, 32 insertions(+) diff --git a/PowerEditor/src/NppDarkMode.cpp b/PowerEditor/src/NppDarkMode.cpp index ab475b246..f0683deb6 100644 --- a/PowerEditor/src/NppDarkMode.cpp +++ b/PowerEditor/src/NppDarkMode.cpp @@ -981,6 +981,11 @@ namespace NppDarkMode SetWindowSubclass(hwnd, TabSubclass, g_tabSubclassID, 0); } + void disableVisualStyle(HWND hwnd) + { + SetWindowTheme(hwnd, L"", L""); + } + void autoSubclassAndThemeChildControls(HWND hwndParent, bool subclass, bool theme) { struct Params diff --git a/PowerEditor/src/NppDarkMode.h b/PowerEditor/src/NppDarkMode.h index 9f557a340..686dc9fdc 100644 --- a/PowerEditor/src/NppDarkMode.h +++ b/PowerEditor/src/NppDarkMode.h @@ -78,6 +78,7 @@ namespace NppDarkMode void subclassGroupboxControl(HWND hwnd); void subclassToolbarControl(HWND hwnd); void subclassTabControl(HWND hwnd); + void disableVisualStyle(HWND hwnd); void autoSubclassAndThemeChildControls(HWND hwndParent, bool subclass = true, bool theme = true); void autoThemeChildControls(HWND hwndParent); diff --git a/PowerEditor/src/WinControls/ProjectPanel/ProjectPanel.cpp b/PowerEditor/src/WinControls/ProjectPanel/ProjectPanel.cpp index d3e287f0d..f80d4466d 100644 --- a/PowerEditor/src/WinControls/ProjectPanel/ProjectPanel.cpp +++ b/PowerEditor/src/WinControls/ProjectPanel/ProjectPanel.cpp @@ -810,6 +810,32 @@ void ProjectPanel::notified(LPNMHDR notification) break; } } + else if (notification->code == NM_CUSTOMDRAW && (notification->hwndFrom == _hToolbarMenu)) + { + if (NppDarkMode::isEnabled()) + { + static bool isVSDisabled = false; + if (!isVSDisabled) + { + NppDarkMode::disableVisualStyle(_hToolbarMenu); + isVSDisabled = true; + } + + auto nmtbcd = reinterpret_cast(notification); + FillRect(nmtbcd->nmcd.hdc, &nmtbcd->nmcd.rc, NppDarkMode::getBackgroundBrush()); + nmtbcd->clrText = NppDarkMode::getTextColor(); + // highlight color when hover + // same color when hovering above menu + // RGB(65, 65, 65) should be added to NppDarkMode.cpp + // needed because, visual style is disabled + nmtbcd->clrHighlightHotTrack = RGB(65, 65, 65); + SetWindowLongPtr(_hSelf, DWLP_MSGRESULT, CDRF_NOTIFYSUBITEMDRAW | TBCDRF_HILITEHOTTRACK); + } + else + { + SetWindowLongPtr(_hSelf, DWLP_MSGRESULT, CDRF_DODEFAULT); + } + } } void ProjectPanel::setWorkSpaceDirty(bool isDirty)