These patches are against 072500 sources and are all XP. Tested on
Linux.
The first patch loosens up the preferences scheme a bit by allowing a
preference value which is not in the _builtin_ set if the preference
name begins with the prefix "debug" (case insensitive). The idea is
that developers can use this to selectively trigger behavior that is
really only appropriate at "develop time". Previously, you could set
any preference value you wanted, but you got an ASSERT at preferences
save time for items not in _builtin_. Now, you still get the ASSERT
if the name doesn't start with "debug", but there is a UT_DEBUGMSG
mentioning the item right before the ASSERT (so you will be able to
correct the typo you just made :-). The patch also supplies a trivial
new function UT_XML_strnicmp()
The second patch is a new patch that mostly duplicates the patch I
sent for background checks a few days ago. I'm sending it to make my
kNCSL number look good. :-) It also fixes a few legitimate pieces of
compiler lint.
--
[EMAIL PROTECTED] (WJCarpenter) PGP 0x91865119
38 95 1B 69 C9 C6 3D 25 73 46 32 04 69 D6 ED F3
diff -ru abi-072500-ORIG/src/af/util/xp/ut_string.cpp
abi-072500/src/af/util/xp/ut_string.cpp
--- abi-072500-ORIG/src/af/util/xp/ut_string.cpp Sun Jul 16 19:04:34 2000
+++ abi-072500/src/af/util/xp/ut_string.cpp Tue Jul 25 21:21:06 2000
@@ -169,6 +169,12 @@
return UT_stricmp(sz1,sz2);
}
+UT_sint32 UT_XML_strnicmp(const XML_Char * sz1, const XML_Char * sz2, const UT_uint32
+n)
+{
+ UT_ASSERT(sizeof(char) == sizeof(XML_Char));
+ return UT_strnicmp(sz1,sz2, n);
+}
+
UT_sint32 UT_XML_strcmp(const XML_Char * sz1, const XML_Char * sz2)
{
UT_ASSERT(sizeof(char) == sizeof(XML_Char));
diff -ru abi-072500-ORIG/src/af/util/xp/ut_string.h
abi-072500/src/af/util/xp/ut_string.h
--- abi-072500-ORIG/src/af/util/xp/ut_string.h Wed Jul 5 20:05:18 2000
+++ abi-072500/src/af/util/xp/ut_string.h Tue Jul 25 21:29:05 2000
@@ -52,6 +52,7 @@
UT_Bool UT_XML_cloneList(XML_Char **& rszDest, const XML_Char ** szSource);
UT_Bool UT_XML_replaceList(XML_Char **& rszDest, const XML_Char ** szSource);
UT_sint32 UT_XML_stricmp(const XML_Char * sz1, const XML_Char * sz2);
+UT_sint32 UT_XML_strnicmp(const XML_Char * sz1, const XML_Char * sz2, const UT_uint32
+n);
UT_sint32 UT_XML_strcmp(const XML_Char * sz1, const XML_Char * sz2);
UT_uint32 UT_XML_strncpy(XML_Char * szDest, UT_uint32 nLen, const XML_Char *
szSource);
diff -ru abi-072500-ORIG/src/af/xap/xp/xap_Prefs.cpp
abi-072500/src/af/xap/xp/xap_Prefs.cpp
--- abi-072500-ORIG/src/af/xap/xp/xap_Prefs.cpp Fri Jul 7 16:46:50 2000
+++ abi-072500/src/af/xap/xp/xap_Prefs.cpp Tue Jul 25 22:55:13 2000
@@ -25,6 +25,7 @@
#include "ut_debugmsg.h"
#include "ut_growbuf.h"
+#include "ut_string.h"
#include "xap_Prefs.h"
/*****************************************************************/
@@ -393,6 +394,8 @@
}
/*****************************************************************/
+static const XML_Char DEBUG_PREFIX[] = "DeBuG"; // case insensitive
+static const XML_Char NO_PREF_VALUE[] = "";
UT_Bool XAP_Prefs::getPrefsValue(const XML_Char * szKey, const XML_Char ** pszValue)
const
{
@@ -404,6 +407,14 @@
return UT_TRUE;
if (m_builtinScheme->getValue(szKey,pszValue))
return UT_TRUE;
+ // It is legal for there to be arbitrary preference tags that start with
+ // "Debug", and Abi apps won't choke. The idea is that developers can use
+ // these to selectively trigger development-time behaviors.
+ if (UT_XML_strnicmp(szKey, DEBUG_PREFIX, sizeof(DEBUG_PREFIX) - 1) == 0)
+ {
+ *pszValue = NO_PREF_VALUE;
+ return UT_TRUE;
+ }
UT_ASSERT(UT_SHOULD_NOT_HAPPEN);
return UT_FALSE;
@@ -419,6 +430,14 @@
return UT_TRUE;
if (m_builtinScheme->getValueBool(szKey,pbValue))
return UT_TRUE;
+ // It is legal for there to be arbitrary preference tags that start with
+ // "Debug", and Abi apps won't choke. The idea is that developers can use
+ // these to selectively trigger development-time behaviors.
+ if (UT_XML_strnicmp(szKey, DEBUG_PREFIX, sizeof(DEBUG_PREFIX) - 1) == 0)
+ {
+ *pbValue = UT_FALSE;
+ return UT_TRUE;
+ }
UT_ASSERT(UT_SHOULD_NOT_HAPPEN);
return UT_FALSE;
@@ -898,9 +917,17 @@
{
// for non-builtin sets, we only print the
values which are different
// from the builtin set.
- const XML_Char * szBuiltinValue;
+ const XML_Char * szBuiltinValue =
+NO_PREF_VALUE;
UT_Bool bHaveBuiltinValue =
m_builtinScheme->getValue(szKey,&szBuiltinValue);
- UT_ASSERT(bHaveBuiltinValue);
+ if (UT_XML_strnicmp(szKey, DEBUG_PREFIX,
+sizeof(DEBUG_PREFIX) - 1))
+ {
+ UT_DEBUGMSG(("Strange preference
+'%s=\"%s\"', ASSERT follows...\n", szKey, szValue));
+ UT_ASSERT(bHaveBuiltinValue);
+ }
+ else
+ {
+ need_print = UT_TRUE; // always print
+"Debug..." values
+ }
if (UT_XML_strcmp(szValue,szBuiltinValue) != 0)
need_print = UT_TRUE;
}
diff -ru abi-072500-ORIG/src/text/fmt/xp/fl_BlockLayout.cpp
abi-072500/src/text/fmt/xp/fl_BlockLayout.cpp
--- abi-072500-ORIG/src/text/fmt/xp/fl_BlockLayout.cpp Mon Jul 24 17:20:07 2000
+++ abi-072500/src/text/fmt/xp/fl_BlockLayout.cpp Tue Jul 25 21:24:34 2000
@@ -21,6 +21,7 @@
#include <stdlib.h>
#include <string.h>
#include <ctype.h>
+#include <unistd.h>
#include "fl_BlockLayout.h"
#include "fl_Layout.h"
@@ -95,7 +96,8 @@
m_bStartList = UT_FALSE;
m_bStopList = UT_FALSE;
m_bListLabelCreated = UT_FALSE;
- m_bCursorErased = UT_FALSE;
+ m_bCursorErased = UT_FALSE;
+ m_uBackgroundCheckReasons = 0;
m_pLayout = m_pSectionLayout->getDocLayout();
m_pDoc = m_pLayout->getDocument();
@@ -2964,7 +2966,7 @@
}
// in case we've never checked this one
- m_pLayout->dequeueBlock(this);
+ m_pLayout->dequeueBlockForBackgroundCheck(this);
FV_View* pView = pSL->getDocLayout()->getView();
if (pView)
@@ -3219,8 +3221,8 @@
{
// this block may never have been checked
// just to be safe, let's make sure both will
- m_pLayout->queueBlockForSpell(this);
- m_pLayout->queueBlockForSpell(pNewBL);
+ m_pLayout->queueBlockForBackgroundCheck(FL_DocLayout::bgcrSpelling,
+this);
+ m_pLayout->queueBlockForBackgroundCheck(FL_DocLayout::bgcrSpelling,
+pNewBL);
}
return UT_TRUE;
@@ -4222,7 +4224,33 @@
m_bStopList = bValue;
}
+void fl_BlockLayout::debugFlashing(void)
+{
+ // Trivial background checker which puts on and takes off squiggles from
+ // the entire block that's being checked. This sort of messes up the
+ // spelling squiggles, but it's just a debug thing anyhow. Enable it
+ // by setting a preference DebugFlash="1"
+ UT_DEBUGMSG(("fl_BlockLayout::debugFlashing() was called\n"));
+ UT_GrowBuf pgb(1024);
+ UT_Bool bRes = getBlockBuf(&pgb);
+ UT_ASSERT(bRes);
+
+ UT_uint32 eor = pgb.getLength(); /* end of region */
+
+ FV_View* pView = m_pLayout->getView();
+
+ _addSquiggle(0, eor, UT_FALSE);
+ pView->_eraseInsertionPoint();
+ pView->updateScreen();
+ pView->_drawInsertionPoint();
+ usleep(250000);
+ //_deleteSquiggles(0, eor);
+ pView->_eraseInsertionPoint();
+ pView->updateScreen();
+ pView->_drawInsertionPoint();
+ return;
+}
diff -ru abi-072500-ORIG/src/text/fmt/xp/fl_BlockLayout.h
abi-072500/src/text/fmt/xp/fl_BlockLayout.h
--- abi-072500-ORIG/src/text/fmt/xp/fl_BlockLayout.h Sun Jul 16 13:13:51 2000
+++ abi-072500/src/text/fmt/xp/fl_BlockLayout.h Tue Jul 25 21:00:40 2000
@@ -215,6 +215,7 @@
void checkForEndOnForcedBreak(void);
void checkSpelling(void);
+ void debugFlashing(void);
UT_Bool findNextTabStop(UT_sint32 iStartX, UT_sint32 iMaxX, UT_sint32&
iPosition, unsigned char& iType);
UT_Bool findNextTabStopInLayoutUnits(UT_sint32 iStartX, UT_sint32 iMaxX,
UT_sint32& iPosition, unsigned char& iType);
inline UT_sint32 getDefaultTabInterval(void) const { return
m_iDefaultTabInterval; }
@@ -270,6 +271,14 @@
static UT_Bool s_EnumTabStops(void * myThis, UT_uint32 k,
UT_sint32 & iPosition, unsigned char & iType, UT_uint32 & iOffset);
+ inline void addBackgroundCheckReason(UT_uint32 reason)
+{m_uBackgroundCheckReasons |= reason;}
+ inline void removeBackgroundCheckReason(UT_uint32 reason)
+{m_uBackgroundCheckReasons &= ~reason;}
+ inline UT_Bool hasBackgroundCheckReason(UT_uint32 reason) const
+{return (m_uBackgroundCheckReasons & reason);}
+
+ // The following is a set of bit flags giving the reason this block is
+ // queued for background checking. See specific values in fl_DocLayout.h
+ UT_uint32 m_uBackgroundCheckReasons;
+
#ifdef FMT_TEST
void __dump(FILE * fp) const;
#endif
@@ -386,6 +395,7 @@
// spell check stuff
UT_Vector m_vecSquiggles;
+
};
/*
diff -ru abi-072500-ORIG/src/text/fmt/xp/fl_DocLayout.cpp
abi-072500/src/text/fmt/xp/fl_DocLayout.cpp
--- abi-072500-ORIG/src/text/fmt/xp/fl_DocLayout.cpp Wed Jul 19 18:12:52 2000
+++ abi-072500/src/text/fmt/xp/fl_DocLayout.cpp Tue Jul 25 21:00:40 2000
@@ -49,17 +49,18 @@
m_pDoc = doc;
m_pG = pG;
m_pView = NULL;
- m_pSpellCheckTimer = NULL;
+ m_pBackgroundCheckTimer = NULL;
m_pPendingBlock = NULL;
m_pPendingWord = NULL;
m_pFirstSection = NULL;
m_pLastSection = NULL;
- m_bAutoSpellCheck = UT_FALSE;
m_bSpellCheckCaps = UT_TRUE;
m_bSpellCheckNumbers = UT_TRUE;
m_bSpellCheckInternet = UT_TRUE;
m_pPrefs = NULL;
+ m_uBackgroundCheckReasons = 0;
+
m_pRedrawUpdateTimer = UT_Timer::static_constructor(_redrawUpdate, this, m_pG);
if (m_pRedrawUpdateTimer)
{
@@ -93,12 +94,12 @@
DELETEP(m_pDocListener);
- if (m_pSpellCheckTimer)
+ if (m_pBackgroundCheckTimer)
{
- m_pSpellCheckTimer->stop();
+ m_pBackgroundCheckTimer->stop();
}
- DELETEP(m_pSpellCheckTimer);
+ DELETEP(m_pBackgroundCheckTimer);
DELETEP(m_pPendingWord);
if (m_pRedrawUpdateTimer)
@@ -150,6 +151,11 @@
// keep updating itself
pPrefs->addListener ( _prefsListener, this );
+ UT_Bool b;
+ if (m_pPrefs->getPrefsValueBool("DebugFlash",&b))
+ {
+ addBackgroundCheckReason(bgcrDebugFlash);
+ }
}
}
}
@@ -526,29 +532,24 @@
}
#endif
-#define SPELL_CHECK_MSECS 100
+#define BACKGROUND_CHECK_MSECS 100
void FL_DocLayout::_toggleAutoSpell(UT_Bool bSpell)
{
- UT_Bool bOldAutoSpell = m_bAutoSpellCheck;
- m_bAutoSpellCheck = bSpell;
+ UT_Bool bOldAutoSpell = getAutoSpellCheck();
+ if (bSpell)
+ {
+ addBackgroundCheckReason(bgcrSpelling);
+ }
+ else
+ {
+ removeBackgroundCheckReason(bgcrSpelling);
+ }
UT_DEBUGMSG(("FL_DocLayout::_toggleAutoSpell (%s)\n", bSpell ? "UT_TRUE" :
"UT_FALSE" ));
if (bSpell)
{
- // make sure the timer is started
- if (!m_pSpellCheckTimer)
- {
- m_pSpellCheckTimer = UT_Timer::static_constructor(_spellCheck,
this, m_pG);
- if (m_pSpellCheckTimer)
- m_pSpellCheckTimer->set(SPELL_CHECK_MSECS);
- }
- else
- {
- m_pSpellCheckTimer->start();
- }
-
// recheck the whole doc
fl_DocSectionLayout * pSL = getFirstSection();
while (pSL)
@@ -558,7 +559,7 @@
{
// TODO: just check and remove matching squiggles
// for now, destructively recheck the whole thing
- queueBlockForSpell(b, UT_FALSE);
+ queueBlockForBackgroundCheck(bgcrSpelling, b);
b = b->getNext();
}
pSL = (fl_DocSectionLayout *) pSL->getNext();
@@ -566,10 +567,6 @@
}
else
{
- // make sure the timer is stopped
- if (m_pSpellCheckTimer)
- m_pSpellCheckTimer->stop();
-
// remove the squiggles, too
fl_DocSectionLayout * pSL = getFirstSection();
while (pSL)
@@ -593,7 +590,7 @@
}
}
-void FL_DocLayout::_spellCheck(UT_Timer * pTimer)
+void FL_DocLayout::_backgroundCheck(UT_Timer * pTimer)
{
UT_ASSERT(pTimer);
@@ -609,6 +606,10 @@
return;
}
+ // prevent getting a new timer hit before we've finished this one by
+ // temporarily disabling the timer
+ pDocLayout->m_pBackgroundCheckTimer->stop();
+
UT_Vector* vecToCheck = &pDocLayout->m_vecUncheckedBlocks;
UT_ASSERT(vecToCheck);
@@ -620,43 +621,71 @@
if (pB != NULL)
{
- vecToCheck->deleteNthItem(0);
- i--;
-
- // note that we remove this block from queue before
checking it
- // (otherwise asserts could trigger redundant recursive
calls)
- pB->checkSpelling();
+ for (unsigned int bitdex=0;
+bitdex<8*sizeof(pB->m_uBackgroundCheckReasons); ++bitdex)
+ {
+ // This looping seems like a lot of wasted effort when
+we
+ // don't define meaning for most of the bits, but it's
+small
+ // effort compared to all that squiggle stuff that
+goes on
+ // for the spelling stuff.
+ UT_uint32 mask;
+ mask = (1 << bitdex);
+ if (pB->hasBackgroundCheckReason(mask))
+ {
+ // note that we remove this reason from
+queue before checking it
+ // (otherwise asserts could trigger
+redundant recursive calls)
+ pB->removeBackgroundCheckReason(mask);
+ switch (mask)
+ {
+ case bgcrDebugFlash:
+ pB->debugFlashing();
+ break;
+ case bgcrSpelling:
+ pB->checkSpelling();
+ break;
+ case bgcrSmartQuotes:
+ default:
+ break;
+ }
+ }
+ }
+ if (!pB->m_uBackgroundCheckReasons)
+ {
+ vecToCheck->deleteNthItem(0);
+ i--;
+ }
}
}
- if (i == 0)
+ if (i != 0)
{
- // timer not needed any more, so suspend it
- pDocLayout->m_pSpellCheckTimer->stop();
+ // restart timer unless it's not needed any more
+ pDocLayout->m_pBackgroundCheckTimer->start();
}
}
-void FL_DocLayout::queueBlockForSpell(fl_BlockLayout *pBlock, UT_Bool bHead)
+void FL_DocLayout::queueBlockForBackgroundCheck(UT_uint32 reason, fl_BlockLayout
+*pBlock, UT_Bool bHead)
{
/*
- This routine queues up blocks for timer-driven spell checking.
+ This routine queues up blocks for timer-driven spell checking, etc.
By default, this is a FIFO queue, but it can be explicitly
reprioritized by setting bHead == UT_TRUE.
*/
+ if (!m_pBackgroundCheckTimer)
+ {
+ m_pBackgroundCheckTimer =
+UT_Timer::static_constructor(_backgroundCheck, this, m_pG);
+ if (m_pBackgroundCheckTimer)
+ m_pBackgroundCheckTimer->set(BACKGROUND_CHECK_MSECS);
+ }
+ else
+ {
+ m_pBackgroundCheckTimer->start();
+ }
- if (m_bAutoSpellCheck)
+ if (hasBackgroundCheckReason(bgcrDebugFlash))
{
- if (!m_pSpellCheckTimer)
- {
- m_pSpellCheckTimer = UT_Timer::static_constructor(_spellCheck,
this, m_pG);
- if (m_pSpellCheckTimer)
- m_pSpellCheckTimer->set(SPELL_CHECK_MSECS);
- }
- else
- {
- m_pSpellCheckTimer->start();
- }
+ pBlock->addBackgroundCheckReason(bgcrDebugFlash);
}
+ pBlock->addBackgroundCheckReason(reason);
UT_sint32 i = m_vecUncheckedBlocks.findItem(pBlock);
@@ -676,7 +705,7 @@
}
}
-void FL_DocLayout::dequeueBlock(fl_BlockLayout *pBlock)
+void FL_DocLayout::dequeueBlockForBackgroundCheck(fl_BlockLayout *pBlock)
{
UT_sint32 i = m_vecUncheckedBlocks.findItem(pBlock);
@@ -688,7 +717,7 @@
// when queue is empty, kill timer
if (m_vecUncheckedBlocks.getItemCount() == 0)
{
- m_pSpellCheckTimer->stop();
+ m_pBackgroundCheckTimer->stop();
}
}
diff -ru abi-072500-ORIG/src/text/fmt/xp/fl_DocLayout.h
abi-072500/src/text/fmt/xp/fl_DocLayout.h
--- abi-072500-ORIG/src/text/fmt/xp/fl_DocLayout.h Sun Jul 9 11:11:52 2000
+++ abi-072500/src/text/fmt/xp/fl_DocLayout.h Tue Jul 25 21:00:40 2000
@@ -126,8 +126,8 @@
void setPendingWord(fl_BlockLayout *pBlock, fl_PartOfBlock* pWord);
UT_Bool checkPendingWord(void);
- void queueBlockForSpell(fl_BlockLayout *pBlock, UT_Bool
bHead=UT_FALSE);
- void dequeueBlock(fl_BlockLayout *pBlock);
+ void queueBlockForBackgroundCheck(UT_uint32 reason, fl_BlockLayout
+*pBlock, UT_Bool bHead=UT_FALSE);
+ void dequeueBlockForBackgroundCheck(fl_BlockLayout *pBlock);
void addSection(fl_DocSectionLayout*);
void removeSection(fl_DocSectionLayout*);
@@ -141,13 +141,27 @@
void deleteEmptyPages(void);
- UT_Bool getAutoSpellCheck(void) const { return m_bAutoSpellCheck; }
+ UT_Bool getAutoSpellCheck(void) const { return
+(hasBackgroundCheckReason(bgcrSpelling)); }
UT_Bool getSpellCheckCaps(void) const { return m_bSpellCheckCaps; }
UT_Bool getSpellCheckNumbers(void) const { return
m_bSpellCheckNumbers; }
UT_Bool getSpellCheckInternet(void) const { return
m_bSpellCheckInternet; }
void recheckIgnoredWords();
+ inline void addBackgroundCheckReason(UT_uint32 reason)
+{m_uBackgroundCheckReasons |= reason;}
+ inline void removeBackgroundCheckReason(UT_uint32 reason)
+{m_uBackgroundCheckReasons &= ~reason;}
+ inline UT_Bool hasBackgroundCheckReason(UT_uint32 reason) const
+{return (m_uBackgroundCheckReasons & reason);}
+ inline UT_uint32 getBackgroundCheckReasons() const {return
+(m_uBackgroundCheckReasons);}
+
+ // These are used as bit flags in a UT_uint32. The enum is here just
+ // to get the namespace protection.
+ enum backgroundCheckReason
+ {
+ bgcrDebugFlash = (1 << 0),
+ bgcrSpelling = (1 << 1),
+ bgcrSmartQuotes = (1 << 2)
+ };
+
#ifdef FMT_TEST
static FL_DocLayout* m_pDocLayout;
@@ -155,7 +169,7 @@
#endif
protected:
- static void _spellCheck(UT_Timer * pTimer);
+ static void _backgroundCheck(UT_Timer * pTimer);
void _toggleAutoSpell(UT_Bool bSpell);
static void _prefsListener(class XAP_App *, class
XAP_Prefs *,
@@ -178,14 +192,15 @@
UT_HashTable m_hashFontCache;
// spell check stuff
- UT_Timer* m_pSpellCheckTimer;
UT_Vector m_vecUncheckedBlocks;
fl_BlockLayout* m_pPendingBlock; // if NULL, then ignore
m_pPendingWord
fl_PartOfBlock* m_pPendingWord;
- UT_Bool m_bAutoSpellCheck;
UT_Bool m_bSpellCheckCaps;
UT_Bool m_bSpellCheckNumbers;
UT_Bool m_bSpellCheckInternet;
+
+ UT_Timer* m_pBackgroundCheckTimer;
+ UT_uint32 m_uBackgroundCheckReasons; // bit flags
XAP_Prefs * m_pPrefs;
diff -ru abi-072500-ORIG/src/text/fmt/xp/fl_DocListener.cpp
abi-072500/src/text/fmt/xp/fl_DocListener.cpp
--- abi-072500-ORIG/src/text/fmt/xp/fl_DocListener.cpp Thu Jul 6 16:42:02 2000
+++ abi-072500/src/text/fmt/xp/fl_DocListener.cpp Tue Jul 25 21:00:40 2000
@@ -241,7 +241,7 @@
// BUGBUG: this is *not* thread-safe, but should work for now
if (m_bScreen)
- m_pLayout->queueBlockForSpell(pBL);
+
+m_pLayout->queueBlockForBackgroundCheck(FL_DocLayout::bgcrSpelling, pBL);
*psfh = (PL_StruxFmtHandle)pBL;
}
diff -ru abi-072500-ORIG/src/text/fmt/xp/fl_SectionLayout.cpp
abi-072500/src/text/fmt/xp/fl_SectionLayout.cpp
--- abi-072500-ORIG/src/text/fmt/xp/fl_SectionLayout.cpp Thu Jul 6 16:42:02
2000
+++ abi-072500/src/text/fmt/xp/fl_SectionLayout.cpp Tue Jul 25 21:00:40 2000
@@ -2006,7 +2006,7 @@
// BUGBUG: this is *not* thread-safe, but should work for now
if (m_bScreen)
- m_pLayout->queueBlockForSpell(pBL);
+ m_pLayout->queueBlockForBackgroundCheck(bgcrSpelling, pBL);
#endif
}
diff -ru abi-072500-ORIG/src/text/fmt/xp/fv_View.cpp
abi-072500/src/text/fmt/xp/fv_View.cpp
--- abi-072500-ORIG/src/text/fmt/xp/fv_View.cpp Mon Jul 24 17:20:07 2000
+++ abi-072500/src/text/fmt/xp/fv_View.cpp Tue Jul 25 21:00:41 2000
@@ -5469,7 +5469,7 @@
{
// TODO: just check and remove matching squiggles
// for now, destructively recheck the whole thing
- m_pLayout->queueBlockForSpell(b, UT_FALSE);
+
+m_pLayout->queueBlockForBackgroundCheck(FL_DocLayout::bgcrSpelling, b);
b = b->getNext();
}
pSL = (fl_DocSectionLayout *) pSL->getNext();
@@ -5505,7 +5505,7 @@
{
// TODO: just check and remove matching squiggles
// for now, destructively recheck the whole thing
- m_pLayout->queueBlockForSpell(b, UT_FALSE);
+
+m_pLayout->queueBlockForBackgroundCheck(FL_DocLayout::bgcrSpelling, b);
b = b->getNext();
}
pSL = (fl_DocSectionLayout *) pSL->getNext();
diff -ru abi-072500-ORIG/src/wp/ap/xp/ap_Dialog_Spell.cpp
abi-072500/src/wp/ap/xp/ap_Dialog_Spell.cpp
--- abi-072500-ORIG/src/wp/ap/xp/ap_Dialog_Spell.cpp Mon Jun 26 14:46:02 2000
+++ abi-072500/src/wp/ap/xp/ap_Dialog_Spell.cpp Tue Jul 25 21:00:41 2000
@@ -128,7 +128,7 @@
// since we're done with this current block, put it
// in the block spell queue so squiggles will be updated
FL_DocLayout * docLayout = m_pSection->getDocLayout();
- docLayout->queueBlockForSpell(m_pBlock, UT_FALSE);
+ docLayout->queueBlockForBackgroundCheck(FL_DocLayout::bgcrSpelling, m_pBlock);
m_pBlock = m_pBlock->getNext();