Enlightenment CVS committal

Author  : dj2
Project : e17
Module  : libs/ewl

Dir     : e17/libs/ewl/src/lib


Modified Files:
        ewl_text.c ewl_text.h 


Log Message:
- make the selections show up again. there are still a few issues hidden in
  there. if you create a selection then click in it (or maybe it's click and
  drag) you'll get some dev warnings I haven't been able to figure out yet.
  but seems to be mostly working

===================================================================
RCS file: /cvsroot/enlightenment/e17/libs/ewl/src/lib/ewl_text.c,v
retrieving revision 1.66
retrieving revision 1.67
diff -u -3 -r1.66 -r1.67
--- ewl_text.c  29 Nov 2005 05:27:24 -0000      1.66
+++ ewl_text.c  30 Nov 2005 05:42:01 -0000      1.67
@@ -216,7 +216,7 @@
 {
        Evas_Textblock_Cursor *cursor;
        unsigned int idx = 0;
-       Evas_Coord tx, ty, cx, cy, cw, ch;
+       Evas_Coord tx, ty, cx = 0, cy, cw, ch;
 
        DENTER_FUNCTION(DLEVEL_STABLE);
        DCHECK_PARAM_PTR_RET("t", t, 0);
@@ -2537,12 +2537,14 @@
        {
                /* create the selection */
                t->selection = 
EWL_TEXT_TRIGGER(ewl_text_trigger_new(EWL_TEXT_TRIGGER_TYPE_SELECTION));
+               ewl_container_child_append(EWL_CONTAINER(t), 
EWL_WIDGET(t->selection));
+               ewl_widget_internal_set(EWL_WIDGET(t->selection), TRUE);
+
                ewl_text_trigger_start_pos_set(t->selection, 0);
                ewl_text_trigger_length_set(t->selection, 0);
                t->selection->text_parent = t;
-               ewl_callback_append(EWL_WIDGET(t->selection), 
EWL_CALLBACK_CONFIGURE,
-                                               
ewl_text_selection_cb_configure, NULL);
-               ewl_container_child_append(EWL_CONTAINER(t), 
EWL_WIDGET(t->selection));
+
+               ewl_widget_show(EWL_WIDGET(t->selection));
        }
 
        idx = ewl_text_coord_index_map(EWL_TEXT(w), event->x, event->y);
@@ -2551,13 +2553,25 @@
                ewl_text_selection_select_to(t->selection, idx);
        else
        {
+               ewl_widget_hide(EWL_WIDGET(t->selection));
+
+               /* cleanup any old areas */
+               if (t->selection->areas)
+               {
+                       Ewl_Text_Trigger_Area *area;
+
+                       while ((area = 
ecore_list_remove_first(t->selection->areas)))
+                               ewl_widget_destroy(EWL_WIDGET(area));
+               }
+               ewl_widget_show(EWL_WIDGET(t->selection));
+
                ewl_text_trigger_start_pos_set(t->selection, idx);
                ewl_text_trigger_base_set(t->selection, idx);
                ewl_text_trigger_length_set(t->selection, 0);
        }                  
        t->in_select = TRUE;
 
-       ewl_widget_configure(EWL_WIDGET(t->selection));
+       ewl_text_trigger_position(t, t->selection);
                
        DLEAVE_FUNCTION(DLEVEL_STABLE);
 }         
@@ -2579,6 +2593,7 @@
        if (!t->in_select)
                DRETURN(DLEVEL_STABLE);
 
+       t->in_select = FALSE;
        ewl_callback_del(w, EWL_CALLBACK_MOUSE_MOVE, ewl_text_cb_mouse_move);
 
        modifiers = ewl_ev_modifiers_get();
@@ -2588,10 +2603,7 @@
                idx = ewl_text_coord_index_map(EWL_TEXT(w), event->x, event->y);
                ewl_text_selection_select_to(t->selection, idx);
        }
-
-       t->in_select = FALSE;
-
-       ewl_widget_configure(EWL_WIDGET(t->selection));
+       ewl_text_trigger_position(t, t->selection);
 
        DLEAVE_FUNCTION(DLEVEL_STABLE);
 }
@@ -2615,7 +2627,7 @@
 
                idx = ewl_text_coord_index_map(EWL_TEXT(w), event->x, event->y);
                ewl_text_selection_select_to(t->selection, idx);
-               ewl_widget_configure(EWL_WIDGET(t->selection));
+               ewl_text_trigger_position(t, t->selection);
        }
 
        DLEAVE_FUNCTION(DLEVEL_STABLE);
