fix min size calc for entryies that got in with entry + scrolled entry
authorraster <raster@7cbeb6ba-43b4-40fd-8cce-4c39aea84d33>
Thu, 21 Jul 2011 11:02:07 +0000 (11:02 +0000)
committerraster <raster@7cbeb6ba-43b4-40fd-8cce-4c39aea84d33>
Thu, 21 Jul 2011 11:02:07 +0000 (11:02 +0000)
merge.

git-svn-id: svn+ssh://svn.enlightenment.org/var/svn/e/trunk/elementary@61553 7cbeb6ba-43b4-40fd-8cce-4c39aea84d33

src/lib/elm_entry.c
src/lib/elm_genscroller.c

index 23fefeb..767c4d3 100644 (file)
@@ -648,7 +648,7 @@ static void
 _elm_win_recalc_job(void *data)
 {
    Widget_Data *wd = elm_widget_data_get(data);
-   Evas_Coord minh = -1, resw = -1, minw = -1;
+   Evas_Coord minh = -1, resw = -1, minw = -1, fw = 0, fh = 0;
    if (!wd) return;
    wd->deferred_recalc_job = NULL;
 
@@ -666,11 +666,39 @@ _elm_win_recalc_job(void *data)
         evas_object_size_hint_min_get(data, &ominw, NULL);
         minw = ominw;
      }
-   evas_object_size_hint_min_set(data, minw, minh);
-   if (wd->single_line)
-     evas_object_size_hint_max_set(data, -1, minh);
+   
+   elm_coords_finger_size_adjust(1, &fw, 1, &fh);
+   if (wd->scroll)
+     {
+        Evas_Coord vmw = 0, vmh = 0;
+        
+        edje_object_size_min_calc
+           (elm_smart_scroller_edje_object_get(wd->scroller),
+               &vmw, &vmh);
+        if (wd->single_line)
+          {
+             evas_object_size_hint_min_set(data, vmw, minh + vmh);
+             evas_object_size_hint_max_set(data, -1, minh + vmh);
+          }
+        else
+          {
+             evas_object_size_hint_min_set(data, vmw, vmh);
+             evas_object_size_hint_max_set(data, -1, -1);
+          }
+     }
    else
-     evas_object_size_hint_max_set(data, -1, -1);
+     {
+        if (wd->single_line)
+          {
+             evas_object_size_hint_min_set(data, minw, minh);
+             evas_object_size_hint_max_set(data, -1, minh);
+          }
+        else
+          {
+             evas_object_size_hint_min_set(data, fw, minh);
+             evas_object_size_hint_max_set(data, -1, -1);
+          }
+     }
 
    if (wd->deferred_cur)
      {
index c3341f2..9485985 100644 (file)
@@ -711,8 +711,10 @@ __span_insert(Span *sp, int num, int count, Evas_Coord size, Evas_Coord pos)
    Span *sp2;
    int i, j, n, src;
 
+   if (count <= 0) return;
    if (num < 0) return;
 next:
+   printf("...... hunt for spot at %p, %i %i\n", sp, count, size * count);
    // total child count and size go up by what we are inserting
    sp->total_child_count += count;
    sp->size += size * count;
@@ -723,11 +725,13 @@ next:
      {
         for (n = 0, i = 0; i < sp->child_count; i++)
           {
+             printf("   look in %i\n", i);
              sp2 = sp->child[i];
              n += sp2->total_child_count;
              // if num is within the child we are looking at
              if (n > num)
                {
+                  printf("    %i > %i\n", n, num);
                   // advance all children along by size * count
                   for (j = (i + 1); j < sp->child_count; j++)
                      sp->child[j]->pos += (size * count);
@@ -739,6 +743,7 @@ next:
                }
           }
      }
+   printf("FOUND child %p @ %i, %i, cnt %i totcnt %i\n", sp, sp->pos, sp->size, sp->child_count, sp->total_child_count);
    // now that we are just up from a leaf node... do this
    if (!sp->child)
      {