32 lines
1.1 KiB
Rust
32 lines
1.1 KiB
Rust
use std::rc::Rc;
|
|
|
|
use gpui::prelude::FluentBuilder as _;
|
|
use gpui::{App, InteractiveElement as _, IntoElement, Pixels, Styled as _, Window, div, px};
|
|
pub(crate) use gpui_base::resize_handle;
|
|
use gpui_base::{ResizeHandleContext, ResizeHandleRenderer};
|
|
use theme::{ActiveTheme as _, AxisExt as _};
|
|
|
|
const HANDLE_SIZE: Pixels = px(1.);
|
|
|
|
pub(crate) fn resize_handle_appearance() -> ResizeHandleRenderer {
|
|
Rc::new(
|
|
|context: &ResizeHandleContext, _: &mut Window, cx: &mut App| {
|
|
let color = if context.is_active() {
|
|
cx.theme().border_strong
|
|
} else {
|
|
cx.theme().element_hover
|
|
};
|
|
let axis = context.axis();
|
|
|
|
Some(
|
|
div()
|
|
.bg(cx.theme().border_faint)
|
|
.group_hover("handle", move |this| this.bg(color))
|
|
.when(axis.is_horizontal(), |this| this.h_full().w(HANDLE_SIZE))
|
|
.when(axis.is_vertical(), |this| this.w_full().h(HANDLE_SIZE))
|
|
.into_any_element(),
|
|
)
|
|
},
|
|
)
|
|
}
|