From 4efed97130036fa0be2e2b54831cba0952ac4231 Mon Sep 17 00:00:00 2001 From: Edouard DUPIN Date: Thu, 21 Nov 2013 21:18:30 +0100 Subject: [PATCH] [DEV] remember multiple last lene in a buffer when change it --- sources/appl/Gui/TextViewer.cpp | 45 +++++++++++++++++++++++++++++---- sources/appl/Gui/TextViewer.h | 2 ++ 2 files changed, 42 insertions(+), 5 deletions(-) diff --git a/sources/appl/Gui/TextViewer.cpp b/sources/appl/Gui/TextViewer.cpp index 7720662..daa75a7 100644 --- a/sources/appl/Gui/TextViewer.cpp +++ b/sources/appl/Gui/TextViewer.cpp @@ -473,10 +473,22 @@ bool appl::TextViewer::onEventInput(const ewol::EventInput& _event) { } } else if (_event.getStatus() == ewol::keyEvent::statusDouble) { mouseEventDouble(); + // Copy selection : + std::string value; + m_buffer->copy(value); + if (value.size() != 0) { + ewol::clipBoard::set(ewol::clipBoard::clipboardSelection, value); + } markToRedraw(); return true; } else if (_event.getStatus() == ewol::keyEvent::statusTriple) { mouseEventTriple(); + // Copy selection : + std::string value; + m_buffer->copy(value); + if (value.size() != 0) { + ewol::clipBoard::set(ewol::clipBoard::clipboardSelection, value); + } markToRedraw(); return true; } else if (_event.getStatus() == ewol::keyEvent::statusMove) { @@ -589,16 +601,39 @@ void appl::TextViewer::onReceiveMessage(const ewol::EMessage& _msg) { return; } if (_msg.getMessage() == appl::MsgSelectNewFile) { + // reset scroll: if (m_buffer != NULL) { m_buffer->unRegisterOnEvent(this); + bool needAdd = true; + for (size_t iii=0; iiiget(_msg.getData()); - if (m_buffer != NULL) { - m_buffer->registerOnEvent(this, appl::Buffer::eventIsModify); - m_buffer->registerOnEvent(this, appl::Buffer::eventSelectChange); - } + m_originScrooled = vec2(0,0); if (m_bufferManager != NULL) { + m_buffer = m_bufferManager->get(_msg.getData()); m_bufferManager->setBufferSelected(m_buffer); + if (m_buffer != NULL) { + m_buffer->registerOnEvent(this, appl::Buffer::eventIsModify); + m_buffer->registerOnEvent(this, appl::Buffer::eventSelectChange); + for (auto element : m_drawingRemenber) { + if (element.first == m_buffer) { + m_originScrooled = element.second; + APPL_VERBOSE("retrive origin : " << m_originScrooled); + // TODO : Check if this element is not out of the display text ... + break; + } + } + } } markToRedraw(); return; diff --git a/sources/appl/Gui/TextViewer.h b/sources/appl/Gui/TextViewer.h index 8846938..36c436d 100644 --- a/sources/appl/Gui/TextViewer.h +++ b/sources/appl/Gui/TextViewer.h @@ -17,6 +17,7 @@ #include #include #include +#include namespace appl { class TextViewerPlugin; @@ -48,6 +49,7 @@ namespace appl { appl::Buffer* m_buffer; //!< pointer on the current buffer to display (can be null if the buffer is remover or in state of changing buffer) ewol::Text m_displayText; //!< Text display properties. ewol::Drawing m_displayDrawing; //!< Other diaplay requested. + std::vector> m_drawingRemenber; public: void setFontSize(int32_t _size); void setFontName(const std::string& _fontName);