summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorBram Moolenaar <Bram@vim.org>2017-02-01 18:37:14 +0100
committerBram Moolenaar <Bram@vim.org>2017-02-01 18:37:14 +0100
commitc10f0e7cb0f35eea489b038e56c87b818eee975b (patch)
tree7e275aaf27540e86ecc26cc720e723f6a90b96a0 /src
parentc386267ffe1eb7ddf11794ade4f97d8b6b534588 (diff)
downloadvim-c10f0e7cb0f35eea489b038e56c87b818eee975b.zip
patch 8.0.0286: not always redrawing after screen resize
Problem: When concealing is active and the screen is resized in the GUI it is not immediately redrawn. Solution: Use update_prepare() and update_finish() from update_single_line().
Diffstat (limited to 'src')
-rw-r--r--src/screen.c122
-rw-r--r--src/version.c2
2 files changed, 57 insertions, 67 deletions
diff --git a/src/screen.c b/src/screen.c
index fe366c995..a392a9212 100644
--- a/src/screen.c
+++ b/src/screen.c
@@ -777,6 +777,57 @@ update_screen(int type)
#endif
}
+#if defined(FEAT_SIGNS) || defined(FEAT_GUI) || defined(FEAT_CONCEAL)
+/*
+ * Prepare for updating one or more windows.
+ * Caller must check for "updating_screen" already set to avoid recursiveness.
+ */
+ static void
+update_prepare(void)
+{
+ cursor_off();
+ updating_screen = TRUE;
+#ifdef FEAT_GUI
+ /* Remove the cursor before starting to do anything, because scrolling may
+ * make it difficult to redraw the text under it. */
+ if (gui.in_use)
+ gui_undraw_cursor();
+#endif
+#ifdef FEAT_SEARCH_EXTRA
+ start_search_hl();
+#endif
+}
+
+/*
+ * Finish updating one or more windows.
+ */
+ static void
+update_finish(void)
+{
+ if (redraw_cmdline)
+ showmode();
+
+# ifdef FEAT_SEARCH_EXTRA
+ end_search_hl();
+# endif
+
+ updating_screen = FALSE;
+
+# ifdef FEAT_GUI
+ gui_may_resize_shell();
+
+ /* Redraw the cursor and update the scrollbars when all screen updating is
+ * done. */
+ if (gui.in_use)
+ {
+ out_flush(); /* required before updating the cursor */
+ gui_update_cursor(FALSE, FALSE);
+ gui_update_scrollbars(FALSE);
+ }
+# endif
+}
+#endif
+
#if defined(FEAT_CONCEAL) || defined(PROTO)
/*
* Return TRUE if the cursor line in window "wp" may be concealed, according
@@ -826,17 +877,12 @@ update_single_line(win_T *wp, linenr_T lnum)
/* Don't do anything if the screen structures are (not yet) valid. */
if (!screen_valid(TRUE) || updating_screen)
return;
- updating_screen = TRUE;
if (lnum >= wp->w_topline && lnum < wp->w_botline
&& foldedCount(wp, lnum, &win_foldinfo) == 0)
{
-# ifdef FEAT_GUI
- /* Remove the cursor before starting to do anything, because scrolling
- * may make it difficult to redraw the text under it. */
- if (gui.in_use)
- gui_undraw_cursor();
-# endif
+ update_prepare();
+
row = 0;
for (j = 0; j < wp->w_lines_valid; ++j)
{
@@ -856,68 +902,10 @@ update_single_line(win_T *wp, linenr_T lnum)
}
row += wp->w_lines[j].wl_size;
}
-# ifdef FEAT_GUI
- /* Redraw the cursor */
- if (gui.in_use)
- {
- out_flush(); /* required before updating the cursor */
- gui_update_cursor(FALSE, FALSE);
- }
-# endif
- }
- need_cursor_line_redraw = FALSE;
- updating_screen = FALSE;
-}
-#endif
-
-#if defined(FEAT_SIGNS) || defined(FEAT_GUI)
-/*
- * Prepare for updating one or more windows.
- * Caller must check for "updating_screen" already set to avoid recursiveness.
- */
- static void
-update_prepare(void)
-{
- cursor_off();
- updating_screen = TRUE;
-#ifdef FEAT_GUI
- /* Remove the cursor before starting to do anything, because scrolling may
- * make it difficult to redraw the text under it. */
- if (gui.in_use)
- gui_undraw_cursor();
-#endif
-#ifdef FEAT_SEARCH_EXTRA
- start_search_hl();
-#endif
-}
-
-/*
- * Finish updating one or more windows.
- */
- static void
-update_finish(void)
-{
- if (redraw_cmdline)
- showmode();
-
-# ifdef FEAT_SEARCH_EXTRA
- end_search_hl();
-# endif
- updating_screen = FALSE;
-
-# ifdef FEAT_GUI
- gui_may_resize_shell();
-
- /* Redraw the cursor and update the scrollbars when all screen updating is
- * done. */
- if (gui.in_use)
- {
- out_flush(); /* required before updating the cursor */
- gui_update_cursor(FALSE, FALSE);
- gui_update_scrollbars(FALSE);
+ update_finish();
}
-# endif
+ need_cursor_line_redraw = FALSE;
}
#endif
diff --git a/src/version.c b/src/version.c
index e47b0d3a5..4a3c971e6 100644
--- a/src/version.c
+++ b/src/version.c
@@ -765,6 +765,8 @@ static char *(features[]) =
static int included_patches[] =
{ /* Add new patch number below this line */
/**/
+ 286,
+/**/
285,
/**/
284,