diff options
badwolf.c: Add playing icon on tabs
1 files changed, 39 insertions, 7 deletions
| -rw-r--r-- | badwolf.c | 46 |
@@ -37,6 +37,9 @@ static gboolean WebViewCb_notify__uri(WebKitWebView *webView, GParamSpec *pspec, gpointer user_data); static gboolean WebViewCb_notify__title(WebKitWebView *webView, GParamSpec *pspec, gpointer user_data); +static gboolean +WebViewCb_notify__is__playing__audio(WebKitWebView *webView, GParamSpec *pspec, gpointer user_data); +void webView_tab_label_change(struct Client *browser); static gboolean WebViewCb_notify__estimated_load_progress(WebKitWebView *webView, GParamSpec *pspec, gpointer user_data); @@ -105,17 +108,24 @@ static gboolean WebViewCb_notify__uri(WebKitWebView *webView, GParamSpec *pspec, GtkWidget *badwolf_new_tab_box(const gchar *title, struct Client *browser) { (void)browser; - GtkWidget *label = gtk_label_new(title); + GtkWidget *tab_box = gtk_box_new(GTK_ORIENTATION_HORIZONTAL, 0); + GtkWidget *label = gtk_label_new(title); + GtkWidget *playing = + gtk_image_new_from_icon_name("media-playback-start-symbolic", GTK_ICON_SIZE_SMALL_TOOLBAR); gtk_label_set_width_chars(GTK_LABEL(label), 25); gtk_label_set_ellipsize(GTK_LABEL(label), PANGO_ELLIPSIZE_MIDDLE); gtk_label_set_single_line_mode(GTK_LABEL(label), TRUE); - gtk_widget_set_tooltip_text(label, title); + gtk_box_pack_start(GTK_BOX(tab_box), playing, FALSE, FALSE, 0); + gtk_box_pack_start(GTK_BOX(tab_box), label, TRUE, TRUE, 0); + + gtk_widget_set_tooltip_text(tab_box, title); - gtk_widget_show_all(label); + gtk_widget_show_all(tab_box); + gtk_widget_set_visible(playing, webkit_web_view_is_playing_audio(browser->webView)); - return label; + return tab_box; } static gboolean @@ -123,9 +133,29 @@ WebViewCb_notify__title(WebKitWebView *webView, GParamSpec *pspec, gpointer user { (void)webView; (void)pspec; - const gchar *title; struct Client *browser = (struct Client *)user_data; + webView_tab_label_change(browser); + + return TRUE; +} + +static gboolean +WebViewCb_notify__is__playing__audio(WebKitWebView *webView, GParamSpec *pspec, gpointer user_data) +{ + (void)webView; + (void)pspec; + struct Client *browser = (struct Client *)user_data; + + webView_tab_label_change(browser); + + return TRUE; +} + +void webView_tab_label_change(struct Client *browser) +{ + const gchar *title; + title = webkit_web_view_get_title(browser->webView); if(title == NULL) title = webkit_web_view_get_uri(browser->webView); @@ -134,8 +164,6 @@ WebViewCb_notify__title(WebKitWebView *webView, GParamSpec *pspec, gpointer user gtk_notebook_set_tab_label( GTK_NOTEBOOK(browser->window->notebook), browser->box, badwolf_new_tab_box(title, browser)); - - return TRUE; } static gboolean WebViewCb_notify__estimated_load_progress(WebKitWebView *webView, @@ -328,6 +356,10 @@ new_browser(struct Window *window, gchar *target_url, WebKitWebView *related_web g_signal_connect(browser->webView, "notify::uri", G_CALLBACK(WebViewCb_notify__uri), browser); g_signal_connect(browser->webView, "notify::title", G_CALLBACK(WebViewCb_notify__title), browser); g_signal_connect(browser->webView, + "notify::is-playing-audio", + G_CALLBACK(WebViewCb_notify__is__playing__audio), + browser); + g_signal_connect(browser->webView, "mouse-target-changed", G_CALLBACK(WebViewCb_mouse_target_changed), browser); |