diff --git a/mscore/musescore.cpp b/mscore/musescore.cpp index ebe3509bc026..be0211521d24 100644 --- a/mscore/musescore.cpp +++ b/mscore/musescore.cpp @@ -2336,10 +2336,10 @@ void MuseScore::selectionChanged(SelState selectionState) // chord rest //--------------------------------------------------------- -void MuseScore::updatePaletteBeamMode(bool unselect) +void MuseScore::updatePaletteBeamMode() { if (paletteWorkspace) - paletteWorkspace->updateCellsState(cs->selection(), unselect); + paletteWorkspace->updateCellsState(cs->selection()); } //--------------------------------------------------------- @@ -5968,8 +5968,7 @@ void MuseScore::endCmd() selectionChanged(SelState::NONE); } updateInspector(); - if (cv) - updatePaletteBeamMode(cv->clickOffElement); + updatePaletteBeamMode(); #ifdef SCRIPT_INTERFACE getPluginEngine()->endEndCmd(this); #endif diff --git a/mscore/musescore.h b/mscore/musescore.h index a96014978c10..3ce78f356504 100644 --- a/mscore/musescore.h +++ b/mscore/musescore.h @@ -644,7 +644,7 @@ class MuseScore : public QMainWindow, public MuseScoreCore { void showPluginManager(); // void updateTabNames(); - void updatePaletteBeamMode(bool unselect = false); + void updatePaletteBeamMode(); QProgressBar* showProgressBar(); void hideProgressBar(); void addRecentScore(Score*); diff --git a/mscore/palette/palettemodel.cpp b/mscore/palette/palettemodel.cpp index 72585ba9d005..6e1562717224 100644 --- a/mscore/palette/palettemodel.cpp +++ b/mscore/palette/palettemodel.cpp @@ -789,13 +789,21 @@ bool PaletteTreeModel::insertPalettePanel(std::unique_ptr pp, int // PaletteTreeModel::updateCellsState //--------------------------------------------------------- -void PaletteTreeModel::updateCellsState(const Selection& sel, bool deactivateAll) +void PaletteTreeModel::updateCellsState(const Selection& sel) { - const ChordRest* cr = sel.cr(); - const IconType beamIconType = cr ? Beam::iconType(cr->beamMode()) : IconType::NONE; - - if (!sel.isSingle() || !cr) - deactivateAll = true; + const ChordRest* cr = sel.firstChordRest(); + const Beam::Mode bm = cr ? cr->beamMode() : Beam::Mode::NONE; + const IconType beamIconType = Beam::iconType(bm); + bool deactivateAll = !cr; + + for (Element* e : sel.elements()) { + if (e->isNote()) + e = e->parent(); + if (e->isChordRest()) { + if (toChordRest(e)->beamMode() != bm) + deactivateAll = true; + } + } const size_t npalettes = palettes().size(); for (size_t row = 0; row < npalettes; ++row) { diff --git a/mscore/palette/palettemodel.h b/mscore/palette/palettemodel.h index 656c74e992a8..4cf42030d53f 100644 --- a/mscore/palette/palettemodel.h +++ b/mscore/palette/palettemodel.h @@ -170,7 +170,7 @@ class PaletteTreeModel : public QAbstractItemModel { PaletteCellPtr findCell(const QModelIndex& index); bool insertPalettePanel(std::unique_ptr pp, int row, const QModelIndex& parent = QModelIndex()); - void updateCellsState(const Selection&, bool deactivateAll); + void updateCellsState(const Selection&); void retranslate(); }; diff --git a/mscore/palette/paletteworkspace.h b/mscore/palette/paletteworkspace.h index 24793e072cf8..84ed230fce48 100644 --- a/mscore/palette/paletteworkspace.h +++ b/mscore/palette/paletteworkspace.h @@ -226,7 +226,7 @@ class PaletteWorkspace : public QObject { void write(XmlWriter&) const; bool read(XmlReader&); - void updateCellsState(const Selection& sel, bool deactivateAll) { userPalette->updateCellsState(sel, deactivateAll); } + void updateCellsState(const Selection& sel) { userPalette->updateCellsState(sel); } void retranslate() { userPalette->retranslate(); masterPalette->retranslate(); defaultPalette->retranslate(); } };