summaryrefslogtreecommitdiffstats
path: root/WebKit/gtk/webkit/webkitwebview.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'WebKit/gtk/webkit/webkitwebview.cpp')
-rw-r--r--WebKit/gtk/webkit/webkitwebview.cpp23
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)