summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCarsten Haitzler (Rasterman) <raster@rasterman.com>2017-02-16 10:18:54 +0900
committerCarsten Haitzler (Rasterman) <raster@rasterman.com>2017-02-16 10:31:11 +0900
commit0a28cb97af928623127644e37a522af36035a845 (patch)
tree883d9c82b840806ba898181f1164934054e7f9c0
parent5d389a1df64b93d4c10e25d98478526293435602 (diff)
downloadefl-0a28cb97af928623127644e37a522af36035a845.tar.gz
Revert "Revert "evas textblock: keep previous size when the calculation is skipped""
This reverts commit b8beb6834b01f9688cb5e7aa177bacbc713318b9. this now actually works... for some mysterious reason... ? :/ i am baffled. go back in until we can find the issue then...
-rw-r--r--src/lib/evas/canvas/evas_object_textblock.c30
1 files changed, 25 insertions, 5 deletions
diff --git a/src/lib/evas/canvas/evas_object_textblock.c b/src/lib/evas/canvas/evas_object_textblock.c
index 8e2b7564a2..449c701149 100644
--- a/src/lib/evas/canvas/evas_object_textblock.c
+++ b/src/lib/evas/canvas/evas_object_textblock.c
@@ -5415,8 +5415,16 @@ _layout_par(Ctxt *c)
/* After this par we are no longer at the beginning, as there
* must be some text in the par. */
- if (c->position == TEXTBLOCK_POSITION_START)
- c->position = TEXTBLOCK_POSITION_ELSE;
+ if (!EINA_INLIST_GET(c->par)->next)
+ {
+ c->position = (c->position == TEXTBLOCK_POSITION_START) ?
+ TEXTBLOCK_POSITION_SINGLE : TEXTBLOCK_POSITION_END;
+ }
+ else
+ {
+ if (c->position == TEXTBLOCK_POSITION_START)
+ c->position = TEXTBLOCK_POSITION_ELSE;
+ }
return 0;
}
@@ -5486,6 +5494,12 @@ _layout_par(Ctxt *c)
Eina_Bool item_preadv = EINA_FALSE;
Evas_Textblock_Obstacle *obs = NULL;
+
+ /* Initialize wmax by 0.
+ It means the width calculation will be processed.
+ So, it does not need to use previous calculated width. */
+ if (c->wmax == -1) c->wmax = 0;
+
for (i = c->par->logical_items ; i ; )
{
Evas_Coord prevdescent = 0, prevascent = 0;
@@ -6244,7 +6258,7 @@ _layout(const Evas_Object *eo_obj, int w, int h, int *w_ret, int *h_ret)
c->x = c->y = 0;
c->w = w;
c->h = h;
- c->wmax = c->hmax = 0;
+ c->wmax = c->hmax = -1;
c->ascent = c->descent = 0;
c->maxascent = c->maxdescent = 0;
c->marginl = c->marginr = 0;
@@ -6426,8 +6440,14 @@ _relayout(const Evas_Object *eo_obj)
{
Evas_Object_Protected_Data *obj = efl_data_scope_get(eo_obj, EFL_CANVAS_OBJECT_CLASS);
Efl_Canvas_Text_Data *o = efl_data_scope_get(eo_obj, MY_CLASS);
- _layout(eo_obj, obj->cur->geometry.w, obj->cur->geometry.h,
- &o->formatted.w, &o->formatted.h);
+ Evas_Coord fw, fh;
+
+ _layout(eo_obj, obj->cur->geometry.w, obj->cur->geometry.h, &fw, &fh);
+
+ /* If formatted width/height from _layout() is -1,
+ It means the size calculation was skipped. */
+ if (fw >= 0) o->formatted.w = fw;
+ if (fh >= 0) o->formatted.h = fh;
o->formatted.valid = 1;
o->formatted.oneline_h = 0;
o->last_w = obj->cur->geometry.w;