From 9913b7d590f46e59a475abbe85e70e02979d8d37 Mon Sep 17 00:00:00 2001 From: Andrew Opalach Date: Mon, 13 Apr 2026 16:16:25 -0400 Subject: Adjust window api, cleanup and update deps Signed-off-by: Andrew Opalach --- src/window_glfm.c | 29 +++++++++++++++++++++++++++-- 1 file changed, 27 insertions(+), 2 deletions(-) (limited to 'src/window_glfm.c') diff --git a/src/window_glfm.c b/src/window_glfm.c index 202a55f..a799f5d 100644 --- a/src/window_glfm.c +++ b/src/window_glfm.c @@ -4,6 +4,7 @@ #include "window_glfm.h" #include "common.h" +#include "keys.h" f64 stl_scale_scroll(f64 v, f64 factor) { @@ -87,6 +88,28 @@ static void onOrientationChanged(GLFMDisplay *display, GLFMInterfaceOrientation global.orientation = orientation; } +static u8 glfm_to_stela_button_action[] = { + [GLFMKeyActionPressed] = STELA_BUTTON_PRESSED, + [GLFMKeyActionReleased] = STELA_BUTTON_RELEASED +}; + +static bool onKey(GLFMDisplay *display, GLFMKeyCode key, GLFMKeyAction action, s32 modifiers) +{ + struct stl_window_glfm *glfm = (struct stl_window_glfm *)glfmGetUserData(display); + (void)modifiers; + u8 mapped_action = glfm_to_stela_button_action[action]; + switch (key) { + case GLFMKeyCodeVolumeUp: + return stl_window_send_key_immediate_event(&glfm->w, mapped_action, STELA_KEY_RIGHT); + case GLFMKeyCodeVolumeDown: + return stl_window_send_key_immediate_event(&glfm->w, mapped_action, STELA_KEY_LEFT); + case GLFMKeyCodeNavigationBack: + default: + break; + } + return true; +} + static u8 glfm_to_stela_touch[] = { [GLFMTouchPhaseHover] = STELA_TOUCH_HOVER, [GLFMTouchPhaseBegan] = STELA_TOUCH_BEGAN, @@ -126,17 +149,19 @@ void glfmMain(GLFMDisplay *display) glfmSetRenderFunc(display, onDraw); glfmSetSurfaceDestroyedFunc(display, onSurfaceDestroyed); glfmSetOrientationChangedFunc(display, onOrientationChanged); + glfmSetKeyFunc(display, onKey); glfmSetTouchFunc(display, onTouch); } -static bool window_glfm_create_window(struct stl_window *window, u32 width, u32 height, - const char *monitor, const char *name, u32 flags) +static bool window_glfm_create_window(struct stl_window *window, u32 width, u32 height, u32 flags, + const char *monitor, const char *name, const char *app_id) { struct stl_window_glfm *glfm = (struct stl_window_glfm *)window; (void)width; (void)height; (void)monitor; (void)name; + (void)app_id; glfmSetUserData(global.display, glfm); s32 display_width, display_height; glfmGetDisplaySize(global.display, &display_width, &display_height); -- cgit v1.2.3-101-g0448