Enlightenment CVS committal

Author  : moom
Project : e17
Module  : apps/e

Dir     : e17/apps/e/src/bin


Modified Files:
        e_editable.c e_entry.c 


Log Message:
* [Editable] Improve e_editable_char_size_get()
* [Entry] Prepares the entry for copy/paste support but it's just not 
possible for now


===================================================================
RCS file: /cvs/e/e17/apps/e/src/bin/e_editable.c,v
retrieving revision 1.6
retrieving revision 1.7
diff -u -3 -r1.6 -r1.7
--- e_editable.c        19 Aug 2006 19:08:09 -0000      1.6
+++ e_editable.c        19 Aug 2006 20:29:02 -0000      1.7
@@ -744,24 +744,37 @@
 {
    int tw = 0, th = 0;
    Evas *evas;
+   Evas_Object *text_obj;
    E_Editable_Smart_Data *sd;
    char *text = "Tout est bon dans l'abricot sauf le noyau!"
                 "Wakey wakey! Eggs and Bakey!";
+   const char *font, *font_source;
+   Evas_Text_Style_Type style;
+   int font_size;
 
    if (w)   *w = 0;
    if (h)   *h = 0;
    
    if ((!editable) || (!(evas = evas_object_evas_get(editable))))
      return;
-   if ((!(sd = evas_object_smart_data_get(editable))))
+   if (!(sd = evas_object_smart_data_get(editable)))
+     return;
+   if (!(text_obj = edje_object_part_object_get(sd->text_object, "text")))
      return;
    
    if ((sd->average_char_w <= 0) || (sd->average_char_h <= 0))
      {
-        /* TODO: 1st method */
-        edje_object_part_text_set(sd->text_object, "text", text);
-        edje_object_size_min_calc(sd->text_object, &tw, &th);
-        edje_object_part_text_set(sd->text_object, "text", sd->text ? sd->text 
: "NULL");
+        font_source = evas_object_text_font_source_get(text_obj);
+        evas_object_text_font_get(text_obj, &font, &font_size);
+        style = evas_object_text_style_get(text_obj);
+        
+        text_obj = evas_object_text_add(evas);
+        evas_object_text_font_source_set(text_obj, font_source);
+        evas_object_text_font_set(text_obj, font, font_size);
+        evas_object_text_style_set(text_obj, style);
+        evas_object_text_text_set(text_obj, text);
+        evas_object_geometry_get(text_obj, NULL, NULL, &tw, &th);
+        evas_object_del(text_obj);
         
         sd->average_char_w = tw / strlen(text);
         sd->average_char_h = th;
===================================================================
RCS file: /cvs/e/e17/apps/e/src/bin/e_entry.c,v
retrieving revision 1.23
retrieving revision 1.24
diff -u -3 -r1.23 -r1.24
--- e_entry.c   12 Aug 2006 20:51:29 -0000      1.23
+++ e_entry.c   19 Aug 2006 20:29:02 -0000      1.24
@@ -282,6 +282,7 @@
    int start_pos, end_pos;
    int selecting;
    int changed = 0;
+   char *range;
    
    if ((!obj) || (!(sd = evas_object_smart_data_get(obj))))
      return;
@@ -295,11 +296,6 @@
    end_pos = (cursor_pos >= selection_pos) ? cursor_pos : selection_pos;
    selecting = (start_pos != end_pos);
    
-   /* TODO: CTRL + A, X, C, V */
-   
-   if (!sd->enabled)
-     return;
-   
    /* Move the cursor/selection to the left */
    if (strcmp(event->key, "Left") == 0)
      {
@@ -339,9 +335,7 @@
           }
      }
    /* Move the cursor/selection to the start of the entry */
-   else if ((strcmp(event->keyname, "Home") == 0) ||
-          ((event->string) && (strlen(event->string) == 1) &&
-           (event->string[0] == 0x1)))
+   else if (strcmp(event->keyname, "Home") == 0)
      {
         e_editable_cursor_move_to_start(editable);
         if (!evas_key_modifier_is_set(event->modifiers, "Shift"))
@@ -349,9 +343,7 @@
                                        e_editable_cursor_pos_get(editable));
      }
    /* Move the cursor/selection to the end of the entry */
-   else if ((strcmp(event->keyname, "End") == 0) ||
-          ((event->string) && (strlen(event->string) == 1) &&
-           (event->string[0] == 0x5)))
+   else if (strcmp(event->keyname, "End") == 0)
      {
         e_editable_cursor_move_to_end(editable);
         if (!evas_key_modifier_is_set(event->modifiers, "Shift"))
@@ -359,9 +351,7 @@
                                        e_editable_cursor_pos_get(editable));
      }
    /* Remove the previous character */
-   else if ((strcmp(event->keyname, "BackSpace") == 0) ||
-           ((event->string) && (strlen(event->string) == 1) &&
-            (event->string[0] == 0x8)))
+   else if ((sd->enabled) && (strcmp(event->keyname, "BackSpace") == 0))
      {
         if (selecting)
           changed = e_editable_delete(editable, start_pos, end_pos);
@@ -369,14 +359,37 @@
           changed = e_editable_delete(editable, cursor_pos - 1, cursor_pos);
      }
    /* Remove the next character */
-   else if ((!strcmp(event->keyname, "Delete")) ||
-           ((event->string) && (strlen(event->string) == 1) &&
-            (event->string[0] == 0x4)))
+   else if ((sd->enabled) && (strcmp(event->keyname, "Delete") == 0))
      {
         if (selecting)
           changed = e_editable_delete(editable, start_pos, end_pos);
         else
           changed = e_editable_delete(editable, cursor_pos, cursor_pos + 1);
+     }
+   /* Ctrl + A,C,X,V */
+   else if (evas_key_modifier_is_set(event->modifiers, "Control"))
+     {
+        if (strcmp(event->keyname, "a") == 0)
+          e_editable_select_all(editable);
+        else if ((strcmp(event->keyname, "x") == 0) ||
+                 (strcmp(event->keyname, "c") == 0))
+          {
+             if (selecting)
+               {
+                 range = e_editable_text_range_get(editable, start_pos, 
end_pos);
+                 if (range)
+                   {
+                      //ecore_x_selection_clipboard_set();
+                      free(range);
+                   }
+                 if ((sd->enabled) && (strcmp(event->keyname, "x") == 0))
+                   changed = e_editable_delete(editable, start_pos, end_pos);
+               }
+           }
+        else if (strcmp(event->keyname, "v") == 0)
+        {
+           //ecore_x_selection_clipboard_request();
+        }
      }
    /* Otherwise, we insert the corresponding character */
    else if ((event->string) &&



-------------------------------------------------------------------------
Using Tomcat but need to do more? Need to support web services, security?
Get stuff done quickly with pre-integrated technology to make your job easier
Download IBM WebSphere Application Server v.1.0.1 based on Apache Geronimo
http://sel.as-us.falkag.net/sel?cmd=lnk&kid=120709&bid=263057&dat=121642
_______________________________________________
enlightenment-cvs mailing list
enlightenment-cvs@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/enlightenment-cvs

Reply via email to