aboutsummaryrefslogtreecommitdiffhomepage
path: root/uzbl-core.c
diff options
context:
space:
mode:
authorGravatar Robert Manea <gotmor@gmail.com>2009-09-21 13:07:50 +0200
committerGravatar Robert Manea <gotmor@gmail.com>2009-09-21 13:07:50 +0200
commit327db778f3a5446d57969bb6ce1e038799aa86aa (patch)
treef2cc4e58e39131d84413844de38f478c92a63c68 /uzbl-core.c
parent981c4be85cccf20337fc26bf83f0c2d1b5950b3f (diff)
added LINK_UNHOVER event
Diffstat (limited to 'uzbl-core.c')
-rw-r--r--uzbl-core.c34
1 files changed, 26 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();
}