[Xfce4-commits] <xfce4-mpc-plugin:master> Fix case when connecting to another server and #output changed
Landry Breuil
noreply at xfce.org
Sun May 16 12:18:01 CEST 2010
Updating branch refs/heads/master
to 1b39937e01d1b978ee05a47f96f4af1a09c36ad4 (commit)
from c7c6783f05344cf875b3ebce0d488a407bf1b2e4 (commit)
commit 1b39937e01d1b978ee05a47f96f4af1a09c36ad4
Author: Landry Breuil <landry at xfce.org>
Date: Sun May 16 12:10:50 2010 +0200
Fix case when connecting to another server and #output changed
add a ugly hack to be sure checkitems are always appended
to the menu at the same position,
panel-plugin/xfce4-mpc-plugin.c | 11 +++++++----
1 files changed, 7 insertions(+), 4 deletions(-)
diff --git a/panel-plugin/xfce4-mpc-plugin.c b/panel-plugin/xfce4-mpc-plugin.c
index 9a40a5b..2dff48a 100644
--- a/panel-plugin/xfce4-mpc-plugin.c
+++ b/panel-plugin/xfce4-mpc-plugin.c
@@ -364,7 +364,8 @@ static void
mpc_update_outputs(t_mpc* mpc)
{
DBG("!");
- int i,j=0;
+ GtkWidget* menu;
+ int i,j=0, old_nb_outputs = mpc->nb_outputs;
MpdData * data = mpd_server_get_output_devices(mpc->mo);
do {
DBG("got output %d with name %s, enabled=%d",data->output_dev->id,data->output_dev->name,data->output_dev->enabled);
@@ -376,6 +377,9 @@ mpc_update_outputs(t_mpc* mpc)
GtkWidget* chkitem = gtk_check_menu_item_new_with_label (data->output_dev->name);
g_signal_connect (G_OBJECT(chkitem), "toggled", G_CALLBACK (mpc_output_toggled), mpc);
xfce_panel_plugin_menu_insert_item(mpc->plugin,GTK_MENU_ITEM(chkitem));
+ /* XXX HACK */
+ menu = g_object_get_data (G_OBJECT (mpc->plugin), I_("xfce-panel-plugin-menu"));
+ gtk_menu_reorder_child(GTK_MENU(menu),chkitem, 12 + i); /* 12 is after 'Outputs' menuitem */
gtk_widget_show (chkitem);
mpc->mpd_outputs[i] = g_new(t_mpd_output,1);
mpc->mpd_outputs[i]->id = data->output_dev->id;
@@ -387,9 +391,8 @@ mpc_update_outputs(t_mpc* mpc)
j++;
} while (NULL != (data = mpd_data_get_next (data)));
/* something changed, better prune the list and recreate it */
- /* TODO: test this codepath */
- if (j != mpc->nb_outputs) {
- DBG("didnt found same amount of outputs (was %d got %d), resetting output list", mpc->nb_outputs, j);
+ if (j != mpc->nb_outputs || (old_nb_outputs && j != old_nb_outputs)) {
+ DBG("didnt found same amount of outputs (was %d got %d), resetting output list", (old_nb_outputs ? old_nb_outputs : mpc->nb_outputs), j);
for (i = 0; i < mpc->nb_outputs ; i++) {
gtk_widget_destroy(mpc->mpd_outputs[i]->menuitem);
g_free(mpc->mpd_outputs[i]);
More information about the Xfce4-commits
mailing list