From cb9a027490f591b4a427b6a996d9f7dcee0a7e7e Mon Sep 17 00:00:00 2001 From: Daniel Collin Date: Sun, 4 Nov 2012 12:42:38 +0100 Subject: [PATCH] Fixed text overlap when editing value. Also added pressing esc aborts the edit Closes #12 --- ogl_editor/src/Editor.c | 25 ++++++++++++++++--------- ogl_editor/src/TrackView.c | 14 ++++++++++---- 2 files changed, 26 insertions(+), 13 deletions(-) diff --git a/ogl_editor/src/Editor.c b/ogl_editor/src/Editor.c index 9fc3125..bf09992 100644 --- a/ogl_editor/src/Editor.c +++ b/ogl_editor/src/Editor.c @@ -493,20 +493,27 @@ bool Editor_keyDown(int key, int modifiers) } else if (is_editing) { - struct track_key key; + // if we press esc we discard the value - key.row = row_pos; - key.value = atof(s_editBuffer); - key.type = 0; + if (key != 27) + { + struct track_key key; - struct sync_track* track = tracks[active_track]; - const char* track_name = track->name; + key.row = row_pos; + key.value = atof(s_editBuffer); + key.type = 0; - sync_set_key(track, &key); + struct sync_track* track = tracks[active_track]; + const char* track_name = track->name; - rlog(R_INFO, "Setting key %f at %d row %d (name %s)\n", key.value, active_track, key.row, track_name); + sync_set_key(track, &key); - RemoteConnection_sendSetKeyCommand(track_name, &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); + } + + handled_key = true; is_editing = false; s_editorData.trackData.editText = 0; diff --git a/ogl_editor/src/TrackView.c b/ogl_editor/src/TrackView.c index 96bde11..eb77585 100644 --- a/ogl_editor/src/TrackView.c +++ b/ogl_editor/src/TrackView.c @@ -52,7 +52,7 @@ static void printRowNumbers(int x, int y, int rowCount, int rowOffset, int rowSp /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// -static int renderChannel(const TrackViewInfo* viewInfo, struct sync_track* track, +static int renderChannel(const TrackViewInfo* viewInfo, struct sync_track* track, int editRow, int startX, int startY, int startPos, int endPos, int endSizeY, int trackId, int selectLeft, int selectRight, int selectTop, int selectBottom) { @@ -128,7 +128,8 @@ static int renderChannel(const TrackViewInfo* viewInfo, struct sync_track* track value = track->keys[idx].value; snprintf(temp, 256, "% .2f", value); - Emgui_drawText(temp, offset, y_offset - font_size / 2, Emgui_color32(255, 255, 255, 255)); + if (y != editRow) + Emgui_drawText(temp, offset, y_offset - font_size / 2, Emgui_color32(255, 255, 255, 255)); } else { @@ -173,7 +174,7 @@ void TrackView_render(const TrackViewInfo* viewInfo, TrackData* trackData) if (syncData->num_tracks == 0) { - renderChannel(0, 0, 40 + (i * 64), adjust_top_size, y_pos_row, y_pos_row + end_row, y_end_border, + renderChannel(0, 0, -1, 40 + (i * 64), adjust_top_size, y_pos_row, y_pos_row + end_row, y_end_border, 0, 0, 0, 0, 0); uint32_t color = Emgui_color32(127, 127, 127, 56); Emgui_fill(color, 0, mid_screen_y + adjust_top_size, viewInfo->windowSizeX, font_size + 2); @@ -203,7 +204,12 @@ void TrackView_render(const TrackViewInfo* viewInfo, TrackData* trackData) for (i = start_track; i < end_track; ++i) { - int size = renderChannel(viewInfo, syncData->tracks[i], x_pos, adjust_top_size, y_pos_row, y_pos_row + end_row, y_end_border, + int editRow = -1; + + if (sel_track == i && trackData->editText) + editRow = viewInfo->rowPos; + + int size = renderChannel(viewInfo, syncData->tracks[i], editRow, x_pos, adjust_top_size, y_pos_row, y_pos_row + end_row, y_end_border, i, selectLeft, selectRight, selectTop, selectBottom); if (sel_track == i)