mozilla-kde.patch
changeset 881 1268ddc9dc16
parent 869 0dd25a92df97
child 885 ee3c462047d5
--- a/mozilla-kde.patch	Sat Aug 22 09:17:03 2015 +0200
+++ b/mozilla-kde.patch	Sun Aug 23 15:29:44 2015 +0200
@@ -1,5 +1,5 @@
 # HG changeset patch
-# Parent  5f8cbb078ab0d5696255c2f514c6333666b47da9
+# Parent  3f3d1e5db92a45cf3758ee5ba77c577fcfb364c9
 Description: Add KDE integration to Firefox (toolkit parts)
 Author: Wolfgang Rosenauer <wolfgang@rosenauer.org>
 Author: Lubos Lunak <lunak@suse.com>
@@ -46,7 +46,7 @@
  #include "prefread.h"
  #include "prefapi_private_data.h"
  
-@@ -1154,16 +1155,34 @@ pref_LoadPrefsInDir(nsIFile* aDir, char 
+@@ -1153,16 +1154,34 @@ pref_LoadPrefsInDir(nsIFile* aDir, char 
  
  static nsresult pref_LoadPrefsInDirList(const char *listId)
  {
@@ -81,7 +81,7 @@
      return NS_OK;
  
    bool hasMore;
-@@ -1179,17 +1198,17 @@ static nsresult pref_LoadPrefsInDirList(
+@@ -1178,17 +1197,17 @@ static nsresult pref_LoadPrefsInDirList(
  
      nsAutoCString leaf;
      path->GetNativeLeafName(leaf);
@@ -100,7 +100,7 @@
  {
    nsZipItemPtr<char> manifest(jarReader, name, true);
    NS_ENSURE_TRUE(manifest.Buffer(), NS_ERROR_NOT_AVAILABLE);
-@@ -1283,26 +1302,38 @@ static nsresult pref_InitInitialObjects(
+@@ -1282,26 +1301,38 @@ static nsresult pref_InitInitialObjects(
    /* these pref file names should not be used: we process them after all other application pref files for backwards compatibility */
    static const char* specialFiles[] = {
  #if defined(XP_MACOSX)
@@ -142,7 +142,7 @@
 diff --git a/python/mozbuild/mozpack/chrome/flags.py b/python/mozbuild/mozpack/chrome/flags.py
 --- a/python/mozbuild/mozpack/chrome/flags.py
 +++ b/python/mozbuild/mozpack/chrome/flags.py
-@@ -209,16 +209,17 @@ class Flags(OrderedDict):
+@@ -211,16 +211,17 @@ class Flags(OrderedDict):
          'contentaccessible': Flag,
          'os': StringFlag,
          'osversion': VersionFlag,
@@ -163,7 +163,7 @@
 diff --git a/python/mozbuild/mozpack/chrome/manifest.py b/python/mozbuild/mozpack/chrome/manifest.py
 --- a/python/mozbuild/mozpack/chrome/manifest.py
 +++ b/python/mozbuild/mozpack/chrome/manifest.py
-@@ -31,16 +31,17 @@ class ManifestEntry(object):
+@@ -33,16 +33,17 @@ class ManifestEntry(object):
          'application',
          'platformversion',
          'os',
@@ -184,7 +184,7 @@
 diff --git a/toolkit/components/downloads/moz.build b/toolkit/components/downloads/moz.build
 --- a/toolkit/components/downloads/moz.build
 +++ b/toolkit/components/downloads/moz.build
-@@ -67,14 +67,15 @@ if not CONFIG['MOZ_SUITE']:
+@@ -67,15 +67,16 @@ if not CONFIG['MOZ_SUITE']:
      ]
  
  FAIL_ON_WARNINGS = True
@@ -199,6 +199,7 @@
  ]
  
  DEFINES['GOOGLE_PROTOBUF_NO_RTTI'] = True
+ DEFINES['GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER'] = True
  
  CXXFLAGS += CONFIG['TK_CFLAGS']
 diff --git a/toolkit/components/downloads/nsDownloadManager.cpp b/toolkit/components/downloads/nsDownloadManager.cpp
@@ -775,7 +776,7 @@
 new file mode 100644
 --- /dev/null
 +++ b/toolkit/content/widgets/preferences-kde.xml
-@@ -0,0 +1,1357 @@
+@@ -0,0 +1,1403 @@
 +<?xml version="1.0"?>
 +
 +<!DOCTYPE bindings [
@@ -1961,6 +1962,10 @@
 +        <body>
 +        <![CDATA[
 +          // Write all values to preferences.
++          if (this._deferredValueUpdateElements.size) {
++            this._finalizeDeferredElements();
++          }
++
 +          var preferences = this.preferences;
 +          for (var i = 0; i < preferences.length; ++i) {
 +            var preference = preferences[i];
@@ -2037,15 +2042,57 @@
 +        </body>
 +      </method>
 +      
++      <field name="DeferredTask" readonly="true">
++        let targetObj = {};
++        Components.utils.import("resource://gre/modules/DeferredTask.jsm", targetObj);
++        targetObj.DeferredTask;
++      </field>
++      <method name="_deferredValueUpdate">
++        <parameter name="aElement"/>
++        <body>
++        <![CDATA[
++          delete aElement._deferredValueUpdateTask;
++          let preference = document.getElementById(aElement.getAttribute("preference"));
++          let prefVal = preference.getElementValue(aElement);
++          preference.value = prefVal;
++          this._deferredValueUpdateElements.delete(aElement);
++        ]]>
++        </body>
++      </method>
++      <field name="_deferredValueUpdateElements">
++        new Set();
++      </field>
++      <method name="_finalizeDeferredElements">
++        <body>
++        <![CDATA[
++          for (let el of this._deferredValueUpdateElements) {
++            if (el._deferredValueUpdateTask) {
++              el._deferredValueUpdateTask.finalize();
++            }
++          }
++        ]]>
++        </body>
++      </method>
 +      <method name="userChangedValue">
 +        <parameter name="aElement"/>
 +        <body>
 +        <![CDATA[
-+          var element = this.getPreferenceElement(aElement);
++          let element = this.getPreferenceElement(aElement);
 +          if (element.hasAttribute("preference")) {
-+            var preference = document.getElementById(element.getAttribute("preference"));
-+            var prefVal = preference.getElementValue(element);
-+            preference.value = prefVal;
++            if (element.getAttribute("delayprefsave") != "true") {
++              var preference = document.getElementById(element.getAttribute("preference"));
++              var prefVal = preference.getElementValue(element);
++              preference.value = prefVal;
++            } else {
++              if (!element._deferredValueUpdateTask) {
++                element._deferredValueUpdateTask = new this.DeferredTask(this._deferredValueUpdate.bind(this, element), 1000);
++                this._deferredValueUpdateElements.add(element);
++              } else {
++                // Each time the preference is changed, restart the delay.
++                element._deferredValueUpdateTask.disarm();
++              }
++              element._deferredValueUpdateTask.arm();
++            }
 +          }
 +        ]]>
 +        </body>
@@ -2230,11 +2277,11 @@
 diff --git a/toolkit/xre/moz.build b/toolkit/xre/moz.build
 --- a/toolkit/xre/moz.build
 +++ b/toolkit/xre/moz.build
-@@ -45,17 +45,19 @@ elif CONFIG['MOZ_WIDGET_TOOLKIT'] == 'qt
-     GENERATED_SOURCES += [
-         'moc_nsNativeAppSupportQt.cpp',
-     ]
+@@ -43,17 +43,19 @@ elif CONFIG['MOZ_WIDGET_TOOLKIT'] == 'co
+ elif CONFIG['MOZ_WIDGET_TOOLKIT'] == 'qt':
+     EXPORTS += ['nsQAppInstance.h']
      SOURCES += [
+         '!moc_nsNativeAppSupportQt.cpp',
          'nsNativeAppSupportQt.cpp',
          'nsQAppInstance.cpp',
      ]
@@ -3106,7 +3153,7 @@
 diff --git a/widget/gtk/moz.build b/widget/gtk/moz.build
 --- a/widget/gtk/moz.build
 +++ b/widget/gtk/moz.build
-@@ -79,16 +79,17 @@ else:
+@@ -80,16 +80,17 @@ else:
  include('/ipc/chromium/chromium-config.mozbuild')
  
  FINAL_LIBRARY = 'xul'
@@ -3158,11 +3205,11 @@
  using namespace mozilla;
  
  #define MAX_PREVIEW_SIZE 180
+ // bug 1184009
+ #define MAX_PREVIEW_SOURCE_SIZE 4096
  
  nsIFile *nsFilePicker::mPrevDisplayDirectory = nullptr;
- 
- void
-@@ -238,17 +240,19 @@ nsFilePicker::AppendFilters(int32_t aFil
+@@ -246,17 +248,19 @@ nsFilePicker::AppendFilters(int32_t aFil
    return nsBaseFilePicker::AppendFilters(aFilterMask);
  }
  
@@ -3183,7 +3230,7 @@
  
    mFilters.AppendElement(filter);
    mFilterNames.AppendElement(name);
-@@ -363,16 +367,32 @@ nsFilePicker::Show(int16_t *aReturn)
+@@ -371,16 +375,32 @@ nsFilePicker::Show(int16_t *aReturn)
  
  NS_IMETHODIMP
  nsFilePicker::Open(nsIFilePickerShownCallback *aCallback)
@@ -3216,7 +3263,7 @@
  
    GtkFileChooserAction action = GetGtkFileChooserAction(mMode);
    const gchar *accept_button = (action == GTK_FILE_CHOOSER_ACTION_SAVE)
-@@ -551,8 +571,235 @@ nsFilePicker::Done(GtkWidget* file_choos
+@@ -595,8 +615,235 @@ nsFilePicker::Done(GtkWidget* file_choos
    if (mCallback) {
      mCallback->Done(result);
      mCallback = nullptr;
@@ -3455,8 +3502,7 @@
 diff --git a/widget/gtk/nsFilePicker.h b/widget/gtk/nsFilePicker.h
 --- a/widget/gtk/nsFilePicker.h
 +++ b/widget/gtk/nsFilePicker.h
-@@ -68,11 +68,17 @@ protected:
-   nsString  mDefault;
+@@ -69,14 +69,20 @@ protected:
    nsString  mDefaultExtension;
  
    nsTArray<nsCString> mFilters;
@@ -3464,12 +3510,16 @@
  
  private:
    static nsIFile *mPrevDisplayDirectory;
-+
+ 
 +  bool kdeRunning();
 +  bool getKdeRunning();
 +  NS_IMETHODIMP kdeFileDialog(PRInt16 *aReturn);
 +  NS_IMETHODIMP kdeAppsDialog(PRInt16 *aReturn);
 +  nsCString kdeMakeFilter( int index );
++
+ #if (MOZ_WIDGET_GTK == 3)
+   GtkFileChooserWidget *mFileChooserDelegate;
+ #endif
  };
  
  #endif
@@ -3628,7 +3678,7 @@
 diff --git a/xpcom/io/nsLocalFileUnix.cpp b/xpcom/io/nsLocalFileUnix.cpp
 --- a/xpcom/io/nsLocalFileUnix.cpp
 +++ b/xpcom/io/nsLocalFileUnix.cpp
-@@ -44,16 +44,17 @@
+@@ -47,16 +47,17 @@
  #include "prproces.h"
  #include "nsIDirectoryEnumerator.h"
  #include "nsISimpleEnumerator.h"
@@ -3646,7 +3696,7 @@
  #include "prmem.h"
  #include "plbase64.h"
  
-@@ -1960,42 +1961,52 @@ nsLocalFile::SetPersistentDescriptor(con
+@@ -1963,42 +1964,52 @@ nsLocalFile::SetPersistentDescriptor(con
    return InitWithNativePath(aPersistentDescriptor);
  #endif
  }
@@ -3705,7 +3755,7 @@
      return rv;
    }
    return NS_ERROR_FAILURE;
-@@ -2003,16 +2014,22 @@ nsLocalFile::Reveal()
+@@ -2006,16 +2017,22 @@ nsLocalFile::Reveal()
    return NS_ERROR_FAILURE;
  #endif
  }