diff -uNr sw.old/source/core/crsr/trvltbl.cxx sw.new/source/core/crsr/trvltbl.cxx --- sw.old/source/core/crsr/trvltbl.cxx 2007-09-28 17:39:06.000000000 +0800 +++ sw.new/source/core/crsr/trvltbl.cxx 2007-10-17 11:36:42.000000000 +0800 @@ -443,25 +443,26 @@ // ueberpruefe geschuetzte Zellen SwCntntFrm* pFrm; SwNodeIndex aTmp( rIdx, 2 ); // TableNode + StartNode + SwTableNode *pTblNd = rIdx.GetNode().FindTableNode(); SwNodes& rNds = aTmp.GetNode().GetNodes(); SwCntntNode* pCNd = aTmp.GetNode().GetCntntNode(); if( !pCNd ) pCNd = rNds.GoNext( &aTmp ); - if( 0 == ( pFrm = pCNd->GetFrm()) || + if( 0 == ( pFrm = pCNd->GetFrm()) || pCNd->FindTableNode() != pTblNd || (!bInReadOnly && pFrm->IsProtected() )) { SwNode* pNd; for( ;; ) { SwNodeIndex aTxtTmp( aTmp, 1); - if( !( pNd = &aTmp.GetNode())->IsStartNode() ) + if( !( pNd = &aTmp.GetNode())->IsStartNode() && pNd->FindTableNode() == pTblNd ) return pNd; aTmp++; if( 0 == (pCNd = aTmp.GetNode().GetCntntNode()) ) pCNd = rNds.GoNext( &aTmp ); - if( 0 != ( pFrm = pCNd->GetFrm()) && + if( 0 != ( pFrm = pCNd->GetFrm()) && pCNd->FindTableNode() == pTblNd && (bInReadOnly || !pFrm->IsProtected() )) { rIdx = *pNd;