diff options
| author | Diederik van Lierop <mail@diedenrezi.nl> | 2014-07-30 20:47:29 +0000 |
|---|---|---|
| committer | Diederik van Lierop <mail@diedenrezi.nl> | 2014-07-30 20:47:29 +0000 |
| commit | 64fb7253a1d2771c4f844d1c2266a90f328895b5 (patch) | |
| tree | 70071046513af647915b877245667114f2d42c31 /src | |
| parent | Fix for 1346972 (freehand shape mode should pick stroke width from tool's act... (diff) | |
| download | inkscape-64fb7253a1d2771c4f844d1c2266a90f328895b5.tar.gz inkscape-64fb7253a1d2771c4f844d1c2266a90f328895b5.zip | |
Limit the number of paths to be used as snap targets, to keep Inkscape responsive in very complex drawings
Fixed bugs:
- https://launchpad.net/bugs/1348959
(bzr r13483)
Diffstat (limited to 'src')
| -rw-r--r-- | src/object-snapper.cpp | 4 | ||||
| -rw-r--r-- | src/seltrans.cpp | 1 |
2 files changed, 5 insertions, 0 deletions
diff --git a/src/object-snapper.cpp b/src/object-snapper.cpp index 3b8956bc8..0f7aa6368 100644 --- a/src/object-snapper.cpp +++ b/src/object-snapper.cpp @@ -147,6 +147,10 @@ void Inkscape::ObjectSnapper::_findCandidates(SPObject* parent, // For debugging: print the id of the candidate to the console // SPObject *obj = (SPObject*)item; // std::cout << "Snap candidate added: " << obj->getId() << std::endl; + if (_candidates->size() > 200) { // This makes Inkscape crawl already + std::cout << "Warning: limit of 200 snap target paths reached, some will be ignored" << std::endl; + break; + } } } } diff --git a/src/seltrans.cpp b/src/seltrans.cpp index 4b1a3a5fa..6b8cd19bb 100644 --- a/src/seltrans.cpp +++ b/src/seltrans.cpp @@ -304,6 +304,7 @@ void Inkscape::SelTrans::grab(Geom::Point const &p, gdouble x, gdouble y, bool s /* Snapping a huge number of nodes will take way too long, so limit the number of snappable nodes A typical user would rarely ever try to snap such a large number of nodes anyway, because (s)he would hardly be able to discern which node would be snapping */ + std::cout << "Warning: limit of 200 snap sources reached, some will be ignored" << std::endl; _snap_points.resize(200); // Unfortunately, by now we will have lost the font-baseline snappoints :-( } |
