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
[email protected]
https://lists.sourceforge.net/lists/listinfo/enlightenment-cvs