diff options
author | Lasse Holmstedt <[email protected]> | 2010-07-28 14:18:48 +0200 |
---|---|---|
committer | Lasse Holmstedt <[email protected]> | 2010-07-28 15:46:01 +0200 |
commit | b04a4ddeb44a1bf728427621125cbb3046380649 (patch) | |
tree | 790a6d92cf55107c6d1c759e5ddff424424d31ef /src/tools/qml | |
parent | 31189a606463796edfc6ef963fb7ba4937987b9f (diff) |
Applied 07321dfceed41c1851781841e03c4148da47e41e to qmlobserver
Fixes issues with reloading freezing on Gnome
Diffstat (limited to 'src/tools/qml')
-rw-r--r-- | src/tools/qml/qmlobserver/qmlruntime.cpp | 101 | ||||
-rw-r--r-- | src/tools/qml/qmlobserver/qmlruntime.h | 6 |
2 files changed, 50 insertions, 57 deletions
diff --git a/src/tools/qml/qmlobserver/qmlruntime.cpp b/src/tools/qml/qmlobserver/qmlruntime.cpp index 1eb97d2b089..0e44675aec1 100644 --- a/src/tools/qml/qmlobserver/qmlruntime.cpp +++ b/src/tools/qml/qmlobserver/qmlruntime.cpp @@ -94,7 +94,6 @@ #include <QNetworkProxyFactory> #include <QKeyEvent> #include <QToolBar> -#include <QDockWidget> #include <QMutex> #include <QMutexLocker> #include "proxysettings.h" @@ -552,6 +551,7 @@ QDeclarativeViewer::QDeclarativeViewer(QWidget *parent, Qt::WindowFlags flags) , tester(0) , useQmlFileBrowser(true) , translator(0) + , m_splitter(0) { QDeclarativeViewer::registerTypes(); setWindowTitle(tr("Qt QML Viewer")); @@ -588,26 +588,19 @@ QDeclarativeViewer::QDeclarativeViewer(QWidget *parent, Qt::WindowFlags flags) canvas = new QmlViewer::QDeclarativeDesignView(this); addToolBar(Qt::TopToolBarArea, canvas->toolbar()); - QSplitter *crumblePathSplitter = new QSplitter(this); - crumblePathSplitter->setOrientation(Qt::Vertical); - crumblePathSplitter->addWidget(canvas->crumblePathWidget()); - crumblePathSplitter->addWidget(canvas); - crumblePathSplitter->setHandleWidth(1); - crumblePathSplitter->setCollapsible(0, false); - crumblePathSplitter->setCollapsible(1, false); - -// QDockWidget *crumblePathWidget = new QDockWidget("Context path", this); -// crumblePathWidget->setWidget(); -// crumblePathWidget->setAllowedAreas(Qt::TopDockWidgetArea); -// crumblePathWidget->setFeatures(QDockWidget::NoDockWidgetFeatures); -// crumblePathWidget->setTitleBarWidget(new QWidget(this)); -// crumblePathWidget->setMinimumHeight(24); -// crumblePathWidget->setMaximumHeight(24); - setDocumentMode(true); - setDockNestingEnabled(true); - - //addDockWidget(Qt::TopDockWidgetArea, crumblePathWidget); - + m_splitter = new QSplitter(this); + m_splitter->setOrientation(Qt::Vertical); + m_splitter->addWidget(canvas->crumblePathWidget()); + canvas->crumblePathWidget()->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Minimum); + m_splitter->addWidget(canvas); + m_splitter->setHandleWidth(1); + m_splitter->setStretchFactor(0, 0); + m_splitter->setStretchFactor(0, 1000); + m_splitter->setCollapsible(0, false); + m_splitter->setCollapsible(1, false); + m_splitter->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Expanding); + + //canvas->setSizePolicy(Qt:); canvas->setAttribute(Qt::WA_OpaquePaintEvent); canvas->setAttribute(Qt::WA_NoSystemBackground); @@ -628,7 +621,7 @@ QDeclarativeViewer::QDeclarativeViewer(QWidget *parent, Qt::WindowFlags flags) setMenuBar(0); } - setCentralWidget(crumblePathSplitter); + setCentralWidget(m_splitter); namFactory = new NetworkAccessManagerFactory; canvas->engine()->setNetworkAccessManagerFactory(namFactory); @@ -953,6 +946,7 @@ void QDeclarativeViewer::addPluginPath(const QString& plugin) void QDeclarativeViewer::reload() { + canvas->setDesignModeBehavior(false); open(currentFileOrUrl); } @@ -977,13 +971,7 @@ void QDeclarativeViewer::statusChanged() if (canvas->status() == QDeclarativeView::Ready) { initialSize = canvas->initialSize(); - if (canvas->resizeMode() == QDeclarativeView::SizeRootObjectToView) { - if (!isFullScreen() && !isMaximized()) { - canvas->setFixedSize(initialSize); - resize(1, 1); // workaround for QMainWindowLayout NOT shrinking the window if the centralWidget() shrink - QTimer::singleShot(0, this, SLOT(updateSizeHints())); - } - } + updateSizeHints(true); } } @@ -1108,13 +1096,9 @@ void QDeclarativeViewer::setRecordRate(int fps) record_rate = fps; } -void QDeclarativeViewer::sceneResized(QSize size) +void QDeclarativeViewer::sceneResized(QSize) { - if (size.width() > 0 && size.height() > 0) { - if (canvas->resizeMode() == QDeclarativeView::SizeViewToRootObject) { - updateSizeHints(); - } - } + updateSizeHints(); } void QDeclarativeViewer::keyPressEvent(QKeyEvent *event) @@ -1377,17 +1361,7 @@ void QDeclarativeViewer::changeOrientation(QAction *action) void QDeclarativeViewer::orientationChanged() { - if (canvas->resizeMode() == QDeclarativeView::SizeRootObjectToView) { - if (canvas->rootObject()) { - QSizeF rootObjectSize = canvas->rootObject()->boundingRect().size(); - if (size() != rootObjectSize.toSize()) { - canvas->setMinimumSize(rootObjectSize.toSize()); - canvas->resize(rootObjectSize.toSize()); - resize(rootObjectSize.toSize()); - resize(1, 1); // workaround for QMainWindowLayout NOT shrinking the window if the centralWidget() shrinks - } - } - } + updateSizeHints(); } void QDeclarativeViewer::setDeviceKeys(bool on) @@ -1436,22 +1410,37 @@ void QDeclarativeViewer::setSizeToView(bool sizeToView) } } -void QDeclarativeViewer::updateSizeHints() +void QDeclarativeViewer::updateSizeHints(bool initial) { - if (canvas->resizeMode() == QDeclarativeView::SizeViewToRootObject) { - QSize newWindowSize = canvas->sizeHint(); + static bool isRecursive = false; + + if (isRecursive) + return; + isRecursive = true; + + if (initial || (canvas->resizeMode() == QDeclarativeView::SizeViewToRootObject)) { + QSize newWindowSize = initial ? initialSize : canvas->sizeHint(); + //qWarning() << "USH:" << (initial ? "INIT:" : "V2R:") << "setting fixed size " << newWindowSize; if (!isFullScreen() && !isMaximized()) { - canvas->setMinimumSize(newWindowSize); - canvas->resize(newWindowSize); - resize(1, 1); // workaround for QMainWindowLayout NOT shrinking the window if the centralWidget() shrinks - canvas->setMinimumSize(QSize(0, 0)); + canvas->setFixedSize(newWindowSize); + resize(1, 1); + layout()->setSizeConstraint(QLayout::SetFixedSize); + layout()->activate(); + } - } else { // QDeclarativeView::SizeRootObjectToView - canvas->setMinimumSize(QSize(0,0)); - canvas->setMaximumSize(QSize(16777215,16777215)); } + //qWarning() << "USH: R2V: setting free size "; + layout()->setSizeConstraint(QLayout::SetNoConstraint); + layout()->activate(); + + setMaximumSize(QSize(QWIDGETSIZE_MAX, QWIDGETSIZE_MAX)); + canvas->setMinimumSize(QSize(0,0)); + canvas->setMaximumSize(QSize(QWIDGETSIZE_MAX, QWIDGETSIZE_MAX)); + + isRecursive = false; } + void QDeclarativeViewer::registerTypes() { static bool registered = false; diff --git a/src/tools/qml/qmlobserver/qmlruntime.h b/src/tools/qml/qmlobserver/qmlruntime.h index f0d0e294399..b4d9523e7ab 100644 --- a/src/tools/qml/qmlobserver/qmlruntime.h +++ b/src/tools/qml/qmlobserver/qmlruntime.h @@ -67,6 +67,7 @@ class NetworkAccessManagerFactory; class QTranslator; class QActionGroup; class QMenuBar; +class QSplitter; class QDeclarativeViewer : public QMainWindow @@ -151,9 +152,10 @@ private slots: void warningsWidgetOpened(); void warningsWidgetClosed(); - void updateSizeHints(); private: + void updateSizeHints(bool initial = false); + QString getVideoFileName(); LoggerWidget *loggerWindow; @@ -199,6 +201,8 @@ private: bool useQmlFileBrowser; + QSplitter *m_splitter; + QTranslator *translator; void loadTranslationFile(const QString& directory); |