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