Skip to content

Commit bfa738b

Browse files
committed
ui: allow items with no interactive elements to skip the unique focus requirement
fixes #1811
1 parent b917402 commit bfa738b

8 files changed

Lines changed: 19 additions & 8 deletions

File tree

src/plugins/score-lib-process/Process/Dataflow/NodeItem.cpp

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -657,10 +657,12 @@ void NodeItem::mousePressEvent(QGraphicsSceneMouseEvent* event)
657657
nodeItemInteraction = Interaction::Move;
658658
}
659659

660-
if(m_presenter)
660+
if(m_presenter && m_model.flags() & Process::ProcessFlags::ItemRequiresUniqueFocus)
661+
{
661662
m_context.focusDispatcher.focus(m_presenter);
662-
663+
}
663664
score::SelectionDispatcher{m_context.selectionStack}.select(m_model);
665+
664666
event->accept();
665667
}
666668
namespace

src/plugins/score-lib-process/Process/LayerPresenter.cpp

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -63,7 +63,9 @@ void LayerPresenter::handlePresetDrop(const QPointF&, const QMimeData& mime)
6363

6464
void LayerPresenter::requestFocus()
6565
{
66-
m_context.context.focusDispatcher.focus(this);
66+
if(this->m_process.flags() & Process::ProcessFlags::ItemRequiresUniqueFocus)
67+
m_context.context.focusDispatcher.focus(this);
68+
score::SelectionDispatcher{m_context.context.selectionStack}.select(m_process);
6769
}
6870

6971
bool LayerPresenter::focused() const

src/plugins/score-lib-process/Process/ProcessFlags.hpp

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -52,6 +52,9 @@ enum ProcessFlags : int64_t
5252
//! The process is recordable
5353
Recordable = SCORE_FLAG(11),
5454

55+
//! The process has an editable widget which must unfocus & unselect other items
56+
ItemRequiresUniqueFocus = SCORE_FLAG(12),
57+
5558
SupportsLasting = SupportsTemporal | TimeIndependent,
5659
ExternalEffect
5760
= SupportsTemporal | TimeIndependent | RequiresCustomData | ControlSurface,

src/plugins/score-plugin-automation/Automation/AutomationProcessMetadata.hpp

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,4 +19,5 @@ PROCESS_METADATA(
1919
"ossia score", (QStringList{"Curve", "Automation"}), {},
2020
{std::vector<Process::PortType>{Process::PortType::Message}},
2121
QUrl("https://ossia.io/score-docs/in-depth/automations.html"),
22-
Process::ProcessFlags::SupportsTemporal)
22+
Process::ProcessFlags::SupportsTemporal
23+
| Process::ProcessFlags::ItemRequiresUniqueFocus)

src/plugins/score-plugin-mapping/Mapping/MappingProcessMetadata.hpp

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,4 +18,5 @@ PROCESS_METADATA(
1818
{std::vector<Process::PortType>{Process::PortType::Message}},
1919
{std::vector<Process::PortType>{Process::PortType::Message}},
2020
QUrl("https://ossia.io/score-docs/processes/2Dspline.html#generating-a-curve"),
21-
Process::ProcessFlags::SupportsLasting)
21+
Process::ProcessFlags::SupportsLasting
22+
| Process::ProcessFlags::ItemRequiresUniqueFocus)

src/plugins/score-plugin-midi/Midi/MidiProcessMetadata.hpp

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,4 +14,5 @@ PROCESS_METADATA(
1414
"MIDI note playback", "ossia score", {}, {},
1515
{std::vector<Process::PortType>{Process::PortType::Midi}},
1616
QUrl("https://ossia.io/score-docs/processes/piano-roll.html#piano-roll"),
17-
Process::ProcessFlags::SupportsTemporal | Process::ProcessFlags::PutInNewSlot)
17+
Process::ProcessFlags::SupportsTemporal | Process::ProcessFlags::PutInNewSlot
18+
| Process::ProcessFlags::ItemRequiresUniqueFocus)

src/plugins/score-plugin-scenario/Scenario/Process/ScenarioProcessMetadata.hpp

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,4 +14,5 @@ PROCESS_METADATA(
1414
Process::ProcessCategory::Structure, "Structure", "Temporal structure",
1515
"ossia score", {}, {}, {},
1616
QUrl("https://ossia.io/score-docs/processes/scenario.html#scenario"),
17-
Process::ProcessFlags::SupportsTemporal | Process::ProcessFlags::PutInNewSlot)
17+
Process::ProcessFlags::SupportsTemporal | Process::ProcessFlags::PutInNewSlot
18+
| Process::ProcessFlags::ItemRequiresUniqueFocus)

src/plugins/score-plugin-ui/Ui/ValueDisplay.hpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -45,7 +45,7 @@ struct Node
4545
QGraphicsItem* parent)
4646
: Process::EffectLayerView{parent}
4747
{
48-
setAcceptedMouseButtons({});
48+
setAcceptedMouseButtons(Qt::NoButton);
4949

5050
const Process::PortFactoryList& portFactory
5151
= doc.app.interfaces<Process::PortFactoryList>();

0 commit comments

Comments
 (0)