From beb9596db276e41558ab97c9e034e3712ddae43e Mon Sep 17 00:00:00 2001 From: eidheim Date: Mon, 22 Jun 2020 22:34:57 +0200 Subject: [PATCH] Cleanup of SourceBase::SnippetParameter class --- src/source_base.cpp | 12 ++---------- src/source_base.hpp | 11 +++++++++-- 2 files changed, 11 insertions(+), 12 deletions(-) diff --git a/src/source_base.cpp b/src/source_base.cpp index 7cfd910..daa681a 100644 --- a/src/source_base.cpp +++ b/src/source_base.cpp @@ -1542,7 +1542,7 @@ void Source::BaseView::insert_snippet(Gtk::TextIter iter, const std::string &sni start.forward_chars(offsets.first); auto end = start; end.forward_chars(offsets.second); - snippet_parameters_list.back().emplace_back(SnippetParameter{get_buffer()->create_mark(start, false), get_buffer()->create_mark(end, false), end.get_offset() - start.get_offset()}); + snippet_parameters_list.back().emplace_back(start, end); } } @@ -1599,8 +1599,6 @@ bool Source::BaseView::select_snippet_parameter() { setup_extra_cursor_signals(); } - get_buffer()->delete_mark(snippet_parameter.start); - get_buffer()->delete_mark(snippet_parameter.end); } snippet_parameters_list.erase(snippet_parameters_it); return true; @@ -1612,12 +1610,6 @@ bool Source::BaseView::clear_snippet_marks() { bool cleared = false; if(!snippet_parameters_list.empty()) { - for(auto &snippet_parameters : snippet_parameters_list) { - for(auto &snippet_parameter : snippet_parameters) { - get_buffer()->delete_mark(snippet_parameter.start); - get_buffer()->delete_mark(snippet_parameter.end); - } - } snippet_parameters_list.clear(); cleared = true; } @@ -1640,7 +1632,7 @@ bool Source::BaseView::clear_snippet_marks() { Source::BaseView::ExtraCursor::ExtraCursor(const Glib::RefPtr &extra_cursor_selection, const Gtk::TextIter &start_iter, const Gtk::TextIter &end_iter, bool snippet, int line_offset) : extra_cursor_selection(extra_cursor_selection), insert(start_iter.get_buffer()->create_mark(start_iter, false)), - selection_bound(start_iter.get_buffer()->create_mark(end_iter, false)), + selection_bound(end_iter.get_buffer()->create_mark(end_iter, false)), line_offset(line_offset), snippet(snippet) { insert->set_visible(true); if(start_iter != end_iter) diff --git a/src/source_base.hpp b/src/source_base.hpp index fb596b9..5490910 100644 --- a/src/source_base.hpp +++ b/src/source_base.hpp @@ -178,12 +178,19 @@ namespace Source { bool keep_snippet_marks = false; Mutex snippets_mutex; std::vector *snippets GUARDED_BY(snippets_mutex) = nullptr; - struct SnippetParameter { + class SnippetParameter { + public: + SnippetParameter(const Gtk::TextIter &start_iter, const Gtk::TextIter &end_iter) + : start(start_iter.get_buffer()->create_mark(start_iter, false)), end(end_iter.get_buffer()->create_mark(end_iter, false)), size(end_iter.get_offset() - start_iter.get_offset()) {} + ~SnippetParameter() { + start->get_buffer()->delete_mark(start); + end->get_buffer()->delete_mark(end); + } Glib::RefPtr start, end; /// Used to check if the parameter has been deleted, and should be passed on next tab int size; }; - std::list> snippet_parameters_list; + std::list> snippet_parameters_list; Glib::RefPtr snippet_parameter_tag; void insert_snippet(Gtk::TextIter iter, const std::string &snippet); bool select_snippet_parameter();