Better menu item click and hover behaviour
This commit is contained in:
parent
b61f0c241e
commit
3e861b0a44
2 changed files with 33 additions and 12 deletions
|
@ -64,27 +64,44 @@ gui.MenuItem = {
|
||||||
if (!me._menu and me._cb) {
|
if (!me._menu and me._cb) {
|
||||||
me._cb(e);
|
me._cb(e);
|
||||||
}
|
}
|
||||||
if (me._parent_menu != nil) {
|
me._unsetOthersHovered();
|
||||||
|
if (me._is_menubar_item and me._enabled) {
|
||||||
|
me._hovered = 1;
|
||||||
|
me.update();
|
||||||
|
var x = e.screenX - e.localX;
|
||||||
|
var y = e.screenY - e.localY;
|
||||||
|
me._showMenu(x, y);
|
||||||
|
} elsif (me._parent_menu != nil) {
|
||||||
|
me._hovered = 0;
|
||||||
|
me.update();
|
||||||
me._parent_menu.hide();
|
me._parent_menu.hide();
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|
||||||
onMouseEnter: func(e) {
|
_unsetOthersHovered: func {
|
||||||
for (var i = 0; i < me._parent_menu._layout.count(); i += 1) {
|
for (var i = 0; i < me._parent_menu._layout.count(); i += 1) {
|
||||||
var item = me._parent_menu._layout.itemAt(i);
|
var item = me._parent_menu._layout.itemAt(i);
|
||||||
item._hovered = 0;
|
item._hovered = 0;
|
||||||
|
item.update();
|
||||||
if (item._menu != nil) {
|
if (item._menu != nil) {
|
||||||
item._menu.hide();
|
item._menu.hide();
|
||||||
}
|
}
|
||||||
item.update();
|
|
||||||
}
|
}
|
||||||
if (me._enabled) {
|
},
|
||||||
|
|
||||||
|
onMouseEnter: func(e) {
|
||||||
|
var any_hovered = 0;
|
||||||
|
for (var i = 0; i < me._parent_menu._layout.count(); i += 1) {
|
||||||
|
any_hovered |= me._parent_menu._layout.itemAt(i)._hovered;
|
||||||
|
}
|
||||||
|
me._unsetOthersHovered();
|
||||||
|
if ((!me._is_menubar_item or any_hovered) and me._enabled) {
|
||||||
me._hovered = 1;
|
me._hovered = 1;
|
||||||
|
me.update();
|
||||||
var x = e.screenX - e.localX;
|
var x = e.screenX - e.localX;
|
||||||
var y = e.screenY - e.localY;
|
var y = e.screenY - e.localY;
|
||||||
me._showMenu(x, y);
|
me._showMenu(x, y);
|
||||||
}
|
}
|
||||||
me.update();
|
|
||||||
},
|
},
|
||||||
|
|
||||||
onMouseLeave: func(e) {
|
onMouseLeave: func(e) {
|
||||||
|
@ -113,7 +130,6 @@ gui.MenuItem = {
|
||||||
}
|
}
|
||||||
me._menu.setPosition(pos[0], pos[1]);
|
me._menu.setPosition(pos[0], pos[1]);
|
||||||
me._menu.show();
|
me._menu.show();
|
||||||
me._menu.setFocus();
|
|
||||||
}
|
}
|
||||||
me._hovered = 1;
|
me._hovered = 1;
|
||||||
},
|
},
|
||||||
|
@ -344,7 +360,12 @@ gui.Menu = {
|
||||||
if (x != nil and y != nil) {
|
if (x != nil and y != nil) {
|
||||||
me.setPosition(x, y);
|
me.setPosition(x, y);
|
||||||
}
|
}
|
||||||
call(me.parents[1].show, [], me);
|
me._ghost.show();
|
||||||
|
me.setInt("z-index", me.get("z-index", gui.STACK_INDEX["always-on-top"]));
|
||||||
|
if (me._canvas != nil) {
|
||||||
|
me._canvas.update();
|
||||||
|
}
|
||||||
|
append(gui.open_popups, me);
|
||||||
},
|
},
|
||||||
|
|
||||||
hide: func {
|
hide: func {
|
||||||
|
|
|
@ -17,7 +17,8 @@ gui.widgets.MenuBar = {
|
||||||
m._canvas_item = nil;
|
m._canvas_item = nil;
|
||||||
|
|
||||||
m.setLayoutMinimumSize([48, 24]);
|
m.setLayoutMinimumSize([48, 24]);
|
||||||
m.setLayoutSizeHint([64, 24]);
|
m.setLayoutSizeHint([48, 24]);
|
||||||
|
m.setLayoutMaximumSize([48, 24]);
|
||||||
|
|
||||||
return m;
|
return m;
|
||||||
},
|
},
|
||||||
|
@ -142,9 +143,8 @@ gui.widgets.MenuBar = {
|
||||||
var arg = arg[0];
|
var arg = arg[0];
|
||||||
}
|
}
|
||||||
var (x, y) = arg;
|
var (x, y) = arg;
|
||||||
me._size = [x, y];
|
me._size = [x, 24];
|
||||||
me.setLayoutMinimumSize([x, y]);
|
me.setAlignment(0x01 | 0x20);
|
||||||
me.setLayoutSizeHint([x, y]);
|
|
||||||
return me.update();
|
return me.update();
|
||||||
},
|
},
|
||||||
|
|
||||||
|
|
Loading…
Add table
Reference in a new issue