diff --git a/src/netedit/GNEViewNetHelper.cpp b/src/netedit/GNEViewNetHelper.cpp index 59683e3a5677..b027610f496c 100644 --- a/src/netedit/GNEViewNetHelper.cpp +++ b/src/netedit/GNEViewNetHelper.cpp @@ -381,17 +381,30 @@ GNEViewNetHelper::ViewObjectsSelector::updateObjects() { } +void +GNEViewNetHelper::ViewObjectsSelector::filterAllExcept(GUIGlObjectType exception) { + // get all elements to filter + std::vector glElements; + for (const auto& glElement : myViewObjects.GUIGlObjects) { + if (glElement->getType() != exception) { + glElements.push_back(glElement); + } + } + myViewObjects.filterElements(glElements); +} + + void GNEViewNetHelper::ViewObjectsSelector::filterBySuperMode() { if (myViewNet->getEditModes().isCurrentSupermodeNetwork()) { filterDemandElements(true); filterDataElements(); } else if (myViewNet->getEditModes().isCurrentSupermodeDemand()) { - filterNetworkElements(true); + filterNetworkElements(); filterAdditionals(true, true); filterDataElements(); } else if (myViewNet->getEditModes().isCurrentSupermodeData()) { - filterNetworkElements(true); + filterNetworkElements(); filterDemandElements(true); } } @@ -495,15 +508,10 @@ GNEViewNetHelper::ViewObjectsSelector::filterAdditionals(const bool includeStopp void -GNEViewNetHelper::ViewObjectsSelector::filterNetworkElements(const bool includeJunctions) { +GNEViewNetHelper::ViewObjectsSelector::filterNetworkElements() { // get all elements to filter std::vector networkElements; for (const auto& networkElement : myViewObjects.networkElements) { - if (!includeJunctions && (networkElement->getType() == GLO_JUNCTION)) { - continue; - } else { - networkElements.push_back(networkElement); - } networkElements.push_back(networkElement); } myViewObjects.filterElements(networkElements); diff --git a/src/netedit/GNEViewNetHelper.h b/src/netedit/GNEViewNetHelper.h index 3a5499592f2c..c7b9bcef57f0 100644 --- a/src/netedit/GNEViewNetHelper.h +++ b/src/netedit/GNEViewNetHelper.h @@ -332,6 +332,9 @@ struct GNEViewNetHelper { /// @brief update objects (using gViewObjectsHandler) void updateObjects(); + /// @brief filter all elements except the given GLO type + void filterAllExcept(GUIGlObjectType exception); + /// @brief filter by supermode void filterBySuperMode(); @@ -360,7 +363,7 @@ struct GNEViewNetHelper { void filterAdditionals(const bool includeStoppigPlaces, const bool includeTAZs); /// @brief filter (remove) network elements - void filterNetworkElements(const bool includeJunctions); + void filterNetworkElements(); /// @brief filter (remove) demand elements void filterDemandElements(const bool includeRoutes); diff --git a/src/netedit/frames/GNEOverlappedInspection.cpp b/src/netedit/frames/GNEOverlappedInspection.cpp index 781485d24b62..b344b93386f2 100644 --- a/src/netedit/frames/GNEOverlappedInspection.cpp +++ b/src/netedit/frames/GNEOverlappedInspection.cpp @@ -50,7 +50,7 @@ FXIMPLEMENT(GNEOverlappedInspection, MFXGroupBoxModule, OverlappedInsp // =========================================================================== GNEOverlappedInspection::GNEOverlappedInspection(GNEFrame* frameParent, const bool onlyJunctions) : - MFXGroupBoxModule(frameParent, myOnlyJunctions? TL("Overlapped junctions") : TL("Overlapped elements")), + MFXGroupBoxModule(frameParent, onlyJunctions? TL("Overlapped junctions") : TL("Overlapped elements")), myFrameParent(frameParent), myOnlyJunctions(onlyJunctions) { FXHorizontalFrame* frameButtons = new FXHorizontalFrame(getCollapsableFrame(), GUIDesignAuxiliarHorizontalFrame); @@ -66,6 +66,8 @@ GNEOverlappedInspection::GNEOverlappedInspection(GNEFrame* frameParent, const bo myOverlappedElementList->hide(); // Create help button myHelpButton = GUIDesigns::buildFXButton(getCollapsableFrame(), TL("Help"), "", "", nullptr, this, MID_HELP, GUIDesignButtonRectangular); + // by default hidden + hide(); } @@ -74,15 +76,16 @@ GNEOverlappedInspection::~GNEOverlappedInspection() {} void GNEOverlappedInspection::showOverlappedInspection(GNEViewNetHelper::ViewObjectsSelector& viewObjects, const Position &clickedPosition, const bool shiftKeyPressed) { - // filtger edges if we clicked over a lane - if (viewObjects.getAttributeCarrierFront() && viewObjects.getAttributeCarrierFront() == viewObjects.getLaneFront()) { - viewObjects.filterEdges(); - } - // filter by supermode - viewObjects.filterBySuperMode(); // check if filter all except junctions if (myOnlyJunctions) { - viewObjects.filterNetworkElements(false); + viewObjects.filterAllExcept(GLO_JUNCTION); + } else { + // filter by supermode + viewObjects.filterBySuperMode(); + // filtger edges if we clicked over a lane + if (viewObjects.getAttributeCarrierFront() && viewObjects.getAttributeCarrierFront() == viewObjects.getLaneFront()) { + viewObjects.filterEdges(); + } } // in this point, check if we want to iterate over existent overlapped inspection, or we want to inspet a new set of elements if ((myClickedPosition != Position::INVALID) && (myClickedPosition.distanceSquaredTo(clickedPosition) < 1)) { @@ -94,6 +97,7 @@ GNEOverlappedInspection::showOverlappedInspection(GNEViewNetHelper::ViewObjectsS } else { myOverlappedACs = viewObjects.getAttributeCarriers(); myItemIndex = 0; + myOverlappedElementList->hide(); } // update clicked position and refresh overlapped inspection myClickedPosition = clickedPosition; @@ -159,7 +163,7 @@ GNEOverlappedInspection::onCmdInspectPreviousElement(FXObject*, FXSelector, void if (myItemIndex > 0) { myItemIndex--; } else { - myItemIndex = (myOverlappedACs.size() - 1); + myItemIndex = ((int)myOverlappedACs.size() - 1); } refreshOverlappedInspection(); } @@ -225,7 +229,7 @@ GNEOverlappedInspection::onCmdOverlappingHelp(FXObject*, FXSelector, void*) { // "OK" GUIDesigns::buildFXButton(helpDialog, TL("OK"), "", TL("close"), GUIIconSubSys::getIcon(GUIIcon::ACCEPT), helpDialog, FXDialogBox::ID_ACCEPT, GUIDesignButtonOK); helpDialog->create(); - helpDialog->show(); + helpDialog->show(PLACEMENT_SCREEN); return 1; } diff --git a/src/netedit/frames/GNEOverlappedInspection.h b/src/netedit/frames/GNEOverlappedInspection.h index 0cb58e6f98ba..b089039dfcc0 100644 --- a/src/netedit/frames/GNEOverlappedInspection.h +++ b/src/netedit/frames/GNEOverlappedInspection.h @@ -111,5 +111,5 @@ class GNEOverlappedInspection : public MFXGroupBoxModule { std::vector myOverlappedACs; /// @brief current index item - size_t myItemIndex = 0; + int myItemIndex = 0; }; diff --git a/src/netedit/frames/common/GNEInspectorFrame.cpp b/src/netedit/frames/common/GNEInspectorFrame.cpp index c6db2a6dea4d..485cce166cdf 100644 --- a/src/netedit/frames/common/GNEInspectorFrame.cpp +++ b/src/netedit/frames/common/GNEInspectorFrame.cpp @@ -356,8 +356,8 @@ GNEInspectorFrame::inspectElements(const std::vector& ACs, void GNEInspectorFrame::clearInspection() { - myViewNet->getInspectedElements().clearInspectedElements(); - refreshInspection(); + // simply clear overlapped inspection (it refresh inspector frame) + myOverlappedInspection->clearOverlappedInspection(); }