From e1e07bb385ba1cb7e26bbc784d5c7c2e0a320f67 Mon Sep 17 00:00:00 2001 From: Ubbo Veentjer Date: Sun, 21 Feb 2016 16:21:12 +0100 Subject: findwidget kind of works, does not crash anymore --- findwidget.cpp | 37 ++++++++++++++++++++++++------------- 1 file changed, 24 insertions(+), 13 deletions(-) diff --git a/findwidget.cpp b/findwidget.cpp index ecaa9dd..ba0dd15 100644 --- a/findwidget.cpp +++ b/findwidget.cpp @@ -46,13 +46,17 @@ void FindWidget::slotFindNext() { QTextCursor cursor = mTextpage->textCursor(); cursor = mTextpage->document()->find(findEdit->text(), cursor, QTextDocument::FindCaseSensitively); + // if end of document is reached, restart search from beginning if (cursor.position() == -1) { - //cursor.setPosition(0); - QTextCursor cursor = mTextpage->document()->find(findEdit->text(), QTextCursor::Start, QTextDocument::FindCaseSensitively); + cursor = mTextpage->document()->find(findEdit->text(), cursor, QTextDocument::FindCaseSensitively); } - mTextpage->setTextCursor(cursor); + // cursor should not stay at -1, otherwise text is not editable + // todo: check how gedit handles this + if(cursor.position() != -1) { + mTextpage->setTextCursor(cursor); + } this->setBackground(); } @@ -66,7 +70,16 @@ void FindWidget::slotFind() cursor = mTextpage->document()->find(findEdit->text(), cursor.anchor(), QTextDocument::FindCaseSensitively); } - mTextpage->setTextCursor(cursor); + // if end of document is reached, restart search from beginning + if (cursor.position() == -1) { + cursor = mTextpage->document()->find(findEdit->text(), cursor, QTextDocument::FindCaseSensitively); + } + + // cursor should not stay at -1, otherwise text is not editable + // todo: check how gedit handles this + if(cursor.position() != -1) { + mTextpage->setTextCursor(cursor); + } this->setBackground(); } @@ -79,18 +92,16 @@ void FindWidget::slotFindPrevious() QTextCursor cursor = mTextpage->textCursor(); cursor = mTextpage->document()->find(findEdit->text(), cursor, flags); - // if end of document is reached, restart search from beginning + // if begin of document is reached, restart search from end if (cursor.position() == -1) { - qDebug() << "cursor:" << cursor.position(); - qDebug() << "length: " << mTextpage->document()->toPlainText().length()-1; - - cursor = mTextpage->document()->find(findEdit->text(), QTextCursor::End, QTextDocument::FindCaseSensitively); - qDebug() << "cursor2: " << cursor.position(); - QTextCursor cursor = mTextpage->document()->find(findEdit->text(), cursor, flags); - qDebug() << "cursor3: " << cursor.position(); + cursor = mTextpage->document()->find(findEdit->text(), QTextCursor::End, flags); } - mTextpage->setTextCursor(cursor); + // cursor should not stay at -1, otherwise text is not editable + // todo: check how gedit handles this + if(cursor.position() != -1) { + mTextpage->setTextCursor(cursor); + } this->setBackground(); } -- cgit v1.2.3