dropdown: Do not reset the selected index when cancelling (#618)
## Before https://github.com/user-attachments/assets/e33c2324-94f0-42b0-99cc-9e2dcdee3f3d ## After https://github.com/user-attachments/assets/7c5c6fee-b0f6-4cd5-986e-ea8f6f0e7f9d
This commit is contained in:
parent
0050685a58
commit
d95cbabcc3
2 changed files with 13 additions and 2 deletions
|
|
@ -347,7 +347,9 @@ where
|
|||
let searchable = delegate.delegate.can_search();
|
||||
|
||||
let list = cx.new(|cx| {
|
||||
let mut list = List::new(delegate, window, cx).max_h(rems(20.));
|
||||
let mut list = List::new(delegate, window, cx)
|
||||
.max_h(rems(20.))
|
||||
.reset_on_cancel(false);
|
||||
if !searchable {
|
||||
list = list.no_query();
|
||||
}
|
||||
|
|
|
|||
|
|
@ -156,6 +156,7 @@ pub struct List<D: ListDelegate> {
|
|||
pub(crate) size: Size,
|
||||
selected_index: Option<usize>,
|
||||
right_clicked_index: Option<usize>,
|
||||
reset_on_cancel: bool,
|
||||
_search_task: Task<()>,
|
||||
_load_more_task: Task<()>,
|
||||
_query_input_subscription: Subscription,
|
||||
|
|
@ -191,6 +192,7 @@ where
|
|||
selectable: true,
|
||||
querying: false,
|
||||
size: Size::default(),
|
||||
reset_on_cancel: true,
|
||||
_search_task: Task::ready(()),
|
||||
_load_more_task: Task::ready(()),
|
||||
_query_input_subscription,
|
||||
|
|
@ -381,8 +383,15 @@ where
|
|||
}
|
||||
}
|
||||
|
||||
pub(crate) fn reset_on_cancel(mut self, reset: bool) -> Self {
|
||||
self.reset_on_cancel = reset;
|
||||
self
|
||||
}
|
||||
|
||||
fn on_action_cancel(&mut self, _: &Cancel, window: &mut Window, cx: &mut Context<Self>) {
|
||||
self.set_selected_index(None, window, cx);
|
||||
if self.reset_on_cancel {
|
||||
self.set_selected_index(None, window, cx);
|
||||
}
|
||||
self.delegate.cancel(window, cx);
|
||||
cx.emit(ListEvent::Cancel);
|
||||
cx.notify();
|
||||
|
|
|
|||
Loading…
Reference in a new issue