From 402dfce7b324c977a5b396b07cd36835d5514e52 Mon Sep 17 00:00:00 2001 From: Vadim Zeitlin Date: Thu, 6 Apr 2006 14:27:34 +0000 Subject: [PATCH] GetBoundingRect() is supposed to return the logical coordinates, even in !textOnly case; also documented it git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@38604 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775 --- docs/latex/wx/treectrl.tex | 6 +++++- src/generic/treectlg.cpp | 14 +++++++++----- 2 files changed, 14 insertions(+), 6 deletions(-) diff --git a/docs/latex/wx/treectrl.tex b/docs/latex/wx/treectrl.tex index 176a038905..ad174cb31a 100644 --- a/docs/latex/wx/treectrl.tex +++ b/docs/latex/wx/treectrl.tex @@ -340,9 +340,13 @@ only the rectangle around the item's label will be returned, otherwise the item's image is also taken into account. The return value is {\tt true} if the rectangle was successfully retrieved or {\tt false} -if it was not (in this case {\it rect} is not changed) - for example, if the +if it was not (in this case {\it rect} is not changed) -- for example, if the item is currently invisible. +Notice that the rectangle coordinates are logical, not physical ones. So, for +example, the x coordinate may be negative if the tree has a horizontal +scrollbar and its position is not $0$. + \pythonnote{The wxPython version of this method requires only the {\tt item} and {\tt textOnly} parameters. The return value is either a {\tt wxRect} object or {\tt None}.} diff --git a/src/generic/treectlg.cpp b/src/generic/treectlg.cpp index 25576d2fb7..31b1d054a6 100644 --- a/src/generic/treectlg.cpp +++ b/src/generic/treectlg.cpp @@ -2887,12 +2887,9 @@ bool wxGenericTreeCtrl::GetBoundingRect(const wxTreeItemId& item, wxGenericTreeItem *i = (wxGenericTreeItem*) item.m_pItem; - int startX, startY; - GetViewStart(& startX, & startY); - if ( textOnly ) { - rect.x = i->GetX() - startX*PIXELS_PER_UNIT; + rect.x = i->GetX(); rect.width = i->GetWidth(); if ( m_imageListNormal ) @@ -2908,9 +2905,16 @@ bool wxGenericTreeCtrl::GetBoundingRect(const wxTreeItemId& item, rect.width = GetClientSize().x; } - rect.y = i->GetY() - startY*PIXELS_PER_UNIT; + rect.y = i->GetY(); rect.height = GetLineHeight(i); + // we have to return the logical coordinates, not physical ones + int startX, startY; + GetViewStart(& startX, & startY); + + rect.x -= startX*PIXELS_PER_UNIT; + rect.y -= startY*PIXELS_PER_UNIT; + return true; } -- 2.45.2