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)
{
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;

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 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)