Hi Talen,

Õ»ª¾ü wrote:
[..]
In this case,I think OOo just create one page,after I rejected the insertion and accepted 
the deletion I got an empty page,if we set this page as superfluous and delete it,there 
is no page in this document,I think maybe this is why we got NULL from 
"(SwPageFrm*)GetPrev()".
Writer crashes because the last remaining page gets empty and is removed. This should not happen, but the bug is not that an empty page is removed. The bug is that there is no visible paragraph left. Writer relies on the fact that at least one paragraph is visible. This last paragraph must not be deleted. And if there is one paragraph there is at least one page which is not empty and Writer will not crash.
[..]
I agree with you,but how(or when) can we ramain at least one paragraph(empty or not) 
in design?I have tried to avoid set the page as superfluous,but OOo will crash while 
do SwCrsrShell::UpdateCrsrPos() because after do "SwCntntFrm  *pFrm = pCNode ?
  pCNode->GetFrm( &pCurCrsr->GetPtPos(), pCurCrsr->GetPoint() ) :0;" the pFrm still be 
NULL(pCNode from this sentence"SwCntntNode *pCNode = pCurCrsr->GetCntntNode();"),that is why I 
have this question.
This is too late, we have to avoid the removing of the last SwTxtNode from the nodes array. The SwTxtFrm needs a corresponding SwTxtNode. If you do not remove the last node, at least one SwFrm will stay and the page will not be marked as superfluous. The patch with the AppendTxtNode is not that bad because it tries to avoid the complete removing of nodes but it has side effects (undo, see below).
3.What can I do to fix this issue?Now,I add AppenTxtNode function befor delete last SectionNode to create one new SwFrm
and can avoid this issue,but I don't think it's right or complete method for fixing this issue.
Yes, this fix would assert that at least one paragraph will remain. But this fix would have side-effects, e.g. I imagine that undo would run into trouble afterwards.
I have checked AppendTxtNode function,it will append this operation to UNDO 
list,and I have tested this change,UNDO or REDO is normal.
My first notice with the patch was the following:
opening first document
compare with second document
reject the insertion
accept the deletion
=> the document is empty
undo
redo
=> there is one paragraph with content visible (from the accepted deletion)

Ok, this may be better than the crash but it shows a potential problem.
But I detected another problem:
new document
insert a word
insert a frame
undo
undo => crash

[..]
I propose to have a look into the insertion of the change tracks (SwDoc::AppendRedline()). It is not allowed that the change tracking area covers the whole document. At least one empty paragraph has to be outside these change tracks.
I will investigate this function and try to correct my fixing.
My assumption is that AppendRedline() is fine but the calling function should not span the deletion redline so widely.
[..]
Thanks for your reply again,and awaiting your next reply:)

Best Regards
Talen
Best regards
   Andreas

---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to