From 985dfffb700fbfec796df63a6aee7d6bb0a61b84 Mon Sep 17 00:00:00 2001 From: Matt Ward Date: Mon, 27 Mar 2006 17:06:03 +0000 Subject: [PATCH] SD2-413 - Bookmark marker not redrawn correctly after being partially covered by another window. git-svn-id: svn://svn.sharpdevelop.net/sharpdevelop/branches/2.0@1241 1ccf3a8d-04fe-1044-b7c0-cef0b8235c61 --- .../Project/Src/Gui/IconBarMargin.cs | 17 +++++++++++++++-- 1 file changed, 15 insertions(+), 2 deletions(-) diff --git a/src/Libraries/ICSharpCode.TextEditor/Project/Src/Gui/IconBarMargin.cs b/src/Libraries/ICSharpCode.TextEditor/Project/Src/Gui/IconBarMargin.cs index e1a90d4593..065910546c 100644 --- a/src/Libraries/ICSharpCode.TextEditor/Project/Src/Gui/IconBarMargin.cs +++ b/src/Libraries/ICSharpCode.TextEditor/Project/Src/Gui/IconBarMargin.cs @@ -54,8 +54,9 @@ namespace ICSharpCode.TextEditor // paint icons foreach (Bookmark mark in textArea.Document.BookmarkManager.Marks) { int lineNumber = textArea.Document.GetVisibleLine(mark.LineNumber); - int yPos = (int)(lineNumber * textArea.TextView.FontHeight) - textArea.VirtualTop.Y; - if (yPos >= rect.Y && yPos <= rect.Bottom) { + int lineHeight = textArea.TextView.FontHeight; + int yPos = (int)(lineNumber * lineHeight) - textArea.VirtualTop.Y; + if (IsLineInsideRegion(yPos, yPos + lineHeight, rect.Y, rect.Bottom)) { if (lineNumber == textArea.Document.GetVisibleLine(mark.LineNumber - 1)) { // marker is inside folded region, do not draw it continue; @@ -230,5 +231,17 @@ namespace ICSharpCode.TextEditor } #endregion + + static bool IsLineInsideRegion(int top, int bottom, int regionTop, int regionBottom) + { + if (top >= regionTop && top <= regionBottom) { + // Region overlaps the line's top edge. + return true; + } else if(regionTop > top && regionTop < bottom) { + // Region's top edge inside line. + return true; + } + return false; + } } }