diff options
author | Bram Moolenaar <Bram@vim.org> | 2017-11-09 18:33:29 +0100 |
---|---|---|
committer | Bram Moolenaar <Bram@vim.org> | 2017-11-09 18:33:29 +0100 |
commit | 8ac441576fd219fb7227349e228d5b68520b204a (patch) | |
tree | 8deb339c08aeba2ab92c7b77922960c7b226004e | |
parent | 26d205dcd886b48713f22cbdbf2a8e55400083dc (diff) | |
download | vim-git-8ac441576fd219fb7227349e228d5b68520b204a.tar.gz |
patch 8.0.1278: GUI window always resizes when adding scrollbarv8.0.1278
Problem: GUI window always resizes when adding/removing a scrollbar,
toolbar, etc.
Solution: Add the 'k' flag in 'guioptions' to keep the GUI window size and
change the number of lines/columns instead. (Ychin, closes #703)
-rw-r--r-- | runtime/doc/options.txt | 8 | ||||
-rw-r--r-- | src/gui.c | 13 | ||||
-rw-r--r-- | src/gui_gtk_x11.c | 7 | ||||
-rw-r--r-- | src/gui_w32.c | 5 | ||||
-rw-r--r-- | src/option.h | 3 | ||||
-rw-r--r-- | src/version.c | 2 |
6 files changed, 26 insertions, 12 deletions
diff --git a/runtime/doc/options.txt b/runtime/doc/options.txt index 6bd9f762f..28b545721 100644 --- a/runtime/doc/options.txt +++ b/runtime/doc/options.txt @@ -3939,7 +3939,13 @@ A jump table for the options with a short description can be found at |Q_op|. removing it after the GUI has started has no effect. *'go-F'* 'F' Add a footer. Only for Motif. See |gui-footer|. - + *'go-k'* + 'k' Keep the GUI window size when adding/removing a scrollbar, or + toolbar, tabline, etc. Instead, the behavior is similar to + when the window is maximized and will adjust 'lines' and + 'columns' to fit to the window. Without the 'k' flag Vim will + try to keep 'lines' and 'columns the same when adding and + removing GUI components. *'guipty'* *'noguipty'* 'guipty' boolean (default on) @@ -693,7 +693,7 @@ gui_init(void) #ifndef FEAT_GUI_GTK /* Set the shell size, adjusted for the screen size. For GTK this only * works after the shell has been opened, thus it is further down. */ - gui_set_shellsize(FALSE, TRUE, RESIZE_BOTH); + gui_set_shellsize(TRUE, TRUE, RESIZE_BOTH); #endif #if defined(FEAT_GUI_MOTIF) && defined(FEAT_MENU) /* Need to set the size of the menubar after all the menus have been @@ -732,7 +732,7 @@ gui_init(void) # endif /* Now make sure the shell fits on the screen. */ - gui_set_shellsize(FALSE, TRUE, RESIZE_BOTH); + gui_set_shellsize(TRUE, TRUE, RESIZE_BOTH); #endif /* When 'lines' was set while starting up the topframe may have to be * resized. */ @@ -909,7 +909,7 @@ gui_init_font(char_u *font_list, int fontset UNUSED) # endif gui_mch_set_font(gui.norm_font); #endif - gui_set_shellsize(FALSE, TRUE, RESIZE_BOTH); + gui_set_shellsize(TRUE, TRUE, RESIZE_BOTH); } return ret; @@ -1553,10 +1553,12 @@ gui_get_shellsize(void) * Set the size of the Vim shell according to Rows and Columns. * If "fit_to_display" is TRUE then the size may be reduced to fit the window * on the screen. + * When "mustset" is TRUE the size was set by the user. When FALSE a UI + * component was added or removed (e.g., a scrollbar). */ void gui_set_shellsize( - int mustset UNUSED, /* set by the user */ + int mustset UNUSED, int fit_to_display, int direction) /* RESIZE_HOR, RESIZE_VER */ { @@ -1580,7 +1582,8 @@ gui_set_shellsize( #if defined(MSWIN) || defined(FEAT_GUI_GTK) /* If not setting to a user specified size and maximized, calculate the * number of characters that fit in the maximized window. */ - if (!mustset && gui_mch_maximized()) + if (!mustset && (vim_strchr(p_go, GO_KEEPWINSIZE) != NULL + || gui_mch_maximized())) { gui_mch_newfont(); return; diff --git a/src/gui_gtk_x11.c b/src/gui_gtk_x11.c index 9be54b90e..83b98e187 100644 --- a/src/gui_gtk_x11.c +++ b/src/gui_gtk_x11.c @@ -2938,7 +2938,7 @@ mainwin_screen_changed_cb(GtkWidget *widget, if (gui.norm_font != NULL) { gui_mch_init_font(p_guifont, FALSE); - gui_set_shellsize(FALSE, FALSE, RESIZE_BOTH); + gui_set_shellsize(TRUE, FALSE, RESIZE_BOTH); } } @@ -4909,8 +4909,9 @@ gui_mch_unmaximize(void) } /* - * Called when the font changed while the window is maximized. Compute the - * new Rows and Columns. This is like resizing the window. + * Called when the font changed while the window is maximized or GO_KEEPWINSIZE + * is set. Compute the new Rows and Columns. This is like resizing the + * window. */ void gui_mch_newfont(void) diff --git a/src/gui_w32.c b/src/gui_w32.c index 67895cca3..52cadead6 100644 --- a/src/gui_w32.c +++ b/src/gui_w32.c @@ -3385,8 +3385,9 @@ gui_mch_maximized(void) } /* - * Called when the font changed while the window is maximized. Compute the - * new Rows and Columns. This is like resizing the window. + * Called when the font changed while the window is maximized or GO_KEEPWINSIZE + * is set. Compute the new Rows and Columns. This is like resizing the + * window. */ void gui_mch_newfont(void) diff --git a/src/option.h b/src/option.h index 88eadae4c..f9972f21a 100644 --- a/src/option.h +++ b/src/option.h @@ -235,7 +235,8 @@ #define GO_TOOLBAR 'T' /* add toolbar */ #define GO_FOOTER 'F' /* add footer */ #define GO_VERTICAL 'v' /* arrange dialog buttons vertically */ -#define GO_ALL "aAbcefFghilmMprtTv" /* all possible flags for 'go' */ +#define GO_KEEPWINSIZE 'k' /* keep GUI window size */ +#define GO_ALL "aAbcefFghilmMprtTvk" /* all possible flags for 'go' */ /* flags for 'comments' option */ #define COM_NEST 'n' /* comments strings nest */ diff --git a/src/version.c b/src/version.c index b5e453917..bba2938b9 100644 --- a/src/version.c +++ b/src/version.c @@ -762,6 +762,8 @@ static char *(features[]) = static int included_patches[] = { /* Add new patch number below this line */ /**/ + 1278, +/**/ 1277, /**/ 1276, |