From 2b0ae5c167737b2b11a7d530c149c9d53ff413d8 Mon Sep 17 00:00:00 2001 From: "Alex A. Naanou" Date: Sun, 2 Apr 2017 06:13:57 +0300 Subject: [PATCH] some refactoring + fixed ribbon-wide marking undo... Signed-off-by: Alex A. Naanou --- ui (gen4)/features/all.js | 2 +- ui (gen4)/features/{ui-marks.js => marks.js} | 32 +++++++++++++++----- 2 files changed, 25 insertions(+), 9 deletions(-) rename ui (gen4)/features/{ui-marks.js => marks.js} (91%) diff --git a/ui (gen4)/features/all.js b/ui (gen4)/features/all.js index 7e47a758..693e109b 100755 --- a/ui (gen4)/features/all.js +++ b/ui (gen4)/features/all.js @@ -13,6 +13,7 @@ var core = require('features/core') require('features/base') require('features/sort') require('features/tags') +require('features/marks') require('features/location') require('features/recover') require('features/history') @@ -26,7 +27,6 @@ require('features/ui-chrome') require('features/ui-progress') require('features/keyboard') require('features/ui-status') -require('features/ui-marks') require('features/ui-ranges') require('features/ui-widgets') require('features/ui-slideshow') diff --git a/ui (gen4)/features/ui-marks.js b/ui (gen4)/features/marks.js similarity index 91% rename from ui (gen4)/features/ui-marks.js rename to ui (gen4)/features/marks.js index 518def68..b6005fae 100755 --- a/ui (gen4)/features/ui-marks.js +++ b/ui (gen4)/features/marks.js @@ -117,15 +117,32 @@ var undoTag = function(action){ // introspection... // XXX should this be a generic predicate??? undoable: function(a){ + // handle ribbon-wide operations... + // NOTE: this is specific to .toggleMark(..) + if(a.args[0] == 'ribbon' && action == 'toggleMark'){ + a.state = this.markedInRibbon() + return true + } + // skip introspection... return a.args.indexOf('?') < 0 - && a.args.indexOf('??') < 0 }, + && a.args.indexOf('??') < 0 + }, undo: function(a){ - this[action].apply(this, - // XXX is argument handling here too optimistic??? - a.args.map(function(e){ - return e == 'on' ? 'off' - : e == 'off' ? 'on' - : e })) }, + // restore state... + if(a.state){ + this[action]('ribbon', 'off') + this[action](a.state, 'on') + + // reverse state... + } else { + this[action].apply(this, + // XXX is argument handling here too optimistic??? + a.args.map(function(e){ + return e == 'on' ? 'off' + : e == 'off' ? 'on' + : e })) + } + }, } } @@ -223,7 +240,6 @@ var ImageMarkActions = actions.Actions({ // Invert marks on current ribbon // .toggleMark('ribbon') // - // toggleMark: ['Mark|Image/Image $mark', undoTag('toggleMark'), makeTagTogglerAction('selected')],