From 8a45b203ea69b9e46c55ab32c749bbbc9b840200 Mon Sep 17 00:00:00 2001 From: Peter Hofmann Date: Sat, 14 Jun 2014 16:09:34 +0200 Subject: Show link in a status bar --- zea.c | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) diff --git a/zea.c b/zea.c index a2f18ba..23cf53b 100644 --- a/zea.c +++ b/zea.c @@ -24,6 +24,7 @@ static gboolean zea_new_client_request(WebKitWebView *, WebKitWebFrame *, static void zea_title_changed(GObject *, GParamSpec *, gpointer); static void zea_uri_changed(GObject *, GParamSpec *, gpointer); static void zea_scroll(GtkAdjustment *, gint, gdouble); +static void zea_web_view_hover(WebKitWebView *, gchar *, gchar *, gpointer); static gboolean zea_web_view_key(GtkWidget *, GdkEvent *, gpointer); @@ -37,6 +38,7 @@ struct Client GtkWidget *win; GtkWidget *vbox; GtkWidget *location; + GtkWidget *status; GtkWidget *scroll; GtkWidget *web_view; }; @@ -182,6 +184,8 @@ zea_new_client(const gchar *uri) G_CALLBACK(zea_do_download), NULL); g_signal_connect(G_OBJECT(c->web_view), "key-press-event", G_CALLBACK(zea_web_view_key), c); + g_signal_connect(G_OBJECT(c->web_view), "hovering-over-link", + G_CALLBACK(zea_web_view_hover), c); c->scroll = gtk_scrolled_window_new(NULL, NULL); @@ -191,9 +195,12 @@ zea_new_client(const gchar *uri) g_signal_connect(G_OBJECT(c->location), "key-press-event", G_CALLBACK(zea_location_key), c); + c->status = gtk_statusbar_new(); + c->vbox = gtk_vbox_new(FALSE, 0); gtk_box_pack_start(GTK_BOX(c->vbox), c->location, FALSE, FALSE, 0); gtk_container_add(GTK_CONTAINER(c->vbox), c->scroll); + gtk_box_pack_end(GTK_BOX(c->vbox), c->status, FALSE, FALSE, 0); gtk_container_add(GTK_CONTAINER(c->win), c->vbox); @@ -265,6 +272,20 @@ zea_scroll(GtkAdjustment *a, gint step_type, gdouble factor) gtk_adjustment_set_value(a, new); } +void +zea_web_view_hover(WebKitWebView *web_view, gchar *title, gchar *uri, + gpointer data) +{ + struct Client *c = (struct Client *)data; + + (void)web_view; + (void)title; + + gtk_statusbar_pop(GTK_STATUSBAR(c->status), 0); + if (uri != NULL) + gtk_statusbar_push(GTK_STATUSBAR(c->status), 0, uri); +} + gboolean zea_web_view_key(GtkWidget *widget, GdkEvent *event, gpointer data) { -- cgit v1.2.3