Skip to content

Fix non-native full screen sizing, fix 'fuoptions', allow menus #1170

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged

Conversation

ychin
Copy link
Member

@ychin ychin commented Feb 4, 2021

Fix misc non-native full screen sizing issues. Previously, in certain cases such as using non-native full screen in a secondary monitor, the non-native full screen window would be offsetted and half the window shown offscreen, making it hard to use.

The bug is that we call resizeVimView and centerView immediately after resizing Vim's frame, but the frame resize only asynchronously calls processInputQueueDidFinish in MMWindowController, which now actually handles all the frame resizing logic. centerView was therefore calculating using the wrong info, and tried to center the view on wrong coordinates. Just fix this by removing those two functions as they are no longer needed as processInputQueueDidFinish already does everything.

Also, fix fuopts to support unsetting maxvert/maxhorz again (this was what centerView was trying to do). Simply add hooks to processInputQueueDidFinish to query the non-native full screen window for what the desired size is, instead of just assuming we wan to fill the whole frame.

Also, add a new option MMNonNativeFullScreenShowMenu to allow showing the menu bar instead of auto-hiding it while using non-native full screen as it could be useful to show it, and less jarring to switch among different apps.

Move preferences around so non-native full screen is now a "regular" option under Apperance instead of Advanced. Also expose the non-native show menu option so it's exposed to users.

This is a follow-up to #1155.

Fix misc non-native full screen sizing issues. Previously, in certain
cases such as using non-native full screen in a secondary monitor, the
non-native full screen window would be offsetted and half the window
shown offscreen, making it hard to use.

The bug is that we call `resizeVimView` and `centerView` immediately
after resizing Vim's frame, but the frame resize only asynchronously
calls processInputQueueDidFinish in MMWindowController, which now
actually handles all the frame resizing logic. `centerView` was
therefore calculating using the wrong info, and tried to center the view
on wrong coordinates. Just fix this by removing those two functions as
they are no longer needed as processInputQueueDidFinish already does
everything.

Also, fix `fuopts` to support unsetting maxvert/maxhorz again (this was
what `centerView` was trying to do). Simply add hooks to
processInputQueueDidFinish to query the non-native full screen window
for what the desired size is, instead of just assuming we wan to fill
the whole frame.

* Fix macvim-dev#509

Also, add a new option `MMNonNativeFullScreenShowMenu` to allow showing
the menu bar instead of auto-hiding it while using non-native full
screen as it could be useful to show it, and less jarring to switch
among different apps.

Move preferences around so non-native full screen is now a "regular"
option under Apperance instead of Advanced. Also expose the non-native
show menu option so it's exposed to users.

This is a follow-up to macvim-dev#1155.
@ychin ychin added the UI Issues related to UI elements, tabs, scrollbars, window resizing, etc. label Feb 4, 2021
@ychin ychin added this to the snapshot-170 milestone Feb 4, 2021
@ychin ychin merged commit 38d2ba8 into macvim-dev:master Feb 4, 2021
@ychin ychin deleted the fix-non-native-fullscreen-sizing-fuopts branch February 4, 2021 19:43
ychin added a commit that referenced this pull request Mar 8, 2021
Updated to Vim 8.2.2576.

Features
====================

Apple Silicon Support
--------------------

MacVim's binary release now fully supports Apple Silicon! If you have an
M1 Mac you should notice MacVim being more snappy and smoother. #1150

If you would like to (e.g. if you only installed Python 3 in Rosetta and
use plugins that use Python), you could run MacVim under Rosetta. You
could use `:version` while in MacVim to tell whether you are running in
Rosetta / Intel or Apple Silicon by seeing whether it says x86_64 or
arm64. (Vim 8.2.2174)

If you rely on Python/Ruby/Lua integration, note that previously MacVim
by default searches the `/usr/local/` path for installed language
runtimes. With this release, MacVim will still search those folders
under Intel / x86-64 builds, but under Apple Silicon / M1, MacVim will
search under `/opt/homebrew/` instead, which is the default folder for
Homebrew under Apple Silicon. If you don't use Homebrew, or installed
language runtimes under other folders, you would need to set
`python3dll`/`luadll`/`rubydll` in your vimrc.

Full Screen Fixes and Improvements
--------------------

Removed the fade-to-black animation when transition to full screen, as
they were distracting and looked jarring. For non-native full screen,
you could set `MMFullScreenFadeTime` to a non-zero value to still get
the animation back. #1171

Non-native full screen

- Non-native full screen now has an option to show menu bar when it's
  active (under Appearance preference pane). #1170

- Fixed non-native full screen to properly hide the menu / dock when
  used on a secondary screen. Also, fixed misc issues with non-native
  full screen not drawing at the right offset. #7 #1155 #1170

- Fixed non-native full screen's `fuopt` setting. It now works again.
  This feature allows you to limit only expand horizontally or
  vertically when using non-native full screen to help focus on the
  content, see `:help fuopt`. #509

Fixed small bug in Touch Bar's full screen button sometimes not being
updated correctly. #1171

Known Issues
====================

Text invisible after plugging in monitor or waking from sleep
--------------------

There is currently a known issue in rendering where after
plugging/unplugging an external monitor, or waking from sleep when
connected to a monitor, there is a small change MacVim will stop drawing
text. If you see that, please report that to #1164. This release
contains some additional logging to help dignose the issue and we are
still looking to root cause it.

General
====================

- Added an option to ignore font's line height. r168 introduced a new
  renderer which changed the behavior for how font's line height works
  -- instead of ignoring it, the new renderer respects the line height
  of the font. This new setting allows MacVim to behave in the old way,
  since some fonts have large line height that the user may not want to
  use. #1152

Fixes
====================

- Fixed balloon APIs (`balloon_show()` / `balloon_gettext()`) so plugins
  relying on them should now work. #902 #1064

Misc
====================

- Scripting languages versions:
    - Ruby is now built against 3.0, up from 2.7.

Compatibility
====================

Requires macOS 10.9 or above.

Script interfaces have compatibility with these versions:

- Lua 5.4
- Perl 5.18
- Python2 2.7
- Python3 3.9
- Ruby 3.0
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
UI Issues related to UI elements, tabs, scrollbars, window resizing, etc.
Projects
None yet
Development

Successfully merging this pull request may close these issues.

set fuopt-=maxhorz doesn't work anymore in non-native FS
1 participant