diff options
| author | Berke Güzel <wenekar1@gmail.com> | 2026-10-12 10:53:22 +0300 |
|---|---|---|
| committer | Berke Güzel <wenekar1@gmail.com> | 2026-10-12 10:53:22 +0300 |
| commit | 5206933399775e5ff46baefbbb3a776c2a9bb84c (patch) | |
| tree | e7549216ac626c1f3ac22345f79fbf80cc5a90fb /include/yasl | |
| parent | 881fb6cb1d64868132287bd9637f4ae1cbc3504c (diff) | |
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.
Diffstat (limited to 'include/yasl')
| -rw-r--r-- | include/yasl/native/cocoa.h | 30 | ||||
| -rw-r--r-- | include/yasl/native/wayland.h | 22 | ||||
| -rw-r--r-- | include/yasl/native/x11.h | 22 |
3 files changed, 74 insertions, 0 deletions
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 <stdint.h> + +#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 */ |
