From 5206933399775e5ff46baefbbb3a776c2a9bb84c Mon Sep 17 00:00:00 2001 From: Berke Güzel Date: Mon, 12 Oct 2026 10:53:22 +0300 Subject: feat: add type-safe native platform headers and portable drag support - Add include/yasl/native/{wayland,cocoa,x11}.h with type-safe handle accessors. - Unify drag-and-drop and window carry support across Wayland, X11, and Cocoa. - Preserve full ABI compatibility for capability flags. - Install native headers conditionally based on enabled backend. - Include missing tablet example and backend test suites. --- include/yasl/native/cocoa.h | 30 ++++++++++++++++++++++++++++++ include/yasl/native/wayland.h | 22 ++++++++++++++++++++++ include/yasl/native/x11.h | 22 ++++++++++++++++++++++ 3 files changed, 74 insertions(+) create mode 100644 include/yasl/native/cocoa.h create mode 100644 include/yasl/native/wayland.h create mode 100644 include/yasl/native/x11.h (limited to 'include') diff --git a/include/yasl/native/cocoa.h b/include/yasl/native/cocoa.h new file mode 100644 index 0000000..9066a19 --- /dev/null +++ b/include/yasl/native/cocoa.h @@ -0,0 +1,30 @@ +#ifndef YASL_NATIVE_COCOA_H +#define YASL_NATIVE_COCOA_H + +#include "yasl/yasl.h" + +#ifdef __OBJC__ +@class NSApplication; +@class NSWindow; +@class NSView; +#else +typedef struct objc_object NSApplication; +typedef struct objc_object NSWindow; +typedef struct objc_object NSView; +#endif + +#ifdef __cplusplus +extern "C" { +#endif + +/* Return borrowed Cocoa handles (expire on display/surface destruction). + * Return NULL / nil if display/surface is not a Cocoa object or destroyed. */ +YASL_API NSApplication *yasl_cocoa_display_get_application(struct yasl_display *d); +YASL_API NSWindow *yasl_cocoa_surface_get_window(struct yasl_surface *s); +YASL_API NSView *yasl_cocoa_surface_get_view(struct yasl_surface *s); + +#ifdef __cplusplus +} +#endif + +#endif /* YASL_NATIVE_COCOA_H */ diff --git a/include/yasl/native/wayland.h b/include/yasl/native/wayland.h new file mode 100644 index 0000000..4a759d4 --- /dev/null +++ b/include/yasl/native/wayland.h @@ -0,0 +1,22 @@ +#ifndef YASL_NATIVE_WAYLAND_H +#define YASL_NATIVE_WAYLAND_H + +#include "yasl/yasl.h" + +#ifdef __cplusplus +extern "C" { +#endif + +struct wl_display; +struct wl_surface; + +/* Return borrowed Wayland handles (expire on display/surface destruction). + * Return NULL if display/surface is not a Wayland object or destroyed. */ +YASL_API struct wl_display *yasl_wayland_display_get_wl_display(struct yasl_display *d); +YASL_API struct wl_surface *yasl_wayland_surface_get_wl_surface(struct yasl_surface *s); + +#ifdef __cplusplus +} +#endif + +#endif /* YASL_NATIVE_WAYLAND_H */ diff --git a/include/yasl/native/x11.h b/include/yasl/native/x11.h new file mode 100644 index 0000000..c0105cb --- /dev/null +++ b/include/yasl/native/x11.h @@ -0,0 +1,22 @@ +#ifndef YASL_NATIVE_X11_H +#define YASL_NATIVE_X11_H + +#include "yasl/yasl.h" +#include + +#ifdef __cplusplus +extern "C" { +#endif + +typedef struct _XDisplay Display; + +/* Return borrowed X11 handles (expire on display/surface destruction). + * Return NULL / 0 if display/surface is not an X11 object or destroyed. */ +YASL_API Display *yasl_x11_display_get_display(struct yasl_display *d); +YASL_API uintptr_t yasl_x11_surface_get_window(struct yasl_surface *s); + +#ifdef __cplusplus +} +#endif + +#endif /* YASL_NATIVE_X11_H */ -- cgit v1.2.3