mirror of
https://github.com/flynx/ImageGrid.git
synced 2025-10-28 18:00:09 +00:00
potentially fixed section focus issues...
Signed-off-by: Alex A. Naanou <alex.nanou@gmail.com>
This commit is contained in:
parent
bf5fc8202e
commit
cde9596299
@ -643,6 +643,16 @@ function(item, event, evt, ...args){
|
||||
// -> bool
|
||||
//
|
||||
//
|
||||
// options format:
|
||||
// {
|
||||
// // if true unresolved items will not trigger the event unless the
|
||||
// // input was null/undefined...
|
||||
// skipUnresolved: <bool>,
|
||||
//
|
||||
// ...
|
||||
// }
|
||||
//
|
||||
//
|
||||
// NOTE: item is compatible to .search(item, ..) spec, see that for more
|
||||
// details...
|
||||
// NOTE: triggering an event that matches several items will handle each
|
||||
@ -710,7 +720,8 @@ function(event, {handler, action, default_item, filter, options={}, getter='sear
|
||||
var opts = options instanceof Function ?
|
||||
makeOptions.call(this)
|
||||
: options
|
||||
return base.call(this,
|
||||
var skipUnresolved = opts.skipUnresolved
|
||||
var resolved =
|
||||
// event handler...
|
||||
item instanceof Function ?
|
||||
item
|
||||
@ -728,8 +739,15 @@ function(event, {handler, action, default_item, filter, options={}, getter='sear
|
||||
: item !== null && default_item instanceof Function ?
|
||||
[default_item.call(that) || []].flat()
|
||||
// item is null (explicitly) or other...
|
||||
: [],
|
||||
...args) },
|
||||
: []
|
||||
return (skipUnresolved
|
||||
&& resolved.length == 0
|
||||
&& item != null) ?
|
||||
// skip unresolved...
|
||||
this
|
||||
: base.call(this,
|
||||
resolved,
|
||||
...args) },
|
||||
// get base method attributes -- keep the event method format...
|
||||
base) }
|
||||
|
||||
@ -3162,22 +3180,9 @@ var BaseBrowserPrototype = {
|
||||
// first last elements...
|
||||
// NOTE: if focus does not change this will trigger any handlers...
|
||||
// NOTE: this will reveal the focused item...
|
||||
// XXX SECTION_FOCUS
|
||||
focus: makeItemEventMethod('focus', {
|
||||
handler: function(evt, items){
|
||||
var item = items.shift()
|
||||
// do not change focus if item is not in the main section...
|
||||
// NOTE: we will still trigger item focus handlers...
|
||||
if(item != null
|
||||
&& this.get(item) == null
|
||||
&& !(this.options || {}).allowSecondaySectionFocus){
|
||||
// XXX SECTION_FOCUS
|
||||
// XXX this fixes the .__focus__(..) falling into recursion
|
||||
// problem but prevent non-main-section item handlers
|
||||
// from triggering...
|
||||
evt.stopPropagation()
|
||||
return
|
||||
}
|
||||
// blur .focused...
|
||||
this.focused
|
||||
&& this.blur(this.focused)
|
||||
@ -3188,10 +3193,7 @@ var BaseBrowserPrototype = {
|
||||
default_item: function(){ return this.get(0) },
|
||||
options: function(){
|
||||
return {
|
||||
// XXX this messes up focusing by index, e.g. .focus(0)
|
||||
// if a header is available...
|
||||
// XXX SECTION_FOCUS
|
||||
section: '*',
|
||||
skipUnresolved: true,
|
||||
skipDisabled: !(this.options || {}).focusDisabledItems,
|
||||
} },
|
||||
getter: 'get' }),
|
||||
@ -4677,7 +4679,6 @@ var HTMLBrowserPrototype = {
|
||||
}, {skipDisabled: false})
|
||||
},
|
||||
// NOTE: element alignment is done via the browser focus mechanics...
|
||||
// XXX SECTION_FOCUS
|
||||
__focus__: function(evt, elem){
|
||||
var that = this
|
||||
elem
|
||||
@ -4694,7 +4695,6 @@ var HTMLBrowserPrototype = {
|
||||
})
|
||||
})
|
||||
// set focus...
|
||||
// XXX SECTION_FOCUS breaks int recursion on non main section items...
|
||||
.focus() },
|
||||
__blur__: function(evt, elem){
|
||||
var that = this
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user