mirror of
https://github.com/flynx/ImageGrid.git
synced 2025-10-29 10:20:08 +00:00
split the imageClick event into imageClick (image) and imageBlockClick (block) events...
Signed-off-by: Alex A. Naanou <alex.nanou@gmail.com>
This commit is contained in:
parent
185ea478bb
commit
2680b74450
@ -428,10 +428,29 @@ module.SingleImageView = core.ImageGridFeatures.Feature({
|
|||||||
}
|
}
|
||||||
}],
|
}],
|
||||||
|
|
||||||
|
// current image clicked...
|
||||||
|
['imageBlockClick.pre',
|
||||||
|
function(gid){
|
||||||
|
if(gid == this.current
|
||||||
|
&& this.toggleSingleImage('?') == 'off'){
|
||||||
|
// indicate that we have handled the click...
|
||||||
|
this.__clicked_block = true
|
||||||
|
this.toggleSingleImage()
|
||||||
|
}
|
||||||
|
}],
|
||||||
|
['imageBlockClick.pre',
|
||||||
|
function(gid){
|
||||||
|
delete this.__clicked_block
|
||||||
|
}],
|
||||||
['imageClick.pre',
|
['imageClick.pre',
|
||||||
function(gid){
|
function(gid){
|
||||||
gid == this.current
|
gid == this.current
|
||||||
&& this.toggleSingleImage() }],
|
&& this.toggleSingleImage('?') == 'on'
|
||||||
|
// only handle the click if it was not handled in
|
||||||
|
// imageBlockClick...
|
||||||
|
&& !this.__clicked_block
|
||||||
|
&& this.toggleSingleImage()
|
||||||
|
}],
|
||||||
|
|
||||||
// Workspace...
|
// Workspace...
|
||||||
// ...set ribbon focus mode to order (default) in single image mode...
|
// ...set ribbon focus mode to order (default) in single image mode...
|
||||||
|
|||||||
@ -1885,8 +1885,14 @@ var ControlActions = actions.Actions({
|
|||||||
'center-off-screen-paned-images': false,
|
'center-off-screen-paned-images': false,
|
||||||
},
|
},
|
||||||
|
|
||||||
imageClick: ['- Interface/Image click event',
|
// Image click events...
|
||||||
core.doc`Image click event
|
imageBlockClick: ['- Interface/Image block click event',
|
||||||
|
core.doc`Image block click event
|
||||||
|
|
||||||
|
This is triggered on any click on an image block.
|
||||||
|
|
||||||
|
imageClick event if triggered is triggers between the .pre()/.post()
|
||||||
|
stages of this event.
|
||||||
|
|
||||||
The .pre(..) stage of the event is called before the clicked
|
The .pre(..) stage of the event is called before the clicked
|
||||||
image is focused and the .post(..) stage is called after focusing
|
image is focused and the .post(..) stage is called after focusing
|
||||||
@ -1894,7 +1900,24 @@ var ControlActions = actions.Actions({
|
|||||||
|
|
||||||
NOTE: this does not account for animation.
|
NOTE: this does not account for animation.
|
||||||
`,
|
`,
|
||||||
core.notUserCallable(function(){
|
core.notUserCallable(function(gid, x, y){
|
||||||
|
// This is image clicked event...
|
||||||
|
//
|
||||||
|
// Not for direct use.
|
||||||
|
})],
|
||||||
|
imageClick: ['- Interface/Image click event',
|
||||||
|
core.doc`Image click event
|
||||||
|
|
||||||
|
This is triggered only if the click/tap is made within the actual
|
||||||
|
image.
|
||||||
|
|
||||||
|
The .pre(..) stage of the event is called before the clicked
|
||||||
|
image is focused and the .post(..) stage is called after focusing
|
||||||
|
is done.
|
||||||
|
|
||||||
|
NOTE: this does not account for animation.
|
||||||
|
`,
|
||||||
|
core.notUserCallable(function(gid, x, y){
|
||||||
// This is image clicked event...
|
// This is image clicked event...
|
||||||
//
|
//
|
||||||
// Not for direct use.
|
// Not for direct use.
|
||||||
@ -1934,11 +1957,60 @@ var ControlActions = actions.Actions({
|
|||||||
}
|
}
|
||||||
var handler = setup.handler = setup.handler
|
var handler = setup.handler = setup.handler
|
||||||
|| function(){
|
|| function(){
|
||||||
var gid = that.ribbons.getElemGID($(event.target))
|
var img = $(event.target)
|
||||||
|
var gid = that.ribbons.getElemGID(img)
|
||||||
|
|
||||||
that.imageClick.chainCall(that,
|
// sanity check: only handle clicks on images...
|
||||||
function(){ that.focusImage(gid) },
|
if(!img.hasClass('image')){
|
||||||
gid)
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
// get the offset within the image...
|
||||||
|
// NOTE: this does not account for border width, this
|
||||||
|
// clicks on the top/left border will result in
|
||||||
|
// negative values...
|
||||||
|
var x = event.offsetX
|
||||||
|
var y = event.offsetY
|
||||||
|
var W = img[0].offsetWidth
|
||||||
|
var H = img[0].offsetHeight
|
||||||
|
|
||||||
|
// get preview size...
|
||||||
|
// NOTE: this is not normalized to image block size...
|
||||||
|
// NOTE: we do not need to account for orientation
|
||||||
|
// because the margins will take care of it for
|
||||||
|
// us...
|
||||||
|
// XXX not fully sure if the reason here is
|
||||||
|
// correct, but the thing works...
|
||||||
|
var w = img.attr('preview-width')
|
||||||
|
var h = img.attr('preview-height')
|
||||||
|
|
||||||
|
// normalize preview size to image block size...
|
||||||
|
var s = Math.min(W/w, H/h)
|
||||||
|
w *= s
|
||||||
|
h *= s
|
||||||
|
|
||||||
|
// preview offsets within the block...
|
||||||
|
var dw = (W-w)/2
|
||||||
|
var dh = (H-h)/2
|
||||||
|
|
||||||
|
// check if we clicked the image...
|
||||||
|
var clicked_image =
|
||||||
|
(x >= dw && x <= W-dw)
|
||||||
|
&& (y >= dh && y <= H-dh)
|
||||||
|
|
||||||
|
that.imageBlockClick
|
||||||
|
.chainCall(that,
|
||||||
|
function(){
|
||||||
|
clicked_image ?
|
||||||
|
// trigger this only if we clicked
|
||||||
|
// within the image...
|
||||||
|
that.imageClick
|
||||||
|
.chainCall(that,
|
||||||
|
function(){ that.focusImage(gid) },
|
||||||
|
gid, x, y)
|
||||||
|
: that.focusImage(gid)
|
||||||
|
},
|
||||||
|
gid, x, y)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user