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;