summaryrefslogtreecommitdiffstats
path: root/src/ui/widget
diff options
context:
space:
mode:
authorKrzysztof Kosi??ski <tweenk.pl@gmail.com>2011-04-07 23:42:04 +0000
committerKrzysztof KosiƄski <tweenk.pl@gmail.com>2011-04-07 23:42:04 +0000
commit945ce419c806c73d70203dec33ececafbe108a92 (patch)
treecfcdb59bf47e9db7f9e01f7eebb59924bdeaea94 /src/ui/widget
parentMerge from trunk (again) (diff)
parentExtensions. SVG+media fix (see Bug #400356). (diff)
downloadinkscape-945ce419c806c73d70203dec33ececafbe108a92.tar.gz
inkscape-945ce419c806c73d70203dec33ececafbe108a92.zip
Merge from trunk
(bzr r9508.1.73)
Diffstat (limited to 'src/ui/widget')
-rw-r--r--src/ui/widget/attr-widget.h2
-rw-r--r--src/ui/widget/color-picker.h1
-rw-r--r--src/ui/widget/filter-effect-chooser.cpp4
-rw-r--r--src/ui/widget/layer-selector.cpp18
-rw-r--r--src/ui/widget/object-composite-settings.cpp5
-rw-r--r--src/ui/widget/page-sizer.cpp6
-rw-r--r--src/ui/widget/page-sizer.h1
-rw-r--r--src/ui/widget/preferences-widget.cpp138
-rw-r--r--src/ui/widget/preferences-widget.h14
-rw-r--r--src/ui/widget/registered-widget.cpp4
-rw-r--r--src/ui/widget/registered-widget.h8
-rw-r--r--src/ui/widget/ruler.cpp5
-rw-r--r--src/ui/widget/selected-style.cpp2
-rw-r--r--src/ui/widget/selected-style.h1
-rw-r--r--src/ui/widget/style-subject.h1
-rw-r--r--src/ui/widget/svg-canvas.cpp2
-rw-r--r--src/ui/widget/tolerance-slider.cpp2
17 files changed, 188 insertions, 26 deletions
diff --git a/src/ui/widget/attr-widget.h b/src/ui/widget/attr-widget.h
index b9924a2ef..7b9c35ab7 100644
--- a/src/ui/widget/attr-widget.h
+++ b/src/ui/widget/attr-widget.h
@@ -149,7 +149,7 @@ protected:
{
const gchar* name = (const gchar*)sp_attribute_name(_attr);
if(name && o) {
- const gchar* val = SP_OBJECT_REPR(o)->attribute(name);
+ const gchar* val = o->getRepr()->attribute(name);
return val;
}
return 0;
diff --git a/src/ui/widget/color-picker.h b/src/ui/widget/color-picker.h
index 2c246aaa3..346ce5121 100644
--- a/src/ui/widget/color-picker.h
+++ b/src/ui/widget/color-picker.h
@@ -13,6 +13,7 @@
#ifndef __COLOR_PICKER_H__
#define __COLOR_PICKER_H__
+#include <stddef.h>
#include <sigc++/sigc++.h>
#include <gtkmm/button.h>
#include <gtkmm/dialog.h>
diff --git a/src/ui/widget/filter-effect-chooser.cpp b/src/ui/widget/filter-effect-chooser.cpp
index 309730600..37202c8b4 100644
--- a/src/ui/widget/filter-effect-chooser.cpp
+++ b/src/ui/widget/filter-effect-chooser.cpp
@@ -22,8 +22,8 @@ namespace UI {
namespace Widget {
SimpleFilterModifier::SimpleFilterModifier(int flags)
- : _lb_blend(_("_Blend mode:")),
- _lb_blur(_("Blur:"), Gtk::ALIGN_LEFT),
+ : _lb_blend(_("Blend mode:")),
+ _lb_blur(_("_Blur:"), Gtk::ALIGN_LEFT, Gtk::ALIGN_CENTER, true),
_blend(BlendModeConverter, SP_ATTR_INVALID, false),
_blur(0, 0, 100, 1, 0.01, 1)
{
diff --git a/src/ui/widget/layer-selector.cpp b/src/ui/widget/layer-selector.cpp
index 6d1da0af0..ba4629c82 100644
--- a/src/ui/widget/layer-selector.cpp
+++ b/src/ui/widget/layer-selector.cpp
@@ -236,6 +236,8 @@ void LayerSelector::_selectLayer(SPObject *layer) {
using Inkscape::Util::reverse_list;
_selection_changed_connection.block();
+ _visibility_toggled_connection.block();
+ _lock_toggled_connection.block();
while (!_layer_model->children().empty()) {
Gtk::ListStore::iterator first_row(_layer_model->children().begin());
@@ -285,6 +287,8 @@ void LayerSelector::_selectLayer(SPObject *layer) {
_lock_toggle.set_active(( SP_IS_ITEM(layer) ? SP_ITEM(layer)->isLocked() : false ));
}
+ _lock_toggled_connection.unblock();
+ _visibility_toggled_connection.unblock();
_selection_changed_connection.unblock();
}
@@ -460,7 +464,7 @@ void LayerSelector::_buildEntry(unsigned depth, SPObject &object) {
);
SPObject *layer=_desktop->currentLayer();
- if ( &object == layer || &object == SP_OBJECT_PARENT(layer) ) {
+ if ( (&object == layer) || (&object == layer->parent) ) {
callbacks->update_list = sigc::bind(
sigc::mem_fun(*this, &LayerSelector::_protectUpdate),
sigc::bind(
@@ -498,12 +502,12 @@ void LayerSelector::_buildEntry(unsigned depth, SPObject &object) {
sp_object_ref(&object, NULL);
row->set_value(_model_columns.object, &object);
- Inkscape::GC::anchor(SP_OBJECT_REPR(&object));
- row->set_value(_model_columns.repr, SP_OBJECT_REPR(&object));
+ Inkscape::GC::anchor(object.getRepr());
+ row->set_value(_model_columns.repr, object.getRepr());
row->set_value(_model_columns.callbacks, reinterpret_cast<void *>(callbacks));
- sp_repr_add_listener(SP_OBJECT_REPR(&object), vector, callbacks);
+ sp_repr_add_listener(object.getRepr(), vector, callbacks);
}
/** Removes a row from the _model_columns object, disconnecting listeners
@@ -536,13 +540,13 @@ void LayerSelector::_prepareLabelRenderer(
// (or before one has been selected) something appears to
// "invent" an iterator with null data and try to render it;
// where does it come from, and how can we avoid it?
- if ( object && SP_OBJECT_REPR(object) ) {
+ if ( object && object->getRepr() ) {
SPObject *layer=( _desktop ? _desktop->currentLayer() : NULL );
SPObject *root=( _desktop ? _desktop->currentRoot() : NULL );
- bool isancestor = !( (layer && (SP_OBJECT_PARENT(object) == SP_OBJECT_PARENT(layer))) || ((layer == root) && (SP_OBJECT_PARENT(object) == root)));
+ bool isancestor = !( (layer && (object->parent == layer->parent)) || ((layer == root) && (object->parent == root)));
- bool iscurrent = ( object == layer && object != root );
+ bool iscurrent = ( (object == layer) && (object != root) );
gchar *format = g_strdup_printf (
"<span size=\"smaller\" %s><tt>%*s%s</tt>%s%s%s%%s%s%s%s</span>",
diff --git a/src/ui/widget/object-composite-settings.cpp b/src/ui/widget/object-composite-settings.cpp
index 1de425da3..06d57c4ac 100644
--- a/src/ui/widget/object-composite-settings.cpp
+++ b/src/ui/widget/object-composite-settings.cpp
@@ -60,7 +60,7 @@ ObjectCompositeSettings::ObjectCompositeSettings(unsigned int verb_code, char co
_opacity_tag(Glib::ustring(history_prefix) + ":opacity"),
_opacity_vbox(false, 0),
_opacity_label_box(false, 0),
- _opacity_label(_("Opacity (%):"), 0.0, 1.0, true),
+ _opacity_label(_("_Opacity (%):"), 0.0, 1.0, true),
_opacity_adjustment(100.0, 0.0, 100.0, 1.0, 1.0, 0.0),
_opacity_hscale(_opacity_adjustment),
_opacity_spin_button(_opacity_adjustment, 0.01, 1),
@@ -86,6 +86,7 @@ ObjectCompositeSettings::ObjectCompositeSettings(unsigned int verb_code, char co
_opacity_hscale.set_draw_value(false);
_opacity_hscale.set_update_policy(Gtk::UPDATE_DELAYED);
_opacity_adjustment.signal_value_changed().connect(sigc::mem_fun(*this, &ObjectCompositeSettings::_opacityValueChanged));
+ _opacity_label.set_mnemonic_widget(_opacity_hscale);
show_all_children();
@@ -145,7 +146,7 @@ ObjectCompositeSettings::_blendBlurValueChanged()
}
SPItem * item = SP_ITEM(*i);
- SPStyle *style = SP_OBJECT_STYLE(item);
+ SPStyle *style = item->style;
g_assert(style != NULL);
if (blendmode != "normal") {
diff --git a/src/ui/widget/page-sizer.cpp b/src/ui/widget/page-sizer.cpp
index f7cb6f145..f306b9eea 100644
--- a/src/ui/widget/page-sizer.cpp
+++ b/src/ui/widget/page-sizer.cpp
@@ -422,7 +422,7 @@ PageSizer::setDim (double w, double h, bool changeList)
// The origin for the user is in the lower left corner; this point should remain stationary when
// changing the page size. The SVG's origin however is in the upper left corner, so we must compensate for this
Geom::Translate const vert_offset(Geom::Point(0, (old_height - h)));
- SP_GROUP(SP_ROOT(doc->root))->translateChildItems(vert_offset);
+ SP_GROUP(SP_ROOT(doc->root))->translateChildItems(vert_offset);
DocumentUndo::done(doc, SP_VERB_NONE, _("Set page size"));
}
@@ -538,8 +538,8 @@ PageSizer::fire_fit_canvas_to_selection_or_drawing()
SPNamedView *nv;
Inkscape::XML::Node *nv_repr;
if ((doc = sp_desktop_document(SP_ACTIVE_DESKTOP))
- && (nv = sp_document_namedview(doc, 0))
- && (nv_repr = SP_OBJECT_REPR(nv))) {
+ && (nv = sp_document_namedview(doc, 0))
+ && (nv_repr = nv->getRepr())) {
sp_repr_set_svg_double(nv_repr, "fit-margin-top", _marginTop.getValue());
sp_repr_set_svg_double(nv_repr, "fit-margin-left", _marginLeft.getValue());
sp_repr_set_svg_double(nv_repr, "fit-margin-right", _marginRight.getValue());
diff --git a/src/ui/widget/page-sizer.h b/src/ui/widget/page-sizer.h
index ba6c8dd13..2072aeccd 100644
--- a/src/ui/widget/page-sizer.h
+++ b/src/ui/widget/page-sizer.h
@@ -13,6 +13,7 @@
#define INKSCAPE_UI_WIDGET_PAGE_SIZER__H
#include <gtkmm.h>
+#include <stddef.h>
#include <sigc++/sigc++.h>
#include "helper/units.h"
diff --git a/src/ui/widget/preferences-widget.cpp b/src/ui/widget/preferences-widget.cpp
index 4816304db..afcaa338e 100644
--- a/src/ui/widget/preferences-widget.cpp
+++ b/src/ui/widget/preferences-widget.cpp
@@ -14,6 +14,10 @@
# include <config.h>
#endif
+#ifdef WIN32
+#include <windows.h>
+#endif
+
#include <gtkmm/frame.h>
#include <gtkmm/alignment.h>
#include <gtkmm/box.h>
@@ -22,7 +26,9 @@
#include "ui/widget/preferences-widget.h"
#include "verbs.h"
#include "selcue.h"
+#include "io/sys.h"
#include <iostream>
+#include "desktop.h"
#include "enums.h"
#include "inkscape.h"
#include "desktop-handles.h"
@@ -30,6 +36,7 @@
#include "style.h"
#include "selection.h"
#include "selection-chemistry.h"
+#include "ui/dialog/filedialog.h"
#include "xml/repr.h"
using namespace Inkscape::UI::Widget;
@@ -618,6 +625,137 @@ void PrefEntryButtonHBox::onRelatedButtonClickedCallback()
}
}
+void PrefEntryFileButtonHBox::init(Glib::ustring const &prefs_path,
+ bool visibility)
+{
+ _prefs_path = prefs_path;
+ Inkscape::Preferences *prefs = Inkscape::Preferences::get();
+
+ relatedEntry = new Gtk::Entry();
+ relatedEntry->set_invisible_char('*');
+ relatedEntry->set_visibility(visibility);
+ relatedEntry->set_text(prefs->getString(_prefs_path));
+
+ relatedButton = new Gtk::Button();
+ Gtk::HBox* pixlabel = new Gtk::HBox(false, 3);
+ Gtk::Image *im = new Gtk::Image(Gtk::StockID(Gtk::Stock::INDEX),
+ Gtk::ICON_SIZE_BUTTON);
+ pixlabel->pack_start(*im);
+ Gtk::Label *l = new Gtk::Label();
+ l->set_markup_with_mnemonic(_("_Browse..."));
+ pixlabel->pack_start(*l);
+ relatedButton->add(*pixlabel);
+
+ this->pack_end(*relatedButton, false, false, 4);
+ this->pack_start(*relatedEntry, true, true, 0);
+
+ relatedButton->signal_clicked().connect(
+ sigc::mem_fun(*this, &PrefEntryFileButtonHBox::onRelatedButtonClickedCallback));
+ relatedEntry->signal_changed().connect(
+ sigc::mem_fun(*this, &PrefEntryFileButtonHBox::onRelatedEntryChangedCallback));
+}
+
+void PrefEntryFileButtonHBox::onRelatedEntryChangedCallback()
+{
+ if (this->is_visible()) //only take action if user changed value
+ {
+ Inkscape::Preferences *prefs = Inkscape::Preferences::get();
+ prefs->setString(_prefs_path, relatedEntry->get_text());
+ }
+}
+
+static Inkscape::UI::Dialog::FileOpenDialog * selectPrefsFileInstance = NULL;
+
+void PrefEntryFileButtonHBox::onRelatedButtonClickedCallback()
+{
+ if (this->is_visible()) //only take action if user changed value
+ {
+ //# Get the current directory for finding files
+ static Glib::ustring open_path;
+ Inkscape::Preferences *prefs = Inkscape::Preferences::get();
+
+
+ Glib::ustring attr = prefs->getString(_prefs_path);
+ if (!attr.empty()) open_path = attr;
+
+ //# Test if the open_path directory exists
+ if (!Inkscape::IO::file_test(open_path.c_str(),
+ (GFileTest)(G_FILE_TEST_EXISTS | G_FILE_TEST_IS_DIR)))
+ open_path = "";
+
+#ifdef WIN32
+ //# If no open path, default to our win32 documents folder
+ if (open_path.empty())
+ {
+ // The path to the My Documents folder is read from the
+ // value "HKEY_CURRENT_USER\Software\Windows\CurrentVersion\Explorer\Shell Folders\Personal"
+ HKEY key = NULL;
+ if(RegOpenKeyExA(HKEY_CURRENT_USER,
+ "Software\\Microsoft\\Windows\\CurrentVersion\\Explorer\\Shell Folders",
+ 0, KEY_QUERY_VALUE, &key) == ERROR_SUCCESS)
+ {
+ WCHAR utf16path[_MAX_PATH];
+ DWORD value_type;
+ DWORD data_size = sizeof(utf16path);
+ if(RegQueryValueExW(key, L"Personal", NULL, &value_type,
+ (BYTE*)utf16path, &data_size) == ERROR_SUCCESS)
+ {
+ g_assert(value_type == REG_SZ);
+ gchar *utf8path = g_utf16_to_utf8(
+ (const gunichar2*)utf16path, -1, NULL, NULL, NULL);
+ if(utf8path)
+ {
+ open_path = Glib::ustring(utf8path);
+ g_free(utf8path);
+ }
+ }
+ }
+ }
+#endif
+
+ //# If no open path, default to our home directory
+ if (open_path.empty())
+ {
+ open_path = g_get_home_dir();
+ open_path.append(G_DIR_SEPARATOR_S);
+ }
+
+ //# Create a dialog
+ SPDesktop *desktop = SP_ACTIVE_DESKTOP;
+ if (!selectPrefsFileInstance) {
+ selectPrefsFileInstance =
+ Inkscape::UI::Dialog::FileOpenDialog::create(
+ *desktop->getToplevel(),
+ open_path,
+ Inkscape::UI::Dialog::EXE_TYPES,
+ _("Select a bitmap editor"));
+ }
+
+ //# Show the dialog
+ bool const success = selectPrefsFileInstance->show();
+
+ if (!success) {
+ return;
+ }
+
+ //# User selected something. Get name and type
+ Glib::ustring fileName = selectPrefsFileInstance->getFilename();
+
+ if (!fileName.empty())
+ {
+ Glib::ustring newFileName = Glib::filename_to_utf8(fileName);
+
+ if ( newFileName.size() > 0)
+ open_path = newFileName;
+ else
+ g_warning( "ERROR CONVERTING OPEN FILENAME TO UTF-8" );
+
+ prefs->setString(_prefs_path, open_path);
+ }
+
+ relatedEntry->set_text(fileName);
+ }
+}
void PrefFileButton::init(Glib::ustring const &prefs_path)
{
diff --git a/src/ui/widget/preferences-widget.h b/src/ui/widget/preferences-widget.h
index 6c4533451..6c7f9ce4a 100644
--- a/src/ui/widget/preferences-widget.h
+++ b/src/ui/widget/preferences-widget.h
@@ -26,6 +26,7 @@
#include <gtkmm/drawingarea.h>
#include <gtkmm/frame.h>
#include <gtkmm/filechooserbutton.h>
+#include <stddef.h>
#include <sigc++/sigc++.h>
#include <glibmm/i18n.h>
@@ -176,6 +177,19 @@ protected:
void onRelatedButtonClickedCallback();
};
+class PrefEntryFileButtonHBox : public Gtk::HBox
+{
+public:
+ void init(Glib::ustring const &prefs_path,
+ bool mask);
+protected:
+ Glib::ustring _prefs_path;
+ Gtk::Button *relatedButton;
+ Gtk::Entry *relatedEntry;
+ void onRelatedEntryChangedCallback();
+ void onRelatedButtonClickedCallback();
+};
+
class PrefFileButton : public Gtk::FileChooserButton
{
public:
diff --git a/src/ui/widget/registered-widget.cpp b/src/ui/widget/registered-widget.cpp
index 04bd27285..c2580013a 100644
--- a/src/ui/widget/registered-widget.cpp
+++ b/src/ui/widget/registered-widget.cpp
@@ -344,7 +344,7 @@ RegisteredColorPicker::on_changed (guint32 rgba)
SPDesktop *dt = SP_ACTIVE_DESKTOP;
if (!dt)
return;
- local_repr = SP_OBJECT_REPR (sp_desktop_namedview(dt));
+ local_repr = sp_desktop_namedview(dt)->getRepr();
local_doc = sp_desktop_document(dt);
}
@@ -553,7 +553,7 @@ RegisteredTransformedPoint::setValue(Geom::Point const & p)
}
void
-RegisteredTransformedPoint::setTransform(Geom::Matrix const & canvas_to_svg)
+RegisteredTransformedPoint::setTransform(Geom::Affine const & canvas_to_svg)
{
// check if matrix is singular / has inverse
if ( ! canvas_to_svg.isSingular() ) {
diff --git a/src/ui/widget/registered-widget.h b/src/ui/widget/registered-widget.h
index efb5eb70e..560c63dd4 100644
--- a/src/ui/widget/registered-widget.h
+++ b/src/ui/widget/registered-widget.h
@@ -18,7 +18,7 @@
#include <gtkmm/adjustment.h>
#include <gtkmm/tooltips.h>
#include <gtkmm/togglebutton.h>
-#include <2geom/matrix.h>
+#include <2geom/affine.h>
#include "xml/node.h"
#include "registry.h"
@@ -101,7 +101,7 @@ protected:
if (!local_repr) {
// no repr specified, use active desktop's namedview's repr
SPDesktop* dt = SP_ACTIVE_DESKTOP;
- local_repr = SP_OBJECT_REPR (sp_desktop_namedview(dt));
+ local_repr = reinterpret_cast<SPObject *>(sp_desktop_namedview(dt))->getRepr();
local_doc = sp_desktop_document(dt);
}
@@ -326,14 +326,14 @@ public:
// redefine setValue, because transform must be applied
void setValue(Geom::Point const & p);
- void setTransform(Geom::Matrix const & canvas_to_svg);
+ void setTransform(Geom::Affine const & canvas_to_svg);
protected:
sigc::connection _value_x_changed_connection;
sigc::connection _value_y_changed_connection;
void on_value_changed();
- Geom::Matrix to_svg;
+ Geom::Affine to_svg;
};
diff --git a/src/ui/widget/ruler.cpp b/src/ui/widget/ruler.cpp
index 107f4e8c6..a220a54ad 100644
--- a/src/ui/widget/ruler.cpp
+++ b/src/ui/widget/ruler.cpp
@@ -26,6 +26,7 @@
#include "ui/widget/ruler.h"
#include "xml/repr.h"
+#include "display/sp-canvas.h"
#include "display/guideline.h"
#include "desktop.h"
#include "desktop-handles.h"
@@ -101,7 +102,7 @@ Ruler::on_button_press_event(GdkEventButton *evb)
{
g_assert(_dt);
Geom::Point const &event_dt = get_event_dt();
- Inkscape::XML::Node *repr = SP_OBJECT_REPR(_dt->namedview);
+ Inkscape::XML::Node *repr = _dt->namedview->getRepr();
if (evb->button == 1) {
_dragging = true;
@@ -152,7 +153,7 @@ Ruler::on_button_release_event(GdkEventButton *evb)
repr->setAttribute("orientation", _horiz_f ? "horizontal" : "vertical");
double const guide_pos_dt = event_dt[ _horiz_f ? Geom::Y : Geom::X ];
sp_repr_set_svg_double(repr, "position", guide_pos_dt);
- SP_OBJECT_REPR(_dt->namedview)->appendChild(repr);
+ _dt->namedview->getRepr()->appendChild(repr);
Inkscape::GC::release(repr);
DocumentUndo::done(sp_desktop_document(_dt), SP_VERB_NONE,
/* TODO: annotate */ "ruler.cpp:157");
diff --git a/src/ui/widget/selected-style.cpp b/src/ui/widget/selected-style.cpp
index e7d8ac5a3..50476dc65 100644
--- a/src/ui/widget/selected-style.cpp
+++ b/src/ui/widget/selected-style.cpp
@@ -950,7 +950,7 @@ SelectedStyle::update()
if (paint->set && paint->isPaintserver()) {
SPPaintServer *server = (i == SS_FILL)? SP_STYLE_FILL_SERVER (query) : SP_STYLE_STROKE_SERVER (query);
if ( server ) {
- Inkscape::XML::Node *srepr = SP_OBJECT_REPR(server);
+ Inkscape::XML::Node *srepr = server->getRepr();
_paintserver_id[i] += "url(#";
_paintserver_id[i] += srepr->attribute("id");
_paintserver_id[i] += ")";
diff --git a/src/ui/widget/selected-style.h b/src/ui/widget/selected-style.h
index 0229364c7..e74d5b1ae 100644
--- a/src/ui/widget/selected-style.h
+++ b/src/ui/widget/selected-style.h
@@ -23,6 +23,7 @@
#include <gtkmm/adjustment.h>
#include <gtkmm/spinbutton.h>
+#include <stddef.h>
#include <sigc++/sigc++.h>
#include <glibmm/i18n.h>
diff --git a/src/ui/widget/style-subject.h b/src/ui/widget/style-subject.h
index 77e4c4846..6d5c96350 100644
--- a/src/ui/widget/style-subject.h
+++ b/src/ui/widget/style-subject.h
@@ -14,6 +14,7 @@
#include "libnr/nr-rect.h"
#include <2geom/rect.h>
#include "sp-item.h"
+#include <stddef.h>
#include <sigc++/sigc++.h>
class SPDesktop;
diff --git a/src/ui/widget/svg-canvas.cpp b/src/ui/widget/svg-canvas.cpp
index 64657296d..7d37ec355 100644
--- a/src/ui/widget/svg-canvas.cpp
+++ b/src/ui/widget/svg-canvas.cpp
@@ -12,8 +12,8 @@
#include <gtkmm/widget.h>
#include "desktop.h"
#include "desktop-events.h"
+#include "display/sp-canvas.h"
#include "display/canvas-arena.h"
-#include "display/display-forward.h"
#include "ui/widget/svg-canvas.h"
namespace Inkscape {
diff --git a/src/ui/widget/tolerance-slider.cpp b/src/ui/widget/tolerance-slider.cpp
index cc179ddbc..51e0a262f 100644
--- a/src/ui/widget/tolerance-slider.cpp
+++ b/src/ui/widget/tolerance-slider.cpp
@@ -189,7 +189,7 @@ ToleranceSlider::update (double val)
SPDocument *doc = sp_desktop_document(dt);
bool saved = DocumentUndo::getUndoSensitive(doc);
DocumentUndo::setUndoSensitive(doc, false);
- Inkscape::XML::Node *repr = SP_OBJECT_REPR (sp_desktop_namedview(dt));
+ Inkscape::XML::Node *repr = sp_desktop_namedview(dt)->getRepr();
repr->setAttribute(_key.c_str(), os.str().c_str());
DocumentUndo::setUndoSensitive(doc, saved);