]> git.ipfire.org Git - thirdparty/vim.git/commit
patch 9.0.1747: screenpos() may cause unnecessary redraw v9.0.1747
authorzeertzjq <zeertzjq@outlook.com>
Sat, 19 Aug 2023 12:12:42 +0000 (14:12 +0200)
committerChristian Brabandt <cb@256bit.org>
Sat, 19 Aug 2023 12:12:42 +0000 (14:12 +0200)
commit6235a109c48ff2559eca3b16578c429ffb61eadc
treeaee0f6d73bb544ab3b7f36e2893d60a2142c3e2c
parent28ae5a32fd071b9c5881c3c33f531191ed641e55
patch 9.0.1747: screenpos() may cause unnecessary redraw

Problem:  screenpos() may cause unnecessary redraw.
Solution: Don't unnecessarily reset VALID_WROW flag.

VALID_WROW flag is only used by two functions: validate_cursor() and
cursor_valid(), and cursor_valid() is only used once in ex_sleep().
When adjust_plines_for_skipcol() was first added in patch 9.0.0640, it
was called in two functions: comp_botline() and curs_rows().
- comp_botline() is called in two places:
  - onepage(), which resets VALID_WROW flag immediately afterwards.
  - validate_botline_win(), where resetting a VALID_ flag is strange.
- curs_rows() is called in two places:
  - curs_columns(), which sets VALID_WROW flag afterwards.
  - validate_cline_row(), which is only used by GUI mouse focus.

Therefore resetting VALID_WROW there doesn't seem to do anything useful.
Also, a w_skipcol check (which resets VALID_WROW flag) was added to
check_cursor_moved() in patch 9.0.0734, which seems to make more sense
than resetting that flag in the middle of a computation.

While at it make adjust_plines_for_skipcol() and textpos2screenpos() a
bit less confusing:
- Make adjust_plines_for_skipcol() return "off" instead of "n - off".
- Use 0-based "row" in textpos2screenpos() until W_WINROW is added.

closes: #12832

Signed-off-by: Christian Brabandt <cb@256bit.org>
Co-authored-by: zeertzjq <zeertzjq@outlook.com>
src/drawscreen.c
src/move.c
src/proto/move.pro
src/version.c