add missing wxUSE_DRAG_AND_DROP checks

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@58347 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
Vadim Zeitlin
2009-01-23 23:55:17 +00:00
parent 1c1e6b5b50
commit 9adeb77af4
2 changed files with 89 additions and 60 deletions

View File

@@ -449,9 +449,11 @@ public:
virtual bool IsExpanded( const wxDataViewItem & item ) const; virtual bool IsExpanded( const wxDataViewItem & item ) const;
virtual void SetFocus(); virtual void SetFocus();
#if wxUSE_DRAG_AND_DROP
virtual bool EnableDragSource( const wxDataFormat &format ); virtual bool EnableDragSource( const wxDataFormat &format );
virtual bool EnableDropTarget( const wxDataFormat &format ); virtual bool EnableDropTarget( const wxDataFormat &format );
#endif // wxUSE_DRAG_AND_DROP
virtual wxBorder GetDefaultBorder() const; virtual wxBorder GetDefaultBorder() const;

View File

@@ -417,7 +417,9 @@ public:
wxDataViewCtrl *GetOwner() { return m_owner; } wxDataViewCtrl *GetOwner() { return m_owner; }
const wxDataViewCtrl *GetOwner() const { return m_owner; } const wxDataViewCtrl *GetOwner() const { return m_owner; }
#if wxUSE_DRAG_AND_DROP
wxBitmap CreateItemBitmap( unsigned int row, int &indent ); wxBitmap CreateItemBitmap( unsigned int row, int &indent );
#endif // wxUSE_DRAG_AND_DROP
void OnPaint( wxPaintEvent &event ); void OnPaint( wxPaintEvent &event );
void OnArrowChar(unsigned int newCurrent, const wxKeyEvent& event); void OnArrowChar(unsigned int newCurrent, const wxKeyEvent& event);
void OnChar( wxKeyEvent &event ); void OnChar( wxKeyEvent &event );
@@ -488,6 +490,7 @@ public:
void Collapse( unsigned int row ) { OnCollapsing( row ); } void Collapse( unsigned int row ) { OnCollapsing( row ); }
bool IsExpanded( unsigned int row ) const; bool IsExpanded( unsigned int row ) const;
#if wxUSE_DRAG_AND_DROP
bool EnableDragSource( const wxDataFormat &format ); bool EnableDragSource( const wxDataFormat &format );
bool EnableDropTarget( const wxDataFormat &format ); bool EnableDropTarget( const wxDataFormat &format );
@@ -496,6 +499,7 @@ public:
bool OnDrop( wxDataFormat format, wxCoord x, wxCoord y ); bool OnDrop( wxDataFormat format, wxCoord x, wxCoord y );
wxDragResult OnData( wxDataFormat format, wxCoord x, wxCoord y, wxDragResult def ); wxDragResult OnData( wxDataFormat format, wxCoord x, wxCoord y, wxDragResult def );
void OnLeave(); void OnLeave();
#endif // wxUSE_DRAG_AND_DROP
private: private:
wxDataViewTreeNode * GetTreeNodeByRow( unsigned int row ) const; wxDataViewTreeNode * GetTreeNodeByRow( unsigned int row ) const;
@@ -524,16 +528,18 @@ private:
bool m_hasFocus; bool m_hasFocus;
#if wxUSE_DRAG_AND_DROP
int m_dragCount; int m_dragCount;
wxPoint m_dragStart; wxPoint m_dragStart;
bool m_dragEnabled; bool m_dragEnabled;
wxDataFormat m_dragFormat; wxDataFormat m_dragFormat;
bool m_dropEnabled; bool m_dropEnabled;
wxDataFormat m_dropFormat; wxDataFormat m_dropFormat;
bool m_dropHint; bool m_dropHint;
unsigned int m_dropHintLine; unsigned int m_dropHintLine;
#endif // wxUSE_DRAG_AND_DROP
// for double click logic // for double click logic
unsigned int m_lineLastClicked, unsigned int m_lineLastClicked,
@@ -1140,6 +1146,8 @@ wxDataViewIconTextRenderer::GetValueFromEditorCtrl(wxControl* WXUNUSED(editor),
// wxDataViewDropTarget // wxDataViewDropTarget
//----------------------------------------------------------------------------- //-----------------------------------------------------------------------------
#if wxUSE_DRAG_AND_DROP
class wxBitmapCanvas: public wxWindow class wxBitmapCanvas: public wxWindow
{ {
public: public:
@@ -1149,13 +1157,13 @@ public:
m_bitmap = bitmap; m_bitmap = bitmap;
Connect( wxEVT_PAINT, wxPaintEventHandler(wxBitmapCanvas::OnPaint) ); Connect( wxEVT_PAINT, wxPaintEventHandler(wxBitmapCanvas::OnPaint) );
} }
void OnPaint( wxPaintEvent &WXUNUSED(event) ) void OnPaint( wxPaintEvent &WXUNUSED(event) )
{ {
wxPaintDC dc(this); wxPaintDC dc(this);
dc.DrawBitmap( m_bitmap, 0, 0); dc.DrawBitmap( m_bitmap, 0, 0);
} }
wxBitmap m_bitmap; wxBitmap m_bitmap;
}; };
@@ -1169,16 +1177,16 @@ public:
m_row = row; m_row = row;
m_hint = NULL; m_hint = NULL;
} }
~wxDataViewDropSource() ~wxDataViewDropSource()
{ {
delete m_hint; delete m_hint;
} }
virtual bool GiveFeedback( wxDragResult WXUNUSED(effect) ) virtual bool GiveFeedback( wxDragResult WXUNUSED(effect) )
{ {
wxPoint pos = wxGetMousePosition(); wxPoint pos = wxGetMousePosition();
if (!m_hint) if (!m_hint)
{ {
int liney = m_win->GetLineStart( m_row ); int liney = m_win->GetLineStart( m_row );
@@ -1187,11 +1195,11 @@ public:
m_win->ClientToScreen( &linex, &liney ); m_win->ClientToScreen( &linex, &liney );
m_dist_x = pos.x - linex; m_dist_x = pos.x - linex;
m_dist_y = pos.y - liney; m_dist_y = pos.y - liney;
int indent = 0; int indent = 0;
wxBitmap ib = m_win->CreateItemBitmap( m_row, indent ); wxBitmap ib = m_win->CreateItemBitmap( m_row, indent );
m_dist_x -= indent; m_dist_x -= indent;
m_hint = new wxFrame( m_win->GetParent(), wxID_ANY, wxEmptyString, m_hint = new wxFrame( m_win->GetParent(), wxID_ANY, wxEmptyString,
wxPoint(pos.x - m_dist_x, pos.y + 5 ), wxPoint(pos.x - m_dist_x, pos.y + 5 ),
ib.GetSize(), ib.GetSize(),
wxFRAME_TOOL_WINDOW | wxFRAME_TOOL_WINDOW |
@@ -1206,10 +1214,10 @@ public:
m_hint->Move( pos.x - m_dist_x, pos.y + 5 ); m_hint->Move( pos.x - m_dist_x, pos.y + 5 );
m_hint->SetTransparent( 128 ); m_hint->SetTransparent( 128 );
} }
return false; return false;
} }
wxDataViewMainWindow *m_win; wxDataViewMainWindow *m_win;
unsigned int m_row; unsigned int m_row;
wxFrame *m_hint; wxFrame *m_hint;
@@ -1227,23 +1235,23 @@ public:
} }
virtual wxDragResult OnDragOver( wxCoord x, wxCoord y, wxDragResult def ) virtual wxDragResult OnDragOver( wxCoord x, wxCoord y, wxDragResult def )
{ {
wxDataFormat format = GetMatchingPair(); wxDataFormat format = GetMatchingPair();
if (format == wxDF_INVALID) if (format == wxDF_INVALID)
return wxDragNone; return wxDragNone;
return m_win->OnDragOver( format, x, y, def); return m_win->OnDragOver( format, x, y, def);
} }
virtual bool OnDrop( wxCoord x, wxCoord y ) virtual bool OnDrop( wxCoord x, wxCoord y )
{ {
wxDataFormat format = GetMatchingPair(); wxDataFormat format = GetMatchingPair();
if (format == wxDF_INVALID) if (format == wxDF_INVALID)
return false; return false;
return m_win->OnDrop( format, x, y ); return m_win->OnDrop( format, x, y );
} }
virtual wxDragResult OnData( wxCoord x, wxCoord y, wxDragResult def ) virtual wxDragResult OnData( wxCoord x, wxCoord y, wxDragResult def )
{ {
wxDataFormat format = GetMatchingPair(); wxDataFormat format = GetMatchingPair();
if (format == wxDF_INVALID) if (format == wxDF_INVALID)
return wxDragNone; return wxDragNone;
@@ -1251,13 +1259,15 @@ public:
return wxDragNone; return wxDragNone;
return m_win->OnData( format, x, y, def ); return m_win->OnData( format, x, y, def );
} }
virtual void OnLeave() virtual void OnLeave()
{ m_win->OnLeave(); } { m_win->OnLeave(); }
wxDataViewMainWindow *m_win; wxDataViewMainWindow *m_win;
}; };
#endif // wxUSE_DRAG_AND_DROP
//----------------------------------------------------------------------------- //-----------------------------------------------------------------------------
// wxDataViewRenameTimer // wxDataViewRenameTimer
//----------------------------------------------------------------------------- //-----------------------------------------------------------------------------
@@ -1314,16 +1324,19 @@ wxDataViewMainWindow::wxDataViewMainWindow( wxDataViewCtrl *parent, wxWindowID i
m_lineHeight = wxMax( 17, GetCharHeight() + 2 ); // 17 = mini icon height + 1 m_lineHeight = wxMax( 17, GetCharHeight() + 2 ); // 17 = mini icon height + 1
#if wxUSE_DRAG_AND_DROP
m_dragCount = 0; m_dragCount = 0;
m_dragStart = wxPoint(0,0); m_dragStart = wxPoint(0,0);
m_lineLastClicked = (unsigned int) -1;
m_lineBeforeLastClicked = (unsigned int) -1;
m_lineSelectSingleOnUp = (unsigned int) -1;
m_dragEnabled = false; m_dragEnabled = false;
m_dropEnabled = false; m_dropEnabled = false;
m_dropHint = false; m_dropHint = false;
m_dropHintLine = (unsigned int) -1; m_dropHintLine = (unsigned int) -1;
#endif // wxUSE_DRAG_AND_DROP
m_lineLastClicked = (unsigned int) -1;
m_lineBeforeLastClicked = (unsigned int) -1;
m_lineSelectSingleOnUp = (unsigned int) -1;
m_hasFocus = false; m_hasFocus = false;
@@ -1351,22 +1364,24 @@ wxDataViewMainWindow::~wxDataViewMainWindow()
delete m_renameTimer; delete m_renameTimer;
} }
#if wxUSE_DRAG_AND_DROP
bool wxDataViewMainWindow::EnableDragSource( const wxDataFormat &format ) bool wxDataViewMainWindow::EnableDragSource( const wxDataFormat &format )
{ {
m_dragFormat = format; m_dragFormat = format;
m_dragEnabled = format != wxDF_INVALID; m_dragEnabled = format != wxDF_INVALID;
return true; return true;
} }
bool wxDataViewMainWindow::EnableDropTarget( const wxDataFormat &format ) bool wxDataViewMainWindow::EnableDropTarget( const wxDataFormat &format )
{ {
m_dropFormat = format; m_dropFormat = format;
m_dropEnabled = format != wxDF_INVALID; m_dropEnabled = format != wxDF_INVALID;
if (m_dropEnabled) if (m_dropEnabled)
SetDropTarget( new wxDataViewDropTarget( new wxCustomDataObject( format ), this ) ); SetDropTarget( new wxDataViewDropTarget( new wxCustomDataObject( format ), this ) );
return true; return true;
} }
@@ -1388,15 +1403,15 @@ wxDragResult wxDataViewMainWindow::OnDragOver( wxDataFormat format, wxCoord x, w
unsigned int row = GetLineAt( yy ); unsigned int row = GetLineAt( yy );
if ((row >= GetRowCount()) || (yy > GetEndOfLastCol())) if ((row >= GetRowCount()) || (yy > GetEndOfLastCol()))
{ {
RemoveDropHint(); RemoveDropHint();
return wxDragNone; return wxDragNone;
} }
wxDataViewItem item = GetItemByRow( row ); wxDataViewItem item = GetItemByRow( row );
wxDataViewModel *model = GetOwner()->GetModel(); wxDataViewModel *model = GetOwner()->GetModel();
wxDataViewEvent event( wxEVT_COMMAND_DATAVIEW_ITEM_DROP_POSSIBLE, m_owner->GetId() ); wxDataViewEvent event( wxEVT_COMMAND_DATAVIEW_ITEM_DROP_POSSIBLE, m_owner->GetId() );
event.SetEventObject( m_owner ); event.SetEventObject( m_owner );
event.SetItem( item ); event.SetItem( item );
@@ -1414,13 +1429,13 @@ wxDragResult wxDataViewMainWindow::OnDragOver( wxDataFormat format, wxCoord x, w
return wxDragNone; return wxDragNone;
} }
if (m_dropHint && (row != m_dropHintLine)) if (m_dropHint && (row != m_dropHintLine))
RefreshRow( m_dropHintLine ); RefreshRow( m_dropHintLine );
m_dropHint = true; m_dropHint = true;
m_dropHintLine = row; m_dropHintLine = row;
RefreshRow( row ); RefreshRow( row );
return def; return def;
} }
@@ -1437,9 +1452,9 @@ bool wxDataViewMainWindow::OnDrop( wxDataFormat format, wxCoord x, wxCoord y )
return false; return false;
wxDataViewItem item = GetItemByRow( row ); wxDataViewItem item = GetItemByRow( row );
wxDataViewModel *model = GetOwner()->GetModel(); wxDataViewModel *model = GetOwner()->GetModel();
wxDataViewEvent event( wxEVT_COMMAND_DATAVIEW_ITEM_DROP_POSSIBLE, m_owner->GetId() ); wxDataViewEvent event( wxEVT_COMMAND_DATAVIEW_ITEM_DROP_POSSIBLE, m_owner->GetId() );
event.SetEventObject( m_owner ); event.SetEventObject( m_owner );
event.SetItem( item ); event.SetItem( item );
@@ -1465,9 +1480,9 @@ wxDragResult wxDataViewMainWindow::OnData( wxDataFormat format, wxCoord x, wxCoo
return wxDragNone; return wxDragNone;
wxDataViewItem item = GetItemByRow( row ); wxDataViewItem item = GetItemByRow( row );
wxDataViewModel *model = GetOwner()->GetModel(); wxDataViewModel *model = GetOwner()->GetModel();
wxCustomDataObject *obj = (wxCustomDataObject *) GetDropTarget()->GetDataObject(); wxCustomDataObject *obj = (wxCustomDataObject *) GetDropTarget()->GetDataObject();
wxDataViewEvent event( wxEVT_COMMAND_DATAVIEW_ITEM_DROP, m_owner->GetId() ); wxDataViewEvent event( wxEVT_COMMAND_DATAVIEW_ITEM_DROP, m_owner->GetId() );
@@ -1520,9 +1535,9 @@ wxBitmap wxDataViewMainWindow::CreateItemBitmap( unsigned int row, int &indent )
dc.SetPen( *wxBLACK_PEN ); dc.SetPen( *wxBLACK_PEN );
dc.SetBrush( *wxWHITE_BRUSH ); dc.SetBrush( *wxWHITE_BRUSH );
dc.DrawRectangle( 0,0,width,height ); dc.DrawRectangle( 0,0,width,height );
wxDataViewModel *model = m_owner->GetModel(); wxDataViewModel *model = m_owner->GetModel();
wxDataViewColumn *expander = GetOwner()->GetExpanderColumn(); wxDataViewColumn *expander = GetOwner()->GetExpanderColumn();
if (!expander) if (!expander)
{ {
@@ -1530,8 +1545,8 @@ wxBitmap wxDataViewMainWindow::CreateItemBitmap( unsigned int row, int &indent )
expander = GetOwner()->GetColumnAt( 0 ); expander = GetOwner()->GetColumnAt( 0 );
GetOwner()->SetExpanderColumn(expander); GetOwner()->SetExpanderColumn(expander);
} }
int x = 0; int x = 0;
for (col = 0; col < cols; col++) for (col = 0; col < cols; col++)
{ {
@@ -1542,10 +1557,10 @@ wxBitmap wxDataViewMainWindow::CreateItemBitmap( unsigned int row, int &indent )
continue; // skip it! continue; // skip it!
width = column->GetWidth(); width = column->GetWidth();
if (column == expander) if (column == expander)
width -= indent; width -= indent;
wxVariant value; wxVariant value;
wxDataViewItem item = GetItemByRow( row ); wxDataViewItem item = GetItemByRow( row );
model->GetValue( value, item, column->GetModelColumn()); model->GetValue( value, item, column->GetModelColumn());
@@ -1564,7 +1579,7 @@ wxBitmap wxDataViewMainWindow::CreateItemBitmap( unsigned int row, int &indent )
size.x = wxMin( 2*PADDING_RIGHTLEFT + size.x, width ); size.x = wxMin( 2*PADDING_RIGHTLEFT + size.x, width );
size.y = height; size.y = height;
wxRect item_rect(x, 0, size.x, size.y); wxRect item_rect(x, 0, size.x, size.y);
int align = cell->CalculateAlignment(); int align = cell->CalculateAlignment();
// horizontal alignment: // horizontal alignment:
item_rect.x = x; item_rect.x = x;
@@ -1589,13 +1604,16 @@ wxBitmap wxDataViewMainWindow::CreateItemBitmap( unsigned int row, int &indent )
//dc.SetClippingRegion( item_rect ); //dc.SetClippingRegion( item_rect );
cell->Render( item_rect, &dc, 0 ); cell->Render( item_rect, &dc, 0 );
//dc.DestroyClippingRegion(); //dc.DestroyClippingRegion();
x += width; x += width;
} }
return bitmap; return bitmap;
} }
#endif // wxUSE_DRAG_AND_DROP
void wxDataViewMainWindow::OnPaint( wxPaintEvent &WXUNUSED(event) ) void wxDataViewMainWindow::OnPaint( wxPaintEvent &WXUNUSED(event) )
{ {
wxDataViewModel *model = GetOwner()->GetModel(); wxDataViewModel *model = GetOwner()->GetModel();
@@ -1713,14 +1731,17 @@ void wxDataViewMainWindow::OnPaint( wxPaintEvent &WXUNUSED(event) )
); );
} }
} }
#if wxUSE_DRAG_AND_DROP
if (m_dropHint) if (m_dropHint)
{ {
wxRect rect( x_start, GetLineStart( m_dropHintLine ), x_last, GetLineHeight( m_dropHintLine ) ); wxRect rect( x_start, GetLineStart( m_dropHintLine ),
x_last, GetLineHeight( m_dropHintLine ) );
dc.SetPen( *wxBLACK_PEN ); dc.SetPen( *wxBLACK_PEN );
dc.SetBrush( *wxTRANSPARENT_BRUSH ); dc.SetBrush( *wxTRANSPARENT_BRUSH );
dc.DrawRectangle( rect ); dc.DrawRectangle( rect );
} }
#endif // wxUSE_DRAG_AND_DROP
wxDataViewColumn *expander = GetOwner()->GetExpanderColumn(); wxDataViewColumn *expander = GetOwner()->GetExpanderColumn();
if (!expander) if (!expander)
@@ -2818,17 +2839,17 @@ bool wxDataViewMainWindow::IsExpanded( unsigned int row ) const
{ {
if (IsVirtualList()) if (IsVirtualList())
return false; return false;
wxDataViewTreeNode * node = GetTreeNodeByRow(row); wxDataViewTreeNode * node = GetTreeNodeByRow(row);
if (!node) if (!node)
return false; return false;
if (!node->HasChildren()) if (!node->HasChildren())
{ {
delete node; delete node;
return false; return false;
} }
return node->IsOpen(); return node->IsOpen();
} }
@@ -2920,7 +2941,7 @@ wxDataViewTreeNode * wxDataViewMainWindow::FindNode( const wxDataViewItem & item
wxDataViewModel * model = GetOwner()->GetModel(); wxDataViewModel * model = GetOwner()->GetModel();
if( model == NULL ) if( model == NULL )
return NULL; return NULL;
if (!item.IsOk()) if (!item.IsOk())
return m_root; return m_root;
@@ -3124,7 +3145,7 @@ static void BuildTreeHelper( wxDataViewModel * model, wxDataViewItem & item, wx
wxDataViewItemArray children; wxDataViewItemArray children;
unsigned int num = model->GetChildren( item, children); unsigned int num = model->GetChildren( item, children);
unsigned int index = 0; unsigned int index = 0;
while( index < num ) while( index < num )
{ {
@@ -3365,6 +3386,7 @@ void wxDataViewMainWindow::OnMouse( wxMouseEvent &event )
wxDataViewModel *model = GetOwner()->GetModel(); wxDataViewModel *model = GetOwner()->GetModel();
#if wxUSE_DRAG_AND_DROP
if (event.Dragging()) if (event.Dragging())
{ {
if (m_dragCount == 0) if (m_dragCount == 0)
@@ -3393,14 +3415,14 @@ void wxDataViewMainWindow::OnMouse( wxMouseEvent &event )
event.SetModel( model ); event.SetModel( model );
if (!m_owner->HandleWindowEvent( event )) if (!m_owner->HandleWindowEvent( event ))
return; return;
if (!event.IsAllowed()) if (!event.IsAllowed())
return; return;
wxDataObject *obj = event.GetDataObject(); wxDataObject *obj = event.GetDataObject();
if (!obj) if (!obj)
return; return;
wxDataViewDropSource drag( this, drag_item_row ); wxDataViewDropSource drag( this, drag_item_row );
drag.SetData( *obj ); drag.SetData( *obj );
/* wxDragResult res = */ drag.DoDragDrop(); /* wxDragResult res = */ drag.DoDragDrop();
@@ -3412,6 +3434,7 @@ void wxDataViewMainWindow::OnMouse( wxMouseEvent &event )
{ {
m_dragCount = 0; m_dragCount = 0;
} }
#endif // wxUSE_DRAG_AND_DROP
bool forceClick = false; bool forceClick = false;
@@ -3795,6 +3818,8 @@ bool wxDataViewCtrl::AssociateModel( wxDataViewModel *model )
return true; return true;
} }
#if wxUSE_DRAG_AND_DROP
bool wxDataViewCtrl::EnableDragSource( const wxDataFormat &format ) bool wxDataViewCtrl::EnableDragSource( const wxDataFormat &format )
{ {
return m_clientArea->EnableDragSource( format ); return m_clientArea->EnableDragSource( format );
@@ -3805,6 +3830,8 @@ bool wxDataViewCtrl::EnableDropTarget( const wxDataFormat &format )
return m_clientArea->EnableDropTarget( format ); return m_clientArea->EnableDropTarget( format );
} }
#endif // wxUSE_DRAG_AND_DROP
bool wxDataViewCtrl::AppendColumn( wxDataViewColumn *col ) bool wxDataViewCtrl::AppendColumn( wxDataViewColumn *col )
{ {
if (!wxDataViewCtrlBase::AppendColumn(col)) if (!wxDataViewCtrlBase::AppendColumn(col))
@@ -3982,20 +4009,20 @@ void wxDataViewCtrl::SetSelections( const wxDataViewItemArray & sel )
if (parent != last_parent) if (parent != last_parent)
ExpandAncestors(item); ExpandAncestors(item);
} }
last_parent = parent; last_parent = parent;
int row = m_clientArea->GetRowByItem( item ); int row = m_clientArea->GetRowByItem( item );
if( row >= 0 ) if( row >= 0 )
selection.Add( static_cast<unsigned int>(row) ); selection.Add( static_cast<unsigned int>(row) );
} }
m_clientArea->SetSelections( selection ); m_clientArea->SetSelections( selection );
} }
void wxDataViewCtrl::Select( const wxDataViewItem & item ) void wxDataViewCtrl::Select( const wxDataViewItem & item )
{ {
ExpandAncestors( item ); ExpandAncestors( item );
int row = m_clientArea->GetRowByItem( item ); int row = m_clientArea->GetRowByItem( item );
if( row >= 0 ) if( row >= 0 )
{ {
@@ -4120,7 +4147,7 @@ void wxDataViewCtrl::EnsureVisible( int row, int column )
void wxDataViewCtrl::EnsureVisible( const wxDataViewItem & item, const wxDataViewColumn * column ) void wxDataViewCtrl::EnsureVisible( const wxDataViewItem & item, const wxDataViewColumn * column )
{ {
ExpandAncestors( item ); ExpandAncestors( item );
m_clientArea->RecalculateDisplay(); m_clientArea->RecalculateDisplay();
int row = m_clientArea->GetRowByItem(item); int row = m_clientArea->GetRowByItem(item);