[prev in list] [next in list] [prev in thread] [next in thread]
List: kde-commits
Subject: branches/KDE/3.5/kdelibs/kate/part
From: Guillermo Antonio Amaral Bastidas <me () guillermoamaral ! com>
Date: 2007-06-20 23:44:45
Message-ID: 1182383085.411219.14422.nullmailer () svn ! kde ! org
[Download RAW message or body]
SVN commit 678255 by gamaral:
Added new KateDocument::updateModified() code
M +52 -79 katedocument.cpp
--- branches/KDE/3.5/kdelibs/kate/part/katedocument.cpp #678254:678255
@@ -1559,94 +1559,63 @@
A numeric unique pattern is generated by toggleing a set of bits,
each bit symbolizes a different state in the Undo Redo structure.
- lastUndoGroupWhenSaved != null BIT 1
- lastRedoGroupWhenSaved != null BIT 2
+ undoItems.isEmpty() != null BIT 1
+ redoItems.isEmpty() != null BIT 2
docWasSavedWhenUndoWasEmpty == true BIT 3
docWasSavedWhenRedoWasEmpty == true BIT 4
- undoItems.isEmpty() == true BIT 5
- redoItems.isEmpty() == true BIT 6
- undoItems.last() != null BIT 7
- redoItems.last() != null BIT 8
+ lastUndoGroupWhenSavedIsLastUndo BIT 5
+ lastUndoGroupWhenSavedIsLastRedo BIT 6
+ lastRedoGroupWhenSavedIsLastUndo BIT 7
+ lastRedoGroupWhenSavedIsLastRedo BIT 8
- Since there is still a change that a pattern might repeat I also
- created a set of modifies.
-
- lastUndoGroupWhenSavedIsLastUndo MOD 1
- lastUndoGroupWhenSavedIsLastRedo MOD 2
- lastRedoGroupWhenSavedIsLastUndo MOD 3
- lastRedoGroupWhenSavedIsLastRedo MOD 4
+ If you find a new pattern, please add it to the patterns array
*/
- bool doModify = false;
- unsigned char pattern = 0;
+ unsigned char currentPattern = 0;
+ const unsigned char patterns[] = {5,16,24,26,88,90,93,133,144,149,165};
+ const unsigned char patternCount = sizeof(patterns);
+ KateUndoGroup* undoLast = 0;
+ KateUndoGroup* redoLast = 0;
- if (lastUndoGroupWhenSaved) pattern |= 1;
- if (lastRedoGroupWhenSaved) pattern |= 2;
- if (docWasSavedWhenUndoWasEmpty) pattern |= 4;
- if (docWasSavedWhenRedoWasEmpty) pattern |= 8;
- if (undoItems.isEmpty()) pattern |= 16;
- if (redoItems.isEmpty()) pattern |= 32;
- if (undoItems.last()) pattern |= 64;
- if (redoItems.last()) pattern |= 128;
+ if (undoItems.isEmpty())
+ {
+ currentPattern |= 1;
+ }
+ else
+ {
+ undoLast = undoItems.last();
+ }
- const bool lastUndoGroupWhenSavedIsLastUndo = (lastUndoGroupWhenSaved == undoItems.last());
- const bool lastUndoGroupWhenSavedIsLastRedo = (lastUndoGroupWhenSaved == redoItems.last());
- const bool lastRedoGroupWhenSavedIsLastUndo = (lastRedoGroupWhenSaved == undoItems.last());
- const bool lastRedoGroupWhenSavedIsLastRedo = (lastRedoGroupWhenSaved == redoItems.last());
+ if (redoItems.isEmpty())
+ {
+ currentPattern |= 2;
+ }
+ else
+ {
+ redoLast = redoItems.last();
+ }
+ if (docWasSavedWhenUndoWasEmpty) currentPattern |= 4;
+ if (docWasSavedWhenRedoWasEmpty) currentPattern |= 8;
+ if (lastUndoGroupWhenSaved == undoLast) currentPattern |= 16;
+ if (lastUndoGroupWhenSaved == redoLast) currentPattern |= 32;
+ if (lastRedoGroupWhenSaved == undoLast) currentPattern |= 64;
+ if (lastRedoGroupWhenSaved == redoLast) currentPattern |= 128;
+
// This will print out the pattern information
kdDebug(13020) << k_funcinfo
- << "Pattern:" << static_cast<unsigned int>(pattern)
- << " MOD 1:" << lastUndoGroupWhenSavedIsLastUndo
- << " MOD 2:" << lastUndoGroupWhenSavedIsLastRedo
- << " MOD 3:" << lastRedoGroupWhenSavedIsLastUndo
- << " MOD 4:" << lastRedoGroupWhenSavedIsLastRedo << endl;
+ << "Pattern:" << static_cast<unsigned int>(currentPattern) << endl;
- /*
- Detected Patterns:
-
- Pattern:103 MOD 1:false MOD 2:false MOD 3:false MOD 4:false
- Pattern:105 MOD 1:true MOD 2:false MOD 3:false MOD 4:true
- Pattern:148 MOD 1:false MOD 2:false MOD 3:false MOD 4:false
- Pattern:149 MOD 1:false MOD 2:true MOD 3:false MOD 4:false
- Pattern:149 MOD 1:false MOD 2:false MOD 3:true MOD 4:false
- Pattern:159 MOD 1:false MOD 2:true MOD 3:false MOD 4:false
- Pattern:156 MOD 1:false MOD 2:false MOD 3:false MOD 4:false
- Pattern:195 MOD 1:true MOD 2:false MOD 3:false MOD 4:true
- Pattern:201 MOD 1:true MOD 2:false MOD 3:false MOD 4:false
- Pattern:223 MOD 1:true MOD 2:false MOD 3:false MOD 4:false
-
- */
-
- switch (pattern)
+ for (uint patternIndex = 0; patternIndex < patternCount; ++patternIndex)
{
- // No MODS are true
- case 103: case 148: case 149: case 156:
- doModify = true;
+ if ( currentPattern == patterns[patternIndex] )
+ {
+ setModified( false );
+ kdDebug(13020) << k_funcinfo << "setting modified to false!" << endl;
break;
-
- // Only MOD 1 is true
- case 201: case 223:
- doModify = (lastUndoGroupWhenSavedIsLastUndo);
- break;
-
- // Only MOD 2 is true
- case 151:
- doModify = (lastUndoGroupWhenSavedIsLastRedo);
- break;
-
- // MOD 1 and MOD 4 are true
- case 105: case 195:
- doModify = (lastUndoGroupWhenSavedIsLastUndo && lastRedoGroupWhenSavedIsLastRedo);
- break;
+ }
}
-
- if (doModify)
- {
- setModified( false );
- kdDebug(13020) << k_funcinfo << "setting modified to false!" << endl;
- };
}
void KateDocument::clearUndo()
@@ -2876,14 +2845,18 @@
emit modifiedChanged ();
emit modStateChanged ((Kate::Document *)this);
}
- if ( m == false && ! undoItems.isEmpty() )
- {
- lastUndoGroupWhenSaved = undoItems.last();
- lastRedoGroupWhenSaved = redoItems.last();
- }
-
if ( m == false )
{
+ if ( ! undoItems.isEmpty() )
+ {
+ lastUndoGroupWhenSaved = undoItems.last();
+ }
+
+ if ( ! redoItems.isEmpty() )
+ {
+ lastRedoGroupWhenSaved = redoItems.last();
+ }
+
docWasSavedWhenUndoWasEmpty = undoItems.isEmpty();
docWasSavedWhenRedoWasEmpty = redoItems.isEmpty();
}
[prev in list] [next in list] [prev in thread] [next in thread]
Configure |
About |
News |
Add a list |
Sponsored by KoreLogic