VirtualBox

Changeset 83883 in vbox for trunk


Ignore:
Timestamp:
Apr 21, 2020 9:55:16 AM (5 years ago)
Author:
vboxsync
svn:sync-xref-src-repo-rev:
137412
Message:

FE/Qt: bugref:9653: VirtualBox Manager: Chooser pane: Cleanup for local VM drag&drop functionality.

Location:
trunk/src/VBox/Frontends/VirtualBox/src/manager/chooser
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/VBox/Frontends/VirtualBox/src/manager/chooser/UIChooserItemGroup.cpp

    r83672 r83883  
    669669    if (model()->isGroupSavingInProgress())
    670670        return false;
    671     /* Get mime: */
    672     const QMimeData *pMimeData = pEvent->mimeData();
    673671    /* If drag token is shown, its up to parent to decide: */
    674672    if (where != UIChooserItemDragToken_Off)
    675673        return parentItem()->isDropAllowed(pEvent);
     674
    676675    /* Else we should check mime format: */
     676    const QMimeData *pMimeData = pEvent->mimeData();
    677677    if (pMimeData->hasFormat(UIChooserItemGroup::className()))
    678678    {
     
    681681        AssertMsg(pCastedMimeData, ("Can't cast passed mime-data to UIChooserItemMimeData!"));
    682682        UIChooserItem *pItem = pCastedMimeData->item();
    683         /* Make sure passed group is mutable within this group: */
    684         if (pItem->toGroupItem()->isContainsLockedMachine() &&
    685             !items(UIChooserNodeType_Group).contains(pItem))
     683        UIChooserItemGroup *pGroupItem = pItem->toGroupItem();
     684
     685        /* Make sure passed machine isn't immutable within own group: */
     686        if (   pGroupItem->isContainsLockedMachine()
     687            && !m_groupItems.contains(pItem))
    686688            return false;
    687689        /* Make sure passed group is not 'this': */
     
    689691            return false;
    690692        /* Make sure passed group is not among our parents: */
    691         const UIChooserItem *pTestedWidget = this;
    692         while (UIChooserItem *pParentOfTestedWidget = pTestedWidget->parentItem())
     693        const UIChooserItem *pTestedItem = this;
     694        while (UIChooserItem *pParentOfTestedWidget = pTestedItem->parentItem())
    693695        {
    694696            if (pItem == pParentOfTestedWidget)
    695697                return false;
    696             pTestedWidget = pParentOfTestedWidget;
    697         }
     698            pTestedItem = pParentOfTestedWidget;
     699        }
     700
     701        /* Allow finally: */
    698702        return true;
    699703    }
     
    704708        AssertMsg(pCastedMimeData, ("Can't cast passed mime-data to UIChooserItemMimeData!"));
    705709        UIChooserItem *pItem = pCastedMimeData->item();
    706         /* Make sure passed machine is mutable within this group: */
    707         if (pItem->toMachineItem()->isLockedMachine() &&
    708             !items(UIChooserNodeType_Machine).contains(pItem))
     710        UIChooserItemMachine *pMachineItem = pItem->toMachineItem();
     711
     712        /* Make sure passed machine isn't immutable within own group: */
     713        if (   pMachineItem->isLockedMachine()
     714            && !m_machineItems.contains(pItem))
    709715            return false;
    710716        switch (pEvent->proposedAction())
     
    713719            {
    714720                /* Make sure passed item is ours or there is no other item with such id: */
    715                 return m_machineItems.contains(pItem) || !isContainsMachine(pItem->toMachineItem()->id());
     721                return m_machineItems.contains(pItem) || !isContainsMachine(pMachineItem->id());
    716722            }
    717723            case Qt::CopyAction:
    718724            {
    719725                /* Make sure there is no other item with such id: */
    720                 return !isContainsMachine(pItem->toMachineItem()->id());
     726                return !isContainsMachine(pMachineItem->id());
    721727            }
    722             default: break; /* Shut up, MSC! */
     728            default:
     729                break;
    723730        }
    724731    }
  • trunk/src/VBox/Frontends/VirtualBox/src/manager/chooser/UIChooserItemMachine.cpp

    r83673 r83883  
    373373    if (model()->isGroupSavingInProgress())
    374374        return false;
     375    /* If drag token is shown, its up to parent to decide: */
     376    if (where != UIChooserItemDragToken_Off)
     377        return parentItem()->isDropAllowed(pEvent);
     378
    375379    /* No drops for immutable item: */
    376380    if (isLockedMachine())
    377381        return false;
    378     /* Get mime: */
    379     const QMimeData *pMimeData = pEvent->mimeData();
    380     /* If drag token is shown, its up to parent to decide: */
    381     if (where != UIChooserItemDragToken_Off)
    382         return parentItem()->isDropAllowed(pEvent);
    383     /* Else we should make sure machine is accessible: */
     382    /* No drops for inaccessible item: */
    384383    if (!accessible())
    385384        return false;
     385
    386386    /* Else we should try to cast mime to known classes: */
     387    const QMimeData *pMimeData = pEvent->mimeData();
    387388    if (pMimeData->hasFormat(UIChooserItemMachine::className()))
    388389    {
    389         /* Make sure passed item id is not ours: */
     390        /* Get passed machine-item: */
    390391        const UIChooserItemMimeData *pCastedMimeData = qobject_cast<const UIChooserItemMimeData*>(pMimeData);
    391392        AssertMsg(pCastedMimeData, ("Can't cast passed mime-data to UIChooserItemMimeData!"));
    392393        UIChooserItem *pItem = pCastedMimeData->item();
    393394        UIChooserItemMachine *pMachineItem = pItem->toMachineItem();
    394         /* Make sure passed machine is mutable: */
     395
     396        /* No drops for immutable item: */
    395397        if (pMachineItem->isLockedMachine())
    396398            return false;
    397         return pMachineItem->id() != id();
     399        /* No drops for the same item: */
     400        if (pMachineItem->id() == id())
     401            return false;
     402
     403        /* Allow finally: */
     404        return true;
    398405    }
    399406    /* That was invalid mime: */
Note: See TracChangeset for help on using the changeset viewer.

© 2025 Oracle Support Privacy / Do Not Sell My Info Terms of Use Trademark Policy Automated Access Etiquette