@Override
protected boolean shouldDeactivate(ComponentEvent ce) {
if (super.shouldDeactivate(ce)) {
if (subMenu != null && subMenu.isVisible()) {
Rectangle rec = subMenu.el().getBounds();
if (subMenu.getShadow() && subMenu.getShadowPosition() != null) {
switch (subMenu.getShadowPosition()) {
case DROP:
rec.width += subMenu.getShadowOffset();
rec.height += subMenu.getShadowOffset();
break;
case FRAME:
rec.width += subMenu.getShadowOffset();
rec.height += subMenu.getShadowOffset();
rec.x -= subMenu.getShadowOffset();
rec.y -= subMenu.getShadowOffset();
break;
case SIDES:
rec.width += subMenu.getShadowOffset();
rec.height += subMenu.getShadowOffset();
rec.x -= subMenu.getShadowOffset();
break;
}
}
return !rec.contains(ce.getXY());
}
}
return true;
}