Changeset 3868

Show
Ignore:
Timestamp:
2005年09月14日 19時52分51秒 (3 years ago)
Author:
horiguti
Message:

* mw32fns.c (mw32_WndProc<WM_EMACS_SETCARET>): Bug fix. Cope with
sudden switch of frame without WM_KILLFOCUS and occalsional
failure of ShowCaret? ().
Fixed ticket:151

* mw32term.h (TOBESHOWN_CARET): Ditto, New symbol.

* mw32ime.c: Fix type of return values.

Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • trunk/src/ChangeLog.Meadow

    r3863 r3868  
     12005-09-14  Kyotaro HORIGUCHI  <horiguti@meadowy.org> 
     2 
     3        * mw32fns.c (mw32_WndProc<WM_EMACS_SETCARET>): Bug fix. Cope with 
     4        sudden switch of frame without WM_KILLFOCUS and occalsional 
     5        failure of ShowCaret (). 
     6        Fixed ticket:151 
     7 
     8        * mw32term.h (TOBESHOWN_CARET): Ditto, New symbol. 
     9 
     10        * mw32ime.c: Fix type of return values. 
     11 
    1122005-09-10  MIYOSHI Masanori  <miyoshi@meadowy.org> 
    213 
  • trunk/src/mw32fns.c

    r3816 r3868  
    23242324      static int last_cursor_width; 
    23252325      static int last_cursor_height; 
     2326      static struct frame *last_cursor_frame = NULL; 
    23262327      static HBITMAP last_bitmap; 
    23272328      struct window *w = XWINDOW (f->selected_window); 
    23282329      int count; 
    23292330      int caret_spec_changed = 0; 
     2331 
     2332      if (last_cursor_frame 
     2333          && last_cursor_frame != f 
     2334          && MW32_FRAME_CARET_STATE2 (last_cursor_frame) != NO_CARET) 
     2335        { 
     2336          /* Destroy caret in previous frame on sudden switch of 
     2337             message frame. */ 
     2338          DestroyCaret (); 
     2339          MW32_FRAME_CARET_STATE (last_cursor_frame) = NO_CARET; 
     2340        } 
     2341      last_cursor_frame = f; 
    23302342 
    23312343      if (last_phys_cursor_height != w->phys_cursor_height 
     
    23402352        w = XWINDOW (echo_area_window); 
    23412353 
    2342       if (f != FRAME_MW32_DISPLAY_INFO (f)->mw32_focus_frame || 
    2343           ! w->phys_cursor_on_p) 
     2354      /* Force to hide when defocused */ 
     2355      if (MW32_FRAME_CARET_STATE (f) != NO_CARET && 
     2356          (f != FRAME_MW32_DISPLAY_INFO (f)->mw32_focus_frame || 
     2357           ! w->phys_cursor_on_p )) 
    23442358        { 
    23452359          if (MW32_FRAME_CARET_BLOCKED (f) && wParam == UNBLOCK_CARET) 
     
    23512365      if (wParam == BLOCK_CARET) 
    23522366        { 
    2353           MW32_FRAME_CARET_BLOCKED (f) = 1; 
    2354           if (MW32_FRAME_CARET_SHOWN (f)) HideCaret (hwnd); 
     2367          MW32_FRAME_CARET_BLOCKED (f) = TRUE; 
     2368 
     2369          if (MW32_FRAME_CARET_STATE (f) == SHOWN_CARET) 
     2370            HideCaret (hwnd); 
     2371          else if (MW32_FRAME_CARET_STATE (f) == TOBESHOWN_CARET) 
     2372            MW32_FRAME_CARET_STATE (f) = SHOWN_CARET; 
     2373           
    23552374          break; 
    23562375        } 
     
    23582377      if (wParam == UNBLOCK_CARET) 
    23592378        { 
    2360           MW32_FRAME_CARET_BLOCKED (f) = 0; 
    2361           if (MW32_FRAME_CARET_SHOWN (f)) ShowCaret (hwnd); 
     2379          MW32_FRAME_CARET_BLOCKED (f) = FALSE; 
     2380 
     2381          if (MW32_FRAME_CARET_SHOWN (f) 
     2382              || MW32_FRAME_CARET_STATE (f) == TOBESHOWN_CARET) 
     2383            { 
     2384              if (ShowCaret (hwnd) == 0) 
     2385                MW32_FRAME_CARET_STATE (f) = TOBESHOWN_CARET; 
     2386              else 
     2387                MW32_FRAME_CARET_STATE (f) = SHOWN_CARET; 
     2388            } 
    23622389          break; 
    23632390        } 
     
    23892416                           caret_height); 
    23902417              MW32_FRAME_CARET_STATE (f) = HIDDEN_CARET; 
    2391               MW32_FRAME_CARET_BLOCKED (f) = 0
     2418              MW32_FRAME_CARET_BLOCKED (f) = FALSE
    23922419              last_phys_cursor_height = w->phys_cursor_height; 
    23932420              last_cursor_width = FRAME_CURSOR_WIDTH (f); 
     
    23992426 
    24002427          if (MW32_FRAME_CARET_SHOWN (f)) break; 
    2401           if (!MW32_FRAME_CARET_BLOCKED (f)) ShowCaret (hwnd); 
    2402  
    24032428          MW32_FRAME_CARET_STATE (f) = SHOWN_CARET; 
     2429          if (! MW32_FRAME_CARET_BLOCKED (f)) 
     2430            { 
     2431              if (ShowCaret (hwnd) == 0) 
     2432                MW32_FRAME_CARET_STATE (f) = TOBESHOWN_CARET; 
     2433            } 
     2434           
    24042435        } 
    24052436      else 
    24062437        { 
    2407           if (! MW32_FRAME_CARET_SHOWN (f)) break; 
    2408           if (! MW32_FRAME_CARET_BLOCKED (f)) HideCaret (hwnd); 
    2409  
    2410           MW32_FRAME_CARET_STATE (f) = HIDDEN_CARET; 
     2438          if (MW32_FRAME_CARET_SHOWN (f)) 
     2439            { 
     2440              if (! MW32_FRAME_CARET_BLOCKED (f)) HideCaret (hwnd); 
     2441              MW32_FRAME_CARET_STATE (f) = HIDDEN_CARET; 
     2442            } 
    24112443        } 
    24122444    } 
  • trunk/src/mw32ime.c

    r3801 r3868  
    109109     (HIMC, DWORD, LPVOID, DWORD); 
    110110IMMGETCOMPOSITIONSTRINGPROC ImmGetCompositionStringProc; 
    111 typedef LONG (WINAPI *IMMSETCOMPOSITIONSTRINGPROC) 
     111typedef BOOL (WINAPI *IMMSETCOMPOSITIONSTRINGPROC) 
    112112     (HIMC, DWORD, LPCVOID, DWORD, LPCVOID, DWORD); 
    113113IMMSETCOMPOSITIONSTRINGPROC ImmSetCompositionStringProc; 
     
    120120typedef BOOL (WINAPI *IMMSETCONVERSIONSTATUSPROC)(HIMC, DWORD, DWORD); 
    121121IMMSETCONVERSIONSTATUSPROC ImmSetConversionStatusProc; 
    122 typedef BOOL (WINAPI *IMMGETCONVERSIONLISTPROC) 
     122typedef DWORD (WINAPI *IMMGETCONVERSIONLISTPROC) 
    123123     (HKL, HIMC, LPCTSTR, LPCANDIDATELIST, DWORD, UINT); 
    124124IMMGETCONVERSIONLISTPROC ImmGetConversionListProc; 
     
    133133typedef BOOL (WINAPI *IMMDESTROYCONTEXTPROC)(HIMC); 
    134134IMMDESTROYCONTEXTPROC ImmDestroyContextProc; 
    135 typedef BOOL (WINAPI *IMMASSOCIATECONTEXTPROC) (HWND, HIMC); 
     135typedef HIMC (WINAPI *IMMASSOCIATECONTEXTPROC) (HWND, HIMC); 
    136136IMMASSOCIATECONTEXTPROC ImmAssociateContextProc; 
    137 typedef BOOL (WINAPI *IMMGETCANDIDATELISTPROC) 
     137typedef DWORD (WINAPI *IMMGETCANDIDATELISTPROC) 
    138138(HIMC, DWORD, LPCANDIDATELIST, DWORD); 
    139139IMMGETCANDIDATELISTPROC ImmGetCandidateListProc; 
    140 typedef BOOL (WINAPI *IMMGETCANDIDATELISTCOUNTPROC) (HIMC, LPDWORD); 
     140typedef DWORD (WINAPI *IMMGETCANDIDATELISTCOUNTPROC) (HIMC, LPDWORD); 
    141141IMMGETCANDIDATELISTCOUNTPROC ImmGetCandidateListCountProc; 
    142 typedef BOOL (WINAPI *IMMGETHOTKEYPROC)(DWORD , LPUINT, LPUINT, LPHKL); 
     142typedef DWORD (WINAPI *IMMGETHOTKEYPROC)(DWORD , LPUINT, LPUINT, LPHKL); 
    143143IMMGETHOTKEYPROC ImmGetHotKeyProc; 
    144144 
     
    540540    return agent[XFASTINT (context)].himc; 
    541541  else 
    542     return ((((unsigned long) (XCONS (context)->car)) << 16) | 
    543             (((unsigned long) (XCONS (context)->cdr)) & 0xffff)); 
     542    return ((HIMC)((((unsigned long) (XCONS (context)->car)) << 16) | 
     543                  (((unsigned long) (XCONS (context)->cdr)) & 0xffff))); 
    544544} 
    545545 
     
    555555      himc = (ImmCreateContextProc) (); 
    556556      holdimc = (ImmAssociateContextProc) (hwnd, himc); 
    557       SetWindowLong (hwnd, 0, himc); 
    558       SetWindowLong (hwnd, 4, holdimc); 
     557      SetWindowLong (hwnd, 0, (LONG)himc); 
     558      SetWindowLong (hwnd, 4, (LONG)holdimc); 
    559559      break; 
    560560 
    561561    case WM_DESTROY: 
    562       holdimc = GetWindowLong (hwnd, 4); 
     562      holdimc = (HIMC)GetWindowLong (hwnd, 4); 
    563563      himc = (ImmAssociateContextProc) (hwnd, holdimc); 
    564564      (ImmDestroyContextProc) (himc); 
     
    10911091  hwnd = (HWND) msg.wParam; 
    10921092  agent[i].hwnd = hwnd; 
    1093   agent[i].himc = GetWindowLong (hwnd, 0); 
     1093  agent[i].himc = (HIMC)GetWindowLong (hwnd, 0); 
    10941094 
    10951095  /*  ShowWindow (hwnd, SW_SHOW); */ 
  • trunk/src/mw32term.h

    r3801 r3868  
    4343  BLOCK_CARET,          /* (NOT STATUS) lock caret to be hidden */ 
    4444  HIDDEN_CARET,         /* system caret is not shown */ 
     45  TOBESHOWN_CARET,      /* system caret is not shown but to be shown */ 
    4546  SHOWN_CARET,          /* system caret is sohwn */ 
    4647  UNBLOCK_CARET         /* (NOT STATUS) unlock blocked state of caret  */