Do proper ending and cancelling of text editing

Closes #58
This commit is contained in:
Daniel Collin 2013-01-06 22:33:50 +01:00
parent 8c8995dbf0
commit 0a94c588c5
2 changed files with 26 additions and 3 deletions

View File

@ -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) void Editor_scroll(float deltaX, float deltaY, int flags)
{ {
TrackData* trackData = getTrackData(); TrackData* trackData = getTrackData();
@ -944,7 +952,7 @@ bool Editor_saveBeforeExit()
static void onCancelEdit() static void onCancelEdit()
{ {
endEditing(); cancelEditing();
} }
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
@ -1279,7 +1287,7 @@ static void onTab()
void Editor_menuEvent(int menuItem) void Editor_menuEvent(int menuItem)
{ {
endEditing(); cancelEditing();
// If some internal control has focus we let it do its thing // 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)) if (doEditing(key))
return true; 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) switch (key)
{ {

View File

@ -216,6 +216,7 @@ static int getModifierFlags(int flags)
{ {
case KEY_TAB : keyCode = EMGUI_KEY_TAB; break; case KEY_TAB : keyCode = EMGUI_KEY_TAB; break;
case KEY_DELETE : keyCode = EMGUI_KEY_BACKSPACE; break; case KEY_DELETE : keyCode = EMGUI_KEY_BACKSPACE; break;
case KEY_RETURN : keyCode = EMGUI_KEY_ENTER; break;
} }
} }