From f2c59460512cfef87117db5952f9bcef3018c7a8 Mon Sep 17 00:00:00 2001 From: Christophe Matthieu Date: Fri, 24 Oct 2014 12:14:15 +0200 Subject: [PATCH] [FIX] tour.js: popover position when scrolling down --- addons/web/static/src/js/tour.js | 14 +++++++++++--- 1 file changed, 11 insertions(+), 3 deletions(-) diff --git a/addons/web/static/src/js/tour.js b/addons/web/static/src/js/tour.js index 8a08751646e..5d962844f73 100644 --- a/addons/web/static/src/js/tour.js +++ b/addons/web/static/src/js/tour.js @@ -241,12 +241,20 @@ var Tour = { }, repositionPopover: function() { var popover = Tour.$element.data("bs.popover"); - var $tip = Tour.$element.data("bs.popover").tip(); + var $tip = popover.tip(); if (popover.options.orphan) { return $tip.css("top", $(window).outerHeight() / 2 - $tip.outerHeight() / 2); } + if (Tour.$element.parents("div").filter(function(){ return getComputedStyle(this).position === 'fixed'; }).length) { + var pos = popover.getPosition(); + var top = pos.top; + if (popover.options.placement === "top") top -= $tip.height(); + if (popover.options.placement === "bottom") top += pos.height; + $tip.css({'top': top+'px'}); + } + var offsetBottom, offsetHeight, offsetRight, offsetWidth, originalLeft, originalTop, tipOffset; offsetWidth = $tip[0].offsetWidth; offsetHeight = $tip[0].offsetHeight; @@ -270,10 +278,10 @@ var Tour = { $tip.offset(tipOffset); if (popover.options.placement === "bottom" || popover.options.placement === "top") { var left = Tour.$element.offset().left + Tour.$element.outerWidth()/2 - tipOffset.left; - $tip.find(".arrow").css("left", left ? left + "px" : ""); + popover.arrow().css("left", left ? left + "px" : ""); } else if (popover.options.placement !== "auto") { var top = Tour.$element.offset().top + Tour.$element.outerHeight()/2 - tipOffset.top; - $tip.find(".arrow").css("top", top ? top + "px" : ""); + popover.arrow().css("top", top ? top + "px" : ""); } }, _load_template: false,