forked from qt-creator/qt-creator
QmlDesigner: Clean up 3D Toolbar
* Item orders for 3D toolbar is modified * ParticleSeeker is available as an action, and also an Edit3DAction Task-number: QDS-9082 Change-Id: I210feaa416934c3e287a1a177720db69138ffab3 Reviewed-by: Thomas Hartmann <thomas.hartmann@qt.io>
This commit is contained in:
@@ -8,7 +8,7 @@
|
|||||||
namespace QmlDesigner {
|
namespace QmlDesigner {
|
||||||
|
|
||||||
AbstractAction::AbstractAction(const QString &description)
|
AbstractAction::AbstractAction(const QString &description)
|
||||||
: m_defaultAction(new DefaultAction(description))
|
: m_pureAction(new DefaultAction(description))
|
||||||
{
|
{
|
||||||
const Utils::Icon defaultIcon({
|
const Utils::Icon defaultIcon({
|
||||||
{":/utils/images/select.png", Utils::Theme::QmlDesigner_FormEditorForegroundColor}}, Utils::Icon::MenuTintedStyle);
|
{":/utils/images/select.png", Utils::Theme::QmlDesigner_FormEditorForegroundColor}}, Utils::Icon::MenuTintedStyle);
|
||||||
@@ -16,14 +16,14 @@ AbstractAction::AbstractAction(const QString &description)
|
|||||||
action()->setIcon(defaultIcon.icon());
|
action()->setIcon(defaultIcon.icon());
|
||||||
}
|
}
|
||||||
|
|
||||||
AbstractAction::AbstractAction(DefaultAction *action)
|
AbstractAction::AbstractAction(PureActionInterface *action)
|
||||||
: m_defaultAction(action)
|
: m_pureAction(action)
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
QAction *AbstractAction::action() const
|
QAction *AbstractAction::action() const
|
||||||
{
|
{
|
||||||
return m_defaultAction.data();
|
return m_pureAction->action();
|
||||||
}
|
}
|
||||||
|
|
||||||
void AbstractAction::currentContextChanged(const SelectionContext &selectionContext)
|
void AbstractAction::currentContextChanged(const SelectionContext &selectionContext)
|
||||||
@@ -34,12 +34,13 @@ void AbstractAction::currentContextChanged(const SelectionContext &selectionCont
|
|||||||
|
|
||||||
void AbstractAction::updateContext()
|
void AbstractAction::updateContext()
|
||||||
{
|
{
|
||||||
m_defaultAction->setSelectionContext(m_selectionContext);
|
m_pureAction->setSelectionContext(m_selectionContext);
|
||||||
if (m_selectionContext.isValid()) {
|
if (m_selectionContext.isValid()) {
|
||||||
m_defaultAction->setEnabled(isEnabled(m_selectionContext));
|
QAction *action = m_pureAction->action();
|
||||||
m_defaultAction->setVisible(isVisible(m_selectionContext));
|
action->setEnabled(isEnabled(m_selectionContext));
|
||||||
if (m_defaultAction->isCheckable())
|
action->setVisible(isVisible(m_selectionContext));
|
||||||
m_defaultAction->setChecked(isChecked(m_selectionContext));
|
if (action->isCheckable())
|
||||||
|
action->setChecked(isChecked(m_selectionContext));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -50,12 +51,12 @@ bool AbstractAction::isChecked(const SelectionContext &) const
|
|||||||
|
|
||||||
void AbstractAction::setCheckable(bool checkable)
|
void AbstractAction::setCheckable(bool checkable)
|
||||||
{
|
{
|
||||||
m_defaultAction->setCheckable(checkable);
|
action()->setCheckable(checkable);
|
||||||
}
|
}
|
||||||
|
|
||||||
DefaultAction *AbstractAction::defaultAction() const
|
PureActionInterface *AbstractAction::pureAction() const
|
||||||
{
|
{
|
||||||
return m_defaultAction.data();
|
return m_pureAction.data();
|
||||||
}
|
}
|
||||||
|
|
||||||
SelectionContext AbstractAction::selectionContext() const
|
SelectionContext AbstractAction::selectionContext() const
|
||||||
@@ -65,6 +66,7 @@ SelectionContext AbstractAction::selectionContext() const
|
|||||||
|
|
||||||
DefaultAction::DefaultAction(const QString &description)
|
DefaultAction::DefaultAction(const QString &description)
|
||||||
: QAction(description, nullptr)
|
: QAction(description, nullptr)
|
||||||
|
, PureActionInterface(this)
|
||||||
{
|
{
|
||||||
connect(this, &QAction::triggered, this, &DefaultAction::actionTriggered);
|
connect(this, &QAction::triggered, this, &DefaultAction::actionTriggered);
|
||||||
}
|
}
|
||||||
@@ -74,4 +76,15 @@ void DefaultAction::setSelectionContext(const SelectionContext &selectionContext
|
|||||||
m_selectionContext = selectionContext;
|
m_selectionContext = selectionContext;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
PureActionInterface::PureActionInterface(QAction *action)
|
||||||
|
: m_action(action)
|
||||||
|
{
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
QAction *PureActionInterface::action()
|
||||||
|
{
|
||||||
|
return m_action;
|
||||||
|
}
|
||||||
|
|
||||||
} // namespace QmlDesigner
|
} // namespace QmlDesigner
|
||||||
|
@@ -10,7 +10,18 @@
|
|||||||
|
|
||||||
namespace QmlDesigner {
|
namespace QmlDesigner {
|
||||||
|
|
||||||
class QMLDESIGNERCOMPONENTS_EXPORT DefaultAction : public QAction
|
class QMLDESIGNERCOMPONENTS_EXPORT PureActionInterface
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
explicit PureActionInterface(QAction *action);
|
||||||
|
virtual void setSelectionContext(const SelectionContext &selectionContext) = 0;
|
||||||
|
QAction *action();
|
||||||
|
|
||||||
|
private:
|
||||||
|
QAction *m_action = nullptr;
|
||||||
|
};
|
||||||
|
|
||||||
|
class QMLDESIGNERCOMPONENTS_EXPORT DefaultAction : public QAction, public PureActionInterface
|
||||||
{
|
{
|
||||||
Q_OBJECT
|
Q_OBJECT
|
||||||
|
|
||||||
@@ -19,7 +30,7 @@ public:
|
|||||||
|
|
||||||
// virtual function instead of slot
|
// virtual function instead of slot
|
||||||
virtual void actionTriggered([[maybe_unused]] bool enable) {}
|
virtual void actionTriggered([[maybe_unused]] bool enable) {}
|
||||||
void setSelectionContext(const SelectionContext &selectionContext);
|
virtual void setSelectionContext(const SelectionContext &selectionContext) override;
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
SelectionContext m_selectionContext;
|
SelectionContext m_selectionContext;
|
||||||
@@ -29,10 +40,10 @@ class QMLDESIGNERCOMPONENTS_EXPORT AbstractAction : public ActionInterface
|
|||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
AbstractAction(const QString &description = QString());
|
AbstractAction(const QString &description = QString());
|
||||||
AbstractAction(DefaultAction *action);
|
AbstractAction(PureActionInterface *action);
|
||||||
|
|
||||||
QAction *action() const override final;
|
QAction *action() const override final;
|
||||||
DefaultAction *defaultAction() const;
|
PureActionInterface *pureAction() const;
|
||||||
|
|
||||||
void currentContextChanged(const SelectionContext &selectionContext) override;
|
void currentContextChanged(const SelectionContext &selectionContext) override;
|
||||||
|
|
||||||
@@ -46,7 +57,7 @@ protected:
|
|||||||
SelectionContext selectionContext() const;
|
SelectionContext selectionContext() const;
|
||||||
|
|
||||||
private:
|
private:
|
||||||
QScopedPointer<DefaultAction> m_defaultAction;
|
QScopedPointer<PureActionInterface> m_pureAction;
|
||||||
SelectionContext m_selectionContext;
|
SelectionContext m_selectionContext;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@@ -311,17 +311,17 @@ public:
|
|||||||
|
|
||||||
void updateContext() override
|
void updateContext() override
|
||||||
{
|
{
|
||||||
defaultAction()->setSelectionContext(selectionContext());
|
pureAction()->setSelectionContext(selectionContext());
|
||||||
if (selectionContext().isValid()) {
|
if (selectionContext().isValid()) {
|
||||||
defaultAction()->setEnabled(isEnabled(selectionContext()));
|
action()->setEnabled(isEnabled(selectionContext()));
|
||||||
defaultAction()->setVisible(isVisible(selectionContext()));
|
action()->setVisible(isVisible(selectionContext()));
|
||||||
|
|
||||||
defaultAction()->setCheckable(true);
|
action()->setCheckable(true);
|
||||||
QmlItemNode itemNode = QmlItemNode(selectionContext().currentSingleSelectedNode());
|
QmlItemNode itemNode = QmlItemNode(selectionContext().currentSingleSelectedNode());
|
||||||
if (itemNode.isValid())
|
if (itemNode.isValid())
|
||||||
defaultAction()->setChecked(itemNode.instanceValue("visible").toBool());
|
action()->setChecked(itemNode.instanceValue("visible").toBool());
|
||||||
else
|
else
|
||||||
defaultAction()->setEnabled(false);
|
action()->setEnabled(false);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
@@ -337,12 +337,12 @@ public:
|
|||||||
{}
|
{}
|
||||||
void updateContext() override
|
void updateContext() override
|
||||||
{
|
{
|
||||||
defaultAction()->setSelectionContext(selectionContext());
|
pureAction()->setSelectionContext(selectionContext());
|
||||||
if (selectionContext().isValid()) {
|
if (selectionContext().isValid()) {
|
||||||
defaultAction()->setEnabled(isEnabled(selectionContext()));
|
action()->setEnabled(isEnabled(selectionContext()));
|
||||||
defaultAction()->setVisible(isVisible(selectionContext()));
|
action()->setVisible(isVisible(selectionContext()));
|
||||||
|
|
||||||
defaultAction()->setCheckable(true);
|
action()->setCheckable(true);
|
||||||
QmlItemNode itemNode = QmlItemNode(selectionContext().currentSingleSelectedNode());
|
QmlItemNode itemNode = QmlItemNode(selectionContext().currentSingleSelectedNode());
|
||||||
if (itemNode.isValid()) {
|
if (itemNode.isValid()) {
|
||||||
bool flag = false;
|
bool flag = false;
|
||||||
@@ -350,9 +350,9 @@ public:
|
|||||||
|| itemNode.propertyAffectedByCurrentState(m_propertyName)) {
|
|| itemNode.propertyAffectedByCurrentState(m_propertyName)) {
|
||||||
flag = itemNode.modelValue(m_propertyName).toBool();
|
flag = itemNode.modelValue(m_propertyName).toBool();
|
||||||
}
|
}
|
||||||
defaultAction()->setChecked(flag);
|
action()->setChecked(flag);
|
||||||
} else {
|
} else {
|
||||||
defaultAction()->setEnabled(false);
|
action()->setEnabled(false);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@@ -182,8 +182,8 @@ public:
|
|||||||
, m_priority(priority)
|
, m_priority(priority)
|
||||||
, m_visibility(&SelectionContextFunctors::always)
|
, m_visibility(&SelectionContextFunctors::always)
|
||||||
{
|
{
|
||||||
defaultAction()->setSeparator(true);
|
action()->setSeparator(true);
|
||||||
defaultAction()->setIcon({});
|
action()->setIcon({});
|
||||||
}
|
}
|
||||||
|
|
||||||
bool isVisible(const SelectionContext &m_selectionState) const override { return m_visibility(m_selectionState); }
|
bool isVisible(const SelectionContext &m_selectionState) const override { return m_visibility(m_selectionState); }
|
||||||
|
@@ -261,7 +261,7 @@ void ViewManager::registerNanotraceActions()
|
|||||||
22,
|
22,
|
||||||
handleShutdownNanotraceAction);
|
handleShutdownNanotraceAction);
|
||||||
|
|
||||||
QObject::connect(startNanotraceAction->defaultAction(), &QAction::triggered, [&]() {
|
QObject::connect(startNanotraceAction->action(), &QAction::triggered, [&]() {
|
||||||
d->nodeInstanceView.startNanotrace();
|
d->nodeInstanceView.startNanotrace();
|
||||||
});
|
});
|
||||||
|
|
||||||
@@ -276,7 +276,7 @@ void ViewManager::registerNanotraceActions()
|
|||||||
23,
|
23,
|
||||||
handleShutdownNanotraceAction);
|
handleShutdownNanotraceAction);
|
||||||
|
|
||||||
QObject::connect(shutDownNanotraceAction->defaultAction(), &QAction::triggered, [&]() {
|
QObject::connect(shutDownNanotraceAction->action(), &QAction::triggered, [&]() {
|
||||||
d->nodeInstanceView.endNanotrace();
|
d->nodeInstanceView.endNanotrace();
|
||||||
});
|
});
|
||||||
|
|
||||||
|
@@ -6,8 +6,9 @@
|
|||||||
|
|
||||||
#include <viewmanager.h>
|
#include <viewmanager.h>
|
||||||
#include <nodeinstanceview.h>
|
#include <nodeinstanceview.h>
|
||||||
#include <qmldesignerplugin.h>
|
|
||||||
#include <nodemetainfo.h>
|
#include <nodemetainfo.h>
|
||||||
|
#include <qmldesignerplugin.h>
|
||||||
|
#include "seekerslider.h"
|
||||||
|
|
||||||
#include <utils/algorithm.h>
|
#include <utils/algorithm.h>
|
||||||
|
|
||||||
@@ -36,6 +37,12 @@ void Edit3DActionTemplate::actionTriggered(bool b)
|
|||||||
m_action(m_selectionContext);
|
m_action(m_selectionContext);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Edit3DWidgetActionTemplate::Edit3DWidgetActionTemplate(QWidgetAction *widget)
|
||||||
|
: PureActionInterface(widget)
|
||||||
|
{
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
Edit3DAction::Edit3DAction(const QByteArray &menuId,
|
Edit3DAction::Edit3DAction(const QByteArray &menuId,
|
||||||
View3DActionType type,
|
View3DActionType type,
|
||||||
const QString &description,
|
const QString &description,
|
||||||
@@ -47,11 +54,11 @@ Edit3DAction::Edit3DAction(const QByteArray &menuId,
|
|||||||
Edit3DView *view,
|
Edit3DView *view,
|
||||||
SelectionContextOperation selectionAction,
|
SelectionContextOperation selectionAction,
|
||||||
const QString &toolTip)
|
const QString &toolTip)
|
||||||
: AbstractAction(new Edit3DActionTemplate(description, selectionAction, view, type))
|
: Edit3DAction(menuId, type, view, new Edit3DActionTemplate(description,
|
||||||
, m_menuId(menuId)
|
selectionAction,
|
||||||
, m_actionTemplate(qobject_cast<Edit3DActionTemplate *>(defaultAction()))
|
view,
|
||||||
|
type))
|
||||||
{
|
{
|
||||||
view->registerEdit3DAction(this);
|
|
||||||
action()->setShortcut(key);
|
action()->setShortcut(key);
|
||||||
action()->setShortcutContext(Qt::WidgetWithChildrenShortcut);
|
action()->setShortcutContext(Qt::WidgetWithChildrenShortcut);
|
||||||
action()->setCheckable(checkable);
|
action()->setCheckable(checkable);
|
||||||
@@ -74,6 +81,17 @@ Edit3DAction::Edit3DAction(const QByteArray &menuId,
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Edit3DAction::Edit3DAction(const QByteArray &menuId,
|
||||||
|
View3DActionType type,
|
||||||
|
Edit3DView *view,
|
||||||
|
PureActionInterface *pureInt)
|
||||||
|
: AbstractAction(pureInt)
|
||||||
|
, m_menuId(menuId)
|
||||||
|
, m_actionType(type)
|
||||||
|
{
|
||||||
|
view->registerEdit3DAction(this);
|
||||||
|
}
|
||||||
|
|
||||||
QByteArray Edit3DAction::category() const
|
QByteArray Edit3DAction::category() const
|
||||||
{
|
{
|
||||||
return QByteArray();
|
return QByteArray();
|
||||||
@@ -81,7 +99,7 @@ QByteArray Edit3DAction::category() const
|
|||||||
|
|
||||||
View3DActionType Edit3DAction::actionType() const
|
View3DActionType Edit3DAction::actionType() const
|
||||||
{
|
{
|
||||||
return m_actionTemplate->m_type;
|
return m_actionType;
|
||||||
}
|
}
|
||||||
|
|
||||||
bool Edit3DAction::isVisible([[maybe_unused]] const SelectionContext &selectionContext) const
|
bool Edit3DAction::isVisible([[maybe_unused]] const SelectionContext &selectionContext) const
|
||||||
@@ -114,5 +132,31 @@ bool Edit3DCameraAction::isEnabled(const SelectionContext &selectionContext) con
|
|||||||
[](const ModelNode &node) { return node.metaInfo().isQtQuick3DCamera(); });
|
[](const ModelNode &node) { return node.metaInfo().isQtQuick3DCamera(); });
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Edit3DParticleSeekerAction::Edit3DParticleSeekerAction(const QByteArray &menuId,
|
||||||
|
View3DActionType type,
|
||||||
|
Edit3DView *view)
|
||||||
|
: Edit3DAction(menuId,
|
||||||
|
type,
|
||||||
|
view,
|
||||||
|
new Edit3DWidgetActionTemplate(
|
||||||
|
new SeekerSliderAction(nullptr)))
|
||||||
|
{
|
||||||
|
m_seeker = qobject_cast<SeekerSliderAction *>(action());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
SeekerSliderAction *Edit3DParticleSeekerAction::seekerAction()
|
||||||
|
{
|
||||||
|
return m_seeker;
|
||||||
|
}
|
||||||
|
|
||||||
|
bool Edit3DParticleSeekerAction::isVisible(const SelectionContext &) const
|
||||||
|
{
|
||||||
|
return m_seeker->isVisible();
|
||||||
|
}
|
||||||
|
|
||||||
|
bool Edit3DParticleSeekerAction::isEnabled(const SelectionContext &) const
|
||||||
|
{
|
||||||
|
return m_seeker->isEnabled();
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
@@ -5,12 +5,15 @@
|
|||||||
#include <abstractaction.h>
|
#include <abstractaction.h>
|
||||||
|
|
||||||
#include <QAction>
|
#include <QAction>
|
||||||
|
#include <QWidgetAction>
|
||||||
#include <QIcon>
|
#include <QIcon>
|
||||||
|
|
||||||
|
class QWidgetAction;
|
||||||
namespace QmlDesigner {
|
namespace QmlDesigner {
|
||||||
|
|
||||||
using SelectionContextOperation = std::function<void(const SelectionContext &)>;
|
using SelectionContextOperation = std::function<void(const SelectionContext &)>;
|
||||||
class Edit3DView;
|
class Edit3DView;
|
||||||
|
class SeekerSliderAction;
|
||||||
|
|
||||||
class Edit3DActionTemplate : public DefaultAction
|
class Edit3DActionTemplate : public DefaultAction
|
||||||
{
|
{
|
||||||
@@ -29,6 +32,15 @@ public:
|
|||||||
View3DActionType m_type;
|
View3DActionType m_type;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
class Edit3DWidgetActionTemplate : public PureActionInterface
|
||||||
|
{
|
||||||
|
Q_DISABLE_COPY(Edit3DWidgetActionTemplate)
|
||||||
|
|
||||||
|
public:
|
||||||
|
explicit Edit3DWidgetActionTemplate(QWidgetAction *widget);
|
||||||
|
virtual void setSelectionContext(const SelectionContext &) {}
|
||||||
|
};
|
||||||
|
|
||||||
class Edit3DAction : public AbstractAction
|
class Edit3DAction : public AbstractAction
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
@@ -44,6 +56,11 @@ public:
|
|||||||
SelectionContextOperation selectionAction = nullptr,
|
SelectionContextOperation selectionAction = nullptr,
|
||||||
const QString &toolTip = {});
|
const QString &toolTip = {});
|
||||||
|
|
||||||
|
Edit3DAction(const QByteArray &menuId,
|
||||||
|
View3DActionType type,
|
||||||
|
Edit3DView *view,
|
||||||
|
PureActionInterface *pureInt);
|
||||||
|
|
||||||
QByteArray category() const override;
|
QByteArray category() const override;
|
||||||
|
|
||||||
int priority() const override
|
int priority() const override
|
||||||
@@ -69,7 +86,7 @@ protected:
|
|||||||
|
|
||||||
private:
|
private:
|
||||||
QByteArray m_menuId;
|
QByteArray m_menuId;
|
||||||
Edit3DActionTemplate *m_actionTemplate = nullptr;
|
View3DActionType m_actionType;
|
||||||
};
|
};
|
||||||
|
|
||||||
class Edit3DCameraAction : public Edit3DAction
|
class Edit3DCameraAction : public Edit3DAction
|
||||||
@@ -90,4 +107,21 @@ protected:
|
|||||||
bool isEnabled(const SelectionContext &selectionContext) const override;
|
bool isEnabled(const SelectionContext &selectionContext) const override;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
class Edit3DParticleSeekerAction : public Edit3DAction
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
Edit3DParticleSeekerAction(const QByteArray &menuId,
|
||||||
|
View3DActionType type,
|
||||||
|
Edit3DView *view);
|
||||||
|
|
||||||
|
SeekerSliderAction *seekerAction();
|
||||||
|
|
||||||
|
protected:
|
||||||
|
bool isVisible(const SelectionContext &) const override;
|
||||||
|
bool isEnabled(const SelectionContext &) const override;
|
||||||
|
|
||||||
|
private:
|
||||||
|
SeekerSliderAction *m_seeker = nullptr;
|
||||||
|
};
|
||||||
|
|
||||||
} // namespace QmlDesigner
|
} // namespace QmlDesigner
|
||||||
|
@@ -346,11 +346,6 @@ QSize Edit3DView::canvasSize() const
|
|||||||
return {};
|
return {};
|
||||||
}
|
}
|
||||||
|
|
||||||
void Edit3DView::setSeeker(SeekerSlider *slider)
|
|
||||||
{
|
|
||||||
m_seeker = slider;
|
|
||||||
}
|
|
||||||
|
|
||||||
Edit3DAction *Edit3DView::createSelectBackgroundColorAction(QAction *syncBackgroundColorAction)
|
Edit3DAction *Edit3DView::createSelectBackgroundColorAction(QAction *syncBackgroundColorAction)
|
||||||
{
|
{
|
||||||
QString description = QCoreApplication::translate("SelectBackgroundColorAction",
|
QString description = QCoreApplication::translate("SelectBackgroundColorAction",
|
||||||
@@ -468,6 +463,25 @@ Edit3DAction *Edit3DView::createSyncBackgroundColorAction()
|
|||||||
tooltip);
|
tooltip);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Edit3DAction *Edit3DView::createSeekerSliderAction()
|
||||||
|
{
|
||||||
|
Edit3DParticleSeekerAction *seekerAction = new Edit3DParticleSeekerAction(
|
||||||
|
QmlDesigner::Constants::EDIT3D_PARTICLES_SEEKER,
|
||||||
|
View3DActionType::ParticlesSeek,
|
||||||
|
this);
|
||||||
|
|
||||||
|
seekerAction->action()->setEnabled(false);
|
||||||
|
seekerAction->action()->setToolTip(QLatin1String("Seek particle system time when paused."));
|
||||||
|
|
||||||
|
connect(seekerAction->seekerAction(),
|
||||||
|
&SeekerSliderAction::valueChanged,
|
||||||
|
this, [=] (int value) {
|
||||||
|
this->emitView3DAction(View3DActionType::ParticlesSeek, value);
|
||||||
|
});
|
||||||
|
|
||||||
|
return seekerAction;
|
||||||
|
}
|
||||||
|
|
||||||
void Edit3DView::createEdit3DActions()
|
void Edit3DView::createEdit3DActions()
|
||||||
{
|
{
|
||||||
m_selectionModeAction = new Edit3DAction(
|
m_selectionModeAction = new Edit3DAction(
|
||||||
@@ -661,8 +675,8 @@ void Edit3DView::createEdit3DActions()
|
|||||||
m_particlesRestartAction->action()->setEnabled(particlemode);
|
m_particlesRestartAction->action()->setEnabled(particlemode);
|
||||||
if (particlemode)
|
if (particlemode)
|
||||||
m_particlesPlayAction->action()->setChecked(true);
|
m_particlesPlayAction->action()->setChecked(true);
|
||||||
if (m_seeker)
|
if (m_seekerAction)
|
||||||
m_seeker->setEnabled(false);
|
m_seekerAction->action()->setEnabled(false);
|
||||||
resetPuppet();
|
resetPuppet();
|
||||||
};
|
};
|
||||||
|
|
||||||
@@ -670,15 +684,15 @@ void Edit3DView::createEdit3DActions()
|
|||||||
particlemode = !particlemode;
|
particlemode = !particlemode;
|
||||||
m_particlesPlayAction->action()->setEnabled(particlemode);
|
m_particlesPlayAction->action()->setEnabled(particlemode);
|
||||||
m_particlesRestartAction->action()->setEnabled(particlemode);
|
m_particlesRestartAction->action()->setEnabled(particlemode);
|
||||||
if (m_seeker)
|
if (m_seekerAction)
|
||||||
m_seeker->setEnabled(false);
|
m_seekerAction->action()->setEnabled(false);
|
||||||
QmlDesignerPlugin::settings().insert("particleMode", particlemode);
|
QmlDesignerPlugin::settings().insert("particleMode", particlemode);
|
||||||
resetPuppet();
|
resetPuppet();
|
||||||
};
|
};
|
||||||
|
|
||||||
SelectionContextOperation particlesPlayTrigger = [this](const SelectionContext &) {
|
SelectionContextOperation particlesPlayTrigger = [this](const SelectionContext &) {
|
||||||
if (m_seeker)
|
if (m_seekerAction)
|
||||||
m_seeker->setEnabled(!m_particlesPlayAction->action()->isChecked());
|
m_seekerAction->action()->setEnabled(!m_particlesPlayAction->action()->isChecked());
|
||||||
};
|
};
|
||||||
|
|
||||||
m_particleViewModeAction = new Edit3DAction(
|
m_particleViewModeAction = new Edit3DAction(
|
||||||
@@ -786,6 +800,8 @@ void Edit3DView::createEdit3DActions()
|
|||||||
this,
|
this,
|
||||||
backgroundColorActionsTrigger);
|
backgroundColorActionsTrigger);
|
||||||
|
|
||||||
|
m_seekerAction = createSeekerSliderAction();
|
||||||
|
|
||||||
m_leftActions << m_selectionModeAction;
|
m_leftActions << m_selectionModeAction;
|
||||||
m_leftActions << nullptr; // Null indicates separator
|
m_leftActions << nullptr; // Null indicates separator
|
||||||
m_leftActions << nullptr; // Second null after separator indicates an exclusive group
|
m_leftActions << nullptr; // Second null after separator indicates an exclusive group
|
||||||
@@ -810,6 +826,8 @@ void Edit3DView::createEdit3DActions()
|
|||||||
m_rightActions << m_particlesPlayAction;
|
m_rightActions << m_particlesPlayAction;
|
||||||
m_rightActions << m_particlesRestartAction;
|
m_rightActions << m_particlesRestartAction;
|
||||||
m_rightActions << nullptr;
|
m_rightActions << nullptr;
|
||||||
|
m_rightActions << m_seekerAction;
|
||||||
|
m_rightActions << nullptr;
|
||||||
m_rightActions << m_resetAction;
|
m_rightActions << m_resetAction;
|
||||||
|
|
||||||
m_visibilityToggleActions << m_showGridAction;
|
m_visibilityToggleActions << m_showGridAction;
|
||||||
|
@@ -25,7 +25,6 @@ namespace QmlDesigner {
|
|||||||
class Edit3DWidget;
|
class Edit3DWidget;
|
||||||
class Edit3DAction;
|
class Edit3DAction;
|
||||||
class Edit3DCameraAction;
|
class Edit3DCameraAction;
|
||||||
class SeekerSlider;
|
|
||||||
|
|
||||||
class QMLDESIGNERCOMPONENTS_EXPORT Edit3DView : public AbstractView
|
class QMLDESIGNERCOMPONENTS_EXPORT Edit3DView : public AbstractView
|
||||||
{
|
{
|
||||||
@@ -58,7 +57,6 @@ public:
|
|||||||
QVector<Edit3DAction *> visibilityToggleActions() const;
|
QVector<Edit3DAction *> visibilityToggleActions() const;
|
||||||
QVector<Edit3DAction *> backgroundColorActions() const;
|
QVector<Edit3DAction *> backgroundColorActions() const;
|
||||||
Edit3DAction *edit3DAction(View3DActionType type) const;
|
Edit3DAction *edit3DAction(View3DActionType type) const;
|
||||||
void setSeeker(SeekerSlider *slider);
|
|
||||||
|
|
||||||
void addQuick3DImport();
|
void addQuick3DImport();
|
||||||
void startContextMenu(const QPoint &pos);
|
void startContextMenu(const QPoint &pos);
|
||||||
@@ -91,6 +89,7 @@ private:
|
|||||||
Edit3DAction *createGridColorSelectionAction();
|
Edit3DAction *createGridColorSelectionAction();
|
||||||
Edit3DAction *createResetColorAction(QAction *syncBackgroundColorAction);
|
Edit3DAction *createResetColorAction(QAction *syncBackgroundColorAction);
|
||||||
Edit3DAction *createSyncBackgroundColorAction();
|
Edit3DAction *createSyncBackgroundColorAction();
|
||||||
|
Edit3DAction *createSeekerSliderAction();
|
||||||
|
|
||||||
QPointer<Edit3DWidget> m_edit3DWidget;
|
QPointer<Edit3DWidget> m_edit3DWidget;
|
||||||
QVector<Edit3DAction *> m_leftActions;
|
QVector<Edit3DAction *> m_leftActions;
|
||||||
@@ -120,7 +119,7 @@ private:
|
|||||||
Edit3DAction *m_particlesRestartAction = nullptr;
|
Edit3DAction *m_particlesRestartAction = nullptr;
|
||||||
Edit3DAction *m_visibilityTogglesAction = nullptr;
|
Edit3DAction *m_visibilityTogglesAction = nullptr;
|
||||||
Edit3DAction *m_backgrondColorMenuAction = nullptr;
|
Edit3DAction *m_backgrondColorMenuAction = nullptr;
|
||||||
SeekerSlider *m_seeker = nullptr;
|
Edit3DAction *m_seekerAction = nullptr;
|
||||||
int particlemode;
|
int particlemode;
|
||||||
ModelCache<QImage> m_canvasCache;
|
ModelCache<QImage> m_canvasCache;
|
||||||
ModelNode m_droppedModelNode;
|
ModelNode m_droppedModelNode;
|
||||||
|
@@ -83,11 +83,8 @@ Edit3DWidget::Edit3DWidget(Edit3DView *view)
|
|||||||
fillLayout->setSpacing(0);
|
fillLayout->setSpacing(0);
|
||||||
setLayout(fillLayout);
|
setLayout(fillLayout);
|
||||||
|
|
||||||
SeekerSlider *seeker = new SeekerSlider(this);
|
|
||||||
seeker->setEnabled(false);
|
|
||||||
|
|
||||||
// Initialize toolbar
|
// Initialize toolbar
|
||||||
m_toolBox = new ToolBox(seeker, this);
|
m_toolBox = new ToolBox(this);
|
||||||
fillLayout->addWidget(m_toolBox.data());
|
fillLayout->addWidget(m_toolBox.data());
|
||||||
|
|
||||||
// Iterate through view actions. A null action indicates a separator and a second null action
|
// Iterate through view actions. A null action indicates a separator and a second null action
|
||||||
@@ -164,13 +161,6 @@ Edit3DWidget::Edit3DWidget(Edit3DView *view)
|
|||||||
|
|
||||||
createContextMenu();
|
createContextMenu();
|
||||||
|
|
||||||
view->setSeeker(seeker);
|
|
||||||
seeker->setToolTip(QLatin1String("Seek particle system time when paused."));
|
|
||||||
|
|
||||||
QObject::connect(seeker, &SeekerSlider::valueChanged, [view](int value) {
|
|
||||||
view->emitView3DAction(View3DActionType::ParticlesSeek, value);
|
|
||||||
});
|
|
||||||
|
|
||||||
// Onboarding label contains instructions for new users how to get 3D content into the project
|
// Onboarding label contains instructions for new users how to get 3D content into the project
|
||||||
m_onboardingLabel = new QLabel(this);
|
m_onboardingLabel = new QLabel(this);
|
||||||
QString labelText =
|
QString labelText =
|
||||||
|
@@ -51,7 +51,7 @@ void EventListPluginView::registerActions()
|
|||||||
&SelectionContextFunctors::always,
|
&SelectionContextFunctors::always,
|
||||||
&SelectionContextFunctors::always));
|
&SelectionContextFunctors::always));
|
||||||
auto eventListAction = new EventListAction();
|
auto eventListAction = new EventListAction();
|
||||||
connect(eventListAction->defaultAction(), &QAction::triggered, [this]() {
|
connect(eventListAction->action(), &QAction::triggered, [this]() {
|
||||||
if (!m_eventListDialog)
|
if (!m_eventListDialog)
|
||||||
m_eventListDialog = new EventListDialog(Core::ICore::dialogParent());
|
m_eventListDialog = new EventListDialog(Core::ICore::dialogParent());
|
||||||
|
|
||||||
@@ -62,7 +62,7 @@ void EventListPluginView::registerActions()
|
|||||||
designerActionManager.addDesignerAction(eventListAction);
|
designerActionManager.addDesignerAction(eventListAction);
|
||||||
|
|
||||||
auto assignEventAction = new AssignEventEditorAction();
|
auto assignEventAction = new AssignEventEditorAction();
|
||||||
connect(assignEventAction->defaultAction(), &QAction::triggered, [this]() {
|
connect(assignEventAction->action(), &QAction::triggered, [this]() {
|
||||||
if (!m_assigner)
|
if (!m_assigner)
|
||||||
m_assigner = new AssignEventDialog(Core::ICore::dialogParent());
|
m_assigner = new AssignEventDialog(Core::ICore::dialogParent());
|
||||||
if (!m_eventListDialog)
|
if (!m_eventListDialog)
|
||||||
@@ -78,7 +78,7 @@ void EventListPluginView::registerActions()
|
|||||||
|
|
||||||
auto *connectSignalAction = new ConnectSignalAction();
|
auto *connectSignalAction = new ConnectSignalAction();
|
||||||
|
|
||||||
connect(connectSignalAction->defaultAction(), &QAction::triggered, [this, connectSignalAction]() {
|
connect(connectSignalAction->action(), &QAction::triggered, [this, connectSignalAction]() {
|
||||||
if (!m_signalConnector)
|
if (!m_signalConnector)
|
||||||
m_signalConnector = new ConnectSignalDialog(Core::ICore::dialogParent());
|
m_signalConnector = new ConnectSignalDialog(Core::ICore::dialogParent());
|
||||||
|
|
||||||
|
@@ -128,7 +128,7 @@ FormEditorWidget::FormEditorWidget(FormEditorView *view)
|
|||||||
addAction(m_rootHeightAction.data());
|
addAction(m_rootHeightAction.data());
|
||||||
upperActions.append(m_rootHeightAction.data());
|
upperActions.append(m_rootHeightAction.data());
|
||||||
|
|
||||||
m_toolBox = new ToolBox(nullptr, this);
|
m_toolBox = new ToolBox(this);
|
||||||
fillLayout->addWidget(m_toolBox.data());
|
fillLayout->addWidget(m_toolBox.data());
|
||||||
|
|
||||||
m_toolBox->setLeftSideActions(upperActions);
|
m_toolBox->setLeftSideActions(upperActions);
|
||||||
|
@@ -67,4 +67,41 @@ void SeekerSlider::mouseReleaseEvent(QMouseEvent *event)
|
|||||||
QSlider::mouseReleaseEvent(event);
|
QSlider::mouseReleaseEvent(event);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
SeekerSliderAction::SeekerSliderAction(QObject *parent)
|
||||||
|
: QWidgetAction(parent)
|
||||||
|
, m_defaultSlider(new SeekerSlider())
|
||||||
|
{
|
||||||
|
setDefaultWidget(m_defaultSlider);
|
||||||
|
QObject::connect(m_defaultSlider, &QSlider::valueChanged, this, &SeekerSliderAction::valueChanged);
|
||||||
|
}
|
||||||
|
|
||||||
|
SeekerSliderAction::~SeekerSliderAction()
|
||||||
|
{
|
||||||
|
m_defaultSlider->deleteLater();
|
||||||
|
}
|
||||||
|
|
||||||
|
SeekerSlider *SeekerSliderAction::defaultSlider() const
|
||||||
|
{
|
||||||
|
return m_defaultSlider;
|
||||||
|
}
|
||||||
|
|
||||||
|
int SeekerSliderAction::value()
|
||||||
|
{
|
||||||
|
return m_defaultSlider->value();
|
||||||
|
}
|
||||||
|
|
||||||
|
QWidget *SeekerSliderAction::createWidget(QWidget *parent)
|
||||||
|
{
|
||||||
|
SeekerSlider *slider = new SeekerSlider(parent);
|
||||||
|
|
||||||
|
QObject::connect(m_defaultSlider, &SeekerSlider::valueChanged, slider, &SeekerSlider::setValue);
|
||||||
|
QObject::connect(slider, &SeekerSlider::valueChanged, m_defaultSlider, &SeekerSlider::setValue);
|
||||||
|
QObject::connect(m_defaultSlider, &QSlider::rangeChanged, slider, &QSlider::setRange);
|
||||||
|
|
||||||
|
slider->setValue(m_defaultSlider->value());
|
||||||
|
slider->setMaxValue(m_defaultSlider->maxValue());
|
||||||
|
|
||||||
|
return slider;
|
||||||
|
}
|
||||||
|
|
||||||
} // namespace QmlDesigner
|
} // namespace QmlDesigner
|
||||||
|
@@ -3,6 +3,7 @@
|
|||||||
#pragma once
|
#pragma once
|
||||||
|
|
||||||
#include <QSlider>
|
#include <QSlider>
|
||||||
|
#include <QWidgetAction>
|
||||||
|
|
||||||
namespace QmlDesigner {
|
namespace QmlDesigner {
|
||||||
class SeekerSlider : public QSlider
|
class SeekerSlider : public QSlider
|
||||||
@@ -28,4 +29,27 @@ private:
|
|||||||
bool m_moving = false;
|
bool m_moving = false;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
class SeekerSlider;
|
||||||
|
class SeekerSliderAction : public QWidgetAction
|
||||||
|
{
|
||||||
|
Q_OBJECT
|
||||||
|
|
||||||
|
public:
|
||||||
|
explicit SeekerSliderAction(QObject *parent);
|
||||||
|
virtual ~SeekerSliderAction();
|
||||||
|
|
||||||
|
SeekerSlider *defaultSlider() const;
|
||||||
|
int value();
|
||||||
|
|
||||||
|
signals:
|
||||||
|
void valueChanged(int);
|
||||||
|
|
||||||
|
protected:
|
||||||
|
virtual QWidget *createWidget(QWidget *parent) override;
|
||||||
|
|
||||||
|
private:
|
||||||
|
using QWidgetAction::setDefaultWidget;
|
||||||
|
SeekerSlider *m_defaultSlider = nullptr;
|
||||||
|
};
|
||||||
|
|
||||||
} // namespace QmlDesigner
|
} // namespace QmlDesigner
|
||||||
|
@@ -13,11 +13,10 @@
|
|||||||
|
|
||||||
namespace QmlDesigner {
|
namespace QmlDesigner {
|
||||||
|
|
||||||
ToolBox::ToolBox(SeekerSlider *seeker, QWidget *parentWidget)
|
ToolBox::ToolBox(QWidget *parentWidget)
|
||||||
: Utils::StyledBar(parentWidget),
|
: Utils::StyledBar(parentWidget)
|
||||||
m_leftToolBar(new QToolBar(QLatin1String("LeftSidebar"), this)),
|
, m_leftToolBar(new QToolBar(QLatin1String("LeftSidebar"), this))
|
||||||
m_rightToolBar(new QToolBar(QLatin1String("RightSidebar"), this)),
|
, m_rightToolBar(new QToolBar(QLatin1String("RightSidebar"), this))
|
||||||
m_seeker(seeker)
|
|
||||||
{
|
{
|
||||||
setProperty("panelwidget", false);
|
setProperty("panelwidget", false);
|
||||||
m_leftToolBar->setFloatable(true);
|
m_leftToolBar->setFloatable(true);
|
||||||
@@ -30,7 +29,6 @@ ToolBox::ToolBox(SeekerSlider *seeker, QWidget *parentWidget)
|
|||||||
|
|
||||||
setFixedHeight(Theme::toolbarSize());
|
setFixedHeight(Theme::toolbarSize());
|
||||||
|
|
||||||
auto stretchToolbar = new QToolBar(this);
|
|
||||||
|
|
||||||
m_leftToolBar->setProperty("panelwidget", false);
|
m_leftToolBar->setProperty("panelwidget", false);
|
||||||
m_leftToolBar->setProperty("panelwidget_singlerow", false);
|
m_leftToolBar->setProperty("panelwidget_singlerow", false);
|
||||||
@@ -39,17 +37,16 @@ ToolBox::ToolBox(SeekerSlider *seeker, QWidget *parentWidget)
|
|||||||
m_rightToolBar->setProperty("panelwidget", false);
|
m_rightToolBar->setProperty("panelwidget", false);
|
||||||
m_rightToolBar->setProperty("panelwidget_singlerow", false);
|
m_rightToolBar->setProperty("panelwidget_singlerow", false);
|
||||||
m_rightToolBar->setFixedHeight(Theme::toolbarSize());
|
m_rightToolBar->setFixedHeight(Theme::toolbarSize());
|
||||||
|
m_rightToolBar->setSizePolicy(QSizePolicy::Maximum, QSizePolicy::Fixed);
|
||||||
|
|
||||||
|
auto stretchToolbar = new QToolBar(this);
|
||||||
stretchToolbar->setProperty("panelwidget", false);
|
stretchToolbar->setProperty("panelwidget", false);
|
||||||
stretchToolbar->setProperty("panelwidget_singlerow", false);
|
stretchToolbar->setProperty("panelwidget_singlerow", false);
|
||||||
|
|
||||||
stretchToolbar->setSizePolicy(QSizePolicy::MinimumExpanding, QSizePolicy::MinimumExpanding);
|
stretchToolbar->setSizePolicy(QSizePolicy::MinimumExpanding, QSizePolicy::MinimumExpanding);
|
||||||
|
|
||||||
m_rightToolBar->setOrientation(Qt::Horizontal);
|
m_rightToolBar->setOrientation(Qt::Horizontal);
|
||||||
horizontalLayout->addWidget(m_leftToolBar);
|
horizontalLayout->addWidget(m_leftToolBar);
|
||||||
horizontalLayout->addWidget(stretchToolbar);
|
horizontalLayout->addWidget(stretchToolbar);
|
||||||
if (m_seeker)
|
|
||||||
horizontalLayout->addWidget(m_seeker);
|
|
||||||
horizontalLayout->addWidget(m_rightToolBar);
|
horizontalLayout->addWidget(m_rightToolBar);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -82,9 +79,4 @@ QList<QAction*> ToolBox::actions() const
|
|||||||
return m_leftToolBar->actions() + m_rightToolBar->actions();
|
return m_leftToolBar->actions() + m_rightToolBar->actions();
|
||||||
}
|
}
|
||||||
|
|
||||||
SeekerSlider *ToolBox::seeker() const
|
|
||||||
{
|
|
||||||
return m_seeker;
|
|
||||||
}
|
|
||||||
|
|
||||||
} // namespace QmlDesigner
|
} // namespace QmlDesigner
|
||||||
|
@@ -16,18 +16,16 @@ namespace QmlDesigner {
|
|||||||
class ToolBox : public Utils::StyledBar
|
class ToolBox : public Utils::StyledBar
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
ToolBox(SeekerSlider *seeker, QWidget *parentWidget);
|
explicit ToolBox(QWidget *parentWidget);
|
||||||
void setLeftSideActions(const QList<QAction*> &actions);
|
void setLeftSideActions(const QList<QAction*> &actions);
|
||||||
void setRightSideActions(const QList<QAction*> &actions);
|
void setRightSideActions(const QList<QAction*> &actions);
|
||||||
void addLeftSideAction(QAction *action);
|
void addLeftSideAction(QAction *action);
|
||||||
void addRightSideAction(QAction *action);
|
void addRightSideAction(QAction *action);
|
||||||
QList<QAction*> actions() const;
|
QList<QAction*> actions() const;
|
||||||
SeekerSlider *seeker() const;
|
|
||||||
|
|
||||||
private:
|
private:
|
||||||
QToolBar *m_leftToolBar;
|
QToolBar *m_leftToolBar;
|
||||||
QToolBar *m_rightToolBar;
|
QToolBar *m_rightToolBar;
|
||||||
SeekerSlider *m_seeker;
|
|
||||||
};
|
};
|
||||||
|
|
||||||
} // namespace QmlDesigner
|
} // namespace QmlDesigner
|
||||||
|
@@ -56,6 +56,7 @@ const char EDIT3D_EDIT_SHOW_PARTICLE_EMITTER[] = "QmlDesigner.Editor3D.TogglePar
|
|||||||
const char EDIT3D_RESET_VIEW[] = "QmlDesigner.Editor3D.ResetView";
|
const char EDIT3D_RESET_VIEW[] = "QmlDesigner.Editor3D.ResetView";
|
||||||
const char EDIT3D_PARTICLE_MODE[] = "QmlDesigner.Editor3D.ParticleViewModeToggle";
|
const char EDIT3D_PARTICLE_MODE[] = "QmlDesigner.Editor3D.ParticleViewModeToggle";
|
||||||
const char EDIT3D_PARTICLES_PLAY[] = "QmlDesigner.Editor3D.ParticlesPlay";
|
const char EDIT3D_PARTICLES_PLAY[] = "QmlDesigner.Editor3D.ParticlesPlay";
|
||||||
|
const char EDIT3D_PARTICLES_SEEKER[] = "QmlDesigner.Editor3D.ParticlesSeeker";
|
||||||
const char EDIT3D_PARTICLES_RESTART[] = "QmlDesigner.Editor3D.ParticlesRestart";
|
const char EDIT3D_PARTICLES_RESTART[] = "QmlDesigner.Editor3D.ParticlesRestart";
|
||||||
const char EDIT3D_VISIBILITY_TOGGLES[] = "QmlDesigner.Editor3D.VisibilityToggles";
|
const char EDIT3D_VISIBILITY_TOGGLES[] = "QmlDesigner.Editor3D.VisibilityToggles";
|
||||||
const char EDIT3D_BACKGROUND_COLOR_ACTIONS[] = "QmlDesigner.Editor3D.BackgroundColorActions";
|
const char EDIT3D_BACKGROUND_COLOR_ACTIONS[] = "QmlDesigner.Editor3D.BackgroundColorActions";
|
||||||
|
@@ -70,9 +70,9 @@ QmlPreviewAction::QmlPreviewAction() : ModelNodeAction(livePreviewId,
|
|||||||
&SelectionContextFunctors::always)
|
&SelectionContextFunctors::always)
|
||||||
{
|
{
|
||||||
if (!QmlPreviewWidgetPlugin::getPreviewPlugin())
|
if (!QmlPreviewWidgetPlugin::getPreviewPlugin())
|
||||||
defaultAction()->setVisible(false);
|
action()->setVisible(false);
|
||||||
|
|
||||||
defaultAction()->setCheckable(true);
|
action()->setCheckable(true);
|
||||||
}
|
}
|
||||||
|
|
||||||
void QmlPreviewAction::updateContext()
|
void QmlPreviewAction::updateContext()
|
||||||
@@ -80,7 +80,7 @@ void QmlPreviewAction::updateContext()
|
|||||||
if (selectionContext().view()->isAttached())
|
if (selectionContext().view()->isAttached())
|
||||||
QmlPreviewWidgetPlugin::setQmlFile();
|
QmlPreviewWidgetPlugin::setQmlFile();
|
||||||
|
|
||||||
defaultAction()->setSelectionContext(selectionContext());
|
pureAction()->setSelectionContext(selectionContext());
|
||||||
}
|
}
|
||||||
|
|
||||||
ActionInterface::Type QmlPreviewAction::type() const
|
ActionInterface::Type QmlPreviewAction::type() const
|
||||||
|
@@ -59,7 +59,7 @@ QmlPreviewWidgetPlugin::QmlPreviewWidgetPlugin()
|
|||||||
auto separator = new SeparatorDesignerAction(ComponentCoreConstants::qmlPreviewCategory, 0);
|
auto separator = new SeparatorDesignerAction(ComponentCoreConstants::qmlPreviewCategory, 0);
|
||||||
designerActionManager.addDesignerAction(separator);
|
designerActionManager.addDesignerAction(separator);
|
||||||
|
|
||||||
m_previewToggleAction = previewAction->defaultAction();
|
m_previewToggleAction = previewAction->action();
|
||||||
|
|
||||||
if (s_previewPlugin) {
|
if (s_previewPlugin) {
|
||||||
auto fpsAction = new FpsAction;
|
auto fpsAction = new FpsAction;
|
||||||
|
Reference in New Issue
Block a user