diff --git a/management/univention-management-console-frontend/umc/widgets/ModuleHeader.js b/management/univention-management-console-frontend/umc/widgets/ModuleHeader.js index 1f528f3..7947793 100644 --- a/management/univention-management-console-frontend/umc/widgets/ModuleHeader.js +++ b/management/univention-management-console-frontend/umc/widgets/ModuleHeader.js @@ -63,23 +63,25 @@ define([ _stickyTimer: null, _stickyHeaderTopPadding: null, - _getStickyHeaderTopPadding: function() { - var stickyHeaderNode = put(document.body, 'div.umcModuleHeader.dijitOffscreen > div.umcModuleHeaderSticky'); - this._stickyHeaderTopPadding = geometry.getPadExtents(stickyHeaderNode).t; - put(stickyHeaderNode.parentNode, '!'); + if (!this._stickyHeaderTopPadding) { + var stickyHeaderNode = put(document.body, 'div.umcModuleHeader.dijitOffscreen > div.umcModuleHeaderSticky'); + this._stickyHeaderTopPadding = geometry.getPadExtents(stickyHeaderNode).t; + put(stickyHeaderNode.parentNode, '!'); + } + return this._stickyHeaderTopPadding; }, _moduleHeaderTopPadding: null, - _getModuleHeaderTopPadding: function() { - var moduleHeaderNode = put(document.body, 'div.umcModuleHeader.dijitOffscreen > div.umcModuleHeaderOuterContainer'); - this._moduleHeaderTopPadding = geometry.getPadExtents(moduleHeaderNode).t; - put(moduleHeaderNode.parentNode, '!'); + if (!this._moduleHeaderTopPadding) { + var moduleHeaderNode = put(document.body, 'div.umcModuleHeader.dijitOffscreen > div.umcModuleHeaderOuterContainer'); + this._moduleHeaderTopPadding = geometry.getPadExtents(moduleHeaderNode).t; + put(moduleHeaderNode.parentNode, '!'); + } + return this._moduleHeaderTopPadding; }, - _moduleHeaderHeight: null, - postMixInProperties: function() { this.inherited(arguments); this._stickyTimer = new Deferred(); @@ -104,13 +106,14 @@ define([ return Boolean(this.domNode.offsetParent); }, + _moduleHeaderHeight: null, _updateStickyHeader: function() { if (!this._isModuleFocused()) { return; } var scroll = geometry.docScroll(); var bboxHeader = geometry.getMarginBox('umcHeader'); - var topPaddingDifference = this._moduleHeaderTopPadding - this._stickyHeaderTopPadding; + var topPaddingDifference = this._getModuleHeaderTopPadding() - this._getStickyHeaderTopPadding(); var sticky = scroll.y >= bboxHeader.h + bboxHeader.t + topPaddingDifference; if (sticky) { this._moduleHeaderHeight = this._moduleHeaderHeight || geometry.getContentBox(this.domNode).h; @@ -119,6 +122,8 @@ define([ } else if (this._moduleHeaderHeight) { this._removeModuleHeaderHeight(); this._moduleHeaderHeight = 0; + this._stickyHeaderTopPadding = null; + this._moduleHeaderTopPadding = null; } domClass.toggle(this._outerContainer.domNode, 'umcModuleHeaderSticky', sticky); },