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