[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