From: Enlightenment S. <no-...@en...> - 2011-04-15 11:18:36
|
Log: fix up copy & paste with inlined win and a few other cnp nigglies. also no unimplemented win times for now. Author: raster Date: 2011-04-15 04:18:30 -0700 (Fri, 15 Apr 2011) New Revision: 58686 Trac: http://trac.enlightenment.org/e/changeset/58686 Modified: trunk/elementary/src/lib/Elementary.h.in trunk/elementary/src/lib/elm_cnp_helper.c trunk/elementary/src/lib/elm_entry.c trunk/elementary/src/lib/elm_win.c Modified: trunk/elementary/src/lib/Elementary.h.in =================================================================== --- trunk/elementary/src/lib/Elementary.h.in 2011-04-15 11:01:15 UTC (rev 58685) +++ trunk/elementary/src/lib/Elementary.h.in 2011-04-15 11:18:30 UTC (rev 58686) @@ -469,10 +469,7 @@ ELM_WIN_NOTIFICATION, ELM_WIN_COMBO, ELM_WIN_DND, - - ELM_WIN_INLINED, // YYY: not implemented yet ELM_WIN_INLINED_IMAGE, - ELM_WIN_MEMORY // YYY: not implemented yet } Elm_Win_Type; typedef enum _Elm_Win_Keyboard_Mode Modified: trunk/elementary/src/lib/elm_cnp_helper.c =================================================================== --- trunk/elementary/src/lib/elm_cnp_helper.c 2011-04-15 11:01:15 UTC (rev 58685) +++ trunk/elementary/src/lib/elm_cnp_helper.c 2011-04-15 11:18:30 UTC (rev 58686) @@ -10,7 +10,7 @@ #define ARRAYINIT(foo) [foo] = -//#define DEBUGON 1 +#define DEBUGON 1 #ifdef DEBUGON @@ -649,6 +649,7 @@ { Ecore_X_Selection_Data_Targets *targets; Ecore_X_Atom *atomlist; + Evas_Object *top; int i, j; targets = notify->data; @@ -672,8 +673,10 @@ return ECORE_CALLBACK_PASS_ON; done: - cnp_debug("Sending request for %s\n",atoms[j].name); - sel->request(elm_win_xwindow_get(sel->requestwidget), atoms[j].name); + top = elm_widget_top_get(sel->requestwidget); + if (!top) top = sel->requestwidget; + cnp_debug("Sending request for %s\n", atoms[j].name); + sel->request(elm_win_xwindow_get(top), atoms[j].name); return ECORE_CALLBACK_PASS_ON; } Modified: trunk/elementary/src/lib/elm_entry.c =================================================================== --- trunk/elementary/src/lib/elm_entry.c 2011-04-15 11:01:15 UTC (rev 58685) +++ trunk/elementary/src/lib/elm_entry.c 2011-04-15 11:18:30 UTC (rev 58686) @@ -1434,7 +1434,6 @@ static Eina_Bool _event_selection_clear(void *data __UNUSED__, int type __UNUSED__, void *event __UNUSED__) { -/* Widget_Data *wd = elm_widget_data_get(data); Ecore_X_Event_Selection_Clear *ev = event; if (!wd) return ECORE_CALLBACK_PASS_ON; @@ -1444,7 +1443,6 @@ { elm_entry_select_none(data); } - return 1; */ return ECORE_CALLBACK_PASS_ON; } @@ -1456,7 +1454,6 @@ Eina_Bool rv; wd = elm_widget_data_get(obj); - if (!wd) return EINA_FALSE; printf("Inserting at (%d,%d) %s\n",drop->x,drop->y,(char*)drop->data); Modified: trunk/elementary/src/lib/elm_win.c =================================================================== --- trunk/elementary/src/lib/elm_win.c 2011-04-15 11:01:15 UTC (rev 58685) +++ trunk/elementary/src/lib/elm_win.c 2011-04-15 11:18:30 UTC (rev 58686) @@ -1150,10 +1150,6 @@ switch (type) { - case ELM_WIN_INLINED: - // FIXME: implement. same as ELM_WIN_INLINED_IMAGE but with border - // frame - break; case ELM_WIN_INLINED_IMAGE: { if (parent) @@ -1183,9 +1179,6 @@ } } break; - case ELM_WIN_MEMORY: - // FIXME: implement - break; default: if (ENGINE_COMPARE(ELM_SOFTWARE_X11)) { |
From: Enlightenment S. <no-...@en...> - 2011-04-15 11:20:48
|
Log: debug.. off. Author: raster Date: 2011-04-15 04:20:41 -0700 (Fri, 15 Apr 2011) New Revision: 58687 Trac: http://trac.enlightenment.org/e/changeset/58687 Modified: trunk/elementary/src/lib/elm_cnp_helper.c Modified: trunk/elementary/src/lib/elm_cnp_helper.c =================================================================== --- trunk/elementary/src/lib/elm_cnp_helper.c 2011-04-15 11:18:30 UTC (rev 58686) +++ trunk/elementary/src/lib/elm_cnp_helper.c 2011-04-15 11:20:41 UTC (rev 58687) @@ -10,9 +10,8 @@ #define ARRAYINIT(foo) [foo] = -#define DEBUGON 1 +//#define DEBUGON 1 - #ifdef DEBUGON # define cnp_debug(x...) fprintf(stderr, __FILE__": " x) #else |
From: Enlightenment S. <no-...@en...> - 2011-04-19 01:53:26
|
Log: fix window posotioning when inlined Author: raster Date: 2011-04-18 18:53:19 -0700 (Mon, 18 Apr 2011) New Revision: 58722 Trac: http://trac.enlightenment.org/e/changeset/58722 Modified: trunk/elementary/src/lib/elm_win.c Modified: trunk/elementary/src/lib/elm_win.c =================================================================== --- trunk/elementary/src/lib/elm_win.c 2011-04-19 00:58:39 UTC (rev 58721) +++ trunk/elementary/src/lib/elm_win.c 2011-04-19 01:53:19 UTC (rev 58722) @@ -345,8 +345,12 @@ if (win->img_obj) { - win->screen.x = x; - win->screen.y = y; + if ((x != win->screen.x) || (y != win->screen.y)) + { + win->screen.x = x; + win->screen.y = y; + evas_object_smart_callback_call(win->win_obj, "moved", NULL); + } } else { @@ -1300,10 +1304,6 @@ evas_object_layer_set(win->win_obj, 50); evas_object_pass_events_set(win->win_obj, EINA_TRUE); - evas_object_intercept_move_callback_add(win->win_obj, - _elm_win_obj_intercept_move, win); - evas_object_intercept_show_callback_add(win->win_obj, - _elm_win_obj_intercept_show, win); ecore_evas_object_associate(win->ee, win->win_obj, ECORE_EVAS_OBJECT_ASSOCIATE_BASE | ECORE_EVAS_OBJECT_ASSOCIATE_STACK | @@ -1318,6 +1318,11 @@ _elm_win_obj_callback_move, win); evas_object_event_callback_add(win->win_obj, EVAS_CALLBACK_RESIZE, _elm_win_obj_callback_resize, win); + if (win->img_obj) + evas_object_intercept_move_callback_add(win->win_obj, + _elm_win_obj_intercept_move, win); + evas_object_intercept_show_callback_add(win->win_obj, + _elm_win_obj_intercept_show, win); ecore_evas_name_class_set(win->ee, name, _elm_appname); ecore_evas_callback_delete_request_set(win->ee, _elm_win_delete_request); |
From: Enlightenment S. <no-...@en...> - 2011-04-25 09:04:29
|
Log: From: cnook <kim...@gm...> I have attached patch for elm_diskselector. This patch is setting the width of elm_diskselector using its parent width size, if there is no mention in the theme file. Author: raster Date: 2011-04-25 02:04:23 -0700 (Mon, 25 Apr 2011) New Revision: 58895 Trac: http://trac.enlightenment.org/e/changeset/58895 Modified: trunk/elementary/src/lib/elm_diskselector.c Modified: trunk/elementary/src/lib/elm_diskselector.c =================================================================== --- trunk/elementary/src/lib/elm_diskselector.c 2011-04-25 09:02:20 UTC (rev 58894) +++ trunk/elementary/src/lib/elm_diskselector.c 2011-04-25 09:04:23 UTC (rev 58895) @@ -168,6 +168,7 @@ _theme_data_get(Widget_Data *wd) { const char* str; + Evas_Object *parent; str = edje_object_data_get(wd->right_blank, "len_threshold"); if (str) wd->len_threshold = MAX(0, atoi(str)); else wd->len_threshold = 0; @@ -181,7 +182,12 @@ str = edje_object_data_get(wd->right_blank, "min_width"); if (str) wd->minw = MAX(-1, atoi(str)); - else wd->minw = -1; + else + { + parent = elm_widget_parent_widget_get(wd->self); + if (!parent) wd->minw = -1; + else evas_object_geometry_get(parent, NULL, NULL, &wd->minw, NULL); + } str = edje_object_data_get(wd->right_blank, "min_height"); if (str) wd->minh = MAX(-1, atoi(str)); |
From: Enlightenment S. <no-...@en...> - 2011-04-27 06:33:45
|
Log: From: go...@sa... Subject: Conformant Widget Code refactoring patch Can you please review the attached patch for elm_conformant. Change Log: 1. On Theme change, swallowing Parts again. Swallowing parts done in separate function. 2. Conformant parts size set is repeated in two places, moved to a function. 3. Conformant Object Move/Resize is handled to realign the Visible content area. Author: raster Date: 2011-04-26 23:33:34 -0700 (Tue, 26 Apr 2011) New Revision: 58948 Trac: http://trac.enlightenment.org/e/changeset/58948 Modified: trunk/elementary/src/lib/elm_conform.c Modified: trunk/elementary/src/lib/elm_conform.c =================================================================== --- trunk/elementary/src/lib/elm_conform.c 2011-04-27 06:20:23 UTC (rev 58947) +++ trunk/elementary/src/lib/elm_conform.c 2011-04-27 06:33:34 UTC (rev 58948) @@ -25,11 +25,28 @@ } delta; }; +/* Enum to identify conformant swallow parts */ +typedef enum _Conformant_Part_Type Conformant_Part_Type; +enum _Conformant_Part_Type +{ + ELM_CONFORM_INDICATOR_PART = 1, + ELM_CONFORM_SOFTKEY_PART = 2 +}; + /* local function prototypes */ static const char *widtype = NULL; static void _del_hook(Evas_Object *obj); static void _mirrored_set(Evas_Object *obj, Eina_Bool rtl); static void _theme_hook(Evas_Object *obj); +static void _swallow_conformant_parts(Evas_Object *obj); +static void _conformant_part_size_set(Evas_Object *obj, + Evas_Object *sobj, + Evas_Coord sx, + Evas_Coord sy, + Evas_Coord sw, + Evas_Coord sh); +static void _conformant_part_sizing_eval(Evas_Object *obj, + Conformant_Part_Type part_type); static void _sizing_eval(Evas_Object *obj); static Eina_Bool _prop_change(void *data, int type, void *event); @@ -63,6 +80,7 @@ _mirrored_set(obj, elm_widget_mirrored_get(obj)); _elm_theme_object_set(obj, wd->base, "conformant", "base", elm_widget_style_get(obj)); + _swallow_conformant_parts(obj); if (wd->content) edje_object_part_swallow(wd->base, "elm.swallow.content", wd->content); @@ -84,6 +102,86 @@ } static void +_conformant_part_size_set(Evas_Object *obj, Evas_Object *sobj, Evas_Coord sx, + Evas_Coord sy, Evas_Coord sw, Evas_Coord sh) +{ + Evas_Coord cx, cy, cw, ch; + Evas_Coord part_height = 0, part_width = 0; + + evas_object_geometry_get(obj, &cx, &cy, &cw, &ch); + + /* Part overlapping with conformant */ + if ((cx < (sx + sw)) && ((cx + cw) > sx) + && (cy < (sy + sh)) && ((cy + ch) > sy)) + { + part_height = MIN((cy + ch), (sy + sh)) - MAX(cy, sy); + part_width = MIN((cx + cw), (sx + sw)) - MAX(cx, sx); + } + + evas_object_size_hint_min_set(sobj, part_width, part_height); + evas_object_size_hint_max_set(sobj, part_width, part_height); +} + +static void +_conformant_part_sizing_eval(Evas_Object *obj, Conformant_Part_Type part_type) +{ +#ifdef HAVE_ELEMENTARY_X + Ecore_X_Window zone, xwin; + int sx = -1, sy = -1, sw = -1, sh = -1; + Widget_Data *wd = elm_widget_data_get(obj); + + if (!wd) return; + + Evas_Object *top = elm_widget_top_get(obj); + xwin = elm_win_xwindow_get(top); + zone = ecore_x_e_illume_zone_get(xwin); + + if (part_type & ELM_CONFORM_INDICATOR_PART) + { + ecore_x_e_illume_indicator_geometry_get(zone, &sx, &sy, &sw, &sh); + _conformant_part_size_set(obj, wd->shelf, sx, sy, sw, sh); + } + if (part_type & ELM_CONFORM_SOFTKEY_PART) + { + ecore_x_e_illume_softkey_geometry_get(zone, &sx, &sy, &sw, &sh); + _conformant_part_size_set(obj, wd->panel, sx, sy, sw, sh); + } +#endif +} + +static void +_swallow_conformant_parts(Evas_Object *obj) +{ + Widget_Data *wd = elm_widget_data_get(obj); + + if (!wd->shelf) + { + wd->shelf = evas_object_rectangle_add(evas_object_evas_get(obj)); + elm_widget_sub_object_add(obj, wd->shelf); + evas_object_size_hint_min_set(wd->shelf, -1, 0); + evas_object_size_hint_max_set(wd->shelf, -1, 0); + } + else + _conformant_part_sizing_eval(obj, ELM_CONFORM_INDICATOR_PART); + + evas_object_color_set(wd->shelf, 0, 0, 0, 0); + edje_object_part_swallow(wd->base, "elm.swallow.shelf", wd->shelf); + + if (!wd->panel) + { + wd->panel = evas_object_rectangle_add(evas_object_evas_get(obj)); + elm_widget_sub_object_add(obj, wd->panel); + evas_object_size_hint_min_set(wd->panel, -1, 0); + evas_object_size_hint_max_set(wd->panel, -1, 0); + } + else + _conformant_part_sizing_eval(obj, ELM_CONFORM_SOFTKEY_PART); + + evas_object_color_set(wd->panel, 0, 0, 0, 0); + edje_object_part_swallow(wd->base, "elm.swallow.panel", wd->panel); +} + +static void _changed_size_hints(void *data, Evas *e __UNUSED__, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__) @@ -163,6 +261,19 @@ } */ +static void +_conformant_move_resize_event_cb(void *data, Evas *e, Evas_Object *obj, + void *event_info) +{ + Conformant_Part_Type part_type; + Widget_Data *wd = elm_widget_data_get(obj); + + if (!wd) return; + part_type = (ELM_CONFORM_INDICATOR_PART | + ELM_CONFORM_SOFTKEY_PART); + _conformant_part_sizing_eval(obj, part_type); +} + static Eina_Bool _prop_change(void *data, int type __UNUSED__, void *event) { @@ -174,42 +285,20 @@ ev = event; if (ev->atom == ECORE_X_ATOM_E_ILLUME_ZONE) { - Ecore_X_Window zone; - int sh = -1; + Conformant_Part_Type part_type; - zone = ecore_x_e_illume_zone_get(ev->win); - ecore_x_e_illume_indicator_geometry_get(zone, NULL, NULL, NULL, &sh); - if (sh < 0) sh = 0; - evas_object_size_hint_min_set(wd->shelf, -1, sh); - evas_object_size_hint_max_set(wd->shelf, -1, sh); - sh = -1; - ecore_x_e_illume_softkey_geometry_get(zone, NULL, NULL, NULL, &sh); - if (sh < 0) sh = 0; - evas_object_size_hint_min_set(wd->panel, -1, sh); - evas_object_size_hint_max_set(wd->panel, -1, sh); + part_type = (ELM_CONFORM_INDICATOR_PART | + ELM_CONFORM_SOFTKEY_PART); + _conformant_part_sizing_eval(data, part_type); + evas_object_event_callback_add(data, EVAS_CALLBACK_RESIZE, + _conformant_move_resize_event_cb, data); + evas_object_event_callback_add(data, EVAS_CALLBACK_MOVE, + _conformant_move_resize_event_cb, data); } else if (ev->atom == ECORE_X_ATOM_E_ILLUME_INDICATOR_GEOMETRY) - { - Ecore_X_Window zone; - int sh = -1; - - zone = ecore_x_e_illume_zone_get(ev->win); - ecore_x_e_illume_indicator_geometry_get(zone, NULL, NULL, NULL, &sh); - if (sh < 0) sh = 0; - evas_object_size_hint_min_set(wd->shelf, -1, sh); - evas_object_size_hint_max_set(wd->shelf, -1, sh); - } + _conformant_part_sizing_eval(data, ELM_CONFORM_INDICATOR_PART); else if (ev->atom == ECORE_X_ATOM_E_ILLUME_SOFTKEY_GEOMETRY) - { - Ecore_X_Window zone; - int sh = -1; - - zone = ecore_x_e_illume_zone_get(ev->win); - ecore_x_e_illume_softkey_geometry_get(zone, NULL, NULL, NULL, &sh); - if (sh < 0) sh = 0; - evas_object_size_hint_min_set(wd->panel, -1, sh); - evas_object_size_hint_max_set(wd->panel, -1, sh); - } + _conformant_part_sizing_eval(data, ELM_CONFORM_SOFTKEY_PART); else if (ev->atom == ECORE_X_ATOM_E_ILLUME_KEYBOARD_GEOMETRY) { Ecore_X_Window zone; @@ -256,31 +345,11 @@ #ifdef HAVE_ELEMENTARY_X Evas_Object *top = elm_widget_top_get(obj); - Ecore_X_Window zone, xwin = elm_win_xwindow_get(top); + Ecore_X_Window xwin = elm_win_xwindow_get(top); if ((xwin) && (!elm_win_inlined_image_object_get(top))) { - int sh = -1; - - zone = ecore_x_e_illume_zone_get(xwin); - - ecore_x_e_illume_indicator_geometry_get(zone, NULL, NULL, NULL, &sh); - if (sh < 0) sh = 0; - wd->shelf = evas_object_rectangle_add(e); - evas_object_color_set(wd->shelf, 0, 0, 0, 0); - evas_object_size_hint_min_set(wd->shelf, -1, sh); - evas_object_size_hint_max_set(wd->shelf, -1, sh); - edje_object_part_swallow(wd->base, "elm.swallow.shelf", wd->shelf); - - sh = -1; - ecore_x_e_illume_softkey_geometry_get(zone, NULL, NULL, NULL, &sh); - if (sh < 0) sh = 0; - wd->panel = evas_object_rectangle_add(e); - evas_object_color_set(wd->panel, 0, 0, 0, 0); - evas_object_size_hint_min_set(wd->panel, -1, sh); - evas_object_size_hint_max_set(wd->panel, -1, sh); - edje_object_part_swallow(wd->base, "elm.swallow.panel", wd->panel); - + _swallow_conformant_parts(obj); wd->prop_hdl = ecore_event_handler_add(ECORE_X_EVENT_WINDOW_PROPERTY, _prop_change, obj); } |
From: Enlightenment S. <no-...@en...> - 2011-05-02 09:22:57
|
Log: From: Jaehwan Kim <jae...@sa...> Subject: [E-devel] [Patch] els_scroller bug patch. I and Seoz found some problem about _elm_smart_scroller_wanted_region_set in els_scroller. While genlist items are appended, momentum animation in scroller cannot operate. It's why _elm_smart_Scroller_wanted_region_set is called continually. It's the problem which Seoz told you. and I fixed this problem. Please check the attached patch file. If you want to check the problem. Set the "Thumb scroll friction" in elementary_config to 2~3. Change the file "test_genlist.c" in elementary/src/bin like below. Author: raster Date: 2011-05-02 02:22:50 -0700 (Mon, 02 May 2011) New Revision: 59105 Trac: http://trac.enlightenment.org/e/changeset/59105 Modified: trunk/elementary/src/lib/els_scroller.c Modified: trunk/elementary/src/lib/els_scroller.c =================================================================== --- trunk/elementary/src/lib/els_scroller.c 2011-05-02 09:07:07 UTC (rev 59104) +++ trunk/elementary/src/lib/els_scroller.c 2011-05-02 09:22:50 UTC (rev 59105) @@ -814,6 +814,7 @@ y = py; } elm_smart_scroller_child_pos_set(sd->smart_obj, x, y); + _update_wanted_coordinates(sd, x, y); sd->pan_func.max_get(sd->pan_obj, &maxx, &maxy); sd->pan_func.min_get(sd->pan_obj, &minx, &miny); if (!sd->bounce_horiz) @@ -831,7 +832,6 @@ (no_bounce_x_end && no_bounce_y_end)) { _smart_anim_stop(sd->smart_obj); - _update_wanted_coordinates(sd, px, py); sd->down.momentum_animator = NULL; sd->down.bounce_x_hold = 0; @@ -1322,6 +1322,10 @@ INTERNAL_ENTRY; Evas_Coord ww, wh, wx = sd->wx; + if (sd->down.now || sd->down.momentum_animator || + sd->down.bounce_x_animator || sd->down.bounce_y_animator || + sd->down.hold_animator || sd->down.onhold_animator) return; + /* Flip to RTL cords only if init in RTL mode */ if(sd->is_mirrored) wx = _elm_smart_scroller_x_mirrored_get(obj, sd->wx); |
From: Enlightenment S. <no-...@en...> - 2011-05-03 11:25:40
|
Log: we don't need norender anymore since i changed the processing to use an idle enterer. Author: raster Date: 2011-05-03 04:25:33 -0700 (Tue, 03 May 2011) New Revision: 59147 Trac: http://trac.enlightenment.org/e/changeset/59147 Modified: trunk/elementary/src/lib/elm_genlist.c Modified: trunk/elementary/src/lib/elm_genlist.c =================================================================== --- trunk/elementary/src/lib/elm_genlist.c 2011-05-03 10:36:51 UTC (rev 59146) +++ trunk/elementary/src/lib/elm_genlist.c 2011-05-03 11:25:33 UTC (rev 59147) @@ -2008,7 +2008,7 @@ itb->minh = minh; itb->changed = EINA_FALSE; /* force an evas norender to garbage collect deleted objects */ - if (norender) evas_norender(evas_object_evas_get(itb->wd->obj)); +// if (norender) evas_norender(evas_object_evas_get(itb->wd->obj)); return showme; } |
From: Enlightenment S. <no-...@en...> - 2011-05-04 10:10:11
|
Log: allow elm to auto-screenshot and save windows all by itself just with a special elm_engine var - great way to auto-generate screenies from apps and change config/theme and everything automatically (via scripts etc.) Author: raster Date: 2011-05-04 03:09:59 -0700 (Wed, 04 May 2011) New Revision: 59185 Trac: http://trac.enlightenment.org/e/changeset/59185 Modified: trunk/elementary/src/lib/elm_config.c trunk/elementary/src/lib/elm_win.c Modified: trunk/elementary/src/lib/elm_config.c =================================================================== --- trunk/elementary/src/lib/elm_config.c 2011-05-04 09:44:53 UTC (rev 59184) +++ trunk/elementary/src/lib/elm_config.c 2011-05-04 10:09:59 UTC (rev 59185) @@ -1433,6 +1433,8 @@ (!strcasecmp(s, "software-16-wince-gdi")) || (!strcasecmp(s, "software_16_wince_gdi"))) eina_stringshare_replace(&_elm_config->engine, ELM_SOFTWARE_16_WINCE); + else if ((!strncmp(s, "shot:", 5))) + eina_stringshare_replace(&_elm_config->engine, s); } s = getenv("ELM_THUMBSCROLL_ENABLE"); Modified: trunk/elementary/src/lib/elm_win.c =================================================================== --- trunk/elementary/src/lib/elm_win.c 2011-05-04 09:44:53 UTC (rev 59184) +++ trunk/elementary/src/lib/elm_win.c 2011-05-04 10:09:59 UTC (rev 59185) @@ -32,6 +32,10 @@ Elm_Win_Type type; Elm_Win_Keyboard_Mode kbdmode; + struct { + const char *info; + Ecore_Timer *timer; + } shot; Eina_Bool autodel : 1; int *autodel_clear, rot; struct { @@ -99,7 +103,119 @@ Eina_List *_elm_win_list = NULL; int _elm_win_deferred_free = 0; +// exmaple shot spec (wait 0.1 sec then save as my-window.png): +// ELM_ENGINE="shot:delay=0.1:file=my-window.png" + +static double +_shot_delay_get(Elm_Win *win) +{ + char *p, *pd; + char *d = strdup(win->shot.info); + + if (!d) return 0.5; + for (p = (char *)win->shot.info; *p; p++) + { + if (!strncmp(p, "delay=", 6)) + { + double v; + + for (pd = d, p += 6; (*p) && (*p != ':'); p++, pd++) + { + *pd = *p; + } + *pd = 0; + v = atof(d); + free(d); + return v; + } + } + free(d); + return 0.5; +} + +static char * +_shot_file_get(Elm_Win *win) +{ + char *p; + char *tmp = strdup(win->shot.info); + + if (!tmp) return NULL; + for (p = (char *)win->shot.info; *p; p++) + { + if (!strncmp(p, "file=", 5)) + { + strcpy(tmp, p + 5); + return tmp; + } + } + free(tmp); + return strdup("out.png"); +} + +static char * +_shot_key_get(Elm_Win *win __UNUSED__) +{ + return NULL; +} + +static char * +_shot_flags_get(Elm_Win *win __UNUSED__) +{ + return NULL; +} + static void +_shot_do(Elm_Win *win) +{ + Ecore_Evas *ee; + Evas_Object *o; + unsigned int *pixels; + int w, h; + char *file, *key, *flags; + + ecore_evas_manual_render(win->ee); + pixels = (void *)ecore_evas_buffer_pixels_get(win->ee); + if (!pixels) return; + ecore_evas_geometry_get(win->ee, NULL, NULL, &w, &h); + if ((w < 1) || (h < 1)) return; + file = _shot_file_get(win); + if (!file) return; + key = _shot_key_get(win); + flags = _shot_flags_get(win); + ee = ecore_evas_buffer_new(1, 1); + o = evas_object_image_add(ecore_evas_get(ee)); + evas_object_image_alpha_set(o, ecore_evas_alpha_get(win->ee)); + evas_object_image_size_set(o, w, h); + evas_object_image_data_set(o, pixels); + if (!evas_object_image_save(o, file, key, flags)) + { + ERR("Cannot save window to '%s' (key '%s', flags '%s')", + file, key, flags); + } + free(file); + if (key) free(key); + if (flags) free(flags); + ecore_evas_free(ee); +} + +static Eina_Bool +_shot_delay(void *data) +{ + Elm_Win *win = data; + _shot_do(win); + win->shot.timer = NULL; + elm_exit(); + return EINA_FALSE; +} + +static void +_shot_handle(Elm_Win *win) +{ + if (!win->shot.info) return; + win->shot.timer = ecore_timer_add(_shot_delay_get(win), _shot_delay, win); +} + +static void _elm_win_move(Ecore_Evas *ee) { Evas_Object *obj = ecore_evas_object_associate_get(ee); @@ -246,7 +362,10 @@ static void _elm_win_obj_callback_show(void *data __UNUSED__, Evas *e __UNUSED__, Evas_Object *obj, void *event_info __UNUSED__) { + Elm_Win *win = data; + elm_object_focus(obj); + if (win->shot.info) _shot_handle(win); } static void @@ -285,6 +404,8 @@ } if (win->deferred_resize_job) ecore_job_del(win->deferred_resize_job); if (win->deferred_child_eval_job) ecore_job_del(win->deferred_child_eval_job); + if (win->shot.info) eina_stringshare_del(win->shot.info); + if (win->shot.timer) ecore_timer_del(win->shot.timer); while (((child = evas_object_bottom_get(win->evas))) && (child != obj)) { @@ -507,10 +628,12 @@ { if (win->ee) win->xwin = ecore_evas_software_x11_8_window_get(win->ee); } +/* killed else if (ENGINE_COMPARE(ELM_XRENDER_X11)) { if (win->ee) win->xwin = ecore_evas_xrender_x11_window_get(win->ee); } + */ else if (ENGINE_COMPARE(ELM_OPENGL_X11)) { if (win->ee) win->xwin = ecore_evas_gl_x11_window_get(win->ee); @@ -1235,6 +1358,7 @@ (ECORE_X_EVENT_CLIENT_MESSAGE, _elm_win_client_message, win); #endif } +/* killed else if (ENGINE_COMPARE(ELM_XRENDER_X11)) { win->ee = ecore_evas_xrender_x11_new(NULL, 0, 0, 0, 1, 1); @@ -1244,6 +1368,7 @@ (ECORE_X_EVENT_CLIENT_MESSAGE, _elm_win_client_message, win); #endif } + */ else if (ENGINE_COMPARE(ELM_OPENGL_X11)) { win->ee = ecore_evas_gl_x11_new(NULL, 0, 0, 0, 1, 1); @@ -1278,6 +1403,12 @@ win->ee = ecore_evas_gl_sdl_new(NULL, 1, 1, 0, 0); FALLBACK_TRY("OpenGL SDL"); } + else if (!strncmp(_elm_config->engine, "shot:", 5)) + { + win->ee = ecore_evas_buffer_new(1, 1); + ecore_evas_manual_render_set(win->ee, EINA_TRUE); + win->shot.info = eina_stringshare_add(_elm_config->engine + 5); + } #undef FALLBACK_TRY break; } |
From: Enlightenment S. <no-...@en...> - 2011-05-04 21:27:43
|
Log: wrn-- Author: raster Date: 2011-05-04 14:27:34 -0700 (Wed, 04 May 2011) New Revision: 59197 Trac: http://trac.enlightenment.org/e/changeset/59197 Modified: trunk/elementary/src/lib/elm_segment_control.c Modified: trunk/elementary/src/lib/elm_segment_control.c =================================================================== --- trunk/elementary/src/lib/elm_segment_control.c 2011-05-04 18:25:09 UTC (rev 59196) +++ trunk/elementary/src/lib/elm_segment_control.c 2011-05-04 21:27:34 UTC (rev 59197) @@ -235,7 +235,7 @@ edje_object_signal_emit(it->base.view, "elm,state,segment,selected", "elm"); wd->selected_item = it; - evas_object_smart_callback_call(wd->obj, SIG_CHANGED, (void*) it->seg_index); + evas_object_smart_callback_call(wd->obj, SIG_CHANGED, (void *)(unsigned long)it->seg_index); } static void |
From: Enlightenment S. <no-...@en...> - 2011-05-16 02:26:24
|
Log: disable xrender engine and fix string type for 8bit x11 software rendering Author: raster Date: 2011-05-15 19:26:16 -0700 (Sun, 15 May 2011) New Revision: 59433 Trac: http://trac.enlightenment.org/e/changeset/59433 Modified: trunk/elementary/src/lib/elm_config.c Modified: trunk/elementary/src/lib/elm_config.c =================================================================== --- trunk/elementary/src/lib/elm_config.c 2011-05-16 02:16:26 UTC (rev 59432) +++ trunk/elementary/src/lib/elm_config.c 2011-05-16 02:26:16 UTC (rev 59433) @@ -1393,7 +1393,7 @@ (!strcasecmp(s, "opengl_x11"))) eina_stringshare_replace(&_elm_config->engine, ELM_OPENGL_X11); else if ((!strcasecmp(s, "x11-8")) || - (!strcasecmp(s, "x18")) || + (!strcasecmp(s, "x8")) || (!strcasecmp(s, "software-8-x11")) || (!strcasecmp(s, "software_8_x11"))) eina_stringshare_replace(&_elm_config->engine, ELM_SOFTWARE_8_X11); @@ -1402,11 +1402,13 @@ (!strcasecmp(s, "software-16-x11")) || (!strcasecmp(s, "software_16_x11"))) eina_stringshare_replace(&_elm_config->engine, ELM_SOFTWARE_16_X11); +/* else if ((!strcasecmp(s, "xrender")) || (!strcasecmp(s, "xr")) || (!strcasecmp(s, "xrender-x11")) || (!strcasecmp(s, "xrender_x11"))) eina_stringshare_replace(&_elm_config->engine, ELM_XRENDER_X11); + */ else if ((!strcasecmp(s, "fb")) || (!strcasecmp(s, "software-fb")) || (!strcasecmp(s, "software_fb"))) |
From: Enlightenment S. <no-...@en...> - 2011-05-16 02:48:46
|
Log: some docs on how to use the shot engine.. and other engines for elm for testing. Author: raster Date: 2011-05-15 19:48:39 -0700 (Sun, 15 May 2011) New Revision: 59435 Trac: http://trac.enlightenment.org/e/changeset/59435 Modified: trunk/elementary/src/lib/elm_win.c Modified: trunk/elementary/src/lib/elm_win.c =================================================================== --- trunk/elementary/src/lib/elm_win.c 2011-05-16 02:33:21 UTC (rev 59434) +++ trunk/elementary/src/lib/elm_win.c 2011-05-16 02:48:39 UTC (rev 59435) @@ -5,7 +5,57 @@ * @defgroup Win Win * * The window class of Elementary. Contains functions to manipulate - * windows. + * windows. The Evas engine used to render the window contents is specified + * in the system or user elementary config files (whichever is found last), + * and can be overridden with the ELM_ENGINE environment variable for testing. + * Engines that may be supported (depending on Evas and Ecore-Evas compilation + * setup and modules actually installed at runtime) are (listed in order of + * best supported and most likely to be complete and work to lowest quality). + * + * "x11", "x", "software-x11", "software_x11" + * (Software rendering in X11) + * "gl", "opengl", "opengl-x11", "opengl_x11" + * (OpenGL or OpenGL-ES2 rendering in X11) + * "shot:..." + * (Virtual screenshot renderer - renders to output file and exits) + * "fb", "software-fb", "software_fb" + * (Linux framebuffer direct software rendering) + * "sdl", "software-sdl", "software_sdl" + * (SDL software rendering to SDL buffer) + * "gl-sdl", "gl_sdl", "opengl-sdl", "opengl_sdl" + * (OpenGL or OpenGL-ES2 rendering using SDL as the buffer) + * "gdi", "software-gdi", "software_gdi" + * (Windows WIN32 rendering via GDI with software) + * "dfb", "directfb" + * (Rendering to a DirectFB window) + * "x11-8", "x8", "software-8-x11", "software_8_x11" + * (Rendering in grayscale using dedicated 8bit software engine in X11) + * "x11-16", "x16", "software-16-x11", "software_16_x11" + * (Rendering in X11 using 16bit software engine) + * "wince-gdi", "software-16-wince-gdi", "software_16_wince_gdi" + * (Windows CE rendering via GDI with 16bit software renderer) + * "sdl-16", "software-16-sdl", "software_16_sdl" + * (Rendering to SDL buffer with 16bit software renderer) + * + * All engines use a simple string to select the engine to render, EXCEPT + * the "shot" engine. This actually encodes the output of the virtual + * screenshot and how long to delay in the engine string. The engine string + * is encoded in the following way: + * + * "shot:[delay=XX][:][file=XX]" + * + * Where options are separated by a ":" char if more than one option is given, + * with delay, if provided being the first option and file the last (order + * is important). The delay specifies how long to wait after the window is + * shown before doing the virtual "in memory" rendering and then save the + * output to the file specified by the file option (and then exit). If no + * delay is given, the default is 0.5 seconds. If no file is given the + * default output file is "out.png". Some examples of using the shot engine: + * + * ELM_ENGINE="shot:delay=1.0:file=elm_test.png" elementary_test + * ELM_ENGINE="shot:file=elm_test2.png" elementary_test + * ELM_ENGINE="shot:delay=2.0" elementary_test + * ELM_ENGINE="shot:" elementary_test * * Signals that you can add callbacks for are: * |
From: Enlightenment S. <no-...@en...> - 2011-05-18 07:04:58
|
Log: fix elm table clear to remove elm widget usb obj entries! Author: raster Date: 2011-05-18 00:04:51 -0700 (Wed, 18 May 2011) New Revision: 59482 Trac: http://trac.enlightenment.org/e/changeset/59482 Modified: trunk/elementary/src/lib/elm_table.c Modified: trunk/elementary/src/lib/elm_table.c =================================================================== --- trunk/elementary/src/lib/elm_table.c 2011-05-18 07:04:32 UTC (rev 59481) +++ trunk/elementary/src/lib/elm_table.c 2011-05-18 07:04:51 UTC (rev 59482) @@ -300,8 +300,12 @@ EAPI void elm_table_clear(Evas_Object *obj, Eina_Bool clear) { + Eina_List *chld; + Evas_Object *o; ELM_CHECK_WIDTYPE(obj, widtype); Widget_Data *wd = elm_widget_data_get(obj); if (!wd) return; + chld = evas_object_table_children_get(wd->tbl); + EINA_LIST_FREE(chld, o) elm_widget_sub_object_del(obj, o); evas_object_table_clear(wd->tbl, clear); } |
From: Enlightenment S. <no-...@en...> - 2011-05-18 07:29:41
|
Log: oops lost the elm widget sub ob add call. fixed. Author: raster Date: 2011-05-18 00:29:32 -0700 (Wed, 18 May 2011) New Revision: 59484 Trac: http://trac.enlightenment.org/e/changeset/59484 Modified: trunk/elementary/src/lib/elm_grid.c Modified: trunk/elementary/src/lib/elm_grid.c =================================================================== --- trunk/elementary/src/lib/elm_grid.c 2011-05-18 07:15:36 UTC (rev 59483) +++ trunk/elementary/src/lib/elm_grid.c 2011-05-18 07:29:32 UTC (rev 59484) @@ -135,6 +135,7 @@ ELM_CHECK_WIDTYPE(obj, widtype); Widget_Data *wd = elm_widget_data_get(obj); if (!wd) return; + elm_widget_sub_object_add(obj, subobj); evas_object_grid_pack(wd->grd, subobj, x, y, w, h); } |
From: Enlightenment S. <no-...@en...> - 2011-05-23 01:24:52
|
Log: dont add to win resize objs if alread one Author: raster Date: 2011-05-22 18:24:43 -0700 (Sun, 22 May 2011) New Revision: 59605 Trac: http://trac.enlightenment.org/e/changeset/59605 Modified: trunk/elementary/src/lib/elm_win.c Modified: trunk/elementary/src/lib/elm_win.c =================================================================== --- trunk/elementary/src/lib/elm_win.c 2011-05-22 17:13:26 UTC (rev 59604) +++ trunk/elementary/src/lib/elm_win.c 2011-05-23 01:24:43 UTC (rev 59605) @@ -1596,6 +1596,7 @@ ELM_CHECK_WIDTYPE(obj, widtype); win = elm_widget_data_get(obj); if (!win) return; + if (eina_list_data_find(win->subobjs, subobj)) return; win->subobjs = eina_list_append(win->subobjs, subobj); elm_widget_sub_object_add(obj, subobj); evas_object_event_callback_add(subobj, EVAS_CALLBACK_DEL, |
From: Enlightenment S. <no-...@en...> - 2011-05-24 07:49:47
|
Log: fmting. Author: raster Date: 2011-05-24 00:49:37 -0700 (Tue, 24 May 2011) New Revision: 59640 Trac: http://trac.enlightenment.org/e/changeset/59640 Modified: trunk/elementary/src/lib/elm_widget.c Modified: trunk/elementary/src/lib/elm_widget.c =================================================================== --- trunk/elementary/src/lib/elm_widget.c 2011-05-24 07:49:11 UTC (rev 59639) +++ trunk/elementary/src/lib/elm_widget.c 2011-05-24 07:49:37 UTC (rev 59640) @@ -2877,7 +2877,8 @@ Eina_List *list; Evas_Object *o; INTERNAL_ENTRY - list = evas_object_smart_members_get(obj); + + list = evas_object_smart_members_get(obj); EINA_LIST_FREE(list, o) { if (evas_object_data_get(o, "_elm_leaveme")) continue; |
From: Enlightenment S. <no-...@en...> - 2011-05-24 07:49:59
|
Log: cube up/down already handled. Author: raster Date: 2011-05-24 00:49:50 -0700 (Tue, 24 May 2011) New Revision: 59641 Trac: http://trac.enlightenment.org/e/changeset/59641 Modified: trunk/elementary/src/lib/elm_flip.c Modified: trunk/elementary/src/lib/elm_flip.c =================================================================== --- trunk/elementary/src/lib/elm_flip.c 2011-05-24 07:49:37 UTC (rev 59640) +++ trunk/elementary/src/lib/elm_flip.c 2011-05-24 07:49:50 UTC (rev 59641) @@ -12,6 +12,10 @@ * ELM_FLIP_ROTATE_X_CENTER_AXIS * ELM_FLIP_ROTATE_XZ_CENTER_AXIS * ELM_FLIP_ROTATE_YZ_CENTER_AXIS + * ELM_FLIP_CUBE_LEFT + * ELM_FLIP_CUBE_RIGHT + * ELM_FLIP_CUBE_UP + * ELM_FLIP_CUBE_DOWN * * Signals that you can add callbacks for are: * @@ -675,9 +679,11 @@ * ELM_FLIP_ROTATE_YZ_CENTER_AXIS * ELM_FLIP_CUBE_LEFT * ELM_FLIP_CUBE_RIGHT - * + * ELM_FLIP_CUBE_UP + * ELM_FLIP_CUBE_DOWN + * * FIXME: add - ELM_FLIP_CUBE_UP - * FIXMEL add - ELM_FLIP_CUBE_DOWN + * FIXME: add - ELM_FLIP_CUBE_DOWN * * @ingroup Flip */ @@ -695,7 +701,7 @@ // force calc to contents are the right size before transition evas_smart_objects_calculate(evas_object_evas_get(obj)); _flip(obj); - // FIXME: hack around evas rendering bug (only fix makes evas bitch-slow + // FIXME: hack around evas rendering bug (only fix makes evas bitch-slow) evas_object_map_enable_set(wd->front.content, 0); evas_object_map_enable_set(wd->back.content, 0); evas_object_resize(wd->front.content, 0, 0); |
From: Enlightenment S. <no-...@en...> - 2011-05-25 11:47:17
|
Log: elm grid -> handle focus chainy fun Author: raster Date: 2011-05-25 04:47:09 -0700 (Wed, 25 May 2011) New Revision: 59665 Trac: http://trac.enlightenment.org/e/changeset/59665 Modified: trunk/elementary/src/lib/elm_grid.c Modified: trunk/elementary/src/lib/elm_grid.c =================================================================== --- trunk/elementary/src/lib/elm_grid.c 2011-05-25 11:44:10 UTC (rev 59664) +++ trunk/elementary/src/lib/elm_grid.c 2011-05-25 11:47:09 UTC (rev 59665) @@ -34,6 +34,42 @@ free(wd); } +static Eina_Bool +_elm_table_focus_next_hook(const Evas_Object *obj, Elm_Focus_Direction dir, Evas_Object **next) +{ + Widget_Data *wd = elm_widget_data_get(obj); + const Eina_List *items; + void *(*list_data_get) (const Eina_List *list); + Eina_List *(*list_free) (Eina_List *list); + + if ((!wd) || (!wd->tbl)) + return EINA_FALSE; + + /* Focus chain */ + /* TODO: Change this to use other chain */ + if ((items = elm_widget_focus_custom_chain_get(obj))) + { + list_data_get = eina_list_data_get; + list_free = NULL; + } + else + { + items = evas_object_table_children_get(wd->grd); + list_data_get = eina_list_data_get; + list_free = eina_list_free; + + if (!items) return EINA_FALSE; + } + + Eina_Bool ret = elm_widget_focus_list_next_get(obj, items, list_data_get, + dir, next); + + if (list_free) + list_free((Eina_List *)items); + + return ret; +} + static void _mirrored_set(Evas_Object *obj, Eina_Bool rtl) { @@ -72,12 +108,15 @@ elm_widget_sub_object_add(parent, obj); elm_widget_data_set(obj, wd); elm_widget_del_hook_set(obj, _del_hook); + elm_widget_focus_next_hook_set(obj, _elm_table_focus_next_hook); + elm_widget_can_focus_set(obj, EINA_FALSE); elm_widget_theme_hook_set(obj, _theme_hook); - elm_widget_can_focus_set(obj, EINA_FALSE); wd->grd = evas_object_grid_add(e); evas_object_grid_size_set(wd->grd, 100, 100); elm_widget_resize_object_set(obj, wd->grd); + + _mirrored_set(obj, elm_widget_mirrored_get(obj)); return obj; } |
From: Enlightenment S. <no-...@en...> - 2011-05-26 09:02:07
|
Log: flip drag -> set and respect hold! Author: raster Date: 2011-05-26 02:02:00 -0700 (Thu, 26 May 2011) New Revision: 59698 Trac: http://trac.enlightenment.org/e/changeset/59698 Modified: trunk/elementary/src/lib/elm_flip.c Modified: trunk/elementary/src/lib/elm_flip.c =================================================================== --- trunk/elementary/src/lib/elm_flip.c 2011-05-26 08:49:57 UTC (rev 59697) +++ trunk/elementary/src/lib/elm_flip.c 2011-05-26 09:02:00 UTC (rev 59698) @@ -1473,6 +1473,7 @@ if (!wd) return; if (ev->button != 1) return; + if (ev->event_flags & EVAS_EVENT_FLAG_ON_HOLD) return ; if (wd->animator) { ecore_animator_del(wd->animator); @@ -1500,6 +1501,7 @@ if (!wd) return; if (ev->button != 1) return; + if (ev->event_flags & EVAS_EVENT_FLAG_ON_HOLD) return ; wd->down = 0; evas_object_geometry_get(data, &x, &y, &w, &h); wd->x = ev->canvas.x - x; @@ -1553,6 +1555,7 @@ if (!wd) return; if (!wd->down) return; + if (ev->event_flags & EVAS_EVENT_FLAG_ON_HOLD) return ; evas_object_geometry_get(data, &x, &y, &w, &h); wd->x = ev->cur.canvas.x - x; wd->y = ev->cur.canvas.y - y; @@ -1590,6 +1593,7 @@ } else return; } + ev->event_flags |= EVAS_EVENT_FLAG_ON_HOLD; if (wd->job) ecore_job_del(wd->job); wd->job = ecore_job_add(_update_job, wd); } |
From: Enlightenment S. <no-...@en...> - 2011-05-27 05:42:35
|
Log: fix hover doc -> no html tags. breaks latex docs. Author: raster Date: 2011-05-26 22:42:27 -0700 (Thu, 26 May 2011) New Revision: 59726 Trac: http://trac.enlightenment.org/e/changeset/59726 Modified: trunk/elementary/src/lib/elm_hover.c Modified: trunk/elementary/src/lib/elm_hover.c =================================================================== --- trunk/elementary/src/lib/elm_hover.c 2011-05-27 04:36:33 UTC (rev 59725) +++ trunk/elementary/src/lib/elm_hover.c 2011-05-27 05:42:27 UTC (rev 59726) @@ -943,12 +943,10 @@ * NULL, on errors. * * @p pref_axis may be one of - * <ul> * - @c ELM_HOVER_AXIS_NONE -- no prefered orientation * - @c ELM_HOVER_AXIS_HORIZONTAL -- horizontal * - @c ELM_HOVER_AXIS_VERTICAL -- vertical * - @c ELM_HOVER_AXIS_BOTH -- both - * </ul> * * See also elm_hover_content_set(). * |
From: Enlightenment S. <no-...@en...> - 2011-05-27 10:31:04
|
Log: genlist -> improve performance by adding lots of freezes and thaws. :) Author: raster Date: 2011-05-27 03:30:56 -0700 (Fri, 27 May 2011) New Revision: 59729 Trac: http://trac.enlightenment.org/e/changeset/59729 Modified: trunk/elementary/src/lib/elm_genlist.c Modified: trunk/elementary/src/lib/elm_genlist.c =================================================================== --- trunk/elementary/src/lib/elm_genlist.c 2011-05-27 10:24:03 UTC (rev 59728) +++ trunk/elementary/src/lib/elm_genlist.c 2011-05-27 10:30:56 UTC (rev 59729) @@ -728,6 +728,7 @@ Widget_Data *wd = elm_widget_data_get(obj); Item_Block *itb; if (!wd) return; + evas_event_freeze(evas_object_evas_get(wd->obj)); _item_cache_zero(wd); _elm_widget_mirrored_reload(obj); _mirrored_set(obj, elm_widget_mirrored_get(obj)); @@ -751,6 +752,8 @@ if (wd->calc_job) ecore_job_del(wd->calc_job); wd->calc_job = ecore_job_add(_calc_job, wd); _sizing_eval(obj); + evas_event_thaw(evas_object_evas_get(wd->obj)); + evas_event_thaw_eval(evas_object_evas_get(wd->obj)); } static void @@ -933,6 +936,9 @@ static void _item_del(Elm_Genlist_Item *it) { + Evas_Object *tob = it->wd->obj; + + evas_event_freeze(evas_object_evas_get(tob)); elm_widget_item_pre_notify_del(it); elm_genlist_item_subitems_clear(it); it->wd->walking -= it->walking; @@ -962,6 +968,9 @@ if (it->tooltip.del_cb) it->tooltip.del_cb((void *)it->tooltip.data, it->base.widget, it); + evas_event_thaw(evas_object_evas_get(tob)); + evas_event_thaw_eval(evas_object_evas_get(tob)); + elm_widget_item_del(it); } @@ -1544,16 +1553,20 @@ Elm_Genlist_Item *it = data; if ((it->delete_me) || (!it->realized) || (!it->mode_view)) return; char buf[1024]; - + + evas_event_freeze(evas_object_evas_get(obj)); it->nocache = EINA_FALSE; _mode_item_unrealize(it); snprintf(buf, sizeof(buf), "elm,state,%s,passive,finished", it->wd->mode_type); edje_object_signal_callback_del_full(obj, buf, "elm", _mode_finished_signal_cb, it); + evas_event_thaw(evas_object_evas_get(obj)); + evas_event_thaw_eval(evas_object_evas_get(obj)); } static void _item_cache_clean(Widget_Data *wd) { + evas_event_freeze(evas_object_evas_get(wd->obj)); while ((wd->item_cache) && (wd->item_cache_count > wd->item_cache_max)) { Item_Cache *itc; @@ -1567,6 +1580,8 @@ if (itc->item_style) eina_stringshare_del(itc->item_style); free(itc); } + evas_event_thaw(evas_object_evas_get(wd->obj)); + evas_event_thaw_eval(evas_object_evas_get(wd->obj)); } static void @@ -1583,12 +1598,15 @@ { Item_Cache *itc; + evas_event_freeze(evas_object_evas_get(it->wd->obj)); if (it->wd->item_cache_max <= 0) { evas_object_del(it->base.view); it->base.view = NULL; evas_object_del(it->spacer); it->spacer = NULL; + evas_event_thaw(evas_object_evas_get(it->wd->obj)); + evas_event_thaw_eval(evas_object_evas_get(it->wd->obj)); return; } @@ -1640,6 +1658,8 @@ evas_object_event_callback_del_full(itc->base_view, EVAS_CALLBACK_MULTI_MOVE, _multi_move, it); _item_cache_clean(it->wd); + evas_event_thaw(evas_object_evas_get(it->wd->obj)); + evas_event_thaw_eval(evas_object_evas_get(it->wd->obj)); } static Item_Cache * @@ -1834,7 +1854,8 @@ int depth, tsize = 20; Item_Cache *itc = NULL; - if (it->delete_me) return ; + if (it->delete_me) return; + evas_event_freeze(evas_object_evas_get(it->wd->obj)); if (it->realized) { if (it->order_num_in != in) @@ -1843,6 +1864,8 @@ _elm_genlist_item_odd_even_update(it); _elm_genlist_item_state_update(it, NULL); } + evas_event_thaw(evas_object_evas_get(it->wd->obj)); + evas_event_thaw_eval(evas_object_evas_get(it->wd->obj)); return; } it->order_num_in = in; @@ -2007,6 +2030,8 @@ it->want_unrealize = EINA_FALSE; if (itc) _item_cache_free(itc); + evas_event_thaw(evas_object_evas_get(it->wd->obj)); + evas_event_thaw_eval(evas_object_evas_get(it->wd->obj)); if (!calc) evas_object_smart_callback_call(it->base.widget, SIG_REALIZED, it); } @@ -2016,6 +2041,7 @@ Evas_Object *icon; if (!it->realized) return; + evas_event_freeze(evas_object_evas_get(it->wd->obj)); if (!calc) evas_object_smart_callback_call(it->base.widget, SIG_UNREALIZED, it); if (it->long_timer) { @@ -2048,6 +2074,8 @@ it->states = NULL; it->realized = EINA_FALSE; it->want_unrealize = EINA_FALSE; + evas_event_thaw(evas_object_evas_get(it->wd->obj)); + evas_event_thaw_eval(evas_object_evas_get(it->wd->obj)); } static Eina_Bool @@ -2061,6 +2089,7 @@ Eina_Bool showme = EINA_FALSE, changed = EINA_FALSE; Evas_Coord y = 0; + evas_event_freeze(evas_object_evas_get(itb->wd->obj)); itb->num = in; EINA_LIST_FOREACH(itb->items, l, it) { @@ -2095,6 +2124,8 @@ itb->minw = minw; itb->minh = minh; itb->changed = EINA_FALSE; + evas_event_thaw(evas_object_evas_get(itb->wd->obj)); + evas_event_thaw_eval(evas_object_evas_get(itb->wd->obj)); return showme; } @@ -2107,6 +2138,7 @@ Elm_Genlist_Item *it; if (itb->realized) return; + evas_event_freeze(evas_object_evas_get(itb->wd->obj)); EINA_LIST_FOREACH(itb->items, l, it) { if (it->delete_me) continue; @@ -2115,6 +2147,8 @@ } itb->realized = EINA_TRUE; itb->want_unrealize = EINA_FALSE; + evas_event_thaw(evas_object_evas_get(itb->wd->obj)); + evas_event_thaw_eval(evas_object_evas_get(itb->wd->obj)); } static void @@ -2125,6 +2159,7 @@ Eina_Bool dragging = EINA_FALSE; if (!itb->realized) return; + evas_event_freeze(evas_object_evas_get(itb->wd->obj)); EINA_LIST_FOREACH(itb->items, l, it) { if (it->flags != ELM_GENLIST_ITEM_GROUP) @@ -2145,6 +2180,8 @@ } else itb->want_unrealize = EINA_FALSE; + evas_event_thaw(evas_object_evas_get(itb->wd->obj)); + evas_event_thaw_eval(evas_object_evas_get(itb->wd->obj)); } static void @@ -2153,9 +2190,12 @@ if (!it) return; if (!view) return; + evas_event_freeze(evas_object_evas_get(it->wd->obj)); evas_object_resize(view, it->w, it->h); evas_object_move(view, it->scrl_x, it->scrl_y); evas_object_show(view); + evas_event_thaw(evas_object_evas_get(it->wd->obj)); + evas_event_thaw_eval(evas_object_evas_get(it->wd->obj)); } static void @@ -2168,6 +2208,7 @@ Evas_Coord y = 0, ox, oy, ow, oh, cvx, cvy, cvw, cvh; int vis; + evas_event_freeze(evas_object_evas_get(itb->wd->obj)); evas_object_geometry_get(itb->wd->pan_smart, &ox, &oy, &ow, &oh); evas_output_viewport_get(evas_object_evas_get(itb->wd->obj), &cvx, &cvy, &cvw, &cvh); @@ -2219,6 +2260,8 @@ } y += it->h; } + evas_event_thaw(evas_object_evas_get(itb->wd->obj)); + evas_event_thaw_eval(evas_object_evas_get(itb->wd->obj)); } static void @@ -2228,6 +2271,7 @@ Eina_List *l; Elm_Genlist_Item *git; + evas_event_freeze(evas_object_evas_get(wd->obj)); EINA_LIST_FOREACH(wd->group_items, l, git) { if (git->want_realize) @@ -2245,6 +2289,8 @@ _item_unrealize(git, EINA_FALSE); } } + evas_event_thaw(evas_object_evas_get(wd->obj)); + evas_event_thaw_eval(evas_object_evas_get(wd->obj)); } static Eina_Bool @@ -2275,6 +2321,7 @@ if (wd->w != ow) wd->w = ow; + evas_event_freeze(evas_object_evas_get(wd->obj)); EINA_INLIST_FOREACH(wd->blocks, itb) { Eina_Bool showme = EINA_FALSE; @@ -2382,6 +2429,8 @@ } wd->calc_job = NULL; evas_object_smart_changed(wd->pan_smart); + evas_event_thaw(evas_object_evas_get(wd->obj)); + evas_event_thaw_eval(evas_object_evas_get(wd->obj)); } static void @@ -2394,6 +2443,8 @@ if (!wd) return; wd->update_job = NULL; num = 0; + + evas_event_freeze(evas_object_evas_get(wd->obj)); EINA_INLIST_FOREACH(wd->blocks, itb) { Evas_Coord itminw, itminh; @@ -2446,6 +2497,8 @@ if (wd->calc_job) ecore_job_del(wd->calc_job); wd->calc_job = ecore_job_add(_calc_job, wd); } + evas_event_thaw(evas_object_evas_get(wd->obj)); + evas_event_thaw_eval(evas_object_evas_get(wd->obj)); } static void @@ -2606,6 +2659,7 @@ Elm_Genlist_Item *git; Eina_List *l; + evas_event_freeze(evas_object_evas_get(obj)); evas_object_geometry_get(obj, &ox, &oy, &ow, &oh); evas_output_viewport_get(evas_object_evas_get(obj), &cvx, &cvy, &cvw, &cvh); EINA_LIST_FOREACH(sd->wd->group_items, l, git) @@ -2631,6 +2685,8 @@ in += itb->count; } _group_items_recalc(sd->wd); + evas_event_thaw(evas_object_evas_get(obj)); + evas_event_thaw_eval(evas_object_evas_get(obj)); } static void @@ -2727,6 +2783,7 @@ if ((it->mode_view) || (it->delete_me)) return; + evas_event_freeze(evas_object_evas_get(it->wd->obj)); it->mode_view = edje_object_add(evas_object_evas_get(it->base.widget)); edje_object_scale_set(it->mode_view, elm_widget_scale_get(it->base.widget) * @@ -2771,6 +2828,8 @@ it->base.view); it->want_unrealize = EINA_FALSE; + evas_event_thaw(evas_object_evas_get(it->wd->obj)); + evas_event_thaw_eval(evas_object_evas_get(it->wd->obj)); } static void @@ -2780,6 +2839,7 @@ Evas_Object *icon; if (!it->mode_view) return; + evas_event_freeze(evas_object_evas_get(it->wd->obj)); elm_widget_stringlist_free(it->mode_labels); it->mode_labels = NULL; elm_widget_stringlist_free(it->mode_icons); @@ -2796,6 +2856,8 @@ if (wd->mode_item == it) wd->mode_item = NULL; + evas_event_thaw(evas_object_evas_get(it->wd->obj)); + evas_event_thaw_eval(evas_object_evas_get(it->wd->obj)); } static void @@ -2817,8 +2879,11 @@ elm_smart_scroller_hold_set(wd->scr, EINA_TRUE); wd->scr_hold_timer = ecore_timer_add(0.1, _scr_hold_timer_cb, wd); + evas_event_freeze(evas_object_evas_get(it->wd->obj)); _mode_item_realize(it); _item_position(it, it->mode_view); + evas_event_thaw(evas_object_evas_get(it->wd->obj)); + evas_event_thaw_eval(evas_object_evas_get(it->wd->obj)); snprintf(buf, sizeof(buf), "elm,state,%s,active", wd->mode_type); edje_object_signal_emit(it->mode_view, buf, "elm"); @@ -3115,6 +3180,7 @@ double t0, t; t0 = ecore_time_get(); + evas_event_freeze(evas_object_evas_get(wd->obj)); for (n = 0; (wd->queue) && (n < 128); n++) { Elm_Genlist_Item *it; @@ -3135,6 +3201,8 @@ if ((t - t0) > (ecore_animator_frametime_get())) break; } } + evas_event_thaw(evas_object_evas_get(wd->obj)); + evas_event_thaw_eval(evas_object_evas_get(wd->obj)); return n; } @@ -3182,6 +3250,7 @@ if (it->queued) return; it->queued = EINA_TRUE; wd->queue = eina_list_append(wd->queue, it); + evas_event_freeze(evas_object_evas_get(wd->obj)); while ((wd->queue) && ((!wd->blocks) || (!wd->blocks->next))) { if (wd->queue_idle_enterer) @@ -3191,6 +3260,8 @@ } _queue_process(wd); } + evas_event_thaw(evas_object_evas_get(wd->obj)); + evas_event_thaw_eval(evas_object_evas_get(wd->obj)); if (!wd->queue_idle_enterer) wd->queue_idle_enterer = ecore_idle_enterer_add(_item_idle_enterer, wd); } @@ -3502,6 +3573,7 @@ } return; } + evas_event_freeze(evas_object_evas_get(wd->obj)); while (wd->items) { Elm_Genlist_Item *it = ELM_GENLIST_ITEM_FROM_INLIST(wd->items); @@ -3570,6 +3642,8 @@ evas_object_smart_callback_call(wd->pan_smart, "changed", NULL); } _sizing_eval(obj); + evas_event_thaw(evas_object_evas_get(wd->obj)); + evas_event_thaw_eval(evas_object_evas_get(wd->obj)); } /** |
From: Enlightenment S. <no-...@en...> - 2011-05-27 10:48:02
|
Log: From: WooHyun Jung <wh0...@sa...> Subject: [E-devel] [Patch] elm_widget_focus_steal should be executed only with "can_focus" object. I think elm_widget_focus_steal function should be executed only with "can_focus" widget object. ("Cannot_focus" object has no right to steal focus from others !!) Author: raster Date: 2011-05-27 03:47:52 -0700 (Fri, 27 May 2011) New Revision: 59733 Trac: http://trac.enlightenment.org/e/changeset/59733 Modified: trunk/elementary/src/lib/elm_widget.c Modified: trunk/elementary/src/lib/elm_widget.c =================================================================== --- trunk/elementary/src/lib/elm_widget.c 2011-05-27 10:46:51 UTC (rev 59732) +++ trunk/elementary/src/lib/elm_widget.c 2011-05-27 10:47:52 UTC (rev 59733) @@ -1711,6 +1711,7 @@ if (sd->focused) return; if (sd->disabled) return; + if (!sd->can_focus) return; parent = obj; for (;;) { |
From: Enlightenment S. <no-...@en...> - 2011-06-01 13:14:02
|
Log: seems 1 frereze+thaw causes slowdown... thanks dan! :) Author: raster Date: 2011-06-01 06:13:56 -0700 (Wed, 01 Jun 2011) New Revision: 59866 Trac: http://trac.enlightenment.org/e/changeset/59866 Modified: trunk/elementary/src/lib/elm_genlist.c Modified: trunk/elementary/src/lib/elm_genlist.c =================================================================== --- trunk/elementary/src/lib/elm_genlist.c 2011-06-01 13:04:41 UTC (rev 59865) +++ trunk/elementary/src/lib/elm_genlist.c 2011-06-01 13:13:56 UTC (rev 59866) @@ -3250,7 +3250,9 @@ if (it->queued) return; it->queued = EINA_TRUE; wd->queue = eina_list_append(wd->queue, it); - evas_event_freeze(evas_object_evas_get(wd->obj)); +// FIXME: why does a freeze then thaw here cause some genlist +// elm_genlist_item_append() to be much much slower? +// evas_event_freeze(evas_object_evas_get(wd->obj)); while ((wd->queue) && ((!wd->blocks) || (!wd->blocks->next))) { if (wd->queue_idle_enterer) @@ -3260,8 +3262,8 @@ } _queue_process(wd); } - evas_event_thaw(evas_object_evas_get(wd->obj)); - evas_event_thaw_eval(evas_object_evas_get(wd->obj)); +// evas_event_thaw(evas_object_evas_get(wd->obj)); +// evas_event_thaw_eval(evas_object_evas_get(wd->obj)); if (!wd->queue_idle_enterer) wd->queue_idle_enterer = ecore_idle_enterer_add(_item_idle_enterer, wd); } |
From: Enlightenment S. <no-...@en...> - 2011-06-01 13:15:17
|
Log: get rid of freeze+thaw lockup for mode changed items Author: raster Date: 2011-06-01 06:15:08 -0700 (Wed, 01 Jun 2011) New Revision: 59867 Trac: http://trac.enlightenment.org/e/changeset/59867 Modified: trunk/elementary/src/lib/elm_genlist.c Modified: trunk/elementary/src/lib/elm_genlist.c =================================================================== --- trunk/elementary/src/lib/elm_genlist.c 2011-06-01 13:13:56 UTC (rev 59866) +++ trunk/elementary/src/lib/elm_genlist.c 2011-06-01 13:15:08 UTC (rev 59867) @@ -1553,14 +1553,15 @@ Elm_Genlist_Item *it = data; if ((it->delete_me) || (!it->realized) || (!it->mode_view)) return; char buf[1024]; + Evas *te = evas_object_evas_get(obj); -// evas_event_freeze(evas_object_evas_get(obj)); + evas_event_freeze(te); it->nocache = EINA_FALSE; _mode_item_unrealize(it); snprintf(buf, sizeof(buf), "elm,state,%s,passive,finished", it->wd->mode_type); edje_object_signal_callback_del_full(obj, buf, "elm", _mode_finished_signal_cb, it); -// evas_event_thaw(evas_object_evas_get(obj)); -// evas_event_thaw_eval(evas_object_evas_get(obj)); + evas_event_thaw(te); + evas_event_thaw_eval(te); } static void |
From: Enlightenment S. <no-...@en...> - 2011-06-08 03:00:59
|
Log: and use different sym. Author: raster Date: 2011-06-07 20:00:52 -0700 (Tue, 07 Jun 2011) New Revision: 60067 Trac: http://trac.enlightenment.org/e/changeset/60067 Modified: trunk/elementary/src/lib/elm_main.c Modified: trunk/elementary/src/lib/elm_main.c =================================================================== --- trunk/elementary/src/lib/elm_main.c 2011-06-08 02:59:52 UTC (rev 60066) +++ trunk/elementary/src/lib/elm_main.c 2011-06-08 03:00:52 UTC (rev 60067) @@ -644,7 +644,7 @@ if (argv) _elm_appname = strdup(ecore_file_file_get(argv[0])); - pfx = eina_prefix_new(NULL, elm_init, + pfx = eina_prefix_new(NULL, elm_quicklaunch_init, "ELM", "elementary", "config/profile.cfg", PACKAGE_LIB_DIR, /* don't have a bin dir currently */ PACKAGE_LIB_DIR, |
From: Enlightenment S. <no-...@en...> - 2011-06-08 06:54:08
|
Log: aaargh. thumbscroll border friction not quite right.. 0 is valid. :) also... 0 are valid values of these config vars when getting props Author: raster Date: 2011-06-07 23:54:02 -0700 (Tue, 07 Jun 2011) New Revision: 60072 Trac: http://trac.enlightenment.org/e/changeset/60072 Modified: trunk/elementary/src/lib/elm_config.c trunk/elementary/src/lib/els_scroller.c Modified: trunk/elementary/src/lib/elm_config.c =================================================================== --- trunk/elementary/src/lib/elm_config.c 2011-06-08 06:13:10 UTC (rev 60071) +++ trunk/elementary/src/lib/elm_config.c 2011-06-08 06:54:02 UTC (rev 60072) @@ -437,9 +437,8 @@ event->atom, &val, 1) > 0) { - if (val > 0) - _elm_config->thumbscroll_momentum_threshold = - (double)val / 1000.0; + _elm_config->thumbscroll_momentum_threshold = + (double)val / 1000.0; } } else if (event->atom == _atom[ATOM_E_THUMBSCROLL_FRICTION]) @@ -450,8 +449,7 @@ event->atom, &val, 1) > 0) { - if (val > 0) - _elm_config->thumbscroll_friction = (double)val / 1000.0; + _elm_config->thumbscroll_friction = (double)val / 1000.0; } } else if (event->atom == _atom[ATOM_E_THUMBSCROLL_BORDER_FRICTION]) @@ -462,9 +460,8 @@ event->atom, &val, 1) > 0) { - if (val > 0) - _elm_config->thumbscroll_border_friction = - (double)val / 1000.0; + _elm_config->thumbscroll_border_friction = + (double)val / 1000.0; } } else if (event->atom == _atom[ATOM_E_THUMBSCROLL_PAGE_SCROLL_FRICTION]) @@ -475,9 +472,8 @@ event->atom, &val, 1) > 0) { - if (val > 0) - _elm_config->page_scroll_friction = - (double)val / 1000.0; + _elm_config->page_scroll_friction = + (double)val / 1000.0; } } else if (event->atom == @@ -489,9 +485,8 @@ event->atom, &val, 1) > 0) { - if (val > 0) - _elm_config->bring_in_scroll_friction = - (double)val / 1000.0; + _elm_config->bring_in_scroll_friction = + (double)val / 1000.0; } } else if (event->atom == @@ -503,8 +498,7 @@ event->atom, &val, 1) > 0) { - if (val > 0) - _elm_config->zoom_friction = (double)val / 1000.0; + _elm_config->zoom_friction = (double)val / 1000.0; } } else if (((_atom_config > 0) && (event->atom == _atom_config)) || Modified: trunk/elementary/src/lib/els_scroller.c =================================================================== --- trunk/elementary/src/lib/els_scroller.c 2011-06-08 06:13:10 UTC (rev 60071) +++ trunk/elementary/src/lib/els_scroller.c 2011-06-08 06:54:02 UTC (rev 60072) @@ -2099,7 +2099,6 @@ else x = sd->down.locked_x; } } - if (_elm_config->thumbscroll_border_friction > 0.0) { Evas_Coord minx, miny; sd->pan_func.min_get(sd->pan_obj, &minx, &miny); |