-rw-r--r-- | noncore/apps/opie-write/qtextedit.cpp | 2469 |
1 files changed, 1235 insertions, 1234 deletions
diff --git a/noncore/apps/opie-write/qtextedit.cpp b/noncore/apps/opie-write/qtextedit.cpp index 73b7b7b..bba8a65 100644 --- a/noncore/apps/opie-write/qtextedit.cpp +++ b/noncore/apps/opie-write/qtextedit.cpp @@ -61,6 +61,6 @@ public: QTextEditPrivate() - :preeditStart(-1),preeditLength(-1),ensureCursorVisibleInShowEvent(FALSE) + :preeditStart(-1),preeditLength(-1),ensureCursorVisibleInShowEvent(FALSE) { - for ( int i=0; i<7; i++ ) - id[i] = 0; + for ( int i=0; i<7; i++ ) + id[i] = 0; } @@ -97,17 +97,17 @@ static bool block_set_alignment = FALSE; \row \i Plain Text Editor \i setTextFormat(PlainText) - \i Set text with setText(); text() returns plain text. Text - attributes (e.g. colors) can be set, but plain text is always - returned.<sup>1.</sup> + \i Set text with setText(); text() returns plain text. Text + attributes (e.g. colors) can be set, but plain text is always + returned.<sup>1.</sup> \row \i Rich Text Editor \i setTextFormat(RichText) - \i Set text with setText(); text() returns rich text. Rich - text editing is fairly limited. You can't set margins or - insert images for example (although you can read and - correctly display files that have margins set and that - include images). This mode is mostly useful for editing small - amounts of rich text. <sup>2.</sup> + \i Set text with setText(); text() returns rich text. Rich + text editing is fairly limited. You can't set margins or + insert images for example (although you can read and + correctly display files that have margins set and that + include images). This mode is mostly useful for editing small + amounts of rich text. <sup>2.</sup> \row \i Text Viewer<sup>3.</sup> \i setReadOnly(TRUE) \i Set text with setText() or append() (which has no undo - history so is faster and uses less memory); text() returns - plain or rich text depending on the textFormat(). This mode - can correctly display a large subset of HTML tags. + history so is faster and uses less memory); text() returns + plain or rich text depending on the textFormat(). This mode + can correctly display a large subset of HTML tags. \endtable @@ -209,4 +209,4 @@ static bool block_set_alignment = FALSE; if ( file.open( IO_ReadOnly ) ) { - QTextStream ts( &file ); - textEdit->setText( ts.read() ); + QTextStream ts( &file ); + textEdit->setText( ts.read() ); } @@ -216,5 +216,5 @@ static bool block_set_alignment = FALSE; if ( file.open( IO_WriteOnly ) ) { - QTextStream ts( &file ); - ts << textEdit->text(); - textEdit->setModified( FALSE ); + QTextStream ts( &file ); + ts << textEdit->text(); + textEdit->setModified( FALSE ); } @@ -341,3 +341,3 @@ static bool block_set_alignment = FALSE; \row \i \e{Ctrl+C} \i Copy the marked text to the clipboard (also - \e{Ctrl+Insert} under Windows) + \e{Ctrl+Insert} under Windows) \row \i \e{Ctrl+D} \i Delete the character to the right of the cursor @@ -350,5 +350,5 @@ static bool block_set_alignment = FALSE; \row \i \e{Ctrl+V} \i Paste the clipboard text into line edit - (also \e{Shift+Insert} under Windows) + (also \e{Shift+Insert} under Windows) \row \i \e{Ctrl+X} \i Cut the marked text, copy to clipboard - (also \e{Shift+Delete} under Windows) + (also \e{Shift+Delete} under Windows) \row \i \e{Ctrl+Z} \i Undo the last operation @@ -370,3 +370,3 @@ static bool block_set_alignment = FALSE; \row \i \e{Shift+Wheel} \i Scroll the page horizontally - (the Wheel is the mouse wheel) + (the Wheel is the mouse wheel) \row \i \e{Ctrl+Wheel} \i Zoom the text @@ -653,3 +653,3 @@ QTextEdit::QTextEdit( QWidget *parent, const char *name ) QTextEdit::QTextEdit( const QString& text, const QString& context, - QWidget *parent, const char *name) + QWidget *parent, const char *name) : QScrollView( parent, name, WStaticContents | WRepaintNoErase | WResizeNoErase ), @@ -675,2 +675,3 @@ void QTextEdit::init() setFrameStyle( Sunken ); + setVScrollBarMode( AlwaysOn ); undoEnabled = TRUE; @@ -680,3 +681,3 @@ void QTextEdit::init() connect( doc, SIGNAL( minimumWidthChanged(int) ), - this, SLOT( documentWidthChanged(int) ) ); + this, SLOT( documentWidthChanged(int) ) ); @@ -701,3 +702,3 @@ void QTextEdit::init() resizeContents( 0, doc->lastParagraph() ? - ( doc->lastParagraph()->paragId() + 1 ) * doc->formatCollection()->defaultFormat()->height() : 0 ); + ( doc->lastParagraph()->paragId() + 1 ) * doc->formatCollection()->defaultFormat()->height() : 0 ); @@ -712,3 +713,3 @@ void QTextEdit::init() connect( formatTimer, SIGNAL( timeout() ), - this, SLOT( formatMore() ) ); + this, SLOT( formatMore() ) ); lastFormatted = doc->firstParagraph(); @@ -717,3 +718,3 @@ void QTextEdit::init() connect( scrollTimer, SIGNAL( timeout() ), - this, SLOT( autoScrollTimerDone() ) ); + this, SLOT( autoScrollTimerDone() ) ); @@ -722,3 +723,3 @@ void QTextEdit::init() connect( changeIntervalTimer, SIGNAL( timeout() ), - this, SLOT( doChangeInterval() ) ); + this, SLOT( doChangeInterval() ) ); @@ -727,3 +728,3 @@ void QTextEdit::init() connect( blinkTimer, SIGNAL( timeout() ), - this, SLOT( blinkCursor() ) ); + this, SLOT( blinkCursor() ) ); @@ -732,3 +733,3 @@ void QTextEdit::init() connect( dragStartTimer, SIGNAL( timeout() ), - this, SLOT( startDrag() ) ); + this, SLOT( startDrag() ) ); #endif @@ -750,14 +751,14 @@ void QTextEdit::paintDocument( bool drawAll, QPainter *p, int cx, int cy, int cw if ( hasSelectedText() || isReadOnly() || !cursorVisible ) - drawCur = FALSE; + drawCur = FALSE; QColorGroup g = colorGroup(); if ( doc->paper() ) - g.setBrush( QColorGroup::Base, *doc->paper() ); + g.setBrush( QColorGroup::Base, *doc->paper() ); if ( contentsY() < doc->y() ) { - p->fillRect( contentsX(), contentsY(), visibleWidth(), doc->y(), - g.brush( QColorGroup::Base ) ); + p->fillRect( contentsX(), contentsY(), visibleWidth(), doc->y(), + g.brush( QColorGroup::Base ) ); } if ( drawAll && doc->width() - contentsX() < cx + cw ) { - p->fillRect( doc->width() - contentsX(), cy, cx + cw - doc->width() + contentsX(), ch, - g.brush( QColorGroup::Base ) ); + p->fillRect( doc->width() - contentsX(), cy, cx + cw - doc->width() + contentsX(), ch, + g.brush( QColorGroup::Base ) ); } @@ -769,7 +770,7 @@ void QTextEdit::paintDocument( bool drawAll, QPainter *p, int cx, int cy, int cw if ( lastFormatted == doc->lastParagraph() ) - resizeContents( contentsWidth(), doc->height() ); + resizeContents( contentsWidth(), doc->height() ); if ( contentsHeight() < visibleHeight() && ( !doc->lastParagraph() || doc->lastParagraph()->isValid() ) && drawAll ) - p->fillRect( 0, contentsHeight(), visibleWidth(), - visibleHeight() - contentsHeight(), g.brush( QColorGroup::Base ) ); + p->fillRect( 0, contentsHeight(), visibleWidth(), + visibleHeight() - contentsHeight(), g.brush( QColorGroup::Base ) ); } @@ -784,7 +785,7 @@ void QTextEdit::drawContents( QPainter *p, int cx, int cy, int cw, int ch ) if ( document()->isPageBreakEnabled() && ( v = document()->flow()->pageSize() ) > 0 ) { - int l = int(cy / v) * v; - while ( l < cy + ch ) { - p->drawLine( cx, l, cx + cw - 1, l ); - l += v; - } + int l = int(cy / v) * v; + while ( l < cy + ch ) { + p->drawLine( cx, l, cx + cw - 1, l ); + l += v; + } } @@ -804,64 +805,64 @@ bool QTextEdit::event( QEvent *e ) if ( e->type() == QEvent::AccelOverride && !isReadOnly() ) { - QKeyEvent* ke = (QKeyEvent*) e; - if ( ke->state() == NoButton || ke->state() == Keypad ) { - if ( ke->key() < Key_Escape ) { - ke->accept(); - } else { - switch ( ke->key() ) { - case Key_Return: - case Key_Enter: - case Key_Delete: - case Key_Home: - case Key_End: - case Key_Backspace: - ke->accept(); - default: - break; - } - } - } else if ( ke->state() & ControlButton ) { - switch ( ke->key() ) { + QKeyEvent* ke = (QKeyEvent*) e; + if ( ke->state() == NoButton || ke->state() == Keypad ) { + if ( ke->key() < Key_Escape ) { + ke->accept(); + } else { + switch ( ke->key() ) { + case Key_Return: + case Key_Enter: + case Key_Delete: + case Key_Home: + case Key_End: + case Key_Backspace: + ke->accept(); + default: + break; + } + } + } else if ( ke->state() & ControlButton ) { + switch ( ke->key() ) { // Those are too frequently used for application functionality -/* case Key_A: - case Key_B: - case Key_D: - case Key_E: - case Key_F: - case Key_H: - case Key_I: - case Key_K: - case Key_N: - case Key_P: - case Key_T: +/* case Key_A: + case Key_B: + case Key_D: + case Key_E: + case Key_F: + case Key_H: + case Key_I: + case Key_K: + case Key_N: + case Key_P: + case Key_T: */ - case Key_C: - case Key_V: - case Key_X: - case Key_Y: - case Key_Z: - case Key_Left: - case Key_Right: - case Key_Up: - case Key_Down: - case Key_Home: - case Key_End: - case Key_Tab: + case Key_C: + case Key_V: + case Key_X: + case Key_Y: + case Key_Z: + case Key_Left: + case Key_Right: + case Key_Up: + case Key_Down: + case Key_Home: + case Key_End: + case Key_Tab: #if defined (Q_WS_WIN) - case Key_Insert: - case Key_Delete: + case Key_Insert: + case Key_Delete: #endif - ke->accept(); - default: - break; - } - } else { - switch ( ke->key() ) { + ke->accept(); + default: + break; + } + } else { + switch ( ke->key() ) { #if defined (Q_WS_WIN) - case Key_Insert: - ke->accept(); + case Key_Insert: + ke->accept(); #endif - default: - break; - } - } + default: + break; + } + } } @@ -869,11 +870,11 @@ bool QTextEdit::event( QEvent *e ) if ( e->type() == QEvent::Show ) { - if ( d->ensureCursorVisibleInShowEvent ) { - sync(); - ensureCursorVisible(); - d->ensureCursorVisibleInShowEvent = FALSE; - } - if ( !d->scrollToAnchor.isEmpty() ) { - scrollToAnchor( d->scrollToAnchor ); - d->scrollToAnchor = QString::null; - } + if ( d->ensureCursorVisibleInShowEvent ) { + sync(); + ensureCursorVisible(); + d->ensureCursorVisibleInShowEvent = FALSE; + } + if ( !d->scrollToAnchor.isEmpty() ) { + scrollToAnchor( d->scrollToAnchor ); + d->scrollToAnchor = QString::null; + } } @@ -894,6 +895,6 @@ void QTextEdit::keyPressEvent( QKeyEvent *e ) if ( isReadOnly() ) { - if ( !handleReadOnlyKeyEvent( e ) ) - QScrollView::keyPressEvent( e ); - changeIntervalTimer->start( 100, TRUE ); - return; + if ( !handleReadOnlyKeyEvent( e ) ) + QScrollView::keyPressEvent( e ); + changeIntervalTimer->start( 100, TRUE ); + return; } @@ -903,7 +904,7 @@ void QTextEdit::keyPressEvent( QKeyEvent *e ) for ( int i = 1; i < doc->numSelections(); ++i ) // start with 1 as we don't want to remove the Standard-Selection - selChanged = doc->removeSelection( i ) || selChanged; + selChanged = doc->removeSelection( i ) || selChanged; if ( selChanged ) { - cursor->paragraph()->document()->nextDoubleBuffered = TRUE; - repaintChanged(); + cursor->paragraph()->document()->nextDoubleBuffered = TRUE; + repaintChanged(); } @@ -916,223 +917,223 @@ void QTextEdit::keyPressEvent( QKeyEvent *e ) case Key_Right: { - // a bit hacky, but can't change this without introducing new enum values for move and keeping the - // correct semantics and movement for BiDi and non BiDi text. - CursorAction a; - if ( cursor->paragraph()->string()->isRightToLeft() == (e->key() == Key_Right) ) - a = e->state() & ControlButton ? MoveWordBackward : MoveBackward; - else - a = e->state() & ControlButton ? MoveWordForward : MoveForward; - moveCursor( a, e->state() & ShiftButton ); - break; + // a bit hacky, but can't change this without introducing new enum values for move and keeping the + // correct semantics and movement for BiDi and non BiDi text. + CursorAction a; + if ( cursor->paragraph()->string()->isRightToLeft() == (e->key() == Key_Right) ) + a = e->state() & ControlButton ? MoveWordBackward : MoveBackward; + else + a = e->state() & ControlButton ? MoveWordForward : MoveForward; + moveCursor( a, e->state() & ShiftButton ); + break; } case Key_Up: - moveCursor( e->state() & ControlButton ? MovePgUp : MoveUp, e->state() & ShiftButton ); - break; + moveCursor( e->state() & ControlButton ? MovePgUp : MoveUp, e->state() & ShiftButton ); + break; case Key_Down: - moveCursor( e->state() & ControlButton ? MovePgDown : MoveDown, e->state() & ShiftButton ); - break; + moveCursor( e->state() & ControlButton ? MovePgDown : MoveDown, e->state() & ShiftButton ); + break; case Key_Home: - moveCursor( e->state() & ControlButton ? MoveHome : MoveLineStart, e->state() & ShiftButton ); - break; + moveCursor( e->state() & ControlButton ? MoveHome : MoveLineStart, e->state() & ShiftButton ); + break; case Key_End: - moveCursor( e->state() & ControlButton ? MoveEnd : MoveLineEnd, e->state() & ShiftButton ); - break; + moveCursor( e->state() & ControlButton ? MoveEnd : MoveLineEnd, e->state() & ShiftButton ); + break; case Key_Prior: - moveCursor( MovePgUp, e->state() & ShiftButton ); - break; + moveCursor( MovePgUp, e->state() & ShiftButton ); + break; case Key_Next: - moveCursor( MovePgDown, e->state() & ShiftButton ); - break; + moveCursor( MovePgDown, e->state() & ShiftButton ); + break; case Key_Return: case Key_Enter: - if ( doc->hasSelection( QTextDocument::Standard, FALSE ) ) - removeSelectedText(); - if ( textFormat() == Qt::RichText && ( e->state() & ControlButton ) ) { - // Ctrl-Enter inserts a line break in rich text mode - insert( QString( QChar( 0x2028) ), TRUE, FALSE, TRUE ); - } else { + if ( doc->hasSelection( QTextDocument::Standard, FALSE ) ) + removeSelectedText(); + if ( textFormat() == Qt::RichText && ( e->state() & ControlButton ) ) { + // Ctrl-Enter inserts a line break in rich text mode + insert( QString( QChar( 0x2028) ), TRUE, FALSE, TRUE ); + } else { #ifndef QT_NO_CURSOR - viewport()->setCursor( isReadOnly() ? arrowCursor : ibeamCursor ); + viewport()->setCursor( isReadOnly() ? arrowCursor : ibeamCursor ); #endif - clearUndoRedoInfo = FALSE; - doKeyboardAction( ActionReturn ); - emit returnPressed(); - } - break; + clearUndoRedoInfo = FALSE; + doKeyboardAction( ActionReturn ); + emit returnPressed(); + } + break; case Key_Delete: #if defined (Q_WS_WIN) - if ( e->state() & ShiftButton ) { - cut(); - break; - } else + if ( e->state() & ShiftButton ) { + cut(); + break; + } else #endif if ( doc->hasSelection( QTextDocument::Standard, TRUE ) ) { - removeSelectedText(); - break; - } - doKeyboardAction( ActionDelete ); - clearUndoRedoInfo = FALSE; + removeSelectedText(); + break; + } + doKeyboardAction( ActionDelete ); + clearUndoRedoInfo = FALSE; - break; + break; case Key_Insert: - if ( e->state() & ShiftButton ) - paste(); + if ( e->state() & ShiftButton ) + paste(); #if defined (Q_WS_WIN) - else if ( e->state() & ControlButton ) - copy(); + else if ( e->state() & ControlButton ) + copy(); #endif - break; + break; case Key_Backspace: - if ( doc->hasSelection( QTextDocument::Standard, TRUE ) ) { - removeSelectedText(); - break; - } + if ( doc->hasSelection( QTextDocument::Standard, TRUE ) ) { + removeSelectedText(); + break; + } - doKeyboardAction( ActionBackspace ); - clearUndoRedoInfo = FALSE; + doKeyboardAction( ActionBackspace ); + clearUndoRedoInfo = FALSE; - break; + break; case Key_F16: // Copy key on Sun keyboards - copy(); - break; + copy(); + break; case Key_F18: // Paste key on Sun keyboards - paste(); - break; + paste(); + break; case Key_F20: // Cut key on Sun keyboards - cut(); - break; + cut(); + break; default: { - if ( e->text().length() && - ( !( e->state() & ControlButton ) && - !( e->state() & AltButton ) || - ( ( e->state() & ControlButton | AltButton ) == (ControlButton|AltButton) ) ) && - ( !e->ascii() || e->ascii() >= 32 || e->text() == "\t" ) ) { - clearUndoRedoInfo = FALSE; - if ( e->key() == Key_Tab ) { - if ( textFormat() == Qt::RichText && cursor->paragraph()->isListItem() ) { - clearUndoRedo(); - undoRedoInfo.type = UndoRedoInfo::Style; - undoRedoInfo.id = cursor->paragraph()->paragId(); - undoRedoInfo.eid = undoRedoInfo.id; - undoRedoInfo.styleInformation = QTextStyleCommand::readStyleInformation( doc, undoRedoInfo.id, undoRedoInfo.eid ); - cursor->paragraph()->setListDepth( cursor->paragraph()->listDepth() +1 ); - clearUndoRedo(); - drawCursor( FALSE ); - repaintChanged(); - drawCursor( TRUE ); - break; - } - } - - if ( textFormat() == Qt::RichText && !cursor->paragraph()->isListItem() ) { - if ( cursor->index() == 0 && ( e->text()[0] == '-' || e->text()[0] == '*' ) ) { - clearUndoRedo(); - undoRedoInfo.type = UndoRedoInfo::Style; - undoRedoInfo.id = cursor->paragraph()->paragId(); - undoRedoInfo.eid = undoRedoInfo.id; - undoRedoInfo.styleInformation = QTextStyleCommand::readStyleInformation( doc, undoRedoInfo.id, undoRedoInfo.eid ); - setParagType( QStyleSheetItem::DisplayListItem, QStyleSheetItem::ListDisc ); - clearUndoRedo(); - drawCursor( FALSE ); - repaintChanged(); - drawCursor( TRUE ); - break; - } - } - if ( overWrite && !cursor->atParagEnd() ) - cursor->remove(); - QString t = e->text(); - QTextParagraph *p = cursor->paragraph(); - if ( p && p->string() && p->string()->isRightToLeft() ) { - QChar *c = (QChar *)t.unicode(); - int l = t.length(); - while( l-- ) { - if ( c->mirrored() ) - *c = c->mirroredChar(); - c++; - } - } - insert( t, TRUE, FALSE, TRUE ); - break; - } else if ( e->state() & ControlButton ) { - switch ( e->key() ) { - case Key_C: case Key_F16: // Copy key on Sun keyboards - copy(); - break; - case Key_V: - paste(); - break; - case Key_X: - cut(); - break; - case Key_I: case Key_T: case Key_Tab: - indent(); - break; - case Key_A: + if ( e->text().length() && + ( !( e->state() & ControlButton ) && + !( e->state() & AltButton ) || + ( ( e->state() & ControlButton | AltButton ) == (ControlButton|AltButton) ) ) && + ( !e->ascii() || e->ascii() >= 32 || e->text() == "\t" ) ) { + clearUndoRedoInfo = FALSE; + if ( e->key() == Key_Tab ) { + if ( textFormat() == Qt::RichText && cursor->paragraph()->isListItem() ) { + clearUndoRedo(); + undoRedoInfo.type = UndoRedoInfo::Style; + undoRedoInfo.id = cursor->paragraph()->paragId(); + undoRedoInfo.eid = undoRedoInfo.id; + undoRedoInfo.styleInformation = QTextStyleCommand::readStyleInformation( doc, undoRedoInfo.id, undoRedoInfo.eid ); + cursor->paragraph()->setListDepth( cursor->paragraph()->listDepth() +1 ); + clearUndoRedo(); + drawCursor( FALSE ); + repaintChanged(); + drawCursor( TRUE ); + break; + } + } + + if ( textFormat() == Qt::RichText && !cursor->paragraph()->isListItem() ) { + if ( cursor->index() == 0 && ( e->text()[0] == '-' || e->text()[0] == '*' ) ) { + clearUndoRedo(); + undoRedoInfo.type = UndoRedoInfo::Style; + undoRedoInfo.id = cursor->paragraph()->paragId(); + undoRedoInfo.eid = undoRedoInfo.id; + undoRedoInfo.styleInformation = QTextStyleCommand::readStyleInformation( doc, undoRedoInfo.id, undoRedoInfo.eid ); + setParagType( QStyleSheetItem::DisplayListItem, QStyleSheetItem::ListDisc ); + clearUndoRedo(); + drawCursor( FALSE ); + repaintChanged(); + drawCursor( TRUE ); + break; + } + } + if ( overWrite && !cursor->atParagEnd() ) + cursor->remove(); + QString t = e->text(); + QTextParagraph *p = cursor->paragraph(); + if ( p && p->string() && p->string()->isRightToLeft() ) { + QChar *c = (QChar *)t.unicode(); + int l = t.length(); + while( l-- ) { + if ( c->mirrored() ) + *c = c->mirroredChar(); + c++; + } + } + insert( t, TRUE, FALSE, TRUE ); + break; + } else if ( e->state() & ControlButton ) { + switch ( e->key() ) { + case Key_C: case Key_F16: // Copy key on Sun keyboards + copy(); + break; + case Key_V: + paste(); + break; + case Key_X: + cut(); + break; + case Key_I: case Key_T: case Key_Tab: + indent(); + break; + case Key_A: #if defined(Q_WS_X11) - moveCursor( MoveLineStart, e->state() & ShiftButton ); + moveCursor( MoveLineStart, e->state() & ShiftButton ); #else - selectAll( TRUE ); + selectAll( TRUE ); #endif - break; - case Key_B: - moveCursor( MoveBackward, e->state() & ShiftButton ); - break; - case Key_F: - moveCursor( MoveForward, e->state() & ShiftButton ); - break; - case Key_D: - if ( doc->hasSelection( QTextDocument::Standard ) ) { - removeSelectedText(); - break; - } - doKeyboardAction( ActionDelete ); - clearUndoRedoInfo = FALSE; - break; - case Key_H: - if ( doc->hasSelection( QTextDocument::Standard ) ) { - removeSelectedText(); - break; - } - if ( !cursor->paragraph()->prev() && - cursor->atParagStart() ) - break; - - doKeyboardAction( ActionBackspace ); - clearUndoRedoInfo = FALSE; - break; - case Key_E: - moveCursor( MoveLineEnd, e->state() & ShiftButton ); - break; - case Key_N: - moveCursor( MoveDown, e->state() & ShiftButton ); - break; - case Key_P: - moveCursor( MoveUp, e->state() & ShiftButton ); - break; - case Key_Z: - if(e->state() & ShiftButton) - redo(); - else - undo(); - break; - case Key_Y: - redo(); - break; - case Key_K: - doKeyboardAction( ActionKill ); - break; + break; + case Key_B: + moveCursor( MoveBackward, e->state() & ShiftButton ); + break; + case Key_F: + moveCursor( MoveForward, e->state() & ShiftButton ); + break; + case Key_D: + if ( doc->hasSelection( QTextDocument::Standard ) ) { + removeSelectedText(); + break; + } + doKeyboardAction( ActionDelete ); + clearUndoRedoInfo = FALSE; + break; + case Key_H: + if ( doc->hasSelection( QTextDocument::Standard ) ) { + removeSelectedText(); + break; + } + if ( !cursor->paragraph()->prev() && + cursor->atParagStart() ) + break; + + doKeyboardAction( ActionBackspace ); + clearUndoRedoInfo = FALSE; + break; + case Key_E: + moveCursor( MoveLineEnd, e->state() & ShiftButton ); + break; + case Key_N: + moveCursor( MoveDown, e->state() & ShiftButton ); + break; + case Key_P: + moveCursor( MoveUp, e->state() & ShiftButton ); + break; + case Key_Z: + if(e->state() & ShiftButton) + redo(); + else + undo(); + break; + case Key_Y: + redo(); + break; + case Key_K: + doKeyboardAction( ActionKill ); + break; #if defined(Q_WS_WIN) - case Key_Insert: - copy(); - break; - case Key_Delete: - del(); - break; + case Key_Insert: + copy(); + break; + case Key_Delete: + del(); + break; #endif - default: - unknown = FALSE; - break; - } - } else { - unknown = TRUE; - } + default: + unknown = FALSE; + break; + } + } else { + unknown = TRUE; + } } @@ -1143,6 +1144,6 @@ void QTextEdit::keyPressEvent( QKeyEvent *e ) if ( clearUndoRedoInfo ) - clearUndoRedo(); + clearUndoRedo(); changeIntervalTimer->start( 100, TRUE ); if ( unknown ) - e->ignore(); + e->ignore(); } @@ -1157,6 +1158,6 @@ void QTextEdit::doKeyboardAction( KeyboardAction action ) if ( isReadOnly() ) - return; + return; if ( cursor->nestedDepth() != 0 ) // #### for 3.0, disable editing of tables as this is not advanced enough - return; + return; @@ -1168,82 +1169,82 @@ void QTextEdit::doKeyboardAction( KeyboardAction action ) case ActionDelete: - if ( !cursor->atParagEnd() ) { - checkUndoRedoInfo( UndoRedoInfo::Delete ); - if ( !undoRedoInfo.valid() ) { - undoRedoInfo.id = cursor->paragraph()->paragId(); - undoRedoInfo.index = cursor->index(); - undoRedoInfo.d->text = QString::null; - } - undoRedoInfo.d->text.insert( undoRedoInfo.d->text.length(), cursor->paragraph()->at( cursor->index() ), TRUE ); - cursor->remove(); - } else { - clearUndoRedo(); - doc->setSelectionStart( QTextDocument::Temp, *cursor ); - cursor->gotoNextLetter(); - doc->setSelectionEnd( QTextDocument::Temp, *cursor ); - removeSelectedText( QTextDocument::Temp ); - } - break; + if ( !cursor->atParagEnd() ) { + checkUndoRedoInfo( UndoRedoInfo::Delete ); + if ( !undoRedoInfo.valid() ) { + undoRedoInfo.id = cursor->paragraph()->paragId(); + undoRedoInfo.index = cursor->index(); + undoRedoInfo.d->text = QString::null; + } + undoRedoInfo.d->text.insert( undoRedoInfo.d->text.length(), cursor->paragraph()->at( cursor->index() ), TRUE ); + cursor->remove(); + } else { + clearUndoRedo(); + doc->setSelectionStart( QTextDocument::Temp, *cursor ); + cursor->gotoNextLetter(); + doc->setSelectionEnd( QTextDocument::Temp, *cursor ); + removeSelectedText( QTextDocument::Temp ); + } + break; case ActionBackspace: - if ( textFormat() == Qt::RichText && cursor->paragraph()->isListItem() && cursor->index() == 0 ) { - clearUndoRedo(); - undoRedoInfo.type = UndoRedoInfo::Style; - undoRedoInfo.id = cursor->paragraph()->paragId(); - undoRedoInfo.eid = undoRedoInfo.id; - undoRedoInfo.styleInformation = QTextStyleCommand::readStyleInformation( doc, undoRedoInfo.id, undoRedoInfo.eid ); - int ldepth = cursor->paragraph()->listDepth(); - ldepth = QMAX( ldepth-1, 0 ); - cursor->paragraph()->setListDepth( ldepth ); - if ( ldepth == 0 ) - cursor->paragraph()->setListItem( FALSE ); - clearUndoRedo(); - lastFormatted = cursor->paragraph(); - repaintChanged(); - drawCursor( TRUE ); - return; - } - if ( !cursor->atParagStart() ) { - checkUndoRedoInfo( UndoRedoInfo::Delete ); - if ( !undoRedoInfo.valid() ) { - undoRedoInfo.id = cursor->paragraph()->paragId(); - undoRedoInfo.index = cursor->index(); - undoRedoInfo.d->text = QString::null; - } - cursor->gotoPreviousLetter(); - undoRedoInfo.d->text.insert( 0, cursor->paragraph()->at( cursor->index() ), TRUE ); - undoRedoInfo.index = cursor->index(); - cursor->remove(); - lastFormatted = cursor->paragraph(); - } else if ( cursor->paragraph()->prev() ){ - clearUndoRedo(); - doc->setSelectionStart( QTextDocument::Temp, *cursor ); - cursor->gotoPreviousLetter(); - doc->setSelectionEnd( QTextDocument::Temp, *cursor ); - removeSelectedText( QTextDocument::Temp ); - } - break; + if ( textFormat() == Qt::RichText && cursor->paragraph()->isListItem() && cursor->index() == 0 ) { + clearUndoRedo(); + undoRedoInfo.type = UndoRedoInfo::Style; + undoRedoInfo.id = cursor->paragraph()->paragId(); + undoRedoInfo.eid = undoRedoInfo.id; + undoRedoInfo.styleInformation = QTextStyleCommand::readStyleInformation( doc, undoRedoInfo.id, undoRedoInfo.eid ); + int ldepth = cursor->paragraph()->listDepth(); + ldepth = QMAX( ldepth-1, 0 ); + cursor->paragraph()->setListDepth( ldepth ); + if ( ldepth == 0 ) + cursor->paragraph()->setListItem( FALSE ); + clearUndoRedo(); + lastFormatted = cursor->paragraph(); + repaintChanged(); + drawCursor( TRUE ); + return; + } + if ( !cursor->atParagStart() ) { + checkUndoRedoInfo( UndoRedoInfo::Delete ); + if ( !undoRedoInfo.valid() ) { + undoRedoInfo.id = cursor->paragraph()->paragId(); + undoRedoInfo.index = cursor->index(); + undoRedoInfo.d->text = QString::null; + } + cursor->gotoPreviousLetter(); + undoRedoInfo.d->text.insert( 0, cursor->paragraph()->at( cursor->index() ), TRUE ); + undoRedoInfo.index = cursor->index(); + cursor->remove(); + lastFormatted = cursor->paragraph(); + } else if ( cursor->paragraph()->prev() ){ + clearUndoRedo(); + doc->setSelectionStart( QTextDocument::Temp, *cursor ); + cursor->gotoPreviousLetter(); + doc->setSelectionEnd( QTextDocument::Temp, *cursor ); + removeSelectedText( QTextDocument::Temp ); + } + break; case ActionReturn: - checkUndoRedoInfo( UndoRedoInfo::Return ); - if ( !undoRedoInfo.valid() ) { - undoRedoInfo.id = cursor->paragraph()->paragId(); - undoRedoInfo.index = cursor->index(); - undoRedoInfo.d->text = QString::null; - } - undoRedoInfo.d->text += "\n"; - cursor->splitAndInsertEmptyParagraph(); - if ( cursor->paragraph()->prev() ) { - lastFormatted = cursor->paragraph()->prev(); - lastFormatted->invalidate( 0 ); - } - doUpdateCurrentFormat = FALSE; - break; + checkUndoRedoInfo( UndoRedoInfo::Return ); + if ( !undoRedoInfo.valid() ) { + undoRedoInfo.id = cursor->paragraph()->paragId(); + undoRedoInfo.index = cursor->index(); + undoRedoInfo.d->text = QString::null; + } + undoRedoInfo.d->text += "\n"; + cursor->splitAndInsertEmptyParagraph(); + if ( cursor->paragraph()->prev() ) { + lastFormatted = cursor->paragraph()->prev(); + lastFormatted->invalidate( 0 ); + } + doUpdateCurrentFormat = FALSE; + break; case ActionKill: - clearUndoRedo(); - doc->setSelectionStart( QTextDocument::Temp, *cursor ); - if ( cursor->atParagEnd() ) - cursor->gotoNextLetter(); - else - cursor->setIndex( cursor->paragraph()->length() - 1 ); - doc->setSelectionEnd( QTextDocument::Temp, *cursor ); - removeSelectedText( QTextDocument::Temp ); - break; + clearUndoRedo(); + doc->setSelectionStart( QTextDocument::Temp, *cursor ); + if ( cursor->atParagEnd() ) + cursor->gotoNextLetter(); + else + cursor->setIndex( cursor->paragraph()->length() - 1 ); + doc->setSelectionEnd( QTextDocument::Temp, *cursor ); + removeSelectedText( QTextDocument::Temp ); + break; } @@ -1256,3 +1257,3 @@ void QTextEdit::doKeyboardAction( KeyboardAction action ) if ( doUpdateCurrentFormat ) - updateCurrentFormat(); + updateCurrentFormat(); setModified(); @@ -1268,28 +1269,28 @@ void QTextEdit::readFormats( QTextCursor &c1, QTextCursor &c2, QTextString &text if ( c1.paragraph() == c2.paragraph() ) { - for ( int i = c1.index(); i < c2.index(); ++i ) - text.insert( lastIndex + i - c1.index(), c1.paragraph()->at( i ), TRUE ); - if ( fillStyles ) { - styleStream << (int) 1; - c1.paragraph()->writeStyleInformation( styleStream ); - } + for ( int i = c1.index(); i < c2.index(); ++i ) + text.insert( lastIndex + i - c1.index(), c1.paragraph()->at( i ), TRUE ); + if ( fillStyles ) { + styleStream << (int) 1; + c1.paragraph()->writeStyleInformation( styleStream ); + } } else { - int i; - for ( i = c1.index(); i < c1.paragraph()->length()-1; ++i ) - text.insert( lastIndex++, c1.paragraph()->at( i ), TRUE ); - int num = 2; // start and end, being different - text += "\n"; lastIndex++; - QTextParagraph *p = c1.paragraph()->next(); - while ( p && p != c2.paragraph() ) { - for ( i = 0; i < p->length()-1; ++i ) - text.insert( lastIndex++ , p->at( i ), TRUE ); - text += "\n"; num++; lastIndex++; - p = p->next(); - } - for ( i = 0; i < c2.index(); ++i ) - text.insert( i + lastIndex, c2.paragraph()->at( i ), TRUE ); - if ( fillStyles ) { - styleStream << num; - for ( QTextParagraph *p = c1.paragraph(); --num >= 0; p = p->next() ) - p->writeStyleInformation( styleStream ); - } + int i; + for ( i = c1.index(); i < c1.paragraph()->length()-1; ++i ) + text.insert( lastIndex++, c1.paragraph()->at( i ), TRUE ); + int num = 2; // start and end, being different + text += "\n"; lastIndex++; + QTextParagraph *p = c1.paragraph()->next(); + while ( p && p != c2.paragraph() ) { + for ( i = 0; i < p->length()-1; ++i ) + text.insert( lastIndex++ , p->at( i ), TRUE ); + text += "\n"; num++; lastIndex++; + p = p->next(); + } + for ( i = 0; i < c2.index(); ++i ) + text.insert( i + lastIndex, c2.paragraph()->at( i ), TRUE ); + if ( fillStyles ) { + styleStream << num; + for ( QTextParagraph *p = c1.paragraph(); --num >= 0; p = p->next() ) + p->writeStyleInformation( styleStream ); + } } @@ -1319,3 +1320,3 @@ void QTextEdit::removeSelectedText( int selNum ) if ( isReadOnly() ) - return; + return; @@ -1328,8 +1329,8 @@ void QTextEdit::removeSelectedText( int selNum ) if ( c1.nestedDepth() || c2.nestedDepth() ) - return; + return; for ( int i = 0; i < (int)doc->numSelections(); ++i ) { - if ( i == selNum ) - continue; - doc->removeSelection( i ); + if ( i == selNum ) + continue; + doc->removeSelection( i ); } @@ -1339,4 +1340,4 @@ void QTextEdit::removeSelectedText( int selNum ) if ( !undoRedoInfo.valid() ) { - doc->selectionStart( selNum, undoRedoInfo.id, undoRedoInfo.index ); - undoRedoInfo.d->text = QString::null; + doc->selectionStart( selNum, undoRedoInfo.id, undoRedoInfo.index ); + undoRedoInfo.d->text = QString::null; } @@ -1347,24 +1348,24 @@ void QTextEdit::removeSelectedText( int selNum ) if ( cursor->isValid() ) { - ensureCursorVisible(); - lastFormatted = cursor->paragraph(); - formatMore(); - repaintChanged(); - ensureCursorVisible(); - drawCursor( TRUE ); - clearUndoRedo(); + ensureCursorVisible(); + lastFormatted = cursor->paragraph(); + formatMore(); + repaintChanged(); + ensureCursorVisible(); + drawCursor( TRUE ); + clearUndoRedo(); #if defined(Q_WS_WIN) - // there seems to be a problem with repainting or erasing the area - // of the scrollview which is not the contents on windows - if ( contentsHeight() < visibleHeight() ) - viewport()->repaint( 0, contentsHeight(), visibleWidth(), visibleHeight() - contentsHeight(), TRUE ); + // there seems to be a problem with repainting or erasing the area + // of the scrollview which is not the contents on windows + if ( contentsHeight() < visibleHeight() ) + viewport()->repaint( 0, contentsHeight(), visibleWidth(), visibleHeight() - contentsHeight(), TRUE ); #endif #ifndef QT_NO_CURSOR - viewport()->setCursor( isReadOnly() ? arrowCursor : ibeamCursor ); + viewport()->setCursor( isReadOnly() ? arrowCursor : ibeamCursor ); #endif - updateMicroFocusHint(); + updateMicroFocusHint(); } else { - delete cursor; - cursor = new QTextCursor( doc ); - drawCursor( TRUE ); - viewport()->repaint( TRUE ); + delete cursor; + cursor = new QTextCursor( doc ); + drawCursor( TRUE ); + viewport()->repaint( TRUE ); } @@ -1385,33 +1386,33 @@ void QTextEdit::moveCursor( CursorAction action, bool select ) if ( select ) { - if ( !doc->hasSelection( QTextDocument::Standard ) ) - doc->setSelectionStart( QTextDocument::Standard, *cursor ); - moveCursor( action ); - if ( doc->setSelectionEnd( QTextDocument::Standard, *cursor ) ) { - cursor->paragraph()->document()->nextDoubleBuffered = TRUE; - repaintChanged(); - } else { - drawCursor( TRUE ); - } - ensureCursorVisible(); - emit selectionChanged(); - emit copyAvailable( doc->hasSelection( QTextDocument::Standard ) ); + if ( !doc->hasSelection( QTextDocument::Standard ) ) + doc->setSelectionStart( QTextDocument::Standard, *cursor ); + moveCursor( action ); + if ( doc->setSelectionEnd( QTextDocument::Standard, *cursor ) ) { + cursor->paragraph()->document()->nextDoubleBuffered = TRUE; + repaintChanged(); } else { - bool redraw = doc->removeSelection( QTextDocument::Standard ); - moveCursor( action ); - if ( !redraw ) { - ensureCursorVisible(); - drawCursor( TRUE ); - } else { - cursor->paragraph()->document()->nextDoubleBuffered = TRUE; - repaintChanged(); - ensureCursorVisible(); - drawCursor( TRUE ); + drawCursor( TRUE ); + } + ensureCursorVisible(); + emit selectionChanged(); + emit copyAvailable( doc->hasSelection( QTextDocument::Standard ) ); + } else { + bool redraw = doc->removeSelection( QTextDocument::Standard ); + moveCursor( action ); + if ( !redraw ) { + ensureCursorVisible(); + drawCursor( TRUE ); + } else { + cursor->paragraph()->document()->nextDoubleBuffered = TRUE; + repaintChanged(); + ensureCursorVisible(); + drawCursor( TRUE ); #ifndef QT_NO_CURSOR - viewport()->setCursor( isReadOnly() ? arrowCursor : ibeamCursor ); + viewport()->setCursor( isReadOnly() ? arrowCursor : ibeamCursor ); #endif - } - if ( redraw ) { - emit copyAvailable( doc->hasSelection( QTextDocument::Standard ) ); - emit selectionChanged(); - } + } + if ( redraw ) { + emit copyAvailable( doc->hasSelection( QTextDocument::Standard ) ); + emit selectionChanged(); + } } @@ -1430,38 +1431,38 @@ void QTextEdit::moveCursor( CursorAction action ) case MoveBackward: - cursor->gotoPreviousLetter(); - break; + cursor->gotoPreviousLetter(); + break; case MoveWordBackward: - cursor->gotoPreviousWord(); - break; + cursor->gotoPreviousWord(); + break; case MoveForward: - cursor->gotoNextLetter(); - break; + cursor->gotoNextLetter(); + break; case MoveWordForward: - cursor->gotoNextWord(); - break; + cursor->gotoNextWord(); + break; case MoveUp: - cursor->gotoUp(); - break; + cursor->gotoUp(); + break; case MovePgUp: - cursor->gotoPageUp( visibleHeight() ); - break; + cursor->gotoPageUp( visibleHeight() ); + break; case MoveDown: - cursor->gotoDown(); - break; + cursor->gotoDown(); + break; case MovePgDown: - cursor->gotoPageDown( visibleHeight() ); - break; + cursor->gotoPageDown( visibleHeight() ); + break; case MoveLineStart: - cursor->gotoLineStart(); - break; + cursor->gotoLineStart(); + break; case MoveHome: - cursor->gotoHome(); - break; + cursor->gotoHome(); + break; case MoveLineEnd: - cursor->gotoLineEnd(); - break; + cursor->gotoLineEnd(); + break; case MoveEnd: - ensureFormatted( doc->lastParagraph() ); - cursor->gotoEnd(); - break; + ensureFormatted( doc->lastParagraph() ); + cursor->gotoEnd(); + break; } @@ -1477,3 +1478,3 @@ void QTextEdit::resizeEvent( QResizeEvent *e ) if ( doc->visibleWidth() == 0 ) - doResize(); + doResize(); } @@ -1486,7 +1487,7 @@ void QTextEdit::viewportResizeEvent( QResizeEvent *e ) if ( e->oldSize().width() != e->size().width() ) { - bool stayAtBottom = e->oldSize().height() != e->size().height() && - contentsY() > 0 && contentsY() >= doc->height() - e->oldSize().height(); - doResize(); - if ( stayAtBottom ) - scrollToBottom(); + bool stayAtBottom = e->oldSize().height() != e->size().height() && + contentsY() > 0 && contentsY() >= doc->height() - e->oldSize().height(); + doResize(); + if ( stayAtBottom ) + scrollToBottom(); } @@ -1504,4 +1505,4 @@ void QTextEdit::ensureCursorVisible() if ( !isVisible() ) { - d->ensureCursorVisibleInShowEvent = TRUE; - return; + d->ensureCursorVisibleInShowEvent = TRUE; + return; } @@ -1525,9 +1526,9 @@ void QTextEdit::drawCursor( bool visible ) if ( !isUpdatesEnabled() || - !viewport()->isUpdatesEnabled() || - !cursor->paragraph() || - !cursor->paragraph()->isValid() || - !selectedText().isEmpty() || - ( visible && !hasFocus() && !viewport()->hasFocus() && !inDnD ) || - isReadOnly() ) - return; + !viewport()->isUpdatesEnabled() || + !cursor->paragraph() || + !cursor->paragraph()->isValid() || + !selectedText().isEmpty() || + ( visible && !hasFocus() && !viewport()->hasFocus() && !inDnD ) || + isReadOnly() ) + return; @@ -1540,5 +1541,5 @@ void QTextEdit::drawCursor( bool visible ) if ( cursor->paragraph()->background() ) - cg.setBrush( QColorGroup::Base, *cursor->paragraph()->background() ); + cg.setBrush( QColorGroup::Base, *cursor->paragraph()->background() ); else if ( doc->paper() ) - cg.setBrush( QColorGroup::Base, *doc->paper() ); + cg.setBrush( QColorGroup::Base, *doc->paper() ); p.setBrushOrigin( -contentsX(), -contentsY() ); @@ -1546,16 +1547,16 @@ void QTextEdit::drawCursor( bool visible ) if ( !cursor->nestedDepth() ) { - int h = cursor->paragraph()->lineHeightOfChar( cursor->index() ); - int dist = 5; - if ( ( cursor->paragraph()->alignment() & Qt3::AlignJustify ) == Qt3::AlignJustify ) - dist = 50; - int x = r.x() - cursor->totalOffsetX() + cursor->x() - dist; - x = QMAX( x, 0 ); - p.setClipRect( QRect( x - contentsX(), - r.y() - cursor->totalOffsetY() + cursor->y() - contentsY(), 2 * dist, h ) ); - doc->drawParagraph( &p, cursor->paragraph(), x, - r.y() - cursor->totalOffsetY() + cursor->y(), 2 * dist, h, pix, cg, visible, cursor ); + int h = cursor->paragraph()->lineHeightOfChar( cursor->index() ); + int dist = 5; + if ( ( cursor->paragraph()->alignment() & Qt3::AlignJustify ) == Qt3::AlignJustify ) + dist = 50; + int x = r.x() - cursor->totalOffsetX() + cursor->x() - dist; + x = QMAX( x, 0 ); + p.setClipRect( QRect( x - contentsX(), + r.y() - cursor->totalOffsetY() + cursor->y() - contentsY(), 2 * dist, h ) ); + doc->drawParagraph( &p, cursor->paragraph(), x, + r.y() - cursor->totalOffsetY() + cursor->y(), 2 * dist, h, pix, cg, visible, cursor ); } else { - doc->drawParagraph( &p, cursor->paragraph(), r.x() - cursor->totalOffsetX(), - r.y() - cursor->totalOffsetY(), r.width(), r.height(), - pix, cg, visible, cursor ); + doc->drawParagraph( &p, cursor->paragraph(), r.x() - cursor->totalOffsetX(), + r.y() - cursor->totalOffsetY(), r.width(), r.height(), + pix, cg, visible, cursor ); } @@ -1579,9 +1580,9 @@ void QTextEdit::contentsWheelEvent( QWheelEvent *e ) if ( isReadOnly() ) { - if ( e->state() & ControlButton ) { - if ( e->delta() > 0 ) - zoomOut(); - else if ( e->delta() < 0 ) - zoomIn(); - return; - } + if ( e->state() & ControlButton ) { + if ( e->delta() > 0 ) + zoomOut(); + else if ( e->delta() < 0 ) + zoomIn(); + return; + } } @@ -1603,64 +1604,64 @@ void QTextEdit::contentsMousePressEvent( QMouseEvent *e ) if ( e->button() == LeftButton ) { - mousePressed = TRUE; - drawCursor( FALSE ); - placeCursor( e->pos() ); - ensureCursorVisible(); - - if ( isReadOnly() && linksEnabled() ) { - QTextCursor c = *cursor; - placeCursor( e->pos(), &c, TRUE ); - if ( c.paragraph() && c.paragraph()->at( c.index() ) && - c.paragraph()->at( c.index() )->isAnchor() ) { - pressedLink = c.paragraph()->at( c.index() )->anchorHref(); - } - } + mousePressed = TRUE; + drawCursor( FALSE ); + placeCursor( e->pos() ); + ensureCursorVisible(); + + if ( isReadOnly() && linksEnabled() ) { + QTextCursor c = *cursor; + placeCursor( e->pos(), &c, TRUE ); + if ( c.paragraph() && c.paragraph()->at( c.index() ) && + c.paragraph()->at( c.index() )->isAnchor() ) { + pressedLink = c.paragraph()->at( c.index() )->anchorHref(); + } + } #ifndef QT_NO_DRAGANDDROP - if ( doc->inSelection( QTextDocument::Standard, e->pos() ) ) { - mightStartDrag = TRUE; - drawCursor( TRUE ); - dragStartTimer->start( QApplication::startDragTime(), TRUE ); - dragStartPos = e->pos(); - return; - } + if ( doc->inSelection( QTextDocument::Standard, e->pos() ) ) { + mightStartDrag = TRUE; + drawCursor( TRUE ); + dragStartTimer->start( QApplication::startDragTime(), TRUE ); + dragStartPos = e->pos(); + return; + } #endif - bool redraw = FALSE; - if ( doc->hasSelection( QTextDocument::Standard ) ) { - if ( !( e->state() & ShiftButton ) ) { - redraw = doc->removeSelection( QTextDocument::Standard ); - doc->setSelectionStart( QTextDocument::Standard, *cursor ); - } else { - redraw = doc->setSelectionEnd( QTextDocument::Standard, *cursor ) || redraw; - } - } else { - if ( isReadOnly() || !( e->state() & ShiftButton ) ) { - doc->setSelectionStart( QTextDocument::Standard, *cursor ); - } else { - doc->setSelectionStart( QTextDocument::Standard, c ); - redraw = doc->setSelectionEnd( QTextDocument::Standard, *cursor ) || redraw; - } - } - - for ( int i = 1; i < doc->numSelections(); ++i ) // start with 1 as we don't want to remove the Standard-Selection - redraw = doc->removeSelection( i ) || redraw; - - if ( !redraw ) { - drawCursor( TRUE ); - } else { - repaintChanged(); + bool redraw = FALSE; + if ( doc->hasSelection( QTextDocument::Standard ) ) { + if ( !( e->state() & ShiftButton ) ) { + redraw = doc->removeSelection( QTextDocument::Standard ); + doc->setSelectionStart( QTextDocument::Standard, *cursor ); + } else { + redraw = doc->setSelectionEnd( QTextDocument::Standard, *cursor ) || redraw; + } + } else { + if ( isReadOnly() || !( e->state() & ShiftButton ) ) { + doc->setSelectionStart( QTextDocument::Standard, *cursor ); + } else { + doc->setSelectionStart( QTextDocument::Standard, c ); + redraw = doc->setSelectionEnd( QTextDocument::Standard, *cursor ) || redraw; + } + } + + for ( int i = 1; i < doc->numSelections(); ++i ) // start with 1 as we don't want to remove the Standard-Selection + redraw = doc->removeSelection( i ) || redraw; + + if ( !redraw ) { + drawCursor( TRUE ); + } else { + repaintChanged(); #ifndef QT_NO_CURSOR - viewport()->setCursor( isReadOnly() ? arrowCursor : ibeamCursor ); + viewport()->setCursor( isReadOnly() ? arrowCursor : ibeamCursor ); #endif - } + } } else if ( e->button() == MidButton ) { - bool redraw = doc->removeSelection( QTextDocument::Standard ); - if ( !redraw ) { - drawCursor( TRUE ); - } else { - repaintChanged(); + bool redraw = doc->removeSelection( QTextDocument::Standard ); + if ( !redraw ) { + drawCursor( TRUE ); + } else { + repaintChanged(); #ifndef QT_NO_CURSOR - viewport()->setCursor( isReadOnly() ? arrowCursor : ibeamCursor ); + viewport()->setCursor( isReadOnly() ? arrowCursor : ibeamCursor ); #endif - } + } } @@ -1668,3 +1669,3 @@ void QTextEdit::contentsMousePressEvent( QMouseEvent *e ) if ( *cursor != oldCursor ) - updateCurrentFormat(); + updateCurrentFormat(); } @@ -1677,16 +1678,16 @@ void QTextEdit::contentsMouseMoveEvent( QMouseEvent *e ) #ifndef QT_NO_DRAGANDDROP - if ( mightStartDrag ) { - dragStartTimer->stop(); - if ( ( e->pos() - dragStartPos ).manhattanLength() > QApplication::startDragDistance() ) - startDrag(); + if ( mightStartDrag ) { + dragStartTimer->stop(); + if ( ( e->pos() - dragStartPos ).manhattanLength() > QApplication::startDragDistance() ) + startDrag(); #ifndef QT_NO_CURSOR - if ( !isReadOnly() ) - viewport()->setCursor( ibeamCursor ); + if ( !isReadOnly() ) + viewport()->setCursor( ibeamCursor ); #endif - return; - } + return; + } #endif - mousePos = e->pos(); - handleMouseMove( mousePos ); - oldMousePos = mousePos; + mousePos = e->pos(); + handleMouseMove( mousePos ); + oldMousePos = mousePos; } @@ -1695,6 +1696,6 @@ void QTextEdit::contentsMouseMoveEvent( QMouseEvent *e ) if ( !isReadOnly() && !mousePressed ) { - if ( doc->hasSelection( QTextDocument::Standard ) && doc->inSelection( QTextDocument::Standard, e->pos() ) ) - viewport()->setCursor( arrowCursor ); - else - viewport()->setCursor( ibeamCursor ); + if ( doc->hasSelection( QTextDocument::Standard ) && doc->inSelection( QTextDocument::Standard, e->pos() ) ) + viewport()->setCursor( arrowCursor ); + else + viewport()->setCursor( ibeamCursor ); } @@ -1710,9 +1711,9 @@ void QTextEdit::contentsMouseReleaseEvent( QMouseEvent * e ) if ( scrollTimer->isActive() ) - scrollTimer->stop(); + scrollTimer->stop(); #ifndef QT_NO_DRAGANDDROP if ( dragStartTimer->isActive() ) - dragStartTimer->stop(); + dragStartTimer->stop(); if ( mightStartDrag ) { - selectAll( FALSE ); - mousePressed = FALSE; + selectAll( FALSE ); + mousePressed = FALSE; } @@ -1720,3 +1721,3 @@ void QTextEdit::contentsMouseReleaseEvent( QMouseEvent * e ) if ( mousePressed ) { - mousePressed = FALSE; + mousePressed = FALSE; } @@ -1725,3 +1726,3 @@ void QTextEdit::contentsMouseReleaseEvent( QMouseEvent * e ) if ( oldCursor != *cursor ) - updateCurrentFormat(); + updateCurrentFormat(); inDoubleClick = FALSE; @@ -1730,9 +1731,9 @@ void QTextEdit::contentsMouseReleaseEvent( QMouseEvent * e ) if ( !onLink.isEmpty() && onLink == pressedLink && linksEnabled() ) { - QUrl u( doc->context(), onLink, TRUE ); - emitLinkClicked( u.toString( FALSE, FALSE ) ); + QUrl u( doc->context(), onLink, TRUE ); + emitLinkClicked( u.toString( FALSE, FALSE ) ); - // emitting linkClicked() may result in that the cursor winds - // up hovering over a different valid link - check this and - // set the appropriate cursor shape - updateCursor( e->pos() ); + // emitting linkClicked() may result in that the cursor winds + // up hovering over a different valid link - check this and + // set the appropriate cursor shape + updateCursor( e->pos() ); } @@ -1741,3 +1742,3 @@ void QTextEdit::contentsMouseReleaseEvent( QMouseEvent * e ) if ( !doc->hasSelection( QTextDocument::Standard, TRUE ) ) - doc->removeSelection( QTextDocument::Standard ); + doc->removeSelection( QTextDocument::Standard ); @@ -1754,5 +1755,5 @@ void QTextEdit::contentsMouseDoubleClickEvent( QMouseEvent * ) if ( cursor->index() > 0 && !cursor->paragraph()->at( cursor->index()-1 )->c.isSpace() ) - c1.gotoPreviousWord(); + c1.gotoPreviousWord(); if ( !cursor->paragraph()->at( cursor->index() )->c.isSpace() && !cursor->atParagEnd() ) - c2.gotoNextWord(); + c2.gotoNextWord(); @@ -1776,4 +1777,4 @@ void QTextEdit::contentsDragEnterEvent( QDragEnterEvent *e ) if ( isReadOnly() || !QTextDrag::canDecode( e ) ) { - e->ignore(); - return; + e->ignore(); + return; } @@ -1788,4 +1789,4 @@ void QTextEdit::contentsDragMoveEvent( QDragMoveEvent *e ) if ( isReadOnly() || !QTextDrag::canDecode( e ) ) { - e->ignore(); - return; + e->ignore(); + return; } @@ -1809,3 +1810,3 @@ void QTextEdit::contentsDropEvent( QDropEvent *e ) if ( isReadOnly() ) - return; + return; inDnD = FALSE; @@ -1815,57 +1816,57 @@ void QTextEdit::contentsDropEvent( QDropEvent *e ) if ( QTextDrag::decode( e, text ) ) { - bool hasSel = doc->hasSelection( QTextDocument::Standard ); - bool internalDrag = e->source() == this || e->source() == viewport(); - int dropId, dropIndex; - QTextCursor insertCursor = *cursor; - dropId = cursor->paragraph()->paragId(); - dropIndex = cursor->index(); - if ( hasSel && internalDrag ) { - QTextCursor c1, c2; - int selStartId, selStartIndex; - int selEndId, selEndIndex; - c1 = doc->selectionStartCursor( QTextDocument::Standard ); - c1.restoreState(); - c2 = doc->selectionEndCursor( QTextDocument::Standard ); - c2.restoreState(); - selStartId = c1.paragraph()->paragId(); - selStartIndex = c1.index(); - selEndId = c2.paragraph()->paragId(); - selEndIndex = c2.index(); - if ( ( ( dropId > selStartId ) || - ( dropId == selStartId && dropIndex > selStartIndex ) ) && - ( ( dropId < selEndId ) || - ( dropId == selEndId && dropIndex <= selEndIndex ) ) ) - insertCursor = c1; - if ( dropId == selEndId && dropIndex > selEndIndex ) { - insertCursor = c1; - if ( selStartId == selEndId ) { - insertCursor.setIndex( dropIndex - - ( selEndIndex - selStartIndex ) ); - } else { - insertCursor.setIndex( dropIndex - selEndIndex + - selStartIndex ); - } - } - } - - if ( internalDrag && e->action() == QDropEvent::Move ) { - removeSelectedText(); - intern = TRUE; - } else { - doc->removeSelection( QTextDocument::Standard ); + bool hasSel = doc->hasSelection( QTextDocument::Standard ); + bool internalDrag = e->source() == this || e->source() == viewport(); + int dropId, dropIndex; + QTextCursor insertCursor = *cursor; + dropId = cursor->paragraph()->paragId(); + dropIndex = cursor->index(); + if ( hasSel && internalDrag ) { + QTextCursor c1, c2; + int selStartId, selStartIndex; + int selEndId, selEndIndex; + c1 = doc->selectionStartCursor( QTextDocument::Standard ); + c1.restoreState(); + c2 = doc->selectionEndCursor( QTextDocument::Standard ); + c2.restoreState(); + selStartId = c1.paragraph()->paragId(); + selStartIndex = c1.index(); + selEndId = c2.paragraph()->paragId(); + selEndIndex = c2.index(); + if ( ( ( dropId > selStartId ) || + ( dropId == selStartId && dropIndex > selStartIndex ) ) && + ( ( dropId < selEndId ) || + ( dropId == selEndId && dropIndex <= selEndIndex ) ) ) + insertCursor = c1; + if ( dropId == selEndId && dropIndex > selEndIndex ) { + insertCursor = c1; + if ( selStartId == selEndId ) { + insertCursor.setIndex( dropIndex - + ( selEndIndex - selStartIndex ) ); + } else { + insertCursor.setIndex( dropIndex - selEndIndex + + selStartIndex ); + } + } + } + + if ( internalDrag && e->action() == QDropEvent::Move ) { + removeSelectedText(); + intern = TRUE; + } else { + doc->removeSelection( QTextDocument::Standard ); #ifndef QT_NO_CURSOR - viewport()->setCursor( isReadOnly() ? arrowCursor : ibeamCursor ); + viewport()->setCursor( isReadOnly() ? arrowCursor : ibeamCursor ); #endif - } - drawCursor( FALSE ); - cursor->setParagraph( insertCursor.paragraph() ); - cursor->setIndex( insertCursor.index() ); - drawCursor( TRUE ); - if ( !cursor->nestedDepth() ) { - insert( text, FALSE, TRUE, FALSE ); - } else { - if ( intern ) - undo(); - e->ignore(); - } + } + drawCursor( FALSE ); + cursor->setParagraph( insertCursor.paragraph() ); + cursor->setIndex( insertCursor.index() ); + drawCursor( TRUE ); + if ( !cursor->nestedDepth() ) { + insert( text, FALSE, TRUE, FALSE ); + } else { + if ( intern ) + undo(); + e->ignore(); + } } @@ -1878,3 +1879,3 @@ void QTextEdit::autoScrollTimerDone() if ( mousePressed ) - handleMouseMove( viewportToContents( viewport()->mapFromGlobal( QCursor::pos() ) ) ); + handleMouseMove( viewportToContents( viewport()->mapFromGlobal( QCursor::pos() ) ) ); } @@ -1884,8 +1885,8 @@ void QTextEdit::handleMouseMove( const QPoint& pos ) if ( !mousePressed ) - return; + return; if ( !scrollTimer->isActive() && pos.y() < contentsY() || pos.y() > contentsY() + visibleHeight() ) - scrollTimer->start( 100, FALSE ); + scrollTimer->start( 100, FALSE ); else if ( scrollTimer->isActive() && pos.y() >= contentsY() && pos.y() <= contentsY() + visibleHeight() ) - scrollTimer->stop(); + scrollTimer->stop(); @@ -1897,22 +1898,22 @@ void QTextEdit::handleMouseMove( const QPoint& pos ) if ( inDoubleClick ) { - QTextCursor cl = *cursor; - cl.gotoPreviousWord(); - QTextCursor cr = *cursor; - cr.gotoNextWord(); + QTextCursor cl = *cursor; + cl.gotoPreviousWord(); + QTextCursor cr = *cursor; + cr.gotoNextWord(); - int diff = QABS( oldCursor.paragraph()->at( oldCursor.index() )->x - mousePos.x() ); - int ldiff = QABS( cl.paragraph()->at( cl.index() )->x - mousePos.x() ); - int rdiff = QABS( cr.paragraph()->at( cr.index() )->x - mousePos.x() ); + int diff = QABS( oldCursor.paragraph()->at( oldCursor.index() )->x - mousePos.x() ); + int ldiff = QABS( cl.paragraph()->at( cl.index() )->x - mousePos.x() ); + int rdiff = QABS( cr.paragraph()->at( cr.index() )->x - mousePos.x() ); - if ( cursor->paragraph()->lineStartOfChar( cursor->index() ) != - oldCursor.paragraph()->lineStartOfChar( oldCursor.index() ) ) - diff = 0xFFFFFF; + if ( cursor->paragraph()->lineStartOfChar( cursor->index() ) != + oldCursor.paragraph()->lineStartOfChar( oldCursor.index() ) ) + diff = 0xFFFFFF; - if ( rdiff < diff && rdiff < ldiff ) - *cursor = cr; - else if ( ldiff < diff && ldiff < rdiff ) - *cursor = cl; - else - *cursor = oldCursor; + if ( rdiff < diff && rdiff < ldiff ) + *cursor = cr; + else if ( ldiff < diff && ldiff < rdiff ) + *cursor = cl; + else + *cursor = oldCursor; @@ -1923,3 +1924,3 @@ void QTextEdit::handleMouseMove( const QPoint& pos ) if ( doc->hasSelection( QTextDocument::Standard ) ) { - redraw = doc->setSelectionEnd( QTextDocument::Standard, *cursor ) || redraw; + redraw = doc->setSelectionEnd( QTextDocument::Standard, *cursor ) || redraw; } @@ -1927,6 +1928,6 @@ void QTextEdit::handleMouseMove( const QPoint& pos ) if ( !redraw ) { - drawCursor( TRUE ); + drawCursor( TRUE ); } else { - repaintChanged(); - drawCursor( TRUE ); + repaintChanged(); + drawCursor( TRUE ); } @@ -1934,11 +1935,11 @@ void QTextEdit::handleMouseMove( const QPoint& pos ) if ( currentFormat && currentFormat->key() != cursor->paragraph()->at( cursor->index() )->format()->key() ) { - currentFormat->removeRef(); - currentFormat = doc->formatCollection()->format( cursor->paragraph()->at( cursor->index() )->format() ); - if ( currentFormat->isMisspelled() ) { - currentFormat->removeRef(); - currentFormat = doc->formatCollection()->format( currentFormat->font(), currentFormat->color() ); - } - emit currentFontChanged( currentFormat->font() ); - emit currentColorChanged( currentFormat->color() ); - emit currentVerticalAlignmentChanged( (VerticalAlignment)currentFormat->vAlign() ); + currentFormat->removeRef(); + currentFormat = doc->formatCollection()->format( cursor->paragraph()->at( cursor->index() )->format() ); + if ( currentFormat->isMisspelled() ) { + currentFormat->removeRef(); + currentFormat = doc->formatCollection()->format( currentFormat->font(), currentFormat->color() ); + } + emit currentFontChanged( currentFormat->font() ); + emit currentColorChanged( currentFormat->color() ); + emit currentVerticalAlignmentChanged( (VerticalAlignment)currentFormat->vAlign() ); } @@ -1946,6 +1947,6 @@ void QTextEdit::handleMouseMove( const QPoint& pos ) if ( currentAlignment != cursor->paragraph()->alignment() ) { - currentAlignment = cursor->paragraph()->alignment(); - block_set_alignment = TRUE; - emit currentAlignmentChanged( currentAlignment ); - block_set_alignment = FALSE; + currentAlignment = cursor->paragraph()->alignment(); + block_set_alignment = TRUE; + emit currentAlignmentChanged( currentAlignment ); + block_set_alignment = FALSE; } @@ -1965,3 +1966,3 @@ void QTextEdit::placeCursor( const QPoint &pos, QTextCursor *c, bool link ) if ( !c ) - c = cursor; + c = cursor; @@ -1978,11 +1979,11 @@ void QTextEdit::updateMicroFocusHint() if ( d->preeditStart != -1 ) - c.setIndex( d->preeditStart ); + c.setIndex( d->preeditStart ); if ( hasFocus() || viewport()->hasFocus() ) { - int h = c.paragraph()->lineHeightOfChar( cursor->index() ); - if ( !readonly ) { - QFont f = c.paragraph()->at( c.index() )->format()->font(); - setMicroFocusHint( c.x() - contentsX() + frameWidth(), - c.y() + cursor->paragraph()->rect().y() - contentsY() + frameWidth(), 0, h, TRUE ); - } + int h = c.paragraph()->lineHeightOfChar( cursor->index() ); + if ( !readonly ) { + QFont f = c.paragraph()->at( c.index() )->format()->font(); + setMicroFocusHint( c.x() - contentsX() + frameWidth(), + c.y() + cursor->paragraph()->rect().y() - contentsY() + frameWidth(), 0, h, TRUE ); + } } @@ -1995,3 +1996,3 @@ void QTextEdit::formatMore() if ( !lastFormatted ) - return; + return; @@ -2003,13 +2004,13 @@ void QTextEdit::formatMore() for ( int i = 0; ( i < to || firstVisible ) && lastFormatted; ++i ) { - lastFormatted->format(); - if ( i == 0 ) - firstVisible = lastFormatted->rect().intersects( cr ); - else if ( firstVisible ) - firstVisible = lastFormatted->rect().intersects( cr ); - bottom = QMAX( bottom, lastFormatted->rect().top() + - lastFormatted->rect().height() ); - lastBottom = lastFormatted->rect().top() + lastFormatted->rect().height(); - lastFormatted = lastFormatted->next(); - if ( lastFormatted ) - lastBottom = -1; + lastFormatted->format(); + if ( i == 0 ) + firstVisible = lastFormatted->rect().intersects( cr ); + else if ( firstVisible ) + firstVisible = lastFormatted->rect().intersects( cr ); + bottom = QMAX( bottom, lastFormatted->rect().top() + + lastFormatted->rect().height() ); + lastBottom = lastFormatted->rect().top() + lastFormatted->rect().height(); + lastFormatted = lastFormatted->next(); + if ( lastFormatted ) + lastBottom = -1; } @@ -2017,8 +2018,8 @@ void QTextEdit::formatMore() if ( bottom > contentsHeight() ) { - resizeContents( contentsWidth(), QMAX( doc->height(), bottom ) ); + resizeContents( contentsWidth(), QMAX( doc->height(), bottom ) ); } else if ( lastBottom != -1 && lastBottom < contentsHeight() ) { - resizeContents( contentsWidth(), QMAX( doc->height(), lastBottom ) ); - if ( contentsHeight() < visibleHeight() ) - updateContents( 0, contentsHeight(), visibleWidth(), - visibleHeight() - contentsHeight() ); + resizeContents( contentsWidth(), QMAX( doc->height(), lastBottom ) ); + if ( contentsHeight() < visibleHeight() ) + updateContents( 0, contentsHeight(), visibleWidth(), + visibleHeight() - contentsHeight() ); } @@ -2026,5 +2027,5 @@ void QTextEdit::formatMore() if ( lastFormatted ) - formatTimer->start( interval, TRUE ); + formatTimer->start( interval, TRUE ); else - interval = QMAX( 0, interval ); + interval = QMAX( 0, interval ); } @@ -2034,3 +2035,3 @@ void QTextEdit::doResize() if ( wrapMode == FixedPixelWidth ) - return; + return; doc->setMinimumWidth( -1 ); @@ -2057,10 +2058,10 @@ bool QTextEdit::eventFilter( QObject *o, QEvent *e ) if ( o == this || o == viewport() ) { - if ( e->type() == QEvent::FocusIn ) { - blinkTimer->start( QApplication::cursorFlashTime() / 2 ); - drawCursor( TRUE ); - updateMicroFocusHint(); - } else if ( e->type() == QEvent::FocusOut ) { - blinkTimer->stop(); - drawCursor( FALSE ); - } + if ( e->type() == QEvent::FocusIn ) { + blinkTimer->start( QApplication::cursorFlashTime() / 2 ); + drawCursor( TRUE ); + updateMicroFocusHint(); + } else if ( e->type() == QEvent::FocusOut ) { + blinkTimer->stop(); + drawCursor( FALSE ); + } } @@ -2085,3 +2086,3 @@ void QTextEdit::insert( const QString &text, bool indent, bool checkNewLine, boo if ( cursor->nestedDepth() != 0 ) // #### for 3.0, disable editing of tables as this is not advanced enough - return; + return; QString txt( text ); @@ -2089,3 +2090,3 @@ void QTextEdit::insert( const QString &text, bool indent, bool checkNewLine, boo if ( !isReadOnly() && doc->hasSelection( QTextDocument::Standard ) && removeSelected ) - removeSelectedText(); + removeSelectedText(); QTextCursor c2 = *cursor; @@ -2094,9 +2095,9 @@ void QTextEdit::insert( const QString &text, bool indent, bool checkNewLine, boo if ( undoEnabled && !isReadOnly() ) { - checkUndoRedoInfo( UndoRedoInfo::Insert ); - if ( !undoRedoInfo.valid() ) { - undoRedoInfo.id = cursor->paragraph()->paragId(); - undoRedoInfo.index = cursor->index(); - undoRedoInfo.d->text = QString::null; - } - oldLen = undoRedoInfo.d->text.length(); + checkUndoRedoInfo( UndoRedoInfo::Insert ); + if ( !undoRedoInfo.valid() ) { + undoRedoInfo.id = cursor->paragraph()->paragId(); + undoRedoInfo.index = cursor->index(); + undoRedoInfo.d->text = QString::null; + } + oldLen = undoRedoInfo.d->text.length(); } @@ -2104,3 +2105,3 @@ void QTextEdit::insert( const QString &text, bool indent, bool checkNewLine, boo lastFormatted = checkNewLine && cursor->paragraph()->prev() ? - cursor->paragraph()->prev() : cursor->paragraph(); + cursor->paragraph()->prev() : cursor->paragraph(); QTextCursor oldCursor = *cursor; @@ -2108,6 +2109,6 @@ void QTextEdit::insert( const QString &text, bool indent, bool checkNewLine, boo if ( doc->useFormatCollection() ) { - doc->setSelectionStart( QTextDocument::Temp, oldCursor ); - doc->setSelectionEnd( QTextDocument::Temp, *cursor ); - doc->setFormat( QTextDocument::Temp, currentFormat, QTextFormat::Format ); - doc->removeSelection( QTextDocument::Temp ); + doc->setSelectionStart( QTextDocument::Temp, oldCursor ); + doc->setSelectionEnd( QTextDocument::Temp, *cursor ); + doc->setFormat( QTextDocument::Temp, currentFormat, QTextFormat::Format ); + doc->removeSelection( QTextDocument::Temp ); } @@ -2115,3 +2116,3 @@ void QTextEdit::insert( const QString &text, bool indent, bool checkNewLine, boo if ( indent && ( txt == "{" || txt == "}" || txt == ":" || txt == "#" ) ) - cursor->indent(); + cursor->indent(); formatMore(); @@ -2122,12 +2123,12 @@ void QTextEdit::insert( const QString &text, bool indent, bool checkNewLine, boo if ( undoEnabled && !isReadOnly() ) { - undoRedoInfo.d->text += txt; - if ( !doc->preProcessor() ) { - for ( int i = 0; i < (int)txt.length(); ++i ) { - if ( txt[ i ] != '\n' && c2.paragraph()->at( c2.index() )->format() ) { - c2.paragraph()->at( c2.index() )->format()->addRef(); - undoRedoInfo.d->text.setFormat( oldLen + i, c2.paragraph()->at( c2.index() )->format(), TRUE ); - } - c2.gotoNextLetter(); - } - } + undoRedoInfo.d->text += txt; + if ( !doc->preProcessor() ) { + for ( int i = 0; i < (int)txt.length(); ++i ) { + if ( txt[ i ] != '\n' && c2.paragraph()->at( c2.index() )->format() ) { + c2.paragraph()->at( c2.index() )->format()->addRef(); + undoRedoInfo.d->text.setFormat( oldLen + i, c2.paragraph()->at( c2.index() )->format(), TRUE ); + } + c2.gotoNextLetter(); + } + } } @@ -2135,5 +2136,5 @@ void QTextEdit::insert( const QString &text, bool indent, bool checkNewLine, boo if ( !removeSelected ) { - doc->setSelectionStart( QTextDocument::Standard, oldCursor ); - doc->setSelectionEnd( QTextDocument::Standard, *cursor ); - repaintChanged(); + doc->setSelectionStart( QTextDocument::Standard, oldCursor ); + doc->setSelectionEnd( QTextDocument::Standard, *cursor ); + repaintChanged(); } @@ -2151,3 +2152,3 @@ void QTextEdit::insertAt( const QString &text, int para, int index ) if ( !p ) - return; + return; QTextCursor tmp = *cursor; @@ -2168,10 +2169,10 @@ void QTextEdit::insertParagraph( const QString &text, int para ) if ( p ) { - QTextCursor tmp( doc ); - tmp.setParagraph( p ); - tmp.setIndex( 0 ); - tmp.insert( text, TRUE ); - tmp.splitAndInsertEmptyParagraph(); - repaintChanged(); + QTextCursor tmp( doc ); + tmp.setParagraph( p ); + tmp.setIndex( 0 ); + tmp.insert( text, TRUE ); + tmp.splitAndInsertEmptyParagraph(); + repaintChanged(); } else { - append( text ); + append( text ); } @@ -2185,10 +2186,10 @@ void QTextEdit::removeParagraph( int para ) if ( !p ) - return; + return; for ( int i = 0; i < doc->numSelections(); ++i ) - doc->removeSelection( i ); + doc->removeSelection( i ); if ( p == doc->firstParagraph() && p == doc->lastParagraph() ) { - p->remove( 0, p->length() - 1 ); - repaintChanged(); - return; + p->remove( 0, p->length() - 1 ); + repaintChanged(); + return; } @@ -2197,9 +2198,9 @@ void QTextEdit::removeParagraph( int para ) if ( p->prev() ) - p->prev()->setNext( p->next() ); + p->prev()->setNext( p->next() ); else - doc->setFirstParagraph( p->next() ); + doc->setFirstParagraph( p->next() ); if ( p->next() ) - p->next()->setPrev( p->prev() ); + p->next()->setPrev( p->prev() ); else - doc->setLastParagraph( p->prev() ); + doc->setLastParagraph( p->prev() ); QTextParagraph *start = p->next(); @@ -2210,7 +2211,7 @@ void QTextEdit::removeParagraph( int para ) while ( p ) { - p->setParagId( p->prev() ? p->prev()->paragId() + 1 : 0 ); - p->move( dy ); - p->invalidate( 0 ); - p->setEndState( -1 ); - p = p->next(); + p->setParagId( p->prev() ? p->prev()->paragId() + 1 : 0 ); + p->move( dy ); + p->invalidate( 0 ); + p->setEndState( -1 ); + p = p->next(); } @@ -2218,4 +2219,4 @@ void QTextEdit::removeParagraph( int para ) if ( resetCursor ) { - cursor->setParagraph( doc->firstParagraph() ); - cursor->setIndex( 0 ); + cursor->setParagraph( doc->firstParagraph() ); + cursor->setIndex( 0 ); } @@ -2241,6 +2242,6 @@ void QTextEdit::undo() if ( isReadOnly() || !doc->commands()->isUndoAvailable() || !undoEnabled ) - return; + return; for ( int i = 0; i < (int)doc->numSelections(); ++i ) - doc->removeSelection( i ); + doc->removeSelection( i ); @@ -2254,4 +2255,4 @@ void QTextEdit::undo() if ( !c ) { - drawCursor( TRUE ); - return; + drawCursor( TRUE ); + return; } @@ -2278,6 +2279,6 @@ void QTextEdit::redo() if ( isReadOnly() || !doc->commands()->isRedoAvailable() || !undoEnabled ) - return; + return; for ( int i = 0; i < (int)doc->numSelections(); ++i ) - doc->removeSelection( i ); + doc->removeSelection( i ); @@ -2291,4 +2292,4 @@ void QTextEdit::redo() if ( !c ) { - drawCursor( TRUE ); - return; + drawCursor( TRUE ); + return; } @@ -2317,3 +2318,3 @@ void QTextEdit::paste() if ( isReadOnly() ) - return; + return; pasteSubType( "plain" ); @@ -2326,3 +2327,3 @@ void QTextEdit::checkUndoRedoInfo( UndoRedoInfo::Type t ) if ( undoRedoInfo.valid() && t != undoRedoInfo.type ) { - clearUndoRedo(); + clearUndoRedo(); } @@ -2340,3 +2341,3 @@ void QTextEdit::repaintChanged() if ( !isUpdatesEnabled() || !viewport()->isUpdatesEnabled() ) - return; + return; QPainter p( viewport() ); @@ -2358,3 +2359,3 @@ void QTextEdit::cut() if ( isReadOnly() ) - return; + return; @@ -2362,5 +2363,5 @@ void QTextEdit::cut() if ( doc->hasSelection( QTextDocument::Standard ) && - !( t = doc->selectedText( QTextDocument::Standard, qt_enable_richtext_copy ) ).isEmpty() ) { - QApplication::clipboard()->setText( t ); - removeSelectedText(); + !( t = doc->selectedText( QTextDocument::Standard, qt_enable_richtext_copy ) ).isEmpty() ) { + QApplication::clipboard()->setText( t ); + removeSelectedText(); } @@ -2378,4 +2379,4 @@ void QTextEdit::copy() if ( doc->hasSelection( QTextDocument::Standard ) && - !t.isEmpty() && t.simplifyWhiteSpace() != "<selstart/>" ) - QApplication::clipboard()->setText( t ); + !t.isEmpty() && t.simplifyWhiteSpace() != "<selstart/>" ) + QApplication::clipboard()->setText( t ); } @@ -2389,3 +2390,3 @@ void QTextEdit::indent() if ( isReadOnly() ) - return; + return; @@ -2393,5 +2394,5 @@ void QTextEdit::indent() if ( !doc->hasSelection( QTextDocument::Standard ) ) - cursor->indent(); + cursor->indent(); else - doc->indentSelection( QTextDocument::Standard ); + doc->indentSelection( QTextDocument::Standard ); repaintChanged(); @@ -2411,3 +2412,3 @@ bool QTextEdit::focusNextPrevChild( bool n ) if ( !isReadOnly() || !linksEnabled() ) - return FALSE; + return FALSE; bool b = doc->focusNextPrevChild( n ); @@ -2415,5 +2416,5 @@ bool QTextEdit::focusNextPrevChild( bool n ) if ( b ) - //##### this does not work with tables. The focusIndicator - //should really be a QTextCursor. Fix 3.1 - makeParagVisible( doc->focusIndicator.parag ); + //##### this does not work with tables. The focusIndicator + //should really be a QTextCursor. Fix 3.1 + makeParagVisible( doc->focusIndicator.parag ); return b; @@ -2431,43 +2432,43 @@ void QTextEdit::setFormat( QTextFormat *f, int flags ) if ( doc->hasSelection( QTextDocument::Standard ) ) { - drawCursor( FALSE ); - QTextCursor c1 = doc->selectionStartCursor( QTextDocument::Standard ); - c1.restoreState(); - QTextCursor c2 = doc->selectionEndCursor( QTextDocument::Standard ); - c2.restoreState(); - clearUndoRedo(); - undoRedoInfo.type = UndoRedoInfo::Format; - undoRedoInfo.id = c1.paragraph()->paragId(); - undoRedoInfo.index = c1.index(); - undoRedoInfo.eid = c2.paragraph()->paragId(); - undoRedoInfo.eindex = c2.index(); - readFormats( c1, c2, undoRedoInfo.d->text ); - undoRedoInfo.format = f; - undoRedoInfo.flags = flags; - clearUndoRedo(); - doc->setFormat( QTextDocument::Standard, f, flags ); - repaintChanged(); - formatMore(); - drawCursor( TRUE ); - setModified(); - emit textChanged(); + drawCursor( FALSE ); + QTextCursor c1 = doc->selectionStartCursor( QTextDocument::Standard ); + c1.restoreState(); + QTextCursor c2 = doc->selectionEndCursor( QTextDocument::Standard ); + c2.restoreState(); + clearUndoRedo(); + undoRedoInfo.type = UndoRedoInfo::Format; + undoRedoInfo.id = c1.paragraph()->paragId(); + undoRedoInfo.index = c1.index(); + undoRedoInfo.eid = c2.paragraph()->paragId(); + undoRedoInfo.eindex = c2.index(); + readFormats( c1, c2, undoRedoInfo.d->text ); + undoRedoInfo.format = f; + undoRedoInfo.flags = flags; + clearUndoRedo(); + doc->setFormat( QTextDocument::Standard, f, flags ); + repaintChanged(); + formatMore(); + drawCursor( TRUE ); + setModified(); + emit textChanged(); } if ( currentFormat && currentFormat->key() != f->key() ) { - currentFormat->removeRef(); - currentFormat = doc->formatCollection()->format( f ); - if ( currentFormat->isMisspelled() ) { - currentFormat->removeRef(); - currentFormat = doc->formatCollection()->format( currentFormat->font(), currentFormat->color() ); - } - emit currentFontChanged( currentFormat->font() ); - emit currentColorChanged( currentFormat->color() ); - emit currentVerticalAlignmentChanged( (VerticalAlignment)currentFormat->vAlign() ); - if ( cursor->index() == cursor->paragraph()->length() - 1 ) { - currentFormat->addRef(); - cursor->paragraph()->string()->setFormat( cursor->index(), currentFormat, TRUE ); - if ( cursor->paragraph()->length() == 1 ) { - cursor->paragraph()->invalidate( 0 ); - cursor->paragraph()->format(); - repaintChanged(); - } - } + currentFormat->removeRef(); + currentFormat = doc->formatCollection()->format( f ); + if ( currentFormat->isMisspelled() ) { + currentFormat->removeRef(); + currentFormat = doc->formatCollection()->format( currentFormat->font(), currentFormat->color() ); + } + emit currentFontChanged( currentFormat->font() ); + emit currentColorChanged( currentFormat->color() ); + emit currentVerticalAlignmentChanged( (VerticalAlignment)currentFormat->vAlign() ); + if ( cursor->index() == cursor->paragraph()->length() - 1 ) { + currentFormat->addRef(); + cursor->paragraph()->string()->setFormat( cursor->index(), currentFormat, TRUE ); + if ( cursor->paragraph()->length() == 1 ) { + cursor->paragraph()->invalidate( 0 ); + cursor->paragraph()->format(); + repaintChanged(); + } + } } @@ -2481,5 +2482,5 @@ void QTextEdit::setPalette( const QPalette &p ) if ( textFormat() == PlainText ) { - QTextFormat *f = doc->formatCollection()->defaultFormat(); - f->setColor( colorGroup().text() ); - updateContents( contentsX(), contentsY(), visibleWidth(), visibleHeight() ); + QTextFormat *f = doc->formatCollection()->defaultFormat(); + f->setColor( colorGroup().text() ); + updateContents( contentsX(), contentsY(), visibleWidth(), visibleHeight() ); } @@ -2503,3 +2504,3 @@ void QTextEdit::setParagType( QStyleSheetItem::DisplayMode dm, QStyleSheetItem:: if ( isReadOnly() ) - return; + return; @@ -2509,6 +2510,6 @@ void QTextEdit::setParagType( QStyleSheetItem::DisplayMode dm, QStyleSheetItem:: if ( doc->hasSelection( QTextDocument::Standard ) ) { - start = doc->selectionStartCursor( QTextDocument::Standard ).topParagraph(); - end = doc->selectionEndCursor( QTextDocument::Standard ).topParagraph(); - if ( end->paragId() < start->paragId() ) - return; // do not trust our selections + start = doc->selectionStartCursor( QTextDocument::Standard ).topParagraph(); + end = doc->selectionEndCursor( QTextDocument::Standard ).topParagraph(); + if ( end->paragId() < start->paragId() ) + return; // do not trust our selections } @@ -2522,12 +2523,12 @@ void QTextEdit::setParagType( QStyleSheetItem::DisplayMode dm, QStyleSheetItem:: while ( start != end->next() ) { - start->setListStyle( listStyle ); - if ( dm == QStyleSheetItem::DisplayListItem ) { - start->setListItem( TRUE ); - if( start->listDepth() == 0 ) - start->setListDepth( 1 ); - } else if ( start->isListItem() ) { - start->setListItem( FALSE ); - start->setListDepth( QMAX( start->listDepth()-1, 0 ) ); - } - start = start->next(); + start->setListStyle( listStyle ); + if ( dm == QStyleSheetItem::DisplayListItem ) { + start->setListItem( TRUE ); + if( start->listDepth() == 0 ) + start->setListDepth( 1 ); + } else if ( start->isListItem() ) { + start->setListItem( FALSE ); + start->setListDepth( QMAX( start->listDepth()-1, 0 ) ); + } + start = start->next(); } @@ -2552,3 +2553,3 @@ void QTextEdit::setAlignment( int a ) if ( isReadOnly() || block_set_alignment ) - return; + return; @@ -2558,6 +2559,6 @@ void QTextEdit::setAlignment( int a ) if ( doc->hasSelection( QTextDocument::Standard ) ) { - start = doc->selectionStartCursor( QTextDocument::Standard ).topParagraph(); - end = doc->selectionEndCursor( QTextDocument::Standard ).topParagraph(); - if ( end->paragId() < start->paragId() ) - return; // do not trust our selections + start = doc->selectionStartCursor( QTextDocument::Standard ).topParagraph(); + end = doc->selectionEndCursor( QTextDocument::Standard ).topParagraph(); + if ( end->paragId() < start->paragId() ) + return; // do not trust our selections } @@ -2571,4 +2572,4 @@ void QTextEdit::setAlignment( int a ) while ( start != end->next() ) { - start->setAlignment( a ); - start = start->next(); + start->setAlignment( a ); + start = start->next(); } @@ -2580,4 +2581,4 @@ void QTextEdit::setAlignment( int a ) if ( currentAlignment != a ) { - currentAlignment = a; - emit currentAlignmentChanged( currentAlignment ); + currentAlignment = a; + emit currentAlignmentChanged( currentAlignment ); } @@ -2591,15 +2592,15 @@ void QTextEdit::updateCurrentFormat() if ( i > 0 ) - --i; + --i; if ( doc->useFormatCollection() && - ( !currentFormat || currentFormat->key() != cursor->paragraph()->at( i )->format()->key() ) ) { - if ( currentFormat ) - currentFormat->removeRef(); - currentFormat = doc->formatCollection()->format( cursor->paragraph()->at( i )->format() ); - if ( currentFormat->isMisspelled() ) { - currentFormat->removeRef(); - currentFormat = doc->formatCollection()->format( currentFormat->font(), currentFormat->color() ); - } - emit currentFontChanged( currentFormat->font() ); - emit currentColorChanged( currentFormat->color() ); - emit currentVerticalAlignmentChanged( (VerticalAlignment)currentFormat->vAlign() ); + ( !currentFormat || currentFormat->key() != cursor->paragraph()->at( i )->format()->key() ) ) { + if ( currentFormat ) + currentFormat->removeRef(); + currentFormat = doc->formatCollection()->format( cursor->paragraph()->at( i )->format() ); + if ( currentFormat->isMisspelled() ) { + currentFormat->removeRef(); + currentFormat = doc->formatCollection()->format( currentFormat->font(), currentFormat->color() ); + } + emit currentFontChanged( currentFormat->font() ); + emit currentColorChanged( currentFormat->color() ); + emit currentVerticalAlignmentChanged( (VerticalAlignment)currentFormat->vAlign() ); } @@ -2607,6 +2608,6 @@ void QTextEdit::updateCurrentFormat() if ( currentAlignment != cursor->paragraph()->alignment() ) { - currentAlignment = cursor->paragraph()->alignment(); - block_set_alignment = TRUE; - emit currentAlignmentChanged( currentAlignment ); - block_set_alignment = FALSE; + currentAlignment = cursor->paragraph()->alignment(); + block_set_alignment = TRUE; + emit currentAlignmentChanged( currentAlignment ); + block_set_alignment = FALSE; } @@ -2730,3 +2731,3 @@ QString QTextEdit::text() const if ( isReadOnly() ) - return doc->originalText(); + return doc->originalText(); return doc->text(); @@ -2770,4 +2771,4 @@ void QTextEdit::setText( const QString &text, const QString &context ) if ( !isModified() && isReadOnly() && - this->context() == context && this->text() == text ) - return; + this->context() == context && this->text() == text ) + return; @@ -2783,8 +2784,8 @@ void QTextEdit::setText( const QString &text, const QString &context ) if ( wrapMode == FixedPixelWidth ) { - resizeContents( wrapWidth, 0 ); - doc->setWidth( wrapWidth ); - doc->setMinimumWidth( wrapWidth ); + resizeContents( wrapWidth, 0 ); + doc->setWidth( wrapWidth ); + doc->setMinimumWidth( wrapWidth ); } else { - doc->setMinimumWidth( -1 ); - resizeContents( 0, 0 ); + doc->setMinimumWidth( -1 ); + resizeContents( 0, 0 ); } @@ -2797,3 +2798,3 @@ void QTextEdit::setText( const QString &text, const QString &context ) if ( isModified() ) - setModified( FALSE ); + setModified( FALSE ); emit textChanged(); @@ -2862,3 +2863,3 @@ void QTextEdit::setText( const QString &text, const QString &context ) bool QTextEdit::find( const QString &expr, bool cs, bool wo, bool forward, - int *para, int *index ) + int *para, int *index ) { @@ -2870,12 +2871,12 @@ bool QTextEdit::find( const QString &expr, bool cs, bool wo, bool forward, if ( para && index ) { - if ( doc->paragAt( *para ) ) - findcur.gotoPosition( doc->paragAt(*para), *index ); - else - findcur.gotoEnd(); + if ( doc->paragAt( *para ) ) + findcur.gotoPosition( doc->paragAt(*para), *index ); + else + findcur.gotoEnd(); } else if ( doc->hasSelection( QTextDocument::Standard ) ){ - // maks sure we do not find the same selection again - if ( forward ) - findcur.gotoNextLetter(); - else - findcur.gotoPreviousLetter(); + // maks sure we do not find the same selection again + if ( forward ) + findcur.gotoNextLetter(); + else + findcur.gotoPreviousLetter(); } @@ -2884,9 +2885,9 @@ bool QTextEdit::find( const QString &expr, bool cs, bool wo, bool forward, if ( found ) { - if ( para ) - *para = findcur.paragraph()->paragId(); - if ( index ) - *index = findcur.index(); - *cursor = findcur; - repaintChanged(); - ensureCursorVisible(); + if ( para ) + *para = findcur.paragraph()->paragId(); + if ( index ) + *index = findcur.index(); + *cursor = findcur; + repaintChanged(); + ensureCursorVisible(); } @@ -2899,3 +2900,3 @@ void QTextEdit::blinkCursor() if ( !cursorVisible ) - return; + return; bool cv = cursorVisible; @@ -2916,6 +2917,6 @@ void QTextEdit::setCursorPosition( int para, int index ) if ( !p ) - return; + return; if ( index > p->length() - 1 ) - index = p->length() - 1; + index = p->length() - 1; @@ -2942,3 +2943,3 @@ void QTextEdit::getCursorPosition( int *para, int *index ) const if ( !para || !index ) - return; + return; *para = cursor->paragraph()->paragId(); @@ -2963,21 +2964,21 @@ void QTextEdit::getCursorPosition( int *para, int *index ) const void QTextEdit::setSelection( int paraFrom, int indexFrom, - int paraTo, int indexTo, int selNum ) + int paraTo, int indexTo, int selNum ) { if ( doc->hasSelection( selNum ) ) { - doc->removeSelection( selNum ); - repaintChanged(); + doc->removeSelection( selNum ); + repaintChanged(); } if ( selNum > doc->numSelections() - 1 ) - doc->addSelection( selNum ); + doc->addSelection( selNum ); QTextParagraph *p1 = doc->paragAt( paraFrom ); if ( !p1 ) - return; + return; QTextParagraph *p2 = doc->paragAt( paraTo ); if ( !p2 ) - return; + return; if ( indexFrom > p1->length() - 1 ) - indexFrom = p1->length() - 1; + indexFrom = p1->length() - 1; if ( indexTo > p2->length() - 1 ) - indexTo = p2->length() - 1; + indexTo = p2->length() - 1; @@ -2995,3 +2996,3 @@ void QTextEdit::setSelection( int paraFrom, int indexFrom, if ( selNum != QTextDocument::Standard ) - *cursor = oldCursor; + *cursor = oldCursor; drawCursor( TRUE ); @@ -3020,12 +3021,12 @@ void QTextEdit::setSelection( int paraFrom, int indexFrom, void QTextEdit::getSelection( int *paraFrom, int *indexFrom, - int *paraTo, int *indexTo, int selNum ) const + int *paraTo, int *indexTo, int selNum ) const { if ( !paraFrom || !paraTo || !indexFrom || !indexTo ) - return; + return; if ( !doc->hasSelection( selNum ) ) { - *paraFrom = -1; - *indexFrom = -1; - *paraTo = -1; - *indexTo = -1; - return; + *paraFrom = -1; + *indexFrom = -1; + *paraTo = -1; + *indexTo = -1; + return; } @@ -3081,3 +3082,3 @@ int QTextEdit::linesOfParagraph( int para ) const if ( !p ) - return -1; + return -1; return p->lines(); @@ -3094,3 +3095,3 @@ int QTextEdit::paragraphLength( int para ) const if ( !p ) - return -1; + return -1; return p->length() - 1; @@ -3111,4 +3112,4 @@ int QTextEdit::lines() const while ( p ) { - l += p->lines(); - p = p->next(); + l += p->lines(); + p = p->next(); } @@ -3130,3 +3131,3 @@ int QTextEdit::lineOfChar( int para, int index ) if ( !p ) - return -1; + return -1; @@ -3135,3 +3136,3 @@ int QTextEdit::lineOfChar( int para, int index ) if ( !c ) - return -1; + return -1; @@ -3145,5 +3146,5 @@ void QTextEdit::setModified( bool m ) if ( modified && doc->oTextValid ) - doc->invalidateOriginalText(); + doc->invalidateOriginalText(); if ( oldModified != modified ) - emit modificationChanged( modified ); + emit modificationChanged( modified ); } @@ -3162,3 +3163,3 @@ void QTextEdit::setModified() if ( !isModified() ) - setModified( TRUE ); + setModified( TRUE ); } @@ -3263,6 +3264,6 @@ void QTextEdit::startDrag() if ( isReadOnly() ) { - drag->dragCopy(); + drag->dragCopy(); } else { - if ( drag->drag() && QDragObject::target() != this && QDragObject::target() != viewport() ) - removeSelectedText(); + if ( drag->drag() && QDragObject::target() != this && QDragObject::target() != viewport() ) + removeSelectedText(); } @@ -3283,5 +3284,5 @@ void QTextEdit::selectAll( bool select ) if ( !select ) - doc->removeSelection( QTextDocument::Standard ); + doc->removeSelection( QTextDocument::Standard ); else - doc->selectAll( QTextDocument::Standard ); + doc->selectAll( QTextDocument::Standard ); repaintChanged(); @@ -3297,11 +3298,11 @@ void QTextEdit::UndoRedoInfo::clear() if ( valid() ) { - if ( type == Insert || type == Return ) - doc->addCommand( new QTextInsertCommand( doc, id, index, d->text.rawData(), styleInformation ) ); - else if ( type == Format ) - doc->addCommand( new QTextFormatCommand( doc, id, index, eid, eindex, d->text.rawData(), format, flags ) ); - else if ( type == Style ) - doc->addCommand( new QTextStyleCommand( doc, id, eid, styleInformation ) ); - else if ( type != Invalid ) { - doc->addCommand( new QTextDeleteCommand( doc, id, index, d->text.rawData(), styleInformation ) ); - } + if ( type == Insert || type == Return ) + doc->addCommand( new QTextInsertCommand( doc, id, index, d->text.rawData(), styleInformation ) ); + else if ( type == Format ) + doc->addCommand( new QTextFormatCommand( doc, id, index, eid, eindex, d->text.rawData(), format, flags ) ); + else if ( type == Style ) + doc->addCommand( new QTextStyleCommand( doc, id, eid, styleInformation ) ); + else if ( type != Invalid ) { + doc->addCommand( new QTextDeleteCommand( doc, id, index, d->text.rawData(), styleInformation ) ); + } } @@ -3327,4 +3328,4 @@ void QTextEdit::del() if ( doc->hasSelection( QTextDocument::Standard ) ) { - removeSelectedText(); - return; + removeSelectedText(); + return; } @@ -3406,3 +3407,3 @@ QBrush QTextEdit::paper() const if ( doc->paper() ) - return *doc->paper(); + return *doc->paper(); return QBrush(); @@ -3479,6 +3480,6 @@ void QTextEdit::append( const QString &text ) if ( f == AutoText ) { - if ( QStyleSheet::mightBeRichText( text ) ) - f = RichText; - else - f = PlainText; + if ( QStyleSheet::mightBeRichText( text ) ) + f = RichText; + else + f = PlainText; } @@ -3491,3 +3492,3 @@ void QTextEdit::append( const QString &text ) if ( cursor->index() > 0 ) - cursor->splitAndInsertEmptyParagraph(); + cursor->splitAndInsertEmptyParagraph(); QTextCursor oldCursor2 = *cursor; @@ -3495,14 +3496,14 @@ void QTextEdit::append( const QString &text ) if ( f == Qt::PlainText ) { - cursor->insert( text, TRUE ); - if ( doc->useFormatCollection() && - currentFormat != cursor->paragraph()->at( cursor->index() )->format() ) { - doc->setSelectionStart( QTextDocument::Temp, oldCursor2 ); - doc->setSelectionEnd( QTextDocument::Temp, *cursor ); - doc->setFormat( QTextDocument::Temp, currentFormat, QTextFormat::Format ); - doc->removeSelection( QTextDocument::Temp ); - } + cursor->insert( text, TRUE ); + if ( doc->useFormatCollection() && + currentFormat != cursor->paragraph()->at( cursor->index() )->format() ) { + doc->setSelectionStart( QTextDocument::Temp, oldCursor2 ); + doc->setSelectionEnd( QTextDocument::Temp, *cursor ); + doc->setFormat( QTextDocument::Temp, currentFormat, QTextFormat::Format ); + doc->removeSelection( QTextDocument::Temp ); + } } else { - if ( cursor->paragraph()->prev() ) - cursor->paragraph()->prev()->invalidate(0); // vertical margins might have to change - doc->setRichTextInternal( text ); + if ( cursor->paragraph()->prev() ) + cursor->paragraph()->prev()->invalidate(0); // vertical margins might have to change + doc->setRichTextInternal( text ); } @@ -3514,3 +3515,3 @@ void QTextEdit::append( const QString &text ) if ( !isReadOnly() ) - cursorVisible = TRUE; + cursorVisible = TRUE; setModified(); @@ -3548,28 +3549,28 @@ bool QTextEdit::handleReadOnlyKeyEvent( QKeyEvent *e ) case Key_Down: - setContentsPos( contentsX(), contentsY() + 10 ); - break; + setContentsPos( contentsX(), contentsY() + 10 ); + break; case Key_Up: - setContentsPos( contentsX(), contentsY() - 10 ); - break; + setContentsPos( contentsX(), contentsY() - 10 ); + break; case Key_Left: - setContentsPos( contentsX() - 10, contentsY() ); - break; + setContentsPos( contentsX() - 10, contentsY() ); + break; case Key_Right: - setContentsPos( contentsX() + 10, contentsY() ); - break; + setContentsPos( contentsX() + 10, contentsY() ); + break; case Key_PageUp: - setContentsPos( contentsX(), contentsY() - visibleHeight() ); - break; + setContentsPos( contentsX(), contentsY() - visibleHeight() ); + break; case Key_PageDown: - setContentsPos( contentsX(), contentsY() + visibleHeight() ); - break; + setContentsPos( contentsX(), contentsY() + visibleHeight() ); + break; case Key_Home: - setContentsPos( contentsX(), 0 ); - break; + setContentsPos( contentsX(), 0 ); + break; case Key_End: - setContentsPos( contentsX(), contentsHeight() - visibleHeight() ); - break; + setContentsPos( contentsX(), contentsHeight() - visibleHeight() ); + break; case Key_F16: // Copy key on Sun keyboards - copy(); - break; + copy(); + break; #ifndef QT_NO_NETWORKPROTOCOL @@ -3578,9 +3579,9 @@ bool QTextEdit::handleReadOnlyKeyEvent( QKeyEvent *e ) case Key_Space: { - if ( !doc->focusIndicator.href.isEmpty() ) { - QUrl u( doc->context(), doc->focusIndicator.href, TRUE ); - emitLinkClicked( u.toString( FALSE, FALSE ) ); + if ( !doc->focusIndicator.href.isEmpty() ) { + QUrl u( doc->context(), doc->focusIndicator.href, TRUE ); + emitLinkClicked( u.toString( FALSE, FALSE ) ); #ifndef QT_NO_CURSOR - viewport()->setCursor( isReadOnly() ? arrowCursor : ibeamCursor ); + viewport()->setCursor( isReadOnly() ? arrowCursor : ibeamCursor ); #endif - } + } } break; @@ -3588,10 +3589,10 @@ bool QTextEdit::handleReadOnlyKeyEvent( QKeyEvent *e ) default: - if ( e->state() & ControlButton ) { - switch ( e->key() ) { - case Key_C: case Key_F16: // Copy key on Sun keyboards - copy(); - break; - } - } - return FALSE; + if ( e->state() & ControlButton ) { + switch ( e->key() ) { + case Key_C: case Key_F16: // Copy key on Sun keyboards + copy(); + break; + } + } + return FALSE; } @@ -3640,7 +3641,7 @@ void QTextEdit::scrollToAnchor( const QString& name ) if ( !isVisible() ) { - d->scrollToAnchor = name; - return; + d->scrollToAnchor = name; + return; } if ( name.isEmpty() ) - return; + return; sync(); @@ -3649,14 +3650,14 @@ void QTextEdit::scrollToAnchor( const QString& name ) for (;;) { - QTextStringChar* c = cursor.paragraph()->at( cursor.index() ); - if( c->isAnchor() ) { - QString a = c->anchorName(); - if ( a == name || - (a.contains( '#' ) && QStringList::split( '#', a ).contains( name ) ) ) { - setContentsPos( contentsX(), QMIN( cursor.paragraph()->rect().top() + cursor.totalOffsetY(), contentsHeight() - visibleHeight() ) ); - break; - } - } - if ( cursor.paragraph() == last && cursor.atParagEnd() ) - break; - cursor.gotoNextLetter(); + QTextStringChar* c = cursor.paragraph()->at( cursor.index() ); + if( c->isAnchor() ) { + QString a = c->anchorName(); + if ( a == name || + (a.contains( '#' ) && QStringList::split( '#', a ).contains( name ) ) ) { + setContentsPos( contentsX(), QMIN( cursor.paragraph()->rect().top() + cursor.totalOffsetY(), contentsHeight() - visibleHeight() ) ); + break; + } + } + if ( cursor.paragraph() == last && cursor.atParagEnd() ) + break; + cursor.gotoNextLetter(); } @@ -3693,3 +3694,3 @@ void QTextEdit::setDocument( QTextDocument *dc ) if ( dc == doc ) - return; + return; doc = dc; @@ -3719,66 +3720,66 @@ void QTextEdit::pasteSubType( const QCString& subtype ) if ( doc->hasSelection( QTextDocument::Standard ) ) - removeSelectedText(); + removeSelectedText(); if ( !t.isEmpty() ) { - if ( t.startsWith( "<selstart/>" ) ) { - t.remove( 0, 11 ); - QTextCursor oldC = *cursor; - lastFormatted = cursor->paragraph(); - if ( lastFormatted->prev() ) - lastFormatted = lastFormatted->prev(); - doc->setRichTextInternal( t, cursor ); - - if ( undoEnabled && !isReadOnly() ) { - doc->setSelectionStart( QTextDocument::Temp, oldC ); - doc->setSelectionEnd( QTextDocument::Temp, *cursor ); - - checkUndoRedoInfo( UndoRedoInfo::Insert ); - if ( !undoRedoInfo.valid() ) { - undoRedoInfo.id = oldC.paragraph()->paragId(); - undoRedoInfo.index = oldC.index(); - undoRedoInfo.d->text = QString::null; - } - int oldLen = undoRedoInfo.d->text.length(); - if ( !doc->preProcessor() ) { - QString txt = doc->selectedText( QTextDocument::Temp ); - undoRedoInfo.d->text += txt; - for ( int i = 0; i < (int)txt.length(); ++i ) { - if ( txt[ i ] != '\n' && oldC.paragraph()->at( oldC.index() )->format() ) { - oldC.paragraph()->at( oldC.index() )->format()->addRef(); - undoRedoInfo.d->text. - setFormat( oldLen + i, oldC.paragraph()->at( oldC.index() )->format(), TRUE ); - } - oldC.gotoNextLetter(); - } - } - undoRedoInfo.clear(); - removeSelection( QTextDocument::Temp ); - } - - formatMore(); - setModified(); - emit textChanged(); - repaintChanged(); - ensureCursorVisible(); - return; - } + if ( t.startsWith( "<selstart/>" ) ) { + t.remove( 0, 11 ); + QTextCursor oldC = *cursor; + lastFormatted = cursor->paragraph(); + if ( lastFormatted->prev() ) + lastFormatted = lastFormatted->prev(); + doc->setRichTextInternal( t, cursor ); + + if ( undoEnabled && !isReadOnly() ) { + doc->setSelectionStart( QTextDocument::Temp, oldC ); + doc->setSelectionEnd( QTextDocument::Temp, *cursor ); + + checkUndoRedoInfo( UndoRedoInfo::Insert ); + if ( !undoRedoInfo.valid() ) { + undoRedoInfo.id = oldC.paragraph()->paragId(); + undoRedoInfo.index = oldC.index(); + undoRedoInfo.d->text = QString::null; + } + int oldLen = undoRedoInfo.d->text.length(); + if ( !doc->preProcessor() ) { + QString txt = doc->selectedText( QTextDocument::Temp ); + undoRedoInfo.d->text += txt; + for ( int i = 0; i < (int)txt.length(); ++i ) { + if ( txt[ i ] != '\n' && oldC.paragraph()->at( oldC.index() )->format() ) { + oldC.paragraph()->at( oldC.index() )->format()->addRef(); + undoRedoInfo.d->text. + setFormat( oldLen + i, oldC.paragraph()->at( oldC.index() )->format(), TRUE ); + } + oldC.gotoNextLetter(); + } + } + undoRedoInfo.clear(); + removeSelection( QTextDocument::Temp ); + } + + formatMore(); + setModified(); + emit textChanged(); + repaintChanged(); + ensureCursorVisible(); + return; + } #if defined(Q_OS_WIN32) - // Need to convert CRLF to LF - int index = t.find( QString::fromLatin1("\r\n"), 0 ); - while ( index != -1 ) { - t.replace( index, 2, QChar('\n') ); - index = t.find( "\r\n", index ); - } + // Need to convert CRLF to LF + int index = t.find( QString::fromLatin1("\r\n"), 0 ); + while ( index != -1 ) { + t.replace( index, 2, QChar('\n') ); + index = t.find( "\r\n", index ); + } #elif defined(Q_OS_MAC) - //need to convert CR to LF - for( unsigned int index = 0; index < t.length(); index++ ) - if(t[index] == '\r') - t[index] = '\n'; + //need to convert CR to LF + for( unsigned int index = 0; index < t.length(); index++ ) + if(t[index] == '\r') + t[index] = '\n'; #endif - for ( int i=0; (uint) i<t.length(); i++ ) { - if ( t[ i ] < ' ' && t[ i ] != '\n' && t[ i ] != '\t' ) - t[ i ] = ' '; - } - if ( !t.isEmpty() ) - insert( t, FALSE, TRUE, TRUE ); + for ( int i=0; (uint) i<t.length(); i++ ) { + if ( t[ i ] < ' ' && t[ i ] != '\n' && t[ i ] != '\t' ) + t[ i ] = ' '; + } + if ( !t.isEmpty() ) + insert( t, FALSE, TRUE, TRUE ); } @@ -3797,3 +3798,3 @@ void QTextEdit::pasteSpecial( const QPoint& pt ) if ( !st.isEmpty() ) - pasteSubType( st ); + pasteSubType( st ); } @@ -3805,35 +3806,35 @@ QCString QTextEdit::pickSpecial( QMimeSource* ms, bool always_ask, const QPoint& #ifndef QT_NO_POPUPMENU - QPopupMenu popup( this, "qt_pickspecial_menu" ); - QString fmt; - int n = 0; - QDict<void> done; - for (int i = 0; !( fmt = ms->format( i ) ).isNull(); i++) { - int semi = fmt.find( ";" ); - if ( semi >= 0 ) - fmt = fmt.left( semi ); - if ( fmt.left( 5 ) == "text/" ) { - fmt = fmt.mid( 5 ); - if ( !done.find( fmt ) ) { - done.insert( fmt,(void*)1 ); - popup.insertItem( fmt, i ); - n++; - } - } - } - if ( n ) { - int i = n ==1 && !always_ask ? popup.idAt( 0 ) : popup.exec( pt ); - if ( i >= 0 ) - return popup.text(i).latin1(); - } + QPopupMenu popup( this, "qt_pickspecial_menu" ); + QString fmt; + int n = 0; + QDict<void> done; + for (int i = 0; !( fmt = ms->format( i ) ).isNull(); i++) { + int semi = fmt.find( ";" ); + if ( semi >= 0 ) + fmt = fmt.left( semi ); + if ( fmt.left( 5 ) == "text/" ) { + fmt = fmt.mid( 5 ); + if ( !done.find( fmt ) ) { + done.insert( fmt,(void*)1 ); + popup.insertItem( fmt, i ); + n++; + } + } + } + if ( n ) { + int i = n ==1 && !always_ask ? popup.idAt( 0 ) : popup.exec( pt ); + if ( i >= 0 ) + return popup.text(i).latin1(); + } #else - QString fmt; - for (int i = 0; !( fmt = ms->format( i ) ).isNull(); i++) { - int semi = fmt.find( ";" ); - if ( semi >= 0 ) - fmt = fmt.left( semi ); - if ( fmt.left( 5 ) == "text/" ) { - fmt = fmt.mid( 5 ); - return fmt.latin1(); - } - } + QString fmt; + for (int i = 0; !( fmt = ms->format( i ) ).isNull(); i++) { + int semi = fmt.find( ";" ); + if ( semi >= 0 ) + fmt = fmt.left( semi ); + if ( fmt.left( 5 ) == "text/" ) { + fmt = fmt.mid( 5 ); + return fmt.latin1(); + } + } #endif @@ -3850,3 +3851,3 @@ QCString QTextEdit::pickSpecial( QMimeSource* ms, bool always_ask, const QPoint& - \value NoWrap Do not wrap the text. + \value NoWrap Do not wrap the text. @@ -3888,3 +3889,3 @@ void QTextEdit::setWordWrap( WordWrap mode ) if ( wrapMode == mode ) - return; + return; wrapMode = mode; @@ -3892,31 +3893,31 @@ void QTextEdit::setWordWrap( WordWrap mode ) case NoWrap: - document()->formatter()->setWrapEnabled( FALSE ); - document()->formatter()->setWrapAtColumn( -1 ); - doc->setWidth( visibleWidth() ); - doc->setMinimumWidth( -1 ); - doc->invalidate(); - updateContents( contentsX(), contentsY(), visibleWidth(), visibleHeight() ); - lastFormatted = doc->firstParagraph(); - interval = 0; - formatMore(); - break; + document()->formatter()->setWrapEnabled( FALSE ); + document()->formatter()->setWrapAtColumn( -1 ); + doc->setWidth( visibleWidth() ); + doc->setMinimumWidth( -1 ); + doc->invalidate(); + updateContents( contentsX(), contentsY(), visibleWidth(), visibleHeight() ); + lastFormatted = doc->firstParagraph(); + interval = 0; + formatMore(); + break; case WidgetWidth: - document()->formatter()->setWrapEnabled( TRUE ); - document()->formatter()->setWrapAtColumn( -1 ); - doResize(); - break; + document()->formatter()->setWrapEnabled( TRUE ); + document()->formatter()->setWrapAtColumn( -1 ); + doResize(); + break; case FixedPixelWidth: - document()->formatter()->setWrapEnabled( TRUE ); - document()->formatter()->setWrapAtColumn( -1 ); - if ( wrapWidth < 0 ) - wrapWidth = 200; - setWrapColumnOrWidth( wrapWidth ); - break; + document()->formatter()->setWrapEnabled( TRUE ); + document()->formatter()->setWrapAtColumn( -1 ); + if ( wrapWidth < 0 ) + wrapWidth = 200; + setWrapColumnOrWidth( wrapWidth ); + break; case FixedColumnWidth: - if ( wrapWidth < 0 ) - wrapWidth = 80; - document()->formatter()->setWrapEnabled( TRUE ); - document()->formatter()->setWrapAtColumn( wrapWidth ); - setWrapColumnOrWidth( wrapWidth ); - break; + if ( wrapWidth < 0 ) + wrapWidth = 80; + document()->formatter()->setWrapEnabled( TRUE ); + document()->formatter()->setWrapAtColumn( wrapWidth ); + setWrapColumnOrWidth( wrapWidth ); + break; } @@ -3945,13 +3946,13 @@ void QTextEdit::setWrapColumnOrWidth( int value ) if ( wrapMode == FixedColumnWidth ) { - document()->formatter()->setWrapAtColumn( wrapWidth ); - resizeContents( 0, 0 ); - doc->setWidth( visibleWidth() ); - doc->setMinimumWidth( -1 ); + document()->formatter()->setWrapAtColumn( wrapWidth ); + resizeContents( 0, 0 ); + doc->setWidth( visibleWidth() ); + doc->setMinimumWidth( -1 ); } else if (wrapMode == FixedPixelWidth ) { - document()->formatter()->setWrapAtColumn( -1 ); - resizeContents( wrapWidth, 0 ); - doc->setWidth( wrapWidth ); - doc->setMinimumWidth( wrapWidth ); + document()->formatter()->setWrapAtColumn( -1 ); + resizeContents( wrapWidth, 0 ); + doc->setWidth( wrapWidth ); + doc->setMinimumWidth( wrapWidth ); } else { - return; + return; } @@ -3967,3 +3968,3 @@ int QTextEdit::wrapColumnOrWidth() const if ( wrapMode == WidgetWidth ) - return visibleWidth(); + return visibleWidth(); return wrapWidth; @@ -4000,3 +4001,3 @@ void QTextEdit::setWrapPolicy( WrapPolicy policy ) if ( wPolicy == policy ) - return; + return; wPolicy = policy; @@ -4004,5 +4005,5 @@ void QTextEdit::setWrapPolicy( WrapPolicy policy ) if ( policy == AtWhiteSpace ) - formatter = new QTextFormatterBreakWords; + formatter = new QTextFormatterBreakWords; else - formatter = new QTextFormatterBreakInWords; + formatter = new QTextFormatterBreakInWords; formatter->setWrapAtColumn( document()->formatter()->wrapAtColumn() ); @@ -4037,3 +4038,3 @@ void QTextEdit::clear() if ( cursor->isValid() ) - cursor->restoreState(); + cursor->restoreState(); doc->clear( TRUE ); @@ -4123,8 +4124,8 @@ bool QTextEdit::getFormat( int para, int index, QFont *font, QColor *color, Vert if ( !font || !color ) - return FALSE; + return FALSE; QTextParagraph *p = doc->paragAt( para ); if ( !p ) - return FALSE; + return FALSE; if ( index < 0 || index >= p->length() ) - return FALSE; + return FALSE; *font = p->at( index )->format()->font(); @@ -4154,12 +4155,12 @@ bool QTextEdit::getFormat( int para, int index, QFont *font, QColor *color, Vert bool QTextEdit::getParagraphFormat( int para, QFont *font, QColor *color, - VerticalAlignment *verticalAlignment, int *alignment, - QStyleSheetItem::DisplayMode *displayMode, - QStyleSheetItem::ListStyle *listStyle, - int *listDepth ) + VerticalAlignment *verticalAlignment, int *alignment, + QStyleSheetItem::DisplayMode *displayMode, + QStyleSheetItem::ListStyle *listStyle, + int *listDepth ) { if ( !font || !color || !alignment || !displayMode || !listStyle ) - return FALSE; + return FALSE; QTextParagraph *p = doc->paragAt( para ); if ( !p ) - return FALSE; + return FALSE; *font = p->at(0)->format()->font(); @@ -4190,5 +4191,5 @@ QPopupMenu *QTextEdit::createPopupMenu( const QPoint& pos ) if ( !isReadOnly() ) { - d->id[ IdUndo ] = popup->insertItem( tr( "&Undo" ) + ACCEL_KEY( Z ) ); - d->id[ IdRedo ] = popup->insertItem( tr( "&Redo" ) + ACCEL_KEY( Y ) ); - popup->insertSeparator(); + d->id[ IdUndo ] = popup->insertItem( tr( "&Undo" ) + ACCEL_KEY( Z ) ); + d->id[ IdRedo ] = popup->insertItem( tr( "&Redo" ) + ACCEL_KEY( Y ) ); + popup->insertSeparator(); } @@ -4196,10 +4197,10 @@ QPopupMenu *QTextEdit::createPopupMenu( const QPoint& pos ) if ( !isReadOnly() ) - d->id[ IdCut ] = popup->insertItem( tr( "Cu&t" ) + ACCEL_KEY( X ) ); + d->id[ IdCut ] = popup->insertItem( tr( "Cu&t" ) + ACCEL_KEY( X ) ); d->id[ IdCopy ] = popup->insertItem( tr( "&Copy" ) + ACCEL_KEY( C ) ); if ( !isReadOnly() ) - d->id[ IdPaste ] = popup->insertItem( tr( "&Paste" ) + ACCEL_KEY( V ) ); + d->id[ IdPaste ] = popup->insertItem( tr( "&Paste" ) + ACCEL_KEY( V ) ); #endif if ( !isReadOnly() ) { - d->id[ IdClear ] = popup->insertItem( tr( "Clear" ) ); - popup->insertSeparator(); + d->id[ IdClear ] = popup->insertItem( tr( "Clear" ) ); + popup->insertSeparator(); } @@ -4336,4 +4337,4 @@ void QTextEdit::sync() while ( lastFormatted ) { - lastFormatted->format(); - lastFormatted = lastFormatted->next(); + lastFormatted->format(); + lastFormatted = lastFormatted->next(); } @@ -4348,13 +4349,13 @@ void QTextEdit::setEnabled( bool b ) if ( !b ) { - blinkTimer->stop(); - drawCursor( FALSE ); + blinkTimer->stop(); + drawCursor( FALSE ); } if ( textFormat() == PlainText ) { - QTextFormat *f = doc->formatCollection()->defaultFormat(); - f->setColor( colorGroup().text() ); - updateContents( contentsX(), contentsY(), visibleWidth(), visibleHeight() ); + QTextFormat *f = doc->formatCollection()->defaultFormat(); + f->setColor( colorGroup().text() ); + updateContents( contentsX(), contentsY(), visibleWidth(), visibleHeight() ); } if ( b ) { - blinkTimer->start( QApplication::cursorFlashTime() / 2 ); - drawCursor( TRUE ); + blinkTimer->start( QApplication::cursorFlashTime() / 2 ); + drawCursor( TRUE ); } @@ -4374,5 +4375,5 @@ void QTextEdit::setSelectionAttributes( int selNum, const QColor &back, bool inv if ( selNum < 1 ) - return; + return; if ( selNum > doc->numSelections() ) - doc->addSelection( selNum ); + doc->addSelection( selNum ); doc->setSelectionColor( selNum, back ); @@ -4385,6 +4386,6 @@ void QTextEdit::windowActivationChange( bool ) if ( !isVisible() ) - return; + return; if ( palette().active() != palette().inactive() ) - updateContents( contentsX(), contentsY(), visibleWidth(), visibleHeight() ); + updateContents( contentsX(), contentsY(), visibleWidth(), visibleHeight() ); } @@ -4394,3 +4395,3 @@ void QTextEdit::setReadOnly( bool b ) if ( readonly == b ) - return; + return; readonly = b; @@ -4398,5 +4399,5 @@ void QTextEdit::setReadOnly( bool b ) if ( readonly ) - viewport()->setCursor( arrowCursor ); + viewport()->setCursor( arrowCursor ); else - viewport()->setCursor( ibeamCursor ); + viewport()->setCursor( ibeamCursor ); #endif @@ -4423,3 +4424,3 @@ QRect QTextEdit::paragraphRect( int para ) const if ( !p ) - return QRect( -1, -1, -1, -1 ); + return QRect( -1, -1, -1, -1 ); return p->rect(); @@ -4437,3 +4438,3 @@ int QTextEdit::paragraphAt( const QPoint &pos ) const if ( c.paragraph() ) - return c.paragraph()->paragId(); + return c.paragraph()->paragId(); return -1; @@ -4453,5 +4454,5 @@ int QTextEdit::charAt( const QPoint &pos, int *para ) const if ( c.paragraph() ) { - if ( para ) - *para = c.paragraph()->paragId(); - return c.index(); + if ( para ) + *para = c.paragraph()->paragId(); + return c.index(); } @@ -4466,3 +4467,3 @@ void QTextEdit::setParagraphBackgroundColor( int para, const QColor &bg ) if ( !p ) - return; + return; p->setBackgroundColor( bg ); @@ -4479,3 +4480,3 @@ void QTextEdit::clearParagraphBackground( int para ) if ( !p ) - return; + return; p->clearBackgroundColor(); @@ -4493,6 +4494,6 @@ QColor QTextEdit::paragraphBackgroundColor( int para ) const if ( !p ) - return QColor(); + return QColor(); QColor *c = p->backgroundColor(); if ( c ) - return *c; + return *c; return QColor(); @@ -4533,5 +4534,5 @@ void QTextEdit::ensureFormatted( QTextParagraph *p ) while ( !p->isValid() ) { - if ( !lastFormatted ) - return; - formatMore(); + if ( !lastFormatted ) + return; + formatMore(); } @@ -4543,26 +4544,26 @@ void QTextEdit::updateCursor( const QPoint & pos ) if ( isReadOnly() && linksEnabled() ) { - QTextCursor c = *cursor; - placeCursor( pos, &c, TRUE ); + QTextCursor c = *cursor; + placeCursor( pos, &c, TRUE ); #ifndef QT_NO_NETWORKPROTOCOL - if ( c.paragraph() && c.paragraph()->at( c.index() ) && - c.paragraph()->at( c.index() )->isAnchor() && - !c.paragraph()->at( c.index() )->anchorHref().isEmpty() ) { - if ( c.index() < c.paragraph()->length() - 1 ) - onLink = c.paragraph()->at( c.index() )->anchorHref(); - else - onLink = QString::null; + if ( c.paragraph() && c.paragraph()->at( c.index() ) && + c.paragraph()->at( c.index() )->isAnchor() && + !c.paragraph()->at( c.index() )->anchorHref().isEmpty() ) { + if ( c.index() < c.paragraph()->length() - 1 ) + onLink = c.paragraph()->at( c.index() )->anchorHref(); + else + onLink = QString::null; #ifndef QT_NO_CURSOR - viewport()->setCursor( onLink.isEmpty() ? arrowCursor : pointingHandCursor ); + viewport()->setCursor( onLink.isEmpty() ? arrowCursor : pointingHandCursor ); #endif - QUrl u( doc->context(), onLink, TRUE ); - emitHighlighted( u.toString( FALSE, FALSE ) ); - } else { + QUrl u( doc->context(), onLink, TRUE ); + emitHighlighted( u.toString( FALSE, FALSE ) ); + } else { #ifndef QT_NO_CURSOR - viewport()->setCursor( isReadOnly() ? arrowCursor : ibeamCursor ); + viewport()->setCursor( isReadOnly() ? arrowCursor : ibeamCursor ); #endif - onLink = QString::null; - emitHighlighted( QString::null ); - } + onLink = QString::null; + emitHighlighted( QString::null ); + } #endif |