diff --git a/include/wx/dataview.h b/include/wx/dataview.h index b709434aba..5cebecc126 100644 --- a/include/wx/dataview.h +++ b/include/wx/dataview.h @@ -769,25 +769,32 @@ protected: class WXDLLIMPEXP_ADV wxDataViewEvent : public wxNotifyEvent { public: - wxDataViewEvent(wxEventType commandType = wxEVT_NULL, int winid = 0) - : wxNotifyEvent(commandType, winid), - m_item(0), - m_col(-1), - m_model(NULL), - m_value(wxNullVariant), - m_column(NULL), - m_pos(-1,-1), - m_cacheFrom(0), - m_cacheTo(0), - m_editCancelled(false) -#if wxUSE_DRAG_AND_DROP - , m_dataObject(NULL), - m_dataBuffer(NULL), - m_dataSize(0), - m_dragFlags(0), - m_dropEffect(wxDragNone) -#endif - { } + // Default ctor, normally shouldn't be used and mostly exists only for + // backwards compatibility. + wxDataViewEvent() + : wxNotifyEvent() + { + Init(NULL, NULL, wxDataViewItem()); + } + + // Constructor for the events affecting columns (and possibly also items). + wxDataViewEvent(wxEventType evtType, + wxDataViewCtrlBase* dvc, + wxDataViewColumn* column, + const wxDataViewItem& item = wxDataViewItem()) + : wxNotifyEvent(evtType, dvc->GetId()) + { + Init(dvc, column, item); + } + + // Constructor for the events affecting only the items. + wxDataViewEvent(wxEventType evtType, + wxDataViewCtrlBase* dvc, + const wxDataViewItem& item) + : wxNotifyEvent(evtType, dvc->GetId()) + { + Init(dvc, NULL, item); + } wxDataViewEvent(const wxDataViewEvent& event) : wxNotifyEvent(event), @@ -811,13 +818,8 @@ public: { } wxDataViewItem GetItem() const { return m_item; } - void SetItem( const wxDataViewItem &item ) { m_item = item; } - int GetColumn() const { return m_col; } - void SetColumn( int col ) { m_col = col; } - wxDataViewModel* GetModel() const { return m_model; } - void SetModel( wxDataViewModel *model ) { m_model = model; } const wxVariant &GetValue() const { return m_value; } void SetValue( const wxVariant &value ) { m_value = value; } @@ -827,7 +829,6 @@ public: void SetEditCanceled(bool editCancelled) { m_editCancelled = editCancelled; } // for wxEVT_DATAVIEW_COLUMN_HEADER_CLICKED only - void SetDataViewColumn( wxDataViewColumn *col ) { m_column = col; } wxDataViewColumn *GetDataViewColumn() const { return m_column; } // for wxEVT_DATAVIEW_CONTEXT_MENU only @@ -860,6 +861,20 @@ public: virtual wxEvent *Clone() const wxOVERRIDE { return new wxDataViewEvent(*this); } + // These methods shouldn't be used outside of wxWidgets and wxWidgets + // itself doesn't use them any longer neither as it constructs the events + // with the appropriate ctors directly. +#if WXWIN_COMPATIBILITY_3_0 + wxDEPRECATED_MSG("Pass the argument to the ctor instead") + void SetModel( wxDataViewModel *model ) { m_model = model; } + wxDEPRECATED_MSG("Pass the argument to the ctor instead") + void SetDataViewColumn( wxDataViewColumn *col ) { m_column = col; } + wxDEPRECATED_MSG("Pass the argument to the ctor instead") + void SetColumn( int col ) { m_col = col; } + wxDEPRECATED_MSG("Pass the argument to the ctor instead") + void SetItem( const wxDataViewItem &item ) { m_item = item; } +#endif // WXWIN_COMPATIBILITY_3_0 + protected: wxDataViewItem m_item; int m_col; @@ -883,6 +898,11 @@ protected: #endif // wxUSE_DRAG_AND_DROP private: + // Common part of non-copy ctors. + void Init(wxDataViewCtrlBase* dvc, + wxDataViewColumn* column, + const wxDataViewItem& item); + wxDECLARE_DYNAMIC_CLASS_NO_ASSIGN(wxDataViewEvent); }; diff --git a/src/common/datavcmn.cpp b/src/common/datavcmn.cpp index 7fa71bab38..1d9ee90af5 100644 --- a/src/common/datavcmn.cpp +++ b/src/common/datavcmn.cpp @@ -669,16 +669,13 @@ wxDataViewCtrl* wxDataViewRendererBase::GetView() const bool wxDataViewRendererBase::StartEditing( const wxDataViewItem &item, wxRect labelRect ) { - wxDataViewCtrl* dv_ctrl = GetOwner()->GetOwner(); + wxDataViewColumn* const column = GetOwner(); + wxDataViewCtrl* const dv_ctrl = column->GetOwner(); // Before doing anything we send an event asking if editing of this item is really wanted. - wxDataViewEvent start_event( wxEVT_DATAVIEW_ITEM_START_EDITING, dv_ctrl->GetId() ); - start_event.SetDataViewColumn( GetOwner() ); - start_event.SetModel( dv_ctrl->GetModel() ); - start_event.SetItem( item ); - start_event.SetEventObject( dv_ctrl ); - dv_ctrl->GetEventHandler()->ProcessEvent( start_event ); - if( !start_event.IsAllowed() ) + wxDataViewEvent event(wxEVT_DATAVIEW_ITEM_START_EDITING, dv_ctrl, column, item); + dv_ctrl->GetEventHandler()->ProcessEvent( event ); + if( !event.IsAllowed() ) return false; unsigned int col = GetOwner()->GetModelColumn(); @@ -712,11 +709,7 @@ void wxDataViewRendererBase::NotifyEditingStarted(const wxDataViewItem& item) wxDataViewColumn* const column = GetOwner(); wxDataViewCtrl* const dv_ctrl = column->GetOwner(); - wxDataViewEvent event( wxEVT_DATAVIEW_ITEM_EDITING_STARTED, dv_ctrl->GetId() ); - event.SetDataViewColumn( column ); - event.SetModel( dv_ctrl->GetModel() ); - event.SetItem( item ); - event.SetEventObject( dv_ctrl ); + wxDataViewEvent event(wxEVT_DATAVIEW_ITEM_EDITING_STARTED, dv_ctrl, column, item); dv_ctrl->GetEventHandler()->ProcessEvent( event ); } @@ -756,7 +749,8 @@ bool wxDataViewRendererBase::FinishEditing() wxVariant value; const bool gotValue = GetValueFromEditorCtrl(m_editorCtrl, value); - wxDataViewCtrl* dv_ctrl = GetOwner()->GetOwner(); + wxDataViewColumn* const column = GetOwner(); + wxDataViewCtrl* const dv_ctrl = column->GetOwner(); DestroyEditControl(); @@ -769,14 +763,9 @@ bool wxDataViewRendererBase::FinishEditing() unsigned int col = GetOwner()->GetModelColumn(); // Now we should send Editing Done event - wxDataViewEvent event( wxEVT_DATAVIEW_ITEM_EDITING_DONE, dv_ctrl->GetId() ); - event.SetDataViewColumn( GetOwner() ); - event.SetModel( dv_ctrl->GetModel() ); - event.SetItem( m_item ); + wxDataViewEvent event(wxEVT_DATAVIEW_ITEM_EDITING_DONE, dv_ctrl, column, m_item); event.SetValue( value ); - event.SetColumn( col ); event.SetEditCanceled( !isValid ); - event.SetEventObject( dv_ctrl ); dv_ctrl->GetEventHandler()->ProcessEvent( event ); bool accepted = false; @@ -1591,6 +1580,29 @@ wxDEFINE_EVENT( wxEVT_DATAVIEW_ITEM_BEGIN_DRAG, wxDataViewEvent ); wxDEFINE_EVENT( wxEVT_DATAVIEW_ITEM_DROP_POSSIBLE, wxDataViewEvent ); wxDEFINE_EVENT( wxEVT_DATAVIEW_ITEM_DROP, wxDataViewEvent ); +// Common part of non-copy ctors. +void wxDataViewEvent::Init(wxDataViewCtrlBase* dvc, + wxDataViewColumn* column, + const wxDataViewItem& item) +{ + m_item = item; + m_col = column ? column->GetModelColumn() : -1; + m_model = dvc->GetModel(); + m_column = column; + m_pos = wxDefaultPosition; + m_cacheFrom = 0; + m_cacheTo = 0; + m_editCancelled = false; +#if wxUSE_DRAG_AND_DROP + m_dataObject = NULL; + m_dataBuffer = NULL; + m_dataSize = 0; + m_dragFlags = 0; + m_dropEffect = wxDragNone; +#endif // wxUSE_DRAG_AND_DROP + + SetEventObject(dvc); +} #if wxUSE_SPINCTRL diff --git a/src/generic/datavgen.cpp b/src/generic/datavgen.cpp index a9273594e6..e1a3861b89 100644 --- a/src/generic/datavgen.cpp +++ b/src/generic/datavgen.cpp @@ -293,12 +293,7 @@ private: bool SendEvent(wxEventType type, unsigned int n) { wxDataViewCtrl * const owner = GetOwner(); - wxDataViewEvent event(type, owner->GetId()); - - event.SetEventObject(owner); - event.SetColumn(n); - event.SetDataViewColumn(owner->GetColumn(n)); - event.SetModel(owner->GetModel()); + wxDataViewEvent event(type, owner, owner->GetColumn(n)); // for events created by wxDataViewHeaderWindow the // row / value fields are not valid @@ -1658,12 +1653,7 @@ wxDragResult wxDataViewMainWindow::OnDragOver( wxDataFormat format, wxCoord x, if ( row < GetRowCount() && xx <= GetEndOfLastCol() ) item = GetItemByRow( row ); - wxDataViewModel *model = GetModel(); - - wxDataViewEvent event( wxEVT_DATAVIEW_ITEM_DROP_POSSIBLE, m_owner->GetId() ); - event.SetEventObject( m_owner ); - event.SetItem( item ); - event.SetModel( model ); + wxDataViewEvent event(wxEVT_DATAVIEW_ITEM_DROP_POSSIBLE, m_owner, item); event.SetDataFormat( format ); event.SetDropEffect( def ); if ( !m_owner->HandleWindowEvent( event ) || !event.IsAllowed() ) @@ -1702,12 +1692,7 @@ bool wxDataViewMainWindow::OnDrop( wxDataFormat format, wxCoord x, wxCoord y ) if ( row < GetRowCount() && xx <= GetEndOfLastCol()) item = GetItemByRow( row ); - wxDataViewModel *model = GetModel(); - - wxDataViewEvent event( wxEVT_DATAVIEW_ITEM_DROP_POSSIBLE, m_owner->GetId() ); - event.SetEventObject( m_owner ); - event.SetItem( item ); - event.SetModel( model ); + wxDataViewEvent event(wxEVT_DATAVIEW_ITEM_DROP_POSSIBLE, m_owner, item); event.SetDataFormat( format ); if (!m_owner->HandleWindowEvent( event ) || !event.IsAllowed()) return false; @@ -1728,14 +1713,9 @@ wxDragResult wxDataViewMainWindow::OnData( wxDataFormat format, wxCoord x, wxCoo if ( row < GetRowCount() && xx <= GetEndOfLastCol() ) item = GetItemByRow( row ); - wxDataViewModel *model = GetModel(); - wxCustomDataObject *obj = (wxCustomDataObject *) GetDropTarget()->GetDataObject(); - wxDataViewEvent event( wxEVT_DATAVIEW_ITEM_DROP, m_owner->GetId() ); - event.SetEventObject( m_owner ); - event.SetItem( item ); - event.SetModel( model ); + wxDataViewEvent event(wxEVT_DATAVIEW_ITEM_DROP, m_owner, item); event.SetDataFormat( format ); event.SetDataSize( obj->GetSize() ); event.SetDataBuffer( obj->GetData() ); @@ -1851,11 +1831,9 @@ void wxDataViewMainWindow::OnPaint( wxPaintEvent &WXUNUSED(event) ) unsigned int item_last = item_start + item_count; // Send the event to wxDataViewCtrl itself. - wxWindow * const parent = GetParent(); - wxDataViewEvent cache_event(wxEVT_DATAVIEW_CACHE_HINT, parent->GetId()); - cache_event.SetEventObject(parent); + wxDataViewEvent cache_event(wxEVT_DATAVIEW_CACHE_HINT, m_owner, NULL); cache_event.SetCache(item_start, item_last - 1); - parent->ProcessWindowEvent(cache_event); + m_owner->ProcessWindowEvent(cache_event); // compute which columns needs to be redrawn unsigned int cols = GetOwner()->GetColumnCount(); @@ -2537,12 +2515,8 @@ bool wxDataViewMainWindow::ItemChanged(const wxDataViewItem & item) GetOwner()->InvalidateColBestWidths(); // Send event - wxWindow *parent = GetParent(); - wxDataViewEvent le(wxEVT_DATAVIEW_ITEM_VALUE_CHANGED, parent->GetId()); - le.SetEventObject(parent); - le.SetModel(GetModel()); - le.SetItem(item); - parent->ProcessWindowEvent(le); + wxDataViewEvent le(wxEVT_DATAVIEW_ITEM_VALUE_CHANGED, m_owner, item); + m_owner->ProcessWindowEvent(le); return true; } @@ -2568,14 +2542,9 @@ bool wxDataViewMainWindow::ValueChanged( const wxDataViewItem & item, unsigned i GetOwner()->InvalidateColBestWidth(view_column); // Send event - wxWindow *parent = GetParent(); - wxDataViewEvent le(wxEVT_DATAVIEW_ITEM_VALUE_CHANGED, parent->GetId()); - le.SetEventObject(parent); - le.SetModel(GetModel()); - le.SetItem(item); - le.SetColumn(view_column); - le.SetDataViewColumn(GetOwner()->GetColumn(view_column)); - parent->ProcessWindowEvent(le); + wxDataViewColumn* const column = m_owner->GetColumn(view_column); + wxDataViewEvent le(wxEVT_DATAVIEW_ITEM_VALUE_CHANGED, m_owner, column, item); + m_owner->ProcessWindowEvent(le); return true; } @@ -2824,14 +2793,8 @@ bool wxDataViewMainWindow::IsRowSelected( unsigned int row ) void wxDataViewMainWindow::SendSelectionChangedEvent( const wxDataViewItem& item) { - wxWindow *parent = GetParent(); - wxDataViewEvent le(wxEVT_DATAVIEW_SELECTION_CHANGED, parent->GetId()); - - le.SetEventObject(parent); - le.SetModel(GetModel()); - le.SetItem( item ); - - parent->ProcessWindowEvent(le); + wxDataViewEvent le(wxEVT_DATAVIEW_SELECTION_CHANGED, m_owner, item); + m_owner->ProcessWindowEvent(le); } void wxDataViewMainWindow::RefreshRow( unsigned int row ) @@ -3122,14 +3085,8 @@ bool wxDataViewMainWindow::SendExpanderEvent(wxEventType type, const wxDataViewItem& item) { - wxWindow *parent = GetParent(); - wxDataViewEvent le(type, parent->GetId()); - - le.SetEventObject(parent); - le.SetModel(GetModel()); - le.SetItem( item ); - - return !parent->ProcessWindowEvent(le) || le.IsAllowed(); + wxDataViewEvent le(type, m_owner, item); + return !m_owner->ProcessWindowEvent(le) || le.IsAllowed(); } bool wxDataViewMainWindow::IsExpanded( unsigned int row ) const @@ -3709,13 +3666,8 @@ void wxDataViewMainWindow::OnChar( wxKeyEvent &event ) const wxDataViewItem item = GetItemByRow(m_currentRow); - wxDataViewEvent le(wxEVT_DATAVIEW_ITEM_ACTIVATED, - parent->GetId()); - le.SetItem(item); - le.SetEventObject(parent); - le.SetModel(GetModel()); - - if ( parent->ProcessWindowEvent(le) ) + wxDataViewEvent le(wxEVT_DATAVIEW_ITEM_ACTIVATED, m_owner, item); + if ( m_owner->ProcessWindowEvent(le) ) break; // else: fall through to WXK_SPACE handling } @@ -4121,19 +4073,8 @@ void wxDataViewMainWindow::OnMouse( wxMouseEvent &event ) // the other ones. if (event.RightUp()) { - wxWindow *parent = GetParent(); - wxDataViewEvent le(wxEVT_DATAVIEW_ITEM_CONTEXT_MENU, parent->GetId()); - le.SetEventObject(parent); - le.SetModel(model); - - if ( item.IsOk() && col ) - { - le.SetItem( item ); - le.SetColumn( col->GetModelColumn() ); - le.SetDataViewColumn( col ); - } - - parent->ProcessWindowEvent(le); + wxDataViewEvent le(wxEVT_DATAVIEW_ITEM_CONTEXT_MENU, m_owner, col, item); + m_owner->ProcessWindowEvent(le); return; } @@ -4162,10 +4103,7 @@ void wxDataViewMainWindow::OnMouse( wxMouseEvent &event ) wxDataViewItem itemDragged = GetItemByRow( drag_item_row ); // Notify cell about drag - wxDataViewEvent evt( wxEVT_DATAVIEW_ITEM_BEGIN_DRAG, m_owner->GetId() ); - evt.SetEventObject( m_owner ); - evt.SetItem( itemDragged ); - evt.SetModel( model ); + wxDataViewEvent evt(wxEVT_DATAVIEW_ITEM_BEGIN_DRAG, m_owner, itemDragged); if (!m_owner->HandleWindowEvent( evt )) return; @@ -4279,15 +4217,8 @@ void wxDataViewMainWindow::OnMouse( wxMouseEvent &event ) { if ( !hoverOverExpander && (current == m_lineLastClicked) ) { - wxWindow *parent = GetParent(); - wxDataViewEvent le(wxEVT_DATAVIEW_ITEM_ACTIVATED, parent->GetId()); - le.SetItem( item ); - le.SetColumn( col->GetModelColumn() ); - le.SetDataViewColumn( col ); - le.SetEventObject(parent); - le.SetModel(GetModel()); - - if ( parent->ProcessWindowEvent(le) ) + wxDataViewEvent le(wxEVT_DATAVIEW_ITEM_ACTIVATED, m_owner, col, item); + if ( m_owner->ProcessWindowEvent(le) ) { // Item activation was handled from the user code. return; diff --git a/src/gtk/dataview.cpp b/src/gtk/dataview.cpp index 7b73d1a9ba..4e04d7994e 100644 --- a/src/gtk/dataview.cpp +++ b/src/gtk/dataview.cpp @@ -979,9 +979,8 @@ wxgtk_tree_model_set_sort_column_id (GtkTreeSortable *sortable, if (gs_lastLeftClickHeader) { wxDataViewCtrl *dv = tree_model->internal->GetOwner(); - wxDataViewEvent event( wxEVT_DATAVIEW_COLUMN_SORTED, dv->GetId() ); - event.SetDataViewColumn( gs_lastLeftClickHeader ); - event.SetModel( dv->GetModel() ); + wxDataViewEvent + event(wxEVT_DATAVIEW_COLUMN_SORTED, dv, gs_lastLeftClickHeader); dv->HandleWindowEvent( event ); } @@ -1129,11 +1128,7 @@ static GtkCellEditable *gtk_wx_cell_renderer_text_start_editing( item(column->GetOwner()->GTKPathToItem(wxGtkTreePath(path))); wxDataViewCtrl *dv = column->GetOwner(); - wxDataViewEvent event( wxEVT_DATAVIEW_ITEM_START_EDITING, dv->GetId() ); - event.SetDataViewColumn( column ); - event.SetModel( dv->GetModel() ); - event.SetColumn( column->GetModelColumn() ); - event.SetItem( item ); + wxDataViewEvent event(wxEVT_DATAVIEW_ITEM_START_EDITING, dv, column, item); dv->HandleWindowEvent( event ); if (event.IsAllowed()) @@ -3002,9 +2997,7 @@ gtk_dataview_header_button_press_callback( GtkWidget *WXUNUSED(widget), gs_lastLeftClickHeader = column; wxDataViewCtrl *dv = column->GetOwner(); - wxDataViewEvent event( wxEVT_DATAVIEW_COLUMN_HEADER_CLICK, dv->GetId() ); - event.SetDataViewColumn( column ); - event.SetModel( dv->GetModel() ); + wxDataViewEvent event(wxEVT_DATAVIEW_COLUMN_HEADER_CLICK, dv, column); if (dv->HandleWindowEvent( event )) return FALSE; } @@ -3012,9 +3005,8 @@ gtk_dataview_header_button_press_callback( GtkWidget *WXUNUSED(widget), if (gdk_event->button == 3) { wxDataViewCtrl *dv = column->GetOwner(); - wxDataViewEvent event( wxEVT_DATAVIEW_COLUMN_HEADER_RIGHT_CLICK, dv->GetId() ); - event.SetDataViewColumn( column ); - event.SetModel( dv->GetModel() ); + wxDataViewEvent + event(wxEVT_DATAVIEW_COLUMN_HEADER_RIGHT_CLICK, dv, column); if (dv->HandleWindowEvent( event )) return FALSE; } @@ -3605,14 +3597,12 @@ gboolean wxDataViewCtrlInternal::row_draggable( GtkTreeDragSource *WXUNUSED(drag delete m_dragDataObject; m_dragDataObject = NULL; - wxDataViewItem item(GetOwner()->GTKPathToItem(path)); + wxDataViewCtrl* const dvc = GetOwner(); + wxDataViewItem item(dvc->GTKPathToItem(path)); if ( !item ) return FALSE; - wxDataViewEvent event( wxEVT_DATAVIEW_ITEM_BEGIN_DRAG, m_owner->GetId() ); - event.SetEventObject( m_owner ); - event.SetItem( item ); - event.SetModel( m_wx_model ); + wxDataViewEvent event(wxEVT_DATAVIEW_ITEM_BEGIN_DRAG, dvc, item); gint x, y; gtk_widget_get_pointer(m_owner->GtkGetTreeView(), &x, &y); event.SetPosition(x, y); @@ -3676,10 +3666,7 @@ wxDataViewCtrlInternal::drag_data_received(GtkTreeDragDest *WXUNUSED(drag_dest), { wxDataViewItem item(GetOwner()->GTKPathToItem(path)); - wxDataViewEvent event( wxEVT_DATAVIEW_ITEM_DROP, m_owner->GetId() ); - event.SetEventObject( m_owner ); - event.SetItem( item ); - event.SetModel( m_wx_model ); + wxDataViewEvent event(wxEVT_DATAVIEW_ITEM_DROP, m_owner, item); event.SetDataFormat(gtk_selection_data_get_target(selection_data)); event.SetDataSize(gtk_selection_data_get_length(selection_data)); event.SetDataBuffer(const_cast(gtk_selection_data_get_data(selection_data))); @@ -3699,10 +3686,7 @@ wxDataViewCtrlInternal::row_drop_possible(GtkTreeDragDest *WXUNUSED(drag_dest), { wxDataViewItem item(GetOwner()->GTKPathToItem(path)); - wxDataViewEvent event( wxEVT_DATAVIEW_ITEM_DROP_POSSIBLE, m_owner->GetId() ); - event.SetEventObject( m_owner ); - event.SetItem( item ); - event.SetModel( m_wx_model ); + wxDataViewEvent event(wxEVT_DATAVIEW_ITEM_DROP_POSSIBLE, m_owner, item); event.SetDataFormat(gtk_selection_data_get_target(selection_data)); event.SetDataSize(gtk_selection_data_get_length(selection_data)); if (!m_owner->HandleWindowEvent( event )) @@ -3822,10 +3806,7 @@ bool wxDataViewCtrlInternal::ItemDeleted( const wxDataViewItem &parent, const wx bool wxDataViewCtrlInternal::ItemChanged( const wxDataViewItem &item ) { - wxDataViewEvent event( wxEVT_DATAVIEW_ITEM_VALUE_CHANGED, m_owner->GetId() ); - event.SetEventObject( m_owner ); - event.SetModel( m_owner->GetModel() ); - event.SetItem( item ); + wxDataViewEvent event(wxEVT_DATAVIEW_ITEM_VALUE_CHANGED, m_owner, item); m_owner->HandleWindowEvent( event ); return true; @@ -3833,12 +3814,9 @@ bool wxDataViewCtrlInternal::ItemChanged( const wxDataViewItem &item ) bool wxDataViewCtrlInternal::ValueChanged( const wxDataViewItem &item, unsigned int view_column ) { - wxDataViewEvent event( wxEVT_DATAVIEW_ITEM_VALUE_CHANGED, m_owner->GetId() ); - event.SetEventObject( m_owner ); - event.SetModel( m_owner->GetModel() ); - event.SetColumn( view_column ); - event.SetDataViewColumn( GetOwner()->GetColumn(view_column) ); - event.SetItem( item ); + wxDataViewColumn* const column = m_owner->GetColumn(view_column); + wxDataViewEvent + event(wxEVT_DATAVIEW_ITEM_VALUE_CHANGED, m_owner, column, item); m_owner->HandleWindowEvent( event ); return true; @@ -4371,10 +4349,8 @@ wxdataview_selection_changed_callback( GtkTreeSelection* WXUNUSED(selection), wx if (!gtk_widget_get_realized(dv->m_widget)) return; - wxDataViewEvent event( wxEVT_DATAVIEW_SELECTION_CHANGED, dv->GetId() ); - event.SetEventObject( dv ); - event.SetItem( dv->GetSelection() ); - event.SetModel( dv->GetModel() ); + wxDataViewEvent + event(wxEVT_DATAVIEW_SELECTION_CHANGED, dv, dv->GetSelection()); dv->HandleWindowEvent( event ); } @@ -4382,11 +4358,8 @@ static void wxdataview_row_activated_callback( GtkTreeView* WXUNUSED(treeview), GtkTreePath *path, GtkTreeViewColumn *WXUNUSED(column), wxDataViewCtrl *dv ) { - wxDataViewEvent event( wxEVT_DATAVIEW_ITEM_ACTIVATED, dv->GetId() ); - wxDataViewItem item(dv->GTKPathToItem(path)); - event.SetItem( item ); - event.SetModel( dv->GetModel() ); + wxDataViewEvent event(wxEVT_DATAVIEW_ITEM_ACTIVATED, dv, item); dv->HandleWindowEvent( event ); } @@ -4394,11 +4367,8 @@ static gboolean wxdataview_test_expand_row_callback( GtkTreeView* WXUNUSED(treeview), GtkTreeIter* iter, GtkTreePath *WXUNUSED(path), wxDataViewCtrl *dv ) { - wxDataViewEvent event( wxEVT_DATAVIEW_ITEM_EXPANDING, dv->GetId() ); - - wxDataViewItem item( (void*) iter->user_data );; - event.SetItem( item ); - event.SetModel( dv->GetModel() ); + wxDataViewItem item( (void*) iter->user_data ); + wxDataViewEvent event(wxEVT_DATAVIEW_ITEM_EXPANDING, dv, item); dv->HandleWindowEvent( event ); return !event.IsAllowed(); @@ -4408,11 +4378,8 @@ static void wxdataview_row_expanded_callback( GtkTreeView* WXUNUSED(treeview), GtkTreeIter* iter, GtkTreePath *WXUNUSED(path), wxDataViewCtrl *dv ) { - wxDataViewEvent event( wxEVT_DATAVIEW_ITEM_EXPANDED, dv->GetId() ); - - wxDataViewItem item( (void*) iter->user_data );; - event.SetItem( item ); - event.SetModel( dv->GetModel() ); + wxDataViewItem item( (void*) iter->user_data ); + wxDataViewEvent event(wxEVT_DATAVIEW_ITEM_EXPANDED, dv, item); dv->HandleWindowEvent( event ); } @@ -4420,11 +4387,8 @@ static gboolean wxdataview_test_collapse_row_callback( GtkTreeView* WXUNUSED(treeview), GtkTreeIter* iter, GtkTreePath *WXUNUSED(path), wxDataViewCtrl *dv ) { - wxDataViewEvent event( wxEVT_DATAVIEW_ITEM_COLLAPSING, dv->GetId() ); - - wxDataViewItem item( (void*) iter->user_data );; - event.SetItem( item ); - event.SetModel( dv->GetModel() ); + wxDataViewItem item( (void*) iter->user_data ); + wxDataViewEvent event(wxEVT_DATAVIEW_ITEM_COLLAPSING, dv, item); dv->HandleWindowEvent( event ); return !event.IsAllowed(); @@ -4434,11 +4398,8 @@ static void wxdataview_row_collapsed_callback( GtkTreeView* WXUNUSED(treeview), GtkTreeIter* iter, GtkTreePath *WXUNUSED(path), wxDataViewCtrl *dv ) { - wxDataViewEvent event( wxEVT_DATAVIEW_ITEM_COLLAPSED, dv->GetId() ); - - wxDataViewItem item( (void*) iter->user_data );; - event.SetItem( item ); - event.SetModel( dv->GetModel() ); + wxDataViewItem item( (void*) iter->user_data ); + wxDataViewEvent event(wxEVT_DATAVIEW_ITEM_COLLAPSED, dv, item); dv->HandleWindowEvent( event ); } @@ -4531,10 +4492,8 @@ gtk_dataview_button_press_callback( GtkWidget *WXUNUSED(widget), gtk_tree_selection_select_path(selection, path); } - wxDataViewEvent event( wxEVT_DATAVIEW_ITEM_CONTEXT_MENU, dv->GetId() ); - if (path) - event.SetItem(dv->GTKPathToItem(path)); - event.SetModel( dv->GetModel() ); + wxDataViewEvent + event(wxEVT_DATAVIEW_ITEM_CONTEXT_MENU, dv, dv->GTKPathToItem(path)); return dv->HandleWindowEvent( event ); } diff --git a/src/osx/cocoa/dataview.mm b/src/osx/cocoa/dataview.mm index 2ae7076d14..c4240a3435 100644 --- a/src/osx/cocoa/dataview.mm +++ b/src/osx/cocoa/dataview.mm @@ -544,10 +544,7 @@ outlineView:(NSOutlineView*)outlineView wxCHECK_MSG( dvc->GetModel(), false, "Pointer to model not set correctly." ); - wxDataViewEvent event(wxEVT_DATAVIEW_ITEM_DROP, dvc->GetId()); - event.SetEventObject(dvc); - event.SetItem(wxDataViewItemFromItem(item)); - event.SetModel(dvc->GetModel()); + wxDataViewEvent event(wxEVT_DATAVIEW_ITEM_DROP, dvc, wxDataViewItemFromItem(item)); BOOL dragSuccessful = false; if ( [bestType compare:DataViewPboardType] == NSOrderedSame ) @@ -755,16 +752,10 @@ outlineView:(NSOutlineView*)outlineView // send first the event to wxWidgets that the sorting has changed so that // the program can do special actions before the sorting actually starts: - wxDataViewEvent event(wxEVT_DATAVIEW_COLUMN_SORTED,dvc->GetId()); // variable definition - - event.SetEventObject(dvc); - if (noOfDescriptors > 0) - { - wxDataViewColumn* const col = [[wxSortDescriptors objectAtIndex:0] columnPtr]; - - event.SetColumn(dvc->GetColumnPosition(col)); - event.SetDataViewColumn(col); - } + wxDataViewColumn* const col = noOfDescriptors > 0 + ? [[wxSortDescriptors objectAtIndex:0] columnPtr] + : NULL; + wxDataViewEvent event(wxEVT_DATAVIEW_COLUMN_SORTED, dvc, col); dvc->GetEventHandler()->ProcessEvent(event); // start re-ordering the data; @@ -793,12 +784,7 @@ outlineView:(NSOutlineView*)outlineView wxCHECK_MSG(dvc, false, "Pointer to data view control not set correctly."); wxCHECK_MSG(dvc->GetModel(), false, "Pointer to model not set correctly."); - wxDataViewEvent - event(wxEVT_DATAVIEW_ITEM_DROP_POSSIBLE,dvc->GetId()); - - event.SetEventObject(dvc); - event.SetItem(wxDataViewItemFromItem(item)); - event.SetModel(dvc->GetModel()); + wxDataViewEvent event(wxEVT_DATAVIEW_ITEM_DROP_POSSIBLE, dvc, wxDataViewItemFromItem(item)); if ([bestType compare:DataViewPboardType] == NSOrderedSame) { NSArray* dataArray((NSArray*)[pasteboard propertyListForType:DataViewPboardType]); @@ -898,22 +884,16 @@ outlineView:(NSOutlineView*)outlineView // send a begin drag event for all selected items and proceed with // dragging unless the event is vetoed: - wxDataViewEvent - event(wxEVT_DATAVIEW_ITEM_BEGIN_DRAG,dvc->GetId()); - - event.SetEventObject(dvc); - event.SetModel(dvc->GetModel()); for (size_t itemCounter=0; itemCounter<[writeItems count]; ++itemCounter) { bool itemStringAvailable(false); // a flag indicating if for the current item a string is available wxDataObjectComposite* itemObject(new wxDataObjectComposite()); // data object for current item wxString itemString; // contains the TAB concatenated data of an item - event.SetItem( - wxDataViewItemFromItem([writeItems objectAtIndex:itemCounter])); - itemString = ::ConcatenateDataViewItemValues(dvc,event.GetItem()); + const wxDataViewItem item = wxDataViewItemFromItem([writeItems objectAtIndex:itemCounter]); + wxDataViewEvent event(wxEVT_DATAVIEW_ITEM_BEGIN_DRAG, dvc, item); + itemString = ::ConcatenateDataViewItemValues(dvc, item); itemObject->Add(new wxTextDataObject(itemString)); - event.SetDataObject(itemObject); // check if event has not been vetoed: if (dvc->HandleWindowEvent(event) && event.IsAllowed() && (event.GetDataObject()->GetFormatCount() > 0)) { @@ -1616,11 +1596,8 @@ outlineView:(NSOutlineView*)outlineView // sent whether the cell is editable or not wxDataViewCtrl* const dvc = implementation->GetDataViewCtrl(); - wxDataViewEvent event(wxEVT_DATAVIEW_ITEM_ACTIVATED,dvc->GetId()); - - - event.SetEventObject(dvc); - event.SetItem(wxDataViewItemFromItem([self itemAtRow:[self clickedRow]])); + const wxDataViewItem item = wxDataViewItemFromItem([self itemAtRow:[self clickedRow]]); + wxDataViewEvent event(wxEVT_DATAVIEW_ITEM_ACTIVATED, dvc, item); dvc->GetEventHandler()->ProcessEvent(event); } @@ -1633,12 +1610,8 @@ outlineView:(NSOutlineView*)outlineView characterAtIndex: 0] == NSCarriageReturnCharacter ) { wxDataViewCtrl* const dvc = implementation->GetDataViewCtrl(); - - wxDataViewEvent eventDV( wxEVT_DATAVIEW_ITEM_ACTIVATED, dvc->GetId() ); - eventDV.SetEventObject(dvc); - eventDV.SetItem( wxDataViewItem( [[self itemAtRow:[self selectedRow]] pointer]) ); - eventDV.SetModel( dvc->GetModel() ); - + const wxDataViewItem item = wxDataViewItem( [[self itemAtRow:[self selectedRow]] pointer]); + wxDataViewEvent eventDV(wxEVT_DATAVIEW_ITEM_ACTIVATED, dvc, item); if ( !dvc->GetEventHandler()->ProcessEvent(eventDV) ) [super keyDown:event]; } @@ -1660,19 +1633,16 @@ outlineView:(NSOutlineView*)outlineView // menu should be shown or not wxDataViewCtrl* const dvc = implementation->GetDataViewCtrl(); - wxDataViewEvent event(wxEVT_DATAVIEW_ITEM_CONTEXT_MENU,dvc->GetId()); - - wxDataViewItemArray selectedItems; - - - event.SetEventObject(dvc); - event.SetModel(dvc->GetModel()); // get the item information; // theoretically more than one ID can be returned but the event can only // handle one item, therefore only the first item of the array is // returned: + wxDataViewItem item; + wxDataViewItemArray selectedItems; if (dvc->GetSelections(selectedItems) > 0) - event.SetItem(selectedItems[0]); + item = selectedItems[0]; + + wxDataViewEvent event(wxEVT_DATAVIEW_ITEM_CONTEXT_MENU, dvc, item); dvc->GetEventHandler()->ProcessEvent(event); // nothing is done: return nil; @@ -1688,14 +1658,8 @@ outlineView:(NSOutlineView*)outlineView wxDataViewCtrl* const dvc = implementation->GetDataViewCtrl(); - wxDataViewEvent - event(wxEVT_DATAVIEW_COLUMN_HEADER_CLICK,dvc->GetId()); - - // first, send an event that the user clicked into a column's header: - event.SetEventObject(dvc); - event.SetColumn(dvc->GetColumnPosition(col)); - event.SetDataViewColumn(col); + wxDataViewEvent event(wxEVT_DATAVIEW_COLUMN_HEADER_CLICK, dvc, col); dvc->HandleWindowEvent(event); // now, check if the click may have had an influence on sorting, too; @@ -1731,13 +1695,7 @@ outlineView:(NSOutlineView*)outlineView wxDataViewCtrl* const dvc = implementation->GetDataViewCtrl(); - wxDataViewEvent event(wxEVT_DATAVIEW_ITEM_COLLAPSING,dvc->GetId()); - - - event.SetEventObject(dvc); - event.SetItem (wxDataViewItemFromItem(item)); - event.SetModel (dvc->GetModel()); - // finally send the equivalent wxWidget event: + wxDataViewEvent event(wxEVT_DATAVIEW_ITEM_COLLAPSING, dvc, wxDataViewItemFromItem(item)); dvc->GetEventHandler()->ProcessEvent(event); // opening the container is allowed if not vetoed: return event.IsAllowed(); @@ -1749,13 +1707,7 @@ outlineView:(NSOutlineView*)outlineView wxDataViewCtrl* const dvc = implementation->GetDataViewCtrl(); - wxDataViewEvent event(wxEVT_DATAVIEW_ITEM_EXPANDING,dvc->GetId()); - - - event.SetEventObject(dvc); - event.SetItem (wxDataViewItemFromItem(item)); - event.SetModel (dvc->GetModel()); - // finally send the equivalent wxWidget event: + wxDataViewEvent event(wxEVT_DATAVIEW_ITEM_EXPANDING, dvc, wxDataViewItemFromItem(item)); dvc->GetEventHandler()->ProcessEvent(event); // opening the container is allowed if not vetoed: return event.IsAllowed(); @@ -1818,12 +1770,7 @@ outlineView:(NSOutlineView*)outlineView wxDataViewCtrl* const dvc = implementation->GetDataViewCtrl(); - wxDataViewEvent event(wxEVT_DATAVIEW_COLUMN_REORDERED,dvc->GetId()); - - - event.SetEventObject(dvc); - event.SetColumn(dvc->GetColumnPosition(col)); - event.SetDataViewColumn(col); + wxDataViewEvent event(wxEVT_DATAVIEW_COLUMN_REORDERED, dvc, col); dvc->GetEventHandler()->ProcessEvent(event); } @@ -1831,12 +1778,9 @@ outlineView:(NSOutlineView*)outlineView { wxDataViewCtrl* const dvc = implementation->GetDataViewCtrl(); - wxDataViewEvent event(wxEVT_DATAVIEW_ITEM_COLLAPSED,dvc->GetId()); - - - event.SetEventObject(dvc); - event.SetItem(wxDataViewItemFromItem( - [[notification userInfo] objectForKey:@"NSObject"])); + const wxDataViewItem item = wxDataViewItemFromItem( + [[notification userInfo] objectForKey:@"NSObject"]); + wxDataViewEvent event(wxEVT_DATAVIEW_ITEM_COLLAPSED, dvc, item); dvc->GetEventHandler()->ProcessEvent(event); } @@ -1844,12 +1788,9 @@ outlineView:(NSOutlineView*)outlineView { wxDataViewCtrl* const dvc = implementation->GetDataViewCtrl(); - wxDataViewEvent event(wxEVT_DATAVIEW_ITEM_EXPANDED,dvc->GetId()); - - - event.SetEventObject(dvc); - event.SetItem(wxDataViewItemFromItem( - [[notification userInfo] objectForKey:@"NSObject"])); + const wxDataViewItem item = wxDataViewItemFromItem( + [[notification userInfo] objectForKey:@"NSObject"]); + wxDataViewEvent event(wxEVT_DATAVIEW_ITEM_EXPANDED, dvc, item); dvc->GetEventHandler()->ProcessEvent(event); } @@ -1859,11 +1800,7 @@ outlineView:(NSOutlineView*)outlineView wxDataViewCtrl* const dvc = implementation->GetDataViewCtrl(); - wxDataViewEvent event(wxEVT_DATAVIEW_SELECTION_CHANGED,dvc->GetId()); - - event.SetEventObject(dvc); - event.SetModel(dvc->GetModel()); - event.SetItem(dvc->GetSelection()); + wxDataViewEvent event(wxEVT_DATAVIEW_SELECTION_CHANGED, dvc, dvc->GetSelection()); dvc->GetEventHandler()->ProcessEvent(event); } @@ -1928,15 +1865,11 @@ outlineView:(NSOutlineView*)outlineView wxDataViewCtrl* const dvc = implementation->GetDataViewCtrl(); - // send event to wxWidgets: - wxDataViewEvent - event(wxEVT_DATAVIEW_ITEM_EDITING_DONE,dvc->GetId()); + const wxDataViewItem + item = wxDataViewItemFromItem([self itemAtRow:currentlyEditedRow]); - event.SetEventObject(dvc); - event.SetItem( - wxDataViewItemFromItem([self itemAtRow:currentlyEditedRow])); - event.SetColumn(dvc->GetColumnPosition(col)); - event.SetDataViewColumn(col); + // send event to wxWidgets: + wxDataViewEvent event(wxEVT_DATAVIEW_ITEM_EDITING_DONE, dvc, col, item); dvc->GetEventHandler()->ProcessEvent(event); diff --git a/src/osx/dataview_osx.cpp b/src/osx/dataview_osx.cpp index 8aa128eca3..df8d4eb5fb 100644 --- a/src/osx/dataview_osx.cpp +++ b/src/osx/dataview_osx.cpp @@ -122,13 +122,8 @@ bool wxOSXDataViewModelNotifier::ItemChanged(wxDataViewItem const& item) wxCHECK_MSG(GetOwner() != NULL,false,"Owner not initialized."); if (m_DataViewCtrlPtr->GetDataViewPeer()->Update(GetOwner()->GetParent(item),item)) { - // sent the equivalent wxWidget event: - wxDataViewEvent dataViewEvent(wxEVT_DATAVIEW_ITEM_VALUE_CHANGED,m_DataViewCtrlPtr->GetId()); - - dataViewEvent.SetEventObject(m_DataViewCtrlPtr); - dataViewEvent.SetModel(m_DataViewCtrlPtr->GetModel()); - dataViewEvent.SetItem(item); - // sent the equivalent wxWidget event: + // send the equivalent wxWidgets event: + wxDataViewEvent dataViewEvent(wxEVT_DATAVIEW_ITEM_VALUE_CHANGED, m_DataViewCtrlPtr, item); m_DataViewCtrlPtr->HandleWindowEvent(dataViewEvent); // row height may have to be adjusted: AdjustRowHeight(item); @@ -144,16 +139,11 @@ bool wxOSXDataViewModelNotifier::ItemsChanged(wxDataViewItemArray const& items) { size_t const noOfItems = items.GetCount(); - wxDataViewEvent dataViewEvent(wxEVT_DATAVIEW_ITEM_VALUE_CHANGED,m_DataViewCtrlPtr->GetId()); - - - dataViewEvent.SetEventObject(m_DataViewCtrlPtr); - dataViewEvent.SetModel(m_DataViewCtrlPtr->GetModel()); for (size_t indexItem=0; indexItemGetDataViewPeer()->Update(GetOwner()->GetParent(items[indexItem]),items[indexItem])) { - // send for all changed items a wxWidget event: - dataViewEvent.SetItem(items[indexItem]); + // send for all changed items a wxWidgets event: + wxDataViewEvent dataViewEvent(wxEVT_DATAVIEW_ITEM_VALUE_CHANGED,m_DataViewCtrlPtr,items[indexItem]); m_DataViewCtrlPtr->HandleWindowEvent(dataViewEvent); } else @@ -211,13 +201,9 @@ bool wxOSXDataViewModelNotifier::ValueChanged(wxDataViewItem const& item, unsign wxCHECK_MSG(GetOwner() != NULL,false,"Owner not initialized."); if (m_DataViewCtrlPtr->GetDataViewPeer()->Update(GetOwner()->GetParent(item),item)) { - wxDataViewEvent dataViewEvent(wxEVT_DATAVIEW_ITEM_VALUE_CHANGED,m_DataViewCtrlPtr->GetId()); + wxDataViewEvent dataViewEvent(wxEVT_DATAVIEW_ITEM_VALUE_CHANGED, m_DataViewCtrlPtr, m_DataViewCtrlPtr->GetColumn(col), item); - dataViewEvent.SetEventObject(m_DataViewCtrlPtr); - dataViewEvent.SetModel(m_DataViewCtrlPtr->GetModel()); - dataViewEvent.SetColumn(col); - dataViewEvent.SetItem(item); - // send the equivalent wxWidget event: + // send the equivalent wxWidgets event: m_DataViewCtrlPtr->HandleWindowEvent(dataViewEvent); AdjustAutosizedColumns();