do not allow cursor movements for non-valid cursors
This commit is contained in:
1 parent
7e518cd27a
commit
6e5489c88e
1 file changed
+12
@@ -124,6 +124,8 @@ PieceTable::Cursor::Cursor(PieceTable * pt) : iterator(pt)
|
||||
|
||||
bool PieceTable::Cursor::go_start_of_line()
|
||||
{
|
||||
if (!iterator.valid())
|
||||
return false;
|
||||
bool rv = false;
|
||||
while (iterator.valid() &&
|
||||
(!iterator.piece->prev->eol()) &&
|
||||
@@ -141,6 +143,8 @@ bool PieceTable::Cursor::go_start_of_line()
|
||||
|
||||
bool PieceTable::Cursor::go_end_of_line()
|
||||
{
|
||||
if (!iterator.valid())
|
||||
return false;
|
||||
bool rv = false;
|
||||
while (iterator.valid() &&
|
||||
(!iterator.piece->eol()) &&
|
||||
@@ -159,6 +163,8 @@ bool PieceTable::Cursor::go_end_of_line()
|
||||
|
||||
bool PieceTable::Cursor::go_up(int n, uint32_t desired_column)
|
||||
{
|
||||
if (!iterator.valid())
|
||||
return false;
|
||||
Piece * p = prev_line();
|
||||
if (p == nullptr)
|
||||
{
|
||||
@@ -174,6 +180,8 @@ bool PieceTable::Cursor::go_up(int n, uint32_t desired_column)
|
||||
|
||||
bool PieceTable::Cursor::go_down(int n, uint32_t desired_column)
|
||||
{
|
||||
if (!iterator.valid())
|
||||
return false;
|
||||
Piece * p = next_line();
|
||||
if (p == nullptr)
|
||||
{
|
||||
@@ -189,6 +197,8 @@ bool PieceTable::Cursor::go_down(int n, uint32_t desired_column)
|
||||
|
||||
bool PieceTable::Cursor::go_left(int n)
|
||||
{
|
||||
if (!iterator.valid())
|
||||
return false;
|
||||
if (is_start_of_line())
|
||||
{
|
||||
return false;
|
||||
@@ -209,6 +219,8 @@ bool PieceTable::Cursor::go_left(int n)
|
||||
|
||||
bool PieceTable::Cursor::go_right(int n)
|
||||
{
|
||||
if (!iterator.valid())
|
||||
return false;
|
||||
if (is_end_of_line())
|
||||
{
|
||||
return false;
|
||||
|
||||
Reference in new issue
Block a user