diff --git a/ui (gen4)/features/metadata.js b/ui (gen4)/features/metadata.js index 6152d52c..67c5a192 100755 --- a/ui (gen4)/features/metadata.js +++ b/ui (gen4)/features/metadata.js @@ -289,8 +289,8 @@ var MetadataUIActions = actions.Actions({ 'metadata-editable-fields': [ //'Artist', //'Copyright', - //'Comment', - //'Tags', + 'Comment', + 'Tags', ], 'metadata-field-order': [ // base @@ -475,11 +475,17 @@ var MetadataUIActions = actions.Actions({ }) // path selected... .open(function(evt, path){ - var editable = RegExp(that.config['metadata-editable-fields'] - .map(function(f){ return util.quoteRegExp(f) }) - .join('|')) + event.preventDefault() - var elem = o.filter(path).find('.text').last() + var editable = that.config['metadata-editable-fields'] + + var text = o.filter(path).find('.text') + + var field = text.first().text() + .trim() + // remove the trailing ':' + .slice(0, -1) + var elem = text.last() // handle select... if(that.config['metadata-auto-select-mode'] == 'on open'){ @@ -487,26 +493,13 @@ var MetadataUIActions = actions.Actions({ } // skip non-editable fields... - if(editable.test(path)){ - elem - .prop('contenteditable', true) - .focus() - .keydown(function(){ - event.stopPropagation() - - var n = keyboard.toKeyName(event.keyCode) - - // reset to original value... - if(n == 'Esc'){ - // XXX - - // save value... - } else if(n == 'Enter' && event.ctrlKey){ - event.preventDefault() - - // XXX - } - }) + if(editable.indexOf(field) >= 0){ + elem.makeEditable({ + activate: true, + clear_on_edit: false, + //blur_on_abort: false, + //blur_on_commit: false, + }) } }) .on('close', function(){ diff --git a/ui (gen4)/lib/widget/browse.js b/ui (gen4)/lib/widget/browse.js index 3b0eb7f1..42521d10 100755 --- a/ui (gen4)/lib/widget/browse.js +++ b/ui (gen4)/lib/widget/browse.js @@ -124,10 +124,38 @@ function(text, options){ }) } -// XXX -Items.Selectable = +// make items with auto selected text on select... +// +// options format: +// { +// select_text: | | 'first' | 'last', +// +// ... +// } +// +Items.Selected = function(text, options){ - // XXX + var elem = (options.action ? this.Action : this).call(this, text, options) + .on('select', function(){ + var text = elem.find('.text') + + if(options.select_text == 'first' || options.select_text == 'last'){ + text[options.selected_index]() + .selectText() + + } else if(typeof(options.select_text) == typeof('str')){ + elem.find(options.selected_index) + .selectText() + + } else if(typeof(options.select_text) == typeof(123)){ + text.eq(options.selected_index) + .selectText() + + } else { + text.selectText() + } + }) + return elem } // make Editable on select element... @@ -181,7 +209,6 @@ function(text, options){ // XXX Items.SelectableField = function(text, options){ - // XXX } // XXX