[maemo-commits] [maemo-commits] r10281 - in projects/haf/trunk/hildon-desktop: . src
From: subversion at stage.maemo.org subversion at stage.maemo.orgDate: Thu Mar 1 14:06:44 EET 2007
- Previous message: [maemo-commits] r10280 - in projects/haf/branches/hildon-libs/hildon-1: . src
- Next message: [maemo-commits] r10282 - in projects/haf/branches/hildon-libs/hildon-1: . src
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]
Author: jobi Date: 2007-03-01 14:06:43 +0200 (Thu, 01 Mar 2007) New Revision: 10281 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-03-01 Johan Bilien <johan.bilien at nokia.com> * src/hd-home-background.[ch]: - added _equal() method * hd_home_window.c: - added previous_background private pointer - revert to previous background when dialog is cancelled Modified: projects/haf/trunk/hildon-desktop/ChangeLog =================================================================== --- projects/haf/trunk/hildon-desktop/ChangeLog 2007-03-01 12:04:14 UTC (rev 10280) +++ projects/haf/trunk/hildon-desktop/ChangeLog 2007-03-01 12:06:43 UTC (rev 10281) @@ -1,3 +1,11 @@ +2007-03-01 Johan Bilien <johan.bilien at nokia.com> + + * src/hd-home-background.[ch]: + - added _equal() method + * hd_home_window.c: + - added previous_background private pointer + - revert to previous background when dialog is cancelled + 2007-02-28 Johan Bilien <johan.bilien at nokia.com> * background-manager/background-manager.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-03-01 12:04:14 UTC (rev 10280) +++ projects/haf/trunk/hildon-desktop/src/hd-home-background-dialog.c 2007-03-01 12:06:43 UTC (rev 10281) @@ -922,5 +922,5 @@ g_return_val_if_fail (HD_IS_HOME_BACKGROUND_DIALOG (dialog), NULL); priv = HD_HOME_BACKGROUND_DIALOG_GET_PRIVATE (dialog); - return priv->background; + return g_object_ref (priv->background); } Modified: projects/haf/trunk/hildon-desktop/src/hd-home-background.c =================================================================== --- projects/haf/trunk/hildon-desktop/src/hd-home-background.c 2007-03-01 12:04:14 UTC (rev 10280) +++ projects/haf/trunk/hildon-desktop/src/hd-home-background.c 2007-03-01 12:06:43 UTC (rev 10281) @@ -680,6 +680,8 @@ data->callback (data->background, pixmap_xid, error, data->user_data); cleanup: + if (G_IS_OBJECT (data->background)) + g_object_unref (data->background); g_free (data); } @@ -718,7 +720,7 @@ data = g_new (struct cb_data, 1); data->callback = cb; - data->background = background; + data->background = g_object_ref (background); data->user_data = user_data; data->window = window; @@ -781,3 +783,30 @@ return dest; } + +gboolean +hd_home_background_equal (const HDHomeBackground *background1, + const HDHomeBackground *background2) +{ + HDHomeBackgroundPrivate *priv1; + HDHomeBackgroundPrivate *priv2; + + g_return_val_if_fail (HD_IS_HOME_BACKGROUND (background1) && + HD_IS_HOME_BACKGROUND (background2), + FALSE); + + priv1 = background1->priv; + priv2 = background2->priv; + +#define equal_or_null(s, t) ((!s && !t) || ((s && t) && g_str_equal (s,t))) + return (equal_or_null (priv1->filename, priv2->filename) && + equal_or_null (priv1->west_border, priv2->west_border) && + equal_or_null (priv1->east_border, priv2->east_border) && + equal_or_null (priv1->north_border, priv2->north_border) && + equal_or_null (priv1->south_border, priv2->south_border) && + gdk_color_equal (priv1->color, priv2->color) && + priv1->mode == priv2->mode); +#undef equal_or_null + +} + Modified: projects/haf/trunk/hildon-desktop/src/hd-home-background.h =================================================================== --- projects/haf/trunk/hildon-desktop/src/hd-home-background.h 2007-03-01 12:04:14 UTC (rev 10280) +++ projects/haf/trunk/hildon-desktop/src/hd-home-background.h 2007-03-01 12:06:43 UTC (rev 10281) @@ -83,6 +83,9 @@ HDHomeBackground * hd_home_background_copy (const HDHomeBackground *src); +gboolean hd_home_background_equal (const HDHomeBackground *bg1, + const HDHomeBackground *bg2); + 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-03-01 12:04:14 UTC (rev 10280) +++ projects/haf/trunk/hildon-desktop/src/hd-home-window.c 2007-03-01 12:06:43 UTC (rev 10281) @@ -91,6 +91,7 @@ gchar *west_border; HDHomeBackground *background; + HDHomeBackground *previous_background; }; /* Properties */ @@ -1131,8 +1132,9 @@ gint response, GtkDialog *dialog) { - HDHomeBackground *background; - GdkRectangle *workarea; + HDHomeWindowPrivate *priv = HD_HOME_WINDOW_GET_PRIVATE (window); + HDHomeBackground *background; + GdkRectangle *workarea; g_object_get (window, "work-area", &workarea, NULL); @@ -1143,12 +1145,15 @@ { case GTK_RESPONSE_OK: gtk_widget_hide (GTK_WIDGET(dialog)); - hd_home_background_apply_async - (background, - GTK_WIDGET (window)->window, - workarea, - (HDHomeBackgroundApplyCallback)background_apply_and_save_callback, + if (!hd_home_background_equal (priv->background, + background)) + hd_home_background_apply_async + (background, + GTK_WIDGET (window)->window, + workarea, + (HDHomeBackgroundApplyCallback)background_apply_and_save_callback, window); + g_object_unref (priv->previous_background); break; case HILDON_HOME_SET_BG_RESPONSE_PREVIEW: hd_home_background_apply_async @@ -1161,7 +1166,17 @@ break; case GTK_RESPONSE_CANCEL: case GTK_RESPONSE_DELETE_EVENT: + if (!hd_home_background_equal (priv->background, + priv->previous_background)) + hd_home_background_apply_async + (priv->previous_background, + GTK_WIDGET (window)->window, + workarea, + (HDHomeBackgroundApplyCallback)background_apply_callback, + window); + gtk_widget_hide (GTK_WIDGET (dialog)); + g_object_unref (priv->previous_background); break; default: break; @@ -1174,6 +1189,8 @@ HDHomeWindowPrivate *priv = HD_HOME_WINDOW_GET_PRIVATE (window); GtkWidget *dialog; + priv->previous_background = hd_home_background_copy (priv->background); + dialog = g_object_new (HD_TYPE_HOME_BACKGROUND_DIALOG, #ifdef HAVE_LIBOSSO "osso-context", priv->osso_context,
- Previous message: [maemo-commits] r10280 - in projects/haf/branches/hildon-libs/hildon-1: . src
- Next message: [maemo-commits] r10282 - in projects/haf/branches/hildon-libs/hildon-1: . src
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]