[FIX] web_editor: fix dropzones with invisible element

Before this commit, dropzones were created around invisible elements
(e.g. the snippet popup). So we had 2 dropzones instead of one at some
locations.

After this commit, we avoid creating dropzones around elements that
must not have dropzones.

task-2312878

closes odoo/odoo#65230

X-original-commit: ad56d50e3da000cacdc70d9230cad308d03680bf
Signed-off-by: Quentin Smetz (qsm) <qsm@odoo.com>
This commit is contained in:
Benjamin Vray
2021-01-28 17:08:05 +00:00
committed by qsm-odoo
parent 6e103621ba
commit f9bd3033b2
@@ -1351,16 +1351,26 @@ var SnippetsMenu = Widget.extend({
$selectorSiblings = $(_.uniq(($selectorSiblings || $()).add($selectorChildren.children()).get()));
}
var noDropZonesSelector = '[data-invisible="1"], .o_we_no_overlay, :not(:visible)';
if ($selectorSiblings) {
$selectorSiblings.not('.oe_drop_zone, .oe_drop_clone').each(function () {
$selectorSiblings.not(`.oe_drop_zone, .oe_drop_clone, ${noDropZonesSelector}`).each(function () {
var data;
var $zone = $(this);
var $zoneToCheck = $zone;
if (!$zone.prev('.oe_drop_zone:visible, .oe_drop_clone').length) {
while ($zoneToCheck.prev(noDropZonesSelector).length) {
$zoneToCheck = $zoneToCheck.prev();
}
if (!$zoneToCheck.prev('.oe_drop_zone:visible, .oe_drop_clone').length) {
data = setDropZoneDirection($zone, $zone.parent());
self._insertDropzone($('<we-hook/>').insertBefore($zone), data.vertical, data.style);
}
if (!$zone.next('.oe_drop_zone:visible, .oe_drop_clone').length) {
$zoneToCheck = $zone;
while ($zoneToCheck.next(noDropZonesSelector).length) {
$zoneToCheck = $zoneToCheck.next();
}
if (!$zoneToCheck.next('.oe_drop_zone:visible, .oe_drop_clone').length) {
data = setDropZoneDirection($zone, $zone.parent());
self._insertDropzone($('<we-hook/>').insertAfter($zone), data.vertical, data.style);
}