Save current uri in property for easier access.
authorDaniel Carl <danielcarl@gmx.de>
Thu, 5 Jun 2014 23:44:11 +0000 (01:44 +0200)
committerDaniel Carl <danielcarl@gmx.de>
Thu, 5 Jun 2014 23:44:11 +0000 (01:44 +0200)
src/main.c
src/main.h

index 72cb93e..46cb0ba 100644 (file)
@@ -53,6 +53,7 @@ static gboolean context_menu_cb(WebKitWebView *view, GtkWidget *menu,
 static void context_menu_cb(WebKitWebView *view, GtkMenu *menu, gpointer data);
 #endif
 static void context_menu_activate_cb(GtkMenuItem *item, gpointer data);
+static void uri_change_cb(WebKitWebView *view, GParamSpec param_spec);
 static void webview_progress_cb(WebKitWebView *view, GParamSpec *pspec);
 static void webview_download_progress_cb(WebKitWebView *view, GParamSpec *pspec);
 static void webview_load_status_cb(WebKitWebView *view, GParamSpec *pspec);
@@ -450,6 +451,13 @@ static void context_menu_activate_cb(GtkMenuItem *item, gpointer data)
 #endif
 }
 
+static void uri_change_cb(WebKitWebView *view, GParamSpec param_spec)
+{
+    g_free(vb.state.uri);
+    g_object_get(view, "uri", &vb.state.uri, NULL);
+    vb_update_urlbar(vb.state.uri);
+}
+
 static void webview_progress_cb(WebKitWebView *view, GParamSpec *pspec)
 {
     vb.state.progress = webkit_web_view_get_progress(view) * 100;
@@ -739,6 +747,7 @@ static void init_core(void)
     /* init some state variable */
     vb.state.enable_register = false;
     vb.state.enable_history  = false;
+    vb.state.uri             = g_strdup("");
 
     /* initialize the modes */
     mode_init();
@@ -844,6 +853,7 @@ static void setup_signals()
 #else
         "signal::populate-popup", G_CALLBACK(context_menu_cb), NULL,
 #endif
+        "signal::notify::uri", G_CALLBACK(uri_change_cb), NULL,
         "signal::notify::progress", G_CALLBACK(webview_progress_cb), NULL,
         "signal::notify::load-status", G_CALLBACK(webview_load_status_cb), NULL,
         "signal::button-release-event", G_CALLBACK(button_relase_cb), NULL,
index d9d061c..512bdea 100644 (file)
@@ -63,7 +63,7 @@
 #define TIMER_END
 #endif
 
-#define GET_URI() (webkit_web_view_get_uri(vb.gui.webview))
+#define GET_URI() (vb.state.uri)
 #define PRIMARY_CLIPBOARD() gtk_clipboard_get(GDK_SELECTION_PRIMARY)
 #define SECONDARY_CLIPBOARD() gtk_clipboard_get(GDK_NONE)
 
@@ -276,6 +276,7 @@ typedef struct {
 
 /* state */
 typedef struct {
+    char            *uri;
     guint           progress;
     StatusType      status_type;
     MessageType     input_type;