Контекстное меню внутри пункта меню в ExtJS - PullRequest
1 голос
/ 10 марта 2011

У меня есть меню, которое содержит TreePanel.Пользователи должны иметь возможность взаимодействовать с узлами TreePanel с помощью контекстного меню.Я показываю контекстное меню из функции, прикрепленной к событию contextmenu TreePanel.

Это работает за исключением:

  1. Без allowOtherMenus: true, показывающее, что контекстное меню вызывает основноеменю и, следовательно, TreePanel, чтобы исчезнуть;
  2. При allowOtherMenus: true в любом меню контекстное меню не исчезает, когда пользователь щелкает пустую область TreePanel.

Я ищу способ, чтобы контекстное меню работало так, как если бы TreePanel не был элементом в меню.

Макет: enter image description here

1 Ответ

3 голосов
/ 10 марта 2011

Я обнаружил, что это работает на FF3 / IE8 / Chrome, хотя у него могут быть побочные эффекты, которые еще не обнаружены.

var hide_context_menu = function () { context_menu.hide() };

var context_menu = new Ext.menu.Menu({
    allowOtherMenus: true,
    items: [...],
    listeners: {
        show: function () {
            Ext.getDoc().on('mouseup', hide_context_menu);
        },
        hide: function () {
            Ext.getDoc().un('mouseup', hide_context_menu);
        }
    }
});

allowOtherMenus: true предотвращает скрытие главного меню с помощью MenuMgr, когда появляется контекстное меню. Скрытие обработчика к событию mouseup позволяет обрабатывать события щелчка.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...