editor: Move mouse context menu code actions at bottom (#28799)

Release Notes:

- N/A
This commit is contained in:
Smit Barmase 2025-04-15 23:27:32 +05:30 committed by GitHub
parent 149cdeca29
commit 6f6e207eb5
No known key found for this signature in database
GPG key ID: B5690EEEBB952194

View file

@ -295,55 +295,6 @@ fn build_context_menu(
ui::ContextMenu::build(window, cx, |menu, _window, cx| { ui::ContextMenu::build(window, cx, |menu, _window, cx| {
let menu = menu let menu = menu
.on_blur_subscription(Subscription::new(|| {})) .on_blur_subscription(Subscription::new(|| {}))
.when_some(code_action_load_state, |menu, state| {
match state {
CodeActionLoadState::Loading => menu.disabled_action(
"Loading code actions...",
Box::new(ConfirmCodeAction {
item_ix: None,
from_mouse_context_menu: true,
}),
),
CodeActionLoadState::Loaded(actions) => {
if actions.is_empty() {
menu.disabled_action(
"No code actions available",
Box::new(ConfirmCodeAction {
item_ix: None,
from_mouse_context_menu: true,
}),
)
} else {
actions
.iter()
.filter(|action| {
if action
.as_task()
.map(|task| {
matches!(task.task_type(), task::TaskType::Debug(_))
})
.unwrap_or(false)
{
cx.has_flag::<Debugger>()
} else {
true
}
})
.enumerate()
.fold(menu, |menu, (ix, action)| {
menu.action(
action.label(),
Box::new(ConfirmCodeAction {
item_ix: Some(ix),
from_mouse_context_menu: true,
}),
)
})
}
}
}
.separator()
})
.when(evaluate_selection && has_selections, |builder| { .when(evaluate_selection && has_selections, |builder| {
builder builder
.action("Evaluate Selection", Box::new(DebuggerEvaluateSelectedText)) .action("Evaluate Selection", Box::new(DebuggerEvaluateSelectedText))
@ -390,6 +341,54 @@ fn build_context_menu(
} else { } else {
builder.disabled_action(COPY_PERMALINK_LABEL, Box::new(CopyPermalinkToLine)) builder.disabled_action(COPY_PERMALINK_LABEL, Box::new(CopyPermalinkToLine))
} }
})
.when_some(code_action_load_state, |menu, state| {
menu.separator().map(|menu| match state {
CodeActionLoadState::Loading => menu.disabled_action(
"Loading code actions...",
Box::new(ConfirmCodeAction {
item_ix: None,
from_mouse_context_menu: true,
}),
),
CodeActionLoadState::Loaded(actions) => {
if actions.is_empty() {
menu.disabled_action(
"No code actions available",
Box::new(ConfirmCodeAction {
item_ix: None,
from_mouse_context_menu: true,
}),
)
} else {
actions
.iter()
.filter(|action| {
if action
.as_task()
.map(|task| {
matches!(task.task_type(), task::TaskType::Debug(_))
})
.unwrap_or(false)
{
cx.has_flag::<Debugger>()
} else {
true
}
})
.enumerate()
.fold(menu, |menu, (ix, action)| {
menu.action(
action.label(),
Box::new(ConfirmCodeAction {
item_ix: Some(ix),
from_mouse_context_menu: true,
}),
)
})
}
}
})
}); });
match focus { match focus {
Some(focus) => menu.context(focus), Some(focus) => menu.context(focus),