do not allow cursor movements for non-valid cursors

This commit is contained in:
Josh Holtrop 2016-09-13 23:16:23 -04:00
parent 7e518cd27a
commit 6e5489c88e

View File

@ -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;