[gnote] Fix remembered selection with replacing selected text
- From: Aurimas Äernius <aurimasc src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gnote] Fix remembered selection with replacing selected text
- Date: Wed, 19 Dec 2012 21:14:42 +0000 (UTC)
commit f234026cd2a290c877d60fac630841ed489da437
Author: Aurimas Äernius <aurisc4 gmail com>
Date: Wed Dec 19 23:11:17 2012 +0200
Fix remembered selection with replacing selected text
When selected text is replaced by typing, mark-set signal is not emitted.
Handle selection loss in mark-deleted signal.
src/note.cpp | 14 ++++++++++++++
src/note.hpp | 1 +
2 files changed, 15 insertions(+), 0 deletions(-)
---
diff --git a/src/note.cpp b/src/note.cpp
index 9358374..e187de7 100644
--- a/src/note.cpp
+++ b/src/note.cpp
@@ -467,6 +467,18 @@ namespace gnote {
queue_save(NO_CHANGE);
}
+ void Note::on_buffer_mark_deleted(const Glib::RefPtr<Gtk::TextBuffer::Mark> &)
+ {
+ Gtk::TextIter start, end;
+ if(m_data.data().selection_bound_position() != m_data.data().cursor_position()
+ && !m_buffer->get_selection_bounds(start, end)) {
+ DBG_OUT("selection removed");
+ m_data.data().set_cursor_position(m_buffer->get_insert()->get_iter().get_offset());
+ m_data.data().set_selection_bound_position(NoteData::s_noPosition);
+ queue_save(NO_CHANGE);
+ }
+ }
+
bool Note::on_window_destroyed(GdkEventAny * /*ev*/)
{
@@ -988,6 +1000,8 @@ namespace gnote {
sigc::mem_fun(*this, &Note::on_buffer_tag_removed));
m_buffer->signal_mark_set().connect(
sigc::mem_fun(*this, &Note::on_buffer_mark_set));
+ m_buffer->signal_mark_deleted().connect(
+ sigc::mem_fun(*this, &Note::on_buffer_mark_deleted));
}
return m_buffer;
}
diff --git a/src/note.hpp b/src/note.hpp
index 8202cbb..81f0fe2 100644
--- a/src/note.hpp
+++ b/src/note.hpp
@@ -365,6 +365,7 @@ private:
const Gtk::TextBuffer::iterator &);
void on_buffer_mark_set(const Gtk::TextBuffer::iterator & iter,
const Glib::RefPtr<Gtk::TextBuffer::Mark> & insert);
+ void on_buffer_mark_deleted(const Glib::RefPtr<Gtk::TextBuffer::Mark> & mark);
bool on_window_destroyed(GdkEventAny *ev);
void on_save_timeout();
void process_child_widget_queue();
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]