aboutsummaryrefslogtreecommitdiffhomepage
path: root/win32/ScintillaWin.cxx
diff options
context:
space:
mode:
Diffstat (limited to 'win32/ScintillaWin.cxx')
-rw-r--r--win32/ScintillaWin.cxx17
1 files changed, 15 insertions, 2 deletions
diff --git a/win32/ScintillaWin.cxx b/win32/ScintillaWin.cxx
index 1293d0737..ccf7402a1 100644
--- a/win32/ScintillaWin.cxx
+++ b/win32/ScintillaWin.cxx
@@ -847,12 +847,25 @@ void ScintillaWin::ScrollText(int linesToMove) {
::UpdateWindow(MainHWND());
}
+// Change the scroll position but avoid repaint if changing to same value
+static void ChangeScrollPos(HWND w, int barType, int pos) {
+ SCROLLINFO sci = {
+ sizeof(sci),0,0,0,0,0,0
+ };
+ sci.fMask = SIF_POS;
+ ::GetScrollInfo(w, barType, &sci);
+ if (sci.nPos != pos) {
+ sci.nPos = pos;
+ ::SetScrollInfo(w, barType, &sci, TRUE);
+ }
+}
+
void ScintillaWin::SetVerticalScrollPos() {
- ::SetScrollPos(MainHWND(), SB_VERT, topLine, TRUE);
+ ChangeScrollPos(MainHWND(), SB_VERT, topLine);
}
void ScintillaWin::SetHorizontalScrollPos() {
- ::SetScrollPos(MainHWND(), SB_HORZ, xOffset, TRUE);
+ ChangeScrollPos(MainHWND(), SB_HORZ, xOffset);
}
bool ScintillaWin::ModifyScrollBars(int nMax, int nPage) {