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 [emacs-unicode-2]


From: Miles Bader
Subject: [Emacs-diffs] Changes to emacs/src/w32fns.c [emacs-unicode-2]
Date: Mon, 28 Jun 2004 03:55:20 -0400

Index: emacs/src/w32fns.c
diff -c emacs/src/w32fns.c:1.219.2.3 emacs/src/w32fns.c:1.219.2.4
*** emacs/src/w32fns.c:1.219.2.3        Fri Apr 16 12:50:50 2004
--- emacs/src/w32fns.c  Mon Jun 28 07:29:24 2004
***************
*** 1,5 ****
  /* Graphical user interface functions for the Microsoft W32 API.
!    Copyright (C) 1989, 92, 93, 94, 95, 1996, 1997, 1998, 1999, 2000, 2001
       Free Software Foundation, Inc.
  
  This file is part of GNU Emacs.
--- 1,5 ----
  /* Graphical user interface functions for the Microsoft W32 API.
!    Copyright (C) 1989, 1992, 93, 94, 95, 96, 97, 98, 99, 2000, 01, 04
       Free Software Foundation, Inc.
  
  This file is part of GNU Emacs.
***************
*** 89,95 ****
  Lisp_Object Vw32_alt_is_meta;
  
  /* If non-zero, the windows virtual key code for an alternative quit key. */
! Lisp_Object Vw32_quit_key;
  
  /* Non nil if left window key events are passed on to Windows (this only
     affects whether "tapping" the key opens the Start menu).  */
--- 89,95 ----
  Lisp_Object Vw32_alt_is_meta;
  
  /* If non-zero, the windows virtual key code for an alternative quit key. */
! int w32_quit_key;
  
  /* Non nil if left window key events are passed on to Windows (this only
     affects whether "tapping" the key opens the Start menu).  */
***************
*** 133,143 ****
  
  /* Control how close left/right button down events must be to
     be converted to a middle button down event. */
! Lisp_Object Vw32_mouse_button_tolerance;
  
  /* Minimum interval between mouse movement (and scroll bar drag)
     events that are passed on to the event loop. */
! Lisp_Object Vw32_mouse_move_interval;
  
  /* Flag to indicate if XBUTTON events should be passed on to Windows.  */
  int w32_pass_extra_mouse_buttons_to_system;
--- 133,143 ----
  
  /* Control how close left/right button down events must be to
     be converted to a middle button down event. */
! int w32_mouse_button_tolerance;
  
  /* Minimum interval between mouse movement (and scroll bar drag)
     events that are passed on to the event loop. */
! int w32_mouse_move_interval;
  
  /* Flag to indicate if XBUTTON events should be passed on to Windows.  */
  int w32_pass_extra_mouse_buttons_to_system;
***************
*** 235,240 ****
--- 235,243 ----
  Lisp_Object Qw32_charset_unicode;
  #endif
  
+ /* The ANSI codepage.  */
+ int w32_ansi_code_page;
+ 
  /* Prefix for system colors.  */
  #define SYSTEM_COLOR_PREFIX "System"
  #define SYSTEM_COLOR_PREFIX_LEN (sizeof (SYSTEM_COLOR_PREFIX) - 1)
***************
*** 281,287 ****
  
  
  /* From w32term.c. */
! extern Lisp_Object Vw32_num_mouse_buttons;
  extern Lisp_Object Vw32_recognize_altgr;
  
  extern HWND w32_system_caret_hwnd;
--- 284,290 ----
  
  
  /* From w32term.c. */
! extern int w32_num_mouse_buttons;
  extern Lisp_Object Vw32_recognize_altgr;
  
  extern HWND w32_system_caret_hwnd;
***************
*** 463,469 ****
    CHECK_NUMBER (blue);
    CHECK_STRING (name);
  
!   XSET (rgb, Lisp_Int, RGB(XUINT (red), XUINT (green), XUINT (blue)));
  
    BLOCK_INPUT;
  
--- 466,472 ----
    CHECK_NUMBER (blue);
    CHECK_STRING (name);
  
!   XSETINT (rgb, RGB(XUINT (red), XUINT (green), XUINT (blue)));
  
    BLOCK_INPUT;
  
***************
*** 826,832 ****
      return Qnil;
  }
  
! COLORREF
  w32_color_map_lookup (colorname)
       char *colorname;
  {
--- 829,835 ----
      return Qnil;
  }
  
! static Lisp_Object
  w32_color_map_lookup (colorname)
       char *colorname;
  {
***************
*** 845,851 ****
  
        if (lstrcmpi (SDATA (tem), colorname) == 0)
        {
!         ret = XUINT (Fcdr (elt));
          break;
        }
  
--- 848,854 ----
  
        if (lstrcmpi (SDATA (tem), colorname) == 0)
        {
!         ret = Fcdr (elt);
          break;
        }
  
***************
*** 908,914 ****
  }
  
  
! COLORREF
  x_to_w32_color (colorname)
       char * colorname;
  {
--- 911,917 ----
  }
  
  
! static Lisp_Object
  x_to_w32_color (colorname)
       char * colorname;
  {
***************
*** 968,974 ****
              if (i == 2)
                {
                  UNBLOCK_INPUT;
!                 return (colorval);
                }
              color = end;
            }
--- 971,978 ----
              if (i == 2)
                {
                  UNBLOCK_INPUT;
!                 XSETINT (ret, colorval);
!                 return ret;
                }
              color = end;
            }
***************
*** 1021,1027 ****
              if (*end != '\0')
                break;
              UNBLOCK_INPUT;
!             return (colorval);
            }
          if (*end != '/')
            break;
--- 1025,1032 ----
              if (*end != '\0')
                break;
              UNBLOCK_INPUT;
!             XSETINT (ret, colorval);
!             return ret;
            }
          if (*end != '/')
            break;
***************
*** 1062,1068 ****
              if (*end != '\0')
                break;
              UNBLOCK_INPUT;
!             return (colorval);
            }
          if (*end != '/')
            break;
--- 1067,1074 ----
              if (*end != '\0')
                break;
              UNBLOCK_INPUT;
!             XSETINT (ret, colorval);
!             return ret;
            }
          if (*end != '/')
            break;
***************
*** 2416,2421 ****
--- 2422,2431 ----
  #define HOTKEY_VK_CODE(k)     (XFASTINT (k) & 255)
  #define HOTKEY_MODIFIERS(k)   (XFASTINT (k) >> 8)
  
