widgets: add destructors functions
Signed-off-by: Julien Danjou <julien@danjou.info>
This commit is contained in:
parent
f169c4d8d9
commit
f5314dbc9e
|
@ -71,7 +71,18 @@ struct graph_t
|
|||
graph_t *next, *prev;
|
||||
};
|
||||
|
||||
DO_SLIST(graph_t, graph, p_delete)
|
||||
static void
|
||||
graph_delete(graph_t **g)
|
||||
{
|
||||
p_delete(&(*g)->title);
|
||||
p_delete(&(*g)->lines);
|
||||
p_delete(&(*g)->values);
|
||||
p_delete(&(*g)->pcolor_center);
|
||||
p_delete(&(*g)->pcolor_end);
|
||||
p_delete(g);
|
||||
}
|
||||
|
||||
DO_SLIST(graph_t, graph, graph_delete)
|
||||
|
||||
typedef struct
|
||||
{
|
||||
|
@ -431,6 +442,17 @@ graph_tell(widget_t *widget, const char *property, const char *new_value)
|
|||
return WIDGET_NOERROR;
|
||||
}
|
||||
|
||||
static void
|
||||
graph_destructor(widget_t *widget)
|
||||
{
|
||||
graph_data_t *d = widget->data;
|
||||
|
||||
graph_list_wipe(&d->graphs);
|
||||
p_delete(&d->draw_from);
|
||||
p_delete(&d->draw_to);
|
||||
p_delete(&d);
|
||||
}
|
||||
|
||||
widget_t *
|
||||
graph_new(alignment_t align)
|
||||
{
|
||||
|
@ -442,6 +464,7 @@ graph_new(alignment_t align)
|
|||
|
||||
w->draw = graph_draw;
|
||||
w->tell = graph_tell;
|
||||
w->destructor = graph_destructor;
|
||||
w->align = align;
|
||||
d = w->data = p_new(graph_data_t, 1);
|
||||
|
||||
|
|
|
@ -26,7 +26,7 @@ typedef struct
|
|||
{
|
||||
draw_image_t *image;
|
||||
bool resize;
|
||||
} Data;
|
||||
} iconbox_data_t;
|
||||
|
||||
static int
|
||||
iconbox_draw(draw_context_t *ctx, int screen __attribute__ ((unused)),
|
||||
|
@ -35,7 +35,7 @@ iconbox_draw(draw_context_t *ctx, int screen __attribute__ ((unused)),
|
|||
int used __attribute__ ((unused)),
|
||||
void *p __attribute__ ((unused)))
|
||||
{
|
||||
Data *d = w->widget->data;
|
||||
iconbox_data_t *d = w->widget->data;
|
||||
draw_image_t *image = d->image;
|
||||
|
||||
/* image not valid */
|
||||
|
@ -68,7 +68,7 @@ iconbox_draw(draw_context_t *ctx, int screen __attribute__ ((unused)),
|
|||
static widget_tell_status_t
|
||||
iconbox_tell(widget_t *widget, const char *property, const char *new_value)
|
||||
{
|
||||
Data *d = widget->data;
|
||||
iconbox_data_t *d = widget->data;
|
||||
|
||||
if(!new_value)
|
||||
return WIDGET_ERROR_NOVALUE;
|
||||
|
@ -86,18 +86,28 @@ iconbox_tell(widget_t *widget, const char *property, const char *new_value)
|
|||
return WIDGET_NOERROR;
|
||||
}
|
||||
|
||||
static void
|
||||
iconbox_destructor(widget_t *widget)
|
||||
{
|
||||
iconbox_data_t *d = widget->data;
|
||||
|
||||
draw_image_delete(&d->image);
|
||||
p_delete(&d);
|
||||
}
|
||||
|
||||
widget_t *
|
||||
iconbox_new(alignment_t align)
|
||||
{
|
||||
widget_t *w;
|
||||
Data *d;
|
||||
iconbox_data_t *d;
|
||||
|
||||
w = p_new(widget_t, 1);
|
||||
widget_common_new(w);
|
||||
w->align = align;
|
||||
w->draw = iconbox_draw;
|
||||
w->tell = iconbox_tell;
|
||||
w->data = d = p_new(Data, 1);
|
||||
w->destructor = iconbox_destructor;
|
||||
w->data = d = p_new(iconbox_data_t, 1);
|
||||
d->resize = true;
|
||||
|
||||
return w;
|
||||
|
|
|
@ -55,7 +55,16 @@ struct bar_t
|
|||
bar_t *next, *prev;
|
||||
};
|
||||
|
||||
DO_SLIST(bar_t, bar, p_delete)
|
||||
static void
|
||||
bar_delete(bar_t **bar)
|
||||
{
|
||||
p_delete(&(*bar)->title);
|
||||
p_delete(&(*bar)->pfg_center);
|
||||
p_delete(&(*bar)->pfg_end);
|
||||
p_delete(bar);
|
||||
}
|
||||
|
||||
DO_SLIST(bar_t, bar, bar_delete)
|
||||
|
||||
typedef struct
|
||||
{
|
||||
|
@ -494,6 +503,15 @@ progressbar_tell(widget_t *widget, const char *property, const char *new_value)
|
|||
return WIDGET_NOERROR;
|
||||
}
|
||||
|
||||
static void
|
||||
progressbar_destructor(widget_t *widget)
|
||||
{
|
||||
progressbar_data_t *d = widget->data;
|
||||
|
||||
bar_list_wipe(&d->bars);
|
||||
p_delete(&d);
|
||||
}
|
||||
|
||||
widget_t *
|
||||
progressbar_new(alignment_t align)
|
||||
{
|
||||
|
@ -505,6 +523,7 @@ progressbar_new(alignment_t align)
|
|||
w->align = align;
|
||||
w->draw = progressbar_draw;
|
||||
w->tell = progressbar_tell;
|
||||
w->destructor = progressbar_destructor;
|
||||
d = w->data = p_new(progressbar_data_t, 1);
|
||||
|
||||
d->height = 0.80;
|
||||
|
|
|
@ -37,7 +37,14 @@ struct taglist_drawn_area_t
|
|||
taglist_drawn_area_t *next, *prev;
|
||||
};
|
||||
|
||||
DO_SLIST(taglist_drawn_area_t, taglist_drawn_area, p_delete);
|
||||
static void
|
||||
taglist_drawn_area_delete(taglist_drawn_area_t **a)
|
||||
{
|
||||
area_list_wipe(&(*a)->area);
|
||||
p_delete(a);
|
||||
}
|
||||
|
||||
DO_SLIST(taglist_drawn_area_t, taglist_drawn_area, taglist_drawn_area_delete);
|
||||
|
||||
typedef struct
|
||||
{
|
||||
|
@ -259,6 +266,18 @@ taglist_tell(widget_t *widget, const char *property, const char *new_value)
|
|||
return WIDGET_NOERROR;
|
||||
}
|
||||
|
||||
static void
|
||||
taglist_destructor(widget_t *widget)
|
||||
{
|
||||
taglist_data_t *d = widget->data;
|
||||
|
||||
p_delete(&d->text_normal);
|
||||
p_delete(&d->text_focus);
|
||||
p_delete(&d->text_urgent);
|
||||
taglist_drawn_area_list_wipe(&d->drawn_area);
|
||||
p_delete(&d);
|
||||
}
|
||||
|
||||
widget_t *
|
||||
taglist_new(alignment_t align)
|
||||
{
|
||||
|
@ -271,6 +290,7 @@ taglist_new(alignment_t align)
|
|||
w->draw = taglist_draw;
|
||||
w->button_press = taglist_button_press;
|
||||
w->tell = taglist_tell;
|
||||
w->destructor = taglist_destructor;
|
||||
|
||||
w->data = d = p_new(taglist_data_t, 1);
|
||||
d->text_normal = a_strdup(" <text align=\"center\"/><title/> ");
|
||||
|
|
|
@ -43,7 +43,7 @@ typedef struct
|
|||
showclient_t show;
|
||||
bool show_icons;
|
||||
char *text_normal, *text_urgent, *text_focus;
|
||||
} Data;
|
||||
} tasklist_data_t;
|
||||
|
||||
static inline bool
|
||||
tasklist_isvisible(client_t *c, int screen, showclient_t show)
|
||||
|
@ -69,7 +69,7 @@ tasklist_draw(draw_context_t *ctx, int screen,
|
|||
int offset, int used, void *q __attribute__ ((unused)))
|
||||
{
|
||||
client_t *c;
|
||||
Data *d = w->widget->data;
|
||||
tasklist_data_t *d = w->widget->data;
|
||||
area_t area;
|
||||
char *text;
|
||||
int n = 0, i = 0, box_width = 0, icon_width = 0, box_width_rest = 0, j = 0;
|
||||
|
@ -205,7 +205,7 @@ tasklist_button_press(widget_node_t *w,
|
|||
{
|
||||
button_t *b;
|
||||
client_t *c;
|
||||
Data *d = w->widget->data;
|
||||
tasklist_data_t *d = w->widget->data;
|
||||
int n = 0, box_width = 0, i, ci = 0;
|
||||
|
||||
for(c = globalconf.clients; c; c = c->next)
|
||||
|
@ -242,7 +242,7 @@ tasklist_button_press(widget_node_t *w,
|
|||
static widget_tell_status_t
|
||||
tasklist_tell(widget_t *widget, const char *property, const char *new_value)
|
||||
{
|
||||
Data *d = widget->data;
|
||||
tasklist_data_t *d = widget->data;
|
||||
|
||||
if(!a_strcmp(property, "text_normal"))
|
||||
{
|
||||
|
@ -278,19 +278,31 @@ tasklist_tell(widget_t *widget, const char *property, const char *new_value)
|
|||
return WIDGET_NOERROR;
|
||||
}
|
||||
|
||||
static void
|
||||
tasklist_destructor(widget_t *widget)
|
||||
{
|
||||
tasklist_data_t *d = widget->data;
|
||||
|
||||
p_delete(&d->text_normal);
|
||||
p_delete(&d->text_focus);
|
||||
p_delete(&d->text_urgent);
|
||||
p_delete(&d);
|
||||
}
|
||||
|
||||
widget_t *
|
||||
tasklist_new(alignment_t align __attribute__ ((unused)))
|
||||
{
|
||||
widget_t *w;
|
||||
Data *d;
|
||||
tasklist_data_t *d;
|
||||
|
||||
w = p_new(widget_t, 1);
|
||||
widget_common_new(w);
|
||||
w->draw = tasklist_draw;
|
||||
w->button_press = tasklist_button_press;
|
||||
w->align = AlignFlex;
|
||||
w->data = d = p_new(Data, 1);
|
||||
w->data = d = p_new(tasklist_data_t, 1);
|
||||
w->tell = tasklist_tell;
|
||||
w->destructor = tasklist_destructor;
|
||||
|
||||
d->text_normal = a_strdup(" <title/> ");
|
||||
d->text_focus = a_strdup(" <title/> ");
|
||||
|
|
|
@ -83,6 +83,14 @@ textbox_tell(widget_t *widget, const char *property, const char *new_value)
|
|||
return WIDGET_NOERROR;
|
||||
}
|
||||
|
||||
static void
|
||||
textbox_destructor(widget_t *w)
|
||||
{
|
||||
textbox_data_t *d = w->data;
|
||||
p_delete(&d->text);
|
||||
p_delete(&d);
|
||||
}
|
||||
|
||||
widget_t *
|
||||
textbox_new(alignment_t align)
|
||||
{
|
||||
|
@ -94,6 +102,7 @@ textbox_new(alignment_t align)
|
|||
w->align = align;
|
||||
w->draw = textbox_draw;
|
||||
w->tell = textbox_tell;
|
||||
w->destructor = textbox_destructor;
|
||||
w->data = d = p_new(textbox_data_t, 1);
|
||||
|
||||
return w;
|
||||
|
|
Loading…
Reference in New Issue