Fix some of the warnings

This commit is contained in:
Piotr Osiewicz 2023-11-16 18:36:19 +01:00
parent 6b6a30c3da
commit f8b91bd0f0
4 changed files with 58 additions and 150 deletions

View file

@ -1,10 +1,10 @@
use crate::{ use crate::{
history::SearchHistory, history::SearchHistory,
mode::{next_mode, SearchMode, Side}, mode::{next_mode, SearchMode},
search_bar::{render_nav_button, render_search_mode_button}, search_bar::{render_nav_button, render_search_mode_button},
CycleMode, NextHistoryQuery, PreviousHistoryQuery, ReplaceAll, ReplaceNext, SearchOptions, ActivateRegexMode, ActivateTextMode, CycleMode, NextHistoryQuery, PreviousHistoryQuery,
SelectAllMatches, SelectNextMatch, SelectPrevMatch, ToggleCaseSensitive, ToggleReplace, ReplaceAll, ReplaceNext, SearchOptions, SelectAllMatches, SelectNextMatch, SelectPrevMatch,
ToggleWholeWord, ToggleCaseSensitive, ToggleReplace, ToggleWholeWord,
}; };
use collections::HashMap; use collections::HashMap;
use editor::Editor; use editor::Editor;
@ -16,7 +16,6 @@ use gpui::{
}; };
use project::search::SearchQuery; use project::search::SearchQuery;
use std::{any::Any, sync::Arc}; use std::{any::Any, sync::Arc};
use theme::ActiveTheme;
use ui::{h_stack, ButtonGroup, Icon, IconButton, IconElement}; use ui::{h_stack, ButtonGroup, Icon, IconButton, IconElement};
use util::ResultExt; use util::ResultExt;
@ -129,18 +128,12 @@ impl Render for BufferSearchBar {
editor.set_placeholder_text("Replace with...", cx); editor.set_placeholder_text("Replace with...", cx);
}); });
let search_button_for_mode = |mode, side, cx: &mut ViewContext<BufferSearchBar>| { let search_button_for_mode = |mode| {
let is_active = self.current_mode == mode; let is_active = self.current_mode == mode;
render_search_mode_button( render_search_mode_button(mode, is_active, move |this: &mut Self, cx| {
mode, this.activate_search_mode(mode, cx);
side, })
is_active,
move |this, cx| {
this.activate_search_mode(mode, cx);
},
cx,
)
}; };
let search_option_button = |option| { let search_option_button = |option| {
let is_active = self.search_options.contains(option); let is_active = self.search_options.contains(option);
@ -164,16 +157,14 @@ impl Render for BufferSearchBar {
Some(ui::Label::new(message)) Some(ui::Label::new(message))
}); });
let nav_button_for_direction = |icon, direction, cx: &mut ViewContext<Self>| { let nav_button_for_direction = |icon, direction| {
render_nav_button( render_nav_button(
icon, icon,
direction,
self.active_match_index.is_some(), self.active_match_index.is_some(),
move |this, cx| match direction { move |this: &mut Self, cx| match direction {
Direction::Prev => this.select_prev_match(&Default::default(), cx), Direction::Prev => this.select_prev_match(&Default::default(), cx),
Direction::Next => this.select_next_match(&Default::default(), cx), Direction::Next => this.select_next_match(&Default::default(), cx),
}, },
cx,
) )
}; };
let should_show_replace_input = self.replace_enabled && supported_options.replacement; let should_show_replace_input = self.replace_enabled && supported_options.replacement;
@ -231,8 +222,8 @@ impl Render for BufferSearchBar {
h_stack() h_stack()
.flex_none() .flex_none()
.child(ButtonGroup::new(vec![ .child(ButtonGroup::new(vec![
search_button_for_mode(SearchMode::Text, Some(Side::Left), cx), search_button_for_mode(SearchMode::Text),
search_button_for_mode(SearchMode::Regex, Some(Side::Right), cx), search_button_for_mode(SearchMode::Regex),
])) ]))
.when(supported_options.replacement, |this| { .when(supported_options.replacement, |this| {
this.child(super::toggle_replace_button(self.replace_enabled)) this.child(super::toggle_replace_button(self.replace_enabled))
@ -252,17 +243,15 @@ impl Render for BufferSearchBar {
h_stack() h_stack()
.gap_0p5() .gap_0p5()
.flex_none() .flex_none()
.child(self.render_action_button(cx)) .child(self.render_action_button())
.children(match_count) .children(match_count)
.child(nav_button_for_direction( .child(nav_button_for_direction(
ui::Icon::ChevronLeft, ui::Icon::ChevronLeft,
Direction::Prev, Direction::Prev,
cx,
)) ))
.child(nav_button_for_direction( .child(nav_button_for_direction(
ui::Icon::ChevronRight, ui::Icon::ChevronRight,
Direction::Next, Direction::Next,
cx,
)), )),
) )
@ -428,6 +417,46 @@ impl BufferSearchBar {
}) })
}); });
}); });
fn register_action<A: Action>(
workspace: &mut Workspace,
update: fn(&mut BufferSearchBar, &A, &mut ViewContext<BufferSearchBar>),
) {
workspace.register_action(move |workspace, action: &A, cx| {
workspace.active_pane().update(cx, move |this, cx| {
this.toolbar().update(cx, move |this, cx| {
if let Some(search_bar) = this.item_of_type::<BufferSearchBar>() {
search_bar.update(cx, move |this, cx| update(this, action, cx));
cx.notify();
}
})
});
});
}
register_action(workspace, |this, action: &ToggleCaseSensitive, cx| {
this.toggle_case_sensitive(action, cx);
});
register_action(workspace, |this, action: &ToggleWholeWord, cx| {
this.toggle_whole_word(action, cx);
});
register_action(workspace, |this, action: &ToggleReplace, cx| {
this.toggle_replace(action, cx);
});
register_action(workspace, |this, action: &ActivateRegexMode, cx| {
this.activate_search_mode(SearchMode::Regex, cx);
});
register_action(workspace, |this, action: &ActivateTextMode, cx| {
this.activate_search_mode(SearchMode::Text, cx);
});
register_action(workspace, |this, action: &SelectNextMatch, cx| {
this.select_next_match(action, cx);
});
register_action(workspace, |this, action: &SelectPrevMatch, cx| {
this.select_prev_match(action, cx);
});
register_action(workspace, |this, action: &SelectAllMatches, cx| {
this.select_all_matches(action, cx);
});
} }
pub fn new(cx: &mut ViewContext<Self>) -> Self { pub fn new(cx: &mut ViewContext<Self>) -> Self {
let query_editor = cx.build_view(|cx| Editor::single_line(cx)); let query_editor = cx.build_view(|cx| Editor::single_line(cx));
@ -587,7 +616,7 @@ impl BufferSearchBar {
self.update_matches(cx) self.update_matches(cx)
} }
fn render_action_button(&self, cx: &mut ViewContext<Self>) -> impl Component<Self> { fn render_action_button(&self) -> impl Component<Self> {
// let tooltip_style = theme.tooltip.clone(); // let tooltip_style = theme.tooltip.clone();
// let style = theme.search.action_button.clone(); // let style = theme.search.action_button.clone();
@ -686,13 +715,8 @@ impl BufferSearchBar {
.searchable_items_with_matches .searchable_items_with_matches
.get(&searchable_item.downgrade()) .get(&searchable_item.downgrade())
{ {
let new_match_index = searchable_item.match_index_for_direction( let new_match_index = searchable_item
matches, .match_index_for_direction(matches, index, direction, count, cx);
index,
direction,
dbg!(count),
cx,
);
searchable_item.update_matches(matches, cx); searchable_item.update_matches(matches, cx);
searchable_item.activate_match(new_match_index, matches, cx); searchable_item.activate_match(new_match_index, matches, cx);
} }
@ -765,7 +789,6 @@ impl BufferSearchBar {
} }
fn on_active_searchable_item_event(&mut self, event: &SearchEvent, cx: &mut ViewContext<Self>) { fn on_active_searchable_item_event(&mut self, event: &SearchEvent, cx: &mut ViewContext<Self>) {
dbg!(&event);
match event { match event {
SearchEvent::MatchesInvalidated => { SearchEvent::MatchesInvalidated => {
let _ = self.update_matches(cx); let _ = self.update_matches(cx);

View file

@ -10,12 +10,6 @@ pub enum SearchMode {
Regex, Regex,
} }
#[derive(Copy, Clone, Debug, PartialEq)]
pub(crate) enum Side {
Left,
Right,
}
impl SearchMode { impl SearchMode {
pub(crate) fn label(&self) -> &'static str { pub(crate) fn label(&self) -> &'static str {
match self { match self {

View file

@ -4,15 +4,12 @@ use gpui::{div, Action, Component, ViewContext};
use ui::{Button, ButtonVariant, IconButton}; use ui::{Button, ButtonVariant, IconButton};
use workspace::searchable::Direction; use workspace::searchable::Direction;
use crate::mode::{SearchMode, Side}; use crate::mode::SearchMode;
pub(super) fn render_nav_button<V: 'static>( pub(super) fn render_nav_button<V: 'static>(
icon: ui::Icon, icon: ui::Icon,
direction: Direction,
active: bool, active: bool,
on_click: impl Fn(&mut V, &mut ViewContext<V>) + 'static + Send + Sync, on_click: impl Fn(&mut V, &mut ViewContext<V>) + 'static + Send + Sync,
cx: &mut ViewContext<V>,
) -> impl Component<V> { ) -> impl Component<V> {
// let tooltip_style = cx.theme().tooltip.clone(); // let tooltip_style = cx.theme().tooltip.clone();
// let cursor_style = if active { // let cursor_style = if active {
@ -22,57 +19,13 @@ pub(super) fn render_nav_button<V: 'static>(
// }; // };
// enum NavButton {} // enum NavButton {}
IconButton::new("search-nav-button", icon).on_click(on_click) IconButton::new("search-nav-button", icon).on_click(on_click)
// MouseEventHandler::new::<NavButton, _>(direction as usize, cx, |state, cx| {
// let theme = cx.theme();
// let style = theme
// .search
// .nav_button
// .in_state(active)
// .style_for(state)
// .clone();
// let mut container_style = style.container.clone();
// let label = Label::new(icon, style.label.clone()).aligned().contained();
// container_style.corner_radii = match direction {
// Direction::Prev => CornerRadii {
// bottom_right: 0.,
// top_right: 0.,
// ..container_style.corner_radii
// },
// Direction::Next => CornerRadii {
// bottom_left: 0.,
// top_left: 0.,
// ..container_style.corner_radii
// },
// };
// if direction == Direction::Prev {
// // Remove right border so that when both Next and Prev buttons are
// // next to one another, there's no double border between them.
// container_style.border.right = false;
// }
// label.with_style(container_style)
// })
// .on_click(MouseButton::Left, on_click)
// .with_cursor_style(cursor_style)
// .with_tooltip::<NavButton>(
// direction as usize,
// tooltip.to_string(),
// Some(action),
// tooltip_style,
// cx,
// )
// .into_any()
} }
pub(crate) fn render_search_mode_button<V: 'static>( pub(crate) fn render_search_mode_button<V: 'static>(
mode: SearchMode, mode: SearchMode,
side: Option<Side>,
is_active: bool, is_active: bool,
on_click: impl Fn(&mut V, &mut ViewContext<V>) + 'static + Send + Sync, on_click: impl Fn(&mut V, &mut ViewContext<V>) + 'static + Send + Sync,
cx: &mut ViewContext<V>,
) -> Button<V> { ) -> Button<V> {
//let tooltip_style = cx.theme().tooltip.clone();
enum SearchModeButton {}
let button_variant = if is_active { let button_variant = if is_active {
ButtonVariant::Filled ButtonVariant::Filled
} else { } else {
@ -82,66 +35,6 @@ pub(crate) fn render_search_mode_button<V: 'static>(
Button::new(mode.label()) Button::new(mode.label())
.on_click(Arc::new(on_click)) .on_click(Arc::new(on_click))
.variant(button_variant) .variant(button_variant)
// v_stack()
// .border_2()
// .rounded_md()
// .when(side == Some(Side::Left), |this| {
// this.border_r_0().rounded_tr_none().rounded_br_none()
// })
// .when(side == Some(Side::Right), |this| {
// this.border_l_0().rounded_bl_none().rounded_tl_none()
// })
// .on_key_down(move |v, _, _, cx| on_click(v, cx))
// .child(Label::new(mode.label()))
// MouseEventHandler::new::<SearchModeButton, _>(mode.region_id(), cx, |state, cx| {
// let theme = cx.theme();
// let style = theme
// .search
// .mode_button
// .in_state(is_active)
// .style_for(state)
// .clone();
// let mut container_style = style.container;
// if let Some(button_side) = side {
// if button_side == Side::Left {
// container_style.border.left = true;
// container_style.corner_radii = CornerRadii {
// bottom_right: 0.,
// top_right: 0.,
// ..container_style.corner_radii
// };
// } else {
// container_style.border.left = false;
// container_style.corner_radii = CornerRadii {
// bottom_left: 0.,
// top_left: 0.,
// ..container_style.corner_radii
// };
// }
// } else {
// container_style.border.left = false;
// container_style.corner_radii = CornerRadii::default();
// }
// Label::new(mode.label(), style.text)
// .aligned()
// .contained()
// .with_style(container_style)
// .constrained()
// .with_height(theme.search.search_bar_row_height)
// })
// .on_click(MouseButton::Left, on_click)
// .with_cursor_style(CursorStyle::PointingHand)
// .with_tooltip::<SearchModeButton>(
// mode.region_id(),
// mode.tooltip_text().to_owned(),
// Some(mode.activate_action()),
// tooltip_style,
// cx,
// )
// .into_any()
} }
pub(crate) fn render_option_button_icon<V: 'static>( pub(crate) fn render_option_button_icon<V: 'static>(
@ -150,8 +43,6 @@ pub(crate) fn render_option_button_icon<V: 'static>(
id: usize, id: usize,
label: impl Into<Cow<'static, str>>, label: impl Into<Cow<'static, str>>,
action: Box<dyn Action>, action: Box<dyn Action>,
//on_click: impl Fn(MouseClick, &mut V, &mut EventContext<V>) + 'static,
cx: &mut ViewContext<V>,
) -> impl Component<V> { ) -> impl Component<V> {
//let tooltip_style = cx.theme().tooltip.clone(); //let tooltip_style = cx.theme().tooltip.clone();
div() div()

View file

@ -792,7 +792,7 @@ impl Item for TerminalView {
// } // }
fn breadcrumb_location(&self) -> ToolbarItemLocation { fn breadcrumb_location(&self) -> ToolbarItemLocation {
ToolbarItemLocation::PrimaryLeft { flex: None } ToolbarItemLocation::PrimaryLeft
} }
fn breadcrumbs(&self, _: &theme::Theme, cx: &AppContext) -> Option<Vec<BreadcrumbText>> { fn breadcrumbs(&self, _: &theme::Theme, cx: &AppContext) -> Option<Vec<BreadcrumbText>> {