File indexing completed on 2025-02-02 04:26:12

0001 /* SPDX-FileCopyrightText: 2023 Noah Davis <noahadvs@gmail.com>
0002  * SPDX-License-Identifier: LGPL-2.0-or-later
0003  */
0004 
0005 #pragma once
0006 
0007 #include <QWidget>
0008 #include <QWindow>
0009 
0010 /* A small collection of functions to set the transient parents of QWidgets without segfaults.
0011  * For some reason, we have to check winId() to avoid crashes.
0012  */
0013 
0014 inline void setWidgetTransientParent(QWidget *widget, QWindow *parent)
0015 {
0016     if (widget && widget->winId() && parent && parent->winId()) {
0017         widget->windowHandle()->setTransientParent(parent);
0018     }
0019 }
0020 
0021 inline void setWidgetTransientParentToWidget(QWidget *widget, QWidget *parent)
0022 {
0023     if (widget && widget->winId() && parent && parent->winId()) {
0024         widget->windowHandle()->setTransientParent(parent->windowHandle());
0025     }
0026 }
0027 
0028 inline QWindow *getWidgetTransientParent(QWidget *widget)
0029 {
0030     return widget && widget->winId() ? widget->windowHandle()->transientParent() : nullptr;
0031 }