Вопрос - как ограничить число открываемых вкладок для писем в thunderbird 3.1?

Код ниже будет сразу же закрывать открываемую вкладку, если их уже открыто четыре штуки. Можно поместить его в инициализацию кастомной кнопки, например.

Выделить код

Код:

var tabmail = document.getElementById('tabmail');

var tabMonitor =
    {
    onTabOpened: function(aTab, aIsFirstTab, aWasCurrentTab)
        {
        if (tabmail.tabInfo.length > 4)
            {
            tabmail.closeTab(aTab);
            }
        },
    onTabTitleChanged: function() {},
    onTabSwitched: function() {}
    }

tabmail.registerTabMonitor(tabMonitor);

Разумеется, оттуда его можно легко убрать. И ограничено количество не вкладок с письмами, а вообще вкладок.

Вот так ближе к тому, что вы хотите:

Выделить код

Код:

var tabmail = document.getElementById('tabmail');

var tabMonitor =
    {
    onTabOpened: function(aTab, aIsFirstTab, aWasCurrentTab)
        {
        if (aTab.mode.name == 'message' &&
            tabmail.tabInfo.filter( function(element) element.mode.name=='message' ).length > 4 )
            {
            tabmail.closeTab(aTab);
            }
        },
    onTabTitleChanged: function() {},
    onTabSwitched: function() {}
    }

tabmail.registerTabMonitor(tabMonitor);

Если во вкладках уже открыто четыре письма, вновь открываемая вкладка с письмом сразу же закрывается (собственно, вы и не успеете заметить, что она открывалась).

Можно и совсем коротко. Правда, при попытке открытия вкладки с письмом будет происходить переключение на первую вкладку, в которой открыто какое-либо письмо.

Выделить код

Код:

mailTabType.modes.message.maxTabs = 4;

Код выше рассчитан на помещение в инициализацию кастомной кнопки, а на саму кнопку можно повесить отключение/включение ограничения:

Выделить код

Код:

with (document.getElementById('tabmail').tabModes.message) { maxTabs = maxTabs?undefined:4; }

В коде инициализации сделано по-другому, чем в коде при нажатии, по той причине, что на момент инициализации кнопки типы вкладок ещё не «зарегистрированы», хотя, так сказать, подготовлены. Ещё интересно, что если уже открыто большее положенного количество вкладок, следующие будут открываться даже при включенном ограничении.

Вот что можно поглядеть по теме: mailTabs.js, tabmail.xml.

Всё, тема раскрыта, я считаю :).