SVN commit 875905 by zander: After the refactor with dataMaps we started seeing various crashes, this fixes the one in KWFrameLayout and removes code in the scripting engine that no longer can work. M +4 -1 part/frames/KWFrameLayout.cpp M +0 -31 plugins/scripting/FrameSet.h M +0 -12 plugins/scripting/Module.cpp M +1 -14 plugins/scripting/Module.h --- trunk/koffice/kword/part/frames/KWFrameLayout.cpp #875904:875905 @@ -499,7 +499,10 @@ Q_ASSERT(page.isValid()); KoShapeFactory *factory = KoShapeRegistry::instance()->value(TextShape_SHAPEID); Q_ASSERT(factory); - KoShape *shape = factory->createDefaultShapeAndInit(m_document->dataCenterMap()); + QMap dataCenterMap; + if (m_document) + dataCenterMap = m_document->dataCenterMap(); + KoShape *shape = factory->createDefaultShapeAndInit(dataCenterMap); shape->setPosition(QPointF(0, page.offsetInDocument())); return shape; } --- trunk/koffice/kword/plugins/scripting/FrameSet.h #875904:875905 @@ -95,37 +95,6 @@ return 0; } - /** Add and return a new \a Frame to this frameset using the shape - defined with the \p shapeId identifier. */ - QObject* addFrame(const QString& shapeId) { - KoShapeFactory *factory = KoShapeRegistry::instance()->value(shapeId); - if (! factory) { - kWarning(32010) << "Scripting::Module::addFrame() Invalid shapeId: " << shapeId << endl; - return 0; - } - // FIXME check if it is ok to pass an empty map. The shape might not work and crash the program - QMap dataCenterMap; - KoShape *shape = factory->createDefaultShapeAndInit( dataCenterMap ); - Q_ASSERT(shape); - shape->setZIndex(100 + m_frameset->frameCount()); - KWFrame* frame = 0; - KWTextFrameSet* textframeset = dynamic_cast((KWFrameSet*)m_frameset); - if (textframeset) - frame = new KWTextFrame(shape, textframeset); - else - frame = new KWFrame(shape, m_frameset); - return new Frame(this, frame); - } - - /** Add and return a new \a Frame to this frameset which has the - shapeId KoTextShape_SHAPEID and is used to display the \a TextDocument . */ - QObject* addTextFrame() { - return addFrame(TextShape_SHAPEID); - } - - //void addFrame(KWFrame *frame); - //void removeFrame(KWFrame *frame); - /** Return the \a TextDocument object or NULL if this frameset does not have a \a TextDocument object. */ QObject* document() { --- trunk/koffice/kword/plugins/scripting/Module.cpp #875904:875905 @@ -185,18 +185,6 @@ return 0; } -QObject* Module::addTextFrame(const QString& framesetname) -{ - FrameSet* set = dynamic_cast< FrameSet* >(addTextFrameSet(framesetname)); - return set ? set->addTextFrame() : 0; -} - -QObject* Module::addFrame(const QString& framesetname, const QString& shapeId) -{ - FrameSet* set = dynamic_cast< FrameSet* >(addFrameSet(framesetname)); - return set ? set->addFrame(shapeId) : 0; -} - QObject* Module::findFrameSet(KWord::TextFrameSetType type) { foreach(KWFrameSet* set, kwDoc()->frameSets()) { --- trunk/koffice/kword/plugins/scripting/Module.h #875904:875905 @@ -167,19 +167,6 @@ /** Return a the \a Frame object identified by the index frameNr. */ QObject* frame(int frameNr); - /** Add and return a new \a FrameSet object for text handled with \a TextDocument . - * - * Python sample code; - * \code - * import KWord - * textshape = KWord.addTextFrame("MyTextShape") - * textshape.document().setText("Some text") - * \endcode - */ - QObject* addTextFrame(const QString& framesetname); - /** Add and return a new \a FrameSet object. */ - QObject* addFrame(const QString& framesetname, const QString& shapeId); - /***** Page Layout *****/ /** Return the standard page layout. */ @@ -206,7 +193,7 @@ QObject* tool(); private: - /// \internal d-pointer class. + /// \internal d-pointer class. (TODO: remove the dpointer, just overhead for non-exported class) class Private; /// \internal d-pointer instance. Private* const d;