Commit: 2fb928537104ec5a5060c29a6bc253906ff8a3dc Author: Yevgeny Makarov Date: Tue Feb 11 17:40:43 2020 +0100 Branches: master https://developer.blender.org/rB2fb928537104ec5a5060c29a6bc253906ff8a3dc
Fix T70039, T68707: issues when opening .blend file from Finder on macOS * Missing close dialog displayed to warn about unsaved changes. * No reaction when the file was opened on a different desktop. Differential Revision: https://developer.blender.org/D6765 =================================================================== M intern/ghost/intern/GHOST_SystemCocoa.mm M source/blender/windowmanager/intern/wm_window.c =================================================================== diff --git a/intern/ghost/intern/GHOST_SystemCocoa.mm b/intern/ghost/intern/GHOST_SystemCocoa.mm index 297b73f8b14..b65404cf9b1 100644 --- a/intern/ghost/intern/GHOST_SystemCocoa.mm +++ b/intern/ghost/intern/GHOST_SystemCocoa.mm @@ -1366,10 +1366,17 @@ void GHOST_SystemCocoa::handleQuitRequest() bool GHOST_SystemCocoa::handleOpenDocumentRequest(void *filepathStr) { NSString *filepath = (NSString *)filepathStr; - bool confirmOpen = true; NSArray *windowsList; char *temp_buff; size_t filenameTextSize; + + /* Check for blender opened windows and make the frontmost key. In case blender + * is minimized, opened on another desktop space, or in full-screen mode. */ + windowsList = [NSApp orderedWindows]; + if ([windowsList count]) { + [[windowsList objectAtIndex:0] makeKeyAndOrderFront:nil]; + } + GHOST_Window *window = (GHOST_Window *)m_windowManager->getActiveWindow(); if (!window) { @@ -1377,51 +1384,25 @@ bool GHOST_SystemCocoa::handleOpenDocumentRequest(void *filepathStr) } /* Discard event if we are in cursor grab sequence, - * it'll lead to "stuck cursor" situation if the alert panel is raised */ - if (window && window->getCursorGrabModeIsWarp()) + * it'll lead to "stuck cursor" situation if the alert panel is raised. */ + if (window && window->getCursorGrabModeIsWarp()) { return NO; - - // Check open windows if some changes are not saved - if (m_windowManager->getAnyModifiedState()) { - @autoreleasepool { - NSAlert *alert = [[NSAlert alloc] init]; - NSString *title = [NSString stringWithFormat:@"Opening %@", [filepath lastPathComponent]]; - NSString *text = @"Current document has not been saved.\nDo you really want to proceed?"; - [alert addButtonWithTitle:@"Open"]; - [alert addButtonWithTitle:@"Cancel"]; - [alert setMessageText:title]; - [alert setInformativeText:text]; - [alert setAlertStyle:NSAlertStyleInformational]; - confirmOpen = [alert runModal] == NSAlertFirstButtonReturn; - } - } - - // Give back focus to the blender window - windowsList = [NSApp orderedWindows]; - if ([windowsList count]) { - [[windowsList objectAtIndex:0] makeKeyAndOrderFront:nil]; } - if (confirmOpen) { - filenameTextSize = [filepath lengthOfBytesUsingEncoding:NSUTF8StringEncoding]; - - temp_buff = (char *)malloc(filenameTextSize + 1); - - if (temp_buff == NULL) { - return GHOST_kFailure; - } + filenameTextSize = [filepath lengthOfBytesUsingEncoding:NSUTF8StringEncoding]; + temp_buff = (char *)malloc(filenameTextSize + 1); - strncpy(temp_buff, [filepath cStringUsingEncoding:NSUTF8StringEncoding], filenameTextSize); + if (temp_buff == NULL) { + return GHOST_kFailure; + } - temp_buff[filenameTextSize] = '\0'; + strncpy(temp_buff, [filepath cStringUsingEncoding:NSUTF8StringEncoding], filenameTextSize); + temp_buff[filenameTextSize] = '\0'; - pushEvent(new GHOST_EventString( - getMilliSeconds(), GHOST_kEventOpenMainFile, window, (GHOST_TEventDataPtr)temp_buff)); + pushEvent(new GHOST_EventString( + getMilliSeconds(), GHOST_kEventOpenMainFile, window, (GHOST_TEventDataPtr)temp_buff)); - return YES; - } - else - return NO; + return YES; } GHOST_TSuccess GHOST_SystemCocoa::handleTabletEvent(void *eventPtr, short eventType) diff --git a/source/blender/windowmanager/intern/wm_window.c b/source/blender/windowmanager/intern/wm_window.c index 4f70eeefb76..148195df372 100644 --- a/source/blender/windowmanager/intern/wm_window.c +++ b/source/blender/windowmanager/intern/wm_window.c @@ -1450,7 +1450,8 @@ static int ghost_event_proc(GHOST_EventHandle evt, GHOST_TUserDataPtr C_void_ptr WM_operator_properties_create_ptr(&props_ptr, ot); RNA_string_set(&props_ptr, "filepath", path); - WM_operator_name_call_ptr(C, ot, WM_OP_EXEC_DEFAULT, &props_ptr); + RNA_boolean_set(&props_ptr, "display_file_selector", false); + WM_operator_name_call_ptr(C, ot, WM_OP_INVOKE_DEFAULT, &props_ptr); WM_operator_properties_free(&props_ptr); CTX_wm_window_set(C, NULL); _______________________________________________ Bf-blender-cvs mailing list [email protected] https://lists.blender.org/mailman/listinfo/bf-blender-cvs
