Use signal blocking rather than disconnection to temporarily disable events

This commit is contained in:
Paul Cornett
2018-02-03 22:30:36 -08:00
parent c391cfd617
commit e2a04e1fd7

View File

@@ -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);
}
// ----------------------------------------------------------------------------