+ #define RAW_HOTKEY_ID(k)        ((k) & 0xbfff)
+ #define RAW_HOTKEY_VK_CODE(k)   ((k) & 255)
+ #define RAW_HOTKEY_MODIFIERS(k) ((k) >> 8)
+ 
  /* Register hot-keys for reserved key combinations when Emacs has
     keyboard focus, since this is the only way Emacs can receive key
     combinations like Alt-Tab which are used by the system.  */
***************
*** 2497,2516 ****
              focus_window = GetFocus ();
              if (focus_window != NULL)
                RegisterHotKey (focus_window,
!                               HOTKEY_ID (msg.wParam),
!                               HOTKEY_MODIFIERS (msg.wParam),
!                               HOTKEY_VK_CODE (msg.wParam));
              /* Reply is not expected.  */
              break;
            case WM_EMACS_UNREGISTER_HOT_KEY:
              focus_window = GetFocus ();
              if (focus_window != NULL)
!               UnregisterHotKey (focus_window, HOTKEY_ID (msg.wParam));
              /* Mark item as erased.  NB: this code must be
                   thread-safe.  The next line is okay because the cons
                   cell is never made into garbage and is not relocated by
                   GC.  */
!             XSETCAR ((Lisp_Object) msg.lParam, Qnil);
              if (!PostThreadMessage (dwMainThreadId, WM_EMACS_DONE, 0, 0))
                abort ();
              break;
--- 2507,2526 ----
              focus_window = GetFocus ();
              if (focus_window != NULL)
                RegisterHotKey (focus_window,
!                               RAW_HOTKEY_ID (msg.wParam),
!                               RAW_HOTKEY_MODIFIERS (msg.wParam),
!                               RAW_HOTKEY_VK_CODE (msg.wParam));
              /* Reply is not expected.  */
              break;
            case WM_EMACS_UNREGISTER_HOT_KEY:
              focus_window = GetFocus ();
              if (focus_window != NULL)
!               UnregisterHotKey (focus_window, RAW_HOTKEY_ID (msg.wParam));
              /* Mark item as erased.  NB: this code must be
                   thread-safe.  The next line is okay because the cons
                   cell is never made into garbage and is not relocated by
                   GC.  */
!             XSETCAR ((Lisp_Object) ((EMACS_INT) msg.lParam), Qnil);
              if (!PostThreadMessage (dwMainThreadId, WM_EMACS_DONE, 0, 0))
                abort ();
              break;
