]> Pileus Git - ~andy/gtk/commitdiff
API: Remove gdk_cairo_reset_clip()
authorBenjamin Otte <otte@redhat.com>
Wed, 6 Oct 2010 16:44:51 +0000 (18:44 +0200)
committerBenjamin Otte <otte@redhat.com>
Thu, 2 Dec 2010 19:17:28 +0000 (20:17 +0100)
You should not ever ever ever call cairo_reset_clip(). If you do, your
code is broken and you deserve everything you get.
And we should definitely not support this insanity.

docs/reference/gdk/gdk3-sections.txt
docs/reference/gtk/migrating-ClientSideWindows.sgml
gdk/gdkcairo.c
gdk/gdkcairo.h

index 596d7220eb125674c5a5e4ce35002c631b934377..f277295c35077a28af745d5654c0c94f592e6a87 100644 (file)
@@ -616,7 +616,6 @@ gdk_cairo_set_source_pixbuf
 gdk_cairo_set_source_window
 gdk_cairo_rectangle
 gdk_cairo_region
-gdk_cairo_reset_clip
 gdk_cairo_region_create_from_surface
 </SECTION>
 
index 54e0620f1bdc0c6111ff52007d11f22dc09c4f6f..017249c3e92b30a512ff3d8c3acd75e41c74c54f 100644 (file)
 
   <para>
     Problems can also occur when using cairo for drawing. One thing that can
-    go wrong is clip handling. If you ever need to reset the clip region on
-    a cairo_t (i.e. use cairo_reset_clip()), you have to to use
-    gdk_cairo_reset_clip() instead. The reason for this is that the cairo_reset_clip() call will remove the initial clip region that limits your drawing to
-    the client-side window at hand, so you will end up drawing over stuff
-    outside the window. You also need to use gdk_cairo_reset_clip() if you
-    use a cairo_t that was not allocated in a double-buffered expose handler
-    and keep it in use after window hierarchy changes (resizing, moving,
-    stacking order changes). The easiest fix for this kind of problem is to
-    simply create a new cairo context for each expose event.
+    go wrong is clip handling. You may not use cairo_reset_clip() on a
+    cairo_t on a cairo context created via gdk_cairo_create() or passed to
+    the GtkWidget::draw signal.
   </para>
 
   <para>
index 197e2c41e928b7cd48d925a8580a5c8c8278d728..a554241fffe5c6108613762d8b56f07a4cbe29c8 100644 (file)
@@ -78,34 +78,6 @@ gdk_cairo_create (GdkDrawable *drawable)
   return cr;
 }
 
-/**
- * gdk_cairo_reset_clip:
- * @cr: a #cairo_t
- * @drawable: a #GdkDrawable
- *
- * Resets the clip region for a Cairo context created by gdk_cairo_create().
- *
- * This resets the clip region to the "empty" state for the given drawable.
- * This is required for non-native windows since a direct call to
- * cairo_reset_clip() would unset the clip region inherited from the
- * drawable (i.e. the window clip region), and thus let you e.g.
- * draw outside your window.
- *
- * This is rarely needed though, since most code just create a new cairo_t
- * using gdk_cairo_create() each time they want to draw something.
- *
- * Since: 2.18
- **/
-void
-gdk_cairo_reset_clip (cairo_t            *cr,
-                     GdkDrawable        *drawable)
-{
-  cairo_reset_clip (cr);
-
-  if (GDK_DRAWABLE_GET_CLASS (drawable)->set_cairo_clip)
-    GDK_DRAWABLE_GET_CLASS (drawable)->set_cairo_clip (drawable, cr);
-}
-
 /**
  * gdk_cairo_get_clip_rectangle:
  * @cr: a cairo context
index b9b45e5f08be28875eb1c05008f2fe6add4648b8..f594f8bec7d8a464c468505f865993c85619f99d 100644 (file)
@@ -32,8 +32,6 @@
 G_BEGIN_DECLS
 
 cairo_t *gdk_cairo_create            (GdkDrawable        *drawable);
-void     gdk_cairo_reset_clip        (cairo_t            *cr,
-                                     GdkDrawable        *drawable);
 gboolean gdk_cairo_get_clip_rectangle(cairo_t            *cr,
                                       GdkRectangle       *rect);