diff --git a/kitty/cocoa_window.m b/kitty/cocoa_window.m index e8543289c..362790e0c 100644 --- a/kitty/cocoa_window.m +++ b/kitty/cocoa_window.m @@ -9,6 +9,25 @@ #include "data-types.h" #include +#include + +#if (MAC_OS_X_VERSION_MAX_ALLOWED < 101200) +#define NSWindowStyleMaskResizable NSResizableWindowMask +#endif + +PyObject* +cocoa_make_window_resizable(PyObject UNUSED *self, PyObject *window_id) { + NSWindow *window = (NSWindow*)PyLong_AsVoidPtr(window_id); + + @try { + [window setStyleMask: + [window styleMask] | NSWindowStyleMaskResizable]; + } @catch (NSException *e) { + return PyErr_Format(PyExc_ValueError, "Failed to set style mask: %s: %s", [[e name] UTF8String], [[e reason] UTF8String]); + } + Py_RETURN_NONE; +} + PyObject* cocoa_get_lang(PyObject UNUSED *self) { NSString* locale = nil; diff --git a/kitty/glfw.h b/kitty/glfw.h index ad3e0064d..bfda0ba8f 100644 --- a/kitty/glfw.h +++ b/kitty/glfw.h @@ -21,9 +21,12 @@ PyObject* glfw_init_hint_string(PyObject UNUSED *self, PyObject *args); #ifdef __APPLE__ PyObject* cocoa_get_lang(PyObject UNUSED *self); +PyObject* cocoa_make_window_resizable(PyObject UNUSED *self, PyObject *window_id); #define COCOA_GET_LANG {"cocoa_get_lang", (PyCFunction)cocoa_get_lang, METH_NOARGS, ""}, +#define COCOA_MWR {"cocoa_make_window_resizable", (PyCFunction)cocoa_make_window_resizable, METH_O, ""}, #else #define COCOA_GET_LANG +#define COCOA_MWR #endif #define GLFW_FUNC_WRAPPERS \ @@ -37,5 +40,5 @@ PyObject* cocoa_get_lang(PyObject UNUSED *self); {"glfw_get_physical_dpi", (PyCFunction)glfw_get_physical_dpi, METH_NOARGS, ""}, \ {"glfw_get_key_name", (PyCFunction)glfw_get_key_name, METH_VARARGS, ""}, \ {"glfw_init_hint_string", (PyCFunction)glfw_init_hint_string, METH_VARARGS, ""}, \ - COCOA_GET_LANG - + COCOA_GET_LANG \ + COCOA_MWR diff --git a/kitty/main.py b/kitty/main.py index 776857d28..c2df87ef5 100644 --- a/kitty/main.py +++ b/kitty/main.py @@ -212,6 +212,9 @@ def run_app(opts, args): window.make_context_current() if isosx: check_for_extensions() + if opts.macos_hide_titlebar: + from .fast_data_types import cocoa_make_window_resizable + cocoa_make_window_resizable(window.cocoa_window_id()) else: with open(logo_data_file, 'rb') as f: window.set_icon(f.read(), 256, 256)