[maemo-commits] [maemo-commits] r14672 - in projects/haf/trunk/hildon-desktop: . src
From: subversion at stage.maemo.org subversion at stage.maemo.orgDate: Mon Oct 29 19:30:44 EET 2007
- Previous message: [maemo-commits] r14671 - in projects/haf/trunk/libhildonmime: . debian libhildonmime
- Next message: [maemo-commits] r14673 - in projects/haf/trunk/hildon-desktop: . debian
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]
Author: jobi Date: 2007-10-29 19:30:43 +0200 (Mon, 29 Oct 2007) New Revision: 14672 Modified: projects/haf/trunk/hildon-desktop/ChangeLog projects/haf/trunk/hildon-desktop/src/hd-home-window.c Log: 2007-10-29 Johan Bilien <johan.bilien at nokia.com> * src/hd-home-window.c (hd_home_window_constructor): if the background file has disappeared, revert to default. Fixes: NB#72925 Modified: projects/haf/trunk/hildon-desktop/ChangeLog =================================================================== --- projects/haf/trunk/hildon-desktop/ChangeLog 2007-10-29 14:43:51 UTC (rev 14671) +++ projects/haf/trunk/hildon-desktop/ChangeLog 2007-10-29 17:30:43 UTC (rev 14672) @@ -1,3 +1,8 @@ +2007-10-29 Johan Bilien <johan.bilien at nokia.com> + + * src/hd-home-window.c (hd_home_window_constructor): if the background + file has disappeared, revert to default. Fixes: NB#72925 + 2007-10-29 Lucas Rocha <lucas.rocha at nokia.com> * src/hd-switcher-menu.c (hd_switcher_menu_fullscreen_cb): only reset Modified: projects/haf/trunk/hildon-desktop/src/hd-home-window.c =================================================================== --- projects/haf/trunk/hildon-desktop/src/hd-home-window.c 2007-10-29 14:43:51 UTC (rev 14671) +++ projects/haf/trunk/hildon-desktop/src/hd-home-window.c 2007-10-29 17:30:43 UTC (rev 14672) @@ -366,6 +366,7 @@ HildonDesktopBackground *background = NULL; GError *error = NULL; gchar *conffile; + gboolean revert_to_default = FALSE; retval = G_OBJECT_CLASS (hd_home_window_parent_class)->constructor (gtype, n_params, @@ -413,60 +414,87 @@ conffile, &error); + if (!error) + { + /* Here we test, if the filename is local, whether the file still + * exists. We don't test for non-local filesystems as it would be + * too costly */ + const gchar *uri = hildon_desktop_background_get_filename (background); + gchar *filename = NULL; - if (error) + if (uri[0] == '/') + filename = g_strdup (uri); + else if (g_str_has_prefix (uri, "file://")) + filename = g_filename_from_uri (uri, NULL, NULL); + + if (filename) { - GKeyFile *keyfile; - const GdkColor default_color = {0, 0, 0, 0}; - gchar *filename = NULL; + if (!g_file_test (filename, G_FILE_TEST_IS_REGULAR)) + revert_to_default = TRUE; - g_clear_error (&error); + g_free (filename); + } + } + else + { + g_clear_error (&error); + revert_to_default = TRUE; + } + if (revert_to_default) + { + GKeyFile *keyfile; + const GdkColor default_color = {0, 0, 0, 0}; + gchar *filename = NULL; + #ifdef DEBUG - g_debug ("Got an error when loading background configuration, " - "reverting to default background."); + g_debug ("Got an error when loading background configuration, " + "reverting to default background."); #endif - - /* Revert to the default background file */ - keyfile = g_key_file_new (); - g_key_file_load_from_file (keyfile, - HD_HOME_BACKGROUND_DEFAULT, - G_KEY_FILE_NONE, - &error); - if (error) goto error; - filename = g_key_file_get_string (keyfile, - BG_DESKTOP_GROUP, - BG_DESKTOP_IMAGE_FILENAME, - &error); + /* Revert to the default background file */ + keyfile = g_key_file_new (); + g_key_file_load_from_file (keyfile, + HD_HOME_BACKGROUND_DEFAULT, + G_KEY_FILE_NONE, + &error); + if (error) goto error; - if (error) goto error; + filename = g_key_file_get_string (keyfile, + BG_DESKTOP_GROUP, + BG_DESKTOP_IMAGE_FILENAME, + &error); + if (error) goto error; + + if (background) + g_object_unref (background); + + background = g_object_new (HD_TYPE_HOME_BACKGROUND, + "filename", filename, + "color", &default_color, + NULL); + + hildon_desktop_background_save (background, + conffile, + NULL); + +error: + if (error) + { + g_warning ("Could not load default background: %s", + error->message); + g_clear_error (&error); background = g_object_new (HD_TYPE_HOME_BACKGROUND, - "filename", filename, + "filename", HD_HOME_BACKGROUND_NO_IMAGE, "color", &default_color, NULL); + } - hildon_desktop_background_save (background, - conffile, - NULL); + g_free (filename); -error: - if (error) - { - g_warning ("Could not load default background: %s", - error->message); - g_clear_error (&error); - background = g_object_new (HD_TYPE_HOME_BACKGROUND, - "filename", HD_HOME_BACKGROUND_NO_IMAGE, - "color", &default_color, - NULL); - } + } - g_free (filename); - - } - g_free (conffile);
- Previous message: [maemo-commits] r14671 - in projects/haf/trunk/libhildonmime: . debian libhildonmime
- Next message: [maemo-commits] r14673 - in projects/haf/trunk/hildon-desktop: . debian
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]