Commit 2f5702da authored by Rene Saarsoo's avatar Rene Saarsoo
Browse files

Fix regression with remembering scrollstate.

Refactor the scrollstate saving logic to not use the global Docs.contentState.
parent c26c56e4
Loading
Loading
Loading
Loading
+2 −2
Original line number Diff line number Diff line
@@ -187,8 +187,8 @@ Ext.define('Docs.Renderer', {
        var memberName = member.tagname + '-' + member.name,
            open;

        if (Docs.contentState && Docs.contentState['/api/' + this.cls.name] && Docs.contentState['/api/' + this.cls.name][memberName]) {
            open = Docs.contentState['/api/' + this.cls.name][memberName].expanded;
        if (Docs.contentState && Docs.contentState['#!/api/' + this.cls.name] && Docs.contentState['#!/api/' + this.cls.name][memberName]) {
            open = Docs.contentState['#!/api/' + this.cls.name][memberName].expanded;
        }

        return this.memberTpl.apply(Ext.apply({
+8 −13
Original line number Diff line number Diff line
@@ -44,7 +44,8 @@ Ext.define('Docs.controller.Classes', {
        }
    ],

    activeUrl: null,
    cache: {},
    scrollState: {},

    init: function() {
        this.addEvents(
@@ -93,7 +94,7 @@ Ext.define('Docs.controller.Classes', {
                            docClass = member.down('.meta .docClass'),
                            clsName = docClass.getAttribute('rel'),
                            memberName = member.getAttribute('id'),
                            baseUrl = '/api/' + this.currentCls.name;
                            baseUrl = '#!/api/' + this.currentCls.name;

                        Docs.contentState[baseUrl] = Docs.contentState[baseUrl] || {};
                        Docs.contentState[baseUrl][memberName] = Docs.contentState[baseUrl][memberName] || {};
@@ -117,9 +118,7 @@ Ext.define('Docs.controller.Classes', {
                    });

                    cmp.body.addListener('scroll', function(cmp, el) {
                        var baseUrl = '/api/' + this.currentCls.name;
                        Docs.contentState[baseUrl] = Docs.contentState[baseUrl] || {};
                        Docs.contentState[baseUrl]['scrollOffset'] = el.scrollTop;
                        this.scrollState['#!/api/' + this.currentCls.name] = el.scrollTop;
                    }, this);
                }
            }
@@ -134,7 +133,7 @@ Ext.define('Docs.controller.Classes', {

        if (this.opensNewWindow(event)) {
            window.open(url);
            view && view.selectUrl(this.activeUrl ? this.activeUrl : "");
            view && view.selectUrl(this.currentCls ? "#!/api/"+this.currentCls.name : "");
        }
        else {
            this.loadClass(url);
@@ -147,7 +146,6 @@ Ext.define('Docs.controller.Classes', {
     * @param {Boolean} noHistory  true to disable adding entry to browser history
     */
    loadIndex: function(noHistory) {
        this.activeUrl = "";
        if (!noHistory) {
            Docs.History.push("#!/api");
        }
@@ -157,8 +155,6 @@ Ext.define('Docs.controller.Classes', {
        Ext.getCmp('card-panel').layout.setActiveItem('classindex');
    },

    cache: {},

    /**
     * Loads class.
     *
@@ -211,6 +207,7 @@ Ext.define('Docs.controller.Classes', {
            this.getHeader().load(cls);
            this.getOverview().load(cls);
        }
        this.currentCls = cls;

        if (anchor) {
            this.getOverview().scrollToEl("#" + anchor);
@@ -222,14 +219,12 @@ Ext.define('Docs.controller.Classes', {

        this.getTree().selectUrl("#!/api/"+cls.name);
        this.fireEvent('showClass', cls.name);
        this.currentCls = cls;
    },

    scrollContent: function() {
        if (this.currentCls) {
            var baseUrl = '/api/' + this.currentCls.name,
                offset = (Docs.contentState[baseUrl] && Docs.contentState[baseUrl].scrollOffset) || 0;
            this.getOverview().getEl().down('.x-panel-body').scrollTo('top', offset);
            var baseUrl = '#!/api/' + this.currentCls.name;
            this.getOverview().getEl().down('.x-panel-body').scrollTo('top', this.scrollState[baseUrl] || 0);
        }
    }

+4 −6
Original line number Diff line number Diff line
@@ -16,6 +16,7 @@ Ext.define('Docs.controller.Guides', {
    ],

    cache: {},
    scrollState: {},

    init: function() {
        this.addEvents(
@@ -51,9 +52,7 @@ Ext.define('Docs.controller.Guides', {
            '#guide': {
                afterrender: function(cmp) {
                    cmp.el.addListener('scroll', function(cmp, el) {
                        var baseUrl = this.activeUrl;
                        Docs.contentState[baseUrl] = Docs.contentState[baseUrl] || {};
                        Docs.contentState[baseUrl]['scrollOffset'] = el.scrollTop;
                        this.scrollState[this.activeUrl] = el.scrollTop;
                    }, this);
                }
            }
@@ -135,15 +134,14 @@ Ext.define('Docs.controller.Guides', {
            Ext.getCmp("guide").update('<a class="print guide" href="?print=/guide/' + name + '" target="_blank">Print</a>' + json.guide);
            Docs.Syntax.highlight(Ext.get("guide"));
        }
        this.activeUrl = url;
        this.scrollContent();
        this.fireEvent('showGuide', name);
        this.getTree().selectUrl(url);
        this.activeUrl = url;
    },

    scrollContent: function() {
        var offset = (Docs.contentState[this.activeUrl] && Docs.contentState[this.activeUrl].scrollOffset) || 0;
        Ext.get('guide').scrollTo('top', offset);
        Ext.get('guide').scrollTo('top', this.scrollState[this.activeUrl] || 0);
    }

});