From 1847d4f44fffea28a2b77221ec097304ee32bb95 Mon Sep 17 00:00:00 2001 From: Mikhail Mitrofanov Date: Tue, 15 Sep 2026 22:09:06 +0300 Subject: [PATCH] apply new style --- src/app.rs | 2 +- src/core/deck.rs | 16 ++++--- src/data/entities.rs | 4 +- src/data/repositories.rs | 2 +- src/data_provider/import.rs | 15 ++++--- src/data_provider/words.rs | 30 +++++++++----- src/pages/dictionary.rs | 71 +++++++++++++++++++++----------- src/pages/dictionary_quiz.rs | 4 +- src/pages/import.rs | 17 +++++--- src/pages/quiz.rs | 4 +- src/pages/repetition_settings.rs | 10 ++--- src/pages/repetitions.rs | 10 ++--- src/pages/word.rs | 29 +++++++------ src/styling.rs | 11 +++-- src/widgets/hard_mouse_area.rs | 14 +++++-- 15 files changed, 147 insertions(+), 92 deletions(-) diff --git a/src/app.rs b/src/app.rs index 84a3ada..514794d 100644 --- a/src/app.rs +++ b/src/app.rs @@ -1,5 +1,6 @@ use crate::data::repositories::Repository; use crate::data_provider::card_states::CardStateRepository; +use crate::data_provider::custom_fields::CustomFieldRepository; use crate::data_provider::decks::DeckRepository; use crate::data_provider::history::HistoryRepository; use crate::data_provider::settings::get_setting; @@ -17,7 +18,6 @@ use log::info; use parking_lot::{Mutex, RwLock}; use rusqlite::Connection; use std::sync::Arc; -use crate::data_provider::custom_fields::CustomFieldRepository; pub const USER_FONT: Font = Font::with_name("Noto Sans JP"); diff --git a/src/core/deck.rs b/src/core/deck.rs index 410eea7..7366068 100644 --- a/src/core/deck.rs +++ b/src/core/deck.rs @@ -1,21 +1,21 @@ -use std::collections::HashMap; use crate::app::AppState; use crate::core::srs::OrderModule::{Fsrs, RandomSRS, SemiRandomSRS, WorstWordsSRS}; use crate::core::srs::{ FsrsModule, OrderMode, OrderModule, RandomSRSModule, SRSModule, SemiRandomSRSModule, WordOpenMode, WorstWordsSRSModule, }; +use crate::data::Id; use crate::data::entities::*; use crate::data::repositories::Repository; use crate::data_provider::card_states::CardStateRepositoryInner; use crate::notification::MaybeError; use chrono::Utc; +use litemap::LiteMap; use log::info; use rhai::{Engine, Scope}; +use std::collections::HashMap; use std::sync::Arc; use std::time::Instant; -use litemap::LiteMap; -use crate::data::Id; #[derive(Clone)] pub struct DeckData { @@ -28,7 +28,7 @@ pub struct DeckData { settings: DeckSettings, } -struct DisplayStyle{ +struct DisplayStyle { properties: LiteMap, } @@ -162,7 +162,13 @@ impl DeckData { if let Ok(ast) = ast { let groups = state.word_groups.read().iter().cloned().collect::>(); let dictionary = &state.dictionary.read(); - let fields : HashMap = HashMap::from_iter(state.custom_fields.read().iter().map(|f| (f.id, f.identifier.clone()))); + let fields: HashMap = HashMap::from_iter( + state + .custom_fields + .read() + .iter() + .map(|f| (f.id, f.identifier.clone())), + ); let query = dictionary.query_par(Arc::new(move |word| { let mut more = rhai::Map::new(); for kv in &word.additional { diff --git a/src/data/entities.rs b/src/data/entities.rs index 87f20b3..81895d0 100644 --- a/src/data/entities.rs +++ b/src/data/entities.rs @@ -1,5 +1,5 @@ -use crate::core::srs::{WordOpenMode, FADE_PER_DAY, MAX_SCORE}; -use crate::data::{Id, INVALID_ID}; +use crate::core::srs::{FADE_PER_DAY, MAX_SCORE, WordOpenMode}; +use crate::data::{INVALID_ID, Id}; use crate::data_provider::history::HistoryRepositoryInner; use chrono::{DateTime, Local, NaiveDate, Utc}; use fsrs::MemoryState; diff --git a/src/data/repositories.rs b/src/data/repositories.rs index 6f6a39e..2c0d6d1 100644 --- a/src/data/repositories.rs +++ b/src/data/repositories.rs @@ -215,7 +215,7 @@ impl, D: DbLayer> Qu pub fn len(&self) -> usize { self.cache.len() } - + pub fn get(&self, index: usize) -> Option> { self.cache.get(index).cloned() } diff --git a/src/data_provider/import.rs b/src/data_provider/import.rs index 9c12011..4043dcb 100644 --- a/src/data_provider/import.rs +++ b/src/data_provider/import.rs @@ -1,11 +1,11 @@ use crate::helpers::into_result; use crate::notification::NotificationData; use crate::notification::NotificationData::IncorrectAnkiFile; +use crate::pages::import::AnkiSchema; use log::info; use rusqlite::Connection; use serde_json::Value; use std::collections::BTreeMap; -use crate::pages::import::AnkiSchema; #[derive(Clone)] pub struct ImportData(pub(crate) Vec); @@ -26,14 +26,13 @@ pub struct ImportNote { pub fields: Vec, } -pub fn load_groups(connection: &Connection, schema: AnkiSchema) -> Result { +pub fn load_groups( + connection: &Connection, + schema: AnkiSchema, +) -> Result { match schema { - AnkiSchema::Old => { - load_old_schema(connection) - } - AnkiSchema::Beta => { - load_new_schema(connection) - } + AnkiSchema::Old => load_old_schema(connection), + AnkiSchema::Beta => load_new_schema(connection), } } diff --git a/src/data_provider/words.rs b/src/data_provider/words.rs index 75f049f..bbfedc3 100644 --- a/src/data_provider/words.rs +++ b/src/data_provider/words.rs @@ -1,6 +1,6 @@ +use crate::data::Id; use crate::data::entities::WordData; use crate::data::repositories::{DataRepository, DataRepositoryInner}; -use crate::data::Id; use crate::data_provider::{SqliteDbLayer, TableAccessQuerySet}; use litemap::LiteMap; use rusqlite::{Error, Params, Row}; @@ -70,24 +70,34 @@ fn additional_to_string(map: &LiteMap) -> String { } fn additional_from_string_temp(data: String) -> LiteMap { - - let pre_map : LiteMap = serde_json::from_str(data.as_str()).unwrap(); - LiteMap::from(pre_map.iter().map(|(k, v)| (match k.as_str() { - "reading" => Id(1), - "description" => Id(2), - "context" => Id(3), - &_ => Id(0) }, v.to_string())).collect()) + let pre_map: LiteMap = serde_json::from_str(data.as_str()).unwrap(); + LiteMap::from( + pre_map + .iter() + .map(|(k, v)| { + ( + match k.as_str() { + "reading" => Id(1), + "description" => Id(2), + "context" => Id(3), + &_ => Id(0), + }, + v.to_string(), + ) + }) + .collect(), + ) } fn additional_from_string(data: String) -> LiteMap { if data.is_empty() { - return LiteMap::new() + return LiteMap::new(); } let parts = data.split('').collect::>(); let chunks = parts.chunks(2).collect::>(); let mut map = LiteMap::with_capacity(parts.len()); for part in &chunks { - let id : Id = part[0].parse().unwrap(); + let id: Id = part[0].parse().unwrap(); let value: String = part[1].to_string(); map.insert(id, value); } diff --git a/src/pages/dictionary.rs b/src/pages/dictionary.rs index e8b54e9..1b70515 100644 --- a/src/pages/dictionary.rs +++ b/src/pages/dictionary.rs @@ -1,7 +1,7 @@ use crate::app::AppState; +use crate::data::Id; use crate::data::entities::{EntityHandle, WordData, WordGroup}; use crate::data::repositories::{Query, Repository}; -use crate::data::Id; use crate::data_provider::word_groups::{WordGroupDataLayer, WordGroupRepositoryInner}; use crate::data_provider::words::WordDataLayer; use crate::data_provider::words::WordRepositoryInner; @@ -13,10 +13,10 @@ use crate::pages::dictionary::SelectionChangeDirection::*; use crate::pages::dictionary_quiz::DictionaryQuizState; use crate::pages::import::ImportState; use crate::pages::word::{WordEditor, WordMessage}; -use crate::push_error_task; use crate::styling::*; use crate::widgets::hard_mouse_area::hard_mouse_area; use crate::{jl_button, push_error}; +use crate::{jl_text_input, push_error_task}; use chrono::{DateTime, TimeDelta, Utc}; use hashbrown::{HashMap, HashSet}; use iced::alignment::Vertical::Center; @@ -24,15 +24,16 @@ use iced::widget::button::Style; use iced::widget::button::{danger, text}; use iced::widget::operation::focus; use iced::widget::space::horizontal; -use iced::widget::text_input::default; use iced::widget::text_input::Status::Active; +use iced::widget::text_input::default; use iced::widget::*; use iced::{Border, Color, Shadow, Task}; +use iced_core::Length::{Fill, FillPortion}; +use iced_core::border::Radius; use iced_core::keyboard; +use iced_core::keyboard::Key::Named; use iced_core::keyboard::key::Physical::Code; use iced_core::keyboard::{Event, Modifiers}; -use iced_core::keyboard::Key::Named; -use iced_core::Length::{Fill, FillPortion}; use log::info; use rand::random_range; use std::ops::Add; @@ -81,7 +82,7 @@ pub enum DictionaryMessage { EditField(String), ChangeSelectedField(SelectionChangeDirection), EditorAction(WordMessage), - ExtendedWordEdited + ExtendedWordEdited, } #[derive(Clone, PartialEq, Eq, Hash, Copy)] @@ -253,7 +254,9 @@ impl NavigatedPage for DictionaryState { let _ = dictionary.save(&mut handle); if reload_query { self.displayed_words_query.load(&dictionary); - if let Some(selected) = self.selected_cell && selected.0 == original { + if let Some(selected) = self.selected_cell + && selected.0 == original + { self.selected_cell = Some((handle, selected.1, selected.2)); if self.word_editor.is_some() { self.word_editor = Some(self.editor_for_word(handle)); @@ -267,7 +270,10 @@ impl NavigatedPage for DictionaryState { GotoImport => {} SelectField(e, f, index) => { info!("Editing word {}", e.id); - if self.word_editor.is_some() && let Some(selected) = &self.selected_cell && selected.0 != e { + if self.word_editor.is_some() + && let Some(selected) = &self.selected_cell + && selected.0 != e + { self.word_editor = Some(self.editor_for_word(e)); } self.selected_cell = Some((e, f, index)); @@ -349,18 +355,16 @@ impl NavigatedPage for DictionaryState { } self.displayed_words_query.load(&dictionary); - self.selected_cell = None; - self.word_editor = None; - + self.selected_cell = None; + self.word_editor = None; } EditorAction(action) => { let result = self.word_editor.as_mut().unwrap().update(action); if let Some(result) = result { match result { - DeleteWord(_) | - ExtendedWordEdited => { + DeleteWord(_) | ExtendedWordEdited => { return Task::done(RootMessage::Dictionary(result)); - }, + } _ => {} } @@ -387,7 +391,8 @@ impl NavigatedPage for DictionaryState { button("Импорт").style(text).on_press(GotoImport), ] ] - .spacing(5).width(FillPortion(4)), + .spacing(5) + .width(FillPortion(4)), self.right_panel(), ] .spacing(DEFAULT_SPACING) @@ -425,7 +430,9 @@ impl DictionaryState { } fn editor_for_word(&self, handle: EntityHandle) -> WordEditor { - WordEditor::new(handle, self.state.clone()).on_delete(DeleteWord(handle)).on_edit(ExtendedWordEdited) + WordEditor::new(handle, self.state.clone()) + .on_delete(DeleteWord(handle)) + .on_edit(ExtendedWordEdited) } fn init(&mut self) { @@ -580,7 +587,9 @@ impl DictionaryState { fn right_panel(&self) -> iced::Element<'_, DictionaryMessage> { if let Some(editor) = &self.word_editor { - container(editor.view().map(EditorAction)).width(FillPortion(3)).into() + container(editor.view().map(EditorAction)) + .width(FillPortion(3)) + .into() } else { self.filters() } @@ -590,7 +599,7 @@ impl DictionaryState { let dict = &self.state.dictionary.read(); iced::widget::column![ - text_input("Поиск", &self.search) + jl_text_input!("Поиск", &self.search) .on_input(Search) .width(Fill), text!("Всего слов: {}", dict.len()), @@ -709,6 +718,7 @@ impl DictionaryState { fn selection_editor(&self) -> iced::Element<'_, DictionaryMessage> { let mut display = "".to_string(); + let mut editable = false; if let Some(selected) = self.selected_cell.as_ref() { let mut dictionary = self.state.dictionary.write(); let word = dictionary.get_mut_static(selected.0).unwrap(); @@ -724,12 +734,21 @@ impl DictionaryState { display = word.tags.clone(); } } + editable = true; } - text_input("", display.as_str()) + let mut field = jl_text_input!("", display.as_str()) .width(Fill) .id(iced::widget::Id::new("editor")) - .on_input(EditField) - .into() + .style(|theme, status| { + let mut default = default(theme, status); + default.border.radius = Radius::new(0); + default + }); + if editable { + field = field.on_input(EditField) + } + + field.into() } fn groups_panel(&self) -> iced::Element<'_, DictionaryMessage> { @@ -754,7 +773,7 @@ impl DictionaryState { scrollable(row).width(Fill).horizontal(), row![ jl_button!("⇳").on_press(ChangeDirection), - text_input("Название группы слов", &group.name) + jl_text_input!("Название группы слов", &group.name) .on_input(EditGroup) .width(250) .on_submit(SaveGroup), @@ -806,18 +825,20 @@ impl KeyPressedPage for DictionaryState { Task::done(RootMessage::Dictionary(ChangeSelectedField(Previous))) } keyboard::key::Code::Tab => { - return if *mods == Modifiers::CTRL && let Some(selected) = self.selected_cell { + return if *mods == Modifiers::CTRL + && let Some(selected) = self.selected_cell + { Task::done(RootMessage::Dictionary(ExtendedEdit(selected.0))) } else if let Named(keyboard::key::Named::Alt) = modifier { Task::done(RootMessage::Dictionary(ChangeSelectedField(Backward))) } else { Task::done(RootMessage::Dictionary(ChangeSelectedField(Forward))) - } + }; } keyboard::key::Code::Escape => { if self.word_editor.is_some() { self.word_editor = None; - }else if self.selected_cell.is_some() { + } else if self.selected_cell.is_some() { self.selected_cell = None; } diff --git a/src/pages/dictionary_quiz.rs b/src/pages/dictionary_quiz.rs index dbfb34d..11885c6 100644 --- a/src/pages/dictionary_quiz.rs +++ b/src/pages/dictionary_quiz.rs @@ -1,7 +1,6 @@ use crate::app::AppState; use crate::data::entities::{EntityHandle, WordData}; use crate::data::repositories::Repository; -use crate::jl_button; use crate::navigation::Page::PreviousPage; use crate::navigation::RootMessage; use crate::navigation::*; @@ -9,6 +8,7 @@ use crate::pages::dictionary::split_with_coma; use crate::pages::dictionary_quiz::DictionaryQuizMessage::*; use crate::pages::quiz::Score; use crate::styling::*; +use crate::{jl_button, jl_text_input}; use iced::Background::Color; use iced::border::Radius; use iced::widget::container::Style; @@ -76,7 +76,7 @@ impl NavigatedPage for DictionaryQuizState { ] .align_x(alignment::Horizontal::Center) .spacing(5), - text_input("Перевод", &self.answer) + jl_text_input!("Перевод", &self.answer) .size(28) .width(250) .on_input(AnswerChanged) diff --git a/src/pages/import.rs b/src/pages/import.rs index 0de44c1..eb5f4a8 100644 --- a/src/pages/import.rs +++ b/src/pages/import.rs @@ -9,9 +9,9 @@ use crate::navigation::{NavigatedPage, Page, RootMessage}; use crate::notification::NotificationData::{CompressError, OpenFileError}; use crate::notification::{MaybeError, NotificationData}; use crate::pages::import::ImportMessage::*; -use crate::push_error; use crate::styling::*; use crate::{jl_button, push_error_task}; +use crate::{jl_text_input, push_error}; use iced::widget::button::danger; use iced::widget::container::success; use iced::widget::{ @@ -269,7 +269,7 @@ impl ImportState { self.available_properties(), button("Добавить напрямую").on_press(SetupDirect), row![ - text_input("Пользовательское поле", &self.custom_property_name) + jl_text_input!("Пользовательское поле", &self.custom_property_name) .on_input(EditCustomProperty), button("Установить привязку").on_press(SetupCustomProperty) ] @@ -297,7 +297,7 @@ impl ImportState { .on_toggle(SwitchSkipEmpty), column![ text!("Разделитель при множественном объединении"), - text_input("", &self.separator).on_input(EditSeparator) + jl_text_input!("", &self.separator).on_input(EditSeparator) ] ] .spacing(DEFAULT_SPACING) @@ -582,7 +582,11 @@ impl ImportState { .iter() .map(|field| field.identifier.clone()) .collect(); - current_fields.append(&mut vec!["key".to_string(), "value".to_string(), "tags".to_string()]); + current_fields.append(&mut vec![ + "key".to_string(), + "value".to_string(), + "tags".to_string(), + ]); for (field, _) in import_group { if current_fields.contains(field) { continue; @@ -600,5 +604,6 @@ impl ImportState { } pub enum AnkiSchema { - Old, Beta -} \ No newline at end of file + Old, + Beta, +} diff --git a/src/pages/quiz.rs b/src/pages/quiz.rs index 8a6fee1..a38763a 100644 --- a/src/pages/quiz.rs +++ b/src/pages/quiz.rs @@ -1,10 +1,10 @@ use crate::app::USER_FONT; use crate::core::kana_set::KanaSet; -use crate::jl_button; use crate::navigation::Page::PreviousPage; use crate::navigation::{NavigatedPage, Page, RootMessage}; use crate::pages::quiz::QuizMessage::*; use crate::styling::*; +use crate::{jl_button, jl_text_input}; use iced::widget::*; use iced::{Element, Fill, Task, alignment}; use rand::seq::SliceRandom; @@ -77,7 +77,7 @@ impl NavigatedPage for QuizState { ] .align_y(alignment::Vertical::Center) .spacing(20), - text_input("Романдзи", &self.current_roman) + jl_text_input!("Романдзи", &self.current_roman) .size(28) .width(150) .on_input(ContentChanged), diff --git a/src/pages/repetition_settings.rs b/src/pages/repetition_settings.rs index c86af10..3ab4cb2 100644 --- a/src/pages/repetition_settings.rs +++ b/src/pages/repetition_settings.rs @@ -2,12 +2,12 @@ use crate::app::AppState; use crate::core::deck::DeckData; use crate::data::entities::{DeckSettings, EntityHandle}; use crate::data::repositories::{BatchedRepository, Repository}; -use crate::jl_button; use crate::navigation::Page::PreviousPage; use crate::navigation::{NavigatedPage, Page, RootMessage}; use crate::notification::MaybeError; use crate::pages::repetition_settings::RepetitionSettingsMessage::*; use crate::styling::*; +use crate::{jl_button, jl_text_input}; use crate::{push_error, push_error_task}; use iced::widget::button::danger; use iced::widget::space::horizontal; @@ -143,22 +143,22 @@ impl NavigatedPage for RepetitionSettingsState { column![ column![ text!("Название набора"), - text_input("", &self.settings_data.name).on_input(SetName), + jl_text_input!("", &self.settings_data.name).on_input(SetName), ] .spacing(QUARTER_SPACING), column![ text!("Передняя сторона"), - text_input("", &self.settings_data.forward).on_input(SetForward), + jl_text_input!("", &self.settings_data.forward).on_input(SetForward), ] .spacing(QUARTER_SPACING), column![ text!("Задняя сторона"), - text_input("", &self.settings_data.backward).on_input(SetBackward), + jl_text_input!("", &self.settings_data.backward).on_input(SetBackward), ] .spacing(QUARTER_SPACING), column![ text!("Фильтр"), - text_input("", &self.settings_data.filter) + jl_text_input!("", &self.settings_data.filter) .style(|x, status| { let mut primary = Theme::default()(x, status); if !self.correct_filter { diff --git a/src/pages/repetitions.rs b/src/pages/repetitions.rs index 34691d9..81ff63e 100644 --- a/src/pages/repetitions.rs +++ b/src/pages/repetitions.rs @@ -3,7 +3,6 @@ use crate::core::deck::DeckData; use crate::core::srs::{AppendMode, OrderMode}; use crate::data::entities::{CardState, DeckSettings, EntityHandle, WordData}; use crate::data::repositories::{BatchedRepository, Repository}; -use crate::jl_button; use crate::navigation::Page::{History, PreviousPage, Repetition, RepetitionSettings}; use crate::navigation::{NavigatedPage, Page, RootMessage}; use crate::notification::MaybeError; @@ -14,6 +13,7 @@ use crate::pages::repetitions::RepetitionsMessage::*; use crate::push_error; use crate::push_error_task; use crate::styling::*; +use crate::{jl_button, jl_text_input}; use chrono::{Days, Local, Utc}; use hashbrown::HashSet; pub use iced::widget::button::{Catalog, Style}; @@ -303,7 +303,7 @@ impl RepetitionsState { column![ text!("Название набора"), row![ - text_input("", &deck.name).on_input(SetName), + jl_text_input!("", &deck.name).on_input(SetName), button(svg(Handle::from_memory(SETTINGS_ICON))) .width(43) .on_press(GoToSettings), @@ -316,17 +316,17 @@ impl RepetitionsState { column![ column![ text!("Передняя сторона"), - text_input("", &deck.forward).on_input(SetForward), + jl_text_input!("", &deck.forward).on_input(SetForward), ] .spacing(QUARTER_SPACING), column![ text!("Задняя сторона"), - text_input("", &deck.backward).on_input(SetBackward), + jl_text_input!("", &deck.backward).on_input(SetBackward), ] .spacing(QUARTER_SPACING), column![ text!("Фильтр"), - text_input("", &deck.filter).on_input(SetFilter), + jl_text_input!("", &deck.filter).on_input(SetFilter), jl_button!("Проверить фильтр").on_press(TryFilter), self.count_view(deck), ] diff --git a/src/pages/word.rs b/src/pages/word.rs index 3793721..dd952e3 100644 --- a/src/pages/word.rs +++ b/src/pages/word.rs @@ -2,6 +2,7 @@ use crate::app::AppState; use crate::data::Id; use crate::data::entities::{CustomField, EntityHandle, WordData}; use crate::data::repositories::Repository; +use crate::jl_text_input; use crate::pages::word::WordMessage::*; use crate::styling::*; use iced::widget::button::danger; @@ -65,23 +66,29 @@ impl WordEditor { } let mut col = iced::widget::column![ - column![text!("Ключ"), text_input("key", &word.key).on_input(SetKey),] - .spacing(QUARTER_SPACING), + column![ + text!("Ключ"), + jl_text_input!("key", &word.key).on_input(SetKey), + ] + .spacing(QUARTER_SPACING), column![ text!("Значение"), - text_input("value", &word.value).on_input(SetValue), + jl_text_input!("value", &word.value).on_input(SetValue), ] .spacing(QUARTER_SPACING), column![ text!("Теги"), - text_input("tags", &word.tags).on_input(SetTags), + jl_text_input!("tags", &word.tags).on_input(SetTags), ] .spacing(QUARTER_SPACING), rule::horizontal(2), - scrollable(fast_add.padding(Padding{ - - - top: 0.0 , right: 0.0 , bottom: 4.0 , left: 0.0 , })).horizontal(), + scrollable(fast_add.padding(Padding { + top: 0.0, + right: 0.0, + bottom: 4.0, + left: 0.0, + })) + .horizontal(), ]; for more in &word.additional { @@ -140,12 +147,10 @@ impl WordEditor { column![ text!("{}", name), row![ - text_input(name, value) + jl_text_input!(name, value) .on_input(move |string| SetAdditional(id, string)) .width(Fill), - button("-") - .on_press(RemoveAdditional(id)) - .style(danger), + button("-").on_press(RemoveAdditional(id)).style(danger), ] .spacing(QUARTER_SPACING), ] diff --git a/src/styling.rs b/src/styling.rs index acdd999..811b9fb 100644 --- a/src/styling.rs +++ b/src/styling.rs @@ -10,7 +10,7 @@ pub const HALF_SPACING: f32 = DEFAULT_SPACING / 2.0; pub const QUARTER_SPACING: f32 = DEFAULT_SPACING / 4.0; pub const DEFAULT_SPACING: f32 = 16.0; pub const ACCENT_FONT_SIZE: f32 = 22.0; -pub const BUTTON_RADIUS: f32 = 8.0; +pub const BUTTON_RADIUS: f32 = 6.0; pub const SETTINGS_ICON: &[u8] = include_bytes!("../settings_icon.svg"); @@ -24,7 +24,10 @@ pub fn jl_button_style(theme: &Theme, status: Status) -> Style { style } -pub fn jl_text_input_style(theme: &Theme, status: iced::widget::text_input::Status) -> iced::widget::text_input::Style { +pub fn jl_text_input_style( + theme: &Theme, + status: iced::widget::text_input::Status, +) -> iced::widget::text_input::Style { let mut style = iced::widget::text_input::default(theme, status); style.border.radius = Radius::new(BUTTON_RADIUS); style @@ -45,8 +48,8 @@ macro_rules! jl_button { #[macro_export] macro_rules! jl_text_input { - ($content:expr) => { - iced::widget::text_input($content).style($crate::styling::jl_text_input_style) + ($placeholder:expr, $content:expr) => { + iced::widget::text_input($placeholder, $content).style($crate::styling::jl_text_input_style) }; } diff --git a/src/widgets/hard_mouse_area.rs b/src/widgets/hard_mouse_area.rs index 0d9cccb..3f4d5a6 100644 --- a/src/widgets/hard_mouse_area.rs +++ b/src/widgets/hard_mouse_area.rs @@ -215,7 +215,9 @@ where shell: &mut Shell<'_, Message>, viewport: &Rectangle, ) { - if self.on_move.is_none() && let Event::Mouse(mouse::Event::CursorMoved {..}) = event { + if self.on_move.is_none() + && let Event::Mouse(mouse::Event::CursorMoved { .. }) = event + { self.content.as_widget_mut().update( &mut tree.children[0], event, @@ -228,7 +230,9 @@ where ); } - if self.on_enter.is_none() && let Event::Mouse(mouse::Event::CursorEntered {..}) = event { + if self.on_enter.is_none() + && let Event::Mouse(mouse::Event::CursorEntered { .. }) = event + { self.content.as_widget_mut().update( &mut tree.children[0], event, @@ -240,7 +244,9 @@ where viewport, ); } - if self.on_exit.is_none() && let Event::Mouse(mouse::Event::CursorLeft {..}) = event { + if self.on_exit.is_none() + && let Event::Mouse(mouse::Event::CursorLeft { .. }) = event + { self.content.as_widget_mut().update( &mut tree.children[0], event, @@ -252,7 +258,7 @@ where viewport, ); } - + if shell.is_event_captured() { return; }