Skip to content

Commit 547b042

Browse files
committed
v3.1.4
(2020-12-20) ! when "force" is enabled double click on a message would open a wrong message in a new tab
1 parent d9069c3 commit 547b042

2 files changed

Lines changed: 38 additions & 14 deletions

File tree

src/bootstrap.js

Lines changed: 37 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -25,36 +25,30 @@ function main(window)
2525
listener =
2626
{
2727
timer: null,
28-
last: 0,
29-
onMessagesLoaded: function listener_onMessagesLoaded(aAll)
30-
{
31-
listener.selectMessageDelayed.apply(this, arguments);
32-
},
33-
34-
onMakeActive: function listener_onMakeActive()
35-
{
36-
listener.selectMessageDelayed.apply(this, arguments);
37-
},
38-
28+
calls: [],
3929
selectMessageDelayed: function listener_selectMessageDelayed()
4030
{
4131
if (this.timer)
4232
this.timer.cancel();
4333

4434
let that = this,
4535
args = arguments;
36+
37+
this.calls[this.calls.length] = arguments[arguments.length-1];
4638
//the timer needed to allow time to restore previous selection if any
4739
this.timer = setTimeout(function(){listener.selectMessage.apply(that, args)}, 0);
4840
},
4941

5042
selectMessage: function listener_selectMessage(obj)
5143
{
44+
let calls = Object.assign([], this.calls);
45+
this.calls = [];
5246
if (!prefs.sel)
5347
return;
5448

5549
let isTextbox = this.isTextbox(window.document.activeElement);
5650

57-
if (obj.view.dbView && (!obj.view.dbView.numSelected || (obj.view.dbView.numSelected && !isTextbox && prefs.selForce)))
51+
if (obj.view.dbView && (!obj.view.dbView.numSelected || (obj.view.dbView.numSelected && !isTextbox && prefs.selForce && calls.indexOf("onDisplayingFolder") != -1)))
5852
{
5953

6054
let msgDefault = Ci.nsMsgNavigationType.firstMessage,
@@ -130,7 +124,37 @@ function main(window)
130124
onTabClosing: function tabMan_onTabClosing(){},
131125
onTabSwitched: function tabMan_onTabSwitched(tab){},
132126
};
133-
127+
!function()
128+
{
129+
let listenerEvents = [
130+
// "onActiveCreatedView",
131+
// "onActiveMessagesLoaded",
132+
// "onCreatedView",
133+
// "onDestroyingView",
134+
"onDisplayingFolder",
135+
// "onFolderLoading",
136+
// "onLeavingFolder",
137+
// "onLoadingFolder",
138+
"onMakeActive",
139+
// "onMessageCountsChanged",
140+
// "onMessagesLoaded",
141+
// "onMessagesRemovalFailed",
142+
// "onMessagesRemoved",
143+
// "onSearching",
144+
// "onSortChanged",
145+
];
146+
for (let i = 0; i < listenerEvents.length; i++)
147+
{
148+
let name = listenerEvents[i];
149+
this[name] = function()
150+
{
151+
let args = Array.prototype.slice.call(arguments);
152+
args[args.length] = name;
153+
this.selectMessageDelayed.apply(this, args);
154+
}
155+
}
156+
return true;
157+
}.bind(listener)(),
134158
window.FolderDisplayListenerManager.registerListener(listener);
135159
listen(window, window, "unload", unload(function()
136160
{

src/manifest.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@
99
"name": "Auto Select Latest Message",
1010
"author": "V@no",
1111
"description": "Automatically select and display latest message on startup or when switching folder for the first time",
12-
"version": "3.1.3",
12+
"version": "3.1.4",
1313
"experiment_apis": {
1414
"BootstrapLoader": {
1515
"schema": "api/BootstrapLoader/schema.json",

0 commit comments

Comments
 (0)