mirror of
https://github.com/OPM/ResInsight.git
synced 2025-02-25 18:55:39 -06:00
(#370) Bugfixes regarding using several project trees
SelectionManager is now updated whenever focus enters the treeview. The main project tree now has turned on SelectionManager updates
This commit is contained in:
parent
69a46e0b45
commit
0fda6ef6fb
@ -566,6 +566,8 @@ void RiuMainWindow::createDockPanels()
|
||||
dockWidget->setAllowedAreas(Qt::AllDockWidgetAreas);
|
||||
|
||||
m_projectTreeView = new caf::PdmUiTreeView(this);
|
||||
m_projectTreeView->enableSelectionManagerUpdating(true);
|
||||
|
||||
dockWidget->setWidget(m_projectTreeView);
|
||||
|
||||
m_projectTreeView->treeView()->setHeaderHidden(true);
|
||||
@ -1602,7 +1604,6 @@ void RiuMainWindow::selectedObjectsChanged()
|
||||
std::vector<caf::PdmUiItem*> uiItems;
|
||||
m_projectTreeView->selectedUiItems(uiItems);
|
||||
|
||||
caf::SelectionManager::instance()->setSelectedItems(uiItems);
|
||||
caf::PdmObjectHandle* firstSelectedObject = NULL;
|
||||
|
||||
if (uiItems.size() == 1)
|
||||
|
@ -51,6 +51,7 @@
|
||||
#include <QSortFilterProxyModel>
|
||||
#include <QTreeView>
|
||||
#include <QWidget>
|
||||
#include <QEvent>
|
||||
|
||||
namespace caf
|
||||
{
|
||||
@ -62,6 +63,7 @@ PdmUiTreeViewEditor::PdmUiTreeViewEditor()
|
||||
{
|
||||
m_useDefaultContextMenu = false;
|
||||
m_updateSelectionManager = false;
|
||||
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
@ -85,6 +87,7 @@ QWidget* PdmUiTreeViewEditor::createWidget(QWidget* parent)
|
||||
m_treeViewModel = new caf::PdmUiTreeViewModel(this);
|
||||
m_treeView = new QTreeView(m_mainWidget);
|
||||
m_treeView->setModel(m_treeViewModel);
|
||||
m_treeView->installEventFilter(this);
|
||||
|
||||
connect(treeView()->selectionModel(), SIGNAL(selectionChanged( const QItemSelection & , const QItemSelection & )), SLOT(slotOnSelectionChanged( const QItemSelection & , const QItemSelection & )));
|
||||
|
||||
@ -254,13 +257,7 @@ void PdmUiTreeViewEditor::selectAsCurrentItem(PdmUiItem* uiItem)
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
void PdmUiTreeViewEditor::slotOnSelectionChanged(const QItemSelection & selected, const QItemSelection & deselected)
|
||||
{
|
||||
if (m_updateSelectionManager)
|
||||
{
|
||||
std::vector<PdmUiItem*> items;
|
||||
this->selectedUiItems(items);
|
||||
|
||||
SelectionManager::instance()->setSelectedItems(items);
|
||||
}
|
||||
this->updateSelectionManager();
|
||||
|
||||
emit selectionChanged();
|
||||
}
|
||||
@ -298,5 +295,34 @@ void PdmUiTreeViewEditor::setDragDropHandle(PdmUiDragDropHandle* dragDropHandle)
|
||||
m_treeViewModel->setDragDropHandle(dragDropHandle);
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
///
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
bool PdmUiTreeViewEditor::eventFilter(QObject *obj, QEvent *event)
|
||||
{
|
||||
if (event->type() == QEvent::FocusIn)
|
||||
{
|
||||
this->updateSelectionManager();
|
||||
}
|
||||
|
||||
// standard event processing
|
||||
return QObject::eventFilter(obj, event);
|
||||
}
|
||||
|
||||
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
///
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
void PdmUiTreeViewEditor::updateSelectionManager()
|
||||
{
|
||||
if (m_updateSelectionManager)
|
||||
{
|
||||
std::vector<PdmUiItem*> items;
|
||||
this->selectedUiItems(items);
|
||||
|
||||
SelectionManager::instance()->setSelectedItems(items);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
} // end namespace caf
|
||||
|
@ -118,6 +118,9 @@ private:
|
||||
|
||||
PdmChildArrayFieldHandle* currentChildArrayFieldHandle();
|
||||
|
||||
void updateSelectionManager();
|
||||
|
||||
virtual bool eventFilter(QObject *obj, QEvent *event);
|
||||
|
||||
private:
|
||||
QPointer<QWidget> m_mainWidget;
|
||||
|
Loading…
Reference in New Issue
Block a user