From e824b6c910ff6b603c26ef2afe4b1b449ab43937 Mon Sep 17 00:00:00 2001 From: Cheng Zhao Date: Mon, 23 Sep 2013 19:42:07 +0800 Subject: [PATCH] :lipstick: Pick duplicate code together. --- browser/ui/file_dialog_mac.mm | 54 ++++++++++++++++++------------------------- 1 file changed, 22 insertions(+), 32 deletions(-) diff --git a/browser/ui/file_dialog_mac.mm b/browser/ui/file_dialog_mac.mm index 0770d0e..e4902e4 100644 --- a/browser/ui/file_dialog_mac.mm +++ b/browser/ui/file_dialog_mac.mm @@ -38,6 +38,7 @@ void SetupDialog(NSSavePanel* dialog, if (default_filename) [dialog setNameFieldStringValue:default_filename]; + [dialog setCanSelectHiddenExtension:YES]; [dialog setAllowsOtherFileTypes:YES]; } @@ -51,6 +52,25 @@ void SetupDialogForProperties(NSOpenPanel* dialog, int properties) { [dialog setAllowsMultipleSelection:YES]; } +// Run modal dialog with parent window and return user's choice. +int RunModalDialog(NSSavePanel* dialog, atom::NativeWindow* parent_window) { + __block int chosen = NSFileHandlingPanelCancelButton; + if (parent_window == NULL) { + chosen = [dialog runModal]; + } else { + NSWindow* window = parent_window->GetNativeWindow(); + + [dialog beginSheetModalForWindow:window + completionHandler:^(NSInteger c) { + chosen = c; + [NSApp stopModal]; + }]; + [NSApp runModalForWindow:window]; + } + + return chosen; +} + void ReadDialogPaths(NSOpenPanel* dialog, std::vector* paths) { NSArray* urls = [dialog URLs]; for (NSURL* url in urls) @@ -71,21 +91,7 @@ bool ShowOpenDialog(atom::NativeWindow* parent_window, SetupDialog(dialog, title, default_path); SetupDialogForProperties(dialog, properties); - __block int chosen = -1; - - if (parent_window == NULL) { - chosen = [dialog runModal]; - } else { - NSWindow* window = parent_window->GetNativeWindow(); - - [dialog beginSheetModalForWindow:window - completionHandler:^(NSInteger c) { - chosen = c; - [NSApp stopModal]; - }]; - [NSApp runModalForWindow:window]; - } - + int chosen = RunModalDialog(dialog, parent_window); if (chosen == NSFileHandlingPanelCancelButton) return false; @@ -129,23 +135,7 @@ bool ShowSaveDialog(atom::NativeWindow* parent_window, SetupDialog(dialog, title, default_path); - [dialog setCanSelectHiddenExtension:YES]; - - __block int chosen = -1; - - if (parent_window == NULL) { - chosen = [dialog runModal]; - } else { - NSWindow* window = parent_window->GetNativeWindow(); - - [dialog beginSheetModalForWindow:window - completionHandler:^(NSInteger c) { - chosen = c; - [NSApp stopModal]; - }]; - [NSApp runModalForWindow:window]; - } - + int chosen = RunModalDialog(dialog, parent_window); if (chosen == NSFileHandlingPanelCancelButton || ![[dialog URL] isFileURL]) return false; -- 2.7.4