To: vim-dev@vim.org Subject: Patch 6.1.011 Fcc: outbox From: Bram Moolenaar MIME-Version: 1.0 Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 8bit ------------ Patch 6.1.011 Problem: XIM: doesn't work correctly when 'number' is set. Also, a focus problem when selecting candidates. Solution: Fix the XIM problems. (Yasuhiro Matsumoto) Files: src/mbyte.c, src/screen.c *** ../vim61.010/src/mbyte.c Sat Mar 30 17:15:14 2002 --- src/mbyte.c Fri Apr 5 21:26:15 2002 *************** *** 3728,3734 **** { event_queue = key_press_event_queue; processing_queued_event = TRUE; ! while (event_queue != NULL) { GdkEvent *ev = event_queue->data; --- 3728,3734 ---- { event_queue = key_press_event_queue; processing_queued_event = TRUE; ! while (event_queue != NULL && processing_queued_event) { GdkEvent *ev = event_queue->data; *************** *** 3790,3797 **** int xim_queue_key_press_event(GdkEvent *ev) { ! if (preedit_buf_len <= 0 || processing_queued_event) return FALSE; key_press_event_queue = g_slist_append(key_press_event_queue, gdk_event_copy(ev)); --- 3790,3799 ---- int xim_queue_key_press_event(GdkEvent *ev) { ! if (preedit_buf_len <= 0) return FALSE; + if (processing_queued_event) + processing_queued_event = FALSE; key_press_event_queue = g_slist_append(key_press_event_queue, gdk_event_copy(ev)); *** ../vim61.010/src/screen.c Sat Mar 30 17:11:06 2002 --- src/screen.c Mon Apr 8 19:50:11 2002 *************** *** 2418,2423 **** --- 2418,2427 ---- #endif #define WL_LINE WL_SBR + 1 /* text in the line */ int draw_state = WL_START; /* what to draw next */ + #if defined(FEAT_XIM) && defined(FEAT_GUI_GTK) + int feedback_col = 0; + int feedback_old_attr = -1; + #endif if (startrow > endrow) /* past the end already! */ *************** *** 3500,3539 **** && State == INSERT && im_get_status() && !p_imdisable ! && preedit_start_col != MAXCOL) { colnr_T tcol; - static int bcol = 0; - static int old_attr = -1; getvcol(curwin, &(curwin->w_cursor), &tcol, NULL, NULL); if ((long)preedit_start_col <= vcol && vcol < (long)tcol) { ! if (old_attr == -1) { ! bcol = 0; ! old_attr = char_attr; } if (draw_feedback != NULL) { ! if (draw_feedback[bcol] & XIMReverse) char_attr = HL_INVERSE; ! else if (draw_feedback[bcol] & XIMUnderline) char_attr = HL_UNDERLINE; else char_attr = hl_attr(HLF_V); } else ! char_attr = old_attr; ! bcol++; } else { ! if (old_attr >= 0) { ! char_attr = old_attr; ! old_attr = -1; ! bcol = 0; } } } --- 3505,3543 ---- && State == INSERT && im_get_status() && !p_imdisable ! && preedit_start_col != MAXCOL ! && draw_state == WL_LINE) { colnr_T tcol; getvcol(curwin, &(curwin->w_cursor), &tcol, NULL, NULL); if ((long)preedit_start_col <= vcol && vcol < (long)tcol) { ! if (feedback_old_attr == -1) { ! feedback_col = 0; ! feedback_old_attr = char_attr; } if (draw_feedback != NULL) { ! if (draw_feedback[feedback_col] & XIMReverse) char_attr = HL_INVERSE; ! else if (draw_feedback[feedback_col] & XIMUnderline) char_attr = HL_UNDERLINE; else char_attr = hl_attr(HLF_V); } else ! char_attr = feedback_old_attr; ! feedback_col++; } else { ! if (feedback_old_attr >= 0) { ! char_attr = feedback_old_attr; ! feedback_old_attr = -1; ! feedback_col = 0; } } } *** ../vim61.010/src/version.c Mon Apr 8 22:11:31 2002 --- src/version.c Mon Apr 8 22:13:14 2002 *************** *** 608,609 **** --- 608,611 ---- { /* Add new patch number below this line */ + /**/ + 11, /**/ -- hundred-and-one symptoms of being an internet addict: 94. Now admit it... How many of you have made "modem noises" into the phone just to see if it was possible? :-) /// Bram Moolenaar -- Bram@moolenaar.net -- http://www.moolenaar.net \\\ /// Creator of Vim -- http://vim.sf.net -- ftp://ftp.vim.org/pub/vim \\\ \\\ Project leader for A-A-P -- http://www.a-a-p.org /// \\\ Help me helping AIDS orphans in Uganda - http://iccf-holland.org ///