From b11bfc8a7390243f35ea81e640da9e3064259db6 Mon Sep 17 00:00:00 2001 From: Twinaphex Date: Sun, 12 Jun 2016 19:29:07 +0200 Subject: [PATCH] Add ui_companion_driver_get_main_window --- ui/drivers/cocoa/cocoa_common.h | 9 --------- ui/drivers/cocoa/ui_cocoa_msg_window.m | 2 +- ui/drivers/ui_cocoa.m | 17 ++++++++++++++++- ui/drivers/ui_cocoatouch.m | 1 + ui/drivers/ui_null.c | 1 + ui/drivers/ui_qt.cpp | 1 + ui/drivers/ui_win32.c | 1 + ui/ui_companion_driver.c | 8 ++++++++ ui/ui_companion_driver.h | 3 +++ 9 files changed, 32 insertions(+), 11 deletions(-) diff --git a/ui/drivers/cocoa/cocoa_common.h b/ui/drivers/cocoa/cocoa_common.h index 10af179091..07654189e5 100644 --- a/ui/drivers/cocoa/cocoa_common.h +++ b/ui/drivers/cocoa/cocoa_common.h @@ -101,15 +101,6 @@ void get_ios_version(int *major, int *minor); @end -@interface RetroArch_OSX : NSObject -{ - NSWindow* _window; -} - -@property (nonatomic, retain) NSWindow IBOutlet* window; - -@end - #endif #define BOXSTRING(x) [NSString stringWithUTF8String:x] diff --git a/ui/drivers/cocoa/ui_cocoa_msg_window.m b/ui/drivers/cocoa/ui_cocoa_msg_window.m index f09672b2d0..78449181f5 100644 --- a/ui/drivers/cocoa/ui_cocoa_msg_window.m +++ b/ui/drivers/cocoa/ui_cocoa_msg_window.m @@ -72,7 +72,7 @@ static enum ui_msg_window_response ui_msg_window_cocoa_dialog(ui_msg_window_stat break; } - [alert beginSheetModalForWindow:((RetroArch_OSX*)[[NSApplication sharedApplication] delegate]).window + [alert beginSheetModalForWindow:ui_companion_driver_get_main_window() modalDelegate:apple_platform didEndSelector:@selector(alertDidEnd:returnCode:contextInfo:) contextInfo:nil]; diff --git a/ui/drivers/ui_cocoa.m b/ui/drivers/ui_cocoa.m index 9b702a50f5..160ea32ac2 100644 --- a/ui/drivers/ui_cocoa.m +++ b/ui/drivers/ui_cocoa.m @@ -37,6 +37,15 @@ id apple_platform; +@interface RetroArch_OSX : NSObject +{ + NSWindow* _window; +} + +@property (nonatomic, retain) NSWindow IBOutlet* window; + +@end + static void app_terminate(void) { [[NSApplication sharedApplication] terminate:nil]; @@ -384,7 +393,7 @@ static void open_document_handler(ui_browser_window_state_t *state, bool result) if (browser) { - ui_browser_window_state_t browser_state = {0}; + ui_browser_window_state_t browser_state = {{0}}; settings_t *settings = config_get_ptr(); NSString *startdir = BOXSTRING(settings->directory.menu_content); @@ -546,6 +555,11 @@ static void ui_companion_cocoa_notify_list_pushed(void *data, (void)menu_list; } +static void *ui_companion_cocoa_get_main_window(void *data) +{ + return ((RetroArch_OSX*)[[NSApplication sharedApplication] delegate]).window; +} + const ui_companion_driver_t ui_companion_cocoa = { ui_companion_cocoa_init, ui_companion_cocoa_deinit, @@ -557,6 +571,7 @@ const ui_companion_driver_t ui_companion_cocoa = { NULL, NULL, NULL, + ui_companion_cocoa_get_main_window, &ui_browser_window_cocoa, &ui_msg_window_cocoa, &ui_window_cocoa, diff --git a/ui/drivers/ui_cocoatouch.m b/ui/drivers/ui_cocoatouch.m index 2f3df5027e..c694516846 100644 --- a/ui/drivers/ui_cocoatouch.m +++ b/ui/drivers/ui_cocoatouch.m @@ -689,6 +689,7 @@ const ui_companion_driver_t ui_companion_cocoatouch = { ui_companion_cocoatouch_notify_refresh, ui_companion_cocoatouch_msg_queue_push, ui_companion_cocoatouch_render_messagebox, + NULL, &ui_browser_window_null, &ui_msg_window_null, &ui_window_null, diff --git a/ui/drivers/ui_null.c b/ui/drivers/ui_null.c index d1520c7875..f43fcd29f7 100644 --- a/ui/drivers/ui_null.c +++ b/ui/drivers/ui_null.c @@ -88,6 +88,7 @@ const ui_companion_driver_t ui_companion_null = { NULL, NULL, NULL, + NULL, &ui_browser_window_null, &ui_msg_window_null, &ui_window_null, diff --git a/ui/drivers/ui_qt.cpp b/ui/drivers/ui_qt.cpp index 9257bf907e..16453bb419 100644 --- a/ui/drivers/ui_qt.cpp +++ b/ui/drivers/ui_qt.cpp @@ -144,6 +144,7 @@ const ui_companion_driver_t ui_companion_qt = { NULL, NULL, NULL, + NULL, &ui_browser_window_qt, &ui_msg_window_qt, &ui_window_qt, diff --git a/ui/drivers/ui_win32.c b/ui/drivers/ui_win32.c index 1b32658669..31b7ac6700 100644 --- a/ui/drivers/ui_win32.c +++ b/ui/drivers/ui_win32.c @@ -741,6 +741,7 @@ const ui_companion_driver_t ui_companion_win32 = { NULL, NULL, NULL, + NULL, &ui_browser_window_win32, &ui_msg_window_win32, &ui_window_win32, diff --git a/ui/ui_companion_driver.c b/ui/ui_companion_driver.c index 8764cbe159..c9124c325a 100644 --- a/ui/ui_companion_driver.c +++ b/ui/ui_companion_driver.c @@ -201,3 +201,11 @@ const ui_application_t *ui_companion_driver_get_application_ptr(void) return NULL; return ui->application; } + +void *ui_companion_driver_get_main_window(void) +{ + const ui_companion_driver_t *ui = ui_companion_get_ptr(); + if (!ui || !ui->get_main_window) + return NULL; + return ui->get_main_window(ui_companion_data); +} diff --git a/ui/ui_companion_driver.h b/ui/ui_companion_driver.h index 52cfbdab7b..c611fde7eb 100644 --- a/ui/ui_companion_driver.h +++ b/ui/ui_companion_driver.h @@ -133,6 +133,7 @@ typedef struct ui_companion_driver void (*notify_refresh)(void *data); void (*msg_queue_push)(const char *msg, unsigned priority, unsigned duration, bool flush); void (*render_messagebox)(const char *msg); + void *(*get_main_window)(void *data); const ui_browser_window_t *browser_window; const ui_msg_window_t *msg_window; const ui_window_t *window; @@ -215,6 +216,8 @@ const ui_window_t *ui_companion_driver_get_window_ptr(void); const ui_application_t *ui_companion_driver_get_application_ptr(void); +void *ui_companion_driver_get_main_window(void); + RETRO_END_DECLS #endif