+// Connect/disconnect style-set
+
+void wxConnectStyleSet(wxWindow* win)
+{
+ if (win->m_wxwindow)
+ g_signal_connect (win->m_wxwindow, "style_set",
+ G_CALLBACK (gtk_window_style_set_callback), win);
+}
+
+void wxDisconnectStyleSet(wxWindow* win)
+{
+ if (win->m_wxwindow)
+ g_signal_handlers_disconnect_by_func (win->m_wxwindow,
+ (gpointer) gtk_window_style_set_callback,
+ win);
+}
+
+// Helper to suspend colour change event event processing while we change a widget's style
+class wxSuspendStyleEvents
+{
+public:
+ wxSuspendStyleEvents(wxWindow* win)
+ {
+ m_win = win;
+ if (win->IsTopLevel())
+ wxDisconnectStyleSet(win);
+ }
+ ~wxSuspendStyleEvents()
+ {
+ if (m_win->IsTopLevel())
+ wxConnectStyleSet(m_win);
+ }
+
+ wxWindow* m_win;
+};
+