mirror of
				https://bitbucket.org/chromiumembedded/cef
				synced 2025-06-05 21:39:12 +02:00 
			
		
		
		
	- Add open folder dialog support (FILE_DIALOG_OPEN_FOLDER mode) for CefBrowserHost::RunFileDialog (issue #1030).
- Standardize file dialog behavior across all platforms (issue #1492). -- Show a file type filter list on OS X. -- Show the file extensions as part of the filter list description on all platforms (e.g. "Image Types (*.png;*.gif;*.jpg)"). -- Rename the CefBrowserHost::RunFileDialog |accept_types| argument to |accept_filters| and expand support for filters that will be displayed as-is in addition to the currently supported mime-type and extension-based filters. For example, a filter value of "Supported Image Types|.png;.gif;.jpg" will display "Supported Image Types (*.png;*.gif;*.jpg)" in the filter drop-down list and accept *.png, *.gif and *.jpg files. -- Persist the selected filter item index by passing a new |selected_accept_filter| argument to CefBrowserHost::RunFileDialog and returning the newly selected index via the CefRunFileDialogCallback and CefFileDialogCallback callbacks. -- Rename the CefBrowserHost::RunFileDialog |default_file_name| argument to |default_file_path| and use the directory component, if any, to set the default directory location. If |default_file_path| ends in a trailing path separator it will be treated as a directory without a file name component. -- Add FILE_DIALOG_OVERWRITEPROMPT_FLAG and FILE_DIALOG_HIDEREADONLY_FLAG values to cef_file_dialog_mode_t for controlling those behaviors where possible. git-svn-id: https://chromiumembedded.googlecode.com/svn/trunk@1973 5089003a-bbd8-11dd-ad1f-f1f9622dbc98
This commit is contained in:
		@@ -246,29 +246,34 @@ void CEF_CALLBACK browser_host_set_zoom_level(struct _cef_browser_host_t* self,
 | 
			
		||||
 | 
			
		||||
void CEF_CALLBACK browser_host_run_file_dialog(struct _cef_browser_host_t* self,
 | 
			
		||||
    cef_file_dialog_mode_t mode, const cef_string_t* title,
 | 
			
		||||
    const cef_string_t* default_file_name, cef_string_list_t accept_types,
 | 
			
		||||
    cef_run_file_dialog_callback_t* callback) {
 | 
			
		||||
    const cef_string_t* default_file_path, cef_string_list_t accept_filters,
 | 
			
		||||
    int selected_accept_filter, cef_run_file_dialog_callback_t* callback) {
 | 
			
		||||
  // AUTO-GENERATED CONTENT - DELETE THIS COMMENT BEFORE MODIFYING
 | 
			
		||||
 | 
			
		||||
  DCHECK(self);
 | 
			
		||||
  if (!self)
 | 
			
		||||
    return;
 | 
			
		||||
  // Verify param: selected_accept_filter; type: simple_byval
 | 
			
		||||
  DCHECK_GE(selected_accept_filter, 0);
 | 
			
		||||
  if (selected_accept_filter < 0)
 | 
			
		||||
    return;
 | 
			
		||||
  // Verify param: callback; type: refptr_diff
 | 
			
		||||
  DCHECK(callback);
 | 
			
		||||
  if (!callback)
 | 
			
		||||
    return;
 | 
			
		||||
  // Unverified params: title, default_file_name, accept_types
 | 
			
		||||
  // Unverified params: title, default_file_path, accept_filters
 | 
			
		||||
 | 
			
		||||
  // Translate param: accept_types; type: string_vec_byref_const
 | 
			
		||||
  std::vector<CefString> accept_typesList;
 | 
			
		||||
  transfer_string_list_contents(accept_types, accept_typesList);
 | 
			
		||||
  // Translate param: accept_filters; type: string_vec_byref_const
 | 
			
		||||
  std::vector<CefString> accept_filtersList;
 | 
			
		||||
  transfer_string_list_contents(accept_filters, accept_filtersList);
 | 
			
		||||
 | 
			
		||||
  // Execute
 | 
			
		||||
  CefBrowserHostCppToC::Get(self)->RunFileDialog(
 | 
			
		||||
      mode,
 | 
			
		||||
      CefString(title),
 | 
			
		||||
      CefString(default_file_name),
 | 
			
		||||
      accept_typesList,
 | 
			
		||||
      CefString(default_file_path),
 | 
			
		||||
      accept_filtersList,
 | 
			
		||||
      selected_accept_filter,
 | 
			
		||||
      CefRunFileDialogCallbackCToCpp::Wrap(callback));
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -21,8 +21,8 @@
 | 
			
		||||
int CEF_CALLBACK dialog_handler_on_file_dialog(
 | 
			
		||||
    struct _cef_dialog_handler_t* self, cef_browser_t* browser,
 | 
			
		||||
    cef_file_dialog_mode_t mode, const cef_string_t* title,
 | 
			
		||||
    const cef_string_t* default_file_name, cef_string_list_t accept_types,
 | 
			
		||||
    cef_file_dialog_callback_t* callback) {
 | 
			
		||||
    const cef_string_t* default_file_path, cef_string_list_t accept_filters,
 | 
			
		||||
    int selected_accept_filter, cef_file_dialog_callback_t* callback) {
 | 
			
		||||
  // AUTO-GENERATED CONTENT - DELETE THIS COMMENT BEFORE MODIFYING
 | 
			
		||||
 | 
			
		||||
  DCHECK(self);
 | 
			
		||||
@@ -32,23 +32,28 @@ int CEF_CALLBACK dialog_handler_on_file_dialog(
 | 
			
		||||
  DCHECK(browser);
 | 
			
		||||
  if (!browser)
 | 
			
		||||
    return 0;
 | 
			
		||||
  // Verify param: selected_accept_filter; type: simple_byval
 | 
			
		||||
  DCHECK_GE(selected_accept_filter, 0);
 | 
			
		||||
  if (selected_accept_filter < 0)
 | 
			
		||||
    return 0;
 | 
			
		||||
  // Verify param: callback; type: refptr_diff
 | 
			
		||||
  DCHECK(callback);
 | 
			
		||||
  if (!callback)
 | 
			
		||||
    return 0;
 | 
			
		||||
  // Unverified params: title, default_file_name, accept_types
 | 
			
		||||
  // Unverified params: title, default_file_path, accept_filters
 | 
			
		||||
 | 
			
		||||
  // Translate param: accept_types; type: string_vec_byref_const
 | 
			
		||||
  std::vector<CefString> accept_typesList;
 | 
			
		||||
  transfer_string_list_contents(accept_types, accept_typesList);
 | 
			
		||||
  // Translate param: accept_filters; type: string_vec_byref_const
 | 
			
		||||
  std::vector<CefString> accept_filtersList;
 | 
			
		||||
  transfer_string_list_contents(accept_filters, accept_filtersList);
 | 
			
		||||
 | 
			
		||||
  // Execute
 | 
			
		||||
  bool _retval = CefDialogHandlerCppToC::Get(self)->OnFileDialog(
 | 
			
		||||
      CefBrowserCToCpp::Wrap(browser),
 | 
			
		||||
      mode,
 | 
			
		||||
      CefString(title),
 | 
			
		||||
      CefString(default_file_name),
 | 
			
		||||
      accept_typesList,
 | 
			
		||||
      CefString(default_file_path),
 | 
			
		||||
      accept_filtersList,
 | 
			
		||||
      selected_accept_filter,
 | 
			
		||||
      CefFileDialogCallbackCToCpp::Wrap(callback));
 | 
			
		||||
 | 
			
		||||
  // Return type: bool
 | 
			
		||||
 
 | 
			
		||||
@@ -17,16 +17,18 @@
 | 
			
		||||
// MEMBER FUNCTIONS - Body may be edited by hand.
 | 
			
		||||
 | 
			
		||||
void CEF_CALLBACK file_dialog_callback_cont(
 | 
			
		||||
    struct _cef_file_dialog_callback_t* self, cef_string_list_t file_paths) {
 | 
			
		||||
    struct _cef_file_dialog_callback_t* self, int selected_accept_filter,
 | 
			
		||||
    cef_string_list_t file_paths) {
 | 
			
		||||
  // AUTO-GENERATED CONTENT - DELETE THIS COMMENT BEFORE MODIFYING
 | 
			
		||||
 | 
			
		||||
  DCHECK(self);
 | 
			
		||||
  if (!self)
 | 
			
		||||
    return;
 | 
			
		||||
  // Verify param: file_paths; type: string_vec_byref_const
 | 
			
		||||
  DCHECK(file_paths);
 | 
			
		||||
  if (!file_paths)
 | 
			
		||||
  // Verify param: selected_accept_filter; type: simple_byval
 | 
			
		||||
  DCHECK_GE(selected_accept_filter, 0);
 | 
			
		||||
  if (selected_accept_filter < 0)
 | 
			
		||||
    return;
 | 
			
		||||
  // Unverified params: file_paths
 | 
			
		||||
 | 
			
		||||
  // Translate param: file_paths; type: string_vec_byref_const
 | 
			
		||||
  std::vector<CefString> file_pathsList;
 | 
			
		||||
@@ -34,6 +36,7 @@ void CEF_CALLBACK file_dialog_callback_cont(
 | 
			
		||||
 | 
			
		||||
  // Execute
 | 
			
		||||
  CefFileDialogCallbackCppToC::Get(self)->Continue(
 | 
			
		||||
      selected_accept_filter,
 | 
			
		||||
      file_pathsList);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -11,28 +11,24 @@
 | 
			
		||||
//
 | 
			
		||||
 | 
			
		||||
#include "libcef_dll/cpptoc/run_file_dialog_callback_cpptoc.h"
 | 
			
		||||
#include "libcef_dll/ctocpp/browser_host_ctocpp.h"
 | 
			
		||||
#include "libcef_dll/transfer_util.h"
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
// MEMBER FUNCTIONS - Body may be edited by hand.
 | 
			
		||||
 | 
			
		||||
void CEF_CALLBACK run_file_dialog_callback_cont(
 | 
			
		||||
    struct _cef_run_file_dialog_callback_t* self,
 | 
			
		||||
    struct _cef_browser_host_t* browser_host, cef_string_list_t file_paths) {
 | 
			
		||||
void CEF_CALLBACK run_file_dialog_callback_on_file_dialog_dismissed(
 | 
			
		||||
    struct _cef_run_file_dialog_callback_t* self, int selected_accept_filter,
 | 
			
		||||
    cef_string_list_t file_paths) {
 | 
			
		||||
  // AUTO-GENERATED CONTENT - DELETE THIS COMMENT BEFORE MODIFYING
 | 
			
		||||
 | 
			
		||||
  DCHECK(self);
 | 
			
		||||
  if (!self)
 | 
			
		||||
    return;
 | 
			
		||||
  // Verify param: browser_host; type: refptr_diff
 | 
			
		||||
  DCHECK(browser_host);
 | 
			
		||||
  if (!browser_host)
 | 
			
		||||
    return;
 | 
			
		||||
  // Verify param: file_paths; type: string_vec_byref_const
 | 
			
		||||
  DCHECK(file_paths);
 | 
			
		||||
  if (!file_paths)
 | 
			
		||||
  // Verify param: selected_accept_filter; type: simple_byval
 | 
			
		||||
  DCHECK_GE(selected_accept_filter, 0);
 | 
			
		||||
  if (selected_accept_filter < 0)
 | 
			
		||||
    return;
 | 
			
		||||
  // Unverified params: file_paths
 | 
			
		||||
 | 
			
		||||
  // Translate param: file_paths; type: string_vec_byref_const
 | 
			
		||||
  std::vector<CefString> file_pathsList;
 | 
			
		||||
@@ -40,7 +36,7 @@ void CEF_CALLBACK run_file_dialog_callback_cont(
 | 
			
		||||
 | 
			
		||||
  // Execute
 | 
			
		||||
  CefRunFileDialogCallbackCppToC::Get(self)->OnFileDialogDismissed(
 | 
			
		||||
      CefBrowserHostCToCpp::Wrap(browser_host),
 | 
			
		||||
      selected_accept_filter,
 | 
			
		||||
      file_pathsList);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
@@ -51,7 +47,8 @@ CefRunFileDialogCallbackCppToC::CefRunFileDialogCallbackCppToC(
 | 
			
		||||
    CefRunFileDialogCallback* cls)
 | 
			
		||||
    : CefCppToC<CefRunFileDialogCallbackCppToC, CefRunFileDialogCallback,
 | 
			
		||||
        cef_run_file_dialog_callback_t>(cls) {
 | 
			
		||||
  struct_.struct_.cont = run_file_dialog_callback_cont;
 | 
			
		||||
  struct_.struct_.on_file_dialog_dismissed =
 | 
			
		||||
      run_file_dialog_callback_on_file_dialog_dismissed;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
#ifndef NDEBUG
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user