]> git.lizzy.rs Git - nothing.git/commitdiff
(#963) Implement Edit Text cancelling for LabelLayer
authorrexim <reximkut@gmail.com>
Sat, 27 Jul 2019 17:12:15 +0000 (00:12 +0700)
committerrexim <reximkut@gmail.com>
Sat, 27 Jul 2019 17:12:15 +0000 (00:12 +0700)
src/game/level/level_editor/label_layer.c

index e7c54fe9cdb3f3c988c6b8787d6b85805580a569..6335b8bffdc147ca89783d82f69e4bb036b87031 100644 (file)
@@ -458,8 +458,6 @@ int label_layer_move_event(LabelLayer *label_layer,
     return 0;
 }
 
-// TODO: LabelLayer does not support cancelling the editing of ids and texts
-
 static
 int label_layer_edit_text_event(LabelLayer *label_layer,
                                 const SDL_Event *event,
@@ -472,13 +470,22 @@ int label_layer_edit_text_event(LabelLayer *label_layer,
 
     switch (event->type) {
     case SDL_KEYDOWN: {
-        if (event->key.keysym.sym == SDLK_RETURN) {
+        switch (event->key.keysym.sym) {
+        case SDLK_RETURN: {
             char *text =
                 (char*)dynarray_data(label_layer->texts) + label_layer->selected * LABEL_LAYER_TEXT_MAX_SIZE;
             memset(text, 0, LABEL_LAYER_TEXT_MAX_SIZE);
             memcpy(text, edit_field_as_text(label_layer->edit_field), LABEL_LAYER_TEXT_MAX_SIZE - 1);
             label_layer->state = LABEL_LAYER_IDLE;
+            SDL_StopTextInput();
             return 0;
+        } break;
+
+        case SDLK_ESCAPE: {
+            label_layer->state = LABEL_LAYER_IDLE;
+            SDL_StopTextInput();
+            return 0;
+        } break;
         }
     } break;
     }
@@ -486,6 +493,8 @@ int label_layer_edit_text_event(LabelLayer *label_layer,
     return edit_field_event(label_layer->edit_field, event);
 }
 
+// TODO: LabelLayer does not support cancelling the editing of ids
+
 static
 int label_layer_edit_id_event(LabelLayer *label_layer,
                               const SDL_Event *event,
@@ -505,6 +514,7 @@ int label_layer_edit_id_event(LabelLayer *label_layer,
             memset(id, 0, LABEL_LAYER_ID_MAX_SIZE);
             memcpy(id, edit_field_as_text(label_layer->edit_field), LABEL_LAYER_ID_MAX_SIZE - 1);
             label_layer->state = LABEL_LAYER_IDLE;
+            SDL_StopTextInput();
             return 0;
         }
     } break;