diff --git a/src/main.rs b/src/main.rs index 82d7e67..7f7b7f1 100644 --- a/src/main.rs +++ b/src/main.rs @@ -158,15 +158,15 @@ impl Application for Window { type Theme = Theme; fn new(_flags: ()) -> (Self, Command) { - let mut tab_model = segmented_button::Model::builder() - .build(); + let mut tab_model = segmented_button::Model::builder().build(); let mut tab = Tab::new(); if let Some(arg) = env::args().nth(1) { tab.open(PathBuf::from(arg)); } - tab_model.insert() + tab_model + .insert() .text(tab.title()) .icon("text-x-generic") .data(tab) @@ -177,7 +177,7 @@ impl Application for Window { theme: Theme::Dark, tab_model, }, - Command::none() + Command::none(), ) } @@ -199,13 +199,14 @@ impl Application for Window { let mut tab = Tab::new(); tab.open(path); - self.tab_model.insert() + self.tab_model + .insert() .text(tab.title()) .icon("text-x-generic") .data(tab) .activate(); } - }, + } Message::Save => { let mut title_opt = None; @@ -216,20 +217,20 @@ impl Application for Window { title_opt = Some(tab.title()); } tab.save(); - }, + } None => { log::info!("TODO: NO TAB OPEN"); - }, + } } if let Some(title) = title_opt { self.tab_model.text_set(self.tab_model.active(), title); } - }, + } Message::Tab(entity) => self.tab_model.activate(entity), Message::Todo => { log::info!("TODO"); - }, + } } Command::none() @@ -241,24 +242,20 @@ impl Application for Window { match item { "Open" => Message::Open, "Save" => Message::Save, - _ => Message::Todo + _ => Message::Todo, } }) - .padding(8) - .placeholder("File") - , + .padding(8) + .placeholder("File"), MenuList::new(vec!["Todo"], None, |_| Message::Todo) .padding(8) - .placeholder("Edit") - , + .placeholder("Edit"), MenuList::new(vec!["Todo"], None, |_| Message::Todo) .padding(8) - .placeholder("View") - , + .placeholder("View"), MenuList::new(vec!["Todo"], None, |_| Message::Todo) .padding(8) - .placeholder("Help") - , + .placeholder("Help"), ] .align_items(Alignment::Start) .padding(4) @@ -274,15 +271,16 @@ impl Application for Window { tab_bar, match self.active_tab() { Some(tab) => { - text_box(&tab.editor) - .padding(8) - }, + text_box(&tab.editor).padding(8) + } None => { panic!("TODO: No tab open"); - }, + } } - ].padding([0, 16]) - ].into(); + ] + .padding([0, 16]) + ] + .into(); // Uncomment to debug layout: //content.explain(Color::WHITE) diff --git a/src/menu_list.rs b/src/menu_list.rs index b071552..3ed0905 100644 --- a/src/menu_list.rs +++ b/src/menu_list.rs @@ -14,8 +14,7 @@ use cosmic::iced_native::widget::container; use cosmic::iced_native::widget::scrollable; use cosmic::iced_native::widget::tree::{self, Tree}; use cosmic::iced_native::{ - Clipboard, Element, Layout, Length, Padding, Point, Rectangle, Shell, Size, - Widget, + Clipboard, Element, Layout, Length, Padding, Point, Rectangle, Shell, Size, Widget, }; use std::borrow::Cow; @@ -98,12 +97,8 @@ where T: ToString + Eq, [T]: ToOwned>, Renderer: text::Renderer, - Renderer::Theme: StyleSheet - + scrollable::StyleSheet - + menu::StyleSheet - + container::StyleSheet, - ::Style: - From<::Style>, + Renderer::Theme: StyleSheet + scrollable::StyleSheet + menu::StyleSheet + container::StyleSheet, + ::Style: From<::Style>, { /// The default padding of a [`MenuList`]. pub const DEFAULT_PADDING: Padding = Padding::new(5); @@ -159,28 +154,20 @@ where } /// Sets the style of the [`MenuList`]. - pub fn style( - mut self, - style: impl Into<::Style>, - ) -> Self { + pub fn style(mut self, style: impl Into<::Style>) -> Self { self.style = style.into(); self } } -impl<'a, T: 'a, Message, Renderer> Widget - for MenuList<'a, T, Message, Renderer> +impl<'a, T: 'a, Message, Renderer> Widget for MenuList<'a, T, Message, Renderer> where T: Clone + ToString + Eq + 'static, [T]: ToOwned>, Message: 'a, Renderer: text::Renderer + 'a, - Renderer::Theme: StyleSheet - + scrollable::StyleSheet - + menu::StyleSheet - + container::StyleSheet, - ::Style: - From<::Style>, + Renderer::Theme: StyleSheet + scrollable::StyleSheet + menu::StyleSheet + container::StyleSheet, + ::Style: From<::Style>, { fn tag(&self) -> tree::Tag { tree::Tag::of::>() @@ -198,11 +185,7 @@ where Length::Shrink } - fn layout( - &self, - renderer: &Renderer, - limits: &layout::Limits, - ) -> layout::Node { + fn layout(&self, renderer: &Renderer, limits: &layout::Limits) -> layout::Node { layout( renderer, limits, @@ -300,12 +283,8 @@ where [T]: ToOwned>, Message: 'a, Renderer: text::Renderer + 'a, - Renderer::Theme: StyleSheet - + scrollable::StyleSheet - + menu::StyleSheet - + container::StyleSheet, - ::Style: - From<::Style>, + Renderer::Theme: StyleSheet + scrollable::StyleSheet + menu::StyleSheet + container::StyleSheet, + ::Style: From<::Style>, { fn from(menu_list: MenuList<'a, T, Message, Renderer>) -> Self { Self::new(menu_list) @@ -381,10 +360,7 @@ where }; let size = { - let intrinsic = Size::new( - max_width as f32, - f32::from(text_size), - ); + let intrinsic = Size::new(max_width as f32, f32::from(text_size)); limits.resolve(intrinsic).pad(padding) }; @@ -420,8 +396,7 @@ where event::Status::Captured } else if layout.bounds().contains(cursor_position) { state.is_open = true; - state.hovered_option = - options.iter().position(|option| Some(option) == selected); + state.hovered_option = options.iter().position(|option| Some(option) == selected); event::Status::Captured } else { @@ -493,10 +468,7 @@ where } /// Returns the current [`mouse::Interaction`] of a [`MenuList`]. -pub fn mouse_interaction( - layout: Layout<'_>, - cursor_position: Point, -) -> mouse::Interaction { +pub fn mouse_interaction(layout: Layout<'_>, cursor_position: Point) -> mouse::Interaction { let bounds = layout.bounds(); let is_mouse_over = bounds.contains(cursor_position); @@ -522,12 +494,8 @@ where T: Clone + ToString, Message: 'a, Renderer: text::Renderer + 'a, - Renderer::Theme: StyleSheet - + scrollable::StyleSheet - + menu::StyleSheet - + container::StyleSheet, - ::Style: - From<::Style>, + Renderer::Theme: StyleSheet + scrollable::StyleSheet + menu::StyleSheet + container::StyleSheet, + ::Style: From<::Style>, { if state.is_open { let bounds = layout.bounds(); @@ -548,8 +516,7 @@ where let labels = options.iter().map(ToString::to_string); - let labels_width = - labels.map(|label| measure(&label)).max().unwrap_or(100); + let labels_width = labels.map(|label| measure(&label)).max().unwrap_or(100); labels_width as u16 + padding.left + padding.right }; @@ -612,8 +579,7 @@ pub fn draw( let label = selected.map(ToString::to_string); if let Some(label) = label.as_deref().or(placeholder) { - let text_size = - f32::from(text_size.unwrap_or_else(|| renderer.default_size())); + let text_size = f32::from(text_size.unwrap_or_else(|| renderer.default_size())); renderer.fill_text(Text { content: label,