Blocks all background webview interactions when a dialog is open (#35671)

Signed-off-by: L Ashwin B <lashwinib@gmail.com>
This commit is contained in:
chickenleaf 2025-02-26 16:48:51 +05:30 committed by GitHub
parent b4e2037dbe
commit 56fbfc9d27
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
3 changed files with 26 additions and 8 deletions

View file

@ -292,15 +292,22 @@ impl RunningAppState {
inner_mut.need_update = true;
}
fn has_active_dialog(&self) -> bool {
let Some(webview) = self.focused_webview() else {
pub(crate) fn has_active_dialog(&self) -> bool {
let last_created_webview_id = self.inner().creation_order.last().cloned();
let Some(webview_id) = self
.focused_webview()
.as_ref()
.map(WebView::id)
.or(last_created_webview_id)
else {
return false;
};
let inner = self.inner();
let Some(dialogs) = inner.dialogs.get(&webview.id()) else {
return false;
};
!dialogs.is_empty()
inner
.dialogs
.get(&webview_id)
.is_some_and(|dialogs| !dialogs.is_empty())
}
pub(crate) fn get_focused_webview_index(&self) -> Option<usize> {