git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@24581
c3d73ce0-8a6f-49c7-b76d-
6d57e0e08775
{
// evaluate the item
int h = theCtrl->GetLineHeight(this);
{
// evaluate the item
int h = theCtrl->GetLineHeight(this);
- if ((point.y > m_y) && (point.y < m_y + h))
+ if ((point.y > m_y) && (point.y <= m_y + h))
{
int y_mid = m_y + h/2;
if (point.y < y_mid )
{
int y_mid = m_y + h/2;
if (point.y < y_mid )
column = theCtrl->GetMainColumn(); //-1;
wxTreeListItem* res = HitTest(point, theCtrl, flags, level);
column = theCtrl->GetMainColumn(); //-1;
wxTreeListItem* res = HitTest(point, theCtrl, flags, level);
column = -1;
return res;
}
column = -1;
return res;
}
if (point.x >= theCtrl->m_owner->GetHeaderWindow()->GetWidth())
column = -1;
if (point.x >= theCtrl->m_owner->GetHeaderWindow()->GetWidth())
column = -1;
- else if(flags & wxTREE_HITTEST_ONITEMINDENT) {
+ else if (flags & wxTREE_HITTEST_ONITEMINDENT) {
- for(size_t i = 0; i < theCtrl->GetMainColumn(); ++i) {
+ for (int i = 0; i < column; ++i) {
int w = theCtrl->m_owner->GetHeaderWindow()->GetColumnWidth(i);
if(point.x >= x && point.x < x+w) {
flags ^= wxTREE_HITTEST_ONITEMINDENT;
int w = theCtrl->m_owner->GetHeaderWindow()->GetColumnWidth(i);
if(point.x >= x && point.x < x+w) {
flags ^= wxTREE_HITTEST_ONITEMINDENT;
column = i;
return res;
}
column = i;
return res;
}
- else if(flags & wxTREE_HITTEST_ONITEMRIGHT) {
+ else if (flags & wxTREE_HITTEST_ONITEMRIGHT) {
- size_t i;
- for(i = 0; i < theCtrl->GetMainColumn()+1; ++i) {
+ int i;
+ for (i = 0; i < column+1; ++i) {
x += theCtrl->m_owner->GetHeaderWindow()->GetColumnWidth(i);
}
x += theCtrl->m_owner->GetHeaderWindow()->GetColumnWidth(i);
}
- for(i = theCtrl->GetMainColumn()+1;
- i < theCtrl->GetColumnCount(); ++i) {
+ for (i = column+1; i < theCtrl->GetColumnCount(); ++i) {
int w = theCtrl->m_owner->GetHeaderWindow()->GetColumnWidth(i);
int w = theCtrl->m_owner->GetHeaderWindow()->GetColumnWidth(i);
- if(point.x >= x && point.x < x+w) {
+ if (point.x >= x && point.x < x+w) {
flags ^= wxTREE_HITTEST_ONITEMRIGHT;
flags |= wxTREE_HITTEST_ONITEMCOLUMN;
column = i;
return res;
}
flags ^= wxTREE_HITTEST_ONITEMRIGHT;
flags |= wxTREE_HITTEST_ONITEMCOLUMN;
column = i;
return res;
}
- wxClientDC dc(this);
- PrepareDC(dc);
- wxCoord x = dc.DeviceToLogicalX( point.x );
- wxCoord y = dc.DeviceToLogicalY( point.y );
- wxTreeListItem *hit = m_anchor->HitTest(wxPoint(x, y), this, flags,
- column, 0);
+ wxTreeListItem *hit = m_anchor->HitTest(CalcUnscrolledPosition(point),
+ this, flags, column, 0);
if (hit == NULL)
{
flags = wxTREE_HITTEST_NOWHERE;
if (hit == NULL)
{
flags = wxTREE_HITTEST_NOWHERE;
- GetClientSize( &cw, &ch );
+ //GetClientSize( &cw, &ch );
+ GetVirtualSize(&cw, &ch);
wxRect rect;
rect.x = dc.LogicalToDeviceX( 0 );
wxRect rect;
rect.x = dc.LogicalToDeviceX( 0 );
- GetClientSize( &cw, &ch );
+ //GetClientSize( &cw, &ch );
+ GetVirtualSize(&cw, &ch);
wxRect rect;
rect.x = dc.LogicalToDeviceX( 0 );
wxRect rect;
rect.x = dc.LogicalToDeviceX( 0 );
wxTreeItemId wxTreeListCtrl::HitTest(const wxPoint& pos, int& flags,
int& column)
{
wxTreeItemId wxTreeListCtrl::HitTest(const wxPoint& pos, int& flags,
int& column)
{
- return m_main_win->HitTest(m_main_win->ScreenToClient(ClientToScreen(pos)),
- flags, column);
+ return m_main_win->HitTest(pos, flags, column);
}
bool wxTreeListCtrl::GetBoundingRect(const wxTreeItemId& item, wxRect& rect,
}
bool wxTreeListCtrl::GetBoundingRect(const wxTreeItemId& item, wxRect& rect,