SDL: cocoa: Implement FlashWindow

From 56b77b12bcf379552d15d619a02477968b658da5 Mon Sep 17 00:00:00 2001
From: Ethan Lee <[EMAIL REDACTED]>
Date: Fri, 4 Jun 2021 19:51:58 -0400
Subject: [PATCH] cocoa: Implement FlashWindow

---
 src/video/cocoa/SDL_cocoavideo.m  | 1 +
 src/video/cocoa/SDL_cocoawindow.h | 1 +
 src/video/cocoa/SDL_cocoawindow.m | 9 +++++++++
 3 files changed, 11 insertions(+)

diff --git a/src/video/cocoa/SDL_cocoavideo.m b/src/video/cocoa/SDL_cocoavideo.m
index f16b8aa66..cf6d8468f 100644
--- a/src/video/cocoa/SDL_cocoavideo.m
+++ b/src/video/cocoa/SDL_cocoavideo.m
@@ -107,6 +107,7 @@
     device->GetWindowWMInfo = Cocoa_GetWindowWMInfo;
     device->SetWindowHitTest = Cocoa_SetWindowHitTest;
     device->AcceptDragAndDrop = Cocoa_AcceptDragAndDrop;
+    device->FlashWindow = Cocoa_FlashWindow;
 
     device->shape_driver.CreateShaper = Cocoa_CreateShaper;
     device->shape_driver.SetWindowShape = Cocoa_SetWindowShape;
diff --git a/src/video/cocoa/SDL_cocoawindow.h b/src/video/cocoa/SDL_cocoawindow.h
index a2000d420..96f84f20f 100644
--- a/src/video/cocoa/SDL_cocoawindow.h
+++ b/src/video/cocoa/SDL_cocoawindow.h
@@ -151,6 +151,7 @@ extern void Cocoa_DestroyWindow(_THIS, SDL_Window * window);
 extern SDL_bool Cocoa_GetWindowWMInfo(_THIS, SDL_Window * window, struct SDL_SysWMinfo *info);
 extern int Cocoa_SetWindowHitTest(SDL_Window *window, SDL_bool enabled);
 extern void Cocoa_AcceptDragAndDrop(SDL_Window * window, SDL_bool accept);
+extern int Cocoa_FlashWindow(_THIS, SDL_Window * window, Uint32 flash_count);
 
 #endif /* SDL_cocoawindow_h_ */
 
diff --git a/src/video/cocoa/SDL_cocoawindow.m b/src/video/cocoa/SDL_cocoawindow.m
index 2b5d2de62..148e2fbb0 100644
--- a/src/video/cocoa/SDL_cocoawindow.m
+++ b/src/video/cocoa/SDL_cocoawindow.m
@@ -2116,6 +2116,15 @@ take effect properly (e.g. setting the window size, etc.)
     }
 }
 
+int
+Cocoa_FlashWindow(_THIS, SDL_Window *window, Uint32 flash_count)
+{ @autoreleasepool
+{
+    /* Note that this is app-wide and not window-specific! */
+    [NSApp requestUserAttention:NSInformationalRequest];
+    return 0;
+}}
+
 int
 Cocoa_SetWindowOpacity(_THIS, SDL_Window * window, float opacity)
 {