]> git.lyx.org Git - features.git/blobdiff - src/frontends/qt3/qt_helpers.C
Fix clipboard/selection encoding
[features.git] / src / frontends / qt3 / qt_helpers.C
index 0317ff2b2e30df409958a7e8bf8c08ddef44370f..e02319fec8991f3deffbcc6f3a3b92711d97ab91 100644 (file)
@@ -19,6 +19,7 @@
 
 #include "support/lstrings.h"
 #include "support/convert.h"
+#include "support/unicode.h"
 
 #include <qcombobox.h>
 #include <qlineedit.h>
@@ -28,6 +29,8 @@
 
 
 using lyx::support::isStrDbl;
+using lyx::char_type;
+using lyx::docstring;
 
 using std::make_pair;
 using std::string;
@@ -114,6 +117,15 @@ QString const toqstr(string const & str)
 }
 
 
+QString const toqstr(docstring const & str)
+{
+       std::vector<unsigned short> ucs2 =
+               ucs4_to_ucs2(str.c_str(), str.length());
+       ucs2.push_back('\0');
+       return QString::fromUcs2(&ucs2[0]);
+}
+
+
 QString const qt_(char const * str)
 {
        return toqstr(_(str));
@@ -134,6 +146,15 @@ string const fromqstr(QString const & str)
 }
 
 
+docstring const qstring_to_ucs4(QString const & str)
+{
+       unsigned short const * const ucs2 = str.ucs2();
+       std::vector<char_type> const ucs4 = ucs2_to_ucs4(
+               std::vector<unsigned short>(ucs2, ucs2 + str.length()));
+       return docstring(ucs4.begin(), ucs4.end());
+}
+
+
 string const formatted(string const & text, int w)
 {
        string sout;