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;
|
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
|
typedef struct
|
||||||
{
|
{
|
||||||
|
@ -431,6 +442,17 @@ graph_tell(widget_t *widget, const char *property, const char *new_value)
|
||||||
return WIDGET_NOERROR;
|
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 *
|
widget_t *
|
||||||
graph_new(alignment_t align)
|
graph_new(alignment_t align)
|
||||||
{
|
{
|
||||||
|
@ -442,6 +464,7 @@ graph_new(alignment_t align)
|
||||||
|
|
||||||
w->draw = graph_draw;
|
w->draw = graph_draw;
|
||||||
w->tell = graph_tell;
|
w->tell = graph_tell;
|
||||||
|
w->destructor = graph_destructor;
|
||||||
w->align = align;
|
w->align = align;
|
||||||
d = w->data = p_new(graph_data_t, 1);
|
d = w->data = p_new(graph_data_t, 1);
|
||||||
|
|
||||||
|
|
|
@ -26,7 +26,7 @@ typedef struct
|
||||||
{
|
{
|
||||||
draw_image_t *image;
|
draw_image_t *image;
|
||||||
bool resize;
|
bool resize;
|
||||||
} Data;
|
} iconbox_data_t;
|
||||||
|
|
||||||
static int
|
static int
|
||||||
iconbox_draw(draw_context_t *ctx, int screen __attribute__ ((unused)),
|
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)),
|
int used __attribute__ ((unused)),
|
||||||
void *p __attribute__ ((unused)))
|
void *p __attribute__ ((unused)))
|
||||||
{
|
{
|
||||||
Data *d = w->widget->data;
|
iconbox_data_t *d = w->widget->data;
|
||||||
draw_image_t *image = d->image;
|
draw_image_t *image = d->image;
|
||||||
|
|
||||||
/* image not valid */
|
/* image not valid */
|
||||||
|
@ -68,7 +68,7 @@ iconbox_draw(draw_context_t *ctx, int screen __attribute__ ((unused)),
|
||||||
static widget_tell_status_t
|
static widget_tell_status_t
|
||||||
iconbox_tell(widget_t *widget, const char *property, const char *new_value)
|
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)
|
if(!new_value)
|
||||||
return WIDGET_ERROR_NOVALUE;
|
return WIDGET_ERROR_NOVALUE;
|
||||||
|
@ -86,18 +86,28 @@ iconbox_tell(widget_t *widget, const char *property, const char *new_value)
|
||||||
return WIDGET_NOERROR;
|
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 *
|
widget_t *
|
||||||
iconbox_new(alignment_t align)
|
iconbox_new(alignment_t align)
|
||||||
{
|
{
|
||||||
widget_t *w;
|
widget_t *w;
|
||||||
Data *d;
|
iconbox_data_t *d;
|
||||||
|
|
||||||
w = p_new(widget_t, 1);
|
w = p_new(widget_t, 1);
|
||||||
widget_common_new(w);
|
widget_common_new(w);
|
||||||
w->align = align;
|
w->align = align;
|
||||||
w->draw = iconbox_draw;
|
w->draw = iconbox_draw;
|
||||||
w->tell = iconbox_tell;
|
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;
|
d->resize = true;
|
||||||
|
|
||||||
return w;
|
return w;
|
||||||
|
|
|
@ -55,7 +55,16 @@ struct bar_t
|
||||||
bar_t *next, *prev;
|
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
|
typedef struct
|
||||||
{
|
{
|
||||||
|
@ -494,6 +503,15 @@ progressbar_tell(widget_t *widget, const char *property, const char *new_value)
|
||||||
return WIDGET_NOERROR;
|
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 *
|
widget_t *
|
||||||
progressbar_new(alignment_t align)
|
progressbar_new(alignment_t align)
|
||||||
{
|
{
|
||||||
|
@ -505,6 +523,7 @@ progressbar_new(alignment_t align)
|
||||||
w->align = align;
|
w->align = align;
|
||||||
w->draw = progressbar_draw;
|
w->draw = progressbar_draw;
|
||||||
w->tell = progressbar_tell;
|
w->tell = progressbar_tell;
|
||||||
|
w->destructor = progressbar_destructor;
|
||||||
d = w->data = p_new(progressbar_data_t, 1);
|
d = w->data = p_new(progressbar_data_t, 1);
|
||||||
|
|
||||||
d->height = 0.80;
|
d->height = 0.80;
|
||||||
|
|
|
@ -37,7 +37,14 @@ struct taglist_drawn_area_t
|
||||||
taglist_drawn_area_t *next, *prev;
|
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
|
typedef struct
|
||||||
{
|
{
|
||||||
|
@ -259,6 +266,18 @@ taglist_tell(widget_t *widget, const char *property, const char *new_value)
|
||||||
return WIDGET_NOERROR;
|
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 *
|
widget_t *
|
||||||
taglist_new(alignment_t align)
|
taglist_new(alignment_t align)
|
||||||
{
|
{
|
||||||
|
@ -271,6 +290,7 @@ taglist_new(alignment_t align)
|
||||||
w->draw = taglist_draw;
|
w->draw = taglist_draw;
|
||||||
w->button_press = taglist_button_press;
|
w->button_press = taglist_button_press;
|
||||||
w->tell = taglist_tell;
|
w->tell = taglist_tell;
|
||||||
|
w->destructor = taglist_destructor;
|
||||||
|
|
||||||
w->data = d = p_new(taglist_data_t, 1);
|
w->data = d = p_new(taglist_data_t, 1);
|
||||||
d->text_normal = a_strdup(" <text align=\"center\"/><title/> ");
|
d->text_normal = a_strdup(" <text align=\"center\"/><title/> ");
|
||||||
|
|
|
@ -43,7 +43,7 @@ typedef struct
|
||||||
showclient_t show;
|
showclient_t show;
|
||||||
bool show_icons;
|
bool show_icons;
|
||||||
char *text_normal, *text_urgent, *text_focus;
|
char *text_normal, *text_urgent, *text_focus;
|
||||||
} Data;
|
} tasklist_data_t;
|
||||||
|
|
||||||
static inline bool
|
static inline bool
|
||||||
tasklist_isvisible(client_t *c, int screen, showclient_t show)
|
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)))
|
int offset, int used, void *q __attribute__ ((unused)))
|
||||||
{
|
{
|
||||||
client_t *c;
|
client_t *c;
|
||||||
Data *d = w->widget->data;
|
tasklist_data_t *d = w->widget->data;
|
||||||
area_t area;
|
area_t area;
|
||||||
char *text;
|
char *text;
|
||||||
int n = 0, i = 0, box_width = 0, icon_width = 0, box_width_rest = 0, j = 0;
|
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;
|
button_t *b;
|
||||||
client_t *c;
|
client_t *c;
|
||||||
Data *d = w->widget->data;
|
tasklist_data_t *d = w->widget->data;
|
||||||
int n = 0, box_width = 0, i, ci = 0;
|
int n = 0, box_width = 0, i, ci = 0;
|
||||||
|
|
||||||
for(c = globalconf.clients; c; c = c->next)
|
for(c = globalconf.clients; c; c = c->next)
|
||||||
|
@ -242,7 +242,7 @@ tasklist_button_press(widget_node_t *w,
|
||||||
static widget_tell_status_t
|
static widget_tell_status_t
|
||||||
tasklist_tell(widget_t *widget, const char *property, const char *new_value)
|
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"))
|
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;
|
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 *
|
widget_t *
|
||||||
tasklist_new(alignment_t align __attribute__ ((unused)))
|
tasklist_new(alignment_t align __attribute__ ((unused)))
|
||||||
{
|
{
|
||||||
widget_t *w;
|
widget_t *w;
|
||||||
Data *d;
|
tasklist_data_t *d;
|
||||||
|
|
||||||
w = p_new(widget_t, 1);
|
w = p_new(widget_t, 1);
|
||||||
widget_common_new(w);
|
widget_common_new(w);
|
||||||
w->draw = tasklist_draw;
|
w->draw = tasklist_draw;
|
||||||
w->button_press = tasklist_button_press;
|
w->button_press = tasklist_button_press;
|
||||||
w->align = AlignFlex;
|
w->align = AlignFlex;
|
||||||
w->data = d = p_new(Data, 1);
|
w->data = d = p_new(tasklist_data_t, 1);
|
||||||
w->tell = tasklist_tell;
|
w->tell = tasklist_tell;
|
||||||
|
w->destructor = tasklist_destructor;
|
||||||
|
|
||||||
d->text_normal = a_strdup(" <title/> ");
|
d->text_normal = a_strdup(" <title/> ");
|
||||||
d->text_focus = 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;
|
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 *
|
widget_t *
|
||||||
textbox_new(alignment_t align)
|
textbox_new(alignment_t align)
|
||||||
{
|
{
|
||||||
|
@ -94,6 +102,7 @@ textbox_new(alignment_t align)
|
||||||
w->align = align;
|
w->align = align;
|
||||||
w->draw = textbox_draw;
|
w->draw = textbox_draw;
|
||||||
w->tell = textbox_tell;
|
w->tell = textbox_tell;
|
||||||
|
w->destructor = textbox_destructor;
|
||||||
w->data = d = p_new(textbox_data_t, 1);
|
w->data = d = p_new(textbox_data_t, 1);
|
||||||
|
|
||||||
return w;
|
return w;
|
||||||
|
|
Loading…
Reference in New Issue