diff --git a/7.4.869 b/7.4.869 new file mode 100644 index 0000000..f12c024 --- /dev/null +++ b/7.4.869 @@ -0,0 +1,143 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.4.869 +Fcc: outbox +From: Bram Moolenaar +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.4.869 +Problem: MS-Windows: scrolling may cause text to disappear when using an + Intel GPU. +Solution: Call GetPixel(). (Yohei Endo) +Files: src/gui_w48.c + + +*** ../vim-7.4.868/src/gui_w48.c 2015-09-15 14:12:01.382632522 +0200 +--- src/gui_w48.c 2015-09-15 17:57:35.316887514 +0200 +*************** +*** 2389,2395 **** + return; + + if (first_tabpage->tp_next != NULL) +! add_tabline_popup_menu_entry(tab_pmenu, + TABLINE_MENU_CLOSE, _("Close tab")); + add_tabline_popup_menu_entry(tab_pmenu, TABLINE_MENU_NEW, _("New tab")); + add_tabline_popup_menu_entry(tab_pmenu, TABLINE_MENU_OPEN, +--- 2389,2395 ---- + return; + + if (first_tabpage->tp_next != NULL) +! add_tabline_popup_menu_entry(tab_pmenu, + TABLINE_MENU_CLOSE, _("Close tab")); + add_tabline_popup_menu_entry(tab_pmenu, TABLINE_MENU_NEW, _("New tab")); + add_tabline_popup_menu_entry(tab_pmenu, TABLINE_MENU_OPEN, +*************** +*** 2931,2940 **** + + base_width = gui_get_base_width() + + (GetSystemMetrics(SM_CXFRAME) + +! GetSystemMetrics(SM_CXPADDEDBORDER)) * 2; + base_height = gui_get_base_height() + + (GetSystemMetrics(SM_CYFRAME) + +! GetSystemMetrics(SM_CXPADDEDBORDER)) * 2 + + GetSystemMetrics(SM_CYCAPTION) + #ifdef FEAT_MENU + + gui_mswin_get_menu_height(FALSE) +--- 2931,2940 ---- + + base_width = gui_get_base_width() + + (GetSystemMetrics(SM_CXFRAME) + +! GetSystemMetrics(SM_CXPADDEDBORDER)) * 2; + base_height = gui_get_base_height() + + (GetSystemMetrics(SM_CYFRAME) + +! GetSystemMetrics(SM_CXPADDEDBORDER)) * 2 + + GetSystemMetrics(SM_CYCAPTION) + #ifdef FEAT_MENU + + gui_mswin_get_menu_height(FALSE) +*************** +*** 2997,3002 **** +--- 2997,3016 ---- + } + + /* ++ * On some Intel GPUs, the regions drawn just prior to ScrollWindowEx() ++ * may not be scrolled out properly. ++ * For gVim, when _OnScroll() is repeated, the character at the ++ * previous cursor position may be left drawn after scroll. ++ * The problem can be avoided by calling GetPixel() to get a pixel in ++ * the region before ScrollWindowEx(). ++ */ ++ static void ++ intel_gpu_workaround(void) ++ { ++ GetPixel(s_hdc, FILL_X(gui.col), FILL_Y(gui.row)); ++ } ++ ++ /* + * Delete the given number of lines from the given row, scrolling up any + * text further down within the scroll region. + */ +*************** +*** 3007,3012 **** +--- 3021,3028 ---- + { + RECT rc; + ++ intel_gpu_workaround(); ++ + rc.left = FILL_X(gui.scroll_region_left); + rc.right = FILL_X(gui.scroll_region_right + 1); + rc.top = FILL_Y(row); +*************** +*** 3038,3043 **** +--- 3054,3061 ---- + { + RECT rc; + ++ intel_gpu_workaround(); ++ + rc.left = FILL_X(gui.scroll_region_left); + rc.right = FILL_X(gui.scroll_region_right + 1); + rc.top = FILL_Y(row); +*************** +*** 3319,3328 **** + GetWindowRect(s_hwnd, &rect); + gui_resize_shell(rect.right - rect.left + - (GetSystemMetrics(SM_CXFRAME) + +! GetSystemMetrics(SM_CXPADDEDBORDER)) * 2, + rect.bottom - rect.top + - (GetSystemMetrics(SM_CYFRAME) + +! GetSystemMetrics(SM_CXPADDEDBORDER)) * 2 + - GetSystemMetrics(SM_CYCAPTION) + #ifdef FEAT_MENU + - gui_mswin_get_menu_height(FALSE) +--- 3337,3346 ---- + GetWindowRect(s_hwnd, &rect); + gui_resize_shell(rect.right - rect.left + - (GetSystemMetrics(SM_CXFRAME) + +! GetSystemMetrics(SM_CXPADDEDBORDER)) * 2, + rect.bottom - rect.top + - (GetSystemMetrics(SM_CYFRAME) + +! GetSystemMetrics(SM_CXPADDEDBORDER)) * 2 + - GetSystemMetrics(SM_CYCAPTION) + #ifdef FEAT_MENU + - gui_mswin_get_menu_height(FALSE) +*** ../vim-7.4.868/src/version.c 2015-09-15 17:30:35.913682004 +0200 +--- src/version.c 2015-09-15 17:55:53.009950236 +0200 +*************** +*** 743,744 **** +--- 743,746 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 869, + /**/ + +-- +Lower life forms have more fun! + + /// Bram Moolenaar -- Bram@Moolenaar.net -- 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 ///