From d2ed221b1bb483025064743777dda88338525eb8 Mon Sep 17 00:00:00 2001 From: Kai Koehne Date: Tue, 23 Nov 2010 10:07:09 +0100 Subject: [PATCH] QmlObserver: Add 'show app on top' switch to creator + qmlobserver This is convenient especially in the observer mode. Reviewed-by: Christiaan Janssen --- .../include/qdeclarativeobserverservice.h | 3 ++ .../include/qdeclarativeviewobserver.h | 5 +++ .../qdeclarativeobserverservice.cpp | 14 ++++++++ .../qdeclarativeviewobserver.cpp | 30 ++++++++++++++++++ .../qdeclarativeviewobserver_p.h | 1 + share/qtcreator/qml/qmlobserver/main.cpp | 1 + .../qtcreator/qml/qmlobserver/qmlruntime.cpp | 13 ++++++++ share/qtcreator/qml/qmlobserver/qmlruntime.h | 2 ++ .../qmljsinspector/images/app-on-top.png | Bin 0 -> 2902 bytes .../qmljsinspector/qmlinspectortoolbar.cpp | 26 +++++++++++++++ .../qmljsinspector/qmlinspectortoolbar.h | 6 ++++ .../qmljsinspector/qmljsclientproxy.cpp | 8 +++++ src/plugins/qmljsinspector/qmljsclientproxy.h | 2 ++ src/plugins/qmljsinspector/qmljsinspector.cpp | 12 ++++--- src/plugins/qmljsinspector/qmljsinspector.qrc | 1 + .../qmljsinspector/qmljsinspectorconstants.h | 1 + .../qmljsinspector/qmljsobserverclient.cpp | 21 ++++++++++++ .../qmljsinspector/qmljsobserverclient.h | 2 ++ 18 files changed, 144 insertions(+), 4 deletions(-) create mode 100644 src/plugins/qmljsinspector/images/app-on-top.png diff --git a/share/qtcreator/qml/qmljsdebugger/include/qdeclarativeobserverservice.h b/share/qtcreator/qml/qmljsdebugger/include/qdeclarativeobserverservice.h index 66084cd92c4..df4704fa83e 100644 --- a/share/qtcreator/qml/qmljsdebugger/include/qdeclarativeobserverservice.h +++ b/share/qtcreator/qml/qmljsdebugger/include/qdeclarativeobserverservice.h @@ -68,6 +68,8 @@ public: void setAnimationSpeed(qreal slowdownFactor); void setCurrentTool(QmlJSDebugger::Constants::DesignTool toolId); void reloaded(); + void setShowAppOnTop(bool showAppOnTop); + QString idStringForObject(QObject *obj) const; void sendMessage(const QByteArray &message); @@ -81,6 +83,7 @@ Q_SIGNALS: void currentObjectsChanged(const QList &objects); void designModeBehaviorChanged(bool inDesignMode); + void showAppOnTopChanged(bool showAppOnTop); void reloadRequested(); void selectToolRequested(); void selectMarqueeToolRequested(); diff --git a/share/qtcreator/qml/qmljsdebugger/include/qdeclarativeviewobserver.h b/share/qtcreator/qml/qmljsdebugger/include/qdeclarativeviewobserver.h index e8f3194a817..3a81119e341 100644 --- a/share/qtcreator/qml/qmljsdebugger/include/qdeclarativeviewobserver.h +++ b/share/qtcreator/qml/qmljsdebugger/include/qdeclarativeviewobserver.h @@ -61,10 +61,14 @@ public: static QString idStringForObject(QObject *obj); QRectF adjustToScreenBoundaries(const QRectF &boundingRectInSceneSpace); + bool showAppOnTop() const; + public Q_SLOTS: void setDesignModeBehavior(bool value); bool designModeBehavior(); + void setShowAppOnTop(bool appOnTop); + void changeAnimationSpeed(qreal slowdownFactor); void continueExecution(qreal slowdownFactor = 1.0f); void pauseExecution(); @@ -73,6 +77,7 @@ public Q_SLOTS: Q_SIGNALS: void designModeBehaviorChanged(bool inDesignMode); + void showAppOnTopChanged(bool showAppOnTop); void reloadRequested(); void marqueeSelectToolActivated(); void selectToolActivated(); diff --git a/share/qtcreator/qml/qmljsdebugger/qdeclarativeobserverservice.cpp b/share/qtcreator/qml/qmljsdebugger/qdeclarativeobserverservice.cpp index 114cd15cf6c..5b052119f9b 100644 --- a/share/qtcreator/qml/qmljsdebugger/qdeclarativeobserverservice.cpp +++ b/share/qtcreator/qml/qmljsdebugger/qdeclarativeobserverservice.cpp @@ -110,6 +110,10 @@ void QDeclarativeObserverService::messageReceived(const QByteArray &message) bool inDesignMode; ds >> inDesignMode; emit designModeBehaviorChanged(inDesignMode); + } else if (type == "SHOW_APP_ON_TOP") { + bool showOnTop; + ds >> showOnTop; + emit showAppOnTopChanged(showOnTop); } else if (type == "CREATE_OBJECT") { QString qml; int parentId; @@ -207,6 +211,16 @@ void QDeclarativeObserverService::reloaded() sendMessage(message); } +void QDeclarativeObserverService::setShowAppOnTop(bool showAppOnTop) +{ + QByteArray message; + QDataStream ds(&message, QIODevice::WriteOnly); + + ds << QByteArray("SHOW_APP_ON_TOP") << showAppOnTop; + + sendMessage(message); +} + void QDeclarativeObserverService::selectedColorChanged(const QColor &color) { QByteArray message; diff --git a/share/qtcreator/qml/qmljsdebugger/qdeclarativeviewobserver.cpp b/share/qtcreator/qml/qmljsdebugger/qdeclarativeviewobserver.cpp index 3949bf71378..7063bec07a8 100644 --- a/share/qtcreator/qml/qmljsdebugger/qdeclarativeviewobserver.cpp +++ b/share/qtcreator/qml/qmljsdebugger/qdeclarativeviewobserver.cpp @@ -57,6 +57,7 @@ const int SceneChangeUpdateInterval = 5000; QDeclarativeViewObserverPrivate::QDeclarativeViewObserverPrivate(QDeclarativeViewObserver *q) : q(q), designModeBehavior(false), + showAppOnTop(false), executionPaused(false), slowdownFactor(1.0f), toolbar(0) @@ -87,6 +88,8 @@ QDeclarativeViewObserver::QDeclarativeViewObserver(QDeclarativeView *view, QObje data->debugService = QDeclarativeObserverService::instance(); connect(data->debugService, SIGNAL(designModeBehaviorChanged(bool)), SLOT(setDesignModeBehavior(bool))); + connect(data->debugService, SIGNAL(showAppOnTopChanged(bool)), + SLOT(setShowAppOnTop(bool))); connect(data->debugService, SIGNAL(reloadRequested()), SLOT(_q_reloadView())); connect(data->debugService, SIGNAL(currentObjectsChanged(QList)), SLOT(_q_onCurrentObjectsChanged(QList))); @@ -475,6 +478,33 @@ bool QDeclarativeViewObserver::designModeBehavior() return data->designModeBehavior; } +bool QDeclarativeViewObserver::showAppOnTop() const +{ + return data->showAppOnTop; +} + +void QDeclarativeViewObserver::setShowAppOnTop(bool appOnTop) +{ + if (data->view) { + QWidget *rootWidget = data->view; + while (rootWidget->parentWidget()) + rootWidget = rootWidget->parentWidget(); + Qt::WindowFlags flags = rootWidget->windowFlags(); + if (appOnTop) { + flags |= Qt::WindowStaysOnTopHint; + } else { + flags &= ~Qt::WindowStaysOnTopHint; + } + rootWidget->setWindowFlags(flags); + rootWidget->show(); + } + + data->showAppOnTop = appOnTop; + data->debugService->setShowAppOnTop(appOnTop); + + emit showAppOnTopChanged(appOnTop); +} + void QDeclarativeViewObserverPrivate::changeTool(Constants::DesignTool tool, Constants::ToolFlags /*flags*/) { diff --git a/share/qtcreator/qml/qmljsdebugger/qdeclarativeviewobserver_p.h b/share/qtcreator/qml/qmljsdebugger/qdeclarativeviewobserver_p.h index 7236e862983..fafa3794b73 100644 --- a/share/qtcreator/qml/qmljsdebugger/qdeclarativeviewobserver_p.h +++ b/share/qtcreator/qml/qmljsdebugger/qdeclarativeviewobserver_p.h @@ -83,6 +83,7 @@ public: BoundingRectHighlighter *boundingRectHighlighter; bool designModeBehavior; + bool showAppOnTop; bool executionPaused; qreal slowdownFactor; diff --git a/share/qtcreator/qml/qmlobserver/main.cpp b/share/qtcreator/qml/qmlobserver/main.cpp index baa0fb948e8..86a8085cd0a 100644 --- a/share/qtcreator/qml/qmlobserver/main.cpp +++ b/share/qtcreator/qml/qmlobserver/main.cpp @@ -422,6 +422,7 @@ int main(int argc, char ** argv) viewer->enableExperimentalGestures(); viewer->setDesignModeBehavior(designModeBehavior); + viewer->setStayOnTop(stayOnTop); foreach (QString lib, imports) viewer->addLibraryPath(lib); diff --git a/share/qtcreator/qml/qmlobserver/qmlruntime.cpp b/share/qtcreator/qml/qmlobserver/qmlruntime.cpp index d35c18d4a96..03276350aea 100644 --- a/share/qtcreator/qml/qmlobserver/qmlruntime.cpp +++ b/share/qtcreator/qml/qmlobserver/qmlruntime.cpp @@ -755,6 +755,13 @@ void QDeclarativeViewer::createMenu() connect(observer, SIGNAL(designModeBehaviorChanged(bool)), designModeBehaviorAction, SLOT(setChecked(bool))); connect(QmlJSDebugger::QDeclarativeObserverService::instance(), SIGNAL(debuggingClientChanged(bool)), designModeBehaviorAction, SLOT(setEnabled(bool))); + appOnTopAction = new QAction(tr("Keep Window on Top"), this); + appOnTopAction->setCheckable(true); + appOnTopAction->setChecked(observer->showAppOnTop()); + + connect(appOnTopAction, SIGNAL(triggered(bool)), observer, SLOT(setShowAppOnTop(bool))); + connect(observer, SIGNAL(showAppOnTopChanged(bool)), appOnTopAction, SLOT(setChecked(bool))); + QAction *proxyAction = new QAction(tr("HTTP &Proxy..."), this); connect(proxyAction, SIGNAL(triggered()), this, SLOT(showProxySettings())); @@ -825,6 +832,7 @@ void QDeclarativeViewer::createMenu() debugMenu->addAction(playSpeedAction); debugMenu->addAction(showWarningsWindow); debugMenu->addAction(designModeBehaviorAction); + debugMenu->addAction(appOnTopAction); #endif // ! Q_OS_SYMBIAN QMenu *settingsMenu = menu->addMenu(tr("S&ettings")); @@ -1487,6 +1495,11 @@ void QDeclarativeViewer::setSizeToView(bool sizeToView) } } +void QDeclarativeViewer::setStayOnTop(bool stayOnTop) +{ + appOnTopAction->setChecked(stayOnTop); +} + void QDeclarativeViewer::setAnimationSpeed(float f) { QDeclarativeDebugHelper::setAnimationSlowDownFactor(f); diff --git a/share/qtcreator/qml/qmlobserver/qmlruntime.h b/share/qtcreator/qml/qmlobserver/qmlruntime.h index 7c30998dfc1..b09d1b879b8 100644 --- a/share/qtcreator/qml/qmlobserver/qmlruntime.h +++ b/share/qtcreator/qml/qmlobserver/qmlruntime.h @@ -107,6 +107,7 @@ public: void setUseGL(bool use); void setUseNativeFileBrowser(bool); void setSizeToView(bool sizeToView); + void setStayOnTop(bool stayOnTop); QDeclarativeView *view() const; LoggerWidget *warningsWidget() const; @@ -201,6 +202,7 @@ private: QActionGroup *orientation; QAction *showWarningsWindow; QAction *designModeBehaviorAction; + QAction *appOnTopAction; QString m_script; ScriptOptions m_scriptOptions; diff --git a/src/plugins/qmljsinspector/images/app-on-top.png b/src/plugins/qmljsinspector/images/app-on-top.png new file mode 100644 index 0000000000000000000000000000000000000000..ddec5400c699a8a15fb271976b53bda3cb834228 GIT binary patch literal 2902 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 literal 0 HcmV?d00001 diff --git a/src/plugins/qmljsinspector/qmlinspectortoolbar.cpp b/src/plugins/qmljsinspector/qmlinspectortoolbar.cpp index 6d828d82e81..0f91422577d 100644 --- a/src/plugins/qmljsinspector/qmlinspectortoolbar.cpp +++ b/src/plugins/qmljsinspector/qmlinspectortoolbar.cpp @@ -65,6 +65,7 @@ QmlInspectorToolbar::QmlInspectorToolbar(QObject *parent) : m_selectAction(0), m_zoomAction(0), m_colorPickerAction(0), + m_showAppOnTopAction(0), m_defaultAnimSpeedAction(0), m_halfAnimSpeedAction(0), m_fourthAnimSpeedAction(0), @@ -86,6 +87,7 @@ QmlInspectorToolbar::QmlInspectorToolbar(QObject *parent) : void QmlInspectorToolbar::setEnabled(bool value) { m_fromQmlAction->setEnabled(value); + m_showAppOnTopAction->setEnabled(value); m_observerModeAction->setEnabled(value); m_playAction->setEnabled(value); m_selectAction->setEnabled(value); @@ -166,6 +168,13 @@ void QmlInspectorToolbar::setDesignModeBehavior(bool inDesignMode) m_emitSignals = true; } +void QmlInspectorToolbar::setShowAppOnTop(bool showAppOnTop) +{ + m_emitSignals = false; + m_showAppOnTopAction->setChecked(showAppOnTop); + m_emitSignals = true; +} + void QmlInspectorToolbar::createActions(const Core::Context &context) { Core::ICore *core = Core::ICore::instance(); @@ -174,6 +183,9 @@ void QmlInspectorToolbar::createActions(const Core::Context &context) m_fromQmlAction = new QAction(QIcon(QLatin1String(":/qml/images/from-qml-small.png")), tr("Apply Changes on Save"), this); + m_showAppOnTopAction = + new QAction(QIcon(QLatin1String(":/qml/images/app-on-top.png")), + tr("Show application on top"), this); m_observerModeAction = new QAction(QIcon(QLatin1String(":/qml/images/observermode.png")), tr("Observer Mode"), this); @@ -191,6 +203,8 @@ void QmlInspectorToolbar::createActions(const Core::Context &context) m_fromQmlAction->setCheckable(true); m_fromQmlAction->setChecked(true); + m_showAppOnTopAction->setCheckable(true); + m_showAppOnTopAction->setChecked(false); m_observerModeAction->setCheckable(true); m_observerModeAction->setChecked(false); m_selectAction->setCheckable(true); @@ -203,6 +217,8 @@ void QmlInspectorToolbar::createActions(const Core::Context &context) am->registerAction(m_zoomAction, QmlJSInspector::Constants::ZOOM_ACTION, context); am->registerAction(m_colorPickerAction, QmlJSInspector::Constants::COLOR_PICKER_ACTION, context); am->registerAction(m_fromQmlAction, QmlJSInspector::Constants::FROM_QML_ACTION, context); + am->registerAction(m_showAppOnTopAction, + QmlJSInspector::Constants::SHOW_APP_ON_TOP_ACTION, context); m_barWidget = new Utils::StyledBar; m_barWidget->setSingleRow(true); @@ -250,6 +266,9 @@ void QmlInspectorToolbar::createActions(const Core::Context &context) configBarLayout->addWidget( createToolButton(am->command(QmlJSInspector::Constants::FROM_QML_ACTION)->action())); + configBarLayout->addWidget( + createToolButton( + am->command(QmlJSInspector::Constants::SHOW_APP_ON_TOP_ACTION)->action())); configBarLayout->addSpacing(10); configBarLayout->addWidget( @@ -277,6 +296,7 @@ void QmlInspectorToolbar::createActions(const Core::Context &context) setEnabled(false); connect(m_fromQmlAction, SIGNAL(triggered()), SLOT(activateFromQml())); + connect(m_showAppOnTopAction, SIGNAL(triggered()), SLOT(showAppOnTopClick())); connect(m_observerModeAction, SIGNAL(triggered()), SLOT(activateDesignModeOnClick())); connect(m_playAction, SIGNAL(triggered()), SLOT(activatePlayOnClick())); connect(m_colorPickerAction, SIGNAL(triggered()), SLOT(activateColorPickerOnClick())); @@ -404,6 +424,12 @@ void QmlInspectorToolbar::activateZoomOnClick() } } +void QmlInspectorToolbar::showAppOnTopClick() +{ + if (m_emitSignals) + emit showAppOnTopSelected(m_showAppOnTopAction->isChecked()); +} + void QmlInspectorToolbar::setSelectedColor(const QColor &color) { m_colorBox->setColor(color); diff --git a/src/plugins/qmljsinspector/qmlinspectortoolbar.h b/src/plugins/qmljsinspector/qmlinspectortoolbar.h index f643b451073..8252b11eae0 100644 --- a/src/plugins/qmljsinspector/qmlinspectortoolbar.h +++ b/src/plugins/qmljsinspector/qmlinspectortoolbar.h @@ -80,6 +80,7 @@ public slots: void activateZoomTool(); void setAnimationSpeed(qreal slowdownFactor); void setDesignModeBehavior(bool inDesignMode); + void setShowAppOnTop(bool showAppOnTop); void setSelectedColor(const QColor &color); signals: @@ -91,6 +92,7 @@ signals: void selectToolSelected(); void zoomToolSelected(); + void showAppOnTopSelected(bool isChecked); void animationSpeedChanged(qreal slowdownFactor = 1.0f); private slots: @@ -100,6 +102,8 @@ private slots: void activateSelectToolOnClick(); void activateZoomOnClick(); + void showAppOnTopClick(); + void changeToDefaultAnimSpeed(); void changeToHalfAnimSpeed(); void changeToFourthAnimSpeed(); @@ -119,6 +123,8 @@ private: QAction *m_zoomAction; QAction *m_colorPickerAction; + QAction *m_showAppOnTopAction; + QAction *m_defaultAnimSpeedAction; QAction *m_halfAnimSpeedAction; QAction *m_fourthAnimSpeedAction; diff --git a/src/plugins/qmljsinspector/qmljsclientproxy.cpp b/src/plugins/qmljsinspector/qmljsclientproxy.cpp index a26e15b8a63..26a5e46fdf5 100644 --- a/src/plugins/qmljsinspector/qmljsclientproxy.cpp +++ b/src/plugins/qmljsinspector/qmljsclientproxy.cpp @@ -89,6 +89,8 @@ void ClientProxy::connectToServer() SIGNAL(animationSpeedChanged(qreal))); connect(m_observerClient, SIGNAL(designModeBehaviorChanged(bool)), SIGNAL(designModeBehaviorChanged(bool))); + connect(m_observerClient, SIGNAL(showAppOnTopChanged(bool)), + SIGNAL(showAppOnTopChanged(bool))); connect(m_observerClient, SIGNAL(reloaded()), this, SIGNAL(serverReloaded())); connect(m_observerClient, SIGNAL(selectedColorChanged(QColor)), @@ -484,6 +486,12 @@ void ClientProxy::changeToSelectMarqueeTool() m_observerClient->changeToSelectMarqueeTool(); } +void ClientProxy::showAppOnTop(bool showOnTop) +{ + if (isConnected()) + m_observerClient->showAppOnTop(showOnTop); +} + void ClientProxy::createQmlObject(const QString &qmlText, int parentDebugId, const QStringList &imports, const QString &filename) { diff --git a/src/plugins/qmljsinspector/qmljsclientproxy.h b/src/plugins/qmljsinspector/qmljsclientproxy.h index 47e867863ab..50f9e4ad218 100644 --- a/src/plugins/qmljsinspector/qmljsclientproxy.h +++ b/src/plugins/qmljsinspector/qmljsclientproxy.h @@ -100,6 +100,7 @@ signals: void zoomToolActivated(); void animationSpeedChanged(qreal slowdownFactor); void designModeBehaviorChanged(bool inDesignMode); + void showAppOnTopChanged(bool showAppOnTop); void serverReloaded(); void selectedColorChanged(const QColor &color); void contextPathUpdated(const QStringList &contextPath); @@ -115,6 +116,7 @@ public slots: void changeToZoomTool(); void changeToSelectTool(); void changeToSelectMarqueeTool(); + void showAppOnTop(bool showOnTop); void createQmlObject(const QString &qmlText, int parentDebugId, const QStringList &imports, const QString &filename = QString()); void destroyQmlObject(int debugId); diff --git a/src/plugins/qmljsinspector/qmljsinspector.cpp b/src/plugins/qmljsinspector/qmljsinspector.cpp index a8690280dcf..a9bd4ea35a0 100644 --- a/src/plugins/qmljsinspector/qmljsinspector.cpp +++ b/src/plugins/qmljsinspector/qmljsinspector.cpp @@ -768,9 +768,9 @@ void InspectorUi::setupToolbar(bool doConnect) m_clientProxy, SLOT(changeToSelectTool())); connect(m_toolbar, SIGNAL(applyChangesFromQmlFileTriggered(bool)), this, SLOT(setApplyChangesToQmlObserver(bool))); + connect(m_toolbar, SIGNAL(showAppOnTopSelected(bool)), + m_clientProxy, SLOT(showAppOnTop(bool))); - connect(this, SIGNAL(livePreviewActivated(bool)), - m_toolbar, SLOT(setLivePreviewChecked(bool))); connect(m_clientProxy, SIGNAL(colorPickerActivated()), m_toolbar, SLOT(activateColorPicker())); connect(m_clientProxy, SIGNAL(selectToolActivated()), @@ -779,6 +779,8 @@ void InspectorUi::setupToolbar(bool doConnect) m_toolbar, SLOT(activateZoomTool())); connect(m_clientProxy, SIGNAL(designModeBehaviorChanged(bool)), m_toolbar, SLOT(setDesignModeBehavior(bool))); + connect(m_clientProxy, SIGNAL(showAppOnTopChanged(bool)), + m_toolbar, SLOT(setShowAppOnTop(bool))); connect(m_clientProxy, SIGNAL(selectedColorChanged(QColor)), m_toolbar, SLOT(setSelectedColor(QColor))); @@ -804,9 +806,9 @@ void InspectorUi::setupToolbar(bool doConnect) m_clientProxy, SLOT(changeToSelectTool())); disconnect(m_toolbar, SIGNAL(applyChangesFromQmlFileTriggered(bool)), this, SLOT(setApplyChangesToQmlObserver(bool))); + disconnect(m_toolbar, SIGNAL(showAppOnTopSelected(bool)), + m_clientProxy, SLOT(showAppOnTop(bool))); - disconnect(this, SIGNAL(livePreviewActivated(bool)), - m_toolbar, SLOT(setLivePreviewChecked(bool))); disconnect(m_clientProxy, SIGNAL(colorPickerActivated()), m_toolbar, SLOT(activateColorPicker())); disconnect(m_clientProxy, SIGNAL(selectToolActivated()), @@ -815,6 +817,8 @@ void InspectorUi::setupToolbar(bool doConnect) m_toolbar, SLOT(activateZoomTool())); disconnect(m_clientProxy, SIGNAL(designModeBehaviorChanged(bool)), m_toolbar, SLOT(setDesignModeBehavior(bool))); + disconnect(m_clientProxy, SIGNAL(showAppOnTopChanged(bool)), + m_toolbar, SLOT(setShowAppOnTop(bool))); disconnect(m_clientProxy, SIGNAL(selectedColorChanged(QColor)), m_toolbar, SLOT(setSelectedColor(QColor))); diff --git a/src/plugins/qmljsinspector/qmljsinspector.qrc b/src/plugins/qmljsinspector/qmljsinspector.qrc index 9881cc04982..f1e4ceb212e 100644 --- a/src/plugins/qmljsinspector/qmljsinspector.qrc +++ b/src/plugins/qmljsinspector/qmljsinspector.qrc @@ -19,5 +19,6 @@ images/select-marquee-small.png images/color-picker-small-hicontrast.png images/observermode.png + images/app-on-top.png diff --git a/src/plugins/qmljsinspector/qmljsinspectorconstants.h b/src/plugins/qmljsinspector/qmljsinspectorconstants.h index b5741b54744..ace17f09086 100644 --- a/src/plugins/qmljsinspector/qmljsinspectorconstants.h +++ b/src/plugins/qmljsinspector/qmljsinspectorconstants.h @@ -50,6 +50,7 @@ const char * const ZOOM_ACTION = "QmlInspector.Zoom"; const char * const COLOR_PICKER_ACTION = "QmlInspector.ColorPicker"; const char * const TO_QML_ACTION = "QmlInspector.ToQml"; const char * const FROM_QML_ACTION = "QmlInspector.FromQml"; +const char * const SHOW_APP_ON_TOP_ACTION = "QmlInspector.ShowAppOnTop"; // settings const char * const S_QML_INSPECTOR = "QML.Inspector"; diff --git a/src/plugins/qmljsinspector/qmljsobserverclient.cpp b/src/plugins/qmljsinspector/qmljsobserverclient.cpp index 2c63c719ce7..cb0a53a8f71 100644 --- a/src/plugins/qmljsinspector/qmljsobserverclient.cpp +++ b/src/plugins/qmljsinspector/qmljsobserverclient.cpp @@ -107,6 +107,10 @@ void QmlJSObserverClient::messageReceived(const QByteArray &message) bool inDesignMode; ds >> inDesignMode; emit designModeBehaviorChanged(inDesignMode); + } else if (type == "SHOW_APP_ON_TOP") { + bool showAppOnTop; + ds >> showAppOnTop; + emit showAppOnTopChanged(showAppOnTop); } else if (type == "RELOADED") { emit reloaded(); } else if (type == "COLOR_CHANGED") { @@ -337,6 +341,23 @@ void QmlJSObserverClient::changeToZoomTool() sendMessage(message); } +void QmlJSObserverClient::showAppOnTop(bool showOnTop) +{ + if (!m_connection || !m_connection->isConnected()) + return; + + QByteArray message; + QDataStream ds(&message, QIODevice::WriteOnly); + + ds << QByteArray("SHOW_APP_ON_TOP") + << showOnTop; + + if (debug) + qDebug() << "QmlJSObserverClient: Sending" <<"SHOWONTOP" << showOnTop; + + sendMessage(message); +} + void QmlJSObserverClient::createQmlObject(const QString &qmlText, int parentDebugId, const QStringList &imports, const QString &filename) { diff --git a/src/plugins/qmljsinspector/qmljsobserverclient.h b/src/plugins/qmljsinspector/qmljsobserverclient.h index 1e87bf94d3e..318ad8c50b9 100644 --- a/src/plugins/qmljsinspector/qmljsobserverclient.h +++ b/src/plugins/qmljsinspector/qmljsobserverclient.h @@ -62,6 +62,7 @@ public: void changeToSelectTool(); void changeToSelectMarqueeTool(); void changeToZoomTool(); + void showAppOnTop(bool showOnTop); void createQmlObject(const QString &qmlText, int parentDebugId, const QStringList &imports, const QString &filename); @@ -90,6 +91,7 @@ signals: void zoomToolActivated(); void animationSpeedChanged(qreal slowdownFactor); void designModeBehaviorChanged(bool inDesignMode); + void showAppOnTopChanged(bool showAppOnTop); void reloaded(); // the server has reloaded the document void contextPathUpdated(const QStringList &path);