Deduplicate replace button code in search bars
This commit is contained in:
parent
ccd5fc20bd
commit
036bc75799
2 changed files with 42 additions and 100 deletions
|
@ -359,60 +359,34 @@ impl Render for BufferSearchBar {
|
|||
}),
|
||||
);
|
||||
|
||||
let replace_line = should_show_replace_input.then(|| {
|
||||
h_flex()
|
||||
.gap_2()
|
||||
.child(
|
||||
input_base_styles(replacement_border).child(render_text_input(
|
||||
&self.replacement_editor,
|
||||
None,
|
||||
cx,
|
||||
)),
|
||||
)
|
||||
.child(
|
||||
h_flex()
|
||||
.min_w_64()
|
||||
.gap_1()
|
||||
.child(
|
||||
IconButton::new("search-replace-next", ui::IconName::ReplaceNext)
|
||||
.shape(IconButtonShape::Square)
|
||||
.tooltip({
|
||||
let focus_handle = focus_handle.clone();
|
||||
move |window, cx| {
|
||||
Tooltip::for_action_in(
|
||||
"Replace Next Match",
|
||||
&ReplaceNext,
|
||||
&focus_handle,
|
||||
window,
|
||||
cx,
|
||||
)
|
||||
}
|
||||
})
|
||||
.on_click(cx.listener(|this, _, window, cx| {
|
||||
this.replace_next(&ReplaceNext, window, cx)
|
||||
})),
|
||||
)
|
||||
.child(
|
||||
IconButton::new("search-replace-all", ui::IconName::ReplaceAll)
|
||||
.shape(IconButtonShape::Square)
|
||||
.tooltip({
|
||||
let focus_handle = focus_handle.clone();
|
||||
move |window, cx| {
|
||||
Tooltip::for_action_in(
|
||||
"Replace All Matches",
|
||||
&ReplaceAll,
|
||||
&focus_handle,
|
||||
window,
|
||||
cx,
|
||||
)
|
||||
}
|
||||
})
|
||||
.on_click(cx.listener(|this, _, window, cx| {
|
||||
this.replace_all(&ReplaceAll, window, cx)
|
||||
})),
|
||||
),
|
||||
)
|
||||
});
|
||||
let replace_line =
|
||||
should_show_replace_input.then(|| {
|
||||
let replace_column = input_base_styles(replacement_border)
|
||||
.child(render_text_input(&self.replacement_editor, None, cx));
|
||||
let focus_handle = self.replacement_editor.read(cx).focus_handle(cx);
|
||||
|
||||
let replace_actions = h_flex()
|
||||
.min_w_64()
|
||||
.gap_1()
|
||||
.child(render_nav_button(
|
||||
IconName::ReplaceNext,
|
||||
true,
|
||||
"Replace Next Match",
|
||||
&ReplaceNext,
|
||||
focus_handle.clone(),
|
||||
))
|
||||
.child(render_nav_button(
|
||||
IconName::ReplaceAll,
|
||||
true,
|
||||
"Replace All Matches",
|
||||
&ReplaceAll,
|
||||
focus_handle,
|
||||
));
|
||||
h_flex()
|
||||
.gap_2()
|
||||
.child(replace_column)
|
||||
.child(replace_actions)
|
||||
});
|
||||
|
||||
let query_error_line = self.query_error.as_ref().map(|error| {
|
||||
Label::new(error)
|
||||
|
|
|
@ -2099,52 +2099,20 @@ impl Render for ProjectSearchBar {
|
|||
let replace_actions = h_flex()
|
||||
.min_w_64()
|
||||
.gap_1()
|
||||
.child(
|
||||
IconButton::new("project-search-replace-next", IconName::ReplaceNext)
|
||||
.shape(IconButtonShape::Square)
|
||||
.on_click(cx.listener(|this, _, window, cx| {
|
||||
if let Some(search) = this.active_project_search.as_ref() {
|
||||
search.update(cx, |this, cx| {
|
||||
this.replace_next(&ReplaceNext, window, cx);
|
||||
})
|
||||
}
|
||||
}))
|
||||
.tooltip({
|
||||
let focus_handle = focus_handle.clone();
|
||||
move |window, cx| {
|
||||
Tooltip::for_action_in(
|
||||
"Replace Next Match",
|
||||
&ReplaceNext,
|
||||
&focus_handle,
|
||||
window,
|
||||
cx,
|
||||
)
|
||||
}
|
||||
}),
|
||||
)
|
||||
.child(
|
||||
IconButton::new("project-search-replace-all", IconName::ReplaceAll)
|
||||
.shape(IconButtonShape::Square)
|
||||
.on_click(cx.listener(|this, _, window, cx| {
|
||||
if let Some(search) = this.active_project_search.as_ref() {
|
||||
search.update(cx, |this, cx| {
|
||||
this.replace_all(&ReplaceAll, window, cx);
|
||||
})
|
||||
}
|
||||
}))
|
||||
.tooltip({
|
||||
let focus_handle = focus_handle.clone();
|
||||
move |window, cx| {
|
||||
Tooltip::for_action_in(
|
||||
"Replace All Matches",
|
||||
&ReplaceAll,
|
||||
&focus_handle,
|
||||
window,
|
||||
cx,
|
||||
)
|
||||
}
|
||||
}),
|
||||
);
|
||||
.child(render_nav_button(
|
||||
IconName::ReplaceNext,
|
||||
true,
|
||||
"Replace Next Match",
|
||||
&ReplaceNext,
|
||||
focus_handle.clone(),
|
||||
))
|
||||
.child(render_nav_button(
|
||||
IconName::ReplaceAll,
|
||||
true,
|
||||
"Replace All Matches",
|
||||
&ReplaceAll,
|
||||
focus_handle,
|
||||
));
|
||||
|
||||
h_flex()
|
||||
.w_full()
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue