emacs-diffs
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Emacs-diffs] Changes to emacs/src/w32fns.c


From: Jason Rumney
Subject: [Emacs-diffs] Changes to emacs/src/w32fns.c
Date: Sun, 20 Jan 2002 18:13:29 -0500

Index: emacs/src/w32fns.c
diff -c emacs/src/w32fns.c:1.149 emacs/src/w32fns.c:1.150
*** emacs/src/w32fns.c:1.149    Sun Jan 20 09:57:54 2002
--- emacs/src/w32fns.c  Sun Jan 20 18:13:29 2002
***************
*** 315,324 ****
  extern Lisp_Object Vw32_recognize_altgr;
  
  extern HWND w32_system_caret_hwnd;
! extern int w32_system_caret_width;
  extern int w32_system_caret_height;
  extern int w32_system_caret_x;
  extern int w32_system_caret_y;
  
  
  /* Error if we are not connected to MS-Windows.  */
--- 315,327 ----
  extern Lisp_Object Vw32_recognize_altgr;
  
  extern HWND w32_system_caret_hwnd;
! 
  extern int w32_system_caret_height;
  extern int w32_system_caret_x;
  extern int w32_system_caret_y;
+ extern int w32_use_visible_system_caret;
+ 
+ HWND w32_visible_system_caret_hwnd;
  
  
  /* Error if we are not connected to MS-Windows.  */
***************
*** 4878,4883 ****
--- 4881,4887 ----
        {
          DestroyCaret ();
          w32_system_caret_hwnd = NULL;
+         w32_visible_system_caret_hwnd = NULL;
        }
      case WM_MOVE:
      case WM_SIZE:
***************
*** 5023,5041 ****
        DragAcceptFiles ((HWND) wParam, FALSE);
        return DestroyWindow ((HWND) wParam);
  
      case WM_EMACS_DESTROY_CARET:
        w32_system_caret_hwnd = NULL;
        return DestroyCaret ();
  
      case WM_EMACS_TRACK_CARET:
        /* If there is currently no system caret, create one.  */
        if (w32_system_caret_hwnd == NULL)
        {
          w32_system_caret_hwnd = hwnd;
!         CreateCaret (hwnd, NULL, w32_system_caret_width,
                       w32_system_caret_height);
        }
!       return SetCaretPos (w32_system_caret_x, w32_system_caret_y);
  
      case WM_EMACS_TRACKPOPUPMENU:
        {
--- 5027,5072 ----
        DragAcceptFiles ((HWND) wParam, FALSE);
        return DestroyWindow ((HWND) wParam);
  
+     case WM_EMACS_HIDE_CARET:
+       return HideCaret (hwnd);
+ 
+     case WM_EMACS_SHOW_CARET:
+       return ShowCaret (hwnd);
+ 
      case WM_EMACS_DESTROY_CARET:
        w32_system_caret_hwnd = NULL;
+       w32_visible_system_caret_hwnd = NULL;
        return DestroyCaret ();
  
      case WM_EMACS_TRACK_CARET:
        /* If there is currently no system caret, create one.  */
        if (w32_system_caret_hwnd == NULL)
        {
+         /* Use the default caret width, and avoid changing it
+            unneccesarily, as it confuses screen reader software.  */
          w32_system_caret_hwnd = hwnd;
!         CreateCaret (hwnd, NULL, 0,
                       w32_system_caret_height);
        }
!       
!       if (!SetCaretPos (w32_system_caret_x, w32_system_caret_y))
!       return 0;
!       /* Ensure visible caret gets turned on when requested.  */
!       else if (w32_use_visible_system_caret
!              && w32_visible_system_caret_hwnd != hwnd)
!       {
!         w32_visible_system_caret_hwnd = hwnd;
!         return ShowCaret (hwnd);
!       }
!       /* Ensure visible caret gets turned off when requested.  */
!       else if (!w32_use_visible_system_caret
!              && w32_visible_system_caret_hwnd)
!       {
!         w32_visible_system_caret_hwnd = NULL;
!         return HideCaret (hwnd);
!       }
!       else
!       return 1;
  
      case WM_EMACS_TRACKPOPUPMENU:
        {



reply via email to

[Prev in Thread] Current Thread [Next in Thread]