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
This commit is contained in:
@@ -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;
|
||||
}
|
||||
|
||||
/**
|
||||
|
Reference in New Issue
Block a user