refactor: extract block menu overlay close helper

This commit is contained in:
lix-2026
2026-05-25 03:41:19 +08:00
parent bf6cd19878
commit 3f8c7a1238
5 changed files with 36 additions and 29 deletions
@@ -117,3 +117,28 @@ pub(crate) fn close_editor_floating_overlays(
set_block_turn_into_open.set(false);
set_block_folded_title_open.set(false);
}
pub(crate) fn try_close_block_menu_overlays(
set_slash_open: WriteSignal<bool>,
set_turn_into_open: WriteSignal<bool>,
set_hovered_block: WriteSignal<Option<HoveredBlockState>>,
set_block_menu_anchor: WriteSignal<Option<HoveredBlockState>>,
set_block_menu_open: WriteSignal<bool>,
) -> bool {
if set_slash_open.try_set(false).is_none() {
return false;
}
if set_turn_into_open.try_set(false).is_none() {
return false;
}
if set_block_menu_open.try_set(false).is_none() {
return false;
}
if set_block_menu_anchor.try_set(None).is_none() {
return false;
}
if set_hovered_block.try_set(None).is_none() {
return false;
}
true
}
+1 -26
View File
@@ -42,7 +42,7 @@ use editor_runtime::editor_focus::{active_editor_stage, body_has_focus, schedule
use editor_runtime::overlays::{
close_editor_floating_overlays, floating_toolbar_anchor_from_selection,
sync_text_selection_overlay, FloatingToolbarAnchor, ImageToolbarAnchor, TableOverlayAnchor,
TableSelectionKind, TableSelectionOverlayState,
TableSelectionKind, TableSelectionOverlayState, try_close_block_menu_overlays,
};
use editor_runtime::persistence::{
load_persisted_document, normalize_identity_value, persist_document_state,
@@ -5862,31 +5862,6 @@ fn open_block_menu_overlay(
should_open
}
fn try_close_block_menu_overlays(
set_slash_open: WriteSignal<bool>,
set_turn_into_open: WriteSignal<bool>,
set_hovered_block: WriteSignal<Option<HoveredBlockState>>,
set_block_menu_anchor: WriteSignal<Option<HoveredBlockState>>,
set_block_menu_open: WriteSignal<bool>,
) -> bool {
if set_slash_open.try_set(false).is_none() {
return false;
}
if set_turn_into_open.try_set(false).is_none() {
return false;
}
if set_block_menu_open.try_set(false).is_none() {
return false;
}
if set_block_menu_anchor.try_set(None).is_none() {
return false;
}
if set_hovered_block.try_set(None).is_none() {
return false;
}
true
}
fn try_sync_editor_overlay_state(
set_editor_focused: WriteSignal<bool>,
set_text_selection_active: WriteSignal<bool>,