mirror of
https://github.com/zed-industries/zed.git
synced 2024-09-20 02:47:34 +03:00
Forego using dispatch_action for click handlers
This commit is contained in:
parent
38d844ab66
commit
66e0650f75
@ -1748,9 +1748,9 @@ impl Render for ProjectSearchBar {
|
||||
.tooltip(|cx| {
|
||||
Tooltip::for_action("Toggle filters", &ToggleFilters, cx)
|
||||
})
|
||||
.on_click(|_, cx| {
|
||||
cx.dispatch_action(ToggleFilters.boxed_clone())
|
||||
})
|
||||
.on_click(cx.listener(|this, _, cx| {
|
||||
this.toggle_filters(cx);
|
||||
}))
|
||||
.selected(
|
||||
self.active_project_search
|
||||
.as_ref()
|
||||
@ -1771,9 +1771,14 @@ impl Render for ProjectSearchBar {
|
||||
)
|
||||
})
|
||||
.selected(self.is_option_enabled(SearchOptions::CASE_SENSITIVE, cx))
|
||||
.on_click(|_, cx| {
|
||||
cx.dispatch_action(ToggleCaseSensitive.boxed_clone())
|
||||
}),
|
||||
.on_click(cx.listener(
|
||||
|this, _, cx| {
|
||||
this.toggle_search_option(
|
||||
SearchOptions::CASE_SENSITIVE,
|
||||
cx,
|
||||
);
|
||||
},
|
||||
)),
|
||||
)
|
||||
.child(
|
||||
IconButton::new("project-search-whole-word", Icon::WholeWord)
|
||||
@ -1785,9 +1790,9 @@ impl Render for ProjectSearchBar {
|
||||
)
|
||||
})
|
||||
.selected(self.is_option_enabled(SearchOptions::WHOLE_WORD, cx))
|
||||
.on_click(|_, cx| {
|
||||
cx.dispatch_action(ToggleWholeWord.boxed_clone())
|
||||
}),
|
||||
.on_click(cx.listener(|this, _, cx| {
|
||||
this.toggle_search_option(SearchOptions::WHOLE_WORD, cx);
|
||||
})),
|
||||
),
|
||||
)
|
||||
.border_2()
|
||||
@ -1823,9 +1828,9 @@ impl Render for ProjectSearchBar {
|
||||
.child(
|
||||
Button::new("project-search-text-button", "Text")
|
||||
.selected(search.current_mode == SearchMode::Text)
|
||||
.on_click(|_, cx| {
|
||||
cx.dispatch_action(ActivateTextMode.boxed_clone())
|
||||
})
|
||||
.on_click(cx.listener(|this, _, cx| {
|
||||
this.activate_search_mode(SearchMode::Text, cx)
|
||||
}))
|
||||
.tooltip(|cx| {
|
||||
Tooltip::for_action("Toggle text search", &ActivateTextMode, cx)
|
||||
}),
|
||||
@ -1833,9 +1838,9 @@ impl Render for ProjectSearchBar {
|
||||
.child(
|
||||
Button::new("project-search-regex-button", "Regex")
|
||||
.selected(search.current_mode == SearchMode::Regex)
|
||||
.on_click(|_, cx| {
|
||||
cx.dispatch_action(ActivateRegexMode.boxed_clone())
|
||||
})
|
||||
.on_click(cx.listener(|this, _, cx| {
|
||||
this.activate_search_mode(SearchMode::Regex, cx)
|
||||
}))
|
||||
.tooltip(|cx| {
|
||||
Tooltip::for_action(
|
||||
"Toggle regular expression search",
|
||||
@ -1847,9 +1852,9 @@ impl Render for ProjectSearchBar {
|
||||
)
|
||||
.child(
|
||||
IconButton::new("project-search-toggle-replace", Icon::Replace)
|
||||
.on_click(|_, cx| {
|
||||
cx.dispatch_action(ToggleReplace.boxed_clone());
|
||||
})
|
||||
.on_click(cx.listener(|this, _, cx| {
|
||||
this.toggle_replace(&ToggleReplace, cx);
|
||||
}))
|
||||
.tooltip(|cx| Tooltip::for_action("Toggle replace", &ToggleReplace, cx)),
|
||||
),
|
||||
);
|
||||
@ -1869,37 +1874,52 @@ impl Render for ProjectSearchBar {
|
||||
.when(search.replace_enabled, |this| {
|
||||
this.children([
|
||||
IconButton::new("project-search-replace-next", Icon::ReplaceNext)
|
||||
.on_click(|_, cx| {
|
||||
cx.dispatch_action(ReplaceNext.boxed_clone());
|
||||
})
|
||||
.on_click(cx.listener(|this, _, cx| {
|
||||
if let Some(search) = this.active_project_search.as_ref() {
|
||||
search.update(cx, |this, cx| {
|
||||
this.replace_next(&ReplaceNext, cx);
|
||||
})
|
||||
}
|
||||
}))
|
||||
.tooltip(|cx| Tooltip::for_action("Replace next match", &ReplaceNext, cx)),
|
||||
IconButton::new("project-search-replace-all", Icon::ReplaceAll)
|
||||
.on_click(|_, cx| {
|
||||
cx.dispatch_action(ReplaceAll.boxed_clone());
|
||||
})
|
||||
.on_click(cx.listener(|this, _, cx| {
|
||||
if let Some(search) = this.active_project_search.as_ref() {
|
||||
search.update(cx, |this, cx| {
|
||||
this.replace_all(&ReplaceAll, cx);
|
||||
})
|
||||
}
|
||||
}))
|
||||
.tooltip(|cx| Tooltip::for_action("Replace all matches", &ReplaceAll, cx)),
|
||||
])
|
||||
})
|
||||
.when_some(search.active_match_index, |this, index| {
|
||||
let match_quantity = search.model.read(cx).match_ranges.len();
|
||||
debug_assert!(match_quantity > index);
|
||||
this.child(
|
||||
IconButton::new("project-search-select-all", Icon::SelectAll)
|
||||
.on_click(|_, cx| cx.dispatch_action(SelectAll.boxed_clone()))
|
||||
.tooltip(|cx| Tooltip::for_action("Select all matches", &SelectAll, cx)),
|
||||
)
|
||||
.child(Label::new(format!("{index}/{match_quantity}")))
|
||||
this.child(Label::new(format!("{index}/{match_quantity}")))
|
||||
})
|
||||
.children([
|
||||
IconButton::new("project-search-prev-match", Icon::ChevronLeft)
|
||||
.disabled(search.active_match_index.is_none())
|
||||
.on_click(|_, cx| cx.dispatch_action(SelectPrevMatch.boxed_clone()))
|
||||
.on_click(cx.listener(|this, _, cx| {
|
||||
if let Some(search) = this.active_project_search.as_ref() {
|
||||
search.update(cx, |this, cx| {
|
||||
this.select_match(Direction::Prev, cx);
|
||||
})
|
||||
}
|
||||
}))
|
||||
.tooltip(|cx| {
|
||||
Tooltip::for_action("Go to previous match", &SelectPrevMatch, cx)
|
||||
}),
|
||||
IconButton::new("project-search-next-match", Icon::ChevronRight)
|
||||
.disabled(search.active_match_index.is_none())
|
||||
.on_click(|_, cx| cx.dispatch_action(SelectNextMatch.boxed_clone()))
|
||||
.on_click(cx.listener(|this, _, cx| {
|
||||
if let Some(search) = this.active_project_search.as_ref() {
|
||||
search.update(cx, |this, cx| {
|
||||
this.select_match(Direction::Next, cx);
|
||||
})
|
||||
}
|
||||
}))
|
||||
.tooltip(|cx| Tooltip::for_action("Go to next match", &SelectNextMatch, cx)),
|
||||
]);
|
||||
h_stack()
|
||||
|
Loading…
Reference in New Issue
Block a user