Skip to content

Commit

Permalink
Merge pull request brave#12374 from bsclifton/fix-context-menus
Browse files Browse the repository at this point in the history
Close sub-menus when different item at the same level is selected
  • Loading branch information
bsclifton committed Dec 22, 2017
2 parents 8745727 + d8b7364 commit db4b3b9
Showing 1 changed file with 24 additions and 1 deletion.
25 changes: 24 additions & 1 deletion app/renderer/components/common/contextMenu/contextMenuItem.js
Original file line number Diff line number Diff line change
Expand Up @@ -123,19 +123,42 @@ class ContextMenuItem extends ImmutableComponent {

onMouseEnter (e) {
if (this.props.contextMenuItem.has('folderKey')) {
// Context menu item in bookmarks toolbar (bookmarks always have a folder id)
const yAxis = this.getYAxis(e)
windowActions.onShowBookmarkFolderMenu(this.props.contextMenuItem.get('folderKey'), yAxis, null, this.props.submenuIndex)
} else if (this.hasSubmenu) {
// Regular context menu with submenu (ex: hamburger menu)
let openedSubmenuDetails = this.props.contextMenuDetail.get('openedSubmenuDetails')

openedSubmenuDetails = openedSubmenuDetails
? openedSubmenuDetails.splice(this.props.submenuIndex, openedSubmenuDetails.size)
: new Immutable.List()
const yAxis = this.getYAxis(e)

openedSubmenuDetails = openedSubmenuDetails.push(Immutable.fromJS({
y: yAxis,
template: this.submenu
template: this.submenu,
openerSubmenuIndex: this.props.submenuIndex,
openerDataIndex: this.props.dataIndex
}))

windowActions.setContextMenuDetail(this.props.contextMenuDetail.set('openedSubmenuDetails', openedSubmenuDetails))
} else {
// Regular context menu item (no children)
let openedSubmenuDetails = this.props.contextMenuDetail && this.props.contextMenuDetail.get('openedSubmenuDetails')

// If a menu is open, see if the submenuIndex matches
if (openedSubmenuDetails) {
for (let i = 0; i < openedSubmenuDetails.size; i++) {
if (this.props.submenuIndex === openedSubmenuDetails.getIn([i, 'openerSubmenuIndex'])) {
// When index matches, menu should be closed
// User is hovering over a different item at the same level
openedSubmenuDetails = openedSubmenuDetails.remove(i)
windowActions.setContextMenuDetail(this.props.contextMenuDetail.set('openedSubmenuDetails', openedSubmenuDetails))
break
}
}
}
}
}
getLabelForItem (item) {
Expand Down

0 comments on commit db4b3b9

Please sign in to comment.