This PR fixes an issue where an element with a cursor style set would not update the cursor when hovering over it. Previously the cursor style would only appear by interacting with the element in some way, for instance, by clicking on the element or by having a `.hover` with some other style being applied. Release Notes: - N/A
112 lines
3.5 KiB
Rust
112 lines
3.5 KiB
Rust
use gpui::{Div, Render, Stateful};
|
|
use story::Story;
|
|
use ui::prelude::*;
|
|
|
|
pub struct CursorStory;
|
|
|
|
impl Render for CursorStory {
|
|
type Element = Div;
|
|
|
|
fn render(&mut self, _cx: &mut ViewContext<Self>) -> Self::Element {
|
|
let all_cursors: [(&str, Box<dyn Fn(Stateful<Div>) -> Stateful<Div>>); 19] = [
|
|
(
|
|
"cursor_default",
|
|
Box::new(|el: Stateful<Div>| el.cursor_default()),
|
|
),
|
|
(
|
|
"cursor_pointer",
|
|
Box::new(|el: Stateful<Div>| el.cursor_pointer()),
|
|
),
|
|
(
|
|
"cursor_text",
|
|
Box::new(|el: Stateful<Div>| el.cursor_text()),
|
|
),
|
|
(
|
|
"cursor_move",
|
|
Box::new(|el: Stateful<Div>| el.cursor_move()),
|
|
),
|
|
(
|
|
"cursor_not_allowed",
|
|
Box::new(|el: Stateful<Div>| el.cursor_not_allowed()),
|
|
),
|
|
(
|
|
"cursor_context_menu",
|
|
Box::new(|el: Stateful<Div>| el.cursor_context_menu()),
|
|
),
|
|
(
|
|
"cursor_crosshair",
|
|
Box::new(|el: Stateful<Div>| el.cursor_crosshair()),
|
|
),
|
|
(
|
|
"cursor_vertical_text",
|
|
Box::new(|el: Stateful<Div>| el.cursor_vertical_text()),
|
|
),
|
|
(
|
|
"cursor_alias",
|
|
Box::new(|el: Stateful<Div>| el.cursor_alias()),
|
|
),
|
|
(
|
|
"cursor_copy",
|
|
Box::new(|el: Stateful<Div>| el.cursor_copy()),
|
|
),
|
|
(
|
|
"cursor_no_drop",
|
|
Box::new(|el: Stateful<Div>| el.cursor_no_drop()),
|
|
),
|
|
(
|
|
"cursor_grab",
|
|
Box::new(|el: Stateful<Div>| el.cursor_grab()),
|
|
),
|
|
(
|
|
"cursor_grabbing",
|
|
Box::new(|el: Stateful<Div>| el.cursor_grabbing()),
|
|
),
|
|
(
|
|
"cursor_col_resize",
|
|
Box::new(|el: Stateful<Div>| el.cursor_col_resize()),
|
|
),
|
|
(
|
|
"cursor_row_resize",
|
|
Box::new(|el: Stateful<Div>| el.cursor_row_resize()),
|
|
),
|
|
(
|
|
"cursor_n_resize",
|
|
Box::new(|el: Stateful<Div>| el.cursor_n_resize()),
|
|
),
|
|
(
|
|
"cursor_e_resize",
|
|
Box::new(|el: Stateful<Div>| el.cursor_e_resize()),
|
|
),
|
|
(
|
|
"cursor_s_resize",
|
|
Box::new(|el: Stateful<Div>| el.cursor_s_resize()),
|
|
),
|
|
(
|
|
"cursor_w_resize",
|
|
Box::new(|el: Stateful<Div>| el.cursor_w_resize()),
|
|
),
|
|
];
|
|
|
|
Story::container()
|
|
.flex()
|
|
.gap_1()
|
|
.child(Story::title("cursor"))
|
|
.children(all_cursors.map(|(name, apply_cursor)| {
|
|
div().gap_1().flex().text_color(gpui::white()).child(
|
|
div()
|
|
.flex()
|
|
.items_center()
|
|
.justify_center()
|
|
.id(name)
|
|
.map(apply_cursor)
|
|
.w_64()
|
|
.h_8()
|
|
.bg(gpui::red())
|
|
.active(|style| style.bg(gpui::green()))
|
|
.text_sm()
|
|
.child(Story::label(name)),
|
|
)
|
|
}))
|
|
}
|
|
}
|