From 870a4f10501d3a9a7ee14759a4ad9d9a98c4c21d Mon Sep 17 00:00:00 2001 From: Don Ho Date: Sun, 18 Mar 2012 23:48:54 +0000 Subject: [PATCH] [ENHANCEMENT] Enhance doc map. git-svn-id: svn://svn.tuxfamily.org/svnroot/notepadplus/repository/trunk@885 f5eea248-9336-0410-98b8-ebc06183d4e3 --- .../WinControls/DocumentMap/documentMap.cpp | 24 ++++++++++++++----- 1 file changed, 18 insertions(+), 6 deletions(-) diff --git a/PowerEditor/src/WinControls/DocumentMap/documentMap.cpp b/PowerEditor/src/WinControls/DocumentMap/documentMap.cpp index 8092d133..35928295 100644 --- a/PowerEditor/src/WinControls/DocumentMap/documentMap.cpp +++ b/PowerEditor/src/WinControls/DocumentMap/documentMap.cpp @@ -176,14 +176,26 @@ void DocumentMap::scrollMap() _pScintillaEditView->execute(SCI_GOTOLINE, firstVisibleDocLine); // Get the editor's higher/lower Y, then compute the map's higher/lower Y - int higherPos = _pScintillaEditView->execute(SCI_POSITIONFROMLINE, firstVisibleDocLine); - int lowerPos = _pScintillaEditView->execute(SCI_POSITIONFROMLINE, lastVisibleDocLine); - int higherY = _pScintillaEditView->execute(SCI_POINTYFROMPOSITION, 0, higherPos); - int lowerY = _pScintillaEditView->execute(SCI_POINTYFROMPOSITION, 0, lowerPos); - if (lowerY == 0) + int higherY = 0; + int lowerY = 0; + if (!(*_ppEditView)->isWrap()) { + int higherPos = _pScintillaEditView->execute(SCI_POSITIONFROMLINE, firstVisibleDocLine); + int lowerPos = _pScintillaEditView->execute(SCI_POSITIONFROMLINE, lastVisibleDocLine); + higherY = _pScintillaEditView->execute(SCI_POINTYFROMPOSITION, 0, higherPos); + lowerY = _pScintillaEditView->execute(SCI_POINTYFROMPOSITION, 0, lowerPos); + if (lowerY == 0) + { + int lineHeight = _pScintillaEditView->execute(SCI_TEXTHEIGHT, firstVisibleDocLine); + lowerY = nbLine * lineHeight + firstVisibleDocLine; + } + } + else + { + int higherPos = (*_ppEditView)->execute(SCI_POSITIONFROMPOINT, 0, 0); + higherY = _pScintillaEditView->execute(SCI_POINTYFROMPOSITION, 0, higherPos); int lineHeight = _pScintillaEditView->execute(SCI_TEXTHEIGHT, firstVisibleDocLine); - lowerY = nbLine * lineHeight + firstVisibleDocLine; + lowerY = nbLine * lineHeight + higherY; } // Update view zone in map