diff --git a/src/Gui/SelectionView.cpp b/src/Gui/SelectionView.cpp index 4459b02d60..f89d8d1526 100644 --- a/src/Gui/SelectionView.cpp +++ b/src/Gui/SelectionView.cpp @@ -55,8 +55,9 @@ using namespace Gui::DockWnd; SelectionView::SelectionView(Gui::Document* pcDocument, QWidget *parent) : DockWindow(pcDocument,parent) - , SelectionObserver(false,0) + , SelectionObserver(true,0) , x(0.0f), y(0.0f), z(0.0f) + , openedAutomatically(false) { setWindowTitle(tr("Selection View")); @@ -128,6 +129,22 @@ void SelectionView::leaveEvent(QEvent *) /// @cond DOXERR void SelectionView::onSelectionChanged(const SelectionChanges &Reason) { + ParameterGrp::handle hGrp = App::GetApplication().GetUserParameter().GetGroup("BaseApp") + ->GetGroup("Preferences")->GetGroup("Selection"); + bool autoShow = hGrp->GetBool("AutoShowSelectionView", false); + hGrp->SetBool("AutoShowSelectionView", autoShow); // Remove this line once the preferences window item is implemented + + if (autoShow) { + if (!parentWidget()->isVisible() && Selection().hasSelection()) { + parentWidget()->show(); + openedAutomatically = true; + } + else if (openedAutomatically && !Selection().hasSelection()) { + parentWidget()->hide(); + openedAutomatically = false; + } + } + QString selObject; QTextStream str(&selObject); if (Reason.Type == SelectionChanges::AddSelection) { @@ -608,14 +625,10 @@ bool SelectionView::onMsg(const char* /*pMsg*/,const char** /*ppReturn*/) } void SelectionView::hideEvent(QHideEvent *ev) { - FC_TRACE(this << " detaching selection observer"); - this->detachSelection(); DockWindow::hideEvent(ev); } void SelectionView::showEvent(QShowEvent *ev) { - FC_TRACE(this << " attaching selection observer"); - this->attachSelection(); enablePickList->setChecked(Selection().needPickedList()); Gui::DockWindow::showEvent(ev); } diff --git a/src/Gui/SelectionView.h b/src/Gui/SelectionView.h index ecb9a1dad5..da72d37298 100644 --- a/src/Gui/SelectionView.h +++ b/src/Gui/SelectionView.h @@ -110,6 +110,7 @@ private: private: float x,y,z; std::vector searchList; + bool openedAutomatically; }; } // namespace DockWnd