From 85aeef9384bab8868e1732cd88d46e2c7c18bcd9 Mon Sep 17 00:00:00 2001 From: wmayer Date: Sat, 8 Feb 2020 14:52:28 +0100 Subject: [PATCH] Gui: ComboView always must be created because it includes the task view. --- src/Gui/ComboView.cpp | 49 ++++++++++++++++++++++++++---------------- src/Gui/ComboView.h | 7 +++--- src/Gui/MainWindow.cpp | 10 ++++----- 3 files changed, 38 insertions(+), 28 deletions(-) diff --git a/src/Gui/ComboView.cpp b/src/Gui/ComboView.cpp index 3c5bfd81bf..3a2d9bac4a 100644 --- a/src/Gui/ComboView.cpp +++ b/src/Gui/ComboView.cpp @@ -44,8 +44,11 @@ using namespace Gui::DockWnd; /* TRANSLATOR Gui::DockWnd::ComboView */ -ComboView::ComboView(Gui::Document* pcDocument, QWidget *parent) - : DockWindow(pcDocument,parent), oldTabIndex(0) +ComboView::ComboView(bool showModel, Gui::Document* pcDocument, QWidget *parent) + : DockWindow(pcDocument,parent) + , oldTabIndex(0) + , modelIndex(-1) + , taskIndex(-1) { setWindowTitle(tr("Combo View")); @@ -59,21 +62,23 @@ ComboView::ComboView(Gui::Document* pcDocument, QWidget *parent) tabs->setTabPosition(QTabWidget::North); pLayout->addWidget( tabs, 0, 0 ); - // splitter between tree and property view - QSplitter *splitter = new QSplitter(); - splitter->setOrientation(Qt::Vertical); + if (showModel) { + // splitter between tree and property view + QSplitter *splitter = new QSplitter(); + splitter->setOrientation(Qt::Vertical); - tree = new TreePanel("ComboView", this); - splitter->addWidget(tree); + tree = new TreePanel("ComboView", this); + splitter->addWidget(tree); - // property view - prop = new PropertyView(this); - splitter->addWidget(prop); - tabs->addTab(splitter,trUtf8("Model")); + // property view + prop = new PropertyView(this); + splitter->addWidget(prop); + modelIndex = tabs->addTab(splitter,trUtf8("Model")); + } // task panel taskPanel = new Gui::TaskView::TaskView(this); - tabs->addTab(taskPanel, trUtf8("Tasks")); + taskIndex = tabs->addTab(taskPanel, trUtf8("Tasks")); // task panel //projectView = new Gui::ProjectWidget(this); @@ -90,10 +95,16 @@ void ComboView::showDialog(Gui::TaskView::TaskDialog *dlg) // switch to the TaskView tab oldTabIndex = tabs->currentIndex(); - tabs->setCurrentIndex(1); - tabs->setTabIcon(1, icon); + tabs->setCurrentIndex(taskIndex); + tabs->setTabIcon(taskIndex, icon); // set the dialog taskPanel->showDialog(dlg); + + // force to show the combo view + if (modelIndex < 0) { + if (parentWidget()) + parentWidget()->raise(); + } } void ComboView::closeDialog() @@ -108,26 +119,26 @@ void ComboView::closedDialog() // dialog has been closed tabs->setCurrentIndex(oldTabIndex); - tabs->setTabIcon(1, icon); + tabs->setTabIcon(taskIndex, icon); } void ComboView::showTreeView() { // switch to the tree view - tabs->setCurrentIndex(0); + tabs->setCurrentIndex(modelIndex); } void ComboView::showTaskView() { // switch to the task view - tabs->setCurrentIndex(1); + tabs->setCurrentIndex(taskIndex); } void ComboView::changeEvent(QEvent *e) { if (e->type() == QEvent::LanguageChange) { - tabs->setTabText(0, trUtf8("Model")); - tabs->setTabText(1, trUtf8("Tasks")); + tabs->setTabText(modelIndex, trUtf8("Model")); + tabs->setTabText(taskIndex, trUtf8("Tasks")); //tabs->setTabText(2, trUtf8("Project")); } diff --git a/src/Gui/ComboView.h b/src/Gui/ComboView.h index 632c89fc66..c9488805f7 100644 --- a/src/Gui/ComboView.h +++ b/src/Gui/ComboView.h @@ -70,7 +70,7 @@ public: * A constructor. * A more elaborate description of the constructor. */ - ComboView(Gui::Document* pcDocument, QWidget *parent=0); + ComboView(bool showModel, Gui::Document* pcDocument, QWidget *parent=0); /** * A destructor. @@ -93,9 +93,10 @@ protected: void closedDialog(); void changeEvent(QEvent *e); - int oldTabIndex; - private: + int oldTabIndex; + int modelIndex; + int taskIndex; QTabWidget * tabs; Gui::PropertyView * prop; Gui::TreePanel * tree; diff --git a/src/Gui/MainWindow.cpp b/src/Gui/MainWindow.cpp index d33731001b..c58d20f9eb 100644 --- a/src/Gui/MainWindow.cpp +++ b/src/Gui/MainWindow.cpp @@ -441,12 +441,10 @@ MainWindow::MainWindow(QWidget * parent, Qt::WindowFlags f) enable = group->GetBool("Enabled", true); } - if (enable) { - ComboView* pcComboView = new ComboView(0, this); - pcComboView->setObjectName(QString::fromLatin1(QT_TRANSLATE_NOOP("QDockWidget","Combo View"))); - pcComboView->setMinimumWidth(150); - pDockMgr->registerDockWindow("Std_ComboView", pcComboView); - } + ComboView* pcComboView = new ComboView(enable, 0, this); + pcComboView->setObjectName(QString::fromLatin1(QT_TRANSLATE_NOOP("QDockWidget","Combo View"))); + pcComboView->setMinimumWidth(150); + pDockMgr->registerDockWindow("Std_ComboView", pcComboView); } #if QT_VERSION < 0x040500