From f7fced09da8e318f3c45f3cdc65674345460f918 Mon Sep 17 00:00:00 2001 From: Ascrod <32915892+Ascrod@users.noreply.github.com> Date: Thu, 15 Aug 2019 06:03:42 -0400 Subject: Issue #999 - Disable native file picker by default. --- widget/gtk/nsFilePicker.cpp | 10 ++++++---- widget/gtk/nsFilePicker.h | 1 + 2 files changed, 7 insertions(+), 4 deletions(-) (limited to 'widget/gtk') diff --git a/widget/gtk/nsFilePicker.cpp b/widget/gtk/nsFilePicker.cpp index a2d2e1cff..05d8bb0f0 100644 --- a/widget/gtk/nsFilePicker.cpp +++ b/widget/gtk/nsFilePicker.cpp @@ -23,6 +23,7 @@ #include "nsNetUtil.h" #include "nsReadableUtils.h" #include "mozcontainer.h" +#include "mozilla/Preferences.h" #include "nsFilePicker.h" @@ -175,6 +176,7 @@ nsFilePicker::nsFilePicker() , mFileChooserDelegate(nullptr) #endif { + mUseNativeFileChooser = Preferences::GetBool("widget.allow-gtk-native-file-chooser", false); } nsFilePicker::~nsFilePicker() @@ -613,7 +615,7 @@ nsFilePicker::GtkFileChooserNew( GtkFileChooserAction, const gchar *, const gchar *)) dlsym(RTLD_DEFAULT, "gtk_file_chooser_native_new"); - if (sGtkFileChooserNativeNewPtr != nullptr) { + if (mUseNativeFileChooser && sGtkFileChooserNativeNewPtr != nullptr) { return (*sGtkFileChooserNativeNewPtr)(title, parent, action, accept_label, nullptr); } if (accept_label == nullptr) { @@ -633,7 +635,7 @@ nsFilePicker::GtkFileChooserShow(void *file_chooser) { static auto sGtkNativeDialogShowPtr = (void (*)(void *)) dlsym(RTLD_DEFAULT, "gtk_native_dialog_show"); - if (sGtkNativeDialogShowPtr != nullptr) { + if (mUseNativeFileChooser && sGtkNativeDialogShowPtr != nullptr) { (*sGtkNativeDialogShowPtr)(file_chooser); } else { g_signal_connect(file_chooser, "destroy", G_CALLBACK(OnDestroy), this); @@ -646,7 +648,7 @@ nsFilePicker::GtkFileChooserDestroy(void *file_chooser) { static auto sGtkNativeDialogDestroyPtr = (void (*)(void *)) dlsym(RTLD_DEFAULT, "gtk_native_dialog_destroy"); - if (sGtkNativeDialogDestroyPtr != nullptr) { + if (mUseNativeFileChooser && sGtkNativeDialogDestroyPtr != nullptr) { (*sGtkNativeDialogDestroyPtr)(file_chooser); } else { gtk_widget_destroy(GTK_WIDGET(file_chooser)); @@ -659,7 +661,7 @@ nsFilePicker::GtkFileChooserSetModal(void *file_chooser, { static auto sGtkNativeDialogSetModalPtr = (void (*)(void *, gboolean)) dlsym(RTLD_DEFAULT, "gtk_native_dialog_set_modal"); - if (sGtkNativeDialogSetModalPtr != nullptr) { + if (mUseNativeFileChooser && sGtkNativeDialogSetModalPtr != nullptr) { (*sGtkNativeDialogSetModalPtr)(file_chooser, modal); } else { GtkWindow *window = GTK_WINDOW(file_chooser); diff --git a/widget/gtk/nsFilePicker.h b/widget/gtk/nsFilePicker.h index f462ca324..e0a1d541d 100644 --- a/widget/gtk/nsFilePicker.h +++ b/widget/gtk/nsFilePicker.h @@ -86,6 +86,7 @@ private: #if (MOZ_WIDGET_GTK == 3) GtkFileChooserWidget *mFileChooserDelegate; #endif + bool mUseNativeFileChooser; }; #endif -- cgit v1.2.3