diff --git a/toonz/sources/toonz/xshcellviewer.cpp b/toonz/sources/toonz/xshcellviewer.cpp index f0b3b009..76151a94 100644 --- a/toonz/sources/toonz/xshcellviewer.cpp +++ b/toonz/sources/toonz/xshcellviewer.cpp @@ -3111,9 +3111,8 @@ const bool CellArea::isControlPressed() { return isCtrlPressed; } void CellArea::createCellMenu(QMenu &menu, bool isCellSelected, TXshCell cell) { CommandManager *cmdManager = CommandManager::instance(); - bool soundCellsSelected = m_viewer->areSoundCellsSelected(); - - if (m_viewer->areSoundTextCellsSelected()) return; // Magpies stop here + bool soundCellsSelected = m_viewer->areSoundCellsSelected(); + bool soundTextCellsSelected = m_viewer->areSoundTextCellsSelected(); menu.addSeparator(); @@ -3124,13 +3123,17 @@ void CellArea::createCellMenu(QMenu &menu, bool isCellSelected, TXshCell cell) { } if (isCellSelected) { + bool addSeparator = false; // open fx settings instead of level settings when clicked on zerary fx // level - if (cell.m_level && cell.m_level->getZeraryFxLevel()) + if (cell.m_level && cell.m_level->getZeraryFxLevel()) { menu.addAction(cmdManager->getAction(MI_FxParamEditor)); - else + addSeparator = true; + } else if (!soundTextCellsSelected) { menu.addAction(cmdManager->getAction(MI_LevelSettings)); - menu.addSeparator(); + addSeparator = true; + } + if (addSeparator) menu.addSeparator(); if (!soundCellsSelected) { QMenu *reframeSubMenu = new QMenu(tr("Reframe"), this); @@ -3162,74 +3165,81 @@ void CellArea::createCellMenu(QMenu &menu, bool isCellSelected, TXshCell cell) { } menu.addMenu(eachSubMenu); - QMenu *editCellNumbersMenu = new QMenu(tr("Edit Cell Numbers"), this); - { - editCellNumbersMenu->addAction(cmdManager->getAction(MI_Reverse)); - editCellNumbersMenu->addAction(cmdManager->getAction(MI_Swing)); - editCellNumbersMenu->addAction(cmdManager->getAction(MI_Random)); - editCellNumbersMenu->addAction(cmdManager->getAction(MI_Dup)); - editCellNumbersMenu->addAction(cmdManager->getAction(MI_Rollup)); - editCellNumbersMenu->addAction(cmdManager->getAction(MI_Rolldown)); - editCellNumbersMenu->addAction(cmdManager->getAction(MI_TimeStretch)); - editCellNumbersMenu->addAction( - cmdManager->getAction(MI_AutoInputCellNumber)); + if (!soundTextCellsSelected) { + QMenu *editCellNumbersMenu = new QMenu(tr("Edit Cell Numbers"), this); + { + editCellNumbersMenu->addAction(cmdManager->getAction(MI_Reverse)); + editCellNumbersMenu->addAction(cmdManager->getAction(MI_Swing)); + editCellNumbersMenu->addAction(cmdManager->getAction(MI_Random)); + editCellNumbersMenu->addAction(cmdManager->getAction(MI_Dup)); + editCellNumbersMenu->addAction(cmdManager->getAction(MI_Rollup)); + editCellNumbersMenu->addAction(cmdManager->getAction(MI_Rolldown)); + editCellNumbersMenu->addAction(cmdManager->getAction(MI_TimeStretch)); + editCellNumbersMenu->addAction( + cmdManager->getAction(MI_AutoInputCellNumber)); + } + menu.addMenu(editCellNumbersMenu); } - menu.addMenu(editCellNumbersMenu); menu.addAction(cmdManager->getAction(MI_FillEmptyCell)); menu.addSeparator(); - menu.addAction(cmdManager->getAction(MI_Autorenumber)); + + if (!soundTextCellsSelected) + menu.addAction(cmdManager->getAction(MI_Autorenumber)); } - QMenu *replaceLevelMenu = new QMenu(tr("Replace Level"), this); - menu.addMenu(replaceLevelMenu); + if (!soundTextCellsSelected) { + QMenu *replaceLevelMenu = new QMenu(tr("Replace Level"), this); + menu.addMenu(replaceLevelMenu); - replaceLevelMenu->addAction(cmdManager->getAction(MI_ReplaceLevel)); + replaceLevelMenu->addAction(cmdManager->getAction(MI_ReplaceLevel)); - replaceLevelMenu->addAction( - cmdManager->getAction(MI_ReplaceParentDirectory)); + replaceLevelMenu->addAction( + cmdManager->getAction(MI_ReplaceParentDirectory)); - { - // replace with another level in scene cast - std::vector levels; - TApp::instance() - ->getCurrentScene() - ->getScene() - ->getLevelSet() - ->listLevels(levels); - if (!levels.empty()) { - QMenu *replaceMenu = replaceLevelMenu->addMenu(tr("Replace with")); - connect(replaceMenu, SIGNAL(triggered(QAction *)), this, - SLOT(onReplaceByCastedLevel(QAction *))); - for (int i = 0; i < (int)levels.size(); i++) { - if (!levels[i]->getSimpleLevel() && !levels[i]->getChildLevel()) - continue; + { + // replace with another level in scene cast + std::vector levels; + TApp::instance() + ->getCurrentScene() + ->getScene() + ->getLevelSet() + ->listLevels(levels); + if (!levels.empty()) { + QMenu *replaceMenu = replaceLevelMenu->addMenu(tr("Replace with")); + connect(replaceMenu, SIGNAL(triggered(QAction *)), this, + SLOT(onReplaceByCastedLevel(QAction *))); + for (int i = 0; i < (int)levels.size(); i++) { + if (!levels[i]->getSimpleLevel() && !levels[i]->getChildLevel()) + continue; - if (levels[i]->getChildLevel() && - !TApp::instance()->getCurrentXsheet()->getXsheet()->isLevelUsed( - levels[i])) - continue; + if (levels[i]->getChildLevel() && + !TApp::instance()->getCurrentXsheet()->getXsheet()->isLevelUsed( + levels[i])) + continue; - QString tmpLevelName = QString::fromStdWString(levels[i]->getName()); - QAction *tmpAction = new QAction(tmpLevelName, replaceMenu); - tmpAction->setData(tmpLevelName); - replaceMenu->addAction(tmpAction); + QString tmpLevelName = + QString::fromStdWString(levels[i]->getName()); + QAction *tmpAction = new QAction(tmpLevelName, replaceMenu); + tmpAction->setData(tmpLevelName); + replaceMenu->addAction(tmpAction); + } } } - } - if (!soundCellsSelected) { - if (selectionContainTlvImage(m_viewer->getCellSelection(), - m_viewer->getXsheet())) - replaceLevelMenu->addAction( - cmdManager->getAction(MI_RevertToCleanedUp)); - if (selectionContainLevelImage(m_viewer->getCellSelection(), + if (!soundCellsSelected && !soundTextCellsSelected) { + if (selectionContainTlvImage(m_viewer->getCellSelection(), m_viewer->getXsheet())) - replaceLevelMenu->addAction( - cmdManager->getAction(MI_RevertToLastSaved)); - menu.addAction(cmdManager->getAction(MI_SetKeyframes)); + replaceLevelMenu->addAction( + cmdManager->getAction(MI_RevertToCleanedUp)); + if (selectionContainLevelImage(m_viewer->getCellSelection(), + m_viewer->getXsheet())) + replaceLevelMenu->addAction( + cmdManager->getAction(MI_RevertToLastSaved)); + menu.addAction(cmdManager->getAction(MI_SetKeyframes)); + } + menu.addSeparator(); } - menu.addSeparator(); menu.addAction(cmdManager->getAction(MI_Cut)); menu.addAction(cmdManager->getAction(MI_Copy)); @@ -3244,7 +3254,8 @@ void CellArea::createCellMenu(QMenu &menu, bool isCellSelected, TXshCell cell) { menu.addAction(cmdManager->getAction(MI_Clear)); menu.addAction(cmdManager->getAction(MI_Insert)); - menu.addAction(cmdManager->getAction(MI_Duplicate)); + if (!soundTextCellsSelected) + menu.addAction(cmdManager->getAction(MI_Duplicate)); menu.addSeparator(); TXshSimpleLevel *sl = TApp::instance()->getCurrentLevel()->getSimpleLevel(); diff --git a/toonz/sources/toonzlib/txshsoundtextcolumn.cpp b/toonz/sources/toonzlib/txshsoundtextcolumn.cpp index b10f5836..163fec38 100644 --- a/toonz/sources/toonzlib/txshsoundtextcolumn.cpp +++ b/toonz/sources/toonzlib/txshsoundtextcolumn.cpp @@ -46,7 +46,7 @@ void TXshSoundTextColumn::createSoundTextLevel(int row, //----------------------------------------------------------------------------- bool TXshSoundTextColumn::canSetCell(const TXshCell &cell) const { - return true; + return cell.isEmpty() || cell.m_level->getSoundTextLevel() != 0; } //-----------------------------------------------------------------------------