Modified: trunk/Source/WebKit2/ChangeLog (87688 => 87689)
--- trunk/Source/WebKit2/ChangeLog 2011-05-30 16:14:29 UTC (rev 87688)
+++ trunk/Source/WebKit2/ChangeLog 2011-05-30 16:17:56 UTC (rev 87689)
@@ -16,6 +16,23 @@
Reviewed by Martin Robinson.
+ [GTK] Initial tooltips implementation for WebKit2
+ https://bugs.webkit.org/show_bug.cgi?id=59318
+
+ * UIProcess/API/gtk/PageClientImpl.cpp:
+ (WebKit::PageClientImpl::toolTipChanged): Update view's tooltip
+ text.
+ * UIProcess/API/gtk/WebKitWebViewBase.cpp:
+ (webkitWebViewBaseQueryTooltip): Implement GtkWidget::query-tooltip.
+ (webkit_web_view_base_class_init): Override GtkWidget::query-tooltip.
+ (webkitWebViewBaseSetTooltipText): Update tooltip text and trigger
+ GtkWidget::query-tooltip.
+ * UIProcess/API/gtk/WebKitWebViewBasePrivate.h:
+
+2011-05-30 Carlos Garcia Campos <[email protected]>
+
+ Reviewed by Martin Robinson.
+
[GTK] Remove some unneeded header includes
https://bugs.webkit.org/show_bug.cgi?id=60536
Modified: trunk/Source/WebKit2/UIProcess/API/gtk/PageClientImpl.cpp (87688 => 87689)
--- trunk/Source/WebKit2/UIProcess/API/gtk/PageClientImpl.cpp 2011-05-30 16:14:29 UTC (rev 87688)
+++ trunk/Source/WebKit2/UIProcess/API/gtk/PageClientImpl.cpp 2011-05-30 16:17:56 UTC (rev 87689)
@@ -128,9 +128,9 @@
notImplemented();
}
-void PageClientImpl::toolTipChanged(const String&, const String&)
+void PageClientImpl::toolTipChanged(const String&, const String& newToolTip)
{
- notImplemented();
+ webkitWebViewBaseSetTooltipText(WEBKIT_WEB_VIEW_BASE(m_viewWidget), newToolTip.utf8().data());
}
void PageClientImpl::setCursor(const Cursor& cursor)
Modified: trunk/Source/WebKit2/UIProcess/API/gtk/WebKitWebViewBase.cpp (87688 => 87689)
--- trunk/Source/WebKit2/UIProcess/API/gtk/WebKitWebViewBase.cpp 2011-05-30 16:14:29 UTC (rev 87688)
+++ trunk/Source/WebKit2/UIProcess/API/gtk/WebKitWebViewBase.cpp 2011-05-30 16:17:56 UTC (rev 87689)
@@ -44,6 +44,7 @@
#include "WebKitWebViewBasePrivate.h"
#include "WebPageProxy.h"
#include <WebKit2/WKContext.h>
+#include <wtf/text/CString.h>
using namespace WebKit;
using namespace WebCore;
@@ -54,6 +55,7 @@
gboolean isPageActive;
GtkIMContext* imContext;
GtkClickCounter clickCounter;
+ CString tooltipText;
};
G_DEFINE_TYPE(WebKitWebViewBase, webkit_web_view_base, GTK_TYPE_CONTAINER)
@@ -282,6 +284,27 @@
return FALSE;
}
+#if GTK_CHECK_VERSION(2, 12, 0)
+static gboolean webkitWebViewBaseQueryTooltip(GtkWidget* widget, gint x, gint y, gboolean keyboardMode, GtkTooltip* tooltip)
+{
+ WebKitWebViewBasePrivate* priv = WEBKIT_WEB_VIEW_BASE(widget)->priv;
+
+ if (keyboardMode) {
+ // TODO: https://bugs.webkit.org/show_bug.cgi?id=61732.
+ notImplemented();
+ return FALSE;
+ }
+
+ if (priv->tooltipText.length() <= 0)
+ return FALSE;
+
+ // TODO: set the tip area when WKPageMouseDidMoveOverElementCallback
+ // receives a hit test result.
+ gtk_tooltip_set_text(tooltip, priv->tooltipText.data());
+ return TRUE;
+}
+#endif
+
static void webkit_web_view_base_class_init(WebKitWebViewBaseClass* webkitWebViewBaseClass)
{
GtkWidgetClass* widgetClass = GTK_WIDGET_CLASS(webkitWebViewBaseClass);
@@ -300,6 +323,9 @@
widgetClass->button_release_event = webkitWebViewBaseButtonReleaseEvent;
widgetClass->scroll_event = webkitWebViewBaseScrollEvent;
widgetClass->motion_notify_event = webkitWebViewBaseMotionNotifyEvent;
+#if GTK_CHECK_VERSION(2, 12, 0)
+ widgetClass->query_tooltip = webkitWebViewBaseQueryTooltip;
+#endif
GObjectClass* gobjectClass = G_OBJECT_CLASS(webkitWebViewBaseClass);
gobjectClass->finalize = webkitWebViewBaseFinalize;
@@ -328,3 +354,23 @@
{
return webkitWebViewBase->priv->pageProxy.get();
}
+
+void webkitWebViewBaseSetTooltipText(WebKitWebViewBase* webViewBase, const char* tooltip)
+{
+#if GTK_CHECK_VERSION(2, 12, 0)
+ WebKitWebViewBasePrivate* priv = webViewBase->priv;
+ if (tooltip && tooltip[0] != '\0') {
+ priv->tooltipText = tooltip;
+ gtk_widget_set_has_tooltip(GTK_WIDGET(webViewBase), TRUE);
+ } else {
+ priv->tooltipText = "";
+ gtk_widget_set_has_tooltip(GTK_WIDGET(webViewBase), FALSE);
+ }
+
+ gtk_widget_trigger_tooltip_query(GTK_WIDGET(webViewBase));
+#else
+ // TODO: Support older GTK+ versions
+ // See http://bugs.webkit.org/show_bug.cgi?id=15793
+ notImplemented();
+#endif
+}
Modified: trunk/Source/WebKit2/UIProcess/API/gtk/WebKitWebViewBasePrivate.h (87688 => 87689)
--- trunk/Source/WebKit2/UIProcess/API/gtk/WebKitWebViewBasePrivate.h 2011-05-30 16:14:29 UTC (rev 87688)
+++ trunk/Source/WebKit2/UIProcess/API/gtk/WebKitWebViewBasePrivate.h 2011-05-30 16:17:56 UTC (rev 87689)
@@ -41,6 +41,8 @@
WebPageProxy* webkitWebViewBaseGetPage(WebKitWebViewBase*);
+void webkitWebViewBaseSetTooltipText(WebKitWebViewBase*, const char*);
+
G_END_DECLS
#endif // WebKitWebViewBasePrivate_h