소스 검색

Add insert/overwrite/reset to allegro backend

Robert Winkler 8 달 전
부모
커밋
c5f4ee59e4
1개의 변경된 파일12개의 추가작업 그리고 1개의 파일을 삭제
  1. 12 1
      demo/allegro5/nuklear_allegro5.h

+ 12 - 1
demo/allegro5/nuklear_allegro5.h

@@ -347,6 +347,7 @@ NK_API int
 nk_allegro5_handle_event(ALLEGRO_EVENT *ev)
 {
     struct nk_context *ctx = &allegro5.ctx;
+    static int insert_toggle = 0;
     switch (ev->type) {
         case ALLEGRO_EVENT_DISPLAY_RESIZE: {
             allegro5.width = (unsigned int)ev->display.width;
@@ -427,7 +428,16 @@ nk_allegro5_handle_event(ALLEGRO_EVENT *ev)
             else if (kc == ALLEGRO_KEY_ESCAPE)    nk_input_key(ctx, NK_KEY_TEXT_RESET_MODE, down);
             else if (kc == ALLEGRO_KEY_PGUP)      nk_input_key(ctx, NK_KEY_SCROLL_UP, down);
             else if (kc == ALLEGRO_KEY_PGDN)      nk_input_key(ctx, NK_KEY_SCROLL_DOWN, down);
-            else if (kc == ALLEGRO_KEY_HOME) {
+            else if (kc == ALLEGRO_KEY_INSERT) {
+                if (down) insert_toggle = !insert_toggle;
+                if (insert_toggle) {
+                    nk_input_key(ctx, NK_KEY_TEXT_INSERT_MODE, down);
+                    /* nk_input_key(ctx, NK_KEY_TEXT_REPLACE_MODE, !down); */
+                } else {
+                    nk_input_key(ctx, NK_KEY_TEXT_REPLACE_MODE, down);
+                    /* nk_input_key(ctx, NK_KEY_TEXT_INSERT_MODE, !down); */
+                }
+            } else if (kc == ALLEGRO_KEY_HOME) {
                 nk_input_key(ctx, NK_KEY_TEXT_START, down);
                 nk_input_key(ctx, NK_KEY_SCROLL_START, down);
             } else if (kc == ALLEGRO_KEY_END) {
@@ -464,6 +474,7 @@ nk_allegro5_handle_event(ALLEGRO_EVENT *ev)
                     kc != ALLEGRO_KEY_ENTER &&
                     kc != ALLEGRO_KEY_END &&
                     kc != ALLEGRO_KEY_ESCAPE &&
+                    kc != ALLEGRO_KEY_INSERT &&
                     kc != ALLEGRO_KEY_PGDN &&
                     kc != ALLEGRO_KEY_PGUP) {
                     nk_input_unicode(ctx, ev->keyboard.unichar);