summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorMaxime Coste <frrrwww@gmail.com>2011-12-21 18:56:32 +0000
committerMaxime Coste <frrrwww@gmail.com>2011-12-21 18:56:32 +0000
commit6c817c811778309476ea0f89e2ca54da5dca3bb2 (patch)
tree4560a57fb8340ef70dac05be700d27d1901b4a91 /src
parent913ee3f096ff4bdcc291b875a004921e915348bd (diff)
Window: do not manage undo groups when an inserter is active
Diffstat (limited to 'src')
-rw-r--r--src/window.cc42
1 files changed, 32 insertions, 10 deletions
diff --git a/src/window.cc b/src/window.cc
index 9770ca50..6f84097b 100644
--- a/src/window.cc
+++ b/src/window.cc
@@ -82,8 +82,13 @@ BufferIterator Window::cursor_iterator() const
void Window::erase()
{
- scoped_undo_group undo_group(m_buffer);
- erase_noundo();
+ if (m_current_inserter == nullptr)
+ {
+ scoped_undo_group undo_group(m_buffer);
+ erase_noundo();
+ }
+ else
+ erase_noundo();
}
void Window::erase_noundo()
@@ -119,8 +124,13 @@ static DisplayCoord measure_string(const Window::String& string)
void Window::insert(const String& string)
{
- scoped_undo_group undo_group(m_buffer);
- insert_noundo(string);
+ if (m_current_inserter == nullptr)
+ {
+ scoped_undo_group undo_group(m_buffer);
+ insert_noundo(string);
+ }
+ else
+ insert_noundo(string);
}
void Window::insert_noundo(const String& string)
@@ -132,8 +142,13 @@ void Window::insert_noundo(const String& string)
void Window::append(const String& string)
{
- scoped_undo_group undo_group(m_buffer);
- append_noundo(string);
+ if (m_current_inserter == nullptr)
+ {
+ scoped_undo_group undo_group(m_buffer);
+ append_noundo(string);
+ }
+ else
+ append_noundo(string);
}
void Window::append_noundo(const String& string)
@@ -145,12 +160,19 @@ void Window::append_noundo(const String& string)
void Window::replace(const std::string& string)
{
- scoped_undo_group undo_group(m_buffer);
- erase_noundo();
- insert_noundo(string);
+ if (m_current_inserter == nullptr)
+ {
+ scoped_undo_group undo_group(m_buffer);
+ erase_noundo();
+ insert_noundo(string);
+ }
+ else
+ {
+ erase_noundo();
+ insert_noundo(string);
+ }
}
-
bool Window::undo()
{
return m_buffer.undo();