[epiphany] Show a speaker icon in tabs that are playing audio
- From: Carlos Garcia Campos <carlosgc src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [epiphany] Show a speaker icon in tabs that are playing audio
- Date: Tue, 3 Feb 2015 14:25:12 +0000 (UTC)
commit 479aa391775468d7ec358d623e82bb8c92230a47
Author: Carlos Garcia Campos <cgarcia igalia com>
Date: Thu Jan 22 14:14:39 2015 +0100
Show a speaker icon in tabs that are playing audio
https://bugzilla.gnome.org/show_bug.cgi?id=743264
configure.ac | 2 +-
src/ephy-notebook.c | 24 ++++++++++++++++++++++--
2 files changed, 23 insertions(+), 3 deletions(-)
---
diff --git a/configure.ac b/configure.ac
index a72b288..a74c21d 100644
--- a/configure.ac
+++ b/configure.ac
@@ -69,7 +69,7 @@ GLIB_REQUIRED=2.38.0
GTK_REQUIRED=3.13.0
LIBXML_REQUIRED=2.6.12
LIBXSLT_REQUIRED=1.1.7
-WEBKIT_GTK_REQUIRED=2.7.3
+WEBKIT_GTK_REQUIRED=2.7.4
LIBSOUP_REQUIRED=2.48.0
GNOME_DESKTOP_REQUIRED=2.91.2
LIBSECRET_REQUIRED=0.14
diff --git a/src/ephy-notebook.c b/src/ephy-notebook.c
index 2643522..4a08341 100644
--- a/src/ephy-notebook.c
+++ b/src/ephy-notebook.c
@@ -513,6 +513,14 @@ sync_label (EphyEmbed *embed, GParamSpec *pspec, GtkWidget *label)
}
static void
+sync_is_playing_audio (WebKitWebView *view,
+ GParamSpec *pspec,
+ GtkWidget *speaker_icon)
+{
+ gtk_widget_set_visible (speaker_icon, webkit_web_view_is_playing_audio (view));
+}
+
+static void
close_button_clicked_cb (GtkWidget *widget, GtkWidget *tab)
{
GtkWidget *notebook;
@@ -557,7 +565,7 @@ tab_label_style_set_cb (GtkWidget *hbox,
static GtkWidget *
build_tab_label (EphyNotebook *nb, EphyEmbed *embed)
{
- GtkWidget *hbox, *label, *close_button, *image, *spinner, *icon;
+ GtkWidget *hbox, *label, *close_button, *image, *spinner, *icon, *speaker_icon;
GtkWidget *box;
EphyWebView *view;
@@ -588,6 +596,11 @@ build_tab_label (EphyNotebook *nb, EphyEmbed *embed)
gtk_box_pack_start (GTK_BOX (hbox), label, FALSE, FALSE, 0);
gtk_widget_show (label);
+ /* setup speaker icon */
+ speaker_icon = gtk_image_new_from_icon_name ("audio-volume-high-symbolic",
+ GTK_ICON_SIZE_MENU);
+ gtk_box_pack_start (GTK_BOX (hbox), speaker_icon, FALSE, FALSE, 0);
+
/* setup close button */
close_button = gtk_button_new ();
gtk_button_set_relief (GTK_BUTTON (close_button),
@@ -625,12 +638,14 @@ build_tab_label (EphyNotebook *nb, EphyEmbed *embed)
g_object_set_data (G_OBJECT (box), "spinner", spinner);
g_object_set_data (G_OBJECT (box), "icon", icon);
g_object_set_data (G_OBJECT (box), "close-button", close_button);
+ g_object_set_data (G_OBJECT (box), "speaker-icon", speaker_icon);
/* Hook the label up to the tab properties */
view = ephy_embed_get_web_view (embed);
sync_icon (view, NULL, GTK_IMAGE (icon));
sync_label (embed, NULL, label);
sync_load_status (view, NULL, box);
+ sync_is_playing_audio (WEBKIT_WEB_VIEW (view), NULL, speaker_icon);
g_signal_connect_object (view, "notify::icon",
G_CALLBACK (sync_icon), icon, 0);
@@ -638,6 +653,8 @@ build_tab_label (EphyNotebook *nb, EphyEmbed *embed)
G_CALLBACK (sync_label), label, 0);
g_signal_connect_object (view, "load-changed",
G_CALLBACK (load_changed_cb), box, 0);
+ g_signal_connect_object (view, "notify::is-playing-audio",
+ G_CALLBACK (sync_is_playing_audio), speaker_icon, 0);
return box;
}
@@ -759,7 +776,7 @@ ephy_notebook_remove (GtkContainer *container,
GtkNotebook *gnotebook = GTK_NOTEBOOK (container);
EphyNotebook *notebook = EPHY_NOTEBOOK (container);
EphyNotebookPrivate *priv = notebook->priv;
- GtkWidget *tab_label, *tab_label_label, *tab_label_icon;
+ GtkWidget *tab_label, *tab_label_label, *tab_label_icon, *tab_label_speaker_icon;
int position, curr;
EphyWebView *view;
@@ -781,6 +798,7 @@ ephy_notebook_remove (GtkContainer *container,
tab_label = gtk_notebook_get_tab_label (gnotebook, tab_widget);
tab_label_icon = g_object_get_data (G_OBJECT (tab_label), "icon");
tab_label_label = g_object_get_data (G_OBJECT (tab_label), "label");
+ tab_label_speaker_icon = g_object_get_data (G_OBJECT (tab_label), "speaker-icon");
view = ephy_embed_get_web_view (EPHY_EMBED (tab_widget));
@@ -790,6 +808,8 @@ ephy_notebook_remove (GtkContainer *container,
(tab_widget, G_CALLBACK (sync_label), tab_label_label);
g_signal_handlers_disconnect_by_func
(view, G_CALLBACK (sync_load_status), tab_label);
+ g_signal_handlers_disconnect_by_func
+ (view, G_CALLBACK (sync_is_playing_audio), tab_label_speaker_icon);
GTK_CONTAINER_CLASS (ephy_notebook_parent_class)->remove (container, tab_widget);
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]