using geturi() where possible.
[surf.git] / surf.c
diff --git a/surf.c b/surf.c
index 53cbff2..6cc29c4 100644 (file)
--- a/surf.c
+++ b/surf.c
@@ -61,7 +61,7 @@ static SoupSession *session;
 static Client *clients = NULL;
 static GdkNativeWindow embed = 0;
 static gboolean showxid = FALSE;
-static gboolean ignore_once = FALSE;
+static int ignorexprop = 0;
 static char winid[64];
 static char *progname;
 static gboolean lockcookie = FALSE;
@@ -79,6 +79,7 @@ static void die(char *str);
 static void download(WebKitDownload *o, GParamSpec *pspec, Client *c);
 static void drawindicator(Client *c);
 static gboolean exposeindicator(GtkWidget *w, GdkEventExpose *e, Client *c);
+static char *geturi(Client *c);
 static const char *getatom(Client *c, Atom a);
 static gboolean initdownload(WebKitWebView *v, WebKitDownload *o, Client *c);
 static void itemclick(GtkMenuItem *mi, Client *c);
@@ -175,7 +176,7 @@ clipboard(Client *c, const Arg *arg) {
        if(paste)
                gtk_clipboard_request_text(gtk_clipboard_get(GDK_SELECTION_PRIMARY), pasteuri, c);
        else
-               gtk_clipboard_set_text(gtk_clipboard_get(GDK_SELECTION_PRIMARY), webkit_web_view_get_uri(c->view), -1);
+               gtk_clipboard_set_text(gtk_clipboard_get(GDK_SELECTION_PRIMARY), geturi(c), -1);
 }
 
 void
@@ -233,6 +234,7 @@ destroyclient(Client *c) {
 gboolean
 decidewindow(WebKitWebView *view, WebKitWebFrame *f, WebKitNetworkRequest *r, WebKitWebNavigationAction *n, WebKitWebPolicyDecision *p, Client *c) {
        Arg arg;
+
        if(webkit_web_navigation_action_get_reason(n) == WEBKIT_WEB_NAVIGATION_REASON_LINK_CLICKED) {
                webkit_web_policy_decision_ignore(p);
                arg.v = (void *)webkit_network_request_get_uri(r);
@@ -387,7 +389,7 @@ linkhover(WebKitWebView *v, const char* t, const char* l, Client *c) {
 
 void
 loadcommit(WebKitWebView *view, WebKitWebFrame *f, Client *c) {
-       setatom(c, uriprop, webkit_web_view_get_uri(c->view));
+       setatom(c, uriprop, geturi(c));
        reloadcookies();
 }
 
@@ -558,8 +560,8 @@ processx(GdkXEvent *e, GdkEvent *event, gpointer d) {
 
        if(((XEvent *)e)->type == PropertyNotify) {
                ev = &((XEvent *)e)->xproperty;
-               if(ignore_once)
-                       ignore_once = FALSE;
+               if(ignorexprop)
+                       ignorexprop--;
                else if(ev->state == PropertyNewValue) {
                        if(ev->atom == uriprop) {
                                arg.v = getatom(c, uriprop);
@@ -648,7 +650,7 @@ sigchld(int unused) {
 void
 setatom(Client *c, Atom a, const char *v) {
        XSync(dpy, False);
-       ignore_once = TRUE;
+       ignorexprop++;
        XChangeProperty(dpy, GDK_WINDOW_XID(GTK_WIDGET(c->win)->window), a,
                        XA_STRING, 8, PropModeReplace, (unsigned char *)v,
                        strlen(v) + 1);