Struct kas_widgets::GripPart
source · pub struct GripPart { /* private fields */ }
Expand description
A draggable grip part
Slider
, ScrollBar
and
Splitter
all require a component which supports
click+drag behaviour. The appearance differs but event handling is the
same: this widget is its implementation.
Layout
This widget is unusual in several ways:
Layout::size_rules
does not request any size; the parent is expected to do this. (Calling this method is still required to comply with widget model.)Layout::set_rect
sets the track within which this grip may move; the parent should always callGripPart::set_size_and_offset
afterwards to set the grip position.Layout::draw
does nothing. The parent should handle all drawing.
Event handling
This widget handles click/touch events on the widget, pushing a
GripMsg
to allow the parent to implement further handling.
Optionally, the parent may call GripPart::handle_press_on_track
when a Event::PressStart
occurs on the track area (which identifies
as being the parent widget).
Implementations§
source§impl GripPart
impl GripPart
sourcepub fn set_size_and_offset(&mut self, size: Size, offset: Offset) -> Action
pub fn set_size_and_offset(&mut self, size: Size, offset: Offset) -> Action
Set a new grip size and position
Returns Action::REDRAW
if a redraw is required.
sourcepub fn max_offset(&self) -> Offset
pub fn max_offset(&self) -> Offset
Get the maximum allowed offset
The grip position is clamped between ZERO
and this offset relative to
the track. This value depends on size of the grip and the track.
sourcepub fn set_offset(&mut self, offset: Offset) -> (Offset, Action)
pub fn set_offset(&mut self, offset: Offset) -> (Offset, Action)
Set a new grip position
Returns the new position (after clamping input) and an action: empty if
the grip hasn’t moved; REDRAW
if it has (though this widget is
not directly responsible for drawing, so this may not be accurate).
sourcepub fn handle_press_on_track(
&mut self,
cx: &mut EventCx<'_>,
press: &Press
) -> Offset
pub fn handle_press_on_track( &mut self, cx: &mut EventCx<'_>, press: &Press ) -> Offset
Handle an event on the track itself
If it is desired to make the grip move when the track area is clicked,
then the parent widget should call this method when receiving
Event::PressStart
.
Returns the new grip position relative to the track.
The grip position is not adjusted; the caller should also call
Self::set_offset
to do so. This is separate to allow adjustment of
the posision; e.g. Slider
pins the position to the nearest detent.
Trait Implementations§
source§impl Events for GripPart
impl Events for GripPart
source§fn handle_hover(&mut self, cx: &mut EventCx<'_>, state: bool) -> IsUsed
fn handle_hover(&mut self, cx: &mut EventCx<'_>, state: bool) -> IsUsed
source§fn steal_event(
&mut self,
_: &mut EventCx<'_>,
_: &Self::Data,
_: &Id,
_: &Event
) -> IsUsed
fn steal_event( &mut self, _: &mut EventCx<'_>, _: &Self::Data, _: &Id, _: &Event ) -> IsUsed
source§fn configure_recurse(&mut self, cx: &mut ConfigCx<'_>, data: &Self::Data)
fn configure_recurse(&mut self, cx: &mut ConfigCx<'_>, data: &Self::Data)
source§fn update(&mut self, cx: &mut ConfigCx<'_>, data: &Self::Data)
fn update(&mut self, cx: &mut ConfigCx<'_>, data: &Self::Data)
source§fn update_recurse(&mut self, cx: &mut ConfigCx<'_>, data: &Self::Data)
fn update_recurse(&mut self, cx: &mut ConfigCx<'_>, data: &Self::Data)
source§impl Layout for GripPart
impl Layout for GripPart
This implementation is unusual in that:
size_rules
always returnsSizeRules::EMPTY
set_rect
sets the track within which this grip may move; the parent should callGripPart::set_size_and_offset
afterset_rect
(otherwise the grip’s position will not be updated)draw
does nothing: the parent is expected to do all drawing
source§fn size_rules(&mut self, _: SizeCx<'_>, _axis: AxisInfo) -> SizeRules
fn size_rules(&mut self, _: SizeCx<'_>, _axis: AxisInfo) -> SizeRules
source§fn widget_name(&self) -> &'static str
fn widget_name(&self) -> &'static str
source§fn num_children(&self) -> usize
fn num_children(&self) -> usize
source§fn get_child(&self, index: usize) -> Option<&dyn Layout>
fn get_child(&self, index: usize) -> Option<&dyn Layout>
dyn Layout
Read moresource§fn find_child_index(&self, id: &Id) -> Option<usize>
fn find_child_index(&self, id: &Id) -> Option<usize>
id
, if any Read moresource§fn translation(&self) -> Offset
fn translation(&self) -> Offset
Auto Trait Implementations§
impl RefUnwindSafe for GripPart
impl !Send for GripPart
impl !Sync for GripPart
impl Unpin for GripPart
impl UnwindSafe for GripPart
Blanket Implementations§
source§impl<W> AdaptWidget for Wwhere
W: Widget,
impl<W> AdaptWidget for Wwhere
W: Widget,
source§fn on_configure<F>(self, f: F) -> AdaptEvents<Self>
fn on_configure<F>(self, f: F) -> AdaptEvents<Self>
Events::configure
Read moresource§fn on_update<F>(self, f: F) -> AdaptEvents<Self>
fn on_update<F>(self, f: F) -> AdaptEvents<Self>
Events::update
Read moresource§fn on_message<M, H>(self, handler: H) -> AdaptEvents<Self>
fn on_message<M, H>(self, handler: H) -> AdaptEvents<Self>
M
Read moresource§fn on_messages<H>(self, handler: H) -> AdaptEvents<Self>
fn on_messages<H>(self, handler: H) -> AdaptEvents<Self>
source§fn with_min_size_px(self, w: i32, h: i32) -> Reserve<Self>
fn with_min_size_px(self, w: i32, h: i32) -> Reserve<Self>
source§fn with_min_size_em(self, w: f32, h: f32) -> Reserve<Self>
fn with_min_size_em(self, w: f32, h: f32) -> Reserve<Self>
source§fn with_label<D, T>(self, direction: D, label: T) -> WithLabel<Self, D>
fn with_label<D, T>(self, direction: D, label: T) -> WithLabel<Self, D>
source§impl<W> AdaptWidgetAny for W
impl<W> AdaptWidgetAny for W
source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
§impl<S, T> Cast<T> for Swhere
T: Conv<S>,
impl<S, T> Cast<T> for Swhere
T: Conv<S>,
§impl<S, T> CastApprox<T> for Swhere
T: ConvApprox<S>,
impl<S, T> CastApprox<T> for Swhere
T: ConvApprox<S>,
§fn try_cast_approx(self) -> Result<T, Error>
fn try_cast_approx(self) -> Result<T, Error>
§fn cast_approx(self) -> T
fn cast_approx(self) -> T
§impl<S, T> CastFloat<T> for Swhere
T: ConvFloat<S>,
impl<S, T> CastFloat<T> for Swhere
T: ConvFloat<S>,
§fn cast_trunc(self) -> T
fn cast_trunc(self) -> T
§fn cast_nearest(self) -> T
fn cast_nearest(self) -> T
§fn cast_floor(self) -> T
fn cast_floor(self) -> T
§fn try_cast_trunc(self) -> Result<T, Error>
fn try_cast_trunc(self) -> Result<T, Error>
§fn try_cast_nearest(self) -> Result<T, Error>
fn try_cast_nearest(self) -> Result<T, Error>
§fn try_cast_floor(self) -> Result<T, Error>
fn try_cast_floor(self) -> Result<T, Error>
§fn try_cast_ceil(self) -> Result<T, Error>
fn try_cast_ceil(self) -> Result<T, Error>
§impl<T> Downcast for Twhere
T: Any,
impl<T> Downcast for Twhere
T: Any,
§fn into_any(self: Box<T>) -> Box<dyn Any>
fn into_any(self: Box<T>) -> Box<dyn Any>
Box<dyn Trait>
(where Trait: Downcast
) to Box<dyn Any>
. Box<dyn Any>
can
then be further downcast
into Box<ConcreteType>
where ConcreteType
implements Trait
.§fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>
fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>
Rc<Trait>
(where Trait: Downcast
) to Rc<Any>
. Rc<Any>
can then be
further downcast
into Rc<ConcreteType>
where ConcreteType
implements Trait
.§fn as_any(&self) -> &(dyn Any + 'static)
fn as_any(&self) -> &(dyn Any + 'static)
&Trait
(where Trait: Downcast
) to &Any
. This is needed since Rust cannot
generate &Any
’s vtable from &Trait
’s.§fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
&mut Trait
(where Trait: Downcast
) to &Any
. This is needed since Rust cannot
generate &mut Any
’s vtable from &mut Trait
’s.§impl<T> Instrument for T
impl<T> Instrument for T
§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
source§impl<W> LayoutExt for W
impl<W> LayoutExt for W
source§fn identify(&self) -> IdentifyWidget<'_>
fn identify(&self) -> IdentifyWidget<'_>
source§fn is_strict_ancestor_of(&self, id: &Id) -> bool
fn is_strict_ancestor_of(&self, id: &Id) -> bool
id
is not self and is a descendant Read more