some refactoring + fixed ribbon-wide marking undo...

Signed-off-by: Alex A. Naanou <alex.nanou@gmail.com>
This commit is contained in:
Alex A. Naanou 2017-04-02 06:13:57 +03:00
parent c5997171e9
commit 2b0ae5c167
2 changed files with 25 additions and 9 deletions

View File

@ -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')

View File

@ -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){
// 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 })) },
: 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')],