diff options
| author | Maxime Coste <frrrwww@gmail.com> | 2011-10-07 14:19:58 +0000 |
|---|---|---|
| committer | Maxime Coste <frrrwww@gmail.com> | 2011-10-07 14:19:58 +0000 |
| commit | 10106e8c8e5cd6a5bd52c2068e3dd06d353a66b8 (patch) | |
| tree | 67b5569f24fc709454d628a28cd9dc37f05afe6a /src/display_buffer.cc | |
| parent | a19f4f059d3e76210cfefdbb2881255d7fbc7879 (diff) | |
DisplayBuffer: do not store content in atom, begin and end are sufficient
Diffstat (limited to 'src/display_buffer.cc')
| -rw-r--r-- | src/display_buffer.cc | 12 |
1 files changed, 5 insertions, 7 deletions
diff --git a/src/display_buffer.cc b/src/display_buffer.cc index 8a8eb09e..f36527be 100644 --- a/src/display_buffer.cc +++ b/src/display_buffer.cc @@ -9,17 +9,15 @@ DisplayBuffer::DisplayBuffer() { } -DisplayBuffer::iterator DisplayBuffer::split(iterator atom, size_t pos_in_atom) +DisplayBuffer::iterator DisplayBuffer::split(iterator atom, const BufferIterator& pos) { assert(atom < end()); - assert(pos_in_atom > 0); - assert(pos_in_atom < atom->content.length()); - DisplayAtom new_atom(atom->begin, atom->begin + pos_in_atom, - atom->content.substr(0, pos_in_atom), + assert(pos > atom->begin); + assert(pos < atom->end); + DisplayAtom new_atom(atom->begin, pos, atom->fg_color, atom->bg_color, atom->attribute); - atom->begin = atom->begin + pos_in_atom; - atom->content = atom->content.substr(pos_in_atom); + atom->begin = pos; return insert(atom, std::move(new_atom)); } |
