1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57
|
package Gtk3::ImageView::Tool::SelectorDragger;
use warnings;
use strict;
use base 'Gtk3::ImageView::Tool';
use Glib qw(TRUE FALSE); # To get TRUE and FALSE
our $VERSION = '12';
sub new {
my $class = shift;
my $view = shift;
my $self = Gtk3::ImageView::Tool->new($view);
$self->{_selector} = Gtk3::ImageView::Tool::Selector->new($view);
$self->{_dragger} = Gtk3::ImageView::Tool::Dragger->new($view);
$self->{_tool} = $self->{_selector};
return bless $self, $class;
}
sub button_pressed {
my $self = shift;
my $event = shift;
# left mouse button
if ( $event->button == 1 ) {
$self->{_tool} = $self->{_selector};
}
elsif ( $event->button == 2 ) { # middle mouse button
$self->{_tool} = $self->{_dragger};
}
else {
return FALSE;
}
return $self->{_tool}->button_pressed($event);
}
sub button_released {
my $self = shift;
my $event = shift;
$self->{_tool}->button_released($event);
$self->{_tool} = $self->{_selector};
return;
}
sub motion {
my $self = shift;
my $event = shift;
$self->{_tool}->motion($event);
return;
}
sub cursor_type_at_point {
my ( $self, $x, $y ) = @_;
return $self->{_tool}->cursor_type_at_point( $x, $y );
}
1;
|