diff --git a/masonry/examples/screenshots/grid_masonry__tests__initial_screenshot.png b/masonry/examples/screenshots/grid_masonry__tests__initial_screenshot.png index ad51e2ed..d322a040 100644 Binary files a/masonry/examples/screenshots/grid_masonry__tests__initial_screenshot.png and b/masonry/examples/screenshots/grid_masonry__tests__initial_screenshot.png differ diff --git a/masonry/examples/screenshots/to_do_list__tests__initial_screenshot.png b/masonry/examples/screenshots/to_do_list__tests__initial_screenshot.png index 58997dbb..c92ee678 100644 Binary files a/masonry/examples/screenshots/to_do_list__tests__initial_screenshot.png and b/masonry/examples/screenshots/to_do_list__tests__initial_screenshot.png differ diff --git a/masonry/src/util.rs b/masonry/src/util.rs index 7b25b70d..6ef7d595 100644 --- a/masonry/src/util.rs +++ b/masonry/src/util.rs @@ -7,6 +7,7 @@ use std::any::Any; use std::hash::Hash; use vello::Scene; +use vello::kurbo::Join; use vello::kurbo::{ Affine, Rect, Shape, Stroke, {self}, }; @@ -102,13 +103,13 @@ pub fn stroke<'b>( brush: impl Into>, stroke_width: f64, ) { - scene.stroke( - &Stroke::new(stroke_width), - Affine::IDENTITY, - brush, - None, - path, - ); + // Using Join::Miter avoids rounding corners when a widget has a wide border. + let style = Stroke { + width: stroke_width, + join: Join::Miter, + ..Default::default() + }; + scene.stroke(&style, Affine::IDENTITY, brush, None, path); } #[allow(unused)] diff --git a/masonry/src/widgets/button.rs b/masonry/src/widgets/button.rs index 86220a83..549543db 100644 --- a/masonry/src/widgets/button.rs +++ b/masonry/src/widgets/button.rs @@ -184,11 +184,16 @@ impl Widget for Button { let is_hovered = ctx.is_hovered(); let size = ctx.size(); let stroke_width = theme::BUTTON_BORDER_WIDTH; + let border_radius = theme::BUTTON_BORDER_RADIUS; - let rounded_rect = size + let bg_rect = size + .to_rect() + .inset(-stroke_width) + .to_rounded_rect(border_radius - stroke_width); + let border_rect = size .to_rect() .inset(-stroke_width / 2.0) - .to_rounded_rect(theme::BUTTON_BORDER_RADIUS); + .to_rounded_rect(border_radius); let bg_gradient = if ctx.is_disabled() { [theme::DISABLED_BUTTON_LIGHT, theme::DISABLED_BUTTON_DARK] @@ -204,10 +209,10 @@ impl Widget for Button { theme::BORDER_DARK }; - stroke(scene, &rounded_rect, border_color, stroke_width); + stroke(scene, &border_rect, border_color, stroke_width); fill_lin_gradient( scene, - &rounded_rect, + &bg_rect, bg_gradient, UnitPoint::TOP, UnitPoint::BOTTOM, diff --git a/masonry/src/widgets/progress_bar.rs b/masonry/src/widgets/progress_bar.rs index b3d9cc2a..1b8cb703 100644 --- a/masonry/src/widgets/progress_bar.rs +++ b/masonry/src/widgets/progress_bar.rs @@ -147,22 +147,17 @@ impl Widget for ProgressBar { fn paint(&mut self, ctx: &mut PaintCtx, _props: &PropertiesRef<'_>, scene: &mut Scene) { let border_width = 1.; + let size = ctx.size(); + let border_radius = 2.; - let rect = ctx - .size() + let bg_rect = size .to_rect() - .inset(-border_width / 2.) - .to_rounded_rect(2.); - - fill_lin_gradient( - scene, - &rect, - [theme::BACKGROUND_LIGHT, theme::BACKGROUND_DARK], - UnitPoint::TOP, - UnitPoint::BOTTOM, - ); - - stroke(scene, &rect, theme::BORDER_DARK, border_width); + .inset(-border_width) + .to_rounded_rect(border_radius - border_width); + let border_rect = size + .to_rect() + .inset(-border_width / 2.0) + .to_rounded_rect(border_radius); let progress_rect_size = Size::new( ctx.size().width * self.progress.unwrap_or(1.), @@ -170,9 +165,16 @@ impl Widget for ProgressBar { ); let progress_rect = progress_rect_size .to_rect() - .inset(-border_width / 2.) - .to_rounded_rect(2.); + .inset(-border_width) + .to_rounded_rect(border_radius - border_width); + fill_lin_gradient( + scene, + &bg_rect, + [theme::BACKGROUND_LIGHT, theme::BACKGROUND_DARK], + UnitPoint::TOP, + UnitPoint::BOTTOM, + ); fill_lin_gradient( scene, &progress_rect, @@ -180,7 +182,7 @@ impl Widget for ProgressBar { UnitPoint::TOP, UnitPoint::BOTTOM, ); - stroke(scene, &progress_rect, theme::BORDER_DARK, border_width); + stroke(scene, &border_rect, theme::BORDER_DARK, border_width); } fn accessibility_role(&self) -> Role { diff --git a/masonry/src/widgets/screenshots/masonry__widgets__button__tests__hello.png b/masonry/src/widgets/screenshots/masonry__widgets__button__tests__hello.png index f6279bf0..bc6610bd 100644 --- a/masonry/src/widgets/screenshots/masonry__widgets__button__tests__hello.png +++ b/masonry/src/widgets/screenshots/masonry__widgets__button__tests__hello.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:1cb022806d289f4bce2657980b376af42b332d838edfecb0dfc807d059d2975f -size 5187 +oid sha256:4994346249ff234eb4e52db303053f5f88c1720216dd99475e2529af3828bf33 +size 1757 diff --git a/masonry/src/widgets/screenshots/masonry__widgets__grid__tests__2x2_with_overlapping_b.png b/masonry/src/widgets/screenshots/masonry__widgets__grid__tests__2x2_with_overlapping_b.png index 646ec41f..6784db12 100644 --- a/masonry/src/widgets/screenshots/masonry__widgets__grid__tests__2x2_with_overlapping_b.png +++ b/masonry/src/widgets/screenshots/masonry__widgets__grid__tests__2x2_with_overlapping_b.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:4aef605773c92b01166520d3ca8065116d46540bc3880978b5f248c95c61fd8d -size 5001 +oid sha256:9c26cf7fed97582eb10b41c5e2d4ef699c9ac4d33d9b67a6abf092d839636224 +size 1071 diff --git a/masonry/src/widgets/screenshots/masonry__widgets__grid__tests__2x2_with_overlapping_c.png b/masonry/src/widgets/screenshots/masonry__widgets__grid__tests__2x2_with_overlapping_c.png index ee7ba265..effc1370 100644 --- a/masonry/src/widgets/screenshots/masonry__widgets__grid__tests__2x2_with_overlapping_c.png +++ b/masonry/src/widgets/screenshots/masonry__widgets__grid__tests__2x2_with_overlapping_c.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:ec7a39d12493409ed242cc1f41e3d4dce46a96c481d2cdc38d4da185269465e0 -size 5321 +oid sha256:9e30df511b6268bed530eb673ea66bfcb0fb2ad3cb0ca1f1a4614fb2a53214ae +size 1234 diff --git a/masonry/src/widgets/screenshots/masonry__widgets__grid__tests__2x2_with_removed_widget.png b/masonry/src/widgets/screenshots/masonry__widgets__grid__tests__2x2_with_removed_widget.png index 793dd9c8..8a920d13 100644 --- a/masonry/src/widgets/screenshots/masonry__widgets__grid__tests__2x2_with_removed_widget.png +++ b/masonry/src/widgets/screenshots/masonry__widgets__grid__tests__2x2_with_removed_widget.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:6c1515c193d2b494e792f05b5d088d1566774285e0df448ea9bf364ce03ab712 -size 4472 +oid sha256:5801fd4aef3cb50ca2156eeece36616a84a1070db5d79921f072b6df48d840a2 +size 114 diff --git a/masonry/src/widgets/screenshots/masonry__widgets__grid__tests__expanded_4x1.png b/masonry/src/widgets/screenshots/masonry__widgets__grid__tests__expanded_4x1.png index 3d3b16bc..ed06f1ca 100644 --- a/masonry/src/widgets/screenshots/masonry__widgets__grid__tests__expanded_4x1.png +++ b/masonry/src/widgets/screenshots/masonry__widgets__grid__tests__expanded_4x1.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:2f7ce584ad5a911bb7bb8c35f3066ac3031c7ade64692896f7586e20c391b624 -size 5052 +oid sha256:0b4a63bd2f56b4b91b9bf720eb52a9c1ced2b3bbcc5c23b18b09f6b363ac9759 +size 1482 diff --git a/masonry/src/widgets/screenshots/masonry__widgets__grid__tests__expanded_4x4.png b/masonry/src/widgets/screenshots/masonry__widgets__grid__tests__expanded_4x4.png index 2eee9b13..02b97756 100644 --- a/masonry/src/widgets/screenshots/masonry__widgets__grid__tests__expanded_4x4.png +++ b/masonry/src/widgets/screenshots/masonry__widgets__grid__tests__expanded_4x4.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:58796a0ff44c059d90b9a2e424d390721b5e0052eccbd3b6f003d1739d771440 -size 5186 +oid sha256:d9fea62fdb9c55190e5c1b5387ca80c390b2657e9623c1ed51525c2588dc93b0 +size 1002 diff --git a/masonry/src/widgets/screenshots/masonry__widgets__grid__tests__initial_1x1.png b/masonry/src/widgets/screenshots/masonry__widgets__grid__tests__initial_1x1.png index 4d7517fc..a28a32d2 100644 --- a/masonry/src/widgets/screenshots/masonry__widgets__grid__tests__initial_1x1.png +++ b/masonry/src/widgets/screenshots/masonry__widgets__grid__tests__initial_1x1.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:d5d77599d5f7c9fce3c46a651e2bcdb3bfc4172c465efc7db009c91b42e957ab -size 4927 +oid sha256:7dfc95e8479b1e9922b5ce6d6bad79bc49f5e24f4c0ce3438d023718531cbd03 +size 1502 diff --git a/masonry/src/widgets/screenshots/masonry__widgets__grid__tests__initial_2x2.png b/masonry/src/widgets/screenshots/masonry__widgets__grid__tests__initial_2x2.png index f5246597..6b7adcff 100644 --- a/masonry/src/widgets/screenshots/masonry__widgets__grid__tests__initial_2x2.png +++ b/masonry/src/widgets/screenshots/masonry__widgets__grid__tests__initial_2x2.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:33aabab29c8651a7efaf88d7609cb50b93e8864367ddeff54a77dc435bb746b0 -size 5312 +oid sha256:d5cc355e23054f84e11d17aec021b3f8b6712298cddf087256fbec2341243f22 +size 1129 diff --git a/masonry/src/widgets/screenshots/masonry__widgets__grid__tests__moved_2x2_1.png b/masonry/src/widgets/screenshots/masonry__widgets__grid__tests__moved_2x2_1.png index 881db94d..01aa2cfa 100644 --- a/masonry/src/widgets/screenshots/masonry__widgets__grid__tests__moved_2x2_1.png +++ b/masonry/src/widgets/screenshots/masonry__widgets__grid__tests__moved_2x2_1.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:47b741e1bcdc9ad915c2f17f3fededa3435bc089a3fea2309235c913cfce331a -size 5321 +oid sha256:e9f224a92e663eafe76ea00ccc654e44981f61950cc3f4b4183771ffb3087b5e +size 1123 diff --git a/masonry/src/widgets/screenshots/masonry__widgets__grid__tests__moved_2x2_2.png b/masonry/src/widgets/screenshots/masonry__widgets__grid__tests__moved_2x2_2.png index 4d7517fc..a28a32d2 100644 --- a/masonry/src/widgets/screenshots/masonry__widgets__grid__tests__moved_2x2_2.png +++ b/masonry/src/widgets/screenshots/masonry__widgets__grid__tests__moved_2x2_2.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:d5d77599d5f7c9fce3c46a651e2bcdb3bfc4172c465efc7db009c91b42e957ab -size 4927 +oid sha256:7dfc95e8479b1e9922b5ce6d6bad79bc49f5e24f4c0ce3438d023718531cbd03 +size 1502 diff --git a/masonry/src/widgets/screenshots/masonry__widgets__grid__tests__with_2x2_widget.png b/masonry/src/widgets/screenshots/masonry__widgets__grid__tests__with_2x2_widget.png index dd05c30c..46629036 100644 --- a/masonry/src/widgets/screenshots/masonry__widgets__grid__tests__with_2x2_widget.png +++ b/masonry/src/widgets/screenshots/masonry__widgets__grid__tests__with_2x2_widget.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:dde5ee4144c465a2dfc2e7407bcece68abf37fa03da97da4e5335a765c82662f -size 6623 +oid sha256:926bc1453a414f8ce8d18621456e250d3f3a3a57a4b103c11b760f862805c2df +size 2461 diff --git a/masonry/src/widgets/screenshots/masonry__widgets__grid__tests__with_changed_spacing.png b/masonry/src/widgets/screenshots/masonry__widgets__grid__tests__with_changed_spacing.png index 78e7acc9..5f132e84 100644 --- a/masonry/src/widgets/screenshots/masonry__widgets__grid__tests__with_changed_spacing.png +++ b/masonry/src/widgets/screenshots/masonry__widgets__grid__tests__with_changed_spacing.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:d69e1dc3b6b4e4135aacfa2e11f48e195784a3b8e1561f4e2bbf9ba3ec295cbf -size 6984 +oid sha256:dad06ac70e8a047984113061535290c8a5dc342538c12af8a6bc7744b998b5de +size 2817 diff --git a/masonry/src/widgets/screenshots/masonry__widgets__grid__tests__with_horizontal_widget.png b/masonry/src/widgets/screenshots/masonry__widgets__grid__tests__with_horizontal_widget.png index 0930eb87..8ca3462c 100644 --- a/masonry/src/widgets/screenshots/masonry__widgets__grid__tests__with_horizontal_widget.png +++ b/masonry/src/widgets/screenshots/masonry__widgets__grid__tests__with_horizontal_widget.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:3602efdabe62bdb4592090afcb80256bfe9ba339d5b87f1271f36cbca7c35e0a -size 5609 +oid sha256:1212a72ce86de68cd52ad81de9ca17e4f1fa1e03b7c0d9bc1e64f6f6a537e43e +size 1197 diff --git a/masonry/src/widgets/screenshots/masonry__widgets__grid__tests__with_negative_spacing.png b/masonry/src/widgets/screenshots/masonry__widgets__grid__tests__with_negative_spacing.png index 13d041ba..209ef998 100644 --- a/masonry/src/widgets/screenshots/masonry__widgets__grid__tests__with_negative_spacing.png +++ b/masonry/src/widgets/screenshots/masonry__widgets__grid__tests__with_negative_spacing.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:cf744b668ff527dfcbd9d23dca2d0d927e39f309cdc515ece463eed3fc0c2ddd -size 6561 +oid sha256:2c00e6afd8c37f1fef788b15ac93a38d73cdbd341f9c10f42cd2c711ee89b697 +size 2485 diff --git a/masonry/src/widgets/screenshots/masonry__widgets__grid__tests__with_vertical_widget.png b/masonry/src/widgets/screenshots/masonry__widgets__grid__tests__with_vertical_widget.png index a527d1e3..ed9fb6bb 100644 --- a/masonry/src/widgets/screenshots/masonry__widgets__grid__tests__with_vertical_widget.png +++ b/masonry/src/widgets/screenshots/masonry__widgets__grid__tests__with_vertical_widget.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:871275dca581cd2201a4d88e7bf50a2497f31f87afc953446d1f80293703deee -size 6173 +oid sha256:9bec5ac6e170ac1dcc3eeb5bcae104329090b4e7d7a428168fb92674298ecf94 +size 2117 diff --git a/masonry/src/widgets/screenshots/masonry__widgets__progress_bar__tests__0_percent_progressbar.png b/masonry/src/widgets/screenshots/masonry__widgets__progress_bar__tests__0_percent_progressbar.png index 2fc003d1..c7d27893 100644 --- a/masonry/src/widgets/screenshots/masonry__widgets__progress_bar__tests__0_percent_progressbar.png +++ b/masonry/src/widgets/screenshots/masonry__widgets__progress_bar__tests__0_percent_progressbar.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:0746bee1ea93550a8388661fac6a70e5b1e278e583ac2b9e1b982b3b208646a6 -size 5064 +oid sha256:ca6dc6a80922171cdbaa5cdc269ac2667900c10c5ea40b2c5545042d080b7d3a +size 1577 diff --git a/masonry/src/widgets/screenshots/masonry__widgets__progress_bar__tests__100_percent_progressbar.png b/masonry/src/widgets/screenshots/masonry__widgets__progress_bar__tests__100_percent_progressbar.png index 6b2cf8b2..e1244b03 100644 --- a/masonry/src/widgets/screenshots/masonry__widgets__progress_bar__tests__100_percent_progressbar.png +++ b/masonry/src/widgets/screenshots/masonry__widgets__progress_bar__tests__100_percent_progressbar.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:c224de22f3a435a92853bf7eb1fc6fc34d7a89ea7fdb617eb1a4698143671e76 -size 5458 +oid sha256:25314c6f293e7c8f6a312bdf7f632f445a10ab1d665115768727632069347d1c +size 2608 diff --git a/masonry/src/widgets/screenshots/masonry__widgets__progress_bar__tests__25_percent_progressbar.png b/masonry/src/widgets/screenshots/masonry__widgets__progress_bar__tests__25_percent_progressbar.png index b24c1855..064ffe4f 100644 --- a/masonry/src/widgets/screenshots/masonry__widgets__progress_bar__tests__25_percent_progressbar.png +++ b/masonry/src/widgets/screenshots/masonry__widgets__progress_bar__tests__25_percent_progressbar.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:ef17088123c59d18f2d37bd1c591d75f30d878ba7af17f05db45f489460de320 -size 5788 +oid sha256:0e5f05b1e759dbe978d4b5c0032e3be5fc7b355a38ca2ac49c27bbe887e0c304 +size 2653 diff --git a/masonry/src/widgets/screenshots/masonry__widgets__progress_bar__tests__50_percent_progressbar.png b/masonry/src/widgets/screenshots/masonry__widgets__progress_bar__tests__50_percent_progressbar.png index 6469a987..ab29d6a4 100644 --- a/masonry/src/widgets/screenshots/masonry__widgets__progress_bar__tests__50_percent_progressbar.png +++ b/masonry/src/widgets/screenshots/masonry__widgets__progress_bar__tests__50_percent_progressbar.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:649a0fad748a9c025c1862b47d91493ca87f3b92aabad9ab6ac287de64774863 -size 5781 +oid sha256:d45764af408101a57d7780d6d98ada40154bbe61e2a2bd9830e62e1004969efe +size 2646 diff --git a/masonry/src/widgets/screenshots/masonry__widgets__progress_bar__tests__75_percent_progressbar.png b/masonry/src/widgets/screenshots/masonry__widgets__progress_bar__tests__75_percent_progressbar.png index 6d902e6d..70bb827b 100644 --- a/masonry/src/widgets/screenshots/masonry__widgets__progress_bar__tests__75_percent_progressbar.png +++ b/masonry/src/widgets/screenshots/masonry__widgets__progress_bar__tests__75_percent_progressbar.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:132dcf01f585c2a58b86c4fb6d518059dbeb858e8143ef133acb69f513027749 -size 5399 +oid sha256:cba822bc27c453f48c9f931bf5703127f2632bcd0d40e8a556efce4f173bfbe2 +size 2541 diff --git a/masonry/src/widgets/screenshots/masonry__widgets__progress_bar__tests__indeterminate_progressbar.png b/masonry/src/widgets/screenshots/masonry__widgets__progress_bar__tests__indeterminate_progressbar.png index 6a4173d8..361d52b9 100644 --- a/masonry/src/widgets/screenshots/masonry__widgets__progress_bar__tests__indeterminate_progressbar.png +++ b/masonry/src/widgets/screenshots/masonry__widgets__progress_bar__tests__indeterminate_progressbar.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:70415497ab4fa856a15c12f40afc3c65715cbe5c4a42228af4baf553f385efad -size 4727 +oid sha256:c94c6fe1007afbcb400998e826a59fc37d3c8be1b9e6551823d3c07b7eccfbfb +size 1628 diff --git a/masonry/src/widgets/screenshots/masonry__widgets__textbox__tests__textbox_outline.png b/masonry/src/widgets/screenshots/masonry__widgets__textbox__tests__textbox_outline.png index 3990b381..27016e83 100644 --- a/masonry/src/widgets/screenshots/masonry__widgets__textbox__tests__textbox_outline.png +++ b/masonry/src/widgets/screenshots/masonry__widgets__textbox__tests__textbox_outline.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:0ce079b70da1efa2e4870a3f8a789d6ff5e748e8d6604125357cca55f1a0bc8f -size 1664 +oid sha256:ce5821257e16110acddbaff0fd3041d30ba2c11b0b5532406f1b6d6ba9d4a8a2 +size 1015 diff --git a/masonry/src/widgets/screenshots/masonry__widgets__textbox__tests__textbox_selection.png b/masonry/src/widgets/screenshots/masonry__widgets__textbox__tests__textbox_selection.png index ccbabc18..ed92bcb8 100644 --- a/masonry/src/widgets/screenshots/masonry__widgets__textbox__tests__textbox_selection.png +++ b/masonry/src/widgets/screenshots/masonry__widgets__textbox__tests__textbox_selection.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:669c9ebca19fcb7091991f593105289d686eace34e428a9656781f12cdb967cc -size 1709 +oid sha256:acc5caca94063ae376cbd88afa57865a318a6f352f946ffd05284e3f2606b750 +size 1130 diff --git a/masonry/src/widgets/tests/screenshots/masonry__widgets__tests__transforms__transforms_pointer_events.png b/masonry/src/widgets/tests/screenshots/masonry__widgets__tests__transforms__transforms_pointer_events.png index 4c9379f9..7ae5e038 100644 --- a/masonry/src/widgets/tests/screenshots/masonry__widgets__tests__transforms__transforms_pointer_events.png +++ b/masonry/src/widgets/tests/screenshots/masonry__widgets__tests__transforms__transforms_pointer_events.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:5e5aa3920a321bcd64db228eff1ebe5b8e9186893ef00ad1a10f30ab8c6d1f35 -size 21630 +oid sha256:b7ba1af0b3ae1c29bc9f53052ec819e4abb1712d9526574ac523bdeb4ee5872b +size 21982 diff --git a/masonry/src/widgets/textbox.rs b/masonry/src/widgets/textbox.rs index 1ee801bb..3cd8a635 100644 --- a/masonry/src/widgets/textbox.rs +++ b/masonry/src/widgets/textbox.rs @@ -7,7 +7,7 @@ use accesskit::{Node, Role}; use smallvec::{SmallVec, smallvec}; use tracing::{Span, trace_span}; use vello::Scene; -use vello::kurbo::{Affine, Insets, Point, Rect, Size, Stroke}; +use vello::kurbo::{Insets, Point, Rect, Size}; use crate::core::{ AccessCtx, AccessEvent, BoxConstraints, EventCtx, LayoutCtx, PaintCtx, PointerEvent, @@ -15,6 +15,7 @@ use crate::core::{ WidgetId, WidgetMut, WidgetPod, }; use crate::peniko::Color; +use crate::util::stroke; use crate::widgets::{Padding, TextArea}; /// Added padding between each horizontal edge of the widget @@ -163,19 +164,14 @@ impl Widget for Textbox { fn paint(&mut self, ctx: &mut PaintCtx, _props: &PropertiesRef<'_>, scene: &mut Scene) { let size = ctx.size(); + let border_width = 1.0; let outline_rect = size.to_rect().inset(Insets::new( - -TEXTBOX_MARGIN.leading, - -TEXTBOX_MARGIN.top, - -TEXTBOX_MARGIN.trailing, - -TEXTBOX_MARGIN.bottom, + -TEXTBOX_MARGIN.leading - border_width / 2., + -TEXTBOX_MARGIN.top - border_width / 2., + -TEXTBOX_MARGIN.trailing - border_width / 2., + -TEXTBOX_MARGIN.bottom - border_width / 2., )); - scene.stroke( - &Stroke::new(1.0), - Affine::IDENTITY, - Color::WHITE, - None, - &outline_rect, - ); + stroke(scene, &outline_rect, Color::WHITE, border_width); } fn accessibility_role(&self) -> Role {