summaryrefslogtreecommitdiff
path: root/demos
diff options
context:
space:
mode:
authorHavoc Pennington <hp@redhat.com>2002-01-29 23:59:21 +0000
committerOwen Taylor <otaylor@src.gnome.org>2002-01-29 23:59:21 +0000
commit708b3f408d6279924faa5c8afae8c587e122eb58 (patch)
treec5d6d448fb88c18ddbbc2fb12cc37a69c7933da8 /demos
parentccb90778612b30b145ca635b91f85e17fd60f3fc (diff)
downloadgtk+-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.c47
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))