More code to prevent data edit in muted mode
This commit is contained in:
parent
c05bb51b86
commit
5d8314fe5c
@ -474,6 +474,8 @@ static void toggleMute(void* userData)
|
||||
RemoteConnection_sendSetKeyCommand(data->syncTrack->name, key);
|
||||
}
|
||||
|
||||
data->track->disabled = false;
|
||||
|
||||
free(data->track->muteBackup);
|
||||
|
||||
data->track->muteBackup = 0;
|
||||
@ -485,6 +487,8 @@ static void toggleMute(void* userData)
|
||||
int i, keysSize = sizeof(struct track_key) * data->syncTrack->num_keys;
|
||||
float currentValue = (float)sync_get_val(data->syncTrack, data->row);
|
||||
|
||||
data->track->disabled = true;
|
||||
|
||||
// No muteBackup, this means that we want to mute the channel
|
||||
|
||||
data->track->muteBackup = malloc(keysSize);
|
||||
|
||||
@ -187,6 +187,13 @@ static inline int getRowPos()
|
||||
|
||||
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
static bool canEditCurrentTrack()
|
||||
{
|
||||
return !getTrackData()->tracks[getActiveTrack()].disabled;
|
||||
}
|
||||
|
||||
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
static inline void setRowPos(int pos)
|
||||
{
|
||||
s_editorData.trackViewInfo.rowPos = pos;
|
||||
@ -633,12 +640,13 @@ static void scaleOrBiasSelection(float value, BiasOperation biasOp)
|
||||
{
|
||||
int track, row;
|
||||
struct sync_track** tracks = getTracks();
|
||||
TrackData* trackData = getTrackData();
|
||||
TrackViewInfo* viewInfo = getTrackViewInfo();
|
||||
int selectLeft = mini(viewInfo->selectStartTrack, viewInfo->selectStopTrack);
|
||||
int selectRight = maxi(viewInfo->selectStartTrack, viewInfo->selectStopTrack);
|
||||
int selectTop = mini(viewInfo->selectStartRow, viewInfo->selectStopRow);
|
||||
int selectBottom = maxi(viewInfo->selectStartRow, viewInfo->selectStopRow);
|
||||
|
||||
|
||||
// If we have no selection and no currenty key bias the previous key
|
||||
|
||||
if (selectLeft == selectRight && selectTop == selectBottom)
|
||||
@ -651,6 +659,9 @@ static void scaleOrBiasSelection(float value, BiasOperation biasOp)
|
||||
return;
|
||||
|
||||
track = tracks[getActiveTrack()];
|
||||
|
||||
if (!canEditCurrentTrack())
|
||||
return;
|
||||
|
||||
idx = sync_find_key(track, getRowPos());
|
||||
|
||||
@ -670,6 +681,9 @@ static void scaleOrBiasSelection(float value, BiasOperation biasOp)
|
||||
{
|
||||
struct sync_track* t = tracks[track];
|
||||
|
||||
if (trackData->tracks[track].disabled)
|
||||
continue;
|
||||
|
||||
for (row = selectTop; row <= selectBottom; ++row)
|
||||
{
|
||||
struct track_key newKey;
|
||||
@ -1179,6 +1193,9 @@ static void onInterpolation()
|
||||
|
||||
track = tracks[getActiveTrack()];
|
||||
|
||||
if (!canEditCurrentTrack())
|
||||
return;
|
||||
|
||||
idx = key_idx_floor(track, getRowPos());
|
||||
if (idx < 0)
|
||||
return;
|
||||
@ -1307,6 +1324,9 @@ static void onEnterCurrentValue()
|
||||
if (!tracks)
|
||||
return;
|
||||
|
||||
if (!canEditCurrentTrack())
|
||||
return;
|
||||
|
||||
Commands_beginMulti("enterCurrentValues");
|
||||
|
||||
enterCurrentValue(tracks[activeTrack], activeTrack, rowPos);
|
||||
@ -1740,6 +1760,12 @@ void Editor_destroy()
|
||||
|
||||
static bool doEditing(int key)
|
||||
{
|
||||
if (!canEditCurrentTrack())
|
||||
{
|
||||
is_editing = false;
|
||||
return false;
|
||||
}
|
||||
|
||||
// special case if '.' key (in case of dvorak) would clatch with the same key for biasing we do this special case
|
||||
|
||||
if ((key == '.' || key == EMGUI_KEY_BACKSPACE) && !is_editing)
|
||||
|
||||
@ -34,6 +34,7 @@ typedef struct Track
|
||||
int index;
|
||||
int groupIndex;
|
||||
int muteKeyCount;
|
||||
bool disabled;
|
||||
bool hidden;
|
||||
bool folded;
|
||||
bool selected;
|
||||
|
||||
@ -486,6 +486,10 @@ static int renderChannel(struct TrackInfo* info, int startX, Track* trackData, b
|
||||
if (!(trackData->selected && info->viewInfo->rowPos == y && info->editText))
|
||||
renderText(info, track, y, idx, offset, y_offset, folded);
|
||||
}
|
||||
else
|
||||
{
|
||||
Emgui_fill(border_color , startX, y_offset - font_size_half, size, font_size);
|
||||
}
|
||||
|
||||
selected = (trackIndex >= info->selectLeft && trackIndex <= info->selectRight) &&
|
||||
(y >= info->selectTop && y <= info->selectBottom);
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user