summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPaul Davis <paul@linuxaudiosystems.com>2012-11-29 21:55:17 +0000
committerPaul Davis <paul@linuxaudiosystems.com>2012-11-29 21:55:17 +0000
commit7bf7e6686ab8b039e34eefa9677bbd64a5553eb4 (patch)
tree3e66e23a4610988112eb6c4a4d6ccda9fea33fab
parent339abb0b75b2035afe5d5ebeb01eb00cc6869407 (diff)
new gtk/gdk patch for fullscreen on os x pre-lion
git-svn-id: svn://localhost/ardour2/branches/2.0-ongoing@13568 d708f5d6-7413-0410-9779-e7cbd77b26cf
-rw-r--r--tools/current-gtk-patches/gdk-fullscreen.patch84
1 files changed, 84 insertions, 0 deletions
diff --git a/tools/current-gtk-patches/gdk-fullscreen.patch b/tools/current-gtk-patches/gdk-fullscreen.patch
new file mode 100644
index 0000000000..d845b4059e
--- /dev/null
+++ b/tools/current-gtk-patches/gdk-fullscreen.patch
@@ -0,0 +1,84 @@
+diff --git a/gdk/quartz/gdkwindow-quartz.c b/gdk/quartz/gdkwindow-quartz.c
+index 8e12ae6..41a391a 100644
+--- a/gdk/quartz/gdkwindow-quartz.c
++++ b/gdk/quartz/gdkwindow-quartz.c
+@@ -2674,17 +2674,31 @@ gdk_window_set_decorations (GdkWindow *window,
+ }
+ else
+ {
++ NSString* title = [impl->toplevel title];
++ int has_shadow = [impl->toplevel hasShadow];
++ int level = [impl->toplevel level];
++ NSColor* bg = [impl->toplevel backgroundColor];
++ NSScreen* the_screen = [impl->toplevel screen];
++
+ [impl->toplevel release];
++
+ impl->toplevel = [[GdkQuartzWindow alloc] initWithContentRect:rect
+- styleMask:new_mask
+- backing:NSBackingStoreBuffered
+- defer:NO];
+- [impl->toplevel setHasShadow: window_type_hint_to_shadow (impl->type_hint)];
+- [impl->toplevel setLevel: window_type_hint_to_level (impl->type_hint)];
++ styleMask:new_mask
++ backing:NSBackingStoreBuffered
++ defer:YES
++ screen:the_screen];
++ [impl->toplevel setHasShadow:has_shadow];
++ [impl->toplevel setLevel:level];
++ [impl->toplevel setTitle:title];
++ [impl->toplevel setBackgroundColor:bg];
++
+ [impl->toplevel setContentView:old_view];
+ }
+
+- [impl->toplevel setFrame:rect display:YES];
++ if (new_mask == NSBorderlessWindowMask)
++ [impl->toplevel setContentSize:rect.size];
++ else
++ [impl->toplevel setFrame:rect display:TRUE];
+
+ /* Invalidate the window shadow for non-opaque views that have shadow
+ * enabled, to get the shadow shape updated.
+@@ -2880,6 +2894,7 @@ gdk_window_fullscreen (GdkWindow *window)
+ {
+ FullscreenSavedGeometry *geometry;
+ GdkWindowObject *private = (GdkWindowObject *) window;
++ GdkWindowImplQuartz *impl = GDK_WINDOW_IMPL_QUARTZ (private->impl);
+ NSRect frame;
+
+ if (GDK_WINDOW_DESTROYED (window) ||
+@@ -2905,10 +2920,14 @@ gdk_window_fullscreen (GdkWindow *window)
+
+ gdk_window_set_decorations (window, 0);
+
+- frame = [[NSScreen mainScreen] frame];
++ frame = [[impl->toplevel screen] frame];
+ move_resize_window_internal (window,
+ 0, 0,
+ frame.size.width, frame.size.height);
++ [impl->toplevel setContentSize:frame.size];
++ [impl->toplevel makeKeyAndOrderFront:impl->toplevel];
++
++ clear_toplevel_order ();
+ }
+
+ SetSystemUIMode (kUIModeAllHidden, kUIOptionAutoShowMenuBar);
+@@ -2919,6 +2938,8 @@ gdk_window_fullscreen (GdkWindow *window)
+ void
+ gdk_window_unfullscreen (GdkWindow *window)
+ {
++ GdkWindowObject *private = (GdkWindowObject *) window;
++ GdkWindowImplQuartz *impl = GDK_WINDOW_IMPL_QUARTZ (private->impl);
+ FullscreenSavedGeometry *geometry;
+
+ if (GDK_WINDOW_DESTROYED (window) ||
+@@ -2940,6 +2961,8 @@ gdk_window_unfullscreen (GdkWindow *window)
+
+ g_object_set_data (G_OBJECT (window), FULLSCREEN_DATA, NULL);
+
++ [impl->toplevel makeKeyAndOrderFront:impl->toplevel];
++
+ gdk_synthesize_window_state (window, GDK_WINDOW_STATE_FULLSCREEN, 0);
+ }
+ } \ No newline at end of file