notedeck

One damus client to rule them all
git clone git://jb55.com/notedeck
Log | Files | Refs | README | LICENSE

commit 13428af00603b6094b7cd9e8efe504082c9be66d
parent 944c9863f5308b34c416c2d4f7bc899a86853df6
Author: kernelkind <kernelkind@gmail.com>
Date:   Mon,  7 Apr 2025 17:44:32 -0400

move `close_button` to `ui/widgets.rs` as `x_button`

Signed-off-by: kernelkind <kernelkind@gmail.com>

Diffstat:
Mcrates/notedeck_columns/src/ui/mod.rs | 1+
Mcrates/notedeck_columns/src/ui/search_results.rs | 39+++------------------------------------
Acrates/notedeck_columns/src/ui/widgets.rs | 36++++++++++++++++++++++++++++++++++++
3 files changed, 40 insertions(+), 36 deletions(-)

diff --git a/crates/notedeck_columns/src/ui/mod.rs b/crates/notedeck_columns/src/ui/mod.rs @@ -19,6 +19,7 @@ pub mod thread; pub mod timeline; pub mod username; pub mod wallet; +pub mod widgets; pub use accounts::AccountsView; pub use mention::Mention; diff --git a/crates/notedeck_columns/src/ui/search_results.rs b/crates/notedeck_columns/src/ui/search_results.rs @@ -1,5 +1,4 @@ -use egui::emath::GuiRounding; -use egui::{vec2, FontId, Layout, Pos2, Rect, ScrollArea, Stroke, UiBuilder, Vec2b}; +use egui::{vec2, FontId, Layout, Pos2, Rect, ScrollArea, UiBuilder, Vec2b}; use nostrdb::{Ndb, ProfileRecord, Transaction}; use notedeck::{fonts::get_font_size, Images, NotedeckTextStyle}; use tracing::error; @@ -9,6 +8,7 @@ use crate::{ ui::anim::{AnimationHelper, ICON_EXPANSION_MULTIPLE}, }; +use super::widgets::x_button; use super::{profile::get_profile_url, ProfilePic}; pub struct SearchResultsView<'a> { @@ -90,7 +90,7 @@ impl<'a> SearchResultsView<'a> { UiBuilder::new() .max_rect(close_section_rect) .layout(Layout::right_to_left(egui::Align::Center)), - |ui| ui.add(close_button(button_resp.rect)).clicked(), + |ui| ui.add(x_button(button_resp.rect)).clicked(), ) .inner }; @@ -168,36 +168,3 @@ fn user_result<'a>( pfp_resp.union(helper.take_animation_response()) } } - -fn close_button(rect: egui::Rect) -> impl egui::Widget { - move |ui: &mut egui::Ui| -> egui::Response { - let max_width = rect.width(); - let helper = AnimationHelper::new_from_rect(ui, "user_search_close", rect); - - let fill_color = ui.visuals().text_color(); - - let radius = max_width / (2.0 * ICON_EXPANSION_MULTIPLE); - - let painter = ui.painter(); - let ppp = ui.ctx().pixels_per_point(); - let nw_edge = helper - .scale_pos_from_center(Pos2::new(-radius, radius)) - .round_to_pixel_center(ppp); - let se_edge = helper - .scale_pos_from_center(Pos2::new(radius, -radius)) - .round_to_pixel_center(ppp); - let sw_edge = helper - .scale_pos_from_center(Pos2::new(-radius, -radius)) - .round_to_pixel_center(ppp); - let ne_edge = helper - .scale_pos_from_center(Pos2::new(radius, radius)) - .round_to_pixel_center(ppp); - - let line_width = helper.scale_1d_pos(2.0); - - painter.line_segment([nw_edge, se_edge], Stroke::new(line_width, fill_color)); - painter.line_segment([ne_edge, sw_edge], Stroke::new(line_width, fill_color)); - - helper.take_animation_response() - } -} diff --git a/crates/notedeck_columns/src/ui/widgets.rs b/crates/notedeck_columns/src/ui/widgets.rs @@ -0,0 +1,36 @@ +use egui::{emath::GuiRounding, Pos2, Stroke}; + +use super::anim::{AnimationHelper, ICON_EXPANSION_MULTIPLE}; + +pub fn x_button(rect: egui::Rect) -> impl egui::Widget { + move |ui: &mut egui::Ui| -> egui::Response { + let max_width = rect.width(); + let helper = AnimationHelper::new_from_rect(ui, "user_search_close", rect); + + let fill_color = ui.visuals().text_color(); + + let radius = max_width / (2.0 * ICON_EXPANSION_MULTIPLE); + + let painter = ui.painter(); + let ppp = ui.ctx().pixels_per_point(); + let nw_edge = helper + .scale_pos_from_center(Pos2::new(-radius, radius)) + .round_to_pixel_center(ppp); + let se_edge = helper + .scale_pos_from_center(Pos2::new(radius, -radius)) + .round_to_pixel_center(ppp); + let sw_edge = helper + .scale_pos_from_center(Pos2::new(-radius, -radius)) + .round_to_pixel_center(ppp); + let ne_edge = helper + .scale_pos_from_center(Pos2::new(radius, radius)) + .round_to_pixel_center(ppp); + + let line_width = helper.scale_1d_pos(2.0); + + painter.line_segment([nw_edge, se_edge], Stroke::new(line_width, fill_color)); + painter.line_segment([ne_edge, sw_edge], Stroke::new(line_width, fill_color)); + + helper.take_animation_response() + } +}