Commit 80afa6a5 authored by Juan Pablo Ugarte's avatar Juan Pablo Ugarte
Browse files

Draw bg for windowless widgets used as toplevels.

Added custom stype provider to setip bg color to @base_color.
Symplyfied glade_design_layout_style_updated() using gtk_style_context_lookup_color()
parent 6b40f2f6
......@@ -85,6 +85,7 @@ struct _GladeDesignLayoutPrivate
/* Colors */
GdkRGBA fg_color;
GdkRGBA bg_color;
GdkRGBA frame_color[2];
GdkRGBA frame_color_active[2];
......@@ -1472,7 +1473,16 @@ glade_design_layout_draw (GtkWidget *widget, cairo_t *cr)
gint border_width = gtk_container_get_border_width (GTK_CONTAINER (widget));
gboolean selected = FALSE;
GList *l;
/* Draw bg for windowless widgets */
if (!gtk_widget_get_has_window (child))
{
gdk_cairo_set_source_rgba (cr, &priv->bg_color);
cairo_rectangle (cr, priv->child_offset, priv->child_offset,
priv->current_width, priv->current_height);
cairo_fill (cr);
}
/* draw offscreen widgets */
gdk_cairo_set_source_window (cr, priv->offscreen_window,
priv->child_offset, priv->child_offset);
......@@ -1739,46 +1749,22 @@ static void
glade_design_layout_style_updated (GtkWidget *widget)
{
GladeDesignLayoutPrivate *priv = GLADE_DESIGN_LAYOUT_GET_PRIVATE (widget);
GtkStyleContext *context = gtk_style_context_new ();
GtkWidgetPath *path = gtk_widget_path_new ();
GdkRGBA bg_color;
GtkStyleContext *context = gtk_widget_get_style_context (widget);
g_type_class_ref (GTK_TYPE_TREE_VIEW);
gtk_widget_path_append_type (path, GTK_TYPE_WIDGET);
gtk_style_context_set_path (context, path);
gtk_style_context_add_class (context, GTK_STYLE_CLASS_VIEW);
gtk_widget_path_free (path);
gtk_style_context_lookup_color (context, "fg_color", &priv->fg_color);
gtk_style_context_lookup_color (context, "bg_color", &priv->frame_color[0]);
gtk_style_context_lookup_color (context, "selected_bg_color", &priv->frame_color_active[0]);
gtk_style_context_lookup_color (context, "selected_fg_color", &priv->frame_color_active[1]);
gtk_style_context_get_background_color (context,
GTK_STATE_FLAG_NORMAL,
&bg_color);
gtk_style_context_get_color (context,
GTK_STATE_FLAG_NORMAL,
&priv->fg_color);
gtk_style_context_get_background_color (context, GTK_STATE_FLAG_SELECTED,
&priv->frame_color[0]);
gtk_style_context_get_color (context, GTK_STATE_FLAG_SELECTED,
&priv->frame_color[1]);
gtk_style_context_get_background_color (context,
GTK_STATE_FLAG_SELECTED |
GTK_STATE_FLAG_FOCUSED,
&priv->frame_color_active[0]);
gtk_style_context_get_color (context,
GTK_STATE_FLAG_SELECTED |
GTK_STATE_FLAG_FOCUSED,
&priv->frame_color_active[1]);
gtk_widget_override_background_color (widget, GTK_STATE_FLAG_NORMAL, &bg_color);
g_object_unref (context);
priv->frame_color[1] = priv->fg_color;
priv->bg_color = priv->frame_color[0];
}
static void
glade_design_layout_init (GladeDesignLayout *layout)
{
GladeDesignLayoutPrivate *priv;
GtkCssProvider *provider;
gint i;
layout->priv = priv = GLADE_DESIGN_LAYOUT_GET_PRIVATE (layout);
......@@ -1796,6 +1782,16 @@ glade_design_layout_init (GladeDesignLayout *layout)
priv->south.height = PADDING + OUTLINE_WIDTH;
gtk_widget_set_has_window (GTK_WIDGET (layout), TRUE);
provider = gtk_css_provider_new ();
gtk_css_provider_load_from_data (provider,
"GladeDesignLayout {\n"
" background-color : @base_color;\n"
" }", -1, NULL);
gtk_style_context_add_provider (gtk_widget_get_style_context (GTK_WIDGET (layout)),
GTK_STYLE_PROVIDER (provider),
GTK_STYLE_PROVIDER_PRIORITY_APPLICATION);
}
static void
......@@ -1899,7 +1895,9 @@ glade_design_layout_constructor (GType type,
"selection-changed",
G_CALLBACK (on_project_selection_changed),
GLADE_DESIGN_LAYOUT (object));
glade_design_layout_style_updated (GTK_WIDGET (object));
return object;
}
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment