Destroy own widget when deallocating
This commit is contained in:
parent
f50c471d62
commit
af4a0229bd
|
@ -152,10 +152,10 @@ static Battery * _battery_init(PanelAppletHelper * helper, GtkWidget ** widget)
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
battery->box = hbox;
|
battery->box = hbox;
|
||||||
*widget = battery->box;
|
|
||||||
battery->timeout = g_timeout_add(5000, _on_timeout, battery);
|
battery->timeout = g_timeout_add(5000, _on_timeout, battery);
|
||||||
_on_timeout(battery);
|
_on_timeout(battery);
|
||||||
gtk_widget_show(battery->image);
|
gtk_widget_show(battery->image);
|
||||||
|
*widget = battery->box;
|
||||||
return battery;
|
return battery;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
/* $Id$ */
|
/* $Id$ */
|
||||||
/* Copyright (c) 2010-2012 Pierre Pronchery <khorben@defora.org> */
|
/* Copyright (c) 2010-2013 Pierre Pronchery <khorben@defora.org> */
|
||||||
/* This file is part of DeforaOS Desktop Panel */
|
/* This file is part of DeforaOS Desktop Panel */
|
||||||
/* This program is free software: you can redistribute it and/or modify
|
/* 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
|
* it under the terms of the GNU General Public License as published by
|
||||||
|
@ -33,6 +33,7 @@
|
||||||
typedef struct _PanelApplet
|
typedef struct _PanelApplet
|
||||||
{
|
{
|
||||||
PanelAppletHelper * helper;
|
PanelAppletHelper * helper;
|
||||||
|
GtkWidget * widget;
|
||||||
char const * format;
|
char const * format;
|
||||||
GtkWidget * label;
|
GtkWidget * label;
|
||||||
guint timeout;
|
guint timeout;
|
||||||
|
@ -68,7 +69,6 @@ PanelAppletDefinition applet =
|
||||||
static Clock * _clock_init(PanelAppletHelper * helper, GtkWidget ** widget)
|
static Clock * _clock_init(PanelAppletHelper * helper, GtkWidget ** widget)
|
||||||
{
|
{
|
||||||
Clock * clock;
|
Clock * clock;
|
||||||
GtkWidget * ret;
|
|
||||||
#ifdef EMBEDDED
|
#ifdef EMBEDDED
|
||||||
PangoFontDescription * desc;
|
PangoFontDescription * desc;
|
||||||
#endif
|
#endif
|
||||||
|
@ -81,7 +81,7 @@ static Clock * _clock_init(PanelAppletHelper * helper, GtkWidget ** widget)
|
||||||
"format")) == NULL)
|
"format")) == NULL)
|
||||||
#ifdef EMBEDDED
|
#ifdef EMBEDDED
|
||||||
clock->format = _("%H:%M");
|
clock->format = _("%H:%M");
|
||||||
ret = clock->label;
|
clock->widget = clock->label;
|
||||||
desc = pango_font_description_new();
|
desc = pango_font_description_new();
|
||||||
pango_font_description_set_weight(desc, PANGO_WEIGHT_BOLD);
|
pango_font_description_set_weight(desc, PANGO_WEIGHT_BOLD);
|
||||||
gtk_widget_modify_font(clock->label, desc);
|
gtk_widget_modify_font(clock->label, desc);
|
||||||
|
@ -93,15 +93,15 @@ static Clock * _clock_init(PanelAppletHelper * helper, GtkWidget ** widget)
|
||||||
else
|
else
|
||||||
clock->format = _("%H:%M");
|
clock->format = _("%H:%M");
|
||||||
}
|
}
|
||||||
ret = gtk_frame_new(NULL);
|
clock->widget = gtk_frame_new(NULL);
|
||||||
gtk_frame_set_shadow_type(GTK_FRAME(ret), GTK_SHADOW_IN);
|
gtk_frame_set_shadow_type(GTK_FRAME(clock->widget), GTK_SHADOW_IN);
|
||||||
gtk_container_add(GTK_CONTAINER(ret), clock->label);
|
gtk_container_add(GTK_CONTAINER(clock->widget), clock->label);
|
||||||
#endif
|
#endif
|
||||||
gtk_label_set_justify(GTK_LABEL(clock->label), GTK_JUSTIFY_CENTER);
|
gtk_label_set_justify(GTK_LABEL(clock->label), GTK_JUSTIFY_CENTER);
|
||||||
clock->timeout = g_timeout_add(1000, _on_timeout, clock);
|
clock->timeout = g_timeout_add(1000, _on_timeout, clock);
|
||||||
_on_timeout(clock);
|
_on_timeout(clock);
|
||||||
gtk_widget_show_all(ret);
|
gtk_widget_show_all(clock->widget);
|
||||||
*widget = ret;
|
*widget = clock->widget;
|
||||||
return clock;
|
return clock;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -110,6 +110,7 @@ static Clock * _clock_init(PanelAppletHelper * helper, GtkWidget ** widget)
|
||||||
static void _clock_destroy(Clock * clock)
|
static void _clock_destroy(Clock * clock)
|
||||||
{
|
{
|
||||||
g_source_remove(clock->timeout);
|
g_source_remove(clock->timeout);
|
||||||
|
gtk_widget_destroy(clock->widget);
|
||||||
free(clock);
|
free(clock);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -38,6 +38,7 @@
|
||||||
typedef struct _PanelApplet
|
typedef struct _PanelApplet
|
||||||
{
|
{
|
||||||
PanelAppletHelper * helper;
|
PanelAppletHelper * helper;
|
||||||
|
GtkWidget * widget;
|
||||||
GtkWidget * scale;
|
GtkWidget * scale;
|
||||||
guint timeout;
|
guint timeout;
|
||||||
#if defined(__FreeBSD__) || defined(__NetBSD__)
|
#if defined(__FreeBSD__) || defined(__NetBSD__)
|
||||||
|
@ -79,7 +80,6 @@ static Cpu * _cpu_init(PanelAppletHelper * helper, GtkWidget ** widget)
|
||||||
{
|
{
|
||||||
#if defined(__FreeBSD__) || defined(__NetBSD__)
|
#if defined(__FreeBSD__) || defined(__NetBSD__)
|
||||||
Cpu * cpu;
|
Cpu * cpu;
|
||||||
GtkWidget * ret;
|
|
||||||
PangoFontDescription * desc;
|
PangoFontDescription * desc;
|
||||||
GtkWidget * label;
|
GtkWidget * label;
|
||||||
|
|
||||||
|
@ -89,24 +89,24 @@ static Cpu * _cpu_init(PanelAppletHelper * helper, GtkWidget ** widget)
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
cpu->helper = helper;
|
cpu->helper = helper;
|
||||||
ret = gtk_hbox_new(FALSE, 0);
|
cpu->widget = gtk_hbox_new(FALSE, 0);
|
||||||
desc = pango_font_description_new();
|
desc = pango_font_description_new();
|
||||||
pango_font_description_set_weight(desc, PANGO_WEIGHT_BOLD);
|
pango_font_description_set_weight(desc, PANGO_WEIGHT_BOLD);
|
||||||
label = gtk_label_new(_("CPU:"));
|
label = gtk_label_new(_("CPU:"));
|
||||||
gtk_widget_modify_font(label, desc);
|
gtk_widget_modify_font(label, desc);
|
||||||
gtk_box_pack_start(GTK_BOX(ret), label, FALSE, FALSE, 0);
|
gtk_box_pack_start(GTK_BOX(cpu->widget), label, FALSE, FALSE, 0);
|
||||||
cpu->scale = gtk_vscale_new_with_range(0, 100, 1);
|
cpu->scale = gtk_vscale_new_with_range(0, 100, 1);
|
||||||
gtk_widget_set_sensitive(cpu->scale, FALSE);
|
gtk_widget_set_sensitive(cpu->scale, FALSE);
|
||||||
gtk_range_set_inverted(GTK_RANGE(cpu->scale), TRUE);
|
gtk_range_set_inverted(GTK_RANGE(cpu->scale), TRUE);
|
||||||
gtk_scale_set_value_pos(GTK_SCALE(cpu->scale), GTK_POS_RIGHT);
|
gtk_scale_set_value_pos(GTK_SCALE(cpu->scale), GTK_POS_RIGHT);
|
||||||
gtk_box_pack_start(GTK_BOX(ret), cpu->scale, FALSE, FALSE, 0);
|
gtk_box_pack_start(GTK_BOX(cpu->widget), cpu->scale, FALSE, FALSE, 0);
|
||||||
cpu->timeout = g_timeout_add(500, _on_timeout, cpu);
|
cpu->timeout = g_timeout_add(500, _on_timeout, cpu);
|
||||||
cpu->used = 0;
|
cpu->used = 0;
|
||||||
cpu->total = 0;
|
cpu->total = 0;
|
||||||
_on_timeout(cpu);
|
_on_timeout(cpu);
|
||||||
pango_font_description_free(desc);
|
pango_font_description_free(desc);
|
||||||
gtk_widget_show_all(ret);
|
gtk_widget_show_all(cpu->widget);
|
||||||
*widget = ret;
|
*widget = cpu->widget;
|
||||||
return cpu;
|
return cpu;
|
||||||
#else
|
#else
|
||||||
error_set("%s: %s", "cpu", _("Unsupported platform"));
|
error_set("%s: %s", "cpu", _("Unsupported platform"));
|
||||||
|
@ -119,6 +119,7 @@ static Cpu * _cpu_init(PanelAppletHelper * helper, GtkWidget ** widget)
|
||||||
static void _cpu_destroy(Cpu * cpu)
|
static void _cpu_destroy(Cpu * cpu)
|
||||||
{
|
{
|
||||||
g_source_remove(cpu->timeout);
|
g_source_remove(cpu->timeout);
|
||||||
|
gtk_widget_destroy(cpu->widget);
|
||||||
free(cpu);
|
free(cpu);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
/* $Id$ */
|
/* $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 file is part of DeforaOS Desktop Panel */
|
||||||
/* This program is free software: you can redistribute it and/or modify
|
/* 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
|
* it under the terms of the GNU General Public License as published by
|
||||||
|
@ -27,6 +27,7 @@
|
||||||
typedef struct _PanelApplet
|
typedef struct _PanelApplet
|
||||||
{
|
{
|
||||||
PanelAppletHelper * helper;
|
PanelAppletHelper * helper;
|
||||||
|
GtkWidget * widget;
|
||||||
|
|
||||||
/* preferences */
|
/* preferences */
|
||||||
GtkWidget * pr_box;
|
GtkWidget * pr_box;
|
||||||
|
@ -64,7 +65,6 @@ PanelAppletDefinition applet =
|
||||||
static Lock * _lock_init(PanelAppletHelper * helper, GtkWidget ** widget)
|
static Lock * _lock_init(PanelAppletHelper * helper, GtkWidget ** widget)
|
||||||
{
|
{
|
||||||
Lock * lock;
|
Lock * lock;
|
||||||
GtkWidget * ret;
|
|
||||||
GtkWidget * image;
|
GtkWidget * image;
|
||||||
|
|
||||||
if((lock = malloc(sizeof(*lock))) == NULL)
|
if((lock = malloc(sizeof(*lock))) == NULL)
|
||||||
|
@ -72,18 +72,18 @@ static Lock * _lock_init(PanelAppletHelper * helper, GtkWidget ** widget)
|
||||||
lock->helper = helper;
|
lock->helper = helper;
|
||||||
lock->pr_box = NULL;
|
lock->pr_box = NULL;
|
||||||
lock->pr_command = NULL;
|
lock->pr_command = NULL;
|
||||||
ret = gtk_button_new();
|
lock->widget = gtk_button_new();
|
||||||
image = gtk_image_new_from_icon_name("gnome-lockscreen",
|
image = gtk_image_new_from_icon_name("gnome-lockscreen",
|
||||||
helper->icon_size);
|
helper->icon_size);
|
||||||
gtk_button_set_image(GTK_BUTTON(ret), image);
|
gtk_button_set_image(GTK_BUTTON(lock->widget), image);
|
||||||
gtk_button_set_relief(GTK_BUTTON(ret), GTK_RELIEF_NONE);
|
gtk_button_set_relief(GTK_BUTTON(lock->widget), GTK_RELIEF_NONE);
|
||||||
#if GTK_CHECK_VERSION(2, 12, 0)
|
#if GTK_CHECK_VERSION(2, 12, 0)
|
||||||
gtk_widget_set_tooltip_text(ret, _("Lock screen"));
|
gtk_widget_set_tooltip_text(lock->widget, _("Lock screen"));
|
||||||
#endif
|
#endif
|
||||||
g_signal_connect_swapped(G_OBJECT(ret), "clicked", G_CALLBACK(
|
g_signal_connect_swapped(lock->widget, "clicked", G_CALLBACK(
|
||||||
_on_clicked), helper);
|
_on_clicked), helper);
|
||||||
gtk_widget_show_all(ret);
|
gtk_widget_show_all(lock->widget);
|
||||||
*widget = ret;
|
*widget = lock->widget;
|
||||||
return lock;
|
return lock;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -91,6 +91,7 @@ static Lock * _lock_init(PanelAppletHelper * helper, GtkWidget ** widget)
|
||||||
/* lock_destroy */
|
/* lock_destroy */
|
||||||
static void _lock_destroy(Lock * lock)
|
static void _lock_destroy(Lock * lock)
|
||||||
{
|
{
|
||||||
|
gtk_widget_destroy(lock->widget);
|
||||||
free(lock);
|
free(lock);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
/* $Id$ */
|
/* $Id$ */
|
||||||
/* Copyright (c) 2010-2012 Pierre Pronchery <khorben@defora.org> */
|
/* Copyright (c) 2010-2013 Pierre Pronchery <khorben@defora.org> */
|
||||||
/* This file is part of DeforaOS Desktop Panel */
|
/* This file is part of DeforaOS Desktop Panel */
|
||||||
/* This program is free software: you can redistribute it and/or modify
|
/* 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
|
* it under the terms of the GNU General Public License as published by
|
||||||
|
@ -28,6 +28,7 @@
|
||||||
typedef struct _PanelApplet
|
typedef struct _PanelApplet
|
||||||
{
|
{
|
||||||
PanelAppletHelper * helper;
|
PanelAppletHelper * helper;
|
||||||
|
GtkWidget * widget;
|
||||||
} Logout;
|
} Logout;
|
||||||
|
|
||||||
|
|
||||||
|
@ -60,7 +61,6 @@ PanelAppletDefinition applet =
|
||||||
static Logout * _logout_init(PanelAppletHelper * helper, GtkWidget ** widget)
|
static Logout * _logout_init(PanelAppletHelper * helper, GtkWidget ** widget)
|
||||||
{
|
{
|
||||||
Logout * logout;
|
Logout * logout;
|
||||||
GtkWidget * ret;
|
|
||||||
GtkWidget * image;
|
GtkWidget * image;
|
||||||
|
|
||||||
if((logout = malloc(sizeof(*logout))) == NULL)
|
if((logout = malloc(sizeof(*logout))) == NULL)
|
||||||
|
@ -71,17 +71,17 @@ static Logout * _logout_init(PanelAppletHelper * helper, GtkWidget ** widget)
|
||||||
helper->error(NULL, _("logout: Logging out is disabled"), 1);
|
helper->error(NULL, _("logout: Logging out is disabled"), 1);
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
ret = gtk_button_new();
|
logout->widget = gtk_button_new();
|
||||||
image = gtk_image_new_from_icon_name("gnome-logout", helper->icon_size);
|
image = gtk_image_new_from_icon_name("gnome-logout", helper->icon_size);
|
||||||
gtk_button_set_image(GTK_BUTTON(ret), image);
|
gtk_button_set_image(GTK_BUTTON(logout->widget), image);
|
||||||
gtk_button_set_relief(GTK_BUTTON(ret), GTK_RELIEF_NONE);
|
gtk_button_set_relief(GTK_BUTTON(logout->widget), GTK_RELIEF_NONE);
|
||||||
#if GTK_CHECK_VERSION(2, 12, 0)
|
#if GTK_CHECK_VERSION(2, 12, 0)
|
||||||
gtk_widget_set_tooltip_text(ret, _("Logout"));
|
gtk_widget_set_tooltip_text(logout->widget, _("Logout"));
|
||||||
#endif
|
#endif
|
||||||
g_signal_connect_swapped(G_OBJECT(ret), "clicked", G_CALLBACK(
|
g_signal_connect_swapped(logout->widget, "clicked", G_CALLBACK(
|
||||||
_on_clicked), logout);
|
_on_clicked), logout);
|
||||||
gtk_widget_show_all(ret);
|
gtk_widget_show_all(logout->widget);
|
||||||
*widget = ret;
|
*widget = logout->widget;
|
||||||
return logout;
|
return logout;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -89,6 +89,7 @@ static Logout * _logout_init(PanelAppletHelper * helper, GtkWidget ** widget)
|
||||||
/* logout_destroy */
|
/* logout_destroy */
|
||||||
static void _logout_destroy(Logout * logout)
|
static void _logout_destroy(Logout * logout)
|
||||||
{
|
{
|
||||||
|
gtk_widget_destroy(logout->widget);
|
||||||
free(logout);
|
free(logout);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue
Block a user