From 8cd2afeaccece1feb3d96b836266de95a469cd40 Mon Sep 17 00:00:00 2001 From: Danilo Leal <67129314+danilo-leal@users.noreply.github.com> Date: Wed, 8 Jan 2025 11:51:14 -0300 Subject: [PATCH] Improve `MessageNotification` design (#22829) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Just fine-tuning some bits of the visual design. | Before | After | |--------|--------| | Screenshot 2025-01-08 at 11 26 32 AM | Screenshot 2025-01-08 at 11 27 13 AM | Release Notes: - N/A --- crates/extensions_ui/src/extension_suggest.rs | 4 +-- crates/workspace/src/notifications.rs | 33 +++++++++++-------- 2 files changed, 21 insertions(+), 16 deletions(-) diff --git a/crates/extensions_ui/src/extension_suggest.rs b/crates/extensions_ui/src/extension_suggest.rs index 9bd2dec03e8afaddf9e81413fb3103d6cff710cf..2d4f8658197f277d1209605fedbb32a5f9d622d5 100644 --- a/crates/extensions_ui/src/extension_suggest.rs +++ b/crates/extensions_ui/src/extension_suggest.rs @@ -175,7 +175,7 @@ pub(crate) fn suggest(buffer: Model, cx: &mut ViewContext) { "Do you want to install the recommended '{}' extension for '{}' files?", extension_id, file_name_or_extension )) - .with_click_message("Yes") + .with_click_message("Yes, install extension") .on_click({ let extension_id = extension_id.clone(); move |cx| { @@ -186,7 +186,7 @@ pub(crate) fn suggest(buffer: Model, cx: &mut ViewContext) { }); } }) - .with_secondary_click_message("No") + .with_secondary_click_message("No, don't install it") .on_secondary_click(move |cx| { let key = language_extension_key(&extension_id); db::write_and_log(cx, move || { diff --git a/crates/workspace/src/notifications.rs b/crates/workspace/src/notifications.rs index c8548bd90e51786803e2cc1ebf35b9579cfb97a1..fd989554e9f2559584c2ecdff4baa32d1fa18cf0 100644 --- a/crates/workspace/src/notifications.rs +++ b/crates/workspace/src/notifications.rs @@ -411,12 +411,10 @@ impl EventEmitter for ErrorMessagePrompt {} pub mod simple_message_notification { use gpui::{ - div, DismissEvent, EventEmitter, InteractiveElement, ParentElement, Render, SharedString, - StatefulInteractiveElement, Styled, ViewContext, + div, DismissEvent, EventEmitter, ParentElement, Render, SharedString, Styled, ViewContext, }; use std::sync::Arc; use ui::prelude::*; - use ui::{h_flex, v_flex, Button, Icon, IconName, Label, StyledExt}; pub struct MessageNotification { message: SharedString, @@ -482,36 +480,43 @@ pub mod simple_message_notification { impl Render for MessageNotification { fn render(&mut self, cx: &mut ViewContext) -> impl IntoElement { v_flex() + .p_3() + .gap_2() .elevation_3(cx) - .p_4() .child( h_flex() + .gap_4() .justify_between() .child(div().max_w_80().child(Label::new(self.message.clone()))) .child( - div() - .id("cancel") - .child(Icon::new(IconName::Close)) - .cursor_pointer() + IconButton::new("close", IconName::Close) .on_click(cx.listener(|this, _, cx| this.dismiss(cx))), ), ) .child( h_flex() - .gap_3() + .gap_2() .children(self.click_message.iter().map(|message| { - Button::new(message.clone(), message.clone()).on_click(cx.listener( - |this, _, cx| { + Button::new(message.clone(), message.clone()) + .label_size(LabelSize::Small) + .icon(IconName::Check) + .icon_position(IconPosition::Start) + .icon_size(IconSize::Small) + .icon_color(Color::Success) + .on_click(cx.listener(|this, _, cx| { if let Some(on_click) = this.on_click.as_ref() { (on_click)(cx) }; this.dismiss(cx) - }, - )) + })) })) .children(self.secondary_click_message.iter().map(|message| { Button::new(message.clone(), message.clone()) - .style(ButtonStyle::Filled) + .label_size(LabelSize::Small) + .icon(IconName::Close) + .icon_position(IconPosition::Start) + .icon_size(IconSize::Small) + .icon_color(Color::Error) .on_click(cx.listener(|this, _, cx| { if let Some(on_click) = this.secondary_on_click.as_ref() { (on_click)(cx)