Enlightenment CVS committal Author : rbdpngn Project : e17 Module : libs/ewl
Dir : e17/libs/ewl/src/lib Modified Files: ewl_text.c ewl_text.h Log Message: Reduce textblock layouts. =================================================================== RCS file: /cvsroot/enlightenment/e17/libs/ewl/src/lib/ewl_text.c,v retrieving revision 1.79 retrieving revision 1.80 diff -u -3 -r1.79 -r1.80 --- ewl_text.c 6 Dec 2005 02:03:24 -0000 1.79 +++ ewl_text.c 7 Dec 2005 06:14:37 -0000 1.80 @@ -138,6 +138,8 @@ ewl_container_remove_notify_set(EWL_CONTAINER(t), ewl_text_cb_child_del); + t->dirty = TRUE; + /* text consumes tabs by default */ // ewl_widget_ignore_focus_change_set(EWL_WIDGET(t), TRUE); ewl_widget_focusable_set(EWL_WIDGET(t), FALSE); @@ -191,7 +193,8 @@ } /* force a display of the text */ - ewl_text_display(t); + if (t->dirty) + ewl_text_display(t); if (idx >= t->length) { @@ -238,7 +241,8 @@ } /* force a display of the text */ - ewl_text_display(t); + if (t->dirty) + ewl_text_display(t); tx = (Evas_Coord)(x - CURRENT_X(t)); ty = (Evas_Coord)(y - CURRENT_Y(t)); @@ -345,6 +349,7 @@ if (t->selection) ewl_widget_destroy(EWL_WIDGET(t->selection)); t->selection = NULL; + t->dirty = TRUE; DLEAVE_FUNCTION(DLEVEL_STABLE); } @@ -464,6 +469,8 @@ ewl_text_cursor_position_set(t, idx + len); } + t->dirty = TRUE; + if (text) ewl_text_triggers_shift(t, idx, len, FALSE); else ewl_text_triggers_remove(t); @@ -520,6 +527,8 @@ t->delete_count = 0; } + t->dirty = TRUE; + if (t->cursor_position > t->length) ewl_text_cursor_position_set(t, t->length); @@ -828,6 +837,8 @@ ewl_text_tree_context_apply(t, EWL_TEXT_CONTEXT_MASK_FONT, tx, t->cursor_position, length); ewl_text_context_release(tx); + t->dirty = TRUE; + ewl_widget_configure(EWL_WIDGET(t)); DLEAVE_FUNCTION(DLEVEL_STABLE); @@ -905,6 +916,8 @@ ewl_text_tree_context_apply(t, EWL_TEXT_CONTEXT_MASK_SIZE, tx, t->cursor_position, length); ewl_text_context_release(tx); + t->dirty = TRUE; + ewl_widget_configure(EWL_WIDGET(t)); DLEAVE_FUNCTION(DLEVEL_STABLE); @@ -994,6 +1007,8 @@ ewl_text_tree_context_apply(t, EWL_TEXT_CONTEXT_MASK_COLOR, tx, t->cursor_position, length); ewl_text_context_release(tx); + t->dirty = TRUE; + ewl_widget_configure(EWL_WIDGET(t)); DLEAVE_FUNCTION(DLEVEL_STABLE); @@ -1079,6 +1094,8 @@ ewl_text_tree_context_apply(t, EWL_TEXT_CONTEXT_MASK_ALIGN, tx, t->cursor_position, length); ewl_text_context_release(tx); + t->dirty = TRUE; + ewl_widget_configure(EWL_WIDGET(t)); DLEAVE_FUNCTION(DLEVEL_STABLE); @@ -1151,7 +1168,9 @@ ewl_text_tree_context_apply(t, EWL_TEXT_CONTEXT_MASK_STYLES, tx, t->cursor_position, length); ewl_text_context_release(tx); - ewl_widget_configure(EWL_WIDGET(t)); + t->dirty = TRUE; + + ewl_widget_configure(EWL_WIDGET(t)); DLEAVE_FUNCTION(DLEVEL_STABLE); } @@ -1192,6 +1211,10 @@ DCHECK_TYPE("t", t, "text"); ewl_text_tree_context_style_remove(t, style, t->cursor_position, length); + t->dirty = TRUE; + + ewl_widget_configure(EWL_WIDGET(t)); + DLEAVE_FUNCTION(DLEVEL_STABLE); } @@ -1212,6 +1235,9 @@ DCHECK_TYPE("t", t, "text"); ewl_text_tree_context_style_apply(t, style, t->cursor_position, length, TRUE); + t->dirty = TRUE; + + ewl_widget_configure(EWL_WIDGET(t)); DLEAVE_FUNCTION(DLEVEL_STABLE); } @@ -1304,6 +1330,8 @@ ewl_text_tree_context_apply(t, EWL_TEXT_CONTEXT_MASK_WRAP, tx, t->cursor_position, length); ewl_text_context_release(tx); + t->dirty = TRUE; + ewl_widget_configure(EWL_WIDGET(t)); DLEAVE_FUNCTION(DLEVEL_STABLE); @@ -1393,6 +1421,8 @@ ewl_text_tree_context_apply(t, EWL_TEXT_CONTEXT_MASK_BG_COLOR, tx, t->cursor_position, length); ewl_text_context_release(tx); + t->dirty = TRUE; + ewl_widget_configure(EWL_WIDGET(t)); DLEAVE_FUNCTION(DLEVEL_STABLE); @@ -1495,6 +1525,8 @@ ewl_text_tree_context_apply(t, EWL_TEXT_CONTEXT_MASK_GLOW_COLOR, tx, t->cursor_position, length); ewl_text_context_release(tx); + t->dirty = TRUE; + ewl_widget_configure(EWL_WIDGET(t)); DLEAVE_FUNCTION(DLEVEL_STABLE); @@ -1597,6 +1629,8 @@ ewl_text_tree_context_apply(t, EWL_TEXT_CONTEXT_MASK_OUTLINE_COLOR, tx, t->cursor_position, length); ewl_text_context_release(tx); + t->dirty = TRUE; + ewl_widget_configure(EWL_WIDGET(t)); DLEAVE_FUNCTION(DLEVEL_STABLE); @@ -1699,6 +1733,8 @@ ewl_text_tree_context_apply(t, EWL_TEXT_CONTEXT_MASK_SHADOW_COLOR, tx, t->cursor_position, length); ewl_text_context_release(tx); + t->dirty = TRUE; + ewl_widget_configure(EWL_WIDGET(t)); DLEAVE_FUNCTION(DLEVEL_STABLE); @@ -1801,6 +1837,8 @@ ewl_text_tree_context_apply(t, EWL_TEXT_CONTEXT_MASK_STRIKETHROUGH_COLOR, tx, t->cursor_position, length); ewl_text_context_release(tx); + t->dirty = TRUE; + ewl_widget_configure(EWL_WIDGET(t)); DLEAVE_FUNCTION(DLEVEL_STABLE); @@ -1903,6 +1941,8 @@ ewl_text_tree_context_apply(t, EWL_TEXT_CONTEXT_MASK_UNDERLINE_COLOR, tx, t->cursor_position, length); ewl_text_context_release(tx); + t->dirty = TRUE; + ewl_widget_configure(EWL_WIDGET(t)); DLEAVE_FUNCTION(DLEVEL_STABLE); @@ -2005,6 +2045,8 @@ ewl_text_tree_context_apply(t, EWL_TEXT_CONTEXT_MASK_DOUBLE_UNDERLINE_COLOR, tx, t->cursor_position, length); ewl_text_context_release(tx); + t->dirty = TRUE; + ewl_widget_configure(EWL_WIDGET(t)); DLEAVE_FUNCTION(DLEVEL_STABLE); @@ -2065,9 +2107,6 @@ ewl_object_preferred_inner_size_set(EWL_OBJECT(t), (int)w, (int)h); - /* re-configure the selection to make sure it resizes if needed */ - if (t->selection) ewl_widget_configure(EWL_WIDGET(t->selection)); - DLEAVE_FUNCTION(DLEVEL_STABLE); } @@ -2403,10 +2442,17 @@ evas_object_move(t->textblock, xx, yy); evas_object_resize(t->textblock, ww, hh); - ewl_text_display(t); + if (t->dirty) { + ewl_text_display(t); + + /* XXX ewl_text_triggers_realize here? */ + ewl_text_triggers_configure(t); - /* XXX ewl_text_triggers_realize here? */ - ewl_text_triggers_configure(t); + /* re-configure the selection to make sure it resizes + * if needed */ + if (t->selection) + ewl_widget_configure(EWL_WIDGET(t->selection)); + } } DLEAVE_FUNCTION(DLEVEL_STABLE); =================================================================== RCS file: /cvsroot/enlightenment/e17/libs/ewl/src/lib/ewl_text.h,v retrieving revision 1.26 retrieving revision 1.27 diff -u -3 -r1.26 -r1.27 --- ewl_text.h 2 Dec 2005 19:53:44 -0000 1.26 +++ ewl_text.h 7 Dec 2005 06:14:37 -0000 1.27 @@ -57,13 +57,14 @@ Ewl_Text_Tree *current; /**< The current formatting node */ } formatting; - unsigned int delete_count; /**< Number of deletes */ - Ecore_List *triggers; /**< The list of triggers */ Ewl_Text_Trigger *selection; /**< The current selection */ - unsigned int in_select; /**< Are we in select mode? */ - unsigned int selectable; /**< Is the text selectable? */ + unsigned char delete_count; /**< Number of deletes */ + unsigned char in_select; /**< Are we in select mode? */ + + unsigned char selectable; /**< Is the text selectable? */ + unsigned char dirty; /**< Does the text need layout? */ }; Ewl_Widget *ewl_text_new(void); ------------------------------------------------------- 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