diff --git a/src/plugins/texteditor/texteditor.cpp b/src/plugins/texteditor/texteditor.cpp index d4820b16665..bb86f7d0290 100644 --- a/src/plugins/texteditor/texteditor.cpp +++ b/src/plugins/texteditor/texteditor.cpp @@ -148,114 +148,118 @@ using ListTransformationMethod = void(QStringList &); static constexpr char dropProperty[] = "dropProp"; -class LineColumnButton : public QToolButton +class LineColumnButtonPrivate { - Q_OBJECT public: - LineColumnButton(TextEditorWidget *parent) - : QToolButton(parent) - , m_editor(parent) - { - connect(m_editor, &QPlainTextEdit::cursorPositionChanged, this, &LineColumnButton::update); - connect(this, &QToolButton::pressed, ActionManager::instance(), [this] { - emit m_editor->activateEditor(EditorManager::IgnoreNavigationHistory); - QMetaObject::invokeMethod(ActionManager::instance(), [] { + QSize m_maxSize; + TextEditorWidget *m_editor; +}; + +} // namespace Internal + +LineColumnButton::LineColumnButton(TextEditorWidget *parent) + : QToolButton(parent) + , m_d(new LineColumnButtonPrivate) +{ + m_d->m_editor = parent; + connect(m_d->m_editor, &QPlainTextEdit::cursorPositionChanged, this, &LineColumnButton::update); + connect(this, &QToolButton::clicked, ActionManager::instance(), [this] { + emit m_d->m_editor->activateEditor(EditorManager::IgnoreNavigationHistory); + QMetaObject::invokeMethod( + ActionManager::instance(), + [] { if (Command *cmd = ActionManager::command(Core::Constants::GOTO)) { if (QAction *act = cmd->action()) act->trigger(); } - }, Qt::QueuedConnection); - }); + }, + Qt::QueuedConnection); + }); +} + +LineColumnButton::~LineColumnButton() = default; + +void LineColumnButton::update() +{ + const Utils::MultiTextCursor &cursors = m_d->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_d->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); +} -private: - void update() - { - 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 LineColumnButton::event(QEvent *event) +{ + if (event->type() != QEvent::ToolTip) + return QToolButton::event(event); - bool event(QEvent *event) override - { - if (event->type() != QEvent::ToolTip) - return QToolButton::event(event); + QString tooltipText = "
%1 | ").arg(Tr::tr("Cursors:")); + tooltipText += QString("%1 | ").arg(multiCursor.cursorCount()); + tooltipText += "|||
---|---|---|---|---|
%1 | ").arg(Tr::tr("Cursors:")); - tooltipText += QString("%1 | ").arg(multiCursor.cursorCount()); + tooltipText += QString("%1 | ").arg(header); + for (const QTextCursor &c : cursors) + tooltipText += QString("%1 | ").arg(cellText(c)); + if (multiCursor.cursorCount() > cursors.count()) + tooltipText += QString("... | "); tooltipText += "
%1 | ").arg(header); - for (const QTextCursor &c : cursors) - tooltipText += QString("%1 | ").arg(cellText(c)); - if (multiCursor.cursorCount() > cursors.count()) - tooltipText += QString("... | "); - tooltipText += "