aboutsummaryrefslogtreecommitdiffhomepage
path: root/gtk
diff options
context:
space:
mode:
Diffstat (limited to 'gtk')
-rwxr-xr-xgtk/ScintillaGTK.cxx18
-rwxr-xr-xgtk/ScintillaGTK.h2
2 files changed, 20 insertions, 0 deletions
diff --git a/gtk/ScintillaGTK.cxx b/gtk/ScintillaGTK.cxx
index 61ce04ad0..e3148e9a8 100755
--- a/gtk/ScintillaGTK.cxx
+++ b/gtk/ScintillaGTK.cxx
@@ -816,6 +816,24 @@ bool ScintillaGTK::ValidCodePage(int codePage) const {
|| codePage == 1361;
}
+std::string ScintillaGTK::UTF8FromEncoded(std::string_view encoded) const {
+ if (IsUnicodeMode()) {
+ return std::string(encoded);
+ } else {
+ const char *charSetBuffer = CharacterSetID();
+ return ConvertText(encoded.data(), encoded.length(), "UTF-8", charSetBuffer, true);
+ }
+}
+
+std::string ScintillaGTK::EncodedFromUTF8(std::string_view utf8) const {
+ if (IsUnicodeMode()) {
+ return std::string(utf8);
+ } else {
+ const char *charSetBuffer = CharacterSetID();
+ return ConvertText(utf8.data(), utf8.length(), charSetBuffer, "UTF-8", true);
+ }
+}
+
sptr_t ScintillaGTK::WndProc(unsigned int iMessage, uptr_t wParam, sptr_t lParam) {
try {
switch (iMessage) {
diff --git a/gtk/ScintillaGTK.h b/gtk/ScintillaGTK.h
index a671f5b7a..100abd56b 100755
--- a/gtk/ScintillaGTK.h
+++ b/gtk/ScintillaGTK.h
@@ -92,6 +92,8 @@ private:
Sci::Position TargetAsUTF8(char *text) const;
Sci::Position EncodedFromUTF8(const char *utf8, char *encoded) const;
bool ValidCodePage(int codePage) const override;
+ std::string UTF8FromEncoded(std::string_view encoded) const override;
+ std::string EncodedFromUTF8(std::string_view utf8) const override;
public: // Public for scintilla_send_message
sptr_t WndProc(unsigned int iMessage, uptr_t wParam, sptr_t lParam) override;
private: