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);
|
RemoteConnection_sendSetKeyCommand(data->syncTrack->name, key);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
data->track->disabled = false;
|
||||||
|
|
||||||
free(data->track->muteBackup);
|
free(data->track->muteBackup);
|
||||||
|
|
||||||
data->track->muteBackup = 0;
|
data->track->muteBackup = 0;
|
||||||
@ -485,6 +487,8 @@ static void toggleMute(void* userData)
|
|||||||
int i, keysSize = sizeof(struct track_key) * data->syncTrack->num_keys;
|
int i, keysSize = sizeof(struct track_key) * data->syncTrack->num_keys;
|
||||||
float currentValue = (float)sync_get_val(data->syncTrack, data->row);
|
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
|
// No muteBackup, this means that we want to mute the channel
|
||||||
|
|
||||||
data->track->muteBackup = malloc(keysSize);
|
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)
|
static inline void setRowPos(int pos)
|
||||||
{
|
{
|
||||||
s_editorData.trackViewInfo.rowPos = pos;
|
s_editorData.trackViewInfo.rowPos = pos;
|
||||||
@ -633,12 +640,13 @@ static void scaleOrBiasSelection(float value, BiasOperation biasOp)
|
|||||||
{
|
{
|
||||||
int track, row;
|
int track, row;
|
||||||
struct sync_track** tracks = getTracks();
|
struct sync_track** tracks = getTracks();
|
||||||
|
TrackData* trackData = getTrackData();
|
||||||
TrackViewInfo* viewInfo = getTrackViewInfo();
|
TrackViewInfo* viewInfo = getTrackViewInfo();
|
||||||
int selectLeft = mini(viewInfo->selectStartTrack, viewInfo->selectStopTrack);
|
int selectLeft = mini(viewInfo->selectStartTrack, viewInfo->selectStopTrack);
|
||||||
int selectRight = maxi(viewInfo->selectStartTrack, viewInfo->selectStopTrack);
|
int selectRight = maxi(viewInfo->selectStartTrack, viewInfo->selectStopTrack);
|
||||||
int selectTop = mini(viewInfo->selectStartRow, viewInfo->selectStopRow);
|
int selectTop = mini(viewInfo->selectStartRow, viewInfo->selectStopRow);
|
||||||
int selectBottom = maxi(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 we have no selection and no currenty key bias the previous key
|
||||||
|
|
||||||
if (selectLeft == selectRight && selectTop == selectBottom)
|
if (selectLeft == selectRight && selectTop == selectBottom)
|
||||||
@ -651,6 +659,9 @@ static void scaleOrBiasSelection(float value, BiasOperation biasOp)
|
|||||||
return;
|
return;
|
||||||
|
|
||||||
track = tracks[getActiveTrack()];
|
track = tracks[getActiveTrack()];
|
||||||
|
|
||||||
|
if (!canEditCurrentTrack())
|
||||||
|
return;
|
||||||
|
|
||||||
idx = sync_find_key(track, getRowPos());
|
idx = sync_find_key(track, getRowPos());
|
||||||
|
|
||||||
@ -670,6 +681,9 @@ static void scaleOrBiasSelection(float value, BiasOperation biasOp)
|
|||||||
{
|
{
|
||||||
struct sync_track* t = tracks[track];
|
struct sync_track* t = tracks[track];
|
||||||
|
|
||||||
|
if (trackData->tracks[track].disabled)
|
||||||
|
continue;
|
||||||
|
|
||||||
for (row = selectTop; row <= selectBottom; ++row)
|
for (row = selectTop; row <= selectBottom; ++row)
|
||||||
{
|
{
|
||||||
struct track_key newKey;
|
struct track_key newKey;
|
||||||
@ -1179,6 +1193,9 @@ static void onInterpolation()
|
|||||||
|
|
||||||
track = tracks[getActiveTrack()];
|
track = tracks[getActiveTrack()];
|
||||||
|
|
||||||
|
if (!canEditCurrentTrack())
|
||||||
|
return;
|
||||||
|
|
||||||
idx = key_idx_floor(track, getRowPos());
|
idx = key_idx_floor(track, getRowPos());
|
||||||
if (idx < 0)
|
if (idx < 0)
|
||||||
return;
|
return;
|
||||||
@ -1307,6 +1324,9 @@ static void onEnterCurrentValue()
|
|||||||
if (!tracks)
|
if (!tracks)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
|
if (!canEditCurrentTrack())
|
||||||
|
return;
|
||||||
|
|
||||||
Commands_beginMulti("enterCurrentValues");
|
Commands_beginMulti("enterCurrentValues");
|
||||||
|
|
||||||
enterCurrentValue(tracks[activeTrack], activeTrack, rowPos);
|
enterCurrentValue(tracks[activeTrack], activeTrack, rowPos);
|
||||||
@ -1740,6 +1760,12 @@ void Editor_destroy()
|
|||||||
|
|
||||||
static bool doEditing(int key)
|
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
|
// 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)
|
if ((key == '.' || key == EMGUI_KEY_BACKSPACE) && !is_editing)
|
||||||
|
|||||||
@ -34,6 +34,7 @@ typedef struct Track
|
|||||||
int index;
|
int index;
|
||||||
int groupIndex;
|
int groupIndex;
|
||||||
int muteKeyCount;
|
int muteKeyCount;
|
||||||
|
bool disabled;
|
||||||
bool hidden;
|
bool hidden;
|
||||||
bool folded;
|
bool folded;
|
||||||
bool selected;
|
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))
|
if (!(trackData->selected && info->viewInfo->rowPos == y && info->editText))
|
||||||
renderText(info, track, y, idx, offset, y_offset, folded);
|
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) &&
|
selected = (trackIndex >= info->selectLeft && trackIndex <= info->selectRight) &&
|
||||||
(y >= info->selectTop && y <= info->selectBottom);
|
(y >= info->selectTop && y <= info->selectBottom);
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user