Enlightenment CVS committal

Author  : pfritz
Project : e17
Module  : libs/ewl

Dir     : e17/libs/ewl/src/lib


Modified Files:
        ewl_text.c ewl_text_trigger.c 


Log Message:
- attach the mouse pointer of the trigger to its areas
- forward the click event to the trigger
- only warn if trigger are really overlapping

===================================================================
RCS file: /cvs/e/e17/libs/ewl/src/lib/ewl_text.c,v
retrieving revision 1.208
retrieving revision 1.209
diff -u -3 -r1.208 -r1.209
--- ewl_text.c  8 Aug 2008 00:37:34 -0000       1.208
+++ ewl_text.c  11 Aug 2008 13:22:32 -0000      1.209
@@ -4139,14 +4139,14 @@
         {
                 if (trigger->char_pos < cur->char_pos)
                 {
-                        if ((trigger->char_pos + trigger->char_len) < 
cur->char_pos)
-                                break;
+                        if ((trigger->char_pos + trigger->char_len) <= 
cur->char_pos)
+                                continue;
 
                         DWARNING("Overlapping triggers are not allowed.");
                         DRETURN(DLEVEL_STABLE);
                 }
 
-                if ((trigger->char_pos > (cur->char_pos + cur->char_len)))
+                if ((trigger->char_pos >= (cur->char_pos + cur->char_len)))
                         continue;
 
                 if ((trigger->char_pos >= cur->char_pos)
===================================================================
RCS file: /cvs/e/e17/libs/ewl/src/lib/ewl_text_trigger.c,v
retrieving revision 1.15
retrieving revision 1.16
diff -u -3 -r1.15 -r1.16
--- ewl_text_trigger.c  30 Jul 2008 21:43:54 -0000      1.15
+++ ewl_text_trigger.c  11 Aug 2008 13:22:32 -0000      1.16
@@ -53,6 +53,8 @@
                                                 void *data);
 static void ewl_text_trigger_area_cb_mouse_down(Ewl_Widget *w, void *ev,
                                                 void *data);
+static void ewl_text_trigger_area_cb_clicked(Ewl_Widget *w, void *ev,
+                                                void *data);
 
 /**
  * @param type: The type of trigger to create
@@ -295,6 +297,8 @@
         ewl_text_trigger_area_type_set(EWL_TEXT_TRIGGER_AREA(area), cur->type);
         ewl_object_geometry_request(EWL_OBJECT(area), x, y, w, h);
         EWL_TEXT_TRIGGER_AREA(area)->trigger = cur;
+        /* attach the pointer of the trigger to the area */
+        ewl_attach_mouse_cursor_set(area, ewl_attach_mouse_cursor_get(cur));
 
         ewl_widget_show(area);
 
@@ -465,6 +469,8 @@
                         ewl_text_trigger_area_cb_mouse_down, NULL);
         ewl_callback_append(w, EWL_CALLBACK_MOUSE_UP,
                         ewl_text_trigger_area_cb_mouse_up, NULL);
+        ewl_callback_append(w, EWL_CALLBACK_CLICKED,
+                        ewl_text_trigger_area_cb_clicked, NULL);
 
         DRETURN_INT(TRUE, DLEVEL_STABLE);
 }
@@ -646,4 +652,31 @@
 
         DLEAVE_FUNCTION(DLEVEL_STABLE);
 }
+
+/**
+ * @internal
+ * @param w: the area
+ * @param ev: The event data
+ * @param data: UNUSED
+ * @return Returns no value
+ * @brief The trigger clicked callback
+ */
+void
+ewl_text_trigger_area_cb_clicked(Ewl_Widget *w, void *ev,
+                                        void *data __UNUSED__)
+{
+        Ewl_Text_Trigger_Area *a;
+
+        DENTER_FUNCTION(DLEVEL_STABLE);
+        DCHECK_PARAM_PTR(w);
+        DCHECK_TYPE(w, EWL_TEXT_TRIGGER_AREA_TYPE);
+
+        a = EWL_TEXT_TRIGGER_AREA(w);
+        if (a->trigger)
+                ewl_callback_call_with_event_data(EWL_WIDGET(a->trigger),
+                                                EWL_CALLBACK_CLICKED, ev);
+
+        DLEAVE_FUNCTION(DLEVEL_STABLE);
+}
+
 



-------------------------------------------------------------------------
This SF.Net email is sponsored by the Moblin Your Move Developer's challenge
Build the coolest Linux based applications with Moblin SDK & win great prizes
Grand prize is a trip for two to an Open Source event anywhere in the world
http://moblin-contest.org/redirect.php?banner_id=100&url=/
_______________________________________________
enlightenment-cvs mailing list
enlightenment-cvs@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/enlightenment-cvs

Reply via email to