Bläddra i källkod

GTextEditor: Let the Tab key insert up to 4 spaces.

Andreas Kling 6 år sedan
förälder
incheckning
8017c1e17c
2 ändrade filer med 12 tillägg och 0 borttagningar
  1. 11 0
      LibGUI/GTextEditor.cpp
  2. 1 0
      LibGUI/GTextEditor.h

+ 11 - 0
LibGUI/GTextEditor.cpp

@@ -458,6 +458,17 @@ void GTextEditor::insert_at_cursor(char ch)
         set_cursor(m_cursor.line() + 1, 0);
         return;
     }
+    if (ch == '\t') {
+        int next_soft_tab_stop = ((m_cursor.column() + m_soft_tab_width) / m_soft_tab_width) * m_soft_tab_width;
+        int spaces_to_insert = next_soft_tab_stop - m_cursor.column();
+        for (int i = 0; i < spaces_to_insert; ++i) {
+            current_line().insert(m_cursor.column(), ' ');
+        }
+        update_scrollbar_ranges();
+        set_cursor(m_cursor.line(), next_soft_tab_stop);
+        update_cursor();
+        return;
+    }
     current_line().insert(m_cursor.column(), ch);
     update_scrollbar_ranges();
     set_cursor(m_cursor.line(), m_cursor.column() + 1);

+ 1 - 0
LibGUI/GTextEditor.h

@@ -150,5 +150,6 @@ private:
     bool m_cursor_state { true };
     bool m_in_drag_select { false };
     int m_line_spacing { 2 };
+    int m_soft_tab_width { 4 };
     GTextRange m_selection;
 };