Patch 8.0.0286
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().
Files: src/screen.c
*** ../vim-8.0.0285/src/screen.c 2017-01-31 21:53:35.045154104 +0100
--- src/screen.c 2017-02-01 18:33:41.922442269 +0100
***************
*** 777,782 ****
--- 777,833 ----
#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,842 ****
/* 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
row = 0;
for (j = 0; j < wp->w_lines_valid; ++j)
{
--- 877,888 ----
/* Don't do anything if the screen structures are (not yet) valid. */
if (!screen_valid(TRUE) || updating_screen)
return;
if (lnum >= wp->w_topline && lnum < wp->w_botline
&& foldedCount(wp, lnum, &win_foldinfo) == 0)
{
! update_prepare();
!
row = 0;
for (j = 0; j < wp->w_lines_valid; ++j)
{
***************
*** 856,923 ****
}
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);
}
! # endif
}
#endif
--- 902,911 ----
}
row += wp->w_lines[j].wl_size;
}
! update_finish();
}
! need_cursor_line_redraw = FALSE;
}
#endif
*** ../vim-8.0.0285/src/version.c 2017-02-01 18:07:33.060643434 +0100
--- src/version.c 2017-02-01 18:35:14.009844134 +0100
***************
*** 766,767 ****
--- 766,769 ----
{ /* Add new patch number below this line */
+ /**/
+ 286,
/**/
--
BEDEVERE: Oooooh!
LAUNCELOT: No "Aaaaarrrrrrggghhh ... " at the back of the throat.
BEDEVERE: No! "Oooooh!" in surprise and alarm!
"Monty Python and the Holy Grail" PYTHON (MONTY) PICTURES LTD
/// Bram Moolenaar -- [email protected] -- http://www.Moolenaar.net \\\
/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
\\\ an exciting new programming language -- http://www.Zimbu.org ///
\\\ help me help AIDS victims -- http://ICCF-Holland.org ///
--
--
You received this message from the "vim_dev" maillist.
Do not top-post! Type your reply below the text you are replying to.
For more information, visit http://www.vim.org/maillist.php
---
You received this message because you are subscribed to the Google Groups
"vim_dev" group.
To unsubscribe from this group and stop receiving emails from it, send an email
to [email protected].
For more options, visit https://groups.google.com/d/optout.