- int sc = rows*m_lineHeight/y;
- m_owner->Scroll(0, sc );
+ int sy = rows*m_lineHeight/y;
+ int sx = 0;
+ if( column != -1 )
+ {
+ wxRect rect = GetClientRect();
+ unsigned int colnum = 0;
+ unsigned int x_start = 0, x_end = 0, w = 0;
+ int xx, yy, xe;
+ m_owner->CalcUnscrolledPosition( rect.x, rect.y, &xx, &yy );
+ for (x_start = 0; colnum < column; colnum++)
+ {
+ wxDataViewColumn *col = GetOwner()->GetColumn(colnum);
+ if (col->IsHidden())
+ continue; // skip it!
+
+ w = col->GetWidth();
+ x_start += w;
+ }
+
+ x_end = x_start + w;
+ xe = xx + rect.width;
+ if( x_end > xe )
+ {
+ sx = ( xx + x_end - xe )/x;
+ }
+ if( x_start < xx )
+ {
+ sx = x_start/x;
+ }
+ }
+ m_owner->Scroll( sx, sy );