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

List:       kde-commits
Subject:    [calligra/calligra/2.6] libs/kotext: Fix merge style to caret without selection
From:       Pierre Stirnweiss <pstirnweiss () googlemail ! com>
Date:       2013-01-18 20:04:55
Message-ID: 20130118200455.BB411A6091 () git ! kde ! org
[Download RAW message or body]

Git commit 415bb03d54671f7e03bf24963e23f68328f9125b by Pierre Stirnweiss.
Committed on 13/01/2013 at 10:42.
Pushed by pstirnweiss into branch 'calligra/2.6'.

Fix merge style to caret without selection

The style was not properly merged to the caret if there was no selected
text.

REVIEW: 108379

M  +21   -0    libs/kotext/KoTextEditor_format.cpp

http://commits.kde.org/calligra/415bb03d54671f7e03bf24963e23f68328f9125b

diff --git a/libs/kotext/KoTextEditor_format.cpp \
b/libs/kotext/KoTextEditor_format.cpp index 93b0fbb..aa6b5f2 100644
--- a/libs/kotext/KoTextEditor_format.cpp
+++ b/libs/kotext/KoTextEditor_format.cpp
@@ -562,10 +562,20 @@ void KoTextEditor::mergeAutoStyle(QTextCharFormat \
deltaCharFormat)  {
     d->updateState(KoTextEditor::Private::Custom, "Formatting");
 
+    int caretAnchor = d->caret.anchor();
+    int caretPosition = d->caret.position();
     MergeAutoCharacterStyleVisitor visitor(this, deltaCharFormat);
 
     recursivelyVisitSelection(d->document->rootFrame()->begin(), visitor);
 
+    if (!isEditProtected() && caretAnchor == caretPosition) { //if there is no \
selection, it can happen that the caret does not get the proper style applied \
(begining of a block). We need to force it. +        \
d->caret.mergeCharFormat(deltaCharFormat); +    }
+    else {
+        d->caret.setPosition(caretAnchor);
+        d->caret.setPosition(caretPosition, QTextCursor::KeepAnchor);
+    }
+
     d->updateState(KoTextEditor::Private::NoOp);
     emit textFormatChanged();
 }
@@ -625,10 +635,21 @@ void KoTextEditor::mergeAutoStyle(QTextCharFormat \
deltaCharFormat, QTextBlockFor  {
     d->updateState(KoTextEditor::Private::Custom, "Formatting");
 
+    int caretAnchor = d->caret.anchor();
+    int caretPosition = d->caret.position();
     MergeAutoParagraphStyleVisitor visitor(this, deltaCharFormat, deltaBlockFormat);
 
     recursivelyVisitSelection(d->document->rootFrame()->begin(), visitor);
 
+    if (!isEditProtected() && caretAnchor == caretPosition) { //if there is no \
selection, it can happen that the caret does not get the proper style applied \
(begining of a block). We need to force it. +        \
d->caret.mergeBlockFormat(deltaBlockFormat); +        \
d->caret.mergeBlockCharFormat(deltaCharFormat); +    }
+    else {
+        d->caret.setPosition(caretAnchor);
+        d->caret.setPosition(caretPosition, QTextCursor::KeepAnchor);
+    }
+
     d->updateState(KoTextEditor::Private::NoOp);
     emit textFormatChanged();
 }


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

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