diff --git a/addons/web_tour/static/src/js/tour_manager.js b/addons/web_tour/static/src/js/tour_manager.js index 6c6cd1caf37..cc5fa1972b8 100644 --- a/addons/web_tour/static/src/js/tour_manager.js +++ b/addons/web_tour/static/src/js/tour_manager.js @@ -111,8 +111,8 @@ return core.Class.extend({ } else { $trigger = $(tip.trigger); } - $trigger = $trigger.filter(':visible').first(); - var extra_trigger = tip.extra_trigger ? $(tip.extra_trigger).filter(':visible').length : true; + $trigger = get_first_visible_element($trigger); + var extra_trigger = tip.extra_trigger ? get_first_visible_element($(tip.extra_trigger)).length : true; var triggered = $trigger.length && extra_trigger; if (triggered) { if (!tip.widget) { @@ -123,6 +123,22 @@ return core.Class.extend({ } else { this._deactivate_tip(tip); } + + function get_first_visible_element($elements) { + for (var i = 0 ; i < $elements.length ; i++) { + var $elem = $elements.eq(i); + if ($elem.is(":visible")) { + var $i = $elem; + while ($i.css("visibility") !== "hidden") { + $i = $i.parent(); + if ($i.is("html")) { + return $elem; + } + } + } + } + return $(); + } }, _activate_tip: function(tip, tour_name, $anchor) { var tour = this.tours[tour_name];