[gnome-software] Make GsApps notify when their key colors are set



commit 693c0af47c9c527d51e876c9c1bd6213b6996cfa
Author: Joaquim Rocha <jrocha endlessm com>
Date:   Mon Sep 25 14:16:08 2017 +0200

    Make GsApps notify when their key colors are set
    
    This patch introduces a new GsApp property "key-colors" which gets
    notified when changed.

 lib/gs-app.c | 18 +++++++++++++++++-
 1 file changed, 17 insertions(+), 1 deletion(-)
---
diff --git a/lib/gs-app.c b/lib/gs-app.c
index 5f3c4798..38989397 100644
--- a/lib/gs-app.c
+++ b/lib/gs-app.c
@@ -132,6 +132,7 @@ enum {
        PROP_INSTALL_DATE,
        PROP_QUIRK,
        PROP_PENDING_ACTION,
+       PROP_KEY_COLORS,
        PROP_LAST
 };
 
@@ -3607,7 +3608,8 @@ gs_app_set_key_colors (GsApp *app, GPtrArray *key_colors)
        g_return_if_fail (GS_IS_APP (app));
        g_return_if_fail (key_colors != NULL);
        locker = g_mutex_locker_new (&priv->mutex);
-       _g_set_ptr_array (&priv->key_colors, key_colors);
+       if (_g_set_ptr_array (&priv->key_colors, key_colors))
+               gs_app_queue_notify (app, "key-colors");
 }
 
 /**
@@ -3626,6 +3628,7 @@ gs_app_add_key_color (GsApp *app, GdkRGBA *key_color)
        g_return_if_fail (GS_IS_APP (app));
        g_return_if_fail (key_color != NULL);
        g_ptr_array_add (priv->key_colors, gdk_rgba_copy (key_color));
+       gs_app_queue_notify (app, "key-colors");
 }
 
 /**
@@ -4047,6 +4050,9 @@ gs_app_get_property (GObject *object, guint prop_id, GValue *value, GParamSpec *
        case PROP_QUIRK:
                g_value_set_uint64 (value, priv->quirk);
                break;
+       case PROP_KEY_COLORS:
+               g_value_set_boxed (value, priv->key_colors);
+               break;
        default:
                G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
                break;
@@ -4102,6 +4108,9 @@ gs_app_set_property (GObject *object, guint prop_id, const GValue *value, GParam
        case PROP_QUIRK:
                priv->quirk = g_value_get_uint64 (value);
                break;
+       case PROP_KEY_COLORS:
+               gs_app_set_key_colors (app, g_value_get_boxed (value));
+               break;
        default:
                G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
                break;
@@ -4289,6 +4298,13 @@ gs_app_class_init (GsAppClass *klass)
                                     0, G_MAXUINT64, 0,
                                     G_PARAM_READABLE);
        g_object_class_install_property (object_class, PROP_PENDING_ACTION, pspec);
+
+       /**
+       * GsApp:key-colors:
+       */
+       pspec = g_param_spec_boxed ("key-colors", NULL, NULL,
+                                   G_TYPE_PTR_ARRAY, G_PARAM_READWRITE);
+       g_object_class_install_property (object_class, PROP_KEY_COLORS, pspec);
 }
 
 static void


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]