keymap_editor: Adjust some items of the UI (#42876)

- Only showing the "Create" menu item in the right-click context menu
for actions that _do not_ contain a binding already assigned to them
- Only show the "Clear Input" icon button in the keystroke modal when
the input is focused/in recording mode
- Add a subtle hover style to the table rows just to make it easier to
navigate

Release Notes:

- N/A
This commit is contained in:
Danilo Leal
2025-11-17 10:59:46 -03:00
committed by GitHub
parent e0b64773d9
commit 4092e81ada
3 changed files with 23 additions and 16 deletions
+3 -1
View File
@@ -958,12 +958,14 @@ impl KeymapEditor {
let context_menu = ContextMenu::build(window, cx, |menu, _window, _cx| {
menu.context(self.focus_handle.clone())
.when(selected_binding_is_unbound, |this| {
this.action("Create", Box::new(CreateBinding))
})
.action_disabled_when(
selected_binding_is_unbound,
"Edit",
Box::new(EditBinding),
)
.action("Create", Box::new(CreateBinding))
.action_disabled_when(
selected_binding_is_unbound,
"Delete",
@@ -636,18 +636,24 @@ impl Render for KeystrokeInput {
)
}
})
.child(
IconButton::new("clear-btn", IconName::Backspace)
.shape(IconButtonShape::Square)
.tooltip(Tooltip::for_action_title(
"Clear Keystrokes",
&ClearKeystrokes,
))
.when(!is_focused, |this| this.icon_color(Color::Muted))
.on_click(cx.listener(|this, _event, window, cx| {
this.clear_keystrokes(&ClearKeystrokes, window, cx);
})),
),
.when(is_recording, |this| {
this.child(
IconButton::new("clear-btn", IconName::Backspace)
.shape(IconButtonShape::Square)
.tooltip(move |_, cx| {
Tooltip::with_meta(
"Clear Keystrokes",
Some(&ClearKeystrokes),
"Hit it three times to execute",
cx,
)
})
.when(!is_focused, |this| this.icon_color(Color::Muted))
.on_click(cx.listener(|this, _event, window, cx| {
this.clear_keystrokes(&ClearKeystrokes, window, cx);
})),
)
}),
)
}
}
+2 -3
View File
@@ -641,11 +641,10 @@ pub fn render_table_row<const COLS: usize>(
.map_or([None; COLS], |widths| widths.map(Some));
let mut row = h_flex()
.h_full()
.id(("table_row", row_index))
.w_full()
.justify_between()
.size_full()
.when_some(bg, |row, bg| row.bg(bg))
.hover(|s| s.bg(cx.theme().colors().element_hover.opacity(0.6)))
.when(!is_striped, |row| {
row.border_b_1()
.border_color(transparent_black())