Detailed changes
@@ -1,5 +1,7 @@
use gpui::{ClickEvent, WindowContext};
+/// A trait for elements that can be clicked.
pub trait Clickable {
+ /// Sets the click handler that will fire whenever the element is clicked.
fn on_click(self, handler: impl Fn(&ClickEvent, &mut WindowContext) + 'static) -> Self;
}
@@ -201,13 +201,11 @@ impl ButtonSize2 {
// children: SmallVec<[AnyElement; 2]>,
// }
-pub trait ButtonCommon: Clickable {
+pub trait ButtonCommon: Clickable + Disableable {
fn id(&self) -> &ElementId;
fn style(self, style: ButtonStyle2) -> Self;
- fn disabled(self, disabled: bool) -> Self;
fn size(self, size: ButtonSize2) -> Self;
fn tooltip(self, tooltip: impl Fn(&mut WindowContext) -> AnyView + 'static) -> Self;
- // fn width(&mut self, width: DefiniteLength) -> &mut Self;
}
// pub struct LabelButton {
@@ -266,14 +264,6 @@ pub struct ButtonLike {
}
impl ButtonLike {
- pub fn children(
- &mut self,
- children: impl IntoIterator<Item = impl Into<AnyElement>>,
- ) -> &mut Self {
- self.children = children.into_iter().map(Into::into).collect();
- self
- }
-
pub fn new(id: impl Into<ElementId>) -> Self {
Self {
id: id.into(),
@@ -287,6 +277,13 @@ impl ButtonLike {
}
}
+impl Disableable for ButtonLike {
+ fn disabled(mut self, disabled: bool) -> Self {
+ self.disabled = disabled;
+ self
+ }
+}
+
impl Clickable for ButtonLike {
fn on_click(mut self, handler: impl Fn(&ClickEvent, &mut WindowContext) + 'static) -> Self {
self.on_click = Some(Box::new(handler));
@@ -317,11 +314,6 @@ impl ButtonCommon for ButtonLike {
self
}
- fn disabled(mut self, disabled: bool) -> Self {
- self.disabled = disabled;
- self
- }
-
fn size(mut self, size: ButtonSize2) -> Self {
self.size = size;
self
@@ -0,0 +1,5 @@
+/// A trait for elements that can be disabled.
+pub trait Disableable {
+ /// Sets whether the element is disabled.
+ fn disabled(self, disabled: bool) -> Self;
+}
@@ -1,6 +1,10 @@
use gpui::DefiniteLength;
+/// A trait for elements that have a fixed with.
pub trait FixedWidth {
+ /// Sets the width of the element.
fn width(self, width: DefiniteLength) -> Self;
+
+ /// Sets the element's width to the full width of its container.
fn full_width(self) -> Self;
}
@@ -1,9 +1,11 @@
+pub use gpui::prelude::*;
pub use gpui::{
div, Element, ElementId, InteractiveElement, ParentElement, RenderOnce, SharedString, Styled,
ViewContext, WindowContext,
};
pub use crate::clickable::*;
+pub use crate::disableable::*;
pub use crate::fixed::*;
pub use crate::selectable::*;
pub use crate::StyledExt;
@@ -1,7 +1,11 @@
use gpui::{AnyView, WindowContext};
+/// A trait for elements that can be selected.
pub trait Selectable {
+ /// Sets whether the element is selected.
fn selected(self, selected: bool) -> Self;
+
+ /// Sets the tooltip that should be shown when the element is selected.
fn selected_tooltip(
self,
tooltip: Box<dyn Fn(&mut WindowContext) -> AnyView + 'static>,
@@ -14,6 +14,7 @@
mod clickable;
mod components;
+mod disableable;
mod fixed;
pub mod prelude;
mod selectable;
@@ -23,6 +24,7 @@ pub mod utils;
pub use clickable::*;
pub use components::*;
+pub use disableable::*;
pub use fixed::*;
pub use prelude::*;
pub use selectable::*;