diff options
Diffstat (limited to 'WebKit/gtk/webkit/webkitwebview.cpp')
-rw-r--r-- | WebKit/gtk/webkit/webkitwebview.cpp | 23 |
1 files changed, 16 insertions, 7 deletions
diff --git a/WebKit/gtk/webkit/webkitwebview.cpp b/WebKit/gtk/webkit/webkitwebview.cpp index ce2bbc6..62997c5 100644 --- a/WebKit/gtk/webkit/webkitwebview.cpp +++ b/WebKit/gtk/webkit/webkitwebview.cpp @@ -517,10 +517,16 @@ static gboolean webkit_web_view_expose_event(GtkWidget* widget, GdkEventExpose* cairo_destroy(cr); ctx.setGdkExposeEvent(event); - GOwnPtr<GdkRectangle> rects; int rectCount; +#ifdef GTK_API_VERSION_2 + GOwnPtr<GdkRectangle> rects; gdk_region_get_rectangles(event->region, &rects.outPtr(), &rectCount); - +#else + rectCount = cairo_region_num_rectangles(event->region); + GOwnPtr<GdkRectangle> rects(g_new(GdkRectangle, rectCount)); + for (int i = 0; i < rectCount; i++) + cairo_region_get_rectangle(event->region, i, rects.get()+i); +#endif // Avoid recursing into the render tree excessively bool coalesce = shouldCoalesce(event->area, rects.get(), rectCount); @@ -1190,7 +1196,7 @@ static void webkit_web_view_dispose(GObject* object) priv->subResources = NULL; } - priv->draggingDataObjects.clear(); + priv->draggingDataObjects->clear(); G_OBJECT_CLASS(webkit_web_view_parent_class)->dispose(object); } @@ -1207,6 +1213,7 @@ static void webkit_web_view_finalize(GObject* object) g_free(priv->iconURI); delete priv->previousClickPoint; + delete priv->draggingDataObjects; G_OBJECT_CLASS(webkit_web_view_parent_class)->finalize(object); } @@ -1309,10 +1316,10 @@ static void webkit_web_view_drag_end(GtkWidget* widget, GdkDragContext* context) // This might happen if a drag is still in progress after a WebKitWebView // is disposed and before it is finalized. - if (!priv->draggingDataObjects.contains(context)) + if (!priv->draggingDataObjects->contains(context)) return; - priv->draggingDataObjects.remove(context); + priv->draggingDataObjects->remove(context); Frame* frame = core(webView)->focusController()->focusedOrMainFrame(); if (!frame) @@ -1347,10 +1354,10 @@ static void webkit_web_view_drag_data_get(GtkWidget* widget, GdkDragContext* con // This might happen if a drag is still in progress after a WebKitWebView // is diposed and before it is finalized. - if (!priv->draggingDataObjects.contains(context)) + if (!priv->draggingDataObjects->contains(context)) return; - pasteboardHelperInstance()->fillSelectionData(selectionData, info, priv->draggingDataObjects.get(context).get()); + pasteboardHelperInstance()->fillSelectionData(selectionData, info, priv->draggingDataObjects->get(context).get()); } #if GTK_CHECK_VERSION(2, 12, 0) @@ -2928,6 +2935,8 @@ static void webkit_web_view_init(WebKitWebView* webView) priv->previousClickPoint = new IntPoint(0, 0); priv->previousClickButton = 0; priv->previousClickTime = 0; + + priv->draggingDataObjects = new HashMap<GdkDragContext*, RefPtr<WebCore::DataObjectGtk> >(); } GtkWidget* webkit_web_view_new(void) |