//-------------------------------------------------------------------------------------------------- /// //-------------------------------------------------------------------------------------------------- void RiuPlotMainWindow::slotSubWindowActivated(QMdiSubWindow* subWindow) { if (!subWindow) return; RimProject* proj = RiaApplication::instance()->project(); if (!proj) return; // Select in Project Tree RimViewWindow* viewWindow = RiuInterfaceToViewWindow::viewWindowFromWidget(subWindow->widget()); if (viewWindow && viewWindow != m_activePlotViewWindow) { if (!m_blockSlotSubWindowActivated) { selectAsCurrentItem(viewWindow); } m_activePlotViewWindow = viewWindow; } updateSummaryPlotToolBar(); }
//-------------------------------------------------------------------------------------------------- /// //-------------------------------------------------------------------------------------------------- void RiuPlotMainWindow::selectedObjectsChanged() { std::vector<caf::PdmUiItem*> uiItems; m_projectTreeView->selectedUiItems(uiItems); caf::PdmObjectHandle* firstSelectedObject = nullptr; if (uiItems.size() == 1) { firstSelectedObject = dynamic_cast<caf::PdmObjectHandle*>(uiItems[0]); } m_pdmUiPropertyView->showProperties(firstSelectedObject); if (firstSelectedObject) { RimSummaryPlot* summaryPlot = nullptr; firstSelectedObject->firstAncestorOrThisOfType(summaryPlot); if (summaryPlot) { updateSummaryPlotToolBar(); } } if (uiItems.size() == 1 && m_allowActiveViewChangeFromSelection) { // Find the reservoir view or the Plot that the selected item is within if (!firstSelectedObject) { caf::PdmFieldHandle* selectedField = dynamic_cast<caf::PdmFieldHandle*>(uiItems[0]); if (selectedField) firstSelectedObject = selectedField->ownerObject(); } if (!firstSelectedObject) return; RimViewWindow* selectedWindow = dynamic_cast<RimViewWindow*>(firstSelectedObject); if (!selectedWindow) { firstSelectedObject->firstAncestorOrThisOfType(selectedWindow); } // If we cant find the view window as an MDI sub window, we search higher in the // project tree to find a possible parent view window that has. if (selectedWindow && !findMdiSubWindow(selectedWindow->viewWidget())) { if (selectedWindow->parentField() && selectedWindow->parentField()->ownerObject()) { selectedWindow->parentField()->ownerObject()->firstAncestorOrThisOfType(selectedWindow); } } if (selectedWindow) { if (selectedWindow->viewWidget()) { setActiveViewer(selectedWindow->viewWidget()); } // The only way to get to this code is by selection change initiated from the project tree view // As we are activating an MDI-window, the focus is given to this MDI-window // Set focus back to the tree view to be able to continue keyboard tree view navigation m_projectTreeView->treeView()->setFocus(); } } }