Skip to content

Commit bd14e83

Browse files
committed
Add alternative API for cursor and selection position using lightweight out struct
Instead of using out parameters, returns simple structs. This is necessary for python bindings in ImGui Bundle.
1 parent 19cedec commit bd14e83

1 file changed

Lines changed: 9 additions & 0 deletions

File tree

TextEditor.h

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -148,6 +148,15 @@ class TextEditor {
148148
inline void GetMainCursor(int& line, int& column) const { return getCursor(line, column, cursors.getMainIndex()); }
149149
inline void GetCurrentCursor(int& line, int& column) const { return getCursor(line, column, cursors.getCurrentIndex()); }
150150

151+
// Alternative API for cursor and selection position using lightweight out struct (line and column are zero-based)
152+
struct CursorPosition { int line = 0; int column = 0; };
153+
struct CursorSelection { CursorPosition start; CursorPosition end; };
154+
inline CursorPosition GetMainCursorPosition() const { CursorPosition p; getCursor(p.line, p.column, cursors.getMainIndex()); return p; }
155+
inline CursorPosition GetCurrentCursorPosition() const { CursorPosition p; getCursor(p.line, p.column, cursors.getCurrentIndex()); return p; }
156+
inline CursorPosition GetCursorPosition(size_t cursor) const { CursorPosition p; getCursor(p.line, p.column, cursor); return p; }
157+
inline CursorSelection GetCursorSelection(size_t cursor) const { CursorSelection s; getCursor(s.start.line, s.start.column, s.end.line, s.end.column, cursor); return s; }
158+
inline CursorSelection GetMainCursorSelection() const { return GetCursorSelection(cursors.getMainIndex()); }
159+
151160
// scrolling support
152161
enum class Scroll {
153162
alignTop,

0 commit comments

Comments
 (0)