Skip to content

Commit

Permalink
Disabled moving contour when an element is moved. Refs #14175
Browse files Browse the repository at this point in the history
  • Loading branch information
palvarezlopez committed Jan 5, 2024
1 parent 9c28754 commit 6824808
Show file tree
Hide file tree
Showing 23 changed files with 64 additions and 36 deletions.
6 changes: 6 additions & 0 deletions src/netedit/GNEViewNet.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -1956,6 +1956,12 @@ GNEViewNet::drawTranslateFrontAttributeCarrier(const GNEAttributeCarrier* AC, do
}


bool
GNEViewNet::isMovingElement() const {
return myMoveSingleElementValues.isMovingElements() || myMoveMultipleElementValues.isMovingElements();
}


bool
GNEViewNet::checkOverLockedElement(const GUIGlObject* GLObject, const bool isSelected) const {
// check if elemet is blocked
Expand Down
3 changes: 3 additions & 0 deletions src/netedit/GNEViewNet.h
Original file line number Diff line number Diff line change
Expand Up @@ -534,6 +534,9 @@ class GNEViewNet : public GUISUMOAbstractView {
/// @brief draw front attributeCarrier
void drawTranslateFrontAttributeCarrier(const GNEAttributeCarrier* AC, double typeOrLayer, const double extraOffset = 0);

/// @brief check if an element is being moved
bool isMovingElement() const;

/// @brief check if given element is locked (used for drawing select and delete contour)
bool checkOverLockedElement(const GUIGlObject* GLObject, const bool isSelected) const;

Expand Down
12 changes: 12 additions & 0 deletions src/netedit/GNEViewNetHelper.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -1301,6 +1301,12 @@ GNEViewNetHelper::MoveSingleElementValues::finishMoveSingleElement() {
}


bool
GNEViewNetHelper::MoveSingleElementValues::isMovingElements() const {
return myMoveOperations.size() > 0;
}


const GNEMoveOffset
GNEViewNetHelper::MoveSingleElementValues::calculateMoveOffset() const {
// calculate moveOffset depending of current mouse position and relative clicked position
Expand Down Expand Up @@ -1412,6 +1418,12 @@ GNEViewNetHelper::MoveMultipleElementValues::getEdgeOffset() const {
}


bool
GNEViewNetHelper::MoveMultipleElementValues::isMovingElements() const {
return myMoveOperations.size() > 0;
}


const GNEMoveOffset
GNEViewNetHelper::MoveMultipleElementValues::calculateMoveOffset() const {
// calculate moveOffset depending of current mouse position and relative clicked position
Expand Down
6 changes: 6 additions & 0 deletions src/netedit/GNEViewNetHelper.h
Original file line number Diff line number Diff line change
Expand Up @@ -1028,6 +1028,9 @@ struct GNEViewNetHelper {
/// @brief finish moving single elements in Network AND Demand mode
void finishMoveSingleElement();

/// @brief check if there are moving elements
bool isMovingElements() const;

protected:
/// @brief calculate offset
const GNEMoveOffset calculateMoveOffset() const;
Expand Down Expand Up @@ -1070,6 +1073,9 @@ struct GNEViewNetHelper {
/// @brief edge offset
double getEdgeOffset() const;

/// @brief check if there are moving elements
bool isMovingElements() const;

protected:
/// @brief calculate move offset
const GNEMoveOffset calculateMoveOffset() const;
Expand Down
4 changes: 2 additions & 2 deletions src/netedit/elements/additional/GNEAccess.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -191,8 +191,8 @@ GNEAccess::checkDrawMoveContour() const {
// get edit modes
const auto& editModes = myNet->getViewNet()->getEditModes();
// check if we're in move mode
if (editModes.isCurrentSupermodeNetwork() && (editModes.networkEditMode == NetworkEditMode::NETWORK_MOVE) &&
myNet->getViewNet()->checkOverLockedElement(this, mySelected)) {
if (!myNet->getViewNet()->isMovingElement() && editModes.isCurrentSupermodeNetwork() &&
(editModes.networkEditMode == NetworkEditMode::NETWORK_MOVE) && myNet->getViewNet()->checkOverLockedElement(this, mySelected)) {
// only move the first element
return myNet->getViewNet()->getViewObjectsSelector().getGUIGlObjectFront() == this;
} else {
Expand Down
4 changes: 2 additions & 2 deletions src/netedit/elements/additional/GNECalibrator.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -272,8 +272,8 @@ GNECalibrator::checkDrawMoveContour() const {
// get edit modes
const auto& editModes = myNet->getViewNet()->getEditModes();
// check if we're in move mode
if (editModes.isCurrentSupermodeNetwork() && (editModes.networkEditMode == NetworkEditMode::NETWORK_MOVE) &&
myNet->getViewNet()->checkOverLockedElement(this, mySelected)) {
if (!myNet->getViewNet()->isMovingElement() && editModes.isCurrentSupermodeNetwork() &&
(editModes.networkEditMode == NetworkEditMode::NETWORK_MOVE) && myNet->getViewNet()->checkOverLockedElement(this, mySelected)) {
// only move the first element
return myNet->getViewNet()->getViewObjectsSelector().getGUIGlObjectFront() == this;
} else {
Expand Down
4 changes: 2 additions & 2 deletions src/netedit/elements/additional/GNEDetector.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -90,8 +90,8 @@ GNEDetector::checkDrawMoveContour() const {
// get edit modes
const auto& editModes = myNet->getViewNet()->getEditModes();
// check if we're in move mode
if (editModes.isCurrentSupermodeNetwork() && (editModes.networkEditMode == NetworkEditMode::NETWORK_MOVE) &&
myNet->getViewNet()->checkOverLockedElement(this, mySelected)) {
if (!myNet->getViewNet()->isMovingElement() && editModes.isCurrentSupermodeNetwork() &&
(editModes.networkEditMode == NetworkEditMode::NETWORK_MOVE) && myNet->getViewNet()->checkOverLockedElement(this, mySelected)) {
// only move the first element
return myNet->getViewNet()->getViewObjectsSelector().getGUIGlObjectFront() == this;
} else {
Expand Down
4 changes: 2 additions & 2 deletions src/netedit/elements/additional/GNEMultiEntryExitDetector.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -140,8 +140,8 @@ GNEMultiEntryExitDetector::checkDrawMoveContour() const {
// get edit modes
const auto& editModes = myNet->getViewNet()->getEditModes();
// check if we're in move mode
if (editModes.isCurrentSupermodeNetwork() && (editModes.networkEditMode == NetworkEditMode::NETWORK_MOVE) &&
myNet->getViewNet()->checkOverLockedElement(this, mySelected)) {
if (!myNet->getViewNet()->isMovingElement() && editModes.isCurrentSupermodeNetwork() &&
(editModes.networkEditMode == NetworkEditMode::NETWORK_MOVE) && myNet->getViewNet()->checkOverLockedElement(this, mySelected)) {
// only move the first element
return myNet->getViewNet()->getViewObjectsSelector().getGUIGlObjectFront() == this;
} else {
Expand Down
4 changes: 2 additions & 2 deletions src/netedit/elements/additional/GNEPOI.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -304,8 +304,8 @@ GNEPOI::checkDrawMoveContour() const {
// get edit modes
const auto& editModes = myNet->getViewNet()->getEditModes();
// check if we're in move mode
if (editModes.isCurrentSupermodeNetwork() && (editModes.networkEditMode == NetworkEditMode::NETWORK_MOVE) &&
myNet->getViewNet()->checkOverLockedElement(this, mySelected)) {
if (!myNet->getViewNet()->isMovingElement() && editModes.isCurrentSupermodeNetwork() &&
(editModes.networkEditMode == NetworkEditMode::NETWORK_MOVE) && myNet->getViewNet()->checkOverLockedElement(this, mySelected)) {
// only move the first element
return myNet->getViewNet()->getViewObjectsSelector().getGUIGlObjectFront() == this;
} else {
Expand Down
4 changes: 2 additions & 2 deletions src/netedit/elements/additional/GNEParkingSpace.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -138,8 +138,8 @@ GNEParkingSpace::checkDrawMoveContour() const {
// get edit modes
const auto& editModes = myNet->getViewNet()->getEditModes();
// check if we're in move mode
if (editModes.isCurrentSupermodeNetwork() && (editModes.networkEditMode == NetworkEditMode::NETWORK_MOVE) &&
myNet->getViewNet()->checkOverLockedElement(this, mySelected)) {
if (!myNet->getViewNet()->isMovingElement() && editModes.isCurrentSupermodeNetwork() &&
(editModes.networkEditMode == NetworkEditMode::NETWORK_MOVE) && myNet->getViewNet()->checkOverLockedElement(this, mySelected)) {
// only move the first element
return myNet->getViewNet()->getViewObjectsSelector().getGUIGlObjectFront() == this;
} else {
Expand Down
4 changes: 2 additions & 2 deletions src/netedit/elements/additional/GNEPoly.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -233,8 +233,8 @@ GNEPoly::checkDrawMoveContour() const {
// get edit modes
const auto& editModes = myNet->getViewNet()->getEditModes();
// check if we're in move mode
if (editModes.isCurrentSupermodeNetwork() && (editModes.networkEditMode == NetworkEditMode::NETWORK_MOVE) &&
myNet->getViewNet()->checkOverLockedElement(this, mySelected)) {
if (!myNet->getViewNet()->isMovingElement() && editModes.isCurrentSupermodeNetwork() &&
(editModes.networkEditMode == NetworkEditMode::NETWORK_MOVE) && myNet->getViewNet()->checkOverLockedElement(this, mySelected)) {
// only move the first element
return myNet->getViewNet()->getViewObjectsSelector().getGUIGlObjectFront() == this;
} else {
Expand Down
4 changes: 2 additions & 2 deletions src/netedit/elements/additional/GNERerouter.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -118,8 +118,8 @@ GNERerouter::checkDrawMoveContour() const {
// get edit modes
const auto& editModes = myNet->getViewNet()->getEditModes();
// check if we're in move mode
if (editModes.isCurrentSupermodeNetwork() && (editModes.networkEditMode == NetworkEditMode::NETWORK_MOVE) &&
myNet->getViewNet()->checkOverLockedElement(this, mySelected)) {
if (!myNet->getViewNet()->isMovingElement() && editModes.isCurrentSupermodeNetwork() &&
(editModes.networkEditMode == NetworkEditMode::NETWORK_MOVE) && myNet->getViewNet()->checkOverLockedElement(this, mySelected)) {
// only move the first element
return myNet->getViewNet()->getViewObjectsSelector().getGUIGlObjectFront() == this;
} else {
Expand Down
4 changes: 2 additions & 2 deletions src/netedit/elements/additional/GNERerouterSymbol.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -86,8 +86,8 @@ GNERerouterSymbol::checkDrawMoveContour() const {
// get edit modes
const auto& editModes = myNet->getViewNet()->getEditModes();
// check if we're in move mode
if (editModes.isCurrentSupermodeNetwork() && (editModes.networkEditMode == NetworkEditMode::NETWORK_MOVE) &&
myNet->getViewNet()->checkOverLockedElement(this, mySelected)) {
if (!myNet->getViewNet()->isMovingElement() && editModes.isCurrentSupermodeNetwork() &&
(editModes.networkEditMode == NetworkEditMode::NETWORK_MOVE) && myNet->getViewNet()->checkOverLockedElement(this, mySelected)) {
// only move the first element
return myNet->getViewNet()->getViewObjectsSelector().getGUIGlObjectFront() == this;
} else {
Expand Down
4 changes: 2 additions & 2 deletions src/netedit/elements/additional/GNEStoppingPlace.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -158,8 +158,8 @@ GNEStoppingPlace::checkDrawMoveContour() const {
// get edit modes
const auto& editModes = myNet->getViewNet()->getEditModes();
// check if we're in move mode
if (editModes.isCurrentSupermodeNetwork() && (editModes.networkEditMode == NetworkEditMode::NETWORK_MOVE) &&
myNet->getViewNet()->checkOverLockedElement(this, mySelected)) {
if (!myNet->getViewNet()->isMovingElement() && editModes.isCurrentSupermodeNetwork() &&
(editModes.networkEditMode == NetworkEditMode::NETWORK_MOVE) && myNet->getViewNet()->checkOverLockedElement(this, mySelected)) {
// only move the first element
return myNet->getViewNet()->getViewObjectsSelector().getGUIGlObjectFront() == this;
} else {
Expand Down
4 changes: 2 additions & 2 deletions src/netedit/elements/additional/GNETAZ.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -205,8 +205,8 @@ GNETAZ::checkDrawMoveContour() const {
// get edit modes
const auto& editModes = myNet->getViewNet()->getEditModes();
// check if we're in move mode
if (editModes.isCurrentSupermodeNetwork() && (editModes.networkEditMode == NetworkEditMode::NETWORK_MOVE) &&
myNet->getViewNet()->checkOverLockedElement(this, mySelected)) {
if (!myNet->getViewNet()->isMovingElement() && editModes.isCurrentSupermodeNetwork() &&
(editModes.networkEditMode == NetworkEditMode::NETWORK_MOVE) && myNet->getViewNet()->checkOverLockedElement(this, mySelected)) {
// only move the first element
return myNet->getViewNet()->getViewObjectsSelector().getGUIGlObjectFront() == this;
} else {
Expand Down
4 changes: 2 additions & 2 deletions src/netedit/elements/additional/GNETractionSubstation.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -96,8 +96,8 @@ GNETractionSubstation::checkDrawMoveContour() const {
// get edit modes
const auto& editModes = myNet->getViewNet()->getEditModes();
// check if we're in move mode
if (editModes.isCurrentSupermodeNetwork() && (editModes.networkEditMode == NetworkEditMode::NETWORK_MOVE) &&
myNet->getViewNet()->checkOverLockedElement(this, mySelected)) {
if (!myNet->getViewNet()->isMovingElement() && editModes.isCurrentSupermodeNetwork() &&
(editModes.networkEditMode == NetworkEditMode::NETWORK_MOVE) && myNet->getViewNet()->checkOverLockedElement(this, mySelected)) {
// only move the first element
return myNet->getViewNet()->getViewObjectsSelector().getGUIGlObjectFront() == this;
} else {
Expand Down
4 changes: 2 additions & 2 deletions src/netedit/elements/additional/GNEVariableSpeedSign.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -156,8 +156,8 @@ GNEVariableSpeedSign::checkDrawMoveContour() const {
// get edit modes
const auto& editModes = myNet->getViewNet()->getEditModes();
// check if we're in move mode
if (editModes.isCurrentSupermodeNetwork() && (editModes.networkEditMode == NetworkEditMode::NETWORK_MOVE) &&
myNet->getViewNet()->checkOverLockedElement(this, mySelected)) {
if (!myNet->getViewNet()->isMovingElement() && editModes.isCurrentSupermodeNetwork() &&
(editModes.networkEditMode == NetworkEditMode::NETWORK_MOVE) && myNet->getViewNet()->checkOverLockedElement(this, mySelected)) {
// only move the first element
return myNet->getViewNet()->getViewObjectsSelector().getGUIGlObjectFront() == this;
} else {
Expand Down
4 changes: 2 additions & 2 deletions src/netedit/elements/demand/GNEDemandElement.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -241,8 +241,8 @@ GNEDemandElement::checkDrawMoveContour() const {
// get edit modes
const auto& editModes = myNet->getViewNet()->getEditModes();
// check if we're in select mode
if (editModes.isCurrentSupermodeDemand() && (editModes.demandEditMode == DemandEditMode::DEMAND_MOVE) &&
myNet->getViewNet()->checkOverLockedElement(this, mySelected)) {
if (!myNet->getViewNet()->isMovingElement() && editModes.isCurrentSupermodeDemand() &&
(editModes.demandEditMode == DemandEditMode::DEMAND_MOVE) && myNet->getViewNet()->checkOverLockedElement(this, mySelected)) {
// only move the first element
return myNet->getViewNet()->getViewObjectsSelector().getGUIGlObjectFront() == this;
} else {
Expand Down
4 changes: 2 additions & 2 deletions src/netedit/elements/network/GNEConnection.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -204,8 +204,8 @@ GNEConnection::checkDrawMoveContour() const {
// get edit modes
const auto& editModes = myNet->getViewNet()->getEditModes();
// check if we're in move mode
if (editModes.isCurrentSupermodeNetwork() && (editModes.networkEditMode == NetworkEditMode::NETWORK_MOVE) &&
myNet->getViewNet()->checkOverLockedElement(this, mySelected)) {
if (!myNet->getViewNet()->isMovingElement() && editModes.isCurrentSupermodeNetwork() &&
(editModes.networkEditMode == NetworkEditMode::NETWORK_MOVE) && myNet->getViewNet()->checkOverLockedElement(this, mySelected)) {
// only move the first element
return myNet->getViewNet()->getViewObjectsSelector().getGUIGlObjectFront() == this;
} else {
Expand Down
4 changes: 2 additions & 2 deletions src/netedit/elements/network/GNECrossing.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -152,8 +152,8 @@ GNECrossing::checkDrawMoveContour() const {
// get edit modes
const auto& editModes = myNet->getViewNet()->getEditModes();
// check if we're in move mode
if (editModes.isCurrentSupermodeNetwork() && (editModes.networkEditMode == NetworkEditMode::NETWORK_MOVE) &&
myNet->getViewNet()->checkOverLockedElement(this, mySelected)) {
if (!myNet->getViewNet()->isMovingElement() && editModes.isCurrentSupermodeNetwork() &&
(editModes.networkEditMode == NetworkEditMode::NETWORK_MOVE) && myNet->getViewNet()->checkOverLockedElement(this, mySelected)) {
// only move the first element
return myNet->getViewNet()->getViewObjectsSelector().getGUIGlObjectFront() == this;
} else {
Expand Down
3 changes: 2 additions & 1 deletion src/netedit/elements/network/GNEEdge.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -359,7 +359,8 @@ GNEEdge::checkDrawMoveContour() const {
// get edit modes
const auto& editModes = myNet->getViewNet()->getEditModes();
// check if we're in move mode
if (editModes.isCurrentSupermodeNetwork() && (editModes.networkEditMode == NetworkEditMode::NETWORK_MOVE)) {
if (!myNet->getViewNet()->isMovingElement() && editModes.isCurrentSupermodeNetwork() &&
(editModes.networkEditMode == NetworkEditMode::NETWORK_MOVE)) {
// check lanes
for (const auto &lane : myLanes) {
if (myNet->getViewNet()->checkOverLockedElement(lane, mySelected) &&
Expand Down
4 changes: 2 additions & 2 deletions src/netedit/elements/network/GNEJunction.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -327,8 +327,8 @@ GNEJunction::checkDrawMoveContour() const {
// get edit modes
const auto& editModes = myNet->getViewNet()->getEditModes();
// check if we're in move mode
if (editModes.isCurrentSupermodeNetwork() && (editModes.networkEditMode == NetworkEditMode::NETWORK_MOVE) &&
myNet->getViewNet()->checkOverLockedElement(this, mySelected)) {
if (!myNet->getViewNet()->isMovingElement() && editModes.isCurrentSupermodeNetwork() &&
(editModes.networkEditMode == NetworkEditMode::NETWORK_MOVE) && myNet->getViewNet()->checkOverLockedElement(this, mySelected)) {
// only move the first element
return myNet->getViewNet()->getViewObjectsSelector().getGUIGlObjectFront() == this;
} else {
Expand Down
2 changes: 1 addition & 1 deletion src/netedit/elements/network/GNELane.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -423,7 +423,7 @@ GNELane::checkDrawSelectContour() const {
bool
GNELane::checkDrawMoveContour() const {
// only move if shape is being edited
if (myShapeEdited) {
if (myShapeEdited && !myNet->getViewNet()->isMovingElement()) {
return myNet->getViewNet()->getViewObjectsSelector().getGUIGlObjectFront() == this;
} else {
return false;
Expand Down

0 comments on commit 6824808

Please sign in to comment.