diff options
author | Matt Watson <mattdangerw@gmail.com> | 2013-07-30 18:20:17 -0700 |
---|---|---|
committer | Matt Watson <mattdangerw@gmail.com> | 2013-07-31 10:42:25 -0700 |
commit | d38a498fb68b590973f65cf0cd8a666a4de851c7 (patch) | |
tree | d6cf27abe9897a8912ea7f116dbb0bc3282f418b /endless/eoswindow.c | |
parent | 3bbf1c4223d4b05a790b22e24c74ec144ce48c34 (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.c | 39 |
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); |