mirror of
https://github.com/NohamR/Reclass.git
synced 2026-05-10 19:59:21 +00:00
fix: docking of 'project' window
This commit is contained in:
30
src/main.cpp
30
src/main.cpp
@@ -472,6 +472,11 @@ MainWindow::MainWindow(QWidget* parent) : QMainWindow(parent) {
|
|||||||
m_centralPlaceholder->setSizePolicy(QSizePolicy::Ignored, QSizePolicy::Ignored);
|
m_centralPlaceholder->setSizePolicy(QSizePolicy::Ignored, QSizePolicy::Ignored);
|
||||||
setCentralWidget(m_centralPlaceholder);
|
setCentralWidget(m_centralPlaceholder);
|
||||||
setDockNestingEnabled(true);
|
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);
|
setTabPosition(Qt::TopDockWidgetArea, QTabWidget::North);
|
||||||
|
|
||||||
createWorkspaceDock();
|
createWorkspaceDock();
|
||||||
@@ -2620,6 +2625,10 @@ void MainWindow::importFromSource() {
|
|||||||
closeAllDocDocks();
|
closeAllDocDocks();
|
||||||
createTab(doc);
|
createTab(doc);
|
||||||
rebuildWorkspaceModel();
|
rebuildWorkspaceModel();
|
||||||
|
if (!m_docDocks.isEmpty()) {
|
||||||
|
splitDockWidget(m_workspaceDock, m_docDocks.first(), Qt::Horizontal);
|
||||||
|
resizeDocks({m_workspaceDock}, {220}, Qt::Horizontal);
|
||||||
|
}
|
||||||
m_workspaceDock->show();
|
m_workspaceDock->show();
|
||||||
setAppStatus(QStringLiteral("Imported %1 classes from source").arg(classCount));
|
setAppStatus(QStringLiteral("Imported %1 classes from source").arg(classCount));
|
||||||
}
|
}
|
||||||
@@ -2670,6 +2679,10 @@ void MainWindow::importPdb() {
|
|||||||
closeAllDocDocks();
|
closeAllDocDocks();
|
||||||
createTab(doc);
|
createTab(doc);
|
||||||
rebuildWorkspaceModel();
|
rebuildWorkspaceModel();
|
||||||
|
if (!m_docDocks.isEmpty()) {
|
||||||
|
splitDockWidget(m_workspaceDock, m_docDocks.first(), Qt::Horizontal);
|
||||||
|
resizeDocks({m_workspaceDock}, {220}, Qt::Horizontal);
|
||||||
|
}
|
||||||
m_workspaceDock->show();
|
m_workspaceDock->show();
|
||||||
setAppStatus(QStringLiteral("Imported %1 classes from %2")
|
setAppStatus(QStringLiteral("Imported %1 classes from %2")
|
||||||
.arg(classCount).arg(QFileInfo(pdbPath).fileName()));
|
.arg(classCount).arg(QFileInfo(pdbPath).fileName()));
|
||||||
@@ -2861,7 +2874,11 @@ QDockWidget* MainWindow::project_open(const QString& path) {
|
|||||||
closeAllDocDocks();
|
closeAllDocDocks();
|
||||||
auto* dock = createTab(doc);
|
auto* dock = createTab(doc);
|
||||||
rebuildWorkspaceModel();
|
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;
|
int classCount = 0;
|
||||||
for (const auto& n : doc->tree.nodes)
|
for (const auto& n : doc->tree.nodes)
|
||||||
if (n.parentId == 0 && n.kind == NodeKind::Struct) classCount++;
|
if (n.parentId == 0 && n.kind == NodeKind::Struct) classCount++;
|
||||||
@@ -2883,6 +2900,10 @@ QDockWidget* MainWindow::project_open(const QString& path) {
|
|||||||
|
|
||||||
auto* dock = createTab(doc);
|
auto* dock = createTab(doc);
|
||||||
rebuildWorkspaceModel();
|
rebuildWorkspaceModel();
|
||||||
|
if (!m_docDocks.isEmpty()) {
|
||||||
|
splitDockWidget(m_workspaceDock, m_docDocks.first(), Qt::Horizontal);
|
||||||
|
resizeDocks({m_workspaceDock}, {220}, Qt::Horizontal);
|
||||||
|
}
|
||||||
m_workspaceDock->show();
|
m_workspaceDock->show();
|
||||||
addRecentFile(filePath);
|
addRecentFile(filePath);
|
||||||
return dock;
|
return dock;
|
||||||
@@ -2929,7 +2950,7 @@ void MainWindow::closeAllDocDocks() {
|
|||||||
void MainWindow::createWorkspaceDock() {
|
void MainWindow::createWorkspaceDock() {
|
||||||
m_workspaceDock = new QDockWidget("Project", this);
|
m_workspaceDock = new QDockWidget("Project", this);
|
||||||
m_workspaceDock->setObjectName("WorkspaceDock");
|
m_workspaceDock->setObjectName("WorkspaceDock");
|
||||||
m_workspaceDock->setAllowedAreas(Qt::LeftDockWidgetArea | Qt::RightDockWidgetArea);
|
m_workspaceDock->setAllowedAreas(Qt::AllDockWidgetAreas);
|
||||||
m_workspaceDock->setFeatures(QDockWidget::DockWidgetClosable | QDockWidget::DockWidgetMovable);
|
m_workspaceDock->setFeatures(QDockWidget::DockWidgetClosable | QDockWidget::DockWidgetMovable);
|
||||||
|
|
||||||
// Custom titlebar: label + ✕ close button (matches MDI tab style)
|
// 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);
|
m_workspaceDock->setWidget(dockContainer);
|
||||||
addDockWidget(Qt::LeftDockWidgetArea, m_workspaceDock);
|
addDockWidget(Qt::TopDockWidgetArea, m_workspaceDock);
|
||||||
m_workspaceDock->hide();
|
m_workspaceDock->hide();
|
||||||
|
|
||||||
connect(m_workspaceTree, &QTreeView::doubleClicked, this, [this](const QModelIndex& index) {
|
connect(m_workspaceTree, &QTreeView::doubleClicked, this, [this](const QModelIndex& index) {
|
||||||
|
|||||||
Reference in New Issue
Block a user