block signal handler rather than disconnecting

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@49888 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
Paul Cornett
2007-11-13 05:25:54 +00:00
parent ef8dd4a37c
commit a8eb15f3ff

View File

@@ -2034,11 +2034,8 @@ void gtk_window_style_set_callback( GtkWidget *WXUNUSED(widget),
GtkStyle *previous_style, GtkStyle *previous_style,
wxWindow* win ) wxWindow* win )
{ {
//wxLogDebug(wxT("gtk_window_style_set_callback"));
if (win && previous_style) if (win && previous_style)
{ {
wxString name(win->GetName());
//wxLogDebug(wxT("gtk_window_style_set_callback %s"), name.c_str());
wxSysColourChangedEvent event; wxSysColourChangedEvent event;
event.SetEventObject(win); event.SetEventObject(win);
@@ -2048,40 +2045,28 @@ void gtk_window_style_set_callback( GtkWidget *WXUNUSED(widget),
} // extern "C" } // extern "C"
// 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 // Helper to suspend colour change event event processing while we change a widget's style
class wxSuspendStyleEvents class wxSuspendStyleEvents
{ {
public: public:
wxSuspendStyleEvents(wxWindow* win) wxSuspendStyleEvents(wxWindow* win)
{ {
m_win = win; m_win = NULL;
if (win->IsTopLevel()) if (win->m_wxwindow && win->IsTopLevel())
wxDisconnectStyleSet(win); {
} m_win = win;
~wxSuspendStyleEvents() g_signal_handlers_block_by_func(
{ m_win->m_wxwindow, (void*)gtk_window_style_set_callback, m_win);
if (m_win->IsTopLevel()) }
wxConnectStyleSet(m_win); }
} ~wxSuspendStyleEvents()
{
if (m_win)
g_signal_handlers_unblock_by_func(
m_win->m_wxwindow, (void*)gtk_window_style_set_callback, m_win);
}
wxWindow* m_win; wxWindow* m_win;
}; };
// ---------------------------------------------------------------------------- // ----------------------------------------------------------------------------