From 5f8610f7bc8ed21d54c13ce66ece3545ce3bb59f Mon Sep 17 00:00:00 2001 From: Kovid Goyal Date: Tue, 11 Jul 2023 22:27:47 +0530 Subject: [PATCH] macOS: Add a new value titlebar-and-corners for :opt:hide_window_decorations that emulates the behavior of hide_window_decorations yes in older versions of kitty --- docs/changelog.rst | 2 ++ glfw/cocoa_window.m | 17 +++++++++-------- kitty/options/definition.py | 6 +++--- kitty/options/utils.py | 2 ++ 4 files changed, 16 insertions(+), 11 deletions(-) diff --git a/docs/changelog.rst b/docs/changelog.rst index 4d24e653c..6c694dd13 100644 --- a/docs/changelog.rst +++ b/docs/changelog.rst @@ -42,6 +42,8 @@ Detailed list of changes - macOS: Fix a regression causing *burn-in* of text when resizing semi-transparent OS windows (:iss:`6439`) +- macOS: Add a new value ``titlebar-and-corners`` for :opt:`hide_window_decorations` that emulates the behavior of ``hide_window_decorations yes`` in older versions of kitty + - Remote control launch: Fix ``--env`` not implemented when using ``--cwd=current`` with the SSH kitten (:iss:`6438`) 0.29.0 [2023-07-10] diff --git a/glfw/cocoa_window.m b/glfw/cocoa_window.m index 17fc885c7..0eea87209 100644 --- a/glfw/cocoa_window.m +++ b/glfw/cocoa_window.m @@ -297,16 +297,12 @@ static NSUInteger getStyleMask(_GLFWwindow* window) NSUInteger styleMask = NSWindowStyleMaskMiniaturizable; if (window->ns.titlebar_hidden) styleMask |= NSWindowStyleMaskFullSizeContentView; - if (window->monitor || !window->decorated) + if (window->monitor || !window->decorated) { styleMask |= NSWindowStyleMaskBorderless; - else - { - styleMask |= NSWindowStyleMaskTitled | - NSWindowStyleMaskClosable; - - if (window->resizable) - styleMask |= NSWindowStyleMaskResizable; + } else { + styleMask |= NSWindowStyleMaskTitled | NSWindowStyleMaskClosable; } + if (window->resizable) styleMask |= NSWindowStyleMaskResizable; return styleMask; } @@ -3021,6 +3017,11 @@ GLFWAPI void glfwCocoaSetWindowChrome(GLFWwindow *w, unsigned int color, bool us window->ns.titlebar_hidden = true; show_text_in_titlebar = false; break; + case 4: + decorations_desc = "no-titlebar-and-no-corners"; + window->decorated = false; + has_shadow = true; + break; default: window->decorated = true; has_shadow = true; diff --git a/kitty/options/definition.py b/kitty/options/definition.py index 8b6dd2746..572bf0c44 100644 --- a/kitty/options/definition.py +++ b/kitty/options/definition.py @@ -1026,12 +1026,12 @@ option_type='hide_window_decorations', ctype='uint', long_text=''' Hide the window decorations (title-bar and window borders) with :code:`yes`. On -macOS, :code:`titlebar-only` can be used to only hide the titlebar. Whether this -works and exactly what effect it has depends on the window manager/operating +macOS, :code:`titlebar-only` and :code:`titlebar-and-corners` can be used to only hide the titlebar and the rounded corners. +Whether this works and exactly what effect it has depends on the window manager/operating system. Note that the effects of changing this option when reloading config are undefined. When using :code:`titlebar-only`, it is useful to also set :opt:`window_margin_width` and :opt:`placement_strategy` to prevent the rounded -corners from clipping text. +corners from clipping text. Or use :code:`titlebar-and-corners`. ''' ) diff --git a/kitty/options/utils.py b/kitty/options/utils.py index fb535c0b0..a9f519501 100644 --- a/kitty/options/utils.py +++ b/kitty/options/utils.py @@ -594,6 +594,8 @@ def optional_edge_width(x: str) -> FloatEdges: def hide_window_decorations(x: str) -> int: if x == 'titlebar-only': return 0b10 + if x == 'titlebar-and-corners': + return 0b100 if to_bool(x): return 0b01 return 0b00