From eaafa6bd80fb38a8ae2dddf74bb83499fb2fb862 Mon Sep 17 00:00:00 2001 From: Ernie Pasveer Date: Mon, 2 Sep 2024 15:33:04 -0500 Subject: [PATCH] First try at handling size for detach. --- src/SeerConsoleWidget.cpp | 23 +++++++++++++++++++++++ src/SeerConsoleWidget.h | 2 ++ src/SeerGdbWidget.cpp | 3 +++ 3 files changed, 28 insertions(+) diff --git a/src/SeerConsoleWidget.cpp b/src/SeerConsoleWidget.cpp index 61be214..1376604 100644 --- a/src/SeerConsoleWidget.cpp +++ b/src/SeerConsoleWidget.cpp @@ -110,6 +110,20 @@ void SeerConsoleWidget::handleChangeWindowTitle (QString title) { } } +void SeerConsoleWidget::handleTabDetached (int tabIndex) { + qDebug() << tabIndex; + + QSettings settings; + + settings.beginGroup("consolewindow"); { + resize(settings.value("size", QSize(800, 600)).toSize()); + } settings.endGroup(); +} + +void SeerConsoleWidget::handleTabReattached (int tabIndex) { + qDebug() << tabIndex; +} + void SeerConsoleWidget::handleClearButton () { textEdit->clear(); } @@ -474,6 +488,15 @@ void SeerConsoleWidget::writeFontSettings() { void SeerConsoleWidget::writeSizeSettings() { + // If there's a parent, don't save the size. + // This means the console is attached in the + // tab bar and its size has been shrunk. We + // only want to save resizes if the console + // has been detached, ie: no parent. + if (parent() != 0) { + return; + } + QSettings settings; settings.beginGroup("consolewindow"); { diff --git a/src/SeerConsoleWidget.h b/src/SeerConsoleWidget.h index 8a1df40..53eadcc 100644 --- a/src/SeerConsoleWidget.h +++ b/src/SeerConsoleWidget.h @@ -31,6 +31,8 @@ class SeerConsoleWidget : public QWidget, protected Ui::SeerConsoleWidgetForm { public slots: void handleChangeWindowTitle (QString title); + void handleTabDetached (int tabIndex); + void handleTabReattached (int tabIndex); signals: void modeChanged (QString mode); diff --git a/src/SeerGdbWidget.cpp b/src/SeerGdbWidget.cpp index cbb7f84..dd12d9a 100644 --- a/src/SeerGdbWidget.cpp +++ b/src/SeerGdbWidget.cpp @@ -3231,6 +3231,9 @@ void SeerGdbWidget::createConsole () { _consoleIndex = logsTabWidget->addTab(_consoleWidget, "Console output"); + QObject::connect(logsTabWidget, &QDetachTabWidget::tabDetached, _consoleWidget, &SeerConsoleWidget::handleTabDetached); + QObject::connect(logsTabWidget, &QDetachTabWidget::tabReattached, _consoleWidget, &SeerConsoleWidget::handleTabReattached); + writeLogsSettings(); handleConsoleModeChanged(_consoleWidget->mode());