how to shrink a drawing area as its toplevel window is shrunk
- From: Chisheng Huang <cph chi-square-works com>
- To: gtk-app-devel-list gnome org
- Subject: how to shrink a drawing area as its toplevel window is shrunk
- Date: Sat, 15 Dec 2001 01:45:11 -0800 (PST)
*** C source code attached at the end ***
I have a toplevel window that contains a scrolled window, which contains
a drawing area. The height of the drawing area is initially set to 256.
The scrolled window is told never to enable vertical scrolling. A
configure event handler is connected to the toplevel window to print out
the height of the toplevel window and the height of the drawing area.
The height of the drawing area increases as the height of the toplevel
window increases without any problem. For example, the printout would
look like the following:
Toplevel h: 277 Drawing area h: 256
Toplevel h: 281 Drawing area h: 258
Toplevel h: 287 Drawing area h: 264
Toplevel h: 291 Drawing area h: 268
Toplevel h: 295 Drawing area h: 272
If I decrease the height of the toplevel window, the height of the drawing
area will only decrease to 256 and stay there no matter how short the
toplevel window is resized. For example:
Toplevel h: 311 Drawing area h: 288
Toplevel h: 308 Drawing area h: 285
Toplevel h: 297 Drawing area h: 274
Toplevel h: 281 Drawing area h: 258
Toplevel h: 270 Drawing area h: 256
Toplevel h: 259 Drawing area h: 256
Toplevel h: 241 Drawing area h: 256
Toplevel h: 217 Drawing area h: 256
Toplevel h: 199 Drawing area h: 256
Toplevel h: 188 Drawing area h: 256
Toplevel h: 172 Drawing area h: 256
Toplevel h: 156 Drawing area h: 256
Toplevel h: 153 Drawing area h: 256
Does anybody know how to make the drawing area keep reducing its
height below 256 as the toplevel window is getting shorter and
shorter? (Note: In my real program code, there is a minimum height
for the toplevel window so that the drawing area will always have
meaningful height.) Any suggestions will be appreciated.
Best wishes,
Chisheng Huang
#include <gtk/gtk.h>
void destroy( GtkWidget *widget,
gpointer data )
{
gtk_main_quit();
}
static GtkWidget *area;
static gint configure_event( GtkWidget *widget,
GdkEventConfigure *event )
{
g_print ("Toplevel h: %d Drawing area h: %d\n",
widget->allocation.height,
area->allocation.height);
return TRUE;
}
int main( int argc,
char *argv[] )
{
static GtkWidget *window;
GtkWidget *scrolled_window;
gtk_init (&argc, &argv);
/* toplevel window */
window = gtk_window_new (GTK_WINDOW_TOPLEVEL);
gtk_signal_connect (GTK_OBJECT (window), "destroy",
(GtkSignalFunc) destroy, NULL);
gtk_signal_connect (GTK_OBJECT(window),"configure_event",
(GtkSignalFunc) configure_event, NULL);
gtk_widget_set_usize(window, 256, 256);
gtk_window_set_policy(GTK_WINDOW(window), TRUE, TRUE, FALSE);
/* scrolled window */
scrolled_window = gtk_scrolled_window_new (NULL, NULL);
gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (scrolled_window),
GTK_POLICY_AUTOMATIC, GTK_POLICY_NEVER);
gtk_container_add(GTK_CONTAINER (window), scrolled_window);
gtk_widget_show (scrolled_window);
/* drawing area */
area = gtk_drawing_area_new();
gtk_widget_set_usize(area, 256, 256);
gtk_scrolled_window_add_with_viewport (
GTK_SCROLLED_WINDOW (scrolled_window), area);
gtk_widget_show (area);
gtk_widget_show (window);
gtk_main();
return(0);
}
/* example-end */
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]