Skip to content
Snippets Groups Projects
Commit 27141eb6 authored by Roberto Raggi's avatar Roberto Raggi
Browse files

Position the refactoring icon at the top right corner.

parent 3e12d0bc
No related branches found
No related tags found
No related merge requests found
...@@ -16,20 +16,9 @@ RefactorOverlay::RefactorOverlay(TextEditor::BaseTextEditor *editor) : ...@@ -16,20 +16,9 @@ RefactorOverlay::RefactorOverlay(TextEditor::BaseTextEditor *editor) :
void RefactorOverlay::paint(QPainter *painter, const QRect &clip) void RefactorOverlay::paint(QPainter *painter, const QRect &clip)
{ {
QTextBlock lastBlock;
int position = 0;
m_maxWidth = 0; m_maxWidth = 0;
for (int i = 0; i < m_markers.size(); ++i) { for (int i = 0; i < m_markers.size(); ++i) {
paintMarker(m_markers.at(i), painter, clip);
// position counts how many refactor markers are in a single block
if (m_markers.at(i).cursor.block() != lastBlock) {
lastBlock = m_markers.at(i).cursor.block();
position = 0;
} else {
position++;
}
paintMarker(m_markers.at(i), position, painter, clip);
} }
if (BaseTextDocumentLayout *documentLayout = qobject_cast<BaseTextDocumentLayout*>(m_editor->document()->documentLayout())) { if (BaseTextDocumentLayout *documentLayout = qobject_cast<BaseTextDocumentLayout*>(m_editor->document()->documentLayout())) {
...@@ -48,8 +37,7 @@ RefactorMarker RefactorOverlay::markerAt(const QPoint &pos) const ...@@ -48,8 +37,7 @@ RefactorMarker RefactorOverlay::markerAt(const QPoint &pos) const
return RefactorMarker(); return RefactorMarker();
} }
void RefactorOverlay::paintMarker(const RefactorMarker& marker, int position, void RefactorOverlay::paintMarker(const RefactorMarker& marker, QPainter *painter, const QRect &clip)
QPainter *painter, const QRect &clip)
{ {
QPointF offset = m_editor->contentOffset(); QPointF offset = m_editor->contentOffset();
QRectF geometry = m_editor->blockBoundingGeometry(marker.cursor.block()).translated(offset); QRectF geometry = m_editor->blockBoundingGeometry(marker.cursor.block()).translated(offset);
...@@ -58,17 +46,17 @@ void RefactorOverlay::paintMarker(const RefactorMarker& marker, int position, ...@@ -58,17 +46,17 @@ void RefactorOverlay::paintMarker(const RefactorMarker& marker, int position,
return; // marker not visible return; // marker not visible
QTextCursor cursor = marker.cursor; QTextCursor cursor = marker.cursor;
cursor.movePosition(QTextCursor::EndOfLine);
QRect r = m_editor->cursorRect(cursor); QRect r = m_editor->cursorRect(cursor);
QIcon icon = marker.icon; QIcon icon = marker.icon;
if (icon.isNull()) if (icon.isNull())
icon = m_icon; icon = m_icon;
QSize sz = icon.actualSize(QSize(INT_MAX, r.height())); QSize sz = icon.actualSize(QSize(m_editor->fontMetrics().width(QLatin1Char(' '))+2, r.height()));
int x = r.right() + position * sz.width(); int x = r.right();
marker.rect = QRect(x, r.bottom() + 1 - sz.height(), sz.width(), sz.height()); marker.rect = QRect(x, r.top(), sz.width(), sz.height());
icon.paint(painter, marker.rect); icon.paint(painter, marker.rect);
m_maxWidth = qMax((qreal)m_maxWidth, x + sz.width() - offset.x()); m_maxWidth = qMax((qreal)m_maxWidth, x + sz.width() - offset.x());
......
...@@ -37,7 +37,7 @@ public: ...@@ -37,7 +37,7 @@ public:
RefactorMarker markerAt(const QPoint &pos) const; RefactorMarker markerAt(const QPoint &pos) const;
private: private:
void paintMarker(const RefactorMarker& marker, int position, QPainter *painter, const QRect &clip); void paintMarker(const RefactorMarker& marker, QPainter *painter, const QRect &clip);
RefactorMarkers m_markers; RefactorMarkers m_markers;
BaseTextEditor *m_editor; BaseTextEditor *m_editor;
int m_maxWidth; int m_maxWidth;
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment