X-Git-Url: https://git.brokenzipper.com/gitweb?a=blobdiff_plain;f=src%2Futil%2Farea.h;h=c5c833805dfea2319ce6b2cbb9bada3722b8b3a0;hb=067f30e22bb3a4cdf96d5f39cb253cfeec7c6afd;hp=29adf966df7b6ac6147d01fcda7cff0e76f43054;hpb=ad0010a813450116f875d943f36cd6c93d84cb04;p=chaz%2Ftint2 diff --git a/src/util/area.h b/src/util/area.h index 29adf96..c5c8338 100644 --- a/src/util/area.h +++ b/src/util/area.h @@ -7,23 +7,12 @@ * Area manage the background and border drawing, size and padding. * Each Area have 2 Pixmap (pix and pix_active). * -* Area also manage the tree of visible objects. Parent object drawn before child object. +* Area manage the tree of all objects. Parent object drawn before child object. * panel -> taskbars -> tasks * -> systray -> icons * -> clock * -* draw_foreground(obj) is virtual function. -* -* TODO : -* resize_width(obj, width) = 0 : fonction virtuelle à redéfinir -* recalcule la largeur de l'objet (car la hauteur est fixe) -* - taille systray calculée à partir de la liste des icones -* - taille clock calculée à partir de l'heure -* - taille d'une tache calculée à partir de la taskbar (ajout, suppression, taille) -* - taille d'une taskbar calculée à partir de la taille du panel et des autres objets -* -* voir resize_taskbar(), resize_clock() et resize_tasks() -* voir config(obj) configure un objet (définie les positions verticales) +* draw_foreground(obj) and resize(obj) are virtual function. * **************************************************************************/ @@ -60,11 +49,10 @@ typedef struct } Pmap; -// TODO: isoler 'draw' de 'refresh' -// TODO: isoler les données locales des données communes aux freres typedef struct { // absolute coordinate in panel int posx, posy; + // width and height including border int width, height; Pmap pix; Pmap pix_active; @@ -72,6 +60,9 @@ typedef struct { // list of child : Area object GSList *list; + int on_screen; + // need compute position and width + int resize; // need redraw Pixmap int redraw; int use_active, is_active; @@ -80,11 +71,14 @@ typedef struct { int paddingxlr, paddingx, paddingy; // parent Area void *parent; + // panel + void *panel; // each object can overwrite following function - void (*draw_foreground)(void *obj, cairo_t *c, int active); - void (*add_child)(void *obj); - int (*remove_child)(void *obj); + void (*_draw_foreground)(void *obj, cairo_t *c, int active); + void (*_resize)(void *obj); + void (*_add_child)(void *obj); + int (*_remove_child)(void *obj); } Area; @@ -92,6 +86,8 @@ typedef struct { // draw background and foreground void refresh (Area *a); +void size (Area *a); + // set 'redraw' on an area and childs void set_redraw (Area *a);