mirror of
https://github.com/KLayout/klayout.git
synced 2026-09-02 02:47:48 +02:00
Enhanced object snapping for box edit mode - other corners snap too second order
This commit is contained in:
@@ -108,10 +108,37 @@ BoxService::do_mouse_move_inactive (const db::DPoint &p)
|
||||
void
|
||||
BoxService::do_mouse_move (const db::DPoint &p)
|
||||
{
|
||||
do_mouse_move_inactive (p);
|
||||
lay::PointSnapToObjectResult snap_details = snap2_details (p);
|
||||
db::DPoint ps = snap_details.snapped_point;
|
||||
|
||||
if (snap_details.object_snap == lay::PointSnapToObjectResult::NoObject) {
|
||||
|
||||
clear_mouse_cursors ();
|
||||
|
||||
db::DPoint px (p.x (), m_p1.y ());
|
||||
lay::PointSnapToObjectResult snap_details_x = snap2_details (px);
|
||||
|
||||
db::DPoint py (m_p1.x (), p.y ());
|
||||
lay::PointSnapToObjectResult snap_details_y = snap2_details (py);
|
||||
|
||||
if (snap_details_x.object_snap != lay::PointSnapToObjectResult::NoObject) {
|
||||
ps = db::DPoint (snap_details_x.snapped_point.x (), ps.y ());
|
||||
mouse_cursor_from_snap_details (snap_details_x, true /*add*/);
|
||||
}
|
||||
|
||||
if (snap_details_y.object_snap != lay::PointSnapToObjectResult::NoObject) {
|
||||
ps = db::DPoint (ps.x (), snap_details_y.snapped_point.y ());
|
||||
mouse_cursor_from_snap_details (snap_details_y, true /*add*/);
|
||||
}
|
||||
|
||||
add_mouse_cursor (ps);
|
||||
|
||||
} else {
|
||||
mouse_cursor_from_snap_details (snap_details);
|
||||
}
|
||||
|
||||
set_cursor (lay::Cursor::cross);
|
||||
m_p2 = snap2 (p);
|
||||
m_p2 = ps;
|
||||
update_marker ();
|
||||
}
|
||||
|
||||
|
||||
@@ -277,9 +277,11 @@ EditorServiceBase::clear_mouse_cursors ()
|
||||
}
|
||||
|
||||
void
|
||||
EditorServiceBase::mouse_cursor_from_snap_details (const lay::PointSnapToObjectResult &snap_details)
|
||||
EditorServiceBase::mouse_cursor_from_snap_details (const lay::PointSnapToObjectResult &snap_details, bool noclear)
|
||||
{
|
||||
clear_mouse_cursors ();
|
||||
if (! noclear) {
|
||||
clear_mouse_cursors ();
|
||||
}
|
||||
|
||||
add_mouse_cursor (snap_details.snapped_point,
|
||||
snap_details.object_snap == lay::PointSnapToObjectResult::ObjectVertex ||
|
||||
|
||||
@@ -110,7 +110,7 @@ public:
|
||||
/**
|
||||
* @brief Provides a nice mouse tracking cursor from the given snap details
|
||||
*/
|
||||
void mouse_cursor_from_snap_details (const lay::PointSnapToObjectResult &snap_details);
|
||||
void mouse_cursor_from_snap_details (const lay::PointSnapToObjectResult &snap_details, bool noclear = false);
|
||||
|
||||
/**
|
||||
* @brief Gets the tracking cursor color
|
||||
|
||||
Reference in New Issue
Block a user