aboutsummaryrefslogtreecommitdiff
path: root/src/nvim/mouse.c
diff options
context:
space:
mode:
authorzeertzjq <zeertzjq@outlook.com>2023-09-11 08:29:33 +0800
committerGitHub <noreply@github.com>2023-09-11 08:29:33 +0800
commit2b475cb5cc2196a32085fbbdfd7357cbb02a1cb0 (patch)
treeefbc40dc8fdb5391ce81b70afbfa81df7518c080 /src/nvim/mouse.c
parentaf0684f0d578631dae7d857cd065d81288be3cf2 (diff)
downloadrneovim-2b475cb5cc2196a32085fbbdfd7357cbb02a1cb0.tar.gz
rneovim-2b475cb5cc2196a32085fbbdfd7357cbb02a1cb0.tar.bz2
rneovim-2b475cb5cc2196a32085fbbdfd7357cbb02a1cb0.zip
fix(mouse): click on 'statuscolumn' with 'rightleft' (#25090)
Diffstat (limited to 'src/nvim/mouse.c')
-rw-r--r--src/nvim/mouse.c14
1 files changed, 12 insertions, 2 deletions
diff --git a/src/nvim/mouse.c b/src/nvim/mouse.c
index 76ac191a68..b8c80cadf5 100644
--- a/src/nvim/mouse.c
+++ b/src/nvim/mouse.c
@@ -220,7 +220,10 @@ static int get_fpos_of_mouse(pos_T *mpos)
// compute the position in the buffer line from the posn on the screen
bool below_buffer = mouse_comp_pos(wp, &row, &col, &mpos->lnum);
- if (!below_buffer && *wp->w_p_stc != NUL && mouse_col < win_col_off(wp)) {
+ if (!below_buffer && *wp->w_p_stc != NUL
+ && (wp->w_p_rl
+ ? wincol >= wp->w_width_inner - win_col_off(wp)
+ : wincol < win_col_off(wp))) {
return MOUSE_STATUSCOL;
}
@@ -675,6 +678,10 @@ popupexit:
click_col = mouse_col;
}
+ if (in_statuscol && wp->w_p_rl) {
+ click_col = wp->w_width_inner - click_col - 1;
+ }
+
if (click_defs != NULL) {
switch (click_defs[click_col].type) {
case kStlClickDisabled:
@@ -1254,7 +1261,10 @@ retnomove:
on_sep_line = grid == DEFAULT_GRID_HANDLE && col >= wp->w_width && col - wp->w_width + 1 == 1;
on_winbar = row == -1 && wp->w_winbar_height != 0;
on_statuscol = !below_window && !on_status_line && !on_sep_line && !on_winbar
- && *wp->w_p_stc != NUL && col < win_col_off(wp);
+ && *wp->w_p_stc != NUL
+ && (wp->w_p_rl
+ ? col >= wp->w_width_inner - win_col_off(wp)
+ : col < win_col_off(wp));
// The rightmost character of the status line might be a vertical
// separator character if there is no connecting window to the right.