aboutsummaryrefslogtreecommitdiffstats
path: root/src/plugins/qmldesigner
diff options
context:
space:
mode:
Diffstat (limited to 'src/plugins/qmldesigner')
-rw-r--r--src/plugins/qmldesigner/CMakeLists.txt2
-rw-r--r--src/plugins/qmldesigner/components/annotationeditor/annotationeditor.pri2
-rw-r--r--src/plugins/qmldesigner/components/annotationeditor/annotationtool.cpp259
-rw-r--r--src/plugins/qmldesigner/components/annotationeditor/annotationtool.h93
-rw-r--r--src/plugins/qmldesigner/components/curveeditor/curveeditormodel.cpp6
-rw-r--r--src/plugins/qmldesigner/components/curveeditor/curveeditormodel.h2
-rw-r--r--src/plugins/qmldesigner/components/curveeditor/curveeditorstyle.h11
-rw-r--r--src/plugins/qmldesigner/components/curveeditor/curveeditorview.cpp4
-rw-r--r--src/plugins/qmldesigner/components/curveeditor/detail/curveitem.cpp10
-rw-r--r--src/plugins/qmldesigner/components/curveeditor/detail/graphicsscene.cpp27
-rw-r--r--src/plugins/qmldesigner/components/curveeditor/detail/graphicsscene.h4
-rw-r--r--src/plugins/qmldesigner/components/curveeditor/detail/graphicsview.cpp4
-rw-r--r--src/plugins/qmldesigner/components/edit3d/edit3dcanvas.cpp2
-rw-r--r--src/plugins/qmldesigner/designmodewidget.cpp1
-rw-r--r--src/plugins/qmldesigner/designmodewidget.h3
-rw-r--r--src/plugins/qmldesigner/qmldesignerplugin.cpp2
-rw-r--r--src/plugins/qmldesigner/qmldesignerplugin.pri2
-rw-r--r--src/plugins/qmldesigner/qmldesignerplugin.qbs4
-rw-r--r--src/plugins/qmldesigner/switchsplittabwidget.cpp212
-rw-r--r--src/plugins/qmldesigner/switchsplittabwidget.h63
20 files changed, 59 insertions, 654 deletions
diff --git a/src/plugins/qmldesigner/CMakeLists.txt b/src/plugins/qmldesigner/CMakeLists.txt
index ca98f2c424..21b1c9cf64 100644
--- a/src/plugins/qmldesigner/CMakeLists.txt
+++ b/src/plugins/qmldesigner/CMakeLists.txt
@@ -29,7 +29,6 @@ add_qtc_plugin(QmlDesigner
qmldesignerplugin.cpp qmldesignerplugin.h
settingspage.cpp settingspage.h settingspage.ui
shortcutmanager.cpp shortcutmanager.h
- switchsplittabwidget.cpp switchsplittabwidget.h
designermcumanager.cpp designermcumanager.h
EXPLICIT_MOC
components/propertyeditor/propertyeditorvalue.h
@@ -627,7 +626,6 @@ extend_qtc_plugin(QmlDesigner
annotationeditordialog.cpp annotationeditordialog.h annotationeditordialog.ui
globalannotationeditordialog.cpp globalannotationeditordialog.h globalannotationeditordialog.ui
annotationeditor.cpp annotationeditor.h
- annotationtool.cpp annotationtool.h
globalannotationeditor.cpp globalannotationeditor.h
)
diff --git a/src/plugins/qmldesigner/components/annotationeditor/annotationeditor.pri b/src/plugins/qmldesigner/components/annotationeditor/annotationeditor.pri
index e597e6862c..b1773c2dcf 100644
--- a/src/plugins/qmldesigner/components/annotationeditor/annotationeditor.pri
+++ b/src/plugins/qmldesigner/components/annotationeditor/annotationeditor.pri
@@ -1,11 +1,9 @@
-HEADERS += $$PWD/annotationtool.h
HEADERS += $$PWD/annotationcommenttab.h
HEADERS += $$PWD/annotationeditordialog.h
HEADERS += $$PWD/annotationeditor.h
HEADERS += $$PWD/globalannotationeditor.h
HEADERS += $$PWD/globalannotationeditordialog.h
-SOURCES += $$PWD/annotationtool.cpp
SOURCES += $$PWD/annotationcommenttab.cpp
SOURCES += $$PWD/annotationeditordialog.cpp
SOURCES += $$PWD/annotationeditor.cpp
diff --git a/src/plugins/qmldesigner/components/annotationeditor/annotationtool.cpp b/src/plugins/qmldesigner/components/annotationeditor/annotationtool.cpp
deleted file mode 100644
index 9db5d0d81c..0000000000
--- a/src/plugins/qmldesigner/components/annotationeditor/annotationtool.cpp
+++ /dev/null
@@ -1,259 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2020 The Qt Company Ltd.
-** Contact: https://www.qt.io/licensing/
-**
-** This file is part of Qt Creator.
-**
-** Commercial License Usage
-** Licensees holding valid commercial Qt licenses may use this file in
-** accordance with the commercial license agreement provided with the
-** Software or, alternatively, in accordance with the terms contained in
-** a written agreement between you and The Qt Company. For licensing terms
-** and conditions see https://www.qt.io/terms-conditions. For further
-** information use the contact form at https://www.qt.io/contact-us.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3 as published by the Free Software
-** Foundation with exceptions as appearing in the file LICENSE.GPL3-EXCEPT
-** included in the packaging of this file. Please review the following
-** information to ensure the GNU General Public License requirements will
-** be met: https://www.gnu.org/licenses/gpl-3.0.html.
-**
-****************************************************************************/
-
-#include "annotationtool.h"
-
-#include "formeditorscene.h"
-#include "formeditorview.h"
-#include "formeditorwidget.h"
-#include "itemutilfunctions.h"
-#include "formeditoritem.h"
-
-#include "nodemetainfo.h"
-#include "qmlitemnode.h"
-#include <qmldesignerplugin.h>
-#include <abstractaction.h>
-#include <designeractionmanager.h>
-
-#include <QApplication>
-#include <QGraphicsSceneMouseEvent>
-#include <QAction>
-#include <QDebug>
-#include <QPair>
-#include <QUrl>
-#include <QMetaType>
-
-namespace QmlDesigner {
-
-class AnnotationToolAction : public AbstractAction
-{
-public:
- AnnotationToolAction() : AbstractAction(QCoreApplication::translate("AnnotationToolAction","Edit Annotation"))
- {
- }
-
- QByteArray category() const override
- {
- return QByteArray();
- }
-
- QByteArray menuId() const override
- {
- return "AnnotationTool";
- }
-
- int priority() const override
- {
- return CustomActionsPriority + 5;
- }
-
- Type type() const override
- {
- return FormEditorAction;
- }
-
-protected:
- bool isVisible(const SelectionContext &selectionContext) const override
- {
- return selectionContext.singleNodeIsSelected();
- }
-
- bool isEnabled(const SelectionContext &selectionContext) const override
- {
- return isVisible(selectionContext);
- }
-};
-
-AnnotationTool::AnnotationTool()
-{
- auto annotationToolAction = new AnnotationToolAction;
- QmlDesignerPlugin::instance()->designerActionManager().addDesignerAction(annotationToolAction);
- connect(annotationToolAction->action(), &QAction::triggered, [=]() {
- view()->changeCurrentToolTo(this);
- });
-}
-
-AnnotationTool::~AnnotationTool() = default;
-
-void AnnotationTool::clear()
-{
- if (m_annotationEditor)
- m_annotationEditor->deleteLater();
-
- AbstractFormEditorTool::clear();
-}
-
-void AnnotationTool::mousePressEvent(const QList<QGraphicsItem*> &itemList,
- QGraphicsSceneMouseEvent *event)
-{
- AbstractFormEditorTool::mousePressEvent(itemList, event);
-}
-
-void AnnotationTool::mouseMoveEvent(const QList<QGraphicsItem*> & /*itemList*/,
- QGraphicsSceneMouseEvent * /*event*/)
-{
-}
-
-void AnnotationTool::hoverMoveEvent(const QList<QGraphicsItem*> & /*itemList*/,
- QGraphicsSceneMouseEvent * /*event*/)
-{
-}
-
-void AnnotationTool::keyPressEvent(QKeyEvent * /*keyEvent*/)
-{
-}
-
-void AnnotationTool::keyReleaseEvent(QKeyEvent * /*keyEvent*/)
-{
-}
-
-void AnnotationTool::dragLeaveEvent(const QList<QGraphicsItem*> &/*itemList*/, QGraphicsSceneDragDropEvent * /*event*/)
-{
-}
-
-void AnnotationTool::dragMoveEvent(const QList<QGraphicsItem*> &/*itemList*/, QGraphicsSceneDragDropEvent * /*event*/)
-{
-}
-
-void AnnotationTool::mouseReleaseEvent(const QList<QGraphicsItem*> &itemList,
- QGraphicsSceneMouseEvent *event)
-{
- AbstractFormEditorTool::mouseReleaseEvent(itemList, event);
-}
-
-
-void AnnotationTool::mouseDoubleClickEvent(const QList<QGraphicsItem*> &itemList, QGraphicsSceneMouseEvent *event)
-{
- AbstractFormEditorTool::mouseDoubleClickEvent(itemList, event);
-}
-
-void AnnotationTool::itemsAboutToRemoved(const QList<FormEditorItem*> &removedItemList)
-{
- if (m_annotationEditor.isNull())
- return;
-
- if (removedItemList.contains(m_formEditorItem))
- view()->changeToSelectionTool();
-}
-
-void AnnotationTool::selectedItemsChanged(const QList<FormEditorItem*> &itemList)
-{
- if (!itemList.isEmpty()) {
- m_formEditorItem = itemList.constFirst();
-
- ModelNode itemModelNode = m_formEditorItem->qmlItemNode().modelNode();
- m_oldCustomId = itemModelNode.customId();
- m_oldAnnotation = itemModelNode.annotation();
-
- if (m_annotationEditor.isNull()) {
- m_annotationEditor = new AnnotationEditorDialog(view()->formEditorWidget()->parentWidget(),
- itemModelNode.displayName(),
- m_oldCustomId, m_oldAnnotation);
-
- connect(m_annotationEditor, &AnnotationEditorDialog::accepted, this, &AnnotationTool::annotationDialogAccepted);
- connect(m_annotationEditor, &QDialog::rejected, this, &AnnotationTool::annotationDialogRejected);
-
- m_annotationEditor->show();
- m_annotationEditor->raise();
- }
- } else {
- view()->changeToSelectionTool();
- }
-}
-
-void AnnotationTool::instancesCompleted(const QList<FormEditorItem*> & /*itemList*/)
-{
-}
-
-void AnnotationTool::instancesParentChanged(const QList<FormEditorItem *> & /*itemList*/)
-{
-}
-
-void AnnotationTool::instancePropertyChange(const QList<QPair<ModelNode, PropertyName> > & /*propertyList*/)
-{
-}
-
-void AnnotationTool::formEditorItemsChanged(const QList<FormEditorItem*> & /*itemList*/)
-{
-}
-
-int AnnotationTool::wantHandleItem(const ModelNode & /*modelNode*/) const
-{
- return 5;
-}
-
-QString AnnotationTool::name() const
-{
- return tr("Annotation Tool");
-}
-
-void AnnotationTool::annotationDialogAccepted()
-{
- if (m_annotationEditor) {
- saveNewCustomId(m_annotationEditor->customId());
- saveNewAnnotation(m_annotationEditor->annotation());
-
- m_annotationEditor->close();
- m_annotationEditor->deleteLater();
- }
-
- m_annotationEditor = nullptr;
-
- view()->changeToSelectionTool();
-}
-
-void AnnotationTool::saveNewCustomId(const QString &customId)
-{
- if (m_formEditorItem) {
- m_oldCustomId = customId;
- m_formEditorItem->qmlItemNode().modelNode().setCustomId(customId);
- }
-}
-
-void AnnotationTool::saveNewAnnotation(const Annotation &annotation)
-{
- if (m_formEditorItem) {
- if (annotation.comments().isEmpty())
- m_formEditorItem->qmlItemNode().modelNode().removeAnnotation();
- else
- m_formEditorItem->qmlItemNode().modelNode().setAnnotation(annotation);
-
- m_oldAnnotation = annotation;
- }
-}
-
-void AnnotationTool::annotationDialogRejected()
-{
- if (m_annotationEditor) {
- m_annotationEditor->close();
- m_annotationEditor->deleteLater();
- }
-
- m_annotationEditor = nullptr;
-
- view()->changeToSelectionTool();
-}
-
-}
diff --git a/src/plugins/qmldesigner/components/annotationeditor/annotationtool.h b/src/plugins/qmldesigner/components/annotationeditor/annotationtool.h
deleted file mode 100644
index 0073286dd6..0000000000
--- a/src/plugins/qmldesigner/components/annotationeditor/annotationtool.h
+++ /dev/null
@@ -1,93 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2020 The Qt Company Ltd.
-** Contact: https://www.qt.io/licensing/
-**
-** This file is part of Qt Creator.
-**
-** Commercial License Usage
-** Licensees holding valid commercial Qt licenses may use this file in
-** accordance with the commercial license agreement provided with the
-** Software or, alternatively, in accordance with the terms contained in
-** a written agreement between you and The Qt Company. For licensing terms
-** and conditions see https://www.qt.io/terms-conditions. For further
-** information use the contact form at https://www.qt.io/contact-us.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3 as published by the Free Software
-** Foundation with exceptions as appearing in the file LICENSE.GPL3-EXCEPT
-** included in the packaging of this file. Please review the following
-** information to ensure the GNU General Public License requirements will
-** be met: https://www.gnu.org/licenses/gpl-3.0.html.
-**
-****************************************************************************/
-
-#pragma once
-
-#include "annotation.h"
-#include "annotationeditordialog.h"
-#include "abstractcustomtool.h"
-#include "selectionindicator.h"
-
-#include <QHash>
-#include <QPointer>
-#include <QDialog>
-
-namespace QmlDesigner {
-
-class AnnotationTool : public QObject, public AbstractCustomTool
-{
- Q_OBJECT
-public:
- AnnotationTool();
- ~AnnotationTool() override;
-
- void mousePressEvent(const QList<QGraphicsItem*> &itemList,
- QGraphicsSceneMouseEvent *event) override;
- void mouseMoveEvent(const QList<QGraphicsItem*> &itemList,
- QGraphicsSceneMouseEvent *event) override;
- void mouseReleaseEvent(const QList<QGraphicsItem*> &itemList,
- QGraphicsSceneMouseEvent *event) override;
- void mouseDoubleClickEvent(const QList<QGraphicsItem*> &itemList,
- QGraphicsSceneMouseEvent *event) override;
- void hoverMoveEvent(const QList<QGraphicsItem*> &itemList,
- QGraphicsSceneMouseEvent *event) override;
- void keyPressEvent(QKeyEvent *event) override;
- void keyReleaseEvent(QKeyEvent *keyEvent) override;
-
- void dragLeaveEvent(const QList<QGraphicsItem*> &itemList,
- QGraphicsSceneDragDropEvent * event) override;
- void dragMoveEvent(const QList<QGraphicsItem*> &itemList,
- QGraphicsSceneDragDropEvent * event) override;
-
- void itemsAboutToRemoved(const QList<FormEditorItem*> &itemList) override;
-
- void selectedItemsChanged(const QList<FormEditorItem*> &itemList) override; //impl needed
-
- void instancesCompleted(const QList<FormEditorItem*> &itemList) override;
- void instancesParentChanged(const QList<FormEditorItem *> &itemList) override;
- void instancePropertyChange(const QList<QPair<ModelNode, PropertyName> > &propertyList) override;
-
- void clear() override;
-
- void formEditorItemsChanged(const QList<FormEditorItem*> &itemList) override;
-
- int wantHandleItem(const ModelNode &modelNode) const override;
-
- QString name() const override;
-
-private:
- void annotationDialogAccepted();
- void annotationDialogRejected();
- void saveNewCustomId(const QString &customId);
- void saveNewAnnotation(const Annotation &annotation);
-
-private:
- FormEditorItem *m_formEditorItem = nullptr;
- QString m_oldCustomId;
- Annotation m_oldAnnotation;
- QPointer<AnnotationEditorDialog> m_annotationEditor;
-};
-
-}
diff --git a/src/plugins/qmldesigner/components/curveeditor/curveeditormodel.cpp b/src/plugins/qmldesigner/components/curveeditor/curveeditormodel.cpp
index db58ce4dbb..56b91d0af6 100644
--- a/src/plugins/qmldesigner/components/curveeditor/curveeditormodel.cpp
+++ b/src/plugins/qmldesigner/components/curveeditor/curveeditormodel.cpp
@@ -39,10 +39,10 @@
namespace DesignTools {
-CurveEditorModel::CurveEditorModel(double minTime, double maxTime, QObject *parent)
+CurveEditorModel::CurveEditorModel(QObject *parent)
: TreeModel(parent)
- , m_minTime(minTime)
- , m_maxTime(maxTime)
+ , m_minTime(CurveEditorStyle::defaultTimeMin)
+ , m_maxTime(CurveEditorStyle::defaultTimeMax)
{}
CurveEditorModel::~CurveEditorModel() {}
diff --git a/src/plugins/qmldesigner/components/curveeditor/curveeditormodel.h b/src/plugins/qmldesigner/components/curveeditor/curveeditormodel.h
index 952dc46c63..cf7575ca5c 100644
--- a/src/plugins/qmldesigner/components/curveeditor/curveeditormodel.h
+++ b/src/plugins/qmldesigner/components/curveeditor/curveeditormodel.h
@@ -57,7 +57,7 @@ signals:
void curveChanged(PropertyTreeItem *item);
public:
- CurveEditorModel(double minTime, double maxTime, QObject *parent = nullptr);
+ CurveEditorModel(QObject *parent = nullptr);
~CurveEditorModel() override;
diff --git a/src/plugins/qmldesigner/components/curveeditor/curveeditorstyle.h b/src/plugins/qmldesigner/components/curveeditor/curveeditorstyle.h
index 6d6acebc51..f6c6c378c5 100644
--- a/src/plugins/qmldesigner/components/curveeditor/curveeditorstyle.h
+++ b/src/plugins/qmldesigner/components/curveeditor/curveeditorstyle.h
@@ -36,6 +36,8 @@
#include <QIcon>
#include <QKeySequence>
+#include <cmath>
+
namespace DesignTools {
struct TreeItemStyleOption
@@ -105,6 +107,13 @@ struct Shortcuts
struct CurveEditorStyle
{
+ static constexpr double defaultTimeMin = 0.0;
+ static constexpr double defaultTimeMax = 100.0;
+ static constexpr double defaultValueMin = -1.0;
+ static constexpr double defaultValueMax = 1.0;
+
+ static double defaultValueRange() { return std::fabs(defaultValueMin - defaultValueMax); }
+
Shortcuts shortcuts;
QBrush backgroundBrush = QBrush(QColor(5, 0, 100));
@@ -124,7 +133,7 @@ struct CurveEditorStyle
double valueAxisWidth = 60.0;
double valueOffsetTop = 10.0;
double valueOffsetBottom = 10.0;
- double labelDensityY = 1.5;
+ double labelDensityY = 2.0;
HandleItemStyleOption handleStyle;
KeyframeItemStyleOption keyframeStyle;
diff --git a/src/plugins/qmldesigner/components/curveeditor/curveeditorview.cpp b/src/plugins/qmldesigner/components/curveeditor/curveeditorview.cpp
index 9d858d684c..b84d386f8e 100644
--- a/src/plugins/qmldesigner/components/curveeditor/curveeditorview.cpp
+++ b/src/plugins/qmldesigner/components/curveeditor/curveeditorview.cpp
@@ -42,7 +42,7 @@ namespace QmlDesigner {
CurveEditorView::CurveEditorView(QObject *parent)
: AbstractView(parent)
, m_block(false)
- , m_model(new DesignTools::CurveEditorModel(0., 500.))
+ , m_model(new DesignTools::CurveEditorModel())
, m_editor(new DesignTools::CurveEditor(m_model))
{
Q_UNUSED(parent);
@@ -267,7 +267,7 @@ ModelNode getTargetNode1(DesignTools::PropertyTreeItem *item, const QmlTimeline
QString targetId = nodeItem->name();
if (timeline.isValid()) {
for (auto &&target : timeline.allTargets()) {
- if (target.displayName() == targetId)
+ if (target.isValid() && target.displayName() == targetId)
return target;
}
}
diff --git a/src/plugins/qmldesigner/components/curveeditor/detail/curveitem.cpp b/src/plugins/qmldesigner/components/curveeditor/detail/curveitem.cpp
index 86aae0b2cc..90818be74b 100644
--- a/src/plugins/qmldesigner/components/curveeditor/detail/curveitem.cpp
+++ b/src/plugins/qmldesigner/components/curveeditor/detail/curveitem.cpp
@@ -87,6 +87,16 @@ QRectF CurveItem::boundingRect() const
for (auto *item : m_keyframes)
bbox(bounds, item->keyframe());
+ if (auto *s = qobject_cast<GraphicsScene *>(scene())) {
+ bounds.setLeft(s->animationRangeMin());
+ bounds.setRight(s->animationRangeMax());
+ }
+
+ if (qFuzzyCompare(bounds.height(), 0.0)) {
+ auto tmp = CurveEditorStyle::defaultValueRange() / 2.0;
+ bounds.adjust(0.0, -tmp, 0.0, tmp);
+ }
+
return m_transform.mapRect(bounds);
}
diff --git a/src/plugins/qmldesigner/components/curveeditor/detail/graphicsscene.cpp b/src/plugins/qmldesigner/components/curveeditor/detail/graphicsscene.cpp
index aca41b4d6d..e9f9050f62 100644
--- a/src/plugins/qmldesigner/components/curveeditor/detail/graphicsscene.cpp
+++ b/src/plugins/qmldesigner/components/curveeditor/detail/graphicsscene.cpp
@@ -114,9 +114,29 @@ double GraphicsScene::maximumValue() const
return limits().top();
}
+double GraphicsScene::animationRangeMin() const
+{
+ if (GraphicsView *gview = graphicsView())
+ return gview->minimumTime();
+
+ return minimumTime();
+}
+
+double GraphicsScene::animationRangeMax() const
+{
+ if (GraphicsView *gview = graphicsView())
+ return gview->maximumTime();
+
+ return maximumTime();
+}
+
QRectF GraphicsScene::rect() const
{
- return sceneRect();
+ QRectF rect;
+ for (auto *curve : curves())
+ rect |= curve->boundingRect();
+
+ return rect;
}
QVector<CurveItem *> GraphicsScene::curves() const
@@ -410,6 +430,11 @@ QRectF GraphicsScene::limits() const
}
m_limits = QRectF(QPointF(min.x(), max.y()), QPointF(max.x(), min.y()));
+ if (qFuzzyCompare(m_limits.height(), 0.0)) {
+ auto tmp = CurveEditorStyle::defaultValueRange() / 2.0;
+ m_limits.adjust(0.0, tmp, 0.0, -tmp);
+ }
+
m_dirty = false;
}
return m_limits;
diff --git a/src/plugins/qmldesigner/components/curveeditor/detail/graphicsscene.h b/src/plugins/qmldesigner/components/curveeditor/detail/graphicsscene.h
index 9443130b3e..c19f72b130 100644
--- a/src/plugins/qmldesigner/components/curveeditor/detail/graphicsscene.h
+++ b/src/plugins/qmldesigner/components/curveeditor/detail/graphicsscene.h
@@ -67,6 +67,10 @@ public:
double maximumValue() const;
+ double animationRangeMin() const;
+
+ double animationRangeMax() const;
+
QRectF rect() const;
QVector<CurveItem *> curves() const;
diff --git a/src/plugins/qmldesigner/components/curveeditor/detail/graphicsview.cpp b/src/plugins/qmldesigner/components/curveeditor/detail/graphicsview.cpp
index 9fec8b2fc5..c162b5fd90 100644
--- a/src/plugins/qmldesigner/components/curveeditor/detail/graphicsview.cpp
+++ b/src/plugins/qmldesigner/components/curveeditor/detail/graphicsview.cpp
@@ -126,12 +126,12 @@ double GraphicsView::maximumTime() const
double GraphicsView::minimumValue() const
{
- return m_scene->empty() ? -1.0 : m_scene->minimumValue();
+ return m_scene->empty() ? CurveEditorStyle::defaultValueMin : m_scene->minimumValue();
}
double GraphicsView::maximumValue() const
{
- return m_scene->empty() ? 1.0 : m_scene->maximumValue();
+ return m_scene->empty() ? CurveEditorStyle::defaultValueMax : m_scene->maximumValue();
}
double GraphicsView::zoomX() const
diff --git a/src/plugins/qmldesigner/components/edit3d/edit3dcanvas.cpp b/src/plugins/qmldesigner/components/edit3d/edit3dcanvas.cpp
index 91aa006299..de3757e68c 100644
--- a/src/plugins/qmldesigner/components/edit3d/edit3dcanvas.cpp
+++ b/src/plugins/qmldesigner/components/edit3d/edit3dcanvas.cpp
@@ -92,7 +92,7 @@ void Edit3DCanvas::paintEvent(QPaintEvent *e)
QPainter painter(this);
- painter.drawImage(rect(), m_image, rect());
+ painter.drawImage(rect(), m_image, QRect(0, 0, m_image.width(), m_image.height()));
}
void Edit3DCanvas::resizeEvent(QResizeEvent *e)
diff --git a/src/plugins/qmldesigner/designmodewidget.cpp b/src/plugins/qmldesigner/designmodewidget.cpp
index 5b75ea7241..2bb61467a9 100644
--- a/src/plugins/qmldesigner/designmodewidget.cpp
+++ b/src/plugins/qmldesigner/designmodewidget.cpp
@@ -24,7 +24,6 @@
****************************************************************************/
#include "designmodewidget.h"
-#include "switchsplittabwidget.h"
#include <designeractionmanager.h>
diff --git a/src/plugins/qmldesigner/designmodewidget.h b/src/plugins/qmldesigner/designmodewidget.h
index 67f8f3d554..bf348d3300 100644
--- a/src/plugins/qmldesigner/designmodewidget.h
+++ b/src/plugins/qmldesigner/designmodewidget.h
@@ -50,7 +50,6 @@ namespace QmlDesigner {
class ItemLibraryWidget;
class CrumbleBar;
class DocumentWarningWidget;
-class SwitchSplitTabWidget;
namespace Internal {
@@ -103,8 +102,6 @@ private: // functions
void aboutToShowWorkspaces();
private: // variables
- SwitchSplitTabWidget* m_centralTabWidget = nullptr;
-
QPointer<QWidget> m_bottomSideBar;
Core::EditorToolBar *m_toolBar;
CrumbleBar *m_crumbleBar;
diff --git a/src/plugins/qmldesigner/qmldesignerplugin.cpp b/src/plugins/qmldesigner/qmldesignerplugin.cpp
index 3022bd80be..938a718d7c 100644
--- a/src/plugins/qmldesigner/qmldesignerplugin.cpp
+++ b/src/plugins/qmldesigner/qmldesignerplugin.cpp
@@ -37,7 +37,6 @@
#include <connectionview.h>
#include <sourcetool/sourcetool.h>
#include <colortool/colortool.h>
-#include <annotationeditor/annotationtool.h>
#include <curveeditor/curveeditorview.h>
#include <formeditor/transitiontool.h>
#include <texttool/texttool.h>
@@ -250,7 +249,6 @@ bool QmlDesignerPlugin::delayedInitialize()
d->viewManager.registerFormEditorToolTakingOwnership(new QmlDesigner::SourceTool);
d->viewManager.registerFormEditorToolTakingOwnership(new QmlDesigner::ColorTool);
- d->viewManager.registerFormEditorToolTakingOwnership(new QmlDesigner::AnnotationTool);
d->viewManager.registerFormEditorToolTakingOwnership(new QmlDesigner::TextTool);
d->viewManager.registerFormEditorToolTakingOwnership(new QmlDesigner::PathTool);
d->viewManager.registerFormEditorToolTakingOwnership(new QmlDesigner::TransitionTool);
diff --git a/src/plugins/qmldesigner/qmldesignerplugin.pri b/src/plugins/qmldesigner/qmldesignerplugin.pri
index 8c99395c58..b11ff7a53b 100644
--- a/src/plugins/qmldesigner/qmldesignerplugin.pri
+++ b/src/plugins/qmldesigner/qmldesignerplugin.pri
@@ -2,7 +2,6 @@ HEADERS += $$PWD/qmldesignerconstants.h \
$$PWD/shortcutmanager.h \
$$PWD/qmldesignerplugin.h \
$$PWD/designmodewidget.h \
- $$PWD/switchsplittabwidget.h \
$$PWD/designersettings.h \
$$PWD/generateresource.h \
$$PWD/settingspage.h \
@@ -16,7 +15,6 @@ HEADERS += $$PWD/qmldesignerconstants.h \
SOURCES += $$PWD/qmldesignerplugin.cpp \
$$PWD/shortcutmanager.cpp \
$$PWD/designmodewidget.cpp \
- $$PWD/switchsplittabwidget.cpp \
$$PWD/designersettings.cpp \
$$PWD/generateresource.cpp \
$$PWD/settingspage.cpp \
diff --git a/src/plugins/qmldesigner/qmldesignerplugin.qbs b/src/plugins/qmldesigner/qmldesignerplugin.qbs
index 8dc0933903..93cf6587ca 100644
--- a/src/plugins/qmldesigner/qmldesignerplugin.qbs
+++ b/src/plugins/qmldesigner/qmldesignerplugin.qbs
@@ -712,8 +712,6 @@ Project {
"annotationeditor/globalannotationeditordialog.cpp",
"annotationeditor/globalannotationeditordialog.h",
"annotationeditor/globalannotationeditordialog.ui",
- "annotationeditor/annotationtool.cpp",
- "annotationeditor/annotationtool.h",
"bindingeditor/bindingeditor.cpp",
"bindingeditor/bindingeditor.h",
"bindingeditor/actioneditor.cpp",
@@ -935,8 +933,6 @@ Project {
"designmodecontext.h",
"designmodewidget.cpp",
"designmodewidget.h",
- "switchsplittabwidget.cpp",
- "switchsplittabwidget.h",
"documentmanager.cpp",
"documentmanager.h",
"documentwarningwidget.cpp",
diff --git a/src/plugins/qmldesigner/switchsplittabwidget.cpp b/src/plugins/qmldesigner/switchsplittabwidget.cpp
deleted file mode 100644
index e30f4180cf..0000000000
--- a/src/plugins/qmldesigner/switchsplittabwidget.cpp
+++ /dev/null
@@ -1,212 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2016 The Qt Company Ltd.
-** Contact: https://www.qt.io/licensing/
-**
-** This file is part of Qt Creator.
-**
-** Commercial License Usage
-** Licensees holding valid commercial Qt licenses may use this file in
-** accordance with the commercial license agreement provided with the
-** Software or, alternatively, in accordance with the terms contained in
-** a written agreement between you and The Qt Company. For licensing terms
-** and conditions see https://www.qt.io/terms-conditions. For further
-** information use the contact form at https://www.qt.io/contact-us.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3 as published by the Free Software
-** Foundation with exceptions as appearing in the file LICENSE.GPL3-EXCEPT
-** included in the packaging of this file. Please review the following
-** information to ensure the GNU General Public License requirements will
-** be met: https://www.gnu.org/licenses/gpl-3.0.html.
-**
-****************************************************************************/
-
-#include "switchsplittabwidget.h"
-#include <theme.h>
-
-#include <utils/utilsicons.h>
-#include <utils/fileutils.h>
-
-#include <QVector>
-#include <QBoxLayout>
-#include <QTabBar>
-#include <QToolButton>
-#include <QSplitter>
-#include <QLayoutItem>
-#include <QEvent>
-
-namespace QmlDesigner {
-SwitchSplitTabWidget::SwitchSplitTabWidget(QWidget *parent)
- : QWidget(parent)
- , m_splitter(new QSplitter)
- , m_tabBar(new QTabBar)
- , m_tabBarBackground(new QWidget)
-{
- // setting object names for css
- setObjectName("backgroundWidget");
- m_splitter->setObjectName("centralTabWidget");
- m_splitter->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Expanding);
- m_splitter->setHandleWidth(0);
-
- QString sheet = QString::fromUtf8(Utils::FileReader::fetchQrc(":/qmldesigner/centerwidget.css"));
- m_tabBarBackground->setStyleSheet(Theme::replaceCssColors(sheet));
-
- m_tabBar->setObjectName("centralTabBar");
- m_tabBar->setShape(QTabBar::RoundedEast);
- m_tabBar->setDocumentMode(false);
- // add a faketab to have the possibility to unselect all tabs
- m_tabBar->addTab(QString());
- selectFakeTab();
-
- m_tabBarBackground->setObjectName("tabBarBackground");
-
- connect(m_tabBar, &QTabBar::tabBarClicked, [this] (int index) {
- if (index != -1)
- updateSplitterSizes(index - fakeTab);
- });
-
- setLayout(new QHBoxLayout);
- layout()->setContentsMargins(0, 0, 0, 0);
- layout()->setSpacing(0);
- layout()->addWidget(m_splitter);
-
- m_tabBarBackground->setLayout(new QVBoxLayout);
- m_tabBarBackground->layout()->setContentsMargins(0, 0, 0, 0);
- m_tabBarBackground->layout()->addItem(new QSpacerItem(0, 0, QSizePolicy::Minimum, QSizePolicy::Expanding));
- m_tabBarBackground->layout()->addWidget(m_tabBar);
-
- auto horizontalButton = new QToolButton;
- horizontalButton->setObjectName("centralTabBar");
- horizontalButton->setIcon(Utils::Icon({{QLatin1String(":/qmldesigner/images/spliteditorvertically.png"),
- Utils::Theme::IconsBaseColor}}).icon());
- horizontalButton->setIconSize(QSize(8, 16));
- connect(horizontalButton, &QToolButton::clicked, [this] () {
- m_splitter->setOrientation(Qt::Vertical);
- updateSplitterSizes();
- selectFakeTab();
- });
- auto verticalButton = new QToolButton;
- verticalButton->setObjectName("centralTabBar");
- verticalButton->setIcon(Utils::Icon({{QLatin1String(":/qmldesigner/images/spliteditorhorizontally.png"),
- Utils::Theme::IconsBaseColor}}).icon());
- verticalButton->setIconSize(QSize(8, 16));
- connect(verticalButton, &QToolButton::clicked, [this] () {
- m_splitter->setOrientation(Qt::Horizontal);
- updateSplitterSizes();
- selectFakeTab();
- });
-
- m_tabBarBackground->layout()->addWidget(horizontalButton);
- m_tabBarBackground->layout()->addWidget(verticalButton);
- layout()->addWidget(m_tabBarBackground);
- updateSplitButtons();
-}
-
-int SwitchSplitTabWidget::count() const
-{
- return m_splitter->count();
-}
-
-QWidget *SwitchSplitTabWidget::currentWidget() const
-{
- QList<int> sizes = m_splitter->sizes();
- for (int i = 0; i < count(); ++i) {
- if (sizes.at(i) > 0 && m_splitter->widget(i)->hasFocus())
- return m_splitter->widget(i);
- }
- return nullptr;
-}
-
-void SwitchSplitTabWidget::updateSplitterSizes(int index)
-{
- QVector<int> splitterSizes(m_splitter->count());
- int splitterFullSize = 0;
- bool isHorizontal = m_splitter->orientation() == Qt::Horizontal;
- for (int i = 0; i < m_splitter->count(); ++i) {
- auto widget = m_splitter->widget(i);
- splitterFullSize += isHorizontal ? widget->width() : widget->height();
- }
-
- if (index > -1) {
- // collapse all but the one at index
- splitterSizes.fill(0);
- splitterSizes.replace(index, splitterFullSize);
- } else {
- // distribute full size among enabled tabs
- int divisor = splitterSizes.count();
- for (int i = 0; i < m_splitter->count(); ++i) {
- if (!m_tabBar->isTabEnabled(i + fakeTab))
- --divisor;
- }
-
- int splitSize = splitterFullSize / divisor;
- for (int i = 0; i < m_splitter->count(); ++i)
- splitterSizes.replace(i, m_tabBar->isTabEnabled(i + fakeTab) ? splitSize : 0);
- }
-
- m_splitter->setSizes(splitterSizes.toList());
-}
-
-int SwitchSplitTabWidget::addTab(QWidget *w, const QString &label)
-{
- m_splitter->addWidget(w);
- const int newIndex = m_tabBar->addTab(label);
- if (mode() == TabMode) {
- m_tabBar->setCurrentIndex(newIndex);
- updateSplitterSizes(newIndex - fakeTab);
- }
- if (mode() == SplitMode)
- updateSplitterSizes();
- updateSplitButtons();
- return newIndex;
-}
-
-QWidget *SwitchSplitTabWidget::takeTabWidget(const int index)
-{
- if (index == -1 || index > count() - 1)
- return nullptr;
- QWidget *widget = m_splitter->widget(index);
- widget->setParent(nullptr);
- m_tabBar->removeTab(index + fakeTab);
- // TODO: set which mode and tab is the current one
- updateSplitButtons();
- return widget;
-}
-
-void SwitchSplitTabWidget::switchTo(QWidget *widget)
-{
- if (widget == nullptr || currentWidget() == widget)
- return;
- const int widgetIndex = m_splitter->indexOf(widget);
- Q_ASSERT(widgetIndex != -1);
- if (mode() == TabMode) {
- updateSplitterSizes(widgetIndex);
- m_tabBar->setCurrentIndex(widgetIndex + fakeTab);
- }
-
- widget->setFocus();
-}
-
-void SwitchSplitTabWidget::updateSplitButtons()
-{
- const bool isTabBarNecessary = count() > 1;
- m_tabBarBackground->setVisible(isTabBarNecessary);
-}
-
-void SwitchSplitTabWidget::selectFakeTab()
-{
- m_tabBar->setCurrentIndex(0);
-}
-
-SwitchSplitTabWidget::Mode SwitchSplitTabWidget::mode() const
-{
- const bool isTabBarNecessary = count() > 1;
- const int fakeTabPosition = 0;
- const int hasSelectedTab = m_tabBar->currentIndex() > fakeTabPosition;
- // Note: When splitting the view by dragging from the side of the view, SplitMode is not detected
- return (isTabBarNecessary && !hasSelectedTab) ? SplitMode : TabMode;
-}
-
-} // namespace QmlDesigner
diff --git a/src/plugins/qmldesigner/switchsplittabwidget.h b/src/plugins/qmldesigner/switchsplittabwidget.h
deleted file mode 100644
index 72c5cc3e5e..0000000000
--- a/src/plugins/qmldesigner/switchsplittabwidget.h
+++ /dev/null
@@ -1,63 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2016 The Qt Company Ltd.
-** Contact: https://www.qt.io/licensing/
-**
-** This file is part of Qt Creator.
-**
-** Commercial License Usage
-** Licensees holding valid commercial Qt licenses may use this file in
-** accordance with the commercial license agreement provided with the
-** Software or, alternatively, in accordance with the terms contained in
-** a written agreement between you and The Qt Company. For licensing terms
-** and conditions see https://www.qt.io/terms-conditions. For further
-** information use the contact form at https://www.qt.io/contact-us.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3 as published by the Free Software
-** Foundation with exceptions as appearing in the file LICENSE.GPL3-EXCEPT
-** included in the packaging of this file. Please review the following
-** information to ensure the GNU General Public License requirements will
-** be met: https://www.gnu.org/licenses/gpl-3.0.html.
-**
-****************************************************************************/
-
-#pragma once
-
-#include <QWidget>
-
-QT_BEGIN_NAMESPACE
-class QTabBar;
-class QSplitter;
-class QPushButton;
-QT_END_NAMESPACE
-
-namespace QmlDesigner {
-class SwitchSplitTabWidget : public QWidget
-{
- Q_OBJECT
-
- enum Mode { SplitMode, TabMode };
-
-public:
- explicit SwitchSplitTabWidget(QWidget *parent = nullptr);
- int count() const;
- QWidget *currentWidget() const;
-
- int addTab(QWidget *widget, const QString &label);
- QWidget *takeTabWidget(const int index);
- void switchTo(QWidget *widget);
-
-private:
- void updateSplitterSizes(int index = -1);
- void updateSplitButtons();
- void selectFakeTab();
- Mode mode() const;
-
- QSplitter *m_splitter = nullptr;
- QTabBar *m_tabBar = nullptr;
- QWidget *m_tabBarBackground = nullptr;
- const int fakeTab = 1;
-};
-} // namespace QmlDesigner