[10332] in The GTK GIMP ToolKit mailing list archive

home help back first fref pref prev next nref lref last post

[gtk-list] GtkContainer misbehaviour

daemon@ATHENA.MIT.EDU (Robert Roebling)
Mon Nov 23 07:10:35 1998

Date: Mon, 23 Nov 1998 14:05:35 +0100
From: Robert Roebling <roebling@sun2.ruf.uni-freiburg.de>
To: GTK mailing list <gtk-list@redhat.com>
Resent-From: gtk-list@redhat.com
Reply-To: gtk-list@redhat.com

Hi,

I need to create a window that contains a GtkFixed.
Some of the children have to be resized when the
window changes size, such as a menubar that has to
have the same size as the window etc. This is not 
possible when using GTK 1.1.3 (as opposed to 1.0.6) 
as the window blocks all queue_resize calls when within 
a size_allocate callback. What I do is something like 
that (much simplified):

GtkWidget *fixed;
GtkWidget *window;
GtkWidget *button;

size_alloc_callback(.....)
{
   gtk_fixed_move( fixed, button, 30, 30 );  // no effect
   gtk_widget_set_usize( button, 100, 40 ); // no effect
}

main()
{
  window = gtk_window_new();
  connect( window, size_alloc_callback, "size_allocate" );
  fixed = gtk_fixed_new();
  gtk_container_add( window, fixed );
  button = gtk_button_new();
  gtk_fixed_insert( fixed, button, ... );
  ...
}

The same code works when I use an idle handler to set
the size outside the callback, but that is no nice
solution, because I don't want the window to show
up trashed and then get corrected, but instead show
up right from the beginning. I have stepped through
GTK 1.1.3 for hours but the resizing code is equally
distributed over at least 4 files and I haven't been
able to understand the meaning of each flag, but it
seems that the private flag resize_needed is set
when the allocate_size callback is called and this
blocks all (or maybe all but the first) calls that 
require a gtk_widget_queue_resize.

  Robert

-- 
------------------------------------------------------------------
Robert Roebling              "Write once, compile, run everywhere"

wxWindows/GTK       http://wesley.informatik.uni-freiburg.de/~wxxt

-- 
To unsubscribe: mail -s unsubscribe gtk-list-request@redhat.com < /dev/null


home help back first fref pref prev next nref lref last post