***************
*** 2518,2524 ****
              {
                int vk_code = (int) msg.wParam;
                int cur_state = (GetKeyState (vk_code) & 1);
!               Lisp_Object new_state = (Lisp_Object) msg.lParam;
  
                /* NB: This code must be thread-safe.  It is safe to
                     call NILP because symbols are not relocated by GC,
--- 2528,2534 ----
              {
                int vk_code = (int) msg.wParam;
                int cur_state = (GetKeyState (vk_code) & 1);
!               Lisp_Object new_state = (Lisp_Object) ((EMACS_INT) msg.lParam);
  
                /* NB: This code must be thread-safe.  It is safe to
                     call NILP because symbols are not relocated by GC,
***************
*** 2708,2714 ****
        c = make_ctrl_char (c) & 0377;
      if (c == quit_char
        || (wmsg.dwModifiers == 0 &&
!           XFASTINT (Vw32_quit_key) && wParam == XFASTINT (Vw32_quit_key)))
        {
        Vquit_flag = Qt;
  
--- 2718,2724 ----
        c = make_ctrl_char (c) & 0377;
      if (c == quit_char
        || (wmsg.dwModifiers == 0 &&
!           w32_quit_key && wParam == w32_quit_key))
        {
        Vquit_flag = Qt;
  
***************
*** 3118,3124 ****
         are used together, but only if user has two button mouse. */
      case WM_LBUTTONDOWN:
      case WM_RBUTTONDOWN:
!       if (XINT (Vw32_num_mouse_buttons) > 2)
        goto handle_plain_button;
  
        {
--- 3128,3134 ----
         are used together, but only if user has two button mouse. */
      case WM_LBUTTONDOWN:
      case WM_RBUTTONDOWN:
!       if (w32_num_mouse_buttons > 2)
        goto handle_plain_button;
  
        {
***************
*** 3168,3174 ****
            /* Hold onto message for now. */
            mouse_button_timer =
              SetTimer (hwnd, MOUSE_BUTTON_ID,
!                       XINT (Vw32_mouse_button_tolerance), NULL);
            saved_mouse_button_msg.msg.hwnd = hwnd;
            saved_mouse_button_msg.msg.message = msg;
            saved_mouse_button_msg.msg.wParam = wParam;
--- 3178,3184 ----
            /* Hold onto message for now. */
            mouse_button_timer =
              SetTimer (hwnd, MOUSE_BUTTON_ID,
!                       w32_mouse_button_tolerance, NULL);
            saved_mouse_button_msg.msg.hwnd = hwnd;
            saved_mouse_button_msg.msg.message = msg;
            saved_mouse_button_msg.msg.wParam = wParam;
***************
*** 3181,3187 ****
  
      case WM_LBUTTONUP:
      case WM_RBUTTONUP:
!       if (XINT (Vw32_num_mouse_buttons) > 2)
        goto handle_plain_button;
  
        {
--- 3191,3197 ----
  
      case WM_LBUTTONUP:
      case WM_RBUTTONUP:
!       if (w32_num_mouse_buttons > 2)
        goto handle_plain_button;
  
        {
***************
*** 3277,3283 ****
          track_mouse_window = hwnd;
        }
      case WM_VSCROLL:
!       if (XINT (Vw32_mouse_move_interval) <= 0
          || (msg == WM_MOUSEMOVE && button_state == 0))
        {
          wmsg.dwModifiers = w32_get_modifiers ();
--- 3287,3293 ----
          track_mouse_window = hwnd;
        }
      case WM_VSCROLL:
!       if (w32_mouse_move_interval <= 0
          || (msg == WM_MOUSEMOVE && button_state == 0))
        {
          wmsg.dwModifiers = w32_get_modifiers ();
***************
*** 3293,3299 ****
        if (saved_mouse_move_msg.msg.hwnd == 0)
        mouse_move_timer =
          SetTimer (hwnd, MOUSE_MOVE_ID,
!                   XINT (Vw32_mouse_move_interval), NULL);
  
        /* Hold onto message for now. */
        saved_mouse_move_msg.msg.hwnd = hwnd;
--- 3303,3309 ----
        if (saved_mouse_move_msg.msg.hwnd == 0)
        mouse_move_timer =
          SetTimer (hwnd, MOUSE_MOVE_ID,
!                   w32_mouse_move_interval, NULL);
  
        /* Hold onto message for now. */
        saved_mouse_move_msg.msg.hwnd = hwnd;
***************
*** 4036,4050 ****
         1, 1, 0,
         doc: /* Make a new window, which is called a \"frame\" in Emacs terms.
  Returns an Emacs frame object.
! ALIST is an alist of frame parameters.
  If the parameters specify that the frame should not have a minibuffer,
  and do not specify a specific minibuffer window to use,
  then `default-minibuffer-frame' must be a frame whose minibuffer can
  be shared by the new frame.
  
  This function is an internal primitive--use `make-frame' instead.  */)
!   (parms)
!      Lisp_Object parms;
  {
    struct frame *f;
    Lisp_Object frame, tem;
--- 4046,4060 ----
         1, 1, 0,
         doc: /* Make a new window, which is called a \"frame\" in Emacs terms.
  Returns an Emacs frame object.
! PARAMETERS is an alist of frame parameters.
  If the parameters specify that the frame should not have a minibuffer,
  and do not specify a specific minibuffer window to use,
  then `default-minibuffer-frame' must be a frame whose minibuffer can
  be shared by the new frame.
  
  This function is an internal primitive--use `make-frame' instead.  */)
!   (parameters)
!      Lisp_Object parameters;
  {
    struct frame *f;
    Lisp_Object frame, tem;
***************
*** 4065,4071 ****
       until we know if this frame has a specified name.  */
    Vx_resource_name = Vinvocation_name;
  
!   display = w32_get_arg (parms, Qdisplay, 0, 0, RES_TYPE_STRING);
    if (EQ (display, Qunbound))
      display = Qnil;
    dpyinfo = check_x_display_info (display);
--- 4075,4081 ----
       until we know if this frame has a specified name.  */
    Vx_resource_name = Vinvocation_name;
  
!   display = w32_get_arg (parameters, Qdisplay, 0, 0, RES_TYPE_STRING);
    if (EQ (display, Qunbound))
      display = Qnil;
    dpyinfo = check_x_display_info (display);
***************
*** 4075,4081 ****
    kb = &the_only_kboard;
  #endif
  
!   name = w32_get_arg (parms, Qname, "name", "Name", RES_TYPE_STRING);
    if (!STRINGP (name)
        && ! EQ (name, Qunbound)
        && ! NILP (name))
--- 4085,4091 ----
    kb = &the_only_kboard;
  #endif
  
!   name = w32_get_arg (parameters, Qname, "name", "Name", RES_TYPE_STRING);
    if (!STRINGP (name)
        && ! EQ (name, Qunbound)
        && ! NILP (name))
***************
*** 4085,4091 ****
      Vx_resource_name = name;
  
    /* See if parent window is specified.  */
!   parent = w32_get_arg (parms, Qparent_id, NULL, NULL, RES_TYPE_NUMBER);
    if (EQ (parent, Qunbound))
      parent = Qnil;
    if (! NILP (parent))
--- 4095,4101 ----
      Vx_resource_name = name;
  
    /* See if parent window is specified.  */
!   parent = w32_get_arg (parameters, Qparent_id, NULL, NULL, RES_TYPE_NUMBER);
    if (EQ (parent, Qunbound))
      parent = Qnil;
    if (! NILP (parent))
***************
*** 4095,4102 ****
    /* No need to protect DISPLAY because that's not used after passing
       it to make_frame_without_minibuffer.  */
    frame = Qnil;
!   GCPRO4 (parms, parent, name, frame);
!   tem = w32_get_arg (parms, Qminibuffer, "minibuffer", "Minibuffer",
                       RES_TYPE_SYMBOL);
    if (EQ (tem, Qnone) || NILP (tem))
      f = make_frame_without_minibuffer (Qnil, kb, display);
--- 4105,4112 ----
    /* No need to protect DISPLAY because that's not used after passing
       it to make_frame_without_minibuffer.  */
    frame = Qnil;
!   GCPRO4 (parameters, parent, name, frame);
!   tem = w32_get_arg (parameters, Qminibuffer, "minibuffer", "Minibuffer",
                       RES_TYPE_SYMBOL);
    if (EQ (tem, Qnone) || NILP (tem))
      f = make_frame_without_minibuffer (Qnil, kb, display);
***************
*** 4126,4132 ****
    record_unwind_protect (unwind_create_frame, frame);
  
    f->icon_name
!     = w32_get_arg (parms, Qicon_name, "iconName", "Title", RES_TYPE_STRING);
    if (! STRINGP (f->icon_name))
      f->icon_name = Qnil;
  
--- 4136,4142 ----
    record_unwind_protect (unwind_create_frame, frame);
  
    f->icon_name
!     = w32_get_arg (parameters, Qicon_name, "iconName", "Title", 
RES_TYPE_STRING);
    if (! STRINGP (f->icon_name))
      f->icon_name = Qnil;
  
***************
*** 4168,4174 ****
    {
      Lisp_Object font;
  
!     font = w32_get_arg (parms, Qfont, "font", "Font", RES_TYPE_STRING);
  
      BLOCK_INPUT;
      /* First, try whatever font the caller has specified.  */
--- 4178,4184 ----
    {
      Lisp_Object font;
  
!     font = w32_get_arg (parameters, Qfont, "font", "Font", RES_TYPE_STRING);
  
      BLOCK_INPUT;
      /* First, try whatever font the caller has specified.  */
***************
*** 4192,4240 ****
      if (! STRINGP (font))
        font = build_string ("Fixedsys");
  
!     x_default_parameter (f, parms, Qfont, font,
                         "font", "Font", RES_TYPE_STRING);
    }
  
!   x_default_parameter (f, parms, Qborder_width, make_number (2),
                       "borderWidth", "BorderWidth", RES_TYPE_NUMBER);
    /* This defaults to 2 in order to match xterm.  We recognize either
       internalBorderWidth or internalBorder (which is what xterm calls
       it).  */
!   if (NILP (Fassq (Qinternal_border_width, parms)))
      {
        Lisp_Object value;
  
!       value = w32_get_arg (parms, Qinternal_border_width,
!                        "internalBorder", "InternalBorder", RES_TYPE_NUMBER);
        if (! EQ (value, Qunbound))
!       parms = Fcons (Fcons (Qinternal_border_width, value),
!                      parms);
      }
    /* Default internalBorderWidth to 0 on Windows to match other programs.  */
!   x_default_parameter (f, parms, Qinternal_border_width, make_number (0),
                       "internalBorderWidth", "InternalBorder", 
RES_TYPE_NUMBER);
!   x_default_parameter (f, parms, Qvertical_scroll_bars, Qright,
                       "verticalScrollBars", "ScrollBars", RES_TYPE_SYMBOL);
  
    /* Also do the stuff which must be set before the window exists.  */
!   x_default_parameter (f, parms, Qforeground_color, build_string ("black"),
                       "foreground", "Foreground", RES_TYPE_STRING);
!   x_default_parameter (f, parms, Qbackground_color, build_string ("white"),
                       "background", "Background", RES_TYPE_STRING);
!   x_default_parameter (f, parms, Qmouse_color, build_string ("black"),
                       "pointerColor", "Foreground", RES_TYPE_STRING);
!   x_default_parameter (f, parms, Qcursor_color, build_string ("black"),
                       "cursorColor", "Foreground", RES_TYPE_STRING);
!   x_default_parameter (f, parms, Qborder_color, build_string ("black"),
                       "borderColor", "BorderColor", RES_TYPE_STRING);
!   x_default_parameter (f, parms, Qscreen_gamma, Qnil,
                       "screenGamma", "ScreenGamma", RES_TYPE_FLOAT);
!   x_default_parameter (f, parms, Qline_spacing, Qnil,
                       "lineSpacing", "LineSpacing", RES_TYPE_NUMBER);
!   x_default_parameter (f, parms, Qleft_fringe, Qnil,
                       "leftFringe", "LeftFringe", RES_TYPE_NUMBER);
!   x_default_parameter (f, parms, Qright_fringe, Qnil,
                       "rightFringe", "RightFringe", RES_TYPE_NUMBER);
  
  
--- 4202,4250 ----
      if (! STRINGP (font))
        font = build_string ("Fixedsys");
  
!     x_default_parameter (f, parameters, Qfont, font,
                         "font", "Font", RES_TYPE_STRING);
    }
  
!   x_default_parameter (f, parameters, Qborder_width, make_number (2),
                       "borderWidth", "BorderWidth", RES_TYPE_NUMBER);
    /* This defaults to 2 in order to match xterm.  We recognize either
       internalBorderWidth or internalBorder (which is what xterm calls
       it).  */
!   if (NILP (Fassq (Qinternal_border_width, parameters)))
      {
        Lisp_Object value;
  
!       value = w32_get_arg (parameters, Qinternal_border_width,
!                            "internalBorder", "InternalBorder", 
RES_TYPE_NUMBER);
        if (! EQ (value, Qunbound))
!       parameters = Fcons (Fcons (Qinternal_border_width, value),
!                             parameters);
      }
    /* Default internalBorderWidth to 0 on Windows to match other programs.  */
!   x_default_parameter (f, parameters, Qinternal_border_width, make_number (0),
                       "internalBorderWidth", "InternalBorder", 
RES_TYPE_NUMBER);
!   x_default_parameter (f, parameters, Qvertical_scroll_bars, Qright,
                       "verticalScrollBars", "ScrollBars", RES_TYPE_SYMBOL);
  
    /* Also do the stuff which must be set before the window exists.  */
!   x_default_parameter (f, parameters, Qforeground_color, build_string 
("black"),
                       "foreground", "Foreground", RES_TYPE_STRING);
!   x_default_parameter (f, parameters, Qbackground_color, build_string 
("white"),
                       "background", "Background", RES_TYPE_STRING);
!   x_default_parameter (f, parameters, Qmouse_color, build_string ("black"),
                       "pointerColor", "Foreground", RES_TYPE_STRING);
!   x_default_parameter (f, parameters, Qcursor_color, build_string ("black"),
                       "cursorColor", "Foreground", RES_TYPE_STRING);
!   x_default_parameter (f, parameters, Qborder_color, build_string ("black"),
                       "borderColor", "BorderColor", RES_TYPE_STRING);
!   x_default_parameter (f, parameters, Qscreen_gamma, Qnil,
                       "screenGamma", "ScreenGamma", RES_TYPE_FLOAT);
!   x_default_parameter (f, parameters, Qline_spacing, Qnil,
                       "lineSpacing", "LineSpacing", RES_TYPE_NUMBER);
!   x_default_parameter (f, parameters, Qleft_fringe, Qnil,
                       "leftFringe", "LeftFringe", RES_TYPE_NUMBER);
!   x_default_parameter (f, parameters, Qright_fringe, Qnil,
                       "rightFringe", "RightFringe", RES_TYPE_NUMBER);
  
  
***************
*** 4246,4261 ****
       happen.  */
    init_frame_faces (f);
  
!   x_default_parameter (f, parms, Qmenu_bar_lines, make_number (1),
                       "menuBar", "MenuBar", RES_TYPE_NUMBER);
!   x_default_parameter (f, parms, Qtool_bar_lines, make_number (1),
                         "toolBar", "ToolBar", RES_TYPE_NUMBER);
  
!   x_default_parameter (f, parms, Qbuffer_predicate, Qnil,
                       "bufferPredicate", "BufferPredicate", RES_TYPE_SYMBOL);
!   x_default_parameter (f, parms, Qtitle, Qnil,
                       "title", "Title", RES_TYPE_STRING);
!   x_default_parameter (f, parms, Qfullscreen, Qnil,
                         "fullscreen", "Fullscreen", RES_TYPE_SYMBOL);
  
    f->output_data.w32->dwStyle = WS_OVERLAPPEDWINDOW;
--- 4256,4271 ----
       happen.  */
    init_frame_faces (f);
  
!   x_default_parameter (f, parameters, Qmenu_bar_lines, make_number (1),
                       "menuBar", "MenuBar", RES_TYPE_NUMBER);
!   x_default_parameter (f, parameters, Qtool_bar_lines, make_number (1),
                         "toolBar", "ToolBar", RES_TYPE_NUMBER);
  
!   x_default_parameter (f, parameters, Qbuffer_predicate, Qnil,
                       "bufferPredicate", "BufferPredicate", RES_TYPE_SYMBOL);
!   x_default_parameter (f, parameters, Qtitle, Qnil,
                       "title", "Title", RES_TYPE_STRING);
!   x_default_parameter (f, parameters, Qfullscreen, Qnil,
                         "fullscreen", "Fullscreen", RES_TYPE_SYMBOL);
  
    f->output_data.w32->dwStyle = WS_OVERLAPPEDWINDOW;
***************
*** 4268,4280 ****
    f->output_data.w32->hourglass_cursor = w32_load_cursor (IDC_WAIT);
    f->output_data.w32->horizontal_drag_cursor = w32_load_cursor (IDC_SIZEWE);
  
!   window_prompting = x_figure_window_size (f, parms, 1);
  
!   tem = w32_get_arg (parms, Qunsplittable, 0, 0, RES_TYPE_BOOLEAN);
    f->no_split = minibuffer_only || EQ (tem, Qt);
  
    w32_window (f, window_prompting, minibuffer_only);
!   x_icon (f, parms);
  
    x_make_gc (f);
  
--- 4278,4290 ----
    f->output_data.w32->hourglass_cursor = w32_load_cursor (IDC_WAIT);
    f->output_data.w32->horizontal_drag_cursor = w32_load_cursor (IDC_SIZEWE);
  
!   window_prompting = x_figure_window_size (f, parameters, 1);
  
!   tem = w32_get_arg (parameters, Qunsplittable, 0, 0, RES_TYPE_BOOLEAN);
    f->no_split = minibuffer_only || EQ (tem, Qt);
  
    w32_window (f, window_prompting, minibuffer_only);
!   x_icon (f, parameters);
  
    x_make_gc (f);
  
***************
*** 4284,4299 ****
  
    /* We need to do this after creating the window, so that the
       icon-creation functions can say whose icon they're describing.  */
!   x_default_parameter (f, parms, Qicon_type, Qnil,
                       "bitmapIcon", "BitmapIcon", RES_TYPE_SYMBOL);
  
!   x_default_parameter (f, parms, Qauto_raise, Qnil,
                       "autoRaise", "AutoRaiseLower", RES_TYPE_BOOLEAN);
!   x_default_parameter (f, parms, Qauto_lower, Qnil,
                       "autoLower", "AutoRaiseLower", RES_TYPE_BOOLEAN);
!   x_default_parameter (f, parms, Qcursor_type, Qbox,
                       "cursorType", "CursorType", RES_TYPE_SYMBOL);
!   x_default_parameter (f, parms, Qscroll_bar_width, Qnil,
                       "scrollBarWidth", "ScrollBarWidth", RES_TYPE_NUMBER);
  
    /* Dimensions, especially FRAME_LINES (f), must be done via 
change_frame_size.
--- 4294,4309 ----
  
    /* We need to do this after creating the window, so that the
       icon-creation functions can say whose icon they're describing.  */
!   x_default_parameter (f, parameters, Qicon_type, Qnil,
                       "bitmapIcon", "BitmapIcon", RES_TYPE_SYMBOL);
  
!   x_default_parameter (f, parameters, Qauto_raise, Qnil,
                       "autoRaise", "AutoRaiseLower", RES_TYPE_BOOLEAN);
!   x_default_parameter (f, parameters, Qauto_lower, Qnil,
                       "autoLower", "AutoRaiseLower", RES_TYPE_BOOLEAN);
!   x_default_parameter (f, parameters, Qcursor_type, Qbox,
                       "cursorType", "CursorType", RES_TYPE_SYMBOL);
!   x_default_parameter (f, parameters, Qscroll_bar_width, Qnil,
                       "scrollBarWidth", "ScrollBarWidth", RES_TYPE_NUMBER);
  
    /* Dimensions, especially FRAME_LINES (f), must be done via 
change_frame_size.
***************
*** 4331,4337 ****
      {
        Lisp_Object visibility;
  
!       visibility = w32_get_arg (parms, Qvisibility, 0, 0, RES_TYPE_SYMBOL);
        if (EQ (visibility, Qunbound))
        visibility = Qt;
  
--- 4341,4347 ----
      {
        Lisp_Object visibility;
  
!       visibility = w32_get_arg (parameters, Qvisibility, 0, 0, 
RES_TYPE_SYMBOL);
        if (EQ (visibility, Qunbound))
        visibility = Qt;
  
***************
*** 4775,4820 ****
    w32_charset = Fcar (Fcdr (this_entry));
  
    /* Translate Lisp symbol to number.  */
!   if (w32_charset == Qw32_charset_ansi)
      return ANSI_CHARSET;
!   if (w32_charset == Qw32_charset_symbol)
      return SYMBOL_CHARSET;
!   if (w32_charset == Qw32_charset_shiftjis)
      return SHIFTJIS_CHARSET;
!   if (w32_charset == Qw32_charset_hangeul)
      return HANGEUL_CHARSET;
!   if (w32_charset == Qw32_charset_chinesebig5)
      return CHINESEBIG5_CHARSET;
!   if (w32_charset == Qw32_charset_gb2312)
      return GB2312_CHARSET;
!   if (w32_charset == Qw32_charset_oem)
      return OEM_CHARSET;
  #ifdef JOHAB_CHARSET
!   if (w32_charset == Qw32_charset_johab)
      return JOHAB_CHARSET;
!   if (w32_charset == Qw32_charset_easteurope)
      return EASTEUROPE_CHARSET;
!   if (w32_charset == Qw32_charset_turkish)
      return TURKISH_CHARSET;
!   if (w32_charset == Qw32_charset_baltic)
      return BALTIC_CHARSET;
!   if (w32_charset == Qw32_charset_russian)
      return RUSSIAN_CHARSET;
!   if (w32_charset == Qw32_charset_arabic)
      return ARABIC_CHARSET;
!   if (w32_charset == Qw32_charset_greek)
      return GREEK_CHARSET;
!   if (w32_charset == Qw32_charset_hebrew)
      return HEBREW_CHARSET;
!   if (w32_charset == Qw32_charset_vietnamese)
      return VIETNAMESE_CHARSET;
!   if (w32_charset == Qw32_charset_thai)
      return THAI_CHARSET;
!   if (w32_charset == Qw32_charset_mac)
      return MAC_CHARSET;
  #endif /* JOHAB_CHARSET */
  #ifdef UNICODE_CHARSET
!   if (w32_charset == Qw32_charset_unicode)
      return UNICODE_CHARSET;
  #endif
  
--- 4785,4830 ----
    w32_charset = Fcar (Fcdr (this_entry));
  
    /* Translate Lisp symbol to number.  */
!   if (EQ (w32_charset, Qw32_charset_ansi))
      return ANSI_CHARSET;
!   if (EQ (w32_charset, Qw32_charset_symbol))
      return SYMBOL_CHARSET;
!   if (EQ (w32_charset, Qw32_charset_shiftjis))
      return SHIFTJIS_CHARSET;
!   if (EQ (w32_charset, Qw32_charset_hangeul))
      return HANGEUL_CHARSET;
!   if (EQ (w32_charset, Qw32_charset_chinesebig5))
      return CHINESEBIG5_CHARSET;
!   if (EQ (w32_charset, Qw32_charset_gb2312))
      return GB2312_CHARSET;
!   if (EQ (w32_charset, Qw32_charset_oem))
      return OEM_CHARSET;
  #ifdef JOHAB_CHARSET
!   if (EQ (w32_charset, Qw32_charset_johab))
      return JOHAB_CHARSET;
!   if (EQ (w32_charset, Qw32_charset_easteurope))
      return EASTEUROPE_CHARSET;
!   if (EQ (w32_charset, Qw32_charset_turkish))
      return TURKISH_CHARSET;
!   if (EQ (w32_charset, Qw32_charset_baltic))
      return BALTIC_CHARSET;
!   if (EQ (w32_charset, Qw32_charset_russian))
      return RUSSIAN_CHARSET;
!   if (EQ (w32_charset, Qw32_charset_arabic))
      return ARABIC_CHARSET;
!   if (EQ (w32_charset, Qw32_charset_greek))
      return GREEK_CHARSET;
!   if (EQ (w32_charset, Qw32_charset_hebrew))
      return HEBREW_CHARSET;
!   if (EQ (w32_charset, Qw32_charset_vietnamese))
      return VIETNAMESE_CHARSET;
!   if (EQ (w32_charset, Qw32_charset_thai))
      return THAI_CHARSET;
!   if (EQ (w32_charset, Qw32_charset_mac))
      return MAC_CHARSET;
  #endif /* JOHAB_CHARSET */
  #ifdef UNICODE_CHARSET
!   if (EQ (w32_charset, Qw32_charset_unicode))
      return UNICODE_CHARSET;
  #endif
  
***************
*** 4956,4963 ****
  
          /* Look for Same charset and a valid codepage (or non-int
             which means ignore).  */
!         if (w32_charset == charset_type
!             && (!INTEGERP (codepage) || codepage == CP_DEFAULT
                  || IsValidCodePage (XINT (codepage))))
            {
              /* If we don't have a match already, then this is the
--- 4966,4973 ----
  
          /* Look for Same charset and a valid codepage (or non-int
             which means ignore).  */
!         if (EQ (w32_charset, charset_type)
!             && (!INTEGERP (codepage) || XINT (codepage) == CP_DEFAULT
                  || IsValidCodePage (XINT (codepage))))
            {
              /* If we don't have a match already, then this is the
***************
*** 5151,5158 ****
  
          /* Look for Same charset and a valid codepage (or non-int
             which means ignore).  */
!         if (w32_charset == charset_type
!             && (!INTEGERP (codepage) || codepage == CP_DEFAULT
                  || IsValidCodePage (XINT (codepage))))
            {
            retval = Fcons (x_charset, retval);
--- 5161,5168 ----
  
          /* Look for Same charset and a valid codepage (or non-int
             which means ignore).  */
!         if (EQ (w32_charset, charset_type)
!             && (!INTEGERP (codepage) || XINT (codepage) == CP_DEFAULT
                  || IsValidCodePage (XINT (codepage))))
            {
            retval = Fcons (x_charset, retval);
***************
*** 6205,6210 ****
--- 6215,6223 ----
      }
  }
  
+ /* directory-files from dired.c.  */
+ Lisp_Object Fdirectory_files P_((Lisp_Object, Lisp_Object, Lisp_Object, 
Lisp_Object));
+ 
  
  /* Find BDF files in a specified directory.  (use GCPRO when calling,
     as this calls lisp to get a directory listing).  */
***************
*** 6218,6224 ****
      return Qnil;
  
    filelist = Fdirectory_files (directory, Qt,
!                               build_string (".*\\.[bB][dD][fF]"), Qt);
  
    for ( ; CONSP(filelist); filelist = XCDR (filelist))
      {
--- 6231,6237 ----
      return Qnil;
  
    filelist = Fdirectory_files (directory, Qt,
!                              build_string (".*\\.[bB][dD][fF]"), Qt);
  
    for ( ; CONSP(filelist); filelist = XCDR (filelist))
      {
***************
*** 6231,6240 ****
  
  DEFUN ("w32-find-bdf-fonts", Fw32_find_bdf_fonts, Sw32_find_bdf_fonts,
         1, 1, 0,
!        doc: /* Return a list of BDF fonts in DIR.
! The list is suitable for appending to w32-bdf-filename-alist.  Fonts
! which do not contain an xlfd description will not be included in the
! list. DIR may be a list of directories.  */)
       (directory)
       Lisp_Object directory;
  {
--- 6244,6253 ----
  
  DEFUN ("w32-find-bdf-fonts", Fw32_find_bdf_fonts, Sw32_find_bdf_fonts,
         1, 1, 0,
!        doc: /* Return a list of BDF fonts in DIRECTORY.
! The list is suitable for appending to `w32-bdf-filename-alist'.
! Fonts which do not contain an xlfd description will not be included
! in the list.  DIRECTORY may be a list of directories.  */)
       (directory)
       Lisp_Object directory;
  {
***************
*** 6315,6321 ****
  
  DEFUN ("x-display-grayscale-p", Fx_display_grayscale_p,
         Sx_display_grayscale_p, 0, 1, 0,
!        doc: /* Return t if the X display supports shades of gray.
  Note that color displays do support shades of gray.
  The optional argument DISPLAY specifies which display to ask about.
  DISPLAY should be either a frame or a display name (a string).
--- 6328,6334 ----
  
  DEFUN ("x-display-grayscale-p", Fx_display_grayscale_p,
         Sx_display_grayscale_p, 0, 1, 0,
!        doc: /* Return t if DISPLAY supports shades of gray.
  Note that color displays do support shades of gray.
  The optional argument DISPLAY specifies which display to ask about.
  DISPLAY should be either a frame or a display name (a string).
***************
*** 6388,6396 ****
  
    hdc = GetDC (dpyinfo->root_window);
    if (dpyinfo->has_palette)
!     cap = GetDeviceCaps (hdc,SIZEPALETTE);
    else
!     cap = GetDeviceCaps (hdc,NUMCOLORS);
  
    /* We force 24+ bit depths to 24-bit, both to prevent an overflow
       and because probably is more meaningful on Windows anyway */
--- 6401,6409 ----
  
    hdc = GetDC (dpyinfo->root_window);
    if (dpyinfo->has_palette)
!     cap = GetDeviceCaps (hdc, SIZEPALETTE);
    else
!     cap = GetDeviceCaps (hdc, NUMCOLORS);
  
    /* We force 24+ bit depths to 24-bit, both to prevent an overflow
       and because probably is more meaningful on Windows anyway */
***************
*** 7175,7180 ****
--- 7188,7195 ----
    old_buffer = current_buffer;
    set_buffer_internal_1 (XBUFFER (buffer));
    current_buffer->truncate_lines = Qnil;
+   specbind (Qinhibit_read_only, Qt);
+   specbind (Qinhibit_modification_hooks, Qt);
    Ferase_buffer ();
    Finsert (1, &text);
    set_buffer_internal_1 (old_buffer);
***************
*** 7442,7448 ****
  Automatically hide the tooltip after TIMEOUT seconds.  TIMEOUT nil
  means use the default timeout of 5 seconds.
  
! If the list of frame parameters PARAMS contains a `left' parameter,
  the tooltip is displayed at that x-position.  Otherwise it is
  displayed at the mouse position, with offset DX added (default is 5 if
  DX isn't specified).  Likewise for the y-position; if a `top' frame
--- 7457,7463 ----
  Automatically hide the tooltip after TIMEOUT seconds.  TIMEOUT nil
  means use the default timeout of 5 seconds.
  
! If the list of frame parameters PARMS contains a `left' parameter,
  the tooltip is displayed at that x-position.  Otherwise it is
  displayed at the mouse position, with offset DX added (default is 5 if
  DX isn't specified).  Likewise for the y-position; if a `top' frame
***************
*** 7923,7929 ****
  DEFUN ("w32-send-sys-command", Fw32_send_sys_command,
         Sw32_send_sys_command, 1, 2, 0,
         doc: /* Send frame a Windows WM_SYSCOMMAND message of type COMMAND.
! Some useful values for command are #xf030 to maximise frame (#xf020
  to minimize), #xf120 to restore frame to original size, and #xf100
  to activate the menubar for keyboard access.  #xf140 activates the
  screen saver if defined.
--- 7938,7944 ----
  DEFUN ("w32-send-sys-command", Fw32_send_sys_command,
         Sw32_send_sys_command, 1, 2, 0,
         doc: /* Send frame a Windows WM_SYSCOMMAND message of type COMMAND.
! Some useful values for COMMAND are #xf030 to maximize frame (#xf020
  to minimize), #xf120 to restore frame to original size, and #xf100
  to activate the menubar for keyboard access.  #xf140 activates the
  screen saver if defined.
***************
*** 8003,8009 ****
  
  /* Convert a one-element vector style key sequence to a hot key
     definition.  */
! static int
  w32_parse_hot_key (key)
       Lisp_Object key;
  {
--- 8018,8024 ----
  
  /* Convert a one-element vector style key sequence to a hot key
     definition.  */
! static Lisp_Object
  w32_parse_hot_key (key)
       Lisp_Object key;
  {
***************
*** 8035,8041 ****
    if (SYMBOLP (c))
      {
        c = parse_modifiers (c);
!       lisp_modifiers = Fcar (Fcdr (c));
        c = Fcar (c);
        if (!SYMBOLP (c))
        abort ();
--- 8050,8056 ----
    if (SYMBOLP (c))
      {
        c = parse_modifiers (c);
!       lisp_modifiers = XINT (Fcar (Fcdr (c)));
        c = Fcar (c);
        if (!SYMBOLP (c))
        abort ();
***************
*** 8104,8111 ****
--- 8119,8131 ----
  
        /* Notify input thread about new hot-key definition, so that it
         takes effect without needing to switch focus.  */
+ #ifdef USE_LISP_UNION_TYPE
+       PostThreadMessage (dwWindowsThreadId, WM_EMACS_REGISTER_HOT_KEY,
+                        (WPARAM) key.i, 0);
+ #else
        PostThreadMessage (dwWindowsThreadId, WM_EMACS_REGISTER_HOT_KEY,
                         (WPARAM) key, 0);
+ #endif
      }
  
    return key;
***************
*** 8113,8119 ****
  
  DEFUN ("w32-unregister-hot-key", Fw32_unregister_hot_key,
         Sw32_unregister_hot_key, 1, 1, 0,
!        doc: /* Unregister HOTKEY as a hot-key combination.  */)
    (key)
       Lisp_Object key;
  {
--- 8133,8139 ----
  
  DEFUN ("w32-unregister-hot-key", Fw32_unregister_hot_key,
         Sw32_unregister_hot_key, 1, 1, 0,
!        doc: /* Unregister KEY as a hot-key combination.  */)
    (key)
       Lisp_Object key;
  {
***************
*** 8128,8135 ****
--- 8148,8161 ----
      {
        /* Notify input thread about hot-key definition being removed, so
         that it takes effect without needing focus switch.  */
+ #ifdef USE_LISP_UNION_TYPE
+       if (PostThreadMessage (dwWindowsThreadId, WM_EMACS_UNREGISTER_HOT_KEY,
+                            (WPARAM) XINT (XCAR (item)), (LPARAM) item.i))
+ #else
        if (PostThreadMessage (dwWindowsThreadId, WM_EMACS_UNREGISTER_HOT_KEY,
                             (WPARAM) XINT (XCAR (item)), (LPARAM) item))
+ 
+ #endif
        {
          MSG msg;
          GetMessage (&msg, NULL, WM_EMACS_DONE, WM_EMACS_DONE);
***************
*** 8149,8155 ****
  
  DEFUN ("w32-reconstruct-hot-key", Fw32_reconstruct_hot_key,
         Sw32_reconstruct_hot_key, 1, 1, 0,
!        doc: /* Convert hot-key ID to a lisp key combination.  */)
    (hotkeyid)
       Lisp_Object hotkeyid;
  {
--- 8175,8182 ----
  
  DEFUN ("w32-reconstruct-hot-key", Fw32_reconstruct_hot_key,
         Sw32_reconstruct_hot_key, 1, 1, 0,
!        doc: /* Convert hot-key ID to a lisp key combination.
! usage: (w32-reconstruct-hot-key ID)  */)
    (hotkeyid)
       Lisp_Object hotkeyid;
  {
***************
*** 8202,8209 ****
--- 8229,8241 ----
    if (!dwWindowsThreadId)
      return make_number (w32_console_toggle_lock_key (vk_code, new_state));
  
+ #ifdef USE_LISP_UNION_TYPE
+   if (PostThreadMessage (dwWindowsThreadId, WM_EMACS_TOGGLE_LOCK_KEY,
+                        (WPARAM) vk_code, (LPARAM) new_state.i))
+ #else
    if (PostThreadMessage (dwWindowsThreadId, WM_EMACS_TOGGLE_LOCK_KEY,
                         (WPARAM) vk_code, (LPARAM) new_state))
+ #endif
      {
        MSG msg;
        GetMessage (&msg, NULL, WM_EMACS_DONE, WM_EMACS_DONE);
***************
*** 8383,8389 ****
                            Initialization
   ***********************************************************************/
  
! /* Keep this list in the same order as frame_parms in frame.c. 
     Use 0 for unsupported frame parameters.  */
  
  frame_parm_handler w32_frame_parm_handlers[] =
--- 8415,8421 ----
                            Initialization
   ***********************************************************************/
  
! /* Keep this list in the same order as frame_parms in frame.c.
     Use 0 for unsupported frame parameters.  */
  
  frame_parm_handler w32_frame_parm_handlers[] =
***************
*** 8468,8474 ****
    w32_grabbed_keys = Qnil;
  
    DEFVAR_LISP ("w32-color-map", &Vw32_color_map,
!              doc: /* An array of color name mappings for windows.  */);
    Vw32_color_map = Qnil;
  
    DEFVAR_LISP ("w32-pass-alt-to-system", &Vw32_pass_alt_to_system,
--- 8500,8506 ----
    w32_grabbed_keys = Qnil;
  
    DEFVAR_LISP ("w32-color-map", &Vw32_color_map,
!              doc: /* An array of color name mappings for Windows.  */);
    Vw32_color_map = Qnil;
  
    DEFVAR_LISP ("w32-pass-alt-to-system", &Vw32_pass_alt_to_system,
***************
*** 8482,8490 ****
  When nil, Emacs will translate the alt key to the Alt modifier, and not Meta. 
 */);
    Vw32_alt_is_meta = Qt;
  
!   DEFVAR_INT ("w32-quit-key", &Vw32_quit_key,
!             doc: /* If non-zero, the virtual key code for an alternative quit 
key.  */);
!   XSETINT (Vw32_quit_key, 0);
  
    DEFVAR_LISP ("w32-pass-lwindow-to-system",
               &Vw32_pass_lwindow_to_system,
--- 8514,8522 ----
  When nil, Emacs will translate the alt key to the Alt modifier, and not Meta. 
 */);
    Vw32_alt_is_meta = Qt;
  
!   DEFVAR_INT ("w32-quit-key", &w32_quit_key,
!              doc: /* If non-zero, the virtual key code for an alternative 
quit key.  */);
!   w32_quit_key = 0;
  
    DEFVAR_LISP ("w32-pass-lwindow-to-system",
               &Vw32_pass_lwindow_to_system,
***************
*** 8498,8506 ****
  When non-nil, the Start menu is opened by tapping the key.  */);
    Vw32_pass_rwindow_to_system = Qt;
  
!   DEFVAR_INT ("w32-phantom-key-code",
               &Vw32_phantom_key_code,
!             doc: /* Virtual key code used to generate \"phantom\" key presses.
  Value is a number between 0 and 255.
  
  Phantom key presses are generated in order to stop the system from
--- 8530,8538 ----
  When non-nil, the Start menu is opened by tapping the key.  */);
    Vw32_pass_rwindow_to_system = Qt;
  
!   DEFVAR_LISP ("w32-phantom-key-code",
               &Vw32_phantom_key_code,
!              doc: /* Virtual key code used to generate \"phantom\" key 
presses.
  Value is a number between 0 and 255.
  
  Phantom key presses are generated in order to stop the system from
***************
*** 8508,8514 ****
  `w32-pass-rwindow-to-system' is nil.  */);
    /* Although 255 is technically not a valid key code, it works and
       means that this hack won't interfere with any real key code.  */
!   Vw32_phantom_key_code = 255;
  
    DEFVAR_LISP ("w32-enable-num-lock",
               &Vw32_enable_num_lock,
--- 8540,8546 ----
  `w32-pass-rwindow-to-system' is nil.  */);
    /* Although 255 is technically not a valid key code, it works and
       means that this hack won't interfere with any real key code.  */
!   XSETINT (Vw32_phantom_key_code, 255);
  
    DEFVAR_LISP ("w32-enable-num-lock",
               &Vw32_enable_num_lock,
***************
*** 8563,8583 ****
    Vw32_enable_palette = Qt;
  
    DEFVAR_INT ("w32-mouse-button-tolerance",
!             &Vw32_mouse_button_tolerance,
              doc: /* Analogue of double click interval for faking middle mouse 
events.
  The value is the minimum time in milliseconds that must elapse between
  left/right button down events before they are considered distinct events.
  If both mouse buttons are depressed within this interval, a middle mouse
  button down event is generated instead.  */);
!   XSETINT (Vw32_mouse_button_tolerance, GetDoubleClickTime () / 2);
  
    DEFVAR_INT ("w32-mouse-move-interval",
!             &Vw32_mouse_move_interval,
              doc: /* Minimum interval between mouse move events.
  The value is the minimum time in milliseconds that must elapse between
  successive mouse move (or scroll bar drag) events before they are
  reported as lisp events.  */);
!   XSETINT (Vw32_mouse_move_interval, 0);
  
    DEFVAR_BOOL ("w32-pass-extra-mouse-buttons-to-system",
               &w32_pass_extra_mouse_buttons_to_system,
--- 8595,8615 ----
    Vw32_enable_palette = Qt;
  
    DEFVAR_INT ("w32-mouse-button-tolerance",
!             &w32_mouse_button_tolerance,
              doc: /* Analogue of double click interval for faking middle mouse 
events.
  The value is the minimum time in milliseconds that must elapse between
  left/right button down events before they are considered distinct events.
  If both mouse buttons are depressed within this interval, a middle mouse
  button down event is generated instead.  */);
!   w32_mouse_button_tolerance = GetDoubleClickTime () / 2;
  
    DEFVAR_INT ("w32-mouse-move-interval",
!             &w32_mouse_move_interval,
              doc: /* Minimum interval between mouse move events.
  The value is the minimum time in milliseconds that must elapse between
  successive mouse move (or scroll bar drag) events before they are
  reported as lisp events.  */);
!   w32_mouse_move_interval = 0;
  
    DEFVAR_BOOL ("w32-pass-extra-mouse-buttons-to-system",
               &w32_pass_extra_mouse_buttons_to_system,
***************
*** 8857,8862 ****
--- 8889,8899 ----
    /* ditto for GetClipboardSequenceNumber.  */
    clipboard_sequence_fn = (ClipboardSequence_Proc)
      GetProcAddress (user32_lib, "GetClipboardSequenceNumber");
+ 
+   DEFVAR_INT ("w32-ansi-code-page",
+             &w32_ansi_code_page,
+             doc: /* The ANSI code page used by the system.  */);
+   w32_ansi_code_page = GetACP ();
  }
  
  #undef abort




reply via email to

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