how to bind the scrollbar with viewport widget( urgent )
- From: Liu Neo-W4135C <W4135C motorola com>
- To: gtk-app-devel-list gnome org
- Subject: how to bind the scrollbar with viewport widget( urgent )
- Date: Sat, 17 Jan 2004 15:52:54 +0800
Title: Message
Expertises,
below is the snapshot of my code. i modified it from
../examples/scrolledwinow/. what i did is use a vbox which contains a button and
a table as viewport. unfortunely, i couldn't make scrollbar work when move focus
with arrow keys. i have tried gkt_scrolled_window_setv/hadjustment and
gtk_viewport_setv/hadjustment and it seems not work. did i miss
anything?
i really need your
valuable and quickly help, so any suggestion will be grealy
appreciated.
thanks in advance
and best regards,
Liu,
Nian
GtkWidget* vbox;
GtkWidget*
sep;
GtkWidget* viewport;
gtk_init (&argc, &argv);
/*
Create a new dialog window for the scrolled window to
be
* packed into. */
window = gtk_dialog_new ();
g_signal_connect (G_OBJECT
(window), "destroy",
G_CALLBACK
(destroy), NULL);
gtk_window_set_title (GTK_WINDOW
(window), "GtkScrolledWindow example");
gtk_container_set_border_width (GTK_CONTAINER (window),
0);
gtk_widget_set_size_request (window, 300,
300);
/* create a new scrolled
window. */
scrolled_window = gtk_scrolled_window_new
(NULL, NULL);
gtk_container_set_border_width (GTK_CONTAINER (scrolled_window),
10);
/* the policy is one of
GTK_POLICY AUTOMATIC, or GTK_POLICY_ALWAYS.
*
GTK_POLICY_AUTOMATIC will automatically decide whether you
need
* scrollbars, whereas GTK_POLICY_ALWAYS will
always leave the scrollbars
* there. The first
one is the horizontal scrollbar, the second,
* the
vertical. */
gtk_scrolled_window_set_policy
(GTK_SCROLLED_WINDOW
(scrolled_window),
GTK_POLICY_AUTOMATIC, GTK_POLICY_ALWAYS);
/* The dialog
window is created with a vbox packed into it.
*/
gtk_box_pack_start (GTK_BOX (GTK_DIALOG(window)->vbox), scrolled_window,
TRUE, TRUE, 0);
gtk_widget_show
(scrolled_window);
viewport = gtk_viewport_new( NULL, NULL
);
vbox = gtk_vbox_new( FALSE, 0
);
gtk_container_add( GTK_CONTAINER(viewport), vbox );
sep =
gtk_button_new_with_label( "seperator" );
gtk_box_pack_start( GTK_BOX( vbox
), sep, TRUE, TRUE, 0 );
/* create a table of 10
by 10 squares. */
table = gtk_table_new (10, 10,
FALSE);
gtk_box_pack_start( GTK_BOX( vbox ), table, TRUE, TRUE, 0
);
/* set the spacing to 10 on x
and 10 on y */
gtk_table_set_row_spacings (GTK_TABLE
(table), 10);
gtk_table_set_col_spacings (GTK_TABLE
(table), 10);
/* pack the table
into the scrolled window */
gtk_scrolled_window_add_with_viewport
(
GTK_SCROLLED_WINDOW (scrolled_window),
viewport);
gtk_scrolled_window_set_vadjustment( GTK_SCROLLED_WINDOW(scrolled_window),
gtk_viewport_get_vadjustment( (GtkViewport*)viewport )
);
gtk_widget_show( sep
);
gtk_widget_show (table);
gtk_widget_show( vbox
);
gtk_widget_show( viewport );
/* this simply creates a grid of toggle buttons on the
table
* to demonstrate the scrolled window.
*/
for (i = 0; i < 10;
i++)
for (j = 0; j < 10; j++)
{
sprintf (buffer,
"button (%d,%d)\n", i, j);
button =
gtk_toggle_button_new_with_label (buffer);
gtk_table_attach_defaults (GTK_TABLE (table),
button,
i, i+1, j, j+1);
gtk_widget_show (button);
}
/* Add a "close" button to the
bottom of the dialog */
button = gtk_button_new_with_label
("close");
g_signal_connect_swapped (G_OBJECT (button),
"clicked",
G_CALLBACK
(gtk_widget_destroy),
window);
/* this makes it so the
button is the default. */
GTK_WIDGET_SET_FLAGS (button, GTK_CAN_DEFAULT);
gtk_box_pack_start (GTK_BOX (GTK_DIALOG (window)->action_area), button, TRUE,
TRUE, 0);
/* This grabs this button
to be the default button. Simply hitting
* the
"Enter" key will cause this button to activate. */
gtk_widget_grab_default (button);
gtk_widget_show
(button);
gtk_widget_show
(window);
gtk_main();
return
0;
}
[Date Prev][Date Next] [Thread Prev][Thread Next]
[Thread Index]
[Date Index]
[Author Index]