QmlObserver: Remove breadcrumb widget in observer mode

I wasn't able to get it working on Mac OS X: Putting it on top
of the QGraphicsView doesn't work because Cocoa doesn't allow a
widget to be on top of OpenGL viewport. Embedding it as a
QGraphicsProxyWidget produces lots of Cocoa warnings (raster engine related).

Anyhow, the same widget shows up in the Debugger/Observer tab of
Qt Creator.

Reviewed-by: Lasse Holmstedt
This commit is contained in:
Kai Koehne
2010-11-11 10:50:06 +01:00
parent 74f13467c1
commit 4201046b9b
13 changed files with 4 additions and 531 deletions
@@ -57,7 +57,6 @@
#include <qdeclarativeviewobserver.h>
#include <qdeclarativeobserverservice.h>
#include "crumblepath.h"
#include "qmlruntime.h"
#include <qdeclarativecontext.h>
#include <qdeclarativeengine.h>
@@ -534,32 +533,6 @@ QNetworkAccessManager *NetworkAccessManagerFactory::create(QObject *parent)
return manager;
}
//
// Event filter that ensures the crumble path width is always the canvas width
//
class CrumblePathResizer : public QObject
{
Q_OBJECT
public:
CrumblePathResizer(CrumblePath *crumblePathWidget, QObject *parent = 0) :
QObject(parent),
m_crumblePathWidget(crumblePathWidget)
{
}
bool eventFilter(QObject *obj, QEvent *event)
{
if (event->type() == QEvent::Resize) {
QResizeEvent *resizeEvent = static_cast<QResizeEvent *>(event);
m_crumblePathWidget->resize(resizeEvent->size().width(), m_crumblePathWidget->height());
}
return QObject::eventFilter(obj, event);
}
private:
QWidget *m_crumblePathWidget;
};
QString QDeclarativeViewer::getVideoFileName()
{
QString title = convertAvailable || ffmpegAvailable ? tr("Save Video File") : tr("Save PNG Frames");
@@ -582,7 +555,6 @@ QDeclarativeViewer::QDeclarativeViewer(QWidget *parent, Qt::WindowFlags flags)
, tester(0)
, useQmlFileBrowser(true)
, m_centralWidget(0)
, m_crumblePathWidget(0)
, translator(0)
{
QDeclarativeViewer::registerTypes();
@@ -620,18 +592,6 @@ QDeclarativeViewer::QDeclarativeViewer(QWidget *parent, Qt::WindowFlags flags)
canvas = new QDeclarativeView(this);
observer = new QmlJSDebugger::QDeclarativeViewObserver(canvas, this);
new QmlJSDebugger::JSDebuggerAgent(canvas->engine());
if (!(flags & Qt::FramelessWindowHint)) {
m_crumblePathWidget = new CrumblePath(canvas);
#ifndef Q_WS_MAC
m_crumblePathWidget->setStyleSheet("QWidget { border-bottom: 1px solid black; }");
#endif
m_crumblePathWidget->setVisible(observer->designModeBehavior());
// CrumblePath is not in a layout, so that it overlays the central widget
// The event filter ensures that its width stays in sync nevertheless
CrumblePathResizer *resizer = new CrumblePathResizer(m_crumblePathWidget, m_crumblePathWidget);
canvas->installEventFilter(resizer);
}
m_centralWidget = new QWidget(this);
QVBoxLayout *layout = new QVBoxLayout(m_centralWidget);
@@ -650,13 +610,6 @@ QDeclarativeViewer::QDeclarativeViewer(QWidget *parent, Qt::WindowFlags flags)
QObject::connect(observer, SIGNAL(reloadRequested()), this, SLOT(reload()));
QObject::connect(canvas, SIGNAL(sceneResized(QSize)), this, SLOT(sceneResized(QSize)));
QObject::connect(canvas, SIGNAL(statusChanged(QDeclarativeView::Status)), this, SLOT(statusChanged()));
if (m_crumblePathWidget) {
QObject::connect(observer, SIGNAL(inspectorContextCleared()), m_crumblePathWidget, SLOT(clear()));
QObject::connect(observer, SIGNAL(inspectorContextPushed(QString)), m_crumblePathWidget, SLOT(pushElement(QString)));
QObject::connect(observer, SIGNAL(inspectorContextPopped()), m_crumblePathWidget, SLOT(popElement()));
QObject::connect(m_crumblePathWidget, SIGNAL(elementClicked(int)), observer, SLOT(setObserverContext(int)));
QObject::connect(observer, SIGNAL(designModeBehaviorChanged(bool)), m_crumblePathWidget, SLOT(setVisible(bool)));
}
QObject::connect(canvas->engine(), SIGNAL(quit()), QCoreApplication::instance (), SLOT(quit()));
QObject::connect(warningsWidget(), SIGNAL(opened()), this, SLOT(warningsWidgetOpened()));