diff options
author | Bram Moolenaar <Bram@vim.org> | 2016-03-12 16:28:18 +0100 |
---|---|---|
committer | Bram Moolenaar <Bram@vim.org> | 2016-03-12 16:28:18 +0100 |
commit | b4ebf9ae3b93d082ab3b9f4aab2f6729f77fa46a (patch) | |
tree | 0d27a94b49e12cf8a2c7edd7aa77d6017d07c0e2 /src/gui_gtk_x11.c | |
parent | 583c1f14a4e1d89fe029b1c134d405357468ece7 (diff) | |
download | vim-git-b4ebf9ae3b93d082ab3b9f4aab2f6729f77fa46a.tar.gz |
patch 7.4.1545v7.4.1545
Problem: GTK3: horizontal cursor movement in Visual selection not good.
Solution: Make it work better. (Kazunobu Kuriyama)
Diffstat (limited to 'src/gui_gtk_x11.c')
-rw-r--r-- | src/gui_gtk_x11.c | 19 |
1 files changed, 16 insertions, 3 deletions
diff --git a/src/gui_gtk_x11.c b/src/gui_gtk_x11.c index 54723f7d0..aa4137ac5 100644 --- a/src/gui_gtk_x11.c +++ b/src/gui_gtk_x11.c @@ -650,7 +650,8 @@ gui_gtk3_should_draw_cursor(void) { unsigned int cond = 0; cond |= gui_gtk_is_blink_on(); - cond |= is_key_pressed; + if (gui.cursor_col >= gui.col) + cond |= is_key_pressed; cond |= gui.in_focus == FALSE; return cond; } @@ -686,17 +687,29 @@ draw_event(GtkWidget *widget, if (blink_mode) gui_gtk3_redraw(rect.x, rect.y, rect.width, rect.height); else - gui_redraw(rect.x, rect.y, rect.width, rect.height); + { + if (get_real_state() & VISUAL) + gui_gtk3_redraw(rect.x, rect.y, + rect.width, rect.height); + else + gui_redraw(rect.x, rect.y, rect.width, rect.height); + } } } cairo_rectangle_list_destroy(list); + if (get_real_state() & VISUAL) + { + if (gui.cursor_row == gui.row && gui.cursor_col >= gui.col) + gui_update_cursor(TRUE, TRUE); + } + cairo_paint(cr); } gui.by_signal = FALSE; /* Add the cursor to the window if necessary.*/ - if (gui_gtk3_should_draw_cursor()) + if (gui_gtk3_should_draw_cursor() && blink_mode) gui_gtk3_update_cursor(cr); return FALSE; |