New function. Factor out code from gdk_window_shape_combine_mask().
2006-02-20 Tor Lillqvist <tml@novell.com> * gdk/win32/gdkwindow-win32.c (do_shape_combine_region): New function. Factor out code from gdk_window_shape_combine_mask(). (gdk_window_shape_combine_region): Actually do something. Convert region to a HRGN and call do_shape_combine_region().
This commit is contained in:
committed by
Tor Lillqvist
parent
312b36609a
commit
c8d48a9df4
@@ -1,3 +1,10 @@
|
||||
2006-02-20 Tor Lillqvist <tml@novell.com>
|
||||
|
||||
* gdk/win32/gdkwindow-win32.c (do_shape_combine_region): New
|
||||
function. Factor out code from gdk_window_shape_combine_mask().
|
||||
(gdk_window_shape_combine_region): Actually do something. Convert
|
||||
region to a HRGN and call do_shape_combine_region().
|
||||
|
||||
2006-02-17 Matthias Clasen <mclasen@redhat.com>
|
||||
|
||||
* gdk/gdkregion-generic.c (gdk_region_union_with_rect):
|
||||
|
||||
@@ -1,3 +1,10 @@
|
||||
2006-02-20 Tor Lillqvist <tml@novell.com>
|
||||
|
||||
* gdk/win32/gdkwindow-win32.c (do_shape_combine_region): New
|
||||
function. Factor out code from gdk_window_shape_combine_mask().
|
||||
(gdk_window_shape_combine_region): Actually do something. Convert
|
||||
region to a HRGN and call do_shape_combine_region().
|
||||
|
||||
2006-02-17 Matthias Clasen <mclasen@redhat.com>
|
||||
|
||||
* gdk/gdkregion-generic.c (gdk_region_union_with_rect):
|
||||
|
||||
@@ -2325,6 +2325,30 @@ gdk_window_set_events (GdkWindow *window,
|
||||
GDK_WINDOW_OBJECT (window)->event_mask = GDK_STRUCTURE_MASK | event_mask;
|
||||
}
|
||||
|
||||
static void
|
||||
do_shape_combine_region (GdkWindow *window,
|
||||
HRGN hrgn,
|
||||
gint x, gint y)
|
||||
{
|
||||
RECT rect;
|
||||
|
||||
GetClientRect (GDK_WINDOW_HWND (window), &rect);
|
||||
_gdk_win32_adjust_client_rect (window, &rect);
|
||||
|
||||
OffsetRgn (hrgn, -rect.left, -rect.top);
|
||||
OffsetRgn (hrgn, x, y);
|
||||
|
||||
/* If this is a top-level window, add the title bar to the region */
|
||||
if (GDK_WINDOW_TYPE (window) == GDK_WINDOW_TOPLEVEL)
|
||||
{
|
||||
HRGN tmp = CreateRectRgn (0, 0, rect.right - rect.left, -rect.top);
|
||||
CombineRgn (hrgn, hrgn, tmp, RGN_OR);
|
||||
DeleteObject (tmp);
|
||||
}
|
||||
|
||||
SetWindowRgn (GDK_WINDOW_HWND (window), hrgn, TRUE);
|
||||
}
|
||||
|
||||
void
|
||||
gdk_window_shape_combine_mask (GdkWindow *window,
|
||||
GdkBitmap *mask,
|
||||
@@ -2345,30 +2369,15 @@ gdk_window_shape_combine_mask (GdkWindow *window,
|
||||
else
|
||||
{
|
||||
HRGN hrgn;
|
||||
RECT rect;
|
||||
|
||||
/* Convert mask bitmap to region */
|
||||
hrgn = _gdk_win32_bitmap_to_hrgn (mask);
|
||||
|
||||
GDK_NOTE (MISC, g_print ("gdk_window_shape_combine_mask: %p: %p\n",
|
||||
GDK_WINDOW_HWND (window),
|
||||
GDK_WINDOW_HWND (mask)));
|
||||
|
||||
GetClientRect (GDK_WINDOW_HWND (window), &rect);
|
||||
_gdk_win32_adjust_client_rect (window, &rect);
|
||||
/* Convert mask bitmap to region */
|
||||
hrgn = _gdk_win32_bitmap_to_hrgn (mask);
|
||||
|
||||
OffsetRgn (hrgn, -rect.left, -rect.top);
|
||||
OffsetRgn (hrgn, x, y);
|
||||
|
||||
/* If this is a top-level window, add the title bar to the region */
|
||||
if (GDK_WINDOW_TYPE (window) == GDK_WINDOW_TOPLEVEL)
|
||||
{
|
||||
HRGN tmp = CreateRectRgn (0, 0, rect.right - rect.left, -rect.top);
|
||||
CombineRgn (hrgn, hrgn, tmp, RGN_OR);
|
||||
DeleteObject (tmp);
|
||||
}
|
||||
|
||||
SetWindowRgn (GDK_WINDOW_HWND (window), hrgn, TRUE);
|
||||
do_shape_combine_region (window, hrgn, x, y);
|
||||
|
||||
private->shaped = TRUE;
|
||||
}
|
||||
@@ -3276,12 +3285,35 @@ gdk_window_shape_combine_region (GdkWindow *window,
|
||||
gint offset_x,
|
||||
gint offset_y)
|
||||
{
|
||||
GdkWindowObject *private = (GdkWindowObject *)window;
|
||||
|
||||
g_return_if_fail (GDK_IS_WINDOW (window));
|
||||
|
||||
if (GDK_WINDOW_DESTROYED (window))
|
||||
return;
|
||||
|
||||
/* XXX: even on X implemented conditional ... */
|
||||
if (!shape_region)
|
||||
{
|
||||
GDK_NOTE (MISC, g_print ("gdk_window_shape_combine_region: %p: none\n",
|
||||
GDK_WINDOW_HWND (window)));
|
||||
SetWindowRgn (GDK_WINDOW_HWND (window), NULL, TRUE);
|
||||
|
||||
private->shaped = FALSE;
|
||||
}
|
||||
else
|
||||
{
|
||||
HRGN hrgn;
|
||||
|
||||
hrgn = _gdk_win32_gdkregion_to_hrgn (shape_region, 0, 0);
|
||||
|
||||
GDK_NOTE (MISC, g_print ("gdk_window_shape_combine_region: %p: %p\n",
|
||||
GDK_WINDOW_HWND (window),
|
||||
hrgn));
|
||||
|
||||
do_shape_combine_region (window, hrgn, offset_x, offset_y);
|
||||
|
||||
private->shaped = TRUE;
|
||||
}
|
||||
}
|
||||
|
||||
GdkWindow *
|
||||
@@ -3295,9 +3327,11 @@ gdk_window_lookup_for_display (GdkDisplay *display, GdkNativeWindow anid)
|
||||
void
|
||||
gdk_window_enable_synchronized_configure (GdkWindow *window)
|
||||
{
|
||||
g_return_if_fail (GDK_IS_WINDOW (window));
|
||||
}
|
||||
|
||||
void
|
||||
gdk_window_configure_finished (GdkWindow *window)
|
||||
{
|
||||
g_return_if_fail (GDK_IS_WINDOW (window));
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user