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 /uzbl-core.c | |
parent | 981c4be85cccf20337fc26bf83f0c2d1b5950b3f (diff) |
added LINK_UNHOVER event
Diffstat (limited to 'uzbl-core.c')
-rw-r--r-- | uzbl-core.c | 34 |
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(); } |