aboutsummaryrefslogtreecommitdiff
path: root/src/MTools/Anim
diff options
context:
space:
mode:
Diffstat (limited to 'src/MTools/Anim')
-rw-r--r--src/MTools/Anim/MOpacity.pm9
-rw-r--r--src/MTools/Anim/MScalor.pm9
-rw-r--r--src/MTools/Anim/MTranslator.pm9
3 files changed, 24 insertions, 3 deletions
diff --git a/src/MTools/Anim/MOpacity.pm b/src/MTools/Anim/MOpacity.pm
index 4525b2d..382a505 100644
--- a/src/MTools/Anim/MOpacity.pm
+++ b/src/MTools/Anim/MOpacity.pm
@@ -77,6 +77,7 @@ sub new {
});
$self -> {__animation} = undef;
$self -> mconfigure (%options);
+ $self -> {__complete} = 0;
return $self;
}
@@ -102,7 +103,12 @@ sub start {
});
$self -> {__animation} -> wheninterrupted (sub {
$self -> {__animation} = undef;
- $self -> notify ('ANIMATION_ABORD', $self -> {__opacity});
+ if ($self -> {__complete}) {
+ $self -> {__complete} = 0;
+ $self -> notify ('ANIMATION_END');
+ } else {
+ $self -> notify ('ANIMATION_ABORD', $self -> {__opacity});
+ }
});
$self -> {__animation} -> start ();
}
@@ -119,6 +125,7 @@ sub complete {
my ($self) = @_;
return if !$self->isRunning();
$self->__event($self -> mget ('to_opacity') - $self -> {__opacitydep});
+ $self -> {__complete} = 1;
$self->stop();
}
diff --git a/src/MTools/Anim/MScalor.pm b/src/MTools/Anim/MScalor.pm
index da1914d..5d84e8e 100644
--- a/src/MTools/Anim/MScalor.pm
+++ b/src/MTools/Anim/MScalor.pm
@@ -81,6 +81,7 @@ sub new {
});
$self -> {__animation} = undef;
$self -> mconfigure (%options);
+ $self -> {__complete} = 0;
return $self;
}
@@ -109,7 +110,12 @@ sub start {
});
$self -> {__animation} -> wheninterrupted (sub {
$self -> {__animation} = undef;
- $self -> notify ('ANIMATION_ABORD', $self -> {__x}, $self -> {__y});
+ if ($self -> {__complete}) {
+ $self -> {__complete} = 0;
+ $self -> notify ('ANIMATION_END');
+ } else {
+ $self -> notify ('ANIMATION_ABORD', $self -> {__x}, $self -> {__y});
+ }
});
$self -> {__animation} -> start ();
}
@@ -126,6 +132,7 @@ sub complete {
my ($self) = @_;
return if !$self->isRunning();
$self->__event($self -> mget ('to_x') - $self -> {__xdep}, $self -> mget ('to_y') - $self -> {__ydep});
+ $self -> {__complete} = 1;
$self->stop();
}
diff --git a/src/MTools/Anim/MTranslator.pm b/src/MTools/Anim/MTranslator.pm
index 73877e4..afbed91 100644
--- a/src/MTools/Anim/MTranslator.pm
+++ b/src/MTools/Anim/MTranslator.pm
@@ -81,6 +81,7 @@ sub new {
});
$self -> {__animation} = undef;
$self -> mconfigure (%options);
+ $self -> {__complete} = 0;
return $self;
}
@@ -96,6 +97,7 @@ sub complete {
my ($self) = @_;
return if !$self->isRunning();
$self->event($self -> mget ('to_x') - $self -> {__xdep}, $self -> mget ('to_y') - $self -> {__ydep});
+ $self -> {__complete} = 1;
$self->stop();
}
@@ -125,7 +127,12 @@ sub start {
});
$self -> {__animation} -> wheninterrupted (sub {
$self -> {__animation} = undef;
- $self -> notify ('ANIMATION_ABORD', $self -> {__x}, $self -> {__y});
+ if ($self -> {__complete}) {
+ $self -> {__complete} = 0;
+ $self -> notify ('ANIMATION_END');
+ } else {
+ $self -> notify ('ANIMATION_ABORD', $self -> {__x}, $self -> {__y});
+ }
});
$self -> {__animation} -> start ();
}