/* Definitions and headers for communication on the Microsoft W32 API.
Copyright (C) 1995, 2001, 2002, 2003, 2004,
- 2005 Free Software Foundation, Inc.
+ 2005, 2006, 2007 Free Software Foundation, Inc.
This file is part of GNU Emacs.
GNU Emacs is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
-the Free Software Foundation; either version 2, or (at your option)
+the Free Software Foundation; either version 3, or (at your option)
any later version.
GNU Emacs is distributed in the hope that it will be useful,
/* Chain of all w32_display_info structures. */
struct w32_display_info *next;
+ /* The generic display parameters corresponding to this w32 display. */
+ struct terminal *terminal;
+
/* This is a cons cell of the form (NAME . FONT-LIST-CACHE).
The same cons cell also appears in x_display_name_list. */
Lisp_Object name_list_element;
char *w32_id_name;
/* The number of fonts actually stored in w32_font_table.
- font_table[n] is used and valid iff 0 <= n < n_fonts. 0 <=
+ font_table[n] is used and valid if 0 <= n < n_fonts. 0 <=
n_fonts <= font_table_size. and font_table[i].name != 0. */
int n_fonts;
/* Regexp matching a font name whose width is the same as `PIXEL_SIZE'. */
extern Lisp_Object Vx_pixel_size_width_font_regexp;
-/* A flag to control how to display unibyte 8-bit character. */
-extern int unibyte_display_via_language_environment;
-
struct w32_display_info *x_display_info_for_name ();
Lisp_Object display_x_get_resource P_ ((struct w32_display_info *,
diffs between X and w32 code. */
struct x_output
{
+#if 0 /* These are also defined in struct frame. Use that instead. */
PIX_TYPE background_pixel;
PIX_TYPE foreground_pixel;
+#endif
/* Keep track of focus. May be EXPLICIT if we received a FocusIn for this
frame, or IMPLICIT if we received an EnterNotify.
/* Nonzero means menubar is currently active. */
char menubar_active;
- /* Nonzero means a menu command is being processed. */
- char menu_command_in_progress;
-
/* Nonzero means menubar is about to become active, but should be
brought up to date first. */
volatile char pending_menu_activation;
place where the user grabbed it. If the handle isn't currently
being dragged, this is Qnil. */
Lisp_Object dragging;
+
+ /* t if the background of the fringe that is adjacent to a scroll
+ bar is extended to the gap between the fringe and the bar. */
+ Lisp_Object fringe_extended_p;
};
/* The number of elements a vector holding a struct scroll_bar needs. */
extern void w32_clear_window ();
#define w32_fill_area(f,hdc,pix,x,y,nx,ny) \
-{ \
+do { \
RECT rect; \
rect.left = x; \
rect.top = y; \
rect.right = x + nx; \
rect.bottom = y + ny; \
w32_fill_rect (f,hdc,pix,&rect); \
-}
+} while (0)
#define w32_clear_rect(f,hdc,lprect) \
-w32_fill_rect (f,hdc,f->output_data.x->background_pixel,lprect)
+ w32_fill_rect (f, hdc, FRAME_BACKGROUND_PIXEL (f), lprect)
#define w32_clear_area(f,hdc,px,py,nx,ny) \
-w32_fill_area (f,hdc,f->output_data.x->background_pixel,px,py,nx,ny)
+ w32_fill_area (f, hdc, FRAME_BACKGROUND_PIXEL (f), px, py, nx, ny)
extern struct font_info *w32_load_font ();
extern void w32_unload_font ();
#define WM_XBUTTONDOWN (WM_MOUSEWHEEL + 1)
#define WM_XBUTTONUP (WM_MOUSEWHEEL + 2)
#endif /* WM_XBUTTONDOWN */
+#ifndef WM_MOUSEHWHEEL
+#define WM_MOUSEHWHEEL (WM_MOUSEWHEEL + 4)
+#endif /* WM_MOUSEHWHEEL */
#define WM_EMACS_START (WM_USER + 1)
#define WM_EMACS_KILL (WM_EMACS_START + 0)
extern BOOL parse_button ();
+extern void w32_sys_ring_bell (struct frame *f);
+extern void x_delete_display (struct w32_display_info *dpyinfo);
+
/* Keypad command key support. W32 doesn't have virtual keys defined
for the function keys on the keypad (they are mapped to the standard
fuction keys), so we define our own. */