UI,docs: Send a custom event to the dock widget when closing

This commit is contained in:
tytan652
2024-08-04 10:18:59 +10:00
committed by Matt Gajownik
parent 58a8d79be1
commit 3b266fec22
3 changed files with 13 additions and 0 deletions
+2
View File
@@ -329,6 +329,8 @@ OBSBasic::OBSBasic(QWidget *parent)
setContextMenuPolicy(Qt::CustomContextMenu);
QEvent::registerEventType(QEvent::User + QEvent::Close);
api = InitializeAPIInterface(this);
ui->setupUi(this);
+5
View File
@@ -34,6 +34,11 @@ void OBSDock::closeEvent(QCloseEvent *event)
}
QDockWidget::closeEvent(event);
if (widget() && event->isAccepted()) {
QEvent widgetEvent(QEvent::Type(QEvent::User + QEvent::Close));
qApp->sendEvent(widget(), &widgetEvent);
}
}
void OBSDock::showEvent(QShowEvent *event)
+6
View File
@@ -480,6 +480,12 @@ Functions
Adds a dock with the widget to the UI with a toggle in the Docks
menu.
When the dock is closed, a custom QEvent of type `QEvent::User + QEvent::Close`
is sent to the widget to enable it to react to the event (e.g., unload elements
to save resources).
A generic QShowEvent is already sent by default when the widget is being
shown (e.g., dock opened).
Note: Use :c:func:`obs_frontend_remove_dock` to remove the dock
and the id from the UI.