+shared_ptr<pv::view::View> MainWindow::get_active_view() const
+{
+ // If there's only one view, use it...
+ if (view_docks_.size() == 1)
+ return view_docks_.begin()->second;
+
+ // ...otherwise find the dock widget the widget with focus is contained in
+ QObject *w = QApplication::focusWidget();
+ QDockWidget *dock = 0;
+
+ while (w) {
+ dock = qobject_cast<QDockWidget*>(w);
+ if (dock)
+ break;
+ w = w->parent();
+ }
+
+ // Get the view contained in the dock widget
+ for (auto entry : view_docks_)
+ if (entry.first.get() == dock)
+ return entry.second;
+
+ return shared_ptr<pv::view::View>();
+}
+