From 1e1afc1640d18ae12d15c227705ddb33b7f8e357 Mon Sep 17 00:00:00 2001 From: Sen66 Date: Thu, 5 Mar 2026 19:47:18 +0100 Subject: [PATCH] fix: docking of 'project' window --- src/main.cpp | 30 +++++++++++++++++++++++++++--- 1 file changed, 27 insertions(+), 3 deletions(-) diff --git a/src/main.cpp b/src/main.cpp index 7f0a6f2..89d651e 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -472,6 +472,11 @@ MainWindow::MainWindow(QWidget* parent) : QMainWindow(parent) { m_centralPlaceholder->setSizePolicy(QSizePolicy::Ignored, QSizePolicy::Ignored); setCentralWidget(m_centralPlaceholder); setDockNestingEnabled(true); + // Give left/right docks full height (corners belong to left/right, not top/bottom) + setCorner(Qt::BottomLeftCorner, Qt::LeftDockWidgetArea); + setCorner(Qt::TopLeftCorner, Qt::LeftDockWidgetArea); + setCorner(Qt::BottomRightCorner, Qt::RightDockWidgetArea); + setCorner(Qt::TopRightCorner, Qt::RightDockWidgetArea); setTabPosition(Qt::TopDockWidgetArea, QTabWidget::North); createWorkspaceDock(); @@ -2620,6 +2625,10 @@ void MainWindow::importFromSource() { closeAllDocDocks(); createTab(doc); rebuildWorkspaceModel(); + if (!m_docDocks.isEmpty()) { + splitDockWidget(m_workspaceDock, m_docDocks.first(), Qt::Horizontal); + resizeDocks({m_workspaceDock}, {220}, Qt::Horizontal); + } m_workspaceDock->show(); setAppStatus(QStringLiteral("Imported %1 classes from source").arg(classCount)); } @@ -2670,6 +2679,10 @@ void MainWindow::importPdb() { closeAllDocDocks(); createTab(doc); rebuildWorkspaceModel(); + if (!m_docDocks.isEmpty()) { + splitDockWidget(m_workspaceDock, m_docDocks.first(), Qt::Horizontal); + resizeDocks({m_workspaceDock}, {220}, Qt::Horizontal); + } m_workspaceDock->show(); setAppStatus(QStringLiteral("Imported %1 classes from %2") .arg(classCount).arg(QFileInfo(pdbPath).fileName())); @@ -2861,7 +2874,11 @@ QDockWidget* MainWindow::project_open(const QString& path) { closeAllDocDocks(); auto* dock = createTab(doc); rebuildWorkspaceModel(); - m_workspaceDock->show(); + if (!m_docDocks.isEmpty()) { + splitDockWidget(m_workspaceDock, m_docDocks.first(), Qt::Horizontal); + resizeDocks({m_workspaceDock}, {220}, Qt::Horizontal); + } + m_workspaceDock->show(); int classCount = 0; for (const auto& n : doc->tree.nodes) if (n.parentId == 0 && n.kind == NodeKind::Struct) classCount++; @@ -2883,6 +2900,10 @@ QDockWidget* MainWindow::project_open(const QString& path) { auto* dock = createTab(doc); rebuildWorkspaceModel(); + if (!m_docDocks.isEmpty()) { + splitDockWidget(m_workspaceDock, m_docDocks.first(), Qt::Horizontal); + resizeDocks({m_workspaceDock}, {220}, Qt::Horizontal); + } m_workspaceDock->show(); addRecentFile(filePath); return dock; @@ -2929,7 +2950,7 @@ void MainWindow::closeAllDocDocks() { void MainWindow::createWorkspaceDock() { m_workspaceDock = new QDockWidget("Project", this); m_workspaceDock->setObjectName("WorkspaceDock"); - m_workspaceDock->setAllowedAreas(Qt::LeftDockWidgetArea | Qt::RightDockWidgetArea); + m_workspaceDock->setAllowedAreas(Qt::AllDockWidgetAreas); m_workspaceDock->setFeatures(QDockWidget::DockWidgetClosable | QDockWidget::DockWidgetMovable); // Custom titlebar: label + ✕ close button (matches MDI tab style) @@ -3142,8 +3163,11 @@ void MainWindow::createWorkspaceDock() { }); } + m_workspaceTree->setMinimumWidth(0); + m_workspaceSearch->setMinimumWidth(0); + dockContainer->setMinimumWidth(0); m_workspaceDock->setWidget(dockContainer); - addDockWidget(Qt::LeftDockWidgetArea, m_workspaceDock); + addDockWidget(Qt::TopDockWidgetArea, m_workspaceDock); m_workspaceDock->hide(); connect(m_workspaceTree, &QTreeView::doubleClicked, this, [this](const QModelIndex& index) {