Karl Lattimer has proposed merging lp:~karl-qdh/indicator-datetime/datereset into lp:indicator-datetime.
Requested reviews: Ted Gould (ted) Related bugs: Bug #649800 in Indicator Date and Time: "datetime indicator won't show today's date if you've ever clicked on any others" https://bugs.launchpad.net/indicator-datetime/+bug/649800 For more details, see: https://code.launchpad.net/~karl-qdh/indicator-datetime/datereset/+merge/57173 Different method of resetting the date works. -- https://code.launchpad.net/~karl-qdh/indicator-datetime/datereset/+merge/57173 Your team ayatana-commits is subscribed to branch lp:indicator-datetime.
=== modified file 'src/datetime-service.c' --- src/datetime-service.c 2011-04-07 15:48:50 +0000 +++ src/datetime-service.c 2011-04-11 14:18:32 +0000 @@ -440,28 +440,6 @@ return TRUE; } -static gboolean -close_menu_cb (DbusmenuMenuitem * menuitem, gchar *name, GVariant *variant) -{ - if (calendar == NULL) return FALSE; - g_debug("Resetting date on menu close"); - start_time_appointments = 0; - // TODO create a variant which will be an array of 3 ints {y,m,d} - GVariant *date_variant; - time_t curtime; - struct tm *t1; - time(&curtime); - t1 = localtime(&curtime); - GVariant *date[3]; - date[0] = g_variant_new_uint32(t1->tm_year + 1900); - date[1] = g_variant_new_uint32(t1->tm_mon); - date[2] = g_variant_new_uint32(t1->tm_mday); - date_variant = g_variant_new_array(NULL, date, 3); - - dbusmenu_menuitem_property_set_variant (calendar, CALENDAR_MENUITEM_PROP_SET_DATE, date_variant); - return TRUE; -} - static guint ecaltimer = 0; static void @@ -1439,9 +1417,6 @@ build_menus(root); - // Connect to the close signal to reset the calendar date - g_signal_connect(root, "event::closed", G_CALLBACK(close_menu_cb), NULL); - /* Cache the timezone */ update_current_timezone(); === modified file 'src/dbus-shared.h' --- src/dbus-shared.h 2011-03-30 15:29:58 +0000 +++ src/dbus-shared.h 2011-04-11 14:18:32 +0000 @@ -29,11 +29,7 @@ #define DBUSMENU_CALENDAR_MENUITEM_TYPE "x-canonical-calendar-item" -// The following properties are not *really* properties, but are just -// a way of accessing the calendar from the service #define CALENDAR_MENUITEM_PROP_MARKS "calendar-marks" -#define CALENDAR_MENUITEM_PROP_SET_DATE "calendar-set-date" - #define APPOINTMENT_MENUITEM_TYPE "appointment-item" #define APPOINTMENT_MENUITEM_PROP_LABEL "appointment-label" === modified file 'src/indicator-datetime.c' --- src/indicator-datetime.c 2011-03-31 10:35:35 +0000 +++ src/indicator-datetime.c 2011-04-11 14:18:32 +0000 @@ -269,6 +269,35 @@ } static void +menu_visible_notfy_cb(GtkWidget * menu, G_GNUC_UNUSED GParamSpec *pspec, gpointer user_data) +{ + IndicatorDatetime * self = INDICATOR_DATETIME(user_data); + g_debug("notify visible signal recieved"); + + // we should only react if we're currently visible + gboolean visible; + g_object_get(G_OBJECT(menu), "visible", &visible, NULL); + if (visible) return; + g_debug("notify visible menu hidden, resetting date"); + + time_t curtime; + + time(&curtime); + struct tm *today = localtime(&curtime); + int y = today->tm_year; + int m = today->tm_mon; + int d = today->tm_mday; + + // Set the calendar to todays date + ido_calendar_menu_item_set_date (self->priv->ido_calendar, y+1900, m, d); + + // Make sure the day-selected signal is sent so the menu updates - may duplicate + /*GVariant *variant = g_variant_new_uint32((guint)curtime); + guint timestamp = (guint)time(NULL); + dbusmenu_menuitem_handle_event(DBUSMENU_MENUITEM(self->priv->ido_calendar), "day-selected", variant, timestamp);*/ +} + +static void indicator_datetime_init (IndicatorDatetime *self) { self->priv = INDICATOR_DATETIME_GET_PRIVATE(self); @@ -348,6 +377,8 @@ self->priv->menu = dbusmenu_gtkmenu_new(SERVICE_NAME, MENU_OBJ); + g_signal_connect(self->priv->menu, "notify::visible", G_CALLBACK(menu_visible_notfy_cb), self); + DbusmenuGtkClient *client = dbusmenu_gtkmenu_get_client(self->priv->menu); dbusmenu_client_add_type_handler_full(DBUSMENU_CLIENT(client), DBUSMENU_CALENDAR_MENUITEM_TYPE, new_calendar_item, self, NULL); dbusmenu_client_add_type_handler_full(DBUSMENU_CLIENT(client), APPOINTMENT_MENUITEM_TYPE, new_appointment_item, self, NULL); @@ -1233,13 +1264,6 @@ } else { g_debug("\tMarks: <cleared>"); } - } else if (!g_strcmp0(prop, CALENDAR_MENUITEM_PROP_SET_DATE)) { - if (value != NULL) { - gsize size = 3; - const gint * array = g_variant_get_fixed_array(value, &size, sizeof(gint)); - g_debug("Setting date y-m-d: %d-%d-%d", array[0], array[1], array[2]); - ido_calendar_menu_item_set_date (IDO_CALENDAR_MENU_ITEM (mi_data), array[0], array[1], array[2]); - } } return; } @@ -1418,11 +1442,6 @@ calendar_prop_change_cb(newitem, CALENDAR_MENUITEM_PROP_MARKS, propval, ido); } - propval = dbusmenu_menuitem_property_get_variant(newitem, CALENDAR_MENUITEM_PROP_SET_DATE); - if (propval != NULL) { - calendar_prop_change_cb(newitem, CALENDAR_MENUITEM_PROP_SET_DATE, propval, ido); - } - return TRUE; }
_______________________________________________ Mailing list: https://launchpad.net/~ayatana-commits Post to : ayatana-commits@lists.launchpad.net Unsubscribe : https://launchpad.net/~ayatana-commits More help : https://help.launchpad.net/ListHelp