[Xfce4-commits] [panel-plugins/xfce4-pulseaudio-plugin] 11/21: Simplify ScaleMenuItem and memory management
noreply at xfce.org
noreply at xfce.org
Sat Sep 23 21:27:37 CEST 2017
This is an automated email from the git hooks/post-receive script.
b l u e s a b r e p u s h e d a c o m m i t t o b r a n c h m a s t e r
in repository panel-plugins/xfce4-pulseaudio-plugin.
commit 49f0d46e8852ae64823835230cc95ca7fcd40b50
Author: Sean Davis <smd.seandavis at gmail.com>
Date: Mon Sep 11 21:35:30 2017 -0400
Simplify ScaleMenuItem and memory management
---
panel-plugin/scalemenuitem.c | 65 ++++++++++++++++++++++++++------------------
1 file changed, 39 insertions(+), 26 deletions(-)
diff --git a/panel-plugin/scalemenuitem.c b/panel-plugin/scalemenuitem.c
index 497fca0..a572ecb 100644
--- a/panel-plugin/scalemenuitem.c
+++ b/panel-plugin/scalemenuitem.c
@@ -46,20 +46,24 @@ static gboolean scale_menu_item_motion_notify_event (GtkWidget *men
GdkEventMotion *event);
static void scale_menu_item_parent_set (GtkWidget *item,
GtkWidget *previous_parent);
-static void update_packing (ScaleMenuItem * self);
struct _ScaleMenuItemPrivate {
GtkWidget *scale;
- GtkWidget *left_image;
+ GtkWidget *image;
+ gchar *icon_name;
+
gboolean grabbed;
- gchar *base_icon_name;
};
+static void scale_menu_item_finalize (GObject *object);
+
+
+
enum {
SLIDER_GRABBED,
SLIDER_RELEASED,
@@ -94,22 +98,22 @@ scale_menu_item_scale_value_changed (GtkRange *range,
/* Update the menuitem icon */
if (value >= 70.0)
{
- icon_name = g_strconcat(priv->base_icon_name, "-high-symbolic", NULL);
+ icon_name = g_strconcat(priv->icon_name, "-high-symbolic", NULL);
}
else if (value >= 30.0)
{
- icon_name = g_strconcat(priv->base_icon_name, "-medium-symbolic", NULL);
+ icon_name = g_strconcat(priv->icon_name, "-medium-symbolic", NULL);
}
else if (value > 0.0)
{
- icon_name = g_strconcat(priv->base_icon_name, "-low-symbolic", NULL);
+ icon_name = g_strconcat(priv->icon_name, "-low-symbolic", NULL);
}
else
{
- icon_name = g_strconcat(priv->base_icon_name, "-muted-symbolic", NULL);
+ icon_name = g_strconcat(priv->icon_name, "-muted-symbolic", NULL);
}
- gtk_image_set_from_icon_name (GTK_IMAGE (priv->left_image), icon_name, GTK_ICON_SIZE_MENU);
+ gtk_image_set_from_icon_name (GTK_IMAGE (priv->image), icon_name, GTK_ICON_SIZE_MENU);
g_free (icon_name);
}
@@ -124,6 +128,7 @@ scale_menu_item_class_init (ScaleMenuItemClass *item_class)
widget_class->motion_notify_event = scale_menu_item_motion_notify_event;
widget_class->parent_set = scale_menu_item_parent_set;
+ gobject_class->finalize = scale_menu_item_finalize;
/**
* ScaleMenuItem::slider-grabbed:
@@ -175,22 +180,30 @@ scale_menu_item_class_init (ScaleMenuItemClass *item_class)
}
static void
-update_packing (ScaleMenuItem *self)
+scale_menu_item_init (ScaleMenuItem *self)
{
ScaleMenuItemPrivate *priv;
- g_return_if_fail (IS_SCALE_MENU_ITEM (self));
-
priv = GET_PRIVATE (self);
- TRACE("entering");
-
- gtk_container_add (GTK_CONTAINER (self), priv->scale);
+ priv->scale = NULL;
+ priv->image = NULL;
+ priv->icon_name = NULL;
}
static void
-scale_menu_item_init (ScaleMenuItem *self)
+scale_menu_item_finalize (GObject *object)
{
+ ScaleMenuItem *self;
+ ScaleMenuItemPrivate *priv;
+
+ self = SCALE_MENU_ITEM (object);
+ priv = GET_PRIVATE (self);
+
+ g_free (priv->icon_name);
+ priv->icon_name = NULL;
+
+ (*G_OBJECT_CLASS (scale_menu_item_parent_class)->finalize) (object);
}
static gboolean
@@ -328,26 +341,26 @@ scale_menu_item_new_with_range (gdouble min,
priv = GET_PRIVATE (scale_item);
- priv->scale = gtk_scale_new_with_range (GTK_ORIENTATION_HORIZONTAL, min, max, step);
-
- priv->left_image = gtk_image_new ();
-
+ /* Configure the menu item image */
+ priv->image = gtk_image_new ();
G_GNUC_BEGIN_IGNORE_DEPRECATIONS
- gtk_image_menu_item_set_image (GTK_IMAGE_MENU_ITEM (scale_item), priv->left_image);
+ gtk_image_menu_item_set_image (GTK_IMAGE_MENU_ITEM (scale_item), priv->image);
G_GNUC_END_IGNORE_DEPRECATIONS
- g_object_ref (priv->left_image);
-
- g_signal_connect (priv->scale, "value-changed", G_CALLBACK (scale_menu_item_scale_value_changed), scale_item);
- g_object_ref (priv->scale);
+ /* Configure the menu item scale */
+ priv->scale = gtk_scale_new_with_range (GTK_ORIENTATION_HORIZONTAL, min, max, step);
gtk_widget_set_size_request (priv->scale, 100, -1);
gtk_range_set_inverted (GTK_RANGE(priv->scale), FALSE);
gtk_scale_set_draw_value (GTK_SCALE(priv->scale), FALSE);
+
if (max > 100.0)
gtk_scale_add_mark (GTK_SCALE (priv->scale), 100.0, GTK_POS_BOTTOM, NULL);
- update_packing (scale_item);
+ /* Pack the scale widget */
+ gtk_container_add (GTK_CONTAINER (scale_item), priv->scale);
+ /* Connect events */
+ g_signal_connect (priv->scale, "value-changed", G_CALLBACK (scale_menu_item_scale_value_changed), scale_item);
gtk_widget_add_events (GTK_WIDGET(scale_item), GDK_SCROLL_MASK|GDK_POINTER_MOTION_MASK|GDK_BUTTON_MOTION_MASK);
return GTK_WIDGET(scale_item);
@@ -383,5 +396,5 @@ scale_menu_item_set_base_icon_name (ScaleMenuItem *item,
priv = GET_PRIVATE (item);
- priv->base_icon_name = g_strdup (base_icon_name);
+ priv->icon_name = g_strdup (base_icon_name);
}
--
To stop receiving notification emails like this one, please contact
the administrator of this repository.
More information about the Xfce4-commits
mailing list