Merge miscellaneous wxDataViewCtrl-related bug fixes

Make it possible to define custom renderers using text controls reacting to
error presses in at least wxMSW and wxGTK.

Closes https://github.com/wxWidgets/wxWidgets/pull/221
This commit is contained in:
Vadim Zeitlin
2016-02-27 18:06:13 +01:00
17 changed files with 261 additions and 85 deletions

View File

@@ -1749,20 +1749,11 @@ bool wxGtkDataViewModelNotifier::Cleared()
// wxDataViewRenderer
// ---------------------------------------------------------
static gpointer s_user_data = NULL;
static void
wxgtk_cell_editable_editing_done( GtkCellEditable *WXUNUSED(editable),
wxDataViewRenderer *wxrenderer )
{
wxDataViewColumn *column = wxrenderer->GetOwner();
wxDataViewCtrl *dv = column->GetOwner();
wxDataViewEvent event( wxEVT_DATAVIEW_ITEM_EDITING_DONE, dv->GetId() );
event.SetDataViewColumn( column );
event.SetModel( dv->GetModel() );
wxDataViewItem item( s_user_data );
event.SetItem( item );
dv->HandleWindowEvent( event );
wxrenderer->FinishEditing();
}
static void
@@ -1774,17 +1765,11 @@ wxgtk_renderer_editing_started( GtkCellRenderer *WXUNUSED(cell), GtkCellEditable
wxDataViewColumn *column = wxrenderer->GetOwner();
wxDataViewCtrl *dv = column->GetOwner();
wxDataViewEvent event( wxEVT_DATAVIEW_ITEM_EDITING_STARTED, dv->GetId() );
event.SetDataViewColumn( column );
event.SetModel( dv->GetModel() );
wxDataViewItem item(dv->GTKPathToItem(wxGtkTreePath(path)));
event.SetItem( item );
dv->HandleWindowEvent( event );
wxrenderer->NotifyEditingStarted(item);
if (GTK_IS_CELL_EDITABLE(editable))
{
s_user_data = item.GetID();
g_signal_connect (editable, "editing_done",
G_CALLBACK (wxgtk_cell_editable_editing_done),
(gpointer) wxrenderer );