Author: stippi Date: Fri Apr 2 22:37:42 2010 New Revision: 372 URL: http://mmlr.dyndns.org/changeset/372 Log: Doh! It's handleMousePressEvent(), handleMouseReleaseEvent(), but not handleMouseMoveEvent()! That one is semi-internal and mouseMoved() needs to be used instead. Suddenly the tooltip and link-hovered hooks in the ChromeClient are called. Finished the implementation for temporarily displaying the URLs for hovered links... Modified: webkit/trunk/WebKit/haiku/API/WebPage.cpp webkit/trunk/WebKit/haiku/API/WebPage.h webkit/trunk/WebKit/haiku/WebCoreSupport/ChromeClientHaiku.cpp Modified: webkit/trunk/WebKit/haiku/API/WebPage.cpp ============================================================================== --- webkit/trunk/WebKit/haiku/API/WebPage.cpp Fri Apr 2 21:46:52 2010 (r371) +++ webkit/trunk/WebKit/haiku/API/WebPage.cpp Fri Apr 2 22:37:42 2010 (r372) @@ -186,6 +186,7 @@ , fPage(0) , fLoadingProgress(100) , fStatusMessage() + , fDisplayedStatusMessage() , fPageVisible(true) , fPageDirty(false) , fToolbarsVisible(true) @@ -565,16 +566,12 @@ dispatchMessage(message); } -void BWebPage::setStatusText(const BString& text) -{ - BMessage message(SET_STATUS_TEXT); - message.AddString("text", text); - dispatchMessage(message); -} - void BWebPage::linkHovered(const BString& url, const BString& title, const BString& content) { -printf("BWebPage::linkHovered()\n"); + if (url.Length()) + setDisplayedStatusMessage(url); + else + setDisplayedStatusMessage(fStatusMessage); } /*static*/ void BWebPage::requestDownload(const WebCore::ResourceRequest& request, @@ -789,13 +786,27 @@ void BWebPage::setStatusMessage(const BString& statusMessage) { + if (fStatusMessage == statusMessage) + return; + fStatusMessage = statusMessage; + setDisplayedStatusMessage(statusMessage); +} + +void BWebPage::setDisplayedStatusMessage(const BString& statusMessage, bool force) +{ + if (fDisplayedStatusMessage == statusMessage && !force) + return; + + fDisplayedStatusMessage = statusMessage; + BMessage message(SET_STATUS_TEXT); message.AddString("text", statusMessage); dispatchMessage(message); } + // #pragma mark - private void BWebPage::MessageReceived(BMessage* message) @@ -1068,7 +1079,7 @@ break; case B_MOUSE_MOVED: default: - frame->eventHandler()->handleMouseMoveEvent(event); + frame->eventHandler()->mouseMoved(event); break; } } @@ -1183,7 +1194,7 @@ dispatchMessage(message); // Send loading progress and status text notifications setLoadingProgress(fLoadingProgress); - setStatusMessage(fStatusMessage); + setDisplayedStatusMessage(fStatusMessage, true); // TODO: Other notifications... } Modified: webkit/trunk/WebKit/haiku/API/WebPage.h ============================================================================== --- webkit/trunk/WebKit/haiku/API/WebPage.h Fri Apr 2 21:46:52 2010 (r371) +++ webkit/trunk/WebKit/haiku/API/WebPage.h Fri Apr 2 22:37:42 2010 (r372) @@ -164,7 +164,6 @@ void setResizable(bool); void closeWindow(); - void setStatusText(const BString&); void linkHovered(const BString&, const BString&, const BString&); friend class BWebDownload; @@ -186,6 +185,7 @@ void setLoadingProgress(float progress); void setStatusMessage(const BString& message); + void setDisplayedStatusMessage(const BString& message, bool force = false); private: virtual ~BWebPage(); @@ -221,6 +221,7 @@ float fLoadingProgress; BString fStatusMessage; + BString fDisplayedStatusMessage; bool fPageVisible; bool fPageDirty; Modified: webkit/trunk/WebKit/haiku/WebCoreSupport/ChromeClientHaiku.cpp ============================================================================== --- webkit/trunk/WebKit/haiku/WebCoreSupport/ChromeClientHaiku.cpp Fri Apr 2 21:46:52 2010 (r371) +++ webkit/trunk/WebKit/haiku/WebCoreSupport/ChromeClientHaiku.cpp Fri Apr 2 22:37:42 2010 (r372) @@ -269,7 +269,7 @@ void ChromeClientHaiku::setStatusbarText(const String& message) { - m_webPage->setStatusText(BString(message)); + m_webPage->setStatusMessage(BString(message)); } bool ChromeClientHaiku::shouldInterruptJavaScript() @@ -365,8 +365,12 @@ if (!m_webView->LockLooper()) return; - m_webView->SetToolTip(BString(tip).String()); - m_webView->UnlockLooper(); + if (!tip.length()) + m_webView->SetToolTip(reinterpret_cast<BToolTip*>(NULL)); + else + m_webView->SetToolTip(BString(tip).String()); + + m_webView->UnlockLooper(); } void ChromeClientHaiku::print(Frame*)