diff --git a/src/controller.cpp b/src/controller.cpp index 97e5fee..14a6e54 100644 --- a/src/controller.cpp +++ b/src/controller.cpp @@ -231,17 +231,7 @@ void RcxController::connectEditor(RcxEditor* editor) { TypePopupMode mode = TypePopupMode::FieldType; if (target == EditTarget::ArrayElementType) mode = TypePopupMode::ArrayElement; - else if (target == EditTarget::PointerTarget) { - // Primitive pointers (ptrDepth>0) should open FieldType with - // the base type selected and *//** preselected — not PointerTarget. - bool isPrimPtr = false; - if (nodeIdx >= 0 && nodeIdx < m_doc->tree.nodes.size()) { - const auto& n = m_doc->tree.nodes[nodeIdx]; - isPrimPtr = n.ptrDepth > 0 && n.refId == 0; - } - mode = isPrimPtr ? TypePopupMode::FieldType - : TypePopupMode::PointerTarget; - } + // PointerTarget is handled as FieldType — modifiers * / ** will be pre-selected showTypePopup(editor, mode, nodeIdx, globalPos); }); diff --git a/src/main.cpp b/src/main.cpp index 8ca1226..4f37574 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -1441,8 +1441,7 @@ QDockWidget* MainWindow::createTab(RcxDocument* doc) { splitter->setHandleWidth(1); auto* ctrl = new RcxController(doc, splitter); - QString title = doc->filePath.isEmpty() - ? rootName(doc->tree) : QFileInfo(doc->filePath).fileName(); + QString title = rootName(doc->tree); auto* dock = new QDockWidget(title, this); dock->setObjectName(QStringLiteral("DocDock_%1").arg(quintptr(dock), 0, 16)); dock->setFeatures(QDockWidget::DockWidgetClosable | @@ -1532,7 +1531,7 @@ QDockWidget* MainWindow::createTab(RcxDocument* doc) { dockGrip->hide(); // Swap title bar when floating/docking, show/hide border + grip - connect(dock, &QDockWidget::topLevelChanged, this, [dock, emptyTitleBar, floatTitleBar, dockBorder, dockGrip](bool floating) { + connect(dock, &QDockWidget::topLevelChanged, this, [this, dock, emptyTitleBar, floatTitleBar, dockBorder, dockGrip](bool floating) { dock->setTitleBarWidget(floating ? floatTitleBar : emptyTitleBar); if (floating) { dockBorder->setGeometry(0, 0, dock->width(), dock->height()); @@ -1544,6 +1543,8 @@ QDockWidget* MainWindow::createTab(RcxDocument* doc) { } else { dockBorder->hide(); dockGrip->hide(); + // Re-docking creates a new tab bar — reinstall pin/close buttons + QTimer::singleShot(0, this, [this]() { setupDockTabBars(); }); } }); dock->installEventFilter(new DockBorderFilter(dockBorder, dockGrip, dock)); @@ -1667,8 +1668,7 @@ QDockWidget* MainWindow::createTab(RcxDocument* doc) { auto it2 = m_tabs.find(dockGuard); if (it2 != m_tabs.end()) { updateAllRenderedPanes(*it2); - if (it2->doc->filePath.isEmpty()) - dockGuard->setWindowTitle(rootName(it2->doc->tree, it2->ctrl->viewRootId())); + dockGuard->setWindowTitle(rootName(it2->doc->tree, it2->ctrl->viewRootId())); } rebuildWorkspaceModel(); updateWindowTitle(); @@ -1684,8 +1684,7 @@ QDockWidget* MainWindow::createTab(RcxDocument* doc) { auto it2 = m_tabs.find(dockGuard); if (it2 != m_tabs.end()) { updateAllRenderedPanes(*it2); - if (it2->doc->filePath.isEmpty()) - dockGuard->setWindowTitle(rootName(it2->doc->tree, it2->ctrl->viewRootId())); + dockGuard->setWindowTitle(rootName(it2->doc->tree, it2->ctrl->viewRootId())); } updateWindowTitle(); rebuildWorkspaceModel(); @@ -2639,9 +2638,7 @@ void MainWindow::updateWindowTitle() { auto* activeDock = m_activeDocDock; if (activeDock && m_tabs.contains(activeDock)) { auto& tab = m_tabs[activeDock]; - QString name = tab.doc->filePath.isEmpty() - ? rootName(tab.doc->tree, tab.ctrl->viewRootId()) - : QFileInfo(tab.doc->filePath).fileName(); + QString name = rootName(tab.doc->tree, tab.ctrl->viewRootId()); if (tab.doc->modified) name += " *"; title = name + " - Reclass"; } else { @@ -3713,9 +3710,7 @@ void MainWindow::rebuildWorkspaceModel() { TabState& tab = it.value(); if (seenDocs.contains(tab.doc)) continue; // skip duplicate doc views seenDocs.insert(tab.doc); - QString name = tab.doc->filePath.isEmpty() - ? rootName(tab.doc->tree, tab.ctrl->viewRootId()) - : QFileInfo(tab.doc->filePath).fileName(); + QString name = rootName(tab.doc->tree, tab.ctrl->viewRootId()); tabs.append({ &tab.doc->tree, name, static_cast(it.key()) }); } rcx::buildProjectExplorer(m_workspaceModel, tabs); diff --git a/src/typeselectorpopup.cpp b/src/typeselectorpopup.cpp index f5b36ce..97b4865 100644 --- a/src/typeselectorpopup.cpp +++ b/src/typeselectorpopup.cpp @@ -415,9 +415,9 @@ TypeSelectorPopup::TypeSelectorPopup(QWidget* parent) return btn; }; - m_chipPrim = makeChip(QStringLiteral("P")); - m_chipTypes = makeChip(QStringLiteral("T")); - m_chipEnums = makeChip(QStringLiteral("E")); + m_chipPrim = makeChip(QStringLiteral("Built-in")); + m_chipTypes = makeChip(QStringLiteral("Types")); + m_chipEnums = makeChip(QStringLiteral("Enum")); m_chipPrim->setAccessibleName(QStringLiteral("Show primitives")); m_chipTypes->setAccessibleName(QStringLiteral("Show composites")); m_chipEnums->setAccessibleName(QStringLiteral("Show enums")); @@ -1080,9 +1080,9 @@ void TypeSelectorPopup::applyFilter(const QString& text) { auto updateChipLabel = [](QToolButton* btn, const QString& abbrev, int count) { btn->setText(QStringLiteral("%1 (%2)").arg(abbrev).arg(count)); }; - if (m_chipPrim) updateChipLabel(m_chipPrim, QStringLiteral("P"), primCount); - if (m_chipTypes) updateChipLabel(m_chipTypes, QStringLiteral("T"), typeCount); - if (m_chipEnums) updateChipLabel(m_chipEnums, QStringLiteral("E"), enumCount); + if (m_chipPrim) updateChipLabel(m_chipPrim, QStringLiteral("Built-in"), primCount); + if (m_chipTypes) updateChipLabel(m_chipTypes, QStringLiteral("Types"), typeCount); + if (m_chipEnums) updateChipLabel(m_chipEnums, QStringLiteral("Enum"), enumCount); if (m_statusLabel) m_statusLabel->setText(QStringLiteral("%1 results").arg(resultCount));