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