Improve project search
This commit is contained in:
parent
7b0d59785c
commit
5adb54facd
1 changed files with 21 additions and 2 deletions
23
src/main.rs
23
src/main.rs
|
|
@ -225,6 +225,7 @@ pub struct App {
|
||||||
font_sizes: Vec<u16>,
|
font_sizes: Vec<u16>,
|
||||||
theme_names: Vec<String>,
|
theme_names: Vec<String>,
|
||||||
context_page: ContextPage,
|
context_page: ContextPage,
|
||||||
|
project_search_id: widget::Id,
|
||||||
project_search_value: String,
|
project_search_value: String,
|
||||||
project_search_result: Option<ProjectSearchResult>,
|
project_search_result: Option<ProjectSearchResult>,
|
||||||
watcher_opt: Option<notify::RecommendedWatcher>,
|
watcher_opt: Option<notify::RecommendedWatcher>,
|
||||||
|
|
@ -548,6 +549,7 @@ impl Application for App {
|
||||||
font_sizes,
|
font_sizes,
|
||||||
theme_names,
|
theme_names,
|
||||||
context_page: ContextPage::Settings,
|
context_page: ContextPage::Settings,
|
||||||
|
project_search_id: widget::Id::unique(),
|
||||||
project_search_value: String::new(),
|
project_search_value: String::new(),
|
||||||
project_search_result: None,
|
project_search_result: None,
|
||||||
watcher_opt: None,
|
watcher_opt: None,
|
||||||
|
|
@ -915,6 +917,9 @@ impl Application for App {
|
||||||
},
|
},
|
||||||
Message::ProjectSearchResult(project_search_result) => {
|
Message::ProjectSearchResult(project_search_result) => {
|
||||||
self.project_search_result = Some(project_search_result);
|
self.project_search_result = Some(project_search_result);
|
||||||
|
|
||||||
|
// Ensure input remains focused
|
||||||
|
return widget::text_input::focus(self.project_search_id.clone());
|
||||||
}
|
}
|
||||||
Message::ProjectSearchSubmit => {
|
Message::ProjectSearchSubmit => {
|
||||||
//TODO: cache projects outside of nav model?
|
//TODO: cache projects outside of nav model?
|
||||||
|
|
@ -1104,6 +1109,16 @@ impl Application for App {
|
||||||
self.core.window.show_context = true;
|
self.core.window.show_context = true;
|
||||||
}
|
}
|
||||||
self.set_context_title(context_page.title());
|
self.set_context_title(context_page.title());
|
||||||
|
|
||||||
|
// Ensure focus of correct input
|
||||||
|
if self.core.window.show_context {
|
||||||
|
match self.context_page {
|
||||||
|
ContextPage::ProjectSearch => {
|
||||||
|
return widget::text_input::focus(self.project_search_id.clone());
|
||||||
|
}
|
||||||
|
_ => {}
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
Message::ToggleWordWrap => {
|
Message::ToggleWordWrap => {
|
||||||
self.config.word_wrap = !self.config.word_wrap;
|
self.config.word_wrap = !self.config.word_wrap;
|
||||||
|
|
@ -1178,7 +1193,8 @@ impl Application for App {
|
||||||
let search_input = widget::text_input::search_input(
|
let search_input = widget::text_input::search_input(
|
||||||
&fl!("project-search"),
|
&fl!("project-search"),
|
||||||
&self.project_search_value,
|
&self.project_search_value,
|
||||||
);
|
)
|
||||||
|
.id(self.project_search_id.clone());
|
||||||
|
|
||||||
let items = match &self.project_search_result {
|
let items = match &self.project_search_result {
|
||||||
Some(project_search_result) => {
|
Some(project_search_result) => {
|
||||||
|
|
@ -1238,7 +1254,10 @@ impl Application for App {
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
widget::settings::view_column(items).into()
|
widget::column::with_children(items)
|
||||||
|
.spacing(16)
|
||||||
|
.padding([8, 0])
|
||||||
|
.into()
|
||||||
}
|
}
|
||||||
ContextPage::Settings => {
|
ContextPage::Settings => {
|
||||||
let app_theme_selected = match self.config.app_theme {
|
let app_theme_selected = match self.config.app_theme {
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue