From 7e7e7480a6b5cb60eb9c25babf1feb347f4586c2 Mon Sep 17 00:00:00 2001 From: Michael Natterer Date: Fri, 1 Sep 2006 17:12:29 +0000 Subject: [PATCH] added a context property and use it when creating GimpViews. 2006-09-01 Michael Natterer * app/widgets/gimpaction.[ch]: added a context property and use it when creating GimpViews. * app/actions/file-actions.c: set the context on the "Open Recent" actions. --- ChangeLog | 8 ++++++++ app/actions/file-actions.c | 9 ++++++++- app/widgets/gimpaction.c | 27 ++++++++++++++++++++++++--- app/widgets/gimpaction.h | 2 ++ 4 files changed, 42 insertions(+), 4 deletions(-) diff --git a/ChangeLog b/ChangeLog index c611c849bd..a1744a9b48 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,11 @@ +2006-09-01 Michael Natterer + + * app/widgets/gimpaction.[ch]: added a context property and use + it when creating GimpViews. + + * app/actions/file-actions.c: set the context on the "Open Recent" + actions. + 2006-09-01 Michael Natterer * app/widgets/gimpcontainercombobox.c: implement set_context() and diff --git a/app/actions/file-actions.c b/app/actions/file-actions.c index b6dd2f5a75..366809b7dc 100644 --- a/app/actions/file-actions.c +++ b/app/actions/file-actions.c @@ -170,10 +170,17 @@ file_actions_setup (GimpActionGroup *group) for (i = 0; i < n_entries; i++) { + GtkAction *action; + gimp_action_group_set_action_visible (group, entries[i].name, FALSE); - g_free ((gchar *) entries[i].name); + action = gtk_action_group_get_action (GTK_ACTION_GROUP (group), + entries[i].name); + g_object_set (action, + "context", gimp_get_user_context (group->gimp), + NULL); + g_free ((gchar *) entries[i].name); if (i < 9) g_free ((gchar *) entries[i].accelerator); } diff --git a/app/widgets/gimpaction.c b/app/widgets/gimpaction.c index 7d9914d932..1d01e7b975 100644 --- a/app/widgets/gimpaction.c +++ b/app/widgets/gimpaction.c @@ -31,6 +31,7 @@ #include "widgets-types.h" +#include "core/gimpcontext.h" #include "core/gimpmarshal.h" #include "core/gimpimagefile.h" /* eek */ #include "core/gimpviewable.h" @@ -43,6 +44,7 @@ enum { PROP_0, + PROP_CONTEXT, PROP_COLOR, PROP_VIEWABLE }; @@ -83,6 +85,12 @@ gimp_action_class_init (GimpActionClass *klass) gimp_rgba_set (&black, 0.0, 0.0, 0.0, GIMP_OPACITY_OPAQUE); + g_object_class_install_property (object_class, PROP_CONTEXT, + g_param_spec_object ("context", + NULL, NULL, + GIMP_TYPE_CONTEXT, + GIMP_PARAM_READWRITE)); + g_object_class_install_property (object_class, PROP_COLOR, gimp_param_spec_rgb ("color", NULL, NULL, @@ -108,6 +116,12 @@ gimp_action_finalize (GObject *object) { GimpAction *action = GIMP_ACTION (object); + if (action->context) + { + g_object_unref (action->context); + action->context = NULL; + } + if (action->color) { g_free (action->color); @@ -133,6 +147,9 @@ gimp_action_get_property (GObject *object, switch (prop_id) { + case PROP_CONTEXT: + g_value_set_object (value, action->context); + break; case PROP_COLOR: g_value_set_boxed (value, action->color); break; @@ -156,6 +173,11 @@ gimp_action_set_property (GObject *object, switch (prop_id) { + case PROP_CONTEXT: + if (action->context) + g_object_unref (action->context); + action->context = GIMP_CONTEXT (g_value_dup_object (value)); + break; case PROP_COLOR: if (action->color) g_free (action->color); @@ -165,7 +187,7 @@ gimp_action_set_property (GObject *object, case PROP_VIEWABLE: if (action->viewable) g_object_unref (action->viewable); - action->viewable = (GimpViewable *) g_value_dup_object (value); + action->viewable = GIMP_VIEWABLE (g_value_dup_object (value)); set_proxy = TRUE; break; default: @@ -327,8 +349,7 @@ gimp_action_set_proxy (GimpAction *action, gtk_icon_size_lookup_for_settings (settings, size, &width, &height); - view = gimp_view_new_full (NULL /* FIXME */, - action->viewable, + view = gimp_view_new_full (action->context, action->viewable, width, height, border_width, FALSE, FALSE, FALSE); gtk_image_menu_item_set_image (GTK_IMAGE_MENU_ITEM (proxy), view); diff --git a/app/widgets/gimpaction.h b/app/widgets/gimpaction.h index f9ac83ab24..3af9d63036 100644 --- a/app/widgets/gimpaction.h +++ b/app/widgets/gimpaction.h @@ -40,6 +40,8 @@ struct _GimpAction { GtkAction parent_instance; + GimpContext *context; + GimpRGB *color; GimpViewable *viewable; };