diff --git a/interface/src/scripting/WebWindowClass.cpp b/interface/src/scripting/WebWindowClass.cpp index f9dc9e07ae..69523f5f9d 100644 --- a/interface/src/scripting/WebWindowClass.cpp +++ b/interface/src/scripting/WebWindowClass.cpp @@ -52,7 +52,10 @@ WebWindowClass::WebWindowClass(const QString& title, const QString& url, int wid dockWidget->setWidget(_webView); - toolWindow->addDockWidget(Qt::RightDockWidgetArea, dockWidget); + auto titleWidget = new QWidget(dockWidget); + dockWidget->setTitleBarWidget(titleWidget); + + toolWindow->addDockWidget(Qt::TopDockWidgetArea, dockWidget, Qt::Horizontal); _windowWidget = dockWidget; } else { diff --git a/interface/src/ui/ToolWindow.cpp b/interface/src/ui/ToolWindow.cpp index 95dd522415..aab64f9c7e 100644 --- a/interface/src/ui/ToolWindow.cpp +++ b/interface/src/ui/ToolWindow.cpp @@ -22,6 +22,8 @@ ToolWindow::ToolWindow(QWidget* parent) : _hasShown(false), _lastGeometry() { + setTabPosition(Qt::TopDockWidgetArea, QTabWidget::TabPosition::North); + # ifndef Q_OS_LINUX setDockOptions(QMainWindow::ForceTabbedDocks); # endif @@ -31,6 +33,7 @@ ToolWindow::ToolWindow(QWidget* parent) : bool ToolWindow::event(QEvent* event) { QEvent::Type type = event->type(); if (type == QEvent::Show) { + if (!_hasShown) { _hasShown = true; @@ -40,10 +43,12 @@ bool ToolWindow::event(QEvent* event) { int titleBarHeight = UIUtil::getWindowTitleBarHeight(this); int topMargin = titleBarHeight; - _lastGeometry = QRect(mainGeometry.topLeft().x(), mainGeometry.topLeft().y() + topMargin, - DEFAULT_WIDTH, mainGeometry.height() - topMargin); + _lastGeometry = QRect(mainGeometry.topLeft().x(), mainGeometry.topLeft().y() + topMargin, + DEFAULT_WIDTH, mainGeometry.height() - topMargin); } + setGeometry(_lastGeometry); + return true; } else if (type == QEvent::Hide) { _lastGeometry = geometry(); @@ -109,6 +114,7 @@ void ToolWindow::addDockWidget(Qt::DockWidgetArea area, QDockWidget* dockWidget) // We want to force tabbing, so retabify all of our widgets. QDockWidget* lastDockWidget = dockWidget; + foreach (QDockWidget* nextDockWidget, dockWidgets) { tabifyDockWidget(lastDockWidget, nextDockWidget); lastDockWidget = nextDockWidget; @@ -118,8 +124,17 @@ void ToolWindow::addDockWidget(Qt::DockWidgetArea area, QDockWidget* dockWidget) } void ToolWindow::addDockWidget(Qt::DockWidgetArea area, QDockWidget* dockWidget, Qt::Orientation orientation) { + QList dockWidgets = findChildren(); + QMainWindow::addDockWidget(area, dockWidget, orientation); + QDockWidget* lastDockWidget = dockWidget; + + foreach(QDockWidget* nextDockWidget, dockWidgets) { + tabifyDockWidget(lastDockWidget, nextDockWidget); + lastDockWidget = nextDockWidget; + } + connect(dockWidget, &QDockWidget::visibilityChanged, this, &ToolWindow::onChildVisibilityUpdated); }