Checkpoint
This commit is contained in:
@@ -1,25 +0,0 @@
|
||||
use crate::{SharedString, StyleRefinement};
|
||||
|
||||
pub trait Active {
|
||||
fn set_active_style(&mut self, group_name: Option<SharedString>, style: StyleRefinement);
|
||||
|
||||
fn active(mut self, f: impl FnOnce(StyleRefinement) -> StyleRefinement) -> Self
|
||||
where
|
||||
Self: Sized,
|
||||
{
|
||||
self.set_active_style(None, f(StyleRefinement::default()));
|
||||
self
|
||||
}
|
||||
|
||||
fn group_active(
|
||||
mut self,
|
||||
group_name: impl Into<SharedString>,
|
||||
f: impl FnOnce(StyleRefinement) -> StyleRefinement,
|
||||
) -> Self
|
||||
where
|
||||
Self: Sized,
|
||||
{
|
||||
self.set_active_style(Some(group_name.into()), f(StyleRefinement::default()));
|
||||
self
|
||||
}
|
||||
}
|
||||
@@ -1,10 +1,9 @@
|
||||
use crate::{
|
||||
Active, AnyElement, BorrowWindow, Bounds, Element, ElementFocusability, ElementId,
|
||||
AnyElement, BorrowWindow, Bounds, Element, ElementFocusability, ElementId,
|
||||
ElementInteractivity, Focus, FocusHandle, FocusListeners, Focusable, GlobalElementId,
|
||||
GroupBounds, GroupStyle, Hover, InteractiveElementState, IntoAnyElement, LayoutId,
|
||||
NonFocusable, Overflow, ParentElement, Pixels, Point, SharedString, StatefulInteractivity,
|
||||
StatefullyInteractive, StatelessInteractivity, StatelesslyInteractive, Style, StyleRefinement,
|
||||
Styled, ViewContext,
|
||||
GroupBounds, InteractiveElementState, IntoAnyElement, LayoutId, NonFocusable, Overflow,
|
||||
ParentElement, Pixels, Point, SharedString, StatefulInteractivity, StatefullyInteractive,
|
||||
StatelessInteractivity, StatelesslyInteractive, Style, StyleRefinement, Styled, ViewContext,
|
||||
};
|
||||
use parking_lot::Mutex;
|
||||
use refineable::Refineable;
|
||||
@@ -332,22 +331,6 @@ where
|
||||
}
|
||||
}
|
||||
|
||||
impl<V, I, F> Hover for Div<V, I, F>
|
||||
where
|
||||
I: ElementInteractivity<V>,
|
||||
F: ElementFocusability<V>,
|
||||
V: 'static + Send + Sync,
|
||||
{
|
||||
fn set_hover_style(&mut self, group: Option<SharedString>, style: StyleRefinement) {
|
||||
let stateless = self.interactivity.as_stateless_mut();
|
||||
if let Some(group) = group {
|
||||
stateless.group_hover_style = Some(GroupStyle { group, style });
|
||||
} else {
|
||||
stateless.hover_style = style;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
impl<V, F> StatefullyInteractive for Div<V, StatefulInteractivity<V>, F>
|
||||
where
|
||||
F: ElementFocusability<V>,
|
||||
@@ -357,17 +340,3 @@ where
|
||||
&mut self.interactivity
|
||||
}
|
||||
}
|
||||
|
||||
impl<V, F> Active for Div<V, StatefulInteractivity<V>, F>
|
||||
where
|
||||
F: ElementFocusability<V>,
|
||||
V: 'static + Send + Sync,
|
||||
{
|
||||
fn set_active_style(&mut self, group: Option<SharedString>, style: StyleRefinement) {
|
||||
if let Some(group) = group {
|
||||
self.interactivity.group_active_style = Some(GroupStyle { group, style });
|
||||
} else {
|
||||
self.interactivity.active_style = style;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
use crate::{
|
||||
div, Active, AnyElement, BorrowWindow, Bounds, Div, Element, ElementFocusability, ElementId,
|
||||
ElementInteractivity, Focus, FocusListeners, Focusable, Hover, InteractiveElementState,
|
||||
div, AnyElement, BorrowWindow, Bounds, Div, Element, ElementFocusability, ElementId,
|
||||
ElementInteractivity, Focus, FocusListeners, Focusable, InteractiveElementState,
|
||||
IntoAnyElement, LayoutId, NonFocusable, Pixels, SharedString, StatefulInteractivity,
|
||||
StatefullyInteractive, StatelessInteractivity, StatelesslyInteractive, StyleRefinement, Styled,
|
||||
ViewContext,
|
||||
@@ -162,17 +162,6 @@ where
|
||||
}
|
||||
}
|
||||
|
||||
impl<V, I, F> Hover for Img<V, I, F>
|
||||
where
|
||||
V: 'static + Send + Sync,
|
||||
I: ElementInteractivity<V>,
|
||||
F: ElementFocusability<V>,
|
||||
{
|
||||
fn set_hover_style(&mut self, group: Option<SharedString>, style: StyleRefinement) {
|
||||
self.base.set_hover_style(group, style);
|
||||
}
|
||||
}
|
||||
|
||||
impl<V, F> StatefullyInteractive for Img<V, StatefulInteractivity<V>, F>
|
||||
where
|
||||
V: 'static + Send + Sync,
|
||||
@@ -183,16 +172,6 @@ where
|
||||
}
|
||||
}
|
||||
|
||||
impl<V, F> Active for Img<V, StatefulInteractivity<V>, F>
|
||||
where
|
||||
V: 'static + Send + Sync,
|
||||
F: ElementFocusability<V>,
|
||||
{
|
||||
fn set_active_style(&mut self, group: Option<SharedString>, style: StyleRefinement) {
|
||||
self.base.set_active_style(group, style)
|
||||
}
|
||||
}
|
||||
|
||||
impl<V, I> Focus for Img<V, I, Focusable<V>>
|
||||
where
|
||||
V: 'static + Send + Sync,
|
||||
|
||||
@@ -1,9 +1,8 @@
|
||||
use crate::{
|
||||
div, Active, AnyElement, Bounds, Div, Element, ElementFocusability, ElementId,
|
||||
ElementInteractivity, Focus, FocusListeners, Focusable, Hover, InteractiveElementState,
|
||||
IntoAnyElement, LayoutId, NonFocusable, Pixels, SharedString, StatefulInteractivity,
|
||||
StatefullyInteractive, StatelessInteractivity, StatelesslyInteractive, StyleRefinement, Styled,
|
||||
ViewContext,
|
||||
div, AnyElement, Bounds, Div, Element, ElementFocusability, ElementId, ElementInteractivity,
|
||||
Focus, FocusListeners, Focusable, InteractiveElementState, IntoAnyElement, LayoutId,
|
||||
NonFocusable, Pixels, SharedString, StatefulInteractivity, StatefullyInteractive,
|
||||
StatelessInteractivity, StatelesslyInteractive, StyleRefinement, Styled, ViewContext,
|
||||
};
|
||||
use util::ResultExt;
|
||||
|
||||
@@ -136,17 +135,6 @@ where
|
||||
}
|
||||
}
|
||||
|
||||
impl<V, I, F> Hover for Svg<V, I, F>
|
||||
where
|
||||
V: 'static + Send + Sync,
|
||||
I: ElementInteractivity<V>,
|
||||
F: ElementFocusability<V>,
|
||||
{
|
||||
fn set_hover_style(&mut self, group: Option<SharedString>, style: StyleRefinement) {
|
||||
self.base.set_hover_style(group, style);
|
||||
}
|
||||
}
|
||||
|
||||
impl<V, F> StatefullyInteractive for Svg<V, StatefulInteractivity<V>, F>
|
||||
where
|
||||
V: 'static + Send + Sync,
|
||||
@@ -157,16 +145,6 @@ where
|
||||
}
|
||||
}
|
||||
|
||||
impl<V, F> Active for Svg<V, StatefulInteractivity<V>, F>
|
||||
where
|
||||
V: 'static + Send + Sync,
|
||||
F: ElementFocusability<V>,
|
||||
{
|
||||
fn set_active_style(&mut self, group: Option<SharedString>, style: StyleRefinement) {
|
||||
self.base.set_active_style(group, style)
|
||||
}
|
||||
}
|
||||
|
||||
impl<V, I> Focus for Svg<V, I, Focusable<V>>
|
||||
where
|
||||
V: 'static + Send + Sync,
|
||||
|
||||
@@ -1,5 +1,4 @@
|
||||
mod action;
|
||||
mod active;
|
||||
mod app;
|
||||
mod assets;
|
||||
mod color;
|
||||
@@ -8,7 +7,6 @@ mod elements;
|
||||
mod executor;
|
||||
mod focus;
|
||||
mod geometry;
|
||||
mod hover;
|
||||
mod image_cache;
|
||||
mod interactive;
|
||||
mod keymap;
|
||||
@@ -25,7 +23,6 @@ mod view;
|
||||
mod window;
|
||||
|
||||
pub use action::*;
|
||||
pub use active::*;
|
||||
pub use anyhow::Result;
|
||||
pub use app::*;
|
||||
pub use assets::*;
|
||||
@@ -36,7 +33,6 @@ pub use executor::*;
|
||||
pub use focus::*;
|
||||
pub use geometry::*;
|
||||
pub use gpui3_macros::*;
|
||||
pub use hover::*;
|
||||
pub use image_cache::*;
|
||||
pub use interactive::*;
|
||||
pub use keymap::*;
|
||||
|
||||
@@ -1,25 +0,0 @@
|
||||
use crate::{SharedString, StyleRefinement};
|
||||
|
||||
pub trait Hover {
|
||||
fn set_hover_style(&mut self, group_name: Option<SharedString>, style: StyleRefinement);
|
||||
|
||||
fn hover(mut self, f: impl FnOnce(StyleRefinement) -> StyleRefinement) -> Self
|
||||
where
|
||||
Self: Sized,
|
||||
{
|
||||
self.set_hover_style(None, f(StyleRefinement::default()));
|
||||
self
|
||||
}
|
||||
|
||||
fn group_hover(
|
||||
mut self,
|
||||
group_name: impl Into<SharedString>,
|
||||
f: impl FnOnce(StyleRefinement) -> StyleRefinement,
|
||||
) -> Self
|
||||
where
|
||||
Self: Sized,
|
||||
{
|
||||
self.set_hover_style(Some(group_name.into()), f(StyleRefinement::default()));
|
||||
self
|
||||
}
|
||||
}
|
||||
@@ -1,6 +1,7 @@
|
||||
use crate::{
|
||||
point, Action, Bounds, DispatchContext, DispatchPhase, Element, FocusHandle, Keystroke,
|
||||
Modifiers, Pixels, Point, StatefulInteractivity, StatelessInteractivity, ViewContext,
|
||||
point, Action, Bounds, DispatchContext, DispatchPhase, Element, FocusHandle, GroupStyle,
|
||||
Keystroke, Modifiers, Pixels, Point, SharedString, StatefulInteractivity,
|
||||
StatelessInteractivity, StyleRefinement, ViewContext,
|
||||
};
|
||||
use std::{
|
||||
any::{Any, TypeId},
|
||||
@@ -147,6 +148,29 @@ pub trait StatelesslyInteractive: Element {
|
||||
self
|
||||
}
|
||||
|
||||
fn hover(mut self, f: impl FnOnce(StyleRefinement) -> StyleRefinement) -> Self
|
||||
where
|
||||
Self: Sized,
|
||||
{
|
||||
self.stateless_interactivity().hover_style = f(StyleRefinement::default());
|
||||
self
|
||||
}
|
||||
|
||||
fn group_hover(
|
||||
mut self,
|
||||
group_name: impl Into<SharedString>,
|
||||
f: impl FnOnce(StyleRefinement) -> StyleRefinement,
|
||||
) -> Self
|
||||
where
|
||||
Self: Sized,
|
||||
{
|
||||
self.stateless_interactivity().group_hover_style = Some(GroupStyle {
|
||||
group: group_name.into(),
|
||||
style: f(StyleRefinement::default()),
|
||||
});
|
||||
self
|
||||
}
|
||||
|
||||
fn on_key_down(
|
||||
mut self,
|
||||
listener: impl Fn(
|
||||
@@ -218,6 +242,29 @@ pub trait StatelesslyInteractive: Element {
|
||||
pub trait StatefullyInteractive: StatelesslyInteractive {
|
||||
fn stateful_interactivity(&mut self) -> &mut StatefulInteractivity<Self::ViewState>;
|
||||
|
||||
fn active(mut self, f: impl FnOnce(StyleRefinement) -> StyleRefinement) -> Self
|
||||
where
|
||||
Self: Sized,
|
||||
{
|
||||
self.stateful_interactivity().active_style = f(StyleRefinement::default());
|
||||
self
|
||||
}
|
||||
|
||||
fn group_active(
|
||||
mut self,
|
||||
group_name: impl Into<SharedString>,
|
||||
f: impl FnOnce(StyleRefinement) -> StyleRefinement,
|
||||
) -> Self
|
||||
where
|
||||
Self: Sized,
|
||||
{
|
||||
self.stateful_interactivity().group_active_style = Some(GroupStyle {
|
||||
group: group_name.into(),
|
||||
style: f(StyleRefinement::default()),
|
||||
});
|
||||
self
|
||||
}
|
||||
|
||||
fn on_click(
|
||||
mut self,
|
||||
handler: impl Fn(&mut Self::ViewState, &MouseClickEvent, &mut ViewContext<Self::ViewState>)
|
||||
|
||||
Reference in New Issue
Block a user