Subject: patch - Zoom State Bug
From: Michael D. Pritchett (mpritchett@attglobal.net)
Date: Fri Oct 12 2001 - 13:56:58 CDT
problem:  Open a document and change the zoom.  Document is now marked as
dirty???
reason:  FV_View constructor calls a setCharFormat to change the language -
which is a zero length span.  This attempts to update the undo_position, but
doesn't need to as it append to previous fmt tag.  Unfortunately the
save_position does get incremented causing a dirty document.
fix:  Either find a better place to do the setCharFormat or handle the case
that if the undo_position doesn't increment neither should the
save_position.  The patch below takes the second approach.
I don't think it breaks anything else, but as I don't know this area of code
that well, I am posting to the list instead of comitting.  If I hear
nothing, I will commit by default.
Cheers!
Michael D. Pritchett
Here is the patch:
Index: pt_PT_ChangeSpan.cpp
===================================================================
RCS file: /cvsroot/abi/src/text/ptbl/xp/pt_PT_ChangeSpan.cpp,v
retrieving revision 1.32
diff -u -r1.32 pt_PT_ChangeSpan.cpp
--- pt_PT_ChangeSpan.cpp 2001/09/11 04:18:41 1.32
+++ pt_PT_ChangeSpan.cpp 2001/10/12 18:32:06
@@ -355,11 +355,13 @@
  }
  if (dpos1 == dpos2)   // if length of change is zero, then we have a
toggle format.
  {
+  UT_uint32 startUndoPos = m_history.getUndoPos();
   bool bRes = _insertFmtMarkFragWithNotify(ptc,dpos1,attributes,lProps);
+  UT_uint32 endUndoPos = m_history.getUndoPos();
   // Won't be a persistant change if it's just a toggle
   PX_ChangeRecord *pcr=0;
   m_history.getUndo(&pcr);
-  if (pcr)
+  if (pcr && (startUndoPos != endUndoPos) )
   {
    UT_DEBUGMSG(("Setting persistance of change to false\n"));
    pcr->setPersistance(false);
This archive was generated by hypermail 2b25 : Fri Oct 12 2001 - 14:01:07 CDT