From 0a94c588c5691db002da712e656620c753ac5f72 Mon Sep 17 00:00:00 2001 From: Daniel Collin Date: Sun, 6 Jan 2013 22:33:50 +0100 Subject: [PATCH] Do proper ending and cancelling of text editing Closes #58 --- ogl_editor/src/Editor.c | 28 +++++++++++++++++++++++++--- ogl_editor/src/macosx/RocketView.m | 1 + 2 files changed, 26 insertions(+), 3 deletions(-) diff --git a/ogl_editor/src/Editor.c b/ogl_editor/src/Editor.c index 4db6698..38756b8 100644 --- a/ogl_editor/src/Editor.c +++ b/ogl_editor/src/Editor.c @@ -659,6 +659,14 @@ static void endEditing() /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// +static void cancelEditing() +{ + is_editing = false; + s_editorData.trackData.editText = 0; +} + +/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// + void Editor_scroll(float deltaX, float deltaY, int flags) { TrackData* trackData = getTrackData(); @@ -944,7 +952,7 @@ bool Editor_saveBeforeExit() static void onCancelEdit() { - endEditing(); + cancelEditing(); } /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// @@ -1279,7 +1287,7 @@ static void onTab() void Editor_menuEvent(int menuItem) { - endEditing(); + cancelEditing(); // If some internal control has focus we let it do its thing @@ -1422,7 +1430,21 @@ bool Editor_keyDown(int key, int keyCode, int modifiers) if (doEditing(key)) return true; - endEditing(); + switch (key) + { + case EMGUI_KEY_ARROW_UP : + case EMGUI_KEY_ARROW_DOWN : + case EMGUI_KEY_ARROW_LEFT : + case EMGUI_KEY_ARROW_RIGHT : + case EMGUI_KEY_TAB : + case EMGUI_KEY_ENTER : + { + endEditing(); + break; + } + } + + cancelEditing(); switch (key) { diff --git a/ogl_editor/src/macosx/RocketView.m b/ogl_editor/src/macosx/RocketView.m index 07c2dac..e7ccffd 100644 --- a/ogl_editor/src/macosx/RocketView.m +++ b/ogl_editor/src/macosx/RocketView.m @@ -216,6 +216,7 @@ static int getModifierFlags(int flags) { case KEY_TAB : keyCode = EMGUI_KEY_TAB; break; case KEY_DELETE : keyCode = EMGUI_KEY_BACKSPACE; break; + case KEY_RETURN : keyCode = EMGUI_KEY_ENTER; break; } }