From: Enlightenment S. <no-...@en...> - 2008-10-07 02:39:00
|
Log: and remove unused code. Author: raster Date: 2008-10-06 19:36:19 -0700 (Mon, 06 Oct 2008) New Revision: 36489 Removed: trunk/TMP/st/elementary/src/lib/elm_callback.c trunk/TMP/st/elementary/src/lib/elm_obj.c Modified: trunk/TMP/st/elementary/src/lib/elm_priv.h Deleted: trunk/TMP/st/elementary/src/lib/elm_callback.c Deleted: trunk/TMP/st/elementary/src/lib/elm_obj.c Modified: trunk/TMP/st/elementary/src/lib/elm_priv.h =================================================================== --- trunk/TMP/st/elementary/src/lib/elm_priv.h 2008-10-07 01:24:16 UTC (rev 36488) +++ trunk/TMP/st/elementary/src/lib/elm_priv.h 2008-10-07 02:36:19 UTC (rev 36489) @@ -64,38 +64,8 @@ EAPI int elm_widget_disabled_get(Evas_Object *obj); EAPI void elm_widget_min_size_resize(Evas_Object *obj); -/* -void _elm_obj_init(Elm_Obj *obj); -void _elm_obj_nest_push(void); -void _elm_obj_nest_pop(void); -int _elm_obj_del_defer(Elm_Obj *obj); -Elm_Cb *_elm_cb_new(void); -void _elm_cb_call(Elm_Obj *obj, Elm_Cb_Type, void *info); -int _elm_theme_set(Evas_Object *o, const char *clas, const char *group); -void _elm_widget_init(Elm_Widget *wid); -void _elm_widget_post_init(Elm_Widget *wid); -*/ - extern char *_elm_appname; extern Elm_Config *_elm_config; -/* -extern Elm_Obj_Class _elm_obj_class; -extern Elm_Win_Class _elm_win_class; -extern Elm_Widget_Class _elm_widget_class; -extern Elm_Bg_Class _elm_bg_class; -extern Elm_Scroller_Class _elm_scroller_class; -extern Elm_Label_Class _elm_label_class; -extern Elm_Box_Class _elm_box_class; -extern Elm_Table_Class _elm_table_class; -extern Elm_Button_Class _elm_button_class; -extern Elm_Icon_Class _elm_icon_class; -extern Elm_Toggle_Class _elm_toggle_class; -extern Elm_Clock_Class _elm_clock_class; -extern Elm_Frame_Class _elm_frame_class; -extern Elm_Pad_Class _elm_pad_class; -extern Elm_Contactlist_Class _elm_contactlist_class; -*/ - #endif |
From: Enlightenment S. <no-...@en...> - 2008-10-07 13:29:24
|
Log: remvoe minw/h from widget - not needed anymore. ad hovers placeholder Author: raster Date: 2008-10-07 05:58:08 -0700 (Tue, 07 Oct 2008) New Revision: 36499 Modified: 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/elm_priv.h =================================================================== --- trunk/TMP/st/elementary/src/lib/elm_priv.h 2008-10-07 12:53:11 UTC (rev 36498) +++ trunk/TMP/st/elementary/src/lib/elm_priv.h 2008-10-07 12:58:08 UTC (rev 36499) @@ -44,8 +44,6 @@ EAPI void elm_widget_on_change_hook_set(Evas_Object *obj, void (*func) (void *data, Evas_Object *obj), void *data); EAPI void elm_widget_data_set(Evas_Object *obj, void *data); EAPI void *elm_widget_data_get(Evas_Object *obj); -EAPI void elm_widget_min_size_set(Evas_Object *obj, Evas_Coord minw, Evas_Coord minh); -EAPI void elm_widget_min_size_get(Evas_Object *obj, Evas_Coord *minw, Evas_Coord *minh); EAPI void elm_widget_sub_object_add(Evas_Object *obj, Evas_Object *sobj); 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); @@ -62,7 +60,6 @@ EAPI void elm_widget_change(Evas_Object *obj); EAPI void elm_widget_disabled_set(Evas_Object *obj, int disabled); EAPI int elm_widget_disabled_get(Evas_Object *obj); -EAPI void elm_widget_min_size_resize(Evas_Object *obj); extern char *_elm_appname; Modified: trunk/TMP/st/elementary/src/lib/elm_widget.c =================================================================== --- trunk/TMP/st/elementary/src/lib/elm_widget.c 2008-10-07 12:53:11 UTC (rev 36498) +++ trunk/TMP/st/elementary/src/lib/elm_widget.c 2008-10-07 12:58:08 UTC (rev 36499) @@ -10,8 +10,8 @@ { Evas_Object *parent_obj; Evas_Coord x, y, w, h; - Evas_Coord minw, minh; Evas_List *subobjs; + Evas_List *hovers; Evas_Object *resize_obj; void (*del_func) (Evas_Object *obj); void (*focus_func) (Evas_Object *obj); @@ -111,24 +111,6 @@ } EAPI void -elm_widget_min_size_set(Evas_Object *obj, Evas_Coord minw, Evas_Coord minh) -{ - API_ENTRY return; - if (minw >= 0) - sd->minw = minw; - if (minh >= 0) - sd->minh = minh; -} - -EAPI void -elm_widget_min_size_get(Evas_Object *obj, Evas_Coord *minw, Evas_Coord *minh) -{ - API_ENTRY return; - if (minw) *minw = sd->minw; - if (minh) *minh = sd->minh; -} - -EAPI void elm_widget_sub_object_add(Evas_Object *obj, Evas_Object *sobj) { API_ENTRY return; @@ -449,13 +431,6 @@ return sd->disabled; } -EAPI void -elm_widget_min_size_resize(Evas_Object *obj) -{ - API_ENTRY return; - evas_object_resize(obj, sd->minw, sd->minh); -} - /* local subsystem functions */ static void _smart_reconfigure(Smart_Data *sd) |
From: Enlightenment S. <no-...@en...> - 2008-10-08 15:09:13
|
Log: clean up tracking Author: raster Date: 2008-10-08 08:09:00 -0700 (Wed, 08 Oct 2008) New Revision: 36528 Modified: trunk/TMP/st/elementary/src/lib/Elementary.h trunk/TMP/st/elementary/src/lib/elm_hover.c Modified: trunk/TMP/st/elementary/src/lib/Elementary.h =================================================================== --- trunk/TMP/st/elementary/src/lib/Elementary.h 2008-10-08 13:36:57 UTC (rev 36527) +++ trunk/TMP/st/elementary/src/lib/Elementary.h 2008-10-08 15:09:00 UTC (rev 36528) @@ -87,13 +87,13 @@ EAPI void elm_win_alpha_set(Evas_Object *obj, Evas_Bool alpha); EAPI void elm_win_override_set(Evas_Object *obj, Evas_Bool override); // FIXME: implement more of the above calls - /* smart callbacks elm_win objects will call: + /* smart callbacks called: * "delete-request" - the user requested to delete the window */ EAPI Evas_Object *elm_bg_add(Evas_Object *parent); EAPI void elm_bg_file_set(Evas_Object *obj, const char *file, const char *group); - /* smart callbacks elm_win objects will call: + /* smart callbacks called: */ EAPI Evas_Object *elm_icon_add(Evas_Object *parent); @@ -102,7 +102,7 @@ EAPI void elm_icon_no_scale_set(Evas_Object *obj, Evas_Bool no_scale); EAPI void elm_icon_scale_set(Evas_Object *obj, Evas_Bool scale_up, Evas_Bool scale_down); EAPI void elm_icon_fill_outside_set(Evas_Object *obj, Evas_Bool fill_outside); - /* smart callbacks elm_win objects will call: + /* smart callbacks called: * "clicked" - the user clicked the icon */ @@ -113,24 +113,24 @@ EAPI void elm_box_pack_end(Evas_Object *obj, Evas_Object *subobj); EAPI void elm_box_pack_before(Evas_Object *obj, Evas_Object *subobj, Evas_Object *before); EAPI void elm_box_pack_after(Evas_Object *obj, Evas_Object *subobj, Evas_Object *after); - /* smart callbacks elm_win objects will call: + /* smart callbacks called: */ EAPI Evas_Object *elm_button_add(Evas_Object *parent); EAPI void elm_button_label_set(Evas_Object *obj, const char *label); EAPI void elm_button_icon_set(Evas_Object *obj, Evas_Object *icon); - /* smart callbacks elm_win objects will call: + /* smart callbacks called: * "clicked" - the user clicked the button */ EAPI Evas_Object *elm_scroller_add(Evas_Object *parent); EAPI void elm_scroller_content_set(Evas_Object *obj, Evas_Object *child); - /* smart callbacks elm_win objects will call: + /* smart callbacks called: */ EAPI Evas_Object *elm_label_add(Evas_Object *parent); EAPI void elm_label_label_set(Evas_Object *obj, const char *label); - /* smart callbacks elm_win objects will call: + /* smart callbacks called: */ EAPI Evas_Object *elm_toggle_add(Evas_Object *parent); @@ -139,20 +139,20 @@ EAPI void elm_toggle_states_labels_set(Evas_Object *obj, const char *onlabel, const char *offlabel); EAPI void elm_toggle_state_set(Evas_Object *obj, Evas_Bool state); EAPI void elm_toggle_state_pointer_set(Evas_Object *obj, Evas_Bool *statep); - /* smart callbacks elm_win objects will call: + /* smart callbacks called: * "changed" - the user toggled the state */ EAPI Evas_Object *elm_frame_add(Evas_Object *parent); EAPI void elm_frame_label_set(Evas_Object *obj, const char *label); EAPI void elm_frame_content_set(Evas_Object *obj, Evas_Object *content); - /* smart callbacks elm_win objects will call: + /* smart callbacks called: */ EAPI Evas_Object *elm_table_add(Evas_Object *parent); EAPI void elm_table_homogenous_set(Evas_Object *obj, Evas_Bool homogenous); EAPI void elm_table_pack(Evas_Object *obj, Evas_Object *subobj, int x, int y, int w, int h); - /* smart callbacks elm_win objects will call: + /* smart callbacks called: */ EAPI Evas_Object *elm_clock_add(Evas_Object *parent); @@ -161,7 +161,7 @@ EAPI void elm_clock_edit_set(Evas_Object *obj, Evas_Bool edit); EAPI void elm_clock_show_am_pm_set(Evas_Object *obj, Evas_Bool am_pm); EAPI void elm_clock_show_seconds_set(Evas_Object *obj, Evas_Bool seconds); - /* smart callbacks elm_win objects will call: + /* smart callbacks called: * "changed" - the user changed the time */ @@ -169,15 +169,14 @@ EAPI void elm_layout_file_set(Evas_Object *obj, const char *file, const char *group); EAPI void elm_layout_content_set(Evas_Object *obj, const char *swallow, Evas_Object *content); EAPI Evas_Object *elm_layout_edje_get(Evas_Object *obj); - /* smart callbacks elm_win objects will call: + /* smart callbacks called: */ EAPI Evas_Object *elm_hover_add(Evas_Object *parent); EAPI void elm_hover_target_set(Evas_Object *obj, Evas_Object *target); EAPI void elm_hover_parent_set(Evas_Object *obj, Evas_Object *parent); EAPI void elm_hover_content_set(Evas_Object *obj, const char *swallow, Evas_Object *content); - - /* smart callbacks elm_win objects will call: + /* smart callbacks called: */ // FIXME: fixes to do @@ -185,11 +184,8 @@ // * scroller could do with page up/down/left/right buttons and and idea of // a page size // * tab widget focusing (not useful for touchscreen tho...) -// * icon should optionally be able to collect events and call clicked -// callbacks // * hover needs a way to animate show/hide (slide out slots) and have some // graphics for around middle -// * hover needs to track move/resize and del of parent // * hover needs to be able to use custom hover style // * frame needs to be able to use custom frame style // * all widgets need a way to use a custom style Modified: trunk/TMP/st/elementary/src/lib/elm_hover.c =================================================================== --- trunk/TMP/st/elementary/src/lib/elm_hover.c 2008-10-08 13:36:57 UTC (rev 36527) +++ trunk/TMP/st/elementary/src/lib/elm_hover.c 2008-10-08 15:09:00 UTC (rev 36528) @@ -28,6 +28,7 @@ _del_hook(Evas_Object *obj) { Widget_Data *wd = elm_widget_data_get(obj); + elm_hover_parent_set(obj, NULL); while (wd->subs) { Subinfo *si = wd->subs->data; @@ -126,6 +127,40 @@ evas_object_hide(data); } +static void +_parent_move(void *data, Evas *e, Evas_Object *obj, void *event_info) +{ + _sizing_eval(data); +} + +static void +_parent_resize(void *data, Evas *e, Evas_Object *obj, void *event_info) +{ + _sizing_eval(data); +} + +static void +_parent_show(void *data, Evas *e, Evas_Object *obj, void *event_info) +{ + Widget_Data *wd = elm_widget_data_get(data); + evas_object_show(wd->cov); +} + +static void +_parent_hide(void *data, Evas *e, Evas_Object *obj, void *event_info) +{ + Widget_Data *wd = elm_widget_data_get(data); + evas_object_hide(wd->cov); +} + +static void +_parent_del(void *data, Evas *e, Evas_Object *obj, void *event_info) +{ + Widget_Data *wd = elm_widget_data_get(data); + wd->parent = NULL; + _sizing_eval(data); +} + EAPI Evas_Object * elm_hover_add(Evas_Object *parent) { @@ -185,8 +220,24 @@ elm_hover_parent_set(Evas_Object *obj, Evas_Object *parent) { Widget_Data *wd = elm_widget_data_get(obj); + if (wd->parent) + { + evas_object_event_callback_del(wd->parent, EVAS_CALLBACK_MOVE, _parent_move); + evas_object_event_callback_del(wd->parent, EVAS_CALLBACK_RESIZE, _parent_resize); + evas_object_event_callback_del(wd->parent, EVAS_CALLBACK_SHOW, _parent_show); + evas_object_event_callback_del(wd->parent, EVAS_CALLBACK_HIDE, _parent_hide); + evas_object_event_callback_del(wd->parent, EVAS_CALLBACK_DEL, _parent_del); + } wd->parent = parent; - elm_widget_sub_object_add(parent, obj); + if (wd->parent) + { + evas_object_event_callback_add(wd->parent, EVAS_CALLBACK_MOVE, _parent_move, obj); + evas_object_event_callback_add(wd->parent, EVAS_CALLBACK_RESIZE, _parent_resize, obj); + evas_object_event_callback_add(wd->parent, EVAS_CALLBACK_SHOW, _parent_show, obj); + evas_object_event_callback_add(wd->parent, EVAS_CALLBACK_HIDE, _parent_hide, obj); + evas_object_event_callback_add(wd->parent, EVAS_CALLBACK_DEL, _parent_del, obj); + elm_widget_sub_object_add(parent, obj); + } _sizing_eval(obj); } |
From: Enlightenment S. <no-...@en...> - 2008-10-09 10:43:26
|
Log: fix xcale icons Author: raster Date: 2008-10-09 03:39:05 -0700 (Thu, 09 Oct 2008) New Revision: 36543 Modified: trunk/TMP/st/elementary/src/lib/elm_icon.c Modified: trunk/TMP/st/elementary/src/lib/elm_icon.c =================================================================== --- trunk/TMP/st/elementary/src/lib/elm_icon.c 2008-10-09 10:21:16 UTC (rev 36542) +++ trunk/TMP/st/elementary/src/lib/elm_icon.c 2008-10-09 10:39:05 UTC (rev 36543) @@ -40,8 +40,7 @@ else { _els_smart_icon_scale_set(wd->img, _elm_config->scale); - w *= _elm_config->scale; - h *= _elm_config->scale; + _els_smart_icon_size_get(wd->img, &w, &h); } if (!wd->scale_down) { |
From: Enlightenment S. <no-...@en...> - 2008-10-14 08:05:37
|
Log: warnings-- and beginning of entry widget. Author: raster Date: 2008-10-14 01:05:30 -0700 (Tue, 14 Oct 2008) New Revision: 36653 Added: trunk/TMP/st/elementary/src/lib/elm_entry.c Modified: trunk/TMP/st/elementary/src/lib/Elementary.h trunk/TMP/st/elementary/src/lib/Makefile.am trunk/TMP/st/elementary/src/lib/els_scroller.c Modified: trunk/TMP/st/elementary/src/lib/Elementary.h =================================================================== --- trunk/TMP/st/elementary/src/lib/Elementary.h 2008-10-14 07:58:57 UTC (rev 36652) +++ trunk/TMP/st/elementary/src/lib/Elementary.h 2008-10-14 08:05:30 UTC (rev 36653) @@ -179,6 +179,8 @@ EAPI void elm_hover_style_set(Evas_Object *obj, const char *style); /* smart callbacks called: */ + + EAPI Evas_Object *elm_entry_add(Evas_Object *parent); // FIXME: fixes to do // * current sizing tree inefficient @@ -190,6 +192,8 @@ // * toggle needs to be able to use custom frame style // // FIXME: immediate hitlist for widgets: +// ENTRY: 1 or more line text entry +// // POPSEL: a button that when pressed uses a hover to display a h/v box or // a table of options surrounding the button with scroll butons at // the end and the ability to drag and scroll Modified: trunk/TMP/st/elementary/src/lib/Makefile.am =================================================================== --- trunk/TMP/st/elementary/src/lib/Makefile.am 2008-10-14 07:58:57 UTC (rev 36652) +++ trunk/TMP/st/elementary/src/lib/Makefile.am 2008-10-14 08:05:30 UTC (rev 36653) @@ -32,6 +32,9 @@ elm_clock.c \ elm_layout.c \ elm_hover.c \ +elm_entry.c \ +elm_contact.c \ +elm_contactlist.c \ \ els_pan.c \ els_pan.h \ @@ -44,8 +47,6 @@ els_icon.c \ els_icon.h -#... later -#elm_contactlist.c libelementary_la_CFLAGS = libelementary_la_LIBADD = @my_libs@ @ELEMENTARY_LIBS@ Added: trunk/TMP/st/elementary/src/lib/elm_entry.c Modified: trunk/TMP/st/elementary/src/lib/els_scroller.c =================================================================== --- trunk/TMP/st/elementary/src/lib/els_scroller.c 2008-10-14 07:58:57 UTC (rev 36652) +++ trunk/TMP/st/elementary/src/lib/els_scroller.c 2008-10-14 08:05:30 UTC (rev 36653) @@ -669,7 +669,7 @@ static void _smart_scrollbar_reset(Smart_Data *sd) { - Evas_Coord px, py; + Evas_Coord px = 0, py = 0; edje_object_part_drag_value_set(sd->edje_obj, "elm.dragable.vbar", 0.0, 0.0); edje_object_part_drag_value_set(sd->edje_obj, "elm.dragable.hbar", 0.0, 0.0); @@ -880,7 +880,7 @@ } else { - Evas_Coord px, py; + Evas_Coord px = 0, py = 0; edje_object_part_drag_size_set(sd->edje_obj, "elm.dragable.vbar", 1.0, 1.0); edje_object_part_drag_size_set(sd->edje_obj, "elm.dragable.hbar", 1.0, 1.0); |
From: Enlightenment S. <no-...@en...> - 2008-10-16 14:19:51
|
Log: go back to expose damage avoid Author: raster Date: 2008-10-16 07:19:37 -0700 (Thu, 16 Oct 2008) New Revision: 36722 Modified: trunk/TMP/st/elementary/src/lib/elm_win.c Modified: trunk/TMP/st/elementary/src/lib/elm_win.c =================================================================== --- trunk/TMP/st/elementary/src/lib/elm_win.c 2008-10-16 14:19:12 UTC (rev 36721) +++ trunk/TMP/st/elementary/src/lib/elm_win.c 2008-10-16 14:19:37 UTC (rev 36722) @@ -354,11 +354,11 @@ free(win); return NULL; } - printf("_elm_config->bgpixmap = %i\n" - "_elm_config->compositing = %i\n", - _elm_config->bgpixmap, _elm_config->compositing); if (_elm_config->bgpixmap && !_elm_config->compositing) - ecore_evas_avoid_damage_set(win->ee, ECORE_EVAS_AVOID_DAMAGE_BUILT_IN); + ecore_evas_avoid_damage_set(win->ee, ECORE_EVAS_AVOID_DAMAGE_EXPOSE); +// bg pixmap done by x - has other issues like can be redrawn by x before it +// is filled/ready by app +// ecore_evas_avoid_damage_set(win->ee, ECORE_EVAS_AVOID_DAMAGE_BUILT_IN); win->type = type; win->parent = parent; |
From: Enlightenment S. <no-...@en...> - 2008-10-17 14:53:17
|
Log: and signal right. Author: raster Date: 2008-10-17 07:53:07 -0700 (Fri, 17 Oct 2008) New Revision: 36756 Modified: trunk/TMP/st/elementary/src/lib/elm_entry.c Modified: trunk/TMP/st/elementary/src/lib/elm_entry.c =================================================================== --- trunk/TMP/st/elementary/src/lib/elm_entry.c 2008-10-17 14:51:17 UTC (rev 36755) +++ trunk/TMP/st/elementary/src/lib/elm_entry.c 2008-10-17 14:53:07 UTC (rev 36756) @@ -151,7 +151,7 @@ char *buf, *buf2, *p, *p2, *n; int buflen; printf("UP %s\n", emission); - p = strchr(emission, ','); + p = strrchr(emission, ','); if (p) { n = p + 1; @@ -167,7 +167,7 @@ buf2 = alloca(5 + p - p2); strncpy(buf2, p2, p - p2); buf2[p - p2] = 0; - snprintf(buf, buflen, "anchor,%s,clicked,*s", buf2, n); + snprintf(buf, buflen, "anchor,%s,clicked,%s", buf2, n); evas_object_smart_callback_call(data, buf, NULL); } } |
From: Enlightenment S. <no-...@en...> - 2008-10-18 03:55:51
|
Log: defer recalc for faster init and changes. Author: raster Date: 2008-10-17 20:55:44 -0700 (Fri, 17 Oct 2008) New Revision: 36766 Modified: trunk/TMP/st/elementary/src/lib/Elementary.h trunk/TMP/st/elementary/src/lib/elm_entry.c Modified: trunk/TMP/st/elementary/src/lib/Elementary.h =================================================================== --- trunk/TMP/st/elementary/src/lib/Elementary.h 2008-10-17 23:59:25 UTC (rev 36765) +++ trunk/TMP/st/elementary/src/lib/Elementary.h 2008-10-18 03:55:44 UTC (rev 36766) @@ -188,6 +188,15 @@ EAPI void elm_entry_entry_insert(Evas_Object *obj, const char *entry); EAPI void elm_entry_line_wrap_set(Evas_Object *obj, Evas_Bool wrap); /* smart callbacks called: + * "changed" - the text content changed + * "selection,start" - + * "selection,changed" - + * "selection,cleared" - + * "selection,paste" - + * "selection,copy" - + * "selection,cut" - + * "cursor,changed" - + * "anchor,X,clicked,N" - achor called X was clicked with button N */ // FIXME: fixes to do Modified: trunk/TMP/st/elementary/src/lib/elm_entry.c =================================================================== --- trunk/TMP/st/elementary/src/lib/elm_entry.c 2008-10-17 23:59:25 UTC (rev 36765) +++ trunk/TMP/st/elementary/src/lib/elm_entry.c 2008-10-18 03:55:44 UTC (rev 36766) @@ -6,7 +6,10 @@ struct _Widget_Data { Evas_Object *ent; + Evas_Coord lastw; + Evas_Bool changed; Evas_Bool linewrap; + Ecore_Job *deferred_recalc_job; }; static void _del_hook(Evas_Object *obj); @@ -26,10 +29,29 @@ _del_hook(Evas_Object *obj) { Widget_Data *wd = elm_widget_data_get(obj); + if (wd->deferred_recalc_job) ecore_job_del(wd->deferred_recalc_job); free(wd); } static void +_elm_win_recalc_job(void *data) +{ + Widget_Data *wd = elm_widget_data_get(data); + Evas_Coord minw = -1, minh = -1, maxw = -1, maxh = -1; + Evas_Coord resw, resh, minminw; + + wd->deferred_recalc_job = NULL; + evas_object_geometry_get(wd->ent, NULL, NULL, &resw, &resh); + resh = 0; + minminw = 0; + edje_object_size_min_restricted_calc(wd->ent, &minw, &minh, 0, 0); + minminw = minw; + edje_object_size_min_restricted_calc(wd->ent, &minw, &minh, resw, 0); + evas_object_size_hint_min_set(data, minminw, minh); + evas_object_size_hint_max_set(data, minminw, maxh); +} + +static void _sizing_eval(Evas_Object *obj) { Widget_Data *wd = elm_widget_data_get(obj); @@ -39,16 +61,15 @@ if (wd->linewrap) { evas_object_geometry_get(wd->ent, NULL, NULL, &resw, &resh); - resh = 0; - minminw = 0; - edje_object_size_min_restricted_calc(wd->ent, &minw, &minh, 0, 0); - minminw = minw; - edje_object_size_min_restricted_calc(wd->ent, &minw, &minh, resw, 0); - evas_object_size_hint_min_set(obj, minminw, minh); - evas_object_size_hint_max_set(obj, minminw, maxh); + if ((resw == wd->lastw) && (!wd->changed)) return; + wd->changed = 0; + wd->lastw = resw; + if (wd->deferred_recalc_job) ecore_job_del(wd->deferred_recalc_job); + wd->deferred_recalc_job = ecore_job_add(_elm_win_recalc_job, obj); } else { + evas_object_geometry_get(wd->ent, NULL, NULL, &resw, &resh); edje_object_size_min_calc(wd->ent, &minw, &minh); evas_object_size_hint_min_set(obj, minw, minh); evas_object_size_hint_max_set(obj, maxw, maxh); @@ -74,6 +95,7 @@ { Widget_Data *wd = elm_widget_data_get(data); evas_object_smart_callback_call(data, "changed", NULL); + wd->changed = 1; _sizing_eval(data); } @@ -105,6 +127,7 @@ _signal_entry_paste_request(void *data, Evas_Object *obj, const char *emission, const char *source) { Widget_Data *wd = elm_widget_data_get(data); + evas_object_smart_callback_call(data, "selection,paste", NULL); // FIXME: x clipboard/copy and paste - request } @@ -112,7 +135,7 @@ _signal_entry_copy_notify(void *data, Evas_Object *obj, const char *emission, const char *source) { Widget_Data *wd = elm_widget_data_get(data); - evas_object_smart_callback_call(data, "changed", NULL); + evas_object_smart_callback_call(data, "selection,copy", NULL); // FIXME: x clipboard/copy & paste - do } @@ -120,7 +143,9 @@ _signal_entry_cut_notify(void *data, Evas_Object *obj, const char *emission, const char *source) { Widget_Data *wd = elm_widget_data_get(data); - evas_object_smart_callback_call(data, "changed", NULL); + evas_object_smart_callback_call(data, "selection,cut", NULL); + wd->changed = 1; + _sizing_eval(data); // FIXME: x clipboard/copy & paste - do } @@ -244,6 +269,7 @@ for (l = an; l; l = l->next) printf("ANCHOR: %s\n", l->data); } + wd->changed = 1; _sizing_eval(obj); } @@ -266,6 +292,7 @@ { Widget_Data *wd = elm_widget_data_get(obj); edje_object_part_text_insert(wd->ent, "elm.text", entry); + wd->changed = 1; _sizing_eval(obj); } |
From: Enlightenment S. <no-...@en...> - 2008-10-21 12:59:06
|
Log: document fixme's Author: raster Date: 2008-10-21 05:02:03 -0700 (Tue, 21 Oct 2008) New Revision: 36926 Modified: trunk/TMP/st/elementary/src/lib/elc_notepad.c Modified: trunk/TMP/st/elementary/src/lib/elc_notepad.c =================================================================== --- trunk/TMP/st/elementary/src/lib/elc_notepad.c 2008-10-21 12:01:00 UTC (rev 36925) +++ trunk/TMP/st/elementary/src/lib/elc_notepad.c 2008-10-21 12:02:03 UTC (rev 36926) @@ -95,6 +95,7 @@ switch (wd->format) { case ELM_TEXT_FORMAT_PLAIN_UTF8: + // FIXME: convert plaintext to markup break; case ELM_TEXT_FORMAT_MARKUP_UTF8: text = _load_markup_utf8(wd->file); @@ -141,6 +142,7 @@ switch (wd->format) { case ELM_TEXT_FORMAT_PLAIN_UTF8: + // FIXME: convert markup to plaintext break; case ELM_TEXT_FORMAT_MARKUP_UTF8: _save_markup_utf8(wd->file, elm_entry_entry_get(wd->entry)); |
From: Enlightenment S. <no-...@en...> - 2008-10-22 04:00:25
|
Log: do plain text and markup load/save. Author: raster Date: 2008-10-21 21:00:19 -0700 (Tue, 21 Oct 2008) New Revision: 36951 Modified: trunk/TMP/st/elementary/src/lib/elc_notepad.c Modified: trunk/TMP/st/elementary/src/lib/elc_notepad.c =================================================================== --- trunk/TMP/st/elementary/src/lib/elc_notepad.c 2008-10-22 04:00:05 UTC (rev 36950) +++ trunk/TMP/st/elementary/src/lib/elc_notepad.c 2008-10-22 04:00:19 UTC (rev 36951) @@ -50,30 +50,96 @@ } static char * +_buf_append(char *buf, const char *str, int *len, int *alloc) +{ + int len2; + + len2 = strlen(str); + if ((*len + len2) >= *alloc) + { + char *buf2; + + buf2 = realloc(buf, *alloc + 512); + if (!buf2) return NULL; + buf = buf2; + *alloc += 512; + } + strcpy(buf + *len, str); + *len += len2; + return buf; +} + +static char * _load_markup_utf8(const char *file) { FILE *f; - long size; - char *text = NULL; + size_t size; + int alloc = 0, len = 0, pos; + char *text = NULL, buf[4096]; f = fopen(file, "r"); if (!f) return NULL; - fseek(f, 0, SEEK_END); - size = ftell(f); - if (size > 0) + while (size = fread(buf, 1, sizeof(buf), f)) { - rewind(f); - text = malloc(size + 1); - if (text) + pos = 0; + buf[size] = 0; + while (pos < size) { - if (fread(text, size, 1, f)) + int ch; + char str[2]; + + ch = buf[pos]; + if (ch != '\n') { - text[size] = 0; + str[0] = ch; + str[1] = 0; + text = _buf_append(text, str, &len, &alloc); } + pos++; + } + } + fclose(f); + return text; +} + +static char * +_load_plain_utf8(const char *file) +{ + FILE *f; + size_t size; + int alloc = 0, len = 0, pos; + char *text = NULL, buf[4096]; + + f = fopen(file, "r"); + if (!f) return NULL; + while (size = fread(buf, 1, sizeof(buf), f)) + { + pos = 0; + buf[size] = 0; + while (pos < size) + { + int ch, ppos; + + ppos = pos; + ch = evas_common_font_utf8_get_next(buf, &pos); + if (ch == '\n') + text = _buf_append(text, "<br>", &len, &alloc); else { - free(text); - text = NULL; + int stlen = 0; + const char *escape; + char str[16]; + + escape = evas_textblock_string_escape_get(buf + ppos, &stlen); + printf("esc = %s\n", escape); + if (escape) + text = _buf_append(text, escape, &len, &alloc); + else + { + strncpy(str, buf + ppos, pos - ppos); + str[pos - ppos] = 0; + text = _buf_append(text, str, &len, &alloc); + } } } } @@ -95,7 +161,7 @@ switch (wd->format) { case ELM_TEXT_FORMAT_PLAIN_UTF8: - // FIXME: convert plaintext to markup + text = _load_plain_utf8(wd->file); break; case ELM_TEXT_FORMAT_MARKUP_UTF8: text = _load_markup_utf8(wd->file); @@ -132,9 +198,114 @@ fputs(text, f); // FIXME: catch error fputs("\n", f); // FIXME: catch error fclose(f); + printf(".. written\n"); } static void +_save_plain_utf8(const char *file, const char *text) +{ + FILE *f; + char *s, *p; + char *tag_start, *tag_end, *esc_start, *esc_end; + + if ((!text) || (text[0] == 0)) + { + ecore_file_unlink(file); + return; + } + f = fopen(file, "w"); + if (!f) + { + // FIXME: report a write error + return; + } + tag_start = tag_end = esc_start = esc_end = NULL; + p = (char *)text; + s = p; + for (;;) + { + if ((*p == 0) || + (tag_end) || (esc_end) || + (tag_start) || (esc_start)) + { + if (tag_end) + { + char *ttag, *match; + + ttag = malloc(tag_end - tag_start); + if (ttag) + { + strncpy(ttag, tag_start + 1, tag_end - tag_start - 1); + ttag[tag_end - tag_start - 1] = 0; + if (!strcmp(ttag, "br")) fputs("\n", f); // FIXME: catch error + free(ttag); + } + tag_start = tag_end = NULL; + } + else if (esc_end) + { + char tesc[256]; + char *str; + + if ((esc_end - esc_start) < (sizeof(tesc) - 2)) + { + strncpy(tesc, esc_start, esc_end - esc_start + 1); + tesc[esc_end - esc_start + 1] = 0; + } + str = evas_textblock_escape_string_get(tesc); + if (str) fputs(str, f); // FIXME: catch error + esc_start = esc_end = NULL; + } + else if (*p == 0) + { + fwrite(s, p - s, 1, f); // FIXME: catch error + s = NULL; + } + if (*p == 0) + break; + } + if (*p == '<') + { + if (!esc_start) + { + tag_start = p; + tag_end = NULL; + fwrite(s, p - s, 1, f); // FIXME: catch error + s = NULL; + } + } + else if (*p == '>') + { + if (tag_start) + { + tag_end = p; + s = p + 1; + } + } + else if (*p == '&') + { + if (!tag_start) + { + esc_start = p; + esc_end = NULL; + fwrite(s, p - s, 1, f); // FIXME: catch error + s = NULL; + } + } + else if (*p == ';') + { + if (esc_start) + { + esc_end = p; + s = p + 1; + } + } + p++; + } + fclose(f); +} + +static void _save(Evas_Object *obj) { Widget_Data *wd = elm_widget_data_get(obj); @@ -142,9 +313,10 @@ switch (wd->format) { case ELM_TEXT_FORMAT_PLAIN_UTF8: - // FIXME: convert markup to plaintext + _save_plain_utf8(wd->file, elm_entry_entry_get(wd->entry)); break; case ELM_TEXT_FORMAT_MARKUP_UTF8: + printf(".. save markup\n"); _save_markup_utf8(wd->file, elm_entry_entry_get(wd->entry)); break; default: @@ -156,6 +328,7 @@ _delay_write(void *data) { Widget_Data *wd = elm_widget_data_get(data); + printf(".. save\n"); _save(data); wd->delay_write = NULL; return 0; @@ -165,6 +338,7 @@ _entry_changed(void *data, Evas_Object *obj, void *event_info) { Widget_Data *wd = elm_widget_data_get(data); + printf(".. changed\n"); if (wd->delay_write) { ecore_timer_del(wd->delay_write); @@ -192,7 +366,7 @@ wd->scroller = elm_scroller_add(parent); elm_widget_resize_object_set(obj, wd->scroller); wd->entry = elm_entry_add(parent); - evas_object_size_hint_weight_set(wd->entry, 1.0, 0.0); + evas_object_size_hint_weight_set(wd->entry, 1.0, 1.0); evas_object_size_hint_align_set(wd->entry, -1.0, -1.0); elm_scroller_content_set(wd->scroller, wd->entry); evas_object_show(wd->entry); |
From: Enlightenment S. <no-...@en...> - 2008-10-22 12:19:10
|
Log: use hold flags Author: raster Date: 2008-10-22 05:00:16 -0700 (Wed, 22 Oct 2008) New Revision: 36965 Modified: trunk/TMP/st/elementary/src/lib/elm_entry.c trunk/TMP/st/elementary/src/lib/elm_widget.c trunk/TMP/st/elementary/src/lib/els_scroller.c Modified: trunk/TMP/st/elementary/src/lib/elm_entry.c =================================================================== --- trunk/TMP/st/elementary/src/lib/elm_entry.c 2008-10-22 11:59:59 UTC (rev 36964) +++ trunk/TMP/st/elementary/src/lib/elm_entry.c 2008-10-22 12:00:16 UTC (rev 36965) @@ -263,7 +263,6 @@ edje_object_signal_callback_add(wd->ent, "anchor,mouse,out,*", "elm.text", _signal_anchor_out, obj); edje_object_signal_callback_add(wd->ent, "entry,key,enter", "elm.text", _signal_key_enter, obj); elm_widget_resize_object_set(obj, wd->ent); - evas_object_propagate_events_set(obj, 0); return obj; } Modified: trunk/TMP/st/elementary/src/lib/elm_widget.c =================================================================== --- trunk/TMP/st/elementary/src/lib/elm_widget.c 2008-10-22 11:59:59 UTC (rev 36964) +++ trunk/TMP/st/elementary/src/lib/elm_widget.c 2008-10-22 12:00:16 UTC (rev 36965) @@ -61,8 +61,19 @@ _sub_obj_mouse_down(void *data, Evas *e, Evas_Object *obj, void *event_info) { Smart_Data *sd = data; - if (obj == sd->resize_obj) - elm_widget_focus_set(sd->obj, 1); + Evas_Object *op, *op2; + + op = elm_widget_parent_get(obj); + while (op) + { + op2 = elm_widget_parent_get(op); + if (!op2) break; + op = op2; + } + printf("focus off %p\n", op); + if (op) elm_widget_focused_object_clear(op); + printf("focus %p\n", sd->obj); + elm_widget_focus_set(sd->obj, 0); } /* externally accessible functions */ Modified: trunk/TMP/st/elementary/src/lib/els_scroller.c =================================================================== --- trunk/TMP/st/elementary/src/lib/els_scroller.c 2008-10-22 11:59:59 UTC (rev 36964) +++ trunk/TMP/st/elementary/src/lib/els_scroller.c 2008-10-22 12:00:16 UTC (rev 36965) @@ -617,6 +617,7 @@ sd = data; ev = event_info; + if (ev->event_flags & EVAS_EVENT_FLAG_ON_HOLD) return; elm_smart_scroller_child_pos_get(sd->smart_obj, &x, &y); sd->pan_func.max_get(sd->pan_obj, &mx, &my); evas_object_geometry_get(sd->pan_obj, NULL, NULL, &vw, &vh); |
From: Enlightenment S. <no-...@en...> - 2008-11-02 03:47:54
|
Log: for now turn off bgpixmap support. Author: raster Date: 2008-11-01 20:47:45 -0700 (Sat, 01 Nov 2008) New Revision: 37399 Modified: trunk/TMP/st/elementary/src/lib/elm_main.c Modified: trunk/TMP/st/elementary/src/lib/elm_main.c =================================================================== --- trunk/TMP/st/elementary/src/lib/elm_main.c 2008-11-02 03:46:16 UTC (rev 37398) +++ trunk/TMP/st/elementary/src/lib/elm_main.c 2008-11-02 03:47:45 UTC (rev 37399) @@ -36,7 +36,7 @@ _elm_config->thumbscroll_momentum_threshhold = 100.0; _elm_config->thumbscroll_friction = 1.0; _elm_config->scale = 1.0; - _elm_config->bgpixmap = 1; + _elm_config->bgpixmap = 0; _elm_config->compositing = 1; if ((_elm_config->engine == ELM_SOFTWARE_X11) || |
From: Enlightenment S. <no-...@en...> - 2008-11-02 11:00:24
|
Log: make some notes Author: raster Date: 2008-11-02 03:00:21 -0800 (Sun, 02 Nov 2008) New Revision: 37413 Modified: trunk/TMP/st/elementary/src/lib/Elementary.h Modified: trunk/TMP/st/elementary/src/lib/Elementary.h =================================================================== --- trunk/TMP/st/elementary/src/lib/Elementary.h 2008-11-02 10:47:55 UTC (rev 37412) +++ trunk/TMP/st/elementary/src/lib/Elementary.h 2008-11-02 11:00:21 UTC (rev 37413) @@ -286,6 +286,26 @@ // * frame needs to be able to use custom frame style // * button needs to be able to use custom frame style // * toggle needs to be able to use custom frame style +// * entry has no way to show its focused vs other entries +// * entry selection conflicts with finger scroll +// * toolbar widget (edje + box + button + separators) +// * listitem widget (simple label + icon) +// * radio widget + group handling +// * checkbox widget (like toggle) +// * entry needs to support setting selection to all, or clearing +// * entry click below text doesnt put cursor at end +// * bubble maybe needs icon + label at top? +// * need separator widget (h/v) +// * need slid-open "panel" that can hold stuff and optionally scroll +// * need "photoframe" widget (for contact photos?) +// * need calendar widget (select date) +// * need multi-sel (with button + hover + ...) +// * need slider widget +// * need range selector (select range of values from X to Y over an interval) +// * need a way to filter entry data for entry (eg for phone numbers) +// * entry needs to set vkbd properties/hint (as does win) +// * need to get toplevel +// * need "dialogbutton" widget (bigger button for bottom of wins) +// * need dialog window widget - #endif |
From: Enlightenment S. <no-...@en...> - 2008-11-15 05:18:40
|
Log: some notes for elm Author: raster Date: 2008-11-14 21:18:36 -0800 (Fri, 14 Nov 2008) New Revision: 37653 Modified: trunk/TMP/st/elementary/src/lib/Elementary.h Modified: trunk/TMP/st/elementary/src/lib/Elementary.h =================================================================== --- trunk/TMP/st/elementary/src/lib/Elementary.h 2008-11-15 05:17:24 UTC (rev 37652) +++ trunk/TMP/st/elementary/src/lib/Elementary.h 2008-11-15 05:18:36 UTC (rev 37653) @@ -308,5 +308,7 @@ // photos of contacts that match etc.) // * need imageview widget (for large not iconic images) // * labels with "" are 0x0 size, but with " " are correct vertically. check - +// * tiled image + zoom widget (tiled map viewer) +// * dialpad widget - need one with a phone dialpad +// * scale property from e - watch for changes. also allow for env var option #endif |
From: Enlightenment S. <no-...@en...> - 2008-11-15 06:09:09
|
Log: handle changes in scaling... a bit... Author: raster Date: 2008-11-14 22:09:04 -0800 (Fri, 14 Nov 2008) New Revision: 37654 Modified: trunk/TMP/st/elementary/src/lib/elm_button.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_widget.c trunk/TMP/st/elementary/src/lib/elm_win.c Modified: trunk/TMP/st/elementary/src/lib/elm_button.c =================================================================== --- trunk/TMP/st/elementary/src/lib/elm_button.c 2008-11-15 05:18:36 UTC (rev 37653) +++ trunk/TMP/st/elementary/src/lib/elm_button.c 2008-11-15 06:09:04 UTC (rev 37654) @@ -7,9 +7,11 @@ { Evas_Object *btn; Evas_Object *icon; + const char *label; }; static void _del_hook(Evas_Object *obj); +static void _theme_hook(Evas_Object *obj); static void _sizing_eval(Evas_Object *obj); static void _changed_size_hints(void *data, Evas *e, Evas_Object *obj, void *event_info); static void _sub_del(void *data, Evas_Object *obj, void *event_info); @@ -19,10 +21,30 @@ _del_hook(Evas_Object *obj) { Widget_Data *wd = elm_widget_data_get(obj); + if (wd->label) eina_stringshare_del(wd->label); free(wd); } static void +_theme_hook(Evas_Object *obj) +{ + const char *label; + Evas_Object *icon; + Widget_Data *wd = elm_widget_data_get(obj); + // FIXME: this is wrong. edje needs to handle more of this. + label = eina_stringshare_add(wd->label); + icon = wd->icon; + _elm_theme_set(wd->btn, "x", "base", "default"); + elm_button_label_set(obj, NULL); + elm_button_icon_set(obj, NULL); + _elm_theme_set(wd->btn, "button", "base", "default"); + elm_button_label_set(obj, label); + elm_button_icon_set(obj, icon); + eina_stringshare_del(label); + _sizing_eval(obj); +} + +static void _sizing_eval(Evas_Object *obj) { Widget_Data *wd = elm_widget_data_get(obj); @@ -76,6 +98,7 @@ obj = elm_widget_add(e); elm_widget_data_set(obj, wd); elm_widget_del_hook_set(obj, _del_hook); + elm_widget_theme_hook_set(obj, _theme_hook); wd->btn = edje_object_add(e); _elm_theme_set(wd->btn, "button", "base", "default"); @@ -94,13 +117,16 @@ Widget_Data *wd = elm_widget_data_get(obj); Evas_Coord mw, mh; + if (wd->label) eina_stringshare_del(wd->label); if (label) { + wd->label = eina_stringshare_add(label); edje_object_signal_emit(wd->btn, "elm,state,text,visible", "elm"); edje_object_message_signal_process(wd->btn); } else { + wd->label = NULL; edje_object_signal_emit(wd->btn, "elm,state,text,hidden", "elm"); edje_object_message_signal_process(wd->btn); } @@ -114,9 +140,9 @@ Widget_Data *wd = elm_widget_data_get(obj); if ((wd->icon != icon) && (wd->icon)) elm_widget_sub_object_del(obj, wd->icon); - wd->icon = icon; - if (icon) + if ((icon) && (wd->icon != icon)) { + wd->icon = icon; elm_widget_sub_object_add(obj, icon); edje_object_part_swallow(wd->btn, "elm.swallow.content", icon); edje_object_signal_emit(wd->btn, "elm,state,icon,visible", "elm"); @@ -124,4 +150,6 @@ _changed_size_hints, obj); _sizing_eval(obj); } + else + wd->icon = icon; } Modified: trunk/TMP/st/elementary/src/lib/elm_main.c =================================================================== --- trunk/TMP/st/elementary/src/lib/elm_main.c 2008-11-15 05:18:36 UTC (rev 37653) +++ trunk/TMP/st/elementary/src/lib/elm_main.c 2008-11-15 06:09:04 UTC (rev 37654) @@ -1,9 +1,15 @@ #include <Elementary.h> #include "elm_priv.h" +static int _elm_signal_exit(void *data, int ev_type, void *ev); +static int _elm_window_property_change(void *data, int ev_type, void *ev); +static void _elm_rescale(void); + char *_elm_appname = NULL; Elm_Config *_elm_config = NULL; - +Ecore_Event_Handler *_elm_event_property_change = NULL; +Ecore_X_Atom _elm_atom_enlightenment_scale = 0; + static int _elm_signal_exit(void *data, int ev_type, void *ev) { @@ -11,6 +17,40 @@ return 1; } +static int +_elm_window_property_change(void *data, int ev_type, void *ev) +{ + Ecore_X_Event_Window_Property *event = ev; + + if (event->win == ecore_x_window_root_first_get()) + { + if (event->atom == _elm_atom_enlightenment_scale) + { + int val = 1000; + + if (ecore_x_window_prop_card32_get(event->win, + event->atom, + &val, 1) > 0) + { + double pscale; + + pscale = _elm_config->scale; + if (val > 0) _elm_config->scale = (double)val / 1000.0; + if (pscale != _elm_config->scale) _elm_rescale(); + } + } + } + return 1; +} + +static void +_elm_rescale(void) +{ + printf("Scale %3.3f\n", _elm_config->scale); + edje_scale_set(_elm_config->scale); + _elm_win_rescale(); +} + EAPI void elm_init(int argc, char **argv) { @@ -47,15 +87,20 @@ int val = 1000; ecore_x_init(NULL); + _elm_atom_enlightenment_scale = ecore_x_atom_get("ENLIGHTENMENT_SCALE"); + ecore_x_event_mask_set(ecore_x_window_root_first_get(), + ECORE_X_EVENT_MASK_WINDOW_PROPERTY); + _elm_event_property_change = ecore_event_handler_add + (ECORE_X_EVENT_WINDOW_PROPERTY, _elm_window_property_change, NULL); if (ecore_x_window_prop_card32_get(ecore_x_window_root_first_get(), - ecore_x_atom_get("ENLIGHTENMENT_SCALE"), + _elm_atom_enlightenment_scale, &val, 1) > 0) { if (val > 0) _elm_config->scale = (double)val / 1000.0; } if (!ecore_x_screen_is_composited(0)) _elm_config->compositing = 0; - } + } } Modified: trunk/TMP/st/elementary/src/lib/elm_priv.h =================================================================== --- trunk/TMP/st/elementary/src/lib/elm_priv.h 2008-11-15 05:18:36 UTC (rev 37653) +++ trunk/TMP/st/elementary/src/lib/elm_priv.h 2008-11-15 06:09:04 UTC (rev 37654) @@ -35,6 +35,7 @@ #define ELM_NEW(t) calloc(1, sizeof(t)) void _elm_win_shutdown(void); +void _elm_win_rescale(void); int _elm_theme_set(Evas_Object *o, const char *clas, const char *group, const char *style); int _elm_theme_icon_set(Evas_Object *o, const char *group, const char *style); @@ -46,6 +47,8 @@ EAPI void elm_widget_focus_hook_set(Evas_Object *obj, void (*func) (Evas_Object *obj)); EAPI void elm_widget_activate_hook_set(Evas_Object *obj, void (*func) (Evas_Object *obj)); 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_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); EAPI void elm_widget_on_show_region_hook_set(Evas_Object *obj, void (*func) (void *data, Evas_Object *obj), void *data); Modified: trunk/TMP/st/elementary/src/lib/elm_widget.c =================================================================== --- trunk/TMP/st/elementary/src/lib/elm_widget.c 2008-11-15 05:18:36 UTC (rev 37653) +++ trunk/TMP/st/elementary/src/lib/elm_widget.c 2008-11-15 06:09:04 UTC (rev 37654) @@ -19,6 +19,7 @@ void (*focus_func) (Evas_Object *obj); void (*activate_func) (Evas_Object *obj); void (*disable_func) (Evas_Object *obj); + void (*theme_func) (Evas_Object *obj); void (*on_focus_func) (void *data, Evas_Object *obj); void *on_focus_data; void (*on_change_func) (void *data, Evas_Object *obj); @@ -111,6 +112,25 @@ } EAPI void +elm_widget_theme_hook_set(Evas_Object *obj, void (*func) (Evas_Object *obj)) +{ + API_ENTRY return; + sd->theme_func = func; +} + +EAPI void +elm_widget_theme(Evas_Object *obj) +{ + Eina_List *l; + + API_ENTRY return; + if (sd->theme_func) sd->theme_func(obj); + for (l = sd->subobjs; l; l = l->next) elm_widget_theme(l->data); + if (sd->resize_obj) elm_widget_theme(sd->resize_obj); + if (sd->hover_obj) elm_widget_theme(sd->hover_obj); +} + +EAPI void elm_widget_on_focus_hook_set(Evas_Object *obj, void (*func) (void *data, Evas_Object *obj), void *data) { API_ENTRY return; Modified: trunk/TMP/st/elementary/src/lib/elm_win.c =================================================================== --- trunk/TMP/st/elementary/src/lib/elm_win.c 2008-11-15 05:18:36 UTC (rev 37653) +++ trunk/TMP/st/elementary/src/lib/elm_win.c 2008-11-15 06:09:04 UTC (rev 37654) @@ -336,6 +336,14 @@ while (_elm_win_list) evas_object_del(_elm_win_list->data); } +void +_elm_win_rescale(void) +{ + Eina_List *l; + + for (l = _elm_win_list; l; l = l->next) elm_widget_theme(l->data); +} + EAPI Evas_Object * elm_win_add(Evas_Object *parent, const char *name, Elm_Win_Type type) { |
From: Enlightenment S. <no-...@en...> - 2008-11-15 13:59:01
|
Log: and make elm auto-scale much better on the fly - not perfect... but not to shabby. also in theory should cover theme changes on the fly... haven't tested. Author: raster Date: 2008-11-15 05:58:50 -0800 (Sat, 15 Nov 2008) New Revision: 37662 Modified: trunk/TMP/st/elementary/src/lib/Elementary.h trunk/TMP/st/elementary/src/lib/elm_bg.c trunk/TMP/st/elementary/src/lib/elm_bubble.c trunk/TMP/st/elementary/src/lib/elm_button.c trunk/TMP/st/elementary/src/lib/elm_clock.c trunk/TMP/st/elementary/src/lib/elm_entry.c trunk/TMP/st/elementary/src/lib/elm_frame.c trunk/TMP/st/elementary/src/lib/elm_hover.c trunk/TMP/st/elementary/src/lib/elm_icon.c trunk/TMP/st/elementary/src/lib/elm_label.c trunk/TMP/st/elementary/src/lib/elm_layout.c trunk/TMP/st/elementary/src/lib/elm_scroller.c trunk/TMP/st/elementary/src/lib/elm_toggle.c trunk/TMP/st/elementary/src/lib/elm_widget.c trunk/TMP/st/elementary/src/lib/els_scroller.c trunk/TMP/st/elementary/src/lib/els_scroller.h Modified: trunk/TMP/st/elementary/src/lib/Elementary.h =================================================================== --- trunk/TMP/st/elementary/src/lib/Elementary.h 2008-11-15 13:57:37 UTC (rev 37661) +++ trunk/TMP/st/elementary/src/lib/Elementary.h 2008-11-15 13:58:50 UTC (rev 37662) @@ -242,6 +242,7 @@ }; EAPI Evas_Object *elm_anchorview_add(Evas_Object *parent); EAPI void elm_anchorview_text_set(Evas_Object *obj, const char *text); + EAPI void elm_anchorview_hover_parent_set(Evas_Object *obj, Evas_Object *parent); EAPI void elm_anchorview_hover_style_set(Evas_Object *obj, const char *style); EAPI void elm_anchorview_hover_end(Evas_Object *obj); /* smart callbacks called: @@ -264,6 +265,7 @@ }; EAPI Evas_Object *elm_anchorblock_add(Evas_Object *parent); EAPI void elm_anchorblock_text_set(Evas_Object *obj, const char *text); + EAPI void elm_anchorblock_hover_parent_set(Evas_Object *obj, Evas_Object *parent); EAPI void elm_anchorblock_hover_style_set(Evas_Object *obj, const char *style); EAPI void elm_anchorblock_hover_end(Evas_Object *obj); /* smart callbacks called: @@ -272,7 +274,7 @@ EAPI Evas_Object *elm_bubble_add(Evas_Object *parent); EAPI void elm_bubble_label_set(Evas_Object *obj, const char *label); - EAPI void elm_bubble_info_set(Evas_Object *obj, const char *label); + EAPI void elm_bubble_info_set(Evas_Object *obj, const char *info); EAPI void elm_bubble_content_set(Evas_Object *obj, Evas_Object *content); EAPI void elm_bubble_icon_set(Evas_Object *obj, Evas_Object *icon); /* smart callbacks called: Modified: trunk/TMP/st/elementary/src/lib/elm_bg.c =================================================================== --- trunk/TMP/st/elementary/src/lib/elm_bg.c 2008-11-15 13:57:37 UTC (rev 37661) +++ trunk/TMP/st/elementary/src/lib/elm_bg.c 2008-11-15 13:58:50 UTC (rev 37662) @@ -20,6 +20,13 @@ } static void +_theme_hook(Evas_Object *obj) +{ + Widget_Data *wd = elm_widget_data_get(obj); + _elm_theme_set(wd->img, "bg", "base", "default"); +} + +static void _custom_resize(void *data, Evas *a, Evas_Object *obj, void *event_info) { Widget_Data *wd = data; @@ -54,6 +61,7 @@ obj = elm_widget_add(e); elm_widget_data_set(obj, wd); elm_widget_del_hook_set(obj, _del_hook); + elm_widget_theme_hook_set(obj, _theme_hook); elm_widget_can_focus_set(obj, 0); wd->img = edje_object_add(e); Modified: trunk/TMP/st/elementary/src/lib/elm_bubble.c =================================================================== --- trunk/TMP/st/elementary/src/lib/elm_bubble.c 2008-11-15 13:57:37 UTC (rev 37661) +++ trunk/TMP/st/elementary/src/lib/elm_bubble.c 2008-11-15 13:58:50 UTC (rev 37662) @@ -7,9 +7,11 @@ { Evas_Object *bbl; Evas_Object *content, *icon; + const char *label, *info; }; static void _del_hook(Evas_Object *obj); +static void _theme_hook(Evas_Object *obj); static void _sizing_eval(Evas_Object *obj); static void _changed_size_hints(void *data, Evas *e, Evas_Object *obj, void *event_info); static void _sub_del(void *data, Evas_Object *obj, void *event_info); @@ -18,10 +20,22 @@ _del_hook(Evas_Object *obj) { Widget_Data *wd = elm_widget_data_get(obj); + if (wd->label) eina_stringshare_del(wd->label); + if (wd->info) eina_stringshare_del(wd->info); free(wd); } static void +_theme_hook(Evas_Object *obj) +{ + Widget_Data *wd = elm_widget_data_get(obj); + _elm_theme_set(wd->bbl, "bubble", "base", "default"); + edje_object_part_text_set(wd->bbl, "elm.text", wd->label); + edje_object_part_text_set(wd->bbl, "elm.info", wd->info); + _sizing_eval(obj); +} + +static void _sizing_eval(Evas_Object *obj) { Widget_Data *wd = elm_widget_data_get(obj); @@ -76,6 +90,7 @@ obj = elm_widget_add(e); elm_widget_data_set(obj, wd); elm_widget_del_hook_set(obj, _del_hook); + elm_widget_theme_hook_set(obj, _theme_hook); wd->bbl = edje_object_add(e); _elm_theme_set(wd->bbl, "bubble", "base", "default"); @@ -91,15 +106,21 @@ elm_bubble_label_set(Evas_Object *obj, const char *label) { Widget_Data *wd = elm_widget_data_get(obj); + if (wd->label) eina_stringshare_del(wd->label); + if (label) wd->label = eina_stringshare_add(label); + else wd->label = NULL; edje_object_part_text_set(wd->bbl, "elm.text", label); _sizing_eval(obj); } EAPI void -elm_bubble_info_set(Evas_Object *obj, const char *label) +elm_bubble_info_set(Evas_Object *obj, const char *info) { Widget_Data *wd = elm_widget_data_get(obj); - edje_object_part_text_set(wd->bbl, "elm.info", label); + if (wd->info) eina_stringshare_del(wd->info); + if (info) wd->info = eina_stringshare_add(info); + else wd->info = NULL; + edje_object_part_text_set(wd->bbl, "elm.info", info); _sizing_eval(obj); } Modified: trunk/TMP/st/elementary/src/lib/elm_button.c =================================================================== --- trunk/TMP/st/elementary/src/lib/elm_button.c 2008-11-15 13:57:37 UTC (rev 37661) +++ trunk/TMP/st/elementary/src/lib/elm_button.c 2008-11-15 13:58:50 UTC (rev 37662) @@ -28,19 +28,18 @@ static void _theme_hook(Evas_Object *obj) { - const char *label; - Evas_Object *icon; Widget_Data *wd = elm_widget_data_get(obj); - // FIXME: this is wrong. edje needs to handle more of this. - label = eina_stringshare_add(wd->label); - icon = wd->icon; - _elm_theme_set(wd->btn, "x", "base", "default"); - elm_button_label_set(obj, NULL); - elm_button_icon_set(obj, NULL); _elm_theme_set(wd->btn, "button", "base", "default"); - elm_button_label_set(obj, label); - elm_button_icon_set(obj, icon); - eina_stringshare_del(label); + if (wd->label) + edje_object_signal_emit(wd->btn, "elm,state,text,visible", "elm"); + else + edje_object_signal_emit(wd->btn, "elm,state,text,hidden", "elm"); + if (wd->icon) + edje_object_signal_emit(wd->btn, "elm,state,icon,visible", "elm"); + else + edje_object_signal_emit(wd->btn, "elm,state,icon,hidden", "elm"); + edje_object_part_text_set(wd->btn, "elm.text", wd->label); + edje_object_message_signal_process(wd->btn); _sizing_eval(obj); } @@ -75,6 +74,7 @@ evas_object_event_callback_del (sub, EVAS_CALLBACK_CHANGED_SIZE_HINTS, _changed_size_hints); wd->icon = NULL; + edje_object_message_signal_process(wd->btn); _sizing_eval(obj); } } @@ -148,6 +148,7 @@ edje_object_signal_emit(wd->btn, "elm,state,icon,visible", "elm"); evas_object_event_callback_add(icon, EVAS_CALLBACK_CHANGED_SIZE_HINTS, _changed_size_hints, obj); + edje_object_message_signal_process(wd->btn); _sizing_eval(obj); } else Modified: trunk/TMP/st/elementary/src/lib/elm_clock.c =================================================================== --- trunk/TMP/st/elementary/src/lib/elm_clock.c 2008-11-15 13:57:37 UTC (rev 37661) +++ trunk/TMP/st/elementary/src/lib/elm_clock.c 2008-11-15 13:58:50 UTC (rev 37662) @@ -23,6 +23,7 @@ }; static void _del_hook(Evas_Object *obj); +static void _theme_hook(Evas_Object *obj); static int _ticker(void *data); static void _signal_clock_val_up(void *data, Evas_Object *obj, const char *emission, const char *source); static void _signal_clock_val_down(void *data, Evas_Object *obj, const char *emission, const char *source); @@ -42,6 +43,14 @@ free(wd); } +static void +_theme_hook(Evas_Object *obj) +{ + Widget_Data *wd = elm_widget_data_get(obj); + wd->cur.am_pm = !wd->cur.am_pm; /* hack - force update */ + _time_update(obj); +} + static int _ticker(void *data) { @@ -350,6 +359,7 @@ obj = elm_widget_add(e); elm_widget_data_set(obj, wd); elm_widget_del_hook_set(obj, _del_hook); + elm_widget_theme_hook_set(obj, _theme_hook); wd->clk = edje_object_add(e); elm_widget_resize_object_set(obj, wd->clk); Modified: trunk/TMP/st/elementary/src/lib/elm_entry.c =================================================================== --- trunk/TMP/st/elementary/src/lib/elm_entry.c 2008-11-15 13:57:37 UTC (rev 37661) +++ trunk/TMP/st/elementary/src/lib/elm_entry.c 2008-11-15 13:58:50 UTC (rev 37662) @@ -16,9 +16,11 @@ }; static void _del_hook(Evas_Object *obj); +static void _theme_hook(Evas_Object *obj); static void _sizing_eval(Evas_Object *obj); static void _on_focus_hook(void *data, Evas_Object *obj); static void _resize(void *data, Evas *e, Evas_Object *obj, void *event_info); +static const char *_getbase(Evas_Object *obj); static void _signal_entry_changed(void *data, Evas_Object *obj, const char *emission, const char *source); static void _signal_selection_start(void *data, Evas_Object *obj, const char *emission, const char *source); static void _signal_selection_changed(void *data, Evas_Object *obj, const char *emission, const char *source); @@ -37,6 +39,19 @@ } static void +_theme_hook(Evas_Object *obj) +{ + Widget_Data *wd = elm_widget_data_get(obj); + char *t; + t = elm_entry_entry_get(obj); + if (t) t = strdup(t); + _elm_theme_set(wd->ent, "entry", _getbase(obj), "default"); + elm_entry_entry_set(obj, t); + if (t) free(t); + _sizing_eval(obj); +} + +static void _elm_win_recalc_job(void *data) { Widget_Data *wd = elm_widget_data_get(data); @@ -95,6 +110,39 @@ evas_object_geometry_get(wd->ent, NULL, NULL, &ww, &hh); } +static const char * +_getbase(Evas_Object *obj) +{ + Widget_Data *wd = elm_widget_data_get(obj); + if (wd->editable) + { + if (wd->password) return "base-password"; + else + { + if (wd->single_line) return "base-single"; + else + { + if (wd->linewrap) return "base"; + else return "base-nowrap"; + } + } + } + else + { + if (wd->password) return "base-password"; + else + { + if (wd->single_line) return "base-single-noedit"; + else + { + if (wd->linewrap) return "base-noedit"; + else return "base-nowrap-noedit"; + } + } + } + return "base"; +} + static void _signal_entry_changed(void *data, Evas_Object *obj, const char *emission, const char *source) { @@ -268,6 +316,7 @@ elm_widget_on_focus_hook_set(obj, _on_focus_hook, NULL); elm_widget_data_set(obj, wd); elm_widget_del_hook_set(obj, _del_hook); + elm_widget_theme_hook_set(obj, _theme_hook); elm_widget_can_focus_set(obj, 1); wd->linewrap = 1; @@ -295,39 +344,6 @@ return obj; } -static const char * -_getbase(Evas_Object *obj) -{ - Widget_Data *wd = elm_widget_data_get(obj); - if (wd->editable) - { - if (wd->password) return "base-password"; - else - { - if (wd->single_line) return "base-single"; - else - { - if (wd->linewrap) return "base"; - else return "base-nowrap"; - } - } - } - else - { - if (wd->password) return "base-password"; - else - { - if (wd->single_line) return "base-single-noedit"; - else - { - if (wd->linewrap) return "base-noedit"; - else return "base-nowrap-noedit"; - } - } - } - return "base"; -} - EAPI void elm_entry_single_line_set(Evas_Object *obj, Evas_Bool single_line) { @@ -366,7 +382,6 @@ { Widget_Data *wd = elm_widget_data_get(obj); edje_object_part_text_set(wd->ent, "elm.text", entry); - // debug #if 0 { Modified: trunk/TMP/st/elementary/src/lib/elm_frame.c =================================================================== --- trunk/TMP/st/elementary/src/lib/elm_frame.c 2008-11-15 13:57:37 UTC (rev 37661) +++ trunk/TMP/st/elementary/src/lib/elm_frame.c 2008-11-15 13:58:50 UTC (rev 37662) @@ -10,6 +10,7 @@ }; static void _del_hook(Evas_Object *obj); +static void _theme_hook(Evas_Object *obj); static void _sizing_eval(Evas_Object *obj); static void _changed_size_hints(void *data, Evas *e, Evas_Object *obj, void *event_info); static void _sub_del(void *data, Evas_Object *obj, void *event_info); @@ -22,6 +23,12 @@ } static void +_theme_hook(Evas_Object *obj) +{ + _sizing_eval(obj); +} + +static void _sizing_eval(Evas_Object *obj) { Widget_Data *wd = elm_widget_data_get(obj); @@ -66,6 +73,7 @@ obj = elm_widget_add(e); elm_widget_data_set(obj, wd); elm_widget_del_hook_set(obj, _del_hook); + elm_widget_theme_hook_set(obj, _theme_hook); wd->frm = edje_object_add(e); _elm_theme_set(wd->frm, "frame", "base", "default"); Modified: trunk/TMP/st/elementary/src/lib/elm_hover.c =================================================================== --- trunk/TMP/st/elementary/src/lib/elm_hover.c 2008-11-15 13:57:37 UTC (rev 37661) +++ trunk/TMP/st/elementary/src/lib/elm_hover.c 2008-11-15 13:58:50 UTC (rev 37662) @@ -11,6 +11,7 @@ Evas_Object *offset, *size; Evas_Object *parent, *target; Eina_List *subs; + const char *style; }; struct _Subinfo @@ -21,9 +22,12 @@ static void _del_pre_hook(Evas_Object *obj); static void _del_hook(Evas_Object *obj); +static void _theme_hook(Evas_Object *obj); static void _sizing_eval(Evas_Object *obj); +static void _reval_content(Evas_Object *obj); static void _changed_size_hints(void *data, Evas *e, Evas_Object *obj, void *event_info); static void _sub_del(void *data, Evas_Object *obj, void *event_info); +static void _hov_show_do(Evas_Object *obj); static void _hov_move(void *data, Evas *e, Evas_Object *obj, void *event_info); static void _hov_resize(void *data, Evas *e, Evas_Object *obj, void *event_info); static void _hov_show(void *data, Evas *e, Evas_Object *obj, void *event_info); @@ -46,6 +50,7 @@ evas_stringshare_del(si->swallow); free(si); } + if (wd->style) eina_stringshare_del(wd->style); } static void @@ -56,6 +61,22 @@ } static void +_theme_hook(Evas_Object *obj) +{ + Widget_Data *wd = elm_widget_data_get(obj); + // FIXME: hover contents doesnt seem to propagate resizes properly + if (wd->style) + _elm_theme_set(wd->cov, "hover", "base", wd->style); + else + _elm_theme_set(wd->cov, "hover", "base", "default"); + edje_object_message_signal_process(wd->cov); + _reval_content(obj); + _sizing_eval(obj); + if (evas_object_visible_get(wd->cov)) _hov_show_do(obj); +} + + +static void _sizing_eval(Evas_Object *obj) { Widget_Data *wd = elm_widget_data_get(obj); @@ -72,6 +93,18 @@ } static void +_reval_content(Evas_Object *obj) +{ + Widget_Data *wd = elm_widget_data_get(obj); + Eina_List *l; + for (l = wd->subs; l; l = l->next) + { + Subinfo *si = l->data; + edje_object_part_swallow(wd->hov, si->swallow, si->obj); + } +} + +static void _changed_size_hints(void *data, Evas *e, Evas_Object *obj, void *event_info) { Widget_Data *wd = elm_widget_data_get(data); @@ -81,7 +114,7 @@ Subinfo *si = l->data; if (si->obj == obj) { - edje_object_part_swallow(wd->hov, si->swallow, obj); + edje_object_part_swallow(wd->hov, si->swallow, si->obj); break; } } @@ -110,23 +143,10 @@ } static void -_hov_move(void *data, Evas *e, Evas_Object *obj, void *event_info) +_hov_show_do(Evas_Object *obj) { - _sizing_eval(data); -} - -static void -_hov_resize(void *data, Evas *e, Evas_Object *obj, void *event_info) -{ - _sizing_eval(data); -} - -static void -_hov_show(void *data, Evas *e, Evas_Object *obj, void *event_info) -{ - Widget_Data *wd = elm_widget_data_get(data); + Widget_Data *wd = elm_widget_data_get(obj); Eina_List *l; - // FIXME: use signals for show for hov if (wd->cov) { evas_object_show(wd->cov); @@ -146,11 +166,28 @@ } static void +_hov_move(void *data, Evas *e, Evas_Object *obj, void *event_info) +{ + _sizing_eval(data); +} + +static void +_hov_resize(void *data, Evas *e, Evas_Object *obj, void *event_info) +{ + _sizing_eval(data); +} + +static void +_hov_show(void *data, Evas *e, Evas_Object *obj, void *event_info) +{ + _hov_show_do(data); +} + +static void _hov_hide(void *data, Evas *e, Evas_Object *obj, void *event_info) { Widget_Data *wd = elm_widget_data_get(data); Eina_List *l; - // FIXME: use signals for hide for hov if (wd->cov) { edje_object_signal_emit(wd->cov, "elm,action,hide", "elm"); @@ -229,6 +266,7 @@ obj = elm_widget_add(e); elm_widget_data_set(obj, wd); elm_widget_del_pre_hook_set(obj, _del_pre_hook); + elm_widget_theme_hook_set(obj, _theme_hook); elm_widget_del_hook_set(obj, _del_hook); wd->hov = evas_object_rectangle_add(e); @@ -329,7 +367,6 @@ { elm_widget_sub_object_add(obj, content); edje_object_part_swallow(wd->cov, buf, content); - evas_object_event_callback_add(content, EVAS_CALLBACK_CHANGED_SIZE_HINTS, _changed_size_hints, obj); si = ELM_NEW(Subinfo); @@ -344,6 +381,10 @@ elm_hover_style_set(Evas_Object *obj, const char *style) { Widget_Data *wd = elm_widget_data_get(obj); + if (wd->style) eina_stringshare_del(wd->style); + if (style) wd->style = eina_stringshare_add(style); + else wd->style = NULL; _elm_theme_set(wd->cov, "hover", "base", style); + _reval_content(obj); _sizing_eval(obj); } Modified: trunk/TMP/st/elementary/src/lib/elm_icon.c =================================================================== --- trunk/TMP/st/elementary/src/lib/elm_icon.c 2008-11-15 13:57:37 UTC (rev 37661) +++ trunk/TMP/st/elementary/src/lib/elm_icon.c 2008-11-15 13:58:50 UTC (rev 37662) @@ -6,6 +6,7 @@ struct _Widget_Data { Evas_Object *img; + const char *stdicon; Evas_Bool scale_up : 1; Evas_Bool scale_down : 1; Evas_Bool smooth : 1; @@ -14,6 +15,7 @@ }; static void _del_hook(Evas_Object *obj); +static void _theme_hook(Evas_Object *obj); static void _sizing_eval(Evas_Object *obj); static void _mouse_up(void *data, Evas_Object *obj, void *event_info); @@ -21,10 +23,20 @@ _del_hook(Evas_Object *obj) { Widget_Data *wd = elm_widget_data_get(obj); + if (wd->stdicon) eina_stringshare_del(wd->stdicon); free(wd); } static void +_theme_hook(Evas_Object *obj) +{ + Widget_Data *wd = elm_widget_data_get(obj); + if (wd->stdicon) + _elm_theme_icon_set(wd->img, wd->stdicon, "default"); + _sizing_eval(obj); +} + +static void _sizing_eval(Evas_Object *obj) { Widget_Data *wd = elm_widget_data_get(obj); @@ -74,6 +86,7 @@ obj = elm_widget_add(e); elm_widget_data_set(obj, wd); elm_widget_del_hook_set(obj, _del_hook); + elm_widget_theme_hook_set(obj, _theme_hook); elm_widget_can_focus_set(obj, 0); wd->img = _els_smart_icon_add(e); @@ -97,6 +110,8 @@ const char *p; if (!file) return; + if (wd->stdicon) eina_stringshare_del(wd->stdicon); + wd->stdicon = NULL; if (((p = strrchr(file, '.'))) && (!strcasecmp(p, ".edj"))) _els_smart_icon_file_edje_set(wd->img, file, group); else @@ -110,6 +125,8 @@ Widget_Data *wd = elm_widget_data_get(obj); if (!name) return; + if (wd->stdicon) eina_stringshare_del(wd->stdicon); + wd->stdicon = eina_stringshare_add(name); _elm_theme_icon_set(wd->img, name, "default"); _sizing_eval(obj); } Modified: trunk/TMP/st/elementary/src/lib/elm_label.c =================================================================== --- trunk/TMP/st/elementary/src/lib/elm_label.c 2008-11-15 13:57:37 UTC (rev 37661) +++ trunk/TMP/st/elementary/src/lib/elm_label.c 2008-11-15 13:58:50 UTC (rev 37662) @@ -9,6 +9,7 @@ }; static void _del_hook(Evas_Object *obj); +static void _theme_hook(Evas_Object *obj); static void _sizing_eval(Evas_Object *obj); static void @@ -19,6 +20,12 @@ } static void +_theme_hook(Evas_Object *obj) +{ + _sizing_eval(obj); +} + +static void _sizing_eval(Evas_Object *obj) { Widget_Data *wd = elm_widget_data_get(obj); @@ -41,6 +48,7 @@ obj = elm_widget_add(e); elm_widget_data_set(obj, wd); elm_widget_del_hook_set(obj, _del_hook); + elm_widget_theme_hook_set(obj, _theme_hook); elm_widget_can_focus_set(obj, 0); wd->lbl = edje_object_add(e); Modified: trunk/TMP/st/elementary/src/lib/elm_layout.c =================================================================== --- trunk/TMP/st/elementary/src/lib/elm_layout.c 2008-11-15 13:57:37 UTC (rev 37661) +++ trunk/TMP/st/elementary/src/lib/elm_layout.c 2008-11-15 13:58:50 UTC (rev 37662) @@ -17,6 +17,7 @@ }; static void _del_hook(Evas_Object *obj); +static void _theme_hook(Evas_Object *obj); static void _sizing_eval(Evas_Object *obj); static void _changed_size_hints(void *data, Evas *e, Evas_Object *obj, void *event_info); static void _sub_del(void *data, Evas_Object *obj, void *event_info); @@ -36,6 +37,12 @@ } static void +_theme_hook(Evas_Object *obj) +{ + _sizing_eval(obj); +} + +static void _sizing_eval(Evas_Object *obj) { Widget_Data *wd = elm_widget_data_get(obj); @@ -97,6 +104,7 @@ obj = elm_widget_add(e); elm_widget_data_set(obj, wd); elm_widget_del_hook_set(obj, _del_hook); + elm_widget_theme_hook_set(obj, _theme_hook); wd->lay = edje_object_add(e); elm_widget_resize_object_set(obj, wd->lay); Modified: trunk/TMP/st/elementary/src/lib/elm_scroller.c =================================================================== --- trunk/TMP/st/elementary/src/lib/elm_scroller.c 2008-11-15 13:57:37 UTC (rev 37661) +++ trunk/TMP/st/elementary/src/lib/elm_scroller.c 2008-11-15 13:58:50 UTC (rev 37662) @@ -12,6 +12,7 @@ }; static void _del_hook(Evas_Object *obj); +static void _theme_hook(Evas_Object *obj); static void _show_region_hook(void *data, Evas_Object *obj); static void _sizing_eval(Evas_Object *obj); static void _sub_del(void *data, Evas_Object *obj, void *event_info); @@ -24,6 +25,14 @@ } static void +_theme_hook(Evas_Object *obj) +{ + Widget_Data *wd = elm_widget_data_get(obj); + elm_smart_scroller_theme_set(wd->scr, "default"); + _sizing_eval(obj); +} + +static void _show_region_hook(void *data, Evas_Object *obj) { Widget_Data *wd = elm_widget_data_get(data); @@ -104,6 +113,7 @@ obj = elm_widget_add(e); elm_widget_data_set(obj, wd); elm_widget_del_hook_set(obj, _del_hook); + elm_widget_theme_hook_set(obj, _theme_hook); wd->scr = elm_smart_scroller_add(e); elm_widget_resize_object_set(obj, wd->scr); Modified: trunk/TMP/st/elementary/src/lib/elm_toggle.c =================================================================== --- trunk/TMP/st/elementary/src/lib/elm_toggle.c 2008-11-15 13:57:37 UTC (rev 37661) +++ trunk/TMP/st/elementary/src/lib/elm_toggle.c 2008-11-15 13:58:50 UTC (rev 37662) @@ -9,9 +9,12 @@ Evas_Object *icon; Evas_Bool state; Evas_Bool *statep; + const char *label; + const char *ontext, *offtext; }; static void _del_hook(Evas_Object *obj); +static void _theme_hook(Evas_Object *obj); static void _sizing_eval(Evas_Object *obj); static void _changed_size_hints(void *data, Evas *e, Evas_Object *obj, void *event_info); static void _sub_del(void *data, Evas_Object *obj, void *event_info); @@ -22,10 +25,37 @@ _del_hook(Evas_Object *obj) { Widget_Data *wd = elm_widget_data_get(obj); + if (wd->label) eina_stringshare_del(wd->label); + if (wd->ontext) eina_stringshare_del(wd->ontext); + if (wd->offtext) eina_stringshare_del(wd->offtext); free(wd); } static void +_theme_hook(Evas_Object *obj) +{ + Widget_Data *wd = elm_widget_data_get(obj); + _elm_theme_set(wd->tgl, "toggle", "base", "default"); + if (wd->icon) + edje_object_signal_emit(wd->tgl, "elm,state,icon,visible", "elm"); + else + edje_object_signal_emit(wd->tgl, "elm,state,icon,hidden", "elm"); + if (wd->state) + edje_object_signal_emit(wd->tgl, "elm,state,toggle,on", "elm"); + else + edje_object_signal_emit(wd->tgl, "elm,state,toggle,off", "elm"); + if (wd->label) + edje_object_signal_emit(wd->tgl, "elm,state,text,visible", "elm"); + else + edje_object_signal_emit(wd->tgl, "elm,state,text,hidden", "elm"); + edje_object_part_text_set(wd->tgl, "elm.text", wd->label); + edje_object_part_text_set(wd->tgl, "elm.ontext", wd->ontext); + edje_object_part_text_set(wd->tgl, "elm.offtext", wd->offtext); + edje_object_message_signal_process(wd->tgl); + _sizing_eval(obj); +} + +static void _sizing_eval(Evas_Object *obj) { Widget_Data *wd = elm_widget_data_get(obj); @@ -90,12 +120,17 @@ obj = elm_widget_add(e); elm_widget_data_set(obj, wd); elm_widget_del_hook_set(obj, _del_hook); + elm_widget_theme_hook_set(obj, _theme_hook); wd->tgl = edje_object_add(e); _elm_theme_set(wd->tgl, "toggle", "base", "default"); + wd->ontext = eina_stringshare_add("ON"); + wd->offtext = eina_stringshare_add("OFF"); edje_object_signal_callback_add(wd->tgl, "elm,action,toggle,on", "", _signal_toggle_on, obj); edje_object_signal_callback_add(wd->tgl, "elm,action,toggle,off", "", _signal_toggle_off, obj); elm_widget_resize_object_set(obj, wd->tgl); + edje_object_part_text_set(wd->tgl, "elm.ontext", wd->ontext); + edje_object_part_text_set(wd->tgl, "elm.offtext", wd->offtext); evas_object_smart_callback_add(obj, "sub-object-del", _sub_del, obj); @@ -108,14 +143,17 @@ { Widget_Data *wd = elm_widget_data_get(obj); Evas_Coord mw, mh; - + + if (wd->label) eina_stringshare_del(wd->label); if (label) { + wd->label = eina_stringshare_add(label); edje_object_signal_emit(wd->tgl, "elm,state,text,visible", "elm"); edje_object_message_signal_process(wd->tgl); } else { + wd->label = NULL; edje_object_signal_emit(wd->tgl, "elm,state,text,hidden", "elm"); edje_object_message_signal_process(wd->tgl); } @@ -145,6 +183,12 @@ elm_toggle_states_labels_set(Evas_Object *obj, const char *onlabel, const char *offlabel) { Widget_Data *wd = elm_widget_data_get(obj); + if (wd->ontext) eina_stringshare_del(wd->ontext); + if (wd->offtext) eina_stringshare_del(wd->offtext); + if (onlabel) wd->ontext = eina_stringshare_add(onlabel); + else wd->ontext = NULL; + if (offlabel) wd->offtext = eina_stringshare_add(offlabel); + else wd->offtext = NULL; edje_object_part_text_set(wd->tgl, "elm.ontext", onlabel); edje_object_part_text_set(wd->tgl, "elm.offtext", offlabel); _sizing_eval(obj); Modified: trunk/TMP/st/elementary/src/lib/elm_widget.c =================================================================== --- trunk/TMP/st/elementary/src/lib/elm_widget.c 2008-11-15 13:57:37 UTC (rev 37661) +++ trunk/TMP/st/elementary/src/lib/elm_widget.c 2008-11-15 13:58:50 UTC (rev 37662) @@ -124,10 +124,10 @@ Eina_List *l; API_ENTRY return; - if (sd->theme_func) sd->theme_func(obj); for (l = sd->subobjs; l; l = l->next) elm_widget_theme(l->data); if (sd->resize_obj) elm_widget_theme(sd->resize_obj); if (sd->hover_obj) elm_widget_theme(sd->hover_obj); + if (sd->theme_func) sd->theme_func(obj); } EAPI void Modified: trunk/TMP/st/elementary/src/lib/els_scroller.c =================================================================== --- trunk/TMP/st/elementary/src/lib/els_scroller.c 2008-11-15 13:57:37 UTC (rev 37661) +++ trunk/TMP/st/elementary/src/lib/els_scroller.c 2008-11-15 13:58:50 UTC (rev 37662) @@ -337,6 +337,18 @@ return sd->one_dir_at_a_time; } +void +elm_smart_scroller_theme_set(Evas_Object *obj, const char *style) +{ + API_ENTRY return; + _elm_theme_set(sd->edje_obj, "scroller", "base", style); + if (sd->pan_obj) + edje_object_part_swallow(sd->edje_obj, "elm.swallow.content", sd->pan_obj); + sd->vbar_visible = !sd->vbar_visible; + sd->hbar_visible = !sd->hbar_visible; + _smart_scrollbar_bar_visibility_adjust(sd); +} + /* local subsystem functions */ static void _smart_edje_drag_v(void *data, Evas_Object *obj, const char *emission, const char *source) Modified: trunk/TMP/st/elementary/src/lib/els_scroller.h =================================================================== --- trunk/TMP/st/elementary/src/lib/els_scroller.h 2008-11-15 13:57:37 UTC (rev 37661) +++ trunk/TMP/st/elementary/src/lib/els_scroller.h 2008-11-15 13:58:50 UTC (rev 37662) @@ -23,3 +23,5 @@ Evas_Object *elm_smart_scroller_edje_object_get (Evas_Object *obj); void elm_smart_scroller_single_dir_set (Evas_Object *obj, Evas_Bool single_dir); Evas_Bool elm_smart_scroller_single_dir_get (Evas_Object *obj); +void elm_smart_scroller_theme_set (Evas_Object *obj, const char *style); + |
From: Enlightenment S. <no-...@en...> - 2008-11-16 12:18:51
|
Log: change note - done already, but add new one in its place Author: raster Date: 2008-11-16 04:18:48 -0800 (Sun, 16 Nov 2008) New Revision: 37672 Modified: trunk/TMP/st/elementary/src/lib/Elementary.h Modified: trunk/TMP/st/elementary/src/lib/Elementary.h =================================================================== --- trunk/TMP/st/elementary/src/lib/Elementary.h 2008-11-16 12:17:42 UTC (rev 37671) +++ trunk/TMP/st/elementary/src/lib/Elementary.h 2008-11-16 12:18:48 UTC (rev 37672) @@ -293,7 +293,7 @@ // * checkbox widget (like toggle) // * entry needs to support setting selection to all, or clearing // * entry click below text doesnt put cursor at end -// * bubble maybe needs icon + label at top? +// * bubble should allow style (left/right + top/bottom) // * need separator widget (h/v) // * need slid-open "panel" that can hold stuff and optionally scroll // * need "photoframe" widget (for contact photos?) |
From: Enlightenment S. <no-...@en...> - 2008-11-16 12:22:21
|
Log: more notes! Author: raster Date: 2008-11-16 04:22:18 -0800 (Sun, 16 Nov 2008) New Revision: 37673 Modified: trunk/TMP/st/elementary/src/lib/Elementary.h Modified: trunk/TMP/st/elementary/src/lib/Elementary.h =================================================================== --- trunk/TMP/st/elementary/src/lib/Elementary.h 2008-11-16 12:18:48 UTC (rev 37672) +++ trunk/TMP/st/elementary/src/lib/Elementary.h 2008-11-16 12:22:18 UTC (rev 37673) @@ -295,7 +295,7 @@ // * entry click below text doesnt put cursor at end // * bubble should allow style (left/right + top/bottom) // * need separator widget (h/v) -// * need slid-open "panel" that can hold stuff and optionally scroll +// * need slide-open "panel" that can hold stuff and optionally scroll // * need "photoframe" widget (for contact photos?) // * need calendar widget (select date) // * need multi-sel (with button + hover + ...) @@ -311,8 +311,7 @@ // * need imageview widget (for large not iconic images) // * tiled image + zoom widget (tiled map viewer) // * dialpad widget - need one with a phone dialpad -// * scale property from e - watch for changes. also allow for env var option -// * on the fly theme changes - test +// * on the fly theme changes - test (should work) // * single line entry on scale change adds newlines // * scale change for hover doesnt seem to do new size alloc nicely // * left/right arrow broken with password mode for entry |
From: Enlightenment S. <no-...@en...> - 2008-11-18 01:41:54
|
Log: notes! Author: raster Date: 2008-11-17 17:41:49 -0800 (Mon, 17 Nov 2008) New Revision: 37693 Modified: trunk/TMP/st/elementary/src/lib/Elementary.h Modified: trunk/TMP/st/elementary/src/lib/Elementary.h =================================================================== --- trunk/TMP/st/elementary/src/lib/Elementary.h 2008-11-17 14:20:08 UTC (rev 37692) +++ trunk/TMP/st/elementary/src/lib/Elementary.h 2008-11-18 01:41:49 UTC (rev 37693) @@ -279,26 +279,28 @@ EAPI void elm_bubble_icon_set(Evas_Object *obj, Evas_Object *icon); /* smart callbacks called: */ - -// FIXME: fixes to do -// (bugs) -// * entry click below text doesnt put cursor at end + + //////////////////////// + /// FIXME: TODO LIST /// +//////////////////////// +// +//// (bugs - high priority) // * single line entry on scale change adds newlines // * scale change for hover doesnt seem to do new size alloc nicely // * left/right arrow broken with password mode for entry // * for some reason on oe builds of elementary initial text set doesnt work. // -// (incomplete) +//// (incomplete - medium priority) // * disabled not supported // * tab widget focusing (not useful for touchscreen tho...) // * entry needs to support setting selection to all, or clearing // * bubble should allow style (left/right + top/bottom) -// * need to get toplevel +// * need to get toplevel object (win) // * entry needs to set vkbd properties/hint (as does win) // * entry selection conflicts with finger scroll // * on the fly theme changes - test (should work) // -// (more widgets/features) +//// (more widgets/features - medium priority) // * toolbar widget (edje + box + button + separators) // * listitem widget (simple label + icon) // * radio widget + group handling @@ -318,7 +320,7 @@ // * tiled image + zoom widget (tiled map viewer) // * dialpad widget - need one with a phone dialpad // -// (improvements) +//// (improvements - low priority) // * widgets should show who is focused (not useful for touchscreen) // * scroller could do with page up/down/left/right buttons and and idea of // a page size |
From: Enlightenment S. <no-...@en...> - 2008-11-18 02:40:38
|
Log: bug-- Author: raster Date: 2008-11-17 18:40:33 -0800 (Mon, 17 Nov 2008) New Revision: 37698 Modified: trunk/TMP/st/elementary/src/lib/Elementary.h Modified: trunk/TMP/st/elementary/src/lib/Elementary.h =================================================================== --- trunk/TMP/st/elementary/src/lib/Elementary.h 2008-11-18 01:49:49 UTC (rev 37697) +++ trunk/TMP/st/elementary/src/lib/Elementary.h 2008-11-18 02:40:33 UTC (rev 37698) @@ -288,7 +288,6 @@ // * single line entry on scale change adds newlines // * scale change for hover doesnt seem to do new size alloc nicely // * left/right arrow broken with password mode for entry -// * for some reason on oe builds of elementary initial text set doesnt work. // //// (incomplete - medium priority) // * disabled not supported |
From: Enlightenment S. <no-...@en...> - 2008-11-18 10:12:02
|
Log: more todo items done/added Author: raster Date: 2008-11-18 02:11:57 -0800 (Tue, 18 Nov 2008) New Revision: 37702 Modified: trunk/TMP/st/elementary/src/lib/Elementary.h trunk/TMP/st/elementary/src/lib/elm_entry.c trunk/TMP/st/elementary/src/lib/elm_priv.h trunk/TMP/st/elementary/src/lib/elm_widget.c trunk/TMP/st/elementary/src/lib/elm_win.c Modified: trunk/TMP/st/elementary/src/lib/Elementary.h =================================================================== --- trunk/TMP/st/elementary/src/lib/Elementary.h 2008-11-18 08:45:38 UTC (rev 37701) +++ trunk/TMP/st/elementary/src/lib/Elementary.h 2008-11-18 10:11:57 UTC (rev 37702) @@ -69,6 +69,20 @@ ELM_WIN_BASIC, ELM_WIN_DIALOG_BASIC } Elm_Win_Type; + + typedef enum _Elm_Win_Keyboard_Mode + { + ELM_WIN_KEYBOARD_UNKNOWN, + ELM_WIN_KEYBOARD_OFF, + ELM_WIN_KEYBOARD_ON, + ELM_WIN_KEYBOARD_ALPHA, + ELM_WIN_KEYBOARD_NUMERIC, + ELM_WIN_KEYBOARD_PIN, + ELM_WIN_KEYBOARD_PHONE_NUMBER, + ELM_WIN_KEYBOARD_HEX, + ELM_WIN_KEYBOARD_TERMINAL, + ELM_WIN_KEYBOARD_PASSWORD + } Elm_Win_Keyboard_Mode; /**************************************************************************/ /* General calls */ @@ -87,7 +101,8 @@ EAPI void elm_win_shaped_set(Evas_Object *obj, Evas_Bool shaped); EAPI void elm_win_alpha_set(Evas_Object *obj, Evas_Bool alpha); EAPI void elm_win_override_set(Evas_Object *obj, Evas_Bool override); -// FIXME: implement more of the above calls + EAPI void elm_win_keyboard_mode_set(Evas_Object *obj, Elm_Win_Keyboard_Mode mode); + EAPI void elm_win_keyboard_win_set(Evas_Object *obj, Evas_Bool is_keyboard); /* smart callbacks called: * "delete-request" - the user requested to delete the window */ @@ -295,11 +310,10 @@ // * disabled not supported // * tab widget focusing (not useful for touchscreen tho...) // * bubble should allow style (left/right + top/bottom) -// * need to get toplevel object (win) -// * entry needs to set vkbd properties/hint (as does win) -// * entry selection conflicts with finger scroll (make selection start/stop work on signals?) // * on the fly theme changes - test (should work) // * entry doesnt talk with x copy & paste at all +// * entry selection conflicts with finger scroll (make selection start/stop work on signals?) +// * need a hold-scroll counter in elm_widget // //// (more widgets/features - medium priority) // * toolbar widget (edje + box + button + separators) @@ -327,5 +341,8 @@ // a page size // * current sizing tree inefficient // * need a way to filter entry data for entry (eg for phone numbers) +// * win should emit signals based on vkbd type - if it gets a message and is a vkbd win +// * win needs a way of setting aspect too +// * use the wrong call on the wrong widget and *BOOM* // #endif Modified: trunk/TMP/st/elementary/src/lib/elm_entry.c =================================================================== --- trunk/TMP/st/elementary/src/lib/elm_entry.c 2008-11-18 08:45:38 UTC (rev 37701) +++ trunk/TMP/st/elementary/src/lib/elm_entry.c 2008-11-18 10:11:57 UTC (rev 37702) @@ -101,15 +101,18 @@ _on_focus_hook(void *data, Evas_Object *obj) { Widget_Data *wd = elm_widget_data_get(obj); + Evas_Object *top = elm_widget_top_get(obj); if (elm_widget_focus_get(obj)) { evas_object_focus_set(wd->ent, 1); edje_object_signal_emit(wd->ent, "elm,action,focus", "elm"); + elm_win_keyboard_mode_set(top, ELM_WIN_KEYBOARD_ON); } else { edje_object_signal_emit(wd->ent, "elm,action,unfocus", "elm"); evas_object_focus_set(wd->ent, 0); + elm_win_keyboard_mode_set(top, ELM_WIN_KEYBOARD_OFF); } } Modified: trunk/TMP/st/elementary/src/lib/elm_priv.h =================================================================== --- trunk/TMP/st/elementary/src/lib/elm_priv.h 2008-11-18 08:45:38 UTC (rev 37701) +++ trunk/TMP/st/elementary/src/lib/elm_priv.h 2008-11-18 10:11:57 UTC (rev 37702) @@ -62,6 +62,7 @@ EAPI int elm_widget_can_focus_get(Evas_Object *obj); EAPI int elm_widget_focus_get(Evas_Object *obj); EAPI Evas_Object *elm_widget_focused_object_get(Evas_Object *obj); +EAPI Evas_Object *elm_widget_top_get(Evas_Object *obj); EAPI int elm_widget_focus_jump(Evas_Object *obj, int forward); EAPI void elm_widget_focus_set(Evas_Object *obj, int first); EAPI void elm_widget_focused_object_clear(Evas_Object *obj); @@ -73,8 +74,10 @@ EAPI int elm_widget_disabled_get(Evas_Object *obj); EAPI void elm_widget_show_region_set(Evas_Object *obj, Evas_Coord x, Evas_Coord y, Evas_Coord w, Evas_Coord h); EAPI void elm_widget_show_region_get(Evas_Object *obj, Evas_Coord *x, Evas_Coord *y, Evas_Coord *w, Evas_Coord *h); - - +EAPI void elm_widget_scroll_hold_push(Evas_Object *obj); +EAPI void elm_widget_scroll_hold_pop(Evas_Object *obj); +EAPI int elm_widget_scroll_hold_get(Evas_Object *obj); + extern char *_elm_appname; extern Elm_Config *_elm_config; Modified: trunk/TMP/st/elementary/src/lib/elm_widget.c =================================================================== --- trunk/TMP/st/elementary/src/lib/elm_widget.c 2008-11-18 08:45:38 UTC (rev 37701) +++ trunk/TMP/st/elementary/src/lib/elm_widget.c 2008-11-18 10:11:57 UTC (rev 37702) @@ -28,6 +28,7 @@ void *on_show_region_data; void *data; Evas_Coord rx, ry, rw, rh; + int scroll_hold; unsigned char can_focus : 1; unsigned char child_can_focus : 1; unsigned char focused : 1; @@ -212,6 +213,11 @@ API_ENTRY return; if (sd->resize_obj) { + if (!strcmp(evas_object_type_get(sd->resize_obj), SMART_NAME)) + { + Smart_Data *sd2 = evas_object_smart_data_get(sd->resize_obj); + if (sd2) sd2->parent_obj = NULL; + } evas_object_event_callback_del(sd->resize_obj, EVAS_CALLBACK_DEL, _sub_obj_del); evas_object_event_callback_del(sd->resize_obj, EVAS_CALLBACK_MOUSE_DOWN, _sub_obj_mouse_down); evas_object_smart_member_del(sd->resize_obj); @@ -219,6 +225,11 @@ sd->resize_obj = sobj; if (sd->resize_obj) { + if (!strcmp(evas_object_type_get(sd->resize_obj), SMART_NAME)) + { + Smart_Data *sd2 = evas_object_smart_data_get(sd->resize_obj); + if (sd2) sd2->parent_obj = obj; + } evas_object_clip_set(sobj, evas_object_clip_get(obj)); evas_object_smart_member_add(sobj, obj); evas_object_event_callback_add(sobj, EVAS_CALLBACK_DEL, _sub_obj_del, sd); @@ -283,6 +294,15 @@ return obj; } +EAPI Evas_Object * +elm_widget_top_get(Evas_Object *obj) +{ + Eina_List *l; + API_ENTRY return NULL; + if (sd->parent_obj) return elm_widget_top_get(sd->parent_obj); + return obj; +} + EAPI int elm_widget_focus_jump(Evas_Object *obj, int forward) { @@ -544,6 +564,29 @@ if (h) *h = sd->rh; } +EAPI void +elm_widget_scroll_hold_push(Evas_Object *obj) +{ + API_ENTRY return; + sd->scroll_hold++; + if (sd->parent_obj) elm_widget_scroll_hold_push(sd->parent_obj); +} + +EAPI void +elm_widget_scroll_hold_pop(Evas_Object *obj) +{ + API_ENTRY return; + sd->scroll_hold--; + if (sd->parent_obj) elm_widget_scroll_hold_pop(sd->parent_obj); +} + +EAPI int +elm_widget_scroll_hold_get(Evas_Object *obj) +{ + API_ENTRY return 0; + return sd->scroll_hold; +} + /* local subsystem functions */ static void _smart_reconfigure(Smart_Data *sd) Modified: trunk/TMP/st/elementary/src/lib/elm_win.c =================================================================== --- trunk/TMP/st/elementary/src/lib/elm_win.c 2008-11-18 08:45:38 UTC (rev 37701) +++ trunk/TMP/st/elementary/src/lib/elm_win.c 2008-11-18 10:11:57 UTC (rev 37702) @@ -13,8 +13,10 @@ Ecore_X_Window xwin; Ecore_Job *deferred_resize_job; Ecore_Job *deferred_child_eval_job; - Elm_Win_Type type; - Evas_Bool autodel : 1; + + Elm_Win_Type type; + Elm_Win_Keyboard_Mode kbdmode; + Evas_Bool autodel : 1; }; static void _elm_win_resize(Ecore_Evas *ee); @@ -270,7 +272,9 @@ break; } } - + if (win->xwin) + ecore_x_e_virtual_keyboard_state_set + (win->xwin, (Ecore_X_Virtual_Keyboard_State)win->kbdmode); } static void @@ -529,3 +533,65 @@ ecore_evas_override_set(win->ee, override); _elm_win_xwin_update(win); } + +EAPI void +elm_win_keyboard_mode_set(Evas_Object *obj, Elm_Win_Keyboard_Mode mode) +{ + Elm_Win *win = evas_object_data_get(obj, "__Elm"); + if (!win) return; + if (mode == win->kbdmode) return; + win->xwin = 0; + switch (_elm_config->engine) + { + case ELM_SOFTWARE_X11: + if (win->ee) win->xwin = ecore_evas_software_x11_window_get(win->ee); + break; + case ELM_SOFTWARE_FB: + break; + case ELM_SOFTWARE_16_X11: + if (win->ee) win->xwin = ecore_evas_software_x11_16_window_get(win->ee); + break; + case ELM_XRENDER_X11: + if (win->ee) win->xwin = ecore_evas_xrender_x11_window_get(win->ee); + break; + case ELM_OPENGL_X11: + if (win->ee) win->xwin = ecore_evas_gl_x11_window_get(win->ee); + break; + default: + break; + } + win->kbdmode = mode; + if (win->xwin) + ecore_x_e_virtual_keyboard_state_set + (win->xwin, (Ecore_X_Virtual_Keyboard_State)win->kbdmode); +} + +EAPI void +elm_win_keyboard_win_set(Evas_Object *obj, Evas_Bool is_keyboard) +{ + Elm_Win *win = evas_object_data_get(obj, "__Elm"); + if (!win) return; + win->xwin = 0; + switch (_elm_config->engine) + { + case ELM_SOFTWARE_X11: + if (win->ee) win->xwin = ecore_evas_software_x11_window_get(win->ee); + break; + case ELM_SOFTWARE_FB: + break; + case ELM_SOFTWARE_16_X11: + if (win->ee) win->xwin = ecore_evas_software_x11_16_window_get(win->ee); + break; + case ELM_XRENDER_X11: + if (win->ee) win->xwin = ecore_evas_xrender_x11_window_get(win->ee); + break; + case ELM_OPENGL_X11: + if (win->ee) win->xwin = ecore_evas_gl_x11_window_get(win->ee); + break; + default: + break; + } + if (win->xwin) + ecore_x_e_virtual_keyboard_set + (win->xwin, is_keyboard); +} |
From: Enlightenment S. <no-...@en...> - 2008-11-19 06:23:14
|
Log: x copy and paste... integrated Author: raster Date: 2008-11-18 22:23:08 -0800 (Tue, 18 Nov 2008) New Revision: 37706 Modified: trunk/TMP/st/elementary/src/lib/Elementary.h trunk/TMP/st/elementary/src/lib/elm_entry.c trunk/TMP/st/elementary/src/lib/elm_win.c Modified: trunk/TMP/st/elementary/src/lib/Elementary.h =================================================================== --- trunk/TMP/st/elementary/src/lib/Elementary.h 2008-11-19 06:22:12 UTC (rev 37705) +++ trunk/TMP/st/elementary/src/lib/Elementary.h 2008-11-19 06:23:08 UTC (rev 37706) @@ -103,6 +103,8 @@ EAPI void elm_win_override_set(Evas_Object *obj, Evas_Bool override); EAPI void elm_win_keyboard_mode_set(Evas_Object *obj, Elm_Win_Keyboard_Mode mode); EAPI void elm_win_keyboard_win_set(Evas_Object *obj, Evas_Bool is_keyboard); + /* X specific calls - won't work on non-x engines (return 0) */ + EAPI Ecore_X_Window elm_win_xwindow_get(Evas_Object *obj); /* smart callbacks called: * "delete-request" - the user requested to delete the window */ @@ -298,9 +300,9 @@ /* smart callbacks called: */ - //////////////////////// - /// FIXME: TODO LIST /// -//////////////////////// + //////////////////////////////////////////////////////////////////////////// + /// FIXME: TODO LIST /////////////////////////////////////////////////////// +//////////////////////////////////////////////////////////////////////////// // //// (bugs - high priority) // * scale change for hover doesnt seem to do new size alloc nicely @@ -345,4 +347,5 @@ // * win needs a way of setting aspect too // * use the wrong call on the wrong widget and *BOOM* // +////////////////////////////////////////////////////////////////////////////// #endif Modified: trunk/TMP/st/elementary/src/lib/elm_entry.c =================================================================== --- trunk/TMP/st/elementary/src/lib/elm_entry.c 2008-11-19 06:22:12 UTC (rev 37705) +++ trunk/TMP/st/elementary/src/lib/elm_entry.c 2008-11-19 06:23:08 UTC (rev 37706) @@ -6,13 +6,18 @@ struct _Widget_Data { Evas_Object *ent; + Ecore_Job *deferred_recalc_job; + Ecore_Event_Handler *sel_notify_handler; + Ecore_Event_Handler *sel_clear_handler; + const char *cut_sel; Evas_Coord lastw; Evas_Bool changed : 1; Evas_Bool linewrap : 1; Evas_Bool single_line : 1; Evas_Bool password : 1; Evas_Bool editable : 1; - Ecore_Job *deferred_recalc_job; + Evas_Bool selection_asked : 1; + Evas_Bool have_selection : 1; }; static void _del_hook(Evas_Object *obj); @@ -37,6 +42,9 @@ { Widget_Data *wd = elm_widget_data_get(obj); entries = eina_list_remove(entries, obj); + ecore_event_handler_del(wd->sel_notify_handler); + ecore_event_handler_del(wd->sel_clear_handler); + if (wd->cut_sel) eina_stringshare_del(wd->cut_sel); if (wd->deferred_recalc_job) ecore_job_del(wd->deferred_recalc_job); free(wd); } @@ -46,7 +54,7 @@ { Widget_Data *wd = elm_widget_data_get(obj); char *t; - t = elm_entry_entry_get(obj); + t = (char *)elm_entry_entry_get(obj); if (t) t = strdup(t); _elm_theme_set(wd->ent, "entry", _getbase(obj), "default"); elm_entry_entry_set(obj, t); @@ -158,6 +166,181 @@ return "base"; } +static char * +_str_append(char *str, const char *txt, int *len, int *alloc) +{ + int txt_len = strlen(txt); + if (txt_len <= 0) return str; + if ((*len + txt_len) >= *alloc) + { + char *str2; + int alloc2; + + alloc2 = *alloc + txt_len + 128; + str2 = realloc(str, alloc2); + if (!str2) return str; + *alloc = alloc2; + str = str2; + } + strcpy(str + *len, txt); + *len += txt_len; + return str; +} + +static char * +_mkup_to_text(const char *mkup) +{ + char *str = NULL; + int str_len = 0, str_alloc = 0; + // FIXME: markup -> text + char *s, *p; + char *tag_start, *tag_end, *esc_start, *esc_end, *ts; + + tag_start = tag_end = esc_start = esc_end = NULL; + p = (char *)mkup; + s = p; + for (;;) + { + if ((*p == 0) || + (tag_end) || (esc_end) || + (tag_start) || (esc_start)) + { + if (tag_end) + { + char *ttag, *match; + + ttag = malloc(tag_end - tag_start); + if (ttag) + { + strncpy(ttag, tag_start + 1, tag_end - tag_start - 1); + ttag[tag_end - tag_start - 1] = 0; + if (!strcmp(ttag, "br")) + str = _str_append(str, "\n", &str_len, &str_alloc); + else if (!strcmp(ttag, "\n")) + str = _str_append(str, "\n", &str_len, &str_alloc); + else if (!strcmp(ttag, "\\n")) + str = _str_append(str, "\n", &str_len, &str_alloc); + else if (!strcmp(ttag, "\t")) + str = _str_append(str, "\t", &str_len, &str_alloc); + else if (!strcmp(ttag, "\\t")) + str = _str_append(str, "\t", &str_len, &str_alloc); + free(ttag); + } + tag_start = tag_end = NULL; + } + else if (esc_end) + { + ts = malloc(esc_end - esc_start + 1); + if (ts) + { + const char *esc; + strncpy(ts, esc_start, esc_end - esc_start); + ts[esc_end - esc_start] = 0; + esc = evas_textblock_escape_string_get(ts); + if (esc) + str = _str_append(str, esc, &str_len, &str_alloc); + free(ts); + } + esc_start = esc_end = NULL; + } + else if (*p == 0) + { + ts = malloc(p - s + 1); + if (ts) + { + strncpy(ts, s, p - s); + ts[p - s] = 0; + str = _str_append(str, ts, &str_len, &str_alloc); + free(ts); + } + s = NULL; + } + if (*p == 0) + break; + } + if (*p == '<') + { + if (!esc_start) + { + tag_start = p; + tag_end = NULL; + ts = malloc(p - s + 1); + if (ts) + { + strncpy(ts, s, p - s); + ts[p - s] = 0; + str = _str_append(str, ts, &str_len, &str_alloc); + free(ts); + } + s = NULL; + } + } + else if (*p == '>') + { + if (tag_start) + { + tag_end = p; + s = p + 1; + } + } + else if (*p == '&') + { + if (!tag_start) + { + esc_start = p; + esc_end = NULL; + ts = malloc(p - s + 1); + if (ts) + { + strncpy(ts, s, p - s); + ts[p - s] = 0; + str = _str_append(str, ts, &str_len, &str_alloc); + free(ts); + } + s = NULL; + } + } + else if (*p == ';') + { + if (esc_start) + { + esc_end = p; + s = p + 1; + } + } + p++; + } + return str; +} + +static char * +_text_to_mkup(const char *text) +{ + char *str = NULL; + int str_len = 0, str_alloc = 0; + int ch, pos = 0; + + for (;;) + { + ch = evas_common_font_utf8_get_next((unsigned char *)(text), &pos); + if (ch <= 0) break; + if (ch == '\n') str = _str_append(str, "<br>", &str_len, &str_alloc); + else if (ch == '\t') str = _str_append(str, "<\t>", &str_len, &str_alloc); + else + { + int pos2; + char tstr[16]; + + pos2 = pos; + ch = evas_common_font_utf8_get_next((unsigned char *)(text), &pos2); + strncpy(tstr, text + pos, pos2 - pos); + tstr[pos2 - pos] = 0; + str = _str_append(str, tstr, &str_len, &str_alloc); + } + } + return str; +} + static void _signal_entry_changed(void *data, Evas_Object *obj, const char *emission, const char *source) { @@ -172,28 +355,64 @@ { Widget_Data *wd = elm_widget_data_get(data); Eina_List *l; - evas_object_smart_callback_call(data, "selection,start", NULL); for (l = entries; l; l = l->next) { if (l->data != data) elm_entry_select_none(l->data); } - // FIXME: x clipboard/copy & paste - do + wd->have_selection = 1; + evas_object_smart_callback_call(data, "selection,start", NULL); + if (wd->sel_notify_handler) + { + char *txt = _mkup_to_text(elm_entry_selection_get(data)); + if (txt) + { + ecore_x_selection_primary_set + (elm_win_xwindow_get(elm_widget_top_get(data)), + txt, strlen(txt)); + free(txt); + } + } } static void _signal_selection_changed(void *data, Evas_Object *obj, const char *emission, const char *source) { Widget_Data *wd = elm_widget_data_get(data); + wd->have_selection = 1; evas_object_smart_callback_call(data, "selection,changed", NULL); - // FIXME: x clipboard/copy & paste - do + if (wd->sel_notify_handler) + { + char *txt = _mkup_to_text(elm_entry_selection_get(data)); + if (txt) + { + ecore_x_selection_primary_set + (elm_win_xwindow_get(elm_widget_top_get(data)), + txt, strlen(txt)); + free(txt); + } + } } static void _signal_selection_cleared(void *data, Evas_Object *obj, const char *emission, const char *source) { Widget_Data *wd = elm_widget_data_get(data); + if (!wd->have_selection) return; + wd->have_selection = 0; evas_object_smart_callback_call(data, "selection,cleared", NULL); - // FIXME: x clipboard/copy & paste - do + if (wd->sel_notify_handler) + { + if (wd->cut_sel) + { + ecore_x_selection_primary_set + (elm_win_xwindow_get(elm_widget_top_get(data)), + wd->cut_sel, strlen(wd->cut_sel)); + eina_stringshare_del(wd->cut_sel); + wd->cut_sel = NULL; + } + else + ecore_x_selection_primary_clear(); + } } static void @@ -201,7 +420,13 @@ { Widget_Data *wd = elm_widget_data_get(data); evas_object_smart_callback_call(data, "selection,paste", NULL); - // FIXME: x clipboard/copy and paste - request + if (wd->sel_notify_handler) + { + ecore_x_selection_primary_request + (elm_win_xwindow_get(elm_widget_top_get(data)), + ECORE_X_SELECTION_TARGET_UTF8_STRING); + wd->selection_asked = 1; + } } static void @@ -209,17 +434,25 @@ { Widget_Data *wd = elm_widget_data_get(data); evas_object_smart_callback_call(data, "selection,copy", NULL); - // FIXME: x clipboard/copy & paste - do } static void _signal_entry_cut_notify(void *data, Evas_Object *obj, const char *emission, const char *source) { Widget_Data *wd = elm_widget_data_get(data); + char *txt; evas_object_smart_callback_call(data, "selection,cut", NULL); + if (wd->cut_sel) eina_stringshare_del(wd->cut_sel); + wd->cut_sel = NULL; + txt = _mkup_to_text(elm_entry_selection_get(data)); + if (txt) + { + wd->cut_sel = eina_stringshare_add(txt); + free(txt); + } + edje_object_part_text_insert(wd->ent, "elm.text", ""); wd->changed = 1; _sizing_eval(data); - // FIXME: x clipboard/copy & paste - do } static void @@ -228,10 +461,7 @@ Widget_Data *wd = elm_widget_data_get(data); Evas_Coord cx, cy, cw, ch; evas_object_smart_callback_call(data, "cursor,changed", NULL); - // FIXME: handle auto-scroll within parent (get cursor - if not visible - // jump so it is) edje_object_part_text_cursor_geometry_get(wd->ent, "elm.text", &cx, &cy, &cw, &ch); -// printf("CURSOR: @%i+%i %ix%i\n", cx, cy, cw, ch); elm_widget_show_region_set(data, cx, cy, cw, ch); } @@ -239,7 +469,6 @@ _signal_anchor_down(void *data, Evas_Object *obj, const char *emission, const char *source) { Widget_Data *wd = elm_widget_data_get(data); -// printf("DOWN %s\n", emission); } static void @@ -249,7 +478,6 @@ Elm_Entry_Anchor_Info ei; char *buf, *buf2, *p, *p2, *n; int buflen; -// printf("UP %s\n", emission); p = strrchr(emission, ','); if (p) { @@ -299,21 +527,18 @@ _signal_anchor_move(void *data, Evas_Object *obj, const char *emission, const char *source) { Widget_Data *wd = elm_widget_data_get(data); -// printf("MOVE %s\n", emission); } static void _signal_anchor_in(void *data, Evas_Object *obj, const char *emission, const char *source) { Widget_Data *wd = elm_widget_data_get(data); -// printf("IN %s\n", emission); } static void _signal_anchor_out(void *data, Evas_Object *obj, const char *emission, const char *source) { Widget_Data *wd = elm_widget_data_get(data); -// printf("OUT %s\n", emission); } static void @@ -323,6 +548,49 @@ evas_object_smart_callback_call(data, "activated", NULL); } +static int +_event_selection_notify(void *data, int type, void *event) +{ + Widget_Data *wd = elm_widget_data_get(data); + Ecore_X_Event_Selection_Notify *ev = event; + if (!wd->selection_asked) return 1; + if ((ev->selection == ECORE_X_SELECTION_CLIPBOARD) || + (ev->selection == ECORE_X_SELECTION_PRIMARY)) + { + Ecore_X_Selection_Data_Text *text_data; + + text_data = ev->data; + if (text_data->data.content == ECORE_X_SELECTION_CONTENT_TEXT) + { + if (text_data->text) + { + char *txt = _text_to_mkup(text_data->text); + if (txt) + { + elm_entry_entry_insert(data, txt); + free(txt); + } + } + } + wd->selection_asked = 0; + } + return 1; +} + +static int +_event_selection_clear(void *data, int type, void *event) +{ + Widget_Data *wd = elm_widget_data_get(data); + Ecore_X_Event_Selection_Clear *ev = event; + if (!wd->have_selection) return 1; + if ((ev->selection == ECORE_X_SELECTION_CLIPBOARD) || + (ev->selection == ECORE_X_SELECTION_PRIMARY)) + { + elm_entry_select_none(data); + } + return 1; +} + EAPI Evas_Object * elm_entry_add(Evas_Object *parent) { @@ -363,6 +631,17 @@ edje_object_part_text_set(wd->ent, "elm.text", "<br>"); elm_widget_resize_object_set(obj, wd->ent); _sizing_eval(obj); + + if (elm_win_xwindow_get(elm_widget_top_get(parent)) != 0) + { + wd->sel_notify_handler = + ecore_event_handler_add(ECORE_X_EVENT_SELECTION_NOTIFY, + _event_selection_notify, obj); + wd->sel_clear_handler = + ecore_event_handler_add(ECORE_X_EVENT_SELECTION_CLEAR, + _event_selection_clear, obj); + } + entries = eina_list_prepend(entries, obj); return obj; } @@ -476,6 +755,7 @@ elm_entry_select_none(Evas_Object *obj) { Widget_Data *wd = elm_widget_data_get(obj); + wd->have_selection = 0; edje_object_part_text_select_none(wd->ent, "elm.text"); } @@ -483,5 +763,6 @@ elm_entry_select_all(Evas_Object *obj) { Widget_Data *wd = elm_widget_data_get(obj); + wd->have_selection = 1; edje_object_part_text_select_all(wd->ent, "elm.text"); } Modified: trunk/TMP/st/elementary/src/lib/elm_win.c =================================================================== --- trunk/TMP/st/elementary/src/lib/elm_win.c 2008-11-19 06:22:12 UTC (rev 37705) +++ trunk/TMP/st/elementary/src/lib/elm_win.c 2008-11-19 06:23:08 UTC (rev 37706) @@ -222,7 +222,7 @@ } static void -_elm_win_xwin_update(Elm_Win *win) +_elm_win_xwindow_get(Elm_Win *win) { win->xwin = 0; switch (_elm_config->engine) @@ -244,6 +244,12 @@ default: break; } +} + +static void +_elm_win_xwin_update(Elm_Win *win) +{ + _elm_win_xwindow_get(win); if (win->parent) { Elm_Win *win2; @@ -358,7 +364,6 @@ { case ELM_SOFTWARE_X11: win->ee = ecore_evas_software_x11_new(NULL, 0, 0, 0, 1, 1); - if (win->ee) win->xwin = ecore_evas_software_x11_window_get(win->ee); break; case ELM_SOFTWARE_FB: win->ee = ecore_evas_fb_new(NULL, 0, 1, 1); @@ -366,15 +371,12 @@ break; case ELM_SOFTWARE_16_X11: win->ee = ecore_evas_software_x11_16_new(NULL, 0, 0, 0, 1, 1); - if (win->ee) win->xwin = ecore_evas_software_x11_16_window_get(win->ee); break; case ELM_XRENDER_X11: win->ee = ecore_evas_xrender_x11_new(NULL, 0, 0, 0, 1, 1); - if (win->ee) win->xwin = ecore_evas_xrender_x11_window_get(win->ee); break; case ELM_OPENGL_X11: win->ee = ecore_evas_gl_x11_new(NULL, 0, 0, 0, 1, 1); - if (win->ee) win->xwin = ecore_evas_gl_x11_window_get(win->ee); break; default: break; @@ -385,6 +387,7 @@ free(win); return NULL; } + _elm_win_xwindow_get(win); if (_elm_config->bgpixmap && !_elm_config->compositing) ecore_evas_avoid_damage_set(win->ee, ECORE_EVAS_AVOID_DAMAGE_EXPOSE); // bg pixmap done by x - has other issues like can be redrawn by x before it @@ -540,26 +543,7 @@ Elm_Win *win = evas_object_data_get(obj, "__Elm"); if (!win) return; if (mode == win->kbdmode) return; - win->xwin = 0; - switch (_elm_config->engine) - { - case ELM_SOFTWARE_X11: - if (win->ee) win->xwin = ecore_evas_software_x11_window_get(win->ee); - break; - case ELM_SOFTWARE_FB: - break; - case ELM_SOFTWARE_16_X11: - if (win->ee) win->xwin = ecore_evas_software_x11_16_window_get(win->ee); - break; - case ELM_XRENDER_X11: - if (win->ee) win->xwin = ecore_evas_xrender_x11_window_get(win->ee); - break; - case ELM_OPENGL_X11: - if (win->ee) win->xwin = ecore_evas_gl_x11_window_get(win->ee); - break; - default: - break; - } + _elm_win_xwindow_get(win); win->kbdmode = mode; if (win->xwin) ecore_x_e_virtual_keyboard_state_set @@ -571,27 +555,17 @@ { Elm_Win *win = evas_object_data_get(obj, "__Elm"); if (!win) return; - win->xwin = 0; - switch (_elm_config->engine) - { - case ELM_SOFTWARE_X11: - if (win->ee) win->xwin = ecore_evas_software_x11_window_get(win->ee); - break; - case ELM_SOFTWARE_FB: - break; - case ELM_SOFTWARE_16_X11: - if (win->ee) win->xwin = ecore_evas_software_x11_16_window_get(win->ee); - break; - case ELM_XRENDER_X11: - if (win->ee) win->xwin = ecore_evas_xrender_x11_window_get(win->ee); - break; - case ELM_OPENGL_X11: - if (win->ee) win->xwin = ecore_evas_gl_x11_window_get(win->ee); - break; - default: - break; - } + _elm_win_xwindow_get(win); if (win->xwin) ecore_x_e_virtual_keyboard_set (win->xwin, is_keyboard); } + +EAPI Ecore_X_Window +elm_win_xwindow_get(Evas_Object *obj) +{ + Elm_Win *win = evas_object_data_get(obj, "__Elm"); + if (!win) return 0; + _elm_win_xwindow_get(win); + return win->xwin; +} |
From: Enlightenment S. <no-...@en...> - 2008-11-19 07:05:56
|
Log: todo-- Author: raster Date: 2008-11-18 23:05:51 -0800 (Tue, 18 Nov 2008) New Revision: 37708 Modified: trunk/TMP/st/elementary/src/lib/Elementary.h Modified: trunk/TMP/st/elementary/src/lib/Elementary.h =================================================================== --- trunk/TMP/st/elementary/src/lib/Elementary.h 2008-11-19 06:24:47 UTC (rev 37707) +++ trunk/TMP/st/elementary/src/lib/Elementary.h 2008-11-19 07:05:51 UTC (rev 37708) @@ -313,7 +313,6 @@ // * tab widget focusing (not useful for touchscreen tho...) // * bubble should allow style (left/right + top/bottom) // * on the fly theme changes - test (should work) -// * entry doesnt talk with x copy & paste at all // * entry selection conflicts with finger scroll (make selection start/stop work on signals?) // * need a hold-scroll counter in elm_widget // |
From: Enlightenment S. <no-...@en...> - 2008-11-27 23:36:24
|
Log: call clicked on delete of the hover so things can be shut down. also a fixme - bad me. i used internal calls. Author: raster Date: 2008-11-27 15:36:21 -0800 (Thu, 27 Nov 2008) New Revision: 37837 Modified: trunk/TMP/st/elementary/src/lib/elm_entry.c trunk/TMP/st/elementary/src/lib/elm_hover.c Modified: trunk/TMP/st/elementary/src/lib/elm_entry.c =================================================================== --- trunk/TMP/st/elementary/src/lib/elm_entry.c 2008-11-27 22:49:39 UTC (rev 37836) +++ trunk/TMP/st/elementary/src/lib/elm_entry.c 2008-11-27 23:36:21 UTC (rev 37837) @@ -323,6 +323,7 @@ for (;;) { + // FIXME: use evas_string_char_next_get() ch = evas_common_font_utf8_get_next((unsigned char *)(text), &pos); if (ch <= 0) break; if (ch == '\n') str = _str_append(str, "<br>", &str_len, &str_alloc); @@ -333,6 +334,7 @@ char tstr[16]; pos2 = pos; + // FIXME: use evas_string_char_next_get() ch = evas_common_font_utf8_get_next((unsigned char *)(text), &pos2); strncpy(tstr, text + pos, pos2 - pos); tstr[pos2 - pos] = 0; Modified: trunk/TMP/st/elementary/src/lib/elm_hover.c =================================================================== --- trunk/TMP/st/elementary/src/lib/elm_hover.c 2008-11-27 22:49:39 UTC (rev 37836) +++ trunk/TMP/st/elementary/src/lib/elm_hover.c 2008-11-27 23:36:21 UTC (rev 37837) @@ -37,6 +37,8 @@ _del_pre_hook(Evas_Object *obj) { Widget_Data *wd = elm_widget_data_get(obj); + if (evas_object_visible_get(obj)) + evas_object_smart_callback_call(obj, "clicked", NULL); elm_hover_target_set(obj, NULL); elm_hover_parent_set(obj, NULL); evas_object_event_callback_del(wd->hov, EVAS_CALLBACK_MOVE, _hov_move); |
From: Enlightenment S. <no-...@en...> - 2008-12-05 07:42:56
|
Log: and fix todo. Author: raster Date: 2008-12-04 23:42:54 -0800 (Thu, 04 Dec 2008) New Revision: 37934 Modified: trunk/TMP/st/elementary/src/lib/Elementary.h Modified: trunk/TMP/st/elementary/src/lib/Elementary.h =================================================================== --- trunk/TMP/st/elementary/src/lib/Elementary.h 2008-12-05 07:42:14 UTC (rev 37933) +++ trunk/TMP/st/elementary/src/lib/Elementary.h 2008-12-05 07:42:54 UTC (rev 37934) @@ -338,7 +338,6 @@ // //// (more widgets/features - medium priority) // * need multi-sel (with button + hover + ...) -// * need "photoframe" widget (for contact photos?) // * toolbar widget (edje + box + button + separators) // * in-window dialog container widget // * listitem widget (simple label + icon) |