diff options
author | Robert Manea <gotmor@gmail.com> | 2009-09-21 13:07:50 +0200 |
---|---|---|
committer | Robert Manea <gotmor@gmail.com> | 2009-09-21 13:07:50 +0200 |
commit | 327db778f3a5446d57969bb6ce1e038799aa86aa (patch) | |
tree | f2cc4e58e39131d84413844de38f478c92a63c68 | |
parent | 981c4be85cccf20337fc26bf83f0c2d1b5950b3f (diff) |
added LINK_UNHOVER event
-rw-r--r-- | uzbl-core.c | 34 | ||||
-rw-r--r-- | uzbl-core.h | 2 |
2 files changed, 28 insertions, 8 deletions
diff --git a/uzbl-core.c b/uzbl-core.c index 71bca80..c52b759 100644 --- a/uzbl-core.c +++ b/uzbl-core.c @@ -214,7 +214,8 @@ const char *event_table[LAST_EVENT] = { "SOCKET_SET" , "INSTANCE_START" , "INSTANCE_EXIT" , - "LOAD_PROGRESS" + "LOAD_PROGRESS" , + "LINK_UNHOVER" }; @@ -831,16 +832,33 @@ link_hover_cb (WebKitWebView* page, const gchar* title, const gchar* link, gpoin (void) page; (void) title; (void) data; - //Set selected_url state variable - g_free(uzbl.state.selected_url); - uzbl.state.selected_url = NULL; + State *s = &uzbl.state; + + if(s->selected_url) { + if(s->last_selected_url) + g_free(s->last_selected_url); + s->last_selected_url = g_strdup(s->selected_url); + } + else { + if(s->last_selected_url) g_free(s->last_selected_url); + s->last_selected_url = NULL; + } + + g_free(s->selected_url); + s->selected_url = NULL; if (link) { - uzbl.state.selected_url = g_strdup(link); - send_event(LINK_HOVER, uzbl.state.selected_url, NULL); + s->selected_url = g_strdup(link); + + if(s->last_selected_url && + g_strcmp0(s->selected_url, s->last_selected_url)) + send_event(LINK_UNHOVER, s->last_selected_url, NULL); + + send_event(LINK_HOVER, s->selected_url, NULL); + } + else if(s->last_selected_url) { + send_event(LINK_UNHOVER, s->last_selected_url, NULL); } - else - send_event(LINK_HOVER, "", NULL); update_title(); } diff --git a/uzbl-core.h b/uzbl-core.h index b7db61d..d3ea143 100644 --- a/uzbl-core.h +++ b/uzbl-core.h @@ -66,6 +66,7 @@ typedef struct { int socket_id; char *instance_name; gchar *selected_url; + gchar *last_selected_url; gchar *executable_path; gchar* keycmd; gchar* searchtx; @@ -188,6 +189,7 @@ enum event_type { WEBINSPECTOR, NEW_WINDOW, SELECTION_CHANGED, VARIABLE_SET, FIFO_SET, SOCKET_SET, INSTANCE_START, INSTANCE_EXIT, LOAD_PROGRESS, + LINK_UNHOVER, /* must be last entry */ LAST_EVENT |