[FIX] web: fix tooltip that were stuck visible
authorCedric Snauwaert <csn@openerp.com>
Mon, 28 Jul 2014 15:07:47 +0000 (17:07 +0200)
committerCedric Snauwaert <csn@openerp.com>
Thu, 31 Jul 2014 15:33:27 +0000 (17:33 +0200)
tooltip stuck visible should be removed on click + remove tooltip container except for modal in order to prevent them for staying visible in some rare occasion

addons/web/static/src/js/chrome.js
addons/web/static/src/js/core.js
addons/web/static/src/js/view_form.js

index cd22f10..4dd5e9e 100644 (file)
@@ -115,6 +115,7 @@ instance.web.Dialog = instance.web.Widget.extend({
             this.init_dialog();
         }
         this.$buttons.insertAfter(this.$dialog_box.find(".modal-body"));
+        $('.tooltip').remove(); //remove open tooltip if any to prevent them staying when modal is opened
         //add to list of currently opened modal
         opened_modal.push(this.$dialog_box);
         return this;
@@ -1121,7 +1122,7 @@ instance.web.Client = instance.web.Widget.extend({
             }, 0);
         });
         instance.web.bus.on('click', this, function(ev) {
-            $.fn.tooltip('destroy');
+            $('.tooltip').remove();
             if (!$(ev.target).is('input[type=file]')) {
                 self.$el.find('.oe_dropdown_menu.oe_opened, .oe_dropdown_toggle.oe_opened').removeClass('oe_opened');
             }
index 23645e2..47e2a30 100644 (file)
@@ -772,7 +772,7 @@ instance.web.unblockUI = function() {
 /* Bootstrap defaults overwrite */
 $.fn.tooltip.Constructor.DEFAULTS.placement = 'auto top';
 $.fn.tooltip.Constructor.DEFAULTS.html = true;
-$.fn.tooltip.Constructor.DEFAULTS.container = 'body';
+$.fn.tooltip.Constructor.DEFAULTS.trigger = 'hover focus click';
 //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 () {
@@ -786,6 +786,18 @@ $.fn.tooltip.Constructor.prototype.show = function () {
     if (e.isDefaultPrevented() || !inDom) return;
     return bootstrap_show_function.call(this);
 };
+//overwrite bootstrap tooltip init method in order to check if tooltip is in a modal or not and
+//if so it needs to have a container body in order to be visible
+var bootstrap_init_tooltip_fnct = $.fn.tooltip.Constructor.prototype.init;
+$.fn.tooltip.Constructor.prototype.init = function (type, element, options) {
+    options = options || {}
+    if ($('.modal[aria-hidden="false"]').length !== 0){
+        if (options && !options.container){
+            options = _.extend({container: 'body'},options);
+        }
+    }
+    return bootstrap_init_tooltip_fnct.call(this, type, element, options);
+}
 
 /**
  * Registry for all the client actions key: tag value: widget
index 15a2aaa..5dc160f 100644 (file)
@@ -1871,7 +1871,6 @@ instance.web.form.FormWidget = instance.web.Widget.extend(instance.web.form.Invi
         trigger = trigger || this.$el;
         options = _.extend({
                 delay: { show: 500, hide: 0 },
-                trigger: 'hover',
                 title: function() {
                     var template = widget.template + '.tooltip';
                     if (!QWeb.has_template(template)) {