From b5798326e8cf42dbfb577a812bea34bdc323eff9 Mon Sep 17 00:00:00 2001 From: Shelley Vohr Date: Tue, 13 Aug 2019 08:48:22 -0700 Subject: [PATCH] feat: add dontAddToRecent to windows showOpenDialog (#19669) --- docs/api/dialog.md | 2 ++ lib/browser/api/dialog.js | 9 +++++---- shell/browser/ui/file_dialog.h | 9 +++++---- shell/browser/ui/file_dialog_win.cc | 2 ++ 4 files changed, 14 insertions(+), 8 deletions(-) diff --git a/docs/api/dialog.md b/docs/api/dialog.md index 07404cf869023..2579acfcb6c89 100644 --- a/docs/api/dialog.md +++ b/docs/api/dialog.md @@ -48,6 +48,7 @@ The `dialog` module has the following methods: their target path. * `treatPackageAsDirectory` _macOS_ - Treat packages, such as `.app` folders, as a directory instead of a file. + * `dontAddToRecent` _Windows_ - Do not add the item being opened to the recent documents list. * `message` String (optional) _macOS_ - Message to display above input boxes. * `securityScopedBookmarks` Boolean (optional) _macOS_ _mas_ - Create [security scoped bookmarks](https://developer.apple.com/library/content/documentation/Security/Conceptual/AppSandboxDesignGuide/AppSandboxInDepth/AppSandboxInDepth.html#//apple_ref/doc/uid/TP40011183-CH3-SW16) when packaged for the Mac App Store. @@ -108,6 +109,7 @@ dialog.showOpenDialogSync(mainWindow, { their target path. * `treatPackageAsDirectory` _macOS_ - Treat packages, such as `.app` folders, as a directory instead of a file. + * `dontAddToRecent` _Windows_ - Do not add the item being opened to the recent documents list. * `message` String (optional) _macOS_ - Message to display above input boxes. * `securityScopedBookmarks` Boolean (optional) _macOS_ _mas_ - Create [security scoped bookmarks](https://developer.apple.com/library/content/documentation/Security/Conceptual/AppSandboxDesignGuide/AppSandboxInDepth/AppSandboxInDepth.html#//apple_ref/doc/uid/TP40011183-CH3-SW16) when packaged for the Mac App Store. diff --git a/lib/browser/api/dialog.js b/lib/browser/api/dialog.js index 31d34af7aefe3..13e58f899ec60 100644 --- a/lib/browser/api/dialog.js +++ b/lib/browser/api/dialog.js @@ -8,11 +8,12 @@ const fileDialogProperties = { openFile: 1 << 0, openDirectory: 1 << 1, multiSelections: 1 << 2, - createDirectory: 1 << 3, + createDirectory: 1 << 3, // macOS showHiddenFiles: 1 << 4, - promptToCreate: 1 << 5, - noResolveAliases: 1 << 6, - treatPackageAsDirectory: 1 << 7 + promptToCreate: 1 << 5, // Windows + noResolveAliases: 1 << 6, // macOS + treatPackageAsDirectory: 1 << 7, // macOS + dontAddToRecent: 1 << 8 // Windows } const normalizeAccessKey = (text) => { diff --git a/shell/browser/ui/file_dialog.h b/shell/browser/ui/file_dialog.h index 0d6900c831aee..04f0b7e16c0b5 100644 --- a/shell/browser/ui/file_dialog.h +++ b/shell/browser/ui/file_dialog.h @@ -28,11 +28,12 @@ enum FileDialogProperty { FILE_DIALOG_OPEN_FILE = 1 << 0, FILE_DIALOG_OPEN_DIRECTORY = 1 << 1, FILE_DIALOG_MULTI_SELECTIONS = 1 << 2, - FILE_DIALOG_CREATE_DIRECTORY = 1 << 3, + FILE_DIALOG_CREATE_DIRECTORY = 1 << 3, // macOS FILE_DIALOG_SHOW_HIDDEN_FILES = 1 << 4, - FILE_DIALOG_PROMPT_TO_CREATE = 1 << 5, - FILE_DIALOG_NO_RESOLVE_ALIASES = 1 << 6, - FILE_DIALOG_TREAT_PACKAGE_APP_AS_DIRECTORY = 1 << 7, + FILE_DIALOG_PROMPT_TO_CREATE = 1 << 5, // Windows + FILE_DIALOG_NO_RESOLVE_ALIASES = 1 << 6, // macOS + FILE_DIALOG_TREAT_PACKAGE_APP_AS_DIRECTORY = 1 << 7, // macOS + FILE_DIALOG_DONT_ADD_TO_RECENT = 1 << 8, // Windows }; struct DialogSettings { diff --git a/shell/browser/ui/file_dialog_win.cc b/shell/browser/ui/file_dialog_win.cc index 0192c1a375320..55a0d6e554815 100644 --- a/shell/browser/ui/file_dialog_win.cc +++ b/shell/browser/ui/file_dialog_win.cc @@ -234,6 +234,8 @@ bool ShowOpenDialogSync(const DialogSettings& settings, options |= FOS_FORCESHOWHIDDEN; if (settings.properties & FILE_DIALOG_PROMPT_TO_CREATE) options |= FOS_CREATEPROMPT; + if (settings.properties & FILE_DIALOG_DONT_ADD_TO_RECENT) + options |= FOS_DONTADDTORECENT; file_open_dialog->SetOptions(options); ApplySettings(file_open_dialog, settings);