Hi,

Hmmm looks like "$window->set_policy()" should be available to set that 
behavior [1]. However perl Gtk2::Window does not seem to have a binding 
for this call. The C docs suggest to use set_resizable instead of 
set_policy, but no mention there of any auto behavior. Anyone knows why 
this call is missing ?


[1] 
http://library.gnome.org/devel/gtk/2.11/GtkWindow.html#gtk-window-set-policy

Regards,

Jaap


Laurent Klinger wrote:
> Hello,
>
>   I have a simple application, whose toplevel window has the following 
> structure :
>
>  +-VBox----------------------+
>  |    [Image]                |
>  +---------------------------+
>  |+--HBox-------------------+|
>  ||            [Next] [Quit]||
>  |+-------------------------+|
>  +---------------------------+
>
> When it starts, it displays an image. Upon clicking on the 'Next'
> button, another image is read and displayed.
>
> When the second image displayed is larger than the first, everything
> resizes nicely to accomodate. However, when the second image is smaller
> than the first, the window does not shrink: [Image] has some empty
> space on both sides, while the HBox has some empty space below. I can
> manually resize (downsize) the window, but it would be nicer if it
> would fit tightly to its content by itself. How do you ask GTK to
> adopt this kind of behaviour?
>
> Thank you very much for your help,
>
>    laurent
>
>
>
> ----------------------------------------------------------------------------
> #!/usr/bin/perl -w
>
> use strict;
> use Gtk2 -init;
> use Glib qw/TRUE FALSE/;
>
>
> my $image = undef;
> my $fig = 1;
>
> #===== create window
> my $window = Gtk2::Window->new ('toplevel');
> $window->set_resizable( TRUE );
> $window->signal_connect( delete_event => \&Quit );
>
> #===== add widgets
> GetImage( $fig );
>
> my $next_btn = Gtk2::Button->new( 'Next' );
> $next_btn->signal_connect( 'clicked', sub{ GetImage( ++$fig ); } );
> my $close_btn = Gtk2::Button->new_from_stock( 'gtk-close' );
> $close_btn->signal_connect( 'clicked'  , sub{ Gtk2->main_quit; } ) ; 
>
> my $hbox = Gtk2::HBox->new( FALSE, 5 );
> $hbox->pack_end( $close_btn, FALSE, TRUE, 5 );
> $hbox->pack_end( $next_btn, FALSE, TRUE, 5 );
>
> my $vbox = Gtk2::VBox->new(FALSE,0);
> $vbox->pack_start( $image, FALSE, FALSE, 0 );
> $vbox->pack_start( $hbox, FALSE, FALSE, 10 );
>
> $window->add($vbox);
> $window->set_position( 'center' );
> $window->show_all;
>
> Gtk2->main;
>
>
> #================================================================================
> sub GetImage
> {
>   my $id = shift;
>   my $pixbuf = Gtk2::Gdk::Pixbuf->new_from_file( "fig${id}.png" );
>   if ( defined $image ) {
>     $image->clear;
>     $image->set_from_pixbuf( $pixbuf );
>   } else {
>     $image = Gtk2::Image->new_from_pixbuf( $pixbuf );
>   }
> }
>
> _______________________________________________
> gtk-perl-list mailing list
> gtk-perl-list@gnome.org
> http://mail.gnome.org/mailman/listinfo/gtk-perl-list
>
>   

_______________________________________________
gtk-perl-list mailing list
gtk-perl-list@gnome.org
http://mail.gnome.org/mailman/listinfo/gtk-perl-list

Reply via email to