Подсказка не отображается при включении кнопки - PullRequest
0 голосов
/ 03 августа 2020

После обновления Ext5 до 7.2 больше невозможно увидеть всплывающую подсказку после программного включения кнопки.

Ext.define('X', {
extend: 'Ext.panel.Panel',

initComponent: function() {
    this.tbar = [{
        text: 'Foo',
        disabled: true,
        itemId: 'fooBtn',
        tooltip: 'FooTip',
        handler: function(btn){
            this.setHtml('Test')
        },
        scope: this
    },
    {
        text: 'Bar',
        tooltip: 'BarTip',
        handler: function(btn) {
            this.down('#fooBtn').enable();
        },
        scope: this
    }];
    this.callParent();
}
});

Ext.application({
name: 'Fiddle',

launch: function() {
    new X({
        renderTo: document.body,
        title: 'Foo',
        width: 200,
        height: 200
    });
 }
});

https://fiddle.sencha.com/#view / editor & fiddle / 37o5

Ответы [ 2 ]

0 голосов
/ 04 августа 2020

Вы можете попробовать добавить одну строку после включения:

handler: function(btn) {
            this.down('#fooBtn').enable();
    ******this.down('#fooBtn').setTooltip("FooTip");*****
        },

Возможно, плохое решение, но требуется меньше кода.

0 голосов
/ 03 августа 2020

Странный баг. Чтобы исправить это, вы можете использовать следующее переопределение:

Ext.define('overrides.button.Button', {
    override: 'Ext.button.Button',
    
    setTooltip: function(tooltip, initial) {
        var me = this,
            targetEl = me.el;

        if (me.rendered) {
            if (!initial || !tooltip) {
                me.clearTip();
            }
 
            if (tooltip) {
                if (Ext.quickTipsActive && Ext.isObject(tooltip)) {
                    Ext.tip.QuickTipManager.register(Ext.apply({
                        target: targetEl.id
                    }, tooltip));
 
                    me.tooltip = tooltip;
                }
                else {
                    targetEl.dom.setAttribute(me.getTipAttr(), tooltip);
                }
 
                me.currentTooltipEl = targetEl;
            }
        }
        else {
            me.tooltip = tooltip;
        }
 
        return me;
    }
});
...