Ejemplo n.º 1
0
void KWFrameGeometry::updateShape()
{
    if (m_blockSignals) return;
    KWFrame *frame = m_frame;
    if (frame == 0) {
        frame = m_state->frame();
        m_state->markFrameUsed();
    }
    Q_ASSERT(frame);
    frame->shape()->update();
    KShape *shape = frame->shape();
    QPointF currentPos(shape->absolutePosition(widget.positionSelector->position()));
    QPointF pos(widget.xPos->value(), widget.yPos->value() + m_topOfPage);
    QPointF moved = pos - currentPos;
    QPointF prev(moved);
    m_state->document()->clipToDocument(frame->shape(), moved);
    pos = currentPos + moved;

    frame->shape()->setAbsolutePosition(pos, widget.positionSelector->position());
    QSizeF size(widget.width->value(), widget.height->value());
    frame->shape()->setSize(size);

    KWTextFrame *tfs = dynamic_cast <KWTextFrame*>(frame);
    if (tfs) {
        KInsets insets(widget.topMargin->value(), widget.leftMargin->value(),
                widget.bottomMargin->value(), widget.rightMargin->value());
        tfs->setInsets(insets);
    }

    frame->shape()->update();
}