* @return the dock widget (grand)parent of @p view->widget(), the QMainWindow parent * of @p view->widget() if it has a toolbar, and @p view->widget() itself * * @pre @p view->widget() belongs to a dock widget */
| 150 | * @pre @p view->widget() belongs to a dock widget |
| 151 | */ |
| 152 | [[nodiscard]] DockWidgetInfo existentDockWidgetForView(const Sublime::View* view) |
| 153 | { |
| 154 | Q_ASSERT(view); |
| 155 | auto* const viewWidget = view->widget(); |
| 156 | Q_ASSERT(viewWidget); |
| 157 | |
| 158 | auto* const viewParent = viewWidget->parentWidget(); |
| 159 | Q_ASSERT(viewParent); |
| 160 | auto* dockWidget = qobject_cast<Sublime::IdealDockWidget*>(viewParent); |
| 161 | if (dockWidget) { |
| 162 | return {dockWidget, nullptr, viewWidget}; |
| 163 | } |
| 164 | |
| 165 | // a tool view widget with a toolbar lives in a QMainWindow that lives in a dock widget |
| 166 | Q_ASSERT(qobject_cast<QMainWindow*>(viewParent) == viewParent); |
| 167 | auto* const toolView = static_cast<QMainWindow*>(viewParent); |
| 168 | dockWidget = qobject_cast<Sublime::IdealDockWidget*>(toolView->parentWidget()); |
| 169 | Q_ASSERT(dockWidget); |
| 170 | return {dockWidget, toolView, viewWidget}; |
| 171 | } |
| 172 | |
| 173 | } // unnamed namespace |
| 174 |
no test coverage detected