summaryrefslogtreecommitdiff
path: root/src/managers/ANRManager.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/managers/ANRManager.cpp')
-rw-r--r--src/managers/ANRManager.cpp16
1 files changed, 16 insertions, 0 deletions
diff --git a/src/managers/ANRManager.cpp b/src/managers/ANRManager.cpp
index e4e62ea8..65e0dea1 100644
--- a/src/managers/ANRManager.cpp
+++ b/src/managers/ANRManager.cpp
@@ -35,6 +35,22 @@ CANRManager::CANRManager() {
m_data.emplace_back(makeShared<SANRData>(window));
});
+ static auto P1 = g_pHookSystem->hookDynamic("closeWindow", [this](void* self, SCallbackInfo& info, std::any data) {
+ auto window = std::any_cast<PHLWINDOW>(data);
+
+ for (const auto& d : m_data) {
+ if (!d->fitsWindow(window))
+ continue;
+
+ // kill the dialog, act as if we got a "ping" in case there's more than one
+ // window from this client, in which case the dialog will re-appear.
+ d->killDialog();
+ d->missedResponses = 0;
+ d->dialogSaidWait = false;
+ return;
+ }
+ });
+
m_timer->updateTimeout(TIMER_TIMEOUT);
}