[gimp] app: add GimpImage::linked-items-changed signal
- From: Ell <ell src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gimp] app: add GimpImage::linked-items-changed signal
- Date: Sat, 18 Jan 2020 13:19:07 +0000 (UTC)
commit 7d6737fe9ac55010d41e9d90bb39cd90f4e85771
Author: Ell <ell_se yahoo com>
Date: Sat Jan 18 15:10:32 2020 +0200
app: add GimpImage::linked-items-changed signal
Add a new GimpImage::linked-items-changed signal, which is emitted
whenever the set of linked items in an image changes.
app/core/gimpimage.c | 19 +++++++++++++++++++
app/core/gimpimage.h | 2 ++
app/core/gimpitem.c | 12 ++++++------
3 files changed, 27 insertions(+), 6 deletions(-)
---
diff --git a/app/core/gimpimage.c b/app/core/gimpimage.c
index feee92d08c..6682ebd117 100644
--- a/app/core/gimpimage.c
+++ b/app/core/gimpimage.c
@@ -102,6 +102,7 @@ enum
ACTIVE_LAYER_CHANGED,
ACTIVE_CHANNEL_CHANGED,
ACTIVE_VECTORS_CHANGED,
+ LINKED_ITEMS_CHANGED,
COMPONENT_VISIBILITY_CHANGED,
COMPONENT_ACTIVE_CHANGED,
MASK_CHANGED,
@@ -346,6 +347,15 @@ gimp_image_class_init (GimpImageClass *klass)
NULL, NULL, NULL,
G_TYPE_NONE, 0);
+ gimp_image_signals[LINKED_ITEMS_CHANGED] =
+ g_signal_new ("linked-items-changed",
+ G_TYPE_FROM_CLASS (klass),
+ G_SIGNAL_RUN_FIRST,
+ G_STRUCT_OFFSET (GimpImageClass, linked_items_changed),
+ NULL, NULL,
+ gimp_marshal_VOID__VOID,
+ G_TYPE_NONE, 0);
+
gimp_image_signals[COMPONENT_VISIBILITY_CHANGED] =
g_signal_new ("component-visibility-changed",
G_TYPE_FROM_CLASS (klass),
@@ -595,6 +605,7 @@ gimp_image_class_init (GimpImageClass *klass)
klass->active_layer_changed = NULL;
klass->active_channel_changed = NULL;
klass->active_vectors_changed = NULL;
+ klass->linked_items_changed = NULL;
klass->component_visibility_changed = NULL;
klass->component_active_changed = NULL;
klass->mask_changed = NULL;
@@ -3282,6 +3293,14 @@ gimp_image_alpha_changed (GimpImage *image)
g_signal_emit (image, gimp_image_signals[ALPHA_CHANGED], 0);
}
+void
+gimp_image_linked_items_changed (GimpImage *image)
+{
+ g_return_if_fail (GIMP_IS_IMAGE (image));
+
+ g_signal_emit (image, gimp_image_signals[LINKED_ITEMS_CHANGED], 0);
+}
+
void
gimp_image_invalidate (GimpImage *image,
gint x,
diff --git a/app/core/gimpimage.h b/app/core/gimpimage.h
index 61f3d0a816..69251ed1d7 100644
--- a/app/core/gimpimage.h
+++ b/app/core/gimpimage.h
@@ -57,6 +57,7 @@ struct _GimpImageClass
void (* active_layer_changed) (GimpImage *image);
void (* active_channel_changed) (GimpImage *image);
void (* active_vectors_changed) (GimpImage *image);
+ void (* linked_items_changed) (GimpImage *image);
void (* component_visibility_changed) (GimpImage *image,
GimpChannelType channel);
void (* component_active_changed) (GimpImage *image,
@@ -248,6 +249,7 @@ GimpComponentMask gimp_image_get_visible_mask (GimpImage *image);
void gimp_image_mode_changed (GimpImage *image);
void gimp_image_precision_changed (GimpImage *image);
void gimp_image_alpha_changed (GimpImage *image);
+void gimp_image_linked_items_changed (GimpImage *image);
void gimp_image_invalidate (GimpImage *image,
gint x,
gint y,
diff --git a/app/core/gimpitem.c b/app/core/gimpitem.c
index f4d7bdb3d6..6d5f772242 100644
--- a/app/core/gimpitem.c
+++ b/app/core/gimpitem.c
@@ -2328,18 +2328,18 @@ gimp_item_set_linked (GimpItem *item,
if (gimp_item_get_linked (item) != linked)
{
- if (push_undo && gimp_item_is_attached (item))
- {
- GimpImage *image = gimp_item_get_image (item);
+ GimpImage *image = gimp_item_get_image (item);
- if (image)
- gimp_image_undo_push_item_linked (image, NULL, item);
- }
+ if (push_undo && image && gimp_item_is_attached (item))
+ gimp_image_undo_push_item_linked (image, NULL, item);
GET_PRIVATE (item)->linked = linked;
g_signal_emit (item, gimp_item_signals[LINKED_CHANGED], 0);
+ if (image)
+ gimp_image_linked_items_changed (image);
+
g_object_notify (G_OBJECT (item), "linked");
}
}
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]