summaryrefslogtreecommitdiff
path: root/include
diff options
context:
space:
mode:
authorBerke Güzel <wenekar1@gmail.com>2026-10-12 10:53:22 +0300
committerBerke Güzel <wenekar1@gmail.com>2026-10-12 10:53:22 +0300
commit5206933399775e5ff46baefbbb3a776c2a9bb84c (patch)
treee7549216ac626c1f3ac22345f79fbf80cc5a90fb /include
parent881fb6cb1d64868132287bd9637f4ae1cbc3504c (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')
-rw-r--r--include/yasl/native/cocoa.h30
-rw-r--r--include/yasl/native/wayland.h22
-rw-r--r--include/yasl/native/x11.h22
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 */