]> Dogcows Code - chaz/tint2/blobdiff - src/util/area.c
desktop name: first step
[chaz/tint2] / src / util / area.c
index f98e1613e06088954fdbbd52e1618d80c759366a..970776563ccbeecb91aa1c51519a6d058e2b841f 100644 (file)
@@ -2,7 +2,7 @@
 *
 * Tint2 : area
 *
-* Copyright (C) 2008 thierry lorthiois (lorthiois@bbsoft.fr)
+* Copyright (C) 2008 thierry lorthiois (lorthiois@bbsoft.fr) from Omega distribution
 *
 * This program is free software; you can redistribute it and/or
 * modify it under the terms of the GNU General Public License version 2
@@ -96,9 +96,9 @@ void init_rendering(void *obj, int pos)
 void rendering(void *obj)
 {
        Panel *panel = (Panel*)obj;
-       
+
        size_by_content(&panel->area);
-       size_by_layout(&panel->area, 0, 0);
+       size_by_layout(&panel->area, 0, 1);
        
        refresh(&panel->area);
 }
@@ -175,7 +175,10 @@ void size_by_layout (Area *a, int pos, int level)
                        }
                }
                
-               //printf("level %d, object %d, pos %d\n", level, i, pos);
+               /*// position of each visible object
+               int k;
+               for (k=0 ; k < level ; k++) printf("  ");
+               printf("tree level %d, object %d, pos %d, %s\n", level, i, pos, (child->size_mode == SIZE_BY_LAYOUT) ? "SIZE_BY_LAYOUT" : "SIZE_BY_CONTENT");*/
                size_by_layout(child, pos, level+1);
                
                if (panel_horizontal)
@@ -221,7 +224,7 @@ void refresh (Area *a)
 }
 
 
-int resize_by_layout(void *obj)
+int resize_by_layout(void *obj, int maximum_size)
 {
        Area *child, *a = (Area*)obj;
        int size, nb_by_content=0, nb_by_layout=0;
@@ -239,14 +242,18 @@ int resize_by_layout(void *obj)
                        if (child->on_screen && child->size_mode == SIZE_BY_LAYOUT)
                                nb_by_layout++;
                }
+               //printf("  resize_by_layout Deb %d, %d\n", nb_by_content, nb_by_layout);
                if (nb_by_content+nb_by_layout)
                        size -= ((nb_by_content+nb_by_layout-1) * a->paddingx);
-               //printf("resize_panel : size_panel %d, size_layout %d\n", panel->area.width, size);
 
                int width=0, modulo=0, old_width;
                if (nb_by_layout) {
                        width = size / nb_by_layout;
                        modulo = size % nb_by_layout;
+                       if (width > maximum_size && maximum_size != 0) {
+                               width = maximum_size;
+                               modulo = 0;
+                       }
                }
 
                // resize SIZE_BY_LAYOUT objects
@@ -284,6 +291,10 @@ int resize_by_layout(void *obj)
                if (nb_by_layout) {
                        height = size / nb_by_layout;
                        modulo = size % nb_by_layout;
+                       if (height > maximum_size && maximum_size != 0) {
+                               height = maximum_size;
+                               modulo = 0;
+                       }
                }
 
                // resize SIZE_BY_LAYOUT objects
This page took 0.024194 seconds and 4 git commands to generate.