[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