add experimental operation history stack
This commit is contained in:
parent
d4b4b9dece
commit
1dc8dba07c
4 changed files with 101 additions and 10 deletions
|
@ -14,11 +14,16 @@ function feedlist_callback() {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
function viewfeed(feed, subop, is_cat, subop_param) {
|
function viewfeed(feed, subop, is_cat, subop_param, skip_history) {
|
||||||
try {
|
try {
|
||||||
|
|
||||||
enableHotkeys();
|
enableHotkeys();
|
||||||
|
|
||||||
|
if (!skip_history) {
|
||||||
|
history_push('FEED:' + feed + ':' + subop + ':' + is_cat +
|
||||||
|
':' + subop_param);
|
||||||
|
}
|
||||||
|
|
||||||
var toolbar_query = Form.serialize("main_toolbar_form");
|
var toolbar_query = Form.serialize("main_toolbar_form");
|
||||||
var toolbar_form = document.forms["main_toolbar_form"];
|
var toolbar_form = document.forms["main_toolbar_form"];
|
||||||
|
|
||||||
|
|
16
functions.js
16
functions.js
|
@ -226,14 +226,6 @@ function hotkey_handler(e) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (typeof localHotkeyHandler != 'undefined') {
|
|
||||||
try {
|
|
||||||
localHotkeyHandler(keycode);
|
|
||||||
} catch (e) {
|
|
||||||
exception_error("hotkey_handler, local:", e);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if (keycode == 68 && shift_key) { // d
|
if (keycode == 68 && shift_key) { // d
|
||||||
if (!debug_mode_enabled) {
|
if (!debug_mode_enabled) {
|
||||||
document.getElementById('debug_output').style.display = 'block';
|
document.getElementById('debug_output').style.display = 'block';
|
||||||
|
@ -245,6 +237,14 @@ function hotkey_handler(e) {
|
||||||
debug_mode_enabled = !debug_mode_enabled;
|
debug_mode_enabled = !debug_mode_enabled;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (typeof localHotkeyHandler != 'undefined') {
|
||||||
|
try {
|
||||||
|
return localHotkeyHandler(e);
|
||||||
|
} catch (e) {
|
||||||
|
exception_error("hotkey_handler, local:", e);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
debug("KP=" + keycode);
|
debug("KP=" + keycode);
|
||||||
} catch (e) {
|
} catch (e) {
|
||||||
exception_error("hotkey_handler", e);
|
exception_error("hotkey_handler", e);
|
||||||
|
|
82
tt-rss.js
82
tt-rss.js
|
@ -20,6 +20,8 @@ var xmlhttp_ctr = Ajax.getTransport();
|
||||||
|
|
||||||
var init_params = new Object();
|
var init_params = new Object();
|
||||||
|
|
||||||
|
var op_history = new Array();
|
||||||
|
|
||||||
function toggleTags() {
|
function toggleTags() {
|
||||||
display_tags = !display_tags;
|
display_tags = !display_tags;
|
||||||
|
|
||||||
|
@ -654,3 +656,83 @@ function feedEditSave() {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function localHotkeyHandler(e) {
|
||||||
|
|
||||||
|
var keycode;
|
||||||
|
|
||||||
|
if (window.event) {
|
||||||
|
keycode = window.event.keyCode;
|
||||||
|
} else if (e) {
|
||||||
|
keycode = e.which;
|
||||||
|
}
|
||||||
|
|
||||||
|
var shift_key = false;
|
||||||
|
|
||||||
|
try {
|
||||||
|
shift_key = e.shiftKey;
|
||||||
|
} catch (e) { }
|
||||||
|
|
||||||
|
if (keycode == 66 && shift_key) { // shift-B
|
||||||
|
|
||||||
|
var op = history_pop();
|
||||||
|
|
||||||
|
if (op) {
|
||||||
|
var op_s = op.split(":");
|
||||||
|
|
||||||
|
var i;
|
||||||
|
for (i = 0; i < op_s.length; i++) {
|
||||||
|
if (op_s[i] == 'undefined') {
|
||||||
|
op_s[i] = undefined;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (op_s[i] == 'false') {
|
||||||
|
op_s[i] = false;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (op_s[i] == 'true') {
|
||||||
|
op_s[i] = true;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
debug("history split: " + op_s);
|
||||||
|
|
||||||
|
if (op_s[0] == "ARTICLE") {
|
||||||
|
debug("history: reverting to article " + op_s[1] + "/" + op_s[2]);
|
||||||
|
view(op_s[1], op_s[2], true);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (op_s[0] == "FEED") {
|
||||||
|
viewfeed(op_s[1], op_s[2], op_s[3], op_s[4], true);
|
||||||
|
}
|
||||||
|
|
||||||
|
} else {
|
||||||
|
notify("No operation to undo");
|
||||||
|
}
|
||||||
|
|
||||||
|
return false;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
debug("LKP=" + keycode);
|
||||||
|
}
|
||||||
|
|
||||||
|
function history_push(op) {
|
||||||
|
debug("history_push: " + op);
|
||||||
|
op_history.push(op);
|
||||||
|
|
||||||
|
while (op_history.length > 30) {
|
||||||
|
op_history.shift();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
function history_pop() {
|
||||||
|
var op = op_history.pop();
|
||||||
|
debug("history_pop: " + op);
|
||||||
|
return op;
|
||||||
|
}
|
||||||
|
|
||||||
|
function history_clear() {
|
||||||
|
debug("history_clear");
|
||||||
|
op_history.clear();
|
||||||
|
}
|
||||||
|
|
|
@ -51,10 +51,14 @@ function article_callback() {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
function view(id, feed_id) {
|
function view(id, feed_id, skip_history) {
|
||||||
|
|
||||||
try {
|
try {
|
||||||
debug("loading article: " + id + "/" + feed_id);
|
debug("loading article: " + id + "/" + feed_id);
|
||||||
|
|
||||||
|
if (!skip_history) {
|
||||||
|
history_push("ARTICLE:" + id + ":" + feed_id);
|
||||||
|
}
|
||||||
|
|
||||||
enableHotkeys();
|
enableHotkeys();
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue