# $Id: Window.t,v 1.4 2003/11/03 10:25:29 dk Exp $
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 => 500,
   onTick => sub {
   $_[0]-> stop;
   $w-> focus;
   ok( !$w-> selected && $xw-> 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;
