From 097b93ce9ce4d84ce25fedd7d7bab03c4b9a1ec7 Mon Sep 17 00:00:00 2001 From: baldurk Date: Fri, 11 Nov 2016 18:58:12 +0100 Subject: [PATCH] Default to deleting windows from ToolWindowManager when closed --- .../toolwindowmanager/ToolWindowManager.cpp | 7 ++++++- .../toolwindowmanager/ToolWindowManager.h | 2 ++ qrenderdoc/Windows/Dialogs/CaptureDialog.cpp | 17 +++++++---------- qrenderdoc/Windows/MainWindow.cpp | 12 ++++++------ qrenderdoc/Windows/TextureViewer.cpp | 1 + 5 files changed, 22 insertions(+), 17 deletions(-) diff --git a/qrenderdoc/3rdparty/toolwindowmanager/ToolWindowManager.cpp b/qrenderdoc/3rdparty/toolwindowmanager/ToolWindowManager.cpp index 9ccf09a16..ead52ff25 100644 --- a/qrenderdoc/3rdparty/toolwindowmanager/ToolWindowManager.cpp +++ b/qrenderdoc/3rdparty/toolwindowmanager/ToolWindowManager.cpp @@ -270,6 +270,7 @@ void ToolWindowManager::removeToolWindow(QWidget *toolWindow) { moveToolWindow(toolWindow, NoArea); m_toolWindows.removeOne(toolWindow); m_toolWindowProperties.remove(toolWindow); + delete toolWindow; } QWidget* ToolWindowManager::createToolWindow(const QString& objectName) @@ -790,7 +791,11 @@ void ToolWindowManager::tabCloseRequested(int index) { qWarning("unknown tab in tab widget"); return; } - hideToolWindow(toolWindow); + + if(toolWindowProperties(toolWindow) & ToolWindowManager::HideOnClose) + hideToolWindow(toolWindow); + else + removeToolWindow(toolWindow); } void ToolWindowManager::windowTitleChanged(const QString &title) { diff --git a/qrenderdoc/3rdparty/toolwindowmanager/ToolWindowManager.h b/qrenderdoc/3rdparty/toolwindowmanager/ToolWindowManager.h index 36fe5da58..4ea88079a 100644 --- a/qrenderdoc/3rdparty/toolwindowmanager/ToolWindowManager.h +++ b/qrenderdoc/3rdparty/toolwindowmanager/ToolWindowManager.h @@ -113,6 +113,8 @@ public: HideCloseButton = 0x2, //! Disable the user being able to drag this tab in the tab bar, to rearrange DisableDraggableTab = 0x4, + //! When the tool window is closed, hide it instead of removing it + HideOnClose = 0x8, }; //! Type of AreaReference. diff --git a/qrenderdoc/Windows/Dialogs/CaptureDialog.cpp b/qrenderdoc/Windows/Dialogs/CaptureDialog.cpp index 147a4a5e0..65f74f69d 100644 --- a/qrenderdoc/Windows/Dialogs/CaptureDialog.cpp +++ b/qrenderdoc/Windows/Dialogs/CaptureDialog.cpp @@ -165,6 +165,13 @@ CaptureDialog::CaptureDialog(CaptureContext *ctx, OnCaptureMethod captureCallbac CaptureDialog::~CaptureDialog() { + if(ui->toggleGlobal->isChecked()) + { + ui->toggleGlobal->setChecked(false); + + updateGlobalHook(); + } + delete ui; } @@ -504,16 +511,6 @@ void CaptureDialog::loadSettings(QString filename) } } -void CaptureDialog::closeEvent(QCloseEvent *event) -{ - if(ui->toggleGlobal->isChecked()) - { - ui->toggleGlobal->setChecked(false); - - updateGlobalHook(); - } -} - void CaptureDialog::updateGlobalHook() { ui->globalGroup->setVisible(!injectMode() && m_Ctx->Config.AllowGlobalHook); diff --git a/qrenderdoc/Windows/MainWindow.cpp b/qrenderdoc/Windows/MainWindow.cpp index 43eea8370..0d410c048 100644 --- a/qrenderdoc/Windows/MainWindow.cpp +++ b/qrenderdoc/Windows/MainWindow.cpp @@ -141,12 +141,12 @@ MainWindow::MainWindow(CaptureContext *ctx) : QMainWindow(NULL), ui(new Ui::Main // create default layout if layout failed to load if(!loaded) { - EventBrowser *eventBrowser = new EventBrowser(m_Ctx); + EventBrowser *eventBrowser = new EventBrowser(m_Ctx, this); eventBrowser->setObjectName("eventBrowser"); ui->toolWindowManager->addToolWindow(eventBrowser, ToolWindowManager::EmptySpace); - TextureViewer *textureViewer = new TextureViewer(m_Ctx); + TextureViewer *textureViewer = new TextureViewer(m_Ctx, this); textureViewer->setObjectName("textureViewer"); ui->toolWindowManager->addToolWindow( @@ -596,9 +596,9 @@ CaptureDialog *MainWindow::createCaptureDialog() m_Ctx, [this](const QString &exe, const QString &workingDir, const QString &cmdLine, const QList &env, - CaptureOptions opts) { this->OnCaptureTrigger(exe, workingDir, cmdLine, env, opts); }, + CaptureOptions opts) { return this->OnCaptureTrigger(exe, workingDir, cmdLine, env, opts); }, [this](uint32_t PID, const QList &env, const QString &name, - CaptureOptions opts) { this->OnInjectTrigger(PID, env, name, opts); }); + CaptureOptions opts) { return this->OnInjectTrigger(PID, env, name, opts); }, this); ret->setObjectName("capDialog"); return ret; } @@ -810,7 +810,7 @@ void MainWindow::on_action_Mesh_Output_triggered() void MainWindow::on_action_Event_Viewer_triggered() { - EventBrowser *eventBrowser = new EventBrowser(m_Ctx); + EventBrowser *eventBrowser = new EventBrowser(m_Ctx, this); eventBrowser->setObjectName("eventBrowser"); ui->toolWindowManager->addToolWindow(eventBrowser, ToolWindowManager::EmptySpace); @@ -818,7 +818,7 @@ void MainWindow::on_action_Event_Viewer_triggered() void MainWindow::on_action_Texture_Viewer_triggered() { - TextureViewer *textureViewer = new TextureViewer(m_Ctx); + TextureViewer *textureViewer = new TextureViewer(m_Ctx, this); textureViewer->setObjectName("textureViewer"); ui->toolWindowManager->addToolWindow(textureViewer, ToolWindowManager::EmptySpace); diff --git a/qrenderdoc/Windows/TextureViewer.cpp b/qrenderdoc/Windows/TextureViewer.cpp index e74a15bfc..7a7f7c5f3 100644 --- a/qrenderdoc/Windows/TextureViewer.cpp +++ b/qrenderdoc/Windows/TextureViewer.cpp @@ -3251,6 +3251,7 @@ void TextureViewer::on_texListShow_clicked() ui->textureListFrame, ToolWindowManager::AreaReference(ToolWindowManager::LeftOf, ui->dockarea->areaOf(ui->renderContainer), 0.2f)); + ui->dockarea->setToolWindowProperties(ui->textureListFrame, ToolWindowManager::HideOnClose); } }