Changeset 53256 in webkit
- Timestamp:
- Jan 14, 2010 3:56:58 AM (14 years ago)
- Location:
- trunk/WebKit/gtk
- Files:
-
- 4 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/WebKit/gtk/ChangeLog
r53138 r53256 1 2010-01-14 Alejandro G. Castro <alex@igalia.com> 2 3 Reviewed by Xan Lopez. 4 5 Review the tooltip implementation 6 https://bugs.webkit.org/show_bug.cgi?id=32819 7 8 Change the GTK tooltip implementation to avoid the workaround that 9 we are currently using. Now we use a new private API to set the 10 text and all the tooltip handling is done in the webview widget. 11 12 * WebCoreSupport/ChromeClientGtk.cpp: 13 * webkit/webkitprivate.h: 14 * webkit/webkitwebview.cpp: 15 (webkit_web_view_set_tooltip_text): Added, new private API. 16 (webkit_web_view_query_tooltip): Added 17 1 18 2010-01-12 Gustavo Noronha Silva <gns@gnome.org> 2 19 -
trunk/WebKit/gtk/WebCoreSupport/ChromeClientGtk.cpp
r52066 r53256 443 443 void ChromeClient::mouseDidMoveOverElement(const HitTestResult& hit, unsigned modifierFlags) 444 444 { 445 #if GTK_CHECK_VERSION(2,12,0)446 // If a tooltip must be displayed it will be, afterwards, when447 // setToolTip is called; this is just a work-around to make sure448 // it updates its location correctly; see449 // https://bugs.webkit.org/show_bug.cgi?id=15793.450 g_object_set(m_webView, "has-tooltip", FALSE, NULL);451 452 GdkDisplay* gdkDisplay;453 GtkWidget* window = gtk_widget_get_toplevel(GTK_WIDGET(m_webView));454 if (GTK_WIDGET_TOPLEVEL(window))455 gdkDisplay = gtk_widget_get_display(window);456 else457 gdkDisplay = gdk_display_get_default();458 gtk_tooltip_trigger_tooltip_query(gdkDisplay);459 #endif460 461 445 // check if the element is a link... 462 446 bool isLink = hit.isLiveLink(); … … 478 462 void ChromeClient::setToolTip(const String& toolTip, TextDirection) 479 463 { 480 #if GTK_CHECK_VERSION(2,12,0) 481 if (toolTip.isEmpty()) 482 g_object_set(m_webView, "has-tooltip", FALSE, NULL); 483 else 484 gtk_widget_set_tooltip_text(GTK_WIDGET(m_webView), toolTip.utf8().data()); 485 #else 486 // TODO: Support older GTK+ versions 487 // See http://bugs.webkit.org/show_bug.cgi?id=15793 488 notImplemented(); 489 #endif 464 webkit_web_view_set_tooltip_text(m_webView, toolTip.utf8().data()); 490 465 } 491 466 -
trunk/WebKit/gtk/webkit/webkitprivate.h
r51948 r53256 153 153 char* mainResourceIdentifier; 154 154 GHashTable* subResources; 155 char* tooltipText; 155 156 }; 156 157 … … 255 256 webkit_web_view_get_subresources(WebKitWebView*); 256 257 258 void 259 webkit_web_view_set_tooltip_text(WebKitWebView*, const char*); 260 257 261 WebKitDownload* 258 262 webkit_download_new_with_handle(WebKitNetworkRequest* request, WebCore::ResourceHandle* handle, const WebCore::ResourceResponse& response); -
trunk/WebKit/gtk/webkit/webkitwebview.cpp
r52418 r53256 1054 1054 WebKitWebViewPrivate* priv = webView->priv; 1055 1055 1056 g_free(priv->tooltipText); 1056 1057 g_free(priv->mainResourceIdentifier); 1057 1058 g_free(priv->encoding); … … 1277 1278 } 1278 1279 1280 #if GTK_CHECK_VERSION(2, 12, 0) 1281 static gboolean webkit_web_view_query_tooltip(GtkWidget *widget, gint x, gint y, gboolean keyboard_mode, GtkTooltip *tooltip) 1282 { 1283 WebKitWebViewPrivate* priv = WEBKIT_WEB_VIEW_GET_PRIVATE(widget); 1284 1285 if (priv->tooltipText) { 1286 gtk_tooltip_set_text(tooltip, priv->tooltipText); 1287 return TRUE; 1288 } 1289 1290 return FALSE; 1291 } 1292 #endif 1293 1279 1294 static void webkit_web_view_class_init(WebKitWebViewClass* webViewClass) 1280 1295 { … … 2146 2161 widgetClass->drag_end = webkit_web_view_drag_end; 2147 2162 widgetClass->drag_data_get = webkit_web_view_drag_data_get; 2163 #if GTK_CHECK_VERSION(2, 12, 0) 2164 widgetClass->query_tooltip = webkit_web_view_query_tooltip; 2165 #endif 2148 2166 2149 2167 GtkContainerClass* containerClass = GTK_CONTAINER_CLASS(webViewClass); … … 2668 2686 2669 2687 priv->subResources = g_hash_table_new_full(g_str_hash, g_str_equal, g_free, g_object_unref); 2688 2689 priv->tooltipText = 0; 2670 2690 } 2671 2691 … … 4020 4040 // Historically the code would just crash; this is clearly no worse than that. 4021 4041 return view ? view->windowToContents(windowPoint) : windowPoint; 4042 } 4043 4044 void webkit_web_view_set_tooltip_text(WebKitWebView* webView, const char* tooltip) 4045 { 4046 #if GTK_CHECK_VERSION(2, 12, 0) 4047 WebKitWebViewPrivate* priv = webView->priv; 4048 g_free(priv->tooltipText); 4049 if (tooltip && *tooltip != '\0') { 4050 priv->tooltipText = g_strdup(tooltip); 4051 gtk_widget_set_has_tooltip(GTK_WIDGET(webView), TRUE); 4052 } else { 4053 priv->tooltipText = 0; 4054 gtk_widget_set_has_tooltip(GTK_WIDGET(webView), FALSE); 4055 } 4056 4057 gtk_widget_trigger_tooltip_query(GTK_WIDGET(webView)); 4058 #else 4059 // TODO: Support older GTK+ versions 4060 // See http://bugs.webkit.org/show_bug.cgi?id=15793 4061 notImplemented(); 4062 #endif 4022 4063 } 4023 4064
Note: See TracChangeset
for help on using the changeset viewer.