Ox.Menu: listen to mouseup, not click

This commit is contained in:
rolux 2018-10-13 12:03:14 +02:00
parent 41020bb3e5
commit 10704ccb3d

View file

@ -62,10 +62,10 @@ Ox.Menu = function(options, self) {
' Ox' + Ox.toTitleCase(self.options.size)
)
.on({
click: click,
mouseenter: mouseenter,
mouseleave: mouseleave,
mousemove: mousemove,
mouseup: mouseup,
mousewheel: mousewheel
})
.bindEvent({
@ -103,29 +103,6 @@ Ox.Menu = function(options, self) {
.addClass('OxBottom')
.appendTo(that);
function click(event) {
var item,
position,
$target = $(event.target),
$parent = $target.parent();
// necessary for highlight
if ($parent.is('.OxCell')) {
$target = $parent;
$parent = $target.parent();
}
if ($target.is('.OxCell')) {
position = $parent.data('position');
item = that.items[position];
if (!item.options('disabled')) {
clickItem(position);
} else {
that.hideMenu();
}
} else {
that.hideMenu();
}
}
function clickItem(position, files) {
var item = that.items[position],
group = item.options('group'),
@ -276,6 +253,29 @@ Ox.Menu = function(options, self) {
}
}
function mouseup(event) {
var item,
position,
$target = $(event.target),
$parent = $target.parent();
// necessary for highlight
if ($parent.is('.OxCell')) {
$target = $parent;
$parent = $target.parent();
}
if ($target.is('.OxCell')) {
position = $parent.data('position');
item = that.items[position];
if (!item.options('disabled')) {
clickItem(position);
} else {
that.hideMenu();
}
} else {
that.hideMenu();
}
}
function mousewheel(e, delta, deltaX, deltaY) {
var $scrollbar;
if (deltaY && !$(e.target).is('.OxScrollbar')) {
@ -376,9 +376,6 @@ Ox.Menu = function(options, self) {
return $('<div/>', {
'class': 'OxScrollbar Ox' + Ox.toTitleCase(direction),
html: Ox.SYMBOLS['triangle_' + direction],
click: function() { // fixme: do we need to listen to click event?
return false;
},
mousedown: function() {
self.scrollSpeed = 2;
return false;
@ -835,7 +832,7 @@ Ox.Menu = function(options, self) {
that.gainFocus();
that.$layer = Ox.Layer({type: 'menu'})
.css({top: self.options.mainmenu ? '20px' : 0})
.bindEvent({click: clickLayer})
.on({mouseup: clickLayer})
.show();
}
return that;