From e2a04e1fd77bb16562c84db89a26aced26b911c0 Mon Sep 17 00:00:00 2001 From: Paul Cornett Date: Sat, 3 Feb 2018 22:30:36 -0800 Subject: [PATCH] Use signal blocking rather than disconnection to temporarily disable events --- src/gtk/dataview.cpp | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/src/gtk/dataview.cpp b/src/gtk/dataview.cpp index 91b7621fde..b677de2b69 100644 --- a/src/gtk/dataview.cpp +++ b/src/gtk/dataview.cpp @@ -4681,7 +4681,8 @@ bool wxDataViewCtrl::Create(wxWindow *parent, PostCreation(size); - GtkEnableSelectionEvents(); + g_signal_connect_after(gtk_tree_view_get_selection(GTK_TREE_VIEW(m_treeview)), + "changed", G_CALLBACK(wxdataview_selection_changed_callback), this); g_signal_connect_after (m_treeview, "row-activated", G_CALLBACK (wxdataview_row_activated_callback), this); @@ -5287,15 +5288,15 @@ void wxDataViewCtrl::DoSetIndent() void wxDataViewCtrl::GtkDisableSelectionEvents() { GtkTreeSelection *selection = gtk_tree_view_get_selection( GTK_TREE_VIEW(m_treeview) ); - g_signal_handlers_disconnect_by_func( selection, - (gpointer) (wxdataview_selection_changed_callback), this); + g_signal_handlers_block_by_func( + selection, (void*)wxdataview_selection_changed_callback, this); } void wxDataViewCtrl::GtkEnableSelectionEvents() { GtkTreeSelection *selection = gtk_tree_view_get_selection( GTK_TREE_VIEW(m_treeview) ); - g_signal_connect_after (selection, "changed", - G_CALLBACK (wxdataview_selection_changed_callback), this); + g_signal_handlers_unblock_by_func( + selection, (void*)wxdataview_selection_changed_callback, this); } // ----------------------------------------------------------------------------