Destroy own widget when deallocating
This commit is contained in:
parent
f539038b59
commit
1c23613447
|
@ -1,5 +1,5 @@
|
|||
/* $Id$ */
|
||||
/* Copyright (c) 2011-2012 Pierre Pronchery <khorben@defora.org> */
|
||||
/* Copyright (c) 2011-2013 Pierre Pronchery <khorben@defora.org> */
|
||||
/* This file is part of DeforaOS Desktop Panel */
|
||||
/* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
|
@ -59,6 +59,7 @@ struct _PanelApplet
|
|||
Task ** tasks;
|
||||
size_t tasks_cnt;
|
||||
|
||||
GtkWidget * widget;
|
||||
GtkWidget * hbox;
|
||||
GtkIconSize icon_size;
|
||||
int icon_width;
|
||||
|
@ -264,7 +265,6 @@ static void _task_toggle_state2(Task * task, TasksAtom state1,
|
|||
static Tasks * _tasks_init(PanelAppletHelper * helper, GtkWidget ** widget)
|
||||
{
|
||||
Tasks * tasks;
|
||||
GtkWidget * ret;
|
||||
|
||||
if((tasks = malloc(sizeof(*tasks))) == NULL)
|
||||
return NULL;
|
||||
|
@ -285,18 +285,18 @@ static Tasks * _tasks_init(PanelAppletHelper * helper, GtkWidget ** widget)
|
|||
tasks->screen = NULL;
|
||||
tasks->root = NULL;
|
||||
#ifndef EMBEDDED
|
||||
ret = gtk_scrolled_window_new(NULL, NULL);
|
||||
gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW(ret),
|
||||
tasks->widget = gtk_scrolled_window_new(NULL, NULL);
|
||||
gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW(tasks->widget),
|
||||
GTK_POLICY_NEVER, GTK_POLICY_NEVER);
|
||||
gtk_scrolled_window_set_shadow_type(GTK_SCROLLED_WINDOW(ret),
|
||||
gtk_scrolled_window_set_shadow_type(GTK_SCROLLED_WINDOW(tasks->widget),
|
||||
GTK_SHADOW_NONE);
|
||||
gtk_scrolled_window_add_with_viewport(GTK_SCROLLED_WINDOW(ret),
|
||||
tasks->hbox);
|
||||
gtk_scrolled_window_add_with_viewport(GTK_SCROLLED_WINDOW(
|
||||
tasks->widget), tasks->hbox);
|
||||
#else
|
||||
ret = tasks->hbox;
|
||||
tasks->widget = tasks->hbox;
|
||||
#endif
|
||||
gtk_widget_show_all(ret);
|
||||
*widget = ret;
|
||||
gtk_widget_show_all(tasks->widget);
|
||||
*widget = tasks->widget;
|
||||
return tasks;
|
||||
}
|
||||
|
||||
|
@ -309,6 +309,7 @@ static void _tasks_destroy(Tasks * tasks)
|
|||
for(i = 0; i < tasks->tasks_cnt; i++)
|
||||
free(tasks->tasks[i]);
|
||||
free(tasks->tasks);
|
||||
gtk_widget_destroy(tasks->widget);
|
||||
free(tasks);
|
||||
}
|
||||
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
/* $Id$ */
|
||||
/* Copyright (c) 2011-2012 Pierre Pronchery <khorben@defora.org> */
|
||||
/* Copyright (c) 2011-2013 Pierre Pronchery <khorben@defora.org> */
|
||||
/* This file is part of DeforaOS Desktop Panel */
|
||||
/* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
|
@ -111,6 +111,7 @@ static void _usb_destroy(USB * usb)
|
|||
if(usb->fd >= 0)
|
||||
close(usb->fd);
|
||||
#endif
|
||||
gtk_widget_destroy(usb->image);
|
||||
free(usb);
|
||||
}
|
||||
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
/* $Id$ */
|
||||
/* Copyright (c) 2011-2012 Pierre Pronchery <khorben@defora.org> */
|
||||
/* Copyright (c) 2011-2013 Pierre Pronchery <khorben@defora.org> */
|
||||
/* This file is part of DeforaOS Desktop Panel */
|
||||
/* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
|
@ -57,6 +57,7 @@ typedef struct _PanelApplet
|
|||
guint source;
|
||||
|
||||
/* widgets */
|
||||
GtkWidget * widget;
|
||||
GtkWidget * button;
|
||||
GtkWidget * progress;
|
||||
} Volume;
|
||||
|
@ -65,7 +66,9 @@ typedef struct _PanelApplet
|
|||
/* private */
|
||||
/* prototypes */
|
||||
static Volume * _volume_init(PanelAppletHelper * helper, GtkWidget ** widget);
|
||||
#if GTK_CHECK_VERSION(2, 12, 0)
|
||||
static void _volume_destroy(Volume * volume);
|
||||
#endif
|
||||
|
||||
|
||||
/* public */
|
||||
|
@ -76,7 +79,11 @@ PanelAppletDefinition applet =
|
|||
"stock_volume",
|
||||
NULL,
|
||||
_volume_init,
|
||||
#if GTK_CHECK_VERSION(2, 12, 0)
|
||||
_volume_destroy,
|
||||
#else
|
||||
NULL,
|
||||
#endif
|
||||
NULL,
|
||||
FALSE,
|
||||
TRUE
|
||||
|
@ -116,13 +123,14 @@ static Volume * _volume_init(PanelAppletHelper * helper, GtkWidget ** widget)
|
|||
if(helper->type == PANEL_APPLET_TYPE_NOTIFICATION)
|
||||
{
|
||||
vbox = gtk_vbox_new(FALSE, 4);
|
||||
*widget = gtk_image_new_from_icon_name("stock_volume-med",
|
||||
helper->icon_size);
|
||||
gtk_box_pack_start(GTK_BOX(vbox), *widget, TRUE, TRUE, 0);
|
||||
volume->widget = gtk_image_new_from_icon_name(
|
||||
"stock_volume-med", helper->icon_size);
|
||||
gtk_box_pack_start(GTK_BOX(vbox), volume->widget, TRUE, TRUE,
|
||||
0);
|
||||
volume->progress = gtk_progress_bar_new();
|
||||
gtk_box_pack_start(GTK_BOX(vbox), volume->progress, TRUE, TRUE,
|
||||
0);
|
||||
*widget = vbox;
|
||||
volume->widget = vbox;
|
||||
}
|
||||
else
|
||||
{
|
||||
|
@ -132,10 +140,11 @@ static Volume * _volume_init(PanelAppletHelper * helper, GtkWidget ** widget)
|
|||
helper->icon_size, NULL);
|
||||
g_signal_connect_swapped(volume->button, "value-changed",
|
||||
G_CALLBACK(_on_value_changed), volume);
|
||||
*widget = volume->button;
|
||||
volume->widget = volume->button;
|
||||
}
|
||||
_on_volume_timeout(volume);
|
||||
gtk_widget_show_all(*widget);
|
||||
gtk_widget_show_all(volume->widget);
|
||||
*widget = volume->widget;
|
||||
return volume;
|
||||
#else
|
||||
return NULL;
|
||||
|
@ -147,6 +156,7 @@ static Volume * _volume_init(PanelAppletHelper * helper, GtkWidget ** widget)
|
|||
/* volume_destroy */
|
||||
static void _volume_destroy(Volume * volume)
|
||||
{
|
||||
gtk_widget_destroy(volume->widget);
|
||||
_volume_delete(volume);
|
||||
}
|
||||
|
||||
|
|
|
@ -211,7 +211,7 @@ static WPA * _wpa_init(PanelAppletHelper * helper, GtkWidget ** widget)
|
|||
gtk_widget_show_all(hbox);
|
||||
pango_font_description_free(bold);
|
||||
if(helper->type == PANEL_APPLET_TYPE_NOTIFICATION)
|
||||
*widget = hbox;
|
||||
wpa->widget = hbox;
|
||||
else
|
||||
{
|
||||
ret = gtk_button_new();
|
||||
|
@ -222,9 +222,9 @@ static WPA * _wpa_init(PanelAppletHelper * helper, GtkWidget ** widget)
|
|||
g_signal_connect_swapped(ret, "clicked", G_CALLBACK(
|
||||
_on_clicked), wpa);
|
||||
gtk_container_add(GTK_CONTAINER(ret), hbox);
|
||||
*widget = ret;
|
||||
wpa->widget = ret;
|
||||
}
|
||||
wpa->widget = *widget;
|
||||
*widget = wpa->widget;
|
||||
return wpa;
|
||||
}
|
||||
|
||||
|
@ -243,6 +243,7 @@ static void _init_channel(WPAChannel * channel)
|
|||
static void _wpa_destroy(WPA * wpa)
|
||||
{
|
||||
_wpa_stop(wpa);
|
||||
gtk_widget_destroy(wpa->widget);
|
||||
object_delete(wpa);
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in New Issue
Block a user