[maemo-commits] [maemo-commits] r12535 - in projects/haf/trunk/hildon-desktop: . src
From: subversion at stage.maemo.org subversion at stage.maemo.orgDate: Thu Jun 28 15:36:44 EEST 2007
- Previous message: [maemo-commits] r12534 - projects/haf/trunk/gtk+/debian
- Next message: [maemo-commits] r12536 - in projects/haf/trunk/hildon-desktop: . src
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]
Author: jobi Date: 2007-06-28 15:36:29 +0300 (Thu, 28 Jun 2007) New Revision: 12535 Modified: projects/haf/trunk/hildon-desktop/ChangeLog projects/haf/trunk/hildon-desktop/src/hd-home-background-dialog.c projects/haf/trunk/hildon-desktop/src/hd-home-background.c projects/haf/trunk/hildon-desktop/src/hd-home-background.h projects/haf/trunk/hildon-desktop/src/hd-home-window.c Log: 2007-06-28 Johan Bilien <johan.bilien at nokia.com> * src/hd-home-background.[ch]: - added hd_home_background_cancel - if background was cancelled, return from the callback immediately * src/hd-home-window.c: - attach the background being set to the cancel note, so it can be cancelled. Fixes: NB#61779 Modified: projects/haf/trunk/hildon-desktop/ChangeLog =================================================================== --- projects/haf/trunk/hildon-desktop/ChangeLog 2007-06-28 12:32:14 UTC (rev 12534) +++ projects/haf/trunk/hildon-desktop/ChangeLog 2007-06-28 12:36:29 UTC (rev 12535) @@ -1,3 +1,13 @@ +2007-06-28 Johan Bilien <johan.bilien at nokia.com> + + * src/hd-home-background.[ch]: + - added hd_home_background_cancel + - if background was cancelled, return from the callback immediately + * src/hd-home-window.c: + - attach the background being set to the cancel note, so it + can be cancelled. + Fixes: NB#61779 + 2007-06-28 Moises Martinez <moises.martinez at nokia.com> * libhildondesktop/hildon-desktop-popup-window.c: Modified: projects/haf/trunk/hildon-desktop/src/hd-home-background-dialog.c =================================================================== --- projects/haf/trunk/hildon-desktop/src/hd-home-background-dialog.c 2007-06-28 12:32:14 UTC (rev 12534) +++ projects/haf/trunk/hildon-desktop/src/hd-home-background-dialog.c 2007-06-28 12:36:29 UTC (rev 12535) @@ -956,5 +956,5 @@ g_return_val_if_fail (HD_IS_HOME_BACKGROUND_DIALOG (dialog), NULL); priv = HD_HOME_BACKGROUND_DIALOG_GET_PRIVATE (dialog); - return g_object_ref (priv->background); + return hd_home_background_copy (priv->background); } Modified: projects/haf/trunk/hildon-desktop/src/hd-home-background.c =================================================================== --- projects/haf/trunk/hildon-desktop/src/hd-home-background.c 2007-06-28 12:32:14 UTC (rev 12534) +++ projects/haf/trunk/hildon-desktop/src/hd-home-background.c 2007-06-28 12:36:29 UTC (rev 12535) @@ -65,12 +65,11 @@ struct _HDHomeBackgroundPrivate { - GdkColor *color; + GdkColor *color; + BackgroundMode mode; + gchar *filename; + gboolean cancelled; - BackgroundMode mode; - - gchar *filename; - }; G_DEFINE_TYPE (HDHomeBackground, hd_home_background, G_TYPE_OBJECT); @@ -505,6 +504,13 @@ GError *error, struct cb_data *data) { + if (data->background->priv->cancelled) + { + g_debug ("background is cancelled"); + g_free (data); + return; + } + if (error) { goto cleanup; @@ -580,6 +586,8 @@ g_debug ("Applying background %s aynchronously", priv->filename); + priv->cancelled = FALSE; + /* Here goes */ #define S(string) (string?string:"") org_maemo_hildon_background_manager_set_background_async @@ -641,3 +649,11 @@ } +void +hd_home_background_cancel (HDHomeBackground *background) +{ + g_return_if_fail (HD_IS_HOME_BACKGROUND (background)); + + background->priv->cancelled = TRUE; + +} Modified: projects/haf/trunk/hildon-desktop/src/hd-home-background.h =================================================================== --- projects/haf/trunk/hildon-desktop/src/hd-home-background.h 2007-06-28 12:32:14 UTC (rev 12534) +++ projects/haf/trunk/hildon-desktop/src/hd-home-background.h 2007-06-28 12:36:29 UTC (rev 12535) @@ -86,6 +86,8 @@ gboolean hd_home_background_equal (const HDHomeBackground *bg1, const HDHomeBackground *bg2); +void hd_home_background_cancel (HDHomeBackground *background); + G_END_DECLS #endif /* __HD_HOME_BACKGROUND_H__ */ Modified: projects/haf/trunk/hildon-desktop/src/hd-home-window.c =================================================================== --- projects/haf/trunk/hildon-desktop/src/hd-home-window.c 2007-06-28 12:32:14 UTC (rev 12534) +++ projects/haf/trunk/hildon-desktop/src/hd-home-window.c 2007-06-28 12:36:29 UTC (rev 12535) @@ -124,7 +124,6 @@ GtkWidget *cancel_note; guint background_loading_timeout; guint cancel_note_update_timeout; - gboolean background_cancelled; }; /* Properties */ @@ -293,7 +292,8 @@ hd_home_window_cancel_note_hide (HDHomeWindow *window); static void -hd_home_window_cancel_note_show (HDHomeWindow *window); +hd_home_window_cancel_note_show (HDHomeWindow *window, + HDHomeBackground *background); #if 0 static void @@ -668,12 +668,6 @@ priv->background_loading_timeout = 0; } - if (priv->background_cancelled) - { - priv->background_cancelled = FALSE; - return; - } - if (GTK_IS_WIDGET (priv->cancel_note)) hd_home_window_cancel_note_hide (window); @@ -685,7 +679,7 @@ error->code, error->message, dbus_g_error_get_name (error)); - + if (dbus_g_error_has_name (error, "org.freedesktop.DBus.GLib.UnmappedError.BackgroundManagerErrorQuark.Code2")) text = HH_FILE_CORRUPTED_TEXT; @@ -735,16 +729,13 @@ HDHomeWindowPrivate *priv; gchar *conffile; GError *save_error = NULL; - gboolean background_cancelled; priv = HD_HOME_WINDOW_GET_PRIVATE (window); - background_cancelled = priv->background_cancelled; - background_apply_callback (background, picture, error, window); /* Do not save if an error occurred */ - if (error || background_cancelled) + if (error) return; conffile = g_build_path (G_DIR_SEPARATOR_S, @@ -1812,14 +1803,21 @@ g_signal_emit_by_name (window, "layout-mode-accept"); } +typedef struct +{ + HDHomeWindow *window; + HDHomeBackground *background; +} BackgroundTimeoutData; + static gboolean -hd_home_window_set_background_timeout (HDHomeWindow *window) +hd_home_window_set_background_timeout (BackgroundTimeoutData *data) { - HDHomeWindowPrivate *priv = HD_HOME_WINDOW_GET_PRIVATE (window); + HDHomeWindowPrivate *priv = HD_HOME_WINDOW_GET_PRIVATE (data->window); priv->background_loading_timeout = 0; - hd_home_window_cancel_note_show (window); + hd_home_window_cancel_note_show (data->window, data->background); + g_free (data); return FALSE; } @@ -1844,13 +1842,16 @@ if (!hd_home_background_equal (priv->background, background)) { + BackgroundTimeoutData *data = g_new (BackgroundTimeoutData, 1); + data->window = window; + data->background = background; priv->background_loading_timeout = g_timeout_add (1000, (GSourceFunc) hd_home_window_set_background_timeout, - window); + data); hd_home_background_apply_async - (hd_home_background_copy (background), + (background, GTK_WIDGET (window)->window, workarea, (HDHomeBackgroundApplyCallback)background_apply_and_save_callback, @@ -1860,13 +1861,17 @@ break; case HILDON_HOME_SET_BG_RESPONSE_PREVIEW: { + BackgroundTimeoutData *data = g_new (BackgroundTimeoutData, 1); + data->window = window; + data->background = background; + priv->background_loading_timeout = g_timeout_add (1000, (GSourceFunc) hd_home_window_set_background_timeout, - window); + data); hd_home_background_apply_async - (hd_home_background_copy (background), + (background, GTK_WIDGET (window)->window, workarea, (HDHomeBackgroundApplyCallback)background_apply_callback, @@ -1981,10 +1986,15 @@ hd_home_window_cancel_note_response (HDHomeWindow *window) { HDHomeWindowPrivate *priv = HD_HOME_WINDOW_GET_PRIVATE (window); + HDHomeBackground *background; + background = g_object_get_data (G_OBJECT (priv->cancel_note), "background"); + + if (HD_IS_HOME_BACKGROUND (background)) + hd_home_background_cancel (background); + hd_home_window_cancel_note_hide (window); - priv->background_cancelled = TRUE; } static gboolean @@ -1998,7 +2008,8 @@ } static void -hd_home_window_cancel_note_show (HDHomeWindow *window) +hd_home_window_cancel_note_show (HDHomeWindow *window, + HDHomeBackground *background) { HDHomeWindowPrivate *priv = HD_HOME_WINDOW_GET_PRIVATE (window); GtkWidget *label, *prog_bar; @@ -2006,6 +2017,7 @@ if (priv->cancel_note) return; + priv->cancel_note = gtk_dialog_new_with_buttons ("", NULL, @@ -2014,6 +2026,9 @@ HH_SET_BG_CANCEL, GTK_RESPONSE_CANCEL, NULL); + g_object_set_data (G_OBJECT (priv->cancel_note), + "background", background); + label = gtk_label_new (HH_CANCEL_BG_TEXT); gtk_container_add (GTK_CONTAINER (GTK_DIALOG (priv->cancel_note)->vbox), label);
- Previous message: [maemo-commits] r12534 - projects/haf/trunk/gtk+/debian
- Next message: [maemo-commits] r12536 - in projects/haf/trunk/hildon-desktop: . src
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]