TextEdit has a new menu (Clear / Copy / Paste)

This commit is contained in:
Bertrand Songis
2021-01-05 14:14:49 +01:00
parent c2a22158b2
commit 83df130245
2 changed files with 39 additions and 8 deletions
+37 -6
View File
@@ -20,11 +20,28 @@
#include "textedit.h"
#include "font.h"
#include "libopenui_globals.h"
#include "libopenui_config.h"
#if !defined(STR_EDIT)
#define STR_EDIT "Edit"
#endif
#if !defined(STR_CLEAR)
#define STR_CLEAR "Clear"
#endif
#if defined(HARDWARE_TOUCH)
#include "keyboard_text.h"
#endif
#if defined(HARDWARE_KEYS)
#include "menu.h"
#endif
#if defined(CLIPBOARD)
#include "clipboard.h"
#endif
void TextEdit::paint(BitmapBuffer * dc)
{
FormField::paint(dc);
@@ -150,12 +167,27 @@ void TextEdit::onEvent(event_t event)
break;
case EVT_KEY_LONG(KEY_ENTER):
if (v == 0) {
killEvents(event);
FormField::onEvent(EVT_KEY_BREAK(KEY_ENTER));
break;
{
killEvents(event);
auto menu = new Menu(this);
menu->setTitle(STR_EDIT);
#if defined(CLIPBOARD)
menu->addLine(STR_COPY, [=] {
clipboard.write((uint8_t *)value, length, Clipboard::CONTENT_TEXT);
});
if (clipboard.contentType == Clipboard::CONTENT_TEXT) {
menu->addLine(STR_PASTE, [=] {
clipboard.read((uint8_t *)value, length);
changeEnd(true);
});
}
// no break
#endif
menu->addLine(STR_CLEAR, [=] {
memset(value, 0, length);
changeEnd(true);
});
break;
}
case EVT_KEY_LONG(KEY_LEFT):
case EVT_KEY_LONG(KEY_RIGHT):
@@ -223,6 +255,5 @@ void TextEdit::onFocusLost()
#endif
changeEnd();
FormField::onFocusLost();
}
+2 -2
View File
@@ -73,10 +73,10 @@ class TextEdit : public FormField {
void trim();
void changeEnd()
void changeEnd(bool forceChanged = false)
{
cursorPos = 0;
if (changed) {
if (changed || forceChanged) {
changed = false;
trim();
if (changeHandler) {