1use strict;
2use warnings;
3
4use Test::More;
5
6use Prima::sys::Test;
7use Prima::Application;
8
9plan tests => 12;
10
11my @w;
12my $window = create_window;
13$window-> restore;
14$window-> size( 400, 400);
15@w = $window-> get_virtual_size;
16my @wsave = @w;
17is_deeply( \@w, [400,400], "set/get consistency" );
18$window-> size( 300, 300);
19@w = $window-> size;
20my $id = $window-> add_notification( Size => sub {
21	my ( $self, $oldx, $oldy, $newx, $newy) = @_;
22	set_flag(0) if ( $newx == $wsave[0] && $newy == $wsave[1] && $oldx == $w[0] && $oldy == $w[1]);
23});
24reset_flag();
25$window-> size( 400, 400);
26ok( wait_flag, "onSize message" );
27$window-> remove_notification( $id);
28$window-> size( @w);
29my @dw = $window-> size;
30is_deeply( \@w, \@dw, "consistency with onSize" );
31$window-> visible(0);
32$window-> size( 200, 200);
33@w = $window-> get_virtual_size;
34$window-> visible(1);
35is_deeply( \@w, [200,200], "in hidden state" );
36$window-> minimize;
37$window-> size( 200, 200);
38@w = $window-> get_virtual_size;
39$window-> restore;
40is_deeply( \@w, [200,200], "in minimized state" );
41$window-> maximize;
42$window-> size( 200, 200);
43@w = $window-> get_virtual_size;
44$window-> restore;
45is_deeply( \@w, [200,200], "in maximized state" );
46
47####################################
48
49my @sz1 = $window-> size;
50my $ww = $window-> insert( Widget =>
51                           size => [ -2, -2],
52                           growMode => gm::Client,
53    );
54my @a = $ww-> get_virtual_size;
55is_deeply( \@a, [-2,-2], "virtual size on create set/get consistency" );
56$window-> size( $window-> width + 50, $window-> height + 50);
57my @sz2 = $window-> size;
58my @ds = ( $sz2[0] - $sz1[0], $sz2[1] - $sz1[1]);
59my @a2 = $ww-> get_virtual_size;
60$a2[$_] -= $a[$_] for 0..1;
61is_deeply( \@a2, \@ds, "growMode" );
62$window-> size( 200, 200);
63@a = $ww-> get_virtual_size;
64is_deeply( \@a, [-2,-2], "virtual size restore consistency" );
65my @p = $ww-> origin;
66$ww-> owner( $::application );
67$ww-> owner( $window );
68my @p2 = $ww-> origin;
69@a = $ww-> get_virtual_size;
70is_deeply( \@a, [-2,-2], "reparent check 1" );
71is_deeply( \@p, \@p2, "reparent check 2" );
72$window-> size( 300, 300);
73$window-> size( 200, 200);
74@a = $ww-> get_virtual_size;
75is_deeply( \@a, [-2,-2], "virtual size runtime consistency" );
76$ww-> destroy;
77