background: white;
text-shadow: 0 1px 1px rgba(255, 255, 255, 0.5);
background-color: transparent;
+ z-index: 1800;
}
.tooltip .tooltip-inner {
text-align: left !important;
background: white
text-shadow: 0 1px 1px rgba(255, 255, 255, 0.5)
background-color: transparent
+ z-index: 1800
.tooltip-inner
text-align: left !important
max-width: 350px
*/
close: function(reason) {
if (this.dialog_inited && !this.__tmp_dialog_hiding) {
+ $('.tooltip').remove(); //remove open tooltip if any to prevent them staying when modal has disappeared
this.trigger("closing", reason);
if (this.$el.is(":data(bs.modal)")) { // may have been destroyed by closing signal
this.__tmp_dialog_hiding = true;
$.fn.tooltip.Constructor.DEFAULTS.placement = 'auto top';
$.fn.tooltip.Constructor.DEFAULTS.html = true;
$.fn.tooltip.Constructor.DEFAULTS.container = 'body';
-//overwrite bootstrap tooltip method to fix bug when using placement
-//auto and the parent element does not exist anymore resulting in
-//an error. This should be remove once bootstrap fix the bug
+//overwrite bootstrap tooltip method to prevent showing 2 tooltip at the same time
var bootstrap_show_function = $.fn.tooltip.Constructor.prototype.show;
-$.fn.tooltip.Constructor.prototype.show = function (e) {
- if (this.$element.parent().length === 0){
- return;
- }
- return bootstrap_show_function.call(this, e);
+$.fn.tooltip.Constructor.prototype.show = function () {
+ $('.tooltip').remove();
+ //the following fix the bug when using placement
+ //auto and the parent element does not exist anymore resulting in
+ //an error. This should be remove once we updade bootstrap to a version that fix the bug
+ //edit: bug has been fixed here : https://github.com/twbs/bootstrap/pull/13752
+ var e = $.Event('show.bs.' + this.type);
+ var inDom = $.contains(document.documentElement, this.$element[0]);
+ if (e.isDefaultPrevented() || !inDom) return;
+ return bootstrap_show_function.call(this);
};
/**
do_attach_tooltip: function(widget, trigger, options) {
widget = widget || this;
trigger = trigger || this.$el;
- var container = 'body';
- /*TODO: need to be refactor
- in the case we can find the view form in the parent,
- attach the element to it (to prevent tooltip to keep showing
- when switching view) or if we have a modal currently showing,
- attach tooltip to the modal to prevent the tooltip to show in the body in the
- case we close the modal too fast*/
- if ($(trigger).parents('.oe_view_manager_view_form').length > 0){
- container = $(trigger).parents('.oe_view_manager_view_form');
- }
- else {
- if (window.$('.modal.in').length>0){
- container = window.$('.modal.in:last()');
- }
- }
options = _.extend({
delay: { show: 500, hide: 0 },
trigger: 'hover',
- container: container,
title: function() {
var template = widget.template + '.tooltip';
if (!QWeb.has_template(template)) {
var self = this;
this.setup_color_picker();
this.$el.find('[title]').each(function(){
- //in case of kanban, attach tooltip to the element itself
- //otherwise it might stay on screen when kanban view reload
- //since default container is body.
- //(when clicking on ready for next stage for example)
$(this).tooltip({
delay: { show: 500, hide: 0},
container: $(this),