diff --git a/RedPandaIDE/mainwindow.cpp b/RedPandaIDE/mainwindow.cpp index 7b0f2d43..4327b68a 100644 --- a/RedPandaIDE/mainwindow.cpp +++ b/RedPandaIDE/mainwindow.cpp @@ -701,8 +701,8 @@ void MainWindow::applySettings() ui->menuGit->menuAction()->setVisible(pSettings->vcs().gitOk()); - openCloseExplorerPanel(!ui->tabExplorer->isShrinked()); - openCloseMessagesPanel(!ui->tabMessages->isShrinked()); + stretchExplorerPanel(!ui->tabExplorer->isShrinked()); + stretchMessagesPanel(!ui->tabMessages->isShrinked()); } void MainWindow::applyUISettings() @@ -1157,7 +1157,7 @@ void MainWindow::openProject(const QString &filename, bool openFiles) } ui->tabProject->setVisible(true); ui->tabExplorer->setCurrentWidget(ui->tabProject); - openCloseExplorerPanel(true); + stretchExplorerPanel(true); // { // LeftPageControl.ActivePage := LeftProjectSheet; // fLeftPageControlChanged := False; @@ -1517,7 +1517,7 @@ bool MainWindow::compile(bool rebuild) if (mCompileSuccessionTask) { mCompileSuccessionTask->filename = mProject->executable(); } - openCloseMessagesPanel(true); + stretchMessagesPanel(true); ui->tabMessages->setCurrentWidget(ui->tabToolsOutput); mCompilerManager->compileProject(mProject,rebuild); updateCompileActions(); @@ -1533,7 +1533,7 @@ bool MainWindow::compile(bool rebuild) if (mCompileSuccessionTask) { mCompileSuccessionTask->filename = getCompiledExecutableName(editor->filename()); } - openCloseMessagesPanel(true); + stretchMessagesPanel(true); ui->tabMessages->setCurrentWidget(ui->tabToolsOutput); mCompilerManager->compile(editor->filename(),editor->fileEncoding(),rebuild); updateCompileActions(); @@ -1593,7 +1593,7 @@ void MainWindow::runExecutable(const QString &exeName,const QString &filename,Ru if (problem) { mCompilerManager->runProblem(exeName,params,QFileInfo(exeName).absolutePath(), problem->cases); - openCloseMessagesPanel(true); + stretchMessagesPanel(true); ui->tabMessages->setCurrentWidget(ui->tabProblem); } } else if (runType == RunType::CurrentProblemCase) { @@ -1602,7 +1602,7 @@ void MainWindow::runExecutable(const QString &exeName,const QString &filename,Ru POJProblemCase problemCase =mOJProblemModel.getCase(index.row()); mCompilerManager->runProblem(exeName,params,QFileInfo(exeName).absolutePath(), problemCase); - openCloseMessagesPanel(true); + stretchMessagesPanel(true); ui->tabMessages->setCurrentWidget(ui->tabProblem); } } @@ -1867,7 +1867,7 @@ void MainWindow::debug() void MainWindow::showSearchPanel(bool showReplace) { - openCloseMessagesPanel(true); + stretchMessagesPanel(true); showSearchReplacePanel(showReplace); ui->tabMessages->setCurrentWidget(ui->tabSearch); } @@ -1890,7 +1890,7 @@ static void setDockMovable(QDockWidget* dock, bool movable) { } } -void MainWindow::openCloseMessagesPanel(bool open) +void MainWindow::stretchMessagesPanel(bool open) { //ui->dockMessages->setVisible(open); ui->tabMessages->setShrinked(!open); @@ -1903,7 +1903,7 @@ void MainWindow::openCloseMessagesPanel(bool open) } -void MainWindow::openCloseExplorerPanel(bool open) +void MainWindow::stretchExplorerPanel(bool open) { ui->tabExplorer->setShrinked(!open); if (open) { @@ -1932,8 +1932,8 @@ void MainWindow::prepareDebugger() ui->tabExplorer->setCurrentWidget(ui->tabWatch); ui->tabMessages->setCurrentWidget(ui->tabDebug); ui->debugViews->setCurrentWidget(ui->tabLocals); - openCloseMessagesPanel(true); - openCloseExplorerPanel(true); + stretchMessagesPanel(true); + stretchExplorerPanel(true); // Reset watch vars // mDebugger->deleteWatchVars(false); @@ -2690,11 +2690,11 @@ void MainWindow::buildEncodingMenu() void MainWindow::maximizeEditor() { if (ui->tabExplorer->isShrinked() && ui->tabExplorer->isShrinked()) { - openCloseMessagesPanel(true); - openCloseExplorerPanel(true); + stretchMessagesPanel(true); + stretchExplorerPanel(true); } else { - openCloseMessagesPanel(false); - openCloseExplorerPanel(false); + stretchMessagesPanel(false); + stretchExplorerPanel(false); } } @@ -3181,7 +3181,7 @@ void MainWindow::onProblemSetIndexChanged(const QModelIndex ¤t, const QMod } else { onProblemCaseIndexChanged(QModelIndex(),QModelIndex()); } - openCloseMessagesPanel(true); + stretchMessagesPanel(true); ui->tabMessages->setCurrentWidget(ui->tabProblem); ui->tabProblem->setEnabled(true); ui->btnOpenProblemAnswer->setEnabled(!problem->answerProgram.isEmpty()); @@ -4138,7 +4138,7 @@ void MainWindow::updateProjectView() } else mProjectProxyModel->invalidate(); ui->projectView->expandAll(); - openCloseExplorerPanel(true); + stretchExplorerPanel(true); ui->tabProject->setVisible(true); ui->tabExplorer->setCurrentWidget(ui->tabProject); } else { @@ -4567,12 +4567,12 @@ void MainWindow::onCompileFinished(bool isCheckSyntax) } else if (ui->tableIssues->count() == 0) { // Close it if there's nothing to show if (ui->tabMessages->currentIndex() == i) - openCloseMessagesPanel(false); + stretchMessagesPanel(false); } else { if (ui->tabMessages->currentIndex() != i) { ui->tabMessages->setCurrentIndex(i); } - openCloseMessagesPanel(true); + stretchMessagesPanel(true); } Editor * e = mEditorList->getEditor(); @@ -4915,9 +4915,9 @@ void MainWindow::on_actionConvert_to_UTF_8_triggered() void MainWindow::on_tabMessages_tabBarClicked(int index) { if (index == ui->tabMessages->currentIndex() && !ui->tabMessages->isShrinked()) { - openCloseMessagesPanel(false); + stretchMessagesPanel(false); } else { - openCloseMessagesPanel(true); + stretchMessagesPanel(true); } } @@ -5340,9 +5340,9 @@ void MainWindow::on_actionForward_triggered() void MainWindow::on_tabExplorer_tabBarClicked(int index) { if (index == ui->tabExplorer->currentIndex() && !ui->tabExplorer->isShrinked()) { - openCloseExplorerPanel(false); + stretchExplorerPanel(false); } else { - openCloseExplorerPanel(true); + stretchExplorerPanel(true); } } @@ -6468,7 +6468,7 @@ void MainWindow::on_btnReplace_clicked() editor->setSelText(contents.join(editor->lineBreak())); } showSearchReplacePanel(false); - openCloseMessagesPanel(false); + stretchMessagesPanel(false); } void MainWindow::on_btnCancelReplace_clicked() @@ -6665,7 +6665,7 @@ void MainWindow::on_actionLocate_in_Files_View_triggered() ui->treeFiles->setCurrentIndex(index); ui->treeFiles->scrollTo(index, QAbstractItemView::PositionAtCenter); ui->tabExplorer->setCurrentWidget(ui->tabFiles); - openCloseExplorerPanel(true); + stretchExplorerPanel(true); } } diff --git a/RedPandaIDE/mainwindow.h b/RedPandaIDE/mainwindow.h index 0c7c1843..667d0bec 100644 --- a/RedPandaIDE/mainwindow.h +++ b/RedPandaIDE/mainwindow.h @@ -232,8 +232,8 @@ private: void updateProjectView(); CompileTarget getCompileTarget(); bool debugInferiorhasBreakpoint(); - void openCloseMessagesPanel(bool open); - void openCloseExplorerPanel(bool open); + void stretchMessagesPanel(bool open); + void stretchExplorerPanel(bool open); void prepareDebugger(); void doAutoSave(Editor *e); void buildContextMenus(); diff --git a/RedPandaIDE/widgets/shrinkabletabwidget.cpp b/RedPandaIDE/widgets/shrinkabletabwidget.cpp index 2329716e..62f55630 100644 --- a/RedPandaIDE/widgets/shrinkabletabwidget.cpp +++ b/RedPandaIDE/widgets/shrinkabletabwidget.cpp @@ -17,6 +17,7 @@ #include "shrinkabletabwidget.h" #include #include +#include QHash ShrinkableTabWidget::BeforeShrinkSizes; @@ -132,3 +133,10 @@ QSize ShrinkableTabWidget::minimumSizeHint() const } return size; } + +void ShrinkableTabWidget::resizeEvent(QResizeEvent *event) +{ + QTabWidget::resizeEvent(event); + if (!isShrinked()) + setBeforeShrinkSize(event->size()); +} diff --git a/RedPandaIDE/widgets/shrinkabletabwidget.h b/RedPandaIDE/widgets/shrinkabletabwidget.h index aa5e68d1..13e3dd9f 100644 --- a/RedPandaIDE/widgets/shrinkabletabwidget.h +++ b/RedPandaIDE/widgets/shrinkabletabwidget.h @@ -42,6 +42,10 @@ public: private: bool mShrinked; static QHash BeforeShrinkSizes; + + // QWidget interface +protected: + void resizeEvent(QResizeEvent *event) override; }; #endif // SHRINKABLETABWIDGET_H