aboutsummaryrefslogtreecommitdiffstats
path: root/src/plugins/texteditor/refactoroverlay.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/plugins/texteditor/refactoroverlay.h')
-rw-r--r--src/plugins/texteditor/refactoroverlay.h51
1 files changed, 51 insertions, 0 deletions
diff --git a/src/plugins/texteditor/refactoroverlay.h b/src/plugins/texteditor/refactoroverlay.h
new file mode 100644
index 00000000000..ad44b843c73
--- /dev/null
+++ b/src/plugins/texteditor/refactoroverlay.h
@@ -0,0 +1,51 @@
+#ifndef REFACTOROVERLAY_H
+#define REFACTOROVERLAY_H
+
+#include "basetexteditor.h"
+#include <QTextCursor>
+#include <QObject>
+#include <QIcon>
+
+namespace TextEditor {
+namespace Internal {
+
+struct TEXTEDITOR_EXPORT RefactorMarker {
+ inline bool isValid() const { return !cursor.isNull(); }
+ QTextCursor cursor;
+ QString tooltip;
+ QIcon icon;
+ mutable QRect rect; // used to cache last drawing positin in document coordinates
+ QVariant data;
+};
+
+typedef QList<RefactorMarker> RefactorMarkers;
+
+class TEXTEDITOR_EXPORT RefactorOverlay : public QObject
+{
+ Q_OBJECT
+public:
+ explicit RefactorOverlay(BaseTextEditor *editor);
+
+ bool isEmpty() const { return m_markers.isEmpty(); }
+ void paint(QPainter *painter, const QRect &clip);
+
+ void setMarkers(const RefactorMarkers &markers) { m_markers = markers; }
+ RefactorMarkers markers() const { return m_markers; }
+
+ void clear() { m_markers.clear(); }
+
+ RefactorMarker markerAt(const QPoint &pos) const;
+
+private:
+ void paintMarker(const RefactorMarker& marker, int position, QPainter *painter, const QRect &clip);
+ RefactorMarkers m_markers;
+ BaseTextEditor *m_editor;
+ int m_maxWidth;
+ QIcon m_icon;
+
+};
+
+}
+}
+
+#endif // REFACTOROVERLAY_H