Przeglądaj źródła

GTextEditor: Allow jumping lines by hitting Left/Right at start/end of line.

Andreas Kling 6 lat temu
rodzic
commit
b4a099d212
1 zmienionych plików z 14 dodań i 0 usunięć
  1. 14 0
      LibGUI/GTextEditor.cpp

+ 14 - 0
LibGUI/GTextEditor.cpp

@@ -307,6 +307,13 @@ void GTextEditor::keydown_event(GKeyEvent& event)
             set_cursor(m_cursor.line(), new_column);
             set_cursor(m_cursor.line(), new_column);
             if (m_selection.start().is_valid())
             if (m_selection.start().is_valid())
                 m_selection.set_end(m_cursor);
                 m_selection.set_end(m_cursor);
+        } else if (m_cursor.line() > 0) {
+            int new_line = m_cursor.line() - 1;
+            int new_column = m_lines[new_line]->length();
+            toggle_selection_if_needed_for_event(event);
+            set_cursor(new_line, new_column);
+            if (m_selection.start().is_valid())
+                m_selection.set_end(m_cursor);
         }
         }
         return;
         return;
     }
     }
@@ -317,6 +324,13 @@ void GTextEditor::keydown_event(GKeyEvent& event)
             set_cursor(m_cursor.line(), new_column);
             set_cursor(m_cursor.line(), new_column);
             if (m_selection.start().is_valid())
             if (m_selection.start().is_valid())
                 m_selection.set_end(m_cursor);
                 m_selection.set_end(m_cursor);
+        } else if (m_cursor.line() != line_count() - 1) {
+            int new_line = m_cursor.line() + 1;
+            int new_column = 0;
+            toggle_selection_if_needed_for_event(event);
+            set_cursor(new_line, new_column);
+            if (m_selection.start().is_valid())
+                m_selection.set_end(m_cursor);
         }
         }
         return;
         return;
     }
     }