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;
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);
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), c->linkhover ? c->linkhover : geturi(c), -1);
}
void
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);
void
loadcommit(WebKitWebView *view, WebKitWebFrame *f, Client *c) {
- setatom(c, uriprop, webkit_web_view_get_uri(c->view));
- reloadcookies();
+ setatom(c, uriprop, geturi(c));
}
void
loadstart(WebKitWebView *view, WebKitWebFrame *f, Client *c) {
c->progress = 0;
update(c);
+ reloadcookies();
}
void
int i;
Client *c;
WebKitWebSettings *settings;
+ GdkGeometry hints = { 1, 1 };
char *uri;
if(!(c = calloc(1, sizeof(Client))))
gtk_widget_show(c->scroll);
gtk_widget_show(GTK_WIDGET(c->view));
gtk_widget_show(c->win);
+ gtk_window_set_geometry_hints(GTK_WINDOW(c->win), NULL, &hints, GDK_HINT_MIN_SIZE);
gdk_window_set_events(GTK_WIDGET(c->win)->window, GDK_ALL_EVENTS_MASK);
gdk_window_add_filter(GTK_WIDGET(c->win)->window, processx, c);
webkit_web_view_set_full_content_zoom(c->view, TRUE);
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);
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);