Author: ekato
Date: Fri Feb 25 20:50:58 2005
New Revision: 727

Modified:
   trunk/scm/skk.scm

Log:
* scm/skk.scm (skk-change-candidate-index) : Fix potential crash
  and its behavior when pressing skk-prev-candidate-key? just
  after starting conversion.


Modified: trunk/scm/skk.scm
==============================================================================
--- trunk/scm/skk.scm   (original)
+++ trunk/scm/skk.scm   Fri Feb 25 20:50:58 2005
@@ -1225,33 +1225,48 @@
 (define skk-change-candidate-index
   (lambda (sc incr)
     (let ((head (skk-context-head sc)))
-      (if incr
-         (begin
-           (skk-context-set-nth! sc
-                                 (+ 1 (skk-context-nth sc)))
-           (skk-context-set-candidate-op-count!
-            sc
-            (+ 1 (skk-context-candidate-op-count sc))))
-         (begin
-           (if (> (skk-context-nth sc) 0)
-               (skk-context-set-nth! sc (- (skk-context-nth sc) 1))
-               (skk-context-set-nth!
-                sc
-                (- (skk-context-nr-candidates sc) 1)))))
-      (if (null? (skk-get-current-candidate sc))
-         (begin
-           (skk-context-set-nth! sc 0)
-           (if skk-use-recursive-learning?
-               (begin
-                 (skk-reset-candidate-window sc)
-                 (skk-setup-child-context sc)))))
-      (if (null? (skk-context-child-context sc))
-         (begin
-           ;; ����Window��ɽ���򳫻Ϥ��뤫
-           (skk-check-candidate-window-begin sc)
-           ;;
-           (if (skk-context-candidate-window sc)
-               (im-select-candidate sc (skk-context-nth sc)))))
+      (and
+       (if incr
+          (begin
+            (skk-context-set-nth! sc
+                                  (+ 1 (skk-context-nth sc)))
+            (skk-context-set-candidate-op-count!
+             sc
+             (+ 1 (skk-context-candidate-op-count sc)))
+            #t)
+          (begin
+            (if (> (skk-context-nth sc) 0)
+                (begin
+                  (skk-context-set-nth! sc (- (skk-context-nth sc) 1))
+                  #t)
+                (begin
+                  (if (= (skk-context-nr-candidates sc) 0)
+                      (begin
+                        (skk-back-to-kanji-state sc)
+                        #f)
+                      (begin
+                        (skk-context-set-nth!
+                         sc
+                         (- (skk-context-nr-candidates sc) 1))
+                        #t))))))
+       (if (null? (skk-get-current-candidate sc))
+          (begin
+            (skk-context-set-nth! sc 0)
+            (if skk-use-recursive-learning?
+                (begin
+                  (skk-reset-candidate-window sc)
+                  (skk-setup-child-context sc)))
+            #t)
+          #t)
+       (if (null? (skk-context-child-context sc))
+          (begin
+            ;; ����Window��ɽ���򳫻Ϥ��뤫
+            (skk-check-candidate-window-begin sc)
+            ;;
+            (if (skk-context-candidate-window sc)
+                (im-select-candidate sc (skk-context-nth sc)))
+            #t)
+          #t))
       #f)))
 
 (define skk-reset-candidate-window

Reply via email to