diff options
Diffstat (limited to 'src/Editor.cxx')
-rw-r--r-- | src/Editor.cxx | 15 |
1 files changed, 9 insertions, 6 deletions
diff --git a/src/Editor.cxx b/src/Editor.cxx index 04d61bea6..9e81a2ef3 100644 --- a/src/Editor.cxx +++ b/src/Editor.cxx @@ -377,9 +377,10 @@ SelectionPosition Editor::ClampPositionIntoDocument(SelectionPosition sp) const } Point Editor::LocationFromPosition(SelectionPosition pos, PointEnd pe) { + const PRectangle rcClient = GetTextRectangle(); RefreshStyleData(); AutoSurface surface(this); - return view.LocationFromPosition(surface, *this, pos, topLine, vs, pe); + return view.LocationFromPosition(surface, *this, pos, topLine, vs, pe, rcClient); } Point Editor::LocationFromPosition(Sci::Position pos, PointEnd pe) { @@ -395,11 +396,12 @@ SelectionPosition Editor::SPositionFromLocation(Point pt, bool canReturnInvalid, RefreshStyleData(); AutoSurface surface(this); + PRectangle rcClient = GetTextRectangle(); + // May be in scroll view coordinates so translate back to main view + const Point ptOrigin = GetVisibleOriginInMain(); + rcClient.Move(-ptOrigin.x, -ptOrigin.y); + if (canReturnInvalid) { - PRectangle rcClient = GetTextRectangle(); - // May be in scroll view coordinates so translate back to main view - const Point ptOrigin = GetVisibleOriginInMain(); - rcClient.Move(-ptOrigin.x, -ptOrigin.y); if (!rcClient.Contains(pt)) return SelectionPosition(INVALID_POSITION); if (pt.x < vs.textStart) @@ -408,7 +410,8 @@ SelectionPosition Editor::SPositionFromLocation(Point pt, bool canReturnInvalid, return SelectionPosition(INVALID_POSITION); } const PointDocument ptdoc = DocumentPointFromView(pt); - return view.SPositionFromLocation(surface, *this, ptdoc, canReturnInvalid, charPosition, virtualSpace, vs); + return view.SPositionFromLocation(surface, *this, ptdoc, canReturnInvalid, + charPosition, virtualSpace, vs, rcClient); } Sci::Position Editor::PositionFromLocation(Point pt, bool canReturnInvalid, bool charPosition) { |