Get the channel select looking good

Co-Authored-By: Nathan Sobo <nathan@zed.dev>
This commit is contained in:
Max Brunsfeld
2021-08-30 17:59:13 -07:00
co-authored by Nathan Sobo
parent ff01b52819
commit 73a8fda9c7
10 changed files with 348 additions and 82 deletions
+5 -4
View File
@@ -3,8 +3,8 @@ use std::ops::DerefMut;
use crate::{
geometry::{rect::RectF, vector::Vector2F},
platform::CursorStyle,
CursorStyleHandle, DebugContext, Element, ElementBox, ElementStateHandle, Event, EventContext,
LayoutContext, MutableAppContext, PaintContext, SizeConstraint,
CursorStyleHandle, DebugContext, Element, ElementBox, ElementStateHandle, ElementStateId,
Event, EventContext, LayoutContext, MutableAppContext, PaintContext, SizeConstraint,
};
use serde_json::json;
@@ -25,13 +25,14 @@ pub struct MouseState {
}
impl MouseEventHandler {
pub fn new<Tag, F, C>(id: usize, cx: &mut C, render_child: F) -> Self
pub fn new<Tag, F, C, Id>(id: Id, cx: &mut C, render_child: F) -> Self
where
Tag: 'static,
F: FnOnce(&MouseState, &mut C) -> ElementBox,
C: DerefMut<Target = MutableAppContext>,
Id: Into<ElementStateId>,
{
let state_handle = cx.element_state::<Tag, _>(id);
let state_handle = cx.element_state::<Tag, _>(id.into());
let child = state_handle.update(cx, |state, cx| render_child(state, cx));
Self {
state: state_handle,
+4 -4
View File
@@ -5,7 +5,7 @@ use crate::{
vector::{vec2f, Vector2F},
},
json::{self, json},
AppContext, ElementBox,
ElementBox, MutableAppContext,
};
use json::ToJson;
use parking_lot::Mutex;
@@ -38,7 +38,7 @@ pub struct LayoutState {
pub struct UniformList<F>
where
F: Fn(Range<usize>, &mut Vec<ElementBox>, &AppContext),
F: Fn(Range<usize>, &mut Vec<ElementBox>, &mut MutableAppContext),
{
state: UniformListState,
item_count: usize,
@@ -47,7 +47,7 @@ where
impl<F> UniformList<F>
where
F: Fn(Range<usize>, &mut Vec<ElementBox>, &AppContext),
F: Fn(Range<usize>, &mut Vec<ElementBox>, &mut MutableAppContext),
{
pub fn new(state: UniformListState, item_count: usize, append_items: F) -> Self {
Self {
@@ -102,7 +102,7 @@ where
impl<F> Element for UniformList<F>
where
F: Fn(Range<usize>, &mut Vec<ElementBox>, &AppContext),
F: Fn(Range<usize>, &mut Vec<ElementBox>, &mut MutableAppContext),
{
type LayoutState = LayoutState;
type PaintState = ();