sw/source/core/frmedt/feshview.cxx | 6 +++- sw/source/core/layout/fly.cxx | 36 ++------------------------- sw/source/ui/shells/textsh.cxx | 49 ++++++++++++++++++++----------------- 3 files changed, 34 insertions(+), 57 deletions(-)
New commits: commit 82fafc47de0c59c783c5df596c976a429ff8a21d Author: Oliver-Rainer Wittmann <o...@apache.org> Date: Tue Jul 15 12:15:37 2014 +0000 121443: - register text frames and graphics on the correct page frame - trigger formatting of selected object when moving view to the selected object or when graphical horizontal line has been inserted. diff --git a/sw/source/core/frmedt/feshview.cxx b/sw/source/core/frmedt/feshview.cxx index e26c904..ccb2314 100644 --- a/sw/source/core/frmedt/feshview.cxx +++ b/sw/source/core/frmedt/feshview.cxx @@ -2459,12 +2459,14 @@ const SwFrmFmt* SwFEShell::GetFlyNum(sal_uInt16 nIdx, FlyCntType eType ) const return GetDoc()->GetFlyNum(nIdx, eType ); } + // zeige das akt. selektierte "Object" an void SwFEShell::MakeSelVisible() { - if( Imp()->HasDrawView() && - Imp()->GetDrawView()->GetMarkedObjectList().GetMarkCount() ) + if ( Imp()->HasDrawView() && + Imp()->GetDrawView()->GetMarkedObjectList().GetMarkCount() ) { + GetCurrFrm(); // just to trigger formatting in case the selected object is not formatted. MakeVisible( Imp()->GetDrawView()->GetAllMarkedRect() ); } else diff --git a/sw/source/core/layout/fly.cxx b/sw/source/core/layout/fly.cxx index 839f677..6b569b1 100644 --- a/sw/source/core/layout/fly.cxx +++ b/sw/source/core/layout/fly.cxx @@ -2223,40 +2223,10 @@ void SwFrm::AppendFly( SwFlyFrm *pNew ) pDrawObjs->Insert( *pNew ); pNew->ChgAnchorFrm( this ); - //Bei der Seite anmelden; kann sein, dass noch keine da ist - die - //Anmeldung wird dann in SwPageFrm::PreparePage durch gefuehrt. - SwPageFrm *pPage = FindPageFrm(); - if ( pPage ) + SwPageFrm* pPage = FindPageFrm(); + if ( pPage != NULL ) { - if ( pNew->IsFlyAtCntFrm() && pNew->Frm().Top() == WEIT_WECH ) - { - //Versuch die Seitenformatierung von neuen Dokumenten etwas - //guenstiger zu gestalten. - //Wir haengen die Flys erstenmal nach hinten damit sie bei heftigem - //Fluss der Anker nicht unoetig oft formatiert werden. - //Damit man noch brauchbar an das Ende des Dokumentes springen - //kann werden die Flys nicht ganz an das Ende gehaengt. - SwRootFrm *pRoot = (SwRootFrm*)pPage->GetUpper(); - if( !SwLayHelper::CheckPageFlyCache( pPage, pNew ) ) - { - SwPageFrm *pTmp = pRoot->GetLastPage(); - if ( pTmp->GetPhyPageNum() > 30 ) - { - for ( sal_uInt16 i = 0; i < 10; ++i ) - { - pTmp = (SwPageFrm*)pTmp->GetPrev(); - if( pTmp->GetPhyPageNum() <= pPage->GetPhyPageNum() ) - break; // damit wir nicht vor unserem Anker landen - } - if ( pTmp->IsEmptyPage() ) - pTmp = (SwPageFrm*)pTmp->GetPrev(); - pPage = pTmp; - } - } - pPage->AppendFlyToPage( pNew ); - } - else - pPage->AppendFlyToPage( pNew ); + pPage->AppendFlyToPage( pNew ); } } diff --git a/sw/source/ui/shells/textsh.cxx b/sw/source/ui/shells/textsh.cxx index 746f245..2357b52 100644 --- a/sw/source/ui/shells/textsh.cxx +++ b/sw/source/ui/shells/textsh.cxx @@ -680,6 +680,7 @@ void SwTextShell::ExecInsert(SfxRequest &rReq) } break; } + case FN_INSERT_HRULER: { String sPath; @@ -688,22 +689,22 @@ void SwTextShell::ExecInsert(SfxRequest &rReq) Window* pParent = GetView().GetWindow(); if ( pItem ) { - sPath = ((SfxStringItem*)pItem)->GetValue(); - SFX_REQUEST_ARG( rReq, pSimple, SfxBoolItem, FN_PARAM_1 , sal_False ); + sPath = ( (SfxStringItem*) pItem )->GetValue(); + SFX_REQUEST_ARG( rReq, pSimple, SfxBoolItem, FN_PARAM_1, sal_False ); if ( pSimple ) bSimpleLine = pSimple->GetValue(); } else { SwAbstractDialogFactory* pFact = SwAbstractDialogFactory::Create(); - DBG_ASSERT(pFact, "Dialogdiet fail!"); + DBG_ASSERT( pFact, "Dialogdiet fail!" ); AbstractInsertGrfRulerDlg* pDlg = pFact->CreateInsertGrfRulerDlg( DLG_INSERT_RULER, - pParent ); - DBG_ASSERT(pDlg, "Dialogdiet fail!"); + pParent ); + DBG_ASSERT( pDlg, "Dialogdiet fail!" ); // MessageBox fuer fehlende Grafiken - if(!pDlg->HasImages()) - InfoBox( pParent, SW_RES(MSG_NO_RULER)).Execute(); - if(RET_OK == pDlg->Execute()) + if ( !pDlg->HasImages() ) + InfoBox( pParent, SW_RES( MSG_NO_RULER ) ).Execute(); + if ( RET_OK == pDlg->Execute() ) { sPath = pDlg->GetGraphicName(); bSimpleLine = pDlg->IsSimpleLine(); @@ -715,39 +716,43 @@ void SwTextShell::ExecInsert(SfxRequest &rReq) } rSh.StartAllAction(); - rSh.StartUndo(UNDO_UI_INSERT_RULER); - if(bSimpleLine) + rSh.StartUndo( UNDO_UI_INSERT_RULER ); + if ( bSimpleLine ) { - if(!(rSh.IsSttOfPara() && rSh.IsEndOfPara())) // kein leerer Absatz? + if ( !( rSh.IsSttOfPara() && rSh.IsEndOfPara() ) ) // kein leerer Absatz? rSh.SplitNode( sal_False, sal_False ); // dann Platz schaffen rSh.SplitNode( sal_False, sal_False ); - rSh.Left(CRSR_SKIP_CHARS, sal_False, 1, sal_False ); - rSh.SetTxtFmtColl( rSh.GetTxtCollFromPool( RES_POOLCOLL_HTML_HR )); - rSh.Right(CRSR_SKIP_CHARS, sal_False, 1, sal_False ); + rSh.Left( CRSR_SKIP_CHARS, sal_False, 1, sal_False ); + rSh.SetTxtFmtColl( rSh.GetTxtCollFromPool( RES_POOLCOLL_HTML_HR ) ); + rSh.Right( CRSR_SKIP_CHARS, sal_False, 1, sal_False ); bRet = sal_True; } - else if(sPath.Len()) + else if ( sPath.Len() ) { SwFlyFrmAttrMgr aFrmMgr( sal_True, &rSh, FRMMGR_TYPE_GRF ); // am FrmMgr muessen die richtigen Parameter eingestellt werden - aFrmMgr.SetAnchor(FLY_AS_CHAR); + aFrmMgr.SetAnchor( FLY_AS_CHAR ); rSh.SplitNode( sal_False, sal_False ); rSh.SplitNode( sal_False, sal_False ); - rSh.Left(CRSR_SKIP_CHARS, sal_False, 1, sal_False ); - rSh.SetAttrItem(SvxAdjustItem(SVX_ADJUST_CENTER,RES_PARATR_ADJUST )); - if(GRFILTER_OK == GetView().InsertGraphic(sPath, aEmptyStr, sal_True, 0, 0 )) + rSh.Left( CRSR_SKIP_CHARS, sal_False, 1, sal_False ); + rSh.SetAttrItem( SvxAdjustItem( SVX_ADJUST_CENTER, RES_PARATR_ADJUST ) ); + if ( GRFILTER_OK == GetView().InsertGraphic( sPath, aEmptyStr, sal_True, 0, 0 ) ) + { + rSh.GetCurrFrm(); // just to trigger formatting in case the inserted graphic is not formatted. bRet = sal_True; + } rSh.EnterStdMode(); - rSh.Right(CRSR_SKIP_CHARS, sal_False, 1, sal_False ); + rSh.Right( CRSR_SKIP_CHARS, sal_False, 1, sal_False ); } rSh.EndAllAction(); - rSh.EndUndo(UNDO_UI_INSERT_RULER); - rReq.SetReturnValue(SfxBoolItem(nSlot, bRet)); + rSh.EndUndo( UNDO_UI_INSERT_RULER ); + rReq.SetReturnValue( SfxBoolItem( nSlot, bRet ) ); rReq.Done(); } break; + case FN_FORMAT_COLUMN : { SwAbstractDialogFactory* pFact = SwAbstractDialogFactory::Create(); _______________________________________________ Libreoffice-commits mailing list libreoffice-comm...@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/libreoffice-commits