Przeglądaj źródła

sokol_app.h: implement toggle fullscreen for macOS

Andre Weissflog 5 lat temu
rodzic
commit
835f3cc8ec
1 zmienionych plików z 22 dodań i 1 usunięć
  1. 22 1
      sokol_app.h

+ 22 - 1
sokol_app.h

@@ -1488,6 +1488,15 @@ _SOKOL_PRIVATE void _sapp_macos_frame(void) {
     }
 }
 
+_SOKOL_PRIVATE void _sapp_macos_toggle_fullscreen(void) {
+    /* NOTE: the _sapp.fullscreen flag is also notified by the
+       windowDidEnterFullscreen / windowDidExitFullscreen
+       event handlers
+    */
+    _sapp.fullscreen = !_sapp.fullscreen;
+    [_sapp_macos_window_obj toggleFullScreen:nil];
+}
+
 @implementation _sapp_macos_app_delegate
 - (void)applicationDidFinishLaunching:(NSNotification*)aNotification {
     _SOKOL_UNUSED(aNotification);
@@ -1684,6 +1693,16 @@ _SOKOL_PRIVATE void _sapp_macos_app_event(sapp_event_type type) {
     _SOKOL_UNUSED(notification);
     _sapp_macos_app_event(SAPP_EVENTTYPE_RESTORED);
 }
+
+- (void)windowDidEnterFullScreen:(NSNotification*)notification {
+    _SOKOL_UNUSED(notification);
+    _sapp.fullscreen = true;
+}
+
+- (void)windowDidExitFullScreen:(NSNotification*)notification {
+    _SOKOL_UNUSED(notification);
+    _sapp.fullscreen = false;
+}
 @end
 
 #if defined(SOKOL_METAL)
@@ -7817,7 +7836,9 @@ SOKOL_API_DECL bool sapp_is_fullscreen(void) {
 }
 
 SOKOL_API_DECL void sapp_toggle_fullscreen(void) {
-    #if defined(_WIN32)
+    #if defined(__APPLE__) && !TARGET_OS_IPHONE
+    _sapp_macos_toggle_fullscreen();
+    #elif defined(_WIN32)
     _sapp_win32_toggle_fullscreen();
     #endif
 }