From e89c30feb81941d4d0995a76f3f6edca59ccf9a1 Mon Sep 17 00:00:00 2001 From: Lorenz Haas Date: Mon, 15 Apr 2013 18:19:34 +0200 Subject: [PATCH] BaseEditor: Open locator "l " on toolbar line widget click Task-number: QTCREATORBUG-8811 Change-Id: Ia3ece9efb7e2c6d227ab3395aca636a27f667f0d Reviewed-by: David Schulz --- src/libs/utils/linecolumnlabel.cpp | 25 +++++++++++++++++++++-- src/libs/utils/linecolumnlabel.h | 9 +++++++- src/plugins/texteditor/basetexteditor.cpp | 12 +++++++++++ src/plugins/texteditor/basetexteditor.h | 2 ++ 4 files changed, 45 insertions(+), 3 deletions(-) diff --git a/src/libs/utils/linecolumnlabel.cpp b/src/libs/utils/linecolumnlabel.cpp index 85f6e307666..cb0eb66146f 100644 --- a/src/libs/utils/linecolumnlabel.cpp +++ b/src/libs/utils/linecolumnlabel.cpp @@ -29,6 +29,8 @@ #include "linecolumnlabel.h" +#include + /*! \class Utils::LineColumnLabel @@ -39,7 +41,8 @@ namespace Utils { LineColumnLabel::LineColumnLabel(QWidget *parent) - : QLabel(parent), m_unused(0) + : QLabel(parent) + , m_pressed(false) { } @@ -48,6 +51,7 @@ void LineColumnLabel::setText(const QString &text, const QString &maxText) QLabel::setText(text); m_maxText = maxText; } + QSize LineColumnLabel::sizeHint() const { return fontMetrics().boundingRect(m_maxText).size(); @@ -60,7 +64,24 @@ QString LineColumnLabel::maxText() const void LineColumnLabel::setMaxText(const QString &maxText) { - m_maxText = maxText; + m_maxText = maxText; +} + +void LineColumnLabel::mousePressEvent(QMouseEvent *ev) +{ + QLabel::mousePressEvent(ev); + if (ev->button() == Qt::LeftButton) + m_pressed = true; +} + +void LineColumnLabel::mouseReleaseEvent(QMouseEvent *ev) +{ + QLabel::mouseReleaseEvent(ev); + if (ev->button() != Qt::LeftButton) + return; + if (m_pressed && rect().contains(ev->pos())) + emit clicked(); + m_pressed = false; } } // namespace Utils diff --git a/src/libs/utils/linecolumnlabel.h b/src/libs/utils/linecolumnlabel.h index c74dc0b0a45..bec81eed631 100644 --- a/src/libs/utils/linecolumnlabel.h +++ b/src/libs/utils/linecolumnlabel.h @@ -49,9 +49,16 @@ public: QString maxText() const; void setMaxText(const QString &maxText); +protected: + void mousePressEvent(QMouseEvent *ev); + void mouseReleaseEvent(QMouseEvent *ev); + +signals: + void clicked(); + private: QString m_maxText; - void *m_unused; + bool m_pressed; }; } // namespace Utils diff --git a/src/plugins/texteditor/basetexteditor.cpp b/src/plugins/texteditor/basetexteditor.cpp index f62823191f0..3252f024942 100644 --- a/src/plugins/texteditor/basetexteditor.cpp +++ b/src/plugins/texteditor/basetexteditor.cpp @@ -54,6 +54,7 @@ #include #include #include +#include #include #include #include @@ -6285,6 +6286,7 @@ BaseTextEditor::BaseTextEditor(BaseTextEditorWidget *editor) m_cursorPositionLabelAction = m_toolBar->addWidget(m_cursorPositionLabel); connect(editor, SIGNAL(cursorPositionChanged()), this, SLOT(updateCursorPosition())); + connect(m_cursorPositionLabel, SIGNAL(clicked()), this, SLOT(openGotoLocator())); } BaseTextEditor::~BaseTextEditor() @@ -6420,6 +6422,16 @@ void BaseTextEditor::updateCursorPosition() } +void BaseTextEditor::openGotoLocator() +{ + Core::EditorManager::activateEditor(this, Core::EditorManager::IgnoreNavigationHistory); + if (Core::Command *cmd = Core::ActionManager::command(Core::Constants::GOTO)) { + if (QAction *act = cmd->action()) { + act->trigger(); + } + } +} + QString BaseTextEditor::contextHelpId() const { if (m_contextHelpId.isEmpty()) diff --git a/src/plugins/texteditor/basetexteditor.h b/src/plugins/texteditor/basetexteditor.h index 0fa692d6320..1befc264588 100644 --- a/src/plugins/texteditor/basetexteditor.h +++ b/src/plugins/texteditor/basetexteditor.h @@ -669,8 +669,10 @@ public: void setCursorPosition(int pos); void select(int toPos); const Utils::CommentDefinition* commentDefinition() const; + private slots: void updateCursorPosition(); + void openGotoLocator(); private: BaseTextEditorWidget *e;