[gnome-shell/wip/fmuellner/window-app-icon-size: 1/4] texture-cache: Load bound surfaces into StWidgets



commit 6f794738e82a33f356f5069c36cbffff846c7acf
Author: Florian Müllner <fmuellner gnome org>
Date:   Fri Mar 8 14:06:38 2019 +0100

    texture-cache: Load bound surfaces into StWidgets
    
    Using widgets instead of plain actors will allow us to set the size
    from CSS.
    
    https://gitlab.gnome.org/GNOME/gnome-shell/issues/1027

 src/shell-app.c           | 14 ++++++++------
 src/st/st-texture-cache.c | 19 +++++++++++--------
 src/st/st-texture-cache.h |  9 +++++----
 3 files changed, 24 insertions(+), 18 deletions(-)
---
diff --git a/src/shell-app.c b/src/shell-app.c
index 3f91613fa..e0b925b5f 100644
--- a/src/shell-app.c
+++ b/src/shell-app.c
@@ -184,7 +184,7 @@ window_backed_app_get_icon (ShellApp *app,
                             int       size)
 {
   MetaWindow *window = NULL;
-  ClutterActor *actor;
+  StWidget *widget;
   gint scale;
   ShellGlobal *global;
   StThemeContext *context;
@@ -204,16 +204,18 @@ window_backed_app_get_icon (ShellApp *app,
 
   if (window == NULL)
     {
+      ClutterActor *actor;
+
       actor = clutter_actor_new ();
       g_object_set (actor, "opacity", 0, "width", (float) size, "height", (float) size, NULL);
       return actor;
     }
 
-  actor = st_texture_cache_bind_cairo_surface_property (st_texture_cache_get_default (),
-                                                        G_OBJECT (window),
-                                                        "icon",
-                                                        size);
-  return actor;
+  widget = st_texture_cache_bind_cairo_surface_property (st_texture_cache_get_default (),
+                                                         G_OBJECT (window),
+                                                         "icon",
+                                                         size);
+  return CLUTTER_ACTOR (widget);
 }
 
 /**
diff --git a/src/st/st-texture-cache.c b/src/st/st-texture-cache.c
index a9688ec60..fa5b1f04a 100644
--- a/src/st/st-texture-cache.c
+++ b/src/st/st-texture-cache.c
@@ -767,27 +767,30 @@ st_texture_cache_free_bind (gpointer data)
  * If the source object is destroyed, the texture will continue to show the last
  * value of the property.
  *
- * Return value: (transfer none): A new #ClutterActor
+ * Return value: (transfer none): A new #StWidget
  */
-ClutterActor *
+StWidget *
 st_texture_cache_bind_cairo_surface_property (StTextureCache    *cache,
                                               GObject           *object,
                                               const char        *property_name,
                                               gint               size)
 {
-  ClutterActor *actor;
+  StWidget *widget;
   gchar *notify_key;
   StTextureCachePropertyBind *bind;
 
-  actor = create_invisible_actor ();
-  clutter_actor_set_size (actor, size, size);
+  widget = g_object_new (ST_TYPE_WIDGET,
+                         "opacity", 0,
+                         "width", (float)size,
+                         "height", (float)size,
+                         NULL);
 
   bind = g_slice_new0 (StTextureCachePropertyBind);
   bind->cache = cache;
-  bind->actor = actor;
+  bind->actor = CLUTTER_ACTOR (widget);
   bind->size = size;
   bind->source = object;
-  g_object_weak_ref (G_OBJECT (actor), st_texture_cache_bind_weak_notify, bind);
+  g_object_weak_ref (G_OBJECT (widget), st_texture_cache_bind_weak_notify, bind);
   bind->weakref_active = TRUE;
 
   st_texture_cache_reset_texture (bind, property_name);
@@ -797,7 +800,7 @@ st_texture_cache_bind_cairo_surface_property (StTextureCache    *cache,
                                                   bind, (GClosureNotify)st_texture_cache_free_bind, 0);
   g_free (notify_key);
 
-  return actor;
+  return widget;
 }
 
 /**
diff --git a/src/st/st-texture-cache.h b/src/st/st-texture-cache.h
index a3311a862..11d1c4e64 100644
--- a/src/st/st-texture-cache.h
+++ b/src/st/st-texture-cache.h
@@ -32,6 +32,7 @@
 
 #include <st/st-types.h>
 #include <st/st-theme-node.h>
+#include <st/st-widget.h>
 
 #define ST_TYPE_TEXTURE_CACHE                 (st_texture_cache_get_type ())
 G_DECLARE_FINAL_TYPE (StTextureCache, st_texture_cache,
@@ -63,10 +64,10 @@ st_texture_cache_load_sliced_image (StTextureCache *cache,
                                     GFunc           load_callback,
                                     gpointer        user_data);
 
-ClutterActor *st_texture_cache_bind_cairo_surface_property (StTextureCache    *cache,
-                                                            GObject           *object,
-                                                            const char        *property_name,
-                                                            gint               size);
+StWidget *st_texture_cache_bind_cairo_surface_property (StTextureCache    *cache,
+                                                        GObject           *object,
+                                                        const char        *property_name,
+                                                        gint               size);
 
 ClutterActor *st_texture_cache_load_gicon (StTextureCache *cache,
                                            StThemeNode    *theme_node,


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