summaryrefslogtreecommitdiff
path: root/endless/eoswindow.c
diff options
context:
space:
mode:
authormatt <mattdangerw@gmail.com>2013-05-09 18:17:13 -0700
committerP. F. Chimento <philip.chimento@gmail.com>2013-05-17 17:47:08 +0200
commite645ce320460a091344ff3ad40b830edf8614d1d (patch)
treea5920ad355bf4eb46692d27c5b70522d5e7a2286 /endless/eoswindow.c
parent9b8eff4ad1bff9dd2973d1799d364e878cafa198 (diff)
Added a visible-page-background property and tests.
visible-page-background property points to the URI of the background of the current page. Should probably be extended to give the correct background when page-managers are nested. [endlessm/eos-sdk#59]
Diffstat (limited to 'endless/eoswindow.c')
-rw-r--r--endless/eoswindow.c25
1 files changed, 14 insertions, 11 deletions
diff --git a/endless/eoswindow.c b/endless/eoswindow.c
index a739a60..80fd118 100644
--- a/endless/eoswindow.c
+++ b/endless/eoswindow.c
@@ -1,6 +1,7 @@
/* Copyright 2013 Endless Mobile, Inc. */
#include "config.h"
+#include "string.h"
#include "eoswindow.h"
#include "eosapplication.h"
@@ -33,7 +34,11 @@
* ]|
*/
-#define _BACKGROUND_IMAGE_CSS_TEMPLATE "EosWindow { background-image: url(\"%s\"); }"
+// Put in a transition for fun, should be part of API though someday...
+#define _BACKGROUND_IMAGE_CSS_TEMPLATE "EosWindow { background-image: url(\"%s\");" \
+ "transition-property: background-image;" \
+ "transition-duration: 0.5s;" \
+ "background-size:100%% 100%%; }"
G_DEFINE_TYPE (EosWindow, eos_window, GTK_TYPE_APPLICATION_WINDOW)
@@ -326,22 +331,20 @@ static void
set_background_to_page (EosWindow *self,
EosPageManager *page_manager)
{
- gint length;
- GError *error = NULL;
GtkCssProvider *provider = self->priv->background_provider;
GdkScreen *screen = gdk_screen_get_default ();
- GtkWidget *visible_page = eos_page_manager_get_visible_page (page_manager);
- const gchar *background;
- gchar background_css[128];
+ const gchar *background = eos_page_manager_get_visible_page_background (page_manager);
+ gint background_css_length = strlen (background) + strlen (_BACKGROUND_IMAGE_CSS_TEMPLATE) + 1;
+ gchar background_css[background_css_length];
+ GError *error = NULL;
- if (visible_page != NULL)
+ if (background != NULL && strlen (background) > 0)
{
- background = eos_page_manager_get_page_background (page_manager, visible_page);
- length = sprintf (background_css, _BACKGROUND_IMAGE_CSS_TEMPLATE, background);
+ sprintf (background_css, _BACKGROUND_IMAGE_CSS_TEMPLATE, background);
gtk_style_context_remove_provider_for_screen (screen, GTK_STYLE_PROVIDER (provider));
gtk_css_provider_load_from_data (provider,
background_css,
- length,
+ background_css_length,
&error);
gtk_style_context_add_provider_for_screen (screen,
GTK_STYLE_PROVIDER (provider),
@@ -369,7 +372,7 @@ eos_window_add (GtkContainer *container,
if (EOS_IS_PAGE_MANAGER (widget))
{
set_background_to_page (EOS_WINDOW (container), EOS_PAGE_MANAGER (widget));
- g_signal_connect (widget, "notify::visible-page",
+ g_signal_connect (widget, "notify::visible-page-background",
G_CALLBACK (on_background_changed_cb), container);
}
GTK_CONTAINER_CLASS (eos_window_parent_class)->add (container, widget);