mirror of
https://github.com/cookiengineer/audacity
synced 2025-06-22 15:20:15 +02:00
Fix bug 1536
The Edit buttons now enable/disable whenever their Menu counterparts are enabled/disabled, but there are residual issues due to incorrect behavior in "Select all if none selected" (noted in comments).
This commit is contained in:
parent
edb99485da
commit
d39dbc4162
src
@ -1976,6 +1976,10 @@ void AudacityProject::UpdateMenus(bool /*checkActive*/)
|
|||||||
{
|
{
|
||||||
mCommandManager.Enable(wxT("SplitCut"), false);
|
mCommandManager.Enable(wxT("SplitCut"), false);
|
||||||
|
|
||||||
|
// FIXME: This Can't be right. We can only
|
||||||
|
// FIXME: get here if no tracks selected, so
|
||||||
|
// FIXME: there can't be a Wave track selected.
|
||||||
|
// wxASSERT(!(flags & WaveTracksSelectedFlag));
|
||||||
if (!(flags & WaveTracksSelectedFlag))
|
if (!(flags & WaveTracksSelectedFlag))
|
||||||
{
|
{
|
||||||
mCommandManager.Enable(wxT("Split"), false);
|
mCommandManager.Enable(wxT("Split"), false);
|
||||||
|
@ -240,30 +240,34 @@ void EditToolBar::OnButton(wxCommandEvent &event)
|
|||||||
AudacityProject *p = GetActiveProject();
|
AudacityProject *p = GetActiveProject();
|
||||||
if (!p) return;
|
if (!p) return;
|
||||||
|
|
||||||
bool busy = gAudioIO->IsBusy();
|
|
||||||
int id = event.GetId();
|
int id = event.GetId();
|
||||||
|
// FIXME: Some "SelectAllIfNone()" do not work as expected
|
||||||
|
// due to bugs elsewhere (see: AudacityProject::UpdateMenus() )
|
||||||
switch (id) {
|
switch (id) {
|
||||||
case ETBCutID:
|
case ETBCutID:
|
||||||
if (!busy) p->OnCut();
|
p->SelectAllIfNone();
|
||||||
|
p->OnCut();
|
||||||
break;
|
break;
|
||||||
case ETBCopyID:
|
case ETBCopyID:
|
||||||
if (!busy) p->OnCopy();
|
p->SelectAllIfNone();
|
||||||
|
p->OnCopy();
|
||||||
break;
|
break;
|
||||||
case ETBPasteID:
|
case ETBPasteID:
|
||||||
if (!busy) p->OnPaste();
|
p->OnPaste();
|
||||||
break;
|
break;
|
||||||
case ETBTrimID:
|
case ETBTrimID:
|
||||||
if (!busy) p->OnTrim();
|
p->SelectAllIfNone();
|
||||||
|
p->OnTrim();
|
||||||
break;
|
break;
|
||||||
case ETBSilenceID:
|
case ETBSilenceID:
|
||||||
if (!busy) p->OnSilence();
|
p->SelectAllIfNone();
|
||||||
|
p->OnSilence();
|
||||||
break;
|
break;
|
||||||
case ETBUndoID:
|
case ETBUndoID:
|
||||||
if (!busy) p->OnUndo();
|
p->OnUndo();
|
||||||
break;
|
break;
|
||||||
case ETBRedoID:
|
case ETBRedoID:
|
||||||
if (!busy) p->OnRedo();
|
p->OnRedo();
|
||||||
break;
|
break;
|
||||||
#ifdef EXPERIMENTAL_SYNC_LOCK
|
#ifdef EXPERIMENTAL_SYNC_LOCK
|
||||||
case ETBSyncLockID:
|
case ETBSyncLockID:
|
||||||
@ -301,40 +305,28 @@ void EditToolBar::OnButton(wxCommandEvent &event)
|
|||||||
|
|
||||||
void EditToolBar::EnableDisableButtons()
|
void EditToolBar::EnableDisableButtons()
|
||||||
{
|
{
|
||||||
AudacityProject *p = GetActiveProject();
|
CommandManager* cm = GetActiveProject()->GetCommandManager();
|
||||||
if (!p) return;
|
if (!cm) return;
|
||||||
|
|
||||||
// Is anything selected?
|
mButtons[ETBCutID]->SetEnabled(cm->GetEnabled("Cut"));
|
||||||
bool selection = false;
|
mButtons[ETBCopyID]->SetEnabled(cm->GetEnabled("Copy"));
|
||||||
TrackListIterator iter(p->GetTracks());
|
mButtons[ETBTrimID]->SetEnabled(cm->GetEnabled("Trim"));
|
||||||
for (Track *t = iter.First(); t; t = iter.Next())
|
mButtons[ETBSilenceID]->SetEnabled(cm->GetEnabled("Silence"));
|
||||||
if (t->GetSelected()) {
|
|
||||||
selection = true;
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
selection &= (p->GetSel0() < p->GetSel1());
|
|
||||||
|
|
||||||
mButtons[ETBCutID]->SetEnabled(selection);
|
mButtons[ETBUndoID]->SetEnabled(cm->GetEnabled("Undo"));
|
||||||
mButtons[ETBCopyID]->SetEnabled(selection);
|
mButtons[ETBRedoID]->SetEnabled(cm->GetEnabled("Redo"));
|
||||||
mButtons[ETBTrimID]->SetEnabled(selection);
|
|
||||||
mButtons[ETBSilenceID]->SetEnabled(selection);
|
|
||||||
|
|
||||||
mButtons[ETBUndoID]->SetEnabled(p->GetUndoManager()->UndoAvailable());
|
mButtons[ETBZoomInID]->SetEnabled(cm->GetEnabled("ZoomIn"));
|
||||||
mButtons[ETBRedoID]->SetEnabled(p->GetUndoManager()->RedoAvailable());
|
mButtons[ETBZoomOutID]->SetEnabled(cm->GetEnabled("ZoomOut"));
|
||||||
|
|
||||||
bool tracks = (!p->GetTracks()->IsEmpty());
|
|
||||||
|
|
||||||
mButtons[ETBZoomInID]->SetEnabled(tracks && (p->ZoomInAvailable()));
|
|
||||||
mButtons[ETBZoomOutID]->SetEnabled(tracks && (p->ZoomOutAvailable()) );
|
|
||||||
|
|
||||||
#if 0 // Disabled for version 1.2.0 since it doesn't work quite right...
|
#if 0 // Disabled for version 1.2.0 since it doesn't work quite right...
|
||||||
mButtons[ETBZoomToggleID]->SetEnabled(tracks);
|
mButtons[ETBZoomToggleID]->SetEnabled(true);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
mButtons[ETBZoomSelID]->SetEnabled(selection);
|
mButtons[ETBZoomSelID]->SetEnabled(cm->GetEnabled("ZoomSel"));
|
||||||
mButtons[ETBZoomFitID]->SetEnabled(tracks);
|
mButtons[ETBZoomFitID]->SetEnabled(cm->GetEnabled("FitInWindow"));
|
||||||
|
|
||||||
mButtons[ETBPasteID]->SetEnabled(p->Clipboard());
|
mButtons[ETBPasteID]->SetEnabled(cm->GetEnabled("Paste"));
|
||||||
|
|
||||||
#ifdef EXPERIMENTAL_SYNC_LOCK
|
#ifdef EXPERIMENTAL_SYNC_LOCK
|
||||||
bool bSyncLockTracks;
|
bool bSyncLockTracks;
|
||||||
|
Loading…
x
Reference in New Issue
Block a user