diff --git a/addons/barcodes/static/src/js/inherited_form_widget_button.js b/addons/barcodes/static/src/js/inherited_form_widget_button.js
index bf2ea1bbd35983c91792d4d778905db07a3f3407..79cf6deb8234daa20266098a2b58ca370f053d37 100644
--- a/addons/barcodes/static/src/js/inherited_form_widget_button.js
+++ b/addons/barcodes/static/src/js/inherited_form_widget_button.js
@@ -15,7 +15,8 @@ var ButtonBarcodeHandlerMixin = _.extend({}, BarcodeHandlerMixin, {
             var self = this;
             this.on_barcode_scanned = function(barcode) {
                 var match = barcode.match(/O-BTN\.(.+)/);
-                if (match && match[1] === self.node.attrs.barcode_trigger && self.$el.is(':visible')) {
+                if (match && match[1] === self.node.attrs.barcode_trigger &&
+                    (self.$el.is(':visible') || self.$el.parent('.dropdown-menu'))) {
                     self.on_click();
                 }
             };