mirror of
https://github.com/zed-industries/zed.git
synced 2024-09-20 10:57:22 +03:00
Implement FixedWidth for all button types
[no-ci] Co-Authored-By: Marshall Bowers <1486634+maxdeviant@users.noreply.github.com>
This commit is contained in:
parent
c07455efa7
commit
03ebf0a5a9
@ -1,4 +1,4 @@
|
|||||||
use gpui::AnyView;
|
use gpui::{AnyView, DefiniteLength};
|
||||||
|
|
||||||
use crate::prelude::*;
|
use crate::prelude::*;
|
||||||
use crate::{ButtonCommon, ButtonLike, ButtonSize, ButtonStyle, Label, LineHeightStyle};
|
use crate::{ButtonCommon, ButtonLike, ButtonSize, ButtonStyle, Label, LineHeightStyle};
|
||||||
@ -49,6 +49,18 @@ impl Clickable for Button {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
impl FixedWidth for Button {
|
||||||
|
fn width(mut self, width: DefiniteLength) -> Self {
|
||||||
|
self.base = self.base.width(width);
|
||||||
|
self
|
||||||
|
}
|
||||||
|
|
||||||
|
fn full_width(mut self) -> Self {
|
||||||
|
self.base = self.base.full_width();
|
||||||
|
self
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
impl ButtonCommon for Button {
|
impl ButtonCommon for Button {
|
||||||
fn id(&self) -> &ElementId {
|
fn id(&self) -> &ElementId {
|
||||||
self.base.id()
|
self.base.id()
|
||||||
|
@ -1,3 +1,4 @@
|
|||||||
|
use gpui::{relative, DefiniteLength};
|
||||||
use gpui::{rems, transparent_black, AnyElement, AnyView, ClickEvent, Div, Hsla, Rems, Stateful};
|
use gpui::{rems, transparent_black, AnyElement, AnyView, ClickEvent, Div, Hsla, Rems, Stateful};
|
||||||
use smallvec::SmallVec;
|
use smallvec::SmallVec;
|
||||||
|
|
||||||
@ -177,6 +178,7 @@ pub struct ButtonLike {
|
|||||||
pub(super) style: ButtonStyle,
|
pub(super) style: ButtonStyle,
|
||||||
pub(super) disabled: bool,
|
pub(super) disabled: bool,
|
||||||
pub(super) selected: bool,
|
pub(super) selected: bool,
|
||||||
|
pub(super) width: Option<DefiniteLength>,
|
||||||
size: ButtonSize,
|
size: ButtonSize,
|
||||||
tooltip: Option<Box<dyn Fn(&mut WindowContext) -> AnyView>>,
|
tooltip: Option<Box<dyn Fn(&mut WindowContext) -> AnyView>>,
|
||||||
on_click: Option<Box<dyn Fn(&ClickEvent, &mut WindowContext) + 'static>>,
|
on_click: Option<Box<dyn Fn(&ClickEvent, &mut WindowContext) + 'static>>,
|
||||||
@ -190,6 +192,7 @@ impl ButtonLike {
|
|||||||
style: ButtonStyle::default(),
|
style: ButtonStyle::default(),
|
||||||
disabled: false,
|
disabled: false,
|
||||||
selected: false,
|
selected: false,
|
||||||
|
width: None,
|
||||||
size: ButtonSize::Default,
|
size: ButtonSize::Default,
|
||||||
tooltip: None,
|
tooltip: None,
|
||||||
children: SmallVec::new(),
|
children: SmallVec::new(),
|
||||||
@ -219,6 +222,18 @@ impl Clickable for ButtonLike {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
impl FixedWidth for ButtonLike {
|
||||||
|
fn width(mut self, width: DefiniteLength) -> Self {
|
||||||
|
self.width = Some(width);
|
||||||
|
self
|
||||||
|
}
|
||||||
|
|
||||||
|
fn full_width(mut self) -> Self {
|
||||||
|
self.width = Some(relative(1.));
|
||||||
|
self
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
impl ButtonCommon for ButtonLike {
|
impl ButtonCommon for ButtonLike {
|
||||||
fn id(&self) -> &ElementId {
|
fn id(&self) -> &ElementId {
|
||||||
&self.id
|
&self.id
|
||||||
@ -252,7 +267,9 @@ impl RenderOnce for ButtonLike {
|
|||||||
fn render(self, cx: &mut WindowContext) -> Self::Rendered {
|
fn render(self, cx: &mut WindowContext) -> Self::Rendered {
|
||||||
h_stack()
|
h_stack()
|
||||||
.id(self.id.clone())
|
.id(self.id.clone())
|
||||||
|
.flex_none()
|
||||||
.h(self.size.height())
|
.h(self.size.height())
|
||||||
|
.when_some(self.width, |this, width| this.w(width))
|
||||||
.rounded_md()
|
.rounded_md()
|
||||||
.cursor_pointer()
|
.cursor_pointer()
|
||||||
.gap_1()
|
.gap_1()
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
use gpui::{Action, AnyView};
|
use gpui::{Action, AnyView, DefiniteLength};
|
||||||
|
|
||||||
use crate::prelude::*;
|
use crate::prelude::*;
|
||||||
use crate::{ButtonCommon, ButtonLike, ButtonSize, ButtonStyle, Icon, IconElement, IconSize};
|
use crate::{ButtonCommon, ButtonLike, ButtonSize, ButtonStyle, Icon, IconElement, IconSize};
|
||||||
@ -60,6 +60,18 @@ impl Clickable for IconButton {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
impl FixedWidth for IconButton {
|
||||||
|
fn width(mut self, width: DefiniteLength) -> Self {
|
||||||
|
self.base = self.base.width(width);
|
||||||
|
self
|
||||||
|
}
|
||||||
|
|
||||||
|
fn full_width(mut self) -> Self {
|
||||||
|
self.base = self.base.full_width();
|
||||||
|
self
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
impl ButtonCommon for IconButton {
|
impl ButtonCommon for IconButton {
|
||||||
fn id(&self) -> &ElementId {
|
fn id(&self) -> &ElementId {
|
||||||
self.base.id()
|
self.base.id()
|
||||||
|
Loading…
Reference in New Issue
Block a user