diff -urb koffice/lib/kofficecore/koDocument.cc koffice-orig/lib/kofficecore/koDocument.cc --- koffice/lib/kofficecore/koDocument.cc Tue Aug 15 17:33:34 2000 +++ koffice-orig/lib/kofficecore/koDocument.cc Wed Aug 23 18:31:04 2000 @@ -362,8 +362,8 @@ if ( (QWidget *)it.current() == widget ) { QPoint canvasPos( it.current()->canvas()->mapFromGlobal( globalPos ) ); - canvasPos.rx() -= it.current()->canvasXOffset(); - canvasPos.ry() -= it.current()->canvasYOffset(); + canvasPos.rx() += it.current()->canvasXOffset(); + canvasPos.ry() += it.current()->canvasYOffset(); KParts::Part *part = it.current()->hitTest( canvasPos ); if ( part ) diff -urb koffice/lib/kofficecore/koView.cc koffice-orig/lib/kofficecore/koView.cc --- koffice/lib/kofficecore/koView.cc Sat Jul 29 09:47:41 2000 +++ koffice-orig/lib/kofficecore/koView.cc Thu Aug 17 15:41:12 2000 @@ -239,35 +239,9 @@ { if ( child->isRectangle() && !child->isTransparent() ) { - KoFrame *frame = new KoFrame( canvas() ); - KoView *view = child->document()->createView( frame ); - view->setXMLGUIBuildDocument( child->document()->viewBuildDocument( view ) ); - - view->setPartManager( partManager() ); - - // hack? (Werner) - view->setZoom( zoom() * QMAX(child->xScaling(), child->yScaling()) ); - - QRect geom = child->geometry(); - frame->setGeometry( geom.x() * zoom(), geom.y() * zoom(), - geom.width() * zoom(), geom.height() * zoom() ); - frame->setView( view ); - frame->show(); - frame->raise(); - KoViewChild *viewChild = new KoViewChild( child, frame ); - /* - geom = frame->geometry(); - viewChild->setGeometry( geom );*/ - /* - viewChild->setGeometry( QRect( geom.x() - view->leftBorder(), - geom.y() - view->topBorder(), - geom.width() + view->rightBorder(), - geom.height() + view->bottomBorder() ) ); - */ + KoViewChild *viewChild = new KoViewChild( child, this ); d->m_children.append( viewChild ); - connect( view, SIGNAL( activated( bool ) ), this, SLOT( slotChildActivated( bool ) ) ); - - d->m_manager->setActivePart( child->document(), view ); + d->m_manager->setActivePart( child->document(), viewChild->frame()->view() ); } else { @@ -460,17 +434,47 @@ bool m_bLock; }; -KoViewChild::KoViewChild( KoDocumentChild *child, KoFrame *frame ) +KoViewChild::KoViewChild( KoDocumentChild *child, KoView *_parentView ) { d = new KoViewChildPrivate; d->m_bLock = false; + m_parentView = _parentView; m_child = child; - m_frame = frame; + + m_frame = new KoFrame( parentView()->canvas() ); + KoView *view = child->document()->createView( m_frame ); + view->setXMLGUIBuildDocument( child->document()->viewBuildDocument( view ) ); + + view->setPartManager( parentView()->partManager() ); + + // hack? (Werner) + view->setZoom( parentView()->zoom() * QMAX(child->xScaling(), child->yScaling()) ); + + QRect geom = child->geometry(); + m_frame->setGeometry( geom.x() * parentView()->zoom() - parentView()->canvasXOffset(), + geom.y() * parentView()->zoom() - parentView()->canvasYOffset(), + geom.width() * parentView()->zoom(), + geom.height() * parentView()->zoom() ); + m_frame->setView( view ); + m_frame->show(); + m_frame->raise(); + /* + geom = frame->geometry(); + viewChild->setGeometry( geom );*/ + /* + viewChild->setGeometry( QRect( geom.x() - view->leftBorder(), + geom.y() - view->topBorder(), + geom.width() + view->rightBorder(), + geom.height() + view->bottomBorder() ) ); + */ + slotFrameGeometryChanged(); connect( m_frame, SIGNAL( geometryChanged() ), this, SLOT( slotFrameGeometryChanged() ) ); connect( m_child, SIGNAL( changed( KoChild * ) ), this, SLOT( slotDocGeometryChanged() ) ); + connect( view, SIGNAL( activated( bool ) ), + parentView(), SLOT( slotChildActivated( bool ) ) ); } KoViewChild::~KoViewChild() @@ -487,12 +491,12 @@ { QRect geom = m_frame->geometry(); int b = m_frame->border(); - QRect borderRect( geom.x() + b, - geom.y() + b, + QRect borderRect( geom.x() + b + parentView()->canvasXOffset(), + geom.y() + b + parentView()->canvasYOffset(), geom.width() - b * 2, geom.height() - b * 2 ); - QRect borderLessRect( geom.x() + m_frame->leftBorder(), - geom.y() + m_frame->topBorder(), + QRect borderLessRect( geom.x() + m_frame->leftBorder() + parentView()->canvasXOffset(), + geom.y() + m_frame->topBorder() + parentView()->canvasYOffset(), geom.width() - m_frame->leftBorder() - m_frame->rightBorder(), geom.height() - m_frame->topBorder() - m_frame->bottomBorder() ); setGeometry( borderRect ); @@ -503,8 +507,8 @@ void KoViewChild::slotDocGeometryChanged() { QRect geom = m_child->geometry(); - QRect borderRect( geom.x() - m_frame->leftBorder(), - geom.y() - m_frame->topBorder(), + QRect borderRect( geom.x() - m_frame->leftBorder() - parentView()->canvasXOffset(), + geom.y() - m_frame->topBorder() - parentView()->canvasYOffset(), geom.width() + m_frame->leftBorder() + m_frame->rightBorder(), geom.height() + m_frame->topBorder() + m_frame->bottomBorder() ); m_frame->setGeometry( borderRect ); diff -urb koffice/lib/kofficecore/koView.h koffice-orig/lib/kofficecore/koView.h --- koffice/lib/kofficecore/koView.h Sat Jul 29 09:47:41 2000 +++ koffice-orig/lib/kofficecore/koView.h Thu Aug 17 15:36:52 2000 @@ -286,10 +286,11 @@ { Q_OBJECT public: - KoViewChild( KoDocumentChild *child, KoFrame *frame ); + KoViewChild( KoDocumentChild *child, KoView *_parentView ); virtual ~KoViewChild(); KoDocumentChild *documentChild() const { return m_child; } + KoView *parentView() const { return m_parentView; } KoFrame *frame() const { return m_frame; } private slots: @@ -298,6 +299,7 @@ private: QGuardedPtr m_child; QGuardedPtr m_frame; + QGuardedPtr m_parentView; class KoViewChildPrivate; KoViewChildPrivate *d; }; diff -urb koffice/kword/kword_view.cc koffice-orig/kword/kword_view.cc --- koffice/kword/kword_view.cc Tue Aug 15 13:45:38 2000 +++ koffice-orig/kword/kword_view.cc Thu Aug 17 15:40:29 2000 @@ -2804,7 +2804,7 @@ /*================================================================*/ QWidget* KWordView::canvas() { - return gui->getPaperWidget(); + return gui->getPaperWidget()->viewport(); } /*================================================================*/