Enlightenment CVS committal

Author  : raster
Project : e17
Module  : apps/e

Dir     : e17/apps/e/src/bin


Modified Files:
        e_scrollframe.c e_test.c 


Log Message:


scrollframe now accepts key press events to control it too - use in
conjunction with propagate for child widgets/objects as to if u want events
to go back to the parent scrollframe or not

===================================================================
RCS file: /cvsroot/enlightenment/e17/apps/e/src/bin/e_scrollframe.c,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -3 -r1.2 -r1.3
--- e_scrollframe.c     29 Oct 2005 15:56:51 -0000      1.2
+++ e_scrollframe.c     30 Oct 2005 05:20:14 -0000      1.3
@@ -43,6 +43,7 @@
 static void _e_smart_child_del_hook(void *data, Evas *e, Evas_Object *obj, 
void *event_info);
 static void _e_smart_pan_changed_hook(void *data, Evas_Object *obj, void 
*event_info);
 static void _e_smart_event_wheel(void *data, Evas *e, Evas_Object *obj, void 
*event_info);
+static void _e_smart_event_key_down(void *data, Evas *e, Evas_Object *obj, 
void *event_info);
 static void _e_smart_edje_drag_v(void *data, Evas_Object *obj, const char 
*emission, const char *source);
 static void _e_smart_edje_drag_h(void *data, Evas_Object *obj, const char 
*emission, const char *source);
 static void _e_smart_scrollbar_read(E_Smart_Data *sd);
@@ -314,6 +315,47 @@
 }
 
 static void
+_e_smart_event_key_down(void *data, Evas *e, Evas_Object *obj, void 
*event_info)
+{
+   Evas_Event_Key_Down *ev;
+   E_Smart_Data *sd;
+   Evas_Coord x = 0, y = 0, vw = 0, vh = 0, mx = 0, my = 0;
+   
+   sd = data;
+   ev = event_info;
+   e_scrollframe_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);
+   if (!strcmp(ev->keyname, "Left"))
+     x -= sd->step.x;
+   else if (!strcmp(ev->keyname, "Right"))
+     x += sd->step.x;
+   else if (!strcmp(ev->keyname, "Up"))
+     y -= sd->step.y;
+   else if (!strcmp(ev->keyname, "Home"))
+     y = 0;
+   else if (!strcmp(ev->keyname, "End"))
+     y = my;
+   else if (!strcmp(ev->keyname, "Down"))
+     y += sd->step.y;
+   else if (!strcmp(ev->keyname, "Prior"))
+     {
+       if (sd->page.y < 0)
+         y -= -(sd->page.y * vh) / 100;
+       else
+         y -= sd->page.y;
+     }
+   else if (!strcmp(ev->keyname, "Next"))
+     {
+       if (sd->page.y < 0)
+         y += -(sd->page.y * vh) / 100;
+       else
+         y += sd->page.y;
+     }
+   e_scrollframe_child_pos_set(sd->smart_obj, x, y);
+}
+
+static void
 _e_smart_scrollbar_read(E_Smart_Data *sd)
 {
    Evas_Coord x, y, mx = 0, my = 0;
@@ -573,6 +615,9 @@
    sd->hbar_visible = 1;
    sd->vbar_visible = 1;
    
+   evas_object_event_callback_add(obj, EVAS_CALLBACK_KEY_DOWN, 
_e_smart_event_key_down, sd);
+   evas_object_propagate_events_set(obj, 0);
+   
    o = edje_object_add(evas_object_evas_get(obj));
    sd->edje_obj = o;
    e_theme_edje_object_set(o, "base/theme/widgets",
===================================================================
RCS file: /cvsroot/enlightenment/e17/apps/e/src/bin/e_test.c,v
retrieving revision 1.29
retrieving revision 1.30
diff -u -3 -r1.29 -r1.30
--- e_test.c    29 Oct 2005 15:56:51 -0000      1.29
+++ e_test.c    30 Oct 2005 05:20:14 -0000      1.30
@@ -330,6 +330,7 @@
    e_icon_file_set(o, "/home/raster/t.png");
    evas_object_event_callback_add(o, EVAS_CALLBACK_MOUSE_DOWN, _e_test_click, 
NULL);
    evas_object_resize(o, 1024, 768);
+   evas_object_focus_set(o, 1);
    evas_object_show(o);
       
    o2 = e_scrollframe_add(dia->win->evas);
@@ -348,6 +349,8 @@
    e_dialog_button_add(dia, "OK", NULL, NULL, NULL);
    e_win_centered_set(dia->win, 1);
    e_dialog_show(dia);
+   
+   evas_object_focus_set(o, 1);
 }
 #else
 static void




-------------------------------------------------------
This SF.Net email is sponsored by the JBoss Inc.
Get Certified Today * Register for a JBoss Training Course
Free Certification Exam for All Training Attendees Through End of 2005
Visit http://www.jboss.com/services/certification for more information
_______________________________________________
enlightenment-cvs mailing list
enlightenment-cvs@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/enlightenment-cvs

Reply via email to