From b9bd773940950dc07b2cfa7c62c2588b0a653017 Mon Sep 17 00:00:00 2001 From: Hojjat Abdollahi Date: Thu, 19 Feb 2026 10:06:45 -0700 Subject: [PATCH] feat: ellipsize text (#1132) --- iced | 2 +- src/widget/dropdown/menu/mod.rs | 1 + src/widget/dropdown/multi/menu.rs | 2 ++ src/widget/dropdown/multi/widget.rs | 3 +++ src/widget/dropdown/widget.rs | 3 +++ src/widget/segmented_button/widget.rs | 4 +++- src/widget/text_input/input.rs | 7 +++++++ 7 files changed, 20 insertions(+), 2 deletions(-) diff --git a/iced b/iced index ecc29a83..d36e4df4 160000 --- a/iced +++ b/iced @@ -1 +1 @@ -Subproject commit ecc29a83982839f628e2ed1c01605c694a1fd3ac +Subproject commit d36e4df47f2e277fafcd3505229d53438c7f128d diff --git a/src/widget/dropdown/menu/mod.rs b/src/widget/dropdown/menu/mod.rs index 1d42d01f..3fd099b3 100644 --- a/src/widget/dropdown/menu/mod.rs +++ b/src/widget/dropdown/menu/mod.rs @@ -682,6 +682,7 @@ where vertical_alignment: alignment::Vertical::Center, shaping: text::Shaping::Advanced, wrapping: text::Wrapping::default(), + ellipsize: text::Ellipsize::default(), }, bounds.position(), color, diff --git a/src/widget/dropdown/multi/menu.rs b/src/widget/dropdown/multi/menu.rs index 0035829f..39e89ee2 100644 --- a/src/widget/dropdown/multi/menu.rs +++ b/src/widget/dropdown/multi/menu.rs @@ -594,6 +594,7 @@ where vertical_alignment: alignment::Vertical::Center, shaping: text::Shaping::Advanced, wrapping: text::Wrapping::default(), + ellipsize: text::Ellipsize::default(), }, bounds.position(), color, @@ -643,6 +644,7 @@ where vertical_alignment: alignment::Vertical::Center, shaping: text::Shaping::Advanced, wrapping: text::Wrapping::default(), + ellipsize: text::Ellipsize::default(), }, bounds.position(), appearance.description_color, diff --git a/src/widget/dropdown/multi/widget.rs b/src/widget/dropdown/multi/widget.rs index 458cf5e6..43a0836f 100644 --- a/src/widget/dropdown/multi/widget.rs +++ b/src/widget/dropdown/multi/widget.rs @@ -279,6 +279,7 @@ pub fn layout( vertical_alignment: alignment::Vertical::Top, shaping: text::Shaping::Advanced, wrapping: text::Wrapping::default(), + ellipsize: text::Ellipsize::default(), }); paragraph.min_width().round() }; @@ -423,6 +424,7 @@ pub fn overlay<'a, S: AsRef, Message: 'a, Item: Clone + PartialEq + 'static vertical_alignment: alignment::Vertical::Top, shaping: text::Shaping::Advanced, wrapping: text::Wrapping::default(), + ellipsize: text::Ellipsize::default(), }); paragraph.min_width().round() }; @@ -555,6 +557,7 @@ pub fn draw<'a, S, Item: Clone + PartialEq + 'static>( vertical_alignment: alignment::Vertical::Center, shaping: text::Shaping::Advanced, wrapping: text::Wrapping::default(), + ellipsize: text::Ellipsize::default(), }, bounds.position(), style.text_color, diff --git a/src/widget/dropdown/widget.rs b/src/widget/dropdown/widget.rs index 03be4eb3..67101d26 100644 --- a/src/widget/dropdown/widget.rs +++ b/src/widget/dropdown/widget.rs @@ -212,6 +212,7 @@ where vertical_alignment: alignment::Vertical::Top, shaping: text::Shaping::Advanced, wrapping: text::Wrapping::default(), + ellipsize: text::Ellipsize::default(), }); } @@ -478,6 +479,7 @@ pub fn layout( vertical_alignment: alignment::Vertical::Top, shaping: text::Shaping::Advanced, wrapping: text::Wrapping::default(), + ellipsize: text::Ellipsize::default(), }; let paragraph = match paragraph { Some(p) => { @@ -934,6 +936,7 @@ pub fn draw<'a, S>( vertical_alignment: alignment::Vertical::Center, shaping: text::Shaping::Advanced, wrapping: text::Wrapping::default(), + ellipsize: text::Ellipsize::default(), }, bounds.position(), style.text_color, diff --git a/src/widget/segmented_button/widget.rs b/src/widget/segmented_button/widget.rs index 5201c908..1f009cc6 100644 --- a/src/widget/segmented_button/widget.rs +++ b/src/widget/segmented_button/widget.rs @@ -23,7 +23,7 @@ use iced::{ event, keyboard, mouse, touch, window, }; use iced_core::mouse::ScrollDelta; -use iced_core::text::{LineHeight, Renderer as TextRenderer, Shaping, Wrapping}; +use iced_core::text::{Ellipsize, LineHeight, Renderer as TextRenderer, Shaping, Wrapping}; use iced_core::widget::operation::Focusable; use iced_core::widget::{self, operation, tree}; use iced_core::{Border, Point, Renderer as IcedRenderer, Shadow, Text}; @@ -274,6 +274,7 @@ where vertical_alignment: alignment::Vertical::Center, shaping: Shaping::Advanced, wrapping: Wrapping::None, + ellipsize: Ellipsize::None, line_height: self.line_height, }; @@ -602,6 +603,7 @@ where vertical_alignment: alignment::Vertical::Center, shaping: Shaping::Advanced, wrapping: Wrapping::default(), + ellipsize: Ellipsize::default(), line_height: self.line_height, }) }); diff --git a/src/widget/text_input/input.rs b/src/widget/text_input/input.rs index 7dd92e12..e98d4cfa 100644 --- a/src/widget/text_input/input.rs +++ b/src/widget/text_input/input.rs @@ -728,6 +728,7 @@ where line_height: text::LineHeight::default(), shaping: text::Shaping::Advanced, wrapping: text::Wrapping::None, + ellipsize: text::Ellipsize::None, }); let Size { width, height } = @@ -1160,6 +1161,7 @@ pub fn layout( line_height, shaping: text::Shaping::Advanced, wrapping: text::Wrapping::None, + ellipsize: text::Ellipsize::None, }); let label_size = label_paragraph.min_bounds(); @@ -1297,6 +1299,7 @@ pub fn layout( line_height: helper_text_line_height, shaping: text::Shaping::Advanced, wrapping: text::Wrapping::None, + ellipsize: text::Ellipsize::None, }); let helper_text_size = helper_text_paragraph.min_bounds(); let helper_text_node = layout::Node::new(helper_text_size).translate(helper_pos); @@ -2260,6 +2263,7 @@ pub fn draw<'a, Message>( line_height, shaping: text::Shaping::Advanced, wrapping: text::Wrapping::None, + ellipsize: text::Ellipsize::None, }, label_layout.bounds().position(), appearance.label_color, @@ -2449,6 +2453,7 @@ pub fn draw<'a, Message>( line_height: text::LineHeight::default(), shaping: text::Shaping::Advanced, wrapping: text::Wrapping::None, + ellipsize: text::Ellipsize::None, }, bounds.position(), color, @@ -2497,6 +2502,7 @@ pub fn draw<'a, Message>( line_height: helper_line_height, shaping: text::Shaping::Advanced, wrapping: text::Wrapping::None, + ellipsize: text::Ellipsize::None, }, helper_text_layout.bounds().position(), text_color, @@ -2877,6 +2883,7 @@ fn replace_paragraph( vertical_alignment: alignment::Vertical::Top, shaping: text::Shaping::Advanced, wrapping: text::Wrapping::None, + ellipsize: text::Ellipsize::None, }); }