Re: Resizing window
- From: Iago Rubio <iago iagorubio com>
- To: gtk-app-devel-list gnome org
- Subject: Re: Resizing window
- Date: Tue, 22 Aug 2006 12:40:52 +0200
On Tue, 2006-08-22 at 11:54 +0200, Iago Rubio wrote:
On Tue, 2006-08-22 at 09:22 +0200, Fernando ApesteguÃa wrote:
I'm still looking for a solution. My app has internationalization support.
So make the window fixed is not possible in order to allow all the different
messages to fit in the window. I'll read more documentation.
More ideas?
Have you tried to pick the child's requisition and resize the window to
it ?
Try out the example attached.
Sorry, the attachment didn't make it.
// gcc test.c -o test `pkg-config --cflags --libs gtk+-2.0`
#include <gtk/gtk.h>
void
on_notebook_switch_page (GtkNotebook *notebook,
GtkNotebookPage *page,
guint page_num,
gpointer user_data)
{
GtkWidget *child;
GtkRequisition requisition;
child = gtk_notebook_get_nth_page (notebook,
page_num);
// pick the child's requisition
gtk_widget_size_request (child, &requisition);
// The "+10" stuff below is used because we're not taking
// into account the frame's width.
gtk_window_resize (GTK_WINDOW(user_data),
requisition.width + 10,
requisition.height + 10);
}
int main(int argc, char **argv)
{
GtkWidget *window, *window_vbox;
GtkWidget *notebook, *small_label, *big_label;
gtk_init (&argc, &argv);
window = gtk_window_new(GTK_WINDOW_TOPLEVEL);
window_vbox = gtk_vbox_new (FALSE, 0);
gtk_container_add (GTK_CONTAINER(window), window_vbox);
gtk_widget_show (window_vbox);
notebook = gtk_notebook_new ();
gtk_widget_show (notebook);
gtk_box_pack_start (GTK_BOX (window_vbox), notebook, TRUE, TRUE, 0);
small_label = gtk_label_new ("Small label");
gtk_widget_show (small_label);
gtk_notebook_append_page (GTK_NOTEBOOK(notebook),
small_label,
NULL);
big_label = gtk_label_new (
"T H I S I S A B I G G E R L A B E L"
);
gtk_widget_show (big_label);
gtk_notebook_append_page (GTK_NOTEBOOK(notebook),
big_label,
NULL);
g_signal_connect ( notebook,
"switch-page",
G_CALLBACK(on_notebook_switch_page),
window );
g_signal_connect_swapped ( window,
"delete_event",
gtk_main_quit,
NULL );
// force it to be smaller than it ought to be
gtk_widget_set_size_request (GTK_WIDGET(window), 100, 50);
gtk_widget_show (window);
gtk_main ();
return 0;
}
--
Iago Rubio
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]