mirror of
https://github.com/zed-industries/zed.git
synced 2024-12-29 04:20:46 +00:00
Merge pull request #1300 from zed-industries/gpui-changes
GPUI change proposals
This commit is contained in:
commit
a564f34d3a
6 changed files with 24 additions and 11 deletions
|
@ -91,7 +91,7 @@ impl Element for EventHandler {
|
|||
click: Some(Rc::new(|_, _, _| {})),
|
||||
right_mouse_down: Some(Rc::new(|_, _| {})),
|
||||
right_click: Some(Rc::new(|_, _, _| {})),
|
||||
drag: Some(Rc::new(|_, _| {})),
|
||||
drag: Some(Rc::new(|_, _, _| {})),
|
||||
mouse_down_out: Some(Rc::new(|_, _| {})),
|
||||
right_mouse_down_out: Some(Rc::new(|_, _| {})),
|
||||
});
|
||||
|
|
|
@ -24,7 +24,7 @@ pub struct MouseEventHandler {
|
|||
right_click: Option<Rc<dyn Fn(Vector2F, usize, &mut EventContext)>>,
|
||||
mouse_down_out: Option<Rc<dyn Fn(Vector2F, &mut EventContext)>>,
|
||||
right_mouse_down_out: Option<Rc<dyn Fn(Vector2F, &mut EventContext)>>,
|
||||
drag: Option<Rc<dyn Fn(Vector2F, &mut EventContext)>>,
|
||||
drag: Option<Rc<dyn Fn(Vector2F, Vector2F, &mut EventContext)>>,
|
||||
hover: Option<Rc<dyn Fn(Vector2F, bool, &mut EventContext)>>,
|
||||
padding: Padding,
|
||||
}
|
||||
|
@ -106,7 +106,10 @@ impl MouseEventHandler {
|
|||
self
|
||||
}
|
||||
|
||||
pub fn on_drag(mut self, handler: impl Fn(Vector2F, &mut EventContext) + 'static) -> Self {
|
||||
pub fn on_drag(
|
||||
mut self,
|
||||
handler: impl Fn(Vector2F, Vector2F, &mut EventContext) + 'static,
|
||||
) -> Self {
|
||||
self.drag = Some(Rc::new(handler));
|
||||
self
|
||||
}
|
||||
|
|
|
@ -317,7 +317,7 @@ impl Presenter {
|
|||
.zip(self.prev_drag_position.as_mut())
|
||||
{
|
||||
dragged_region =
|
||||
Some((clicked_region.clone(), position - *prev_drag_position));
|
||||
Some((clicked_region.clone(), *prev_drag_position, position));
|
||||
*prev_drag_position = position;
|
||||
}
|
||||
|
||||
|
@ -379,11 +379,11 @@ impl Presenter {
|
|||
}
|
||||
}
|
||||
|
||||
if let Some((dragged_region, delta)) = dragged_region {
|
||||
if let Some((dragged_region, prev_position, position)) = dragged_region {
|
||||
handled = true;
|
||||
if let Some(drag_callback) = dragged_region.drag {
|
||||
event_cx.with_current_view(dragged_region.view_id, |event_cx| {
|
||||
drag_callback(delta, event_cx);
|
||||
drag_callback(prev_position, position, event_cx);
|
||||
})
|
||||
}
|
||||
}
|
||||
|
@ -661,6 +661,16 @@ impl<'a> PaintContext<'a> {
|
|||
}
|
||||
}
|
||||
|
||||
#[inline]
|
||||
pub fn paint_layer<F>(&mut self, clip_bounds: Option<RectF>, f: F)
|
||||
where
|
||||
F: FnOnce(&mut Self) -> (),
|
||||
{
|
||||
self.scene.push_layer(clip_bounds);
|
||||
f(self);
|
||||
self.scene.pop_layer();
|
||||
}
|
||||
|
||||
pub fn current_view_id(&self) -> usize {
|
||||
*self.view_stack.last().unwrap()
|
||||
}
|
||||
|
|
|
@ -65,7 +65,7 @@ pub struct MouseRegion {
|
|||
pub click: Option<Rc<dyn Fn(Vector2F, usize, &mut EventContext)>>,
|
||||
pub right_mouse_down: Option<Rc<dyn Fn(Vector2F, &mut EventContext)>>,
|
||||
pub right_click: Option<Rc<dyn Fn(Vector2F, usize, &mut EventContext)>>,
|
||||
pub drag: Option<Rc<dyn Fn(Vector2F, &mut EventContext)>>,
|
||||
pub drag: Option<Rc<dyn Fn(Vector2F, Vector2F, &mut EventContext)>>,
|
||||
pub mouse_down_out: Option<Rc<dyn Fn(Vector2F, &mut EventContext)>>,
|
||||
pub right_mouse_down_out: Option<Rc<dyn Fn(Vector2F, &mut EventContext)>>,
|
||||
}
|
||||
|
|
|
@ -188,12 +188,13 @@ impl Sidebar {
|
|||
})
|
||||
.with_cursor_style(CursorStyle::ResizeLeftRight)
|
||||
.on_mouse_down(|_, _| {}) // This prevents the mouse down event from being propagated elsewhere
|
||||
.on_drag(move |delta, cx| {
|
||||
.on_drag(move |old_position, new_position, cx| {
|
||||
let delta = new_position.x() - old_position.x();
|
||||
let prev_width = *actual_width.borrow();
|
||||
*custom_width.borrow_mut() = 0f32
|
||||
.max(match side {
|
||||
Side::Left => prev_width + delta.x(),
|
||||
Side::Right => prev_width - delta.x(),
|
||||
Side::Left => prev_width + delta,
|
||||
Side::Right => prev_width - delta,
|
||||
})
|
||||
.round();
|
||||
|
||||
|
|
1
styles/package-lock.json
generated
1
styles/package-lock.json
generated
|
@ -5,7 +5,6 @@
|
|||
"requires": true,
|
||||
"packages": {
|
||||
"": {
|
||||
"name": "styles",
|
||||
"version": "1.0.0",
|
||||
"license": "ISC",
|
||||
"dependencies": {
|
||||
|
|
Loading…
Reference in a new issue