aboutsummaryrefslogtreecommitdiffstats
path: root/src/plugins/texteditor/refactoroverlay.h
diff options
context:
space:
mode:
authormae <qt-info@nokia.com>2010-07-02 13:47:14 +0200
committermae <qt-info@nokia.com>2010-07-02 13:48:57 +0200
commit6ef602d121bbd32055471cb6ce51c2bf5736ff89 (patch)
treeece46d0dc38785685d46d905d505233301a6c989 /src/plugins/texteditor/refactoroverlay.h
parent038d943f9aa3b0fcc6099ba9bc692b9a7fc97a3f (diff)
add basic support to show refactor markers
See BaseTextEditor::setRefactorMarkers(...). The markers support a clicked signal via BaseTextEditor and tooltips. They feature a cursor, but are always positioned at the end of the line (not block!). As special gimmick they do extend the document width when they are positioned outside the document area.
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 0000000000..ad44b843c7
--- /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