@@ -25,6 +25,7 @@ with this program; if not, write to the Free Software Foundation, Inc.,
25
25
#include " IGUIFont.h"
26
26
27
27
#include " porting.h"
28
+ #include " util/string.h"
28
29
29
30
GUIEditBox::~GUIEditBox ()
30
31
{
@@ -517,8 +518,7 @@ void GUIEditBox::onKeyControlC(const SEvent &event)
517
518
const s32 realmbgn = m_mark_begin < m_mark_end ? m_mark_begin : m_mark_end;
518
519
const s32 realmend = m_mark_begin < m_mark_end ? m_mark_end : m_mark_begin;
519
520
520
- core::stringc s;
521
- s = Text.subString (realmbgn, realmend - realmbgn).c_str ();
521
+ std::string s = stringw_to_utf8 (Text.subString (realmbgn, realmend - realmbgn));
522
522
m_operator->copyToClipboard (s.c_str ());
523
523
}
524
524
@@ -567,29 +567,28 @@ bool GUIEditBox::onKeyControlV(const SEvent &event, s32 &mark_begin, s32 &mark_e
567
567
568
568
// add new character
569
569
if (const c8 *p = m_operator->getTextFromClipboard ()) {
570
+ core::stringw inserted_text = utf8_to_stringw (p);
570
571
if (m_mark_begin == m_mark_end) {
571
572
// insert text
572
573
core::stringw s = Text.subString (0 , m_cursor_pos);
573
- s.append (p );
574
+ s.append (inserted_text );
574
575
s.append (Text.subString (
575
576
m_cursor_pos, Text.size () - m_cursor_pos));
576
577
577
578
if (!m_max || s.size () <= m_max) {
578
579
Text = s;
579
- s = p;
580
- m_cursor_pos += s.size ();
580
+ m_cursor_pos += inserted_text.size ();
581
581
}
582
582
} else {
583
583
// replace text
584
584
585
585
core::stringw s = Text.subString (0 , realmbgn);
586
- s.append (p );
586
+ s.append (inserted_text );
587
587
s.append (Text.subString (realmend, Text.size () - realmend));
588
588
589
589
if (!m_max || s.size () <= m_max) {
590
590
Text = s;
591
- s = p;
592
- m_cursor_pos = realmbgn + s.size ();
591
+ m_cursor_pos = realmbgn + inserted_text.size ();
593
592
}
594
593
}
595
594
}
0 commit comments