Sketcher: Incorporate comments from #20589

See https://github.com/FreeCAD/FreeCAD/pull/20589#pullrequestreview-2830404892.
This commit is contained in:
Ajinkya Dahale
2025-05-12 23:21:34 +05:30
committed by Benjamin Nauck
parent a280cacb93
commit 1cfb85a71f
2 changed files with 35 additions and 34 deletions

View File

@@ -2109,11 +2109,14 @@ int SketchObject::setConstruction(int GeoId, bool on)
return 0;
}
int SketchObject::toggleExternalGeometryFlag(const std::vector<int> &geoIds,
const std::vector<ExternalGeometryExtension::Flag> &flags)
// clang-format on
int SketchObject::toggleExternalGeometryFlag(
const std::vector<int>& geoIds,
const std::vector<ExternalGeometryExtension::Flag>& flags)
{
if (flags.empty())
if (flags.empty()) {
return 0;
}
auto flag = flags.front();
// no need to check input data validity as this is an sketchobject managed operation.
@@ -2124,10 +2127,10 @@ int SketchObject::toggleExternalGeometryFlag(const std::vector<int> &geoIds,
auto geos = ExternalGeo.getValues();
std::set<int> idSet(geoIds.begin(), geoIds.end());
for (auto geoId : geoIds) {
if (geoId > GeoEnum::RefExt || -geoId-1>=ExternalGeo.getSize()) {
if (geoId > GeoEnum::RefExt || -geoId - 1 >= ExternalGeo.getSize()) {
continue;
}
if (idSet.count(geoId) == 0) {
if (!idSet.contains(geoId)) {
continue;
}
idSet.erase(geoId);
@@ -2144,18 +2147,16 @@ int SketchObject::toggleExternalGeometryFlag(const std::vector<int> &geoIds,
auto& relatedGeometry = geos[relatedIndex];
relatedGeometry = relatedGeometry->clone();
auto relatedFacade = ExternalGeometryFacade::getFacade(relatedGeometry);
relatedFacade->setFlag(flag, value);
for (size_t i = 1; i < flags.size(); ++i) {
relatedFacade->setFlag(flags[i], value);
for (auto& _flag : flags) {
relatedFacade->setFlag(_flag, value);
}
idSet.erase(relatedGeoId);
}
}
geo = geo->clone();
egf->setGeometry(geo);
egf->setFlag(flag, value);
for (size_t i=1; i<flags.size(); ++i) {
egf->setFlag(flags[i], value);
for (auto& _flag : flags) {
egf->setFlag(_flag, value);
}
update = update || (value || flag != ExternalGeometryExtension::Frozen);
touched = true;
@@ -2170,6 +2171,7 @@ int SketchObject::toggleExternalGeometryFlag(const std::vector<int> &geoIds,
}
return 0;
}
// clang-format off
void SketchObject::addGeometryState(const Constraint* cstr) const
{
@@ -7179,21 +7181,22 @@ int SketchObject::addExternal(App::DocumentObject* Obj,
if (!(Objects[i] == Obj && std::string(SubName) == SubElements[i])) {
continue;
}
if (Types[i] == (int)ExtType::Both
|| (Types[i] == (int)ExtType::Projection && !intersection)
|| (Types[i] == (int)ExtType::Intersection && intersection)) {
if (Types[i] == static_cast<int>(ExtType::Both)
|| (Types[i] == static_cast<int>(ExtType::Projection) && !intersection)
|| (Types[i] == static_cast<int>(ExtType::Intersection) && intersection)) {
Base::Console().error("Link to %s already exists in this sketch.\n", SubName);
return -1;
}
// Case where projections are already there when adding intersections.
add = false;
Types[i] = (int)ExtType::Both;
Types[i] = static_cast<int>(ExtType::Both);
}
if (add) {
// add the new ones
Objects.push_back(Obj);
SubElements.emplace_back(SubName);
Types.push_back((int)(intersection ? ExtType::Intersection : ExtType::Projection));
Types.push_back(
static_cast<int>(intersection ? ExtType::Intersection : ExtType::Projection));
if (intersection) {}
// set the Link list.

View File

@@ -557,7 +557,7 @@ private:
ElementView::ElementView(QWidget* parent)
: QListWidget(parent)
{
ElementItemDelegate* elementItemDelegate = new ElementItemDelegate(this);
auto* elementItemDelegate = new ElementItemDelegate(this);
setItemDelegate(elementItemDelegate);
QObject::connect(
@@ -1097,7 +1097,7 @@ bool ElementItemDelegate::editorEvent(QEvent* event, QAbstractItemModel* model,
ElementItem* ElementItemDelegate::getElementItem(const QModelIndex& index) const
{
ElementView* elementView = static_cast<ElementView*>(parent());
auto* elementView = static_cast<ElementView*>(parent());
return elementView->itemFromIndex(index);
}
@@ -1338,7 +1338,7 @@ void TaskSketcherElements::onListMultiFilterItemChanged(QListWidgetItem* item)
void TaskSketcherElements::setItemVisibility(QListWidgetItem* it)
{
ElementItem* item = static_cast<ElementItem*>(it);
auto* item = static_cast<ElementItem*>(it);
if (ui->filterBox->checkState() == Qt::Unchecked) {
item->setHidden(false);
@@ -1450,7 +1450,7 @@ void TaskSketcherElements::onSelectionChanged(const Gui::SelectionChanges& msg)
QString expr = QString::fromLatin1(msg.pSubName);
std::string shapetype(msg.pSubName);
// if-else edge vertex
if (boost::starts_with(shapetype, "Edge")) {
if (shapetype.starts_with("Edge")) {
QRegularExpression rx(QStringLiteral("^Edge(\\d+)$"));
QRegularExpressionMatch match;
boost::ignore_unused(expr.indexOf(rx, 0, &match));
@@ -1467,7 +1467,7 @@ void TaskSketcherElements::onSelectionChanged(const Gui::SelectionChanges& msg)
// Perhaps we should also maintain a map so that we can look up items
// by element number.
for (int i = 0; i < countItems; i++) {
ElementItem* item = static_cast<ElementItem*>(ui->listWidgetElements->item(i));
auto* item = static_cast<ElementItem*>(ui->listWidgetElements->item(i));
if (item->ElementNbr == ElementId) {
item->isLineSelected = select;
modified_item = item;
@@ -1476,7 +1476,7 @@ void TaskSketcherElements::onSelectionChanged(const Gui::SelectionChanges& msg)
}
}
}
else if (boost::starts_with(shapetype, "ExternalEdge")) {
else if (shapetype.starts_with("ExternalEdge")) {
QRegularExpression rx(QStringLiteral("^ExternalEdge(\\d+)$"));
QRegularExpressionMatch match;
boost::ignore_unused(expr.indexOf(rx, 0, &match));
@@ -1490,7 +1490,7 @@ void TaskSketcherElements::onSelectionChanged(const Gui::SelectionChanges& msg)
}
int countItems = ui->listWidgetElements->count();
for (int i = 0; i < countItems; i++) {
ElementItem* item = static_cast<ElementItem*>(ui->listWidgetElements->item(i));
auto* item = static_cast<ElementItem*>(ui->listWidgetElements->item(i));
if (item->ElementNbr == ElementId) {
item->isLineSelected = select;
modified_item = item;
@@ -1498,7 +1498,7 @@ void TaskSketcherElements::onSelectionChanged(const Gui::SelectionChanges& msg)
}
}
}
else if (boost::starts_with(shapetype, "Vertex")) {
else if (shapetype.starts_with("Vertex")) {
QRegularExpression rx(QStringLiteral("^Vertex(\\d+)$"));
QRegularExpressionMatch match;
boost::ignore_unused(expr.indexOf(rx, 0, &match));
@@ -1517,7 +1517,7 @@ void TaskSketcherElements::onSelectionChanged(const Gui::SelectionChanges& msg)
int countItems = ui->listWidgetElements->count();
for (int i = 0; i < countItems; i++) {
ElementItem* item = static_cast<ElementItem*>(ui->listWidgetElements->item(i));
auto* item = static_cast<ElementItem*>(ui->listWidgetElements->item(i));
if (item->ElementNbr == GeoId) {
modified_item = item;
switch (PosId) {
@@ -1552,7 +1552,7 @@ void TaskSketcherElements::onListWidgetElementsItemPressed(QListWidgetItem* it)
if (!it)
return;
ElementItem* itf = static_cast<ElementItem*>(it);
auto* itf = static_cast<ElementItem*>(it);
bool rightClickOnSelected = itf->rightClicked
&& (itf->isLineSelected || itf->isStartingPointSelected || itf->isEndPointSelected
|| itf->isMidPointSelected);
@@ -1584,7 +1584,7 @@ void TaskSketcherElements::onListWidgetElementsItemPressed(QListWidgetItem* it)
Gui::Selection().clearSelection();
for (int i = 0; i < ui->listWidgetElements->count(); i++) {
ElementItem* item = static_cast<ElementItem*>(ui->listWidgetElements->item(i));
auto* item = static_cast<ElementItem*>(ui->listWidgetElements->item(i));
if (!multipleselection && !multipleconsecutiveselection) {
// if not multiple selection, then all are disabled but the one that was just
@@ -1596,7 +1596,6 @@ void TaskSketcherElements::onListWidgetElementsItemPressed(QListWidgetItem* it)
}
if (item == itf) {
if (item->clickedOn == SubElementType::mid
&& (item->GeometryType == Part::GeomArcOfCircle::getClassTypeId()
|| item->GeometryType == Part::GeomArcOfEllipse::getClassTypeId()
@@ -1665,7 +1664,6 @@ void TaskSketcherElements::onListWidgetElementsItemPressed(QListWidgetItem* it)
// now the scene
std::stringstream ss;
if (item->isLineSelected) {
if (item->ElementNbr >= 0) {
ss << "Edge" << item->ElementNbr + 1;
@@ -1731,7 +1729,7 @@ void TaskSketcherElements::onListWidgetElementsMouseMoveOnItem(QListWidgetItem*
return;
}
ElementItem* item = static_cast<ElementItem*>(it);
auto* item = static_cast<ElementItem*>(it);
if (!item
|| (ui->listWidgetElements->row(item) == previouslyHoveredItemIndex
@@ -1845,7 +1843,7 @@ void TaskSketcherElements::slotElementsChanged()
return QStringLiteral("(Edge%1#ID%2)").arg(i).arg(i - 1);
};
ElementItem* itemN = new ElementItem(
auto* itemN = new ElementItem(
i - 1,
sketchView->getSketchObject()->getVertexIndexGeoPos(i - 1, Sketcher::PointPos::start),
sketchView->getSketchObject()->getVertexIndexGeoPos(i - 1, Sketcher::PointPos::mid),
@@ -1986,7 +1984,7 @@ void TaskSketcherElements::slotElementsChanged()
GeometryState state = GeometryState::External;
ElementItem* itemN = new ElementItem(
auto* itemN = new ElementItem(
-j,
sketchView->getSketchObject()->getVertexIndexGeoPos(-j, Sketcher::PointPos::start),
sketchView->getSketchObject()->getVertexIndexGeoPos(-j, Sketcher::PointPos::mid),
@@ -2044,7 +2042,7 @@ void TaskSketcherElements::clearWidget()
// update widget
int countItems = ui->listWidgetElements->count();
for (int i = 0; i < countItems; i++) {
ElementItem* item = static_cast<ElementItem*>(ui->listWidgetElements->item(i));
auto* item = static_cast<ElementItem*>(ui->listWidgetElements->item(i));
item->isLineSelected = false;
item->isStartingPointSelected = false;
@@ -2064,7 +2062,7 @@ void TaskSketcherElements::changeEvent(QEvent* e)
/* Settings menu ==================================================*/
void TaskSketcherElements::createSettingsButtonActions()
{
QAction* action = new QAction(tr("Extended information"), this);
auto* action = new QAction(tr("Extended information"), this);
action->setCheckable(true);