diff --git a/src/plugins/texteditor/texteditor.cpp b/src/plugins/texteditor/texteditor.cpp index ac0d3ebee42..8d16d57922e 100644 --- a/src/plugins/texteditor/texteditor.cpp +++ b/src/plugins/texteditor/texteditor.cpp @@ -157,7 +157,6 @@ public: : FixedSizeClickLabel(parent) , m_editor(parent) { - setMaxText(Tr::tr("Line: 9999, Col: 999")); connect(m_editor, &QPlainTextEdit::cursorPositionChanged, this, &LineColumnLabel::update); connect(this, &FixedSizeClickLabel::clicked, ActionManager::instance(), [this] { emit m_editor->activateEditor(EditorManager::IgnoreNavigationHistory); @@ -173,18 +172,74 @@ public: private: void update() { - const QTextCursor cursor = m_editor->textCursor(); - const QTextBlock block = cursor.block(); - const int line = block.blockNumber() + 1; + const Utils::MultiTextCursor &cursors = m_editor->multiTextCursor(); + QString text; + if (cursors.hasMultipleCursors()) { + text = Tr::tr("Cursors: %2").arg(cursors.cursorCount()); + } else { + const QTextCursor cursor = cursors.mainCursor(); + const QTextBlock block = cursor.block(); + const int line = block.blockNumber() + 1; + const TabSettings &tabSettings = m_editor->textDocument()->tabSettings(); + const int column = tabSettings.columnAt(block.text(), cursor.positionInBlock()) + 1; + text = Tr::tr("Line: %1, Col: %2").arg(line).arg(column); + const QString toolTipText = Tr::tr("Cursor position: %1"); + setToolTip(toolTipText.arg(cursor.position())); + } + int selection = 0; + for (const QTextCursor &cursor : cursors) + selection += cursor.selectionEnd() - cursor.selectionStart(); + if (selection > 0) + text += " " + Tr::tr("(Sel: %1)").arg(selection); + setText(text); + } + + bool event(QEvent *event) override + { + if (event->type() != QEvent::ToolTip) + return FixedSizeClickLabel::event(event); + + QString tooltipText = "
| %1 | ").arg(Tr::tr("Cursors:")); + tooltipText += QString("%1 | ").arg(multiCursor.cursorCount()); + tooltipText += "|
|---|---|---|
| %1 | ").arg(header); + for (const QTextCursor &c : cursors) + tooltipText += QString("%1 | ").arg(cellText(c)); + if (multiCursor.cursorCount() > cursors.count()) + tooltipText += QString("... | "); + tooltipText += "