st-theme-node: Paint elements in resource-scale scaled surfaces
Pass resource-scale to drawing phase, and use it to create texture surfaces scaled with the widget current scaling. Also redraw by default widgets when the resource scale changes. https://bugzilla.gnome.org/show_bug.cgi?id=765011
This commit is contained in:

committed by
Jonas Ådahl

parent
5d4a804c90
commit
0141fef561
@ -418,8 +418,12 @@ st_widget_paint_background (StWidget *widget)
|
||||
CoglFramebuffer *framebuffer;
|
||||
StThemeNode *theme_node;
|
||||
ClutterActorBox allocation;
|
||||
float resource_scale;
|
||||
guint8 opacity;
|
||||
|
||||
if (!st_widget_get_resource_scale (widget, &resource_scale))
|
||||
return;
|
||||
|
||||
framebuffer = cogl_get_draw_framebuffer ();
|
||||
theme_node = st_widget_get_theme_node (widget);
|
||||
|
||||
@ -431,13 +435,15 @@ st_widget_paint_background (StWidget *widget)
|
||||
st_theme_node_transition_paint (priv->transition_animation,
|
||||
framebuffer,
|
||||
&allocation,
|
||||
opacity);
|
||||
opacity,
|
||||
resource_scale);
|
||||
else
|
||||
st_theme_node_paint (theme_node,
|
||||
current_paint_state (widget),
|
||||
framebuffer,
|
||||
&allocation,
|
||||
opacity);
|
||||
opacity,
|
||||
resource_scale);
|
||||
}
|
||||
|
||||
static void
|
||||
@ -1495,7 +1501,16 @@ st_widget_resource_scale_notify (StWidget *widget,
|
||||
GParamSpec *pspec,
|
||||
gpointer data)
|
||||
{
|
||||
StWidgetPrivate *priv = st_widget_get_instance_private (widget);
|
||||
int i;
|
||||
|
||||
for (i = 0; i < G_N_ELEMENTS (priv->paint_states); i++)
|
||||
st_theme_node_paint_state_invalidate (&priv->paint_states[i]);
|
||||
|
||||
g_signal_emit (widget, signals[RESOURCE_SCALE_CHANGED], 0);
|
||||
|
||||
if (clutter_actor_is_mapped (CLUTTER_ACTOR (widget)))
|
||||
clutter_actor_queue_redraw (CLUTTER_ACTOR (widget));
|
||||
}
|
||||
|
||||
static void
|
||||
|
Reference in New Issue
Block a user