diff options
| author | Markus Engel <markus.engel@tum.de> | 2012-08-21 12:45:01 +0000 |
|---|---|---|
| committer | Markus Engel <markus.engel@tum.de> | 2012-08-21 12:45:01 +0000 |
| commit | 6a1a65169de6998172eeac7d2b70536997797f99 (patch) | |
| tree | 0ab76214afdaef1c2377699e038affa612c56f15 /src/sp-object-group.cpp | |
| parent | Fixed some virtual function calls in SPItem and SPUse that led to crashes as ... (diff) | |
| download | inkscape-6a1a65169de6998172eeac7d2b70536997797f99.tar.gz inkscape-6a1a65169de6998172eeac7d2b70536997797f99.zip | |
Added "virtual pad" to SPObjectGroup.
(bzr r11608.1.37)
Diffstat (limited to 'src/sp-object-group.cpp')
| -rw-r--r-- | src/sp-object-group.cpp | 63 |
1 files changed, 43 insertions, 20 deletions
diff --git a/src/sp-object-group.cpp b/src/sp-object-group.cpp index 65fbc0295..de5d0b612 100644 --- a/src/sp-object-group.cpp +++ b/src/sp-object-group.cpp @@ -52,40 +52,60 @@ void SPObjectGroupClass::sp_objectgroup_class_init(SPObjectGroupClass *klass) sp_object_class->write = SPObjectGroup::write; } -void SPObjectGroup::init(SPObjectGroup * /*objectgroup*/) +CObjectGroup::CObjectGroup(SPObjectGroup* gr) : CObject(gr) { + this->spobjectgroup = gr; +} + +CObjectGroup::~CObjectGroup() { +} + +void SPObjectGroup::init(SPObjectGroup * objectgroup) { + objectgroup->cobjectgroup = new CObjectGroup(objectgroup); + objectgroup->cobject = objectgroup->cobjectgroup; +} + +void CObjectGroup::onChildAdded(Inkscape::XML::Node *child, Inkscape::XML::Node *ref) { + SPObjectGroup* object = this->spobjectgroup; + + CObject::onChildAdded(child, ref); + + object->requestModified(SP_OBJECT_MODIFIED_FLAG); } void SPObjectGroup::childAdded(SPObject *object, Inkscape::XML::Node *child, Inkscape::XML::Node *ref) { - if (((SPObjectClass *) (SPObjectGroupClass::static_parent_class))->child_added) { - (* ((SPObjectClass *) (SPObjectGroupClass::static_parent_class))->child_added)(object, child, ref); - } + ((SPObjectGroup*)object)->cobjectgroup->onChildAdded(child, ref); +} - object->requestModified(SP_OBJECT_MODIFIED_FLAG); +void CObjectGroup::onRemoveChild(Inkscape::XML::Node *child) { + SPObjectGroup* object = this->spobjectgroup; + + CObject::onRemoveChild(child); + + object->requestModified(SP_OBJECT_MODIFIED_FLAG); } void SPObjectGroup::removeChild(SPObject *object, Inkscape::XML::Node *child) { - if (((SPObjectClass *) (SPObjectGroupClass::static_parent_class))->remove_child) { - (* ((SPObjectClass *) (SPObjectGroupClass::static_parent_class))->remove_child)(object, child); - } + ((SPObjectGroup*)object)->cobjectgroup->onRemoveChild(child); +} + +void CObjectGroup::onOrderChanged(Inkscape::XML::Node *child, Inkscape::XML::Node *old_ref, Inkscape::XML::Node *new_ref) { + SPObjectGroup* object = this->spobjectgroup; + + CObject::onOrderChanged(child, old_ref, new_ref); - object->requestModified(SP_OBJECT_MODIFIED_FLAG); + object->requestModified(SP_OBJECT_MODIFIED_FLAG); } void SPObjectGroup::orderChanged(SPObject *object, Inkscape::XML::Node *child, Inkscape::XML::Node *old_ref, Inkscape::XML::Node *new_ref) { - if (((SPObjectClass *) (SPObjectGroupClass::static_parent_class))->order_changed) { - (* ((SPObjectClass *) (SPObjectGroupClass::static_parent_class))->order_changed)(object, child, old_ref, new_ref); - } - - object->requestModified(SP_OBJECT_MODIFIED_FLAG); + ((SPObjectGroup*)object)->cobjectgroup->onOrderChanged(child, old_ref, new_ref); } -Inkscape::XML::Node *SPObjectGroup::write(SPObject *object, Inkscape::XML::Document *xml_doc, Inkscape::XML::Node *repr, guint flags) -{ - SP_OBJECTGROUP(object); // Ensure we have the right type of SPObject +Inkscape::XML::Node *CObjectGroup::onWrite(Inkscape::XML::Document *xml_doc, Inkscape::XML::Node *repr, guint flags) { + SPObjectGroup* object = this->spobjectgroup; if (flags & SP_OBJECT_WRITE_BUILD) { if (!repr) { @@ -109,13 +129,16 @@ Inkscape::XML::Node *SPObjectGroup::write(SPObject *object, Inkscape::XML::Docum } } - if (((SPObjectClass *) (SPObjectGroupClass::static_parent_class))->write) { - ((SPObjectClass *) (SPObjectGroupClass::static_parent_class))->write(object, xml_doc, repr, flags); - } + CObject::onWrite(xml_doc, repr, flags); return repr; } +Inkscape::XML::Node *SPObjectGroup::write(SPObject *object, Inkscape::XML::Document *xml_doc, Inkscape::XML::Node *repr, guint flags) +{ + return ((SPObjectGroup*)object)->cobjectgroup->onWrite(xml_doc, repr, flags); +} + /* Local Variables: mode:c++ |
