git-svn-id: svn://db.shs.com.ru/pip@555 12ceb7fc-bf1f-11e4-8940-5bc7170c53b5

This commit is contained in:
2017-11-20 14:32:19 +00:00
parent a1b95e6e66
commit 9f2c55de5b
4 changed files with 27 additions and 16 deletions

View File

@@ -700,7 +700,13 @@ bool TileInput::keyEvent(PIKbdListener::KeyEvent key) {
case PIKbdListener::F12: case PIKbdListener::F12:
break; break;
default: default:
text.insert(cur, PIChar(key.key)); PIChar tc
#ifdef WINDOWS
= PIChar(key.key);
#else
= PIChar::fromUTF8((char *)&(key.key));
#endif
text.insert(cur, tc);
cur++; cur++;
oo++; oo++;
if (cur - offset >= lwid - osp) offset += oo; if (cur - offset >= lwid - osp) offset += oo;

View File

@@ -20,8 +20,7 @@
along with this program. If not, see <http://www.gnu.org/licenses/>. along with this program. If not, see <http://www.gnu.org/licenses/>.
*/ */
#include <iostream> #include "piincludes_p.h"
#include <string.h>
#include "pibytearray.h" #include "pibytearray.h"
#ifdef PIP_ICU #ifdef PIP_ICU
# include "unicode/ucnv.h" # include "unicode/ucnv.h"
@@ -115,9 +114,13 @@ PIChar PIChar::fromUTF8(const char * c) {
#endif #endif
//#ifdef ANDROID //#ifdef ANDROID
wchar_t wc(0); wchar_t wc(0);
mbstate_t s; mbtowc(0, 0, 0); // reset mbtowc
mbrtowc(&wc, c, 4, &s); //mbstate_t s;
ret.ch = wc; //mbrtowc(&wc, c, 4, &s);
int sz = 0;
sz = mbtowc(&wc, c, sizeof(ushort));
if (sz < 1 || sz > (int)sizeof(ushort)) ret.ch = 0;
else ret.ch = wc;
return ret; return ret;
//#endif //#endif
// ret.ch = *(ushort*)c; // ret.ch = *(ushort*)c;

View File

@@ -214,13 +214,12 @@ void PIString::appendFromChars(const char * c, int s, const char * cp) {
#endif #endif
int sz; int sz;
wchar_t wc; wchar_t wc;
for (int i = 0; i < s; ++i) { mbtowc(0,0,0); // reset mbtowc
if (/*isascii(c[i])*/c[i] >= 0) { while (s>0) {
push_back(PIChar(c[i])); sz = mbtowc(&wc, c, s);
continue; if (sz < 1) break;
}
sz = mbtowc(&wc, &(c[i]), 4);
push_back(PIChar(int(wc))); push_back(PIChar(int(wc)));
c += sz; s -= sz;
} }
} }
@@ -330,8 +329,10 @@ void PIString::buildData(const char * cp) const {
} }
#endif #endif
wchar_t wc; wchar_t wc;
char tc[4]; char tc[8];
mbstate_t s; // mbstate_t s;
// mbrlen(0,0,&s);
wctomb(0, 0);
int sz(0); int sz(0);
//printf("PIString::data %d\n", size_s()); //printf("PIString::data %d\n", size_s());
for (int i = 0; i < size_s(); ++i) { for (int i = 0; i < size_s(); ++i) {
@@ -340,7 +341,8 @@ void PIString::buildData(const char * cp) const {
continue; continue;
} }
wc = at(i).toWChar(); wc = at(i).toWChar();
sz = piClampi(wcrtomb(tc, wc, &s), 0, 4); // sz = piClampi(wcrtomb(tc, wc, &s), 0, 4);
sz = wctomb(tc, wc);
for (int b = 0; b < sz; ++b) for (int b = 0; b < sz; ++b)
data_.push_back(uchar(tc[b])); data_.push_back(uchar(tc[b]));
//printf("__%d_%d\n", i, wc); //printf("__%d_%d\n", i, wc);

View File

@@ -4,7 +4,7 @@
#define PIP_VERSION_MAJOR 1 #define PIP_VERSION_MAJOR 1
#define PIP_VERSION_MINOR 1 #define PIP_VERSION_MINOR 1
#define PIP_VERSION_REVISION 0 #define PIP_VERSION_REVISION 1
#define PIP_VERSION_SUFFIX "" #define PIP_VERSION_SUFFIX ""
#endif // PIVERSION_H #endif // PIVERSION_H