Introduction
Introduction Statistics Contact Development Disclaimer Help
tReplace linkhover() with mousetargetchanged() - surf - customized build of sur…
git clone git://src.adamsgaard.dk/surf
Log
Files
Refs
README
LICENSE
---
commit 42c6c90366b7ce7708b13037a6ba819b08fbb20e
parent b9530ad5d1cd29e176c9f16b92f1983993b22049
Author: Quentin Rameau <[email protected]>
Date: Wed, 18 Nov 2015 17:59:50 +0100
Replace linkhover() with mousetargetchanged()
The “linkhover” can now be more than a simple link (image, video, etc.).
As we can't anymore perform a hit test when we want, we have to keep the
last known hit test to be able to know where the mouse is on the next
click event.
Diffstat:
M surf.c | 35 ++++++++++++++++++++---------…
1 file changed, 23 insertions(+), 12 deletions(-)
---
diff --git a/surf.c b/surf.c
t@@ -59,7 +59,8 @@ typedef struct Client {
Window xid;
WebKitWebView *view;
WebKitWebInspector *inspector;
- const char *title, *linkhover;
+ WebKitHitTestResult *mousepos;
+ const char *title, *targeturi;
const char *needle;
gint progress;
struct Client *next;
t@@ -151,8 +152,8 @@ static void inspector_finished(WebKitWebInspector *i, Clie…
static gboolean keypress(GtkAccelGroup *group, GObject *obj, guint key,
GdkModifierType mods, Client *c);
-static void linkhover(WebKitWebView *v, const char* t, const char* l,
- Client *c);
+static void mousetargetchanged(WebKitWebView *v, WebKitHitTestResult *h,
+ guint modifiers, Client *c);
static void loadstatuschange(WebKitWebView *view, GParamSpec *pspec,
Client *c);
static void loaduri(Client *c, const Arg *arg);
t@@ -691,14 +692,24 @@ keypress(GtkAccelGroup *group, GObject *obj, guint key, …
}
void
-linkhover(WebKitWebView *v, const char* t, const char* l, Client *c)
+mousetargetchanged(WebKitWebView *v, WebKitHitTestResult *h, guint modifiers,
+ Client *c)
{
- if (l) {
- c->linkhover = copystr(&c->linkhover, l);
- } else if (c->linkhover) {
- free(c->linkhover);
- c->linkhover = NULL;
- }
+ WebKitHitTestResultContext hc;
+
+ /* Keep the hit test to know where is the pointer on the next click */
+ c->mousepos = h;
+
+ hc = webkit_hit_test_result_get_context(h);
+
+ if (hc & OnLink)
+ c->targeturi = webkit_hit_test_result_get_link_uri(h);
+ else if (hc & OnImg)
+ c->targeturi = webkit_hit_test_result_get_image_uri(h);
+ else if (hc & OnMedia)
+ c->targeturi = webkit_hit_test_result_get_media_uri(h);
+ else
+ c->targeturi = NULL;
updatetitle(c);
}
t@@ -869,8 +880,8 @@ newview(Client *c, WebKitWebView *rv)
"notify::title",
G_CALLBACK(titlechanged), c);
g_signal_connect(G_OBJECT(v),
- "hovering-over-link",
- G_CALLBACK(linkhover), c);
+ "mouse-target-changed",
+ G_CALLBACK(mousetargetchanged), c);
g_signal_connect(G_OBJECT(v),
"geolocation-policy-decision-requested",
G_CALLBACK(geopolicyrequested), c);
You are viewing proxied material from mx1.adamsgaard.dk. The copyright of proxied material belongs to its original authors. Any comments or complaints in relation to proxied material should be directed to the original authors of the content concerned. Please see the disclaimer for more details.