diff --git a/build.bat b/build.bat
index 904b4f19d..1b34aa37f 100644
--- a/build.bat
+++ b/build.bat
@@ -8,6 +8,6 @@ pwsh -Command "(gc -en UTF8NoBOM manifest.json) -replace 'pre%oldRev%', 'pre%qui
rem "C:\Program Files\7-Zip\7z" a -xr!.svn quickFolders.zip install.rdf chrome.manifest chrome defaults license.txt
"C:\Program Files\7-Zip\7z" a -xr!.svn QuickFoldersWeb.zip manifest.json install.rdf chrome.manifest chrome defaults license.txt
echo %quickFoldersRev% > revision.txt
-move QuickFolders*.xpi "..\..\Release\_Test Versions\4.19\"
+move QuickFolders*.xpi "..\..\Release\_Test Versions\4.20\"
pwsh -Command "Start-Sleep -m 150"
-rename QuickFoldersWeb.zip QuickFolders-wx-4.19.1pre%quickFoldersRev%.xpi
\ No newline at end of file
+rename QuickFoldersWeb.zip QuickFolders-wx-4.20pre%quickFoldersRev%.xpi
\ No newline at end of file
diff --git a/chrome-min.manifest b/chrome-min.manifest
deleted file mode 100644
index b3c8dcb21..000000000
--- a/chrome-min.manifest
+++ /dev/null
@@ -1,120 +0,0 @@
-content quickfolders chrome/content/
-#jsm modules
-resource quickfolders chrome://quickfolders/content/
-# Thunderbird 61 new old legacy
-resource quickfoldersShim60 chrome/content/shim60/ platformversion<61
-resource quickfoldersShim60 chrome/content/shim61/ platformversion>=61
-
-locale quickfolders en-US chrome/locale/en-US/
-locale quickfolders de chrome/locale/de/
-locale quickfolders it chrome/locale/it/
-locale quickfolders fr chrome/locale/fr/
-locale quickfolders pl chrome/locale/pl/
-locale quickfolders ru chrome/locale/ru/
-
-#platforms specific content - allow additional platforms specific rules
-#skin quickfolders-pl classic/1.0 chrome/skin/
-skin quickfolders classic/1.0 chrome/skin/
-
-# shim-JS for platforms>11 - this section will avoid the pesky errors in Thunderbird about for..in being outdated
-# while also avoid Postbox crashing us for syntax when we use for..of
-#tb (for..of)
-content quickfoldersShim chrome://quickfolders/content/shim12/ application={3550f703-e582-4d05-9a08-453d09bdfdc6}
-#sm (for..of)
-content quickfoldersShim chrome://quickfolders/content/shim12/ application={92650c4d-4b8e-4d2a-b7eb-24ecf4f6b63a}
-
-#postbox (for in) (for..of)
-## for old postbox, we can't combine application & platformversion
-content quickfoldersShim chrome://quickfolders/content/shim12/ application=postbox@postbox-inc.com platformversion>51
-
-# ECMA.next code (function*) etc.
-content quickfoldersShimECMA chrome://quickfolders/content/shimECMAold/ platformversion<26
-content quickfoldersShimECMA chrome://quickfolders/content/shimECMAnew/ platformversion>=26
-# override for Interlink application={3550f703-e582-4d05-9a08-453d09bdfdc6}
-content quickfoldersShimECMA chrome://quickfolders/content/shimECMAnew/
-
-
-# Thunderbird >=12
-content myXUL chrome://quickfolders/content/xul12/ application={3550f703-e582-4d05-9a08-453d09bdfdc6}
-# SeaMonkey
-content myXUL chrome://quickfolders/content/xulSM/ application={92650c4d-4b8e-4d2a-b7eb-24ecf4f6b63a}
-# Postbox
-content myXUL chrome://quickfolders/content/xulPb/ application=postbox@postbox-inc.com
-
-#ALL
-overlay chrome://messenger/content/messenger.xul chrome://myXUL/content/overlayCurrentfolder.xul
-overlay chrome://messenger/content/messageWindow.xul chrome://myXUL/content/currentFolderSingleMessage.xul
-overlay chrome://messenger/content/SearchDialog.xul chrome://quickfolders/content/overlaySearchDialog.xul
-overlay chrome://messenger/content/FilterListDialog.xul chrome://quickfolders/content/overlayFilterList.xul
-
-# messengercompose.xul (MailCompose Window)
-overlay chrome://messenger/content/messengercompose/messengercompose.xul chrome://quickfolders/content/overlayComposer.xul
-
-# replace mailWindowOverlay.xul with messenger.xul!
-#TB3+
-overlay chrome://messenger/content/mailWindowOverlay.xul chrome://quickfolders/content/overlay.xul application={3550f703-e582-4d05-9a08-453d09bdfdc6} platformversion<61
-overlay chrome://messenger/content/mailWindowOverlay.xul chrome://quickfolders/content/scrollPatch/scrollMenus.xul application={3550f703-e582-4d05-9a08-453d09bdfdc6}
-overlay chrome://messenger/content/messenger.xul chrome://quickfolders/content/overlay.xul application={3550f703-e582-4d05-9a08-453d09bdfdc6} platformversion>=61
-
-#Postbox - we need to keep overlaying mailWindowOverlay at the moment or we loose the styling
-overlay chrome://messenger/content/mailWindowOverlay.xul chrome://quickfolders/content/overlayPostbox.xul application=postbox@postbox-inc.com
-overlay chrome://messenger/content/mailWindowOverlay.xul chrome://quickfolders/content/scrollPatch/scrollMenus.xul application=postbox@postbox-inc.com
-
-#SeaMonkey
-overlay chrome://messenger/content/mailWindowOverlay.xul chrome://quickfolders/content/overlaySeamonkey.xul application={92650c4d-4b8e-4d2a-b7eb-24ecf4f6b63a}
-overlay chrome://messenger/content/mailWindowOverlay.xul chrome://quickfolders/content/scrollPatch/scrollMenus.xul application={92650c4d-4b8e-4d2a-b7eb-24ecf4f6b63a}
-
-#Toolbox - moved to separate file to re-implement quickmove in Tb70+
-overlay chrome://quickfolders/content/overlay.xul chrome://quickfolders/content/qf-tools.xul platformversion<69.0
-overlay chrome://quickfolders/content/overlay.xul chrome://quickfolders/content/qf-tools69.xul platformversion>=69.0
-
-
-##Style Tweaks
-#All
-style chrome://global/content/customizeToolbar.xul chrome://quickfolders/content/quickfolders-layout.css appversion<59.0a1
-style chrome://messenger/content/customizeToolbar.xul chrome://quickfolders/content/quickfolders-layout.css appversion>=59.0a1
-style chrome://messenger/content/messenger.xul chrome://quickfolders/content/quickfolders-68.css appversion>67
-
-# hidden option for revealing small icons checkbox:
-overlay chrome://global/content/customizeToolbar.xul chrome://quickfolders/content/overlayCustomizeToolbar.xul appversion<59.0a1
-overlay chrome://messenger/content/customizeToolbar.xul chrome://quickfolders/content/overlayCustomizeToolbar.xul appversion>59.0a1
-
-
-## modern styles - new monochrome icons for Thunderbird 60
-## new flexible layout path quickfoldersLayout/content
-content quickfoldersLayout chrome://quickfolders/content/layoutClassic/ appversion<60.0
-content quickfoldersLayout chrome://quickfolders/content/layout60/ appversion>59.99
-style chrome://messenger/content/customizeToolbar.xul chrome://quickfoldersLayout/content/quickfolders-mods.css
-
-
-
-style chrome://quickfolders/content/options.xul chrome://quickfolders/skin/quickfolders-widgets.css
-style chrome://quickfolders/content/options.xul chrome://quickfolders/skin/quickfolders-widgets64.css appversion>=61.0
-style chrome://global/content/alerts/alert.xul chrome://quickfolders/content/quickfolders-alert.css
-style chrome://quickfolders/content/register.xul chrome://quickfolders/skin/quickfolders-widgets.css
-style chrome://quickfolders/content/overlay.xul chrome://quickfolders/skin/quickfolders-widgets.css
-style chrome://quickfolders/content/overlay.xul chrome://quickfolders/content/quickfolders-filters.css
-style chrome://messenger/content/messenger.xul chrome://quickfolders/content/qf-foldertree.css
-
-
-#Postbox
-style chrome://quickfolders/content/overlayPostbox.xul chrome://quickfolders/content/quickfolders-filters.css application=postbox@postbox-inc.com
-
-#SeaMonkey # appversion<2.2 = before gecko2
-style chrome://quickfolders/content/overlaySeamonkey.xul chrome://quickfolders/content/quickfolders-filters.css application={92650c4d-4b8e-4d2a-b7eb-24ecf4f6b63a}
-
-####### LEGACY RULES - these list deprecated css styles, for backwards compatibility with older versions of Gecko
-####### should be ignored by the validator (but probably aren't)
-#Tb legacy
-
-#SM legacy
-
-#Postbox - still all legacy styles for linear-gradients!
-style chrome://quickfolders/content/change-order.xul chrome://quickfolders/content/qf_legacy16.css application=postbox@postbox-inc.com appversion<6
-style chrome://quickfolders/content/register.xul chrome://quickfolders/content/qf_legacy16.css application=postbox@postbox-inc.com appversion<6
-style chrome://quickfolders/content/overlayFilterList.xul chrome://quickfolders/content/qf_legacy16.css application=postbox@postbox-inc.com appversion<6
-style chrome://quickfolders/content/options.xul chrome://quickfolders/content/qf_legacy16.css application=postbox@postbox-inc.com appversion<6
-style chrome://quickfolders/content/set-folder-category.xul chrome://quickfolders/content/qf_legacy16.css application=postbox@postbox-inc.com appversion<6
-style chrome://messenger/content/messenger.xul chrome://quickfolders/skin/quickfolders-palettes-legacy.css application=postbox@postbox-inc.com appversion<6
-style chrome://quickfolders/content/options.xul chrome://quickfolders/skin/quickfolders-palettes-legacy.css application=postbox@postbox-inc.com appversion<6
-
diff --git a/chrome/content/options.js b/chrome/content/options.js
index a86d33be9..e202724ee 100644
--- a/chrome/content/options.js
+++ b/chrome/content/options.js
@@ -32,6 +32,7 @@ QuickFolders.Options = {
QF_PREF_LAYOUT : 2,
QF_PREF_ADVANCED : 1,
QF_PREF_GENERAL : 0,
+ prefMap : {},
// save space, for visually impaired
collapseHead: function collapseHead() {
@@ -47,10 +48,8 @@ QuickFolders.Options = {
rememberLastTab: function rememberLastTab() {
let tabbox = document.getElementById("QuickFolders-Options-Tabbox");
QuickFolders.Preferences.setIntPref('lastSelectedOptionsTab', tabbox.selectedIndex);
- let observerService = Components.classes["@mozilla.org/observer-service;1"].getService(Components.interfaces.nsIObserverService);
- observerService.notifyObservers(null, "quickfolders-options-saved", null);
} ,
-
+
accept: function accept(evt) {
const prefs = QuickFolders.Preferences;
@@ -97,6 +96,7 @@ QuickFolders.Options = {
Services.prompt.alert(null,"QuickFolders","Error in QuickFolders:\n" + e);
};
this.rememberLastTab();
+ QuickFolders.Interface.updateObserver(); // update the main window layout
return true;
} ,
@@ -208,17 +208,33 @@ QuickFolders.Options = {
util.logDebug("Skipping loadPreferences - Preferences object not defined");
return; // older versions of Thunderbird do not need this.
}
- }
+ }
util.logDebug("loadPreferences - start:");
+
+ let myprefElements = document.querySelectorAll("[preference]");
+ let foundElements = {};
+ for (let myprefElement of myprefElements) {
+ let legacyPrefId = myprefElement.getAttribute("preference");
+ foundElements[legacyPrefId] = myprefElement;
+ }
let myprefs = document.getElementsByTagName("preference");
if (myprefs.length) {
let prefArray = [];
for (let it of myprefs) {
- let p = new Object({ id: it.id,
- name: it.getAttribute('name'),
- type: it.getAttribute('type') });
- if (it.getAttribute('instantApply') == "true") p.instantApply = true;
+ let p = new Object(
+ {
+ id: it.getAttribute('name'),
+ name: it.getAttribute('name'),
+ type: it.getAttribute('type')
+ }
+ );
+ this.prefMap[it.getAttribute('name')] = it.getAttribute('id'); // store original Id!
+ // not supported
+ // if (it.getAttribute('instantApply') == "true") p.instantApply = true;
prefArray.push(p);
+ // manually change the shortname in the preference attribute to the actual
+ // preference "id" (as in the preference manager)
+ foundElements[it.id].setAttribute("preference", it.getAttribute("name"));
}
util.logDebug("Adding " + prefArray.length + " preferences to Preferences loader…")
if (Preferences)
@@ -333,15 +349,7 @@ QuickFolders.Options = {
break;
}
- // .0 private license, .1 domain license
- // these are only for testing, so normal users shouldn't need them, default to '' via code
- let EncryptionKey = prefs.getStringPref('premium.encryptionKey.' + QuickFolders.Crypto.key_type.toString());
- /*
- if (EncryptionKey) {
- getElement('boxKeyGenerator').collapsed = false;
- licenser.RSA_encryption = EncryptionKey;
- }
- */
+
if (earlyExit) return;
if (licenser.isValidated)
@@ -414,14 +422,8 @@ QuickFolders.Options = {
}
);
});
- try {
- let selectOptionsPane = prefs.getIntPref('lastSelectedOptionsTab');
- if (selectOptionsPane >=0) {
- panels.selectedIndex = selectOptionsPane; // for some reason the tab doesn't get selected
- panels.tabbox.selectedTab = panels.tabbox.tabs.childNodes[selectOptionsPane];
- }
- }
- catch(e) { ; }
+ options.selectPane (prefs.getIntPref('lastSelectedOptionsTab'));
+
panels.addEventListener('select', function(evt) { QuickFolders.Options.onTabSelect(panels,evt); } );
options.configExtra2Button();
@@ -430,6 +432,18 @@ QuickFolders.Options = {
},
+ selectPane: function(selectOptionsPane) {
+ try {
+ let panels = document.getElementById('QuickFolders-Panels');
+ if (selectOptionsPane >=0) {
+ panels.selectedIndex = selectOptionsPane;
+ let firstTabOffset = (panels.tabbox.tabs.children[0].tagName == 'tab') ? 0 : 1;
+ panels.tabbox.selectedTab = panels.tabbox.tabs.children[selectOptionsPane + firstTabOffset];
+ }
+ }
+ catch(e) { ; }
+ } ,
+
initBling: function initBling (tabbox) {
const util = QuickFolders.Util,
prefs = QuickFolders.Preferences,
@@ -523,18 +537,16 @@ QuickFolders.Options = {
selectQuickMoveFormat: function selectQuickMoveFormat(menuList) {
let prefString1 = menuList.getAttribute('preference'),
- prefName1 = document.getElementById(prefString1).getAttribute('name'),
val = menuList.value;
- QuickFolders.Util.logDebug('Setting quick move format pref[' + prefName1 + ']: ' + val + '…');
- QuickFolders.Preferences.setIntPreference(prefName1, parseInt(val));
+ QuickFolders.Util.logDebug('Setting quick move format pref[' + prefString1 + ']: ' + val + '…');
+ QuickFolders.Preferences.setIntPreference(prefString1, parseInt(val));
} ,
selectFolderCrossing: function selectFolderCrossing(menuList) {
let prefString = menuList.getAttribute('preference'),
- prefName = document.getElementById(prefString).getAttribute('name'),
val = menuList.value;
- QuickFolders.Util.logDebug('Setting folder crossing pref[' + prefName1 + ']: ' + val + '…');
- QuickFolders.Preferences.setIntPreference(prefName, parseInt(val));
+ QuickFolders.Util.logDebug('Setting folder crossing pref[' + prefString + ']: ' + val + '…');
+ QuickFolders.Preferences.setIntPreference(prefString, parseInt(val));
} ,
enablePremiumConfig: function enablePremiumConfig(isEnabled) {
@@ -912,20 +924,6 @@ QuickFolders.Options = {
lightweight: 4
} ,
- toggleMutexCheckbox: function toggleMutexCheckbox(cbox, cbox2Name) {
- const prefs = QuickFolders.Preferences;
- let prefString1 = cbox.getAttribute('preference'),
- prefName1 = document.getElementById(prefString1).getAttribute('name'),
- cbox2 = document.getElementById(cbox2Name);
- if(!prefs.getBoolPrefVerbose(prefName1)) { // not yet checked but will be after event is propagated.
- let prefString2 = cbox2.getAttribute('preference'),
- prefName2 = document.getElementById(prefString2).getAttribute('name');
- // uncheck the other checkbox
- if (prefs.getBoolPrefVerbose(prefName2))
- prefs.setBoolPrefVerbose(prefName2, false);
- }
- },
-
setDefaultButtonRadius: function setDefaultButtonRadius() {
const prefs = QuickFolders.Preferences;
document.getElementById('QuickFolders-Options-CustomTopRadius').value = "4";
@@ -1016,7 +1014,7 @@ QuickFolders.Options = {
prefs.setStringPref('currentFolderBar.background', styleValue);
prefs.setStringPref('currentFolderBar.background.selection', choice);
if (Preferences) {
- Preferences.get('qfpa-CurrentFolder-Background')._value=styleValue;
+ Preferences.get('extensions.quickfolders.currentFolderBar.background')._value=styleValue;
}
//if (withUpdate)
// QuickFolders.Interface.updateMainWindow();
@@ -1222,16 +1220,12 @@ QuickFolders.Options = {
},
changeTextPreference: function changeTextPreference(txtBox) {
- let prefString = txtBox.getAttribute("preference"),
- pref = document.getElementById(prefString);
+ let prefString = txtBox.getAttribute("preference");
- if (pref) {
- let name = pref.getAttribute('name');
- if(name)
- QuickFolders.Preferences.setIntPreference(name, txtBox.value);
- else
- QuickFolders.Util.logToConsole('changeTextPreference could not find pref string: ' + prefString);
- }
+ if (Preferences.get(prefString))
+ QuickFolders.Preferences.setIntPreference(prefString, txtBox.value);
+ else
+ QuickFolders.Util.logToConsole('changeTextPreference could not find pref string: ' + prefString);
return QuickFolders.Interface.updateMainWindow(false);
},
@@ -1239,19 +1233,19 @@ QuickFolders.Options = {
toggleBoolPreference: function toggleBoolPreference(cb, noUpdate) {
const util = QuickFolders.Util,
QI = util.getMail3PaneWindow().QuickFolders.Interface;
- let prefString = cb.getAttribute("preference"),
- pref = document.getElementById(prefString);
+ let prefString = cb.getAttribute("preference");
- if (pref)
- QuickFolders.Preferences.setBoolPrefVerbose(pref.getAttribute('name'), cb.checked);
+ if (prefString)
+ QuickFolders.Preferences.setBoolPrefVerbose(prefString, cb.checked);
if (noUpdate)
- return true;
- switch (pref) {
+ return false;
+ switch (prefString) {
case 'extensions.quickfolders.collapseCategories':
QI.updateCategoryLayout();
- return;
+ return false;
}
- return QI.updateMainWindow(false); // force full updated
+ QI.updateMainWindow(false); // force full updated
+ return false;
},
toggleColorTranslucent: function toggleColorTranslucent(cb, pickerId, label, userStyle) {
@@ -1261,12 +1255,9 @@ QuickFolders.Options = {
if (userStyle)
QuickFolders.Preferences.setUserStyle(userStyle, 'background-color', picker.value);
- // problems with instantapply?
- let prefString = cb.getAttribute("preference"),
- pref = document.getElementById(prefString);
-
- if (pref)
- QuickFolders.Preferences.setBoolPrefVerbose(pref.getAttribute('name'), cb.checked);
+ let prefString = cb.getAttribute("preference");
+ if (prefString)
+ QuickFolders.Preferences.setBoolPrefVerbose(prefString, cb.checked);
return QuickFolders.Interface.updateMainWindow(true);
},
diff --git a/chrome/content/options.xul b/chrome/content/options.xul
index 1b8d737ae..6052ce034 100644
--- a/chrome/content/options.xul
+++ b/chrome/content/options.xul
@@ -1094,9 +1094,9 @@
-
-
-
+
+
+ &qf.label.insertLicense;
@@ -1263,7 +1263,7 @@
+ oncommand="QI.storeConfig(Preferences, options.prefMap);" />
@@ -1275,17 +1275,17 @@
diff --git a/chrome/content/quickfolders-bookmarks.js b/chrome/content/quickfolders-bookmarks.js
index 475083ecf..eca9fcd3f 100644
--- a/chrome/content/quickfolders-bookmarks.js
+++ b/chrome/content/quickfolders-bookmarks.js
@@ -477,12 +477,17 @@ QuickFolders.bookmarks = {
theBrowser = null;
if (util.Application=='Postbox') return null;
- let getWindowEnumerator =
+ let getWindowEnumerator;
+
+ if (mediator.getEnumerator) {
+ getWindowEnumerator = mediator.getEnumerator
+ }
+ else getWindowEnumerator =
(util.isLinux) ?
mediator.getXULWindowEnumerator :
mediator.getZOrderXULWindowEnumerator;
browsers = getWindowEnumerator ('navigator:browser', true);
- if (browsers) {
+ if (browsers && browsers.hasMoreElements()) {
theBrowser = browsers.getNext();
if (theBrowser) {
if (theBrowser.getInterface)
@@ -498,7 +503,7 @@ QuickFolders.bookmarks = {
}
if (!DomWindow) {
browsers = getWindowEnumerator ('navigator:browser', true);
- if (!browsers || !(util.Application!='Firefox' && browsers.hasMoreElements()))
+ if (!browsers || !browsers.hasMoreElements())
browsers = getWindowEnumerator ('mail:3pane', true);
if (!browsers)
return null;
diff --git a/chrome/content/quickfolders-composer.js b/chrome/content/quickfolders-composer.js
index 647fa1664..7b5e50f8b 100644
--- a/chrome/content/quickfolders-composer.js
+++ b/chrome/content/quickfolders-composer.js
@@ -170,8 +170,8 @@ QuickFolders.notifyComposeBodyReady = function QF_notifyComposeBodyReady(evt) {
}
function setMailHeaders(folder, options, isOrigin) {
- const ADVANCED_FLAGS = util.ADVANCED_FLAGS;
-
+ const ADVANCED_FLAGS = util.ADVANCED_FLAGS,
+ msgComposeType = Ci.nsIMsgCompType;
var {MailServices} =
(util.versionGreaterOrEqual(util.ApplicationVersion, "64")) ?
ChromeUtils.import("resource:///modules/MailServices.jsm") : // new module spelling
@@ -192,9 +192,26 @@ QuickFolders.notifyComposeBodyReady = function QF_notifyComposeBodyReady(evt) {
else {
// already explicitely set child folder settings are not overwritten by parents!
if (entry.toAddress && !options.toAddress) {
- options.toAddress = entry.toAddress;
- let dbg = txt.replace('{1}', entry.toAddress);
- util.logDebugOptional('composer', dbg.replace('{2}',"toAddress"));
+ // [issue 92] - do not apply when replying!
+ if (gMsgCompose.type == msgComposeType.Reply
+ || gMsgCompose.type == msgComposeType.ReplyAll
+ || gMsgCompose.type == msgComposeType.ReplyToSender
+ || gMsgCompose.type == msgComposeType.ReplyToGroup
+ || gMsgCompose.type == msgComposeType.ReplyToSenderAndGroup
+ || gMsgCompose.type == msgComposeType.ReplyToList)
+ util.logDebugOptional('composer', "not overwriting to address: this is a reply case");
+ else {
+ if (gMsgCompose.type == msgComposeType.New && gMsgCompose.compFields.to) {
+ // [issue 110] "Tab-specific Properties" overwrites To Address when selecting to from AB
+ util.logDebugOptional('composer', "New mail: not overwriting to address - " + gMsgCompose.compFields.to + "\n"
+ + "this was probably set by clicking Write from AB.");
+ }
+ else {
+ options.toAddress = entry.toAddress;
+ let dbg = txt.replace('{1}', entry.toAddress);
+ util.logDebugOptional('composer', dbg.replace('{2}',"toAddress"));
+ }
+ }
}
if (entry.fromIdentity && !options.identity) {
let dbg = txt.replace('{1}', entry.fromIdentity);
diff --git a/chrome/content/quickfolders-interface.js b/chrome/content/quickfolders-interface.js
index ff615bb48..769255b22 100644
--- a/chrome/content/quickfolders-interface.js
+++ b/chrome/content/quickfolders-interface.js
@@ -922,13 +922,25 @@ QuickFolders.Interface = {
if (this.currentActiveCategories == FCat.UNCATEGORIZED) // [issue 72] Category "_Uncategorized" will show all categories after moving a folder to another
this.selectCategory(FCat.UNCATEGORIZED);
else {
- if (!catArray.includes(this.currentActiveCategories)) {
- // make sure all tabs are visible in case we delete the last category!
- this.selectCategory(FCat.ALL);
- }
+ // [issue 101] If multiple categories are selected, closing QuickFolders settings reverts to "Show All"
+ let cats = this.currentActiveCategories ? this.currentActiveCategories.split('|') : [],
+ newCats = [];
+
+ // remove invalid categories
+ for (let selCat of cats) {
+ if (catArray.includes(selCat)) {
+ newCats.push(selCat);
+ }
+ }
+ if (!newCats.length) {
+ // make sure all tabs are visible in case we delete the last category!
+ this.selectCategory(FCat.ALL);
+ }
+ else if (cats.length > newCats.length) {
+ QuickFolders.Interface.selectCategory(newCats.join('|'),false);
+ }
}
}
-
if (prefs.getBoolPref('collapseCategories'))
cat.classList.add('autocollapse');
@@ -1582,6 +1594,10 @@ QuickFolders.Interface = {
||
tag == 'input' // Thunderbird 68 textboxes.
||
+ tag == 'html:input' // Thunderbird 78 textboxes.
+ ||
+ tag == 'search-textbox' // Thunderbird 78 search boxes
+ ||
tag == 'findbar') // [Bug 26654] in-mail search
)
||
@@ -2316,8 +2332,11 @@ QuickFolders.Interface = {
else {
if (nUnreadSubfolders == nUnreadTotal)
cssClass += " has-unreadSubOnly";
- else
+ else {
+ if (nUnreadSubfolders)
+ cssClass += " has-unreadSub"; // [issue 109]
cssClass += " has-unread";
+ }
}
}
@@ -4939,8 +4958,8 @@ QuickFolders.Interface = {
if (matchPos >= 0) {
// only add to matches if not already there
if (!matches.some( function(a) { return (a.uri == folder.URI); })) {
- let rank = searchString.length - folder.prettyName.length;
- if (rank == 0) rank += 7; // full match - promote
+ let rank = 1; // searchString.length - folder.prettyName.length;
+ if (searchString.length == folder.prettyName.length) rank += 7; // full match - promote
if (matchPos == 0) rank += 3; // promote the rank if folder name starts with this string
if (searchString.length<=2 && matchPos!=0) { // doesn't start with single/two letters?
// is it the start of a new word? e.g. searching 'F' should match "x-fred" "x fred" "x.fred" "x,fred"
@@ -5061,8 +5080,8 @@ QuickFolders.Interface = {
// folderEntry.uri
matchPos = folderNameSearched.indexOf(searchString);
if (matchPos >= 0) {
- let rank = searchString.length - folderEntry.name.length; // the more characters of the string match, the higher the rank!
- if (rank == 0) rank += 4; // full match - promote
+ let rank = 0; // searchString.length - folderEntry.name.length; // the more characters of the string match, the higher the rank!
+ if (searchString.length == folderEntry.name.length) rank += 4; // full match - promote
if (matchPos == 0) rank += 2; // promote the rank if folder name starts with this string
if (searchString.length<=2 && matchPos!=0) { // doesn't start with single/two letters?
// is it the start of a new word? e.g. searching 'F' should match "x-fred" "x fred" "x.fred" "x,fred" ":fred" "(fred" "@fred"
@@ -5151,7 +5170,11 @@ QuickFolders.Interface = {
// rebuild popup
let menupopup, txtDebugMenu = '';
if (true) {
- matches.sort(function (a,b) { if (b.rank - a.rank == 0) return b.lname - a.lname; return b.rank - a.rank; });
+ matches.sort(function (a,b) {
+ if (b.rank - a.rank == 0)
+ return b.lname - a.lname; // Alphabetic
+ return b.rank - a.rank;
+ });
menupopup = util.$("QuickFolders-FindPopup");
if (QuickFolders.quickMove.isActive) {
@@ -5272,8 +5295,9 @@ QuickFolders.Interface = {
}
if (!menupopup.childElementCount) {
- let menuitem = this.createIconicElement('menuitem','*');
- menuitem.setAttribute('label', ELLIPSIS); // just one dummy to show we were searching
+ let menuitem = this.createIconicElement('menuitem','*'),
+ noMatchWrn = util.getBundleString("qfNoFolderMatch", "No matching parent folders!");
+ menuitem.setAttribute('label', noMatchWrn); // just one dummy to show we were searching
menuitem.setAttribute("tag", "dummy");
menupopup.appendChild(menuitem);
}
@@ -7217,7 +7241,7 @@ QuickFolders.Interface = {
} ,
- storeConfig: function qf_storeConfig(preferences) {
+ storeConfig: function qf_storeConfig(preferences, prefMap) {
// see options.copyFolderEntries
const Cc = Components.classes,
Ci = Components.interfaces,
@@ -7241,27 +7265,35 @@ QuickFolders.Interface = {
let isLicense = (util.Licenser.isExpired || util.Licenser.isValidated);
if (isLicense)
storedObj.premium = [];
+ util.logDebug("Storing configuration...")
for (let info of prefInfos) {
- let node = { key: info.name, val: info.value, id: info.id }
- switch (info.id.substr(0,5)) {
- case 'qfpg-': // general
- storedObj.general.push(node);
- break;
- case 'qfpa-': // advanced
- storedObj.advanced.push(node);
- break;
- case 'qfpl-': // layout
- storedObj.layout.push(node);
- break;
- case 'qfpp-': // premium - make sure not to import the License without confirmation!
- if (isLicense)
- storedObj.premium.push(node);
- break;
- default:
- util.logDebug("Not storing - unknown preference category: " + node.key);
- }
+ let node = { key: info.name, val: info.value, id: info.id, originalId: info.originalId }
+ let originId = prefMap[info.id];
+ if (originId) {
+ switch (originId.substr(0,5)) {
+ case 'qfpg-': // general
+ storedObj.general.push(node);
+ break;
+ case 'qfpa-': // advanced
+ storedObj.advanced.push(node);
+ break;
+ case 'qfpl-': // layout
+ storedObj.layout.push(node);
+ break;
+ case 'qfpp-': // premium - make sure not to import the License without confirmation!
+ if (isLicense)
+ storedObj.premium.push(node);
+ break;
+ default:
+ util.logDebug("Not storing - unknown preference category: " + node.key);
+ }
+ }
+ else {
+ util.logDebug("Not found - map entry for " + info.id);
+ }
}
+
// now save all color pickers.
let elements = document.getElementsByTagName('html:input');
for (let i=0; i label,
+menupopup.QuickFolders-folder-popup menuitem:-moz-drag-over > label {
text-decoration: underline;
}
@@ -901,7 +904,7 @@ menupopup.QuickFolders-folder-popup menuitem#folderPaneContext-properties {
/* [Bug 26570] only show mark folder read if it has unread items in it */
toolbarbutton:not(.has-unread) #folderPaneContext-markMailFolderAllRead,
toolbarbutton:not(.has-unread):not(.has-unreadSubOnly) #folderPaneContext-markMailFolderAllReadRecursive,
-toolbarbutton:not(.has-unreadSubOnly) #folderPaneContext-markMailFolderAllReadRecursive {
+toolbarbutton:not(.has-unreadSubOnly):not(.has-unreadSub) #folderPaneContext-markMailFolderAllReadRecursive {
display: none;
}
diff --git a/chrome/content/quickfolders-util.js b/chrome/content/quickfolders-util.js
index c94a88315..c8f41197a 100644
--- a/chrome/content/quickfolders-util.js
+++ b/chrome/content/quickfolders-util.js
@@ -66,7 +66,7 @@ QuickFolders.Util = {
_isCSSGradients: -1,
_isCSSRadius: -1,
_isCSSShadow: true,
- HARDCODED_CURRENTVERSION : "4.19.1", // will later be overriden call to AddonManager
+ HARDCODED_CURRENTVERSION : "4.20", // will later be overriden call to AddonManager
HARDCODED_EXTENSION_TOKEN : ".hc",
ADDON_ID: "quickfolders@curious.be",
FolderFlags : { // nsMsgFolderFlags
diff --git a/chrome/content/quickfolders.js b/chrome/content/quickfolders.js
index e3e11afc7..2810fe5ed 100644
--- a/chrome/content/quickfolders.js
+++ b/chrome/content/quickfolders.js
@@ -398,6 +398,18 @@ END LICENSE BLOCK */
## changed support site links to https (secure) protocol
## Fixed: when restarting Thunderbird after an Add-on was installed Tabs from ALL categories were displayed.
+ 4.20 QuickFolders Pro - WIP
+ ## [issue 101] If multiple categories are selected, closing QuickFolders settings reverts to "Show All"
+ ## Fixed: When dragging mails on a subfolder item contained in a QuickFolders tab popup, the folder item
+ is shown with an underline. But all child folders were also displayed underlined.
+ ## [issue 107] Restoring general / layout Settings only works if option for restoring folders also active
+ ## [issue 37] When no match is found using the "/" in quickMove box, display "No matching parent folders!" instead of "..."
+ ## [issue 109] Mark Messages read in Folder and the subfolders recursively not displayed as expected
+ ## [issue 92] do not apply "To address" from advanced tab properties when replying to an email!
+ ## [issue 82] Improved sorting of search results during quickMove / quickJump
+ ## [issue 110] "Tab-specific Properties" overwrites To Address when selecting to from AB
+ ## [issue 112] Reading List menu - Add current Item not working
+
Future Work
===========
diff --git a/chrome/locale/ca/quickfolders.properties b/chrome/locale/ca/quickfolders.properties
index 0d92fe443..593f1e8e0 100644
--- a/chrome/locale/ca/quickfolders.properties
+++ b/chrome/locale/ca/quickfolders.properties
@@ -48,6 +48,7 @@ qfDeleteJunk=Purge Junk
qfGetMail=Recupera Missatges
qfGetMailAccess=G
qfPaintToggle=Acaba el mode Pintura
+qfNoFolderMatch=No hi ha cap carpeta pare coincident.
#### strings from category.js
qfCompactedFolder=Carpeta compactada
qfEmptiedJunk=Brossa esborrada i carpeta compactada
diff --git a/chrome/locale/de/quickfolders.properties b/chrome/locale/de/quickfolders.properties
index 9cce85dd1..431f98c8e 100644
--- a/chrome/locale/de/quickfolders.properties
+++ b/chrome/locale/de/quickfolders.properties
@@ -48,6 +48,7 @@ qfDeleteJunk=Junk in diesem Ordner löschen
qfGetMail=Nachrichten abrufen
qfGetMailAccess=N
qfPaintToggle=Farbmodus beenden
+qfNoFolderMatch=Keine passenden Elternverzeichnisse!
### Status Messages after clearing out a folder
qfCompactedFolder=Verzeichnis wurde kompaktifiziert
qfEmptiedJunk=Junk gelöscht und Verzeichnis kompaktifiziert -
diff --git a/chrome/locale/en-US/quickfolders.properties b/chrome/locale/en-US/quickfolders.properties
index c6649479c..6f0faff7e 100644
--- a/chrome/locale/en-US/quickfolders.properties
+++ b/chrome/locale/en-US/quickfolders.properties
@@ -48,6 +48,7 @@ qfDeleteJunk=Purge Junk
qfGetMail=Get Messages
qfGetMailAccess=G
qfPaintToggle=Finish Paint Mode
+qfNoFolderMatch=No matching parent folders!
### Status Messages after clearing out a folder
qfCompactedFolder=Compacted folder
qfEmptiedJunk=Emptied junk and compacted folder
diff --git a/chrome/locale/es-MX/quickfolders.properties b/chrome/locale/es-MX/quickfolders.properties
index a0272ad71..7c0f0920d 100644
--- a/chrome/locale/es-MX/quickfolders.properties
+++ b/chrome/locale/es-MX/quickfolders.properties
@@ -48,6 +48,7 @@ qfDeleteJunk=Eliminar basura
qfGetMail=Get Messages
qfGetMailAccess=G
qfPaintToggle=Terminar modo de dibujo
+qfNoFolderMatch=¡No hay carpetas principales que coincidan!
#### strings from category.js
qfCompactedFolder=Carpeta compactada
qfEmptiedJunk=Se vació la papelera y se compactó la carpeta
diff --git a/chrome/locale/es/quickfolders.properties b/chrome/locale/es/quickfolders.properties
index 5e9ecec45..9620428d4 100644
--- a/chrome/locale/es/quickfolders.properties
+++ b/chrome/locale/es/quickfolders.properties
@@ -48,6 +48,7 @@ qfDeleteJunk=Purgar basura
qfGetMail=Obtener mensajes
qfGetMailAccess=O
qfPaintToggle=Finalizar modo coloreado
+qfNoFolderMatch=¡No hay carpetas principales que coincidan!
### Status Messages after clearing out a folder
qfCompactedFolder=Carpeta compactada
qfEmptiedJunk=Carpeta vaciada de basura y compactada
diff --git a/chrome/locale/fr/quickfolders.properties b/chrome/locale/fr/quickfolders.properties
index dff537c4e..a1c239d2c 100644
--- a/chrome/locale/fr/quickfolders.properties
+++ b/chrome/locale/fr/quickfolders.properties
@@ -48,6 +48,7 @@ qfDeleteJunk=Purger les indésirables
qfGetMail=Rapatrier les messages
qfGetMailAccess=R
qfPaintToggle=Ressortir du mode peinture
+qfNoFolderMatch=Aucun dossier parent correspondant!
#### strings from category.js
qfCompactedFolder=Dossier compacté
qfEmptiedJunk=Dossiers compactés et des indésirables vidés
diff --git a/chrome/locale/hu-HU/quickfolders.properties b/chrome/locale/hu-HU/quickfolders.properties
index 88540b6f1..4f42a94e0 100644
--- a/chrome/locale/hu-HU/quickfolders.properties
+++ b/chrome/locale/hu-HU/quickfolders.properties
@@ -48,6 +48,7 @@ qfDeleteJunk=Purge Junk
qfGetMail=Üzenetek letöltése
qfGetMailAccess=ö
qfPaintToggle=Színezési mód befejezése
+qfNoFolderMatch=Nincsenek megfelelő szülőmappák!
### Menu Items from quickfolder context menu
qfCompactedFolder=Tömörített mappa
qfEmptiedJunk=Kuka ürítve és mappa tömörítve
diff --git a/chrome/locale/it/quickfolders.properties b/chrome/locale/it/quickfolders.properties
index 46830a6b2..ec6da8d58 100644
--- a/chrome/locale/it/quickfolders.properties
+++ b/chrome/locale/it/quickfolders.properties
@@ -48,6 +48,7 @@ qfDeleteJunk=Elimina posta indesiderata
qfGetMail=Scarica messaggi
qfGetMailAccess=M
qfPaintToggle=Termina modalità Paint
+qfNoFolderMatch=Nessuna cartella principale corrispondente!
#### strings from models.js
qfCompactedFolder=Cartella compattata
qfEmptiedJunk=Posta indesiderata svuotata e cartella compattata
diff --git a/chrome/locale/ja-JP/quickfolders.properties b/chrome/locale/ja-JP/quickfolders.properties
index 0c165b645..8a21c555f 100644
--- a/chrome/locale/ja-JP/quickfolders.properties
+++ b/chrome/locale/ja-JP/quickfolders.properties
@@ -48,6 +48,7 @@ qfDeleteJunk=迷惑メールを削除
qfGetMail=Get Messages
qfGetMailAccess=G
qfPaintToggle=ペイントモードを終了
+qfNoFolderMatch=一致する親フォルダがありません!
#### strings from category.js
qfCompactedFolder=フォルダを最適化しました
qfEmptiedJunk=迷惑メールを削除してフォルダを最適化しました
diff --git a/chrome/locale/nl/quickfolders.properties b/chrome/locale/nl/quickfolders.properties
index 65e1ba33c..b0650adf8 100644
--- a/chrome/locale/nl/quickfolders.properties
+++ b/chrome/locale/nl/quickfolders.properties
@@ -48,6 +48,7 @@ qfDeleteJunk=Ongewenste berichten verwijderen
qfGetMail=Berichten ophalen
qfGetMailAccess=o
qfPaintToggle=Verfmodus beëindigen
+qfNoFolderMatch=Geen overeenkomende bovenliggende mappen!
#### strings from category.js
qfCompactedFolder=Map gecomprimeerd
qfEmptiedJunk=Ongewenste berichten verwijderd en map gecomprimeerd
diff --git a/chrome/locale/pl/quickfolders.properties b/chrome/locale/pl/quickfolders.properties
index 47447a281..ea2b695f1 100644
--- a/chrome/locale/pl/quickfolders.properties
+++ b/chrome/locale/pl/quickfolders.properties
@@ -48,6 +48,7 @@ qfDeleteJunk=Oczyść śmieci
qfGetMail=Pobierz wiadomości
qfGetMailAccess=W
qfPaintToggle=Zakończ tryb malowania
+qfNoFolderMatch=Brak pasujących folderów nadrzędnych!
### Status Messages after clearing out a folder
qfCompactedFolder=Skompaktowano folder
qfEmptiedJunk=Usunięto śmieci i skompaktowano folder
diff --git a/chrome/locale/pt-BR/quickfolders.properties b/chrome/locale/pt-BR/quickfolders.properties
index 468e6e993..05c81cbcd 100644
--- a/chrome/locale/pt-BR/quickfolders.properties
+++ b/chrome/locale/pt-BR/quickfolders.properties
@@ -48,6 +48,7 @@ qfDeleteJunk=Expurgar lixo
qfGetMail=Receber mensagens
qfGetMailAccess=B
qfPaintToggle=Finalizar modo de desenho
+qfNoFolderMatch=Nenhuma pasta pai correspondente!
#### strings from category.js
qfCompactedFolder=Pasta compactada
qfEmptiedJunk=Lixeira esvaziada e pasta compactada
diff --git a/chrome/locale/ru/quickfolders.properties b/chrome/locale/ru/quickfolders.properties
index ce627d714..dc4cda342 100644
--- a/chrome/locale/ru/quickfolders.properties
+++ b/chrome/locale/ru/quickfolders.properties
@@ -48,6 +48,7 @@ qfDeleteJunk=Удалить спам
qfGetMail=Получить сообщения
qfGetMailAccess=о
qfPaintToggle=Завершить режим раскраски
+qfNoFolderMatch=Нет соответствующих родительских папок!
#### strings from category.js
qfCompactedFolder=Папка сжата
qfEmptiedJunk=Папка «Спам» очищенa и сжатa.
diff --git a/chrome/locale/sl-SI/quickfolders.properties b/chrome/locale/sl-SI/quickfolders.properties
index 64d125a39..861f79de9 100644
--- a/chrome/locale/sl-SI/quickfolders.properties
+++ b/chrome/locale/sl-SI/quickfolders.properties
@@ -48,6 +48,7 @@ qfDeleteJunk=Počisti neželeno pošto
qfGetMail=Prejmi sporočila
qfGetMailAccess=P
qfPaintToggle=Končaj način slikanja
+qfNoFolderMatch=Ni ujemajočih se nadrejenih map!
### Status Messages after clearing out a folder
qfCompactedFolder=Strnjena mapa
qfEmptiedJunk=Izpraznjena neželena pošta in strnjena mapa
diff --git a/chrome/locale/sr/quickfolders.properties b/chrome/locale/sr/quickfolders.properties
index 17af5dc65..53b4f896c 100644
--- a/chrome/locale/sr/quickfolders.properties
+++ b/chrome/locale/sr/quickfolders.properties
@@ -48,6 +48,7 @@ qfDeleteJunk=Испразни корпу за отпатке
qfGetMail=Прими поруке
qfGetMailAccess=р
qfPaintToggle=Изађи из режима за бојење
+qfNoFolderMatch=Нема одговарајућих надређених директоријума!
#### strings from category.js
qfCompactedFolder=Сажета фасцикла
qfEmptiedJunk=Испражњена је корпа за отпатке и зажета фасцикла
diff --git a/chrome/locale/sv-SE/quickfolders.properties b/chrome/locale/sv-SE/quickfolders.properties
index fde5d83a1..f0b504633 100644
--- a/chrome/locale/sv-SE/quickfolders.properties
+++ b/chrome/locale/sv-SE/quickfolders.properties
@@ -48,6 +48,7 @@ qfDeleteJunk=Töm skräppost
qfGetMail=Hämta meddelanden
qfGetMailAccess=H
qfPaintToggle=Avsluta målarläget
+qfNoFolderMatch=Inga matchande överordnade mappar!
#### strings from category.js
qfCompactedFolder=Komprimerade mapp
qfEmptiedJunk=Tömde skräppostmappen och komprimerade den
diff --git a/chrome/locale/vi/quickfolders.properties b/chrome/locale/vi/quickfolders.properties
index 442415cec..a597a2a2b 100644
--- a/chrome/locale/vi/quickfolders.properties
+++ b/chrome/locale/vi/quickfolders.properties
@@ -48,6 +48,7 @@ qfDeleteJunk=Xóa rác
qfGetMail=Get Messages
qfGetMailAccess=G
qfPaintToggle=Hoàn tất Chế độ Tô Màu
+qfNoFolderMatch=Không có thư mục mẹ phù hợp!
#### strings from category.js
qfCompactedFolder=Compacted folder
qfEmptiedJunk=Emptied junk and compacted folder
diff --git a/chrome/locale/zh-CN/quickfolders.properties b/chrome/locale/zh-CN/quickfolders.properties
index 675cf2b2a..8a6b019f9 100644
--- a/chrome/locale/zh-CN/quickfolders.properties
+++ b/chrome/locale/zh-CN/quickfolders.properties
@@ -48,6 +48,7 @@ qfDeleteJunk=删除垃圾
qfGetMail=获取消息
qfGetMailAccess=G
qfPaintToggle=完成绘制模式
+qfNoFolderMatch=没有匹配的父文件夹!
#### strings from category.js
qfCompactedFolder=已压缩文件夹
qfEmptiedJunk=已删除垃圾并压缩文件夹
diff --git a/chrome/locale/zh/quickfolders.properties b/chrome/locale/zh/quickfolders.properties
index dff54711e..e50be26dc 100644
--- a/chrome/locale/zh/quickfolders.properties
+++ b/chrome/locale/zh/quickfolders.properties
@@ -48,6 +48,7 @@ qfDeleteJunk=清除垃圾
qfGetMail=Get Messages
qfGetMailAccess=G
qfPaintToggle=結束繪圖模式
+qfNoFolderMatch=沒有匹配的父文件夾!
#### strings from category.js
qfCompactedFolder=壓縮資料夾
qfEmptiedJunk=清空垃圾郵件並壓縮資料夾
diff --git a/install.rdf b/install.rdf
index 1c5d83749..acd7ee3e7 100644
--- a/install.rdf
+++ b/install.rdf
@@ -13,7 +13,7 @@
em:icon64URL="chrome://quickfolders/skin/ico/QF64x64.png"
em:optionsURL="chrome://quickfolders/content/options.xul">
2
- 4.19.1
+ 4.20https://quickfolders.mozdev.org/index.html
diff --git a/manifest.json b/manifest.json
index 3c0c8ee47..45dbd5897 100644
--- a/manifest.json
+++ b/manifest.json
@@ -3,7 +3,7 @@
"manifest_version": 2,
"name": "QuickFolders",
"description": "Bookmark your favorite mail folders in Thunderbird.",
- "version": "4.19.1",
+ "version": "4.20",
"developer": {
"name": "Axel Grude",
"url": "https://quickfolders.org/index.html"
diff --git a/release-notes.html b/release-notes.html
index 77984b80f..e31ddba77 100644
--- a/release-notes.html
+++ b/release-notes.html
@@ -1,12 +1,21 @@
-Release 4.19.1
+Release 4.20
This release backports some of the fixes that were also done in the new version for Thunderbird 78. If you want to get the latest features, I highly recommend updating Thunderbird to the current 78 release version.
To support QuickFolders, buy a license or donate to support the project.
+Improvements
-
[issue 75] support moving folders via the quickMove button
-
[issue 72] Category "_Uncategorized" will show all categories after moving a folder to another category
-
[issue 23] Fixed: quickMove aborts with "Nothing to do: Message is already in folder" if the first mail in the selection is already in target folder. This may happen if you drag mails from a multi-folder view such as a search results window. It can also happen if you execute the quickMove command after a while and you (or a filter) have moved some of the mails to the target folder already.
-
Improved reopening any support sites already open in a tab by jumping to the correct place if necessary.
-
Fixed: when restarting Thunderbird after an Add-on was installed Tabs from ALL categories were displayed.
+
[issue 82] Improved sorting of search results during quickMove / quickJump.
+
[issue 109] Menu item Mark Messages read in Folder + subfolders not displayed as expected - it was only shown if the folder of the tab didn't have unread emails itself. This additional menu item that can be used to set subfolders read was only displayed if the actual folder of the tab itself had no unread emails, and only child folders had them. Configure this command in QuickFolders settings / Advanced / Menu Configuration / Mail Commands
+
[issue 37] When no match is found using the "/" in quickMove box, display "No matching parent folders!" instead of "..."
+
+Bug Fixes
+
+
[issue 101] If multiple categories are selected, closing QuickFolders settings reverts to "Show All"
+
Fixed: When dragging mails on a subfolder item contained in a QuickFolders tab popup, the folder item is shown with an underline. But all child folders were also displayed underlined.
+
[issue 107] Restoring general / layout Settings only works if option for restoring folders also active.
+
+
[issue 92] do not apply "To address" from advanced tab propertiues when replying to an email!
+
[issue 110] "Tab-specific Properties" overwrites To Address when clicking Write from Address Book.
+
[issue 112] Reading List menu - Add current Item not working.