Update to Firefox 38 build 2

This commit is contained in:
Martin Stransky 2015-05-05 11:11:33 +02:00
parent 9c9e077f37
commit d7d80e3abb
6 changed files with 35 additions and 901 deletions

2
.gitignore vendored
View File

@ -135,3 +135,5 @@ firefox-3.6.4.source.tar.bz2
/firefox-37.0.1.source.tar.bz2
/firefox-37.0.2.source.tar.bz2
/firefox-langpacks-37.0.2-20150416.tar.xz
/firefox-38.0.source.tar.bz2
/firefox-langpacks-38.0-20150505.tar.bz2

View File

@ -1,6 +1,6 @@
diff -up mozilla-release/browser/app/profile/firefox.js.addons mozilla-release/browser/app/profile/firefox.js
--- mozilla-release/browser/app/profile/firefox.js.addons 2014-08-26 05:37:44.000000000 +0200
+++ mozilla-release/browser/app/profile/firefox.js 2014-08-26 15:20:52.114149955 +0200
diff -up mozilla-aurora/browser/app/profile/firefox.js.addons mozilla-aurora/browser/app/profile/firefox.js
--- mozilla-aurora/browser/app/profile/firefox.js.addons 2015-03-12 13:21:14.000000000 +0100
+++ mozilla-aurora/browser/app/profile/firefox.js 2015-03-12 14:25:39.974909169 +0100
@@ -65,7 +65,8 @@ pref("extensions.hotfix.certs.1.sha1Fing
// Disable add-ons that are not installed by the user in all scopes by default.
@ -11,17 +11,29 @@ diff -up mozilla-release/browser/app/profile/firefox.js.addons mozilla-release/b
// Dictionary download preference
pref("browser.dictionaries.download.url", "https://addons.mozilla.org/%LOCALE%/firefox/dictionaries/");
diff -up mozilla-release/toolkit/mozapps/extensions/internal/XPIProvider.jsm.addons mozilla-release/toolkit/mozapps/extensions/internal/XPIProvider.jsm
--- mozilla-release/toolkit/mozapps/extensions/internal/XPIProvider.jsm.addons 2014-08-26 15:20:52.115149958 +0200
+++ mozilla-release/toolkit/mozapps/extensions/internal/XPIProvider.jsm 2014-08-26 15:29:16.229670636 +0200
@@ -1888,8 +1888,8 @@ this.XPIProvider = {
// Changes to installed extensions may have changed which theme is selected
this.applyThemeChange();
diff -up mozilla-aurora/toolkit/mozapps/extensions/internal/XPIProvider.jsm.addons mozilla-aurora/toolkit/mozapps/extensions/internal/XPIProvider.jsm
--- mozilla-aurora/toolkit/mozapps/extensions/internal/XPIProvider.jsm.addons 2015-03-12 14:25:39.975909166 +0100
+++ mozilla-aurora/toolkit/mozapps/extensions/internal/XPIProvider.jsm 2015-03-12 15:23:05.879366812 +0100
@@ -2102,11 +2102,7 @@ this.XPIProvider = {
AddonManagerPrivate.markProviderSafe(this);
- if (aAppChanged === undefined) {
- // For new profiles we will never need to show the add-on selection UI
+ if (true) {
+ // For all profiles we will never need to show the add-on selection UI
Services.prefs.setBoolPref(PREF_SHOWN_SELECTION_UI, true);
- Services.prefs.setBoolPref(PREF_SHOWN_SELECTION_UI, true);
- }
- else if (aAppChanged && !this.allAppGlobal &&
+ if (aAppChanged && !this.allAppGlobal &&
Preferences.get(PREF_EM_SHOW_MISMATCH_UI, true)) {
if (!Preferences.get(PREF_SHOWN_SELECTION_UI, false)) {
// Flip a flag to indicate that we interrupted startup with an interactive prompt
@@ -2126,6 +2122,9 @@ this.XPIProvider = {
flushCaches = true;
}
}
+ } else {
+ // For new profiles we will never need to show the add-on selection UI
+ Services.prefs.setBoolPref(PREF_SHOWN_SELECTION_UI, true);
}
else if (aAppChanged && !this.allAppGlobal &&
if (flushCaches) {

View File

@ -106,14 +106,14 @@
Summary: Mozilla Firefox Web browser
Name: firefox
Version: 37.0.2
Release: 3%{?pre_tag}%{?dist}
Version: 38.0
Release: 1%{?pre_tag}%{?dist}
URL: http://www.mozilla.org/projects/firefox/
License: MPLv1.1 or GPLv2+ or LGPLv2+
Group: Applications/Internet
Source0: ftp://ftp.mozilla.org/pub/firefox/releases/%{version}%{?pre_version}/source/firefox-%{version}%{?pre_version}.source.tar.bz2
%if %{build_langpacks}
Source1: firefox-langpacks-%{version}%{?pre_version}-20150416.tar.xz
Source1: firefox-langpacks-%{version}%{?pre_version}-20150505.tar.xz
%endif
Source10: firefox-mozconfig
Source11: firefox-mozconfig-branded
@ -145,13 +145,11 @@ Patch220: rhbz-1014858.patch
Patch221: firefox-fedora-ua.patch
# Upstream patches
Patch301: mozilla-1129859-dictfix2.patch
# Gtk3 upstream patches
Patch410: mozilla-1073117-button-focus.patch
Patch411: mozilla-1073117-focus.patch
Patch412: mozilla-1073117-no-gap-tab.patch
Patch413: mozilla-975919-gtk3-hidpi.patch
Patch414: mozilla-1143686.patch
Patch415: mozilla-1144643.patch
@ -299,13 +297,10 @@ cd %{tarballdir}
%patch221 -p2 -b .fedora-ua
# Upstream patches
%patch301 -p1 -b .dict-fix
%if %{toolkit_gtk3}
%patch410 -p1 -b .1073117-button-focus
%patch411 -p1 -b .1073117-focus
%patch412 -p1 -b .1073117-no-gap-tab
%patch413 -p2 -b .975919-gtk3-hidpi
%patch414 -p1 -b .1143686
%patch415 -p1 -b .1144643
%endif
@ -805,6 +800,9 @@ gtk-update-icon-cache %{_datadir}/icons/hicolor &>/dev/null || :
#---------------------------------------------------------------------
%changelog
* Tue May 5 2015 Martin Stransky <stransky@redhat.com> - 38.0-1
- Update to 38.0 Build 2
* Wed Apr 22 2015 Martin Stransky <stransky@redhat.com> - 37.0.2-3
- Fedora-bookmarks rebuild (rhbz#1210474)

View File

@ -1,419 +0,0 @@
# HG changeset patch
# Parent 58ce6051edf56ce70c1a62e88bd879a6e56d9239
# User Jan Horak <jhorak@redhat.com>
# Bug 1129859 - Always use '-' as separator between lang-region in dictionary names, fixes problems with system dictionaries which has '_' as separator
try: -b do -p all -u all -t none
diff --git a/editor/composer/nsEditorSpellCheck.cpp b/editor/composer/nsEditorSpellCheck.cpp
--- a/editor/composer/nsEditorSpellCheck.cpp
+++ b/editor/composer/nsEditorSpellCheck.cpp
diff --git a/extensions/spellcheck/hunspell/src/mozHunspell.cpp b/extensions/spellcheck/hunspell/src/mozHunspell.cpp
--- a/extensions/spellcheck/hunspell/src/mozHunspell.cpp
+++ b/extensions/spellcheck/hunspell/src/mozHunspell.cpp
@@ -485,16 +485,19 @@ mozHunspell::LoadDictionariesFromDir(nsI
rv = file->Exists(&check);
if (NS_FAILED(rv) || !check)
continue;
#ifdef DEBUG_bsmedberg
printf("Adding dictionary: %s\n", NS_ConvertUTF16toUTF8(dict).get());
#endif
+ // Replace '_' separator with '-'
+ dict.ReplaceChar("_", '-');
+
mDictionaries.Put(dict, file);
}
return NS_OK;
}
nsresult mozHunspell::ConvertCharset(const char16_t* aStr, char ** aDst)
{
diff --git a/extensions/spellcheck/hunspell/tests/unit/data/1463589_utf.aff b/extensions/spellcheck/hunspell/tests/unit/data/1463589-utf.aff
rename from extensions/spellcheck/hunspell/tests/unit/data/1463589_utf.aff
rename to extensions/spellcheck/hunspell/tests/unit/data/1463589-utf.aff
diff --git a/extensions/spellcheck/hunspell/tests/unit/data/1463589_utf.dic b/extensions/spellcheck/hunspell/tests/unit/data/1463589-utf.dic
rename from extensions/spellcheck/hunspell/tests/unit/data/1463589_utf.dic
rename to extensions/spellcheck/hunspell/tests/unit/data/1463589-utf.dic
diff --git a/extensions/spellcheck/hunspell/tests/unit/data/1463589_utf.sug b/extensions/spellcheck/hunspell/tests/unit/data/1463589-utf.sug
rename from extensions/spellcheck/hunspell/tests/unit/data/1463589_utf.sug
rename to extensions/spellcheck/hunspell/tests/unit/data/1463589-utf.sug
diff --git a/extensions/spellcheck/hunspell/tests/unit/data/1463589_utf.test b/extensions/spellcheck/hunspell/tests/unit/data/1463589-utf.test
rename from extensions/spellcheck/hunspell/tests/unit/data/1463589_utf.test
rename to extensions/spellcheck/hunspell/tests/unit/data/1463589-utf.test
diff --git a/extensions/spellcheck/hunspell/tests/unit/data/1463589_utf.wrong b/extensions/spellcheck/hunspell/tests/unit/data/1463589-utf.wrong
rename from extensions/spellcheck/hunspell/tests/unit/data/1463589_utf.wrong
rename to extensions/spellcheck/hunspell/tests/unit/data/1463589-utf.wrong
diff --git a/extensions/spellcheck/hunspell/tests/unit/data/allcaps_utf.aff b/extensions/spellcheck/hunspell/tests/unit/data/allcaps-utf.aff
rename from extensions/spellcheck/hunspell/tests/unit/data/allcaps_utf.aff
rename to extensions/spellcheck/hunspell/tests/unit/data/allcaps-utf.aff
diff --git a/extensions/spellcheck/hunspell/tests/unit/data/allcaps_utf.dic b/extensions/spellcheck/hunspell/tests/unit/data/allcaps-utf.dic
rename from extensions/spellcheck/hunspell/tests/unit/data/allcaps_utf.dic
rename to extensions/spellcheck/hunspell/tests/unit/data/allcaps-utf.dic
diff --git a/extensions/spellcheck/hunspell/tests/unit/data/allcaps_utf.good b/extensions/spellcheck/hunspell/tests/unit/data/allcaps-utf.good
rename from extensions/spellcheck/hunspell/tests/unit/data/allcaps_utf.good
rename to extensions/spellcheck/hunspell/tests/unit/data/allcaps-utf.good
diff --git a/extensions/spellcheck/hunspell/tests/unit/data/allcaps_utf.sug b/extensions/spellcheck/hunspell/tests/unit/data/allcaps-utf.sug
rename from extensions/spellcheck/hunspell/tests/unit/data/allcaps_utf.sug
rename to extensions/spellcheck/hunspell/tests/unit/data/allcaps-utf.sug
diff --git a/extensions/spellcheck/hunspell/tests/unit/data/allcaps_utf.test b/extensions/spellcheck/hunspell/tests/unit/data/allcaps-utf.test
rename from extensions/spellcheck/hunspell/tests/unit/data/allcaps_utf.test
rename to extensions/spellcheck/hunspell/tests/unit/data/allcaps-utf.test
diff --git a/extensions/spellcheck/hunspell/tests/unit/data/allcaps_utf.wrong b/extensions/spellcheck/hunspell/tests/unit/data/allcaps-utf.wrong
rename from extensions/spellcheck/hunspell/tests/unit/data/allcaps_utf.wrong
rename to extensions/spellcheck/hunspell/tests/unit/data/allcaps-utf.wrong
diff --git a/extensions/spellcheck/hunspell/tests/unit/data/base_utf.aff b/extensions/spellcheck/hunspell/tests/unit/data/base-utf.aff
rename from extensions/spellcheck/hunspell/tests/unit/data/base_utf.aff
rename to extensions/spellcheck/hunspell/tests/unit/data/base-utf.aff
diff --git a/extensions/spellcheck/hunspell/tests/unit/data/base_utf.dic b/extensions/spellcheck/hunspell/tests/unit/data/base-utf.dic
rename from extensions/spellcheck/hunspell/tests/unit/data/base_utf.dic
rename to extensions/spellcheck/hunspell/tests/unit/data/base-utf.dic
diff --git a/extensions/spellcheck/hunspell/tests/unit/data/base_utf.good b/extensions/spellcheck/hunspell/tests/unit/data/base-utf.good
rename from extensions/spellcheck/hunspell/tests/unit/data/base_utf.good
rename to extensions/spellcheck/hunspell/tests/unit/data/base-utf.good
diff --git a/extensions/spellcheck/hunspell/tests/unit/data/base_utf.sug b/extensions/spellcheck/hunspell/tests/unit/data/base-utf.sug
rename from extensions/spellcheck/hunspell/tests/unit/data/base_utf.sug
rename to extensions/spellcheck/hunspell/tests/unit/data/base-utf.sug
diff --git a/extensions/spellcheck/hunspell/tests/unit/data/base_utf.test b/extensions/spellcheck/hunspell/tests/unit/data/base-utf.test
rename from extensions/spellcheck/hunspell/tests/unit/data/base_utf.test
rename to extensions/spellcheck/hunspell/tests/unit/data/base-utf.test
diff --git a/extensions/spellcheck/hunspell/tests/unit/data/base_utf.wrong b/extensions/spellcheck/hunspell/tests/unit/data/base-utf.wrong
rename from extensions/spellcheck/hunspell/tests/unit/data/base_utf.wrong
rename to extensions/spellcheck/hunspell/tests/unit/data/base-utf.wrong
diff --git a/extensions/spellcheck/hunspell/tests/unit/data/colons_in_words.aff b/extensions/spellcheck/hunspell/tests/unit/data/colons-in-words.aff
rename from extensions/spellcheck/hunspell/tests/unit/data/colons_in_words.aff
rename to extensions/spellcheck/hunspell/tests/unit/data/colons-in-words.aff
diff --git a/extensions/spellcheck/hunspell/tests/unit/data/colons_in_words.dic b/extensions/spellcheck/hunspell/tests/unit/data/colons-in-words.dic
rename from extensions/spellcheck/hunspell/tests/unit/data/colons_in_words.dic
rename to extensions/spellcheck/hunspell/tests/unit/data/colons-in-words.dic
diff --git a/extensions/spellcheck/hunspell/tests/unit/data/colons_in_words.test b/extensions/spellcheck/hunspell/tests/unit/data/colons-in-words.test
rename from extensions/spellcheck/hunspell/tests/unit/data/colons_in_words.test
rename to extensions/spellcheck/hunspell/tests/unit/data/colons-in-words.test
diff --git a/extensions/spellcheck/hunspell/tests/unit/data/condition_utf.aff b/extensions/spellcheck/hunspell/tests/unit/data/condition-utf.aff
rename from extensions/spellcheck/hunspell/tests/unit/data/condition_utf.aff
rename to extensions/spellcheck/hunspell/tests/unit/data/condition-utf.aff
diff --git a/extensions/spellcheck/hunspell/tests/unit/data/condition_utf.dic b/extensions/spellcheck/hunspell/tests/unit/data/condition-utf.dic
rename from extensions/spellcheck/hunspell/tests/unit/data/condition_utf.dic
rename to extensions/spellcheck/hunspell/tests/unit/data/condition-utf.dic
diff --git a/extensions/spellcheck/hunspell/tests/unit/data/condition_utf.good b/extensions/spellcheck/hunspell/tests/unit/data/condition-utf.good
rename from extensions/spellcheck/hunspell/tests/unit/data/condition_utf.good
rename to extensions/spellcheck/hunspell/tests/unit/data/condition-utf.good
diff --git a/extensions/spellcheck/hunspell/tests/unit/data/condition_utf.test b/extensions/spellcheck/hunspell/tests/unit/data/condition-utf.test
rename from extensions/spellcheck/hunspell/tests/unit/data/condition_utf.test
rename to extensions/spellcheck/hunspell/tests/unit/data/condition-utf.test
diff --git a/extensions/spellcheck/hunspell/tests/unit/data/condition_utf.wrong b/extensions/spellcheck/hunspell/tests/unit/data/condition-utf.wrong
rename from extensions/spellcheck/hunspell/tests/unit/data/condition_utf.wrong
rename to extensions/spellcheck/hunspell/tests/unit/data/condition-utf.wrong
diff --git a/extensions/spellcheck/hunspell/tests/unit/data/digits_in_words.aff b/extensions/spellcheck/hunspell/tests/unit/data/digits-in-words.aff
rename from extensions/spellcheck/hunspell/tests/unit/data/digits_in_words.aff
rename to extensions/spellcheck/hunspell/tests/unit/data/digits-in-words.aff
diff --git a/extensions/spellcheck/hunspell/tests/unit/data/digits_in_words.dic b/extensions/spellcheck/hunspell/tests/unit/data/digits-in-words.dic
rename from extensions/spellcheck/hunspell/tests/unit/data/digits_in_words.dic
rename to extensions/spellcheck/hunspell/tests/unit/data/digits-in-words.dic
diff --git a/extensions/spellcheck/hunspell/tests/unit/data/digits_in_words.test b/extensions/spellcheck/hunspell/tests/unit/data/digits-in-words.test
rename from extensions/spellcheck/hunspell/tests/unit/data/digits_in_words.test
rename to extensions/spellcheck/hunspell/tests/unit/data/digits-in-words.test
diff --git a/extensions/spellcheck/hunspell/tests/unit/data/digits_in_words.wrong b/extensions/spellcheck/hunspell/tests/unit/data/digits-in-words.wrong
rename from extensions/spellcheck/hunspell/tests/unit/data/digits_in_words.wrong
rename to extensions/spellcheck/hunspell/tests/unit/data/digits-in-words.wrong
diff --git a/extensions/spellcheck/hunspell/tests/unit/data/ngram_utf_fix.aff b/extensions/spellcheck/hunspell/tests/unit/data/ngram-utf-fix.aff
rename from extensions/spellcheck/hunspell/tests/unit/data/ngram_utf_fix.aff
rename to extensions/spellcheck/hunspell/tests/unit/data/ngram-utf-fix.aff
diff --git a/extensions/spellcheck/hunspell/tests/unit/data/ngram_utf_fix.dic b/extensions/spellcheck/hunspell/tests/unit/data/ngram-utf-fix.dic
rename from extensions/spellcheck/hunspell/tests/unit/data/ngram_utf_fix.dic
rename to extensions/spellcheck/hunspell/tests/unit/data/ngram-utf-fix.dic
diff --git a/extensions/spellcheck/hunspell/tests/unit/data/ngram_utf_fix.good b/extensions/spellcheck/hunspell/tests/unit/data/ngram-utf-fix.good
rename from extensions/spellcheck/hunspell/tests/unit/data/ngram_utf_fix.good
rename to extensions/spellcheck/hunspell/tests/unit/data/ngram-utf-fix.good
diff --git a/extensions/spellcheck/hunspell/tests/unit/data/ngram_utf_fix.sug b/extensions/spellcheck/hunspell/tests/unit/data/ngram-utf-fix.sug
rename from extensions/spellcheck/hunspell/tests/unit/data/ngram_utf_fix.sug
rename to extensions/spellcheck/hunspell/tests/unit/data/ngram-utf-fix.sug
diff --git a/extensions/spellcheck/hunspell/tests/unit/data/ngram_utf_fix.test b/extensions/spellcheck/hunspell/tests/unit/data/ngram-utf-fix.test
rename from extensions/spellcheck/hunspell/tests/unit/data/ngram_utf_fix.test
rename to extensions/spellcheck/hunspell/tests/unit/data/ngram-utf-fix.test
diff --git a/extensions/spellcheck/hunspell/tests/unit/data/ngram_utf_fix.wrong b/extensions/spellcheck/hunspell/tests/unit/data/ngram-utf-fix.wrong
rename from extensions/spellcheck/hunspell/tests/unit/data/ngram_utf_fix.wrong
rename to extensions/spellcheck/hunspell/tests/unit/data/ngram-utf-fix.wrong
diff --git a/extensions/spellcheck/hunspell/tests/unit/data/opentaal_cpdpat.aff b/extensions/spellcheck/hunspell/tests/unit/data/opentaal-cpdpat.aff
rename from extensions/spellcheck/hunspell/tests/unit/data/opentaal_cpdpat.aff
rename to extensions/spellcheck/hunspell/tests/unit/data/opentaal-cpdpat.aff
diff --git a/extensions/spellcheck/hunspell/tests/unit/data/opentaal_cpdpat.dic b/extensions/spellcheck/hunspell/tests/unit/data/opentaal-cpdpat.dic
rename from extensions/spellcheck/hunspell/tests/unit/data/opentaal_cpdpat.dic
rename to extensions/spellcheck/hunspell/tests/unit/data/opentaal-cpdpat.dic
diff --git a/extensions/spellcheck/hunspell/tests/unit/data/opentaal_cpdpat.good b/extensions/spellcheck/hunspell/tests/unit/data/opentaal-cpdpat.good
rename from extensions/spellcheck/hunspell/tests/unit/data/opentaal_cpdpat.good
rename to extensions/spellcheck/hunspell/tests/unit/data/opentaal-cpdpat.good
diff --git a/extensions/spellcheck/hunspell/tests/unit/data/opentaal_cpdpat.test b/extensions/spellcheck/hunspell/tests/unit/data/opentaal-cpdpat.test
rename from extensions/spellcheck/hunspell/tests/unit/data/opentaal_cpdpat.test
rename to extensions/spellcheck/hunspell/tests/unit/data/opentaal-cpdpat.test
diff --git a/extensions/spellcheck/hunspell/tests/unit/data/opentaal_cpdpat.wrong b/extensions/spellcheck/hunspell/tests/unit/data/opentaal-cpdpat.wrong
rename from extensions/spellcheck/hunspell/tests/unit/data/opentaal_cpdpat.wrong
rename to extensions/spellcheck/hunspell/tests/unit/data/opentaal-cpdpat.wrong
diff --git a/extensions/spellcheck/hunspell/tests/unit/data/opentaal_cpdpat2.aff b/extensions/spellcheck/hunspell/tests/unit/data/opentaal-cpdpat2.aff
rename from extensions/spellcheck/hunspell/tests/unit/data/opentaal_cpdpat2.aff
rename to extensions/spellcheck/hunspell/tests/unit/data/opentaal-cpdpat2.aff
diff --git a/extensions/spellcheck/hunspell/tests/unit/data/opentaal_cpdpat2.dic b/extensions/spellcheck/hunspell/tests/unit/data/opentaal-cpdpat2.dic
rename from extensions/spellcheck/hunspell/tests/unit/data/opentaal_cpdpat2.dic
rename to extensions/spellcheck/hunspell/tests/unit/data/opentaal-cpdpat2.dic
diff --git a/extensions/spellcheck/hunspell/tests/unit/data/opentaal_cpdpat2.good b/extensions/spellcheck/hunspell/tests/unit/data/opentaal-cpdpat2.good
rename from extensions/spellcheck/hunspell/tests/unit/data/opentaal_cpdpat2.good
rename to extensions/spellcheck/hunspell/tests/unit/data/opentaal-cpdpat2.good
diff --git a/extensions/spellcheck/hunspell/tests/unit/data/opentaal_cpdpat2.test b/extensions/spellcheck/hunspell/tests/unit/data/opentaal-cpdpat2.test
rename from extensions/spellcheck/hunspell/tests/unit/data/opentaal_cpdpat2.test
rename to extensions/spellcheck/hunspell/tests/unit/data/opentaal-cpdpat2.test
diff --git a/extensions/spellcheck/hunspell/tests/unit/data/opentaal_cpdpat2.wrong b/extensions/spellcheck/hunspell/tests/unit/data/opentaal-cpdpat2.wrong
rename from extensions/spellcheck/hunspell/tests/unit/data/opentaal_cpdpat2.wrong
rename to extensions/spellcheck/hunspell/tests/unit/data/opentaal-cpdpat2.wrong
diff --git a/extensions/spellcheck/hunspell/tests/unit/data/opentaal_forbiddenword1.aff b/extensions/spellcheck/hunspell/tests/unit/data/opentaal-forbiddenword1.aff
rename from extensions/spellcheck/hunspell/tests/unit/data/opentaal_forbiddenword1.aff
rename to extensions/spellcheck/hunspell/tests/unit/data/opentaal-forbiddenword1.aff
diff --git a/extensions/spellcheck/hunspell/tests/unit/data/opentaal_forbiddenword1.dic b/extensions/spellcheck/hunspell/tests/unit/data/opentaal-forbiddenword1.dic
rename from extensions/spellcheck/hunspell/tests/unit/data/opentaal_forbiddenword1.dic
rename to extensions/spellcheck/hunspell/tests/unit/data/opentaal-forbiddenword1.dic
diff --git a/extensions/spellcheck/hunspell/tests/unit/data/opentaal_forbiddenword1.good b/extensions/spellcheck/hunspell/tests/unit/data/opentaal-forbiddenword1.good
rename from extensions/spellcheck/hunspell/tests/unit/data/opentaal_forbiddenword1.good
rename to extensions/spellcheck/hunspell/tests/unit/data/opentaal-forbiddenword1.good
diff --git a/extensions/spellcheck/hunspell/tests/unit/data/opentaal_forbiddenword1.sug b/extensions/spellcheck/hunspell/tests/unit/data/opentaal-forbiddenword1.sug
rename from extensions/spellcheck/hunspell/tests/unit/data/opentaal_forbiddenword1.sug
rename to extensions/spellcheck/hunspell/tests/unit/data/opentaal-forbiddenword1.sug
diff --git a/extensions/spellcheck/hunspell/tests/unit/data/opentaal_forbiddenword1.test b/extensions/spellcheck/hunspell/tests/unit/data/opentaal-forbiddenword1.test
rename from extensions/spellcheck/hunspell/tests/unit/data/opentaal_forbiddenword1.test
rename to extensions/spellcheck/hunspell/tests/unit/data/opentaal-forbiddenword1.test
diff --git a/extensions/spellcheck/hunspell/tests/unit/data/opentaal_forbiddenword1.wrong b/extensions/spellcheck/hunspell/tests/unit/data/opentaal-forbiddenword1.wrong
rename from extensions/spellcheck/hunspell/tests/unit/data/opentaal_forbiddenword1.wrong
rename to extensions/spellcheck/hunspell/tests/unit/data/opentaal-forbiddenword1.wrong
diff --git a/extensions/spellcheck/hunspell/tests/unit/data/opentaal_forbiddenword2.aff b/extensions/spellcheck/hunspell/tests/unit/data/opentaal-forbiddenword2.aff
rename from extensions/spellcheck/hunspell/tests/unit/data/opentaal_forbiddenword2.aff
rename to extensions/spellcheck/hunspell/tests/unit/data/opentaal-forbiddenword2.aff
diff --git a/extensions/spellcheck/hunspell/tests/unit/data/opentaal_forbiddenword2.dic b/extensions/spellcheck/hunspell/tests/unit/data/opentaal-forbiddenword2.dic
rename from extensions/spellcheck/hunspell/tests/unit/data/opentaal_forbiddenword2.dic
rename to extensions/spellcheck/hunspell/tests/unit/data/opentaal-forbiddenword2.dic
diff --git a/extensions/spellcheck/hunspell/tests/unit/data/opentaal_forbiddenword2.good b/extensions/spellcheck/hunspell/tests/unit/data/opentaal-forbiddenword2.good
rename from extensions/spellcheck/hunspell/tests/unit/data/opentaal_forbiddenword2.good
rename to extensions/spellcheck/hunspell/tests/unit/data/opentaal-forbiddenword2.good
diff --git a/extensions/spellcheck/hunspell/tests/unit/data/opentaal_forbiddenword2.sug b/extensions/spellcheck/hunspell/tests/unit/data/opentaal-forbiddenword2.sug
rename from extensions/spellcheck/hunspell/tests/unit/data/opentaal_forbiddenword2.sug
rename to extensions/spellcheck/hunspell/tests/unit/data/opentaal-forbiddenword2.sug
diff --git a/extensions/spellcheck/hunspell/tests/unit/data/opentaal_forbiddenword2.test b/extensions/spellcheck/hunspell/tests/unit/data/opentaal-forbiddenword2.test
rename from extensions/spellcheck/hunspell/tests/unit/data/opentaal_forbiddenword2.test
rename to extensions/spellcheck/hunspell/tests/unit/data/opentaal-forbiddenword2.test
diff --git a/extensions/spellcheck/hunspell/tests/unit/data/opentaal_forbiddenword2.wrong b/extensions/spellcheck/hunspell/tests/unit/data/opentaal-forbiddenword2.wrong
rename from extensions/spellcheck/hunspell/tests/unit/data/opentaal_forbiddenword2.wrong
rename to extensions/spellcheck/hunspell/tests/unit/data/opentaal-forbiddenword2.wrong
diff --git a/extensions/spellcheck/hunspell/tests/unit/data/opentaal_keepcase.aff b/extensions/spellcheck/hunspell/tests/unit/data/opentaal-keepcase.aff
rename from extensions/spellcheck/hunspell/tests/unit/data/opentaal_keepcase.aff
rename to extensions/spellcheck/hunspell/tests/unit/data/opentaal-keepcase.aff
diff --git a/extensions/spellcheck/hunspell/tests/unit/data/opentaal_keepcase.dic b/extensions/spellcheck/hunspell/tests/unit/data/opentaal-keepcase.dic
rename from extensions/spellcheck/hunspell/tests/unit/data/opentaal_keepcase.dic
rename to extensions/spellcheck/hunspell/tests/unit/data/opentaal-keepcase.dic
diff --git a/extensions/spellcheck/hunspell/tests/unit/data/opentaal_keepcase.good b/extensions/spellcheck/hunspell/tests/unit/data/opentaal-keepcase.good
rename from extensions/spellcheck/hunspell/tests/unit/data/opentaal_keepcase.good
rename to extensions/spellcheck/hunspell/tests/unit/data/opentaal-keepcase.good
diff --git a/extensions/spellcheck/hunspell/tests/unit/data/opentaal_keepcase.sug b/extensions/spellcheck/hunspell/tests/unit/data/opentaal-keepcase.sug
rename from extensions/spellcheck/hunspell/tests/unit/data/opentaal_keepcase.sug
rename to extensions/spellcheck/hunspell/tests/unit/data/opentaal-keepcase.sug
diff --git a/extensions/spellcheck/hunspell/tests/unit/data/opentaal_keepcase.test b/extensions/spellcheck/hunspell/tests/unit/data/opentaal-keepcase.test
rename from extensions/spellcheck/hunspell/tests/unit/data/opentaal_keepcase.test
rename to extensions/spellcheck/hunspell/tests/unit/data/opentaal-keepcase.test
diff --git a/extensions/spellcheck/hunspell/tests/unit/data/opentaal_keepcase.wrong b/extensions/spellcheck/hunspell/tests/unit/data/opentaal-keepcase.wrong
rename from extensions/spellcheck/hunspell/tests/unit/data/opentaal_keepcase.wrong
rename to extensions/spellcheck/hunspell/tests/unit/data/opentaal-keepcase.wrong
diff --git a/extensions/spellcheck/hunspell/tests/unit/data/utf8_bom.aff b/extensions/spellcheck/hunspell/tests/unit/data/utf8-bom.aff
rename from extensions/spellcheck/hunspell/tests/unit/data/utf8_bom.aff
rename to extensions/spellcheck/hunspell/tests/unit/data/utf8-bom.aff
diff --git a/extensions/spellcheck/hunspell/tests/unit/data/utf8_bom.dic b/extensions/spellcheck/hunspell/tests/unit/data/utf8-bom.dic
rename from extensions/spellcheck/hunspell/tests/unit/data/utf8_bom.dic
rename to extensions/spellcheck/hunspell/tests/unit/data/utf8-bom.dic
diff --git a/extensions/spellcheck/hunspell/tests/unit/data/utf8_bom.good b/extensions/spellcheck/hunspell/tests/unit/data/utf8-bom.good
rename from extensions/spellcheck/hunspell/tests/unit/data/utf8_bom.good
rename to extensions/spellcheck/hunspell/tests/unit/data/utf8-bom.good
diff --git a/extensions/spellcheck/hunspell/tests/unit/data/utf8_bom.test b/extensions/spellcheck/hunspell/tests/unit/data/utf8-bom.test
rename from extensions/spellcheck/hunspell/tests/unit/data/utf8_bom.test
rename to extensions/spellcheck/hunspell/tests/unit/data/utf8-bom.test
diff --git a/extensions/spellcheck/hunspell/tests/unit/data/utf8_bom2.aff b/extensions/spellcheck/hunspell/tests/unit/data/utf8-bom2.aff
rename from extensions/spellcheck/hunspell/tests/unit/data/utf8_bom2.aff
rename to extensions/spellcheck/hunspell/tests/unit/data/utf8-bom2.aff
diff --git a/extensions/spellcheck/hunspell/tests/unit/data/utf8_bom2.dic b/extensions/spellcheck/hunspell/tests/unit/data/utf8-bom2.dic
rename from extensions/spellcheck/hunspell/tests/unit/data/utf8_bom2.dic
rename to extensions/spellcheck/hunspell/tests/unit/data/utf8-bom2.dic
diff --git a/extensions/spellcheck/hunspell/tests/unit/data/utf8_bom2.good b/extensions/spellcheck/hunspell/tests/unit/data/utf8-bom2.good
rename from extensions/spellcheck/hunspell/tests/unit/data/utf8_bom2.good
rename to extensions/spellcheck/hunspell/tests/unit/data/utf8-bom2.good
diff --git a/extensions/spellcheck/hunspell/tests/unit/data/utf8_bom2.test b/extensions/spellcheck/hunspell/tests/unit/data/utf8-bom2.test
rename from extensions/spellcheck/hunspell/tests/unit/data/utf8_bom2.test
rename to extensions/spellcheck/hunspell/tests/unit/data/utf8-bom2.test
diff --git a/extensions/spellcheck/hunspell/tests/unit/data/utf8_nonbmp.aff b/extensions/spellcheck/hunspell/tests/unit/data/utf8-nonbmp.aff
rename from extensions/spellcheck/hunspell/tests/unit/data/utf8_nonbmp.aff
rename to extensions/spellcheck/hunspell/tests/unit/data/utf8-nonbmp.aff
diff --git a/extensions/spellcheck/hunspell/tests/unit/data/utf8_nonbmp.dic b/extensions/spellcheck/hunspell/tests/unit/data/utf8-nonbmp.dic
rename from extensions/spellcheck/hunspell/tests/unit/data/utf8_nonbmp.dic
rename to extensions/spellcheck/hunspell/tests/unit/data/utf8-nonbmp.dic
diff --git a/extensions/spellcheck/hunspell/tests/unit/data/utf8_nonbmp.good b/extensions/spellcheck/hunspell/tests/unit/data/utf8-nonbmp.good
rename from extensions/spellcheck/hunspell/tests/unit/data/utf8_nonbmp.good
rename to extensions/spellcheck/hunspell/tests/unit/data/utf8-nonbmp.good
diff --git a/extensions/spellcheck/hunspell/tests/unit/data/utf8_nonbmp.sug b/extensions/spellcheck/hunspell/tests/unit/data/utf8-nonbmp.sug
rename from extensions/spellcheck/hunspell/tests/unit/data/utf8_nonbmp.sug
rename to extensions/spellcheck/hunspell/tests/unit/data/utf8-nonbmp.sug
diff --git a/extensions/spellcheck/hunspell/tests/unit/data/utf8_nonbmp.test b/extensions/spellcheck/hunspell/tests/unit/data/utf8-nonbmp.test
rename from extensions/spellcheck/hunspell/tests/unit/data/utf8_nonbmp.test
rename to extensions/spellcheck/hunspell/tests/unit/data/utf8-nonbmp.test
diff --git a/extensions/spellcheck/hunspell/tests/unit/data/utf8_nonbmp.wrong b/extensions/spellcheck/hunspell/tests/unit/data/utf8-nonbmp.wrong
rename from extensions/spellcheck/hunspell/tests/unit/data/utf8_nonbmp.wrong
rename to extensions/spellcheck/hunspell/tests/unit/data/utf8-nonbmp.wrong
diff --git a/extensions/spellcheck/hunspell/tests/unit/test_hunspell.js b/extensions/spellcheck/hunspell/tests/unit/test_hunspell.js
--- a/extensions/spellcheck/hunspell/tests/unit/test_hunspell.js
+++ b/extensions/spellcheck/hunspell/tests/unit/test_hunspell.js
@@ -3,21 +3,21 @@
*/
const Cc = Components.classes;
const Ci = Components.interfaces;
const tests = [
["affixes", "iso-8859-1"],
["condition", "iso-8859-1"],
- ["condition_utf", "UTF-8"],
+ ["condition-utf", "UTF-8"],
["base", "iso-8859-1"],
- ["base_utf", "UTF-8"],
+ ["base-utf", "UTF-8"],
["allcaps", "iso-8859-1"],
- ["allcaps_utf", "UTF-8"],
+ ["allcaps-utf", "UTF-8"],
["allcaps2", "iso-8859-1"],
["allcaps3", "iso-8859-1"],
["keepcase", "iso-8859-1"],
["i58202", "iso-8859-1"],
["map", "iso-8859-1"],
["rep", "iso-8859-1"],
["sug", "iso-8859-1"],
["sugutf", "UTF-8"],
@@ -43,19 +43,19 @@ const tests = [
["fogemorpheme", "iso-8859-1"],
["onlyincompound", "iso-8859-1"],
["complexprefixes", "iso-8859-1"],
["complexprefixes2", "iso-8859-1"],
["complexprefixesutf", "UTF-8"],
["conditionalprefix", "iso-8859-1"],
["zeroaffix", "iso-8859-1"],
["utf8", "UTF-8"],
- ["utf8_bom", "UTF-8", {1: "todo"}],
- ["utf8_bom2", "UTF-8", {1: "todo"}],
- ["utf8_nonbmp", "UTF-8", {1: "todo", 2: "todo", 3: "todo", 4: "todo"}],
+ ["utf8-bom", "UTF-8", {1: "todo"}],
+ ["utf8-bom2", "UTF-8", {1: "todo"}],
+ ["utf8-nonbmp", "UTF-8", {1: "todo", 2: "todo", 3: "todo", 4: "todo"}],
["compoundflag", "iso-8859-1"],
["compoundrule", "iso-8859-1"],
["compoundrule2", "iso-8859-1"],
["compoundrule3", "iso-8859-1"],
["compoundrule4", "iso-8859-1"],
["compoundrule5", "UTF-8"],
["compoundrule6", "iso-8859-1"],
["compoundrule7", "iso-8859-1"],
@@ -86,43 +86,43 @@ const tests = [
["reputf", "UTF-8"],
["ignore", "iso-8859-1"],
["ignoreutf", "UTF-8",
{1: "todo", 2: "todo", 3: "todo", 4: "todo", 5: "todo", 6: "todo",
7: "todo", 8: "todo"}],
["1592880", "iso-8859-1"],
["1695964", "iso-8859-1"],
["1463589", "iso-8859-1"],
- ["1463589_utf", "UTF-8"],
+ ["1463589-utf", "UTF-8"],
["IJ", "iso-8859-1"],
["i68568", "iso-8859-1"],
["i68568utf", "UTF-8"],
["1706659", "iso-8859-1"],
- ["digits_in_words", "iso-8859-1"],
-// ["colons_in_words", "iso-8859-1"], Suggestion test only
- ["ngram_utf_fix", "UTF-8"],
+ ["digits-in-words", "iso-8859-1"],
+// ["colons-in-words", "iso-8859-1"], Suggestion test only
+ ["ngram-utf-fix", "UTF-8"],
["morph", "us-ascii",
{11: "todo", 12: "todo", 13: "todo", 14: "todo", 15: "todo", 16: "todo",
17: "todo", 18: "todo", 19: "todo", 20: "todo", 21: "todo", 22: "todo",
23: "todo", 24: "todo", 25: "todo", 26: "todo", 27: "todo"}],
["1975530", "UTF-8"],
["fullstrip", "iso-8859-1"],
["iconv", "UTF-8"],
["oconv", "UTF-8"],
["encoding", "iso-8859-1", {1: "todo", 3: "todo"}],
["korean", "UTF-8"],
- ["opentaal_forbiddenword1", "UTF-8"],
- ["opentaal_forbiddenword2", "UTF-8"],
- ["opentaal_keepcase", "UTF-8"],
+ ["opentaal-forbiddenword1", "UTF-8"],
+ ["opentaal-forbiddenword2", "UTF-8"],
+ ["opentaal-keepcase", "UTF-8"],
["arabic", "UTF-8"],
["2970240", "iso-8859-1"],
["2970242", "iso-8859-1"],
["breakoff", "iso-8859-1"],
- ["opentaal_cpdpat", "iso-8859-1"],
- ["opentaal_cpdpat2", "iso-8859-1"],
+ ["opentaal-cpdpat", "iso-8859-1"],
+ ["opentaal-cpdpat2", "iso-8859-1"],
["2999225", "iso-8859-1"],
["onlyincompound2", "iso-8859-1"],
["forceucase", "iso-8859-1"],
["warn", "iso-8859-1"]
];
function do_get_file_by_line(file, charset) {
dump("getting file by line for file " + file.path + "\n");
diff --git a/extensions/spellcheck/tests/chrome/test_add_remove_dictionaries.xul b/extensions/spellcheck/tests/chrome/test_add_remove_dictionaries.xul
--- a/extensions/spellcheck/tests/chrome/test_add_remove_dictionaries.xul
+++ b/extensions/spellcheck/tests/chrome/test_add_remove_dictionaries.xul
@@ -63,26 +63,26 @@ function RunTest() {
ok(map.exists());
hunspell.addDirectory(map);
Components.utils.import("resource://gre/modules/AsyncSpellCheckTestHelper.jsm");
onSpellCheck(textbox, function () {
// test that base and map dictionaries are available
var dicts = getDictionaryList(editor);
- isnot(dicts.indexOf("base_utf"), -1, "base is available");
+ isnot(dicts.indexOf("base-utf"), -1, "base is available");
isnot(dicts.indexOf("maputf"), -1, "map is available");
// select base dictionary
- setCurrentDictionary(editor, "base_utf");
+ setCurrentDictionary(editor, "base-utf");
onSpellCheck(textbox, function () {
// test that base dictionary is in use
is(getMisspelledWords(editor), "Frühstück" + "qwertyu", "base misspellings");
- is(getCurrentDictionary(editor), "base_utf", "current dictionary");
+ is(getCurrentDictionary(editor), "base-utf", "current dictionary");
// select map dictionary
setCurrentDictionary(editor, "maputf");
onSpellCheck(textbox, function () {
// test that map dictionary is in use
is(getMisspelledWords(editor), "created" + "imply" + "tomorrow" + "qwertyu", "map misspellings");
is(getCurrentDictionary(editor), "maputf", "current dictionary");
@@ -92,17 +92,17 @@ function RunTest() {
onSpellCheck(textbox, function () {
// test that map dictionary is not in use
isnot(getMisspelledWords(editor), "created" + "imply" + "tomorrow" + "qwertyu", "map misspellings");
isnot(getCurrentDictionary(editor), "maputf", "current dictionary");
// test that base dictionary is available and map dictionary is unavailable
var dicts = getDictionaryList(editor);
- isnot(dicts.indexOf("base_utf"), -1, "base is available");
+ isnot(dicts.indexOf("base-utf"), -1, "base is available");
is(dicts.indexOf("maputf"), -1, "map is unavailable");
// uninstall base dictionary
hunspell.removeDirectory(base);
onSpellCheck(textbox, function () {
SimpleTest.finish();
});

View File

@ -1,459 +0,0 @@
diff -up firefox-35.0/mozilla-release/widget/gtk/nsLookAndFeel.cpp.975919-gtk3-hidpi firefox-35.0/mozilla-release/widget/gtk/nsLookAndFeel.cpp
--- firefox-35.0/mozilla-release/widget/gtk/nsLookAndFeel.cpp.975919-gtk3-hidpi 2015-01-22 13:06:41.099114353 +0100
+++ firefox-35.0/mozilla-release/widget/gtk/nsLookAndFeel.cpp 2015-01-22 13:06:41.118114478 +0100
@@ -22,6 +22,9 @@
#include "gtkdrawing.h"
#include "nsStyleConsts.h"
#include "gfxFontConstants.h"
+
+#include <dlfcn.h>
+
#include "mozilla/gfx/2D.h"
using mozilla::LookAndFeel;
@@ -733,6 +736,16 @@ GetSystemFontInfo(GtkWidget *aWidget,
size *= float(gfxPlatformGtk::GetDPI()) / POINTS_PER_INCH_FLOAT;
}
+ // Scale fonts up on HiDPI displays.
+ // This would be done automatically with cairo, but we manually manage
+ // the display scale for platform consistency.
+ static auto sGdkScreenGetMonitorScaleFactorPtr = (gint (*)(GdkScreen*,gint))
+ dlsym(RTLD_DEFAULT, "gdk_screen_get_monitor_scale_factor");
+ if (sGdkScreenGetMonitorScaleFactorPtr) {
+ GdkScreen *screen = gdk_screen_get_default();
+ size *= (*sGdkScreenGetMonitorScaleFactorPtr)(screen, 0);
+ }
+
// |size| is now pixels
aFontStyle->size = size;
diff -up firefox-35.0/mozilla-release/widget/gtk/nsWindow.cpp.975919-gtk3-hidpi firefox-35.0/mozilla-release/widget/gtk/nsWindow.cpp
--- firefox-35.0/mozilla-release/widget/gtk/nsWindow.cpp.975919-gtk3-hidpi 2015-01-22 13:06:41.101114366 +0100
+++ firefox-35.0/mozilla-release/widget/gtk/nsWindow.cpp 2015-01-22 13:08:08.152683204 +0100
@@ -10,6 +10,7 @@
#include "mozilla/MouseEvents.h"
#include "mozilla/TextEvents.h"
#include <algorithm>
+#include <dlfcn.h>
#include "prlink.h"
#include "nsGTKToolkit.h"
@@ -471,6 +472,9 @@ nsWindow::DispatchEvent(WidgetGUIEvent*
debug_DumpEvent(stdout, aEvent->widget, aEvent,
nsAutoCString("something"), 0);
#endif
+ // Translate the mouse event into device pixels.
+ aEvent->refPoint.x = GdkCoordToDevicePixels(aEvent->refPoint.x);
+ aEvent->refPoint.y = GdkCoordToDevicePixels(aEvent->refPoint.y);
aStatus = nsEventStatus_eIgnore;
nsIWidgetListener* listener =
@@ -729,6 +733,12 @@ nsWindow::GetDPI()
return float(DisplayHeight(dpy, defaultScreen)/heightInches);
}
+double
+nsWindow::GetDefaultScaleInternal()
+{
+ return GdkScaleFactor();
+}
+
NS_IMETHODIMP
nsWindow::SetParent(nsIWidget *aNewParent)
{
@@ -827,8 +837,9 @@ nsWindow::ReparentNativeWidgetInternal(n
}
if (!mIsTopLevel) {
- gdk_window_reparent(mGdkWindow, aNewParentWindow, mBounds.x,
- mBounds.y);
+ gdk_window_reparent(mGdkWindow, aNewParentWindow,
+ DevicePixelsToGdkCoordRoundDown(mBounds.x),
+ DevicePixelsToGdkCoordRoundDown(mBounds.y));
}
}
@@ -863,26 +874,26 @@ NS_IMETHODIMP
nsWindow::ConstrainPosition(bool aAllowSlop, int32_t *aX, int32_t *aY)
{
if (mIsTopLevel && mShell) {
- int32_t screenWidth = gdk_screen_width();
- int32_t screenHeight = gdk_screen_height();
+ int width = GdkCoordToDevicePixels(gdk_screen_width());
+ int height = GdkCoordToDevicePixels(gdk_screen_height());
if (aAllowSlop) {
if (*aX < (kWindowPositionSlop - mBounds.width))
*aX = kWindowPositionSlop - mBounds.width;
- if (*aX > (screenWidth - kWindowPositionSlop))
- *aX = screenWidth - kWindowPositionSlop;
+ if (*aX > (width - kWindowPositionSlop))
+ *aX = width - kWindowPositionSlop;
if (*aY < (kWindowPositionSlop - mBounds.height))
*aY = kWindowPositionSlop - mBounds.height;
- if (*aY > (screenHeight - kWindowPositionSlop))
- *aY = screenHeight - kWindowPositionSlop;
+ if (*aY > (height - kWindowPositionSlop))
+ *aY = height - kWindowPositionSlop;
} else {
if (*aX < 0)
*aX = 0;
- if (*aX > (screenWidth - mBounds.width))
- *aX = screenWidth - mBounds.width;
+ if (*aX > (width - mBounds.width))
+ *aX = width - mBounds.width;
if (*aY < 0)
*aY = 0;
- if (*aY > (screenHeight - mBounds.height))
- *aY = screenHeight - mBounds.height;
+ if (*aY > (height - mBounds.height))
+ *aY = height - mBounds.height;
}
}
return NS_OK;
@@ -895,10 +906,14 @@ void nsWindow::SetSizeConstraints(const
if (mShell) {
GdkGeometry geometry;
- geometry.min_width = mSizeConstraints.mMinSize.width;
- geometry.min_height = mSizeConstraints.mMinSize.height;
- geometry.max_width = mSizeConstraints.mMaxSize.width;
- geometry.max_height = mSizeConstraints.mMaxSize.height;
+ geometry.min_width = DevicePixelsToGdkCoordRoundUp(
+ mSizeConstraints.mMinSize.width);
+ geometry.min_height = DevicePixelsToGdkCoordRoundUp(
+ mSizeConstraints.mMinSize.height);
+ geometry.max_width = DevicePixelsToGdkCoordRoundDown(
+ mSizeConstraints.mMaxSize.width);
+ geometry.max_height = DevicePixelsToGdkCoordRoundDown(
+ mSizeConstraints.mMaxSize.height);
uint32_t hints = GDK_HINT_MIN_SIZE | GDK_HINT_MAX_SIZE;
gtk_window_set_geometry_hints(GTK_WINDOW(mShell), nullptr,
@@ -1161,11 +1176,13 @@ nsWindow::Move(double aX, double aY)
mNeedsMove = false;
+ GdkPoint point = DevicePixelsToGdkPointRoundDown(nsIntPoint(x, y));
+
if (mIsTopLevel) {
- gtk_window_move(GTK_WINDOW(mShell), x, y);
+ gtk_window_move(GTK_WINDOW(mShell), point.x, point.y);
}
else if (mGdkWindow) {
- gdk_window_move(mGdkWindow, x, y);
+ gdk_window_move(mGdkWindow, point.x, point.y);
}
NotifyRollupGeometryChange();
@@ -1432,7 +1449,7 @@ nsWindow::GetScreenBounds(nsIntRect &aRe
// use the point including window decorations
gint x, y;
gdk_window_get_root_origin(gtk_widget_get_window(GTK_WIDGET(mContainer)), &x, &y);
- aRect.MoveTo(x, y);
+ aRect.MoveTo(GdkPointToDevicePixels({ x, y }));
}
else {
aRect.MoveTo(WidgetToScreenOffset());
@@ -1602,17 +1619,12 @@ nsWindow::Invalidate(const nsIntRect &aR
if (!mGdkWindow)
return NS_OK;
- GdkRectangle rect;
- rect.x = aRect.x;
- rect.y = aRect.y;
- rect.width = aRect.width;
- rect.height = aRect.height;
+ GdkRectangle rect = DevicePixelsToGdkRectRoundOut(aRect);
+ gdk_window_invalidate_rect(mGdkWindow, &rect, FALSE);
LOGDRAW(("Invalidate (rect) [%p]: %d %d %d %d\n", (void *)this,
rect.x, rect.y, rect.width, rect.height));
- gdk_window_invalidate_rect(mGdkWindow, &rect, FALSE);
-
return NS_OK;
}
@@ -1750,7 +1762,7 @@ nsWindow::WidgetToScreenOffset()
gdk_window_get_origin(mGdkWindow, &x, &y);
}
- return nsIntPoint(x, y);
+ return GdkPointToDevicePixels({ x, y });
}
NS_IMETHODIMP
@@ -2042,7 +2054,9 @@ nsWindow::OnExposeEvent(cairo_t *cr)
return FALSE;
}
- nsIntRegion &region = exposeRegion.mRegion;
+ gint scale = GdkScaleFactor();
+ nsIntRegion& region = exposeRegion.mRegion;
+ region.ScaleRoundOut(scale, scale);
ClientLayerManager *clientLayers =
(GetLayerManager()->GetBackendType() == LayersBackend::LAYERS_CLIENT)
@@ -2382,21 +2396,24 @@ nsWindow::OnSizeAllocate(GtkAllocation *
(void *)this, aAllocation->x, aAllocation->y,
aAllocation->width, aAllocation->height));
- nsIntSize size(aAllocation->width, aAllocation->height);
+ nsIntSize size = GdkRectToDevicePixels(*aAllocation).Size();
+
if (mBounds.Size() == size)
return;
+ nsIntRect rect;
+
// Invalidate the new part of the window now for the pending paint to
// minimize background flashes (GDK does not do this for external resizes
// of toplevels.)
if (mBounds.width < size.width) {
- GdkRectangle rect =
- { mBounds.width, 0, size.width - mBounds.width, size.height };
+ GdkRectangle rect = DevicePixelsToGdkRectRoundOut(
+ { mBounds.width, 0, size.width - mBounds.width, size.height });
gdk_window_invalidate_rect(mGdkWindow, &rect, FALSE);
}
if (mBounds.height < size.height) {
- GdkRectangle rect =
- { 0, mBounds.height, size.width, size.height - mBounds.height };
+ GdkRectangle rect = DevicePixelsToGdkRectRoundOut(
+ { 0, mBounds.height, size.width, size.height - mBounds.height });
gdk_window_invalidate_rect(mGdkWindow, &rect, FALSE);
}
@@ -3848,14 +3865,17 @@ nsWindow::SetWindowClass(const nsAString
void
nsWindow::NativeResize(int32_t aWidth, int32_t aHeight, bool aRepaint)
{
+ gint width = DevicePixelsToGdkCoordRoundUp(aWidth);
+ gint height = DevicePixelsToGdkCoordRoundUp(aHeight);
+
LOG(("nsWindow::NativeResize [%p] %d %d\n", (void *)this,
- aWidth, aHeight));
+ width, height));
// clear our resize flag
mNeedsResize = false;
if (mIsTopLevel) {
- gtk_window_resize(GTK_WINDOW(mShell), aWidth, aHeight);
+ gtk_window_resize(GTK_WINDOW(mShell), width, height);
}
else if (mContainer) {
GtkWidget *widget = GTK_WIDGET(mContainer);
@@ -3863,12 +3883,12 @@ nsWindow::NativeResize(int32_t aWidth, i
gtk_widget_get_allocation(widget, &prev_allocation);
allocation.x = prev_allocation.x;
allocation.y = prev_allocation.y;
- allocation.width = aWidth;
- allocation.height = aHeight;
+ allocation.width = width;
+ allocation.height = height;
gtk_widget_size_allocate(widget, &allocation);
}
else if (mGdkWindow) {
- gdk_window_resize(mGdkWindow, aWidth, aHeight);
+ gdk_window_resize(mGdkWindow, width, height);
}
}
@@ -3877,28 +3897,33 @@ nsWindow::NativeResize(int32_t aX, int32
int32_t aWidth, int32_t aHeight,
bool aRepaint)
{
+ gint width = DevicePixelsToGdkCoordRoundUp(aWidth);
+ gint height = DevicePixelsToGdkCoordRoundUp(aHeight);
+ gint x = DevicePixelsToGdkCoordRoundDown(aX);
+ gint y = DevicePixelsToGdkCoordRoundDown(aY);
+
mNeedsResize = false;
mNeedsMove = false;
LOG(("nsWindow::NativeResize [%p] %d %d %d %d\n", (void *)this,
- aX, aY, aWidth, aHeight));
+ x, y, width, height));
if (mIsTopLevel) {
- // aX and aY give the position of the window manager frame top-left.
- gtk_window_move(GTK_WINDOW(mShell), aX, aY);
+ // x and y give the position of the window manager frame top-left.
+ gtk_window_move(GTK_WINDOW(mShell), x, y);
// This sets the client window size.
- gtk_window_resize(GTK_WINDOW(mShell), aWidth, aHeight);
+ gtk_window_resize(GTK_WINDOW(mShell), width, height);
}
else if (mContainer) {
GtkAllocation allocation;
- allocation.x = aX;
- allocation.y = aY;
- allocation.width = aWidth;
- allocation.height = aHeight;
+ allocation.x = x;
+ allocation.y = y;
+ allocation.width = width;
+ allocation.height = height;
gtk_widget_size_allocate(GTK_WIDGET(mContainer), &allocation);
}
else if (mGdkWindow) {
- gdk_window_move_resize(mGdkWindow, aX, aY, aWidth, aHeight);
+ gdk_window_move_resize(mGdkWindow, x, y, width, height);
}
}
@@ -6104,8 +6129,8 @@ nsWindow::GetThebesSurface(cairo_t *cr)
#if (MOZ_WIDGET_GTK == 2)
gdk_drawable_get_size(GDK_DRAWABLE(mGdkWindow), &width, &height);
#else
- width = gdk_window_get_width(mGdkWindow);
- height = gdk_window_get_height(mGdkWindow);
+ width = GdkCoordToDevicePixels(gdk_window_get_width(mGdkWindow));
+ height = GdkCoordToDevicePixels(gdk_window_get_height(mGdkWindow));
#endif
// Owen Taylor says this is the right thing to do!
@@ -6131,25 +6156,11 @@ nsWindow::GetThebesSurface(cairo_t *cr)
if (!usingShm)
# endif // MOZ_HAVE_SHMIMAGE
{
-#if (MOZ_WIDGET_GTK == 3)
-#if MOZ_TREE_CAIRO
-#error "cairo-gtk3 target must be built with --enable-system-cairo"
-#else
- if (cr) {
- cairo_surface_t *surf = cairo_get_target(cr);
- if (cairo_surface_status(surf) != CAIRO_STATUS_SUCCESS) {
- NS_NOTREACHED("Missing cairo target?");
- return nullptr;
- }
- mThebesSurface = gfxASurface::Wrap(surf);
- } else
-#endif
-#endif // (MOZ_WIDGET_GTK == 3)
- mThebesSurface = new gfxXlibSurface
- (GDK_WINDOW_XDISPLAY(mGdkWindow),
- gdk_x11_window_get_xid(mGdkWindow),
- visual,
- size);
+ mThebesSurface = new gfxXlibSurface
+ (GDK_WINDOW_XDISPLAY(mGdkWindow),
+ gdk_x11_window_get_xid(mGdkWindow),
+ visual,
+ size);
}
#endif // MOZ_X11
@@ -6217,6 +6228,8 @@ nsWindow::BeginMoveDrag(WidgetMouseEvent
}
// tell the window manager to start the move
+ screenX = DevicePixelsToGdkCoordRoundDown(screenX);
+ screenY = DevicePixelsToGdkCoordRoundDown(screenY);
gdk_window_begin_move_drag(gdk_window, button, screenX, screenY,
aEvent->time);
@@ -6308,6 +6321,69 @@ nsWindow::ClearCachedResources()
}
}
+gint
+nsWindow::GdkScaleFactor()
+{
+#if (MOZ_WIDGET_GTK >= 3)
+ // Available as of GTK 3.10+
+ static auto sGdkWindowGetScaleFactorPtr = (gint (*)(GdkWindow*))
+ dlsym(RTLD_DEFAULT, "gdk_window_get_scale_factor");
+ if (sGdkWindowGetScaleFactorPtr)
+ return (*sGdkWindowGetScaleFactorPtr)(mGdkWindow);
+#endif
+ return 1;
+}
+
+
+gint
+nsWindow::DevicePixelsToGdkCoordRoundUp(int pixels) {
+ gint scale = GdkScaleFactor();
+ return (pixels + scale - 1) / scale;
+}
+
+gint
+nsWindow::DevicePixelsToGdkCoordRoundDown(int pixels) {
+ gint scale = GdkScaleFactor();
+ return pixels / scale;
+}
+
+GdkPoint
+nsWindow::DevicePixelsToGdkPointRoundDown(nsIntPoint point) {
+ gint scale = GdkScaleFactor();
+ return { point.x / scale, point.y / scale };
+}
+
+GdkRectangle
+nsWindow::DevicePixelsToGdkRectRoundOut(nsIntRect rect) {
+ gint scale = GdkScaleFactor();
+ int x = rect.x / scale;
+ int y = rect.y / scale;
+ int right = (rect.x + rect.width + scale - 1) / scale;
+ int bottom = (rect.y + rect.height + scale - 1) / scale;
+ return { x, y, right - x, bottom - y };
+}
+
+int
+nsWindow::GdkCoordToDevicePixels(gint coord) {
+ return coord * GdkScaleFactor();
+}
+
+nsIntPoint
+nsWindow::GdkPointToDevicePixels(GdkPoint point) {
+ gint scale = GdkScaleFactor();
+ return nsIntPoint(point.x * scale,
+ point.y * scale);
+}
+
+nsIntRect
+nsWindow::GdkRectToDevicePixels(GdkRectangle rect) {
+ gint scale = GdkScaleFactor();
+ return nsIntRect(rect.x * scale,
+ rect.y * scale,
+ rect.width * scale,
+ rect.height * scale);
+}
+
nsresult
nsWindow::SynthesizeNativeMouseEvent(nsIntPoint aPoint,
uint32_t aNativeMessage,
diff -up firefox-35.0/mozilla-release/widget/gtk/nsWindow.h.975919-gtk3-hidpi firefox-35.0/mozilla-release/widget/gtk/nsWindow.h
--- firefox-35.0/mozilla-release/widget/gtk/nsWindow.h.975919-gtk3-hidpi 2015-01-09 05:38:28.000000000 +0100
+++ firefox-35.0/mozilla-release/widget/gtk/nsWindow.h 2015-01-22 13:07:51.064571540 +0100
@@ -97,6 +97,7 @@ public:
NS_IMETHOD Destroy(void);
virtual nsIWidget *GetParent();
virtual float GetDPI();
+ virtual double GetDefaultScaleInternal();
virtual nsresult SetParent(nsIWidget* aNewParent);
NS_IMETHOD SetModal(bool aModal);
virtual bool IsVisible() const;
@@ -467,6 +468,20 @@ private:
* however, IME doesn't work at that time.
*/
nsRefPtr<nsGtkIMModule> mIMModule;
+
+ // HiDPI scale conversion
+ gint GdkScaleFactor();
+
+ // To GDK
+ gint DevicePixelsToGdkCoordRoundUp(int pixels);
+ gint DevicePixelsToGdkCoordRoundDown(int pixels);
+ GdkPoint DevicePixelsToGdkPointRoundDown(nsIntPoint point);
+ GdkRectangle DevicePixelsToGdkRectRoundOut(nsIntRect rect);
+
+ // From GDK
+ int GdkCoordToDevicePixels(gint coord);
+ nsIntPoint GdkPointToDevicePixels(GdkPoint point);
+ nsIntRect GdkRectToDevicePixels(GdkRectangle rect);
};
class nsChildWindow : public nsWindow {

View File

@ -1,2 +1,2 @@
755c04ee31dbcd28ed4d351b67fe8a8f firefox-37.0.2.source.tar.bz2
07b61416032b88c4fda818508426214e firefox-langpacks-37.0.2-20150416.tar.xz
d1c66ec031c0cb8aea3df7210dc6955c firefox-38.0.source.tar.bz2
886b4897e0ae8aaa9a5f2fd361d62100 firefox-langpacks-38.0-20150505.tar.bz2