+2007-10-02 Cosimo Cecchi <cosimoc@svn.gnome.org>
+
+ Reviewed by Mark.
+
+ http://bugs.webkit.org/show_bug.cgi?id=15299
+ Fix "hovering_over_link" signal being fired every time mouse moves.
+
+ * WebCoreSupport/ChromeClientGtk.cpp:
+ (WebKit::ChromeClient::ChromeClient):
+ (WebKit::ChromeClient::mouseDidMoveOverElement):
+ * WebCoreSupport/ChromeClientGtk.h:
+
2007-09-21 Sean Egan <seanegan@gmail.com>
Reviewed by Alp.
namespace WebKit {
ChromeClient::ChromeClient(WebKitGtkPage* page)
: m_webPage(page)
+ , m_didSendLinkSignal(false)
{
}
void ChromeClient::mouseDidMoveOverElement(const HitTestResult& hit, unsigned modifierFlags)
{
// check if the element is a link...
- KURL url = hit.absoluteLinkURL();
- if(!url.isEmpty()) {
- CString titleString = hit.title().utf8();
- DeprecatedCString urlString = url.prettyURL().utf8();
- g_signal_emit_by_name(m_webPage, "hovering_over_link", titleString.data(), urlString.data());
- } else
+ bool isLink = hit.isLiveLink();
+ if (isLink && !m_didSendLinkSignal) {
+ KURL url = hit.absoluteLinkURL();
+ if (!url.isEmpty()) {
+ CString titleString = hit.title().utf8();
+ DeprecatedCString urlString = url.prettyURL().utf8();
+ g_signal_emit_by_name(m_webPage, "hovering_over_link", titleString.data(), urlString.data());
+ m_didSendLinkSignal = true;
+ }
+ } else if (!isLink && m_didSendLinkSignal) {
g_signal_emit_by_name(m_webPage, "hovering_over_link", 0, 0);
+ m_didSendLinkSignal = false;
+ }
}
void ChromeClient::setToolTip(const String&)