diff -r 4c520ebe1ad7 -r 2a0735b1eb92 mozilla-kde.patch --- a/mozilla-kde.patch Tue Jan 23 17:32:46 2024 +0100 +++ b/mozilla-kde.patch Thu Feb 22 20:31:18 2024 +0100 @@ -50,7 +50,7 @@ diff --git a/modules/libpref/Preferences.cpp b/modules/libpref/Preferences.cpp --- a/modules/libpref/Preferences.cpp +++ b/modules/libpref/Preferences.cpp -@@ -91,16 +91,17 @@ +@@ -90,16 +90,17 @@ #include "PLDHashTable.h" #include "prdtoa.h" #include "prlink.h" @@ -1235,7 +1235,7 @@ # include "Units.h" extern mozilla::LazyLogModule gWidgetLog; # define LOG(args) MOZ_LOG(gWidgetLog, mozilla::LogLevel::Debug, args) -@@ -305,17 +308,18 @@ nsFilePicker::AppendFilters(int32_t aFil +@@ -302,17 +305,18 @@ nsFilePicker::AppendFilters(int32_t aFil mAllowURLs = !!(aFilterMask & filterAllowURLs); return nsBaseFilePicker::AppendFilters(aFilterMask); } @@ -1255,19 +1255,18 @@ mFilters.AppendElement(filter); mFilterNames.AppendElement(name); -@@ -415,16 +419,41 @@ nsresult nsFilePicker::Show(nsIFilePicke +@@ -412,16 +416,39 @@ nsresult nsFilePicker::Show(nsIFilePicke return NS_OK; } NS_IMETHODIMP nsFilePicker::Open(nsIFilePickerShownCallback* aCallback) { // Can't show two dialogs concurrently with the same filepicker - if (mRunning) return NS_ERROR_NOT_AVAILABLE; + if (mFileChooser) return NS_ERROR_NOT_AVAILABLE; + // KDE file picker is not handled via callback + if (nsKDEUtils::kdeSupport()) { + mCallback = aCallback; -+ mRunning = true; + NS_ADDREF_THIS(); + g_idle_add( + [](gpointer data) -> gboolean { @@ -1280,7 +1279,6 @@ + } else { + queuedPicker->mResult = result; + } -+ queuedPicker->mRunning = false; + NS_RELEASE(queuedPicker); + return G_SOURCE_REMOVE; + }, @@ -1297,7 +1295,7 @@ GtkFileChooserAction action = GetGtkFileChooserAction(mMode); const gchar* accept_button; -@@ -696,16 +725,215 @@ void nsFilePicker::Done(void* file_choos +@@ -703,16 +730,215 @@ void nsFilePicker::Done(void* file_choos mCallback->Done(result); mCallback = nullptr; } else {