- Timestamp:
- Apr 21, 2020 9:55:16 AM (5 years ago)
- svn:sync-xref-src-repo-rev:
- 137412
- 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 669 669 if (model()->isGroupSavingInProgress()) 670 670 return false; 671 /* Get mime: */672 const QMimeData *pMimeData = pEvent->mimeData();673 671 /* If drag token is shown, its up to parent to decide: */ 674 672 if (where != UIChooserItemDragToken_Off) 675 673 return parentItem()->isDropAllowed(pEvent); 674 676 675 /* Else we should check mime format: */ 676 const QMimeData *pMimeData = pEvent->mimeData(); 677 677 if (pMimeData->hasFormat(UIChooserItemGroup::className())) 678 678 { … … 681 681 AssertMsg(pCastedMimeData, ("Can't cast passed mime-data to UIChooserItemMimeData!")); 682 682 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)) 686 688 return false; 687 689 /* Make sure passed group is not 'this': */ … … 689 691 return false; 690 692 /* Make sure passed group is not among our parents: */ 691 const UIChooserItem *pTested Widget= this;692 while (UIChooserItem *pParentOfTestedWidget = pTested Widget->parentItem())693 const UIChooserItem *pTestedItem = this; 694 while (UIChooserItem *pParentOfTestedWidget = pTestedItem->parentItem()) 693 695 { 694 696 if (pItem == pParentOfTestedWidget) 695 697 return false; 696 pTestedWidget = pParentOfTestedWidget; 697 } 698 pTestedItem = pParentOfTestedWidget; 699 } 700 701 /* Allow finally: */ 698 702 return true; 699 703 } … … 704 708 AssertMsg(pCastedMimeData, ("Can't cast passed mime-data to UIChooserItemMimeData!")); 705 709 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)) 709 715 return false; 710 716 switch (pEvent->proposedAction()) … … 713 719 { 714 720 /* Make sure passed item is ours or there is no other item with such id: */ 715 return m_machineItems.contains(pItem) || !isContainsMachine(p Item->toMachineItem()->id());721 return m_machineItems.contains(pItem) || !isContainsMachine(pMachineItem->id()); 716 722 } 717 723 case Qt::CopyAction: 718 724 { 719 725 /* Make sure there is no other item with such id: */ 720 return !isContainsMachine(p Item->toMachineItem()->id());726 return !isContainsMachine(pMachineItem->id()); 721 727 } 722 default: break; /* Shut up, MSC! */ 728 default: 729 break; 723 730 } 724 731 } -
trunk/src/VBox/Frontends/VirtualBox/src/manager/chooser/UIChooserItemMachine.cpp
r83673 r83883 373 373 if (model()->isGroupSavingInProgress()) 374 374 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 375 379 /* No drops for immutable item: */ 376 380 if (isLockedMachine()) 377 381 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: */ 384 383 if (!accessible()) 385 384 return false; 385 386 386 /* Else we should try to cast mime to known classes: */ 387 const QMimeData *pMimeData = pEvent->mimeData(); 387 388 if (pMimeData->hasFormat(UIChooserItemMachine::className())) 388 389 { 389 /* Make sure passed item id is not ours: */390 /* Get passed machine-item: */ 390 391 const UIChooserItemMimeData *pCastedMimeData = qobject_cast<const UIChooserItemMimeData*>(pMimeData); 391 392 AssertMsg(pCastedMimeData, ("Can't cast passed mime-data to UIChooserItemMimeData!")); 392 393 UIChooserItem *pItem = pCastedMimeData->item(); 393 394 UIChooserItemMachine *pMachineItem = pItem->toMachineItem(); 394 /* Make sure passed machine is mutable: */ 395 396 /* No drops for immutable item: */ 395 397 if (pMachineItem->isLockedMachine()) 396 398 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; 398 405 } 399 406 /* That was invalid mime: */
Note:
See TracChangeset
for help on using the changeset viewer.