From 3781167f9bb40c38e185d9e4d75081340f48ab65 Mon Sep 17 00:00:00 2001 From: Cedric Snauwaert Date: Thu, 26 Jun 2014 11:19:37 +0200 Subject: [PATCH] [FIX]tooltip: fix various display problems with the tooltip --- addons/web/static/src/css/base.css | 1 + addons/web/static/src/css/base.sass | 1 + addons/web/static/src/js/chrome.js | 1 + addons/web/static/src/js/core.js | 19 +++++++++++-------- addons/web/static/src/js/view_form.js | 16 ---------------- addons/web_kanban/static/src/js/kanban.js | 4 ---- 6 files changed, 14 insertions(+), 28 deletions(-) diff --git a/addons/web/static/src/css/base.css b/addons/web/static/src/css/base.css index 6a82696ac4b..c71a22cf24e 100644 --- a/addons/web/static/src/css/base.css +++ b/addons/web/static/src/css/base.css @@ -3366,6 +3366,7 @@ body.oe_single_form .oe_single_form_container { 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; diff --git a/addons/web/static/src/css/base.sass b/addons/web/static/src/css/base.sass index 69d338b637d..151d695d22e 100644 --- a/addons/web/static/src/css/base.sass +++ b/addons/web/static/src/css/base.sass @@ -2730,6 +2730,7 @@ body.oe_single_form 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 diff --git a/addons/web/static/src/js/chrome.js b/addons/web/static/src/js/chrome.js index 1ea14ee8c81..82f1726dcc6 100644 --- a/addons/web/static/src/js/chrome.js +++ b/addons/web/static/src/js/chrome.js @@ -183,6 +183,7 @@ instance.web.Dialog = instance.web.Widget.extend({ */ 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; diff --git a/addons/web/static/src/js/core.js b/addons/web/static/src/js/core.js index 29f6c3e4d9e..23645e22bf1 100644 --- a/addons/web/static/src/js/core.js +++ b/addons/web/static/src/js/core.js @@ -773,15 +773,18 @@ instance.web.unblockUI = function() { $.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); }; /** diff --git a/addons/web/static/src/js/view_form.js b/addons/web/static/src/js/view_form.js index 1c75f341436..84169e125a5 100644 --- a/addons/web/static/src/js/view_form.js +++ b/addons/web/static/src/js/view_form.js @@ -1869,25 +1869,9 @@ instance.web.form.FormWidget = instance.web.Widget.extend(instance.web.form.Invi 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)) { diff --git a/addons/web_kanban/static/src/js/kanban.js b/addons/web_kanban/static/src/js/kanban.js index 91641216c44..ff9d464e7ed 100644 --- a/addons/web_kanban/static/src/js/kanban.js +++ b/addons/web_kanban/static/src/js/kanban.js @@ -926,10 +926,6 @@ instance.web_kanban.KanbanRecord = instance.web.Widget.extend({ 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),