mozilla-kde.patch
branchfirefox17
changeset 591 9441c606ec3c
parent 546 2c9448fe783c
equal deleted inserted replaced
579:221f83986218 591:9441c606ec3c
  3104    CopyUTF16toUTF8(aFilter, filter);
  3104    CopyUTF16toUTF8(aFilter, filter);
  3105    CopyUTF16toUTF8(aTitle, name);
  3105    CopyUTF16toUTF8(aTitle, name);
  3106  
  3106  
  3107    mFilters.AppendElement(filter);
  3107    mFilters.AppendElement(filter);
  3108    mFilterNames.AppendElement(name);
  3108    mFilterNames.AppendElement(name);
  3109 @@ -369,16 +373,19 @@ nsFilePicker::GetFiles(nsISimpleEnumerat
  3109 @@ -388,16 +392,32 @@ nsFilePicker::Show(int16_t *aReturn)
  3110    return NS_ERROR_FAILURE;
       
  3111  }
       
  3112  
  3110  
  3113  NS_IMETHODIMP
  3111  NS_IMETHODIMP
  3114  nsFilePicker::Show(int16_t *aReturn)
  3112  nsFilePicker::Open(nsIFilePickerShownCallback *aCallback)
  3115  {
  3113  {
  3116    NS_ENSURE_ARG_POINTER(aReturn);
  3114    // Can't show two dialogs concurrently with the same filepicker
  3117  
  3115    if (mRunning)
  3118 +  if( nsKDEUtils::kdeSupport())
  3116      return NS_ERROR_NOT_AVAILABLE;
  3119 +    return kdeFileDialog(aReturn);
  3117  
  3120 +
  3118 +  // KDE file picker is not handled via callback
  3121    nsresult rv = Open(nullptr);
  3119 +  if( nsKDEUtils::kdeSupport()) {
  3122    if (NS_FAILED(rv))
  3120 +    int16_t result;
  3123      return rv;
  3121 +    mCallback = aCallback;
  3124  
  3122 +    mRunning = true;
  3125    while (mRunning) {
  3123 +    kdeFileDialog(&result);
  3126      g_main_context_iteration(nullptr, TRUE);
  3124 +    if (mCallback) {
  3127    }
  3125 +      mCallback->Done(result);
  3128  
  3126 +      mCallback = nullptr;
  3129 @@ -587,8 +594,235 @@ nsFilePicker::Done(GtkWidget* file_choos
  3127 +    } else {
       
  3128 +      mResult = result;
       
  3129 +    }
       
  3130 +    mRunning = false;
       
  3131 +    return NS_OK;
       
  3132 +  }
       
  3133 +
       
  3134    nsXPIDLCString title;
       
  3135    title.Adopt(ToNewUTF8String(mTitle));
       
  3136  
       
  3137    GtkWindow *parent_widget = get_gtk_window_for_nsiwidget(mParentWidget);
       
  3138  
       
  3139    GtkFileChooserAction action = GetGtkFileChooserAction(mMode);
       
  3140    const gchar *accept_button = (action == GTK_FILE_CHOOSER_ACTION_SAVE)
       
  3141                                 ? GTK_STOCK_SAVE : GTK_STOCK_OPEN;
       
  3142 @@ -587,8 +607,235 @@ nsFilePicker::Done(GtkWidget* file_choos
  3130    if (mCallback) {
  3143    if (mCallback) {
  3131      mCallback->Done(result);
  3144      mCallback->Done(result);
  3132      mCallback = nullptr;
  3145      mCallback = nullptr;
  3133    } else {
  3146    } else {
  3134      mResult = result;
  3147      mResult = result;