[SCM] WebKit Debian packaging branch, debian/experimental, updated. upstream/1.3.3-9427-gc2be6fc

commit-queue at webkit.org commit-queue at webkit.org
Wed Dec 22 14:22:46 UTC 2010


The following commit has been merged in the debian/experimental branch:
commit 2b2012caef53d29bba15e0b5ab9ea0a07b4a70af
Author: commit-queue at webkit.org <commit-queue at webkit.org@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Date:   Thu Oct 7 12:57:44 2010 +0000

    2010-10-07  Carlos Garcia Campos  <cgarcia at igalia.com>
    
            Reviewed by Xan Lopez.
    
            [GTK] Use draw instead of expose_event in WebView when building with gtk3
            https://bugs.webkit.org/show_bug.cgi?id=47338
    
            * webkit/webkitwebview.cpp:
            (webkit_web_view_expose_event):
            (webkit_web_view_draw):
            (webkit_web_view_class_init):
    
    git-svn-id: http://svn.webkit.org/repository/webkit/trunk@69302 268f45cc-cd09-0410-ab3c-d52691b4dbfc

diff --git a/WebKit/gtk/ChangeLog b/WebKit/gtk/ChangeLog
index 7f58b90..620dd45 100644
--- a/WebKit/gtk/ChangeLog
+++ b/WebKit/gtk/ChangeLog
@@ -2,6 +2,18 @@
 
         Reviewed by Xan Lopez.
 
+        [GTK] Use draw instead of expose_event in WebView when building with gtk3
+        https://bugs.webkit.org/show_bug.cgi?id=47338
+
+        * webkit/webkitwebview.cpp:
+        (webkit_web_view_expose_event):
+        (webkit_web_view_draw):
+        (webkit_web_view_class_init):
+
+2010-10-07  Carlos Garcia Campos  <cgarcia at igalia.com>
+
+        Reviewed by Xan Lopez.
+
         [GTK] Don't use GtkObject
         https://bugs.webkit.org/show_bug.cgi?id=47090
 
diff --git a/WebKit/gtk/webkit/webkitwebview.cpp b/WebKit/gtk/webkit/webkitwebview.cpp
index 7c734f9..20c9b16 100644
--- a/WebKit/gtk/webkit/webkitwebview.cpp
+++ b/WebKit/gtk/webkit/webkitwebview.cpp
@@ -492,6 +492,7 @@ static void webkit_web_view_set_property(GObject* object, guint prop_id, const G
     }
 }
 
+#ifdef GTK_API_VERSION_2
 static bool shouldCoalesce(GdkRectangle rect, GdkRectangle* rects, int count)
 {
     const int cRectThreshold = 10;
@@ -527,15 +528,9 @@ static gboolean webkit_web_view_expose_event(GtkWidget* widget, GdkEventExpose*
         ctx.setGdkExposeEvent(event);
 
         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);
 
@@ -565,6 +560,33 @@ static gboolean webkit_web_view_expose_event(GtkWidget* widget, GdkEventExpose*
 
     return FALSE;
 }
+#else
+static gboolean webkit_web_view_draw(GtkWidget* widget, cairo_t* cr)
+{
+    WebKitWebView* webView = WEBKIT_WEB_VIEW(widget);
+    WebKitWebViewPrivate* priv = webView->priv;
+    GdkRectangle clipRect;
+
+    if (!gdk_cairo_get_clip_rectangle(cr, &clipRect))
+        return FALSE;
+
+    Frame* frame = core(webView)->mainFrame();
+    if (frame->contentRenderer() && frame->view()) {
+        GraphicsContext ctx(cr);
+        IntRect rect = clipRect;
+
+        frame->view()->updateLayoutAndStyleIfNeededRecursive();
+        if (priv->transparent)
+            ctx.clearRect(rect);
+        frame->view()->paint(&ctx, rect);
+        ctx.save();
+        frame->page()->inspectorController()->drawNodeHighlight(ctx);
+        ctx.restore();
+    }
+
+    return FALSE;
+}
+#endif // GTK_API_VERSION_2
 
 static gboolean webkit_web_view_key_press_event(GtkWidget* widget, GdkEventKey* event)
 {
@@ -2463,7 +2485,11 @@ static void webkit_web_view_class_init(WebKitWebViewClass* webViewClass)
 
     GtkWidgetClass* widgetClass = GTK_WIDGET_CLASS(webViewClass);
     widgetClass->realize = webkit_web_view_realize;
+#ifdef GTK_API_VERSION_2
     widgetClass->expose_event = webkit_web_view_expose_event;
+#else
+    widgetClass->draw = webkit_web_view_draw;
+#endif
     widgetClass->key_press_event = webkit_web_view_key_press_event;
     widgetClass->key_release_event = webkit_web_view_key_release_event;
     widgetClass->button_press_event = webkit_web_view_button_press_event;

-- 
WebKit Debian packaging



More information about the Pkg-webkit-commits mailing list