]> git.ipfire.org Git - thirdparty/vim.git/commitdiff
patch 9.1.0856: mouseshape might be wrong on r and gr v9.1.0856
authorYee Cheng Chin <ychin.git@gmail.com>
Mon, 11 Nov 2024 20:57:27 +0000 (21:57 +0100)
committerChristian Brabandt <cb@256bit.org>
Mon, 11 Nov 2024 20:57:27 +0000 (21:57 +0100)
Problem:  mouseshape might be wrong on r and gr
Solution: call update_mousesape(-1) immediately
          (Yee Cheng Chin)

Currently, when entering the "pretend" or single character replace modes
using `r` or `gr`, the mouse cursor doesn't immediately update until you
have re-focused the window or moved the mouse. This is because it's not
calling `update_mouseshape(-1)` immediately, so the cursor will only be
updated when it's called by other functions like `gui_mouse_focus`.

To fix this, just make sure we call this `update_mouseshape(-1)`. It's
what we do when entering Insert or Replace modes for example.

I noticed this when trying to figure out why MacVim CI is failing in
`Test_mouse_shape_after_cancelling_gr` (introduced in #12110), but I
think that test is only passing in Vim GTK CI by accident, since this
issue happens there too. I think the window captured focus after the
mouse `gr` call which triggers a mouse shape change but it probably
would have failed under other circumstances.

fixes: #14660
closes: #12157

Signed-off-by: Yee Cheng Chin <ychin.git@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
src/normal.c
src/version.c

index b0540050ad003bd7be5e5ce42969f65c2edf0316..9e617d92674a52247348b801ab59eb71a2c85595 100644 (file)
@@ -417,6 +417,9 @@ normal_cmd_get_more_chars(
            State = MODE_REPLACE;       // pretend Replace mode
 #ifdef CURSOR_SHAPE
            ui_cursor_shape();  // show different cursor shape
+#endif
+#ifdef FEAT_MOUSESHAPE
+           update_mouseshape(-1);
 #endif
        }
        if (lang && curbuf->b_p_iminsert == B_IMODE_LMAP)
index 22473eb55b70ab6757f80870d15e7998997c938d..4f66b3de2407fa1ae2e1610398ac13f91677d6d8 100644 (file)
@@ -704,6 +704,8 @@ static char *(features[]) =
 
 static int included_patches[] =
 {   /* Add new patch number below this line */
+/**/
+    856,
 /**/
     855,
 /**/