[DEV] remember multiple last lene in a buffer when change it
This commit is contained in:
parent
0bef90462b
commit
4efed97130
@ -473,10 +473,22 @@ bool appl::TextViewer::onEventInput(const ewol::EventInput& _event) {
|
|||||||
}
|
}
|
||||||
} else if (_event.getStatus() == ewol::keyEvent::statusDouble) {
|
} else if (_event.getStatus() == ewol::keyEvent::statusDouble) {
|
||||||
mouseEventDouble();
|
mouseEventDouble();
|
||||||
|
// Copy selection :
|
||||||
|
std::string value;
|
||||||
|
m_buffer->copy(value);
|
||||||
|
if (value.size() != 0) {
|
||||||
|
ewol::clipBoard::set(ewol::clipBoard::clipboardSelection, value);
|
||||||
|
}
|
||||||
markToRedraw();
|
markToRedraw();
|
||||||
return true;
|
return true;
|
||||||
} else if (_event.getStatus() == ewol::keyEvent::statusTriple) {
|
} else if (_event.getStatus() == ewol::keyEvent::statusTriple) {
|
||||||
mouseEventTriple();
|
mouseEventTriple();
|
||||||
|
// Copy selection :
|
||||||
|
std::string value;
|
||||||
|
m_buffer->copy(value);
|
||||||
|
if (value.size() != 0) {
|
||||||
|
ewol::clipBoard::set(ewol::clipBoard::clipboardSelection, value);
|
||||||
|
}
|
||||||
markToRedraw();
|
markToRedraw();
|
||||||
return true;
|
return true;
|
||||||
} else if (_event.getStatus() == ewol::keyEvent::statusMove) {
|
} else if (_event.getStatus() == ewol::keyEvent::statusMove) {
|
||||||
@ -589,16 +601,39 @@ void appl::TextViewer::onReceiveMessage(const ewol::EMessage& _msg) {
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
if (_msg.getMessage() == appl::MsgSelectNewFile) {
|
if (_msg.getMessage() == appl::MsgSelectNewFile) {
|
||||||
|
// reset scroll:
|
||||||
if (m_buffer != NULL) {
|
if (m_buffer != NULL) {
|
||||||
m_buffer->unRegisterOnEvent(this);
|
m_buffer->unRegisterOnEvent(this);
|
||||||
|
bool needAdd = true;
|
||||||
|
for (size_t iii=0; iii<m_drawingRemenber.size(); ++iii) {
|
||||||
|
if (m_drawingRemenber[iii].first == m_buffer) {
|
||||||
|
m_drawingRemenber[iii].second = m_originScrooled;
|
||||||
|
APPL_VERBOSE("store origin : " << m_originScrooled);
|
||||||
|
needAdd = false;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (needAdd == true) {
|
||||||
|
m_drawingRemenber.push_back(std::make_pair(m_buffer, m_originScrooled));
|
||||||
|
APPL_VERBOSE("Push origin : " << m_originScrooled);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
m_buffer = m_bufferManager->get(_msg.getData());
|
m_originScrooled = vec2(0,0);
|
||||||
if (m_buffer != NULL) {
|
|
||||||
m_buffer->registerOnEvent(this, appl::Buffer::eventIsModify);
|
|
||||||
m_buffer->registerOnEvent(this, appl::Buffer::eventSelectChange);
|
|
||||||
}
|
|
||||||
if (m_bufferManager != NULL) {
|
if (m_bufferManager != NULL) {
|
||||||
|
m_buffer = m_bufferManager->get(_msg.getData());
|
||||||
m_bufferManager->setBufferSelected(m_buffer);
|
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();
|
markToRedraw();
|
||||||
return;
|
return;
|
||||||
|
@ -17,6 +17,7 @@
|
|||||||
#include <ewol/compositing/Text.h>
|
#include <ewol/compositing/Text.h>
|
||||||
#include <ewol/compositing/Drawing.h>
|
#include <ewol/compositing/Drawing.h>
|
||||||
#include <appl/BufferManager.h>
|
#include <appl/BufferManager.h>
|
||||||
|
#include <tuple>
|
||||||
|
|
||||||
namespace appl {
|
namespace appl {
|
||||||
class TextViewerPlugin;
|
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)
|
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::Text m_displayText; //!< Text display properties.
|
||||||
ewol::Drawing m_displayDrawing; //!< Other diaplay requested.
|
ewol::Drawing m_displayDrawing; //!< Other diaplay requested.
|
||||||
|
std::vector<std::pair<appl::Buffer*, vec2>> m_drawingRemenber;
|
||||||
public:
|
public:
|
||||||
void setFontSize(int32_t _size);
|
void setFontSize(int32_t _size);
|
||||||
void setFontName(const std::string& _fontName);
|
void setFontName(const std::string& _fontName);
|
||||||
|
Loading…
x
Reference in New Issue
Block a user