@@ -2633,13 +2645,10 @@
        DCHECK_TYPE("w", w, "widget");
 
        if (!(appearance = ewl_widget_appearance_get(w))) 
-       {
                DRETURN(DLEVEL_STABLE);
-       }
 
        /* if this is a trigger then add it as such */
-       if ((!strcmp(appearance, "trigger"))
-                       || (!strcmp(appearance, "selection")))
+       if (!strcmp(appearance, "trigger"))
                ewl_text_trigger_add(EWL_TEXT(c), EWL_TEXT_TRIGGER(w));
 
        FREE(appearance);
@@ -2659,13 +2668,10 @@
        DCHECK_TYPE("w", w, "widget");
 
        if (!(appearance = ewl_widget_appearance_get(w)))
-       {
                DRETURN(DLEVEL_STABLE);
-       }
 
        /* if this is a trigger, remove it as such */
-       if ((!strcmp(appearance, "trigger"))
-                       || (!strcmp(appearance, "selection")))
+       if (!strcmp(appearance, "trigger"))
                ewl_text_trigger_del(EWL_TEXT(c), EWL_TEXT_TRIGGER(w));
 
        FREE(appearance);
@@ -2685,13 +2691,11 @@
        
        trigger = NEW(Ewl_Text_Trigger, 1);
        if (!trigger)
-       {
                DRETURN_PTR(NULL, DLEVEL_STABLE);
-       }
 
        if (!ewl_text_trigger_init(trigger, type))
        {
-               FREE(trigger);
+               ewl_widget_destroy(EWL_WIDGET(trigger));
                DRETURN_PTR(NULL, DLEVEL_STABLE);
        }
 
@@ -2894,7 +2898,6 @@
        DCHECK_TYPE("cur", cur, "trigger");
 
        area = ewl_text_trigger_area_new(cur->type);
-
        ewl_container_child_append(EWL_CONTAINER(t), area);
        ewl_widget_internal_set(area, TRUE);
        ewl_object_geometry_request(EWL_OBJECT(area), x, y, w, h);
@@ -3089,6 +3092,9 @@
                        ewl_text_trigger_position(t, cur);
        }
 
+       if (t->selection)
+               ewl_text_trigger_position(t, t->selection);
+
        DLEAVE_FUNCTION(DLEVEL_STABLE);
 }
 
@@ -3420,27 +3426,6 @@
        DLEAVE_FUNCTION(DLEVEL_STABLE);
 }
 
-void
-ewl_text_selection_cb_configure(Ewl_Widget *w, void *ev __UNUSED__, 
-                                               void *data __UNUSED__)
-{
-       Ewl_Text_Trigger *trig;
-       
-       DENTER_FUNCTION(DLEVEL_STABLE);
-       DCHECK_PARAM_PTR("w", w);
-       DCHECK_TYPE("w", w, "widget");
-
-       trig = EWL_TEXT_TRIGGER(w);
-
-       /* nothing to do if there is no length */
-       if (trig->len == 0) 
-               DRETURN(DLEVEL_STABLE);
-
-       ewl_text_trigger_position(trig->text_parent, trig);
-
-       DLEAVE_FUNCTION(DLEVEL_STABLE);
-}
-
 /*
  * Ewl_Text_Context Stuff
  */
===================================================================
RCS file: /cvsroot/enlightenment/e17/libs/ewl/src/lib/ewl_text.h,v
retrieving revision 1.24
retrieving revision 1.25
diff -u -3 -r1.24 -r1.25
--- ewl_text.h  25 Nov 2005 05:53:21 -0000      1.24
+++ ewl_text.h  30 Nov 2005 05:42:01 -0000      1.25
@@ -268,8 +268,6 @@
 void ewl_text_trigger_cb_mouse_up(Ewl_Widget *w, void *ev, void *data);
 void ewl_text_trigger_cb_mouse_down(Ewl_Widget *w, void *ev, void *data);
 
-void ewl_text_selection_cb_configure(Ewl_Widget *w, void *ev, void *data);
-
 /*
  * Ewl_Text_Context stuff
  */




-------------------------------------------------------
This SF.net email is sponsored by: Splunk Inc. Do you grep through log files
for problems?  Stop!  Download the new AJAX search engine that makes
searching your log files as easy as surfing the  web.  DOWNLOAD SPLUNK!
http://ads.osdn.com/?ad_id=7637&alloc_id=16865&op=click
_______________________________________________
enlightenment-cvs mailing list
enlightenment-cvs@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/enlightenment-cvs

Reply via email to