detect scene modifications (object translations for exemple) even if object controls are not visible

preferencesAboutTextFull
Clément Fauconnier 4 years ago
parent 6693da1818
commit c81138d9be
  1. 58
      src/domain/UBGraphicsItemDelegate.cpp
  2. 2
      src/domain/UBGraphicsScene.cpp

@ -274,37 +274,43 @@ UBGraphicsItemDelegate::~UBGraphicsItemDelegate()
QVariant UBGraphicsItemDelegate::itemChange(QGraphicsItem::GraphicsItemChange change, const QVariant &value)
{
UBGraphicsScene *ubScene = castUBGraphicsScene();
switch (static_cast<int>(change)) {
case QGraphicsItem::ItemSelectedHasChanged : {
if (ubScene) {
if (value.toBool()) { //selected(true)
ubScene->setSelectedZLevel(delegated());
} else {
ubScene->setOwnZlevel(delegated());
freeControls();
switch (static_cast<int>(change))
{
case QGraphicsItem::ItemSelectedHasChanged :
{
if (ubScene) {
if (value.toBool()) { //selected(true)
ubScene->setSelectedZLevel(delegated());
} else {
ubScene->setOwnZlevel(delegated());
freeControls();
}
}
break;
}
} break;
case QGraphicsItem::ItemVisibleHasChanged :
{
bool shownOnDisplay = mDelegated->data(UBGraphicsItemData::ItemLayerType).toInt() != UBItemLayerType::Control;
showHide(shownOnDisplay);
break;
}
case QGraphicsItem::ItemPositionHasChanged :
case QGraphicsItem::ItemTransformHasChanged :
case QGraphicsItem::ItemZValueHasChanged :
if (!controlsExist()) {
case QGraphicsItem::ItemVisibleHasChanged :
{
bool shownOnDisplay = mDelegated->data(UBGraphicsItemData::ItemLayerType).toInt() != UBItemLayerType::Control;
showHide(shownOnDisplay);
break;
}
mAntiScaleRatio = 1 / (UBApplication::boardController->systemScaleFactor() * UBApplication::boardController->currentZoom());
positionHandles();
if (ubScene) {
ubScene->setModified(true);
case QGraphicsItem::ItemPositionHasChanged :
case QGraphicsItem::ItemTransformHasChanged :
case QGraphicsItem::ItemZValueHasChanged :
{
if (ubScene)
{
ubScene->setModified(true);
}
if (controlsExist())
{
mAntiScaleRatio = 1 / (UBApplication::boardController->systemScaleFactor() * UBApplication::boardController->currentZoom());
positionHandles();
break;
}
break;
}
break;
}
return value;

@ -1295,7 +1295,9 @@ void UBGraphicsScene::updateSelectionFrame()
{
if (!mSelectionFrame) {
mSelectionFrame = new UBSelectionFrame();
bool sceneWasModified = isModified();
addItem(mSelectionFrame);
setModified(sceneWasModified);
}
QList<QGraphicsItem*> selItems = selectedItems();

Loading…
Cancel
Save