apprt: add C API for detecting background transparency per surface

This commit is contained in:
Mitchell Hashimoto
2023-07-03 19:44:06 -07:00
parent 329385e353
commit 338f89679d
3 changed files with 15 additions and 0 deletions

View File

@ -276,6 +276,7 @@ void *ghostty_app_userdata(ghostty_app_t);
ghostty_surface_t ghostty_surface_new(ghostty_app_t, ghostty_surface_config_s*);
void ghostty_surface_free(ghostty_surface_t);
ghostty_app_t ghostty_surface_app(ghostty_surface_t);
bool ghostty_surface_transparent(ghostty_surface_t);
void ghostty_surface_refresh(ghostty_surface_t);
void ghostty_surface_set_content_scale(ghostty_surface_t, double, double);
void ghostty_surface_set_focus(ghostty_surface_t, bool);

View File

@ -197,6 +197,15 @@ extension Ghostty {
ghostty_surface_set_size(surface, UInt32(scaledSize.width), UInt32(scaledSize.height))
}
override func viewDidMoveToWindow() {
guard let window = self.window else { return }
guard let surface = self.surface else { return }
guard ghostty_surface_transparent(surface) else { return }
window.isOpaque = false
window.hasShadow = false
window.backgroundColor = .clear
}
override func resignFirstResponder() -> Bool {
let result = super.resignFirstResponder()

View File

@ -470,6 +470,11 @@ pub const CAPI = struct {
return surface.app;
}
/// Returns ture if the surface has transparency set.
export fn ghostty_surface_transparent(surface: *Surface) bool {
return surface.app.config.@"background-opacity" < 1.0;
}
/// Tell the surface that it needs to schedule a render
export fn ghostty_surface_refresh(surface: *Surface) void {
surface.refresh();