Support guioptions 'k' flag in MacVim (2nd attempt) by ychin · Pull Request #731 · macvim-dev/macvim

@ychin

…size

Adds support for native GVim's 'k' flag. Adding/removing tabs/scrollbars
and setting 'linespace'/'columnspace' would now cause the number of
lines and columns in the buffer change to keep the window size constant,
instead of the other way round of resizing the window to keep the view
size constant. This helps prevent the window from resizing itself
unncessarily, which could be especially annoying when the window is
pinned/maximized.

Manually setting 'lines'/'columns', going to full screen, dragging the
window corner to resize would still resize the window.

Also removed misc calls within MMWindowController.m that were setting
shouldResizeVimView. Those calls were already handled by native Vim's
gui.c's gui_set_shellsize so it's redundant.

rebased from 1333bc6

@ychin

Fix the following:

* Zoom button: There was an error in refactoring leading to the handler
  calling the wrong function.

* Toolbar addition/removal: This now respects the 'k' option. Toolbar is
  different from scrollbar and tabs because when you add/remove a
  toolbar in Cocoa it automatically resizes the window for you, so the
  implementation needs to manually un-resize the window and
  re-calculates the Vim view's 'lines' and 'columns' to fit.

@ychin

Fix the issue that MacVim's window will have broken rendering (wrong Vim
size) if the window was opened in another monitor. This was introduced
as part of the implementation for guioptions 'k',

The issue was that the function `moveWindowAcrossScreens` was buggy. It
sets a flag "resizingDueToMove" but doesn't unset it after the
`setFrameTopLeftPoint`, which may or may not call the resize function
that is responsible in unsetting "resizeDueToMove". Fix the function to
always unset it so that the flag doesn't leak till the next resize.
Previously it "worked" due to MacVim's excessive resize messages masking
the issue.

@ychin ychin deleted the guioptions-k-2 branch

September 14, 2018 15:15

@ychin ychin mentioned this pull request

Sep 15, 2018

ychin added a commit to ychin/macvim that referenced this pull request

Dec 5, 2018
Vim patch 8.1.560

Targets macOS 10.8+

Features:
- macOS Mojave (10.14) is now supported.
    - MacVim's UI now works with Dark Mode.
    - Fixed broken rendering and flickering under Mojave when using the
      default Core Text renderer. macvim-dev#757
- guioption 'k' is supported again. macvim-dev#731
    - This option prevents window from resizing when UI elements such as
      toolbars or tabs show or hide themselves.

Fixes:
- Fixed misc fullscreen and window resizing bugs and artifacts macvim-dev#745
- Dragging tabs to reorder now works properly macvim-dev#789
- Fixed timer callback handling in GUI macvim-dev#749
- Fixed native tabs (10.12+) interring with Vim tabs macvim-dev#788
- Fixed Japanese IME Ctrl-U/Ctrl-O handling macvim-dev#742
- Fixed MMShareFindPboard and Cmd-E/Cmd-G interactions macvim-dev#780
- Better handling of guifontwide font size macvim-dev#737
- Better python discovery in default vimrc macvim-dev#739

Known Issues:
- Scrolling performance is slightly worse under Mojave macvim-dev#796

Script interfaces have compatibility with these versions:
- Lua 5.3
- Perl 5.18
- Python2 2.7
- Python3 3.7
- Ruby 2.5

ychin added a commit that referenced this pull request

Dec 5, 2018
Vim patch 8.1.560

Targets macOS 10.8+

Features:
- macOS Mojave (10.14) is now supported.
    - MacVim's UI now works with Dark Mode.
    - Fixed broken rendering and flickering under Mojave when using the
      default Core Text renderer. #757
- guioption 'k' is supported again. #731
    - This option prevents window from resizing when UI elements such as
      toolbars or tabs show or hide themselves.

Fixes:
- Fixed misc fullscreen and window resizing bugs and artifacts #745
- Dragging tabs to reorder now works properly #789
- Fixed timer callback handling in GUI #749
- Fixed native tabs (10.12+) interring with Vim tabs #788
- Fixed Japanese IME Ctrl-U/Ctrl-O handling #742
- Fixed MMShareFindPboard and Cmd-E/Cmd-G interactions #780
- Better handling of guifontwide font size #737
- Better python discovery in default vimrc #739

Known Issues:
- Scrolling performance is slightly worse under Mojave #796

Script interfaces have compatibility with these versions:
- Lua 5.3
- Perl 5.18
- Python2 2.7
- Python3 3.7
- Ruby 2.5