Răsfoiți Sursa

sokoL_nuklear.h: move sokol-app cursor update from event handler to snk_render()

Andre Weissflog 10 luni în urmă
părinte
comite
671e0596b0
1 a modificat fișierele cu 21 adăugiri și 19 ștergeri
  1. 21 19
      util/sokol_nuklear.h

+ 21 - 19
util/sokol_nuklear.h

@@ -115,7 +115,7 @@
                 Set this to true if you don't want to use Nuklear's default
                 font. In this case you need to initialize the font
                 yourself after snk_setup() is called.
-            
+
             bool enable_set_mouse_cursor
                 If true, sokol_nuklear.h will control the mouse cursor type
                 by calling sapp_set_mouse_cursor(). If using this, you should
@@ -2867,6 +2867,26 @@ static void _snk_bind_image_sampler(sg_bindings* bindings, nk_handle h) {
 
 SOKOL_API_IMPL void snk_render(int width, int height) {
     SOKOL_ASSERT(_SNK_INIT_COOKIE == _snuklear.init_cookie);
+
+    if (_snuklear.desc.enable_set_mouse_cursor) {
+        for (enum nk_style_cursor c = 0; c < NK_CURSOR_COUNT; ++c) {
+            if (_snuklear.ctx.style.cursor_active == _snuklear.ctx.style.cursors[c]) {
+                sapp_mouse_cursor sapp_cur = SAPP_MOUSECURSOR_ARROW;
+                switch (c) {
+                    case NK_CURSOR_TEXT: sapp_cur = SAPP_MOUSECURSOR_IBEAM; break;
+                    case NK_CURSOR_MOVE: sapp_cur = SAPP_MOUSECURSOR_RESIZE_ALL; break;
+                    case NK_CURSOR_RESIZE_VERTICAL: sapp_cur = SAPP_MOUSECURSOR_RESIZE_NS; break;
+                    case NK_CURSOR_RESIZE_HORIZONTAL: sapp_cur = SAPP_MOUSECURSOR_RESIZE_EW; break;
+                    case NK_CURSOR_RESIZE_TOP_LEFT_DOWN_RIGHT: sapp_cur = SAPP_MOUSECURSOR_RESIZE_NESW; break;
+                    case NK_CURSOR_RESIZE_TOP_RIGHT_DOWN_LEFT: sapp_cur = SAPP_MOUSECURSOR_RESIZE_NWSE; break;
+                    default: break;
+                }
+                sapp_set_mouse_cursor(sapp_cur);
+                break;
+            }
+        }
+    }
+
     static const struct nk_draw_vertex_layout_element vertex_layout[] = {
         {NK_VERTEX_POSITION, NK_FORMAT_FLOAT, NK_OFFSETOF(struct _snk_vertex_t, pos)},
         {NK_VERTEX_TEXCOORD, NK_FORMAT_FLOAT, NK_OFFSETOF(struct _snk_vertex_t, uv)},
@@ -3128,24 +3148,6 @@ SOKOL_API_IMPL bool snk_handle_event(const sapp_event* ev) {
         default:
             break;
     }
-    if (_snuklear.desc.enable_set_mouse_cursor) {
-        for (enum nk_style_cursor c = 0; c < NK_CURSOR_COUNT; ++c) {
-            if (_snuklear.ctx.style.cursor_active == _snuklear.ctx.style.cursors[c]) {
-                sapp_mouse_cursor sapp_cur = SAPP_MOUSECURSOR_ARROW;
-                switch (c) {
-                    case NK_CURSOR_TEXT: sapp_cur = SAPP_MOUSECURSOR_IBEAM; break;
-                    case NK_CURSOR_MOVE: sapp_cur = SAPP_MOUSECURSOR_RESIZE_ALL; break;
-                    case NK_CURSOR_RESIZE_VERTICAL: sapp_cur = SAPP_MOUSECURSOR_RESIZE_NS; break;
-                    case NK_CURSOR_RESIZE_HORIZONTAL: sapp_cur = SAPP_MOUSECURSOR_RESIZE_EW; break;
-                    case NK_CURSOR_RESIZE_TOP_LEFT_DOWN_RIGHT: sapp_cur = SAPP_MOUSECURSOR_RESIZE_NESW; break;
-                    case NK_CURSOR_RESIZE_TOP_RIGHT_DOWN_LEFT: sapp_cur = SAPP_MOUSECURSOR_RESIZE_NWSE; break;
-                    default: break;
-                }
-                sapp_set_mouse_cursor(sapp_cur);
-                break;
-            }
-        }
-    }
     return nk_item_is_any_active(&_snuklear.ctx);
 }