… | |
… | |
29 | use List::Util qw(min max); |
29 | use List::Util qw(min max); |
30 | |
30 | |
31 | sub INIT_INSTANCE { |
31 | sub INIT_INSTANCE { |
32 | my ($self) = @_; |
32 | my ($self) = @_; |
33 | |
33 | |
34 | $self->signal_connect (destroy => sub { %{$_[0]} = () }); |
34 | $self->signal_connect (destroy => sub { |
|
|
35 | my ($self) = @_; |
|
|
36 | $self->{tip}->destroy if $self->{tip}; |
|
|
37 | %$self = (); |
|
|
38 | 0 |
|
|
39 | }); |
35 | $self->signal_connect (realize => sub { |
40 | $self->signal_connect (realize => sub { |
36 | my ($self) = @_; |
41 | my ($self) = @_; |
37 | |
42 | |
38 | $self->{window} = $self->window; |
43 | $self->{window} = $self->window; |
39 | |
44 | |
40 | 1 |
45 | 1 |
41 | }); |
46 | }); |
42 | |
47 | |
43 | $self->set_redraw_on_allocate (0); # nope |
48 | $self->set_redraw_on_allocate (0); |
44 | $self->double_buffered (0); |
49 | $self->double_buffered (0); |
|
|
50 | |
|
|
51 | # reduces unnecessary redraws |
|
|
52 | $self->signal_connect_after (focus_in_event => sub { 1 }); |
|
|
53 | $self->signal_connect_after (focus_out_event => sub { 1 }); |
45 | |
54 | |
46 | $self->signal_connect (size_request => sub { |
55 | $self->signal_connect (size_request => sub { |
47 | $_[1]->width (20 * TILESIZE); |
56 | $_[1]->width (20 * TILESIZE); |
48 | $_[1]->height (20 * TILESIZE); |
57 | $_[1]->height (20 * TILESIZE); |
49 | |
58 | |
… | |
… | |
56 | $self->set_viewport ($self->{x}, $self->{y}); |
65 | $self->set_viewport ($self->{x}, $self->{y}); |
57 | |
66 | |
58 | 0 |
67 | 0 |
59 | }); |
68 | }); |
60 | |
69 | |
61 | # reduces unnecessary redraws |
70 | $self->{tooltip} = -2; # need to be mapped _and_ inside |
62 | $self->signal_connect_after (focus_in_event => sub { 1 }); |
|
|
63 | $self->signal_connect_after (focus_out_event => sub { 1 }); |
|
|
64 | |
71 | |
65 | $self->{tooltip} = -1; # initially disabled |
72 | $self->signal_connect_after (map_event => sub { $self->enable_tooltip; 0 }); |
|
|
73 | $self->signal_connect_after (unmap_event => sub { $self->disable_tooltip; 0 }); |
66 | |
74 | |
67 | $self->signal_connect_after (enter_notify_event => sub { $self->enable_tooltip; 0 }); |
75 | $self->signal_connect_after (enter_notify_event => sub { $self->enable_tooltip; 0 }); |
68 | $self->signal_connect_after (leave_notify_event => sub { $self->disable_tooltip; 0 }); |
76 | $self->signal_connect_after (leave_notify_event => sub { $self->disable_tooltip; 0 }); |
69 | |
77 | |
70 | $self->signal_connect (button_press_event => sub { |
78 | $self->signal_connect (button_press_event => sub { |