Полезная информация

Пользователи не любят читать документацию. Станьте оригинальным, будьте не как все. Ознакомьтесь с нашей базой знаний.

№5118-09-2019 18:16:05

Dumby
Участник
 
Группа: Members
Зарегистрирован: 12-08-2012
Сообщений: 1059
UA: Firefox 52.0

Re: [CB]Session Bookmarks

Infocatcher пишет:

Если вдруг кто-то захочет поиграться

Да, поигрался на Firefox 69. И так, и сяк, глухо вообще.
В результате решил попробовать по координатам, вроде работает.
Добавил в конец кода, чтобы мне удобней было прокручивать.

скрытый текст

Выделить код

Код:

this.bookmarks.fixer = ({
    bm: this.bookmarks,
    init: function() {
        addEventListener("dragstart", this, false, gBrowser.tabs[0].flattenedTreeParentNode);
        return this;
    },
    getRect: function(node) {
        var x = node.screenX, y = node.screenY;
        return [x, x + node.clientWidth, y, y + node.clientHeight];
    },
    pointInRect: function(x, y, rect) {
        var [lx, rx, ty, by] = rect;
        return x >= lx && x <= rx && y >= ty && y <= by;
    },
    handleEvent: function(e) {
        this.btnRect = this.getRect(this.bm.button);
    },
    fix: function(e) {
        var x = e.screenX, y = e.screenY;
        var res = this.pointInRect(x, y, this.btnRect);
        if(res)
            res = this.bm.button;
        else if(this.bm.button.open) {
            var box = this.bm.mp.children[0]
                .flattenedTreeParentNode.parentNode;

            var arr = [box._scrollButtonUp, box._scrollButtonDown]
                .concat(Array.from(this.bm.mp.children));

            res = arr.find(function(node) {
                return this.pointInRect(x, y, this.getRect(node));
            }, this);
            if(res) {
                if(res.localName == "toolbarbutton") {
                    res.dispatchEvent(new MouseEvent("mouseover", {}));
                    return;
                }
                box._stopScroll();
            }
        }
        if(res) return {
            target: res,

            screenX: x,
            screenY: y,
            type: e.type,
            dataTransfer: e.dataTransfer,
            preventDefault: e.preventDefault.bind(e),
            stopPropagation: e.stopPropagation.bind(e)
        };
    }
}).init();

this.bookmarks.fixTabDrop = function(e) {
    if(!e.dataTransfer.types.contains("application/x-moz-tabbrowser-tab"))
        return false;

    e = this.fixer.fix(e);
    if(!e)
        return false;

    e.stopPropagation();
    if(e.type == "dragover")
        this.handleDragOver(e);
    else
        this.handleDrop(e);
    return true;
}

Отсутствует

 

Board footer

Powered by PunBB
Modified by Mozilla Russia
Copyright © 2004–2011 Mozilla Russia
Язык отображения форума: [Русский] [English]