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,37 +2045,25 @@ 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 = NULL;
if (win->m_wxwindow && win->IsTopLevel())
{ {
m_win = win; m_win = win;
if (win->IsTopLevel()) g_signal_handlers_block_by_func(
wxDisconnectStyleSet(win); m_win->m_wxwindow, (void*)gtk_window_style_set_callback, m_win);
}
} }
~wxSuspendStyleEvents() ~wxSuspendStyleEvents()
{ {
if (m_win->IsTopLevel()) if (m_win)
wxConnectStyleSet(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;