aboutsummaryrefslogtreecommitdiffstats
path: root/src/plugins/texteditor
diff options
context:
space:
mode:
Diffstat (limited to 'src/plugins/texteditor')
-rw-r--r--src/plugins/texteditor/snippets/snippetscollection.cpp12
-rw-r--r--src/plugins/texteditor/texteditor.cpp24
-rw-r--r--src/plugins/texteditor/texteditor.h2
-rw-r--r--src/plugins/texteditor/texteditoractionhandler.cpp4
-rw-r--r--src/plugins/texteditor/texteditorconstants.h2
5 files changed, 39 insertions, 5 deletions
diff --git a/src/plugins/texteditor/snippets/snippetscollection.cpp b/src/plugins/texteditor/snippets/snippetscollection.cpp
index 5756a01f66..660ac0746c 100644
--- a/src/plugins/texteditor/snippets/snippetscollection.cpp
+++ b/src/plugins/texteditor/snippets/snippetscollection.cpp
@@ -44,6 +44,13 @@
using namespace TextEditor;
using namespace Internal;
+/* TRANSLATOR TextEditor::Internal::Snippets
+
+ Snippets are text fragments that can be inserted into an editor via the usual completion
+ mechanics using a trigger text. The translated text (trigger variant) is used to
+ disambiguate between snippets with the same trigger.
+*/
+
namespace {
static bool snippetComp(const Snippet &a, const Snippet &b)
@@ -359,7 +366,10 @@ QList<Snippet> SnippetsCollection::readXML(const QString &fileName, const QStrin
if (isGroupKnown(groupId) && (snippetId.isEmpty() || snippetId == id)) {
Snippet snippet(groupId, id);
snippet.setTrigger(atts.value(kTrigger).toString());
- snippet.setComplement(atts.value(kComplement).toString());
+ snippet.setComplement(QCoreApplication::translate(
+ "TextEditor::Internal::Snippets",
+ atts.value(kComplement).toString().toLatin1(),
+ atts.value(kId).toString().toLatin1()));
snippet.setIsRemoved(toBool(atts.value(kRemoved).toString()));
snippet.setIsModified(toBool(atts.value(kModified).toString()));
diff --git a/src/plugins/texteditor/texteditor.cpp b/src/plugins/texteditor/texteditor.cpp
index 8aa3dc847f..5b7a0b27ba 100644
--- a/src/plugins/texteditor/texteditor.cpp
+++ b/src/plugins/texteditor/texteditor.cpp
@@ -435,7 +435,7 @@ struct PaintEventData
const QRect eventRect;
qreal rightMargin = -1;
const QTextDocument *doc;
- const TextDocumentLayout *documentLayout;
+ TextDocumentLayout *documentLayout;
const int documentWidth;
const QTextCursor textCursor;
const QTextBlock textCursorBlock;
@@ -502,7 +502,8 @@ public:
bool expanded,
bool active,
bool hovered) const;
- bool updateAnnotationBounds(TextBlockUserData *blockUserData, bool annotationsVisible);
+ bool updateAnnotationBounds(TextBlockUserData *blockUserData, TextDocumentLayout *layout,
+ bool annotationsVisible);
void updateLineAnnotation(const PaintEventData &data, const PaintEventBlockData &blockData,
QPainter &painter);
void paintRightMarginArea(PaintEventData &data, QPainter &painter) const;
@@ -1476,6 +1477,16 @@ void TextEditorWidget::gotoBlockEndWithSelection()
}
}
+void TextEditorWidget::gotoDocumentStart()
+{
+ moveCursor(QTextCursor::Start);
+}
+
+void TextEditorWidget::gotoDocumentEnd()
+{
+ moveCursor(QTextCursor::End);
+}
+
void TextEditorWidget::gotoLineStart()
{
d->handleHomeKey(false);
@@ -4008,7 +4019,9 @@ QRectF TextEditorWidgetPrivate::getLastLineLineRect(const QTextBlock &block)
return line.naturalTextRect().translated(contentOffset.x(), top).adjusted(0, 0, -1, -1);
}
-bool TextEditorWidgetPrivate::updateAnnotationBounds(TextBlockUserData *blockUserData, bool annotationsVisible)
+bool TextEditorWidgetPrivate::updateAnnotationBounds(TextBlockUserData *blockUserData,
+ TextDocumentLayout *layout,
+ bool annotationsVisible)
{
const bool additionalHeightNeeded = annotationsVisible
&& m_displaySettings.m_annotationAlignment == AnnotationAlignment::BetweenLines;
@@ -4017,6 +4030,7 @@ bool TextEditorWidgetPrivate::updateAnnotationBounds(TextBlockUserData *blockUse
return false;
blockUserData->setAdditionalAnnotationHeight(additionalHeight);
q->viewport()->update();
+ layout->emitDocumentSizeChanged();
return true;
}
@@ -4039,8 +4053,10 @@ void TextEditorWidgetPrivate::updateLineAnnotation(const PaintEventData &data,
return !mark->lineAnnotation().isEmpty();
});
- if (updateAnnotationBounds(blockUserData, annotationsVisible) || !annotationsVisible)
+ if (updateAnnotationBounds(blockUserData, data.documentLayout, annotationsVisible)
+ || !annotationsVisible) {
return;
+ }
const QRectF lineRect = getLastLineLineRect(data.block);
if (lineRect.isNull())
diff --git a/src/plugins/texteditor/texteditor.h b/src/plugins/texteditor/texteditor.h
index d15db70c7f..c08187ed4d 100644
--- a/src/plugins/texteditor/texteditor.h
+++ b/src/plugins/texteditor/texteditor.h
@@ -381,6 +381,8 @@ public:
void gotoBlockStartWithSelection();
void gotoBlockEndWithSelection();
+ void gotoDocumentStart();
+ void gotoDocumentEnd();
void gotoLineStart();
void gotoLineStartWithSelection();
void gotoLineEnd();
diff --git a/src/plugins/texteditor/texteditoractionhandler.cpp b/src/plugins/texteditor/texteditoractionhandler.cpp
index 6682dcb475..6c39209ffe 100644
--- a/src/plugins/texteditor/texteditoractionhandler.cpp
+++ b/src/plugins/texteditor/texteditoractionhandler.cpp
@@ -432,6 +432,10 @@ void TextEditorActionHandlerPrivate::createActions()
tr("Select Word Under Cursor"));
// register GOTO Actions
+ registerAction(GOTO_DOCUMENT_START,
+ [] (TextEditorWidget *w) { w->gotoDocumentStart(); }, true, tr("Go to Document Start"));
+ registerAction(GOTO_DOCUMENT_END,
+ [] (TextEditorWidget *w) { w->gotoDocumentEnd(); }, true, tr("Go to Document End"));
registerAction(GOTO_LINE_START,
[] (TextEditorWidget *w) { w->gotoLineStart(); }, true, tr("Go to Line Start"));
registerAction(GOTO_LINE_END,
diff --git a/src/plugins/texteditor/texteditorconstants.h b/src/plugins/texteditor/texteditorconstants.h
index 0fd1c706c9..e7024614e5 100644
--- a/src/plugins/texteditor/texteditorconstants.h
+++ b/src/plugins/texteditor/texteditorconstants.h
@@ -158,6 +158,8 @@ const char DELETE_START_OF_LINE[] = "TextEditor.DeleteStartOfLine";
const char DELETE_START_OF_WORD_CAMEL_CASE[] = "TextEditor.DeleteStartOfWordCamelCase";
const char SELECT_ENCODING[] = "TextEditor.SelectEncoding";
const char REWRAP_PARAGRAPH[] = "TextEditor.RewrapParagraph";
+const char GOTO_DOCUMENT_START[] = "TextEditor.GotoDocumentStart";
+const char GOTO_DOCUMENT_END[] = "TextEditor.GotoDocumentEnd";
const char GOTO_LINE_START[] = "TextEditor.GotoLineStart";
const char GOTO_LINE_END[] = "TextEditor.GotoLineEnd";
const char GOTO_NEXT_LINE[] = "TextEditor.GotoNextLine";