From e9c87e958132b9f103b58e13cfb37a864f5edd02 Mon Sep 17 00:00:00 2001 From: nyamatongwe Date: Mon, 18 Feb 2013 14:32:16 +1100 Subject: Fix drawing of markers at negative coordinates due to integer truncation. For elastic over-shoot scrolling, Scintilla may draw lines before 0 so draws markers at negative coordinates. Normal float->int coercion uses truncation so that markers will be drawn a pixel away from where they should be for consistent placement within the marker space. If scrolling causes drawing in slices, a line may be drawn twice. --- src/LineMarker.cxx | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) (limited to 'src/LineMarker.cxx') diff --git a/src/LineMarker.cxx b/src/LineMarker.cxx index 9b7f1cddc..94513f5d0 100644 --- a/src/LineMarker.cxx +++ b/src/LineMarker.cxx @@ -6,6 +6,7 @@ // The License.txt file describes the conditions under which this software may be distributed. #include +#include #include #include @@ -112,8 +113,8 @@ void LineMarker::Draw(Surface *surface, PRectangle &rcWhole, Font &fontForCharac rc.bottom--; int minDim = Platform::Minimum(rc.Width(), rc.Height()); minDim--; // Ensure does not go beyond edge - int centreX = (rc.right + rc.left) / 2; - int centreY = (rc.bottom + rc.top) / 2; + int centreX = floor((rc.right + rc.left) / 2.0); + int centreY = floor((rc.bottom + rc.top) / 2.0); int dimOn2 = minDim / 2; int dimOn4 = minDim / 4; int blobSize = dimOn2-1; -- cgit v1.2.3