зеркало из https://github.com/mozilla/snowl.git
add toggle between message and message link to list view, missing pref
This commit is contained in:
Родитель
2e00e647b0
Коммит
4e97fd9468
|
@ -240,6 +240,9 @@ this._log.info("get rowCount: " + this._collection.messages.length);
|
||||||
|
|
||||||
// Don't rebuild the view if the list view hasn't been made visible yet
|
// Don't rebuild the view if the list view hasn't been made visible yet
|
||||||
// (in which case the tree won't yet have a view property).
|
// (in which case the tree won't yet have a view property).
|
||||||
|
// XXX problem: if some non viewed source updates, we loose our selection
|
||||||
|
// which is not good. not good even if our viewed source updates
|
||||||
|
// (additions).. need to rebuild for unsubscribe though (blank out view).
|
||||||
if (this._tree.view)
|
if (this._tree.view)
|
||||||
this._rebuildView();
|
this._rebuildView();
|
||||||
},
|
},
|
||||||
|
@ -393,7 +396,7 @@ this._log.info("get rowCount: " + this._collection.messages.length);
|
||||||
},
|
},
|
||||||
|
|
||||||
onSelect: function(aEvent) {
|
onSelect: function(aEvent) {
|
||||||
this._log.info("onSelect - start: event.target.id = "+aEvent.target.id);
|
//this._log.info("onSelect - start: event.target.id = "+aEvent.target.id);
|
||||||
if (this._tree.currentIndex == -1 || SnowlUtils.gRightMouseButtonDown)
|
if (this._tree.currentIndex == -1 || SnowlUtils.gRightMouseButtonDown)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
|
@ -410,6 +413,8 @@ this._log.info("onSelect - start: event.target.id = "+aEvent.target.id);
|
||||||
|
|
||||||
SnowlUtils.gListViewListIndex = row;
|
SnowlUtils.gListViewListIndex = row;
|
||||||
this._setRead(true);
|
this._setRead(true);
|
||||||
|
// If new message selected, reset for toggle
|
||||||
|
SnowlUtils.gMessagePosition.pageIndex = null;
|
||||||
},
|
},
|
||||||
|
|
||||||
onKeyPress: function(aEvent) {
|
onKeyPress: function(aEvent) {
|
||||||
|
@ -429,6 +434,28 @@ this._log.info("onSelect - start: event.target.id = "+aEvent.target.id);
|
||||||
this._openListMessage(aEvent);
|
this._openListMessage(aEvent);
|
||||||
},
|
},
|
||||||
|
|
||||||
|
onClick: function(aEvent) {
|
||||||
|
// Only for left click, button = 0..
|
||||||
|
if (aEvent.button != 0)
|
||||||
|
return;
|
||||||
|
|
||||||
|
// Figure out what cell the click was in
|
||||||
|
let row = {}, col = {}, child = {};
|
||||||
|
this._tree.treeBoxObject.getCellAt(aEvent.clientX, aEvent.clientY, row, col, child);
|
||||||
|
if (row.value == -1)
|
||||||
|
return;
|
||||||
|
|
||||||
|
// If the cell is in a "cycler" column or if the user double clicked on
|
||||||
|
// the twisty, don't open the message in a new window
|
||||||
|
if (aEvent.detail == 2 && !col.value.cycler && (child.value != "twisty")) {
|
||||||
|
this._listDoubleClick();
|
||||||
|
// Double clicking should not toggle the open / close state of the
|
||||||
|
// thread. This will happen if we don't prevent the event from
|
||||||
|
// bubbling to the default handler in tree.xml
|
||||||
|
aEvent.stopPropagation();
|
||||||
|
}
|
||||||
|
},
|
||||||
|
|
||||||
// Based on SpaceHit in mailWindowOverlay.js
|
// Based on SpaceHit in mailWindowOverlay.js
|
||||||
_onSpacePress: function(aEvent) {
|
_onSpacePress: function(aEvent) {
|
||||||
if (aEvent.shiftKey) {
|
if (aEvent.shiftKey) {
|
||||||
|
@ -557,8 +584,36 @@ this._log.info("_toggleRead: all? " + aAll);
|
||||||
this._collection.sort();
|
this._collection.sort();
|
||||||
},
|
},
|
||||||
|
|
||||||
|
_listDoubleClick: function() {
|
||||||
|
// Special type?
|
||||||
|
// if () {} else
|
||||||
|
this._openListMessage();
|
||||||
|
},
|
||||||
|
|
||||||
|
// Toggle between summary and web page (feeds); use back/forward to avoid
|
||||||
|
// slow reload, but must also reset this in case tab changes or a url is
|
||||||
|
// loaded from address bar or link is clicked (in onblur) or another item
|
||||||
|
// in the list is selected (in onSelect).
|
||||||
_openListMessage: function(event) {
|
_openListMessage: function(event) {
|
||||||
alert("openlistmessage");
|
let row = this._tree.currentIndex;
|
||||||
|
let message = this._collection.messages[row];
|
||||||
|
|
||||||
|
// No message or link in this message
|
||||||
|
if (!message || typeof(message.link)=="undefined")
|
||||||
|
return;
|
||||||
|
|
||||||
|
if (SnowlUtils.gMessagePosition.pageIndex == --gBrowser.sessionHistory.index)
|
||||||
|
window.BrowserBack();
|
||||||
|
else
|
||||||
|
if (SnowlUtils.gMessagePosition.pageIndex == gBrowser.sessionHistory.index)
|
||||||
|
window.BrowserForward();
|
||||||
|
else {
|
||||||
|
SnowlUtils.gMessagePosition.tabIndex = gBrowser.tabContainer.selectedIndex;
|
||||||
|
SnowlUtils.gMessagePosition.pageIndex =
|
||||||
|
(++gBrowser.sessionHistory.index == gBrowser.sessionHistory.maxLength) ?
|
||||||
|
--gBrowser.sessionHistory.index : gBrowser.sessionHistory.index;
|
||||||
|
window.loadURI(message.link, null, null, false);
|
||||||
|
}
|
||||||
},
|
},
|
||||||
|
|
||||||
onListTreeMouseDown: function(aEvent) {
|
onListTreeMouseDown: function(aEvent) {
|
||||||
|
|
|
@ -108,6 +108,8 @@
|
||||||
sortResource="snowlTimestampCol" sortDirection="ascending"
|
sortResource="snowlTimestampCol" sortDirection="ascending"
|
||||||
enableColumnDrag="true" disableKeyNavigation="true"
|
enableColumnDrag="true" disableKeyNavigation="true"
|
||||||
onselect="SnowlMessageView.onSelect(event)"
|
onselect="SnowlMessageView.onSelect(event)"
|
||||||
|
onblur="SnowlUtils.gMessagePosition.pageIndex=null"
|
||||||
|
ondblclick="SnowlMessageView.onKeyPress(event)"
|
||||||
onkeypress="SnowlMessageView.onKeyPress(event)">
|
onkeypress="SnowlMessageView.onKeyPress(event)">
|
||||||
<treecols>
|
<treecols>
|
||||||
<treecol id="snowlAuthorCol" label="&authorCol.label;" flex="1"
|
<treecol id="snowlAuthorCol" label="&authorCol.label;" flex="1"
|
||||||
|
@ -127,6 +129,7 @@
|
||||||
</treecols>
|
</treecols>
|
||||||
|
|
||||||
<treechildren flex="1" context="snowlListContext"
|
<treechildren flex="1" context="snowlListContext"
|
||||||
|
onclick="SnowlMessageView.onClick(event)"
|
||||||
onmousedown="SnowlMessageView.onListTreeMouseDown(event)"/>
|
onmousedown="SnowlMessageView.onListTreeMouseDown(event)"/>
|
||||||
</tree>
|
</tree>
|
||||||
</vbox>
|
</vbox>
|
||||||
|
|
|
@ -1,2 +1,4 @@
|
||||||
// Header view pref: 0 = none, 1 = brief, 2= full
|
// Header view pref: 0 = none, 1 = brief, 2= full
|
||||||
pref("extensions.snowl.message.headerView", 1);
|
pref("extensions.snowl.message.headerView", 1);
|
||||||
|
// Collections hierarchical view pref: 0 = flat, 1 = hierarchical
|
||||||
|
pref("extensions.snowl.collection.hierarchicalView", 0);
|
||||||
|
|
|
@ -252,6 +252,8 @@ let SnowlUtils = {
|
||||||
// XXX store on document for restore on restart??
|
// XXX store on document for restore on restart??
|
||||||
gListViewListIndex: null,
|
gListViewListIndex: null,
|
||||||
gListViewCollectionIndex: null,
|
gListViewCollectionIndex: null,
|
||||||
|
// Position of current page in tabs and history
|
||||||
|
gMessagePosition: {tabIndex: null, pageIndex: null},
|
||||||
|
|
||||||
// From Tb: Detect right mouse click and change the highlight to the row
|
// From Tb: Detect right mouse click and change the highlight to the row
|
||||||
// where the click happened without loading the message headers in
|
// where the click happened without loading the message headers in
|
||||||
|
@ -285,7 +287,7 @@ this._log.info("row: "+ row.value + " is not selected");
|
||||||
// clicked without loading the contents of the selected row.
|
// clicked without loading the contents of the selected row.
|
||||||
// It will also keep the outline/dotted line in the original row.
|
// It will also keep the outline/dotted line in the original row.
|
||||||
ChangeSelectionWithoutContentLoad: function(aEvent, tree) {
|
ChangeSelectionWithoutContentLoad: function(aEvent, tree) {
|
||||||
this._log.info("change selection right click: tree.id = "+tree.id);
|
//this._log.info("change selection right click: tree.id = "+tree.id);
|
||||||
let treeBoxObj = tree.treeBoxObject;
|
let treeBoxObj = tree.treeBoxObject;
|
||||||
let treeSelection = treeBoxObj.view.selection;
|
let treeSelection = treeBoxObj.view.selection;
|
||||||
|
|
||||||
|
@ -326,7 +328,7 @@ this._log.info("change selection right click: tree.id = "+tree.id);
|
||||||
// this.gListDeleteOrMoveOccurred = false;
|
// this.gListDeleteOrMoveOccurred = false;
|
||||||
// return;
|
// return;
|
||||||
// }
|
// }
|
||||||
this._log.info("restore selection onpopuphidden: tree.id = "+tree.id);
|
//this._log.info("restore selection onpopuphidden: tree.id = "+tree.id);
|
||||||
|
|
||||||
let treeSelection = tree.view.selection;
|
let treeSelection = tree.view.selection;
|
||||||
|
|
||||||
|
|
Загрузка…
Ссылка в новой задаче