Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
10 changes: 0 additions & 10 deletions src/engraving/dom/chordrest.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -170,8 +170,6 @@ bool ChordRest::acceptDrop(EditData& data) const
case ElementType::TREMOLOBAR:
case ElementType::HARP_DIAGRAM:
return true;
case ElementType::STRING_TUNINGS:
return measure()->canAddStringTunings(staffIdx());
case ElementType::ACTION_ICON: {
switch (toActionIcon(e)->actionType()) {
case ActionIconType::BEAM_AUTO:
Expand Down Expand Up @@ -346,14 +344,6 @@ EngravingItem* ChordRest::drop(EditData& data)
score()->undoAddElement(e);
return e;
}
case ElementType::STRING_TUNINGS:
{
Staff* st = staff()->isPrimaryStaff() ? staff() : staff()->primaryStaff();
e->setParent(segment());
e->setTrack(staff2track(st->idx()));
score()->undoAddElement(e);
return e;
}
case ElementType::INSTRUMENT_CHANGE:
if (part()->instruments().find(tick().ticks()) != part()->instruments().end()) {
LOGD() << "InstrumentChange already exists at tick = " << tick().ticks();
Expand Down
27 changes: 27 additions & 0 deletions src/engraving/dom/measure.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -1449,6 +1449,14 @@ bool Measure::acceptDrop(EditData& data) const
}
return true;

case ElementType::STRING_TUNINGS: {
const bool canAdd = canAddStringTunings(staffIdx);
if (viewer && canAdd) {
viewer->setDropRectangle(staffRect);
}
return canAdd;
}

case ElementType::ACTION_ICON:
switch (toActionIcon(e)->actionType()) {
case ActionIconType::VFRAME:
Expand Down Expand Up @@ -1523,6 +1531,25 @@ EngravingItem* Measure::drop(EditData& data)
score()->undoAddElement(e);
return e;

case ElementType::STRING_TUNINGS:
{
staff = staff->isPrimaryStaff() ? staff : staff->primaryStaff();
if (!staff) {
delete e;
return nullptr;
}
staffIdx = staff->idx();
Segment* parentSeg = first(Segment::CHORD_REST_OR_TIME_TICK_TYPE);
if (!parentSeg) {
delete e;
return nullptr;
}
e->setParent(parentSeg);
e->setTrack(staff2track(staffIdx));
score()->undoAddElement(e);
return e;
}

case ElementType::MEASURE_NUMBER:
undoChangeProperty(Pid::MEASURE_NUMBER_MODE, static_cast<int>(MeasureNumberMode::SHOW));
delete e;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -176,6 +176,8 @@ FocusScope {

ShortcutOverrideModel {
id: shortcutOverrideModel
// Direction keys should not trigger navigation, override them...
directionKeysForOverride: ShortcutOverrideModel.All
}

Component.onCompleted: {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -184,6 +184,8 @@ FocusScope {

ShortcutOverrideModel {
id: shortcutOverrideModel
// Left/right should not trigger navigation - override them...
directionKeysForOverride: ShortcutOverrideModel.LeftRight
}

Component.onCompleted: {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -72,6 +72,22 @@ bool ShortcutOverrideModel::handleShortcut(Qt::Key key, Qt::KeyboardModifiers mo
return found;
}

ShortcutOverrideModel::DirectionKeys ShortcutOverrideModel::directionKeysForOverride() const
{
return m_directionKeysForOverride;
}

void ShortcutOverrideModel::setDirectionKeysForOverride(const ShortcutOverrideModel::DirectionKeys& keys)
{
if (m_directionKeysForOverride == keys) {
return;
}
m_directionKeysForOverride = keys;
emit directionKeysForOverrideChanged();

loadDisallowedOverrides();
}

void ShortcutOverrideModel::loadDisallowedOverrides()
{
//! NOTE: navigation shortcuts cannot be overridden...
Expand All @@ -83,10 +99,6 @@ void ShortcutOverrideModel::loadDisallowedOverrides()
"nav-next-tab",
"nav-prev-tab",
"nav-trigger-control",
"nav-up",
"nav-down",
"nav-right",
"nav-left",
"nav-first-control",
"nav-last-control",
"nav-nextrow-control",
Expand All @@ -96,6 +108,18 @@ void ShortcutOverrideModel::loadDisallowedOverrides()
for (const std::string& actionCode : actionCodes) {
m_notAllowedForOverrideShortcuts.push_back(shortcutsRegister()->shortcut(actionCode));
}

if (!m_directionKeysForOverride.testFlag(DirectionKey::LeftRight)) {
// We don't want to override left/right - dispatch navigation instead...
m_notAllowedForOverrideShortcuts.push_back(shortcutsRegister()->shortcut("nav-left"));
m_notAllowedForOverrideShortcuts.push_back(shortcutsRegister()->shortcut("nav-right"));
}

if (!m_directionKeysForOverride.testFlag(DirectionKey::UpDown)) {
// We don't want to override up/down - dispatch navigation instead...
m_notAllowedForOverrideShortcuts.push_back(shortcutsRegister()->shortcut("nav-up"));
m_notAllowedForOverrideShortcuts.push_back(shortcutsRegister()->shortcut("nav-down"));
}
}

Shortcut ShortcutOverrideModel::disallowedOverride(Qt::Key key, Qt::KeyboardModifiers modifiers) const
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -35,6 +35,10 @@ namespace muse::uicomponents {
class ShortcutOverrideModel : public QObject, public muse::Contextable, public async::Asyncable
{
Q_OBJECT

Q_PROPERTY(DirectionKeys directionKeysForOverride READ directionKeysForOverride
WRITE setDirectionKeysForOverride NOTIFY directionKeysForOverrideChanged)

QML_ELEMENT;

muse::ContextInject<shortcuts::IShortcutsRegister> shortcutsRegister = { this };
Expand All @@ -43,14 +47,30 @@ class ShortcutOverrideModel : public QObject, public muse::Contextable, public a
public:
explicit ShortcutOverrideModel(QObject* parent = nullptr);

enum class DirectionKey {
None = 0x0,
LeftRight = 0x1,
UpDown = 0x2,
All = LeftRight | UpDown,
};
Q_DECLARE_FLAGS(DirectionKeys, DirectionKey)
Q_FLAG(DirectionKeys)

Q_INVOKABLE void init();
Q_INVOKABLE bool isShortcutOverrideAllowed(Qt::Key key, Qt::KeyboardModifiers modifiers) const;
Q_INVOKABLE bool handleShortcut(Qt::Key key, Qt::KeyboardModifiers modifiers);

DirectionKeys directionKeysForOverride() const;
void setDirectionKeysForOverride(const DirectionKeys& keys);

signals:
void directionKeysForOverrideChanged();

private:
void loadDisallowedOverrides();
shortcuts::Shortcut disallowedOverride(Qt::Key key, Qt::KeyboardModifiers modifiers) const;

shortcuts::ShortcutList m_notAllowedForOverrideShortcuts;
DirectionKeys m_directionKeysForOverride = DirectionKey::None;
};
}
2 changes: 2 additions & 0 deletions src/notation/internal/masternotation.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -470,6 +470,8 @@ void MasterNotation::initExcerpts(const ExcerptNotationList& excerpts)

masterScore()->initExcerpt(impl->excerpt());
impl->init();

initNotationSoloMuteState(impl->notation());
}
}

Expand Down
Loading