1
0
mirror of https://github.com/cookiengineer/audacity synced 2025-05-02 08:39:46 +02:00
audacity/mac/wxMac_additions/fullscreen.patch
Paul Licameli bc281fa7b4 Fix one of the patches to wxWidgets source for Mac...
... an inline function in a header was declared to return bool, but returned
nothing.  Now its type is void.

This function's undefined return value was not used anywhere.
2017-07-04 06:25:35 -04:00

109 lines
3.5 KiB
Diff

From 85106af5ce61eef45d2f416908a4ff7b64728124 Mon Sep 17 00:00:00 2001
From: Paul Licameli <paul.licameli@audacityteam.org>
Date: Wed, 7 Dec 2016 09:31:28 -0500
Subject: [PATCH] Correctly track the full-screen state on OSX 10.7 and later
---
include/wx/osx/cocoa/private.h | 3 +++
src/osx/cocoa/nonownedwnd.mm | 32 +++++++++++++++++++++++++++++++-
2 files changed, 34 insertions(+), 1 deletion(-)
diff --git a/include/wx/osx/cocoa/private.h b/include/wx/osx/cocoa/private.h
index ed731f7..0743ae9 100644
--- include/wx/osx/cocoa/private.h
+++ include/wx/osx/cocoa/private.h
@@ -239,6 +239,8 @@ public :
virtual bool ShowFullScreen(bool show, long style);
+ void NotifyFullScreen( bool fullScreen ) { m_isFullScreen = fullScreen; }
+
virtual void ShowWithoutActivating();
virtual void RequestUserAttention(int flags);
@@ -264,6 +266,7 @@ protected :
CGWindowLevel m_macWindowLevel;
WXWindow m_macWindow;
void * m_macFullScreenData ;
+ bool m_isFullScreen;
DECLARE_DYNAMIC_CLASS_NO_COPY(wxNonOwnedWindowCocoaImpl)
};
diff --git a/src/osx/cocoa/nonownedwnd.mm b/src/osx/cocoa/nonownedwnd.mm
index 9e79c6a..338bcf6 100644
--- src/osx/cocoa/nonownedwnd.mm
+++ src/osx/cocoa/nonownedwnd.mm
@@ -302,6 +302,10 @@ static NSResponder* s_nextFirstResponder = NULL;
- (void)windowDidMove:(NSNotification *)notification;
- (BOOL)windowShouldClose:(id)window;
- (BOOL)windowShouldZoom:(NSWindow *)window toFrame:(NSRect)newFrame;
+// - (void)windowWillEnterFullScreen:(NSNotification *)notification;
+- (void)windowDidEnterFullScreen:(NSNotification *)notification;
+// - (void)windowWillExitFullScreen:(NSNotification *)notification;
+- (void)windowDidExitFullScreen:(NSNotification *)notification;
@end
@@ -534,6 +538,20 @@ extern int wxOSXGetIdFromSelector(SEL action );
return true;
}
+- (void)windowDidEnterFullScreen:(NSNotification *)notification
+{
+ NSWindow* window = (NSWindow*) [notification object];
+ wxNonOwnedWindowCocoaImpl* windowimpl = [window WX_implementation];
+ windowimpl->NotifyFullScreen(true);
+}
+
+- (void)windowDidExitFullScreen:(NSNotification *)notification
+{
+ NSWindow* window = (NSWindow*) [notification object];
+ wxNonOwnedWindowCocoaImpl* windowimpl = [window WX_implementation];
+ windowimpl->NotifyFullScreen(false);
+}
+
@end
IMPLEMENT_DYNAMIC_CLASS( wxNonOwnedWindowCocoaImpl , wxNonOwnedWindowImpl )
@@ -543,12 +561,14 @@ wxNonOwnedWindowCocoaImpl::wxNonOwnedWindowCocoaImpl( wxNonOwnedWindow* nonowned
{
m_macWindow = NULL;
m_macFullScreenData = NULL;
+ m_isFullScreen = false;
}
wxNonOwnedWindowCocoaImpl::wxNonOwnedWindowCocoaImpl()
{
m_macWindow = NULL;
m_macFullScreenData = NULL;
+ m_isFullScreen = false;
}
wxNonOwnedWindowCocoaImpl::~wxNonOwnedWindowCocoaImpl()
@@ -924,11 +944,21 @@ typedef struct
bool wxNonOwnedWindowCocoaImpl::IsFullScreen() const
{
- return m_macFullScreenData != NULL ;
+ if ( [ m_macWindow respondsToSelector:@selector(toggleFullScreen:) ] )
+ return m_isFullScreen;
+ else
+ return m_macFullScreenData != NULL ;
}
bool wxNonOwnedWindowCocoaImpl::ShowFullScreen(bool show, long WXUNUSED(style))
{
+ if ( [ m_macWindow respondsToSelector:@selector(toggleFullScreen:) ] )
+ {
+ if ( show != m_isFullScreen )
+ m_isFullScreen = show, [m_macWindow toggleFullScreen: nil];
+ return true;
+ }
+
if ( show )
{
FullScreenData *data = (FullScreenData *)m_macFullScreenData ;
--
2.3.2 (Apple Git-55)