[WinCairo] Add support to WebView for setting tooltips
authorstephan.szabo@sony.com <stephan.szabo@sony.com@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Tue, 24 Jul 2018 17:40:12 +0000 (17:40 +0000)
committerstephan.szabo@sony.com <stephan.szabo@sony.com@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Tue, 24 Jul 2018 17:40:12 +0000 (17:40 +0000)
https://bugs.webkit.org/show_bug.cgi?id=187930

Reviewed by Fujii Hironori.

* UIProcess/win/PageClientImpl.cpp:
(WebKit::PageClientImpl::toolTipChanged): Set tooltip on WebView
* UIProcess/win/WebView.cpp:
(WebKit::WebView::setToolTip): Add support for updating the
tooltip text in Windows.
* UIProcess/win/WebView.h:

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@234156 268f45cc-cd09-0410-ab3c-d52691b4dbfc

Source/WebKit/ChangeLog
Source/WebKit/UIProcess/win/PageClientImpl.cpp
Source/WebKit/UIProcess/win/WebView.cpp
Source/WebKit/UIProcess/win/WebView.h

index c41be21..4626f00 100644 (file)
@@ -1,3 +1,17 @@
+2018-07-24  Stephan Szabo  <stephan.szabo@sony.com>
+
+        [WinCairo] Add support to WebView for setting tooltips
+        https://bugs.webkit.org/show_bug.cgi?id=187930
+
+        Reviewed by Fujii Hironori.
+
+        * UIProcess/win/PageClientImpl.cpp:
+        (WebKit::PageClientImpl::toolTipChanged): Set tooltip on WebView
+        * UIProcess/win/WebView.cpp:
+        (WebKit::WebView::setToolTip): Add support for updating the
+        tooltip text in Windows.
+        * UIProcess/win/WebView.h:
+
 2018-07-24  Alex Christensen  <achristensen@webkit.org>
 
         Reduce getters/setters in WebFramePolicyListenerProxy
index f4025c5..8ecc599 100644 (file)
@@ -101,9 +101,9 @@ void PageClientImpl::didRelaunchProcess()
     notImplemented();
 }
 
-void PageClientImpl::toolTipChanged(const String&, const String&)
+void PageClientImpl::toolTipChanged(const String&, const String& newToolTip)
 {
-    notImplemented();
+    m_view.setToolTip(newToolTip);
 }
 
 void PageClientImpl::setCursor(const WebCore::Cursor& cursor)
index 4e94ee8..7b614f0 100644 (file)
@@ -866,4 +866,22 @@ void WebView::windowReceivedMessage(HWND, UINT message, WPARAM wParam, LPARAM)
     }
 }
 
+void WebView::setToolTip(const String& toolTip)
+{
+    if (!m_toolTipWindow)
+        return;
+
+    if (!toolTip.isEmpty()) {
+        TOOLINFO info = { 0 };
+        info.cbSize = sizeof(info);
+        info.uFlags = TTF_IDISHWND;
+        info.uId = reinterpret_cast<UINT_PTR>(nativeWindow());
+        Vector<UChar> toolTipCharacters = toolTip.charactersWithNullTermination(); // Retain buffer long enough to make the SendMessage call
+        info.lpszText = const_cast<UChar*>(toolTipCharacters.data());
+        ::SendMessage(m_toolTipWindow, TTM_UPDATETIPTEXT, 0, reinterpret_cast<LPARAM>(&info));
+    }
+
+    ::SendMessage(m_toolTipWindow, TTM_ACTIVATE, !toolTip.isEmpty(), 0);
+}
+
 } // namespace WebKit
index 16f6716..f4ee570 100644 (file)
@@ -63,6 +63,7 @@ public:
     void setOverrideCursor(HCURSOR);
     void setScrollOffsetOnNextResize(const WebCore::IntSize&);
     void initialize();
+    void setToolTip(const String&);
 
     void setViewNeedsDisplay(const WebCore::Region&);
 
@@ -129,6 +130,7 @@ private:
     HWND m_window { nullptr };
     HWND m_topLevelParentWindow { nullptr };
     HWND m_toolTipWindow { nullptr };
+    WTF::String m_toolTip;
 
     WebCore::IntSize m_nextResizeScrollOffset;