Skip to content

Commit 95e1268

Browse files
committed
Make contextmenu smooth as butter
1 parent d077504 commit 95e1268

File tree

1 file changed

+19
-5
lines changed

1 file changed

+19
-5
lines changed

src/UI/UIContextMenu.js

+19-5
Original file line numberDiff line numberDiff line change
@@ -163,7 +163,17 @@
163163
options.enter(this);
164164
possiblyActivate(this, e, data);
165165
},
166-
mouseleaveRow = function () {
166+
mouseleaveRow = function (e) {
167+
// if doesn't have submenu, remove active class and timer
168+
if(!$(e.target).hasClass('has-open-context-menu-submenu') &&
169+
$(e.target).hasClass('context-menu-item-submenu'))
170+
{
171+
$(e.target).removeClass('context-menu-item-active');
172+
// remove timeout
173+
clearTimeout(timeoutId);
174+
activeRow = null;
175+
}
176+
167177
options.exit(this);
168178
};
169179

@@ -595,15 +605,19 @@ function UIContextMenu(options){
595605
},
596606
// deactivates row when mouse leaves
597607
deactivate: function (e) {
598-
// disable submenu delay timer
608+
// disable submenu delay timer to cancel submenu opening
599609
clearTimeout(submenu_delay_timer);
600-
// deactivate submenu
601-
if($(e).hasClass('context-menu-item-submenu')){
610+
// close submenu
611+
if($(e).hasClass('has-open-context-menu-submenu')){
602612
$(`.context-menu[data-id="${menu_id}-${$(e).attr('data-action')}"]`).remove();
603613
// remove `has-open-context-menu-submenu` class from the parent menu item
604614
$(e).removeClass('has-open-context-menu-submenu');
605615
}
606-
}
616+
},
617+
exit: function (e) {
618+
clearTimeout(submenu_delay_timer);
619+
$(e.target).removeClass('context-menu-item-active');
620+
},
607621
});
608622

609623
// disabled item mousedown event

0 commit comments

Comments
 (0)