|
|
@ -1,6 +1,6 @@
|
|
|
|
diff -up ./src/chewingio.c.phraseChoiceRearward ./src/chewingio.c
|
|
|
|
diff -up ./src/chewingio.c.phraseChoiceRearward ./src/chewingio.c
|
|
|
|
--- ./src/chewingio.c.phraseChoiceRearward 2008-12-02 00:29:20.000000000 +1000
|
|
|
|
--- ./src/chewingio.c.phraseChoiceRearward 2008-12-02 00:29:20.000000000 +1000
|
|
|
|
+++ ./src/chewingio.c 2009-07-31 17:17:06.000000000 +1000
|
|
|
|
+++ ./src/chewingio.c 2009-08-03 14:46:41.000000000 +1000
|
|
|
|
@@ -20,6 +20,7 @@
|
|
|
|
@@ -20,6 +20,7 @@
|
|
|
|
#include <string.h>
|
|
|
|
#include <string.h>
|
|
|
|
#include <ctype.h>
|
|
|
|
#include <ctype.h>
|
|
|
@ -9,7 +9,20 @@ diff -up ./src/chewingio.c.phraseChoiceRearward ./src/chewingio.c
|
|
|
|
|
|
|
|
|
|
|
|
#include "chewing-utf8-util.h"
|
|
|
|
#include "chewing-utf8-util.h"
|
|
|
|
#include "global.h"
|
|
|
|
#include "global.h"
|
|
|
|
@@ -75,14 +76,14 @@ CHEWING_API int chewing_KBStr2Num( char
|
|
|
|
@@ -50,6 +51,12 @@ void (*TerminateServices[ TerminateServi
|
|
|
|
|
|
|
|
static int countTerminateService = 0;
|
|
|
|
|
|
|
|
static int bTerminateCompleted = 0;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
+/**
|
|
|
|
|
|
|
|
+ * This has to be global, as user might mixed space and down
|
|
|
|
|
|
|
|
+ * key as selection starter.
|
|
|
|
|
|
|
|
+ */
|
|
|
|
|
|
|
|
+static int cursor_orig=-1;
|
|
|
|
|
|
|
|
+
|
|
|
|
|
|
|
|
char *kb_type_str[] = {
|
|
|
|
|
|
|
|
"KB_DEFAULT",
|
|
|
|
|
|
|
|
"KB_HSU",
|
|
|
|
|
|
|
|
@@ -75,14 +82,14 @@ CHEWING_API int chewing_KBStr2Num( char
|
|
|
|
return KB_DEFAULT;
|
|
|
|
return KB_DEFAULT;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
@ -26,7 +39,7 @@ diff -up ./src/chewingio.c.phraseChoiceRearward ./src/chewingio.c
|
|
|
|
#endif
|
|
|
|
#endif
|
|
|
|
|
|
|
|
|
|
|
|
int addTerminateService( void (*callback)() )
|
|
|
|
int addTerminateService( void (*callback)() )
|
|
|
|
@@ -103,7 +104,7 @@ int addTerminateService( void (*callback
|
|
|
|
@@ -103,7 +110,7 @@ int addTerminateService( void (*callback
|
|
|
|
CHEWING_API ChewingContext *chewing_new()
|
|
|
|
CHEWING_API ChewingContext *chewing_new()
|
|
|
|
{
|
|
|
|
{
|
|
|
|
ChewingContext *ctx;
|
|
|
|
ChewingContext *ctx;
|
|
|
@ -35,7 +48,7 @@ diff -up ./src/chewingio.c.phraseChoiceRearward ./src/chewingio.c
|
|
|
|
ChewingData *internal_data = ALC( ChewingData, 1 );
|
|
|
|
ChewingData *internal_data = ALC( ChewingData, 1 );
|
|
|
|
ChewingOutput *internal_output = ALC( ChewingOutput, 1 );
|
|
|
|
ChewingOutput *internal_output = ALC( ChewingOutput, 1 );
|
|
|
|
ctx = ALC( ChewingContext, 1 );
|
|
|
|
ctx = ALC( ChewingContext, 1 );
|
|
|
|
@@ -159,7 +160,7 @@ CHEWING_API int chewing_Init(
|
|
|
|
@@ -159,7 +166,7 @@ CHEWING_API int chewing_Init(
|
|
|
|
dbg_path = FAILSAFE_OUTPUT;
|
|
|
|
dbg_path = FAILSAFE_OUTPUT;
|
|
|
|
fp_g = fopen( dbg_path, "w+" );
|
|
|
|
fp_g = fopen( dbg_path, "w+" );
|
|
|
|
if ( ! fp_g ) {
|
|
|
|
if ( ! fp_g ) {
|
|
|
@ -44,7 +57,7 @@ diff -up ./src/chewingio.c.phraseChoiceRearward ./src/chewingio.c
|
|
|
|
"Failed to record debug message in file.\n"
|
|
|
|
"Failed to record debug message in file.\n"
|
|
|
|
"--> Output to stderr\n" );
|
|
|
|
"--> Output to stderr\n" );
|
|
|
|
}
|
|
|
|
}
|
|
|
|
@@ -237,14 +238,14 @@ CHEWING_API void chewing_Terminate()
|
|
|
|
@@ -237,14 +244,14 @@ CHEWING_API void chewing_Terminate()
|
|
|
|
if ( TerminateServices[ i ] ) {
|
|
|
|
if ( TerminateServices[ i ] ) {
|
|
|
|
#ifdef ENABLE_DEBUG
|
|
|
|
#ifdef ENABLE_DEBUG
|
|
|
|
/* Can't output to debug file because it's about to close */
|
|
|
|
/* Can't output to debug file because it's about to close */
|
|
|
@ -61,7 +74,7 @@ diff -up ./src/chewingio.c.phraseChoiceRearward ./src/chewingio.c
|
|
|
|
/* XXX: should check if the services are really completed. */
|
|
|
|
/* XXX: should check if the services are really completed. */
|
|
|
|
bTerminateCompleted = 1;
|
|
|
|
bTerminateCompleted = 1;
|
|
|
|
return;
|
|
|
|
return;
|
|
|
|
@@ -403,7 +404,7 @@ CHEWING_API void chewing_set_ChiEngMode(
|
|
|
|
@@ -403,7 +410,7 @@ CHEWING_API void chewing_set_ChiEngMode(
|
|
|
|
ctx->data->bChiSym = ( mode == CHINESE_MODE ? 1 : 0 );
|
|
|
|
ctx->data->bChiSym = ( mode == CHINESE_MODE ? 1 : 0 );
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
@ -70,7 +83,7 @@ diff -up ./src/chewingio.c.phraseChoiceRearward ./src/chewingio.c
|
|
|
|
{
|
|
|
|
{
|
|
|
|
return ctx->data->bChiSym;
|
|
|
|
return ctx->data->bChiSym;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
@@ -413,7 +414,7 @@ CHEWING_API void chewing_set_ShapeMode(
|
|
|
|
@@ -413,7 +420,7 @@ CHEWING_API void chewing_set_ShapeMode(
|
|
|
|
ctx->data->bFullShape = (mode == FULLSHAPE_MODE ? 1 : 0);
|
|
|
|
ctx->data->bFullShape = (mode == FULLSHAPE_MODE ? 1 : 0);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
@ -79,7 +92,7 @@ diff -up ./src/chewingio.c.phraseChoiceRearward ./src/chewingio.c
|
|
|
|
{
|
|
|
|
{
|
|
|
|
return ctx->data->bFullShape;
|
|
|
|
return ctx->data->bFullShape;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
@@ -435,7 +436,7 @@ static int DoSelect( ChewingData *pgdata
|
|
|
|
@@ -435,7 +442,7 @@ static int DoSelect( ChewingData *pgdata
|
|
|
|
if ( pgdata->choiceInfo.isSymbol ) {
|
|
|
|
if ( pgdata->choiceInfo.isSymbol ) {
|
|
|
|
SymbolChoice( pgdata, num );
|
|
|
|
SymbolChoice( pgdata, num );
|
|
|
|
}
|
|
|
|
}
|
|
|
@ -88,16 +101,35 @@ diff -up ./src/chewingio.c.phraseChoiceRearward ./src/chewingio.c
|
|
|
|
/* change the select interval & selectStr & nSelect */
|
|
|
|
/* change the select interval & selectStr & nSelect */
|
|
|
|
AddSelect( pgdata, num );
|
|
|
|
AddSelect( pgdata, num );
|
|
|
|
/* second, call choice module */
|
|
|
|
/* second, call choice module */
|
|
|
|
@@ -489,7 +490,7 @@ CHEWING_API int chewing_handle_Space( Ch
|
|
|
|
@@ -472,13 +479,13 @@ CHEWING_API int chewing_handle_Space( Ch
|
|
|
|
|
|
|
|
CheckAndResetRange( pgdata );
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
if ( pgdata->bSelect ) {
|
|
|
|
|
|
|
|
- if ( pgdata->choiceInfo.pageNo < ( pgdata->choiceInfo.nPage - 1 ) ) {
|
|
|
|
|
|
|
|
+ if ( pgdata->choiceInfo.pageNo < ( pgdata->choiceInfo.nPage - 1 ) ) {
|
|
|
|
|
|
|
|
return chewing_handle_Right( ctx );
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
if ( ! ChewingIsEntering( pgdata ) ) {
|
|
|
|
|
|
|
|
- if ( pgdata->bFullShape ) {
|
|
|
|
|
|
|
|
+ if ( pgdata->bFullShape ) {
|
|
|
|
|
|
|
|
rtn = FullShapeSymbolInput( ' ', pgdata );
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
else {
|
|
|
|
|
|
|
|
@@ -489,9 +496,9 @@ CHEWING_API int chewing_handle_Space( Ch
|
|
|
|
pgdata->chiSymbolBufLen = 0;
|
|
|
|
pgdata->chiSymbolBufLen = 0;
|
|
|
|
pgdata->chiSymbolCursor = 0;
|
|
|
|
pgdata->chiSymbolCursor = 0;
|
|
|
|
keystrokeRtn = KEYSTROKE_COMMIT;
|
|
|
|
keystrokeRtn = KEYSTROKE_COMMIT;
|
|
|
|
- }
|
|
|
|
- }
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
else if ( pgdata->bChiSym != CHINESE_MODE ) {
|
|
|
|
else if ( pgdata->bChiSym != CHINESE_MODE ) {
|
|
|
|
/* see if buffer contains nothing */
|
|
|
|
- /* see if buffer contains nothing */
|
|
|
|
|
|
|
|
+ /* see if buffer contains nothing */
|
|
|
|
if ( pgdata->chiSymbolBufLen == 0 ) {
|
|
|
|
if ( pgdata->chiSymbolBufLen == 0 ) {
|
|
|
|
@@ -507,11 +508,11 @@ CHEWING_API int chewing_handle_Space( Ch
|
|
|
|
bQuickCommit = 1;
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
@@ -507,11 +514,11 @@ CHEWING_API int chewing_handle_Space( Ch
|
|
|
|
if ( rtn == SYMBOL_KEY_ERROR ) {
|
|
|
|
if ( rtn == SYMBOL_KEY_ERROR ) {
|
|
|
|
keystrokeRtn = KEYSTROKE_IGNORE;
|
|
|
|
keystrokeRtn = KEYSTROKE_IGNORE;
|
|
|
|
/*
|
|
|
|
/*
|
|
|
@ -111,7 +143,7 @@ diff -up ./src/chewingio.c.phraseChoiceRearward ./src/chewingio.c
|
|
|
|
else {
|
|
|
|
else {
|
|
|
|
keystrokeRtn = KEYSTROKE_ABSORB;
|
|
|
|
keystrokeRtn = KEYSTROKE_ABSORB;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
@@ -524,9 +525,9 @@ CHEWING_API int chewing_handle_Space( Ch
|
|
|
|
@@ -524,9 +531,9 @@ CHEWING_API int chewing_handle_Space( Ch
|
|
|
|
/* Quick commit */
|
|
|
|
/* Quick commit */
|
|
|
|
else {
|
|
|
|
else {
|
|
|
|
DEBUG_OUT(
|
|
|
|
DEBUG_OUT(
|
|
|
@ -123,7 +155,46 @@ diff -up ./src/chewingio.c.phraseChoiceRearward ./src/chewingio.c
|
|
|
|
pgo->nCommitStr = 1;
|
|
|
|
pgo->nCommitStr = 1;
|
|
|
|
pgdata->chiSymbolBufLen = 0;
|
|
|
|
pgdata->chiSymbolBufLen = 0;
|
|
|
|
pgdata->chiSymbolCursor = 0;
|
|
|
|
pgdata->chiSymbolCursor = 0;
|
|
|
|
@@ -643,7 +644,7 @@ CHEWING_API int chewing_handle_Enter( Ch
|
|
|
|
@@ -534,10 +541,11 @@ CHEWING_API int chewing_handle_Space( Ch
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
else {
|
|
|
|
|
|
|
|
+
|
|
|
|
|
|
|
|
rtn = ZuinPhoInput( &( pgdata->zuinData ), ' ' );
|
|
|
|
|
|
|
|
switch ( rtn ) {
|
|
|
|
|
|
|
|
case ZUIN_ABSORB:
|
|
|
|
|
|
|
|
- keystrokeRtn = KEYSTROKE_ABSORB;
|
|
|
|
|
|
|
|
+ keystrokeRtn = KEYSTROKE_ABSORB;
|
|
|
|
|
|
|
|
break;
|
|
|
|
|
|
|
|
case ZUIN_COMMIT:
|
|
|
|
|
|
|
|
AddChi( pgdata->zuinData.phone, pgdata );
|
|
|
|
|
|
|
|
@@ -557,10 +565,21 @@ CHEWING_API int chewing_handle_Space( Ch
|
|
|
|
|
|
|
|
toSelect = 1;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
if ( toSelect ) {
|
|
|
|
|
|
|
|
- if ( ! pgdata->bSelect )
|
|
|
|
|
|
|
|
- ChoiceFirstAvail( pgdata );
|
|
|
|
|
|
|
|
- else
|
|
|
|
|
|
|
|
- ChoiceNextAvail( pgdata );
|
|
|
|
|
|
|
|
+ if( ! pgdata->bSelect ) {
|
|
|
|
|
|
|
|
+ cursor_orig=pgdata->chiSymbolCursor;
|
|
|
|
|
|
|
|
+ ChoiceFirstAvail( pgdata );
|
|
|
|
|
|
|
|
+ }
|
|
|
|
|
|
|
|
+ else {
|
|
|
|
|
|
|
|
+ if ( pgdata->config.bPhraseChoiceRearward ){
|
|
|
|
|
|
|
|
+ int avail_willbe=(pgdata->availInfo.currentAvail>0)?
|
|
|
|
|
|
|
|
+ pgdata->availInfo.currentAvail-1: pgdata->availInfo.nAvail - 1;
|
|
|
|
|
|
|
|
+ pgdata->chiSymbolCursor=cursor_orig - pgdata->availInfo.avail[avail_willbe].len;
|
|
|
|
|
|
|
|
+ if (chewing_buffer_Len(ctx)>cursor_orig){
|
|
|
|
|
|
|
|
+ pgdata->chiSymbolCursor++;
|
|
|
|
|
|
|
|
+ }
|
|
|
|
|
|
|
|
+ }
|
|
|
|
|
|
|
|
+ ChoiceNextAvail( pgdata );
|
|
|
|
|
|
|
|
+ }
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
else if ( pgdata->symbolKeyBuf[ key_buf_cursor ] ) {
|
|
|
|
|
|
|
|
/* Open Symbol Choice List */
|
|
|
|
|
|
|
|
@@ -643,7 +662,7 @@ CHEWING_API int chewing_handle_Enter( Ch
|
|
|
|
keystrokeRtn = KEYSTROKE_COMMIT;
|
|
|
|
keystrokeRtn = KEYSTROKE_COMMIT;
|
|
|
|
WriteChiSymbolToBuf( pgo->commitStr, nCommitStr, pgdata );
|
|
|
|
WriteChiSymbolToBuf( pgo->commitStr, nCommitStr, pgdata );
|
|
|
|
AutoLearnPhrase( pgdata );
|
|
|
|
AutoLearnPhrase( pgdata );
|
|
|
@ -132,7 +203,7 @@ diff -up ./src/chewingio.c.phraseChoiceRearward ./src/chewingio.c
|
|
|
|
pgo->nCommitStr = nCommitStr;
|
|
|
|
pgo->nCommitStr = nCommitStr;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
@@ -664,12 +665,12 @@ CHEWING_API int chewing_handle_Del( Chew
|
|
|
|
@@ -664,12 +683,12 @@ CHEWING_API int chewing_handle_Del( Chew
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
if ( ! pgdata->bSelect ) {
|
|
|
|
if ( ! pgdata->bSelect ) {
|
|
|
@ -149,7 +220,7 @@ diff -up ./src/chewingio.c.phraseChoiceRearward ./src/chewingio.c
|
|
|
|
NONDECREASE_CURSOR );
|
|
|
|
NONDECREASE_CURSOR );
|
|
|
|
}
|
|
|
|
}
|
|
|
|
CallPhrasing( pgdata );
|
|
|
|
CallPhrasing( pgdata );
|
|
|
|
@@ -696,7 +697,7 @@ CHEWING_API int chewing_handle_Backspace
|
|
|
|
@@ -696,7 +715,7 @@ CHEWING_API int chewing_handle_Backspace
|
|
|
|
}
|
|
|
|
}
|
|
|
|
else if ( pgdata->chiSymbolCursor > 0 ) {
|
|
|
|
else if ( pgdata->chiSymbolCursor > 0 ) {
|
|
|
|
ChewingKillChar(
|
|
|
|
ChewingKillChar(
|
|
|
@ -158,7 +229,7 @@ diff -up ./src/chewingio.c.phraseChoiceRearward ./src/chewingio.c
|
|
|
|
pgdata->chiSymbolCursor - 1,
|
|
|
|
pgdata->chiSymbolCursor - 1,
|
|
|
|
DECREASE_CURSOR );
|
|
|
|
DECREASE_CURSOR );
|
|
|
|
}
|
|
|
|
}
|
|
|
|
@@ -735,11 +736,12 @@ CHEWING_API int chewing_handle_Up( Chewi
|
|
|
|
@@ -735,7 +754,7 @@ CHEWING_API int chewing_handle_Up( Chewi
|
|
|
|
|
|
|
|
|
|
|
|
CHEWING_API int chewing_handle_Down( ChewingContext *ctx )
|
|
|
|
CHEWING_API int chewing_handle_Down( ChewingContext *ctx )
|
|
|
|
{
|
|
|
|
{
|
|
|
@ -167,12 +238,7 @@ diff -up ./src/chewingio.c.phraseChoiceRearward ./src/chewingio.c
|
|
|
|
ChewingOutput *pgo = ctx->output;
|
|
|
|
ChewingOutput *pgo = ctx->output;
|
|
|
|
int toSelect = 0;
|
|
|
|
int toSelect = 0;
|
|
|
|
int keystrokeRtn = KEYSTROKE_ABSORB;
|
|
|
|
int keystrokeRtn = KEYSTROKE_ABSORB;
|
|
|
|
int key_buf_cursor;
|
|
|
|
@@ -756,13 +775,22 @@ CHEWING_API int chewing_handle_Down( Che
|
|
|
|
+ static int cursor_orig=-1;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
CheckAndResetRange( pgdata );
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
@@ -756,13 +758,22 @@ CHEWING_API int chewing_handle_Down( Che
|
|
|
|
|
|
|
|
toSelect = 1;
|
|
|
|
toSelect = 1;
|
|
|
|
|
|
|
|
|
|
|
|
if ( toSelect ) {
|
|
|
|
if ( toSelect ) {
|
|
|
@ -197,7 +263,7 @@ diff -up ./src/chewingio.c.phraseChoiceRearward ./src/chewingio.c
|
|
|
|
else if ( pgdata->symbolKeyBuf[ key_buf_cursor ] ) {
|
|
|
|
else if ( pgdata->symbolKeyBuf[ key_buf_cursor ] ) {
|
|
|
|
/* Open Symbol Choice List */
|
|
|
|
/* Open Symbol Choice List */
|
|
|
|
if ( ! pgdata->choiceInfo.isSymbol )
|
|
|
|
if ( ! pgdata->choiceInfo.isSymbol )
|
|
|
|
@@ -782,11 +793,11 @@ CHEWING_API int chewing_handle_ShiftLeft
|
|
|
|
@@ -782,11 +810,11 @@ CHEWING_API int chewing_handle_ShiftLeft
|
|
|
|
|
|
|
|
|
|
|
|
if ( ! ChewingIsEntering( pgdata ) ) {
|
|
|
|
if ( ! ChewingIsEntering( pgdata ) ) {
|
|
|
|
keystrokeRtn = KEYSTROKE_IGNORE;
|
|
|
|
keystrokeRtn = KEYSTROKE_IGNORE;
|
|
|
@ -212,7 +278,7 @@ diff -up ./src/chewingio.c.phraseChoiceRearward ./src/chewingio.c
|
|
|
|
pgdata->chiSymbolCursor > 0 &&
|
|
|
|
pgdata->chiSymbolCursor > 0 &&
|
|
|
|
pgdata->PointEnd > -9 ) {
|
|
|
|
pgdata->PointEnd > -9 ) {
|
|
|
|
if ( pgdata->PointStart == -1 )
|
|
|
|
if ( pgdata->PointStart == -1 )
|
|
|
|
@@ -797,7 +808,7 @@ CHEWING_API int chewing_handle_ShiftLeft
|
|
|
|
@@ -797,7 +825,7 @@ CHEWING_API int chewing_handle_ShiftLeft
|
|
|
|
pgdata->PointEnd--;
|
|
|
|
pgdata->PointEnd--;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
if ( pgdata->PointEnd == 0 )
|
|
|
|
if ( pgdata->PointEnd == 0 )
|
|
|
@ -221,7 +287,7 @@ diff -up ./src/chewingio.c.phraseChoiceRearward ./src/chewingio.c
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
@@ -822,8 +833,8 @@ CHEWING_API int chewing_handle_Left( Che
|
|
|
|
@@ -822,8 +850,8 @@ CHEWING_API int chewing_handle_Left( Che
|
|
|
|
pgdata->choiceInfo.pageNo = pgdata->choiceInfo.nPage - 1;
|
|
|
|
pgdata->choiceInfo.pageNo = pgdata->choiceInfo.nPage - 1;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
else {
|
|
|
@ -232,7 +298,7 @@ diff -up ./src/chewingio.c.phraseChoiceRearward ./src/chewingio.c
|
|
|
|
pgdata->chiSymbolCursor > 0 ) {
|
|
|
|
pgdata->chiSymbolCursor > 0 ) {
|
|
|
|
CheckAndResetRange( pgdata );
|
|
|
|
CheckAndResetRange( pgdata );
|
|
|
|
pgdata->chiSymbolCursor--;
|
|
|
|
pgdata->chiSymbolCursor--;
|
|
|
|
@@ -842,13 +853,13 @@ CHEWING_API int chewing_handle_ShiftRigh
|
|
|
|
@@ -842,13 +870,13 @@ CHEWING_API int chewing_handle_ShiftRigh
|
|
|
|
|
|
|
|
|
|
|
|
if ( ! ChewingIsEntering( pgdata ) ) {
|
|
|
|
if ( ! ChewingIsEntering( pgdata ) ) {
|
|
|
|
keystrokeRtn = KEYSTROKE_IGNORE;
|
|
|
|
keystrokeRtn = KEYSTROKE_IGNORE;
|
|
|
@ -250,7 +316,7 @@ diff -up ./src/chewingio.c.phraseChoiceRearward ./src/chewingio.c
|
|
|
|
pgdata->PointEnd < 9 ) {
|
|
|
|
pgdata->PointEnd < 9 ) {
|
|
|
|
if ( pgdata->PointStart == -1 )
|
|
|
|
if ( pgdata->PointStart == -1 )
|
|
|
|
pgdata->PointStart = pgdata->chiSymbolCursor;
|
|
|
|
pgdata->PointStart = pgdata->chiSymbolCursor;
|
|
|
|
@@ -858,7 +869,7 @@ CHEWING_API int chewing_handle_ShiftRigh
|
|
|
|
@@ -858,7 +886,7 @@ CHEWING_API int chewing_handle_ShiftRigh
|
|
|
|
}
|
|
|
|
}
|
|
|
|
pgdata->chiSymbolCursor++;
|
|
|
|
pgdata->chiSymbolCursor++;
|
|
|
|
if ( pgdata->PointEnd == 0 )
|
|
|
|
if ( pgdata->PointEnd == 0 )
|
|
|
@ -259,7 +325,7 @@ diff -up ./src/chewingio.c.phraseChoiceRearward ./src/chewingio.c
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
@@ -883,9 +894,9 @@ CHEWING_API int chewing_handle_Right( Ch
|
|
|
|
@@ -883,9 +911,9 @@ CHEWING_API int chewing_handle_Right( Ch
|
|
|
|
pgdata->choiceInfo.pageNo = 0;
|
|
|
|
pgdata->choiceInfo.pageNo = 0;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
else {
|
|
|
@ -272,7 +338,7 @@ diff -up ./src/chewingio.c.phraseChoiceRearward ./src/chewingio.c
|
|
|
|
CheckAndResetRange( pgdata );
|
|
|
|
CheckAndResetRange( pgdata );
|
|
|
|
pgdata->chiSymbolCursor++;
|
|
|
|
pgdata->chiSymbolCursor++;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
@@ -974,11 +985,11 @@ CHEWING_API int chewing_handle_Home( Che
|
|
|
|
@@ -974,11 +1002,11 @@ CHEWING_API int chewing_handle_Home( Che
|
|
|
|
|
|
|
|
|
|
|
|
CheckAndResetRange( pgdata );
|
|
|
|
CheckAndResetRange( pgdata );
|
|
|
|
|
|
|
|
|
|
|
@ -287,7 +353,7 @@ diff -up ./src/chewingio.c.phraseChoiceRearward ./src/chewingio.c
|
|
|
|
}
|
|
|
|
}
|
|
|
|
MakeOutputWithRtn( pgo, pgdata, keystrokeRtn );
|
|
|
|
MakeOutputWithRtn( pgo, pgdata, keystrokeRtn );
|
|
|
|
return 0;
|
|
|
|
return 0;
|
|
|
|
@@ -993,12 +1004,12 @@ CHEWING_API int chewing_handle_End( Chew
|
|
|
|
@@ -993,12 +1021,12 @@ CHEWING_API int chewing_handle_End( Chew
|
|
|
|
CheckAndResetRange( pgdata );
|
|
|
|
CheckAndResetRange( pgdata );
|
|
|
|
|
|
|
|
|
|
|
|
if ( ! ChewingIsEntering( pgdata ) ) {
|
|
|
|
if ( ! ChewingIsEntering( pgdata ) ) {
|
|
|
@ -305,7 +371,7 @@ diff -up ./src/chewingio.c.phraseChoiceRearward ./src/chewingio.c
|
|
|
|
return 0;
|
|
|
|
return 0;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
@@ -1013,9 +1024,9 @@ CHEWING_API int chewing_handle_PageUp( C
|
|
|
|
@@ -1013,9 +1041,9 @@ CHEWING_API int chewing_handle_PageUp( C
|
|
|
|
if ( ! ChewingIsEntering( pgdata ) ) {
|
|
|
|
if ( ! ChewingIsEntering( pgdata ) ) {
|
|
|
|
keystrokeRtn = KEYSTROKE_IGNORE;
|
|
|
|
keystrokeRtn = KEYSTROKE_IGNORE;
|
|
|
|
}
|
|
|
|
}
|
|
|
@ -317,7 +383,7 @@ diff -up ./src/chewingio.c.phraseChoiceRearward ./src/chewingio.c
|
|
|
|
MakeOutputWithRtn( pgo, pgdata, keystrokeRtn );
|
|
|
|
MakeOutputWithRtn( pgo, pgdata, keystrokeRtn );
|
|
|
|
return 0;
|
|
|
|
return 0;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
@@ -1031,9 +1042,9 @@ CHEWING_API int chewing_handle_PageDown(
|
|
|
|
@@ -1031,9 +1059,9 @@ CHEWING_API int chewing_handle_PageDown(
|
|
|
|
if ( ! ChewingIsEntering( pgdata ) ) {
|
|
|
|
if ( ! ChewingIsEntering( pgdata ) ) {
|
|
|
|
keystrokeRtn = KEYSTROKE_IGNORE;
|
|
|
|
keystrokeRtn = KEYSTROKE_IGNORE;
|
|
|
|
}
|
|
|
|
}
|
|
|
@ -329,7 +395,7 @@ diff -up ./src/chewingio.c.phraseChoiceRearward ./src/chewingio.c
|
|
|
|
MakeOutputWithRtn( pgo, pgdata, keystrokeRtn );
|
|
|
|
MakeOutputWithRtn( pgo, pgdata, keystrokeRtn );
|
|
|
|
return 0;
|
|
|
|
return 0;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
@@ -1107,7 +1118,7 @@ CHEWING_API int chewing_handle_Default(
|
|
|
|
@@ -1107,7 +1135,7 @@ CHEWING_API int chewing_handle_Default(
|
|
|
|
DoSelect( pgdata, num );
|
|
|
|
DoSelect( pgdata, num );
|
|
|
|
goto End_keyproc;
|
|
|
|
goto End_keyproc;
|
|
|
|
}
|
|
|
|
}
|
|
|
@ -338,7 +404,7 @@ diff -up ./src/chewingio.c.phraseChoiceRearward ./src/chewingio.c
|
|
|
|
/* Otherwise, use 'j' and 'k' for paging in selection mode */
|
|
|
|
/* Otherwise, use 'j' and 'k' for paging in selection mode */
|
|
|
|
DEBUG_OUT(
|
|
|
|
DEBUG_OUT(
|
|
|
|
"\t\tchecking paging key, got '%c'\n",
|
|
|
|
"\t\tchecking paging key, got '%c'\n",
|
|
|
|
@@ -1163,10 +1174,10 @@ CHEWING_API int chewing_handle_Default(
|
|
|
|
@@ -1163,10 +1191,10 @@ CHEWING_API int chewing_handle_Default(
|
|
|
|
rtn = ZuinPhoInput( &( pgdata->zuinData ), key );
|
|
|
|
rtn = ZuinPhoInput( &( pgdata->zuinData ), key );
|
|
|
|
DEBUG_OUT(
|
|
|
|
DEBUG_OUT(
|
|
|
|
"\t\tChinese mode key, "
|
|
|
|
"\t\tChinese mode key, "
|
|
|
@ -351,7 +417,7 @@ diff -up ./src/chewingio.c.phraseChoiceRearward ./src/chewingio.c
|
|
|
|
if ( rtn == ZUIN_KEY_ERROR )
|
|
|
|
if ( rtn == ZUIN_KEY_ERROR )
|
|
|
|
rtn = SpecialSymbolInput( key, pgdata );
|
|
|
|
rtn = SpecialSymbolInput( key, pgdata );
|
|
|
|
switch ( rtn ) {
|
|
|
|
switch ( rtn ) {
|
|
|
|
@@ -1182,14 +1193,14 @@ CHEWING_API int chewing_handle_Default(
|
|
|
|
@@ -1182,14 +1210,14 @@ CHEWING_API int chewing_handle_Default(
|
|
|
|
case ZUIN_KEY_ERROR:
|
|
|
|
case ZUIN_KEY_ERROR:
|
|
|
|
case ZUIN_IGNORE:
|
|
|
|
case ZUIN_IGNORE:
|
|
|
|
DEBUG_OUT(
|
|
|
|
DEBUG_OUT(
|
|
|
@ -369,7 +435,7 @@ diff -up ./src/chewingio.c.phraseChoiceRearward ./src/chewingio.c
|
|
|
|
key );
|
|
|
|
key );
|
|
|
|
|
|
|
|
|
|
|
|
/* see if buffer contains nothing */
|
|
|
|
/* see if buffer contains nothing */
|
|
|
|
@@ -1207,7 +1218,7 @@ CHEWING_API int chewing_handle_Default(
|
|
|
|
@@ -1207,7 +1235,7 @@ CHEWING_API int chewing_handle_Default(
|
|
|
|
if ( rtn == SYMBOL_KEY_ERROR ) {
|
|
|
|
if ( rtn == SYMBOL_KEY_ERROR ) {
|
|
|
|
keystrokeRtn = KEYSTROKE_IGNORE;
|
|
|
|
keystrokeRtn = KEYSTROKE_IGNORE;
|
|
|
|
/*
|
|
|
|
/*
|
|
|
@ -378,7 +444,7 @@ diff -up ./src/chewingio.c.phraseChoiceRearward ./src/chewingio.c
|
|
|
|
* then it's wrong to commit it.
|
|
|
|
* then it's wrong to commit it.
|
|
|
|
*/
|
|
|
|
*/
|
|
|
|
bQuickCommit = 0;
|
|
|
|
bQuickCommit = 0;
|
|
|
|
@@ -1248,9 +1259,9 @@ End_keyproc:
|
|
|
|
@@ -1248,9 +1276,9 @@ End_keyproc:
|
|
|
|
/* Quick commit */
|
|
|
|
/* Quick commit */
|
|
|
|
else {
|
|
|
|
else {
|
|
|
|
DEBUG_OUT(
|
|
|
|
DEBUG_OUT(
|
|
|
@ -390,7 +456,7 @@ diff -up ./src/chewingio.c.phraseChoiceRearward ./src/chewingio.c
|
|
|
|
pgo->nCommitStr = 1;
|
|
|
|
pgo->nCommitStr = 1;
|
|
|
|
pgdata->chiSymbolBufLen = 0;
|
|
|
|
pgdata->chiSymbolBufLen = 0;
|
|
|
|
pgdata->chiSymbolCursor = 0;
|
|
|
|
pgdata->chiSymbolCursor = 0;
|
|
|
|
@@ -1309,12 +1320,12 @@ CHEWING_API int chewing_handle_CtrlNum(
|
|
|
|
@@ -1309,12 +1337,12 @@ CHEWING_API int chewing_handle_CtrlNum(
|
|
|
|
|
|
|
|
|
|
|
|
cursor = PhoneSeqCursor( pgdata );
|
|
|
|
cursor = PhoneSeqCursor( pgdata );
|
|
|
|
if ( ! pgdata->config.bAddPhraseForward ) {
|
|
|
|
if ( ! pgdata->config.bAddPhraseForward ) {
|
|
|
@ -408,7 +474,7 @@ diff -up ./src/chewingio.c.phraseChoiceRearward ./src/chewingio.c
|
|
|
|
cursor + newPhraseLen - 1 ) ) {
|
|
|
|
cursor + newPhraseLen - 1 ) ) {
|
|
|
|
/* Manually add phrase to the user phrase database. */
|
|
|
|
/* Manually add phrase to the user phrase database. */
|
|
|
|
memcpy( addPhoneSeq,
|
|
|
|
memcpy( addPhoneSeq,
|
|
|
|
@@ -1328,10 +1339,10 @@ CHEWING_API int chewing_handle_CtrlNum(
|
|
|
|
@@ -1328,10 +1356,10 @@ CHEWING_API int chewing_handle_CtrlNum(
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
phraseState = UserUpdatePhrase( addPhoneSeq, addWordSeq );
|
|
|
|
phraseState = UserUpdatePhrase( addPhoneSeq, addWordSeq );
|
|
|
@ -423,7 +489,7 @@ diff -up ./src/chewingio.c.phraseChoiceRearward ./src/chewingio.c
|
|
|
|
phraseState );
|
|
|
|
phraseState );
|
|
|
|
|
|
|
|
|
|
|
|
/* Clear the breakpoint between the New Phrase */
|
|
|
|
/* Clear the breakpoint between the New Phrase */
|
|
|
|
@@ -1341,11 +1352,11 @@ CHEWING_API int chewing_handle_CtrlNum(
|
|
|
|
@@ -1341,11 +1369,11 @@ CHEWING_API int chewing_handle_CtrlNum(
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
else {
|
|
|
@ -439,7 +505,7 @@ diff -up ./src/chewingio.c.phraseChoiceRearward ./src/chewingio.c
|
|
|
|
cursor - newPhraseLen ) ) {
|
|
|
|
cursor - newPhraseLen ) ) {
|
|
|
|
/* Manually add phrase to the user phrase database. */
|
|
|
|
/* Manually add phrase to the user phrase database. */
|
|
|
|
memcpy( addPhoneSeq,
|
|
|
|
memcpy( addPhoneSeq,
|
|
|
|
@@ -1358,10 +1369,10 @@ CHEWING_API int chewing_handle_CtrlNum(
|
|
|
|
@@ -1358,10 +1386,10 @@ CHEWING_API int chewing_handle_CtrlNum(
|
|
|
|
newPhraseLen, 1);
|
|
|
|
newPhraseLen, 1);
|
|
|
|
|
|
|
|
|
|
|
|
phraseState = UserUpdatePhrase( addPhoneSeq, addWordSeq );
|
|
|
|
phraseState = UserUpdatePhrase( addPhoneSeq, addWordSeq );
|
|
|
@ -454,7 +520,7 @@ diff -up ./src/chewingio.c.phraseChoiceRearward ./src/chewingio.c
|
|
|
|
phraseState );
|
|
|
|
phraseState );
|
|
|
|
|
|
|
|
|
|
|
|
/* Clear the breakpoint between the New Phrase */
|
|
|
|
/* Clear the breakpoint between the New Phrase */
|
|
|
|
@@ -1414,10 +1425,10 @@ CHEWING_API int chewing_handle_Numlock(
|
|
|
|
@@ -1414,10 +1442,10 @@ CHEWING_API int chewing_handle_Numlock(
|
|
|
|
ChewingOutput *pgo = ctx->output;
|
|
|
|
ChewingOutput *pgo = ctx->output;
|
|
|
|
int rtn, QuickCommit = 0;
|
|
|
|
int rtn, QuickCommit = 0;
|
|
|
|
int keystrokeRtn = KEYSTROKE_ABSORB;
|
|
|
|
int keystrokeRtn = KEYSTROKE_ABSORB;
|
|
|
@ -467,7 +533,7 @@ diff -up ./src/chewingio.c.phraseChoiceRearward ./src/chewingio.c
|
|
|
|
*/
|
|
|
|
*/
|
|
|
|
if ( pgdata->chiSymbolBufLen == 0 ) {
|
|
|
|
if ( pgdata->chiSymbolBufLen == 0 ) {
|
|
|
|
QuickCommit = 1;
|
|
|
|
QuickCommit = 1;
|
|
|
|
@@ -1428,7 +1439,7 @@ CHEWING_API int chewing_handle_Numlock(
|
|
|
|
@@ -1428,7 +1456,7 @@ CHEWING_API int chewing_handle_Numlock(
|
|
|
|
keystrokeRtn = KEYSTROKE_IGNORE ;
|
|
|
|
keystrokeRtn = KEYSTROKE_IGNORE ;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
else if ( QuickCommit ) {
|
|
|
|
else if ( QuickCommit ) {
|
|
|
@ -476,7 +542,7 @@ diff -up ./src/chewingio.c.phraseChoiceRearward ./src/chewingio.c
|
|
|
|
pgo->nCommitStr = 1;
|
|
|
|
pgo->nCommitStr = 1;
|
|
|
|
pgdata->chiSymbolBufLen = 0;
|
|
|
|
pgdata->chiSymbolBufLen = 0;
|
|
|
|
pgdata->chiSymbolCursor = 0;
|
|
|
|
pgdata->chiSymbolCursor = 0;
|
|
|
|
@@ -1443,7 +1454,7 @@ CHEWING_API int chewing_handle_Numlock(
|
|
|
|
@@ -1443,7 +1471,7 @@ CHEWING_API int chewing_handle_Numlock(
|
|
|
|
else {
|
|
|
|
else {
|
|
|
|
/* Otherwise, if we are selecting words, we use numeric keys
|
|
|
|
/* Otherwise, if we are selecting words, we use numeric keys
|
|
|
|
* as selkey
|
|
|
|
* as selkey
|
|
|
@ -487,7 +553,7 @@ diff -up ./src/chewingio.c.phraseChoiceRearward ./src/chewingio.c
|
|
|
|
if ( key > '0' && key < '9' )
|
|
|
|
if ( key > '0' && key < '9' )
|
|
|
|
diff -up ./src/choice.c.phraseChoiceRearward ./src/choice.c
|
|
|
|
diff -up ./src/choice.c.phraseChoiceRearward ./src/choice.c
|
|
|
|
--- ./src/choice.c.phraseChoiceRearward 2008-12-02 00:29:20.000000000 +1000
|
|
|
|
--- ./src/choice.c.phraseChoiceRearward 2008-12-02 00:29:20.000000000 +1000
|
|
|
|
+++ ./src/choice.c 2009-07-31 17:16:57.000000000 +1000
|
|
|
|
+++ ./src/choice.c 2009-08-03 14:35:28.000000000 +1000
|
|
|
|
@@ -71,22 +71,44 @@ static void ChangeSelectIntervalAndBreak
|
|
|
|
@@ -71,22 +71,44 @@ static void ChangeSelectIntervalAndBreak
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|