Kaydet (Commit) 82fafc47 authored tarafından Oliver-Rainer Wittmann's avatar Oliver-Rainer Wittmann

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.
üst cc147840
...@@ -2459,12 +2459,14 @@ const SwFrmFmt* SwFEShell::GetFlyNum(sal_uInt16 nIdx, FlyCntType eType ) const ...@@ -2459,12 +2459,14 @@ const SwFrmFmt* SwFEShell::GetFlyNum(sal_uInt16 nIdx, FlyCntType eType ) const
return GetDoc()->GetFlyNum(nIdx, eType ); return GetDoc()->GetFlyNum(nIdx, eType );
} }
// zeige das akt. selektierte "Object" an // zeige das akt. selektierte "Object" an
void SwFEShell::MakeSelVisible() void SwFEShell::MakeSelVisible()
{ {
if( Imp()->HasDrawView() && if ( Imp()->HasDrawView() &&
Imp()->GetDrawView()->GetMarkedObjectList().GetMarkCount() ) Imp()->GetDrawView()->GetMarkedObjectList().GetMarkCount() )
{ {
GetCurrFrm(); // just to trigger formatting in case the selected object is not formatted.
MakeVisible( Imp()->GetDrawView()->GetAllMarkedRect() ); MakeVisible( Imp()->GetDrawView()->GetAllMarkedRect() );
} }
else else
......
...@@ -2223,39 +2223,9 @@ void SwFrm::AppendFly( SwFlyFrm *pNew ) ...@@ -2223,39 +2223,9 @@ void SwFrm::AppendFly( SwFlyFrm *pNew )
pDrawObjs->Insert( *pNew ); pDrawObjs->Insert( *pNew );
pNew->ChgAnchorFrm( this ); pNew->ChgAnchorFrm( this );
//Bei der Seite anmelden; kann sein, dass noch keine da ist - die SwPageFrm* pPage = FindPageFrm();
//Anmeldung wird dann in SwPageFrm::PreparePage durch gefuehrt. if ( pPage != NULL )
SwPageFrm *pPage = FindPageFrm();
if ( pPage )
{
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 );
} }
} }
......
...@@ -680,6 +680,7 @@ void SwTextShell::ExecInsert(SfxRequest &rReq) ...@@ -680,6 +680,7 @@ void SwTextShell::ExecInsert(SfxRequest &rReq)
} }
break; break;
} }
case FN_INSERT_HRULER: case FN_INSERT_HRULER:
{ {
String sPath; String sPath;
...@@ -688,22 +689,22 @@ void SwTextShell::ExecInsert(SfxRequest &rReq) ...@@ -688,22 +689,22 @@ void SwTextShell::ExecInsert(SfxRequest &rReq)
Window* pParent = GetView().GetWindow(); Window* pParent = GetView().GetWindow();
if ( pItem ) if ( pItem )
{ {
sPath = ((SfxStringItem*)pItem)->GetValue(); sPath = ( (SfxStringItem*) pItem )->GetValue();
SFX_REQUEST_ARG( rReq, pSimple, SfxBoolItem, FN_PARAM_1 , sal_False ); SFX_REQUEST_ARG( rReq, pSimple, SfxBoolItem, FN_PARAM_1, sal_False );
if ( pSimple ) if ( pSimple )
bSimpleLine = pSimple->GetValue(); bSimpleLine = pSimple->GetValue();
} }
else else
{ {
SwAbstractDialogFactory* pFact = SwAbstractDialogFactory::Create(); SwAbstractDialogFactory* pFact = SwAbstractDialogFactory::Create();
DBG_ASSERT(pFact, "Dialogdiet fail!"); DBG_ASSERT( pFact, "Dialogdiet fail!" );
AbstractInsertGrfRulerDlg* pDlg = pFact->CreateInsertGrfRulerDlg( DLG_INSERT_RULER, AbstractInsertGrfRulerDlg* pDlg = pFact->CreateInsertGrfRulerDlg( DLG_INSERT_RULER,
pParent ); pParent );
DBG_ASSERT(pDlg, "Dialogdiet fail!"); DBG_ASSERT( pDlg, "Dialogdiet fail!" );
// MessageBox fuer fehlende Grafiken // MessageBox fuer fehlende Grafiken
if(!pDlg->HasImages()) if ( !pDlg->HasImages() )
InfoBox( pParent, SW_RES(MSG_NO_RULER)).Execute(); InfoBox( pParent, SW_RES( MSG_NO_RULER ) ).Execute();
if(RET_OK == pDlg->Execute()) if ( RET_OK == pDlg->Execute() )
{ {
sPath = pDlg->GetGraphicName(); sPath = pDlg->GetGraphicName();
bSimpleLine = pDlg->IsSimpleLine(); bSimpleLine = pDlg->IsSimpleLine();
...@@ -715,39 +716,43 @@ void SwTextShell::ExecInsert(SfxRequest &rReq) ...@@ -715,39 +716,43 @@ void SwTextShell::ExecInsert(SfxRequest &rReq)
} }
rSh.StartAllAction(); rSh.StartAllAction();
rSh.StartUndo(UNDO_UI_INSERT_RULER); rSh.StartUndo( UNDO_UI_INSERT_RULER );
if(bSimpleLine) 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 ); // dann Platz schaffen
rSh.SplitNode( sal_False, sal_False ); rSh.SplitNode( sal_False, sal_False );
rSh.Left(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.SetTxtFmtColl( rSh.GetTxtCollFromPool( RES_POOLCOLL_HTML_HR ) );
rSh.Right(CRSR_SKIP_CHARS, sal_False, 1, sal_False ); rSh.Right( CRSR_SKIP_CHARS, sal_False, 1, sal_False );
bRet = sal_True; bRet = sal_True;
} }
else if(sPath.Len()) else if ( sPath.Len() )
{ {
SwFlyFrmAttrMgr aFrmMgr( sal_True, &rSh, FRMMGR_TYPE_GRF ); SwFlyFrmAttrMgr aFrmMgr( sal_True, &rSh, FRMMGR_TYPE_GRF );
// am FrmMgr muessen die richtigen Parameter eingestellt werden // 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.SplitNode( sal_False, sal_False ); rSh.SplitNode( sal_False, sal_False );
rSh.Left(CRSR_SKIP_CHARS, sal_False, 1, sal_False ); rSh.Left( CRSR_SKIP_CHARS, sal_False, 1, sal_False );
rSh.SetAttrItem(SvxAdjustItem(SVX_ADJUST_CENTER,RES_PARATR_ADJUST )); rSh.SetAttrItem( SvxAdjustItem( SVX_ADJUST_CENTER, RES_PARATR_ADJUST ) );
if(GRFILTER_OK == GetView().InsertGraphic(sPath, aEmptyStr, sal_True, 0, 0 )) 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; bRet = sal_True;
}
rSh.EnterStdMode(); 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.EndAllAction();
rSh.EndUndo(UNDO_UI_INSERT_RULER); rSh.EndUndo( UNDO_UI_INSERT_RULER );
rReq.SetReturnValue(SfxBoolItem(nSlot, bRet)); rReq.SetReturnValue( SfxBoolItem( nSlot, bRet ) );
rReq.Done(); rReq.Done();
} }
break; break;
case FN_FORMAT_COLUMN : case FN_FORMAT_COLUMN :
{ {
SwAbstractDialogFactory* pFact = SwAbstractDialogFactory::Create(); SwAbstractDialogFactory* pFact = SwAbstractDialogFactory::Create();
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment