From c3d0c12df13ab434b7e8c8666e5c9ca8fc6bd6bc Mon Sep 17 00:00:00 2001 From: Peter Hieu Vu Date: Sun, 24 Feb 2019 17:23:47 -0800 Subject: [PATCH] fix #281957 beam property highlighting for selected notes --- mscore/events.cpp | 1 + mscore/musescore.cpp | 61 ++++++++++++++++++++++++++++++++++++++++++++ mscore/musescore.h | 1 + mscore/palette.cpp | 2 ++ 4 files changed, 65 insertions(+) diff --git a/mscore/events.cpp b/mscore/events.cpp index e818c70643a7..02d34226378b 100644 --- a/mscore/events.cpp +++ b/mscore/events.cpp @@ -344,6 +344,7 @@ void ScoreView::mousePressEventNormal(QMouseEvent* ev) } _score->update(); mscore->endCmd(); + mscore->updatePaletteBeamMode(clickOffElement); } //--------------------------------------------------------- diff --git a/mscore/musescore.cpp b/mscore/musescore.cpp index 55e39c5697c3..d5ba1191560d 100644 --- a/mscore/musescore.cpp +++ b/mscore/musescore.cpp @@ -101,6 +101,7 @@ #include "libmscore/excerpt.h" #include "libmscore/synthesizerstate.h" #include "libmscore/utils.h" +#include "libmscore/icon.h" #include "driver.h" @@ -2153,6 +2154,66 @@ void MuseScore::selectionChanged(SelState selectionState) updateInspector(); } +//--------------------------------------------------------- +// updatePaletteBeamMode +// +// Updates the selected index of the Beam Properties +// palette to reflect the beam mode of the selected +// chord rest +//--------------------------------------------------------- + +void MuseScore::updatePaletteBeamMode(bool unselect) + { + for (Palette* p : paletteBox->palettes()) { + if (p->name() == "Beam Properties") { + if (unselect) { + p->setSelected(-1); + return; + } + const Selection sel = cs->selection(); + const ChordRest* cr = sel.cr(); + if (sel.isSingle() && cr) { + Beam::Mode bm = cr->beamMode(); + IconType type; + switch (bm) { + case Beam::Mode::BEGIN: + type = IconType::SBEAM; + break; + case Beam::Mode::MID: + type = IconType::MBEAM; + break; + case Beam::Mode::NONE: + type = IconType::NBEAM; + break; + case Beam::Mode::BEGIN32: + type = IconType::BEAM32; + break; + case Beam::Mode::BEGIN64: + type = IconType::BEAM64; + break; + case Beam::Mode::AUTO: + type = IconType::AUTOBEAM; + break; + default: + p->setSelected(-1); + return; + } + for (int i = 0; i < p->size(); ++i) { + if (toIcon(p->element(i))->iconType() == type) { + p->setSelected(i); + p->update(); + return; + } + } + } + else { + p->setSelected(-1); + } + p->update(); + } + } + } + //--------------------------------------------------------- // updateInspector //--------------------------------------------------------- diff --git a/mscore/musescore.h b/mscore/musescore.h index 0799b19d32e9..7744f504074f 100644 --- a/mscore/musescore.h +++ b/mscore/musescore.h @@ -619,6 +619,7 @@ class MuseScore : public QMainWindow, public MuseScoreCore { void showPluginManager(); // void updateTabNames(); + void updatePaletteBeamMode(bool unselect = false); QProgressBar* showProgressBar(); void hideProgressBar(); void addRecentScore(Score*); diff --git a/mscore/palette.cpp b/mscore/palette.cpp index b45273bc5467..bdcbdd09ad8a 100644 --- a/mscore/palette.cpp +++ b/mscore/palette.cpp @@ -534,6 +534,7 @@ void Palette::applyPaletteElement(PaletteCell* cell, Qt::KeyboardModifiers modif else { for (Element* e : sel.elements()) applyDrop(score, viewer, e, element, modifiers); + selectedIdx = currentIdx; } } else if (sel.isRange()) { @@ -560,6 +561,7 @@ void Palette::applyPaletteElement(PaletteCell* cell, Qt::KeyboardModifiers modif applyDrop(score, viewer, m, element, modifiers, pt); if (m == last) break; + selectedIdx = currentIdx; } } else if (element->type() == ElementType::LAYOUT_BREAK) {