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
185dae19
Kaydet (Commit)
185dae19
authored
Kas 19, 2014
tarafından
Caolán McNamara
Dosyalara gözat
Seçenekler
Dosyalara Gözat
İndir
Eposta Yamaları
Sade Fark
Resolves: fdo#86451 guard all the tops post pop
Change-Id: Ic89edb94c6c12a66fd46e0630115a458857cc6cc
üst
9a038e5e
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
85 additions
and
71 deletions
+85
-71
rtfdocumentimpl.cxx
writerfilter/source/rtftok/rtfdocumentimpl.cxx
+85
-71
No files found.
writerfilter/source/rtftok/rtfdocumentimpl.cxx
Dosyayı görüntüle @
185dae19
...
...
@@ -5790,7 +5790,7 @@ int RTFDocumentImpl::popState()
case
DESTINATION_PARAGRAPHNUMBERING
:
{
RTFValue
::
Pointer_t
pIdValue
=
aState
.
aTableAttributes
.
find
(
NS_ooxml
::
LN_CT_AbstractNum_nsid
);
if
(
pIdValue
.
get
())
if
(
pIdValue
.
get
()
&&
!
m_aStates
.
empty
()
)
{
// Abstract numbering
RTFSprms
aLeveltextAttributes
;
...
...
@@ -5859,87 +5859,98 @@ int RTFDocumentImpl::popState()
}
break
;
case
DESTINATION_PARAGRAPHNUMBERING_TEXTAFTER
:
{
// FIXME: don't use pDestinationText, points to popped state
RTFValue
::
Pointer_t
pValue
(
new
RTFValue
(
aState
.
aDestinationText
.
makeStringAndClear
(),
true
));
m_aStates
.
top
().
aTableAttributes
.
set
(
NS_ooxml
::
LN_CT_LevelSuffix_val
,
pValue
);
}
if
(
!
m_aStates
.
empty
())
{
// FIXME: don't use pDestinationText, points to popped state
RTFValue
::
Pointer_t
pValue
(
new
RTFValue
(
aState
.
aDestinationText
.
makeStringAndClear
(),
true
));
m_aStates
.
top
().
aTableAttributes
.
set
(
NS_ooxml
::
LN_CT_LevelSuffix_val
,
pValue
);
}
break
;
case
DESTINATION_PARAGRAPHNUMBERING_TEXTBEFORE
:
{
// FIXME: don't use pDestinationText, points to popped state
RTFValue
::
Pointer_t
pValue
(
new
RTFValue
(
aState
.
aDestinationText
.
makeStringAndClear
(),
true
));
m_aStates
.
top
().
aTableAttributes
.
set
(
NS_ooxml
::
LN_CT_LevelText_val
,
pValue
);
}
if
(
!
m_aStates
.
empty
())
{
// FIXME: don't use pDestinationText, points to popped state
RTFValue
::
Pointer_t
pValue
(
new
RTFValue
(
aState
.
aDestinationText
.
makeStringAndClear
(),
true
));
m_aStates
.
top
().
aTableAttributes
.
set
(
NS_ooxml
::
LN_CT_LevelText_val
,
pValue
);
}
break
;
case
DESTINATION_LISTNAME
:
break
;
case
DESTINATION_LISTLEVEL
:
{
RTFValue
::
Pointer_t
pInnerValue
(
new
RTFValue
(
m_aStates
.
top
().
nListLevelNum
++
));
aState
.
aTableAttributes
.
set
(
NS_ooxml
::
LN_CT_Lvl_ilvl
,
pInnerValue
);
if
(
!
m_aStates
.
empty
())
{
RTFValue
::
Pointer_t
pInnerValue
(
new
RTFValue
(
m_aStates
.
top
().
nListLevelNum
++
));
aState
.
aTableAttributes
.
set
(
NS_ooxml
::
LN_CT_Lvl_ilvl
,
pInnerValue
);
RTFValue
::
Pointer_t
pValue
(
new
RTFValue
(
aState
.
aTableAttributes
,
aState
.
aTableSprms
));
if
(
m_aStates
.
top
().
nDestinationState
!=
DESTINATION_LFOLEVEL
)
m_aStates
.
top
().
aListLevelEntries
.
set
(
NS_ooxml
::
LN_CT_AbstractNum_lvl
,
pValue
,
OVERWRITE_NO_APPEND
);
else
m_aStates
.
top
().
aTableSprms
.
set
(
NS_ooxml
::
LN_CT_NumLvl_lvl
,
pValue
);
}
RTFValue
::
Pointer_t
pValue
(
new
RTFValue
(
aState
.
aTableAttributes
,
aState
.
aTableSprms
));
if
(
m_aStates
.
top
().
nDestinationState
!=
DESTINATION_LFOLEVEL
)
m_aStates
.
top
().
aListLevelEntries
.
set
(
NS_ooxml
::
LN_CT_AbstractNum_lvl
,
pValue
,
OVERWRITE_NO_APPEND
);
else
m_aStates
.
top
().
aTableSprms
.
set
(
NS_ooxml
::
LN_CT_NumLvl_lvl
,
pValue
);
}
break
;
case
DESTINATION_LFOLEVEL
:
{
RTFValue
::
Pointer_t
pInnerValue
(
new
RTFValue
(
m_aStates
.
top
().
nListLevelNum
++
));
aState
.
aTableAttributes
.
set
(
NS_ooxml
::
LN_CT_NumLvl_ilvl
,
pInnerValue
);
if
(
!
m_aStates
.
empty
())
{
RTFValue
::
Pointer_t
pInnerValue
(
new
RTFValue
(
m_aStates
.
top
().
nListLevelNum
++
));
aState
.
aTableAttributes
.
set
(
NS_ooxml
::
LN_CT_NumLvl_ilvl
,
pInnerValue
);
RTFValue
::
Pointer_t
pValue
(
new
RTFValue
(
aState
.
aTableAttributes
,
aState
.
aTableSprms
));
m_aStates
.
top
().
aTableSprms
.
set
(
NS_ooxml
::
LN_CT_Num_lvlOverride
,
pValue
);
}
RTFValue
::
Pointer_t
pValue
(
new
RTFValue
(
aState
.
aTableAttributes
,
aState
.
aTableSprms
));
m_aStates
.
top
().
aTableSprms
.
set
(
NS_ooxml
::
LN_CT_Num_lvlOverride
,
pValue
);
}
break
;
// list override table
case
DESTINATION_LISTOVERRIDEENTRY
:
{
if
(
m_aStates
.
top
().
nDestinationState
==
DESTINATION_LISTOVERRIDEENTRY
)
{
// copy properties upwards so upper popState inserts it
m_aStates
.
top
().
aTableAttributes
=
aState
.
aTableAttributes
;
m_aStates
.
top
().
aTableSprms
=
aState
.
aTableSprms
;
}
else
if
(
!
m_aStates
.
empty
())
{
RTFValue
::
Pointer_t
pValue
(
new
RTFValue
(
aState
.
aTableAttributes
,
aState
.
aTableSprms
));
m_aListTableSprms
.
set
(
NS_ooxml
::
LN_CT_Numbering_num
,
pValue
,
OVERWRITE_NO_APPEND
);
if
(
m_aStates
.
top
().
nDestinationState
==
DESTINATION_LISTOVERRIDEENTRY
)
{
// copy properties upwards so upper popState inserts it
m_aStates
.
top
().
aTableAttributes
=
aState
.
aTableAttributes
;
m_aStates
.
top
().
aTableSprms
=
aState
.
aTableSprms
;
}
else
{
RTFValue
::
Pointer_t
pValue
(
new
RTFValue
(
aState
.
aTableAttributes
,
aState
.
aTableSprms
));
m_aListTableSprms
.
set
(
NS_ooxml
::
LN_CT_Numbering_num
,
pValue
,
OVERWRITE_NO_APPEND
);
}
}
}
break
;
case
DESTINATION_LEVELTEXT
:
{
RTFValue
::
Pointer_t
pValue
(
new
RTFValue
(
aState
.
aTableAttributes
));
m_aStates
.
top
().
aTableSprms
.
set
(
NS_ooxml
::
LN_CT_Lvl_lvlText
,
pValue
);
}
if
(
!
m_aStates
.
empty
())
{
RTFValue
::
Pointer_t
pValue
(
new
RTFValue
(
aState
.
aTableAttributes
));
m_aStates
.
top
().
aTableSprms
.
set
(
NS_ooxml
::
LN_CT_Lvl_lvlText
,
pValue
);
}
break
;
case
DESTINATION_LEVELNUMBERS
:
m_aStates
.
top
().
aTableSprms
=
aState
.
aTableSprms
;
if
(
!
m_aStates
.
empty
())
m_aStates
.
top
().
aTableSprms
=
aState
.
aTableSprms
;
break
;
case
DESTINATION_FIELDINSTRUCTION
:
m_aStates
.
top
().
nFieldStatus
=
FIELD_INSTRUCTION
;
if
(
!
m_aStates
.
empty
())
m_aStates
.
top
().
nFieldStatus
=
FIELD_INSTRUCTION
;
break
;
case
DESTINATION_FIELDRESULT
:
m_aStates
.
top
().
nFieldStatus
=
FIELD_RESULT
;
if
(
!
m_aStates
.
empty
())
m_aStates
.
top
().
nFieldStatus
=
FIELD_RESULT
;
break
;
case
DESTINATION_FIELD
:
if
(
aState
.
nFieldStatus
==
FIELD_INSTRUCTION
)
singleChar
(
0x15
);
break
;
case
DESTINATION_SHAPEPROPERTYVALUEPICT
:
{
m_aStates
.
top
().
aPicture
=
aState
.
aPicture
;
// both \sp and \sv are destinations, copy the text up-ward for later
m_aStates
.
top
().
aDestinationText
=
aState
.
aDestinationText
;
}
if
(
!
m_aStates
.
empty
())
{
m_aStates
.
top
().
aPicture
=
aState
.
aPicture
;
// both \sp and \sv are destinations, copy the text up-ward for later
m_aStates
.
top
().
aDestinationText
=
aState
.
aDestinationText
;
}
break
;
case
DESTINATION_FALT
:
m_aStates
.
top
().
aTableSprms
=
aState
.
aTableSprms
;
if
(
!
m_aStates
.
empty
())
m_aStates
.
top
().
aTableSprms
=
aState
.
aTableSprms
;
break
;
case
DESTINATION_SHAPEPROPERTYNAME
:
case
DESTINATION_SHAPEPROPERTYVALUE
:
...
...
@@ -5970,27 +5981,30 @@ int RTFDocumentImpl::popState()
}
break
;
case
DESTINATION_SHAPETEXT
:
// If we're leaving the shapetext group (it may have nested ones) and this is a shape, not an old drawingobject.
if
(
m_aStates
.
top
().
nDestinationState
!=
DESTINATION_SHAPETEXT
&&
!
m_aStates
.
top
().
aDrawingObject
.
bHadShapeText
)
if
(
!
m_aStates
.
empty
())
{
m_aStates
.
top
().
bHadShapeText
=
true
;
if
(
!
m_aStates
.
top
().
pCurrentBuffer
)
m_pSdrImport
->
close
();
else
m_aStates
.
top
().
pCurrentBuffer
->
push_back
(
Buf_t
(
BUFFER_ENDSHAPE
));
}
// It's allowed to declare these inside the shape text, and they
// are expected to have an effect for the whole shape.
if
(
aState
.
aDrawingObject
.
nLeft
)
m_aStates
.
top
().
aDrawingObject
.
nLeft
=
aState
.
aDrawingObject
.
nLeft
;
if
(
aState
.
aDrawingObject
.
nTop
)
m_aStates
.
top
().
aDrawingObject
.
nTop
=
aState
.
aDrawingObject
.
nTop
;
if
(
aState
.
aDrawingObject
.
nRight
)
m_aStates
.
top
().
aDrawingObject
.
nRight
=
aState
.
aDrawingObject
.
nRight
;
if
(
aState
.
aDrawingObject
.
nBottom
)
m_aStates
.
top
().
aDrawingObject
.
nBottom
=
aState
.
aDrawingObject
.
nBottom
;
// If we're leaving the shapetext group (it may have nested ones) and this is a shape, not an old drawingobject.
if
(
m_aStates
.
top
().
nDestinationState
!=
DESTINATION_SHAPETEXT
&&
!
m_aStates
.
top
().
aDrawingObject
.
bHadShapeText
)
{
m_aStates
.
top
().
bHadShapeText
=
true
;
if
(
!
m_aStates
.
top
().
pCurrentBuffer
)
m_pSdrImport
->
close
();
else
m_aStates
.
top
().
pCurrentBuffer
->
push_back
(
Buf_t
(
BUFFER_ENDSHAPE
));
}
// It's allowed to declare these inside the shape text, and they
// are expected to have an effect for the whole shape.
if
(
aState
.
aDrawingObject
.
nLeft
)
m_aStates
.
top
().
aDrawingObject
.
nLeft
=
aState
.
aDrawingObject
.
nLeft
;
if
(
aState
.
aDrawingObject
.
nTop
)
m_aStates
.
top
().
aDrawingObject
.
nTop
=
aState
.
aDrawingObject
.
nTop
;
if
(
aState
.
aDrawingObject
.
nRight
)
m_aStates
.
top
().
aDrawingObject
.
nRight
=
aState
.
aDrawingObject
.
nRight
;
if
(
aState
.
aDrawingObject
.
nBottom
)
m_aStates
.
top
().
aDrawingObject
.
nBottom
=
aState
.
aDrawingObject
.
nBottom
;
}
break
;
default
:
{
...
...
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