if (!msg.LParam)
return;
+ int pdicVer = GetPdicVersion();
+ const int numPrev = pdicVer >= 0x050A0018 ? 2 : 1; // ver.5.10.24\88È\8fã
+
tchar *text = (tchar*)msg.LParam;
int loc = msg.WParam & ~FLG_MOVESEND;
bool movesend = msg.WParam & FLG_MOVESEND ? true : false;
int start, end;
int prevstart;
- if ( !GetWord( text, loc, start, end, prevstart, true, 10, true, IgnoreJ ) ){
+ if ( !GetWord( text, loc, start, end, prevstart, true, 10, true, IgnoreJ, numPrev ) ){
// no words
delete[] text;
return;
// fLongest\82ªTRUE\82Ì\8fê\8d\87\82Í\81A\8dÅ\8d\8210\8cê\82Ü\82Åget\82·\82é(.)\82ð\8fI\82í\82è\82Æ\82Ý\82È\82·
// about : \82¢\82¢\89Á\8c¸\82È\82Æ\82±\82ë\82ð\83N\83\8a\83b\83N\82µ\82Ä\82à\92P\8cê\82³\82¦\82 \82ê\82Î\95K\82¸get\82·\82é
// alnum : \89p\90\94\8e\9a\88È\8aO\82Í\96³\8e\8b
+// numPrev : N\8cê\91O\82Ì\92P\8cê\82ð\8fE\82¤
-bool GetWord( const tchar *str, int pos, int &start, int &end, int &prevstart, bool fLongest, int wordcount, bool about, bool alnum )
+bool GetWord( const tchar *str, int pos, int &start, int &end, int &prevstart, bool fLongest, int wordcount, bool about, bool alnum, int numPrev )
{
if ( !about )
if ( !IsWordChar( *(str+pos) ) )
wordtop = p;
const tchar *wordtail = NULL;
const tchar *wordprev = NULL;
+ const tchar *wordprev2 = NULL;
bool fSpc = false;
// pos\82É\82 \82é\92P\8cê\82Ìstart\82Æend\82ð\8b\81\82ß\82é
while ( *p ){
} else {
// \92P\8cê\95¶\8e\9a
if ( fSpc ){
+ wordprev2 = wordprev;
wordprev = wordtop;
wordtop = p;
fSpc = FALSE;
end = STR_DIFF( wordtail, orgp );
if ( start == end )
return false;
- if ( wordprev ){
+ if ( numPrev >= 2 && wordprev2 ){
+ prevstart = STR_DIFF( wordprev2, orgp );
+ } else
+ if ( numPrev >= 1 && wordprev ){
prevstart = STR_DIFF( wordprev, orgp );
} else {
prevstart = start;