[gtk+/broadway: 7/71] [broadway] Implement window translation
- From: Alexander Larsson <alexl src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gtk+/broadway: 7/71] [broadway] Implement window translation
- Date: Thu, 25 Nov 2010 21:15:51 +0000 (UTC)
commit 2ecaeb149fda261aabeddbf8f62b3c66455a751e
Author: Alexander Larsson <alexl redhat com>
Date: Mon Nov 15 22:11:39 2010 +0100
[broadway] Implement window translation
gdk/broadway/gdkwindow-broadway.c | 33 ++++++++++++++++++++++++++++++++-
1 files changed, 32 insertions(+), 1 deletions(-)
---
diff --git a/gdk/broadway/gdkwindow-broadway.c b/gdk/broadway/gdkwindow-broadway.c
index 2bbd600..3404167 100644
--- a/gdk/broadway/gdkwindow-broadway.c
+++ b/gdk/broadway/gdkwindow-broadway.c
@@ -1026,7 +1026,38 @@ _gdk_x11_window_translate (GdkWindow *window,
gint dx,
gint dy)
{
- /* TODO: copy region */
+ GdkWindowObject *private;
+ GdkWindowImplX11 *impl;
+ cairo_surface_t *surface;
+
+ private = (GdkWindowObject *)window;
+ impl = GDK_WINDOW_IMPL_X11 (private->impl);
+
+ surface = GDK_DRAWABLE_IMPL_X11 (impl)->surface;
+ if (surface)
+ {
+ cairo_t *cr;
+
+ cr = cairo_create (surface);
+
+ area = cairo_region_copy (area);
+
+ gdk_cairo_region (cr, area);
+ cairo_clip (cr);
+
+ /* NB: This is a self-copy and Cairo doesn't support that yet.
+ * So we do a litle trick.
+ */
+ cairo_push_group (cr);
+
+ cairo_set_source_surface (cr, surface, dx, dy);
+ cairo_paint (cr);
+
+ cairo_pop_group_to_source (cr);
+ cairo_paint (cr);
+
+ cairo_destroy (cr);
+ }
}
static void
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]