diff options
| author | Jabier Arraiza <jabier.arraiza@marker.es> | 2018-11-25 10:10:02 +0000 |
|---|---|---|
| committer | Jabier Arraiza <jabier.arraiza@marker.es> | 2018-11-25 10:11:19 +0000 |
| commit | 5e593d90927b37a54f5c2d663bd25d6d661d7be9 (patch) | |
| tree | 96abef646519840e5946e941863d1991cbb458eb /src/ui/tools/measure-tool.cpp | |
| parent | Add plugs for the icon and GTK3 themes (diff) | |
| download | inkscape-5e593d90927b37a54f5c2d663bd25d6d661d7be9.tar.gz inkscape-5e593d90927b37a54f5c2d663bd25d6d661d7be9.zip | |
Fix bug 1804946: Measurement tool is very slow when using grids
This move from Namedview to a new prefernecr point to not reload full namedview on meassure
Diffstat (limited to 'src/ui/tools/measure-tool.cpp')
| -rw-r--r-- | src/ui/tools/measure-tool.cpp | 38 |
1 files changed, 6 insertions, 32 deletions
diff --git a/src/ui/tools/measure-tool.cpp b/src/ui/tools/measure-tool.cpp index ac9c36222..eee108bc0 100644 --- a/src/ui/tools/measure-tool.cpp +++ b/src/ui/tools/measure-tool.cpp @@ -398,41 +398,15 @@ MeasureTool::~MeasureTool() } Geom::Point MeasureTool::readMeasurePoint(bool is_start) { - SPDesktop *desktop = SP_ACTIVE_DESKTOP; - SPNamedView *namedview = desktop->namedview; - if(!namedview) { - return Geom::Point(Geom::infinity(),Geom::infinity()); - } - char const * measure_point = is_start ? "inkscape:measure-start" : "inkscape:measure-end"; - char const * measure_point_data = namedview->getAttribute (measure_point); - if(!measure_point_data) { - measure_point_data = "0,0"; - namedview->setAttribute (measure_point, measure_point_data); - } - gchar ** strarray = g_strsplit(measure_point_data, ",", 2); - double newx, newy; - unsigned int success = sp_svg_number_read_d(strarray[0], &newx); - success += sp_svg_number_read_d(strarray[1], &newy); - g_strfreev (strarray); - if (success == 2) { - Geom::Point point_data(newx, newy); - return point_data; - } - return Geom::Point(Geom::infinity(),Geom::infinity()); - + Inkscape::Preferences *prefs = Inkscape::Preferences::get(); + Glib::ustring measure_point = is_start ? "/tools/measure/measure-start" : "/tools/measure/measure-end"; + return prefs->getPoint(measure_point, Geom::Point(Geom::infinity(),Geom::infinity())); } void MeasureTool::writeMeasurePoint(Geom::Point point, bool is_start) { - SPDesktop *desktop = SP_ACTIVE_DESKTOP; - SPNamedView *namedview = desktop->namedview; - if(!namedview) { - return; - } - std::stringstream meassure_point_str; - meassure_point_str.imbue(std::locale::classic()); - meassure_point_str << point[Geom::X] << "," << point[Geom::Y]; - gchar const *measure_point = is_start ? "inkscape:measure-start" : "inkscape:measure-end"; - namedview->setAttribute (measure_point, meassure_point_str.str().c_str()); + Inkscape::Preferences *prefs = Inkscape::Preferences::get(); + Glib::ustring measure_point = is_start ? "/tools/measure/measure-start" : "/tools/measure/measure-end"; + prefs->setPoint(measure_point, point); } //This function is used to reverse the Measure, I do it in two steps because when |
