From 252a6e52341a6dea12a0c26164d8a76df1fc06c3 Mon Sep 17 00:00:00 2001 From: Isak Samsten Date: Thu, 23 Mar 2023 10:33:47 +0100 Subject: [PATCH] feat: support moving macos windows with hidden decorations --- glfw/cocoa_window.m | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/glfw/cocoa_window.m b/glfw/cocoa_window.m index 9a8ed8751d6..0521abb6fbb 100644 --- a/glfw/cocoa_window.m +++ b/glfw/cocoa_window.m @@ -34,7 +34,13 @@ #import #include #include +#import +@interface FakeView : NSView +@end +@implementation FakeView +- (BOOL)fakeMouseDownCanMoveWindow { return YES; } +@end static const char* polymorphic_string_as_utf8(id string) { @@ -2920,6 +2926,13 @@ GLFWAPI void glfwHideCocoaTitlebar(GLFWwindow* handle, bool yes) { button = [window standardWindowButton: NSWindowZoomButton]; [window setTitlebarAppearsTransparent:yes]; if (button) button.hidden = yes; + + // http://svenandersson.se/2016/rendering-to-full-size-of-an-nswindow-using-glfw3.html + NSView* glView = [window contentView]; + Method originalMethod = class_getInstanceMethod([glView class], @selector(mouseDownCanMoveWindow)); + Method categoryMethod = class_getInstanceMethod(FakeView.class, @selector(fakeMouseDownCanMoveWindow)); + method_exchangeImplementations(originalMethod, categoryMethod); + if (yes) { [window setTitleVisibility:NSWindowTitleHidden]; [window setStyleMask: [window styleMask] | NSWindowStyleMaskFullSizeContentView];