The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.
# $Id$
print "1..15 activate,onActivate,deactivate,onDeactivate,maximize,onWindowState,".
		"restore from maximized,minimize,restore from minimized,restore max->min->normal,".
		"user modality,execute,show,hide,close\n";

my %id;
my $xw = Prima::Window-> create(
	size => [ 100, 100],
	onActivate    => sub { $dong = 1; $id{Activate}   = 1;},
	onDeactivate  => sub { $dong = 1; $id{Deactivate} = 1;},
	onExecute     => sub { $dong = 1; $id{Execute}    = 1;},
	onWindowState => sub { $dong = 1; $id{State}      = 1;},
	onClose       => sub { $dong = 1; $id{Close}      = 1; $_[0]-> clear_event; },
	onShow        => sub { $dong = 1; $id{Show}       = 1; },
	onHide        => sub { $dong = 1; $id{Hide}       = 1; },
);

$w-> focus;

$dong = 0;
$xw-> focus;
ok( $xw-> selected);
ok(( $dong || &__wait) && $id{Activate});
%id=();

$dong = 0;
$w-> focus;
ok( !$xw-> selected);
ok(( $dong || &__wait) && $id{Deactivate});
%id=();

$dong = 0;
$xw-> windowState( ws::Maximized);
ok( $xw-> windowState == ws::Maximized);
ok(( $dong || &__wait) && $id{State});
$xw-> windowState( ws::Normal);
ok( $xw-> windowState == ws::Normal);
%id=();

$dong = 0;
$xw-> windowState( ws::Minimized);
ok( $xw-> windowState == ws::Minimized);

$dong = 0;
$xw-> windowState( ws::Normal);
ok( $xw-> windowState == ws::Normal);

$xw-> windowState( ws::Maximized);
$xw-> windowState( ws::Minimized);
$xw-> windowState( ws::Normal);
ok( $xw-> windowState == ws::Normal);

%id=();
$dong = 0;
$xw-> insert( Timer =>
	timeout => 250,
	onTick => sub {
	$_[0]-> stop;
	$w-> focus;
	ok( !$w-> selected);
	$xw-> ok;
	$_[0]-> destroy;
})-> start;
my $mr = $xw-> execute;
ok( $dong && $mr == mb::OK);

$dong = 0;
%id=();
$xw-> show;
ok(( $dong || &__wait) && $id{Show} && $xw-> visible);

$dong = 0;
%id=();
$xw-> hide;
ok(( $dong || &__wait) && $id{Hide} && !$xw-> visible);

%id=();
$dong = 0;
$xw-> close;
ok(( $dong || &__wait) && $id{Close} && $xw-> alive);

$xw-> destroy;


1;