+ int x = event.GetX();
+ int y = event.GetY();
+ m_owner->CalcUnscrolledPosition( x, y, &x, &y );
+
+ wxDataViewColumn *col = NULL;
+
+ int xpos = 0;
+ size_t cols = GetOwner()->GetNumberOfColumns();
+ size_t i;
+ for (i = 0; i < cols; i++)
+ {
+ wxDataViewColumn *c = GetOwner()->GetColumn( i );
+ if (x < xpos + c->GetWidth())
+ {
+ col = c;
+ break;
+ }
+ xpos += c->GetWidth();
+ }
+ if (!col)
+ return;
+ wxDataViewCell *cell = col->GetCell();
+
+ size_t row = y / m_lineHeight;
+
+ wxDataViewListModel *model = GetOwner()->GetModel();
+
+ if (event.LeftDClick())
+ {
+ if (cell->GetMode() == wxDATAVIEW_CELL_ACTIVATABLE)
+ {
+ wxVariant value;
+ model->GetValue( value, col->GetModelColumn(), row );
+ cell->SetValue( value );
+ wxRect cell_rect( xpos, row * m_lineHeight, col->GetWidth(), m_lineHeight );
+ cell->Activate( cell_rect, model, col->GetModelColumn(), row );
+ }
+
+ return;
+ }
+