summaryrefslogtreecommitdiff
path: root/gtk/gtkpreview.c
diff options
context:
space:
mode:
Diffstat (limited to 'gtk/gtkpreview.c')
-rw-r--r--gtk/gtkpreview.c69
1 files changed, 64 insertions, 5 deletions
diff --git a/gtk/gtkpreview.c b/gtk/gtkpreview.c
index ebe90a339a..39d2618a0f 100644
--- a/gtk/gtkpreview.c
+++ b/gtk/gtkpreview.c
@@ -39,9 +39,20 @@
#define PREVIEW_CLASS(w) GTK_PREVIEW_CLASS (GTK_OBJECT (w)->klass)
+enum {
+ ARG_0,
+ ARG_EXPAND
+};
+
static void gtk_preview_class_init (GtkPreviewClass *klass);
static void gtk_preview_init (GtkPreview *preview);
+static void gtk_preview_set_arg (GtkObject *object,
+ GtkArg *arg,
+ guint arg_id);
+static void gtk_preview_get_arg (GtkObject *object,
+ GtkArg *arg,
+ guint arg_id);
static void gtk_preview_finalize (GtkObject *object);
static void gtk_preview_realize (GtkWidget *widget);
static void gtk_preview_size_allocate (GtkWidget *widget,
@@ -75,7 +86,7 @@ gtk_preview_get_type (void)
(GtkClassInitFunc) NULL,
};
- preview_type = gtk_type_unique (gtk_widget_get_type (), &preview_info);
+ preview_type = gtk_type_unique (GTK_TYPE_WIDGET, &preview_info);
}
return preview_type;
@@ -90,9 +101,11 @@ gtk_preview_class_init (GtkPreviewClass *klass)
object_class = (GtkObjectClass*) klass;
widget_class = (GtkWidgetClass*) klass;
- parent_class = gtk_type_class (gtk_widget_get_type ());
+ parent_class = gtk_type_class (GTK_TYPE_WIDGET);
preview_class = klass;
+ object_class->set_arg = gtk_preview_set_arg;
+ object_class->get_arg = gtk_preview_get_arg;
object_class->finalize = gtk_preview_finalize;
widget_class->realize = gtk_preview_realize;
@@ -109,6 +122,46 @@ gtk_preview_class_init (GtkPreviewClass *klass)
gdk_rgb_init ();
klass->info.cmap = gdk_rgb_get_cmap ();
klass->info.visual = gdk_rgb_get_visual ();
+
+ gtk_object_add_arg_type ("GtkPreview::expand",
+ GTK_TYPE_BOOL,
+ GTK_ARG_READWRITE,
+ ARG_EXPAND);
+}
+
+static void
+gtk_preview_set_arg (GtkObject *object,
+ GtkArg *arg,
+ guint arg_id)
+{
+ GtkPreview *preview = GTK_PREVIEW (object);
+
+ switch (arg_id)
+ {
+ case ARG_EXPAND:
+ gtk_preview_set_expand (preview, GTK_VALUE_BOOL (*arg));
+ break;
+ }
+}
+
+static void
+gtk_preview_get_arg (GtkObject *object,
+ GtkArg *arg,
+ guint arg_id)
+{
+ GtkPreview *preview;
+
+ preview = GTK_PREVIEW (object);
+
+ switch (arg_id)
+ {
+ case ARG_EXPAND:
+ GTK_VALUE_BOOL (*arg) = preview->expand;
+ break;
+ default:
+ arg->type = GTK_TYPE_INVALID;
+ break;
+ }
}
void
@@ -295,12 +348,18 @@ gtk_preview_draw_row (GtkPreview *preview,
void
gtk_preview_set_expand (GtkPreview *preview,
- gint expand)
+ gboolean expand)
{
g_return_if_fail (preview != NULL);
g_return_if_fail (GTK_IS_PREVIEW (preview));
- preview->expand = (expand != FALSE);
+ expand = expand != FALSE;
+
+ if (preview->expand != expand)
+ {
+ preview->expand = expand;
+ gtk_widget_queue_resize (GTK_WIDGET (preview));
+ }
}
void
@@ -539,7 +598,7 @@ gtk_preview_make_buffer (GtkPreview *preview)
}
}
-/* This will be useful for implementing gamma. */
+/* This is used for implementing gamma. */
static void
gtk_fill_lookup_array (guchar *array)
{