NAME
Clay::UI::Events::OnHoverStopped - fired when the pointer leaves a hovered widget
SYNOPSIS
use v5.22;
use warnings;
use feature 'signatures';
no warnings 'experimental::signatures';
use Object::Pad;
use Clay::XS qw(sizing_fixed);
use Clay::UI;
use Clay::UI::Box;
use Clay::UI::Role::Interaction::Hoverable;
class My::Panel :strict(params) :does(Clay::UI::Box) {}
class My::Tile :strict(params)
:does(Clay::UI::Box)
:does(Clay::UI::Role::Interaction::Hoverable)
{}
my $tile = My::Tile->new(
id => 'tile',
layout => { sizing => { width => sizing_fixed(50), height => sizing_fixed(50) } },
);
$tile->on('OnHoverStopped', sub ($event) {
say 'pointer left ', $event->target->id;
return;
});
my $root = My::Panel->new(id => 'root');
$root->add_child($tile);
my $ui = Clay::UI->new(width => 100, height => 100, root => $root);
$ui->render;
$ui->render(pointer_state => { x => 10, y => 10, down => 0 }); # over the tile
$ui->render(pointer_state => { x => 90, y => 90, down => 0 }); # "pointer left tile"
DESCRIPTION
OnHoverStopped fires at a hovered widget when it stops being hovered:
in the frame the pointer is no longer over it (during "render" in Clay::UI or a synthetic "update" in Clay::UI::Interaction);
at once, during the removal, when the widget (or an ancestor) is removed from the tree while hovered. The widget is still attached to its parent while the listeners run.
The widget is no longer hovered (is_hovered is 0) when its listeners run. A widget gets OnHoverStopped only after it got Clay::UI::Events::OnHoverStart.
- Name
-
'OnHoverStopped'. - Received by
-
The Clay::UI::Role::Interaction::Hoverable widget that stopped being hovered. Every such widget gets its own event, nested ones included.
- Bubbling
-
Does not bubble by default (
Clay::UI::Enum::Bubble->NEVER), like the DOM'smouseleave. - Order
-
All
OnHoverStoppedevents of a frame fire first, before every other event of the frame, in tree order. An event whose widget is hovered again when its turn comes is dropped.
ACCESSORS
No payload. The inherited accessors (see Clay::UI::Events::Event):
- name
-
'OnHoverStopped'. - bubble_mode
-
Clay::UI::Enum::Bubble->NEVER. - target
- current_target
-
The widget that stopped being hovered.
- handled_by
- result
-
That widget and
HANDLEDwhen one of its listeners returned anything butClay::UI::Enum::Result->CONTINUE.
CLASS METHODS
event_name
my $name = Clay::UI::Events::OnHoverStopped->event_name; # 'OnHoverStopped'
Returns 'OnHoverStopped', the event name listeners register for with on and the default name of a new event (see "event_name" in Clay::UI::Events::Event).
default_bubble_mode
my $mode = Clay::UI::Events::OnHoverStopped->default_bubble_mode; # Bubble->NEVER
Returns Clay::UI::Enum::Bubble->NEVER, the default bubble_mode of a new event: OnHoverStopped does not bubble (see "default_bubble_mode" in Clay::UI::Events::Event).
SEE ALSO
Clay::UI::Events::OnHoverStart, Clay::UI::Role::Interaction::Hoverable, "REMOVED WIDGETS" in Clay::UI::Interaction, "EVENTS" in Clay::UI.