To: vim_dev@googlegroups.com Subject: Patch 8.0.0299 Fcc: outbox From: Bram Moolenaar Mime-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit ------------ Patch 8.0.0299 Problem: When the GUI window is resized Vim does not always take over the new size. (Luchr) Solution: Reset new_p_guifont in gui_resize_shell(). Call gui_may_resize_shell() in the main loop. Files: src/main.c, src/gui.c *** ../vim-8.0.0298/src/main.c 2016-11-24 15:09:03.405856662 +0100 --- src/main.c 2017-02-03 21:54:32.793578542 +0100 *************** *** 1118,1123 **** --- 1118,1127 ---- skip_redraw = FALSE; else if (do_redraw || stuff_empty()) { + # ifdef FEAT_GUI + /* If ui_breakcheck() was used a resize may have been postponed. */ + gui_may_resize_shell(); + # endif #if defined(FEAT_AUTOCMD) || defined(FEAT_CONCEAL) /* Trigger CursorMoved if the cursor moved. */ if (!finish_op && ( *** ../vim-8.0.0298/src/gui.c 2016-08-29 22:42:20.000000000 +0200 --- src/gui.c 2017-02-03 21:41:15.659646605 +0100 *************** *** 1459,1464 **** --- 1459,1466 ---- } again: + new_pixel_width = 0; + new_pixel_height = 0; busy = TRUE; /* Flush pending output before redrawing */ *************** *** 1468,1475 **** gui.num_rows = (pixel_height - gui_get_base_height()) / gui.char_height; gui_position_components(pixel_width); - gui_reset_scroll_region(); /* * At the "more" and ":confirm" prompt there is no redraw, put the cursor * at the last line here (why does it have to be one row too low?). --- 1470,1477 ---- gui.num_rows = (pixel_height - gui_get_base_height()) / gui.char_height; gui_position_components(pixel_width); gui_reset_scroll_region(); + /* * At the "more" and ":confirm" prompt there is no redraw, put the cursor * at the last line here (why does it have to be one row too low?). *************** *** 1491,1507 **** busy = FALSE; ! /* ! * We could have been called again while redrawing the screen. ! * Need to do it all again with the latest size then. ! */ if (new_pixel_height) { ! pixel_width = new_pixel_width; ! pixel_height = new_pixel_height; ! new_pixel_width = 0; ! new_pixel_height = 0; ! goto again; } } --- 1493,1514 ---- busy = FALSE; ! /* We may have been called again while redrawing the screen. ! * Need to do it all again with the latest size then. But only if the size ! * actually changed. */ if (new_pixel_height) { ! if (pixel_width == new_pixel_width && pixel_height == new_pixel_height) ! { ! new_pixel_width = 0; ! new_pixel_height = 0; ! } ! else ! { ! pixel_width = new_pixel_width; ! pixel_height = new_pixel_height; ! goto again; ! } } } *************** *** 1511,1528 **** void gui_may_resize_shell(void) { - int h, w; - if (new_pixel_height) - { /* careful: gui_resize_shell() may postpone the resize again if we * were called indirectly by it */ ! w = new_pixel_width; ! h = new_pixel_height; ! new_pixel_width = 0; ! new_pixel_height = 0; ! gui_resize_shell(w, h); ! } } int --- 1518,1527 ---- void gui_may_resize_shell(void) { if (new_pixel_height) /* careful: gui_resize_shell() may postpone the resize again if we * were called indirectly by it */ ! gui_resize_shell(new_pixel_width, new_pixel_height); } int *** ../vim-8.0.0298/src/version.c 2017-02-03 21:19:00.289942006 +0100 --- src/version.c 2017-02-03 21:56:01.788913106 +0100 *************** *** 766,767 **** --- 766,769 ---- { /* Add new patch number below this line */ + /**/ + 299, /**/ -- Citizens are not allowed to attend a movie house or theater nor ride in a public streetcar within at least four hours after eating garlic. [real standing law in Indiana, United States of America] /// 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 ///