App-Guiio
view release on metacpan or search on metacpan
lib/App/Guiio.pm view on Meta::CPAN
my $selected_element = $element_over[0] ;
$self->edit_element($selected_element) ;
$self->update_display();
}
return TRUE ;
}
if($event->button == 1)
{
my $modifiers = get_key_modifiers($event) ;
my ($x, $y) = $self->closest_character($event->coords()) ;
my ($first_element) = first_value {$self->is_over_element($_, $x, $y)} reverse @{$self->{ELEMENTS}} ;
if ($modifiers eq 'C00')
{
if(defined $first_element)
{
$self->run_actions_by_name('Copy to clipboard', ['Insert from clipboard', 0, 0]) ;
}
}
else
{
if(defined $first_element)
{
if ($modifiers eq '00S')
{
$self->select_elements_flip($first_element) ;
}
else
{
unless($self->is_element_selected($first_element))
{
$self->select_elements(0, @{$self->{ELEMENTS}}) ;
$self->select_elements(1, $first_element) ;
}
}
}
else
{
$self->select_elements(0, @{$self->{ELEMENTS}}) if ($modifiers eq '000') ;
}
}
$self->{SELECTION_RECTANGLE} = {START_X => $x , START_Y => $y} ;
$self->update_display();
}
if($event->button == 2)
{
my ($x, $y) = $self->closest_character($event->coords()) ;
$self->{SELECTION_RECTANGLE} = {START_X => $x , START_Y => $y} ;
$self->update_display();
}
# handle right button mouse click, disabled with GUIIO as context
#if($event->button == 3)
# {
# $self->display_popup_menu($event) ;
# }
return TRUE;
}
#-----------------------------------------------------------------------------
sub motion_notify_event
{
my ($widget, $event, $self) = @_ ;
my ($x, $y) = $self->closest_character($event->coords()) ;
my $modifiers = get_key_modifiers($event) ;
if($self->exists_action("${modifiers}motion_notify"))
{
$self->run_actions(["${modifiers}-motion_notify", $event]) ;
return TRUE ;
}
if($self->{PREVIOUS_X} != $x || $self->{PREVIOUS_Y} != $y)
{
($self->{MOUSE_X}, $self->{MOUSE_Y}) = ($x, $y) ;
$self->update_display() ;
}
if ($event->state >= "button1-mask")
{
if($self->{DRAGGING} ne '')
{
if ($self->{DRAGGING} eq 'move') { $self->move_elements_event($x, $y) ; }
elsif ($self->{DRAGGING}eq 'resize') { $self->resize_element_event($x, $y) ; }
elsif ($self->{DRAGGING}eq 'select') { $self->select_element_event($x, $y) ; }
}
else
{
my @selected_elements = $self->get_selected_elements(1) ;
my ($first_element) = first_value {$self->is_over_element($_, $x, $y)} reverse @selected_elements ;
if(@selected_elements > 1)
{
if(defined $first_element)
{
$self->{DRAGGING} = 'move' ;
}
else
{
$self->{DRAGGING} = 'select' ;
}
}
else
{
if(defined $first_element)
{
$self->{DRAGGING} = $first_element->get_selection_action
(
$x - $first_element->{X},
$y - $first_element->{Y},
);
( run in 1.273 second using v1.01-cache-2.11-cpan-364913b4093 )