Skip to content

Commit

Permalink
TouchScreen support for submenus
Browse files Browse the repository at this point in the history
  • Loading branch information
steffest committed Mar 25, 2021
1 parent 97201db commit 4ada30d
Show file tree
Hide file tree
Showing 2 changed files with 26 additions and 7 deletions.
14 changes: 9 additions & 5 deletions script/src/ui/components/menu.js
Original file line number Diff line number Diff line change
Expand Up @@ -154,14 +154,18 @@ UI.menu = function(x,y,w,h,submenuParent){
return handled;
}

me.deActivate = function(){
me.deActivate = function(clickedItem){
if (activeIndex>=0){
var activeItem = items[activeIndex];
if (activeItem && activeItem.subMenu){
activeItem.subMenu.hide();
activeIndex=undefined;
me.refresh();
Input.clearFocusElement();
if (clickedItem && clickedItem.type === "submenu" && clickedItem.mainMenu && clickedItem.mainMenu.name === me.name){

}else{
activeItem.subMenu.hide();
activeIndex=undefined;
me.refresh();
Input.clearFocusElement();
}
}
}
}
Expand Down
19 changes: 17 additions & 2 deletions script/src/ui/components/submenu.js
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
UI.submenu = function(x,y,w,h){
var me = UI.element(x,y,w,h);
me.type = "submenu";
var items;

var itemHeight = 26;
Expand Down Expand Up @@ -86,7 +87,6 @@ UI.submenu = function(x,y,w,h){
if (!(items && items.length)) return;
var selectedItem = items[Math.floor(me.eventY/itemHeight)];
me.executeItem(selectedItem);

};

me.executeItem = function(item){
Expand All @@ -97,6 +97,8 @@ UI.submenu = function(x,y,w,h){
me.parent.refresh();
if (me.mainMenu) me.mainMenu.deActivate();
EventBus.trigger(EVENT.command,item.command);
}else if (item.subItems){
me.toggleSubmenu(item);
}
}
}
Expand All @@ -114,7 +116,11 @@ UI.submenu = function(x,y,w,h){
subMenu.mainMenu = me.mainMenu;
item.subMenu = subMenu;
}
item.subMenu.setPosition(me.left + me.width - 20,me.top + item.index*itemHeight);
var left = me.left + me.width - 20;
if ((left+item.subMenu.width)>UI.mainPanel.width){
left = UI.mainPanel.width-item.subMenu.width;
}
item.subMenu.setPosition(left,me.top + item.index*itemHeight);
item.subMenu.show();
activeSubmenu = item;
me.refresh();
Expand All @@ -128,6 +134,15 @@ UI.submenu = function(x,y,w,h){
}
}

me.toggleSubmenu = function(item){
if (item.subMenu && item.subMenu.isVisible()){
me.deActivateSubmenu();
}else{
me.activateSubmenu(item);
}

}

me.render = function(internal){
if (!me.isVisible()) return;
internal = !!internal;
Expand Down

0 comments on commit 4ada30d

Please sign in to comment.