macos: allow to hide decorations

This commit is contained in:
SoraTenshi
2023-09-13 23:16:33 +02:00
committed by Mitchell Hashimoto
parent 63379ee2eb
commit ed8b5bc283
3 changed files with 17 additions and 2 deletions

View File

@ -309,6 +309,7 @@ typedef struct {
void *nsview; void *nsview;
double scale_factor; double scale_factor;
uint16_t font_size; uint16_t font_size;
bool render_decoration;
} ghostty_surface_config_s; } ghostty_surface_config_s;
typedef void (*ghostty_runtime_wakeup_cb)(void *); typedef void (*ghostty_runtime_wakeup_cb)(void *);
@ -364,6 +365,7 @@ bool ghostty_config_get(ghostty_config_t, void *, const char *, uintptr_t);
ghostty_input_trigger_s ghostty_config_trigger(ghostty_config_t, const char *, uintptr_t); ghostty_input_trigger_s ghostty_config_trigger(ghostty_config_t, const char *, uintptr_t);
uint32_t ghostty_config_errors_count(ghostty_config_t); uint32_t ghostty_config_errors_count(ghostty_config_t);
ghostty_error_s ghostty_config_get_error(ghostty_config_t, uint32_t); ghostty_error_s ghostty_config_get_error(ghostty_config_t, uint32_t);
bool ghostty_config_render_decoration(ghostty_config_t);
ghostty_app_t ghostty_app_new(const ghostty_runtime_config_s *, ghostty_config_t); ghostty_app_t ghostty_app_new(const ghostty_runtime_config_s *, ghostty_config_t);
void ghostty_app_free(ghostty_app_t); void ghostty_app_free(ghostty_app_t);

View File

@ -15,11 +15,20 @@ class FocusedSurfaceWrapper {
// such as non-native fullscreen. // such as non-native fullscreen.
class PrimaryWindow: NSWindow { class PrimaryWindow: NSWindow {
var focusedSurfaceWrapper: FocusedSurfaceWrapper = FocusedSurfaceWrapper() var focusedSurfaceWrapper: FocusedSurfaceWrapper = FocusedSurfaceWrapper()
static func getStyleMask(render_decoration: Bool) -> NSWindow.StyleMask {
var mask: NSWindow.StyleMask = [.resizable, .closable, .miniaturizable]
if render_decoration {
mask.insert(.titled)
}
return mask
}
static func create(ghostty: Ghostty.AppState, appDelegate: AppDelegate, baseConfig: ghostty_surface_config_s? = nil) -> PrimaryWindow { static func create(ghostty: Ghostty.AppState, appDelegate: AppDelegate, baseConfig: ghostty_surface_config_s? = nil) -> PrimaryWindow {
let decorations = baseConfig?.render_decoration ?? ghostty_config_render_decoration(ghostty.config)
let window = PrimaryWindow( let window = PrimaryWindow(
contentRect: NSRect(x: 0, y: 0, width: 800, height: 600), contentRect: NSRect(x: 0, y: 0, width: 800, height: 600),
styleMask: [.titled, .closable, .miniaturizable, .resizable], styleMask: getStyleMask(render_decoration: decorations),
backing: .buffered, backing: .buffered,
defer: false) defer: false)
window.center() window.center()

View File

@ -119,6 +119,10 @@ export fn ghostty_config_get_error(self: *Config, idx: u32) Error {
return .{ .message = err.message.ptr }; return .{ .message = err.message.ptr };
} }
export fn ghostty_config_render_decoration(self: *Config) bool {
return self.@"window-decoration";
}
/// Sync with ghostty_error_s /// Sync with ghostty_error_s
const Error = extern struct { const Error = extern struct {
message: [*:0]const u8 = "", message: [*:0]const u8 = "",