implement smoother horizontal scrolling. If the new column is already visible without changing the previous scroll column, then don't change. If the new scroll column is prior to the old, then scroll backwards; else, scroll forwards.
This commit is contained in:
@@ -12,12 +12,13 @@ struct
|
||||
fun buildTextAndClear
|
||||
(app: app_type, buffer, cursorIdx, searchList, msgs, bufferModifyTime) =
|
||||
let
|
||||
val {windowWidth, windowHeight, startLine, searchString, ...} = app
|
||||
val {windowWidth, windowHeight, startLine, searchString,
|
||||
visualScrollColumn = prevScrollColumn, ...} = app
|
||||
|
||||
(* calculate scroll column *)
|
||||
val buffer = LineGap.goToIdx (cursorIdx, buffer)
|
||||
val visualScrollColumn =
|
||||
TextScroll.getScrollColumn (buffer, cursorIdx, windowWidth)
|
||||
TextScroll.getScrollColumn (buffer, cursorIdx, windowWidth, prevScrollColumn)
|
||||
|
||||
(* move LineGap to first line displayed on screen *)
|
||||
val buffer = LineGap.goToLine (startLine, buffer)
|
||||
@@ -86,12 +87,13 @@ struct
|
||||
, searchList
|
||||
, searchString
|
||||
, bufferModifyTime
|
||||
, visualScrollColumn = prevScrollColumn
|
||||
, ...
|
||||
} = app
|
||||
|
||||
val newBuffer = LineGap.goToIdx (cursorIdx, buffer)
|
||||
val visualScrollColumn =
|
||||
TextScroll.getScrollColumn (buffer, cursorIdx, newWidth)
|
||||
TextScroll.getScrollColumn (buffer, cursorIdx, newWidth, prevScrollColumn)
|
||||
val newBuffer = LineGap.goToLine (startLine, newBuffer)
|
||||
val lineIdx = TextBuilderUtils.getLineAbsIdxFromBuffer (startLine, buffer)
|
||||
|
||||
@@ -130,11 +132,12 @@ struct
|
||||
(app: app_type, buffer, cursorIdx, searchList, initialMsg, bufferModifyTime) :
|
||||
AppType.app_type =
|
||||
let
|
||||
val {windowWidth, windowHeight, startLine, searchString, ...} = app
|
||||
val {windowWidth, windowHeight, startLine, searchString, visualScrollColumn
|
||||
= prevScrollColumn, ...} = app
|
||||
|
||||
val buffer = LineGap.goToIdx (cursorIdx, buffer)
|
||||
val visualScrollColumn =
|
||||
TextScroll.getScrollColumn (buffer, cursorIdx, windowWidth)
|
||||
TextScroll.getScrollColumn (buffer, cursorIdx, windowWidth, prevScrollColumn)
|
||||
|
||||
(* move LineGap to first line displayed on screen *)
|
||||
val buffer = LineGap.goToLine (startLine, buffer)
|
||||
|
||||
@@ -57,6 +57,7 @@ struct
|
||||
, searchList
|
||||
, searchString
|
||||
, bufferModifyTime
|
||||
, visualScrollColumn = prevScrollColumn
|
||||
, ...
|
||||
} = app
|
||||
|
||||
@@ -69,7 +70,7 @@ struct
|
||||
|
||||
val buffer = LineGap.goToIdx (bufferIdx, buffer)
|
||||
val visualScrollColumn =
|
||||
TextScroll.getScrollColumn (buffer, bufferIdx, windowWidth)
|
||||
TextScroll.getScrollColumn (buffer, bufferIdx, windowWidth, prevScrollColumn)
|
||||
val bufferLine =
|
||||
let
|
||||
val maxHeight = windowHeight - TextConstants.ySpace
|
||||
@@ -124,6 +125,7 @@ struct
|
||||
, searchList
|
||||
, searchString
|
||||
, bufferModifyTime
|
||||
, visualScrollColumn = prevScrollColumn
|
||||
, ...
|
||||
} = app
|
||||
val buffer = LineGap.goToLine (reqLine, buffer)
|
||||
@@ -133,7 +135,7 @@ struct
|
||||
|
||||
val buffer = LineGap.goToIdx (cursorIdx, buffer)
|
||||
val visualScrollColumn =
|
||||
TextScroll.getScrollColumn (buffer, cursorIdx, windowWidth)
|
||||
TextScroll.getScrollColumn (buffer, cursorIdx, windowWidth, prevScrollColumn)
|
||||
val startLine = TextWindow.getStartLineWithCursorCentered
|
||||
(buffer, cursorIdx, origLine, windowWidth, windowHeight div 2)
|
||||
|
||||
@@ -179,7 +181,7 @@ struct
|
||||
, searchList
|
||||
, searchString
|
||||
, bufferModifyTime
|
||||
, visualScrollColumn
|
||||
, visualScrollColumn = prevScrollColumn
|
||||
, ...
|
||||
} = app
|
||||
|
||||
@@ -193,7 +195,7 @@ struct
|
||||
let
|
||||
val buffer = LineGap.goToIdx (cursorIdx, buffer)
|
||||
val visualScrollColumn =
|
||||
TextScroll.getScrollColumn (buffer, cursorIdx, windowWidth)
|
||||
TextScroll.getScrollColumn (buffer, cursorIdx, windowWidth, prevScrollColumn)
|
||||
val startLine = TextWindow.getStartLineWithCursorCentered
|
||||
(buffer, cursorIdx, startLine, windowWidth, windowHeight div 2)
|
||||
|
||||
|
||||
Reference in New Issue
Block a user