[gtk/active-media-controls: 2/3] mediacontrols: Add an active property
- From: Matthias Clasen <matthiasc src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gtk/active-media-controls: 2/3] mediacontrols: Add an active property
- Date: Tue, 28 Apr 2020 05:19:02 +0000 (UTC)
commit a3035b0397ee87cb0a5ecb3bb9494eefbb40b02a
Author: Matthias Clasen <mclasen redhat com>
Date: Tue Apr 28 01:16:18 2020 -0400
mediacontrols: Add an active property
Currently, this just forwards the volume buttons
active property. It will be used to prevent the
controls from being hidden while the user interacts
with them.
gtk/gtkmediacontrols.c | 28 ++++++++++++++++++++++++++++
1 file changed, 28 insertions(+)
---
diff --git a/gtk/gtkmediacontrols.c b/gtk/gtkmediacontrols.c
index 526c2fb380..3eed5e6bc9 100644
--- a/gtk/gtkmediacontrols.c
+++ b/gtk/gtkmediacontrols.c
@@ -51,12 +51,14 @@ struct _GtkMediaControls
GtkWidget *time_label;
GtkWidget *seek_scale;
GtkWidget *duration_label;
+ GtkWidget *volume_button;
};
enum
{
PROP_0,
PROP_MEDIA_STREAM,
+ PROP_ACTIVE,
N_PROPS
};
@@ -226,6 +228,14 @@ gtk_media_controls_get_property (GObject *object,
g_value_set_object (value, controls->stream);
break;
+ case PROP_ACTIVE:
+ {
+ gboolean active;
+ g_object_get (controls->volume_button, "active", &active, NULL);
+ g_value_set_boolean (value, active);
+ }
+ break;
+
default:
G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec);
break;
@@ -279,6 +289,13 @@ gtk_media_controls_class_init (GtkMediaControlsClass *klass)
GTK_TYPE_MEDIA_STREAM,
G_PARAM_READWRITE | G_PARAM_EXPLICIT_NOTIFY | G_PARAM_STATIC_STRINGS);
+ properties[PROP_ACTIVE] =
+ g_param_spec_boolean ("active",
+ P_("Active"),
+ P_("Active"),
+ FALSE,
+ G_PARAM_READABLE);
+
g_object_class_install_properties (gobject_class, N_PROPS, properties);
gtk_widget_class_set_template_from_resource (widget_class, "/org/gtk/libgtk/ui/gtkmediacontrols.ui");
@@ -290,6 +307,7 @@ gtk_media_controls_class_init (GtkMediaControlsClass *klass)
gtk_widget_class_bind_template_child (widget_class, GtkMediaControls, time_label);
gtk_widget_class_bind_template_child (widget_class, GtkMediaControls, seek_scale);
gtk_widget_class_bind_template_child (widget_class, GtkMediaControls, duration_label);
+ gtk_widget_class_bind_template_child (widget_class, GtkMediaControls, volume_button);
gtk_widget_class_bind_template_callback (widget_class, play_button_clicked);
gtk_widget_class_bind_template_callback (widget_class, time_adjustment_changed);
@@ -298,10 +316,20 @@ gtk_media_controls_class_init (GtkMediaControlsClass *klass)
gtk_widget_class_set_css_name (widget_class, I_("controls"));
}
+static void
+notify_active (GObject *object,
+ GParamSpec *pspec,
+ GObject *controls)
+{
+ g_object_notify (controls, "active");
+}
+
static void
gtk_media_controls_init (GtkMediaControls *controls)
{
gtk_widget_init_template (GTK_WIDGET (controls));
+ g_signal_connect (controls->volume_button, "notify::active",
+ G_CALLBACK (notify_active), controls);
}
/**
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]