Fixed text overlap when editing value. Also added pressing esc aborts the edit

Closes #12
This commit is contained in:
Daniel Collin 2012-11-04 12:42:38 +01:00
parent e08e1189c9
commit cb9a027490
2 changed files with 26 additions and 13 deletions

View File

@ -493,20 +493,27 @@ bool Editor_keyDown(int key, int modifiers)
} }
else if (is_editing) else if (is_editing)
{ {
struct track_key key; // if we press esc we discard the value
key.row = row_pos; if (key != 27)
key.value = atof(s_editBuffer); {
key.type = 0; struct track_key key;
struct sync_track* track = tracks[active_track]; key.row = row_pos;
const char* track_name = track->name; 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; is_editing = false;
s_editorData.trackData.editText = 0; s_editorData.trackData.editText = 0;

View File

@ -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 startX, int startY, int startPos, int endPos, int endSizeY,
int trackId, int selectLeft, int selectRight, int selectTop, int selectBottom) 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; value = track->keys[idx].value;
snprintf(temp, 256, "% .2f", 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 else
{ {
@ -173,7 +174,7 @@ void TrackView_render(const TrackViewInfo* viewInfo, TrackData* trackData)
if (syncData->num_tracks == 0) 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); 0, 0, 0, 0, 0);
uint32_t color = Emgui_color32(127, 127, 127, 56); uint32_t color = Emgui_color32(127, 127, 127, 56);
Emgui_fill(color, 0, mid_screen_y + adjust_top_size, viewInfo->windowSizeX, font_size + 2); 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) 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); i, selectLeft, selectRight, selectTop, selectBottom);
if (sel_track == i) if (sel_track == i)