Skip to content
Projeler
Gruplar
Parçacıklar
Yardım
Yükleniyor...
Oturum aç / Kaydol
Gezinmeyi değiştir
C
core
Proje
Proje
Ayrıntılar
Etkinlik
Cycle Analytics
Depo (repository)
Depo (repository)
Dosyalar
Kayıtlar (commit)
Dallar (branch)
Etiketler
Katkıda bulunanlar
Grafik
Karşılaştır
Grafikler
Konular (issue)
0
Konular (issue)
0
Liste
Pano
Etiketler
Kilometre Taşları
Birleştirme (merge) Talepleri
0
Birleştirme (merge) Talepleri
0
CI / CD
CI / CD
İş akışları (pipeline)
İşler
Zamanlamalar
Grafikler
Paketler
Paketler
Wiki
Wiki
Parçacıklar
Parçacıklar
Üyeler
Üyeler
Collapse sidebar
Close sidebar
Etkinlik
Grafik
Grafikler
Yeni bir konu (issue) oluştur
İşler
Kayıtlar (commit)
Konu (issue) Panoları
Kenar çubuğunu aç
LibreOffice
core
Commits
9857c639
Kaydet (Commit)
9857c639
authored
Mar 31, 2015
tarafından
Caolán McNamara
Dosyalara gözat
Seçenekler
Dosyalara Gözat
İndir
Eposta Yamaları
Sade Fark
crashtest: crash on layout of novell622972-2.html
Change-Id: I49be59a9b9cdda8f80b6579f393be0a99f231833
üst
debf3ffb
Hide whitespace changes
Inline
Side-by-side
Showing
3 changed files
with
50 additions
and
15 deletions
+50
-15
flowfrm.hxx
sw/source/core/inc/flowfrm.hxx
+34
-0
flowfrm.cxx
sw/source/core/layout/flowfrm.cxx
+9
-14
layact.cxx
sw/source/core/layout/layact.cxx
+7
-1
No files found.
sw/source/core/inc/flowfrm.hxx
Dosyayı görüntüle @
9857c639
...
...
@@ -62,6 +62,7 @@ class SwFlowFrm
friend
inline
void
TableSplitRecalcUnlock
(
SwFlowFrm
*
);
// #i44049#
friend
class
SwObjectFormatterTxtFrm
;
friend
class
JoinLockGuard
;
// TblSel is allowed to reset the follow-bit
friend
inline
void
UnsetFollow
(
SwFlowFrm
*
pFlow
);
...
...
@@ -234,6 +235,39 @@ inline bool SwFlowFrm::IsFwdMoveAllowed()
{
return
m_rThis
.
GetIndPrev
()
!=
0
;
}
//use this to protect a SwLayoutFrm for a given scope from getting merged with
//its neighbour and thus deleted
class
JoinLockGuard
{
private
:
SwFlowFrm
*
m_pFlow
;
bool
m_bOldJoinLocked
;
public
:
//JoinLock pParent for the lifetime of the Cut/Paste call, etc. to avoid
//SwSectionFrm::MergeNext removing the pParent we're trying to reparent
//into
JoinLockGuard
(
SwLayoutFrm
*
pFrm
)
{
m_pFlow
=
SwFlowFrm
::
CastFlowFrm
(
pFrm
);
if
(
m_pFlow
)
{
m_bOldJoinLocked
=
m_pFlow
->
IsJoinLocked
();
m_pFlow
->
LockJoin
();
}
else
{
m_bOldJoinLocked
=
false
;
}
}
~
JoinLockGuard
()
{
if
(
m_pFlow
&&
!
m_bOldJoinLocked
)
m_pFlow
->
UnlockJoin
();
}
};
#endif
/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
sw/source/core/layout/flowfrm.cxx
Dosyayı görüntüle @
9857c639
...
...
@@ -574,23 +574,18 @@ void SwFlowFrm::MoveSubTree( SwLayoutFrm* pParent, SwFrm* pSibling )
SwPageFrm
*
pOldPage
=
m_rThis
.
FindPageFrm
();
//JoinLock pParent for the lifetime of the Cut/Paste call to avoid
//SwSectionFrm::MergeNext removing the pParent we're trying to reparent
//into
bool
bOldJoinLocked
(
false
);
SwFlowFrm
*
pParentFlow
=
SwFlowFrm
::
CastFlowFrm
(
pParent
);
if
(
pParentFlow
)
SwLayoutFrm
*
pOldParent
;
bool
bInvaLay
;
{
bOldJoinLocked
=
pParentFlow
->
IsJoinLocked
();
pParentFlow
->
LockJoin
();
//JoinLock pParent for the lifetime of the Cut/Paste call to avoid
//SwSectionFrm::MergeNext removing the pParent we're trying to reparent
//into
JoinLockGuard
aJoinGuard
(
pParent
);
pOldParent
=
CutTree
(
&
m_rThis
);
bInvaLay
=
PasteTree
(
&
m_rThis
,
pParent
,
pSibling
,
pOldParent
);
}
SwLayoutFrm
*
pOldParent
=
CutTree
(
&
m_rThis
);
const
bool
bInvaLay
=
PasteTree
(
&
m_rThis
,
pParent
,
pSibling
,
pOldParent
);
if
(
pParentFlow
&&
!
bOldJoinLocked
)
pParentFlow
->
UnlockJoin
();
// If, by cutting & pasting, an empty SectionFrm came into existence, it should
// disappear automatically.
SwSectionFrm
*
pSct
;
...
...
sw/source/core/layout/layact.cxx
Dosyayı görüntüle @
9857c639
...
...
@@ -1239,7 +1239,13 @@ bool SwLayAction::FormatLayout( SwLayoutFrm *pLay, bool bAddRect )
aOldRect
=
static_cast
<
SwPageFrm
*>
(
pLay
)
->
GetBoundRect
();
}
pLay
->
Calc
();
{
//JoinLock pParent for the lifetime of the Calc call to avoid
//SwSectionFrm::MergeNext removing the pLay we're trying to Format
JoinLockGuard
aJoinGuard
(
pLay
);
pLay
->
Calc
();
}
if
(
aOldFrame
!=
pLay
->
Frm
()
)
bChanged
=
true
;
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment