From adaa4a81ea23ce2a4c5ed1ca5d0fcdbd81f33b08 Mon Sep 17 00:00:00 2001 From: Ernie Pasveer Date: Mon, 2 Sep 2024 16:06:07 -0500 Subject: [PATCH] Handle console detach with saved size. --- src/SeerConsoleWidget.cpp | 18 ++++++++++++------ src/SeerConsoleWidget.h | 4 ++-- src/SeerGdbWidget.cpp | 7 ++++--- 3 files changed, 18 insertions(+), 11 deletions(-) diff --git a/src/SeerConsoleWidget.cpp b/src/SeerConsoleWidget.cpp index 1376604..7a9d46f 100644 --- a/src/SeerConsoleWidget.cpp +++ b/src/SeerConsoleWidget.cpp @@ -110,9 +110,14 @@ void SeerConsoleWidget::handleChangeWindowTitle (QString title) { } } -void SeerConsoleWidget::handleTabDetached (int tabIndex) { - qDebug() << tabIndex; +void SeerConsoleWidget::handleTabDetached (QWidget* widget) { + if (widget != (QWidget*)this) { + return; + } + + // Resize the detached console with the size from + // the settings. QSettings settings; settings.beginGroup("consolewindow"); { @@ -120,8 +125,9 @@ void SeerConsoleWidget::handleTabDetached (int tabIndex) { } settings.endGroup(); } -void SeerConsoleWidget::handleTabReattached (int tabIndex) { - qDebug() << tabIndex; +void SeerConsoleWidget::handleTabReattached (QWidget* widget) { + // Do nothing for now. + Q_UNUSED(widget); } void SeerConsoleWidget::handleClearButton () { @@ -226,11 +232,11 @@ void SeerConsoleWidget::handleStdoutCheckBox () { // If stdout is not valid, don't set it. if (fcntl(STDOUT_FILENO, F_GETFD) == -1) { - QMessageBox::critical(this, tr("Error"), tr("stdout is not valid.")); + QMessageBox::critical(this, tr("Error"), tr("stdout file descriptor is not valid.\nDisabling writing to stdout.")); - stdoutCheckBox->setChecked(false); enableStdout(false); writeSettings(); + return; } // All good to write to stdout diff --git a/src/SeerConsoleWidget.h b/src/SeerConsoleWidget.h index 53eadcc..1a4d7c5 100644 --- a/src/SeerConsoleWidget.h +++ b/src/SeerConsoleWidget.h @@ -31,8 +31,8 @@ class SeerConsoleWidget : public QWidget, protected Ui::SeerConsoleWidgetForm { public slots: void handleChangeWindowTitle (QString title); - void handleTabDetached (int tabIndex); - void handleTabReattached (int tabIndex); + void handleTabDetached (QWidget* widget); + void handleTabReattached (QWidget* widget); signals: void modeChanged (QString mode); diff --git a/src/SeerGdbWidget.cpp b/src/SeerGdbWidget.cpp index dd12d9a..52805fb 100644 --- a/src/SeerGdbWidget.cpp +++ b/src/SeerGdbWidget.cpp @@ -3229,10 +3229,11 @@ void SeerGdbWidget::createConsole () { // Connect window title changes. QObject::connect(this, &SeerGdbWidget::changeWindowTitle, _consoleWidget, &SeerConsoleWidget::handleChangeWindowTitle); - _consoleIndex = logsTabWidget->addTab(_consoleWidget, "Console output"); + // The console needs to know when it's detached or reattached. + QObject::connect(logsTabWidget, qOverload(&QDetachTabWidget::tabDetached), _consoleWidget, &SeerConsoleWidget::handleTabDetached); + QObject::connect(logsTabWidget, qOverload(&QDetachTabWidget::tabReattached), _consoleWidget, &SeerConsoleWidget::handleTabReattached); - QObject::connect(logsTabWidget, &QDetachTabWidget::tabDetached, _consoleWidget, &SeerConsoleWidget::handleTabDetached); - QObject::connect(logsTabWidget, &QDetachTabWidget::tabReattached, _consoleWidget, &SeerConsoleWidget::handleTabReattached); + _consoleIndex = logsTabWidget->addTab(_consoleWidget, "Console output"); writeLogsSettings();