Hello, all.
It's not possible to connect event handler such as EVAS_CALLBACK_KEY_UP to
elm_scrolled_entry because the scroller inside the scrolled entry does not
propagate events. So this is the patch for adding events propagation set
function to scroller and setting it to EINA_TRUE in elm scrolled entry.
And one more thing in scrolled entry, while evaluating its size, scrolled
entry does not consider its min size.
(It just refers to the min size of its scroller object instead of scrolled
entry object.)
So here in the attached patch, scrolled entry compares its min size to the
min size of the scroller object and set the bigger one to its min size to
keep the min size set by intent.
Please review this and give me a feedback if it doesn't meet any other
requirement.
Thanks.
Index: elm_scroller.c
===================================================================
--- elm_scroller.c (revision 55558)
+++ elm_scroller.c (working copy)
@@ -874,3 +874,21 @@ elm_scroller_region_bring_in(Evas_Object *obj, Eva
if ((!wd) || (!wd->scr)) return;
elm_smart_scroller_region_bring_in(wd->scr, x, y, w, h);
}
+
+
+/**
+ * Set events propagation
+ *
+ * @param obj The scroller object
+ * @param propagation Determine propagating event or not
+ *
+ * @ingroup Scroller
+ */
+EAPI void
+elm_scroller_propagate_events_set(Evas_Object *obj, Eina_Bool propagation)
+{
+ Widget_Data *wd = elm_widget_data_get(obj);
+ if (!wd) return;
+
+ evas_object_propagate_events_set(wd->scr, propagation);
+}
Index: elc_scrolled_entry.c
===================================================================
--- elc_scrolled_entry.c (revision 55558)
+++ elc_scrolled_entry.c (working copy)
@@ -129,12 +129,15 @@ static void
_sizing_eval(Evas_Object *obj)
{
Widget_Data *wd;
- Evas_Coord minw, minh;
+ Evas_Coord minw, minh, minw_scr, minh_scr;
+ wd = elm_widget_data_get(obj);
+ if (!wd) return;
- wd = elm_widget_data_get(obj);
- if (!wd)
- return;
- evas_object_size_hint_min_get(wd->scroller, &minw, &minh);
+ evas_object_size_hint_min_get(obj, &minw, &minh);
+ evas_object_size_hint_min_get(wd->scroller, &minw_scr, &minh_scr);
+ if (minw < minw_scr) minw = minw_scr;
+ if (minh < minh_scr) minh = minh_scr;
+
evas_object_size_hint_min_set(obj, minw, minh);
if (wd->single_line)
evas_object_size_hint_max_set(obj, -1, minh);
@@ -386,6 +389,7 @@ elm_scrolled_entry_add(Evas_Object *parent)
evas_object_size_hint_weight_set(wd->scroller, EVAS_HINT_EXPAND,
EVAS_HINT_EXPAND);
evas_object_size_hint_align_set(wd->scroller, EVAS_HINT_FILL,
EVAS_HINT_FILL);
elm_scroller_bounce_set(wd->scroller, EINA_FALSE, EINA_FALSE);
+ elm_scroller_propagate_events_set(wd->scroller, EINA_TRUE);
evas_object_show(wd->scroller);
wd->entry = elm_entry_add(obj);
------------------------------------------------------------------------------
Lotusphere 2011
Register now for Lotusphere 2011 and learn how
to connect the dots, take your collaborative environment
to the next level, and enter the era of Social Business.
http://p.sf.net/sfu/lotusphere-d2d
_______________________________________________
enlightenment-devel mailing list
enlightenment-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/enlightenment-devel