History

Migrate tool window to overlay/QML

Brad Davis committed 10 years ago

Commit b6272b71 parent e8adcd937 files · +2303 −1684Browse files

Showing the changes to interface/src/scripting/WebWindowClass.cpp (1 of 37 files). Show all

Unified · Split

interface/src/scripting/WebWindowClass.cpp+24−46
@@ -9,6 +9,7 @@ · 8 unmodified lines
99 // See the accompanying file LICENSE or http://www.apache.org/licenses/LICENSE-2.0.html
1010 //
1111
12+
1213 #include <QVBoxLayout>
1314 #include <QApplication>
1415 #include <QMainWindow>
@@ -35,48 +36,25 @@ void ScriptEventBridge::emitScriptEvent(const QString& data) { · 20 unmodified lines
3536 emit scriptEventReceived(data);
3637 }
3738
38−WebWindowClass::WebWindowClass(const QString& title, const QString& url, int width, int height, bool isToolWindow)
39− : QObject(NULL),
40− _eventBridge(new ScriptEventBridge(this)),
41− _isToolWindow(isToolWindow) {
42−
43− if (_isToolWindow) {
44− ToolWindow* toolWindow = qApp->getToolWindow();
45−
46− auto dockWidget = new QDockWidget(title, toolWindow);
47− dockWidget->setFeatures(QDockWidget::DockWidgetMovable);
48− connect(dockWidget, &QDockWidget::visibilityChanged, this, &WebWindowClass::visibilityChanged);
49−
50− _webView = new QWebView(dockWidget);
51− addEventBridgeToWindowObject();
39+WebWindowClass::WebWindowClass(const QString& title, const QString& url, int width, int height)
40+ : QObject(NULL), _eventBridge(new ScriptEventBridge(this)) {
41+ auto dialogWidget = new QDialog(qApp->getWindow(), Qt::Window);
42+ dialogWidget->setWindowTitle(title);
43+ dialogWidget->resize(width, height);
44+ dialogWidget->installEventFilter(this);
45+ connect(dialogWidget, &QDialog::finished, this, &WebWindowClass::hasClosed);
5246
53− dockWidget->setWidget(_webView);
47+ auto layout = new QVBoxLayout(dialogWidget);
48+ layout->setContentsMargins(0, 0, 0, 0);
49+ dialogWidget->setLayout(layout);
5450
55− auto titleWidget = new QWidget(dockWidget);
56− dockWidget->setTitleBarWidget(titleWidget);
57−
58− toolWindow->addDockWidget(Qt::TopDockWidgetArea, dockWidget, Qt::Horizontal);
59−
60− _windowWidget = dockWidget;
61− } else {
62− auto dialogWidget = new QDialog(qApp->getWindow(), Qt::Window);
63− dialogWidget->setWindowTitle(title);
64− dialogWidget->resize(width, height);
65− dialogWidget->installEventFilter(this);
66− connect(dialogWidget, &QDialog::finished, this, &WebWindowClass::hasClosed);
51+ _webView = new QWebView(dialogWidget);
6752
68− auto layout = new QVBoxLayout(dialogWidget);
69− layout->setContentsMargins(0, 0, 0, 0);
70− dialogWidget->setLayout(layout);
53+ layout->addWidget(_webView);
7154
72− _webView = new QWebView(dialogWidget);
55+ addEventBridgeToWindowObject();
7356
74− layout->addWidget(_webView);
75−
76− addEventBridgeToWindowObject();
77−
78− _windowWidget = dialogWidget;
79− }
57+ _windowWidget = dialogWidget;
8058
8159 auto style = QStyleFactory::create("fusion");
8260 if (style) {
@@ -121,13 +99,8 @@ void WebWindowClass::addEventBridgeToWindowObject() { · 38 unmodified lines
12199
122100 void WebWindowClass::setVisible(bool visible) {
123101 if (visible) {
124− if (_isToolWindow) {
125− QMetaObject::invokeMethod(
126− qApp->getToolWindow(), "setVisible", Qt::AutoConnection, Q_ARG(bool, visible));
127− } else {
128− QMetaObject::invokeMethod(_windowWidget, "showNormal", Qt::AutoConnection);
129− QMetaObject::invokeMethod(_windowWidget, "raise", Qt::AutoConnection);
130− }
102+ QMetaObject::invokeMethod(_windowWidget, "showNormal", Qt::AutoConnection);
103+ QMetaObject::invokeMethod(_windowWidget, "raise", Qt::AutoConnection);
131104 }
132105 QMetaObject::invokeMethod(_windowWidget, "setVisible", Qt::AutoConnection, Q_ARG(bool, visible));
133106 }
@@ -182,13 +155,18 @@ void WebWindowClass::raise() { · 48 unmodified lines
182155 QScriptValue WebWindowClass::constructor(QScriptContext* context, QScriptEngine* engine) {
183156 WebWindowClass* retVal;
184157 QString file = context->argument(0).toString();
158+ if (context->argument(4).toBool()) {
159+ qWarning() << "ToolWindow views with WebWindow are no longer supported. Use OverlayWebWindow instead";
160+ return QScriptValue();
161+ } else {
162+ qWarning() << "WebWindow views are deprecated. Use OverlayWebWindow instead";
163+ }
185164 QMetaObject::invokeMethod(DependencyManager::get<WindowScriptingInterface>().data(), "doCreateWebWindow", Qt::BlockingQueuedConnection,
186165 Q_RETURN_ARG(WebWindowClass*, retVal),
187166 Q_ARG(const QString&, file),
188167 Q_ARG(QString, context->argument(1).toString()),
189168 Q_ARG(int, context->argument(2).toInteger()),
190− Q_ARG(int, context->argument(3).toInteger()),
191− Q_ARG(bool, context->argument(4).toBool()));
169+ Q_ARG(int, context->argument(3).toInteger()));
192170
193171 connect(engine, &QScriptEngine::destroyed, retVal, &WebWindowClass::deleteLater);
194172