Fixed issue that text would get "stuck" while editing and starting playback

Closes #31
This commit is contained in:
Daniel Collin 2012-12-30 12:07:09 +01:00
parent 660c4b418a
commit 7683965dba

View File

@ -544,6 +544,46 @@ static void biasSelection(float value, int selectLeft, int selectRight, int sele
static char s_editBuffer[512]; static char s_editBuffer[512];
static bool is_editing = false; static bool is_editing = false;
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
static void endEditing()
{
const char* track_name;
struct track_key key;
struct sync_track* track;
int row_pos = getRowPos();
int active_track = getActiveTrack();
if (!is_editing || !getTracks())
return;
track = getTracks()[active_track];
key.row = row_pos;
key.value = (float)atof(s_editBuffer);
key.type = 0;
if (is_key_frame(track, row_pos))
{
int idx = key_idx_floor(track, row_pos);
key.type = track->keys[idx].type;
}
track_name = track->name;
sync_set_key(track, &key);
rlog(R_INFO, "Setting key %f at %d row %d (name %s)\n", key.value, active_track, key.row, track_name);
RemoteConnection_sendSetKeyCommand(track_name, &key);
is_editing = false;
s_editorData.trackData.editText = 0;
}
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
bool Editor_keyDown(int key, int keyCode, int modifiers) bool Editor_keyDown(int key, int keyCode, int modifiers)
{ {
bool handled_key = true; bool handled_key = true;
@ -578,16 +618,18 @@ bool Editor_keyDown(int key, int keyCode, int modifiers)
{ {
case EMGUI_KEY_BACKSPACE: case EMGUI_KEY_BACKSPACE:
{ {
endEditing();
deleteArea(row_pos, active_track, 1, 1); deleteArea(row_pos, active_track, 1, 1);
break; break;
} }
case EMGUI_ARROW_DOWN: case EMGUI_ARROW_DOWN:
{ {
const int active_track = getActiveTrack(); const int active_track = getActiveTrack();
int row = row_pos; int row = row_pos;
endEditing();
if (modifiers & EMGUI_KEY_CTRL) if (modifiers & EMGUI_KEY_CTRL)
{ {
struct sync_track* t = getTracks()[active_track]; struct sync_track* t = getTracks()[active_track];
@ -640,6 +682,7 @@ bool Editor_keyDown(int key, int keyCode, int modifiers)
case EMGUI_ARROW_UP: case EMGUI_ARROW_UP:
{ {
int row = row_pos; int row = row_pos;
endEditing();
if (modifiers & EMGUI_KEY_CTRL) if (modifiers & EMGUI_KEY_CTRL)
{ {
@ -690,6 +733,7 @@ bool Editor_keyDown(int key, int keyCode, int modifiers)
{ {
const int current_track = getActiveTrack(); const int current_track = getActiveTrack();
int track = getPrevTrack(); int track = getPrevTrack();
endEditing();
if (modifiers & EMGUI_KEY_ALT) if (modifiers & EMGUI_KEY_ALT)
{ {
@ -748,6 +792,7 @@ bool Editor_keyDown(int key, int keyCode, int modifiers)
const int current_track = getActiveTrack(); const int current_track = getActiveTrack();
int track = getNextTrack(); int track = getNextTrack();
int track_count = getTrackCount(); int track_count = getTrackCount();
endEditing();
if (modifiers & EMGUI_KEY_ALT) if (modifiers & EMGUI_KEY_ALT)
{ {
@ -806,6 +851,7 @@ bool Editor_keyDown(int key, int keyCode, int modifiers)
// TODO: Don't start playing if we are in edit mode (but space shouldn't be added in edit mode but we still // TODO: Don't start playing if we are in edit mode (but space shouldn't be added in edit mode but we still
// shouldn't start playing if we do // shouldn't start playing if we do
endEditing();
RemoteConnection_sendPauseCommand(!paused); RemoteConnection_sendPauseCommand(!paused);
Editor_update(); Editor_update();
return true; return true;
@ -925,27 +971,8 @@ bool Editor_keyDown(int key, int keyCode, int modifiers)
if (key != 27) if (key != 27)
{ {
const char* track_name; endEditing();
struct track_key key;
struct sync_track* track = tracks[active_track];
key.row = row_pos;
key.value = (float)atof(s_editBuffer);
key.type = 0;
if (is_key_frame(track, row_pos))
{
int idx = key_idx_floor(track, row_pos);
key.type = track->keys[idx].type;
}
track_name = track->name;
sync_set_key(track, &key);
rlog(R_INFO, "Setting key %f at %d row %d (name %s)\n", key.value, active_track, key.row, track_name);
RemoteConnection_sendSetKeyCommand(track_name, &key);
} }
is_editing = false; is_editing = false;