Updating branch refs/heads/gber/improvements to c307eeda920f331185b204da2f8ba0633c316e90 (commit) from 53d9468b2b5c8ac538d661f8f478026c629aa3c7 (commit)
commit c307eeda920f331185b204da2f8ba0633c316e90 Author: Guido Berhoerster <guido+x...@berhoerster.name> Date: Fri Sep 21 12:00:36 2012 +0200 Avoid the deprecated GtkTooltips API and let XfceVolumeButton handle tooltips NEWS | 2 + panel-plugin/xfce-mixer-plugin.c | 21 +---------- panel-plugin/xfce-volume-button.c | 72 +++++++++++++++++++++++++++++++++++++ panel-plugin/xfce-volume-button.h | 3 ++ 4 files changed, 78 insertions(+), 20 deletions(-) diff --git a/NEWS b/NEWS index 01cfa15..c056db7 100644 --- a/NEWS +++ b/NEWS @@ -14,6 +14,8 @@ bug #7125). - Clearly indicate in the plugin when there is no valid card and/or element and ignore mouse wheel and mute toggle events (bug #6625, bug #7630). +- Avoid the deprecated GtkTooltips API and let XfceVolumeButton handle + tooltips. 4.8.0 diff --git a/panel-plugin/xfce-mixer-plugin.c b/panel-plugin/xfce-mixer-plugin.c index 2bfcefa..da09a72 100644 --- a/panel-plugin/xfce-mixer-plugin.c +++ b/panel-plugin/xfce-mixer-plugin.c @@ -93,9 +93,6 @@ struct _XfceMixerPlugin /* Parent type */ XfcePanelPlugin __parent__; - /* Tooltips structure */ - GtkTooltips *tooltips; - /* Sound card being used */ GstElement *card; gchar *card_name; @@ -199,10 +196,6 @@ xfce_mixer_plugin_init (XfceMixerPlugin *mixer_plugin) /* Initialize the mixer library */ xfce_mixer_init (); - /* Allocate a tooltips structure */ - mixer_plugin->tooltips = gtk_tooltips_new (); - gtk_tooltips_set_delay (mixer_plugin->tooltips, 10); - /* Create container for the plugin */ mixer_plugin->hvbox = GTK_WIDGET (xfce_hvbox_new (GTK_ORIENTATION_HORIZONTAL, FALSE, 0)); xfce_panel_plugin_add_action_widget (XFCE_PANEL_PLUGIN (mixer_plugin), mixer_plugin->hvbox); @@ -520,7 +513,6 @@ static void xfce_mixer_plugin_volume_changed (XfceMixerPlugin *mixer_plugin, gdouble volume) { - gchar *tip_text; gint *volumes; gint volume_range; gint new_volume; @@ -534,11 +526,6 @@ xfce_mixer_plugin_volume_changed (XfceMixerPlugin *mixer_plugin, mixer_plugin->ignore_bus_messages = TRUE; #endif - /* Set tooltip (e.g. 'Master: 50%') */ - tip_text = g_strdup_printf (_("%s: %i%%"), mixer_plugin->track_label, (gint) (volume * 100)); - gtk_tooltips_set_tip (mixer_plugin->tooltips, mixer_plugin->button, tip_text, "test"); - g_free (tip_text); - /* Allocate array for track volumes */ volumes = g_new (gint, mixer_plugin->track->num_channels); @@ -603,7 +590,6 @@ xfce_mixer_plugin_update_track (XfceMixerPlugin *mixer_plugin) gint volume_range; gdouble volume; gint *volumes; - gchar *tip_text; g_return_if_fail (IS_XFCE_MIXER_PLUGIN (mixer_plugin)); @@ -611,7 +597,6 @@ xfce_mixer_plugin_update_track (XfceMixerPlugin *mixer_plugin) if (!GST_IS_MIXER (mixer_plugin->card) || !GST_IS_MIXER_TRACK (mixer_plugin->track)) { xfce_volume_button_set_is_configured (XFCE_VOLUME_BUTTON (mixer_plugin->button), FALSE); - gtk_tooltips_set_tip (mixer_plugin->tooltips, mixer_plugin->button, _("No valid device and/or element."), NULL); return; } @@ -625,11 +610,6 @@ xfce_mixer_plugin_update_track (XfceMixerPlugin *mixer_plugin) /* Determine maximum value as double between 0.0 and 1.0 */ volume = ((gdouble) xfce_mixer_get_max_volume (volumes, mixer_plugin->track->num_channels) - mixer_plugin->track->min_volume) / volume_range; - /* Set tooltip (e.g. 'Master: 50%') */ - tip_text = g_strdup_printf (_("%s: %i%%"), mixer_plugin->track_label, (gint) (volume * 100)); - gtk_tooltips_set_tip (mixer_plugin->tooltips, mixer_plugin->button, tip_text, "test"); - g_free (tip_text); - /* Determine track type */ track_type = xfce_mixer_track_type_new (mixer_plugin->track); @@ -642,6 +622,7 @@ xfce_mixer_plugin_update_track (XfceMixerPlugin *mixer_plugin) xfce_volume_button_set_is_configured (XFCE_VOLUME_BUTTON (mixer_plugin->button), TRUE); xfce_volume_button_set_volume (XFCE_VOLUME_BUTTON (mixer_plugin->button), volume); xfce_volume_button_set_muted (XFCE_VOLUME_BUTTON (mixer_plugin->button), muted); + xfce_volume_button_set_track_label (XFCE_VOLUME_BUTTON (mixer_plugin->button), mixer_plugin->track_label); /* Free volume array */ g_free (volumes); diff --git a/panel-plugin/xfce-volume-button.c b/panel-plugin/xfce-volume-button.c index 3b5d90e..ca2236b 100644 --- a/panel-plugin/xfce-volume-button.c +++ b/panel-plugin/xfce-volume-button.c @@ -46,6 +46,7 @@ enum { PROP_0, + PROP_TRACK_LABEL, PROP_IS_CONFIGURED, N_PROPERTIES, }; @@ -137,6 +138,9 @@ struct _XfceVolumeButton /* Array of preloaded icons */ GdkPixbuf **pixbufs; + /* Track label used in tooltip */ + gchar *track_label; + /* Whether the button is configured */ gboolean is_configured; @@ -197,6 +201,14 @@ xfce_volume_button_class_init (XfceVolumeButtonClass *klass) klass->mute_toggled = xfce_volume_button_mute_toggled; g_object_class_install_property (gobject_class, + PROP_TRACK_LABEL, + g_param_spec_string ("track-label", + "track-label", + "track-label", + "Unknown", + G_PARAM_READABLE | G_PARAM_WRITABLE)); + + g_object_class_install_property (gobject_class, PROP_IS_CONFIGURED, g_param_spec_boolean ("is-configured", "is-configured", @@ -232,6 +244,8 @@ xfce_volume_button_class_init (XfceVolumeButtonClass *klass) static void xfce_volume_button_init (XfceVolumeButton *button) { + button->track_label = NULL; + button->is_configured = FALSE; /* By default we expect the button not to be muted */ @@ -289,6 +303,12 @@ xfce_volume_button_finalize (GObject *object) g_object_unref (G_OBJECT (button->pixbufs[i])); g_free (button->pixbufs); + if (button->track_label != NULL) + { + g_free (button->track_label); + button->track_label = NULL; + } + (*G_OBJECT_CLASS (xfce_volume_button_parent_class)->finalize) (object); } @@ -304,6 +324,12 @@ static void xfce_volume_button_set_property (GObject *object, switch (prop_id) { + case PROP_TRACK_LABEL: + g_free (button->track_label); + button->track_label = g_value_dup_string (value); + if (button->is_configured) + xfce_volume_button_update (button); + break; case PROP_IS_CONFIGURED: is_configured = g_value_get_boolean (value); if (button->is_configured != is_configured) @@ -329,6 +355,9 @@ static void xfce_volume_button_get_property (GObject *object, switch (prop_id) { + case PROP_TRACK_LABEL: + g_value_set_string (value, button->track_label); + break; case PROP_IS_CONFIGURED: g_value_set_boolean (value, button->is_configured); break; @@ -497,6 +526,7 @@ xfce_volume_button_update (XfceVolumeButton *button) gdouble value; gdouble range; guint i; + gchar *tip_text; g_return_if_fail (IS_XFCE_VOLUME_BUTTON (button)); @@ -525,6 +555,17 @@ xfce_volume_button_update (XfceVolumeButton *button) /* Update the button icon */ if (G_LIKELY (pixbuf != NULL)) xfce_panel_image_set_from_pixbuf (XFCE_PANEL_IMAGE (button->image), pixbuf); + + /* Update the tooltip */ + if (!button->is_configured) + gtk_widget_set_tooltip_text (GTK_WIDGET (button), _("No valid device and/or element.")); + else + { + /* Set tooltip (e.g. 'Master: 50%') */ + tip_text = g_strdup_printf (_("%s: %i%%"), button->track_label, (gint) value); + gtk_widget_set_tooltip_text (GTK_WIDGET (button), tip_text); + g_free (tip_text); + } } @@ -621,6 +662,36 @@ xfce_volume_button_mute_toggled (XfceVolumeButton *button, void +xfce_volume_button_set_track_label (XfceVolumeButton *button, + const gchar *track_label) +{ + GValue value = G_VALUE_INIT; + + g_return_if_fail (IS_XFCE_VOLUME_BUTTON (button)); + + g_value_init (&value, G_TYPE_STRING); + g_value_set_string (&value, track_label); + g_object_set_property (G_OBJECT (button), "track-label", &value); +} + + + +gchar* +xfce_volume_button_get_track_label (XfceVolumeButton *button) +{ + GValue value = G_VALUE_INIT; + + g_return_val_if_fail (IS_XFCE_VOLUME_BUTTON (button), NULL); + + g_value_init (&value, G_TYPE_STRING); + g_object_get_property (G_OBJECT (button), "track-label", &value); + + return g_value_dup_string (&value); +} + + + +void xfce_volume_button_set_is_configured (XfceVolumeButton *button, gboolean is_configured) { @@ -635,6 +706,7 @@ xfce_volume_button_set_is_configured (XfceVolumeButton *button, + gboolean xfce_volume_button_get_is_configured (XfceVolumeButton *button) { diff --git a/panel-plugin/xfce-volume-button.h b/panel-plugin/xfce-volume-button.h index a92f0e7..eb10f6e 100644 --- a/panel-plugin/xfce-volume-button.h +++ b/panel-plugin/xfce-volume-button.h @@ -47,6 +47,9 @@ void xfce_volume_button_set_volume (XfceVolumeButton *button, void xfce_volume_button_update (XfceVolumeButton *button); void xfce_volume_button_set_icon_size (XfceVolumeButton *button, gint size); +void xfce_volume_button_set_track_label (XfceVolumeButton *button, + const gchar *track_label); +gchar *xfce_volume_button_get_track_label (XfceVolumeButton *button); void xfce_volume_button_set_is_configured (XfceVolumeButton *button, gboolean is_configured); gboolean xfce_volume_button_get_is_configured (XfceVolumeButton *button); _______________________________________________ Xfce4-commits mailing list Xfce4-commits@xfce.org https://mail.xfce.org/mailman/listinfo/xfce4-commits