From: Enlightenment S. <no-...@en...> - 2010-05-18 18:23:20
|
Log: When the grid size was different from the viewport's, the min size for the grid was being wrongly calculated leading to children objects leaking through the widget. By Rafael Fonseca Author: bdilly Date: 2010-05-18 11:23:11 -0700 (Tue, 18 May 2010) New Revision: 48984 Modified: trunk/TMP/st/elementary/src/lib/elm_scrolled_grid.c Modified: trunk/TMP/st/elementary/src/lib/elm_scrolled_grid.c =================================================================== --- trunk/TMP/st/elementary/src/lib/elm_scrolled_grid.c 2010-05-18 18:12:36 UTC (rev 48983) +++ trunk/TMP/st/elementary/src/lib/elm_scrolled_grid.c 2010-05-18 18:23:11 UTC (rev 48984) @@ -203,7 +203,6 @@ }; static const char *widtype = NULL; -static void _sizing_eval(Evas_Object *obj); static void _cell_hilight(Elm_Grid_Cell *cell); static void _cell_unrealize(Elm_Grid_Cell *cell); static void _cell_select(Elm_Grid_Cell *cell); @@ -218,21 +217,9 @@ if (!wd) return; elm_smart_scroller_object_theme_set(obj, wd->scr, "grid", "base", elm_widget_style_get(obj)); - _sizing_eval(obj); } static void -_sizing_eval(Evas_Object *obj) -{ - Widget_Data *wd = elm_widget_data_get(obj); - Evas_Coord minw = -1, minh = -1, maxw = -1, maxh = -1; - if (!wd) return; - evas_object_size_hint_max_get(wd->scr, &maxw, &maxh); - evas_object_size_hint_min_set(obj, minw, minh); - evas_object_size_hint_max_set(obj, maxw, maxh); -} - -static void _del_hook(Evas_Object *obj) { Widget_Data *wd = elm_widget_data_get(obj); @@ -723,8 +710,7 @@ Evas_Coord minw = 0, minh = 0, nmax = 0, cvw, cvh; int count; - evas_output_viewport_get(evas_object_evas_get(wd->self), NULL, NULL, - &cvw, &cvh); + evas_object_geometry_get(wd->self, NULL, NULL, &cvw, &cvh); if (wd->horizontal && wd->cell_height) nmax = cvh / wd->cell_height; else if (wd->cell_width) @@ -750,7 +736,6 @@ wd->minh = minh; wd->minw = minw; evas_object_smart_callback_call(wd->pan_smart, "changed", NULL); - _sizing_eval(wd->self); } wd->nmax = nmax; @@ -999,8 +984,6 @@ _pan_set, _pan_get, _pan_max_get, _pan_child_size_get); - _sizing_eval(obj); - return obj; } @@ -1234,7 +1217,6 @@ wd->minh = 0; evas_object_size_hint_min_set(wd->pan_smart, wd->minw, wd->minh); evas_object_smart_callback_call(wd->pan_smart, "changed", NULL); - _sizing_eval(obj); } /** |
From: Enlightenment S. <no-...@en...> - 2010-05-19 13:17:09
|
Log: Implements elm_object_focus_get that returns if the object is focused. Author: bdilly Date: 2010-05-19 06:17:02 -0700 (Wed, 19 May 2010) New Revision: 49005 Modified: trunk/TMP/st/elementary/src/lib/Elementary.h.in trunk/TMP/st/elementary/src/lib/elm_main.c Modified: trunk/TMP/st/elementary/src/lib/Elementary.h.in =================================================================== --- trunk/TMP/st/elementary/src/lib/Elementary.h.in 2010-05-19 13:00:08 UTC (rev 49004) +++ trunk/TMP/st/elementary/src/lib/Elementary.h.in 2010-05-19 13:17:02 UTC (rev 49005) @@ -260,7 +260,8 @@ EAPI Evas_Coord elm_finger_size_get(void); EAPI void elm_finger_size_set(Evas_Coord size); EAPI void elm_finger_size_all_set(Evas_Coord size); - + + EAPI Eina_Bool elm_object_focus_get(Evas_Object *obj); EAPI void elm_object_focus(Evas_Object *obj); EAPI void elm_object_unfocus(Evas_Object *obj); EAPI void elm_object_focus_allow_set(Evas_Object *obj, Eina_Bool enable); Modified: trunk/TMP/st/elementary/src/lib/elm_main.c =================================================================== --- trunk/TMP/st/elementary/src/lib/elm_main.c 2010-05-19 13:00:08 UTC (rev 49004) +++ trunk/TMP/st/elementary/src/lib/elm_main.c 2010-05-19 13:17:02 UTC (rev 49005) @@ -1174,9 +1174,24 @@ */ /** + * Get the focus of the object + * + * This gets the focused property of the object. + * + * @param obj The object + * @return 1 if the object is focused, 0 if not. + * @ingroup Focus + */ +EAPI Eina_Bool +elm_object_focus_get(Evas_Object *obj) +{ + return elm_widget_focus_get(obj); +} + +/** * Set the focus to the object * - * This sets the focus target forkeyboard input to be the object indicated. + * This sets the focus target for keyboard input to be the object indicated. * * @param obj The object * @ingroup Focus @@ -1189,9 +1204,10 @@ } /** - * Set the focus to the object + * Remove the focus from the object * - * This sets the focus target forkeyboard input to be the object indicated. + * This removes the focus target for keyboard input from be the object + * indicated. * * @param obj The object * @ingroup Focus |
From: Enlightenment S. <no-...@en...> - 2010-05-23 23:41:38
|
Log: Implement elm index sorted insert - Name index item as Elm_Index_Item - Add some other index functions: + Item find + Data get/set + Letter get I think this stuff will make easier to create index for dynamically created lists. Author: bdilly Date: 2010-05-23 16:41:32 -0700 (Sun, 23 May 2010) New Revision: 49171 Modified: trunk/TMP/st/elementary/src/lib/Elementary.h.in trunk/TMP/st/elementary/src/lib/elm_index.c Modified: trunk/TMP/st/elementary/src/lib/Elementary.h.in =================================================================== --- trunk/TMP/st/elementary/src/lib/Elementary.h.in 2010-05-23 23:23:51 UTC (rev 49170) +++ trunk/TMP/st/elementary/src/lib/Elementary.h.in 2010-05-23 23:41:32 UTC (rev 49171) @@ -1266,6 +1266,7 @@ * vertical (two up/down buttons at the right side and text left aligned) */ + typedef struct _Elm_Index_Item Elm_Index_Item; EAPI Evas_Object *elm_index_add(Evas_Object *parent); EAPI void elm_index_active_set(Evas_Object *obj, Eina_Bool active); EAPI void elm_index_item_level_set(Evas_Object *obj, int level); @@ -1275,9 +1276,14 @@ EAPI void elm_index_item_prepend(Evas_Object *obj, const char *letter, const void *item); EAPI void elm_index_item_append_relative(Evas_Object *obj, const char *letter, const void *item, const void *relative); EAPI void elm_index_item_prepend_relative(Evas_Object *obj, const char *letter, const void *item, const void *relative); + EAPI void elm_index_item_sorted_insert(Evas_Object *obj, const char *letter, const void *item, Eina_Compare_Cb cmp_func, Eina_Compare_Cb cmp_data_func); EAPI void elm_index_item_del(Evas_Object *obj, const void *item); + EAPI Elm_Index_Item *elm_index_item_find(Evas_Object *obj, const void *item); EAPI void elm_index_item_clear(Evas_Object *obj); EAPI void elm_index_item_go(Evas_Object *obj, int level); + EAPI void *elm_index_item_data_get(const Elm_Index_Item *item); + EAPI void elm_index_item_data_set(Elm_Index_Item *it, const void *data); + EAPI const char *elm_index_item_letter_get(const Elm_Index_Item *item); /* smart callbacks called: * "changed" - when the selected index item changes * "delay,changed" - when the selected index item changes, but after some small idle period Modified: trunk/TMP/st/elementary/src/lib/elm_index.c =================================================================== --- trunk/TMP/st/elementary/src/lib/elm_index.c 2010-05-23 23:23:51 UTC (rev 49170) +++ trunk/TMP/st/elementary/src/lib/elm_index.c 2010-05-23 23:41:32 UTC (rev 49171) @@ -9,7 +9,6 @@ */ typedef struct _Widget_Data Widget_Data; -typedef struct _Item Item; struct _Widget_Data { @@ -26,7 +25,7 @@ Eina_Bool down : 1; }; -struct _Item +struct _Elm_Index_Item { Evas_Object *obj; const char *letter; @@ -42,13 +41,13 @@ static void _sizing_eval(Evas_Object *obj); static void _index_box_auto_fill(Evas_Object *obj, Evas_Object *box, int level); static void _index_box_clear(Evas_Object *obj, Evas_Object *box, int level); -static void _item_free(Item *it); +static void _item_free(Elm_Index_Item *it); static void _del_hook(Evas_Object *obj) { Widget_Data *wd = elm_widget_data_get(obj); - Item *it; + Elm_Index_Item *it; Eina_List *l, *clear = NULL; if (!wd) return; _index_box_clear(obj, wd->bx[wd->level], wd->level); @@ -138,13 +137,13 @@ evas_object_size_hint_max_set(obj, maxw, maxh); } -static Item * +static Elm_Index_Item * _item_new(Evas_Object *obj, const char *letter, const void *item) { Widget_Data *wd = elm_widget_data_get(obj); - Item *it; + Elm_Index_Item *it; if (!wd) return NULL; - it = calloc(1, sizeof(Item)); + it = calloc(1, sizeof(Elm_Index_Item)); if (!it) return NULL; it->obj = obj; it->letter = eina_stringshare_add(letter); @@ -153,12 +152,12 @@ return it; } -static Item * +static Elm_Index_Item * _item_find(Evas_Object *obj, const void *item) { Widget_Data *wd = elm_widget_data_get(obj); Eina_List *l; - Item *it; + Elm_Index_Item *it; if (!wd) return NULL; EINA_LIST_FOREACH(wd->items, l, it) if (it->data == item) return it; @@ -166,7 +165,7 @@ } static void -_item_free(Item *it) +_item_free(Elm_Index_Item *it) { Widget_Data *wd = elm_widget_data_get(it->obj); if (!wd) return; @@ -182,7 +181,7 @@ { Widget_Data *wd = elm_widget_data_get(obj); Eina_List *l; - Item *it; + Elm_Index_Item *it; Evas_Coord mw, mh, w, h; int i = 0; if (!wd) return; @@ -235,7 +234,7 @@ { Widget_Data *wd = elm_widget_data_get(obj); Eina_List *l; - Item *it; + Elm_Index_Item *it; if (!wd) return; if (!wd->level_active[level]) return; EINA_LIST_FOREACH(wd->items, l, it) @@ -264,7 +263,7 @@ _sel_eval(Evas_Object *obj, Evas_Coord evx, Evas_Coord evy) { Widget_Data *wd = elm_widget_data_get(obj); - Item *it, *it_closest, *it_last; + Elm_Index_Item *it, *it_closest, *it_last; Eina_List *l; Evas_Coord x, y, w, h, bx, by, bw, bh, xx, yy; double cdv = 0.5; @@ -614,7 +613,7 @@ ELM_CHECK_WIDTYPE(obj, widtype) NULL; Widget_Data *wd = elm_widget_data_get(obj); Eina_List *l; - Item *it; + Elm_Index_Item *it; if (!wd) return NULL; EINA_LIST_FOREACH(wd->items, l, it) if ((it->selected) && (it->level == level)) return it->data; @@ -635,7 +634,7 @@ { ELM_CHECK_WIDTYPE(obj, widtype); Widget_Data *wd = elm_widget_data_get(obj); - Item *it; + Elm_Index_Item *it; if (!wd) return; it = _item_new(obj, letter, item); if (!it) return; @@ -657,7 +656,7 @@ { ELM_CHECK_WIDTYPE(obj, widtype); Widget_Data *wd = elm_widget_data_get(obj); - Item *it; + Elm_Index_Item *it; if (!wd) return; it = _item_new(obj, letter, item); @@ -681,7 +680,7 @@ { ELM_CHECK_WIDTYPE(obj, widtype); Widget_Data *wd = elm_widget_data_get(obj); - Item *it, *it_rel; + Elm_Index_Item *it, *it_rel; if (!wd) return; if (!relative) { @@ -715,7 +714,7 @@ { ELM_CHECK_WIDTYPE(obj, widtype); Widget_Data *wd = elm_widget_data_get(obj); - Item *it, *it_rel; + Elm_Index_Item *it, *it_rel; if (!wd) return; if (!relative) { @@ -735,6 +734,62 @@ } /** + * Insert a new @p item into the sorted index @p obj in @p letter. + * + * @param obj The index object + * @param letter Letter under which the item should be indexed + * @param item The item to put in the index + * @param cmp_func The function called for the sort of index items. + * @param cmp_data_func The function called for the sort of the data. It will + * be used when cmp_func return 0. It means the index item already exists. + * So, to decide which data item should be pointed by the index item, a function + * to compare them is needed. If this function is not provided, index items + * will be duplicated. + * + * @ingroup Index + */ +EAPI void +elm_index_item_sorted_insert(Evas_Object *obj, const char *letter, const void *item, Eina_Compare_Cb cmp_func, Eina_Compare_Cb cmp_data_func) +{ + ELM_CHECK_WIDTYPE(obj, widtype); + Widget_Data *wd = elm_widget_data_get(obj); + Eina_List *lnear; + Elm_Index_Item *it; + int cmp; + + if (!wd) return; + if (!(wd->items)) + { + elm_index_item_append(obj, letter, item); + return; + } + + it = _item_new(obj, letter, item); + if (!it) return; + + lnear = eina_list_search_sorted_near_list(wd->items, cmp_func, it, &cmp); + if (cmp < 0) + wd->items = eina_list_append_relative_list(wd->items, it, lnear); + else if (cmp > 0) + wd->items = eina_list_prepend_relative_list(wd->items, it, lnear); + else + { + /* If cmp_data_func is not provided, append a duplicated item */ + if (!cmp_data_func) + wd->items = eina_list_append_relative_list(wd->items, it, lnear); + else + { + Elm_Index_Item *p_it = eina_list_data_get(lnear); + if (cmp_data_func(p_it->data, it->data) >= 0) + p_it->data = it->data; + _item_free(it); + } + } + + _index_box_clear(obj, wd->bx[wd->level], wd->level); +} + +/** * Remove an item from the index. * * @param obj The index object @@ -747,7 +802,7 @@ { ELM_CHECK_WIDTYPE(obj, widtype); Widget_Data *wd = elm_widget_data_get(obj); - Item *it; + Elm_Index_Item *it; if (!wd) return; it = _item_find(obj, item); if (!it) return; @@ -756,6 +811,24 @@ } /** + * Find an index item using item data. + * + * @param obj The index object + * @param item The item pointed by index item + * @return The index item pointing to @p item + * + * @ingroup Index + */ +EAPI Elm_Index_Item * +elm_index_item_find(Evas_Object *obj, const void *item) +{ + ELM_CHECK_WIDTYPE(obj, widtype); + Widget_Data *wd = elm_widget_data_get(obj); + if (!wd) return NULL; + return _item_find(obj, item); +} + +/** * Clears an index of its items. * * @param obj The index object. @@ -767,7 +840,7 @@ { ELM_CHECK_WIDTYPE(obj, widtype); Widget_Data *wd = elm_widget_data_get(obj); - Item *it; + Elm_Index_Item *it; Eina_List *l, *clear = NULL; if (!wd) return; _index_box_clear(obj, wd->bx[wd->level], wd->level); @@ -796,3 +869,51 @@ _index_box_auto_fill(obj, wd->bx[0], 0); if (wd->level == 1) _index_box_auto_fill(obj, wd->bx[1], 1); } + +/** + * Returns the data associated with the item. + * + * @param it The list item + * @return The data associated with @p it + * + * @ingroup Index + */ +EAPI void * +elm_index_item_data_get(const Elm_Index_Item *it) +{ + if (!it) return NULL; + return (void *)it->data; +} + +/** + * Set the data item from the index item + * + * This set a new data value. + * + * @param it The item + * @param data The new data pointer to set + * + * @ingroup Index + */ +EAPI void +elm_index_item_data_set(Elm_Index_Item *it, const void *data) +{ + if (!it) return; + it->data = data; +} + +/** + * Gets the letter of the item. + * + * @param it The list item + * @return The letter of @p it + * + * @ingroup Index + */ +EAPI const char * +elm_index_item_letter_get(const Elm_Index_Item *it) +{ + if (!it) return NULL; + return it->letter; +} + |
From: Enlightenment S. <no-...@en...> - 2010-06-06 22:09:56
|
Log: Del spin timer on elm_spinner del_hook Author: bdilly Date: 2010-06-06 15:09:48 -0700 (Sun, 06 Jun 2010) New Revision: 49549 Modified: trunk/TMP/st/elementary/src/lib/elm_spinner.c Modified: trunk/TMP/st/elementary/src/lib/elm_spinner.c =================================================================== --- trunk/TMP/st/elementary/src/lib/elm_spinner.c 2010-06-06 22:08:50 UTC (rev 49548) +++ trunk/TMP/st/elementary/src/lib/elm_spinner.c 2010-06-06 22:09:48 UTC (rev 49549) @@ -60,6 +60,7 @@ if (!wd) return; if (wd->label) eina_stringshare_del(wd->label); if (wd->delay) ecore_timer_del(wd->delay); + if (wd->spin) ecore_timer_del(wd->spin); if (wd->special_values) EINA_LIST_FREE(wd->special_values, sv) { |
From: Enlightenment S. <no-...@en...> - 2010-06-06 22:15:33
|
Log: This patch make it possible to ask elm_thumb for the generated thumbnail path. By: Rafael Fonseca <rfo...@pr...> Author: bdilly Date: 2010-06-06 15:15:27 -0700 (Sun, 06 Jun 2010) New Revision: 49550 Modified: trunk/TMP/st/elementary/src/lib/Elementary.h.in trunk/TMP/st/elementary/src/lib/elm_thumb.c Modified: trunk/TMP/st/elementary/src/lib/Elementary.h.in =================================================================== --- trunk/TMP/st/elementary/src/lib/Elementary.h.in 2010-06-06 22:09:48 UTC (rev 49549) +++ trunk/TMP/st/elementary/src/lib/Elementary.h.in 2010-06-06 22:15:27 UTC (rev 49550) @@ -860,6 +860,7 @@ EAPI Evas_Object *elm_thumb_add(Evas_Object *parent); EAPI void elm_thumb_file_set(Evas_Object *obj, const char *file, const char *key); EAPI void elm_thumb_file_get(const Evas_Object *obj, const char **file, const char **key); + EAPI void elm_thumb_path_get(const Evas_Object *obj, const char **file, const char **key); EAPI void elm_thumb_keep_aspect_set(Evas_Object *obj, Eina_Bool setting); EAPI Eina_Bool elm_thumb_keep_aspect_get(const Evas_Object *obj); EAPI void elm_thumb_align_set(Evas_Object *obj, float x_align, float y_align); Modified: trunk/TMP/st/elementary/src/lib/elm_thumb.c =================================================================== --- trunk/TMP/st/elementary/src/lib/elm_thumb.c 2010-06-06 22:09:48 UTC (rev 49549) +++ trunk/TMP/st/elementary/src/lib/elm_thumb.c 2010-06-06 22:15:27 UTC (rev 49550) @@ -41,6 +41,11 @@ } children; const char *file; const char *key; + struct + { + const char *file; + const char *key; + } thumb; Ecore_Event_Handler *eeh; int id; Elm_Thumb_Animation_Setting anim_setting; @@ -185,6 +190,8 @@ elm_widget_sub_object_add(wd->self, wd->children.view); edje_object_part_swallow(wd->children.frm, "elm.swallow.content", wd->children.view); + eina_stringshare_replace(&(wd->thumb.file), thumb_path); + eina_stringshare_replace(&(wd->thumb.key), thumb_key); edje_object_signal_emit(wd->children.frm, EDJE_SIGNAL_GENERATE_STOP, "elm"); evas_object_smart_callback_call(wd->self, SIG_GENERATE_STOP, NULL); return; @@ -484,6 +491,9 @@ } } + eina_stringshare_replace(&(wd->thumb.file), NULL); + eina_stringshare_replace(&(wd->thumb.key), NULL); + #ifdef HAVE_ELEMENTARY_ETHUMB if ((file_replaced || key_replaced) && evas_object_visible_get(obj)) _thumb_show(wd); @@ -498,6 +508,7 @@ * @param key Pointer to key. * * @see elm_thumb_file_set() + * @see elm_thumb_path_get() * @see elm_thumb_animate() * * @ingroup Thumb @@ -514,6 +525,32 @@ } /** + * Get the path and key to the image or video generated by ethumb. + * + * One just need to make sure that the thumbnail was generated before getting + * its path; otherwise, the path will be NULL. One way to do that is by asking + * for the path when/after the "generate,stop" smart callback is called. + * + * @param obj The thumb object. + * @param file Pointer to thumb path. + * @param key Pointer to thumb key. + * + * @see elm_thumb_file_get() + * + * @ingroup Thumb + */ +EAPI void +elm_thumb_path_get(const Evas_Object *obj, const char **file, const char **key) +{ + ELM_CHECK_WIDTYPE(obj, widtype); + Widget_Data *wd = elm_widget_data_get(obj); + if (file) + *file = wd->thumb.file; + if (key) + *key = wd->thumb.key; +} + +/** * Set the animation state for the thumb object. If its content is an animated * video, you may start/stop the animation or tell it to play continuously and * looping. |
From: Enlightenment S. <no-...@en...> - 2010-06-07 13:43:14
|
Log: oops - forgot to return CALLBACK_CANCEL on elm_clock Author: bdilly Date: 2010-06-07 06:43:07 -0700 (Mon, 07 Jun 2010) New Revision: 49553 Modified: trunk/TMP/st/elementary/src/lib/elm_clock.c Modified: trunk/TMP/st/elementary/src/lib/elm_clock.c =================================================================== --- trunk/TMP/st/elementary/src/lib/elm_clock.c 2010-06-07 13:08:19 UTC (rev 49552) +++ trunk/TMP/st/elementary/src/lib/elm_clock.c 2010-06-07 13:43:07 UTC (rev 49553) @@ -115,9 +115,9 @@ _signal_clock_val_up(void *data) { Widget_Data *wd = elm_widget_data_get(data); - if (!wd) return; - if (!wd->edit) return; - if (!wd->sel_obj) return; + if (!wd) return ECORE_CALLBACK_CANCEL; + if (!wd->edit) return ECORE_CALLBACK_CANCEL; + if (!wd->sel_obj) return ECORE_CALLBACK_CANCEL; if (wd->sel_obj == wd->digit[0]) { wd->hrs = wd->hrs + 10; @@ -164,9 +164,9 @@ _signal_clock_val_down(void *data) { Widget_Data *wd = elm_widget_data_get(data); - if (!wd) return; - if (!wd->edit) return; - if (!wd->sel_obj) return; + if (!wd) return ECORE_CALLBACK_CANCEL; + if (!wd->edit) return ECORE_CALLBACK_CANCEL; + if (!wd->sel_obj) return ECORE_CALLBACK_CANCEL; if (wd->sel_obj == wd->digit[0]) { wd->hrs = wd->hrs - 10; |
From: Enlightenment S. <no-...@en...> - 2010-06-07 14:19:48
|
Log: oops-- Setting timer handle to NULL when canceling cb function =/ Author: bdilly Date: 2010-06-07 07:19:38 -0700 (Mon, 07 Jun 2010) New Revision: 49554 Modified: trunk/TMP/st/elementary/src/lib/elm_clock.c Modified: trunk/TMP/st/elementary/src/lib/elm_clock.c =================================================================== --- trunk/TMP/st/elementary/src/lib/elm_clock.c 2010-06-07 13:43:07 UTC (rev 49553) +++ trunk/TMP/st/elementary/src/lib/elm_clock.c 2010-06-07 14:19:38 UTC (rev 49554) @@ -115,9 +115,9 @@ _signal_clock_val_up(void *data) { Widget_Data *wd = elm_widget_data_get(data); - if (!wd) return ECORE_CALLBACK_CANCEL; - if (!wd->edit) return ECORE_CALLBACK_CANCEL; - if (!wd->sel_obj) return ECORE_CALLBACK_CANCEL; + if (!wd) goto clock_val_up_cancel; + if (!wd->edit) goto clock_val_up_cancel; + if (!wd->sel_obj) goto clock_val_up_cancel; if (wd->sel_obj == wd->digit[0]) { wd->hrs = wd->hrs + 10; @@ -158,15 +158,18 @@ _time_update(data); evas_object_smart_callback_call(data, "changed", NULL); return ECORE_CALLBACK_RENEW; +clock_val_up_cancel: + wd->spin = NULL; + return ECORE_CALLBACK_CANCEL; } static int _signal_clock_val_down(void *data) { Widget_Data *wd = elm_widget_data_get(data); - if (!wd) return ECORE_CALLBACK_CANCEL; - if (!wd->edit) return ECORE_CALLBACK_CANCEL; - if (!wd->sel_obj) return ECORE_CALLBACK_CANCEL; + if (!wd) goto clock_val_down_cancel; + if (!wd->edit) goto clock_val_down_cancel; + if (!wd->sel_obj) goto clock_val_down_cancel; if (wd->sel_obj == wd->digit[0]) { wd->hrs = wd->hrs - 10; @@ -207,6 +210,9 @@ _time_update(data); evas_object_smart_callback_call(data, "changed", NULL); return ECORE_CALLBACK_RENEW; +clock_val_down_cancel: + wd->spin = NULL; + return ECORE_CALLBACK_CANCEL; } static void |
From: Enlightenment S. <no-...@en...> - 2010-06-15 14:11:25
|
Log: Add elm_object_signal_emit This function sends a signal to the edje object of the obj. It's a general function, and every widget should set a hook for this. I'm setting a hook only for the spinner now, but soon I will work on other widgets. Author: bdilly Date: 2010-06-15 07:11:13 -0700 (Tue, 15 Jun 2010) New Revision: 49681 Modified: trunk/TMP/st/elementary/src/lib/Elementary.h.in trunk/TMP/st/elementary/src/lib/elm_main.c trunk/TMP/st/elementary/src/lib/elm_priv.h trunk/TMP/st/elementary/src/lib/elm_spinner.c trunk/TMP/st/elementary/src/lib/elm_widget.c Modified: trunk/TMP/st/elementary/src/lib/Elementary.h.in =================================================================== --- trunk/TMP/st/elementary/src/lib/Elementary.h.in 2010-06-15 11:02:08 UTC (rev 49680) +++ trunk/TMP/st/elementary/src/lib/Elementary.h.in 2010-06-15 14:11:13 UTC (rev 49681) @@ -285,6 +285,8 @@ EAPI void elm_object_scroll_freeze_push(Evas_Object *obj); EAPI void elm_object_scroll_freeze_pop(Evas_Object *obj); + EAPI void elm_object_signal_emit(Evas_Object *obj, const char *emission, const char *source); + EAPI void elm_coords_finger_size_adjust(int times_w, Evas_Coord *w, int times_h, Evas_Coord *h); EAPI Elm_Theme *elm_theme_new(void); Modified: trunk/TMP/st/elementary/src/lib/elm_main.c =================================================================== --- trunk/TMP/st/elementary/src/lib/elm_main.c 2010-06-15 11:02:08 UTC (rev 49680) +++ trunk/TMP/st/elementary/src/lib/elm_main.c 2010-06-15 14:11:13 UTC (rev 49681) @@ -1379,3 +1379,20 @@ { return elm_widget_type_get(obj); } + +/** + * Send a signal to the widget edje object. + * + * This function sends a signal to the edje object of the obj. An edje program + * can respond to a signal by specifying matching 'signal' and + * 'source' fields. + * + * @param obj The object + * @param emission The signal's name. + * @param source The signal's source. + * @ingroup General + */ +EAPI void elm_object_signal_emit(Evas_Object *obj, const char *emission, const char *source) +{ + elm_widget_signal_emit(obj, emission, source); +} Modified: trunk/TMP/st/elementary/src/lib/elm_priv.h =================================================================== --- trunk/TMP/st/elementary/src/lib/elm_priv.h 2010-06-15 11:02:08 UTC (rev 49680) +++ trunk/TMP/st/elementary/src/lib/elm_priv.h 2010-06-15 14:11:13 UTC (rev 49681) @@ -122,6 +122,7 @@ EAPI void elm_widget_disable_hook_set(Evas_Object *obj, void (*func) (Evas_Object *obj)); EAPI void elm_widget_theme_hook_set(Evas_Object *obj, void (*func) (Evas_Object *obj)); EAPI void elm_widget_changed_hook_set(Evas_Object *obj, void (*func) (Evas_Object *obj)); +EAPI void elm_widget_signal_emit_hook_set(Evas_Object *obj, void (*func) (Evas_Object *obj, const char *emission, const char *source)); EAPI void elm_widget_theme(Evas_Object *obj); EAPI void elm_widget_on_focus_hook_set(Evas_Object *obj, void (*func) (void *data, Evas_Object *obj), void *data); EAPI void elm_widget_on_change_hook_set(Evas_Object *obj, void (*func) (void *data, Evas_Object *obj), void *data); @@ -132,6 +133,7 @@ EAPI void elm_widget_sub_object_del(Evas_Object *obj, Evas_Object *sobj); EAPI void elm_widget_resize_object_set(Evas_Object *obj, Evas_Object *sobj); EAPI void elm_widget_hover_object_set(Evas_Object *obj, Evas_Object *sobj); +EAPI void elm_widget_signal_emit(Evas_Object *obj, const char *emission, const char *source); EAPI void elm_widget_can_focus_set(Evas_Object *obj, int can_focus); EAPI int elm_widget_can_focus_get(const Evas_Object *obj); EAPI int elm_widget_focus_get(const Evas_Object *obj); Modified: trunk/TMP/st/elementary/src/lib/elm_spinner.c =================================================================== --- trunk/TMP/st/elementary/src/lib/elm_spinner.c 2010-06-15 11:02:08 UTC (rev 49680) +++ trunk/TMP/st/elementary/src/lib/elm_spinner.c 2010-06-15 14:11:13 UTC (rev 49681) @@ -82,6 +82,14 @@ } static void +_signal_emit_hook(Evas_Object *obj, const char *emission, const char *source) +{ + Widget_Data *wd = elm_widget_data_get(obj); + if (!wd) return; + edje_object_signal_emit(wd->spinner, emission, source); +} + +static void _theme_hook(Evas_Object *obj) { Widget_Data *wd = elm_widget_data_get(obj); @@ -508,6 +516,7 @@ elm_widget_on_focus_hook_set(obj, _on_focus_hook, NULL); elm_widget_theme_hook_set(obj, _theme_hook); elm_widget_disable_hook_set(obj, _disable_hook); + elm_widget_signal_emit_hook_set(obj, _signal_emit_hook); wd->val = 0.0; wd->val_min = 0.0; Modified: trunk/TMP/st/elementary/src/lib/elm_widget.c =================================================================== --- trunk/TMP/st/elementary/src/lib/elm_widget.c 2010-06-15 11:02:08 UTC (rev 49680) +++ trunk/TMP/st/elementary/src/lib/elm_widget.c 2010-06-15 14:11:13 UTC (rev 49681) @@ -27,6 +27,8 @@ void (*activate_func) (Evas_Object *obj); void (*disable_func) (Evas_Object *obj); void (*theme_func) (Evas_Object *obj); + void (*signal_func) (Evas_Object *obj, const char *emission, + const char *source); void (*changed_func) (Evas_Object *obj); void (*on_focus_func) (void *data, Evas_Object *obj); void *on_focus_data; @@ -157,6 +159,13 @@ } EAPI void +elm_widget_signal_emit_hook_set(Evas_Object *obj, void (*func) (Evas_Object *obj, const char *emission, const char *source)) +{ + API_ENTRY return; + sd->signal_func = func; +} + +EAPI void elm_widget_theme(Evas_Object *obj) { const Eina_List *l; @@ -585,6 +594,14 @@ } EAPI void +elm_widget_signal_emit(Evas_Object *obj, const char *emission, const char *source) +{ + API_ENTRY return; + if (!sd->signal_func) return; + sd->signal_func(obj, emission, source); +} + +EAPI void elm_widget_focus_set(Evas_Object *obj, int first) { API_ENTRY return; |
From: Enlightenment S. <no-...@en...> - 2010-06-15 15:04:13
|
Log: Set signal emit hooks for entry, scroller and scrolled entry. Author: bdilly Date: 2010-06-15 08:04:05 -0700 (Tue, 15 Jun 2010) New Revision: 49682 Modified: trunk/TMP/st/elementary/src/lib/elc_scrolled_entry.c trunk/TMP/st/elementary/src/lib/elm_entry.c trunk/TMP/st/elementary/src/lib/elm_scroller.c Modified: trunk/TMP/st/elementary/src/lib/elc_scrolled_entry.c =================================================================== --- trunk/TMP/st/elementary/src/lib/elc_scrolled_entry.c 2010-06-15 14:11:13 UTC (rev 49681) +++ trunk/TMP/st/elementary/src/lib/elc_scrolled_entry.c 2010-06-15 15:04:05 UTC (rev 49682) @@ -127,6 +127,16 @@ } static void +_signal_emit_hook(Evas_Object *obj, const char *emission, const char *source) +{ + Widget_Data *wd = elm_widget_data_get(obj); + if (!wd) return; + elm_object_signal_emit(wd->entry, emission, source); + elm_object_signal_emit(wd->scroller, emission, source); +} + + +static void _entry_changed(void *data, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__) { _sizing_eval(data); @@ -251,6 +261,7 @@ elm_widget_disable_hook_set(obj, _disable_hook); elm_widget_can_focus_set(obj, 1); elm_widget_theme_hook_set(obj, _theme_hook); + elm_widget_signal_emit_hook_set(obj, _signal_emit_hook); wd->scroller = elm_scroller_add(parent); elm_widget_resize_object_set(obj, wd->scroller); Modified: trunk/TMP/st/elementary/src/lib/elm_entry.c =================================================================== --- trunk/TMP/st/elementary/src/lib/elm_entry.c 2010-06-15 14:11:13 UTC (rev 49681) +++ trunk/TMP/st/elementary/src/lib/elm_entry.c 2010-06-15 15:04:05 UTC (rev 49682) @@ -356,6 +356,14 @@ } static void +_signal_emit_hook(Evas_Object *obj, const char *emission, const char *source) +{ + Widget_Data *wd = elm_widget_data_get(obj); + if (!wd) return; + edje_object_signal_emit(wd->ent, emission, source); +} + +static void _hoversel_position(Evas_Object *obj) { Widget_Data *wd = elm_widget_data_get(obj); @@ -1274,6 +1282,7 @@ elm_widget_del_hook_set(obj, _del_hook); elm_widget_theme_hook_set(obj, _theme_hook); elm_widget_disable_hook_set(obj, _disable_hook); + elm_widget_signal_emit_hook_set(obj, _signal_emit_hook); elm_widget_can_focus_set(obj, 1); wd->linewrap = EINA_TRUE; Modified: trunk/TMP/st/elementary/src/lib/elm_scroller.c =================================================================== --- trunk/TMP/st/elementary/src/lib/elm_scroller.c 2010-06-15 14:11:13 UTC (rev 49681) +++ trunk/TMP/st/elementary/src/lib/elm_scroller.c 2010-06-15 15:04:05 UTC (rev 49682) @@ -97,6 +97,15 @@ } static void +_signal_emit_hook(Evas_Object *obj, const char *emission, const char *source) +{ + Widget_Data *wd = elm_widget_data_get(obj); + if (!wd) return; + edje_object_signal_emit(elm_smart_scroller_edje_object_get(wd->scr), + emission, source); +} + +static void _show_region_hook(void *data, Evas_Object *obj) { @@ -300,6 +309,7 @@ elm_widget_data_set(obj, wd); elm_widget_del_hook_set(obj, _del_hook); elm_widget_theme_hook_set(obj, _theme_hook); + elm_widget_signal_emit_hook_set(obj, _signal_emit_hook); wd->widget_name = eina_stringshare_add("scroller"); wd->widget_base = eina_stringshare_add("base"); |
From: Enlightenment S. <no-...@en...> - 2010-06-15 15:55:29
|
Log: Fix max value wrapping calculation of elm spinner. By: Rafael Fonseca <rfo...@pr...> Author: bdilly Date: 2010-06-15 08:55:22 -0700 (Tue, 15 Jun 2010) New Revision: 49683 Modified: trunk/TMP/st/elementary/src/lib/elm_spinner.c Modified: trunk/TMP/st/elementary/src/lib/elm_spinner.c =================================================================== --- trunk/TMP/st/elementary/src/lib/elm_spinner.c 2010-06-15 15:04:05 UTC (rev 49682) +++ trunk/TMP/st/elementary/src/lib/elm_spinner.c 2010-06-15 15:55:22 UTC (rev 49683) @@ -207,7 +207,7 @@ while (new_val < wd->val_min) new_val = wd->val_max + new_val + 1 - wd->val_min; while (new_val > wd->val_max) - new_val = wd->val_min + new_val - wd->val_max; + new_val = wd->val_min + new_val - wd->val_max - 1; } else { |
From: Enlightenment S. <no-...@en...> - 2010-06-25 22:38:38
|
Log: Implement elm_object_signal_listen and unlisten elm_object_signal_listen add callback(s) for edje object(s) of the widget. elm_object_signal_unlisten delete this callback. They're general functions, and every widget should set hooks for these. It will improve elm extension flexibility. We have already elm_object_signal_emit to send signals for the widgets theme, adding callbacks is an expected step. It provides a way to support sound on widgets. For example, in the elm extension we could emit "file_to_play", "play", and add a callback with elm_object_signal_listen for "*", "play". The callback function could use the signal received to request the file to be played by the backend sound system. Certainly we should look for a better way to provide support for sound on edje, but for now, it does the work. And anyway, it's only a use case for these new functions. Author: bdilly Date: 2010-06-25 15:38:32 -0700 (Fri, 25 Jun 2010) New Revision: 49868 Modified: trunk/TMP/st/elementary/src/lib/Elementary.h.in trunk/TMP/st/elementary/src/lib/elm_main.c trunk/TMP/st/elementary/src/lib/elm_priv.h trunk/TMP/st/elementary/src/lib/elm_widget.c Modified: trunk/TMP/st/elementary/src/lib/Elementary.h.in =================================================================== --- trunk/TMP/st/elementary/src/lib/Elementary.h.in 2010-06-25 22:28:06 UTC (rev 49867) +++ trunk/TMP/st/elementary/src/lib/Elementary.h.in 2010-06-25 22:38:32 UTC (rev 49868) @@ -288,6 +288,8 @@ EAPI void elm_object_scroll_freeze_pop(Evas_Object *obj); EAPI void elm_object_signal_emit(Evas_Object *obj, const char *emission, const char *source); + EAPI void elm_object_signal_listen(Evas_Object *obj, const char *emission, const char *source, void (*func) (void *data, Evas_Object *o, const char *emission, const char *source), void *data); + EAPI void *elm_object_signal_unlisten(Evas_Object *obj, const char *emission, const char *source, void (*func) (void *data, Evas_Object *o, const char *emission, const char *source)); EAPI void elm_coords_finger_size_adjust(int times_w, Evas_Coord *w, int times_h, Evas_Coord *h); Modified: trunk/TMP/st/elementary/src/lib/elm_main.c =================================================================== --- trunk/TMP/st/elementary/src/lib/elm_main.c 2010-06-25 22:28:06 UTC (rev 49867) +++ trunk/TMP/st/elementary/src/lib/elm_main.c 2010-06-25 22:38:32 UTC (rev 49868) @@ -1409,3 +1409,45 @@ { elm_widget_signal_emit(obj, emission, source); } + +/** + * Add a callback for a signal emitted by widget edje object. + * + * This function connects a callback function to a signal emitted by the + * edje object of the obj. + * Globs can occur in either the emission or source name. + * + * @param obj The object + * @param emission The signal's name. + * @param source The signal's source. + * @param func The callback function to be executed when the signal is + * emitted. + * @param data A pointer to data to pass in to the callback function. + * @ingroup General + */ +EAPI void elm_object_signal_listen(Evas_Object *obj, const char *emission, const char *source, void (*func) (void *data, Evas_Object *o, const char *emission, const char *source), void *data) +{ + elm_widget_signal_listen(obj, emission, source, func, data); +} + +/** + * Remove a signal-triggered callback from an widget edje object. + * + * This function removes a callback, previoulsy attached to a signal emitted + * by the edje object of the obj. + * The parameters emission, source and func must match exactly those passed to + * a previous call to elm_object_signal_listen(). The data pointer that + * was passed to this call will be returned. + * + * @param obj The object + * @param emission The signal's name. + * @param source The signal's source. + * @param func The callback function to be executed when the signal is + * emitted. + * @return The data pointer + * @ingroup General + */ +EAPI void *elm_object_signal_unlisten(Evas_Object *obj, const char *emission, const char *source, void (*func) (void *data, Evas_Object *o, const char *emission, const char *source)) +{ + return elm_widget_signal_unlisten(obj, emission, source, func); +} Modified: trunk/TMP/st/elementary/src/lib/elm_priv.h =================================================================== --- trunk/TMP/st/elementary/src/lib/elm_priv.h 2010-06-25 22:28:06 UTC (rev 49867) +++ trunk/TMP/st/elementary/src/lib/elm_priv.h 2010-06-25 22:38:32 UTC (rev 49868) @@ -139,6 +139,8 @@ EAPI void elm_widget_theme_hook_set(Evas_Object *obj, void (*func) (Evas_Object *obj)); EAPI void elm_widget_changed_hook_set(Evas_Object *obj, void (*func) (Evas_Object *obj)); EAPI void elm_widget_signal_emit_hook_set(Evas_Object *obj, void (*func) (Evas_Object *obj, const char *emission, const char *source)); +EAPI void elm_widget_signal_listen_hook_set(Evas_Object *obj, void (*func) (Evas_Object *obj, const char *emission, const char *source, void (*func_cb) (void *data, Evas_Object *o, const char *emission, const char *source), void *data)); +EAPI void elm_widget_signal_unlisten_hook_set(Evas_Object *obj, void *(*func) (Evas_Object *obj, const char *emission, const char *source, void (*func_cb) (void *data, Evas_Object *o, const char *emission, const char *source))); EAPI void elm_widget_theme(Evas_Object *obj); EAPI void elm_widget_on_focus_hook_set(Evas_Object *obj, void (*func) (void *data, Evas_Object *obj), void *data); EAPI void elm_widget_on_change_hook_set(Evas_Object *obj, void (*func) (void *data, Evas_Object *obj), void *data); @@ -150,6 +152,8 @@ EAPI void elm_widget_resize_object_set(Evas_Object *obj, Evas_Object *sobj); EAPI void elm_widget_hover_object_set(Evas_Object *obj, Evas_Object *sobj); EAPI void elm_widget_signal_emit(Evas_Object *obj, const char *emission, const char *source); +EAPI void elm_widget_signal_listen(Evas_Object *obj, const char *emission, const char *source, void (*func) (void *data, Evas_Object *o, const char *emission, const char *source), void *data); +EAPI void *elm_widget_signal_unlisten(Evas_Object *obj, const char *emission, const char *source, void (*func) (void *data, Evas_Object *o, const char *emission, const char *source)); EAPI void elm_widget_can_focus_set(Evas_Object *obj, int can_focus); EAPI int elm_widget_can_focus_get(const Evas_Object *obj); EAPI int elm_widget_focus_get(const Evas_Object *obj); Modified: trunk/TMP/st/elementary/src/lib/elm_widget.c =================================================================== --- trunk/TMP/st/elementary/src/lib/elm_widget.c 2010-06-25 22:28:06 UTC (rev 49867) +++ trunk/TMP/st/elementary/src/lib/elm_widget.c 2010-06-25 22:38:32 UTC (rev 49868) @@ -29,6 +29,14 @@ void (*theme_func) (Evas_Object *obj); void (*signal_func) (Evas_Object *obj, const char *emission, const char *source); + void (*listen_func) (Evas_Object *obj, const char *emission, + const char *source, void (*func) (void *data, + Evas_Object *o, const char *emission, + const char *source), void *data); + void *(*unlisten_func) (Evas_Object *obj, const char *emission, + const char *source, void (*func) (void *data, + Evas_Object *o, const char *emission, + const char *source)); void (*changed_func) (Evas_Object *obj); void (*on_focus_func) (void *data, Evas_Object *obj); void *on_focus_data; @@ -171,6 +179,20 @@ } EAPI void +elm_widget_signal_listen_hook_set(Evas_Object *obj, void (*func) (Evas_Object *obj, const char *emission, const char *source, void (*func_cb) (void *data, Evas_Object *o, const char *emission, const char *source), void *data)) +{ + API_ENTRY return; + sd->listen_func = func; +} + +EAPI void +elm_widget_signal_unlisten_hook_set(Evas_Object *obj, void *(*func) (Evas_Object *obj, const char *emission, const char *source, void (*func_cb) (void *data, Evas_Object *o, const char *emission, const char *source))) +{ + API_ENTRY return; + sd->unlisten_func = func; +} + +EAPI void elm_widget_theme(Evas_Object *obj) { const Eina_List *l; @@ -610,6 +632,22 @@ } EAPI void +elm_widget_signal_listen(Evas_Object *obj, const char *emission, const char *source, void (*func) (void *data, Evas_Object *o, const char *emission, const char *source), void *data) +{ + API_ENTRY return; + if (!sd->listen_func) return; + sd->listen_func(obj, emission, source, func, data); +} + +EAPI void * +elm_widget_signal_unlisten(Evas_Object *obj, const char *emission, const char *source, void (*func) (void *data, Evas_Object *o, const char *emission, const char *source)) +{ + API_ENTRY return NULL; + if (!sd->unlisten_func) return NULL; + return sd->unlisten_func(obj, emission, source, func); +} + +EAPI void elm_widget_focus_set(Evas_Object *obj, int first) { API_ENTRY return; |
From: Enlightenment S. <no-...@en...> - 2010-06-25 22:40:17
|
Log: Set hooks for elm object signal emit, listen and unlisten on elm clock Author: bdilly Date: 2010-06-25 15:40:11 -0700 (Fri, 25 Jun 2010) New Revision: 49869 Modified: trunk/TMP/st/elementary/src/lib/elm_clock.c Modified: trunk/TMP/st/elementary/src/lib/elm_clock.c =================================================================== --- trunk/TMP/st/elementary/src/lib/elm_clock.c 2010-06-25 22:38:32 UTC (rev 49868) +++ trunk/TMP/st/elementary/src/lib/elm_clock.c 2010-06-25 22:40:11 UTC (rev 49869) @@ -83,6 +83,49 @@ edje_object_signal_emit(wd->clk, "elm,action,unfocus", "elm"); } +static void +_signal_emit_hook(Evas_Object *obj, const char *emission, const char *source) +{ + Widget_Data *wd = elm_widget_data_get(obj); + int i; + if (!wd) return; + edje_object_signal_emit(wd->clk, emission, source); + for (i = 0; i < 6; i++) + { + if (wd->digit[i]) + edje_object_signal_emit(wd->digit[i], emission, source); + } +} + +static void +_signal_listen_hook(Evas_Object *obj, const char *emission, const char *source, void (*func_cb) (void *data, Evas_Object *o, const char *emission, const char *source), void *data) +{ + Widget_Data *wd = elm_widget_data_get(obj); + int i; + if (!wd) return; + edje_object_signal_callback_add(wd->clk, emission, source, func_cb, data); + for (i = 0; i < 6; i++) + { + if (wd->digit[i]) + edje_object_signal_callback_add(wd->digit[i], emission, source, + func_cb, data); + } +} + +static void * +_signal_unlisten_hook(Evas_Object *obj, const char *emission, const char *source, void (*func_cb) (void *data, Evas_Object *o, const char *emission, const char *source)) +{ + Widget_Data *wd = elm_widget_data_get(obj); + int i; + if (!wd) return NULL; + for (i = 0; i < 6; i++) + { + edje_object_signal_callback_del(wd->digit[i], emission, source, + func_cb); + } + return edje_object_signal_callback_del(wd->clk, emission, source, func_cb); +} + static Eina_Bool _ticker(void *data) { @@ -474,6 +517,9 @@ elm_widget_del_hook_set(obj, _del_hook); elm_widget_theme_hook_set(obj, _theme_hook); elm_widget_on_focus_hook_set(obj, _on_focus_hook, NULL); + elm_widget_signal_emit_hook_set(obj, _signal_emit_hook); + elm_widget_signal_listen_hook_set(obj, _signal_listen_hook); + elm_widget_signal_unlisten_hook_set(obj, _signal_unlisten_hook); wd->clk = edje_object_add(e); elm_widget_resize_object_set(obj, wd->clk); |
From: Enlightenment S. <no-...@en...> - 2010-06-25 22:40:51
|
Log: Set hooks for elm object signal listen and unlisten for elm spinner Author: bdilly Date: 2010-06-25 15:40:42 -0700 (Fri, 25 Jun 2010) New Revision: 49870 Modified: trunk/TMP/st/elementary/src/lib/elm_spinner.c Modified: trunk/TMP/st/elementary/src/lib/elm_spinner.c =================================================================== --- trunk/TMP/st/elementary/src/lib/elm_spinner.c 2010-06-25 22:40:11 UTC (rev 49869) +++ trunk/TMP/st/elementary/src/lib/elm_spinner.c 2010-06-25 22:40:42 UTC (rev 49870) @@ -90,6 +90,24 @@ } static void +_signal_listen_hook(Evas_Object *obj, const char *emission, const char *source, void (*func_cb) (void *data, Evas_Object *o, const char *emission, const char *source), void *data) +{ + Widget_Data *wd = elm_widget_data_get(obj); + if (!wd) return; + edje_object_signal_callback_add(wd->spinner, emission, + source, func_cb, data); +} + +static void * +_signal_unlisten_hook(Evas_Object *obj, const char *emission, const char *source, void (*func_cb) (void *data, Evas_Object *o, const char *emission, const char *source)) +{ + Widget_Data *wd = elm_widget_data_get(obj); + if (!wd) return NULL; + return edje_object_signal_callback_del(wd->spinner, emission, source, + func_cb); +} + +static void _theme_hook(Evas_Object *obj) { Widget_Data *wd = elm_widget_data_get(obj); @@ -517,6 +535,8 @@ elm_widget_theme_hook_set(obj, _theme_hook); elm_widget_disable_hook_set(obj, _disable_hook); elm_widget_signal_emit_hook_set(obj, _signal_emit_hook); + elm_widget_signal_listen_hook_set(obj, _signal_listen_hook); + elm_widget_signal_unlisten_hook_set(obj, _signal_unlisten_hook); wd->val = 0.0; wd->val_min = 0.0; |
From: Enlightenment S. <no-...@en...> - 2010-06-28 15:32:27
|
Log: Change elm functions elm_object_signal_listen to elm_object_signal_callback_add and elm_object_signal_unlisten to elm_object_signal_callback_del Author: bdilly Date: 2010-06-28 08:32:20 -0700 (Mon, 28 Jun 2010) New Revision: 49926 Modified: trunk/TMP/st/elementary/src/lib/Elementary.h.in trunk/TMP/st/elementary/src/lib/elm_clock.c trunk/TMP/st/elementary/src/lib/elm_main.c trunk/TMP/st/elementary/src/lib/elm_priv.h trunk/TMP/st/elementary/src/lib/elm_spinner.c trunk/TMP/st/elementary/src/lib/elm_widget.c Modified: trunk/TMP/st/elementary/src/lib/Elementary.h.in =================================================================== --- trunk/TMP/st/elementary/src/lib/Elementary.h.in 2010-06-28 14:31:21 UTC (rev 49925) +++ trunk/TMP/st/elementary/src/lib/Elementary.h.in 2010-06-28 15:32:20 UTC (rev 49926) @@ -288,8 +288,8 @@ EAPI void elm_object_scroll_freeze_pop(Evas_Object *obj); EAPI void elm_object_signal_emit(Evas_Object *obj, const char *emission, const char *source); - EAPI void elm_object_signal_listen(Evas_Object *obj, const char *emission, const char *source, void (*func) (void *data, Evas_Object *o, const char *emission, const char *source), void *data); - EAPI void *elm_object_signal_unlisten(Evas_Object *obj, const char *emission, const char *source, void (*func) (void *data, Evas_Object *o, const char *emission, const char *source)); + EAPI void elm_object_signal_callback_add(Evas_Object *obj, const char *emission, const char *source, void (*func) (void *data, Evas_Object *o, const char *emission, const char *source), void *data); + EAPI void *elm_object_signal_callback_del(Evas_Object *obj, const char *emission, const char *source, void (*func) (void *data, Evas_Object *o, const char *emission, const char *source)); EAPI void elm_coords_finger_size_adjust(int times_w, Evas_Coord *w, int times_h, Evas_Coord *h); Modified: trunk/TMP/st/elementary/src/lib/elm_clock.c =================================================================== --- trunk/TMP/st/elementary/src/lib/elm_clock.c 2010-06-28 14:31:21 UTC (rev 49925) +++ trunk/TMP/st/elementary/src/lib/elm_clock.c 2010-06-28 15:32:20 UTC (rev 49926) @@ -98,7 +98,7 @@ } static void -_signal_listen_hook(Evas_Object *obj, const char *emission, const char *source, void (*func_cb) (void *data, Evas_Object *o, const char *emission, const char *source), void *data) +_signal_callback_add_hook(Evas_Object *obj, const char *emission, const char *source, void (*func_cb) (void *data, Evas_Object *o, const char *emission, const char *source), void *data) { Widget_Data *wd = elm_widget_data_get(obj); int i; @@ -113,7 +113,7 @@ } static void * -_signal_unlisten_hook(Evas_Object *obj, const char *emission, const char *source, void (*func_cb) (void *data, Evas_Object *o, const char *emission, const char *source)) +_signal_callback_del_hook(Evas_Object *obj, const char *emission, const char *source, void (*func_cb) (void *data, Evas_Object *o, const char *emission, const char *source)) { Widget_Data *wd = elm_widget_data_get(obj); int i; @@ -518,8 +518,8 @@ elm_widget_theme_hook_set(obj, _theme_hook); elm_widget_on_focus_hook_set(obj, _on_focus_hook, NULL); elm_widget_signal_emit_hook_set(obj, _signal_emit_hook); - elm_widget_signal_listen_hook_set(obj, _signal_listen_hook); - elm_widget_signal_unlisten_hook_set(obj, _signal_unlisten_hook); + elm_widget_signal_callback_add_hook_set(obj, _signal_callback_add_hook); + elm_widget_signal_callback_del_hook_set(obj, _signal_callback_del_hook); wd->clk = edje_object_add(e); elm_widget_resize_object_set(obj, wd->clk); Modified: trunk/TMP/st/elementary/src/lib/elm_main.c =================================================================== --- trunk/TMP/st/elementary/src/lib/elm_main.c 2010-06-28 14:31:21 UTC (rev 49925) +++ trunk/TMP/st/elementary/src/lib/elm_main.c 2010-06-28 15:32:20 UTC (rev 49926) @@ -1425,9 +1425,9 @@ * @param data A pointer to data to pass in to the callback function. * @ingroup General */ -EAPI void elm_object_signal_listen(Evas_Object *obj, const char *emission, const char *source, void (*func) (void *data, Evas_Object *o, const char *emission, const char *source), void *data) +EAPI void elm_object_signal_callback_add(Evas_Object *obj, const char *emission, const char *source, void (*func) (void *data, Evas_Object *o, const char *emission, const char *source), void *data) { - elm_widget_signal_listen(obj, emission, source, func, data); + elm_widget_signal_callback_add(obj, emission, source, func, data); } /** @@ -1436,7 +1436,7 @@ * This function removes a callback, previoulsy attached to a signal emitted * by the edje object of the obj. * The parameters emission, source and func must match exactly those passed to - * a previous call to elm_object_signal_listen(). The data pointer that + * a previous call to elm_object_signal_callback_add(). The data pointer that * was passed to this call will be returned. * * @param obj The object @@ -1447,7 +1447,7 @@ * @return The data pointer * @ingroup General */ -EAPI void *elm_object_signal_unlisten(Evas_Object *obj, const char *emission, const char *source, void (*func) (void *data, Evas_Object *o, const char *emission, const char *source)) +EAPI void *elm_object_signal_callback_del(Evas_Object *obj, const char *emission, const char *source, void (*func) (void *data, Evas_Object *o, const char *emission, const char *source)) { - return elm_widget_signal_unlisten(obj, emission, source, func); + return elm_widget_signal_callback_del(obj, emission, source, func); } Modified: trunk/TMP/st/elementary/src/lib/elm_priv.h =================================================================== --- trunk/TMP/st/elementary/src/lib/elm_priv.h 2010-06-28 14:31:21 UTC (rev 49925) +++ trunk/TMP/st/elementary/src/lib/elm_priv.h 2010-06-28 15:32:20 UTC (rev 49926) @@ -139,8 +139,8 @@ EAPI void elm_widget_theme_hook_set(Evas_Object *obj, void (*func) (Evas_Object *obj)); EAPI void elm_widget_changed_hook_set(Evas_Object *obj, void (*func) (Evas_Object *obj)); EAPI void elm_widget_signal_emit_hook_set(Evas_Object *obj, void (*func) (Evas_Object *obj, const char *emission, const char *source)); -EAPI void elm_widget_signal_listen_hook_set(Evas_Object *obj, void (*func) (Evas_Object *obj, const char *emission, const char *source, void (*func_cb) (void *data, Evas_Object *o, const char *emission, const char *source), void *data)); -EAPI void elm_widget_signal_unlisten_hook_set(Evas_Object *obj, void *(*func) (Evas_Object *obj, const char *emission, const char *source, void (*func_cb) (void *data, Evas_Object *o, const char *emission, const char *source))); +EAPI void elm_widget_signal_callback_add_hook_set(Evas_Object *obj, void (*func) (Evas_Object *obj, const char *emission, const char *source, void (*func_cb) (void *data, Evas_Object *o, const char *emission, const char *source), void *data)); +EAPI void elm_widget_signal_callback_del_hook_set(Evas_Object *obj, void *(*func) (Evas_Object *obj, const char *emission, const char *source, void (*func_cb) (void *data, Evas_Object *o, const char *emission, const char *source))); EAPI void elm_widget_theme(Evas_Object *obj); EAPI void elm_widget_on_focus_hook_set(Evas_Object *obj, void (*func) (void *data, Evas_Object *obj), void *data); EAPI void elm_widget_on_change_hook_set(Evas_Object *obj, void (*func) (void *data, Evas_Object *obj), void *data); @@ -152,8 +152,8 @@ EAPI void elm_widget_resize_object_set(Evas_Object *obj, Evas_Object *sobj); EAPI void elm_widget_hover_object_set(Evas_Object *obj, Evas_Object *sobj); EAPI void elm_widget_signal_emit(Evas_Object *obj, const char *emission, const char *source); -EAPI void elm_widget_signal_listen(Evas_Object *obj, const char *emission, const char *source, void (*func) (void *data, Evas_Object *o, const char *emission, const char *source), void *data); -EAPI void *elm_widget_signal_unlisten(Evas_Object *obj, const char *emission, const char *source, void (*func) (void *data, Evas_Object *o, const char *emission, const char *source)); +EAPI void elm_widget_signal_callback_add(Evas_Object *obj, const char *emission, const char *source, void (*func) (void *data, Evas_Object *o, const char *emission, const char *source), void *data); +EAPI void *elm_widget_signal_callback_del(Evas_Object *obj, const char *emission, const char *source, void (*func) (void *data, Evas_Object *o, const char *emission, const char *source)); EAPI void elm_widget_can_focus_set(Evas_Object *obj, int can_focus); EAPI int elm_widget_can_focus_get(const Evas_Object *obj); EAPI int elm_widget_focus_get(const Evas_Object *obj); Modified: trunk/TMP/st/elementary/src/lib/elm_spinner.c =================================================================== --- trunk/TMP/st/elementary/src/lib/elm_spinner.c 2010-06-28 14:31:21 UTC (rev 49925) +++ trunk/TMP/st/elementary/src/lib/elm_spinner.c 2010-06-28 15:32:20 UTC (rev 49926) @@ -90,7 +90,7 @@ } static void -_signal_listen_hook(Evas_Object *obj, const char *emission, const char *source, void (*func_cb) (void *data, Evas_Object *o, const char *emission, const char *source), void *data) +_signal_callback_add_hook(Evas_Object *obj, const char *emission, const char *source, void (*func_cb) (void *data, Evas_Object *o, const char *emission, const char *source), void *data) { Widget_Data *wd = elm_widget_data_get(obj); if (!wd) return; @@ -99,7 +99,7 @@ } static void * -_signal_unlisten_hook(Evas_Object *obj, const char *emission, const char *source, void (*func_cb) (void *data, Evas_Object *o, const char *emission, const char *source)) +_signal_callback_del_hook(Evas_Object *obj, const char *emission, const char *source, void (*func_cb) (void *data, Evas_Object *o, const char *emission, const char *source)) { Widget_Data *wd = elm_widget_data_get(obj); if (!wd) return NULL; @@ -535,8 +535,8 @@ elm_widget_theme_hook_set(obj, _theme_hook); elm_widget_disable_hook_set(obj, _disable_hook); elm_widget_signal_emit_hook_set(obj, _signal_emit_hook); - elm_widget_signal_listen_hook_set(obj, _signal_listen_hook); - elm_widget_signal_unlisten_hook_set(obj, _signal_unlisten_hook); + elm_widget_signal_callback_add_hook_set(obj, _signal_callback_add_hook); + elm_widget_signal_callback_del_hook_set(obj, _signal_callback_del_hook); wd->val = 0.0; wd->val_min = 0.0; Modified: trunk/TMP/st/elementary/src/lib/elm_widget.c =================================================================== --- trunk/TMP/st/elementary/src/lib/elm_widget.c 2010-06-28 14:31:21 UTC (rev 49925) +++ trunk/TMP/st/elementary/src/lib/elm_widget.c 2010-06-28 15:32:20 UTC (rev 49926) @@ -29,11 +29,11 @@ void (*theme_func) (Evas_Object *obj); void (*signal_func) (Evas_Object *obj, const char *emission, const char *source); - void (*listen_func) (Evas_Object *obj, const char *emission, + void (*callback_add_func) (Evas_Object *obj, const char *emission, const char *source, void (*func) (void *data, Evas_Object *o, const char *emission, const char *source), void *data); - void *(*unlisten_func) (Evas_Object *obj, const char *emission, + void *(*callback_del_func) (Evas_Object *obj, const char *emission, const char *source, void (*func) (void *data, Evas_Object *o, const char *emission, const char *source)); @@ -179,17 +179,17 @@ } EAPI void -elm_widget_signal_listen_hook_set(Evas_Object *obj, void (*func) (Evas_Object *obj, const char *emission, const char *source, void (*func_cb) (void *data, Evas_Object *o, const char *emission, const char *source), void *data)) +elm_widget_signal_callback_add_hook_set(Evas_Object *obj, void (*func) (Evas_Object *obj, const char *emission, const char *source, void (*func_cb) (void *data, Evas_Object *o, const char *emission, const char *source), void *data)) { API_ENTRY return; - sd->listen_func = func; + sd->callback_add_func = func; } EAPI void -elm_widget_signal_unlisten_hook_set(Evas_Object *obj, void *(*func) (Evas_Object *obj, const char *emission, const char *source, void (*func_cb) (void *data, Evas_Object *o, const char *emission, const char *source))) +elm_widget_signal_callback_del_hook_set(Evas_Object *obj, void *(*func) (Evas_Object *obj, const char *emission, const char *source, void (*func_cb) (void *data, Evas_Object *o, const char *emission, const char *source))) { API_ENTRY return; - sd->unlisten_func = func; + sd->callback_del_func = func; } EAPI void @@ -632,19 +632,19 @@ } EAPI void -elm_widget_signal_listen(Evas_Object *obj, const char *emission, const char *source, void (*func) (void *data, Evas_Object *o, const char *emission, const char *source), void *data) +elm_widget_signal_callback_add(Evas_Object *obj, const char *emission, const char *source, void (*func) (void *data, Evas_Object *o, const char *emission, const char *source), void *data) { API_ENTRY return; - if (!sd->listen_func) return; - sd->listen_func(obj, emission, source, func, data); + if (!sd->callback_add_func) return; + sd->callback_add_func(obj, emission, source, func, data); } EAPI void * -elm_widget_signal_unlisten(Evas_Object *obj, const char *emission, const char *source, void (*func) (void *data, Evas_Object *o, const char *emission, const char *source)) +elm_widget_signal_callback_del(Evas_Object *obj, const char *emission, const char *source, void (*func) (void *data, Evas_Object *o, const char *emission, const char *source)) { API_ENTRY return NULL; - if (!sd->unlisten_func) return NULL; - return sd->unlisten_func(obj, emission, source, func); + if (!sd->callback_del_func) return NULL; + return sd->callback_del_func(obj, emission, source, func); } EAPI void |
From: Enlightenment S. <no-...@en...> - 2010-07-06 21:14:45
|
Log: Add possibility to get all the items in Gengrid By Rafael Fonseca <rfo...@pr...> Author: bdilly Date: 2010-07-06 14:14:38 -0700 (Tue, 06 Jul 2010) New Revision: 50087 Modified: trunk/TMP/st/elementary/src/lib/Elementary.h.in trunk/TMP/st/elementary/src/lib/elm_gengrid.c Modified: trunk/TMP/st/elementary/src/lib/Elementary.h.in =================================================================== --- trunk/TMP/st/elementary/src/lib/Elementary.h.in 2010-07-06 20:57:49 UTC (rev 50086) +++ trunk/TMP/st/elementary/src/lib/Elementary.h.in 2010-07-06 21:14:38 UTC (rev 50087) @@ -618,6 +618,7 @@ EAPI Eina_Bool elm_gengrid_item_selected_get(const Elm_Gengrid_Item *item); EAPI const Evas_Object *elm_gengrid_item_object_get(Elm_Gengrid_Item *item); EAPI const Eina_List *elm_gengrid_selected_items_get(const Evas_Object *obj); + EAPI const Eina_List *elm_gengrid_items_get(const Evas_Object *obj); EAPI Elm_Gengrid_Item *elm_gengrid_item_append(Evas_Object *obj, const Elm_Gengrid_Item_Class *gcc, const void *data, Evas_Smart_Cb func, const void *func_data); /* smart callbacks called: * Modified: trunk/TMP/st/elementary/src/lib/elm_gengrid.c =================================================================== --- trunk/TMP/st/elementary/src/lib/elm_gengrid.c 2010-07-06 20:57:49 UTC (rev 50086) +++ trunk/TMP/st/elementary/src/lib/elm_gengrid.c 2010-07-06 21:14:38 UTC (rev 50087) @@ -1578,3 +1578,23 @@ if (!wd) return; elm_smart_scroller_bounce_allow_get(wd->scr, h_bounce, v_bounce); } + +/** + * Get all items in the Gengrid. + * + * This returns a list of the Gengrid items. The list contains + * Elm_Gengrid_Item pointers. + * + * @param obj The Gengrid object. + * @return The list of items, or NULL if none. + * + * @ingroup Gengrid + */ +EAPI const Eina_List * +elm_gengrid_items_get(const Evas_Object *obj) +{ + ELM_CHECK_WIDTYPE(obj, widtype) NULL; + Widget_Data *wd = elm_widget_data_get(obj); + if (!wd) return NULL; + return wd->items; +} |
From: Enlightenment S. <no-...@en...> - 2010-07-13 21:33:20
|
Log: Use widget style instead of default on elm index items Author: bdilly Date: 2010-07-13 14:33:12 -0700 (Tue, 13 Jul 2010) New Revision: 50236 Modified: trunk/TMP/st/elementary/src/lib/elm_index.c Modified: trunk/TMP/st/elementary/src/lib/elm_index.c =================================================================== --- trunk/TMP/st/elementary/src/lib/elm_index.c 2010-07-13 21:22:21 UTC (rev 50235) +++ trunk/TMP/st/elementary/src/lib/elm_index.c 2010-07-13 21:33:12 UTC (rev 50236) @@ -196,9 +196,9 @@ o = edje_object_add(evas_object_evas_get(obj)); it->base = o; if (i & 0x1) - _elm_theme_object_set(obj, o, "index", "item_odd/vertical", "default"); + _elm_theme_object_set(obj, o, "index", "item_odd/vertical", elm_widget_style_get(obj)); else - _elm_theme_object_set(obj, o, "index", "item/vertical", "default"); + _elm_theme_object_set(obj, o, "index", "item/vertical", elm_widget_style_get(obj)); edje_object_part_text_set(o, "elm.text", it->letter); edje_object_size_min_restricted_calc(o, &mw, &mh, 0, 0); evas_object_size_hint_min_set(o, mw, mh); |
From: Enlightenment S. <no-...@en...> - 2010-07-20 21:38:25
|
Log: Add setters and getters to interval for elm spinner and clock Author: bdilly Date: 2010-07-20 14:38:17 -0700 (Tue, 20 Jul 2010) New Revision: 50392 Modified: trunk/TMP/st/elementary/src/lib/Elementary.h.in trunk/TMP/st/elementary/src/lib/elm_clock.c trunk/TMP/st/elementary/src/lib/elm_spinner.c Modified: trunk/TMP/st/elementary/src/lib/Elementary.h.in =================================================================== --- trunk/TMP/st/elementary/src/lib/Elementary.h.in 2010-07-20 20:04:17 UTC (rev 50391) +++ trunk/TMP/st/elementary/src/lib/Elementary.h.in 2010-07-20 21:38:17 UTC (rev 50392) @@ -653,6 +653,8 @@ EAPI Eina_Bool elm_clock_show_am_pm_get(const Evas_Object *obj); EAPI void elm_clock_show_seconds_set(Evas_Object *obj, Eina_Bool seconds); EAPI Eina_Bool elm_clock_show_seconds_get(const Evas_Object *obj); + EAPI void elm_clock_interval_set(Evas_Object *obj, double interval); + EAPI double elm_clock_interval_get(const Evas_Object *obj); /* smart callbacks called: * "changed" - the user changed the time */ @@ -1304,6 +1306,8 @@ EAPI void elm_spinner_editable_set(Evas_Object *obj, Eina_Bool editable); EAPI Eina_Bool elm_spinner_editable_get(const Evas_Object *obj); EAPI void elm_spinner_special_value_add(Evas_Object *obj, double value, const char *label); + EAPI void elm_spinner_interval_set(Evas_Object *obj, double interval); + EAPI double elm_spinner_interval_get(const Evas_Object *obj); /* smart callbacks called: * "changed" - when the spinner value changes * "delay,changed" - when the spinner value changed, but a small time after a change (use this if you only want to respond to a change once the spinner is held still for a short while). Modified: trunk/TMP/st/elementary/src/lib/elm_clock.c =================================================================== --- trunk/TMP/st/elementary/src/lib/elm_clock.c 2010-07-20 20:04:17 UTC (rev 50391) +++ trunk/TMP/st/elementary/src/lib/elm_clock.c 2010-07-20 21:38:17 UTC (rev 50392) @@ -14,7 +14,7 @@ struct _Widget_Data { Evas_Object *clk; - double interval; + double interval, first_interval; Eina_Bool seconds : 1; Eina_Bool am_pm : 1; Eina_Bool edit : 1; @@ -265,7 +265,7 @@ { Widget_Data *wd = elm_widget_data_get(data); if (!wd) return; - wd->interval = 0.85; + wd->interval = wd->first_interval; wd->sel_obj = obj; if (wd->spin) ecore_timer_del(wd->spin); wd->spin = ecore_timer_add(wd->interval, _signal_clock_val_up, data); @@ -277,7 +277,7 @@ { Widget_Data *wd = elm_widget_data_get(data); if (!wd) return; - wd->interval = 0.85; + wd->interval = wd->first_interval; wd->sel_obj = obj; if (wd->spin) ecore_timer_del(wd->spin); wd->spin = ecore_timer_add(wd->interval, _signal_clock_val_down, data); @@ -531,6 +531,7 @@ wd->cur.am_pm = EINA_TRUE; wd->cur.edit = EINA_TRUE; wd->cur.digedit = ELM_CLOCK_NONE; + wd->first_interval = 0.85; _time_update(obj); _ticker(obj); @@ -763,3 +764,45 @@ if (!wd) return EINA_FALSE; return wd->seconds; } + +/** + * Set the interval for the clock + * + * @param obj The clock object + * @param interval The interval value in seconds + * + * The interval value is decreased while the user increments or decrements + * the clock value. The next interval value is the previous interval / 1.05, + * so it speed up a bit. Default value is 0.85 seconds. + * + * @ingroup Clock + */ +EAPI void +elm_clock_interval_set(Evas_Object *obj, double interval) +{ + ELM_CHECK_WIDTYPE(obj, widtype); + Widget_Data *wd = elm_widget_data_get(obj); + if (!wd) return; + wd->first_interval = interval; +} + +/** + * Get the interval of the clock + * + * @param obj The clock object + * @return The value of the first interval in seconds + * + * The interval value is decreased while the user increments or decrements + * the clock value. The next interval value is the previous interval / 1.05, + * so it speed up a bit. Default value is 0.85 seconds. + * + * @ingroup Clock + */ +EAPI double +elm_clock_interval_get(const Evas_Object *obj) +{ + ELM_CHECK_WIDTYPE(obj, widtype) 0.0; + Widget_Data *wd = elm_widget_data_get(obj); + if (!wd) return 0.0; + return wd->first_interval; +} Modified: trunk/TMP/st/elementary/src/lib/elm_spinner.c =================================================================== --- trunk/TMP/st/elementary/src/lib/elm_spinner.c 2010-07-20 20:04:17 UTC (rev 50391) +++ trunk/TMP/st/elementary/src/lib/elm_spinner.c 2010-07-20 21:38:17 UTC (rev 50392) @@ -30,7 +30,7 @@ Evas_Object *spinner, *ent; const char *label; double val, val_min, val_max, orig_val, step; - double drag_start_pos, spin_speed, interval; + double drag_start_pos, spin_speed, interval, first_interval; Ecore_Timer *delay, *spin; Eina_List *special_values; Eina_Bool wrap : 1; @@ -391,7 +391,7 @@ { Widget_Data *wd = elm_widget_data_get(obj); if (!wd) return; - wd->interval = 0.85; + wd->interval = wd->first_interval; wd->spin_speed = wd->step; if (wd->spin) ecore_timer_del(wd->spin); wd->spin = ecore_timer_add(wd->interval, _spin_value, obj); @@ -403,7 +403,7 @@ { Widget_Data *wd = elm_widget_data_get(obj); if (!wd) return; - wd->interval = 0.85; + wd->interval = wd->first_interval; wd->spin_speed = 0; if (wd->spin) ecore_timer_del(wd->spin); wd->spin = NULL; @@ -414,7 +414,7 @@ { Widget_Data *wd = elm_widget_data_get(obj); if (!wd) return; - wd->interval = 0.85; + wd->interval = wd->first_interval; wd->spin_speed = -wd->step; if (wd->spin) ecore_timer_del(wd->spin); wd->spin = ecore_timer_add(wd->interval, _spin_value, obj); @@ -426,7 +426,7 @@ { Widget_Data *wd = elm_widget_data_get(obj); if (!wd) return; - wd->interval = 0.85; + wd->interval = wd->first_interval; wd->spin_speed = 0; if (wd->spin) ecore_timer_del(wd->spin); wd->spin = NULL; @@ -543,6 +543,7 @@ wd->val_max = 100.0; wd->wrap = 0; wd->step = 1.0; + wd->first_interval = 0.85; wd->entry_visible = 0; wd->editable = EINA_TRUE; @@ -842,3 +843,45 @@ if (!wd) return EINA_FALSE; return wd->editable; } + +/** + * Set the interval for the spinner + * + * @param obj The spinner object + * @param interval The interval value in seconds + * + * The interval value is decreased while the user increments or decrements + * the spinner value. The next interval value is the previous interval / 1.05, + * so it speed up a bit. Default value is 0.85 seconds. + * + * @ingroup Spinner + */ +EAPI void +elm_spinner_interval_set(Evas_Object *obj, double interval) +{ + ELM_CHECK_WIDTYPE(obj, widtype); + Widget_Data *wd = elm_widget_data_get(obj); + if (!wd) return; + wd->first_interval = interval; +} + +/** + * Get the interval of the spinner + * + * @param obj The spinner object + * @return The value of the first interval in seconds + * + * The interval value is decreased while the user increments or decrements + * the spinner value. The next interval value is the previous interval / 1.05, + * so it speed up a bit. Default value is 0.85 seconds. + * + * @ingroup Spinner + */ +EAPI double +elm_spinner_interval_get(const Evas_Object *obj) +{ + ELM_CHECK_WIDTYPE(obj, widtype) 0.0; + Widget_Data *wd = elm_widget_data_get(obj); + if (!wd) return 0.0; + return wd->first_interval; +} |
From: Enlightenment S. <no-...@en...> - 2010-08-23 18:50:58
|
Log: Oops, fix leap years detection algorithm on elm_calendar Author: bdilly Date: 2010-08-23 11:50:51 -0700 (Mon, 23 Aug 2010) New Revision: 51586 Modified: trunk/TMP/st/elementary/src/lib/elm_calendar.c Modified: trunk/TMP/st/elementary/src/lib/elm_calendar.c =================================================================== --- trunk/TMP/st/elementary/src/lib/elm_calendar.c 2010-08-23 18:46:43 UTC (rev 51585) +++ trunk/TMP/st/elementary/src/lib/elm_calendar.c 2010-08-23 18:50:51 UTC (rev 51586) @@ -98,7 +98,8 @@ month = time->tm_mon; year = time->tm_year + 1900; - return _days_in_month[(!(year % 4) && (!(year % 4) || (year % 100)))][month]; + return _days_in_month[(!(year % 4) && (!(year % 400) || (year % 100)))] + [month]; } static inline void |
From: Enlightenment S. <no-...@en...> - 2010-09-09 18:53:42
|
Log: Add elm object signal emit and callback add / del hooks to entry, list and index Author: bdilly Date: 2010-09-09 11:53:36 -0700 (Thu, 09 Sep 2010) New Revision: 52087 Modified: trunk/TMP/st/elementary/src/lib/elc_scrolled_entry.c trunk/TMP/st/elementary/src/lib/elm_entry.c trunk/TMP/st/elementary/src/lib/elm_index.c trunk/TMP/st/elementary/src/lib/elm_list.c trunk/TMP/st/elementary/src/lib/elm_scroller.c Modified: trunk/TMP/st/elementary/src/lib/elc_scrolled_entry.c =================================================================== --- trunk/TMP/st/elementary/src/lib/elc_scrolled_entry.c 2010-09-09 16:54:08 UTC (rev 52086) +++ trunk/TMP/st/elementary/src/lib/elc_scrolled_entry.c 2010-09-09 18:53:36 UTC (rev 52087) @@ -135,7 +135,26 @@ elm_object_signal_emit(wd->scroller, emission, source); } +static void +_signal_callback_add_hook(Evas_Object *obj, const char *emission, const char *source, void (*func_cb) (void *data, Evas_Object *o, const char *emission, const char *source), void *data) +{ + Widget_Data *wd = elm_widget_data_get(obj); + if (!wd) return; + elm_object_signal_callback_add(wd->entry, emission, source, func_cb, data); + elm_object_signal_callback_add(wd->scroller, emission, source, func_cb, + data); +} +static void * +_signal_callback_del_hook(Evas_Object *obj, const char *emission, const char *source, void (*func_cb) (void *data, Evas_Object *o, const char *emission, const char *source)) +{ + Widget_Data *wd = elm_widget_data_get(obj); + if (!wd) return NULL; + elm_object_signal_callback_del(wd->entry, emission, source, func_cb); + return elm_object_signal_callback_del(wd->scroller, emission, source, + func_cb); +} + static void _entry_changed(void *data, Evas_Object *obj __UNUSED__, void *event_info) { @@ -262,6 +281,8 @@ elm_widget_can_focus_set(obj, 1); elm_widget_theme_hook_set(obj, _theme_hook); elm_widget_signal_emit_hook_set(obj, _signal_emit_hook); + elm_widget_signal_callback_add_hook_set(obj, _signal_callback_add_hook); + elm_widget_signal_callback_del_hook_set(obj, _signal_callback_del_hook); wd->scroller = elm_scroller_add(parent); elm_widget_resize_object_set(obj, wd->scroller); Modified: trunk/TMP/st/elementary/src/lib/elm_entry.c =================================================================== --- trunk/TMP/st/elementary/src/lib/elm_entry.c 2010-09-09 16:54:08 UTC (rev 52086) +++ trunk/TMP/st/elementary/src/lib/elm_entry.c 2010-09-09 18:53:36 UTC (rev 52087) @@ -370,6 +370,22 @@ } static void +_signal_callback_add_hook(Evas_Object *obj, const char *emission, const char *source, void (*func_cb) (void *data, Evas_Object *o, const char *emission, const char *source), void *data) +{ + Widget_Data *wd = elm_widget_data_get(obj); + if (!wd) return; + edje_object_signal_callback_add(wd->ent, emission, source, func_cb, data); +} + +static void * +_signal_callback_del_hook(Evas_Object *obj, const char *emission, const char *source, void (*func_cb) (void *data, Evas_Object *o, const char *emission, const char *source)) +{ + Widget_Data *wd = elm_widget_data_get(obj); + if (!wd) return NULL; + return edje_object_signal_callback_del(wd->ent, emission, source, func_cb); +} + +static void _hoversel_position(Evas_Object *obj) { Widget_Data *wd = elm_widget_data_get(obj); @@ -1330,6 +1346,8 @@ elm_widget_theme_hook_set(obj, _theme_hook); elm_widget_disable_hook_set(obj, _disable_hook); elm_widget_signal_emit_hook_set(obj, _signal_emit_hook); + elm_widget_signal_callback_add_hook_set(obj, _signal_callback_add_hook); + elm_widget_signal_callback_del_hook_set(obj, _signal_callback_del_hook); elm_widget_can_focus_set(obj, 1); wd->linewrap = EINA_TRUE; Modified: trunk/TMP/st/elementary/src/lib/elm_index.c =================================================================== --- trunk/TMP/st/elementary/src/lib/elm_index.c 2010-09-09 16:54:08 UTC (rev 52086) +++ trunk/TMP/st/elementary/src/lib/elm_index.c 2010-09-09 18:53:36 UTC (rev 52087) @@ -67,6 +67,30 @@ } static void +_signal_emit_hook(Evas_Object *obj, const char *emission, const char *source) +{ + Widget_Data *wd = elm_widget_data_get(obj); + if (!wd) return; + edje_object_signal_emit(wd->base, emission, source); +} + +static void +_signal_callback_add_hook(Evas_Object *obj, const char *emission, const char *source, void (*func_cb) (void *data, Evas_Object *o, const char *emission, const char *source), void *data) +{ + Widget_Data *wd = elm_widget_data_get(obj); + if (!wd) return; + edje_object_signal_callback_add(wd->base, emission, source, func_cb, data); +} + +static void * +_signal_callback_del_hook(Evas_Object *obj, const char *emission, const char *source, void (*func_cb) (void *data, Evas_Object *o, const char *emission, const char *source)) +{ + Widget_Data *wd = elm_widget_data_get(obj); + if (!wd) return NULL; + return edje_object_signal_callback_del(wd->base, emission, source, func_cb); +} + +static void _theme_hook(Evas_Object *obj) { Widget_Data *wd = elm_widget_data_get(obj); @@ -489,6 +513,9 @@ elm_widget_data_set(obj, wd); elm_widget_del_hook_set(obj, _del_hook); elm_widget_theme_hook_set(obj, _theme_hook); + elm_widget_signal_emit_hook_set(obj, _signal_emit_hook); + elm_widget_signal_callback_add_hook_set(obj, _signal_callback_add_hook); + elm_widget_signal_callback_del_hook_set(obj, _signal_callback_del_hook); wd->horizontal = EINA_FALSE; Modified: trunk/TMP/st/elementary/src/lib/elm_list.c =================================================================== --- trunk/TMP/st/elementary/src/lib/elm_list.c 2010-09-09 16:54:08 UTC (rev 52086) +++ trunk/TMP/st/elementary/src/lib/elm_list.c 2010-09-09 18:53:36 UTC (rev 52087) @@ -199,6 +199,30 @@ } static void +_signal_emit_hook(Evas_Object *obj, const char *emission, const char *source) +{ + Widget_Data *wd = elm_widget_data_get(obj); + if (!wd) return; + elm_object_signal_emit(wd->scr, emission, source); +} + +static void +_signal_callback_add_hook(Evas_Object *obj, const char *emission, const char *source, void (*func_cb) (void *data, Evas_Object *o, const char *emission, const char *source), void *data) +{ + Widget_Data *wd = elm_widget_data_get(obj); + if (!wd) return; + elm_object_signal_callback_add(wd->scr, emission, source, func_cb, data); +} + +static void * +_signal_callback_del_hook(Evas_Object *obj, const char *emission, const char *source, void (*func_cb) (void *data, Evas_Object *o, const char *emission, const char *source)) +{ + Widget_Data *wd = elm_widget_data_get(obj); + if (!wd) return NULL; + return elm_object_signal_callback_del(wd->scr, emission, source, func_cb); +} + +static void _theme_hook(Evas_Object *obj) { Widget_Data *wd = elm_widget_data_get(obj); @@ -729,6 +753,9 @@ elm_widget_del_hook_set(obj, _del_hook); elm_widget_theme_hook_set(obj, _theme_hook); elm_widget_can_focus_set(obj, 1); + elm_widget_signal_emit_hook_set(obj, _signal_emit_hook); + elm_widget_signal_callback_add_hook_set(obj, _signal_callback_add_hook); + elm_widget_signal_callback_del_hook_set(obj, _signal_callback_del_hook); wd->scr = elm_scroller_add(parent); elm_scroller_custom_widget_base_theme_set(wd->scr, "list", "base"); Modified: trunk/TMP/st/elementary/src/lib/elm_scroller.c =================================================================== --- trunk/TMP/st/elementary/src/lib/elm_scroller.c 2010-09-09 16:54:08 UTC (rev 52086) +++ trunk/TMP/st/elementary/src/lib/elm_scroller.c 2010-09-09 18:53:36 UTC (rev 52087) @@ -105,6 +105,25 @@ } static void +_signal_callback_add_hook(Evas_Object *obj, const char *emission, const char *source, void (*func_cb) (void *data, Evas_Object *o, const char *emission, const char *source), void *data) +{ + Widget_Data *wd = elm_widget_data_get(obj); + if (!wd) return; + edje_object_signal_callback_add(elm_smart_scroller_edje_object_get(wd->scr), + emission, source, func_cb, data); +} + +static void * +_signal_callback_del_hook(Evas_Object *obj, const char *emission, const char *source, void (*func_cb) (void *data, Evas_Object *o, const char *emission, const char *source)) +{ + Widget_Data *wd = elm_widget_data_get(obj); + if (!wd) return NULL; + return edje_object_signal_callback_del( + elm_smart_scroller_edje_object_get(wd->scr), emission, source, + func_cb); +} + +static void _show_region_hook(void *data, Evas_Object *obj) { @@ -309,6 +328,8 @@ elm_widget_del_hook_set(obj, _del_hook); elm_widget_theme_hook_set(obj, _theme_hook); elm_widget_signal_emit_hook_set(obj, _signal_emit_hook); + elm_widget_signal_callback_add_hook_set(obj, _signal_callback_add_hook); + elm_widget_signal_callback_del_hook_set(obj, _signal_callback_del_hook); wd->widget_name = eina_stringshare_add("scroller"); wd->widget_base = eina_stringshare_add("base"); |
From: Enlightenment S. <no-...@en...> - 2010-09-14 21:39:20
|
Log: Improve elm clock to display time not equal to system time Now the ticker uses a timediff that can be set by elm_clock_time_set or after using clock edit mode. Author: bdilly Date: 2010-09-14 14:39:14 -0700 (Tue, 14 Sep 2010) New Revision: 52268 Modified: trunk/TMP/st/elementary/src/lib/elm_clock.c Modified: trunk/TMP/st/elementary/src/lib/elm_clock.c =================================================================== --- trunk/TMP/st/elementary/src/lib/elm_clock.c 2010-09-14 21:39:05 UTC (rev 52267) +++ trunk/TMP/st/elementary/src/lib/elm_clock.c 2010-09-14 21:39:14 UTC (rev 52268) @@ -19,7 +19,7 @@ Eina_Bool am_pm : 1; Eina_Bool edit : 1; Elm_Clock_Digedit digedit; - int hrs, min, sec; + int hrs, min, sec, timediff; Evas_Object *digit[6]; Evas_Object *ampm; Evas_Object *sel_obj; @@ -126,6 +126,20 @@ return edje_object_signal_callback_del(wd->clk, emission, source, func_cb); } +static void +_timediff_set(Widget_Data *wd) +{ + struct timeval timev; + struct tm *tm; + time_t tt; + gettimeofday(&timev, NULL); + tt = (time_t)(timev.tv_sec); + tzset(); + tm = localtime(&tt); + wd->timediff = (((wd->hrs - tm->tm_hour) * 60 + + wd->min - tm->tm_min) * 60) + wd->sec - tm->tm_sec; +} + static Eina_Bool _ticker(void *data) { @@ -140,7 +154,7 @@ wd->ticker = ecore_timer_add(t, _ticker, data); if (!wd->edit) { - tt = (time_t)(timev.tv_sec); + tt = (time_t)(timev.tv_sec) + wd->timediff; tzset(); tm = localtime(&tt); if (tm) @@ -532,6 +546,7 @@ wd->cur.edit = EINA_TRUE; wd->cur.digedit = ELM_CLOCK_NONE; wd->first_interval = 0.85; + wd->timediff = 0; _time_update(obj); _ticker(obj); @@ -560,6 +575,7 @@ wd->hrs = hrs; wd->min = min; wd->sec = sec; + _timediff_set(wd); _time_update(obj); } @@ -610,6 +626,8 @@ Widget_Data *wd = elm_widget_data_get(obj); if (!wd) return; wd->edit = edit; + if (!edit) + _timediff_set(wd); if (edit && (wd->digedit == ELM_CLOCK_NONE)) elm_clock_digit_edit_set(obj, ELM_CLOCK_ALL); else |
From: Enlightenment S. <no-...@en...> - 2010-09-17 18:24:17
|
Log: Add support on Elm to customized cursors Widgets can have customized cursors setting it with elm_object_cursor_set. Widget's item can use elm_X_item_cursor_set to set a different cursor for each item. It will work only if HAVE_ELEMENTARY_X for now, but support for themeable cursors is planned. Author: bdilly Date: 2010-09-17 11:24:10 -0700 (Fri, 17 Sep 2010) New Revision: 52382 Added: trunk/TMP/st/elementary/src/lib/Elementary_Cursor.h trunk/TMP/st/elementary/src/lib/els_cursor.c Modified: trunk/TMP/st/elementary/src/lib/Elementary.h.in trunk/TMP/st/elementary/src/lib/Makefile.am trunk/TMP/st/elementary/src/lib/elm_gengrid.c trunk/TMP/st/elementary/src/lib/elm_genlist.c trunk/TMP/st/elementary/src/lib/elm_list.c trunk/TMP/st/elementary/src/lib/elm_toolbar.c trunk/TMP/st/elementary/src/lib/elm_widget.c trunk/TMP/st/elementary/src/lib/elm_widget.h Modified: trunk/TMP/st/elementary/src/lib/Elementary.h.in =================================================================== --- trunk/TMP/st/elementary/src/lib/Elementary.h.in 2010-09-17 17:57:44 UTC (rev 52381) +++ trunk/TMP/st/elementary/src/lib/Elementary.h.in 2010-09-17 18:24:10 UTC (rev 52382) @@ -655,6 +655,8 @@ EAPI void elm_gengrid_item_tooltip_unset(Elm_Gengrid_Item *item); EAPI void elm_gengrid_item_tooltip_style_set(Elm_Gengrid_Item *item, const char *style); EAPI const char *elm_gengrid_item_tooltip_style_get(const Elm_Gengrid_Item *item); + EAPI void elm_gengrid_item_cursor_set(Elm_Gengrid_Item *item, const char *cursor); + EAPI void elm_gengrid_item_cursor_unset(Elm_Gengrid_Item *item); EAPI void elm_gengrid_clear(Evas_Object *obj); EAPI void *elm_gengrid_item_data_get(const Elm_Gengrid_Item *item); @@ -996,6 +998,8 @@ EAPI void elm_toolbar_item_tooltip_text_set(Elm_Toolbar_Item *item, const char *text); EAPI void elm_toolbar_item_tooltip_content_cb_set(Elm_Toolbar_Item *item, Elm_Tooltip_Item_Content_Cb func, const void *data, Evas_Smart_Cb del_cb); EAPI void elm_toolbar_item_tooltip_unset(Elm_Toolbar_Item *item); + EAPI void elm_toolbar_item_cursor_set(Elm_Toolbar_Item *item, const char *cursor); + EAPI void elm_toolbar_item_cursor_unset(Elm_Toolbar_Item *item); EAPI void elm_toolbar_item_tooltip_style_set(Elm_Toolbar_Item *item, const char *style); EAPI const char *elm_toolbar_item_tooltip_style_get(const Elm_Toolbar_Item *item); @@ -1037,6 +1041,8 @@ EAPI void elm_object_tooltip_style_set(Evas_Object *obj, const char *style); EAPI const char *elm_object_tooltip_style_get(const Evas_Object *obj); + EAPI void elm_object_cursor_set(Evas_Object *obj, const char *cursor); + EAPI void elm_object_cursor_unset(Evas_Object *obj); typedef struct _Elm_Menu_Item Elm_Menu_Item; /**< Item of Elm_Menu. Sub-type of Elm_Widget_Item */ EAPI Evas_Object *elm_menu_add(Evas_Object *parent); @@ -1111,6 +1117,8 @@ EAPI void elm_list_item_tooltip_unset(Elm_List_Item *item); EAPI void elm_list_item_tooltip_style_set(Elm_List_Item *item, const char *style); EAPI const char *elm_list_item_tooltip_style_get(const Elm_List_Item *item); + EAPI void elm_list_item_cursor_set(Elm_List_Item *item, const char *cursor); + EAPI void elm_list_item_cursor_unset(Elm_List_Item *item); EAPI void elm_list_bounce_set(Evas_Object *obj, Eina_Bool h_bounce, Eina_Bool v_bounce); EAPI void elm_list_scroller_policy_set(Evas_Object *obj, Elm_Scroller_Policy policy_h, Elm_Scroller_Policy policy_v); @@ -1253,6 +1261,8 @@ EAPI void elm_genlist_item_tooltip_unset(Elm_Genlist_Item *item); EAPI void elm_genlist_item_tooltip_style_set(Elm_Genlist_Item *item, const char *style); EAPI const char *elm_genlist_item_tooltip_style_get(const Elm_Genlist_Item *item); + EAPI void elm_genlist_item_cursor_set(Elm_Genlist_Item *item, const char *cursor); + EAPI void elm_genlist_item_cursor_unset(Elm_Genlist_Item *item); EAPI Evas_Object *elm_check_add(Evas_Object *parent); Modified: trunk/TMP/st/elementary/src/lib/Makefile.am =================================================================== --- trunk/TMP/st/elementary/src/lib/Makefile.am 2010-09-17 17:57:44 UTC (rev 52381) +++ trunk/TMP/st/elementary/src/lib/Makefile.am 2010-09-17 18:24:10 UTC (rev 52382) @@ -26,7 +26,7 @@ lib_LTLIBRARIES = libelementary.la -includes_HEADERS = Elementary.h elm_widget.h +includes_HEADERS = Elementary.h Elementary_Cursor.h elm_widget.h includesdir = $(includedir)/elementary-@VMAJ@ libelementary_la_SOURCES = \ @@ -91,6 +91,7 @@ elc_scrolled_entry.c \ \ els_tooltip.c \ +els_cursor.c \ els_pan.c \ els_pan.h \ els_scroller.c \ Modified: trunk/TMP/st/elementary/src/lib/elm_gengrid.c =================================================================== --- trunk/TMP/st/elementary/src/lib/elm_gengrid.c 2010-09-17 17:57:44 UTC (rev 52381) +++ trunk/TMP/st/elementary/src/lib/elm_gengrid.c 2010-09-17 18:24:10 UTC (rev 52382) @@ -1577,6 +1577,35 @@ } /** + * Set the cursor to be shown when mouse is over the gengrid item + * + * @param item Target item + * @param cursor the cursor name to be used. + * + * @see elm_object_cursor_set() + * @ingroup Gengrid + */ +EAPI void +elm_gengrid_item_cursor_set(Elm_Gengrid_Item *item, const char *cursor) +{ + elm_widget_item_cursor_set(item, cursor); +} + +/** + * Unset the cursor to be shown when mouse is over the gengrid item + * + * @param item Target item + * + * @see elm_object_cursor_unset() + * @ingroup Gengrid + */ +EAPI void +elm_gengrid_item_cursor_unset(Elm_Gengrid_Item *item) +{ + elm_widget_item_cursor_unset(item); +} + +/** * Set the always select mode. * * Cells will only call their selection func and callback when first becoming Modified: trunk/TMP/st/elementary/src/lib/elm_genlist.c =================================================================== --- trunk/TMP/st/elementary/src/lib/elm_genlist.c 2010-09-17 17:57:44 UTC (rev 52381) +++ trunk/TMP/st/elementary/src/lib/elm_genlist.c 2010-09-17 18:24:10 UTC (rev 52382) @@ -2994,6 +2994,35 @@ } /** + * Set the cursor to be shown when mouse is over the genlist item + * + * @param item Target item + * @param cursor the cursor name to be used. + * + * @see elm_object_cursor_set() + * @ingroup Genlist + */ +EAPI void +elm_genlist_item_cursor_set(Elm_Genlist_Item *item, const char *cursor) +{ + elm_widget_item_cursor_set(item, cursor); +} + +/** + * Unset the cursor to be shown when mouse is over the genlist item + * + * @param item Target item + * + * @see elm_object_cursor_unset() + * @ingroup Genlist + */ +EAPI void +elm_genlist_item_cursor_unset(Elm_Genlist_Item *item) +{ + elm_widget_item_cursor_unset(item); +} + +/** * This sets the horizontal stretching mode * * This sets the mode used for sizing items horizontally. Valid modes are Modified: trunk/TMP/st/elementary/src/lib/elm_list.c =================================================================== --- trunk/TMP/st/elementary/src/lib/elm_list.c 2010-09-17 17:57:44 UTC (rev 52381) +++ trunk/TMP/st/elementary/src/lib/elm_list.c 2010-09-17 18:24:10 UTC (rev 52382) @@ -1608,6 +1608,35 @@ } /** + * Set the cursor to be shown when mouse is over the list item + * + * @param item Target item + * @param cursor the cursor name to be used. + * + * @see elm_object_cursor_set() + * @ingroup List + */ +EAPI void +elm_list_item_cursor_set(Elm_List_Item *item, const char *cursor) +{ + elm_widget_item_cursor_set(item, cursor); +} + +/** + * Unset the cursor to be shown when mouse is over the list item + * + * @param item Target item + * + * @see elm_object_cursor_unset() + * @ingroup List + */ +EAPI void +elm_list_item_cursor_unset(Elm_List_Item *item) +{ + elm_widget_item_cursor_unset(item); +} + +/** * Set bounce mode * * This will enable or disable the scroller bounce mode for the list. See Modified: trunk/TMP/st/elementary/src/lib/elm_toolbar.c =================================================================== --- trunk/TMP/st/elementary/src/lib/elm_toolbar.c 2010-09-17 17:57:44 UTC (rev 52381) +++ trunk/TMP/st/elementary/src/lib/elm_toolbar.c 2010-09-17 18:24:10 UTC (rev 52382) @@ -950,6 +950,35 @@ } /** + * Set the cursor to be shown when mouse is over the toolbar item + * + * @param item Target item + * @param cursor the cursor name to be used. + * + * @see elm_object_cursor_set() + * @ingroup Toolbar + */ +EAPI void +elm_toolbar_item_cursor_set(Elm_Toolbar_Item *item, const char *cursor) +{ + elm_widget_item_cursor_set(item, cursor); +} + +/** + * Unset the cursor to be shown when mouse is over the toolbar item + * + * @param item Target item + * + * @see elm_object_cursor_unset() + * @ingroup Toolbar + */ +EAPI void +elm_toolbar_item_cursor_unset(Elm_Toolbar_Item *item) +{ + elm_widget_item_cursor_unset(item); +} + +/** * Get whether the toolbar item opens a menu. * * @param item The toolbar item Modified: trunk/TMP/st/elementary/src/lib/elm_widget.c =================================================================== --- trunk/TMP/st/elementary/src/lib/elm_widget.c 2010-09-17 17:57:44 UTC (rev 52381) +++ trunk/TMP/st/elementary/src/lib/elm_widget.c 2010-09-17 18:24:10 UTC (rev 52382) @@ -1523,6 +1523,20 @@ return elm_object_tooltip_style_get(item->view); } +EAPI void +_elm_widget_item_cursor_set(Elm_Widget_Item *item, const char *cursor) +{ + ELM_WIDGET_ITEM_CHECK_OR_RETURN(item); + elm_object_cursor_set(item->view, cursor); +} + +EAPI void +_elm_widget_item_cursor_unset(Elm_Widget_Item *item) +{ + ELM_WIDGET_ITEM_CHECK_OR_RETURN(item); + elm_object_cursor_unset(item->view); +} + // smart object funcs static void _smart_reconfigure(Smart_Data *sd) Modified: trunk/TMP/st/elementary/src/lib/elm_widget.h =================================================================== --- trunk/TMP/st/elementary/src/lib/elm_widget.h 2010-09-17 17:57:44 UTC (rev 52381) +++ trunk/TMP/st/elementary/src/lib/elm_widget.h 2010-09-17 18:24:10 UTC (rev 52382) @@ -186,6 +186,7 @@ #define ELM_INTERNAL_API_VERSION 7000 typedef struct _Elm_Tooltip Elm_Tooltip; +typedef struct _Elm_Cursor Elm_Cursor; typedef struct _Elm_Widget_Item Elm_Widget_Item; /**< base structure for all widget items that are not Elm_Widget themselves */ struct _Elm_Widget_Item @@ -286,6 +287,8 @@ EAPI void _elm_widget_item_tooltip_unset(Elm_Widget_Item *item); EAPI void _elm_widget_item_tooltip_style_set(Elm_Widget_Item *item, const char *style); EAPI const char *_elm_widget_item_tooltip_style_get(const Elm_Widget_Item *item); +EAPI void _elm_widget_item_cursor_set(Elm_Widget_Item *item, const char *cursor); +EAPI void _elm_widget_item_cursor_unset(Elm_Widget_Item *item); /** * Convenience macro to create new widget item, doing casts for you. @@ -359,6 +362,18 @@ */ #define elm_widget_item_tooltip_style_get(item) \ _elm_widget_item_tooltip_style_get((const Elm_Widget_Item *)item) +/** + * Convenience function to set widget item cursor. + * @see _elm_widget_item_cursor_set() + */ +#define elm_widget_item_cursor_set(item, cursor) \ + _elm_widget_item_cursor_set((Elm_Widget_Item *)item, cursor) +/** + * Convenience function to unset widget item cursor. + * @see _elm_widget_item_cursor_unset() + */ +#define elm_widget_item_cursor_unset(item) \ + _elm_widget_item_cursor_unset((Elm_Widget_Item *)item) /** * Cast and ensure the given pointer is an Elm_Widget_Item or return NULL. |
From: Enlightenment S. <no-...@en...> - 2010-09-27 18:16:40
|
Log: Re-check theme when change engine only cursor on elm Otherwise it won't make difference to set it =P Author: bdilly Date: 2010-09-27 11:16:34 -0700 (Mon, 27 Sep 2010) New Revision: 52804 Modified: trunk/TMP/st/elementary/src/lib/els_cursor.c Modified: trunk/TMP/st/elementary/src/lib/els_cursor.c =================================================================== --- trunk/TMP/st/elementary/src/lib/els_cursor.c 2010-09-27 17:57:32 UTC (rev 52803) +++ trunk/TMP/st/elementary/src/lib/els_cursor.c 2010-09-27 18:16:34 UTC (rev 52804) @@ -261,6 +261,47 @@ return strcmp (c1->name, c2->name); } +static void +_elm_cursor_cur_set(Elm_Cursor *cur) +{ + if (cur->engine_only) + { + INF("Using only engine cursors"); + cur->use_engine = EINA_TRUE; + } + else if (_elm_cursor_obj_add(cur->eventarea, cur)) + { + _elm_cursor_set_hot_spots(cur); + cur->use_engine = EINA_FALSE; + elm_widget_cursor_add(cur->owner, cur); + } + else + { + INF("Cursor couldn't be found on theme: %s", cur->cursor_name); + cur->use_engine = EINA_TRUE; + } + + if (cur->use_engine) + { +#ifdef HAVE_ELEMENTARY_X + struct _Cursor_Id cur_search, *cur_id; + cur_search.name = cur->cursor_name; + cur_id = bsearch(&(cur->cursor_name), _cursors, _cursors_count, + sizeof(struct _Cursor_Id), _elm_cursor_strcmp); + + cur->win = elm_win_xwindow_get(cur->eventarea); + if (!cur_id) + { + INF("X cursor couldn't be found: %s. Using default.", + cur->cursor_name); + cur->cursor = ecore_x_cursor_shape_get(ECORE_X_CURSOR_X); + } + else + cur->cursor = ecore_x_cursor_shape_get(cur_id->id); +#endif + } +} + /** * Set the cursor to be shown when mouse is over the object * @@ -313,37 +354,8 @@ cur->evas = evas_object_evas_get(eventarea); cur->ee = ecore_evas_ecore_evas_get(cur->evas); - if (_elm_cursor_obj_add(eventarea, cur)) - { - _elm_cursor_set_hot_spots(cur); - cur->use_engine = EINA_FALSE; - elm_widget_cursor_add(cur->owner, cur); - } - else - { - INF("Cursor couldn't be found on theme: %s", cursor); - cur->use_engine = EINA_TRUE; - } + _elm_cursor_cur_set(cur); - if (cur->use_engine) - { -#ifdef HAVE_ELEMENTARY_X - struct _Cursor_Id cur_search, *cur_id; - cur_search.name = cursor; - cur_id = bsearch(&cursor, _cursors, _cursors_count, - sizeof(struct _Cursor_Id), _elm_cursor_strcmp); - if (!cur_id) - { - INF("X cursor couldn't be found: %s", cursor); - free(cur); - return; - } - - cur->win = elm_win_xwindow_get(eventarea); - cur->cursor = ecore_x_cursor_shape_get(cur_id->id); -#endif - } - evas_object_data_set(eventarea, _cursor_key, cur); evas_object_event_callback_add(eventarea, EVAS_CALLBACK_MOUSE_IN, @@ -514,6 +526,12 @@ { ELM_CURSOR_GET_OR_RETURN(cur, obj); cur->engine_only = engine_only; + if (cur->obj) + { + evas_object_del(cur->obj); + cur->obj = NULL; + } + _elm_cursor_cur_set(cur); } /** |
From: Enlightenment S. <no-...@en...> - 2010-09-27 18:45:45
|
Log: Fixes on cnp_helper for changes on Ecore_X (int -> bool) It should shut up gcc complains. I hope I'm not screwing up anything =) Author: bdilly Date: 2010-09-27 11:45:38 -0700 (Mon, 27 Sep 2010) New Revision: 52806 Modified: trunk/TMP/st/elementary/src/lib/elm_cnp_helper.c Modified: trunk/TMP/st/elementary/src/lib/elm_cnp_helper.c =================================================================== --- trunk/TMP/st/elementary/src/lib/elm_cnp_helper.c 2010-09-27 18:18:37 UTC (rev 52805) +++ trunk/TMP/st/elementary/src/lib/elm_cnp_helper.c 2010-09-27 18:45:38 UTC (rev 52806) @@ -71,8 +71,8 @@ Evas_Object *requestwidget; Elm_Sel_Format requestformat; - int (*set)(Ecore_X_Window, const void *data, int size); - int (*clear)(void); + Eina_Bool (*set)(Ecore_X_Window, const void *data, int size); + Eina_Bool (*clear)(void); void (*request)(Ecore_X_Window, const char *target); }; @@ -115,15 +115,15 @@ entry_deleted(void *images, Evas *e, Evas_Object *entry, void *unused); -typedef int (*converter_fn)(char *target, void *data, int size, void **data_ret, int *size_ret, Ecore_X_Atom *ttype, int *typesize); +typedef Eina_Bool (*converter_fn)(char *target, void *data, int size, void **data_ret, int *size_ret, Ecore_X_Atom *ttype, int *typesize); -static int targets_converter(char *target, void *data, int size, void **data_ret, int *size_ret, Ecore_X_Atom *ttype, int *typesize); -static int text_converter(char *target, void *data, int size, void **data_ret, int *size_ret, Ecore_X_Atom *ttype, int *typesize); -static int html_converter(char *target, void *data, int size, void **data_ret, int *size_ret, Ecore_X_Atom *ttype, int *typesize); -static int edje_converter(char *target, void *data, int size, void **data_ret, int *size_ret, Ecore_X_Atom *ttype, int *typesize); -static int uri_converter(char *target, void *data, int size, void **data_ret, int *size_ret, Ecore_X_Atom *ttype, int *typesize); -static int png_converter(char *target, void *data, int size, void **data_ret, int *size_ret, Ecore_X_Atom *ttype, int *typesize); -static int vcard_send(char *target, void *data, int size, void **data_ret, int *size_ret, Ecore_X_Atom *ttype, int *typesize); +static Eina_Bool targets_converter(char *target, void *data, int size, void **data_ret, int *size_ret, Ecore_X_Atom *ttype, int *typesize); +static Eina_Bool text_converter(char *target, void *data, int size, void **data_ret, int *size_ret, Ecore_X_Atom *ttype, int *typesize); +static Eina_Bool html_converter(char *target, void *data, int size, void **data_ret, int *size_ret, Ecore_X_Atom *ttype, int *typesize); +static Eina_Bool edje_converter(char *target, void *data, int size, void **data_ret, int *size_ret, Ecore_X_Atom *ttype, int *typesize); +static Eina_Bool uri_converter(char *target, void *data, int size, void **data_ret, int *size_ret, Ecore_X_Atom *ttype, int *typesize); +static Eina_Bool png_converter(char *target, void *data, int size, void **data_ret, int *size_ret, Ecore_X_Atom *ttype, int *typesize); +static Eina_Bool vcard_send(char *target, void *data, int size, void **data_ret, int *size_ret, Ecore_X_Atom *ttype, int *typesize); /* FIXME: Which way should this be: Notify or response */ typedef int (*response_handler)(struct _elm_cnp_selection *sel, @@ -555,7 +555,7 @@ -static int +static Eina_Bool targets_converter(char *target __UNUSED__, void *data, int size __UNUSED__, void **data_ret, int *size_ret, Ecore_X_Atom *ttype, int *typesize){ @@ -563,7 +563,7 @@ Ecore_X_Atom *aret; struct _elm_cnp_selection *sel; - if (!data_ret) return -1; + if (!data_ret) return EINA_FALSE; sel = selections + *(int*)data; @@ -581,19 +581,19 @@ if (ttype) *ttype = XA_ATOM; if (size_ret) *size_ret = count; - return 1; + return EINA_TRUE; } -static int +static Eina_Bool png_converter(char *target __UNUSED__, void *data, int size, void **data_ret __UNUSED__, int *size_ret __UNUSED__, Ecore_X_Atom *ttype __UNUSED__, int *typesize __UNUSED__) { cnp_debug("Png converter called\n"); - return 1; + return EINA_TRUE; } -static int +static Eina_Bool vcard_send(char *target __UNUSED__, void *data __UNUSED__, int size __UNUSED__, void **data_ret, int *size_ret, Ecore_X_Atom *ttype __UNUSED__, int *typesize __UNUSED__) @@ -607,7 +607,7 @@ if (data_ret) *data_ret = strdup(sel->selbuf); if (size_ret) *size_ret = strlen(sel->selbuf); - return 1; + return EINA_TRUE; } /* * Callback to handle a targets response on a selection request: @@ -868,7 +868,7 @@ } -static int +static Eina_Bool text_converter(char *target __UNUSED__, void *data, int size __UNUSED__, void **data_ret, int *size_ret, Ecore_X_Atom *ttype __UNUSED__, int *typesize __UNUSED__) @@ -877,7 +877,7 @@ cnp_debug("text converter\n"); sel = selections + *(int *)data; - if (!sel->active) return 1; + if (!sel->active) return EINA_TRUE; if (sel->format == ELM_SEL_FORMAT_MARKUP){ *data_ret = remove_tags(sel->selbuf, size_ret); @@ -892,10 +892,10 @@ else *data_ret = strdup(*data_ret); *size_ret = strlen(*data_ret); } - return 1; + return EINA_TRUE; } -static int +static Eina_Bool edje_converter(char *target __UNUSED__, void *data, int size __UNUSED__, void **data_ret, int *size_ret, Ecore_X_Atom *ttype __UNUSED__, int *typesize __UNUSED__) @@ -906,11 +906,11 @@ if (data_ret) *data_ret = strdup(sel->selbuf); if (size_ret) *size_ret = strlen(sel->selbuf); - return 1; + return EINA_TRUE; } -static int +static Eina_Bool html_converter(char *target __UNUSED__, void *data, int size __UNUSED__, void **data_ret, int *size_ret, Ecore_X_Atom *ttype __UNUSED__, int *typesize __UNUSED__) @@ -921,10 +921,10 @@ if (data_ret) *data_ret = strdup(sel->selbuf); if (size_ret) *size_ret = strlen(sel->selbuf); - return 1; + return EINA_TRUE; } -static int +static Eina_Bool uri_converter(char *target __UNUSED__, void *data, int size __UNUSED__, void **data_ret, int *size_ret, Ecore_X_Atom *ttype __UNUSED__, int *typesize __UNUSED__) @@ -934,7 +934,7 @@ cnp_debug("Uri converter\n"); if (data_ret) *data_ret = strdup(sel->selbuf); if (size_ret) *size_ret = strlen(sel->selbuf); - return 1; + return EINA_TRUE; } |
From: Enlightenment S. <no-...@en...> - 2010-09-27 22:17:46
|
Log: Don't add cursor callback for delete on parents of sub objects They will only display a warning because they don't have a cursor themselves. Only adding for the eventareas will free everything created. Author: bdilly Date: 2010-09-27 15:17:40 -0700 (Mon, 27 Sep 2010) New Revision: 52821 Modified: trunk/TMP/st/elementary/src/lib/els_cursor.c Modified: trunk/TMP/st/elementary/src/lib/els_cursor.c =================================================================== --- trunk/TMP/st/elementary/src/lib/els_cursor.c 2010-09-27 22:02:10 UTC (rev 52820) +++ trunk/TMP/st/elementary/src/lib/els_cursor.c 2010-09-27 22:17:40 UTC (rev 52821) @@ -364,9 +364,6 @@ _elm_cursor_mouse_out, cur); evas_object_event_callback_add(eventarea, EVAS_CALLBACK_DEL, _elm_cursor_del, cur); - if (owner != eventarea) - evas_object_event_callback_add(owner, EVAS_CALLBACK_DEL, - _elm_cursor_del, cur); } /** |
From: Enlightenment S. <no-...@en...> - 2010-10-14 14:11:27
|
Log: Fix typo on cnp_helper :) Author: bdilly Date: 2010-10-14 07:11:15 -0700 (Thu, 14 Oct 2010) New Revision: 53397 Modified: trunk/TMP/st/elementary/src/lib/elm_cnp_helper.c Modified: trunk/TMP/st/elementary/src/lib/elm_cnp_helper.c =================================================================== --- trunk/TMP/st/elementary/src/lib/elm_cnp_helper.c 2010-10-14 14:10:33 UTC (rev 53396) +++ trunk/TMP/st/elementary/src/lib/elm_cnp_helper.c 2010-10-14 14:11:15 UTC (rev 53397) @@ -1579,7 +1579,7 @@ } len ++; info->filename = malloc(len); - if (info->filename) + if (!info->filename) { free(info); return NULL; |