- fix KDE integration for file dialogs

OBS-URL: https://build.opensuse.org/package/show/mozilla:Factory/MozillaFirefox?expand=0&rev=305
This commit is contained in:
Wolfgang Rosenauer 2012-11-26 11:27:34 +00:00 committed by Git OBS Bridge
parent 662e67c339
commit b4e0dbd99d
2 changed files with 32 additions and 14 deletions

View File

@ -1,3 +1,8 @@
-------------------------------------------------------------------
Mon Nov 26 11:11:38 UTC 2012 - wr@rosenauer.org
- fix KDE integration for file dialogs
-------------------------------------------------------------------
Tue Nov 20 19:52:02 UTC 2012 - wr@rosenauer.org

View File

@ -3106,27 +3106,40 @@ diff --git a/widget/gtk2/nsFilePicker.cpp b/widget/gtk2/nsFilePicker.cpp
mFilters.AppendElement(filter);
mFilterNames.AppendElement(name);
@@ -369,16 +373,19 @@ nsFilePicker::GetFiles(nsISimpleEnumerat
return NS_ERROR_FAILURE;
}
@@ -388,16 +392,32 @@ nsFilePicker::Show(int16_t *aReturn)
NS_IMETHODIMP
nsFilePicker::Show(int16_t *aReturn)
nsFilePicker::Open(nsIFilePickerShownCallback *aCallback)
{
NS_ENSURE_ARG_POINTER(aReturn);
// Can't show two dialogs concurrently with the same filepicker
if (mRunning)
return NS_ERROR_NOT_AVAILABLE;
+ if( nsKDEUtils::kdeSupport())
+ return kdeFileDialog(aReturn);
+ // KDE file picker is not handled via callback
+ if( nsKDEUtils::kdeSupport()) {
+ int16_t result;
+ mCallback = aCallback;
+ mRunning = true;
+ kdeFileDialog(&result);
+ if (mCallback) {
+ mCallback->Done(result);
+ mCallback = nullptr;
+ } else {
+ mResult = result;
+ }
+ mRunning = false;
+ return NS_OK;
+ }
+
nsresult rv = Open(nullptr);
if (NS_FAILED(rv))
return rv;
nsXPIDLCString title;
title.Adopt(ToNewUTF8String(mTitle));
while (mRunning) {
g_main_context_iteration(nullptr, TRUE);
}
GtkWindow *parent_widget = get_gtk_window_for_nsiwidget(mParentWidget);
@@ -587,8 +594,235 @@ nsFilePicker::Done(GtkWidget* file_choos
GtkFileChooserAction action = GetGtkFileChooserAction(mMode);
const gchar *accept_button = (action == GTK_FILE_CHOOSER_ACTION_SAVE)
? GTK_STOCK_SAVE : GTK_STOCK_OPEN;
@@ -587,8 +607,235 @@ nsFilePicker::Done(GtkWidget* file_choos
if (mCallback) {
mCallback->Done(result);
mCallback = nullptr;