Skip to content

Commit

Permalink
fix various bugs, including #898
Browse files Browse the repository at this point in the history
  • Loading branch information
jcelerier committed Apr 1, 2019
1 parent ccc8a85 commit bdb9a66
Show file tree
Hide file tree
Showing 12 changed files with 77 additions and 37 deletions.
2 changes: 2 additions & 0 deletions src/lib/core/settings/SettingsView.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -26,6 +26,8 @@ class SettingsView final : public QDialog
{
auto centerWidg = new QWidget{this};
{
m_settingsList->setMinimumWidth(150);
m_settingsList->setMaximumWidth(150);
m_hboxLayout->addWidget(m_settingsList);
m_hboxLayout->addWidget(m_stackedWidget);
centerWidg->setLayout(m_hboxLayout);
Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
#pragma once
#include <core/settings/SettingsPresenter.hpp>
#include <score/plugins/settingsdelegate/SettingsDelegatePresenter.hpp>

#include <QObject>

Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
#pragma once
#include <core/settings/SettingsView.hpp>
#include <score/plugins/settingsdelegate/SettingsDelegateView.hpp>
namespace score
{
class ProjectSettingsModel;
Expand Down
1 change: 1 addition & 0 deletions src/plugins/score-plugin-engine/Audio/JackInterface.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,7 @@
#include <Audio/AudioInterface.hpp>
#include <Audio/Settings/Model.hpp>
#include <Audio/Settings/View.hpp>
#include <score/command/Dispatchers/SettingsCommandDispatcher.hpp>

namespace Audio
{
Expand Down
1 change: 1 addition & 0 deletions src/plugins/score-plugin-engine/Audio/Settings/View.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@
#include <QComboBox>
#include <QFormLayout>
#include <QSpinBox>
#include <QStackedWidget>

#include <Audio/Settings/Model.hpp>
#include <Audio/Settings/View.hpp>
Expand Down
2 changes: 1 addition & 1 deletion src/plugins/score-plugin-engine/Audio/Settings/View.hpp
Original file line number Diff line number Diff line change
@@ -1,9 +1,9 @@
#pragma once
#include <score/plugins/ProjectSettings/ProjectSettingsView.hpp>
#include <score/plugins/settingsdelegate/SettingsDelegateView.hpp>

#include <Audio/AudioInterface.hpp>
#include <wobjectdefs.h>
class QStackedWidget;
class QCheckBox;
namespace Audio::Settings
{
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@
#include <score/plugins/settingsdelegate/SettingsDelegateView.hpp>

#include <wobjectdefs.h>
class QListWidget;
class QCheckBox;
namespace Media::Settings
{
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -300,9 +300,21 @@ bool DropProcessInInterval::drop(

DropPortInScenario::DropPortInScenario()
{
m_acceptableMimeTypes.push_back(score::mime::port());
}

bool DropPortInScenario::canDrop(const QMimeData& mime) const noexcept
{
if (mime.formats().contains(score::mime::port()))
{
auto base_port = Dataflow::PortItem::clickedPort;
if (!base_port || base_port->port().type != Process::PortType::Message
|| qobject_cast<Process::Outlet*>(&base_port->port()))
return false;

return bool(dynamic_cast<Dataflow::AutomatablePortItem*>(base_port));
}
return false;
}
bool DropPortInScenario::drop(
const ScenarioPresenter& pres,
QPointF pos,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -54,6 +54,7 @@ class DropPortInScenario final : public GhostIntervalDropHandler
public:
DropPortInScenario();
private:
bool canDrop(const QMimeData& mime) const noexcept override;
bool drop(
const Scenario::ScenarioPresenter&,
QPointF pos,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -90,6 +90,26 @@ magneticStates(
}

DropHandler::~DropHandler() {}

bool DropHandler::dragEnter(const ScenarioPresenter&, QPointF pos, const QMimeData& mime)
{
return false;
}

bool DropHandler::dragMove(const ScenarioPresenter&, QPointF pos, const QMimeData& mime)
{
return false;
}

bool DropHandler::dragLeave(const ScenarioPresenter&, QPointF pos, const QMimeData& mime)
{
return false;
}

bool DropHandler::canDrop(const QMimeData& mime) const noexcept
{
return false;
}
GhostIntervalDropHandler::~GhostIntervalDropHandler() {}

bool GhostIntervalDropHandler::dragEnter(
Expand All @@ -105,25 +125,28 @@ bool GhostIntervalDropHandler::dragMove(
QPointF pos,
const QMimeData& mime)
{
bool mimeTypes = ossia::any_of(m_acceptableMimeTypes, [&] (const auto& mimeType){
return mime.formats().contains(mimeType);
});

bool suffixes = false;
for(auto& url : mime.urls())
if(!canDrop(mime))
{
if(url.isLocalFile())
bool mimeTypes = ossia::any_of(m_acceptableMimeTypes, [&] (const auto& mimeType){
return mime.formats().contains(mimeType);
});

bool suffixes = false;
for(auto& url : mime.urls())
{
const auto ext = QFileInfo{url.toLocalFile()}.suffix();
suffixes |= ossia::any_of(m_acceptableSuffixes, [&] (const auto& suffix) {
return ext == suffix;
});
if(suffixes)
break;
if(url.isLocalFile())
{
const auto ext = QFileInfo{url.toLocalFile()}.suffix();
suffixes |= ossia::any_of(m_acceptableSuffixes, [&] (const auto& suffix) {
return ext == suffix;
});
if(suffixes)
break;
}
}
if (!(mimeTypes || suffixes))
return false;
}
if (!(mimeTypes || suffixes))
return false;

auto pt = pres.toScenarioPoint(pos);
m_magnetic = magneticStates(m_magnetic, pt, pres);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -43,24 +43,20 @@ class SCORE_PLUGIN_SCENARIO_EXPORT DropHandler : public score::InterfaceBase
virtual bool dragEnter(
const Scenario::ScenarioPresenter&,
QPointF pos,
const QMimeData& mime)
{
return false;
}
const QMimeData& mime);

virtual bool dragMove(
const Scenario::ScenarioPresenter&,
QPointF pos,
const QMimeData& mime)
{
return false;
}
const QMimeData& mime);

virtual bool dragLeave(
const Scenario::ScenarioPresenter&,
QPointF pos,
const QMimeData& mime)
{
return false;
}
const QMimeData& mime);

virtual bool canDrop(const QMimeData& mime) const noexcept;

virtual bool
drop(const Scenario::ScenarioPresenter&, QPointF pos, const QMimeData& mime)
= 0;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -138,15 +138,18 @@ RemoveSelection::RemoveSelection(
{
if (auto state = dynamic_cast<const StateModel*>(obj))
{
QByteArray arr;
DataStream::Serializer s{&arr};
s.readFrom(*state);
m_removedStates.push_back({state->id(), arr});
if (Q_UNLIKELY(state->id() != Scenario::startId<StateModel>()))
{
QByteArray arr;
DataStream::Serializer s{&arr};
s.readFrom(*state);
m_removedStates.push_back({state->id(), arr});
}
}

else if (auto event = dynamic_cast<const EventModel*>(obj))
{
if (event->id() != Id<EventModel>{0})
if (Q_LIKELY(event->id() != Scenario::startId<EventModel>()))
{
QByteArray arr;
DataStream::Serializer s{&arr};
Expand All @@ -157,7 +160,7 @@ RemoveSelection::RemoveSelection(

else if (auto ts = dynamic_cast<const TimeSyncModel*>(obj))
{
if (ts->id() != Id<TimeSyncModel>{0})
if (Q_LIKELY(ts->id() != Scenario::startId<TimeSyncModel>()))
{
QByteArray arr;
DataStream::Serializer s2{&arr};
Expand Down

0 comments on commit bdb9a66

Please sign in to comment.