Search/replace: also highlight results from data queries

This commit is contained in:
Matthias Koefferlein 2022-02-10 23:56:08 +01:00
parent 3f2ca1dfbe
commit 5dd50d2f59
1 changed files with 49 additions and 0 deletions

View File

@ -1699,6 +1699,55 @@ SearchReplaceDialog::result_selection_changed ()
}
} else if (index < int (m_model.data ().size ())) {
db::DCplxTrans as_dbu = db::DCplxTrans (layout.dbu ()).inverted ();
const tl::Variant &dr = m_model.data () [index];
for (tl::Variant::const_iterator v = dr.begin (); v != dr.end (); ++v) {
lay::Marker *marker = new lay::Marker (view (), cv_index);
if (v->is_user<db::DBox> ()) {
marker->set (v->to_user<db::DBox> (), as_dbu, global_trans);
} else if (v->is_user<db::Box> ()) {
marker->set (v->to_user<db::Box> (), db::ICplxTrans (), global_trans);
} else if (v->is_user<db::DEdge> ()) {
marker->set (v->to_user<db::DEdge> (), as_dbu, global_trans);
} else if (v->is_user<db::Edge> ()) {
marker->set (v->to_user<db::Edge> (), db::ICplxTrans (), global_trans);
} else if (v->is_user<db::DPolygon> ()) {
marker->set (v->to_user<db::DPolygon> (), as_dbu, global_trans);
} else if (v->is_user<db::Polygon> ()) {
marker->set (v->to_user<db::Polygon> (), db::ICplxTrans (), global_trans);
} else if (v->is_user<db::DPath> ()) {
marker->set (v->to_user<db::DPath> (), as_dbu, global_trans);
} else if (v->is_user<db::Path> ()) {
marker->set (v->to_user<db::Path> (), db::ICplxTrans (), global_trans);
} else if (v->is_user<db::DPoint> ()) {
db::DPoint p = v->to_user<db::DPoint> ();
marker->set (db::DBox (p, p), as_dbu, global_trans);
} else if (v->is_user<db::Point> ()) {
db::Point p = v->to_user<db::Point> ();
marker->set (db::Box (p, p), db::ICplxTrans (), global_trans);
} else if (v->is_user<db::DVector> ()) {
db::DPoint p = db::DPoint () + v->to_user<db::DVector> ();
marker->set (db::DBox (p, p), as_dbu, global_trans);
} else if (v->is_user<db::Vector> ()) {
db::Point p = db::Point () + v->to_user<db::Vector> ();
marker->set (db::Box (p, p), db::ICplxTrans (), global_trans);
} else {
delete marker;
marker = 0;
}
if (marker) {
mp_markers.push_back (marker);
dbox += marker->bbox ();
}
}
}
}