[prev in list] [next in list] [prev in thread] [next in thread] 

List:       kde-commits
Subject:    KDE/kdelibs/kate
From:       Hamish Rodda <rodda () kde ! org>
Date:       2005-10-01 4:13:41
Message-ID: 1128140021.404103.3666.nullmailer () svn ! kde ! org
[Download RAW message or body]

SVN commit 465874 by rodda:

Fix bug where previously changed cursors continually thought they were
changed by the last edit


 M  +12 -2     part/katesupercursor.cpp  
 M  +12 -5     tests/kateregression.cpp  


--- trunk/KDE/kdelibs/kate/part/katesupercursor.cpp #465873:465874
@@ -255,7 +255,8 @@
 
 void KateSmartCursor::setPositionInternal( const KTextEditor::Cursor & pos, bool \
internal )  {
-  m_lastPosition = *this;
+  if (m_feedbackEnabled)
+    m_lastPosition = *this;
 
   bool haveToChangeGroups = !m_smartGroup->containsLine(pos.line());
   if (haveToChangeGroups) {
@@ -269,6 +270,9 @@
   if (haveToChangeGroups) {
     m_smartGroup->joined(this);
   }
+
+  if (!m_feedbackEnabled)
+    m_lastPosition = *this;
 }
 
 KTextEditor::SmartCursorNotifier* KateSmartCursor::notifier( )
@@ -347,8 +351,10 @@
 
 void KateSmartCursor::translated(const KateEditInfo & edit)
 {
-  if (*this < edit.oldRange().start())
+  if (*this < edit.oldRange().start()) {
+    m_lastPosition = *this;
     return;
+  }
 
   // We can rely on m_lastPosition because it is updated in translate(), otherwise \
just shifted() is called  if (m_lastPosition != *this) {
@@ -399,6 +405,8 @@
         m_watcher->characterInserted(this, true);
     }
   }
+
+  m_lastPosition = *this;
 }
 
 void KateSmartCursor::shifted( )
@@ -410,6 +418,8 @@
     emit m_notifier->positionChanged(this);
   if (m_watcher)
     m_watcher->positionChanged(this);
+
+  m_lastPosition = *this;
 }
 
 void KateSmartCursor::migrate( KateSmartGroup * newGroup )
--- trunk/KDE/kdelibs/kate/tests/kateregression.cpp #465873:465874
@@ -78,7 +78,7 @@
   KTextEditor::Cursor* cursorStartOfEdit = \
m_doc->newSmartCursor(KTextEditor::Cursor(1,5), false);  KTextEditor::Cursor* \
cursorEndOfEdit = m_doc->newSmartCursor(KTextEditor::Cursor(1,5), true);  
-  KTextEditor::Cursor* cursorPastEdit = \
m_doc->newSmartCursor(KTextEditor::Cursor(1,7)); +  KTextEditor::Cursor* \
cursorPastEdit = m_doc->newSmartCursor(KTextEditor::Cursor(1,6));  \
KTextEditor::Cursor* cursorEOL = m_doc->newSmartCursor(m_doc->endOfLine(1), false);  \
KTextEditor::Cursor* cursorEOLMoves = m_doc->newSmartCursor(m_doc->endOfLine(1), \
true);  
@@ -94,7 +94,7 @@
   COMPARE(*cursorStartOfLine, KTextEditor::Cursor(1,0));
   COMPARE(*cursorStartOfEdit, KTextEditor::Cursor(1,5));
   COMPARE(*cursorEndOfEdit, KTextEditor::Cursor(1,16));
-  COMPARE(*cursorPastEdit, KTextEditor::Cursor(1,18));
+  COMPARE(*cursorPastEdit, KTextEditor::Cursor(1,17));
   COMPARE(*cursorEOL, m_doc->endOfLine(1));
   COMPARE(*cursorEOLMoves, m_doc->endOfLine(1));
   COMPARE(*cursorNextLine, KTextEditor::Cursor(2,0));
@@ -106,6 +106,7 @@
   addCursorExpectation(cursorStartOfEdit, CursorSignalExpectation(false, true, \
false, false, false, false));  addCursorExpectation(cursorInsideDelete, \
CursorSignalExpectation(false, false, false, false, true, true));  \
addCursorExpectation(cursorEndOfEdit, CursorSignalExpectation(true, false, false, \
false, true, false)); +  addCursorExpectation(cursorPastEdit, \
CursorSignalExpectation(false, false, false, false, true, false));  
   // Intra-line remove
   m_doc->removeText(KTextEditor::Range(*cursorStartOfEdit, 11));
@@ -114,7 +115,7 @@
   COMPARE(*cursorStartOfEdit, KTextEditor::Cursor(1,5));
   COMPARE(*cursorInsideDelete, KTextEditor::Cursor(1,5));
   COMPARE(*cursorEndOfEdit, KTextEditor::Cursor(1,5));
-  COMPARE(*cursorPastEdit, KTextEditor::Cursor(1,7));
+  COMPARE(*cursorPastEdit, KTextEditor::Cursor(1,6));
   COMPARE(*cursorEOL, m_doc->endOfLine(1));
   COMPARE(*cursorEOLMoves, m_doc->endOfLine(1));
 
@@ -122,11 +123,16 @@
 
   KTextEditor::Cursor oldEOL = *cursorEOL;
 
+  addCursorExpectation(cursorEOL, CursorSignalExpectation(false, false, false, true, \
false, false)); +  addCursorExpectation(cursorEOLMoves, \
CursorSignalExpectation(false, false, true, false, true, false)); +
   // Insert at EOL
   m_doc->insertText(m_doc->endOfLine(1), " Even More");
   COMPARE(*cursorEOL, oldEOL);
   COMPARE(*cursorEOLMoves, m_doc->endOfLine(1));
 
+  checkSignalExpectations();
+
   *cursorEOL = *cursorEOLMoves;
 
   // wrap line
@@ -142,7 +148,7 @@
   COMPARE(*cursorEOLMoves, m_doc->endOfLine(1));
 
   checkSmartManager();
-  m_doc->smartManager()->debugOutput();
+  //m_doc->smartManager()->debugOutput();
 }
 
 void KateRegression::checkSmartManager()
@@ -274,7 +280,8 @@
 void KateRegression::slotPositionChanged( KTextEditor::SmartCursor * cursor )
 {
   VERIFY(m_cursorExpectations.contains(cursor));
-  VERIFY(m_cursorExpectations[cursor].notifierExpectPositionChanged);
+  if (!m_cursorExpectations[cursor].notifierExpectPositionChanged)
+    VERIFY(m_cursorExpectations[cursor].notifierExpectPositionChanged);
   m_cursorExpectations[cursor].notifierPositionChanged++;
 }
 


[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic