summaryrefslogtreecommitdiffstats
path: root/src/ui
diff options
context:
space:
mode:
authorStefano Facchini <stefano.facchini@gmail.com>2017-10-01 13:27:03 +0000
committerStefano Facchini <stefano.facchini@gmail.com>2017-10-01 13:40:38 +0000
commitd4432a4aaf3fb615d9808f53557a4283436bf035 (patch)
tree2a9cc5ae46c673d092abdaba399133659f0cfc27 /src/ui
parentA little styling tweak to a LPE expander (diff)
downloadinkscape-d4432a4aaf3fb615d9808f53557a4283436bf035.tar.gz
inkscape-d4432a4aaf3fb615d9808f53557a4283436bf035.zip
Fix the editing of clipping and masking objects
By passing along an edit_transform matrix, as done for clipping paths. Cleanups: - remove some unused methods - use member initialization
Diffstat (limited to 'src/ui')
-rw-r--r--src/ui/shape-editor.cpp19
-rw-r--r--src/ui/shape-editor.h4
-rw-r--r--src/ui/tools/node-tool.cpp3
3 files changed, 11 insertions, 15 deletions
diff --git a/src/ui/shape-editor.cpp b/src/ui/shape-editor.cpp
index 6a8f5e931..2c0e662ee 100644
--- a/src/ui/shape-editor.cpp
+++ b/src/ui/shape-editor.cpp
@@ -31,10 +31,12 @@ namespace UI {
bool ShapeEditor::_blockSetItem = false;
-ShapeEditor::ShapeEditor(SPDesktop *dt) {
- this->desktop = dt;
- this->knotholder = NULL;
- this->knotholder_listener_attached_for = NULL;
+ShapeEditor::ShapeEditor(SPDesktop *dt, Geom::Affine edit_transform) :
+ desktop(dt),
+ knotholder(nullptr),
+ knotholder_listener_attached_for(nullptr),
+ _edit_transform(edit_transform)
+{
}
ShapeEditor::~ShapeEditor() {
@@ -76,14 +78,6 @@ void ShapeEditor::decrement_local_change() {
}
}
-const SPItem *ShapeEditor::get_item() {
- const SPItem *item = NULL;
- if (this->has_knotholder()) {
- item = this->knotholder->getItem();
- }
- return item;
-}
-
void ShapeEditor::event_attr_changed(Inkscape::XML::Node * node, gchar const *name, gchar const *, gchar const *, bool, void *data)
{
g_assert(data);
@@ -129,6 +123,7 @@ void ShapeEditor::set_item(SPItem *item, bool keep_knotholder) {
this->knotholder = createKnotHolder(item, desktop);
}
if (this->knotholder) {
+ this->knotholder->setEditTransform(_edit_transform);
this->knotholder->update_knots();
// setting new listener
repr = this->knotholder->repr;
diff --git a/src/ui/shape-editor.h b/src/ui/shape-editor.h
index 7f435efca..e30b2d60b 100644
--- a/src/ui/shape-editor.h
+++ b/src/ui/shape-editor.h
@@ -23,7 +23,7 @@ namespace UI {
class ShapeEditor {
public:
- ShapeEditor(SPDesktop *desktop);
+ ShapeEditor(SPDesktop *desktop, Geom::Affine edit_transform = Geom::identity());
~ShapeEditor();
void set_item(SPItem *item, bool keep_knotholder = false);
@@ -42,11 +42,11 @@ public:
char const * /*new_value*/, bool /*is_interactive*/, void *data);
private:
void reset_item (bool keep_knotholder = true);
- const SPItem *get_item();
static bool _blockSetItem;
SPDesktop *desktop;
Inkscape::XML::Node *knotholder_listener_attached_for;
+ Geom::Affine _edit_transform;
};
} // namespace UI
diff --git a/src/ui/tools/node-tool.cpp b/src/ui/tools/node-tool.cpp
index d508a16f2..e7825e302 100644
--- a/src/ui/tools/node-tool.cpp
+++ b/src/ui/tools/node-tool.cpp
@@ -358,6 +358,7 @@ void NodeTool::set(const Inkscape::Preferences::Entry& value) {
}
/** Recursively collect ShapeRecords */
+static
void gather_items(NodeTool *nt, SPItem *base, SPObject *obj, Inkscape::UI::ShapeRole role,
std::set<Inkscape::UI::ShapeRecord> &s)
{
@@ -437,7 +438,7 @@ void NodeTool::selection_changed(Inkscape::Selection *sel) {
if ((SP_IS_SHAPE(r.item) || SP_IS_TEXT(r.item) || SP_IS_GROUP(r.item) || SP_IS_OBJECTGROUP(r.item)) &&
this->_shape_editors.find(r.item) == this->_shape_editors.end())
{
- ShapeEditor *si = new ShapeEditor(this->desktop);
+ ShapeEditor *si = new ShapeEditor(this->desktop, r.edit_transform);
si->set_item(r.item);
this->_shape_editors.insert(const_cast<SPItem*&>(r.item), si);
}