Re: A warning before a major change.


Subject: Re: A warning before a major change.
From: Dom Lachowicz (cinamod@hotmail.com)
Date: Tue Feb 13 2001 - 23:25:30 CST


Martin,

I get a crash when I try to print these documents, but I can insert and edit
text in the footers just fine, and save (& reload) these documents without
problems. Screenshots and sample docs available upon request. I get an
assert on loading:

( 0 > _findShadow(pPage) at fl_SectionLayout.cpp:1689 **** )

When I segv, I get a fault right here:

#4 0x82859aa in FV_View::getPoint (this=0x0) at fv_View.h:108
#5 0x8111b06 in fl_ShadowListener::populateStrux (this=0x84dba78,
    sdh=0x85275c8, pcr=0x85210f8, psfh=0xbfffe984) at
fl_SectionLayout.cpp:2389

Maybe this will help? I can take a look at the code too, tomorrow.

Dom

>From: Martin Sevior <msevior@mccubbin.ph.unimelb.edu.au>
>To: abiword-dev@abisource.com
>Subject: A warning before a major change.
>Date: Wed, 14 Feb 2001 16:12:46 +1100 (EST)
>
>HI everyone,
> We have a problem with Abiword with page numbers. Right now
>page numbers are contained in a section placed at the end of the document.
>However the size of the document includes the page number sections. This
>means that it is quite possible to to place the cursor at the end of the
>text press "right arrow" and enter the page section. The cursor jumps into
>the fister header/footer and then any text entered will crash Abiword.
>
>Now eventually this will be a cool feature (Entering text directly into
>Abi headers/footers) but it will take some major reworking and in any case
>you should not enter the header/footer sections unless you mean to.
>
>The best way to fix this is to have the code that calculates the size of
>the document not include the the header/footer sections. I've made the
>changes needed in fv_View to do this and have written a new method
>in fv_View called
>
>// TODO find clever way to cache the size of the
>// header/footer region so we can just subtract it off.
>//
>bool FV_View::getEditableBounds(bool isEnd, PT_DocPosition &posEOD)
>
>
>Now this code gets called on every cursor motion in abi so it is important
>to realize that this code should be fast. Right now it adds a bit of extra
>overhead to abi but I think I can come up with code to speed this up via
>caching. Anyway the full code is:
>
>
>//
>// This method keeps the insertion point out of the header/footer end of
>// of the document.
>// TODO find clever way to cache the size of the
>// header/footer region so we can just subtract it off.
>//
>bool FV_View::getEditableBounds(bool isEnd, PT_DocPosition &posEOD)
>{
> bool res;
> if(!isEnd)
> {
> res = m_pDoc->getBounds(isEnd,posEOD);
> return res;
> }
> else
> {
> fl_DocSectionLayout * pSL = m_pLayout->getFirstSection();
> UT_DEBUGMSG(("SEVIOR: Header = %x, Footer = %x
>\n",pSL->getHeader(),pSL->getFooter()));
> while(pSL != NULL && pSL->getHeader()== NULL &&
>pSL->getFooter()== NULL )
> {
> UT_DEBUGMSG(("SEVIOR: Header = %x, Footer = %x
>\n",pSL->getHeader(),pSL->getFooter()));
>
> pSL = pSL->getNextDocSection();
> }
> fl_BlockLayout * pBL;
> if( pSL == NULL || ( pSL->getHeader()== NULL &&
>pSL->getFooter()== NULL ))
> {
> UT_DEBUGMSG(("SEVIOR: NO Header/Footer in doc!
>\n"));
> res = m_pDoc->getBounds(isEnd,posEOD);
> return res;
> }
> if(pSL->getHeader() != NULL)
> {
> pBL = pSL->getHeader()->getFirstBlock();
> }
> else
> {
> pBL = pSL->getFooter()->getFirstBlock();
> }
> UT_DEBUGMSG(("SEVIOR: Header/Footer Exists \n"));
> UT_DEBUGMSG(("SEVIOR: Block Section Type
>\n",pBL->getSectionLayout()->getType()));
> posEOD = pBL->getPosition( true);
> pBL = _findBlockAtPosition(posEOD);
> while(pBL->getSectionLayout()->getType() == FL_SECTION_HDRFTR)
> {
> posEOD--;
> pBL = _findBlockAtPosition(posEOD);
> UT_DEBUGMSG(("SEVIOR: Block Section Type
>\n",pBL->getSectionLayout()->getType()));
> }
> posEOD--;
> return res;
> }
>}
>
>Cheers
>
>Martin
>
>
>

_________________________________________________________________
Get your FREE download of MSN Explorer at http://explorer.msn.com



This archive was generated by hypermail 2b25 : Tue Feb 13 2001 - 23:25:33 CST