make Buffer::{add,remove}_change_listener const and the listener list mutable
This commit is contained in:
parent
489621cf58
commit
77272db0fd
|
@ -415,13 +415,13 @@ void Buffer::notify_saved()
|
||||||
m_last_save_undo_index = history_cursor_index;
|
m_last_save_undo_index = history_cursor_index;
|
||||||
}
|
}
|
||||||
|
|
||||||
void Buffer::add_change_listener(BufferChangeListener& listener)
|
void Buffer::add_change_listener(BufferChangeListener& listener) const
|
||||||
{
|
{
|
||||||
assert(not contains(m_change_listeners, &listener));
|
assert(not contains(m_change_listeners, &listener));
|
||||||
m_change_listeners.push_back(&listener);
|
m_change_listeners.push_back(&listener);
|
||||||
}
|
}
|
||||||
|
|
||||||
void Buffer::remove_change_listener(BufferChangeListener& listener)
|
void Buffer::remove_change_listener(BufferChangeListener& listener) const
|
||||||
{
|
{
|
||||||
auto it = std::find(m_change_listeners.begin(),
|
auto it = std::find(m_change_listeners.begin(),
|
||||||
m_change_listeners.end(),
|
m_change_listeners.end(),
|
||||||
|
|
|
@ -156,8 +156,8 @@ public:
|
||||||
// notify the buffer that it was saved in the current state
|
// notify the buffer that it was saved in the current state
|
||||||
void notify_saved();
|
void notify_saved();
|
||||||
|
|
||||||
void add_change_listener(BufferChangeListener& listener);
|
void add_change_listener(BufferChangeListener& listener) const;
|
||||||
void remove_change_listener(BufferChangeListener& listener);
|
void remove_change_listener(BufferChangeListener& listener) const;
|
||||||
|
|
||||||
// returns an iterator pointing to the first character of the line
|
// returns an iterator pointing to the first character of the line
|
||||||
// iterator is on
|
// iterator is on
|
||||||
|
@ -224,7 +224,9 @@ private:
|
||||||
size_t m_last_save_undo_index;
|
size_t m_last_save_undo_index;
|
||||||
size_t m_timestamp;
|
size_t m_timestamp;
|
||||||
|
|
||||||
std::vector<BufferChangeListener*> m_change_listeners;
|
// this mutable as adding or removing listeners is not muting the buffer
|
||||||
|
// observable state.
|
||||||
|
mutable std::vector<BufferChangeListener*> m_change_listeners;
|
||||||
|
|
||||||
OptionManager m_option_manager;
|
OptionManager m_option_manager;
|
||||||
HookManager m_hook_manager;
|
HookManager m_hook_manager;
|
||||||
|
|
|
@ -86,14 +86,12 @@ void Selection::on_erase(const BufferIterator& begin, const BufferIterator& end)
|
||||||
|
|
||||||
void Selection::register_with_buffer()
|
void Selection::register_with_buffer()
|
||||||
{
|
{
|
||||||
Buffer& buffer = const_cast<Buffer&>(m_first.buffer());
|
m_first.buffer().add_change_listener(*this);
|
||||||
buffer.add_change_listener(*this);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void Selection::unregister_with_buffer()
|
void Selection::unregister_with_buffer()
|
||||||
{
|
{
|
||||||
Buffer& buffer = const_cast<Buffer&>(m_first.buffer());
|
m_first.buffer().remove_change_listener(*this);
|
||||||
buffer.remove_change_listener(*this);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void Selection::check_invariant() const
|
void Selection::check_invariant() const
|
||||||
|
|
Loading…
Reference in New Issue
Block a user