From f23c33203e0c818d145aaecdc5e5a5d39a07df0a Mon Sep 17 00:00:00 2001 From: Michael BOUCHAUD Date: Wed, 25 Apr 2012 22:51:46 +0000 Subject: [PATCH] elementary: calendar still need glue SVN revision: 70484 --- legacy/elementary/src/bin/test_calendar.c | 7 +++++-- legacy/elementary/src/lib/elm_calendar.c | 10 ++++++++++ 2 files changed, 15 insertions(+), 2 deletions(-) diff --git a/legacy/elementary/src/bin/test_calendar.c b/legacy/elementary/src/bin/test_calendar.c index 153cf7e479..9e2acd4b00 100644 --- a/legacy/elementary/src/bin/test_calendar.c +++ b/legacy/elementary/src/bin/test_calendar.c @@ -312,11 +312,11 @@ void test_calendar3(void *data __UNUSED__, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__) { Evas_Object *win, *cal, *bxx; - api_data *api = calloc(1, sizeof(api_data)); + struct tm selected_time; + time_t current_time; win = elm_win_util_standard_add("calendar", "Calendar"); elm_win_autodel_set(win, EINA_TRUE); - evas_object_event_callback_add(win, EVAS_CALLBACK_FREE, _cleanup_cb, api); bxx = elm_box_add(win); elm_win_resize_object_add(win, bxx); @@ -326,6 +326,9 @@ test_calendar3(void *data __UNUSED__, Evas_Object *obj __UNUSED__, void *event_i cal = elm_calendar_add(win); elm_calendar_first_day_of_week_set(cal, ELM_DAY_THURSDAY); elm_calendar_select_mode_set(cal, ELM_CALENDAR_SELECT_MODE_ONDEMAND); + current_time = time(NULL) + 34 * 84600; + localtime_r(¤t_time, &selected_time); + elm_calendar_selected_time_set(cal, &selected_time); evas_object_size_hint_weight_set(cal, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND); elm_box_pack_end(bxx, cal); diff --git a/legacy/elementary/src/lib/elm_calendar.c b/legacy/elementary/src/lib/elm_calendar.c index 5e1a3e85cc..5ac5d8b308 100644 --- a/legacy/elementary/src/lib/elm_calendar.c +++ b/legacy/elementary/src/lib/elm_calendar.c @@ -928,6 +928,13 @@ elm_calendar_selected_time_set(Evas_Object *obj, struct tm *selected_time) EINA_SAFETY_ON_NULL_RETURN(selected_time); wd->selected_time = *selected_time; + if (!wd->selected) + wd->selected = EINA_TRUE; + if (wd->selected_time.tm_year != wd->showed_time.tm_year) + wd->showed_time.tm_year = wd->selected_time.tm_year; + if (wd->selected_time.tm_mon != wd->showed_time.tm_mon) + wd->showed_time.tm_mon = wd->selected_time.tm_mon; + _fix_selected_time(wd); _populate(obj); return; @@ -940,6 +947,9 @@ elm_calendar_selected_time_get(const Evas_Object *obj, struct tm *selected_time) Widget_Data *wd = elm_widget_data_get(obj); if (!wd) return EINA_FALSE; EINA_SAFETY_ON_NULL_RETURN_VAL(selected_time, EINA_FALSE); + if ((wd->select_mode == ELM_CALENDAR_SELECT_MODE_ONDEMAND) + && (!wd->selected)) + return EINA_FALSE; *selected_time = wd->selected_time; return EINA_TRUE; }