X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/9fc221aa81a8693f342376f8b65abcb4a97e7875..cb98e78b1e363e70d07360728c49b6dd21f36f7c:/src/gtk/dataview.cpp diff --git a/src/gtk/dataview.cpp b/src/gtk/dataview.cpp index 3bbb38b53b..4bdb669062 100644 --- a/src/gtk/dataview.cpp +++ b/src/gtk/dataview.cpp @@ -231,7 +231,7 @@ public: bool ItemAdded( const wxDataViewItem &parent, const wxDataViewItem &item ); bool ItemDeleted( const wxDataViewItem &parent, const wxDataViewItem &item ); bool ItemChanged( const wxDataViewItem &item ); - bool ValueChanged( const wxDataViewItem &item, unsigned int col ); + bool ValueChanged( const wxDataViewItem &item, unsigned int model_column ); bool Cleared(); bool BeforeReset(); bool AfterReset(); @@ -1490,7 +1490,7 @@ public: virtual bool ItemAdded( const wxDataViewItem &parent, const wxDataViewItem &item ); virtual bool ItemDeleted( const wxDataViewItem &parent, const wxDataViewItem &item ); virtual bool ItemChanged( const wxDataViewItem &item ); - virtual bool ValueChanged( const wxDataViewItem &item, unsigned int col ); + virtual bool ValueChanged( const wxDataViewItem &item, unsigned int model_column ); virtual bool Cleared(); virtual void Resort(); virtual bool BeforeReset(); @@ -1591,7 +1591,7 @@ bool wxGtkDataViewModelNotifier::ItemChanged( const wxDataViewItem &item ) return true; } -bool wxGtkDataViewModelNotifier::ValueChanged( const wxDataViewItem &item, unsigned int model_col ) +bool wxGtkDataViewModelNotifier::ValueChanged( const wxDataViewItem &item, unsigned int model_column ) { GtkWxTreeModel *wxgtk_model = m_internal->GetGtkModel(); wxDataViewCtrl *ctrl = m_internal->GetOwner(); @@ -1601,7 +1601,7 @@ bool wxGtkDataViewModelNotifier::ValueChanged( const wxDataViewItem &item, unsig for (index = 0; index < ctrl->GetColumnCount(); index++) { wxDataViewColumn *column = ctrl->GetColumn( index ); - if (column->GetModelColumn() == model_col) + if (column->GetModelColumn() == model_column) { GtkTreeView *widget = GTK_TREE_VIEW(ctrl->GtkGetTreeView()); GtkTreeViewColumn *gcolumn = GTK_TREE_VIEW_COLUMN(column->GetGtkHandle()); @@ -1624,7 +1624,7 @@ bool wxGtkDataViewModelNotifier::ValueChanged( const wxDataViewItem &item, unsig gtk_widget_queue_draw_area( GTK_WIDGET(widget), cell_area.x - xdiff, ydiff + cell_area.y, cell_area.width, cell_area.height ); - m_internal->ValueChanged( item, model_col ); + m_internal->ValueChanged( item, model_column ); return true; } @@ -2930,6 +2930,22 @@ static void wxGtkTreeCellDataFunc( GtkTreeViewColumn *WXUNUSED(column), cell->SetValue( value ); + // deal with disabled items + bool enabled = wx_model->IsEnabled( item, cell->GetOwner()->GetModelColumn() ); + + // a) this sets the appearance to disabled grey + GValue gvalue = { 0, }; + g_value_init( &gvalue, G_TYPE_BOOLEAN ); + g_value_set_boolean( &gvalue, enabled ); + g_object_set_property( G_OBJECT(renderer), "sensitive", &gvalue ); + g_value_unset( &gvalue ); + + // b) this actually disables the control/renderer + if (enabled) + cell->SetMode( cell->GtkGetMode() ); + else + cell->SetMode( wxDATAVIEW_CELL_INERT ); + // deal with attributes: if the renderer doesn't support them at all, we // don't even need to query the model for them @@ -2947,18 +2963,6 @@ static void wxGtkTreeCellDataFunc( GtkTreeViewColumn *WXUNUSED(column), // else: no custom attributes specified and we're already using the default // ones -- nothing to do - // deal with disabled items - bool enabled = wx_model->IsEnabled( item, cell->GetOwner()->GetModelColumn()); - GValue gvalue = { 0, }; - g_value_init( &gvalue, G_TYPE_BOOLEAN ); - g_value_set_boolean( &gvalue, enabled ); - g_object_set_property( G_OBJECT(renderer), "sensitive", &gvalue ); - g_value_unset( &gvalue ); - - if (enabled) - cell->SetMode( cell->GtkGetMode() ); - else - cell->SetMode( wxDATAVIEW_CELL_INERT ); } } // extern "C" @@ -3701,13 +3705,13 @@ bool wxDataViewCtrlInternal::ItemChanged( const wxDataViewItem &item ) return true; } -bool wxDataViewCtrlInternal::ValueChanged( const wxDataViewItem &item, unsigned int col ) +bool wxDataViewCtrlInternal::ValueChanged( const wxDataViewItem &item, unsigned int view_column ) { wxDataViewEvent event( wxEVT_COMMAND_DATAVIEW_ITEM_VALUE_CHANGED, m_owner->GetId() ); event.SetEventObject( m_owner ); event.SetModel( m_owner->GetModel() ); - event.SetColumn( col ); - event.SetDataViewColumn( GetOwner()->GetColumn(col) ); + event.SetColumn( view_column ); + event.SetDataViewColumn( GetOwner()->GetColumn(view_column) ); event.SetItem( item ); m_owner->HandleWindowEvent( event );