Skip to content

Remove fade-to-black animation for native/custom fullscreen #1171

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 8, 2021

For native fullscreen, simply remove the custom animation as it doesn't look good and doesn't look native. This was added back when resizing the window rapidly would result in artifacts, but they should have all been fixed. As such, no need to hide everything under a black fade.

For custom fullscreen, make it so that if MMFullScreenFadeTime is set to 0 (which is now the default), the fading animation will simply not be drawn as it simply flickers. Since it now defaults to 0, the user will have to manually set this back to 0.25 to get the old functionality, which is ok as it's somewhat a legacy feature anyway and there shouldn't be any flickering now during the transition.

Also, update documentation on full-screen to provide more info on native vs custom, and clean up old outdated texts.

Misc driveby fixes related to full screen:

  • Robustify the Touch Bar full screen button to listen to OptionSet event which is more robust than relying on VimResized, which also didn't work when 'fuoptions' is set to nothing.
  • Make MacVim handle the DidFailToEnter/ExitFullScreen events better. These events could fire when using native full screen while the user is e.g. switching space. We need to make sure to properly update the states when these two events happen and let Vim know what the current 'fullscreen' state is so both sides are synced.
  • Fix up the preferences pane's full screen buttons to not trigger fontPropertiesChanged which was a mistake due to copy-and-paste in Interface Builder.

See:

For native fullscreen, simply remove the custom animation as it doesn't
look good and doesn't look native. This was added back when resizing the
window rapidly would result in artifacts, but they should have all been
fixed. As such, no need to hide everything under a black fade.

For custom fullscreen, make it so that if `MMFullScreenFadeTime` is set
to 0 (which is now the default), the fading animation will simply not be
drawn as it simply flickers. Since it now defaults to 0, the user will
have to manually set this back to 0.25 to get the old functionality,
which is ok as it's somewhat a legacy feature anyway and there shouldn't
be any flickering now during the transition.

Also, update documentation on full-screen to provide more info on native
vs custom, and clean up old outdated texts.

Misc driveby fixes related to full screen:
- Robustify the Touch Bar full screen button to listen to `OptionSet`
  event which is more robust than relying on `VimResized`, which also
  didn't work when 'fuoptions' is set to nothing.
- Make MacVim handle the DidFailToEnter/ExitFullScreen events better.
  These events could fire when using native full screen while the user
  is e.g. switching space. We need to make sure to properly update the
  states when these two events happen and let Vim know what the current
  `'fullscreen'` state is so both sides are synced.
- Fix up the preferences pane's full screen buttons to not trigger
  fontPropertiesChanged which was a mistake due to copy-and-paste in
  Interface Builder.

See:
- macvim-dev#292 / macvim-dev#289 which implemented the fade effect.
@ychin ychin added the UI Issues related to UI elements, tabs, scrollbars, window resizing, etc. label Feb 8, 2021
@ychin ychin added this to the snapshot-170 milestone Feb 8, 2021
@ychin ychin merged commit c9a5a7f into macvim-dev:master Feb 8, 2021
@ychin ychin deleted the fullscreen-remove-fade-black-animation branch February 8, 2021 05:36
@ychin ychin mentioned this pull request Feb 8, 2021
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.

1 participant