diff --git a/include/wx/msw/checkbox.h b/include/wx/msw/checkbox.h index 3608acfad4..c0ef06aa14 100644 --- a/include/wx/msw/checkbox.h +++ b/include/wx/msw/checkbox.h @@ -65,7 +65,7 @@ public: protected: virtual wxSize DoGetBestClientSize() const override; - virtual void MSWSetDarkOrLightMode(SetMode setmode) override; + virtual void MSWSetDarkOrLightMode() override; virtual void DoSet3StateValue(wxCheckBoxState value) override; virtual wxCheckBoxState DoGet3StateValue() const override; diff --git a/include/wx/msw/choice.h b/include/wx/msw/choice.h index cfe3314980..40a1877e31 100644 --- a/include/wx/msw/choice.h +++ b/include/wx/msw/choice.h @@ -130,7 +130,7 @@ protected: virtual wxSize DoGetSizeFromTextSize(int xlen, int ylen = -1) const override; virtual void MSWGetDarkModeSupport(MSWDarkModeSupport& support) const override; - virtual void MSWSetDarkOrLightMode(SetMode setmode) override; + virtual void MSWSetDarkOrLightMode() override; // Show or hide the popup part of the control. void MSWDoPopupOrDismiss(bool show); diff --git a/include/wx/msw/control.h b/include/wx/msw/control.h index 7695fd7a08..eea54892a4 100644 --- a/include/wx/msw/control.h +++ b/include/wx/msw/control.h @@ -112,7 +112,7 @@ protected: // Look in our GetSubcontrols() for the windows with the given ID. virtual wxWindow *MSWFindItem(long id, WXHWND hWnd) const override; - virtual void MSWSetDarkOrLightMode(SetMode setmode) override; + virtual void MSWSetDarkOrLightMode() override; // Return the message that can be used to retrieve the tooltip window used // by a native control. If this message is non-zero and sending it returns diff --git a/include/wx/msw/gauge.h b/include/wx/msw/gauge.h index ff9f7c31dc..402b8e267d 100644 --- a/include/wx/msw/gauge.h +++ b/include/wx/msw/gauge.h @@ -62,7 +62,7 @@ protected: virtual wxSize DoGetBestSize() const override; virtual void MSWGetDarkModeSupport(MSWDarkModeSupport& support) const override; - virtual void MSWSetDarkOrLightMode(SetMode setmode) override; + virtual void MSWSetDarkOrLightMode() override; private: // returns true if the control is currently in indeterminate (a.k.a. diff --git a/include/wx/msw/listctrl.h b/include/wx/msw/listctrl.h index 7df884ca4b..042e8348e6 100644 --- a/include/wx/msw/listctrl.h +++ b/include/wx/msw/listctrl.h @@ -401,7 +401,7 @@ protected: virtual void MSWUpdateFontOnDPIChange(const wxSize& newDPI) override; - virtual void MSWSetDarkOrLightMode(SetMode setmode) override; + virtual void MSWSetDarkOrLightMode() override; virtual int MSWGetToolTipMessage() const override; diff --git a/include/wx/msw/nonownedwnd.h b/include/wx/msw/nonownedwnd.h index 87804401ab..c6f39087a7 100644 --- a/include/wx/msw/nonownedwnd.h +++ b/include/wx/msw/nonownedwnd.h @@ -32,7 +32,7 @@ protected: virtual bool DoSetPathShape(const wxGraphicsPath& path) override; #endif // wxUSE_GRAPHICS_CONTEXT - virtual void MSWSetDarkOrLightMode(SetMode setmode) override; + virtual void MSWSetDarkOrLightMode() override; virtual WXLRESULT MSWWindowProc(WXUINT message, WXWPARAM wParam, WXLPARAM lParam) override; diff --git a/include/wx/msw/notebook.h b/include/wx/msw/notebook.h index 2d61b428f1..cb7c831831 100644 --- a/include/wx/msw/notebook.h +++ b/include/wx/msw/notebook.h @@ -139,7 +139,7 @@ protected: // common part of all ctors void Init(); - virtual void MSWSetDarkOrLightMode(SetMode setmode) override; + virtual void MSWSetDarkOrLightMode() override; virtual int MSWGetToolTipMessage() const override; diff --git a/include/wx/msw/private/darkmode.h b/include/wx/msw/private/darkmode.h index fffed37c89..31bf82c2eb 100644 --- a/include/wx/msw/private/darkmode.h +++ b/include/wx/msw/private/darkmode.h @@ -21,10 +21,8 @@ WXDLLIMPEXP_CORE bool IsActive(); // Return true if the system has switched between dark and light modes. -// Some controls need to take extra actions to switch from light mode to dark -// mode compared with just creating the window in dark mode. This function -// helps us do only what is needed, to avoid overwriting user settings such as -// background and foreground colours. +// A control might need to take different actions to switch modes compared +// with just creating the control in dark mode. WXDLLIMPEXP_CORE bool HasChanged(); diff --git a/include/wx/msw/radiobut.h b/include/wx/msw/radiobut.h index aacb7aabd0..5c47b664df 100644 --- a/include/wx/msw/radiobut.h +++ b/include/wx/msw/radiobut.h @@ -68,7 +68,7 @@ protected: virtual void MSWDrawButtonBitmap(wxDC& dc, const wxRect& rect, int flags) override; - virtual void MSWSetDarkOrLightMode(SetMode setmode) override; + virtual void MSWSetDarkOrLightMode() override; private: // common part of all ctors diff --git a/include/wx/msw/statbox.h b/include/wx/msw/statbox.h index 12aefaff22..ae252e238a 100644 --- a/include/wx/msw/statbox.h +++ b/include/wx/msw/statbox.h @@ -78,7 +78,7 @@ public: protected: virtual wxWindowList GetCompositeWindowParts() const override; - virtual void MSWSetDarkOrLightMode(SetMode setmode) override; + virtual void MSWSetDarkOrLightMode() override; // return the region with all the windows inside this static box excluded WXHRGN MSWGetRegionWithoutChildren(); diff --git a/include/wx/msw/statline.h b/include/wx/msw/statline.h index c921e93676..f66821ac27 100644 --- a/include/wx/msw/statline.h +++ b/include/wx/msw/statline.h @@ -43,7 +43,7 @@ public: // usually overridden base class virtuals virtual WXDWORD MSWGetStyle(long style, WXDWORD *exstyle) const override; - virtual void MSWSetDarkOrLightMode(SetMode setmode) override; + virtual void MSWSetDarkOrLightMode() override; wxDECLARE_DYNAMIC_CLASS_NO_COPY(wxStaticLine); }; diff --git a/include/wx/msw/textctrl.h b/include/wx/msw/textctrl.h index 947396cf00..db96bf3380 100644 --- a/include/wx/msw/textctrl.h +++ b/include/wx/msw/textctrl.h @@ -251,7 +251,7 @@ protected: virtual void MSWDrawThemeBorder(WXHDC hdc) override; virtual void MSWGetDarkModeSupport(MSWDarkModeSupport& support) const override; - virtual void MSWSetDarkOrLightMode(SetMode setmode) override; + virtual void MSWSetDarkOrLightMode() override; #if wxUSE_RICHEDIT virtual void MSWUpdateFontOnDPIChange(const wxSize& newDPI) override; diff --git a/include/wx/msw/toolbar.h b/include/wx/msw/toolbar.h index f740a5994f..4af8f18b2f 100644 --- a/include/wx/msw/toolbar.h +++ b/include/wx/msw/toolbar.h @@ -109,7 +109,7 @@ protected: // common part of all ctors void Init(); - virtual void MSWSetDarkOrLightMode(SetMode setmode) override; + virtual void MSWSetDarkOrLightMode() override; virtual int MSWGetToolTipMessage() const override; // create the native toolbar control diff --git a/include/wx/msw/window.h b/include/wx/msw/window.h index 3d7c282db8..1b02d5e69a 100644 --- a/include/wx/msw/window.h +++ b/include/wx/msw/window.h @@ -635,20 +635,10 @@ protected: virtual void MSWGetDarkModeSupport(MSWDarkModeSupport& support) const; - // The reason for calling MSWSetDarkOrLightMode below. - enum class SetMode - { - // Set dark mode for a newly created window. - Initial, - - // Set dark mode or light mode for an existing window. - Change - }; - // Configure a window for dark mode settings immediately after creation or // upon switching into or out of dark mode. This function is not called // unless dark mode was enabled, or is being enabled. - virtual void MSWSetDarkOrLightMode(SetMode setmode); + virtual void MSWSetDarkOrLightMode(); // Translate wxBORDER_THEME to a standard border style or return it as is // if themed border should be used, depending on CanApplyThemeBorder(). diff --git a/src/msw/checkbox.cpp b/src/msw/checkbox.cpp index aa189b15cc..e685aa51bb 100644 --- a/src/msw/checkbox.cpp +++ b/src/msw/checkbox.cpp @@ -92,9 +92,9 @@ WXDWORD wxCheckBox::MSWGetStyle(long style, WXDWORD *exstyle) const return msStyle; } -void wxCheckBox::MSWSetDarkOrLightMode(SetMode setmode) +void wxCheckBox::MSWSetDarkOrLightMode() { - wxCheckBoxBase::MSWSetDarkOrLightMode(setmode); + wxCheckBoxBase::MSWSetDarkOrLightMode(); // Use owner-draw mode if needed for dark mode or custom text colour MSWMakeOwnerDrawn(wxMSWDarkMode::IsActive() || m_hasFgCol); diff --git a/src/msw/choice.cpp b/src/msw/choice.cpp index 6360925fb3..5f4732e77e 100644 --- a/src/msw/choice.cpp +++ b/src/msw/choice.cpp @@ -223,9 +223,9 @@ void wxChoice::MSWGetDarkModeSupport(MSWDarkModeSupport& support) const support.themeName = L"CFD"; } -void wxChoice::MSWSetDarkOrLightMode(SetMode setmode) +void wxChoice::MSWSetDarkOrLightMode() { - wxChoiceBase::MSWSetDarkOrLightMode(setmode); + wxChoiceBase::MSWSetDarkOrLightMode(); // Update scroll bar. WinStruct info; diff --git a/src/msw/control.cpp b/src/msw/control.cpp index 005fbcc22b..08e087eafa 100644 --- a/src/msw/control.cpp +++ b/src/msw/control.cpp @@ -131,7 +131,7 @@ bool wxControl::MSWCreateControl(const wxChar *classname, } if ( wxMSWDarkMode::IsActive() ) - MSWSetDarkOrLightMode(SetMode::Initial); + MSWSetDarkOrLightMode(); // saving the label in m_labelOrig to return it verbatim // later in GetLabel() @@ -179,9 +179,9 @@ bool wxControl::MSWCreateControl(const wxChar *classname, return true; } -void wxControl::MSWSetDarkOrLightMode(SetMode setmode) +void wxControl::MSWSetDarkOrLightMode() { - wxControlBase::MSWSetDarkOrLightMode(setmode); + wxControlBase::MSWSetDarkOrLightMode(); if ( const int msgTT = MSWGetToolTipMessage() ) { diff --git a/src/msw/gauge.cpp b/src/msw/gauge.cpp index 720198fe72..7284896af7 100644 --- a/src/msw/gauge.cpp +++ b/src/msw/gauge.cpp @@ -108,9 +108,9 @@ void wxGauge::MSWGetDarkModeSupport(MSWDarkModeSupport& support) const wxGaugeBase::MSWGetDarkModeSupport(support); } -void wxGauge::MSWSetDarkOrLightMode(SetMode setmode) +void wxGauge::MSWSetDarkOrLightMode() { - wxGaugeBase::MSWSetDarkOrLightMode(setmode); + wxGaugeBase::MSWSetDarkOrLightMode(); // Adjust colours unless we use DarkMode_DarkTheme in // MSWGetDarkModeSupport(). diff --git a/src/msw/headerctrl.cpp b/src/msw/headerctrl.cpp index 21a590b82b..623c615085 100644 --- a/src/msw/headerctrl.cpp +++ b/src/msw/headerctrl.cpp @@ -94,7 +94,7 @@ protected: virtual void MSWUpdateFontOnDPIChange(const wxSize& newDPI) override; virtual void MSWGetDarkModeSupport(MSWDarkModeSupport& support) const override; - virtual void MSWSetDarkOrLightMode(SetMode setmode) override; + virtual void MSWSetDarkOrLightMode() override; // This function can be used as event handle for wxEVT_DPI_CHANGED event. void WXHandleDPIChanged(wxDPIChangedEvent& event); @@ -245,9 +245,9 @@ void wxMSWHeaderCtrl::MSWGetDarkModeSupport(MSWDarkModeSupport& support) const support.themeName = L"ItemsView"; } -void wxMSWHeaderCtrl::MSWSetDarkOrLightMode(SetMode setmode) +void wxMSWHeaderCtrl::MSWSetDarkOrLightMode() { - wxControl::MSWSetDarkOrLightMode(setmode); + wxControl::MSWSetDarkOrLightMode(); // The Windows native header control does not respond to changes in the // dark/light mode. The text color always stays as it was created. We have diff --git a/src/msw/listctrl.cpp b/src/msw/listctrl.cpp index 6fa73fc7ad..f91cbcad4a 100644 --- a/src/msw/listctrl.cpp +++ b/src/msw/listctrl.cpp @@ -590,9 +590,9 @@ void wxListCtrl::SetWindowStyleFlag(long flag) // accessors // ---------------------------------------------------------------------------- -void wxListCtrl::MSWSetDarkOrLightMode(SetMode setmode) +void wxListCtrl::MSWSetDarkOrLightMode() { - wxListCtrlBase::MSWSetDarkOrLightMode(setmode); + wxListCtrlBase::MSWSetDarkOrLightMode(); // Update header. MSWInitHeader(); diff --git a/src/msw/nonownedwnd.cpp b/src/msw/nonownedwnd.cpp index 43b9d7d7d7..39f2b4e04d 100644 --- a/src/msw/nonownedwnd.cpp +++ b/src/msw/nonownedwnd.cpp @@ -229,9 +229,9 @@ bool wxNonOwnedWindow::IsThisEnabled() const : m_isEnabled; } -void wxNonOwnedWindow::MSWSetDarkOrLightMode(SetMode setmode) +void wxNonOwnedWindow::MSWSetDarkOrLightMode() { - wxNonOwnedWindowBase::MSWSetDarkOrLightMode(setmode); + wxNonOwnedWindowBase::MSWSetDarkOrLightMode(); // Update non-client area wxMSWDarkMode::ConfigureTLW(GetHwnd()); diff --git a/src/msw/notebook.cpp b/src/msw/notebook.cpp index 4b18d8cfbd..89fcf634ff 100644 --- a/src/msw/notebook.cpp +++ b/src/msw/notebook.cpp @@ -253,9 +253,9 @@ WXDWORD wxNotebook::MSWGetStyle(long style, WXDWORD *exstyle) const return tabStyle; } -void wxNotebook::MSWSetDarkOrLightMode(SetMode setmode) +void wxNotebook::MSWSetDarkOrLightMode() { - wxNotebookBase::MSWSetDarkOrLightMode(setmode); + wxNotebookBase::MSWSetDarkOrLightMode(); // Background must always be set, unless there is a custom colour. if ( !m_hasBgCol ) diff --git a/src/msw/radiobut.cpp b/src/msw/radiobut.cpp index 670572f9e0..db66a9c79e 100644 --- a/src/msw/radiobut.cpp +++ b/src/msw/radiobut.cpp @@ -339,9 +339,9 @@ void wxRadioButton::MSWDrawButtonBitmap(wxDC& dc, const wxRect& rect, int flags) wxRendererNative::Get().DrawRadioBitmap(this, dc, rect, flags); } -void wxRadioButton::MSWSetDarkOrLightMode(SetMode setmode) +void wxRadioButton::MSWSetDarkOrLightMode() { - wxRadioButtonBase::MSWSetDarkOrLightMode(setmode); + wxRadioButtonBase::MSWSetDarkOrLightMode(); // Use owner-draw mode if needed for dark mode or custom text colour MSWMakeOwnerDrawn(wxMSWDarkMode::IsActive() || m_hasFgCol); diff --git a/src/msw/spinbutt.cpp b/src/msw/spinbutt.cpp index b2ac022420..44a99f1af2 100644 --- a/src/msw/spinbutt.cpp +++ b/src/msw/spinbutt.cpp @@ -145,7 +145,7 @@ bool wxSpinButton::Create(wxWindow *parent, SetInitialSize(size); if ( wxMSWDarkMode::IsActive() ) - MSWSetDarkOrLightMode(SetMode::Initial); + MSWSetDarkOrLightMode(); return true; } diff --git a/src/msw/statbox.cpp b/src/msw/statbox.cpp index 68a12f3ddf..0ae40fd259 100644 --- a/src/msw/statbox.cpp +++ b/src/msw/statbox.cpp @@ -95,9 +95,9 @@ bool wxStaticBox::Create(wxWindow *parent, return true; } -void wxStaticBox::MSWSetDarkOrLightMode(SetMode setmode) +void wxStaticBox::MSWSetDarkOrLightMode() { - wxStaticBoxBase::MSWSetDarkOrLightMode(setmode); + wxStaticBoxBase::MSWSetDarkOrLightMode(); // Set custom painting because the native control does not support dark mode. // diff --git a/src/msw/statline.cpp b/src/msw/statline.cpp index 5efdffc31e..9d49071266 100644 --- a/src/msw/statline.cpp +++ b/src/msw/statline.cpp @@ -68,9 +68,9 @@ WXDWORD wxStaticLine::MSWGetStyle(long style, WXDWORD *exstyle) const return msStyle ; } -void wxStaticLine::MSWSetDarkOrLightMode(SetMode setmode) +void wxStaticLine::MSWSetDarkOrLightMode() { - wxStaticLineBase::MSWSetDarkOrLightMode(setmode); + wxStaticLineBase::MSWSetDarkOrLightMode(); // Sunken 3D border looks too bright in dark mode as it uses white colour. // Style SS_SUNKEN enables WS_EX_STATICEDGE, so update them both. diff --git a/src/msw/textctrl.cpp b/src/msw/textctrl.cpp index 834dafc6ad..c7db2f05ea 100644 --- a/src/msw/textctrl.cpp +++ b/src/msw/textctrl.cpp @@ -2996,9 +2996,9 @@ void wxTextCtrl::MSWGetDarkModeSupport(MSWDarkModeSupport& support) const wxTextCtrlBase::MSWGetDarkModeSupport(support); } -void wxTextCtrl::MSWSetDarkOrLightMode(SetMode setmode) +void wxTextCtrl::MSWSetDarkOrLightMode() { - wxTextCtrlBase::MSWSetDarkOrLightMode(setmode); + wxTextCtrlBase::MSWSetDarkOrLightMode(); // Update the background for non-rich read-only multiline, unless there // are custom colours. The foreground is updated by @@ -3020,7 +3020,7 @@ void wxTextCtrl::MSWSetDarkOrLightMode(SetMode setmode) // True if we need to update the background colour. bool setBackground = false; - if ( setmode == SetMode::Change ) + if ( wxMSWDarkMode::HasChanged() ) { // Get formatting info for all the text. long sel1, sel2; diff --git a/src/msw/toolbar.cpp b/src/msw/toolbar.cpp index 029dd24403..bbb0cfacfb 100644 --- a/src/msw/toolbar.cpp +++ b/src/msw/toolbar.cpp @@ -719,9 +719,9 @@ WXDWORD wxToolBar::MSWGetStyle(long style, WXDWORD *exstyle) const return msStyle; } -void wxToolBar::MSWSetDarkOrLightMode(SetMode setmode) +void wxToolBar::MSWSetDarkOrLightMode() { - wxToolBarBase::MSWSetDarkOrLightMode(setmode); + wxToolBarBase::MSWSetDarkOrLightMode(); // Update the separator above the toolbar which is drawn partially in // white by default and so looks very ugly in dark mode. diff --git a/src/msw/toplevel.cpp b/src/msw/toplevel.cpp index 3d9e4350a4..2e47071d7a 100644 --- a/src/msw/toplevel.cpp +++ b/src/msw/toplevel.cpp @@ -530,7 +530,7 @@ bool wxTopLevelWindowMSW::Create(wxWindow *parent, MSWUpdateUIState(UIS_INITIALIZE); if ( wxMSWDarkMode::IsActive() ) - MSWSetDarkOrLightMode(SetMode::Initial); + MSWSetDarkOrLightMode(); return true; } diff --git a/src/msw/window.cpp b/src/msw/window.cpp index 8369c60116..5d714dcff0 100644 --- a/src/msw/window.cpp +++ b/src/msw/window.cpp @@ -4148,7 +4148,7 @@ bool wxWindowMSW::MSWCreate(const wxChar *wclass, } if ( wxMSWDarkMode::IsActive() ) - MSWSetDarkOrLightMode(SetMode::Initial); + MSWSetDarkOrLightMode(); SubclassWin(m_hWnd); @@ -4190,7 +4190,7 @@ void wxWindowMSW::MSWGetDarkModeSupport(MSWDarkModeSupport& support) const support.themeName = L"Explorer"; } -void wxWindowMSW::MSWSetDarkOrLightMode(SetMode WXUNUSED(setmode)) +void wxWindowMSW::MSWSetDarkOrLightMode() { const wchar_t* themeName = nullptr; const wchar_t* themeId = nullptr; @@ -5355,7 +5355,7 @@ void wxWindowMSW::SendSysColourChangedEvents() { // Update the parent before the children because they often inherit // parent colors. - MSWSetDarkOrLightMode(SetMode::Change); + MSWSetDarkOrLightMode(); } wxSysColourChangedEvent event;