summaryrefslogtreecommitdiff
path: root/endless/eoswindow.c
diff options
context:
space:
mode:
authorMatt Watson <mattdangerw@gmail.com>2013-07-30 18:20:17 -0700
committerMatt Watson <mattdangerw@gmail.com>2013-07-31 10:42:25 -0700
commitd38a498fb68b590973f65cf0cd8a666a4de851c7 (patch)
treed6cf27abe9897a8912ea7f116dbb0bc3282f418b /endless/eoswindow.c
parent3bbf1c4223d4b05a790b22e24c74ec144ce48c34 (diff)
Internal frame in eos window always has no border
Before, if no background_uri property was set per page, the internal frame would have a one pixel border. We needed to set an initial css provider that styled our internal frames as borderless [endlessm/eos-sdk#189] [endlessm/eos-sdk#189]
Diffstat (limited to 'endless/eoswindow.c')
-rw-r--r--endless/eoswindow.c39
1 files changed, 26 insertions, 13 deletions
diff --git a/endless/eoswindow.c b/endless/eoswindow.c
index 8e30f94..33f2c79 100644
--- a/endless/eoswindow.c
+++ b/endless/eoswindow.c
@@ -85,6 +85,21 @@ enum
static GParamSpec *eos_window_props[NPROPS] = { NULL, };
+static void
+override_background_css(EosWindow *self, gchar *background_css)
+{
+ // Override the css
+ GtkStyleProvider *provider =
+ GTK_STYLE_PROVIDER (self->priv->background_provider);
+ GdkScreen *screen = gdk_screen_get_default ();
+ GError *error = NULL;
+ gtk_style_context_remove_provider_for_screen (screen, provider);
+ gtk_css_provider_load_from_data (self->priv->background_provider,
+ background_css, -1, &error);
+ gtk_style_context_add_provider_for_screen (screen, provider,
+ GTK_STYLE_PROVIDER_PRIORITY_APPLICATION);
+}
+
/*
* update_page_actions:
* @self: the window
@@ -248,16 +263,7 @@ update_page_background (EosWindow *self)
self->priv->current_background_css_props,
gtk_widget_get_name (self->priv->next_background),
next_background_css_props);
- // Override the css
- GtkStyleProvider *provider =
- GTK_STYLE_PROVIDER (self->priv->background_provider);
- GdkScreen *screen = gdk_screen_get_default ();
- GError *error = NULL;
- gtk_style_context_remove_provider_for_screen (screen, provider);
- gtk_css_provider_load_from_data (self->priv->background_provider,
- background_css, -1, &error);
- gtk_style_context_add_provider_for_screen (screen, provider,
- GTK_STYLE_PROVIDER_PRIORITY_APPLICATION);
+ override_background_css (self, background_css);
p_stack_set_visible_child (P_STACK (self->priv->background_stack),
self->priv->next_background);
// Swap our background frames for next animation
@@ -566,9 +572,6 @@ eos_window_init (EosWindow *self)
{
self->priv = WINDOW_PRIVATE (self);
- self->priv->background_provider = gtk_css_provider_new ();
- self->priv->current_background_css_props = TRANSPARENT_FRAME_CSS_PROPERTIES;
-
self->priv->top_bar = eos_top_bar_new ();
gtk_widget_set_parent (self->priv->top_bar, GTK_WIDGET (self));
@@ -588,6 +591,16 @@ eos_window_init (EosWindow *self)
self->priv->current_background = g_object_new (GTK_TYPE_FRAME, "name", background_name0, NULL);
gtk_container_add (GTK_CONTAINER (self->priv->background_stack), self->priv->current_background);
+ self->priv->background_provider = gtk_css_provider_new ();
+ // We start all the background frames transparent with no styling
+ self->priv->current_background_css_props = TRANSPARENT_FRAME_CSS_PROPERTIES;
+ gchar *background_css = g_strdup_printf(CSS_TEMPLATE,
+ gtk_widget_get_name (self->priv->current_background),
+ TRANSPARENT_FRAME_CSS_PROPERTIES,
+ gtk_widget_get_name (self->priv->next_background),
+ TRANSPARENT_FRAME_CSS_PROPERTIES);
+ override_background_css (self, background_css);
+
self->priv->main_area = eos_main_area_new ();
gtk_overlay_add_overlay (GTK_OVERLAY (self->priv->overlay), self->priv->main_area);