From 2ae1d72d6afe96456312c1d8663fd6358c3fa5f1 Mon Sep 17 00:00:00 2001 From: Josh Holtrop Date: Fri, 27 Jan 2017 20:50:15 -0500 Subject: [PATCH] Buffer::filename() returns shared_ptr to string --- src/core/Buffer.cc | 2 +- src/core/Buffer.h | 4 ++-- src/gui/BufferPane.cc | 10 +++------- 3 files changed, 6 insertions(+), 10 deletions(-) diff --git a/src/core/Buffer.cc b/src/core/Buffer.cc index 9e16d38..6040b47 100644 --- a/src/core/Buffer.cc +++ b/src/core/Buffer.cc @@ -86,7 +86,7 @@ bool Buffer::load_from_file(const char * filename) } load_text_in_buffer(buffer, buffer_size, file_size); - m_filename = filename; + m_filename = std::make_shared(filename); return true; } diff --git a/src/core/Buffer.h b/src/core/Buffer.h index 89c1867..11f69b8 100644 --- a/src/core/Buffer.h +++ b/src/core/Buffer.h @@ -131,7 +131,7 @@ public: bool insert_mode() const { return m_insert_mode; } void insert_code_point(const Buffer::Iterator & position, uint32_t code_point); void erase_code_point(const Buffer::Iterator & position); - std::string filename() const { return m_filename; } + std::shared_ptr filename() const { return m_filename; } Iterator begin() const { return Iterator(this); } Iterator end() const { return *m_eof_iterator; } void push_operation() { m_operation_level++; } @@ -152,7 +152,7 @@ protected: std::list> m_iterators; std::list> m_cursors; std::shared_ptr m_eof_iterator; - std::string m_filename; + std::shared_ptr m_filename; std::shared_ptr m_current_change_operation; int m_operation_level; size_t m_current_change_operation_index; diff --git a/src/gui/BufferPane.cc b/src/gui/BufferPane.cc index aaa29ea..555b69e 100644 --- a/src/gui/BufferPane.cc +++ b/src/gui/BufferPane.cc @@ -521,9 +521,9 @@ void BufferPane::kill_character_at_cursor() void BufferPane::write_file() { - if (m_buffer->filename() != "") + if (m_buffer->filename()) { - m_buffer->write_to_file(m_buffer->filename().c_str()); + m_buffer->write_to_file(m_buffer->filename()->c_str()); } } @@ -748,11 +748,7 @@ void BufferPane::draw_status_bar() int cursor_position_length = strlen(cursor_position); int x = m_width - m_window->font()->get_advance() * cursor_position_length; m_window->gl()->draw_rect(win_x(x - 2), win_y(0), 1, m_window->font()->get_line_height(), 0.5, 0.5, 0.5, 1.0); - std::string filename = m_buffer->filename(); - if (filename == "") - { - filename = "[No Name]"; - } + std::string filename = m_buffer->filename() ? *m_buffer->filename() : "[No Name]"; int filename_x = std::min(0, x - 3 - (int)filename.size() * m_window->font()->get_advance()); for (int i = 0; i < cursor_position_length; i++) {