Compare commits

...

2 commits

Author SHA1 Message Date
rolux
2e853ba316 Ox.Menu: deselect when mouse moves over disabled item 2018-10-13 12:06:34 +02:00
rolux
10704ccb3d Ox.Menu: listen to mouseup, not click 2018-10-13 12:03:14 +02:00

View file

@ -62,10 +62,10 @@ Ox.Menu = function(options, self) {
' Ox' + Ox.toTitleCase(self.options.size) ' Ox' + Ox.toTitleCase(self.options.size)
) )
.on({ .on({
click: click,
mouseenter: mouseenter, mouseenter: mouseenter,
mouseleave: mouseleave, mouseleave: mouseleave,
mousemove: mousemove, mousemove: mousemove,
mouseup: mouseup,
mousewheel: mousewheel mousewheel: mousewheel
}) })
.bindEvent({ .bindEvent({
@ -103,29 +103,6 @@ Ox.Menu = function(options, self) {
.addClass('OxBottom') .addClass('OxBottom')
.appendTo(that); .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) { function clickItem(position, files) {
var item = that.items[position], var item = that.items[position],
group = item.options('group'), group = item.options('group'),
@ -268,14 +245,41 @@ Ox.Menu = function(options, self) {
if ($target.is('.OxCell')) { if ($target.is('.OxCell')) {
position = $parent.data('position'); position = $parent.data('position');
item = that.items[position]; item = that.items[position];
if (!item.options('disabled') && position != self.options.selected) { if (position != self.options.selected) {
selectItem(position); if (!item.options('disabled')) {
selectItem(position);
} else {
mouseleave();
}
} }
} else { } else {
mouseleave(); mouseleave();
} }
} }
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) { function mousewheel(e, delta, deltaX, deltaY) {
var $scrollbar; var $scrollbar;
if (deltaY && !$(e.target).is('.OxScrollbar')) { if (deltaY && !$(e.target).is('.OxScrollbar')) {
@ -376,9 +380,6 @@ Ox.Menu = function(options, self) {
return $('<div/>', { return $('<div/>', {
'class': 'OxScrollbar Ox' + Ox.toTitleCase(direction), 'class': 'OxScrollbar Ox' + Ox.toTitleCase(direction),
html: Ox.SYMBOLS['triangle_' + direction], html: Ox.SYMBOLS['triangle_' + direction],
click: function() { // fixme: do we need to listen to click event?
return false;
},
mousedown: function() { mousedown: function() {
self.scrollSpeed = 2; self.scrollSpeed = 2;
return false; return false;
@ -808,7 +809,7 @@ Ox.Menu = function(options, self) {
}; };
/*@ /*@
setItemTitle <f> setItemTitle setItemTitle <f> setItemTitle
(id, title) -> <o> set item title (id, title) -> <o> set item title
@*/ @*/
that.setItemTitle = function(id, title) { that.setItemTitle = function(id, title) {
@ -835,7 +836,7 @@ Ox.Menu = function(options, self) {
that.gainFocus(); that.gainFocus();
that.$layer = Ox.Layer({type: 'menu'}) that.$layer = Ox.Layer({type: 'menu'})
.css({top: self.options.mainmenu ? '20px' : 0}) .css({top: self.options.mainmenu ? '20px' : 0})
.bindEvent({click: clickLayer}) .on({mouseup: clickLayer})
.show(); .show();
} }
return that; return that;