pidgin/gtkmedia.c

changeset 38590
2a46ccba53cb
parent 38589
94c055910a4b
child 38929
159404505264
--- a/pidgin/gtkmedia.c	Mon Jul 10 18:50:02 2017 -0500
+++ b/pidgin/gtkmedia.c	Mon Jul 10 20:09:13 2017 -0500
@@ -201,30 +201,45 @@
 }
 
 static void
-pidgin_media_hold_toggled(GtkToggleButton *toggle, PidginMedia *media)
+pidgin_media_hold_change_state_cb(GSimpleAction *action, GVariant *value,
+		gpointer user_data)
 {
+	PidginMedia *media = PIDGIN_MEDIA(user_data);
+
 	purple_media_stream_info(media->priv->media,
-			gtk_toggle_button_get_active(toggle) ?
+			g_variant_get_boolean(value) ?
 			PURPLE_MEDIA_INFO_HOLD : PURPLE_MEDIA_INFO_UNHOLD,
 			NULL, NULL, TRUE);
+
+	g_simple_action_set_state(action, value);
 }
 
 static void
-pidgin_media_mute_toggled(GtkToggleButton *toggle, PidginMedia *media)
+pidgin_media_mute_change_state_cb(GSimpleAction *action, GVariant *value,
+		gpointer user_data)
 {
+	PidginMedia *media = PIDGIN_MEDIA(user_data);
+
 	purple_media_stream_info(media->priv->media,
-			gtk_toggle_button_get_active(toggle) ?
+			g_variant_get_boolean(value) ?
 			PURPLE_MEDIA_INFO_MUTE : PURPLE_MEDIA_INFO_UNMUTE,
 			NULL, NULL, TRUE);
+
+	g_simple_action_set_state(action, value);
 }
 
 static void
-pidgin_media_pause_toggled(GtkToggleButton *toggle, PidginMedia *media)
+pidgin_media_pause_change_state_cb(GSimpleAction *action, GVariant *value,
+		gpointer user_data)
 {
+	PidginMedia *media = PIDGIN_MEDIA(user_data);
+
 	purple_media_stream_info(media->priv->media,
-			gtk_toggle_button_get_active(toggle) ?
+			g_variant_get_boolean(value) ?
 			PURPLE_MEDIA_INFO_PAUSE : PURPLE_MEDIA_INFO_UNPAUSE,
 			NULL, NULL, TRUE);
+
+	g_simple_action_set_state(action, value);
 }
 
 static gboolean
@@ -275,6 +290,9 @@
 
 static const GActionEntry media_action_entries[] = {
 	{ "Hangup", pidgin_media_hangup_activate_cb },
+	{ "Hold", NULL, NULL, "false", pidgin_media_hold_change_state_cb },
+	{ "Mute", NULL, NULL, "false", pidgin_media_mute_change_state_cb },
+	{ "Pause", NULL, NULL, "false", pidgin_media_pause_change_state_cb },
 };
 
 static const gchar *media_menu = 
@@ -925,9 +943,9 @@
 		gtk_box_pack_end(GTK_BOX(button_widget), gtkmedia->priv->hold,
 				FALSE, FALSE, 0);
 		gtk_widget_show(gtkmedia->priv->hold);
-		g_signal_connect(gtkmedia->priv->hold, "toggled",
-				G_CALLBACK(pidgin_media_hold_toggled),
-				gtkmedia);
+		gtk_actionable_set_action_name(
+				GTK_ACTIONABLE(gtkmedia->priv->hold),
+				"win.Hold");
 	} else {
 		send_widget = gtkmedia->priv->send_widget;
 		button_widget = gtkmedia->priv->button_widget;
@@ -992,9 +1010,9 @@
 		gtk_box_pack_end(GTK_BOX(button_widget), gtkmedia->priv->pause,
 				FALSE, FALSE, 0);
 		gtk_widget_show(gtkmedia->priv->pause);
-		g_signal_connect(gtkmedia->priv->pause, "toggled",
-				G_CALLBACK(pidgin_media_pause_toggled),
-				gtkmedia);
+		gtk_actionable_set_action_name(
+				GTK_ACTIONABLE(gtkmedia->priv->pause),
+				"win.Pause");
 
 		gtkmedia->priv->local_video = local_video;
 	}
@@ -1010,9 +1028,9 @@
 		gtk_box_pack_end(GTK_BOX(button_widget), gtkmedia->priv->mute,
 				FALSE, FALSE, 0);
 		gtk_widget_show(gtkmedia->priv->mute);
-		g_signal_connect(gtkmedia->priv->mute, "toggled",
-				G_CALLBACK(pidgin_media_mute_toggled),
-				gtkmedia);
+		gtk_actionable_set_action_name(
+				GTK_ACTIONABLE(gtkmedia->priv->mute),
+				"win.Mute");
 
 		gtk_box_pack_end(GTK_BOX(recv_widget),
 				pidgin_media_add_audio_widget(gtkmedia,

mercurial