Fix 'mono' package typo
[mono.git] / bockbuild / mac-sdk / patches / gtk / 0025-quartz-Add-a-dummy-NSView-serving-as-layer-view.patch
1 From 3c7e6438bb2420c8fd31ba164c400b66ae474f5d Mon Sep 17 00:00:00 2001
2 From: Michael Natterer <mitch@gimp.org>
3 Date: Fri, 5 Oct 2012 12:10:15 +0200
4 Subject: [PATCH 25/68] quartz: Add a dummy NSView serving as layer view
5
6 By doing this, the GdkQuartzView does not have to be marked as layer
7 backed, such that the disadvantages that come with that (not being able
8 to copy pixels and large redraw areas) no longer apply.
9 ---
10  gdk/quartz/GdkQuartzView.c    |    6 ++++++
11  gdk/quartz/gdkquartz.h        |    1 +
12  gdk/quartz/gdkwindow-quartz.c |   16 ++++++++++++++++
13  gdk/quartz/gdkwindow-quartz.h |    1 +
14  4 files changed, 24 insertions(+)
15
16 diff --git a/gdk/quartz/GdkQuartzView.c b/gdk/quartz/GdkQuartzView.c
17 index 7f0ec40..c6ccf06 100644
18 --- a/gdk/quartz/GdkQuartzView.c
19 +++ b/gdk/quartz/GdkQuartzView.c
20 @@ -632,6 +632,8 @@
21        [[self window] invalidateShadow];
22        needsInvalidateShadow = NO;
23      }
24 +
25 +  [[self layer] removeAllAnimations];
26  }
27
28  -(void)setNeedsInvalidateShadow: (BOOL)invalidate
29 @@ -690,7 +692,11 @@
30
31  -(void)setFrame: (NSRect)frame
32  {
33 +  GdkWindowObject *private = GDK_WINDOW_OBJECT (gdk_window);
34 +  GdkWindowImplQuartz *impl = GDK_WINDOW_IMPL_QUARTZ (private->impl);
35 +
36    [super setFrame: frame];
37 +  [impl->layer_view setFrame: frame];
38
39    if ([self window])
40      [self updateTrackingRect];
41 diff --git a/gdk/quartz/gdkquartz.h b/gdk/quartz/gdkquartz.h
42 index 3c42983..8b0085c 100644
43 --- a/gdk/quartz/gdkquartz.h
44 +++ b/gdk/quartz/gdkquartz.h
45 @@ -54,6 +54,7 @@ typedef enum
46
47  NSWindow *gdk_quartz_window_get_nswindow                        (GdkWindow      *window);
48  NSView   *gdk_quartz_window_get_nsview                          (GdkWindow      *window);
49 +NSView   *gdk_quartz_window_get_layer_view                      (GdkWindow      *window);
50  NSImage  *gdk_quartz_pixbuf_to_ns_image_libgtk_only             (GdkPixbuf      *pixbuf);
51  id        gdk_quartz_drag_context_get_dragging_info_libgtk_only (GdkDragContext *context);
52  NSEvent  *gdk_quartz_event_get_nsevent                          (GdkEvent       *event);
53 diff --git a/gdk/quartz/gdkwindow-quartz.c b/gdk/quartz/gdkwindow-quartz.c
54 index 318a171..500776d 100644
55 --- a/gdk/quartz/gdkwindow-quartz.c
56 +++ b/gdk/quartz/gdkwindow-quartz.c
57 @@ -68,6 +68,17 @@ gdk_quartz_window_get_nsview (GdkWindow *window)
58    return ((GdkWindowImplQuartz *)private->impl)->view;
59  }
60
61 +NSView *
62 +gdk_quartz_window_get_layer_view (GdkWindow *window)
63 +{
64 +  GdkWindowObject *private = (GdkWindowObject *)window;
65 +
66 +  if (GDK_WINDOW_DESTROYED (window))
67 +    return NULL;
68 +
69 +  return ((GdkWindowImplQuartz *)private->impl)->layer_view;
70 +}
71 +
72  NSWindow *
73  gdk_quartz_window_get_nswindow (GdkWindow *window)
74  {
75 @@ -1024,6 +1035,11 @@ _gdk_window_impl_new (GdkWindow     *window,
76         [impl->view setGdkWindow:window];
77         [impl->toplevel setContentView:impl->view];
78         [impl->view release];
79 +
80 +        impl->layer_view = [[NSView alloc] initWithFrame:content_rect];
81 +        [impl->view addSubview:impl->layer_view];
82 +        [impl->layer_view setWantsLayer:YES];
83 +        [impl->layer_view release];
84        }
85        break;
86
87 diff --git a/gdk/quartz/gdkwindow-quartz.h b/gdk/quartz/gdkwindow-quartz.h
88 index 4a0e27a..f35238b 100644
89 --- a/gdk/quartz/gdkwindow-quartz.h
90 +++ b/gdk/quartz/gdkwindow-quartz.h
91 @@ -47,6 +47,7 @@ struct _GdkWindowImplQuartz
92    NSWindow *toplevel;
93    NSTrackingRectTag tracking_rect;
94    GdkQuartzView *view;
95 +  NSView *layer_view;
96
97    GdkWindowTypeHint type_hint;
98
99 --
100 1.7.10.2 (Apple Git-33)