aboutsummaryrefslogtreecommitdiffstats
path: root/src/plugins
diff options
context:
space:
mode:
authorThorbjørn Lindeijer <thorbjorn.lindeijer@nokia.com>2011-06-09 13:30:47 +0200
committerThorbjørn Lindeijer <thorbjorn.lindeijer@nokia.com>2011-06-23 16:26:11 +0200
commit0f2e1526068ed11bb981357fdeb406f5c804717b (patch)
treef1a5d1a7f95c6cbe6715916ae4d71ba4c63a20a7 /src/plugins
parentfebfd367f8483ef6cae31b89b04422e0058e5ae7 (diff)
QmlInspector: Unified mouse and keyboard event handling
Introduced a common AbstractTool interface so that the AbstractViewInspector can forward mouse and keyboard events and also implement the keys to switch tools. The AbstractLiveEditTool still exists as the base class for all QDeclarativeView based tools. Change-Id: I7c00b05fba58828378543645e32732ad5f9fd5d0
Diffstat (limited to 'src/plugins')
-rw-r--r--src/plugins/qmltooling/qmldbg_inspector/abstracttool.cpp (renamed from src/plugins/qmltooling/qmldbg_inspector/sgabstracttool.cpp)6
-rw-r--r--src/plugins/qmltooling/qmldbg_inspector/abstracttool.h (renamed from src/plugins/qmltooling/qmldbg_inspector/sgabstracttool.h)16
-rw-r--r--src/plugins/qmltooling/qmldbg_inspector/abstractviewinspector.cpp121
-rw-r--r--src/plugins/qmltooling/qmldbg_inspector/abstractviewinspector.h20
-rw-r--r--src/plugins/qmltooling/qmldbg_inspector/editor/abstractliveedittool.cpp8
-rw-r--r--src/plugins/qmltooling/qmldbg_inspector/editor/abstractliveedittool.h15
-rw-r--r--src/plugins/qmltooling/qmldbg_inspector/qdeclarativeviewinspector.cpp177
-rw-r--r--src/plugins/qmltooling/qmldbg_inspector/qdeclarativeviewinspector.h11
-rw-r--r--src/plugins/qmltooling/qmldbg_inspector/qdeclarativeviewinspector_p.h3
-rw-r--r--src/plugins/qmltooling/qmldbg_inspector/qmldbg_inspector.pro4
-rw-r--r--src/plugins/qmltooling/qmldbg_inspector/sgselectiontool.cpp7
-rw-r--r--src/plugins/qmltooling/qmldbg_inspector/sgselectiontool.h6
-rw-r--r--src/plugins/qmltooling/qmldbg_inspector/sgviewinspector.cpp105
-rw-r--r--src/plugins/qmltooling/qmldbg_inspector/sgviewinspector.h15
14 files changed, 202 insertions, 312 deletions
diff --git a/src/plugins/qmltooling/qmldbg_inspector/sgabstracttool.cpp b/src/plugins/qmltooling/qmldbg_inspector/abstracttool.cpp
index 43944197ed..39ced2a9d0 100644
--- a/src/plugins/qmltooling/qmldbg_inspector/sgabstracttool.cpp
+++ b/src/plugins/qmltooling/qmldbg_inspector/abstracttool.cpp
@@ -39,13 +39,13 @@
**
****************************************************************************/
-#include "sgabstracttool.h"
+#include "abstracttool.h"
-#include "sgviewinspector.h"
+#include "abstractviewinspector.h"
namespace QmlJSDebugger {
-SGAbstractTool::SGAbstractTool(SGViewInspector *inspector) :
+AbstractTool::AbstractTool(AbstractViewInspector *inspector) :
QObject(inspector),
m_inspector(inspector)
{
diff --git a/src/plugins/qmltooling/qmldbg_inspector/sgabstracttool.h b/src/plugins/qmltooling/qmldbg_inspector/abstracttool.h
index 5b0dc14853..0a216bfa83 100644
--- a/src/plugins/qmltooling/qmldbg_inspector/sgabstracttool.h
+++ b/src/plugins/qmltooling/qmldbg_inspector/abstracttool.h
@@ -39,8 +39,8 @@
**
****************************************************************************/
-#ifndef SGABSTRACTTOOL_H
-#define SGABSTRACTTOOL_H
+#ifndef ABSTRACTTOOL_H
+#define ABSTRACTTOOL_H
#include <QtCore/QObject>
@@ -52,16 +52,16 @@ QT_END_NAMESPACE
namespace QmlJSDebugger {
-class SGViewInspector;
+class AbstractViewInspector;
-class SGAbstractTool : public QObject
+class AbstractTool : public QObject
{
Q_OBJECT
public:
- explicit SGAbstractTool(SGViewInspector *inspector);
+ explicit AbstractTool(AbstractViewInspector *inspector);
- SGViewInspector *inspector() const { return m_inspector; }
+ AbstractViewInspector *inspector() const { return m_inspector; }
virtual void leaveEvent(QEvent *event) = 0;
@@ -77,9 +77,9 @@ public:
virtual void keyReleaseEvent(QKeyEvent *keyEvent) = 0;
private:
- SGViewInspector *m_inspector;
+ AbstractViewInspector *m_inspector;
};
} // namespace QmlJSDebugger
-#endif // SGABSTRACTTOOL_H
+#endif // ABSTRACTTOOL_H
diff --git a/src/plugins/qmltooling/qmldbg_inspector/abstractviewinspector.cpp b/src/plugins/qmltooling/qmldbg_inspector/abstractviewinspector.cpp
index a698819db4..3323d54246 100644
--- a/src/plugins/qmltooling/qmldbg_inspector/abstractviewinspector.cpp
+++ b/src/plugins/qmltooling/qmldbg_inspector/abstractviewinspector.cpp
@@ -41,6 +41,7 @@
#include "abstractviewinspector.h"
+#include "abstracttool.h"
#include "editor/qmltoolbar.h"
#include "qdeclarativeinspectorprotocol.h"
@@ -50,6 +51,7 @@
#include "QtDeclarative/private/qdeclarativeinspectorservice_p.h"
#include <QtGui/QVBoxLayout>
+#include <QtGui/QMouseEvent>
#include <QtCore/QSettings>
static inline void initEditorResource() { Q_INIT_RESOURCE(editor); }
@@ -99,6 +101,7 @@ ToolBox::~ToolBox()
AbstractViewInspector::AbstractViewInspector(QObject *parent) :
QObject(parent),
m_toolBox(0),
+ m_currentTool(0),
m_showAppOnTop(false),
m_designModeBehavior(false),
m_animationPaused(false),
@@ -284,6 +287,124 @@ void AbstractViewInspector::changeToMarqueeSelectTool()
changeTool(InspectorProtocol::SelectMarqueeTool);
}
+bool AbstractViewInspector::eventFilter(QObject *obj, QEvent *event)
+{
+ if (!designModeBehavior())
+ return QObject::eventFilter(obj, event);
+
+ switch (event->type()) {
+ case QEvent::Leave:
+ if (leaveEvent(event))
+ return true;
+ break;
+ case QEvent::MouseButtonPress:
+ if (mousePressEvent(static_cast<QMouseEvent*>(event)))
+ return true;
+ break;
+ case QEvent::MouseMove:
+ if (mouseMoveEvent(static_cast<QMouseEvent*>(event)))
+ return true;
+ break;
+ case QEvent::MouseButtonRelease:
+ if (mouseReleaseEvent(static_cast<QMouseEvent*>(event)))
+ return true;
+ break;
+ case QEvent::KeyPress:
+ if (keyPressEvent(static_cast<QKeyEvent*>(event)))
+ return true;
+ break;
+ case QEvent::KeyRelease:
+ if (keyReleaseEvent(static_cast<QKeyEvent*>(event)))
+ return true;
+ break;
+ case QEvent::MouseButtonDblClick:
+ if (mouseDoubleClickEvent(static_cast<QMouseEvent*>(event)))
+ return true;
+ break;
+ case QEvent::Wheel:
+ if (wheelEvent(static_cast<QWheelEvent*>(event)))
+ return true;
+ break;
+ default:
+ break;
+ }
+
+ return QObject::eventFilter(obj, event);
+}
+
+bool AbstractViewInspector::leaveEvent(QEvent *event)
+{
+ m_currentTool->leaveEvent(event);
+ return true;
+}
+
+bool AbstractViewInspector::mousePressEvent(QMouseEvent *event)
+{
+ m_currentTool->mousePressEvent(event);
+ return true;
+}
+
+bool AbstractViewInspector::mouseMoveEvent(QMouseEvent *event)
+{
+ if (event->buttons()) {
+ m_currentTool->mouseMoveEvent(event);
+ } else {
+ m_currentTool->hoverMoveEvent(event);
+ }
+ return true;
+}
+
+bool AbstractViewInspector::mouseReleaseEvent(QMouseEvent *event)
+{
+ m_currentTool->mouseReleaseEvent(event);
+ return true;
+}
+
+bool AbstractViewInspector::keyPressEvent(QKeyEvent *event)
+{
+ m_currentTool->keyPressEvent(event);
+ return true;
+}
+
+bool AbstractViewInspector::keyReleaseEvent(QKeyEvent *event)
+{
+ switch (event->key()) {
+ case Qt::Key_V:
+ changeTool(InspectorProtocol::SelectTool);
+ break;
+// disabled because multiselection does not do anything useful without design mode
+// case Qt::Key_M:
+// changeTool(InspectorProtocol::SelectMarqueeTool);
+// break;
+ case Qt::Key_I:
+ changeTool(InspectorProtocol::ColorPickerTool);
+ break;
+ case Qt::Key_Z:
+ changeTool(InspectorProtocol::ZoomTool);
+ break;
+ case Qt::Key_Space:
+ setAnimationPaused(!animationPaused());
+ break;
+ default:
+ break;
+ }
+
+ m_currentTool->keyReleaseEvent(event);
+ return true;
+}
+
+bool AbstractViewInspector::mouseDoubleClickEvent(QMouseEvent *event)
+{
+ m_currentTool->mouseDoubleClickEvent(event);
+ return true;
+}
+
+bool AbstractViewInspector::wheelEvent(QWheelEvent *event)
+{
+ m_currentTool->wheelEvent(event);
+ return true;
+}
+
void AbstractViewInspector::handleMessage(const QByteArray &message)
{
QDataStream ds(message);
diff --git a/src/plugins/qmltooling/qmldbg_inspector/abstractviewinspector.h b/src/plugins/qmltooling/qmldbg_inspector/abstractviewinspector.h
index 0a56eadaef..7202bcca40 100644
--- a/src/plugins/qmltooling/qmldbg_inspector/abstractviewinspector.h
+++ b/src/plugins/qmltooling/qmldbg_inspector/abstractviewinspector.h
@@ -53,10 +53,14 @@
QT_BEGIN_NAMESPACE
class QDeclarativeEngine;
class QDeclarativeInspectorService;
+class QKeyEvent;
+class QMouseEvent;
+class QWheelEvent;
QT_END_NAMESPACE
namespace QmlJSDebugger {
+class AbstractTool;
class ToolBox;
/*
@@ -131,6 +135,21 @@ signals:
void animationSpeedChanged(qreal factor);
void animationPausedChanged(bool paused);
+protected:
+ bool eventFilter(QObject *, QEvent *);
+
+ virtual bool leaveEvent(QEvent *);
+ virtual bool mousePressEvent(QMouseEvent *event);
+ virtual bool mouseMoveEvent(QMouseEvent *event);
+ virtual bool mouseReleaseEvent(QMouseEvent *event);
+ virtual bool keyPressEvent(QKeyEvent *event);
+ virtual bool keyReleaseEvent(QKeyEvent *keyEvent);
+ virtual bool mouseDoubleClickEvent(QMouseEvent *event);
+ virtual bool wheelEvent(QWheelEvent *event);
+
+ AbstractTool *currentTool() const { return m_currentTool; }
+ void setCurrentTool(AbstractTool *tool) { m_currentTool = tool; }
+
private slots:
void handleMessage(const QByteArray &message);
@@ -142,6 +161,7 @@ private:
void createToolBox();
ToolBox *m_toolBox;
+ AbstractTool *m_currentTool;
bool m_showAppOnTop;
bool m_designModeBehavior;
diff --git a/src/plugins/qmltooling/qmldbg_inspector/editor/abstractliveedittool.cpp b/src/plugins/qmltooling/qmldbg_inspector/editor/abstractliveedittool.cpp
index 4353e97f91..dce147c842 100644
--- a/src/plugins/qmltooling/qmldbg_inspector/editor/abstractliveedittool.cpp
+++ b/src/plugins/qmltooling/qmldbg_inspector/editor/abstractliveedittool.cpp
@@ -51,7 +51,7 @@
namespace QmlJSDebugger {
AbstractLiveEditTool::AbstractLiveEditTool(QDeclarativeViewInspector *editorView)
- : QObject(editorView), m_inspector(editorView)
+ : AbstractTool(editorView)
{
}
@@ -62,12 +62,12 @@ AbstractLiveEditTool::~AbstractLiveEditTool()
QDeclarativeViewInspector *AbstractLiveEditTool::inspector() const
{
- return m_inspector;
+ return static_cast<QDeclarativeViewInspector*>(AbstractTool::inspector());
}
QDeclarativeView *AbstractLiveEditTool::view() const
{
- return m_inspector->declarativeView();
+ return inspector()->declarativeView();
}
QGraphicsScene* AbstractLiveEditTool::scene() const
@@ -175,7 +175,7 @@ QString AbstractLiveEditTool::titleForItem(QGraphicsItem *item)
QDeclarativeItem *declarativeItem = qobject_cast<QDeclarativeItem*>(gfxObject);
if (declarativeItem) {
- objectStringId = m_inspector->idStringForObject(declarativeItem);
+ objectStringId = inspector()->idStringForObject(declarativeItem);
}
if (!objectStringId.isEmpty()) {
diff --git a/src/plugins/qmltooling/qmldbg_inspector/editor/abstractliveedittool.h b/src/plugins/qmltooling/qmldbg_inspector/editor/abstractliveedittool.h
index accec797eb..04b5f4e46e 100644
--- a/src/plugins/qmltooling/qmldbg_inspector/editor/abstractliveedittool.h
+++ b/src/plugins/qmltooling/qmldbg_inspector/editor/abstractliveedittool.h
@@ -43,7 +43,7 @@
#define ABSTRACTLIVEEDITTOOL_H
#include <QtCore/QList>
-#include <QtCore/QObject>
+#include "../abstracttool.h"
QT_BEGIN_NAMESPACE
class QMouseEvent;
@@ -60,7 +60,7 @@ namespace QmlJSDebugger {
class QDeclarativeViewInspector;
-class AbstractLiveEditTool : public QObject
+class AbstractLiveEditTool : public AbstractTool
{
Q_OBJECT
public:
@@ -68,16 +68,8 @@ public:
virtual ~AbstractLiveEditTool();
- virtual void mousePressEvent(QMouseEvent *event) = 0;
- virtual void mouseMoveEvent(QMouseEvent *event) = 0;
- virtual void mouseReleaseEvent(QMouseEvent *event) = 0;
- virtual void mouseDoubleClickEvent(QMouseEvent *event) = 0;
+ void leaveEvent(QEvent *) {}
- virtual void hoverMoveEvent(QMouseEvent *event) = 0;
- virtual void wheelEvent(QWheelEvent *event) = 0;
-
- virtual void keyPressEvent(QKeyEvent *event) = 0;
- virtual void keyReleaseEvent(QKeyEvent *keyEvent) = 0;
virtual void itemsAboutToRemoved(const QList<QGraphicsItem*> &itemList) = 0;
virtual void clear() = 0;
@@ -104,7 +96,6 @@ protected:
QGraphicsScene *scene() const;
private:
- QDeclarativeViewInspector *m_inspector;
QList<QGraphicsItem*> m_itemList;
};
diff --git a/src/plugins/qmltooling/qmldbg_inspector/qdeclarativeviewinspector.cpp b/src/plugins/qmltooling/qmldbg_inspector/qdeclarativeviewinspector.cpp
index 462fd191b9..67a581dd9d 100644
--- a/src/plugins/qmltooling/qmldbg_inspector/qdeclarativeviewinspector.cpp
+++ b/src/plugins/qmltooling/qmldbg_inspector/qdeclarativeviewinspector.cpp
@@ -49,13 +49,9 @@
#include "editor/boundingrecthighlighter.h"
#include <QtDeclarative/QDeclarativeItem>
-#include <QtDeclarative/QDeclarativeEngine>
-#include <QtDeclarative/QDeclarativeContext>
-#include <QtDeclarative/QDeclarativeExpression>
#include <QtGui/QWidget>
#include <QtGui/QMouseEvent>
#include <QtGui/QGraphicsObject>
-#include <QtGui/QApplication>
namespace QmlJSDebugger {
@@ -79,7 +75,7 @@ QDeclarativeViewInspector::QDeclarativeViewInspector(QDeclarativeView *view,
data->zoomTool = new ZoomTool(this);
data->colorPickerTool = new ColorPickerTool(this);
data->boundingRectHighlighter = new BoundingRectHighlighter(this);
- data->currentTool = data->selectionTool;
+ setCurrentTool(data->selectionTool);
// to capture ChildRemoved event when viewport changes
data->view->installEventFilter(this);
@@ -142,6 +138,11 @@ void QDeclarativeViewInspector::changeTool(InspectorProtocol::Tool tool)
}
}
+AbstractLiveEditTool *QDeclarativeViewInspector::currentTool() const
+{
+ return static_cast<AbstractLiveEditTool*>(AbstractViewInspector::currentTool());
+}
+
QDeclarativeEngine *QDeclarativeViewInspector::declarativeEngine() const
{
return data->view->engine();
@@ -181,143 +182,39 @@ bool QDeclarativeViewInspector::eventFilter(QObject *obj, QEvent *event)
return QObject::eventFilter(obj, event);
}
- // Event from viewport
- switch (event->type()) {
- case QEvent::Leave: {
- if (leaveEvent(event))
- return true;
- break;
- }
- case QEvent::MouseButtonPress: {
- if (mousePressEvent(static_cast<QMouseEvent*>(event)))
- return true;
- break;
- }
- case QEvent::MouseMove: {
- if (mouseMoveEvent(static_cast<QMouseEvent*>(event)))
- return true;
- break;
- }
- case QEvent::MouseButtonRelease: {
- if (mouseReleaseEvent(static_cast<QMouseEvent*>(event)))
- return true;
- break;
- }
- case QEvent::KeyPress: {
- if (keyPressEvent(static_cast<QKeyEvent*>(event)))
- return true;
- break;
- }
- case QEvent::KeyRelease: {
- if (keyReleaseEvent(static_cast<QKeyEvent*>(event)))
- return true;
- break;
- }
- case QEvent::MouseButtonDblClick: {
- if (mouseDoubleClickEvent(static_cast<QMouseEvent*>(event)))
- return true;
- break;
- }
- case QEvent::Wheel: {
- if (wheelEvent(static_cast<QWheelEvent*>(event)))
- return true;
- break;
- }
- default: {
- break;
- }
- } //switch
-
- // standard event processing
- return QObject::eventFilter(obj, event);
+ return AbstractViewInspector::eventFilter(obj, event);
}
-bool QDeclarativeViewInspector::leaveEvent(QEvent * /*event*/)
+bool QDeclarativeViewInspector::leaveEvent(QEvent *event)
{
- if (!designModeBehavior())
- return false;
data->clearHighlight();
- return true;
+ return AbstractViewInspector::leaveEvent(event);
}
bool QDeclarativeViewInspector::mousePressEvent(QMouseEvent *event)
{
- if (!designModeBehavior())
- return false;
data->cursorPos = event->pos();
- data->currentTool->mousePressEvent(event);
- return true;
+ return AbstractViewInspector::mousePressEvent(event);
}
bool QDeclarativeViewInspector::mouseMoveEvent(QMouseEvent *event)
{
- if (!designModeBehavior()) {
- data->clearEditorItems();
- return false;
- }
data->cursorPos = event->pos();
QList<QGraphicsItem*> selItems = data->selectableItems(event->pos());
if (!selItems.isEmpty()) {
- declarativeView()->setToolTip(data->currentTool->titleForItem(selItems.first()));
+ declarativeView()->setToolTip(currentTool()->titleForItem(selItems.first()));
} else {
declarativeView()->setToolTip(QString());
}
- if (event->buttons()) {
- data->currentTool->mouseMoveEvent(event);
- } else {
- data->currentTool->hoverMoveEvent(event);
- }
- return true;
+
+ return AbstractViewInspector::mouseMoveEvent(event);
}
bool QDeclarativeViewInspector::mouseReleaseEvent(QMouseEvent *event)
{
- if (!designModeBehavior())
- return false;
-
data->cursorPos = event->pos();
- data->currentTool->mouseReleaseEvent(event);
- return true;
-}
-
-bool QDeclarativeViewInspector::keyPressEvent(QKeyEvent *event)
-{
- if (!designModeBehavior())
- return false;
-
- data->currentTool->keyPressEvent(event);
- return true;
-}
-
-bool QDeclarativeViewInspector::keyReleaseEvent(QKeyEvent *event)
-{
- if (!designModeBehavior())
- return false;
-
- switch (event->key()) {
- case Qt::Key_V:
- changeTool(InspectorProtocol::SelectTool);
- break;
-// disabled because multiselection does not do anything useful without design mode
-// case Qt::Key_M:
-// changeTool(InspectorProtocol::SelectMarqueeTool);
-// break;
- case Qt::Key_I:
- changeTool(InspectorProtocol::ColorPickerTool);
- break;
- case Qt::Key_Z:
- changeTool(InspectorProtocol::ZoomTool);
- break;
- case Qt::Key_Space:
- setAnimationPaused(!animationPaused());
- break;
- default:
- break;
- }
-
- data->currentTool->keyReleaseEvent(event);
- return true;
+ return AbstractViewInspector::mouseReleaseEvent(event);
}
void QDeclarativeViewInspector::reparentQmlObject(QObject *object, QObject *newParent)
@@ -340,22 +237,6 @@ void QDeclarativeViewInspectorPrivate::_q_removeFromSelection(QObject *obj)
setSelectedItems(items);
}
-bool QDeclarativeViewInspector::mouseDoubleClickEvent(QMouseEvent * /*event*/)
-{
- if (!designModeBehavior())
- return false;
-
- return true;
-}
-
-bool QDeclarativeViewInspector::wheelEvent(QWheelEvent *event)
-{
- if (!designModeBehavior())
- return false;
- data->currentTool->wheelEvent(event);
- return true;
-}
-
void QDeclarativeViewInspectorPrivate::setSelectedItemsForTools(const QList<QGraphicsItem *> &items)
{
foreach (const QWeakPointer<QGraphicsObject> &obj, currentSelection) {
@@ -378,7 +259,7 @@ void QDeclarativeViewInspectorPrivate::setSelectedItemsForTools(const QList<QGra
}
}
- currentTool->updateSelectedItems();
+ q->currentTool()->updateSelectedItems();
}
void QDeclarativeViewInspectorPrivate::setSelectedItems(const QList<QGraphicsItem *> &items)
@@ -468,7 +349,6 @@ QList<QGraphicsItem*> QDeclarativeViewInspectorPrivate::selectableItems(
void QDeclarativeViewInspectorPrivate::changeToSingleSelectTool()
{
- currentToolMode = Constants::SelectionToolMode;
selectionTool->setRubberbandSelectionMode(false);
changeToSelectTool();
@@ -479,19 +359,18 @@ void QDeclarativeViewInspectorPrivate::changeToSingleSelectTool()
void QDeclarativeViewInspectorPrivate::changeToSelectTool()
{
- if (currentTool == selectionTool)
+ if (q->currentTool() == selectionTool)
return;
- currentTool->clear();
- currentTool = selectionTool;
- currentTool->clear();
- currentTool->updateSelectedItems();
+ q->currentTool()->clear();
+ q->setCurrentTool(selectionTool);
+ q->currentTool()->clear();
+ q->currentTool()->updateSelectedItems();
}
void QDeclarativeViewInspectorPrivate::changeToMarqueeSelectTool()
{
changeToSelectTool();
- currentToolMode = Constants::MarqueeSelectionToolMode;
selectionTool->setRubberbandSelectionMode(true);
emit q->marqueeSelectToolActivated();
@@ -500,10 +379,9 @@ void QDeclarativeViewInspectorPrivate::changeToMarqueeSelectTool()
void QDeclarativeViewInspectorPrivate::changeToZoomTool()
{
- currentToolMode = Constants::ZoomMode;
- currentTool->clear();
- currentTool = zoomTool;
- currentTool->clear();
+ q->currentTool()->clear();
+ q->setCurrentTool(zoomTool);
+ q->currentTool()->clear();
emit q->zoomToolActivated();
q->sendCurrentTool(Constants::ZoomMode);
@@ -511,13 +389,12 @@ void QDeclarativeViewInspectorPrivate::changeToZoomTool()
void QDeclarativeViewInspectorPrivate::changeToColorPickerTool()
{
- if (currentTool == colorPickerTool)
+ if (q->currentTool() == colorPickerTool)
return;
- currentToolMode = Constants::ColorPickerMode;
- currentTool->clear();
- currentTool = colorPickerTool;
- currentTool->clear();
+ q->currentTool()->clear();
+ q->setCurrentTool(colorPickerTool);
+ q->currentTool()->clear();
emit q->colorPickerActivated();
q->sendCurrentTool(Constants::ColorPickerMode);
diff --git a/src/plugins/qmltooling/qmldbg_inspector/qdeclarativeviewinspector.h b/src/plugins/qmltooling/qmldbg_inspector/qdeclarativeviewinspector.h
index c08ef54a46..3cd53ff22b 100644
--- a/src/plugins/qmltooling/qmldbg_inspector/qdeclarativeviewinspector.h
+++ b/src/plugins/qmltooling/qmldbg_inspector/qdeclarativeviewinspector.h
@@ -50,12 +50,9 @@
#include <QtCore/QScopedPointer>
#include <QtDeclarative/QDeclarativeView>
-QT_FORWARD_DECLARE_CLASS(QDeclarativeItem)
-QT_FORWARD_DECLARE_CLASS(QMouseEvent)
-QT_FORWARD_DECLARE_CLASS(QToolBar)
-
namespace QmlJSDebugger {
+class AbstractLiveEditTool;
class QDeclarativeViewInspectorPrivate;
class QDeclarativeViewInspector : public AbstractViewInspector
@@ -88,12 +85,8 @@ protected:
bool mousePressEvent(QMouseEvent *event);
bool mouseMoveEvent(QMouseEvent *event);
bool mouseReleaseEvent(QMouseEvent *event);
- bool keyPressEvent(QKeyEvent *event);
- bool keyReleaseEvent(QKeyEvent *keyEvent);
- bool mouseDoubleClickEvent(QMouseEvent *event);
- bool wheelEvent(QWheelEvent *event);
- void setSelectedItemsForTools(QList<QGraphicsItem *> items);
+ AbstractLiveEditTool *currentTool() const;
private:
Q_DISABLE_COPY(QDeclarativeViewInspector)
diff --git a/src/plugins/qmltooling/qmldbg_inspector/qdeclarativeviewinspector_p.h b/src/plugins/qmltooling/qmldbg_inspector/qdeclarativeviewinspector_p.h
index cd8d749c12..a6e6a3c45c 100644
--- a/src/plugins/qmltooling/qmldbg_inspector/qdeclarativeviewinspector_p.h
+++ b/src/plugins/qmltooling/qmldbg_inspector/qdeclarativeviewinspector_p.h
@@ -73,9 +73,6 @@ public:
QPointF cursorPos;
QList<QWeakPointer<QGraphicsObject> > currentSelection;
- Constants::DesignTool currentToolMode;
- AbstractLiveEditTool *currentTool;
-
LiveSelectionTool *selectionTool;
ZoomTool *zoomTool;
ColorPickerTool *colorPickerTool;
diff --git a/src/plugins/qmltooling/qmldbg_inspector/qmldbg_inspector.pro b/src/plugins/qmltooling/qmldbg_inspector/qmldbg_inspector.pro
index 9d717a076f..355395c294 100644
--- a/src/plugins/qmltooling/qmldbg_inspector/qmldbg_inspector.pro
+++ b/src/plugins/qmltooling/qmldbg_inspector/qmldbg_inspector.pro
@@ -25,7 +25,7 @@ SOURCES += \
editor/colorpickertool.cpp \
editor/qmltoolbar.cpp \
editor/toolbarcolorbox.cpp \
- sgabstracttool.cpp \
+ abstracttool.cpp \
sgviewinspector.cpp \
sgselectiontool.cpp
@@ -49,7 +49,7 @@ HEADERS += \
editor/colorpickertool.h \
editor/qmltoolbar.h \
editor/toolbarcolorbox.h \
- sgabstracttool.h \
+ abstracttool.h \
sgviewinspector.h \
sgselectiontool.h
diff --git a/src/plugins/qmltooling/qmldbg_inspector/sgselectiontool.cpp b/src/plugins/qmltooling/qmldbg_inspector/sgselectiontool.cpp
index 828e64a069..c233cf659e 100644
--- a/src/plugins/qmltooling/qmldbg_inspector/sgselectiontool.cpp
+++ b/src/plugins/qmltooling/qmldbg_inspector/sgselectiontool.cpp
@@ -86,7 +86,7 @@ static QSGItem *itemAt(QSGItem *item, const QPointF &pos, QSGItem *overlay)
SGSelectionTool::SGSelectionTool(SGViewInspector *inspector) :
- SGAbstractTool(inspector),
+ AbstractTool(inspector),
m_hoverHighlight(new QSGRectangle(inspector->overlay()))
{
m_hoverHighlight->border()->setColor(QColor(64, 128, 255));
@@ -100,9 +100,10 @@ void SGSelectionTool::leaveEvent(QEvent *)
void SGSelectionTool::hoverMoveEvent(QMouseEvent *event)
{
- QSGItem *root = inspector()->view()->rootItem();
+ SGViewInspector *sgInspector = static_cast<SGViewInspector*>(inspector());
+ QSGItem *root = sgInspector->view()->rootItem();
QPointF mappedPos = root->mapFromScene(event->pos());
- QSGItem *item = itemAt(root, mappedPos, inspector()->overlay());
+ QSGItem *item = itemAt(root, mappedPos, sgInspector->overlay());
if (!item || item == root) {
m_hoverHighlight->setVisible(false);
return;
diff --git a/src/plugins/qmltooling/qmldbg_inspector/sgselectiontool.h b/src/plugins/qmltooling/qmldbg_inspector/sgselectiontool.h
index 10a44289a8..f794691115 100644
--- a/src/plugins/qmltooling/qmldbg_inspector/sgselectiontool.h
+++ b/src/plugins/qmltooling/qmldbg_inspector/sgselectiontool.h
@@ -42,7 +42,7 @@
#ifndef SGSELECTIONTOOL_H
#define SGSELECTIONTOOL_H
-#include "sgabstracttool.h"
+#include "abstracttool.h"
#include <QtCore/QList>
@@ -50,7 +50,9 @@ QT_FORWARD_DECLARE_CLASS(QSGRectangle)
namespace QmlJSDebugger {
-class SGSelectionTool : public SGAbstractTool
+class SGViewInspector;
+
+class SGSelectionTool : public AbstractTool
{
Q_OBJECT
public:
diff --git a/src/plugins/qmltooling/qmldbg_inspector/sgviewinspector.cpp b/src/plugins/qmltooling/qmldbg_inspector/sgviewinspector.cpp
index 7a4eaf52a2..ec68ef9afa 100644
--- a/src/plugins/qmltooling/qmldbg_inspector/sgviewinspector.cpp
+++ b/src/plugins/qmltooling/qmldbg_inspector/sgviewinspector.cpp
@@ -42,8 +42,6 @@
#include "sgviewinspector.h"
#include "qdeclarativeinspectorprotocol.h"
-
-#include "sgabstracttool.h"
#include "sgselectiontool.h"
#include <QtDeclarative/private/qdeclarativeinspectorservice_p.h>
@@ -61,7 +59,6 @@ SGViewInspector::SGViewInspector(QSGView *view, QObject *parent) :
AbstractViewInspector(parent),
m_view(view),
m_overlay(new QSGItem),
- m_currentTool(0),
m_selectionTool(new SGSelectionTool(this)),
m_designMode(true)
{
@@ -75,7 +72,7 @@ SGViewInspector::SGViewInspector(QSGView *view, QObject *parent) :
m_overlay->setParentItem(root);
view->installEventFilter(this);
- m_currentTool = m_selectionTool;
+ setCurrentTool(m_selectionTool);
}
void SGViewInspector::changeCurrentObjects(const QList<QObject*> &objects)
@@ -118,7 +115,7 @@ void SGViewInspector::changeTool(InspectorProtocol::Tool tool)
emit marqueeSelectToolActivated();
break;
case InspectorProtocol::SelectTool:
- m_currentTool = m_selectionTool;
+ setCurrentTool(m_selectionTool);
emit selectToolActivated();
break;
case InspectorProtocol::ZoomTool:
@@ -180,104 +177,10 @@ void SGViewInspector::removeFromSelectedItems(QObject *object)
bool SGViewInspector::eventFilter(QObject *obj, QEvent *event)
{
- if (obj != m_view || !m_designMode)
+ if (obj != m_view)
return QObject::eventFilter(obj, event);
- switch (event->type()) {
- case QEvent::Leave:
- if (leaveEvent(event))
- return true;
- break;
- case QEvent::MouseButtonPress:
- if (mousePressEvent(static_cast<QMouseEvent*>(event)))
- return true;
- break;
- case QEvent::MouseMove:
- if (mouseMoveEvent(static_cast<QMouseEvent*>(event)))
- return true;
- break;
- case QEvent::MouseButtonRelease:
- if (mouseReleaseEvent(static_cast<QMouseEvent*>(event)))
- return true;
- break;
- case QEvent::KeyPress:
- if (keyPressEvent(static_cast<QKeyEvent*>(event)))
- return true;
- break;
- case QEvent::KeyRelease:
- if (keyReleaseEvent(static_cast<QKeyEvent*>(event)))
- return true;
- break;
- case QEvent::MouseButtonDblClick:
- if (mouseDoubleClickEvent(static_cast<QMouseEvent*>(event)))
- return true;
- break;
- case QEvent::Wheel:
- if (wheelEvent(static_cast<QWheelEvent*>(event)))
- return true;
- break;
- default:
- break;
- }
-
- return QObject::eventFilter(obj, event);
-}
-
-bool SGViewInspector::leaveEvent(QEvent *event)
-{
- m_currentTool->leaveEvent(event);
- return true;
-}
-
-bool SGViewInspector::mousePressEvent(QMouseEvent *event)
-{
- m_currentTool->mousePressEvent(event);
- return true;
-}
-
-bool SGViewInspector::mouseMoveEvent(QMouseEvent *event)
-{
- if (event->buttons()) {
- m_currentTool->mouseMoveEvent(event);
- } else {
- m_currentTool->hoverMoveEvent(event);
- }
- return true;
-}
-
-bool SGViewInspector::mouseReleaseEvent(QMouseEvent *event)
-{
- m_currentTool->mouseReleaseEvent(event);
- return true;
-}
-
-bool SGViewInspector::keyPressEvent(QKeyEvent *event)
-{
- m_currentTool->keyPressEvent(event);
- return true;
-}
-
-bool SGViewInspector::keyReleaseEvent(QKeyEvent *event)
-{
- switch (event->key()) {
- default:
- break;
- }
-
- m_currentTool->keyReleaseEvent(event);
- return true;
-}
-
-bool SGViewInspector::mouseDoubleClickEvent(QMouseEvent *event)
-{
- m_currentTool->mouseDoubleClickEvent(event);
- return true;
-}
-
-bool SGViewInspector::wheelEvent(QWheelEvent *event)
-{
- m_currentTool->wheelEvent(event);
- return true;
+ return AbstractViewInspector::eventFilter(obj, event);
}
} // namespace QmlJSDebugger
diff --git a/src/plugins/qmltooling/qmldbg_inspector/sgviewinspector.h b/src/plugins/qmltooling/qmldbg_inspector/sgviewinspector.h
index 6173c4942c..2a7cb6ce6e 100644
--- a/src/plugins/qmltooling/qmldbg_inspector/sgviewinspector.h
+++ b/src/plugins/qmltooling/qmldbg_inspector/sgviewinspector.h
@@ -47,17 +47,12 @@
#include <QtCore/QWeakPointer>
QT_BEGIN_NAMESPACE
-class QMouseEvent;
-class QKeyEvent;
-class QWheelEvent;
-
class QSGView;
class QSGItem;
QT_END_NAMESPACE
namespace QmlJSDebugger {
-class SGAbstractTool;
class SGSelectionTool;
class SGViewInspector : public AbstractViewInspector
@@ -86,18 +81,8 @@ private slots:
void removeFromSelectedItems(QObject *);
private:
- bool leaveEvent(QEvent *);
- bool mousePressEvent(QMouseEvent *event);
- bool mouseMoveEvent(QMouseEvent *event);
- bool mouseReleaseEvent(QMouseEvent *event);
- bool keyPressEvent(QKeyEvent *event);
- bool keyReleaseEvent(QKeyEvent *keyEvent);
- bool mouseDoubleClickEvent(QMouseEvent *event);
- bool wheelEvent(QWheelEvent *event);
-
QSGView *m_view;
QSGItem *m_overlay;
- SGAbstractTool *m_currentTool;
SGSelectionTool *m_selectionTool;