[gtk+] Bug #588388 - shape rendering is back
- From: Hans Breuer <hans src gnome org>
- To: svn-commits-list gnome org
- Subject: [gtk+] Bug #588388 - shape rendering is back
- Date: Mon, 13 Jul 2009 07:52:21 +0000 (UTC)
commit b72960f12dd9fcb19a3ccff6283c1c9ac0e43c68
Author: Hans Breuer <hans breuer org>
Date: Sun Jul 12 18:58:59 2009 +0200
Bug #588388 - shape rendering is back
Just mapping exisiting implementations to new GdkWindow API.
http://bugzilla.gnome.org/show_bug.cgi?id=588388
gdk/win32/gdkwindow-win32.c | 31 ++++++++++++++++++++++++++-----
1 files changed, 26 insertions(+), 5 deletions(-)
---
diff --git a/gdk/win32/gdkwindow-win32.c b/gdk/win32/gdkwindow-win32.c
index c72bc06..b43ab19 100644
--- a/gdk/win32/gdkwindow-win32.c
+++ b/gdk/win32/gdkwindow-win32.c
@@ -1,7 +1,7 @@
/* GDK - The GIMP Drawing Kit
* Copyright (C) 1995-1997 Peter Mattis, Spencer Kimball and Josh MacDonald
* Copyright (C) 1998-2004 Tor Lillqvist
- * Copyright (C) 2001-2004 Hans Breuer
+ * Copyright (C) 2001-2009 Hans Breuer
* Copyright (C) 2007-2009 Cody Russell
*
* This library is free software; you can redistribute it and/or
@@ -3556,8 +3556,13 @@ gdk_window_set_opacity (GdkWindow *window,
GdkRegion *
_gdk_windowing_get_shape_for_mask (GdkBitmap *mask)
{
- // XXX: TODO
- return NULL;
+ GdkRegion *region;
+ HRGN hrgn = _gdk_win32_bitmap_to_hrgn (mask);
+
+ region = _gdk_win32_hrgn_to_region (hrgn);
+ DeleteObject (hrgn);
+
+ return region;
}
void
@@ -3568,13 +3573,25 @@ _gdk_windowing_window_set_composited (GdkWindow *window, gboolean composited)
GdkRegion *
_gdk_windowing_window_get_shape (GdkWindow *window)
{
- return NULL;
+ HRGN hrgn = CreateRectRgn (0, 0, 0, 0);
+ int type = GetWindowRgn (GDK_WINDOW_HWND (window), hrgn);
+
+ if (type == SIMPLEREGION || type == COMPLEXREGION)
+ {
+ GdkRegion *region = _gdk_win32_hrgn_to_region (hrgn);
+
+ DeleteObject (hrgn);
+ return region;
+ }
+
+ return NULL;
}
GdkRegion *
_gdk_windowing_window_get_input_shape (GdkWindow *window)
{
- return NULL;
+ /* CHECK: are these really supposed to be the same? */
+ return _gdk_windowing_window_get_shape (window);
}
static void
@@ -3617,6 +3634,10 @@ gdk_win32_input_shape_combine_region (GdkWindow *window,
gint offset_x,
gint offset_y)
{
+ if (GDK_WINDOW_DESTROYED (window))
+ return;
+ /* CHECK: are these really supposed to be the same? */
+ return gdk_win32_window_shape_combine_region (window, shape_region, offset_x, offset_y);
}
void
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]