Enlightenment CVS committal
Author : rbdpngn
Project : e17
Module : libs/etox
Dir : e17/libs/etox/src
Modified Files:
Etox.h etox.c etox_line.c etox_selection.c
Log Message:
Patch from dan sinclair to alter the geometry API.
Fix for line rewrapping bug.
===================================================================
RCS file: /cvsroot/enlightenment/e17/libs/etox/src/Etox.h,v
retrieving revision 1.53
retrieving revision 1.54
diff -u -3 -r1.53 -r1.54
--- Etox.h 6 Oct 2004 04:48:45 -0000 1.53
+++ Etox.h 30 Dec 2004 20:58:45 -0000 1.54
@@ -175,6 +175,9 @@
void etox_clear(Evas_Object * et);
int etox_get_length(Evas_Object *obj);
+
+void etox_text_geometry_get(Evas_Object *obj, Evas_Coord *w, Evas_Coord *h);
+
/*
* Geometry retrieval functions
*/
===================================================================
RCS file: /cvsroot/enlightenment/e17/libs/etox/src/etox.c,v
retrieving revision 1.108
retrieving revision 1.109
diff -u -3 -r1.108 -r1.109
--- etox.c 15 Dec 2004 05:21:33 -0000 1.108
+++ etox.c 30 Dec 2004 20:58:45 -0000 1.109
@@ -366,9 +366,9 @@
/*
* Sum up the length and height of the text in the etox.
*/
- et->h = 0;
- et->length = strlen(text);
+ et->th = 0;
et->tw = 0;
+ et->length = strlen(text);
et->lines = _etox_break_text(et, text);
FREE(text);
@@ -381,7 +381,7 @@
if (line->w > et->tw)
et->tw = line->w;
- et->h += line->h;
+ et->th += line->h;
}
etox_layout(et);
@@ -689,7 +689,7 @@
*/
evas_object_move(et->clip, (et->x), (et->y));
evas_object_resize(et->clip, (et->w), (et->h));
- evas_object_resize(obj, et->w, et->h);
+ /* evas_object_resize(obj, et->w, et->h); */
}
/**
@@ -1260,22 +1260,7 @@
l = l->next;
y += line->h;
}
-
- /*
- * Adjust the height of the etox to the height of all lines
- */
- et->h = y - et->y;
- et->th = et->h;
-
-
- if (et->flags & ETOX_SOFT_WRAP) {
- evas_object_resize(et->clip, et->w, et->h);
- evas_object_resize(et->smart_obj, et->w, et->h);
- }
- else {
- evas_object_resize(et->clip, et->tw, et->th);
- evas_object_resize(et->smart_obj, et->tw, et->th);
- }
+ et->th = y - et->y;
}
Etox_Line *
@@ -1333,3 +1318,24 @@
}
}
+/**
+ * etox_text_geometry_get - get the desired text geometry
+ * @obj: the etox to get the geometry from
+ * @w: variable to set the width into, or NULL if not needed
+ * @h: variable to set the height into, or NULL if not needed
+ *
+ * Returns the desired width and height of the etox
+ */
+void etox_text_geometry_get(Evas_Object *obj, Evas_Coord *w, Evas_Coord *h)
+{
+ Etox *et;
+
+ CHECK_PARAM_POINTER("obj", obj);
+
+ et = evas_object_smart_data_get(obj);
+
+ if (w) *w = et->tw;
+ if (h) *h = et->th;
+}
+
+
===================================================================
RCS file: /cvsroot/enlightenment/e17/libs/etox/src/etox_line.c,v
retrieving revision 1.47
retrieving revision 1.48
diff -u -3 -r1.47 -r1.48
--- etox_line.c 26 Nov 2004 21:51:47 -0000 1.47
+++ etox_line.c 30 Dec 2004 20:58:45 -0000 1.48
@@ -427,7 +427,7 @@
NULL, NULL, NULL, NULL);
/* Adjust the index to find the actual character we want to wrap. */
- if (index > 0) {
+ if (index > 0 || (index == 0 && bit != line->bits->data)) {
char *tmp;
tmp = etox_style_get_text(bit);
@@ -445,7 +445,7 @@
}
/* Wrap if we've found a reasonable position */
- if (index > 0) {
+ if (index > 0 || (index == 0 && bit != line->bits->data)) {
etox_line_split(line, bit, index);
ll = evas_list_find_list(et->lines, line);
===================================================================
RCS file: /cvsroot/enlightenment/e17/libs/etox/src/etox_selection.c,v
retrieving revision 1.16
retrieving revision 1.17
diff -u -3 -r1.16 -r1.17
--- etox_selection.c 13 May 2004 04:47:35 -0000 1.16
+++ etox_selection.c 30 Dec 2004 20:58:45 -0000 1.17
@@ -376,16 +376,11 @@
Etox_Rect *rects = NULL, *cur = NULL;
Evas_List *l = NULL, *midlines = NULL;
Evas_Coord x, y, w, h;
- int count = 1;
-
- if (selected->start.line == selected->end.line)
- {
- return NULL;
- }
+ int count = 0;
l = evas_list_find_list(selected->etox->lines, selected->start.line);
- for (l = l->next; l; l = l->next)
+ while (l)
{
Etox_Line *line = l->data;
@@ -394,6 +389,7 @@
if (line == selected->end.line) break;
midlines = evas_list_append(midlines, line);
+ l = l->next;
}
printf("count: %d\n", count);
@@ -410,7 +406,6 @@
rects->w = x + w - rects->x;
rects->h = y + h - rects->y;
- printf("(%d, %d) %d x %d\n", rects->x, rects->y, rects->w, rects->h);
cur = rects;
/* printf("cur1: %d\n", cur); */
for (l = midlines; l; l = l->next)
@@ -427,10 +422,14 @@
cur->h = h;
}
- cur ++;
- etox_line_get_geometry(selected->end.line, &x, &y, &w, &h);
- cur->x = x;
- cur->y = y;
+ if (selected->end.line != selected->start.line)
+ {
+ etox_line_get_geometry(selected->end.line, &x, &y, &w, &h);
+ cur++;
+ cur->x = x;
+ cur->y = y;
+ }
+
//etox_line_index_to_geometry(selected->end.line, selected->end.index,
// &x, &y, &w, &h);
evas_object_geometry_get(selected->end.bit, &x, &y, &w, &h);
-------------------------------------------------------
The SF.Net email is sponsored by: Beat the post-holiday blues
Get a FREE limited edition SourceForge.net t-shirt from ThinkGeek.
It's fun and FREE -- well, almost....http://www.thinkgeek.com/sfshirt
_______________________________________________
enlightenment-cvs mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/enlightenment-cvs