X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/c937344c8f4bbd14b96ddba8adcdd15341c06ffd..c753eb9269d1e6c99b80a2d782ce49d9864ac1da:/src/generic/datavgen.cpp diff --git a/src/generic/datavgen.cpp b/src/generic/datavgen.cpp index 35961c86ce..aba7354e03 100644 --- a/src/generic/datavgen.cpp +++ b/src/generic/datavgen.cpp @@ -70,7 +70,7 @@ static const int EXPANDER_OFFSET = 1; #endif // Below is the compare stuff. -// For the generic implementation, both the leaf nodes and the nodes are sorted for +// For the generic implementation, both the leaf nodes and the nodes are sorted for // fast search when needed static wxDataViewModel* g_model; static int g_column = -2; @@ -230,7 +230,7 @@ class wxDataViewTreeNode; WX_DEFINE_ARRAY( wxDataViewTreeNode *, wxDataViewTreeNodes ); WX_DEFINE_ARRAY( void* , wxDataViewTreeLeaves); -int LINKAGEMODE wxGenericTreeModelNodeCmp( wxDataViewTreeNode ** node1, +int LINKAGEMODE wxGenericTreeModelNodeCmp( wxDataViewTreeNode ** node1, wxDataViewTreeNode ** node2); int LINKAGEMODE wxGenericTreeModelItemCmp( void ** id1, void ** id2); @@ -351,7 +351,7 @@ private: int m_subTreeCount; }; -int LINKAGEMODE wxGenericTreeModelNodeCmp( wxDataViewTreeNode ** node1, +int LINKAGEMODE wxGenericTreeModelNodeCmp( wxDataViewTreeNode ** node1, wxDataViewTreeNode ** node2) { return g_model->Compare( (*node1)->GetItem(), (*node2)->GetItem(), g_column, g_asending ); @@ -451,15 +451,15 @@ public: int GetEndOfLastCol() const; unsigned int GetFirstVisibleRow() const; - // I change this method to un const because in the tree view, - // the displaying number of the tree are changing along with the + // I change this method to un const because in the tree view, + // the displaying number of the tree are changing along with the // expanding/collapsing of the tree nodes unsigned int GetLastVisibleRow(); unsigned int GetRowCount(); wxDataViewItem GetSelection() const; wxDataViewSelection GetSelections(){ return m_selection; } - void SetSelections( const wxDataViewSelection & sel ) + void SetSelections( const wxDataViewSelection & sel ) { m_selection = sel; UpdateDisplay(); } void Select( const wxArrayInt& aSelections ); void SelectAllRows( bool on ); @@ -671,7 +671,7 @@ wxDataViewCustomRenderer::wxDataViewCustomRenderer( const wxString &varianttype, { } -void wxDataViewCustomRenderer::RenderText( const wxString &text, int xoffset, +void wxDataViewCustomRenderer::RenderText( const wxString &text, int xoffset, wxRect cell, wxDC *dc, int state ) { wxDataViewCtrl *view = GetOwner()->GetOwner(); @@ -679,8 +679,8 @@ void wxDataViewCustomRenderer::RenderText( const wxString &text, int xoffset, wxSystemSettings::GetColour(wxSYS_COLOUR_HIGHLIGHTTEXT) : view->GetForegroundColour(); dc->SetTextForeground(col); - dc->DrawText( text, - cell.x + xoffset, + dc->DrawText( text, + cell.x + xoffset, cell.y + ((cell.height - dc->GetCharHeight()) / 2)); } @@ -716,9 +716,15 @@ bool wxDataViewTextRenderer::HasEditorCtrl() const wxControl* wxDataViewTextRenderer::CreateEditorCtrl( wxWindow *parent, wxRect labelRect, const wxVariant &value ) { - return new wxTextCtrl( parent, wxID_ANY, value, - wxPoint(labelRect.x,labelRect.y), - wxSize(labelRect.width,labelRect.height) ); + wxTextCtrl* ctrl = new wxTextCtrl( parent, wxID_ANY, value, + wxPoint(labelRect.x,labelRect.y), + wxSize(labelRect.width,labelRect.height) ); + + // select the text in the control an place the cursor at the end + ctrl->SetInsertionPointEnd(); + ctrl->SelectAll(); + + return ctrl; } bool wxDataViewTextRenderer::GetValueFromEditorCtrl( wxControl *editor, wxVariant &value ) @@ -1145,9 +1151,15 @@ wxControl* wxDataViewIconTextRenderer::CreateEditorCtrl(wxWindow *parent, wxRect labelRect.width -= w; } - return new wxTextCtrl( parent, wxID_ANY, text, - wxPoint(labelRect.x,labelRect.y), - wxSize(labelRect.width,labelRect.height) ); + wxTextCtrl* ctrl = new wxTextCtrl( parent, wxID_ANY, text, + wxPoint(labelRect.x,labelRect.y), + wxSize(labelRect.width,labelRect.height) ); + + // select the text in the control an place the cursor at the end + ctrl->SetInsertionPointEnd(); + ctrl->SelectAll(); + + return ctrl; } bool wxDataViewIconTextRenderer::GetValueFromEditorCtrl( wxControl *editor, wxVariant& value ) @@ -1304,7 +1316,7 @@ void wxDataViewRenameTimer::Notify() //----------------------------------------------------------------------------- // The tree building helper, declared firstly -static void BuildTreeHelper( wxDataViewModel * model, wxDataViewItem & item, +static void BuildTreeHelper( wxDataViewModel * model, wxDataViewItem & item, wxDataViewTreeNode * node); int LINKAGEMODE wxDataViewSelectionCmp( unsigned int row1, unsigned int row2 ) @@ -1413,7 +1425,7 @@ void wxDataViewMainWindow::RemoveDropHint() } } -wxDragResult wxDataViewMainWindow::OnDragOver( wxDataFormat format, wxCoord x, +wxDragResult wxDataViewMainWindow::OnDragOver( wxDataFormat format, wxCoord x, wxCoord y, wxDragResult def ) { int xx = x; @@ -1488,7 +1500,7 @@ bool wxDataViewMainWindow::OnDrop( wxDataFormat format, wxCoord x, wxCoord y ) return true; } -wxDragResult wxDataViewMainWindow::OnData( wxDataFormat format, wxCoord x, wxCoord y, +wxDragResult wxDataViewMainWindow::OnData( wxDataFormat format, wxCoord x, wxCoord y, wxDragResult def ) { int xx = x; @@ -1545,7 +1557,7 @@ wxBitmap wxDataViewMainWindow::CreateItemBitmap( unsigned int row, int &indent ) { wxDataViewTreeNode *node = GetTreeNodeByRow(row); indent = GetOwner()->GetIndent() * node->GetIndentLevel(); - indent = indent + m_lineHeight; + indent = indent + m_lineHeight; // try to use the m_lineHeight as the expander space if(!node->HasChildren()) @@ -1802,13 +1814,13 @@ void wxDataViewMainWindow::OnPaint( wxPaintEvent &WXUNUSED(event) ) dataitem = node->GetItem(); - if ((i > 0) && model->IsContainer(dataitem) && + if ((i > 0) && model->IsContainer(dataitem) && !model->HasContainerColumns(dataitem)) continue; } else { - dataitem = wxDataViewItem( wxUIntToPtr(item) ); + dataitem = wxDataViewItem( wxUIntToPtr(item+1) ); } model->GetValue( value, dataitem, col->GetModelColumn()); @@ -1840,10 +1852,10 @@ void wxDataViewMainWindow::OnPaint( wxPaintEvent &WXUNUSED(event) ) // change the cell_rect.x to the appropriate pos int expander_x = indent + EXPANDER_MARGIN; - int expander_y = cell_rect.y + EXPANDER_MARGIN + (GetLineHeight(item) / 2) + int expander_y = cell_rect.y + EXPANDER_MARGIN + (GetLineHeight(item) / 2) - (expander_width/2) - EXPANDER_OFFSET; - indent = indent + m_lineHeight; + indent = indent + m_lineHeight; // try to use the m_lineHeight as the expander space dc.SetPen( m_penExpander ); @@ -1857,7 +1869,7 @@ void wxDataViewMainWindow::OnPaint( wxPaintEvent &WXUNUSED(event) ) flag |= wxCONTROL_CURRENT; } if( node->IsOpen() ) - wxRendererNative::Get().DrawTreeItemButton( this, dc, rect, + wxRendererNative::Get().DrawTreeItemButton( this, dc, rect, flag|wxCONTROL_EXPANDED ); else wxRendererNative::Get().DrawTreeItemButton( this, dc, rect, flag); @@ -1876,7 +1888,7 @@ void wxDataViewMainWindow::OnPaint( wxPaintEvent &WXUNUSED(event) ) // cannot be bigger than allocated space wxSize size = cell->GetSize(); - // Because of the tree structure indent, here we should minus the width + // Because of the tree structure indent, here we should minus the width // of the cell for drawing size.x = wxMin( size.x + 2*PADDING_RIGHTLEFT, cell_rect.width - indent ); // size.y = wxMin( size.y, cell_rect.height ); @@ -1939,42 +1951,10 @@ void wxDataViewMainWindow::OnRenameTimer() wxSafeYield(); } - int xpos = 0; - unsigned int cols = GetOwner()->GetColumnCount(); - unsigned int i; - for (i = 0; i < cols; i++) - { - wxDataViewColumn *c = GetOwner()->GetColumnAt( i ); - if (c->IsHidden()) - continue; // skip it! - - if (c == m_currentCol) - break; - xpos += c->GetWidth(); - } - - // we have to take an expander column into account and compute its indentation - // to get the editor at the correct x position where the actual text is - int indent = 0; - if (!IsVirtualList() && GetOwner()->GetExpanderColumn() == m_currentCol) - { - wxDataViewTreeNode* node = GetTreeNodeByRow(m_currentRow); - indent = GetOwner()->GetIndent() * node->GetIndentLevel(); - indent = indent + m_lineHeight; - - if(!node->HasChildren()) - delete node; - } - - wxRect labelRect( xpos + indent, - GetLineStart( m_currentRow ), - m_currentCol->GetWidth() - indent, - GetLineHeight( m_currentRow ) ); + wxDataViewItem item = GetItemByRow( m_currentRow ); - GetOwner()->CalcScrolledPosition( labelRect.x, labelRect.y, - &labelRect.x, &labelRect.y); + wxRect labelRect = GetItemRect(item, m_currentCol); - wxDataViewItem item = GetItemByRow( m_currentRow ); m_currentCol->GetRenderer()->StartEditing( item, labelRect ); } @@ -2048,7 +2028,7 @@ bool Walker( wxDataViewTreeNode * node, DoJob & func ) bool wxDataViewMainWindow::ItemAdded(const wxDataViewItem & parent, const wxDataViewItem & item) { - if (!m_root) + if (IsVirtualList()) { m_count++; UpdateDisplay(); @@ -2086,14 +2066,15 @@ bool wxDataViewMainWindow::ItemAdded(const wxDataViewItem & parent, const wxData static void DestroyTreeHelper( wxDataViewTreeNode * node); bool wxDataViewMainWindow::ItemDeleted(const wxDataViewItem& parent, - const wxDataViewItem& item) + const wxDataViewItem& item) { - if (!m_root) + if (IsVirtualList()) { m_count--; if( m_currentRow > GetRowCount() ) m_currentRow = m_count - 1; + // TODO: why empty the entire selection? m_selection.Empty(); UpdateDisplay(); @@ -2104,7 +2085,7 @@ bool wxDataViewMainWindow::ItemDeleted(const wxDataViewItem& parent, wxDataViewTreeNode * node = FindNode(parent); wxCHECK_MSG( node != NULL, false, "item not found" ); - wxCHECK_MSG( node->GetChildren().Index( item.GetID() ) != wxNOT_FOUND, + wxCHECK_MSG( node->GetChildren().Index( item.GetID() ) != wxNOT_FOUND, false, "item not found" ); int sub = -1; @@ -2600,15 +2581,15 @@ int wxDataViewMainWindow::GetLineStart( unsigned int row ) const if (column->IsHidden()) continue; // skip it! - if ((col != 0) && - model->IsContainer(item) && + if ((col != 0) && + model->IsContainer(item) && !model->HasContainerColumns(item)) continue; // skip it! wxVariant value; model->GetValue( value, item, column->GetModelColumn() ); - wxDataViewRenderer *renderer = + wxDataViewRenderer *renderer = const_cast(column->GetRenderer()); renderer->SetValue( value ); height = wxMax( height, renderer->GetSize().y ); @@ -2663,15 +2644,15 @@ int wxDataViewMainWindow::GetLineAt( unsigned int y ) const if (column->IsHidden()) continue; // skip it! - if ((col != 0) && - model->IsContainer(item) && + if ((col != 0) && + model->IsContainer(item) && !model->HasContainerColumns(item)) continue; // skip it! wxVariant value; model->GetValue( value, item, column->GetModelColumn() ); - wxDataViewRenderer *renderer = + wxDataViewRenderer *renderer = const_cast(column->GetRenderer()); renderer->SetValue( value ); height = wxMax( height, renderer->GetSize().y ); @@ -2716,15 +2697,15 @@ int wxDataViewMainWindow::GetLineHeight( unsigned int row ) const if (column->IsHidden()) continue; // skip it! - if ((col != 0) && - model->IsContainer(item) && + if ((col != 0) && + model->IsContainer(item) && !model->HasContainerColumns(item)) continue; // skip it! wxVariant value; model->GetValue( value, item, column->GetModelColumn() ); - wxDataViewRenderer *renderer = + wxDataViewRenderer *renderer = const_cast(column->GetRenderer()); renderer->SetValue( value ); height = wxMax( height, renderer->GetSize().y ); @@ -2741,7 +2722,7 @@ int wxDataViewMainWindow::GetLineHeight( unsigned int row ) const class RowToItemJob: public DoJob { public: - RowToItemJob( unsigned int row , int current ) + RowToItemJob( unsigned int row , int current ) { this->row = row; this->current = current; } virtual ~RowToItemJob() {} @@ -2761,9 +2742,9 @@ public: } else { - // If the current has no child node, we can find the desired item of the row + // If the current has no child node, we can find the desired item of the row // number directly. - // This if can speed up finding in some case, and will has a very good effect + // This if can speed up finding in some case, and will has a very good effect // when it comes to list view if( node->GetNodes().GetCount() == 0) { @@ -2797,15 +2778,17 @@ private: wxDataViewItem wxDataViewMainWindow::GetItemByRow(unsigned int row) const { - if (!m_root) + if (IsVirtualList()) { - return wxDataViewItem( wxUIntToPtr(row) ); + return wxDataViewItem( wxUIntToPtr(row+1) ); } else { RowToItemJob job( row, -2 ); Walker( m_root , job ); - return job.GetResult(); + wxDataViewItem res = job.GetResult(); +// wxPrintf( "row %d, item %d\n", row, (int) res.GetID() ); + return res; } } @@ -2839,9 +2822,9 @@ public: { parent = node; - // If the current node has no children, we can find the desired item of the + // If the current node has no children, we can find the desired item of the // row number directly. - // This if can speed up finding in some case, and will have a very good + // This if can speed up finding in some case, and will have a very good // effect for list views. if( node->GetNodes().GetCount() == 0) { @@ -2889,7 +2872,7 @@ wxDataViewTreeNode * wxDataViewMainWindow::GetTreeNodeByRow(unsigned int row) co return job.GetResult(); } -wxDataViewEvent wxDataViewMainWindow::SendExpanderEvent( wxEventType type, +wxDataViewEvent wxDataViewMainWindow::SendExpanderEvent( wxEventType type, const wxDataViewItem & item ) { wxWindow *parent = GetParent(); @@ -2947,16 +2930,16 @@ void wxDataViewMainWindow::Expand( unsigned int row ) wxDataViewTreeNode * node = GetTreeNodeByRow(row); if (!node) return; - + if (!node->HasChildren()) { delete node; return; } - + if (!node->IsOpen()) { - wxDataViewEvent e = + wxDataViewEvent e = SendExpanderEvent(wxEVT_COMMAND_DATAVIEW_ITEM_EXPANDING, node->GetItem()); // Check if the user prevent expanding @@ -3003,7 +2986,7 @@ void wxDataViewMainWindow::Collapse(unsigned int row) wxDataViewTreeNode *node = GetTreeNodeByRow(row); if (!node) return; - + if (!node->HasChildren()) { delete node; @@ -3012,7 +2995,7 @@ void wxDataViewMainWindow::Collapse(unsigned int row) if (node->IsOpen()) { - wxDataViewEvent e = + wxDataViewEvent e = SendExpanderEvent(wxEVT_COMMAND_DATAVIEW_ITEM_COLLAPSING,node->GetItem()); if( e.GetSkipped() ) return; @@ -3129,7 +3112,7 @@ wxDataViewTreeNode * wxDataViewMainWindow::FindNode( const wxDataViewItem & item return NULL; } -void wxDataViewMainWindow::HitTest( const wxPoint & point, wxDataViewItem & item, +void wxDataViewMainWindow::HitTest( const wxPoint & point, wxDataViewItem & item, wxDataViewColumn* &column ) { wxDataViewColumn *col = NULL; @@ -3154,12 +3137,12 @@ void wxDataViewMainWindow::HitTest( const wxPoint & point, wxDataViewItem & item item = GetItemByRow( GetLineAt( y ) ); } -wxRect wxDataViewMainWindow::GetItemRect( const wxDataViewItem & item, +wxRect wxDataViewMainWindow::GetItemRect( const wxDataViewItem & item, const wxDataViewColumn* column ) { int xpos = 0; int width = 0; - + unsigned int cols = GetOwner()->GetColumnCount(); // If column is null the loop will compute the combined width of all columns. // Otherwise, it will compute the x position of the column we are looking for. @@ -3219,15 +3202,11 @@ wxRect wxDataViewMainWindow::GetItemRect( const wxDataViewItem & item, int wxDataViewMainWindow::RecalculateCount() { - if (!m_root) + if (IsVirtualList()) { - wxDataViewIndexListModel *list_model = - (wxDataViewIndexListModel*) GetOwner()->GetModel(); -#ifndef __WXMAC__ - return list_model->GetLastIndex() + 1; -#else - return list_model->GetLastIndex() - 1; -#endif + wxDataViewVirtualListModel *list_model = + (wxDataViewVirtualListModel*) GetOwner()->GetModel(); + return list_model->GetCount(); } else { @@ -3292,9 +3271,9 @@ int wxDataViewMainWindow::GetRowByItem(const wxDataViewItem & item) const if( model == NULL ) return -1; - if (!m_root) + if (IsVirtualList()) { - return wxPtrToUInt( item.GetID() ); + return wxPtrToUInt( item.GetID() ) -1; } else { @@ -3321,7 +3300,7 @@ int wxDataViewMainWindow::GetRowByItem(const wxDataViewItem & item) const } } -static void BuildTreeHelper( wxDataViewModel * model, wxDataViewItem & item, +static void BuildTreeHelper( wxDataViewModel * model, wxDataViewItem & item, wxDataViewTreeNode * node) { if( !model->IsContainer( item ) ) @@ -3414,11 +3393,10 @@ void wxDataViewMainWindow::OnChar( wxKeyEvent &event ) switch ( event.GetKeyCode() ) { case WXK_RETURN: - { - if (m_currentRow >= 0) { wxWindow *parent = GetParent(); - wxDataViewEvent le(wxEVT_COMMAND_DATAVIEW_ITEM_ACTIVATED, parent->GetId()); + wxDataViewEvent le(wxEVT_COMMAND_DATAVIEW_ITEM_ACTIVATED, + parent->GetId()); le.SetItem( GetItemByRow(m_currentRow) ); le.SetEventObject(parent); le.SetModel(GetOwner()->GetModel()); @@ -3426,7 +3404,7 @@ void wxDataViewMainWindow::OnChar( wxKeyEvent &event ) parent->GetEventHandler()->ProcessEvent(le); } break; - } + case WXK_UP: if ( m_currentRow > 0 ) OnArrowChar( m_currentRow - 1, event ); @@ -3446,14 +3424,17 @@ void wxDataViewMainWindow::OnChar( wxKeyEvent &event ) if (!node) break; - if (node->HasChildren()) + if (node->HasChildren() && node->IsOpen()) { Collapse(m_currentRow); } - else + else // if the node is already closed we move the selection to its parent { wxDataViewTreeNode *parent_node = node->GetParent(); - delete node; + + if(!node->HasChildren()) + delete node; + if (parent_node) { int parent = GetRowByItem( parent_node->GetItem() ); @@ -3463,6 +3444,7 @@ void wxDataViewMainWindow::OnChar( wxKeyEvent &event ) SelectRow( row, false); SelectRow( parent, true ); ChangeCurrentRow( parent ); + GetOwner()->EnsureVisible( parent, -1 ); SendSelectionChangedEvent( parent_node->GetItem() ); } } @@ -3479,6 +3461,7 @@ void wxDataViewMainWindow::OnChar( wxKeyEvent &event ) SelectRow( row, false ); SelectRow( row + 1, true ); ChangeCurrentRow( row + 1 ); + GetOwner()->EnsureVisible( row + 1, -1 ); SendSelectionChangedEvent( GetItemByRow(row+1) ); } break; @@ -3517,6 +3500,16 @@ void wxDataViewMainWindow::OnChar( wxKeyEvent &event ) } break; + case WXK_F2: + { + if(m_selection.size() == 1) + { + // TODO: we need to revise that when we have a concept for a 'current column' + GetOwner()->StartEditor(GetItemByRow(m_selection[0]), 0); + } + } + break; + default: event.Skip(); } @@ -3628,7 +3621,7 @@ void wxDataViewMainWindow::OnMouse( wxMouseEvent &event ) if (event.LeftIsDown()) { - m_owner->CalcUnscrolledPosition( m_dragStart.x, m_dragStart.y, + m_owner->CalcUnscrolledPosition( m_dragStart.x, m_dragStart.y, &m_dragStart.x, &m_dragStart.y ); unsigned int drag_item_row = GetLineAt( m_dragStart.y ); wxDataViewItem item = GetItemByRow( drag_item_row ); @@ -3723,7 +3716,7 @@ void wxDataViewMainWindow::OnMouse( wxMouseEvent &event ) SendSelectionChangedEvent( GetItemByRow(m_lineSelectSingleOnUp) ); } - // If the user click the expander, we do not do editing even if the column + // If the user click the expander, we do not do editing even if the column // with expander are editable if (m_lastOnSame && !ignore_other_columns) { @@ -3760,7 +3753,9 @@ void wxDataViewMainWindow::OnMouse( wxMouseEvent &event ) SelectRow(m_currentRow,true); SendSelectionChangedEvent(GetItemByRow( m_currentRow ) ); } - + } + else if (event.RightUp()) + { wxVariant value; model->GetValue( value, item, col->GetModelColumn() ); wxWindow *parent = GetParent(); @@ -3779,7 +3774,7 @@ void wxDataViewMainWindow::OnMouse( wxMouseEvent &event ) { wxDataViewTreeNode* node = GetTreeNodeByRow(current); - // hoverOverExpander being true tells us that our node must be + // hoverOverExpander being true tells us that our node must be // valid and have children. // So we don't need any extra checks. if( node->IsOpen() ) @@ -3864,7 +3859,7 @@ void wxDataViewMainWindow::OnMouse( wxMouseEvent &event ) cell->SetValue( value ); wxRect cell_rect( xpos, GetLineStart( current ), col->GetWidth(), GetLineHeight( current ) ); - /* ignore ret */ cell->LeftClick( event.GetPosition(), cell_rect, + /* ignore ret */ cell->LeftClick( event.GetPosition(), cell_rect, model, item, col->GetModelColumn()); } } @@ -4379,13 +4374,13 @@ void wxDataViewCtrl::EnsureVisible( const wxDataViewItem & item, const wxDataVie } -void wxDataViewCtrl::HitTest( const wxPoint & point, wxDataViewItem & item, +void wxDataViewCtrl::HitTest( const wxPoint & point, wxDataViewItem & item, wxDataViewColumn* &column ) const { m_clientArea->HitTest(point, item, column); } -wxRect wxDataViewCtrl::GetItemRect( const wxDataViewItem & item, +wxRect wxDataViewCtrl::GetItemRect( const wxDataViewItem & item, const wxDataViewColumn* column ) const { return m_clientArea->GetItemRect(item, column); @@ -4411,7 +4406,6 @@ void wxDataViewCtrl::Expand( const wxDataViewItem & item ) void wxDataViewCtrl::Collapse( const wxDataViewItem & item ) { int row = m_clientArea->GetRowByItem( item ); - wxPrintf( "row %d\n", row ); if (row != -1) m_clientArea->Collapse(row); } @@ -4429,14 +4423,12 @@ void wxDataViewCtrl::StartEditor( const wxDataViewItem & item, unsigned int colu wxDataViewColumn* col = GetColumn( column ); if (!col) return; - + wxRect itemRect = GetItemRect(item, col); wxDataViewRenderer* renderer = col->GetRenderer(); renderer->StartEditing(item, itemRect); } -#endif - // !wxUSE_GENERICDATAVIEWCTRL +#endif // !wxUSE_GENERICDATAVIEWCTRL -#endif - // wxUSE_DATAVIEWCTRL +#endif // wxUSE_DATAVIEWCTRL