diff --git a/common/dialogs/panel_color_settings.cpp b/common/dialogs/panel_color_settings.cpp index 18a02bc4ea..888555edab 100644 --- a/common/dialogs/panel_color_settings.cpp +++ b/common/dialogs/panel_color_settings.cpp @@ -79,6 +79,15 @@ void PANEL_COLOR_SETTINGS::OnBtnResetClicked( wxCommandEvent& event ) } +void PANEL_COLOR_SETTINGS::OnLeftDownTheme( wxMouseEvent& event ) +{ + // Lazy rebuild of theme menu to catch any colour theme changes made in other panels + wxString sel = m_cbTheme->GetStringSelection(); + createThemeList( sel ); + + event.Skip(); +} + void PANEL_COLOR_SETTINGS::OnThemeChanged( wxCommandEvent& event ) { int idx = m_cbTheme->GetSelection(); diff --git a/common/dialogs/panel_color_settings.h b/common/dialogs/panel_color_settings.h index cd60f5ff03..d6eb86731f 100644 --- a/common/dialogs/panel_color_settings.h +++ b/common/dialogs/panel_color_settings.h @@ -48,6 +48,7 @@ protected: void OnBtnResetClicked( wxCommandEvent& aEvent ) override; + void OnLeftDownTheme( wxMouseEvent& event ) override; void OnThemeChanged( wxCommandEvent& aEvent ) override; void ShowColorContextMenu( wxMouseEvent& aEvent, int aLayer ); diff --git a/common/dialogs/panel_color_settings_base.cpp b/common/dialogs/panel_color_settings_base.cpp index d3edef7b2b..9d02552cf2 100644 --- a/common/dialogs/panel_color_settings_base.cpp +++ b/common/dialogs/panel_color_settings_base.cpp @@ -90,6 +90,7 @@ PANEL_COLOR_SETTINGS_BASE::PANEL_COLOR_SETTINGS_BASE( wxWindow* parent, wxWindow // Connect Events this->Connect( wxEVT_SIZE, wxSizeEventHandler( PANEL_COLOR_SETTINGS_BASE::OnSize ) ); m_cbTheme->Connect( wxEVT_COMMAND_CHOICE_SELECTED, wxCommandEventHandler( PANEL_COLOR_SETTINGS_BASE::OnThemeChanged ), NULL, this ); + m_cbTheme->Connect( wxEVT_LEFT_DOWN, wxMouseEventHandler( PANEL_COLOR_SETTINGS_BASE::OnLeftDownTheme ), NULL, this ); m_optOverrideColors->Connect( wxEVT_COMMAND_CHECKBOX_CLICKED, wxCommandEventHandler( PANEL_COLOR_SETTINGS_BASE::OnOverrideItemColorsClicked ), NULL, this ); m_btnReset->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( PANEL_COLOR_SETTINGS_BASE::OnBtnResetClicked ), NULL, this ); m_btnOpenFolder->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( PANEL_COLOR_SETTINGS_BASE::OnBtnOpenThemeFolderClicked ), NULL, this ); @@ -100,6 +101,7 @@ PANEL_COLOR_SETTINGS_BASE::~PANEL_COLOR_SETTINGS_BASE() // Disconnect Events this->Disconnect( wxEVT_SIZE, wxSizeEventHandler( PANEL_COLOR_SETTINGS_BASE::OnSize ) ); m_cbTheme->Disconnect( wxEVT_COMMAND_CHOICE_SELECTED, wxCommandEventHandler( PANEL_COLOR_SETTINGS_BASE::OnThemeChanged ), NULL, this ); + m_cbTheme->Disconnect( wxEVT_LEFT_DOWN, wxMouseEventHandler( PANEL_COLOR_SETTINGS_BASE::OnLeftDownTheme ), NULL, this ); m_optOverrideColors->Disconnect( wxEVT_COMMAND_CHECKBOX_CLICKED, wxCommandEventHandler( PANEL_COLOR_SETTINGS_BASE::OnOverrideItemColorsClicked ), NULL, this ); m_btnReset->Disconnect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( PANEL_COLOR_SETTINGS_BASE::OnBtnResetClicked ), NULL, this ); m_btnOpenFolder->Disconnect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( PANEL_COLOR_SETTINGS_BASE::OnBtnOpenThemeFolderClicked ), NULL, this ); diff --git a/common/dialogs/panel_color_settings_base.fbp b/common/dialogs/panel_color_settings_base.fbp index c204ee1e47..7efa2063a9 100644 --- a/common/dialogs/panel_color_settings_base.fbp +++ b/common/dialogs/panel_color_settings_base.fbp @@ -188,6 +188,7 @@ OnThemeChanged + OnLeftDownTheme diff --git a/common/dialogs/panel_color_settings_base.h b/common/dialogs/panel_color_settings_base.h index f4fd4d5313..1fc369b3e2 100644 --- a/common/dialogs/panel_color_settings_base.h +++ b/common/dialogs/panel_color_settings_base.h @@ -50,6 +50,7 @@ class PANEL_COLOR_SETTINGS_BASE : public wxPanel // Virtual event handlers, overide them in your derived class virtual void OnSize( wxSizeEvent& event ) { event.Skip(); } virtual void OnThemeChanged( wxCommandEvent& event ) { event.Skip(); } + virtual void OnLeftDownTheme( wxMouseEvent& event ) { event.Skip(); } virtual void OnOverrideItemColorsClicked( wxCommandEvent& event ) { event.Skip(); } virtual void OnBtnResetClicked( wxCommandEvent& event ) { event.Skip(); } virtual void OnBtnOpenThemeFolderClicked( wxCommandEvent& event ) { event.Skip(); }