diff options
author | Havoc Pennington <hp@redhat.com> | 2002-01-29 23:59:21 +0000 |
---|---|---|
committer | Owen Taylor <otaylor@src.gnome.org> | 2002-01-29 23:59:21 +0000 |
commit | 708b3f408d6279924faa5c8afae8c587e122eb58 (patch) | |
tree | c5d6d448fb88c18ddbbc2fb12cc37a69c7933da8 /demos | |
parent | ccb90778612b30b145ca635b91f85e17fd60f3fc (diff) | |
download | gtk+-708b3f408d6279924faa5c8afae8c587e122eb58.tar.gz |
Optimize exposes of partial insensitive images.
Tue Jan 29 18:50:59 2002 Owen Taylor <otaylor@redhat.com>
* gtk/gtkimage.c (gtk_image_expose): Optimize exposes of
partial insensitive images.
2002-01-24 Havoc Pennington <hp@redhat.com>
* gtk/gtkimage.c (gtk_image_expose): create insensitive version of
the image regardless of storage type, #63305
* demos/gtk-demo/images.c: add toggle button to demonstrate that
GtkImage makes its contents insensitive
Diffstat (limited to 'demos')
-rw-r--r-- | demos/gtk-demo/images.c | 47 |
1 files changed, 41 insertions, 6 deletions
diff --git a/demos/gtk-demo/images.c b/demos/gtk-demo/images.c index 4719f484ed..bbab57ba0d 100644 --- a/demos/gtk-demo/images.c +++ b/demos/gtk-demo/images.c @@ -41,12 +41,13 @@ progressive_prepared_callback (GdkPixbufLoader *loader, gtk_image_set_from_pixbuf (GTK_IMAGE (image), pixbuf); } -static void progressive_updated_callback (GdkPixbufLoader *loader, - gint x, - gint y, - gint width, - gint height, - gpointer data) +static void +progressive_updated_callback (GdkPixbufLoader *loader, + gint x, + gint y, + gint width, + gint height, + gpointer data) { GtkWidget *image; @@ -280,6 +281,31 @@ cleanup_callback (GtkObject *object, image_stream = NULL; } +static void +toggle_sensitivity_callback (GtkWidget *togglebutton, + gpointer user_data) +{ + GtkContainer *container = user_data; + GList *list; + GList *tmp; + + list = gtk_container_get_children (container); + + tmp = list; + while (tmp != NULL) + { + /* don't disable our toggle */ + if (GTK_WIDGET (tmp->data) != togglebutton) + gtk_widget_set_sensitive (GTK_WIDGET (tmp->data), + !gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (togglebutton))); + + tmp = tmp->next; + } + + g_list_free (list); +} + + GtkWidget * do_images (void) { @@ -288,6 +314,7 @@ do_images (void) GtkWidget *image; GtkWidget *label; GtkWidget *align; + GtkWidget *button; GdkPixbuf *pixbuf; GError *error = NULL; char *filename; @@ -410,6 +437,14 @@ do_images (void) gtk_container_add (GTK_CONTAINER (frame), image); start_progressive_loading (image); + + /* Sensitivity control */ + button = gtk_toggle_button_new_with_mnemonic ("_Insensitive"); + gtk_box_pack_start (GTK_BOX (vbox), button, FALSE, FALSE, 0); + + g_signal_connect (G_OBJECT (button), "toggled", + G_CALLBACK (toggle_sensitivity_callback), + vbox); } if (!GTK_WIDGET_VISIBLE (window)) |