annotate src/w32term.h @ 62675:114ecd5ee47b

Add more pointers to ports of Unix tools to Windows, and to the Emacs Wiki (which contains building instructions for Windows). Reword image library instructions and remove obsolete incompatibility information.
author Juanma Barranquero <lekktu@gmail.com>
date Tue, 24 May 2005 10:40:51 +0000
parents 3b4d5e41f3fd
children a8fa7c632ee4 2006100ee57e 4da4a09e8b1b
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
16886
c686d4f3728a Change all uses of win95, winnt, and win32 into Windows 95, Windows
Geoff Voelker <voelker@cs.washington.edu>
parents: 16588
diff changeset
1 /* Definitions and headers for communication on the Microsoft W32 API.
36254
f64eaa8f61aa (struct x_output): Rename busy_cursor to
Gerd Moellmann <gerd@gnu.org>
parents: 34282
diff changeset
2 Copyright (C) 1995, 2001 Free Software Foundation, Inc.
13543
23c68d2e061f Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
3
23c68d2e061f Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
4 This file is part of GNU Emacs.
23c68d2e061f Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
5
23c68d2e061f Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
6 GNU Emacs is free software; you can redistribute it and/or modify
23c68d2e061f Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
7 it under the terms of the GNU General Public License as published by
23c68d2e061f Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
8 the Free Software Foundation; either version 2, or (at your option)
23c68d2e061f Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
9 any later version.
23c68d2e061f Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
10
23c68d2e061f Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
11 GNU Emacs is distributed in the hope that it will be useful,
23c68d2e061f Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
12 but WITHOUT ANY WARRANTY; without even the implied warranty of
23c68d2e061f Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
13 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
23c68d2e061f Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
14 GNU General Public License for more details.
23c68d2e061f Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
15
23c68d2e061f Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
16 You should have received a copy of the GNU General Public License
23c68d2e061f Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
17 along with GNU Emacs; see the file COPYING. If not, write to
14186
ee40177f6c68 Update FSF's address in the preamble.
Erik Naggum <erik@naggum.no>
parents: 13543
diff changeset
18 the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
ee40177f6c68 Update FSF's address in the preamble.
Erik Naggum <erik@naggum.no>
parents: 13543
diff changeset
19 Boston, MA 02111-1307, USA. */
13543
23c68d2e061f Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
20
23c68d2e061f Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
21 /* Added by Kevin Gallo */
23c68d2e061f Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
22
27403
220407a99b21 (XCharStruct): New struct for emulating X.
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
23 #include "w32gui.h"
13543
23c68d2e061f Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
24
23c68d2e061f Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
25
14984
e8a969370f33 (BLACK_PIX_DEFAULT, WHITE_PIX_DEFAULT): Use PALETTERGB instead of RGB.
Geoff Voelker <voelker@cs.washington.edu>
parents: 14809
diff changeset
26 #define BLACK_PIX_DEFAULT(f) PALETTERGB(0,0,0)
e8a969370f33 (BLACK_PIX_DEFAULT, WHITE_PIX_DEFAULT): Use PALETTERGB instead of RGB.
Geoff Voelker <voelker@cs.washington.edu>
parents: 14809
diff changeset
27 #define WHITE_PIX_DEFAULT(f) PALETTERGB(255,255,255)
13543
23c68d2e061f Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
28
24145
95d0947c83b2 (FONT_WIDTH, FONT_HEIGHT, FONT_BASE, FONT_MAX_WIDTH):
Geoff Voelker <voelker@cs.washington.edu>
parents: 23807
diff changeset
29 #define FONT_WIDTH(f) \
95d0947c83b2 (FONT_WIDTH, FONT_HEIGHT, FONT_BASE, FONT_MAX_WIDTH):
Geoff Voelker <voelker@cs.washington.edu>
parents: 23807
diff changeset
30 ((f)->bdf ? (f)->bdf->width : (f)->tm.tmAveCharWidth)
95d0947c83b2 (FONT_WIDTH, FONT_HEIGHT, FONT_BASE, FONT_MAX_WIDTH):
Geoff Voelker <voelker@cs.washington.edu>
parents: 23807
diff changeset
31 #define FONT_HEIGHT(f) \
95d0947c83b2 (FONT_WIDTH, FONT_HEIGHT, FONT_BASE, FONT_MAX_WIDTH):
Geoff Voelker <voelker@cs.washington.edu>
parents: 23807
diff changeset
32 ((f)->bdf ? (f)->bdf->height : (f)->tm.tmHeight)
95d0947c83b2 (FONT_WIDTH, FONT_HEIGHT, FONT_BASE, FONT_MAX_WIDTH):
Geoff Voelker <voelker@cs.washington.edu>
parents: 23807
diff changeset
33 #define FONT_BASE(f) \
95d0947c83b2 (FONT_WIDTH, FONT_HEIGHT, FONT_BASE, FONT_MAX_WIDTH):
Geoff Voelker <voelker@cs.washington.edu>
parents: 23807
diff changeset
34 ((f)->bdf ? (f)->bdf->ury : (f)->tm.tmAscent)
27403
220407a99b21 (XCharStruct): New struct for emulating X.
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
35 #define FONT_DESCENT(f) \
33036
9fa317523a69 (FONT_DESCENT): Negate descent for BDF fonts
Jason Rumney <jasonr@gnu.org>
parents: 32723
diff changeset
36 ((f)->bdf ? -((f)->bdf->lly) : (f)->tm.tmDescent)
24145
95d0947c83b2 (FONT_WIDTH, FONT_HEIGHT, FONT_BASE, FONT_MAX_WIDTH):
Geoff Voelker <voelker@cs.washington.edu>
parents: 23807
diff changeset
37 #define FONT_MAX_WIDTH(f) \
95d0947c83b2 (FONT_WIDTH, FONT_HEIGHT, FONT_BASE, FONT_MAX_WIDTH):
Geoff Voelker <voelker@cs.washington.edu>
parents: 23807
diff changeset
38 ((f)->bdf ? (f)->bdf->width : (f)->tm.tmMaxCharWidth)
13543
23c68d2e061f Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
39
29309
7f49fb2648f1 (CP_DEFAULT): Define.
Jason Rumney <jasonr@gnu.org>
parents: 27403
diff changeset
40 #define CP_DEFAULT 1004
33453
79e5d8c30cf2 Fix a typo in a comment.
Eli Zaretskii <eliz@gnu.org>
parents: 33388
diff changeset
41 /* Special pseudo-codepages. */
33388
ba5202c8e467 (CP_8BIT, CP_UNICODE, CP_INVALID): New pseudo-codepages.
Jason Rumney <jasonr@gnu.org>
parents: 33036
diff changeset
42 #define CP_8BIT -1
ba5202c8e467 (CP_8BIT, CP_UNICODE, CP_INVALID): New pseudo-codepages.
Jason Rumney <jasonr@gnu.org>
parents: 33036
diff changeset
43 #define CP_UNICODE -2
34282
ef13c60c3087 (CP_INVALID): Rename to CP_UNKNOWN.
Andrew Innes <andrewi@gnu.org>
parents: 34134
diff changeset
44 #define CP_UNKNOWN -3
29309
7f49fb2648f1 (CP_DEFAULT): Define.
Jason Rumney <jasonr@gnu.org>
parents: 27403
diff changeset
45
16588
481b7874a1e9 Change identifiers of the form win32* to w32*.
Geoff Voelker <voelker@cs.washington.edu>
parents: 15152
diff changeset
46 #define CHECK_W32_FRAME(f, frame) \
13543
23c68d2e061f Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
47 if (NILP (frame)) \
27403
220407a99b21 (XCharStruct): New struct for emulating X.
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
48 f = SELECTED_FRAME (); \
13543
23c68d2e061f Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
49 else \
23c68d2e061f Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
50 { \
23c68d2e061f Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
51 CHECK_LIVE_FRAME (frame, 0); \
23c68d2e061f Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
52 f = XFRAME (frame); \
23c68d2e061f Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
53 } \
16588
481b7874a1e9 Change identifiers of the form win32* to w32*.
Geoff Voelker <voelker@cs.washington.edu>
parents: 15152
diff changeset
54 if (! FRAME_W32_P (f))
13543
23c68d2e061f Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
55
23c68d2e061f Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
56 /* Indicates whether we are in the readsocket call and the message we
23c68d2e061f Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
57 are processing in the current loop */
23c68d2e061f Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
58
23c68d2e061f Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
59 extern MSG CurMsg;
23c68d2e061f Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
60 extern BOOL bUseDflt;
23c68d2e061f Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
61
23c68d2e061f Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
62 extern struct frame *x_window_to_frame ();
23c68d2e061f Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
63
23c68d2e061f Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
64 /* Structure recording bitmaps and reference count.
23c68d2e061f Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
65 If REFCOUNT is 0 then this record is free to be reused. */
23c68d2e061f Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
66
49600
23a1cea22d13 Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 49370
diff changeset
67 struct w32_bitmap_record
13543
23c68d2e061f Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
68 {
23c68d2e061f Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
69 Pixmap pixmap;
23c68d2e061f Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
70 char *file;
23c68d2e061f Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
71 HINSTANCE hinst; /* Used to load the file */
23c68d2e061f Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
72 int refcount;
23c68d2e061f Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
73 /* Record some info about this pixmap. */
23c68d2e061f Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
74 int height, width, depth;
23c68d2e061f Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
75 };
15152
2dd4961cefaa (struct win32_palette_entry): New structure.
Geoff Voelker <voelker@cs.washington.edu>
parents: 14984
diff changeset
76
2dd4961cefaa (struct win32_palette_entry): New structure.
Geoff Voelker <voelker@cs.washington.edu>
parents: 14984
diff changeset
77 /* Palette book-keeping stuff for mapping requested colors into the
2dd4961cefaa (struct win32_palette_entry): New structure.
Geoff Voelker <voelker@cs.washington.edu>
parents: 14984
diff changeset
78 system palette. Keep a ref-counted list of requested colors and
2dd4961cefaa (struct win32_palette_entry): New structure.
Geoff Voelker <voelker@cs.washington.edu>
parents: 14984
diff changeset
79 regenerate the app palette whenever the requested list changes. */
2dd4961cefaa (struct win32_palette_entry): New structure.
Geoff Voelker <voelker@cs.washington.edu>
parents: 14984
diff changeset
80
16588
481b7874a1e9 Change identifiers of the form win32* to w32*.
Geoff Voelker <voelker@cs.washington.edu>
parents: 15152
diff changeset
81 extern Lisp_Object Vw32_enable_palette;
15152
2dd4961cefaa (struct win32_palette_entry): New structure.
Geoff Voelker <voelker@cs.washington.edu>
parents: 14984
diff changeset
82
16588
481b7874a1e9 Change identifiers of the form win32* to w32*.
Geoff Voelker <voelker@cs.washington.edu>
parents: 15152
diff changeset
83 struct w32_palette_entry {
481b7874a1e9 Change identifiers of the form win32* to w32*.
Geoff Voelker <voelker@cs.washington.edu>
parents: 15152
diff changeset
84 struct w32_palette_entry * next;
15152
2dd4961cefaa (struct win32_palette_entry): New structure.
Geoff Voelker <voelker@cs.washington.edu>
parents: 14984
diff changeset
85 PALETTEENTRY entry;
2dd4961cefaa (struct win32_palette_entry): New structure.
Geoff Voelker <voelker@cs.washington.edu>
parents: 14984
diff changeset
86 #if 0
2dd4961cefaa (struct win32_palette_entry): New structure.
Geoff Voelker <voelker@cs.washington.edu>
parents: 14984
diff changeset
87 unsigned refcount;
2dd4961cefaa (struct win32_palette_entry): New structure.
Geoff Voelker <voelker@cs.washington.edu>
parents: 14984
diff changeset
88 #endif
2dd4961cefaa (struct win32_palette_entry): New structure.
Geoff Voelker <voelker@cs.washington.edu>
parents: 14984
diff changeset
89 };
2dd4961cefaa (struct win32_palette_entry): New structure.
Geoff Voelker <voelker@cs.washington.edu>
parents: 14984
diff changeset
90
16588
481b7874a1e9 Change identifiers of the form win32* to w32*.
Geoff Voelker <voelker@cs.washington.edu>
parents: 15152
diff changeset
91 extern void w32_regenerate_palette(struct frame *f);
15152
2dd4961cefaa (struct win32_palette_entry): New structure.
Geoff Voelker <voelker@cs.washington.edu>
parents: 14984
diff changeset
92
13543
23c68d2e061f Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
93
16588
481b7874a1e9 Change identifiers of the form win32* to w32*.
Geoff Voelker <voelker@cs.washington.edu>
parents: 15152
diff changeset
94 /* For each display (currently only one on w32), we have a structure that
13543
23c68d2e061f Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
95 records information about it. */
23c68d2e061f Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
96
16588
481b7874a1e9 Change identifiers of the form win32* to w32*.
Geoff Voelker <voelker@cs.washington.edu>
parents: 15152
diff changeset
97 struct w32_display_info
13543
23c68d2e061f Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
98 {
16588
481b7874a1e9 Change identifiers of the form win32* to w32*.
Geoff Voelker <voelker@cs.washington.edu>
parents: 15152
diff changeset
99 /* Chain of all w32_display_info structures. */
481b7874a1e9 Change identifiers of the form win32* to w32*.
Geoff Voelker <voelker@cs.washington.edu>
parents: 15152
diff changeset
100 struct w32_display_info *next;
27403
220407a99b21 (XCharStruct): New struct for emulating X.
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
101
13543
23c68d2e061f Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
102 /* This is a cons cell of the form (NAME . FONT-LIST-CACHE).
23c68d2e061f Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
103 The same cons cell also appears in x_display_name_list. */
23c68d2e061f Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
104 Lisp_Object name_list_element;
27403
220407a99b21 (XCharStruct): New struct for emulating X.
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
105
13543
23c68d2e061f Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
106 /* Number of frames that are on this display. */
23c68d2e061f Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
107 int reference_count;
27403
220407a99b21 (XCharStruct): New struct for emulating X.
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
108
220407a99b21 (XCharStruct): New struct for emulating X.
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
109 /* Dots per inch of the screen. */
220407a99b21 (XCharStruct): New struct for emulating X.
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
110 double resx, resy;
220407a99b21 (XCharStruct): New struct for emulating X.
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
111
13543
23c68d2e061f Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
112 /* Number of planes on this screen. */
23c68d2e061f Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
113 int n_planes;
27403
220407a99b21 (XCharStruct): New struct for emulating X.
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
114
13543
23c68d2e061f Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
115 /* Number of bits per pixel on this screen. */
23c68d2e061f Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
116 int n_cbits;
27403
220407a99b21 (XCharStruct): New struct for emulating X.
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
117
13543
23c68d2e061f Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
118 /* Dimensions of this screen. */
23c68d2e061f Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
119 int height, width;
23c68d2e061f Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
120 int height_in,width_in;
27403
220407a99b21 (XCharStruct): New struct for emulating X.
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
121
13543
23c68d2e061f Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
122 /* Mask of things that cause the mouse to be grabbed. */
23c68d2e061f Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
123 int grabbed;
27403
220407a99b21 (XCharStruct): New struct for emulating X.
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
124
220407a99b21 (XCharStruct): New struct for emulating X.
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
125 /* Emacs bitmap-id of the default icon bitmap for this frame.
220407a99b21 (XCharStruct): New struct for emulating X.
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
126 Or -1 if none has been allocated yet. */
220407a99b21 (XCharStruct): New struct for emulating X.
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
127 int icon_bitmap_id;
220407a99b21 (XCharStruct): New struct for emulating X.
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
128
13543
23c68d2e061f Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
129 /* The root window of this screen. */
23c68d2e061f Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
130 Window root_window;
27403
220407a99b21 (XCharStruct): New struct for emulating X.
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
131
13543
23c68d2e061f Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
132 /* The cursor to use for vertical scroll bars. */
23c68d2e061f Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
133 Cursor vertical_scroll_bar_cursor;
23c68d2e061f Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
134
50037
bb427a9406c3 (struct w32_display_info): Add xrdb member to support passing resources via -xrm
Juanma Barranquero <lekktu@gmail.com>
parents: 49600
diff changeset
135 /* Resource data base */
50366
b8a179bd89b1 (EMACS_CLASS): Remove. Use generic define.
Kim F. Storm <storm@cua.dk>
parents: 50232
diff changeset
136 XrmDatabase xrdb;
50037
bb427a9406c3 (struct w32_display_info): Add xrdb member to support passing resources via -xrm
Juanma Barranquero <lekktu@gmail.com>
parents: 49600
diff changeset
137
23676
704d2e178bcb (struct w32_display_info): New element faked_key.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23508
diff changeset
138 /* color palette information. */
15152
2dd4961cefaa (struct win32_palette_entry): New structure.
Geoff Voelker <voelker@cs.washington.edu>
parents: 14984
diff changeset
139 int has_palette;
16588
481b7874a1e9 Change identifiers of the form win32* to w32*.
Geoff Voelker <voelker@cs.washington.edu>
parents: 15152
diff changeset
140 struct w32_palette_entry * color_list;
15152
2dd4961cefaa (struct win32_palette_entry): New structure.
Geoff Voelker <voelker@cs.washington.edu>
parents: 14984
diff changeset
141 unsigned num_colors;
2dd4961cefaa (struct win32_palette_entry): New structure.
Geoff Voelker <voelker@cs.washington.edu>
parents: 14984
diff changeset
142 HPALETTE palette;
2dd4961cefaa (struct win32_palette_entry): New structure.
Geoff Voelker <voelker@cs.washington.edu>
parents: 14984
diff changeset
143
23676
704d2e178bcb (struct w32_display_info): New element faked_key.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23508
diff changeset
144 /* deferred action flags checked when starting frame update. */
15152
2dd4961cefaa (struct win32_palette_entry): New structure.
Geoff Voelker <voelker@cs.washington.edu>
parents: 14984
diff changeset
145 int regen_palette;
2dd4961cefaa (struct win32_palette_entry): New structure.
Geoff Voelker <voelker@cs.washington.edu>
parents: 14984
diff changeset
146
23676
704d2e178bcb (struct w32_display_info): New element faked_key.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23508
diff changeset
147 /* Keystroke that has been faked by Emacs and will be ignored when
704d2e178bcb (struct w32_display_info): New element faked_key.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23508
diff changeset
148 received; value is reset after key is received. */
704d2e178bcb (struct w32_display_info): New element faked_key.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23508
diff changeset
149 int faked_key;
704d2e178bcb (struct w32_display_info): New element faked_key.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23508
diff changeset
150
13543
23c68d2e061f Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
151 /* A table of all the fonts we have already loaded. */
23c68d2e061f Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
152 struct font_info *font_table;
23c68d2e061f Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
153
23508
4e067ce42325 Remove redundant font_info struct definition.
Geoff Voelker <voelker@cs.washington.edu>
parents: 22080
diff changeset
154 /* The current capacity of font_table. */
13543
23c68d2e061f Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
155 int font_table_size;
23c68d2e061f Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
156
27403
220407a99b21 (XCharStruct): New struct for emulating X.
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
157 /* Minimum width over all characters in all fonts in font_table. */
220407a99b21 (XCharStruct): New struct for emulating X.
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
158 int smallest_char_width;
220407a99b21 (XCharStruct): New struct for emulating X.
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
159
220407a99b21 (XCharStruct): New struct for emulating X.
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
160 /* Minimum font height over all fonts in font_table. */
220407a99b21 (XCharStruct): New struct for emulating X.
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
161 int smallest_font_height;
220407a99b21 (XCharStruct): New struct for emulating X.
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
162
220407a99b21 (XCharStruct): New struct for emulating X.
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
163 /* Reusable Graphics Context for drawing a cursor in a non-default face. */
220407a99b21 (XCharStruct): New struct for emulating X.
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
164 XGCValues *scratch_cursor_gc;
220407a99b21 (XCharStruct): New struct for emulating X.
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
165
220407a99b21 (XCharStruct): New struct for emulating X.
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
166 /* These variables describe the range of text currently shown in its
220407a99b21 (XCharStruct): New struct for emulating X.
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
167 mouse-face, together with the window they apply to. As long as
220407a99b21 (XCharStruct): New struct for emulating X.
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
168 the mouse stays within this range, we need not redraw anything on
220407a99b21 (XCharStruct): New struct for emulating X.
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
169 its account. Rows and columns are glyph matrix positions in
220407a99b21 (XCharStruct): New struct for emulating X.
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
170 MOUSE_FACE_WINDOW. */
13543
23c68d2e061f Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
171 int mouse_face_beg_row, mouse_face_beg_col;
27403
220407a99b21 (XCharStruct): New struct for emulating X.
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
172 int mouse_face_beg_x, mouse_face_beg_y;
13543
23c68d2e061f Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
173 int mouse_face_end_row, mouse_face_end_col;
27403
220407a99b21 (XCharStruct): New struct for emulating X.
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
174 int mouse_face_end_x, mouse_face_end_y;
13543
23c68d2e061f Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
175 int mouse_face_past_end;
23c68d2e061f Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
176 Lisp_Object mouse_face_window;
23c68d2e061f Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
177 int mouse_face_face_id;
40150
eed2220c99a5 (struct w32_output): Use correct spelling of x_compatible.
Jason Rumney <jasonr@gnu.org>
parents: 38569
diff changeset
178 Lisp_Object mouse_face_overlay;
13543
23c68d2e061f Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
179
23c68d2e061f Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
180 /* 1 if a mouse motion event came and we didn't handle it right away because
23c68d2e061f Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
181 gc was in progress. */
23c68d2e061f Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
182 int mouse_face_deferred_gc;
23c68d2e061f Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
183
23c68d2e061f Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
184 /* FRAME and X, Y position of mouse when last checked for
23c68d2e061f Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
185 highlighting. X and Y can be negative or out of range for the frame. */
23c68d2e061f Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
186 struct frame *mouse_face_mouse_frame;
23c68d2e061f Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
187 int mouse_face_mouse_x, mouse_face_mouse_y;
23c68d2e061f Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
188
23c68d2e061f Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
189 /* Nonzero means defer mouse-motion highlighting. */
23c68d2e061f Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
190 int mouse_face_defer;
23c68d2e061f Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
191
43372
e1a8a3f02251 (struct w32_display_info): Add mouse_face_hidden.
Kim F. Storm <storm@cua.dk>
parents: 42863
diff changeset
192 /* Nonzero means that the mouse highlight should not be shown. */
e1a8a3f02251 (struct w32_display_info): Add mouse_face_hidden.
Kim F. Storm <storm@cua.dk>
parents: 42863
diff changeset
193 int mouse_face_hidden;
e1a8a3f02251 (struct w32_display_info): Add mouse_face_hidden.
Kim F. Storm <storm@cua.dk>
parents: 42863
diff changeset
194
27403
220407a99b21 (XCharStruct): New struct for emulating X.
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
195 int mouse_face_image_state;
220407a99b21 (XCharStruct): New struct for emulating X.
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
196
16588
481b7874a1e9 Change identifiers of the form win32* to w32*.
Geoff Voelker <voelker@cs.washington.edu>
parents: 15152
diff changeset
197 char *w32_id_name;
13543
23c68d2e061f Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
198
16588
481b7874a1e9 Change identifiers of the form win32* to w32*.
Geoff Voelker <voelker@cs.washington.edu>
parents: 15152
diff changeset
199 /* The number of fonts actually stored in w32_font_table.
27403
220407a99b21 (XCharStruct): New struct for emulating X.
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
200 font_table[n] is used and valid iff 0 <= n < n_fonts. 0 <=
220407a99b21 (XCharStruct): New struct for emulating X.
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
201 n_fonts <= font_table_size. and font_table[i].name != 0. */
13543
23c68d2e061f Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
202 int n_fonts;
23c68d2e061f Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
203
23c68d2e061f Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
204 /* Pointer to bitmap records. */
16588
481b7874a1e9 Change identifiers of the form win32* to w32*.
Geoff Voelker <voelker@cs.washington.edu>
parents: 15152
diff changeset
205 struct w32_bitmap_record *bitmaps;
13543
23c68d2e061f Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
206
23c68d2e061f Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
207 /* Allocated size of bitmaps field. */
23c68d2e061f Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
208 int bitmaps_size;
23c68d2e061f Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
209
23c68d2e061f Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
210 /* Last used bitmap index. */
23c68d2e061f Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
211 int bitmaps_last;
23c68d2e061f Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
212
23c68d2e061f Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
213 /* The frame (if any) which has the window that has keyboard focus.
23c68d2e061f Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
214 Zero if none. This is examined by Ffocus_frame in w32fns.c. Note
23c68d2e061f Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
215 that a mere EnterNotify event can set this; if you need to know the
23c68d2e061f Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
216 last frame specified in a FocusIn or FocusOut event, use
16588
481b7874a1e9 Change identifiers of the form win32* to w32*.
Geoff Voelker <voelker@cs.washington.edu>
parents: 15152
diff changeset
217 w32_focus_event_frame. */
481b7874a1e9 Change identifiers of the form win32* to w32*.
Geoff Voelker <voelker@cs.washington.edu>
parents: 15152
diff changeset
218 struct frame *w32_focus_frame;
13543
23c68d2e061f Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
219
23c68d2e061f Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
220 /* The last frame mentioned in a FocusIn or FocusOut event. This is
16588
481b7874a1e9 Change identifiers of the form win32* to w32*.
Geoff Voelker <voelker@cs.washington.edu>
parents: 15152
diff changeset
221 separate from w32_focus_frame, because whether or not LeaveNotify
13543
23c68d2e061f Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
222 events cause us to lose focus depends on whether or not we have
23c68d2e061f Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
223 received a FocusIn event for it. */
16588
481b7874a1e9 Change identifiers of the form win32* to w32*.
Geoff Voelker <voelker@cs.washington.edu>
parents: 15152
diff changeset
224 struct frame *w32_focus_event_frame;
13543
23c68d2e061f Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
225
23c68d2e061f Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
226 /* The frame which currently has the visual highlight, and should get
23c68d2e061f Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
227 keyboard input (other sorts of input have the frame encoded in the
23c68d2e061f Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
228 event). It points to the focus frame's selected window's
16588
481b7874a1e9 Change identifiers of the form win32* to w32*.
Geoff Voelker <voelker@cs.washington.edu>
parents: 15152
diff changeset
229 frame. It differs from w32_focus_frame when we're using a global
13543
23c68d2e061f Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
230 minibuffer. */
47149
facc9fbc1777 (struct w32_display_info) <x_highlight_frame>: Renamed from
Kim F. Storm <storm@cua.dk>
parents: 47141
diff changeset
231 struct frame *x_highlight_frame;
27403
220407a99b21 (XCharStruct): New struct for emulating X.
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
232
220407a99b21 (XCharStruct): New struct for emulating X.
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
233 /* Cache of images. */
220407a99b21 (XCharStruct): New struct for emulating X.
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
234 struct image_cache *image_cache;
13543
23c68d2e061f Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
235 };
23c68d2e061f Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
236
23c68d2e061f Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
237 /* This is a chain of structures for all the displays currently in use. */
38569
dbf5f78bc403 (x_display_list): New extern.
Andrew Innes <andrewi@gnu.org>
parents: 37698
diff changeset
238 extern struct w32_display_info *x_display_list;
16588
481b7874a1e9 Change identifiers of the form win32* to w32*.
Geoff Voelker <voelker@cs.washington.edu>
parents: 15152
diff changeset
239 extern struct w32_display_info one_w32_display_info;
13543
23c68d2e061f Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
240
23c68d2e061f Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
241 /* This is a list of cons cells, each of the form (NAME . FONT-LIST-CACHE),
16588
481b7874a1e9 Change identifiers of the form win32* to w32*.
Geoff Voelker <voelker@cs.washington.edu>
parents: 15152
diff changeset
242 one for each element of w32_display_list and in the same order.
13543
23c68d2e061f Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
243 NAME is the name of the frame.
23c68d2e061f Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
244 FONT-LIST-CACHE records previous values returned by x-list-fonts. */
16588
481b7874a1e9 Change identifiers of the form win32* to w32*.
Geoff Voelker <voelker@cs.washington.edu>
parents: 15152
diff changeset
245 extern Lisp_Object w32_display_name_list;
13543
23c68d2e061f Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
246
23508
4e067ce42325 Remove redundant font_info struct definition.
Geoff Voelker <voelker@cs.washington.edu>
parents: 22080
diff changeset
247 /* Regexp matching a font name whose width is the same as `PIXEL_SIZE'. */
4e067ce42325 Remove redundant font_info struct definition.
Geoff Voelker <voelker@cs.washington.edu>
parents: 22080
diff changeset
248 extern Lisp_Object Vx_pixel_size_width_font_regexp;
4e067ce42325 Remove redundant font_info struct definition.
Geoff Voelker <voelker@cs.washington.edu>
parents: 22080
diff changeset
249
4e067ce42325 Remove redundant font_info struct definition.
Geoff Voelker <voelker@cs.washington.edu>
parents: 22080
diff changeset
250 /* A flag to control how to display unibyte 8-bit character. */
4e067ce42325 Remove redundant font_info struct definition.
Geoff Voelker <voelker@cs.washington.edu>
parents: 22080
diff changeset
251 extern int unibyte_display_via_language_environment;
4e067ce42325 Remove redundant font_info struct definition.
Geoff Voelker <voelker@cs.washington.edu>
parents: 22080
diff changeset
252
27403
220407a99b21 (XCharStruct): New struct for emulating X.
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
253 struct w32_display_info *x_display_info_for_name ();
13543
23c68d2e061f Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
254
55672
c2e5f1d0cc84 (display_x_get_resource, vga_stdcolor_name): Add prototype.
Jason Rumney <jasonr@gnu.org>
parents: 55031
diff changeset
255 Lisp_Object display_x_get_resource P_ ((struct w32_display_info *,
c2e5f1d0cc84 (display_x_get_resource, vga_stdcolor_name): Add prototype.
Jason Rumney <jasonr@gnu.org>
parents: 55031
diff changeset
256 Lisp_Object, Lisp_Object,
c2e5f1d0cc84 (display_x_get_resource, vga_stdcolor_name): Add prototype.
Jason Rumney <jasonr@gnu.org>
parents: 55031
diff changeset
257 Lisp_Object, Lisp_Object));
c2e5f1d0cc84 (display_x_get_resource, vga_stdcolor_name): Add prototype.
Jason Rumney <jasonr@gnu.org>
parents: 55031
diff changeset
258
16588
481b7874a1e9 Change identifiers of the form win32* to w32*.
Geoff Voelker <voelker@cs.washington.edu>
parents: 15152
diff changeset
259 extern struct w32_display_info *w32_term_init ();
13543
23c68d2e061f Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
260
27403
220407a99b21 (XCharStruct): New struct for emulating X.
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
261 extern Lisp_Object w32_list_fonts P_ ((struct frame *, Lisp_Object, int, int));
23508
4e067ce42325 Remove redundant font_info struct definition.
Geoff Voelker <voelker@cs.washington.edu>
parents: 22080
diff changeset
262 extern struct font_info *w32_get_font_info (), *w32_query_font ();
32723
58dcefea99de Extern decl for w32_cache_char_metrics.
Andrew Innes <andrewi@gnu.org>
parents: 30987
diff changeset
263 extern void w32_cache_char_metrics (XFontStruct *font);
23508
4e067ce42325 Remove redundant font_info struct definition.
Geoff Voelker <voelker@cs.washington.edu>
parents: 22080
diff changeset
264 extern void w32_find_ccl_program();
4e067ce42325 Remove redundant font_info struct definition.
Geoff Voelker <voelker@cs.washington.edu>
parents: 22080
diff changeset
265
27403
220407a99b21 (XCharStruct): New struct for emulating X.
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
266 #define PIX_TYPE COLORREF
220407a99b21 (XCharStruct): New struct for emulating X.
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
267
16588
481b7874a1e9 Change identifiers of the form win32* to w32*.
Geoff Voelker <voelker@cs.washington.edu>
parents: 15152
diff changeset
268 /* Each W32 frame object points to its own struct w32_display object
481b7874a1e9 Change identifiers of the form win32* to w32*.
Geoff Voelker <voelker@cs.washington.edu>
parents: 15152
diff changeset
269 in the output_data.w32 field. The w32_display structure contains all
481b7874a1e9 Change identifiers of the form win32* to w32*.
Geoff Voelker <voelker@cs.washington.edu>
parents: 15152
diff changeset
270 the information that is specific to W32 windows. */
13543
23c68d2e061f Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
271
27403
220407a99b21 (XCharStruct): New struct for emulating X.
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
272 /* Put some things in x_output for compatibility.
220407a99b21 (XCharStruct): New struct for emulating X.
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
273 NTEMACS_TODO: Move all common things here to eliminate unneccesary
220407a99b21 (XCharStruct): New struct for emulating X.
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
274 diffs between X and w32 code. */
220407a99b21 (XCharStruct): New struct for emulating X.
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
275 struct x_output
220407a99b21 (XCharStruct): New struct for emulating X.
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
276 {
220407a99b21 (XCharStruct): New struct for emulating X.
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
277 PIX_TYPE background_pixel;
220407a99b21 (XCharStruct): New struct for emulating X.
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
278 PIX_TYPE foreground_pixel;
60949
3b4d5e41f3fd (x_output): add focus_state.
Jason Rumney <jasonr@gnu.org>
parents: 56972
diff changeset
279
3b4d5e41f3fd (x_output): add focus_state.
Jason Rumney <jasonr@gnu.org>
parents: 56972
diff changeset
280 /* Keep track of focus. May be EXPLICIT if we received a FocusIn for this
3b4d5e41f3fd (x_output): add focus_state.
Jason Rumney <jasonr@gnu.org>
parents: 56972
diff changeset
281 frame, or IMPLICIT if we received an EnterNotify.
3b4d5e41f3fd (x_output): add focus_state.
Jason Rumney <jasonr@gnu.org>
parents: 56972
diff changeset
282 FocusOut and LeaveNotify clears EXPLICIT/IMPLICIT. */
3b4d5e41f3fd (x_output): add focus_state.
Jason Rumney <jasonr@gnu.org>
parents: 56972
diff changeset
283 int focus_state;
3b4d5e41f3fd (x_output): add focus_state.
Jason Rumney <jasonr@gnu.org>
parents: 56972
diff changeset
284
27403
220407a99b21 (XCharStruct): New struct for emulating X.
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
285 };
220407a99b21 (XCharStruct): New struct for emulating X.
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
286
60949
3b4d5e41f3fd (x_output): add focus_state.
Jason Rumney <jasonr@gnu.org>
parents: 56972
diff changeset
287 enum
3b4d5e41f3fd (x_output): add focus_state.
Jason Rumney <jasonr@gnu.org>
parents: 56972
diff changeset
288 {
3b4d5e41f3fd (x_output): add focus_state.
Jason Rumney <jasonr@gnu.org>
parents: 56972
diff changeset
289 /* Values for focus_state, used as bit mask.
3b4d5e41f3fd (x_output): add focus_state.
Jason Rumney <jasonr@gnu.org>
parents: 56972
diff changeset
290 EXPLICIT means we received a FocusIn for the frame and know it has
3b4d5e41f3fd (x_output): add focus_state.
Jason Rumney <jasonr@gnu.org>
parents: 56972
diff changeset
291 the focus. IMPLICIT means we recevied an EnterNotify and the frame
3b4d5e41f3fd (x_output): add focus_state.
Jason Rumney <jasonr@gnu.org>
parents: 56972
diff changeset
292 may have the focus if no window manager is running.
3b4d5e41f3fd (x_output): add focus_state.
Jason Rumney <jasonr@gnu.org>
parents: 56972
diff changeset
293 FocusOut and LeaveNotify clears EXPLICIT/IMPLICIT. */
3b4d5e41f3fd (x_output): add focus_state.
Jason Rumney <jasonr@gnu.org>
parents: 56972
diff changeset
294 FOCUS_NONE = 0,
3b4d5e41f3fd (x_output): add focus_state.
Jason Rumney <jasonr@gnu.org>
parents: 56972
diff changeset
295 FOCUS_IMPLICIT = 1,
3b4d5e41f3fd (x_output): add focus_state.
Jason Rumney <jasonr@gnu.org>
parents: 56972
diff changeset
296 FOCUS_EXPLICIT = 2
3b4d5e41f3fd (x_output): add focus_state.
Jason Rumney <jasonr@gnu.org>
parents: 56972
diff changeset
297 };
27403
220407a99b21 (XCharStruct): New struct for emulating X.
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
298
16588
481b7874a1e9 Change identifiers of the form win32* to w32*.
Geoff Voelker <voelker@cs.washington.edu>
parents: 15152
diff changeset
299 struct w32_output
13543
23c68d2e061f Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
300 {
27403
220407a99b21 (XCharStruct): New struct for emulating X.
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
301 /* Placeholder for things accessed through output_data.x. */
40150
eed2220c99a5 (struct w32_output): Use correct spelling of x_compatible.
Jason Rumney <jasonr@gnu.org>
parents: 38569
diff changeset
302 struct x_output x_compatible;
27403
220407a99b21 (XCharStruct): New struct for emulating X.
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
303
19714
72fa0e75a0fe (w32_output): New fields menubar_widget, menubar_active,
Geoff Voelker <voelker@cs.washington.edu>
parents: 16888
diff changeset
304 /* Menubar "widget" handle. */
72fa0e75a0fe (w32_output): New fields menubar_widget, menubar_active,
Geoff Voelker <voelker@cs.washington.edu>
parents: 16888
diff changeset
305 HMENU menubar_widget;
72fa0e75a0fe (w32_output): New fields menubar_widget, menubar_active,
Geoff Voelker <voelker@cs.washington.edu>
parents: 16888
diff changeset
306
15152
2dd4961cefaa (struct win32_palette_entry): New structure.
Geoff Voelker <voelker@cs.washington.edu>
parents: 14984
diff changeset
307 /* Original palette (used to deselect real palette after drawing) */
2dd4961cefaa (struct win32_palette_entry): New structure.
Geoff Voelker <voelker@cs.washington.edu>
parents: 14984
diff changeset
308 HPALETTE old_palette;
2dd4961cefaa (struct win32_palette_entry): New structure.
Geoff Voelker <voelker@cs.washington.edu>
parents: 14984
diff changeset
309
27403
220407a99b21 (XCharStruct): New struct for emulating X.
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
310 /* Here are the Graphics Contexts for the default font. */
220407a99b21 (XCharStruct): New struct for emulating X.
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
311 XGCValues *cursor_gc; /* cursor drawing */
220407a99b21 (XCharStruct): New struct for emulating X.
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
312
13543
23c68d2e061f Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
313 /* The window used for this frame.
23c68d2e061f Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
314 May be zero while the frame object is being created
23c68d2e061f Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
315 and the window has not yet been created. */
23c68d2e061f Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
316 Window window_desc;
23c68d2e061f Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
317
23c68d2e061f Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
318 /* The window that is the parent of this window.
23c68d2e061f Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
319 Usually this is a window that was made by the window manager,
23c68d2e061f Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
320 but it can be the root window, and it can be explicitly specified
23c68d2e061f Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
321 (see the explicit_parent field, below). */
23c68d2e061f Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
322 Window parent_desc;
23c68d2e061f Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
323
23508
4e067ce42325 Remove redundant font_info struct definition.
Geoff Voelker <voelker@cs.washington.edu>
parents: 22080
diff changeset
324 /* Default ASCII font of this frame. */
13543
23c68d2e061f Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
325 XFontStruct *font;
23c68d2e061f Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
326
27403
220407a99b21 (XCharStruct): New struct for emulating X.
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
327 /* The baseline offset of the default ASCII font. */
220407a99b21 (XCharStruct): New struct for emulating X.
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
328 int baseline_offset;
23508
4e067ce42325 Remove redundant font_info struct definition.
Geoff Voelker <voelker@cs.washington.edu>
parents: 22080
diff changeset
329
4e067ce42325 Remove redundant font_info struct definition.
Geoff Voelker <voelker@cs.washington.edu>
parents: 22080
diff changeset
330 /* If a fontset is specified for this frame instead of font, this
4e067ce42325 Remove redundant font_info struct definition.
Geoff Voelker <voelker@cs.washington.edu>
parents: 22080
diff changeset
331 value contains an ID of the fontset, else -1. */
4e067ce42325 Remove redundant font_info struct definition.
Geoff Voelker <voelker@cs.washington.edu>
parents: 22080
diff changeset
332 int fontset;
4e067ce42325 Remove redundant font_info struct definition.
Geoff Voelker <voelker@cs.washington.edu>
parents: 22080
diff changeset
333
13543
23c68d2e061f Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
334 /* Pixel values used for various purposes.
23c68d2e061f Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
335 border_pixel may be -1 meaning use a gray tile. */
27403
220407a99b21 (XCharStruct): New struct for emulating X.
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
336 COLORREF cursor_pixel;
220407a99b21 (XCharStruct): New struct for emulating X.
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
337 COLORREF border_pixel;
220407a99b21 (XCharStruct): New struct for emulating X.
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
338 COLORREF mouse_pixel;
220407a99b21 (XCharStruct): New struct for emulating X.
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
339 COLORREF cursor_foreground_pixel;
220407a99b21 (XCharStruct): New struct for emulating X.
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
340
220407a99b21 (XCharStruct): New struct for emulating X.
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
341 /* Foreground color for scroll bars. A value of -1 means use the
220407a99b21 (XCharStruct): New struct for emulating X.
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
342 default (black for non-toolkit scroll bars). */
220407a99b21 (XCharStruct): New struct for emulating X.
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
343 COLORREF scroll_bar_foreground_pixel;
49600
23a1cea22d13 Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 49370
diff changeset
344
27403
220407a99b21 (XCharStruct): New struct for emulating X.
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
345 /* Background color for scroll bars. A value of -1 means use the
220407a99b21 (XCharStruct): New struct for emulating X.
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
346 default (background color of the frame for non-toolkit scroll
220407a99b21 (XCharStruct): New struct for emulating X.
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
347 bars). */
220407a99b21 (XCharStruct): New struct for emulating X.
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
348 COLORREF scroll_bar_background_pixel;
13543
23c68d2e061f Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
349
23c68d2e061f Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
350 /* Descriptor for the cursor in use for this window. */
23c68d2e061f Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
351 Cursor text_cursor;
23c68d2e061f Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
352 Cursor nontext_cursor;
23c68d2e061f Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
353 Cursor modeline_cursor;
50232
fbdd920c1fa4 (struct w32_output): Remove cross_cursor member.
Kim F. Storm <storm@cua.dk>
parents: 50155
diff changeset
354 Cursor hand_cursor;
36254
f64eaa8f61aa (struct x_output): Rename busy_cursor to
Gerd Moellmann <gerd@gnu.org>
parents: 34282
diff changeset
355 Cursor hourglass_cursor;
34134
296bbdedee11 (struct w32_output): Add member horizontal_drag_cursor.
Jason Rumney <jasonr@gnu.org>
parents: 33453
diff changeset
356 Cursor horizontal_drag_cursor;
27403
220407a99b21 (XCharStruct): New struct for emulating X.
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
357
36254
f64eaa8f61aa (struct x_output): Rename busy_cursor to
Gerd Moellmann <gerd@gnu.org>
parents: 34282
diff changeset
358 /* Window whose cursor is hourglass_cursor. This window is
f64eaa8f61aa (struct x_output): Rename busy_cursor to
Gerd Moellmann <gerd@gnu.org>
parents: 34282
diff changeset
359 temporarily mapped to display an hourglass cursor. */
f64eaa8f61aa (struct x_output): Rename busy_cursor to
Gerd Moellmann <gerd@gnu.org>
parents: 34282
diff changeset
360 Window hourglass_window;
49600
23a1cea22d13 Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 49370
diff changeset
361
36254
f64eaa8f61aa (struct x_output): Rename busy_cursor to
Gerd Moellmann <gerd@gnu.org>
parents: 34282
diff changeset
362 /* Non-zero means hourglass cursor is currently displayed. */
f64eaa8f61aa (struct x_output): Rename busy_cursor to
Gerd Moellmann <gerd@gnu.org>
parents: 34282
diff changeset
363 unsigned hourglass_p : 1;
13543
23c68d2e061f Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
364
23c68d2e061f Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
365 /* Flag to set when the window needs to be completely repainted. */
23c68d2e061f Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
366 int needs_exposure;
23c68d2e061f Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
367
23c68d2e061f Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
368 DWORD dwStyle;
23c68d2e061f Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
369
23c68d2e061f Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
370 /* This is the Emacs structure for the display this frame is on. */
16588
481b7874a1e9 Change identifiers of the form win32* to w32*.
Geoff Voelker <voelker@cs.washington.edu>
parents: 15152
diff changeset
371 /* struct w32_display_info *display_info; */
13543
23c68d2e061f Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
372
23c68d2e061f Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
373 /* Nonzero means our parent is another application's window
23c68d2e061f Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
374 and was explicitly specified. */
23c68d2e061f Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
375 char explicit_parent;
23c68d2e061f Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
376
23c68d2e061f Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
377 /* Nonzero means tried already to make this frame visible. */
23c68d2e061f Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
378 char asked_for_visible;
19714
72fa0e75a0fe (w32_output): New fields menubar_widget, menubar_active,
Geoff Voelker <voelker@cs.washington.edu>
parents: 16888
diff changeset
379
72fa0e75a0fe (w32_output): New fields menubar_widget, menubar_active,
Geoff Voelker <voelker@cs.washington.edu>
parents: 16888
diff changeset
380 /* Nonzero means menubar is currently active. */
72fa0e75a0fe (w32_output): New fields menubar_widget, menubar_active,
Geoff Voelker <voelker@cs.washington.edu>
parents: 16888
diff changeset
381 char menubar_active;
72fa0e75a0fe (w32_output): New fields menubar_widget, menubar_active,
Geoff Voelker <voelker@cs.washington.edu>
parents: 16888
diff changeset
382
43469
1e76e5ebe710 (struct w32_output): New member menu_command_in_progress.
Jason Rumney <jasonr@gnu.org>
parents: 43395
diff changeset
383 /* Nonzero means a menu command is being processed. */
1e76e5ebe710 (struct w32_output): New member menu_command_in_progress.
Jason Rumney <jasonr@gnu.org>
parents: 43395
diff changeset
384 char menu_command_in_progress;
1e76e5ebe710 (struct w32_output): New member menu_command_in_progress.
Jason Rumney <jasonr@gnu.org>
parents: 43395
diff changeset
385
19714
72fa0e75a0fe (w32_output): New fields menubar_widget, menubar_active,
Geoff Voelker <voelker@cs.washington.edu>
parents: 16888
diff changeset
386 /* Nonzero means menubar is about to become active, but should be
72fa0e75a0fe (w32_output): New fields menubar_widget, menubar_active,
Geoff Voelker <voelker@cs.washington.edu>
parents: 16888
diff changeset
387 brought up to date first. */
72fa0e75a0fe (w32_output): New fields menubar_widget, menubar_active,
Geoff Voelker <voelker@cs.washington.edu>
parents: 16888
diff changeset
388 volatile char pending_menu_activation;
27403
220407a99b21 (XCharStruct): New struct for emulating X.
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
389
220407a99b21 (XCharStruct): New struct for emulating X.
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
390 /* Relief GCs, colors etc. */
220407a99b21 (XCharStruct): New struct for emulating X.
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
391 struct relief
220407a99b21 (XCharStruct): New struct for emulating X.
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
392 {
220407a99b21 (XCharStruct): New struct for emulating X.
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
393 XGCValues *gc;
220407a99b21 (XCharStruct): New struct for emulating X.
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
394 unsigned long pixel;
220407a99b21 (XCharStruct): New struct for emulating X.
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
395 int allocated_p;
220407a99b21 (XCharStruct): New struct for emulating X.
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
396 }
220407a99b21 (XCharStruct): New struct for emulating X.
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
397 black_relief, white_relief;
220407a99b21 (XCharStruct): New struct for emulating X.
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
398
220407a99b21 (XCharStruct): New struct for emulating X.
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
399 /* The background for which the above relief GCs were set up.
220407a99b21 (XCharStruct): New struct for emulating X.
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
400 They are changed only when a different background is involved. */
220407a99b21 (XCharStruct): New struct for emulating X.
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
401 unsigned long relief_background;
13543
23c68d2e061f Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
402 };
23c68d2e061f Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
403
26729
f5dded41adcc Changes for automatic remapping of X colors on terminal frames:
Eli Zaretskii <eliz@gnu.org>
parents: 24916
diff changeset
404 extern struct w32_output w32term_display;
f5dded41adcc Changes for automatic remapping of X colors on terminal frames:
Eli Zaretskii <eliz@gnu.org>
parents: 24916
diff changeset
405
50155
2b702ff059f8 (FRAME_X_OUTPUT, FRAME_X_WINDOW, FRAME_X_DISPLAY)
Kim F. Storm <storm@cua.dk>
parents: 50037
diff changeset
406 /* Return the X output data for frame F. */
2b702ff059f8 (FRAME_X_OUTPUT, FRAME_X_WINDOW, FRAME_X_DISPLAY)
Kim F. Storm <storm@cua.dk>
parents: 50037
diff changeset
407 #define FRAME_X_OUTPUT(f) ((f)->output_data.w32)
2b702ff059f8 (FRAME_X_OUTPUT, FRAME_X_WINDOW, FRAME_X_DISPLAY)
Kim F. Storm <storm@cua.dk>
parents: 50037
diff changeset
408
13543
23c68d2e061f Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
409 /* Return the window associated with the frame F. */
16588
481b7874a1e9 Change identifiers of the form win32* to w32*.
Geoff Voelker <voelker@cs.washington.edu>
parents: 15152
diff changeset
410 #define FRAME_W32_WINDOW(f) ((f)->output_data.w32->window_desc)
50155
2b702ff059f8 (FRAME_X_OUTPUT, FRAME_X_WINDOW, FRAME_X_DISPLAY)
Kim F. Storm <storm@cua.dk>
parents: 50037
diff changeset
411 #define FRAME_X_WINDOW(f) ((f)->output_data.w32->window_desc)
13543
23c68d2e061f Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
412
27403
220407a99b21 (XCharStruct): New struct for emulating X.
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
413 #define FRAME_FOREGROUND_PIXEL(f) ((f)->output_data.x->foreground_pixel)
220407a99b21 (XCharStruct): New struct for emulating X.
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
414 #define FRAME_BACKGROUND_PIXEL(f) ((f)->output_data.x->background_pixel)
16588
481b7874a1e9 Change identifiers of the form win32* to w32*.
Geoff Voelker <voelker@cs.washington.edu>
parents: 15152
diff changeset
415 #define FRAME_FONT(f) ((f)->output_data.w32->font)
23508
4e067ce42325 Remove redundant font_info struct definition.
Geoff Voelker <voelker@cs.washington.edu>
parents: 22080
diff changeset
416 #define FRAME_FONTSET(f) ((f)->output_data.w32->fontset)
27403
220407a99b21 (XCharStruct): New struct for emulating X.
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
417 #define FRAME_BASELINE_OFFSET(f) ((f)->output_data.w32->baseline_offset)
13543
23c68d2e061f Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
418
16588
481b7874a1e9 Change identifiers of the form win32* to w32*.
Geoff Voelker <voelker@cs.washington.edu>
parents: 15152
diff changeset
419 /* This gives the w32_display_info structure for the display F is on. */
481b7874a1e9 Change identifiers of the form win32* to w32*.
Geoff Voelker <voelker@cs.washington.edu>
parents: 15152
diff changeset
420 #define FRAME_W32_DISPLAY_INFO(f) (&one_w32_display_info)
27403
220407a99b21 (XCharStruct): New struct for emulating X.
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
421 #define FRAME_X_DISPLAY_INFO(f) (&one_w32_display_info)
13543
23c68d2e061f Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
422
50155
2b702ff059f8 (FRAME_X_OUTPUT, FRAME_X_WINDOW, FRAME_X_DISPLAY)
Kim F. Storm <storm@cua.dk>
parents: 50037
diff changeset
423 /* This is the `Display *' which frame F is on. */
2b702ff059f8 (FRAME_X_OUTPUT, FRAME_X_WINDOW, FRAME_X_DISPLAY)
Kim F. Storm <storm@cua.dk>
parents: 50037
diff changeset
424 #define FRAME_X_DISPLAY(f) (0)
2b702ff059f8 (FRAME_X_OUTPUT, FRAME_X_WINDOW, FRAME_X_DISPLAY)
Kim F. Storm <storm@cua.dk>
parents: 50037
diff changeset
425
23508
4e067ce42325 Remove redundant font_info struct definition.
Geoff Voelker <voelker@cs.washington.edu>
parents: 22080
diff changeset
426 /* This is the 'font_info *' which frame F has. */
4e067ce42325 Remove redundant font_info struct definition.
Geoff Voelker <voelker@cs.washington.edu>
parents: 22080
diff changeset
427 #define FRAME_W32_FONT_TABLE(f) (FRAME_W32_DISPLAY_INFO (f)->font_table)
4e067ce42325 Remove redundant font_info struct definition.
Geoff Voelker <voelker@cs.washington.edu>
parents: 22080
diff changeset
428
27403
220407a99b21 (XCharStruct): New struct for emulating X.
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
429 /* Value is the smallest width of any character in any font on frame F. */
220407a99b21 (XCharStruct): New struct for emulating X.
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
430
220407a99b21 (XCharStruct): New struct for emulating X.
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
431 #define FRAME_SMALLEST_CHAR_WIDTH(F) \
220407a99b21 (XCharStruct): New struct for emulating X.
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
432 FRAME_W32_DISPLAY_INFO(F)->smallest_char_width
220407a99b21 (XCharStruct): New struct for emulating X.
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
433
220407a99b21 (XCharStruct): New struct for emulating X.
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
434 /* Value is the smallest height of any font on frame F. */
220407a99b21 (XCharStruct): New struct for emulating X.
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
435
220407a99b21 (XCharStruct): New struct for emulating X.
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
436 #define FRAME_SMALLEST_FONT_HEIGHT(F) \
220407a99b21 (XCharStruct): New struct for emulating X.
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
437 FRAME_W32_DISPLAY_INFO(F)->smallest_font_height
220407a99b21 (XCharStruct): New struct for emulating X.
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
438
220407a99b21 (XCharStruct): New struct for emulating X.
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
439 /* Return a pointer to the image cache of frame F. */
220407a99b21 (XCharStruct): New struct for emulating X.
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
440
220407a99b21 (XCharStruct): New struct for emulating X.
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
441 #define FRAME_X_IMAGE_CACHE(F) FRAME_W32_DISPLAY_INFO ((F))->image_cache
220407a99b21 (XCharStruct): New struct for emulating X.
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
442
220407a99b21 (XCharStruct): New struct for emulating X.
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
443
16588
481b7874a1e9 Change identifiers of the form win32* to w32*.
Geoff Voelker <voelker@cs.washington.edu>
parents: 15152
diff changeset
444 /* W32-specific scroll bar stuff. */
13543
23c68d2e061f Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
445
23c68d2e061f Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
446 /* We represent scroll bars as lisp vectors. This allows us to place
23c68d2e061f Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
447 references to them in windows without worrying about whether we'll
23c68d2e061f Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
448 end up with windows referring to dead scroll bars; the garbage
23c68d2e061f Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
449 collector will free it when its time comes.
23c68d2e061f Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
450
23c68d2e061f Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
451 We use struct scroll_bar as a template for accessing fields of the
23c68d2e061f Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
452 vector. */
23c68d2e061f Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
453
23c68d2e061f Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
454 struct scroll_bar {
23c68d2e061f Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
455
23c68d2e061f Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
456 /* These fields are shared by all vectors. */
23c68d2e061f Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
457 EMACS_INT size_from_Lisp_Vector_struct;
23c68d2e061f Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
458 struct Lisp_Vector *next_from_Lisp_Vector_struct;
23c68d2e061f Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
459
23c68d2e061f Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
460 /* The window we're a scroll bar for. */
23c68d2e061f Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
461 Lisp_Object window;
23c68d2e061f Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
462
23c68d2e061f Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
463 /* The next and previous in the chain of scroll bars in this frame. */
23c68d2e061f Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
464 Lisp_Object next, prev;
23c68d2e061f Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
465
23c68d2e061f Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
466 /* The window representing this scroll bar. Since this is a full
23c68d2e061f Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
467 32-bit quantity, we store it split into two 32-bit values. */
16588
481b7874a1e9 Change identifiers of the form win32* to w32*.
Geoff Voelker <voelker@cs.washington.edu>
parents: 15152
diff changeset
468 Lisp_Object w32_window_low, w32_window_high;
13543
23c68d2e061f Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
469
27403
220407a99b21 (XCharStruct): New struct for emulating X.
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
470 /* Same as above for the widget. */
220407a99b21 (XCharStruct): New struct for emulating X.
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
471 Lisp_Object w32_widget_low, w32_widget_high;
220407a99b21 (XCharStruct): New struct for emulating X.
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
472
13543
23c68d2e061f Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
473 /* The position and size of the scroll bar in pixels, relative to the
23c68d2e061f Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
474 frame. */
23c68d2e061f Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
475 Lisp_Object top, left, width, height;
23c68d2e061f Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
476
23c68d2e061f Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
477 /* The starting and ending positions of the handle, relative to the
23c68d2e061f Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
478 handle area (i.e. zero is the top position, not
23c68d2e061f Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
479 SCROLL_BAR_TOP_BORDER). If they're equal, that means the handle
23c68d2e061f Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
480 hasn't been drawn yet.
23c68d2e061f Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
481
23c68d2e061f Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
482 These are not actually the locations where the beginning and end
23c68d2e061f Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
483 are drawn; in order to keep handles from becoming invisible when
23c68d2e061f Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
484 editing large files, we establish a minimum height by always
23c68d2e061f Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
485 drawing handle bottoms VERTICAL_SCROLL_BAR_MIN_HANDLE pixels below
23c68d2e061f Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
486 where they would be normally; the bottom and top are in a
23c68d2e061f Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
487 different co-ordinate system. */
23c68d2e061f Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
488 Lisp_Object start, end;
23c68d2e061f Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
489
23c68d2e061f Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
490 /* If the scroll bar handle is currently being dragged by the user,
23c68d2e061f Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
491 this is the number of pixels from the top of the handle to the
23c68d2e061f Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
492 place where the user grabbed it. If the handle isn't currently
23c68d2e061f Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
493 being dragged, this is Qnil. */
23c68d2e061f Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
494 Lisp_Object dragging;
23c68d2e061f Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
495 };
23c68d2e061f Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
496
23c68d2e061f Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
497 /* The number of elements a vector holding a struct scroll_bar needs. */
23c68d2e061f Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
498 #define SCROLL_BAR_VEC_SIZE \
23c68d2e061f Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
499 ((sizeof (struct scroll_bar) \
23c68d2e061f Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
500 - sizeof (EMACS_INT) - sizeof (struct Lisp_Vector *)) \
23c68d2e061f Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
501 / sizeof (Lisp_Object))
23c68d2e061f Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
502
23c68d2e061f Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
503 /* Turning a lisp vector value into a pointer to a struct scroll_bar. */
23c68d2e061f Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
504 #define XSCROLL_BAR(vec) ((struct scroll_bar *) XVECTOR (vec))
23c68d2e061f Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
505
23c68d2e061f Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
506
23c68d2e061f Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
507 /* Building a 32-bit C integer from two 16-bit lisp integers. */
23c68d2e061f Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
508 #define SCROLL_BAR_PACK(low, high) (XINT (high) << 16 | XINT (low))
23c68d2e061f Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
509
23c68d2e061f Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
510 /* Setting two lisp integers to the low and high words of a 32-bit C int. */
23c68d2e061f Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
511 #define SCROLL_BAR_UNPACK(low, high, int32) \
23c68d2e061f Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
512 (XSETINT ((low), (int32) & 0xffff), \
23c68d2e061f Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
513 XSETINT ((high), ((int32) >> 16) & 0xffff))
23c68d2e061f Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
514
23c68d2e061f Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
515
23c68d2e061f Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
516 /* Extract the window id of the scroll bar from a struct scroll_bar. */
16588
481b7874a1e9 Change identifiers of the form win32* to w32*.
Geoff Voelker <voelker@cs.washington.edu>
parents: 15152
diff changeset
517 #define SCROLL_BAR_W32_WINDOW(ptr) \
481b7874a1e9 Change identifiers of the form win32* to w32*.
Geoff Voelker <voelker@cs.washington.edu>
parents: 15152
diff changeset
518 ((Window) SCROLL_BAR_PACK ((ptr)->w32_window_low, (ptr)->w32_window_high))
13543
23c68d2e061f Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
519
23c68d2e061f Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
520 /* Store a window id in a struct scroll_bar. */
16588
481b7874a1e9 Change identifiers of the form win32* to w32*.
Geoff Voelker <voelker@cs.washington.edu>
parents: 15152
diff changeset
521 #define SET_SCROLL_BAR_W32_WINDOW(ptr, id) \
481b7874a1e9 Change identifiers of the form win32* to w32*.
Geoff Voelker <voelker@cs.washington.edu>
parents: 15152
diff changeset
522 (SCROLL_BAR_UNPACK ((ptr)->w32_window_low, (ptr)->w32_window_high, (int) id))
13543
23c68d2e061f Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
523
27403
220407a99b21 (XCharStruct): New struct for emulating X.
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
524 /* Extract the X widget of the scroll bar from a struct scroll_bar. */
220407a99b21 (XCharStruct): New struct for emulating X.
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
525 #define SCROLL_BAR_X_WIDGET(ptr) \
220407a99b21 (XCharStruct): New struct for emulating X.
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
526 ((Widget) SCROLL_BAR_PACK ((ptr)->x_widget_low, (ptr)->x_widget_high))
13543
23c68d2e061f Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
527
27403
220407a99b21 (XCharStruct): New struct for emulating X.
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
528 /* Store a widget id in a struct scroll_bar. */
220407a99b21 (XCharStruct): New struct for emulating X.
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
529 #define SET_SCROLL_BAR_X_WIDGET(ptr, w) \
220407a99b21 (XCharStruct): New struct for emulating X.
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
530 (SCROLL_BAR_UNPACK ((ptr)->x_widget_low, (ptr)->x_widget_high, (int) w))
13543
23c68d2e061f Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
531
23c68d2e061f Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
532 /* Return the inside width of a vertical scroll bar, given the outside
23c68d2e061f Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
533 width. */
27403
220407a99b21 (XCharStruct): New struct for emulating X.
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
534 #define VERTICAL_SCROLL_BAR_INSIDE_WIDTH(f,width) \
220407a99b21 (XCharStruct): New struct for emulating X.
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
535 ((width) \
220407a99b21 (XCharStruct): New struct for emulating X.
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
536 - VERTICAL_SCROLL_BAR_LEFT_BORDER \
220407a99b21 (XCharStruct): New struct for emulating X.
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
537 - VERTICAL_SCROLL_BAR_RIGHT_BORDER \
220407a99b21 (XCharStruct): New struct for emulating X.
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
538 - VERTICAL_SCROLL_BAR_WIDTH_TRIM * 2)
13543
23c68d2e061f Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
539
23c68d2e061f Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
540 /* Return the length of the rectangle within which the top of the
23c68d2e061f Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
541 handle must stay. This isn't equivalent to the inside height,
49600
23a1cea22d13 Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 49370
diff changeset
542 because the scroll bar handle has a minimum height.
13543
23c68d2e061f Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
543
23c68d2e061f Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
544 This is the real range of motion for the scroll bar, so when we're
23c68d2e061f Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
545 scaling buffer positions to scroll bar positions, we use this, not
23c68d2e061f Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
546 VERTICAL_SCROLL_BAR_INSIDE_HEIGHT. */
27403
220407a99b21 (XCharStruct): New struct for emulating X.
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
547 #define VERTICAL_SCROLL_BAR_TOP_RANGE(f,height) \
220407a99b21 (XCharStruct): New struct for emulating X.
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
548 (VERTICAL_SCROLL_BAR_INSIDE_HEIGHT (f, height) - VERTICAL_SCROLL_BAR_MIN_HANDLE)
13543
23c68d2e061f Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
549
23c68d2e061f Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
550 /* Return the inside height of vertical scroll bar, given the outside
23c68d2e061f Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
551 height. See VERTICAL_SCROLL_BAR_TOP_RANGE too. */
27403
220407a99b21 (XCharStruct): New struct for emulating X.
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
552 #define VERTICAL_SCROLL_BAR_INSIDE_HEIGHT(f,height) \
13543
23c68d2e061f Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
553 ((height) - VERTICAL_SCROLL_BAR_TOP_BORDER - VERTICAL_SCROLL_BAR_BOTTOM_BORDER)
23c68d2e061f Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
554
23c68d2e061f Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
555
23c68d2e061f Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
556 /* Border widths for scroll bars.
23c68d2e061f Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
557
23c68d2e061f Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
558 Scroll bar windows don't have any borders; their border width is
23c68d2e061f Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
559 set to zero, and we redraw borders ourselves. This makes the code
23c68d2e061f Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
560 a bit cleaner, since we don't have to convert between outside width
23c68d2e061f Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
561 (used when relating to the rest of the screen) and inside width
23c68d2e061f Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
562 (used when sizing and drawing the scroll bar window itself).
23c68d2e061f Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
563
23c68d2e061f Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
564 The handle moves up and down/back and forth in a rectangle inset
23c68d2e061f Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
565 from the edges of the scroll bar. These are widths by which we
23c68d2e061f Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
566 inset the handle boundaries from the scroll bar edges. */
23c68d2e061f Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
567 #define VERTICAL_SCROLL_BAR_LEFT_BORDER (0)
23c68d2e061f Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
568 #define VERTICAL_SCROLL_BAR_RIGHT_BORDER (0)
19714
72fa0e75a0fe (w32_output): New fields menubar_widget, menubar_active,
Geoff Voelker <voelker@cs.washington.edu>
parents: 16888
diff changeset
569 #define VERTICAL_SCROLL_BAR_TOP_BORDER (vertical_scroll_bar_top_border)
72fa0e75a0fe (w32_output): New fields menubar_widget, menubar_active,
Geoff Voelker <voelker@cs.washington.edu>
parents: 16888
diff changeset
570 #define VERTICAL_SCROLL_BAR_BOTTOM_BORDER (vertical_scroll_bar_bottom_border)
13543
23c68d2e061f Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
571
23c68d2e061f Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
572 /* Minimum lengths for scroll bar handles, in pixels. */
19714
72fa0e75a0fe (w32_output): New fields menubar_widget, menubar_active,
Geoff Voelker <voelker@cs.washington.edu>
parents: 16888
diff changeset
573 #define VERTICAL_SCROLL_BAR_MIN_HANDLE (vertical_scroll_bar_min_handle)
72fa0e75a0fe (w32_output): New fields menubar_widget, menubar_active,
Geoff Voelker <voelker@cs.washington.edu>
parents: 16888
diff changeset
574
27403
220407a99b21 (XCharStruct): New struct for emulating X.
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
575 /* Trimming off a few pixels from each side prevents
220407a99b21 (XCharStruct): New struct for emulating X.
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
576 text from glomming up against the scroll bar */
220407a99b21 (XCharStruct): New struct for emulating X.
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
577 #define VERTICAL_SCROLL_BAR_WIDTH_TRIM (0)
13543
23c68d2e061f Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
578
23c68d2e061f Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
579
16588
481b7874a1e9 Change identifiers of the form win32* to w32*.
Geoff Voelker <voelker@cs.washington.edu>
parents: 15152
diff changeset
580 extern void w32_fill_rect ();
481b7874a1e9 Change identifiers of the form win32* to w32*.
Geoff Voelker <voelker@cs.washington.edu>
parents: 15152
diff changeset
581 extern void w32_clear_window ();
13543
23c68d2e061f Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
582
16588
481b7874a1e9 Change identifiers of the form win32* to w32*.
Geoff Voelker <voelker@cs.washington.edu>
parents: 15152
diff changeset
583 #define w32_fill_area(f,hdc,pix,x,y,nx,ny) \
13543
23c68d2e061f Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
584 { \
23c68d2e061f Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
585 RECT rect; \
23c68d2e061f Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
586 rect.left = x; \
23c68d2e061f Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
587 rect.top = y; \
23c68d2e061f Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
588 rect.right = x + nx; \
23c68d2e061f Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
589 rect.bottom = y + ny; \
16588
481b7874a1e9 Change identifiers of the form win32* to w32*.
Geoff Voelker <voelker@cs.washington.edu>
parents: 15152
diff changeset
590 w32_fill_rect (f,hdc,pix,&rect); \
13543
23c68d2e061f Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
591 }
23c68d2e061f Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
592
16588
481b7874a1e9 Change identifiers of the form win32* to w32*.
Geoff Voelker <voelker@cs.washington.edu>
parents: 15152
diff changeset
593 #define w32_clear_rect(f,hdc,lprect) \
27403
220407a99b21 (XCharStruct): New struct for emulating X.
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
594 w32_fill_rect (f,hdc,f->output_data.x->background_pixel,lprect)
13543
23c68d2e061f Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
595
27403
220407a99b21 (XCharStruct): New struct for emulating X.
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
596 #define w32_clear_area(f,hdc,px,py,nx,ny) \
220407a99b21 (XCharStruct): New struct for emulating X.
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
597 w32_fill_area (f,hdc,f->output_data.x->background_pixel,px,py,nx,ny)
13543
23c68d2e061f Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
598
23508
4e067ce42325 Remove redundant font_info struct definition.
Geoff Voelker <voelker@cs.washington.edu>
parents: 22080
diff changeset
599 extern struct font_info *w32_load_font ();
16588
481b7874a1e9 Change identifiers of the form win32* to w32*.
Geoff Voelker <voelker@cs.washington.edu>
parents: 15152
diff changeset
600 extern void w32_unload_font ();
13543
23c68d2e061f Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
601
19714
72fa0e75a0fe (w32_output): New fields menubar_widget, menubar_active,
Geoff Voelker <voelker@cs.washington.edu>
parents: 16888
diff changeset
602 /* Define for earlier versions of Visual C */
72fa0e75a0fe (w32_output): New fields menubar_widget, menubar_active,
Geoff Voelker <voelker@cs.washington.edu>
parents: 16888
diff changeset
603 #ifndef WM_MOUSEWHEEL
21876
52ebc509a367 (WM_MOUSEWHEEL): Define relative to WM_MOUSELAST.
Geoff Voelker <voelker@cs.washington.edu>
parents: 21615
diff changeset
604 #define WM_MOUSEWHEEL (WM_MOUSELAST + 1)
19714
72fa0e75a0fe (w32_output): New fields menubar_widget, menubar_active,
Geoff Voelker <voelker@cs.washington.edu>
parents: 16888
diff changeset
605 #endif /* WM_MOUSEWHEEL */
21876
52ebc509a367 (WM_MOUSEWHEEL): Define relative to WM_MOUSELAST.
Geoff Voelker <voelker@cs.washington.edu>
parents: 21615
diff changeset
606 #ifndef MSH_MOUSEWHEEL
52ebc509a367 (WM_MOUSEWHEEL): Define relative to WM_MOUSELAST.
Geoff Voelker <voelker@cs.washington.edu>
parents: 21615
diff changeset
607 #define MSH_MOUSEWHEEL "MSWHEEL_ROLLMSG"
52ebc509a367 (WM_MOUSEWHEEL): Define relative to WM_MOUSELAST.
Geoff Voelker <voelker@cs.washington.edu>
parents: 21615
diff changeset
608 #endif /* MSH_MOUSEWHEEL */
42718
0546caffda34 (WM_XBUTTONDOWN, WM_XBUTTONUP): New window messages
Jason Rumney <jasonr@gnu.org>
parents: 41735
diff changeset
609 #ifndef WM_XBUTTONDOWN
0546caffda34 (WM_XBUTTONDOWN, WM_XBUTTONUP): New window messages
Jason Rumney <jasonr@gnu.org>
parents: 41735
diff changeset
610 #define WM_XBUTTONDOWN (WM_MOUSEWHEEL + 1)
0546caffda34 (WM_XBUTTONDOWN, WM_XBUTTONUP): New window messages
Jason Rumney <jasonr@gnu.org>
parents: 41735
diff changeset
611 #define WM_XBUTTONUP (WM_MOUSEWHEEL + 2)
0546caffda34 (WM_XBUTTONDOWN, WM_XBUTTONUP): New window messages
Jason Rumney <jasonr@gnu.org>
parents: 41735
diff changeset
612 #endif /* WM_XBUTTONDOWN */
19714
72fa0e75a0fe (w32_output): New fields menubar_widget, menubar_active,
Geoff Voelker <voelker@cs.washington.edu>
parents: 16888
diff changeset
613
13543
23c68d2e061f Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
614 #define WM_EMACS_START (WM_USER + 1)
23676
704d2e178bcb (struct w32_display_info): New element faked_key.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23508
diff changeset
615 #define WM_EMACS_KILL (WM_EMACS_START + 0)
704d2e178bcb (struct w32_display_info): New element faked_key.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23508
diff changeset
616 #define WM_EMACS_CREATEWINDOW (WM_EMACS_START + 1)
704d2e178bcb (struct w32_display_info): New element faked_key.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23508
diff changeset
617 #define WM_EMACS_DONE (WM_EMACS_START + 2)
704d2e178bcb (struct w32_display_info): New element faked_key.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23508
diff changeset
618 #define WM_EMACS_CREATESCROLLBAR (WM_EMACS_START + 3)
704d2e178bcb (struct w32_display_info): New element faked_key.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23508
diff changeset
619 #define WM_EMACS_SHOWWINDOW (WM_EMACS_START + 4)
704d2e178bcb (struct w32_display_info): New element faked_key.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23508
diff changeset
620 #define WM_EMACS_SETWINDOWPOS (WM_EMACS_START + 5)
704d2e178bcb (struct w32_display_info): New element faked_key.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23508
diff changeset
621 #define WM_EMACS_DESTROYWINDOW (WM_EMACS_START + 6)
704d2e178bcb (struct w32_display_info): New element faked_key.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23508
diff changeset
622 #define WM_EMACS_TRACKPOPUPMENU (WM_EMACS_START + 7)
704d2e178bcb (struct w32_display_info): New element faked_key.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23508
diff changeset
623 #define WM_EMACS_SETFOCUS (WM_EMACS_START + 8)
704d2e178bcb (struct w32_display_info): New element faked_key.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23508
diff changeset
624 #define WM_EMACS_SETFOREGROUND (WM_EMACS_START + 9)
704d2e178bcb (struct w32_display_info): New element faked_key.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23508
diff changeset
625 #define WM_EMACS_SETLOCALE (WM_EMACS_START + 10)
704d2e178bcb (struct w32_display_info): New element faked_key.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23508
diff changeset
626 #define WM_EMACS_SETKEYBOARDLAYOUT (WM_EMACS_START + 11)
704d2e178bcb (struct w32_display_info): New element faked_key.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23508
diff changeset
627 #define WM_EMACS_REGISTER_HOT_KEY (WM_EMACS_START + 12)
704d2e178bcb (struct w32_display_info): New element faked_key.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23508
diff changeset
628 #define WM_EMACS_UNREGISTER_HOT_KEY (WM_EMACS_START + 13)
23805
44ad68548ff9 (WM_EMACS_TOGGLE_LOCK_KEY): New define.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23676
diff changeset
629 #define WM_EMACS_TOGGLE_LOCK_KEY (WM_EMACS_START + 14)
40382
771aec14ad74 (WM_EMACS_TRACK_CARET, WM_EMACS_DESTROY_CARET): New messages types.
Jason Rumney <jasonr@gnu.org>
parents: 40150
diff changeset
630 #define WM_EMACS_TRACK_CARET (WM_EMACS_START + 15)
771aec14ad74 (WM_EMACS_TRACK_CARET, WM_EMACS_DESTROY_CARET): New messages types.
Jason Rumney <jasonr@gnu.org>
parents: 40150
diff changeset
631 #define WM_EMACS_DESTROY_CARET (WM_EMACS_START + 16)
42863
cff9c12217fd (WM_EMACS_SHOW_CARET, WM_EMACS_HIDE_CARET): New
Jason Rumney <jasonr@gnu.org>
parents: 42718
diff changeset
632 #define WM_EMACS_SHOW_CARET (WM_EMACS_START + 17)
cff9c12217fd (WM_EMACS_SHOW_CARET, WM_EMACS_HIDE_CARET): New
Jason Rumney <jasonr@gnu.org>
parents: 42718
diff changeset
633 #define WM_EMACS_HIDE_CARET (WM_EMACS_START + 18)
49370
fdaa0f133d3f 2003-01-21 KOBAYASHI Yasuhiro <kobayays@otsukakj.co.jp>
Jason Rumney <jasonr@gnu.org>
parents: 47149
diff changeset
634 #define WM_EMACS_SETCURSOR (WM_EMACS_START + 19)
fdaa0f133d3f 2003-01-21 KOBAYASHI Yasuhiro <kobayays@otsukakj.co.jp>
Jason Rumney <jasonr@gnu.org>
parents: 47149
diff changeset
635 #define WM_EMACS_END (WM_EMACS_START + 20)
13543
23c68d2e061f Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
636
49600
23a1cea22d13 Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 49370
diff changeset
637 #define WND_FONTWIDTH_INDEX (0)
23a1cea22d13 Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 49370
diff changeset
638 #define WND_LINEHEIGHT_INDEX (4)
23a1cea22d13 Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 49370
diff changeset
639 #define WND_BORDER_INDEX (8)
23a1cea22d13 Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 49370
diff changeset
640 #define WND_SCROLLBAR_INDEX (12)
23a1cea22d13 Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 49370
diff changeset
641 #define WND_BACKGROUND_INDEX (16)
19714
72fa0e75a0fe (w32_output): New fields menubar_widget, menubar_active,
Geoff Voelker <voelker@cs.washington.edu>
parents: 16888
diff changeset
642 #define WND_LAST_INDEX (20)
15152
2dd4961cefaa (struct win32_palette_entry): New structure.
Geoff Voelker <voelker@cs.washington.edu>
parents: 14984
diff changeset
643
13543
23c68d2e061f Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
644 #define WND_EXTRA_BYTES (WND_LAST_INDEX)
23c68d2e061f Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
645
16886
c686d4f3728a Change all uses of win95, winnt, and win32 into Windows 95, Windows
Geoff Voelker <voelker@cs.washington.edu>
parents: 16588
diff changeset
646 extern DWORD dwWindowsThreadId;
c686d4f3728a Change all uses of win95, winnt, and win32 into Windows 95, Windows
Geoff Voelker <voelker@cs.washington.edu>
parents: 16588
diff changeset
647 extern HANDLE hWindowsThread;
13543
23c68d2e061f Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
648 extern DWORD dwMainThreadId;
23c68d2e061f Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
649 extern HANDLE hMainThread;
23c68d2e061f Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
650
16588
481b7874a1e9 Change identifiers of the form win32* to w32*.
Geoff Voelker <voelker@cs.washington.edu>
parents: 15152
diff changeset
651 typedef struct W32Msg {
13543
23c68d2e061f Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
652 MSG msg;
23c68d2e061f Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
653 DWORD dwModifiers;
23c68d2e061f Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
654 RECT rect;
16588
481b7874a1e9 Change identifiers of the form win32* to w32*.
Geoff Voelker <voelker@cs.washington.edu>
parents: 15152
diff changeset
655 } W32Msg;
13543
23c68d2e061f Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
656
19714
72fa0e75a0fe (w32_output): New fields menubar_widget, menubar_active,
Geoff Voelker <voelker@cs.washington.edu>
parents: 16888
diff changeset
657 /* Structure for recording message when input thread must return a
72fa0e75a0fe (w32_output): New fields menubar_widget, menubar_active,
Geoff Voelker <voelker@cs.washington.edu>
parents: 16888
diff changeset
658 result that depends on lisp thread to compute. Lisp thread can
72fa0e75a0fe (w32_output): New fields menubar_widget, menubar_active,
Geoff Voelker <voelker@cs.washington.edu>
parents: 16888
diff changeset
659 complete deferred messages out of order. */
72fa0e75a0fe (w32_output): New fields menubar_widget, menubar_active,
Geoff Voelker <voelker@cs.washington.edu>
parents: 16888
diff changeset
660 typedef struct deferred_msg
72fa0e75a0fe (w32_output): New fields menubar_widget, menubar_active,
Geoff Voelker <voelker@cs.washington.edu>
parents: 16888
diff changeset
661 {
72fa0e75a0fe (w32_output): New fields menubar_widget, menubar_active,
Geoff Voelker <voelker@cs.washington.edu>
parents: 16888
diff changeset
662 struct deferred_msg * next;
72fa0e75a0fe (w32_output): New fields menubar_widget, menubar_active,
Geoff Voelker <voelker@cs.washington.edu>
parents: 16888
diff changeset
663 W32Msg w32msg;
72fa0e75a0fe (w32_output): New fields menubar_widget, menubar_active,
Geoff Voelker <voelker@cs.washington.edu>
parents: 16888
diff changeset
664 LRESULT result;
72fa0e75a0fe (w32_output): New fields menubar_widget, menubar_active,
Geoff Voelker <voelker@cs.washington.edu>
parents: 16888
diff changeset
665 int completed;
72fa0e75a0fe (w32_output): New fields menubar_widget, menubar_active,
Geoff Voelker <voelker@cs.washington.edu>
parents: 16888
diff changeset
666 } deferred_msg;
72fa0e75a0fe (w32_output): New fields menubar_widget, menubar_active,
Geoff Voelker <voelker@cs.washington.edu>
parents: 16888
diff changeset
667
15152
2dd4961cefaa (struct win32_palette_entry): New structure.
Geoff Voelker <voelker@cs.washington.edu>
parents: 14984
diff changeset
668 extern CRITICAL_SECTION critsect;
2dd4961cefaa (struct win32_palette_entry): New structure.
Geoff Voelker <voelker@cs.washington.edu>
parents: 14984
diff changeset
669
13543
23c68d2e061f Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
670 extern void init_crit ();
23c68d2e061f Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
671 extern void delete_crit ();
23c68d2e061f Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
672
22080
f519dedee9bc (signal_quit): Add prototype.
Richard M. Stallman <rms@gnu.org>
parents: 21876
diff changeset
673 extern void signal_quit ();
f519dedee9bc (signal_quit): Add prototype.
Richard M. Stallman <rms@gnu.org>
parents: 21876
diff changeset
674
15152
2dd4961cefaa (struct win32_palette_entry): New structure.
Geoff Voelker <voelker@cs.washington.edu>
parents: 14984
diff changeset
675 #define enter_crit() EnterCriticalSection (&critsect)
2dd4961cefaa (struct win32_palette_entry): New structure.
Geoff Voelker <voelker@cs.washington.edu>
parents: 14984
diff changeset
676 #define leave_crit() LeaveCriticalSection (&critsect)
2dd4961cefaa (struct win32_palette_entry): New structure.
Geoff Voelker <voelker@cs.washington.edu>
parents: 14984
diff changeset
677
2dd4961cefaa (struct win32_palette_entry): New structure.
Geoff Voelker <voelker@cs.washington.edu>
parents: 14984
diff changeset
678 extern void select_palette (struct frame * f, HDC hdc);
2dd4961cefaa (struct win32_palette_entry): New structure.
Geoff Voelker <voelker@cs.washington.edu>
parents: 14984
diff changeset
679 extern void deselect_palette (struct frame * f, HDC hdc);
2dd4961cefaa (struct win32_palette_entry): New structure.
Geoff Voelker <voelker@cs.washington.edu>
parents: 14984
diff changeset
680 extern HDC get_frame_dc (struct frame * f);
2dd4961cefaa (struct win32_palette_entry): New structure.
Geoff Voelker <voelker@cs.washington.edu>
parents: 14984
diff changeset
681 extern int release_frame_dc (struct frame * f, HDC hDC);
2dd4961cefaa (struct win32_palette_entry): New structure.
Geoff Voelker <voelker@cs.washington.edu>
parents: 14984
diff changeset
682
24916
dcad7c5b7add (drain_message_queue): Add extern.
Andrew Innes <andrewi@gnu.org>
parents: 24145
diff changeset
683 extern void drain_message_queue ();
dcad7c5b7add (drain_message_queue): Add extern.
Andrew Innes <andrewi@gnu.org>
parents: 24145
diff changeset
684
13543
23c68d2e061f Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
685 extern BOOL get_next_msg ();
23c68d2e061f Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
686 extern BOOL post_msg ();
19714
72fa0e75a0fe (w32_output): New fields menubar_widget, menubar_active,
Geoff Voelker <voelker@cs.washington.edu>
parents: 16888
diff changeset
687 extern void complete_deferred_msg (HWND hwnd, UINT msg, LRESULT result);
13543
23c68d2e061f Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
688 extern void wait_for_sync ();
23c68d2e061f Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
689
23c68d2e061f Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
690 extern BOOL parse_button ();
14809
fb9e2125fc2e (VK_NUMPAD_*, VK_LWIN, VK_RWIN, VK_APPS):
Geoff Voelker <voelker@cs.washington.edu>
parents: 14521
diff changeset
691
16588
481b7874a1e9 Change identifiers of the form win32* to w32*.
Geoff Voelker <voelker@cs.washington.edu>
parents: 15152
diff changeset
692 /* Keypad command key support. W32 doesn't have virtual keys defined
14809
fb9e2125fc2e (VK_NUMPAD_*, VK_LWIN, VK_RWIN, VK_APPS):
Geoff Voelker <voelker@cs.washington.edu>
parents: 14521
diff changeset
693 for the function keys on the keypad (they are mapped to the standard
fb9e2125fc2e (VK_NUMPAD_*, VK_LWIN, VK_RWIN, VK_APPS):
Geoff Voelker <voelker@cs.washington.edu>
parents: 14521
diff changeset
694 fuction keys), so we define our own. */
fb9e2125fc2e (VK_NUMPAD_*, VK_LWIN, VK_RWIN, VK_APPS):
Geoff Voelker <voelker@cs.washington.edu>
parents: 14521
diff changeset
695 #define VK_NUMPAD_BEGIN 0x92
fb9e2125fc2e (VK_NUMPAD_*, VK_LWIN, VK_RWIN, VK_APPS):
Geoff Voelker <voelker@cs.washington.edu>
parents: 14521
diff changeset
696 #define VK_NUMPAD_CLEAR (VK_NUMPAD_BEGIN + 0)
fb9e2125fc2e (VK_NUMPAD_*, VK_LWIN, VK_RWIN, VK_APPS):
Geoff Voelker <voelker@cs.washington.edu>
parents: 14521
diff changeset
697 #define VK_NUMPAD_ENTER (VK_NUMPAD_BEGIN + 1)
fb9e2125fc2e (VK_NUMPAD_*, VK_LWIN, VK_RWIN, VK_APPS):
Geoff Voelker <voelker@cs.washington.edu>
parents: 14521
diff changeset
698 #define VK_NUMPAD_PRIOR (VK_NUMPAD_BEGIN + 2)
fb9e2125fc2e (VK_NUMPAD_*, VK_LWIN, VK_RWIN, VK_APPS):
Geoff Voelker <voelker@cs.washington.edu>
parents: 14521
diff changeset
699 #define VK_NUMPAD_NEXT (VK_NUMPAD_BEGIN + 3)
fb9e2125fc2e (VK_NUMPAD_*, VK_LWIN, VK_RWIN, VK_APPS):
Geoff Voelker <voelker@cs.washington.edu>
parents: 14521
diff changeset
700 #define VK_NUMPAD_END (VK_NUMPAD_BEGIN + 4)
fb9e2125fc2e (VK_NUMPAD_*, VK_LWIN, VK_RWIN, VK_APPS):
Geoff Voelker <voelker@cs.washington.edu>
parents: 14521
diff changeset
701 #define VK_NUMPAD_HOME (VK_NUMPAD_BEGIN + 5)
fb9e2125fc2e (VK_NUMPAD_*, VK_LWIN, VK_RWIN, VK_APPS):
Geoff Voelker <voelker@cs.washington.edu>
parents: 14521
diff changeset
702 #define VK_NUMPAD_LEFT (VK_NUMPAD_BEGIN + 6)
fb9e2125fc2e (VK_NUMPAD_*, VK_LWIN, VK_RWIN, VK_APPS):
Geoff Voelker <voelker@cs.washington.edu>
parents: 14521
diff changeset
703 #define VK_NUMPAD_UP (VK_NUMPAD_BEGIN + 7)
fb9e2125fc2e (VK_NUMPAD_*, VK_LWIN, VK_RWIN, VK_APPS):
Geoff Voelker <voelker@cs.washington.edu>
parents: 14521
diff changeset
704 #define VK_NUMPAD_RIGHT (VK_NUMPAD_BEGIN + 8)
fb9e2125fc2e (VK_NUMPAD_*, VK_LWIN, VK_RWIN, VK_APPS):
Geoff Voelker <voelker@cs.washington.edu>
parents: 14521
diff changeset
705 #define VK_NUMPAD_DOWN (VK_NUMPAD_BEGIN + 9)
fb9e2125fc2e (VK_NUMPAD_*, VK_LWIN, VK_RWIN, VK_APPS):
Geoff Voelker <voelker@cs.washington.edu>
parents: 14521
diff changeset
706 #define VK_NUMPAD_INSERT (VK_NUMPAD_BEGIN + 10)
fb9e2125fc2e (VK_NUMPAD_*, VK_LWIN, VK_RWIN, VK_APPS):
Geoff Voelker <voelker@cs.washington.edu>
parents: 14521
diff changeset
707 #define VK_NUMPAD_DELETE (VK_NUMPAD_BEGIN + 11)
fb9e2125fc2e (VK_NUMPAD_*, VK_LWIN, VK_RWIN, VK_APPS):
Geoff Voelker <voelker@cs.washington.edu>
parents: 14521
diff changeset
708
fb9e2125fc2e (VK_NUMPAD_*, VK_LWIN, VK_RWIN, VK_APPS):
Geoff Voelker <voelker@cs.washington.edu>
parents: 14521
diff changeset
709 #ifndef VK_LWIN
fb9e2125fc2e (VK_NUMPAD_*, VK_LWIN, VK_RWIN, VK_APPS):
Geoff Voelker <voelker@cs.washington.edu>
parents: 14521
diff changeset
710 /* Older compiler environments don't have these defined. */
fb9e2125fc2e (VK_NUMPAD_*, VK_LWIN, VK_RWIN, VK_APPS):
Geoff Voelker <voelker@cs.washington.edu>
parents: 14521
diff changeset
711 #define VK_LWIN 0x5B
fb9e2125fc2e (VK_NUMPAD_*, VK_LWIN, VK_RWIN, VK_APPS):
Geoff Voelker <voelker@cs.washington.edu>
parents: 14521
diff changeset
712 #define VK_RWIN 0x5C
fb9e2125fc2e (VK_NUMPAD_*, VK_LWIN, VK_RWIN, VK_APPS):
Geoff Voelker <voelker@cs.washington.edu>
parents: 14521
diff changeset
713 #define VK_APPS 0x5D
fb9e2125fc2e (VK_NUMPAD_*, VK_LWIN, VK_RWIN, VK_APPS):
Geoff Voelker <voelker@cs.washington.edu>
parents: 14521
diff changeset
714 #endif
23676
704d2e178bcb (struct w32_display_info): New element faked_key.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23508
diff changeset
715
704d2e178bcb (struct w32_display_info): New element faked_key.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23508
diff changeset
716 /* Support for treating Windows and Apps keys as modifiers. These
704d2e178bcb (struct w32_display_info): New element faked_key.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23508
diff changeset
717 constants must not overlap with any of the dwControlKeyState flags in
704d2e178bcb (struct w32_display_info): New element faked_key.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23508
diff changeset
718 KEY_EVENT_RECORD. */
704d2e178bcb (struct w32_display_info): New element faked_key.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23508
diff changeset
719 #define LEFT_WIN_PRESSED 0x8000
704d2e178bcb (struct w32_display_info): New element faked_key.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23508
diff changeset
720 #define RIGHT_WIN_PRESSED 0x4000
704d2e178bcb (struct w32_display_info): New element faked_key.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23508
diff changeset
721 #define APPS_PRESSED 0x2000
27403
220407a99b21 (XCharStruct): New struct for emulating X.
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
722
41735
cd985673cfc3 (WM_MOUSELEAVE, TME_LEAVE, TRACKMOUSEEVENT) [!WM_MOUSELEAVE]: Define.
Jason Rumney <jasonr@gnu.org>
parents: 41728
diff changeset
723 /* When compiling on Windows 9x/ME and NT 3.x, the following are not defined
cd985673cfc3 (WM_MOUSELEAVE, TME_LEAVE, TRACKMOUSEEVENT) [!WM_MOUSELEAVE]: Define.
Jason Rumney <jasonr@gnu.org>
parents: 41728
diff changeset
724 (even though they are supported on 98 and ME. */
cd985673cfc3 (WM_MOUSELEAVE, TME_LEAVE, TRACKMOUSEEVENT) [!WM_MOUSELEAVE]: Define.
Jason Rumney <jasonr@gnu.org>
parents: 41728
diff changeset
725 #ifndef WM_MOUSELEAVE
cd985673cfc3 (WM_MOUSELEAVE, TME_LEAVE, TRACKMOUSEEVENT) [!WM_MOUSELEAVE]: Define.
Jason Rumney <jasonr@gnu.org>
parents: 41728
diff changeset
726 #define WM_MOUSELEAVE 0x02A3
cd985673cfc3 (WM_MOUSELEAVE, TME_LEAVE, TRACKMOUSEEVENT) [!WM_MOUSELEAVE]: Define.
Jason Rumney <jasonr@gnu.org>
parents: 41728
diff changeset
727 #define TME_LEAVE 0x00000002;
cd985673cfc3 (WM_MOUSELEAVE, TME_LEAVE, TRACKMOUSEEVENT) [!WM_MOUSELEAVE]: Define.
Jason Rumney <jasonr@gnu.org>
parents: 41728
diff changeset
728
49600
23a1cea22d13 Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 49370
diff changeset
729 typedef struct tagTRACKMOUSEEVENT
41735
cd985673cfc3 (WM_MOUSELEAVE, TME_LEAVE, TRACKMOUSEEVENT) [!WM_MOUSELEAVE]: Define.
Jason Rumney <jasonr@gnu.org>
parents: 41728
diff changeset
730 {
cd985673cfc3 (WM_MOUSELEAVE, TME_LEAVE, TRACKMOUSEEVENT) [!WM_MOUSELEAVE]: Define.
Jason Rumney <jasonr@gnu.org>
parents: 41728
diff changeset
731 DWORD cbSize;
cd985673cfc3 (WM_MOUSELEAVE, TME_LEAVE, TRACKMOUSEEVENT) [!WM_MOUSELEAVE]: Define.
Jason Rumney <jasonr@gnu.org>
parents: 41728
diff changeset
732 DWORD dwFlags;
cd985673cfc3 (WM_MOUSELEAVE, TME_LEAVE, TRACKMOUSEEVENT) [!WM_MOUSELEAVE]: Define.
Jason Rumney <jasonr@gnu.org>
parents: 41728
diff changeset
733 HWND hwndTrack;
cd985673cfc3 (WM_MOUSELEAVE, TME_LEAVE, TRACKMOUSEEVENT) [!WM_MOUSELEAVE]: Define.
Jason Rumney <jasonr@gnu.org>
parents: 41728
diff changeset
734 DWORD dwHoverTime;
cd985673cfc3 (WM_MOUSELEAVE, TME_LEAVE, TRACKMOUSEEVENT) [!WM_MOUSELEAVE]: Define.
Jason Rumney <jasonr@gnu.org>
parents: 41728
diff changeset
735 } TRACKMOUSEEVENT;
cd985673cfc3 (WM_MOUSELEAVE, TME_LEAVE, TRACKMOUSEEVENT) [!WM_MOUSELEAVE]: Define.
Jason Rumney <jasonr@gnu.org>
parents: 41728
diff changeset
736 #endif
cd985673cfc3 (WM_MOUSELEAVE, TME_LEAVE, TRACKMOUSEEVENT) [!WM_MOUSELEAVE]: Define.
Jason Rumney <jasonr@gnu.org>
parents: 41728
diff changeset
737
37698
e97aa7dfaf5c (struct image, struct face): Forward declaration, to avoid compiler warnings.
Eli Zaretskii <eliz@gnu.org>
parents: 36254
diff changeset
738 struct image;
e97aa7dfaf5c (struct image, struct face): Forward declaration, to avoid compiler warnings.
Eli Zaretskii <eliz@gnu.org>
parents: 36254
diff changeset
739 struct face;
e97aa7dfaf5c (struct image, struct face): Forward declaration, to avoid compiler warnings.
Eli Zaretskii <eliz@gnu.org>
parents: 36254
diff changeset
740
27403
220407a99b21 (XCharStruct): New struct for emulating X.
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
741 XGCValues *XCreateGC (void *, Window, unsigned long, XGCValues *);
220407a99b21 (XCharStruct): New struct for emulating X.
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
742 struct frame * check_x_frame (Lisp_Object);
55672
c2e5f1d0cc84 (display_x_get_resource, vga_stdcolor_name): Add prototype.
Jason Rumney <jasonr@gnu.org>
parents: 55031
diff changeset
743 Lisp_Object vga_stdcolor_name (int);
c2e5f1d0cc84 (display_x_get_resource, vga_stdcolor_name): Add prototype.
Jason Rumney <jasonr@gnu.org>
parents: 55031
diff changeset
744
29309
7f49fb2648f1 (CP_DEFAULT): Define.
Jason Rumney <jasonr@gnu.org>
parents: 27403
diff changeset
745 EXFUN (Fx_display_color_p, 1);
7f49fb2648f1 (CP_DEFAULT): Define.
Jason Rumney <jasonr@gnu.org>
parents: 27403
diff changeset
746 EXFUN (Fx_display_grayscale_p, 1);
50155
2b702ff059f8 (FRAME_X_OUTPUT, FRAME_X_WINDOW, FRAME_X_DISPLAY)
Kim F. Storm <storm@cua.dk>
parents: 50037
diff changeset
747
2b702ff059f8 (FRAME_X_OUTPUT, FRAME_X_WINDOW, FRAME_X_DISPLAY)
Kim F. Storm <storm@cua.dk>
parents: 50037
diff changeset
748 #define FONT_TYPE_FOR_UNIBYTE(font, ch) \
2b702ff059f8 (FRAME_X_OUTPUT, FRAME_X_WINDOW, FRAME_X_DISPLAY)
Kim F. Storm <storm@cua.dk>
parents: 50037
diff changeset
749 ((font)->bdf ? BDF_1D_FONT : ANSI_FONT)
2b702ff059f8 (FRAME_X_OUTPUT, FRAME_X_WINDOW, FRAME_X_DISPLAY)
Kim F. Storm <storm@cua.dk>
parents: 50037
diff changeset
750
2b702ff059f8 (FRAME_X_OUTPUT, FRAME_X_WINDOW, FRAME_X_DISPLAY)
Kim F. Storm <storm@cua.dk>
parents: 50037
diff changeset
751 #define FONT_TYPE_FOR_MULTIBYTE(font, ch) \
2b702ff059f8 (FRAME_X_OUTPUT, FRAME_X_WINDOW, FRAME_X_DISPLAY)
Kim F. Storm <storm@cua.dk>
parents: 50037
diff changeset
752 (!(font)->bdf \
2b702ff059f8 (FRAME_X_OUTPUT, FRAME_X_WINDOW, FRAME_X_DISPLAY)
Kim F. Storm <storm@cua.dk>
parents: 50037
diff changeset
753 ? UNICODE_FONT \
2b702ff059f8 (FRAME_X_OUTPUT, FRAME_X_WINDOW, FRAME_X_DISPLAY)
Kim F. Storm <storm@cua.dk>
parents: 50037
diff changeset
754 : ((CHARSET_DIMENSION (CHAR_CHARSET ((ch))) == 1) \
2b702ff059f8 (FRAME_X_OUTPUT, FRAME_X_WINDOW, FRAME_X_DISPLAY)
Kim F. Storm <storm@cua.dk>
parents: 50037
diff changeset
755 ? BDF_1D_FONT : BDF_2D_FONT))
51775
864ebf80c8ca (ClipboardSequence_Proc): New type.
Jason Rumney <jasonr@gnu.org>
parents: 51205
diff changeset
756
864ebf80c8ca (ClipboardSequence_Proc): New type.
Jason Rumney <jasonr@gnu.org>
parents: 51205
diff changeset
757 typedef DWORD (WINAPI * ClipboardSequence_Proc) ();
56972
c6a3ae6654db (AppendMenuW_Proc): Move declaration from w32menu.c.
Jason Rumney <jasonr@gnu.org>
parents: 55672
diff changeset
758 typedef BOOL (WINAPI * AppendMenuW_Proc) (
c6a3ae6654db (AppendMenuW_Proc): Move declaration from w32menu.c.
Jason Rumney <jasonr@gnu.org>
parents: 55672
diff changeset
759 IN HMENU,
c6a3ae6654db (AppendMenuW_Proc): Move declaration from w32menu.c.
Jason Rumney <jasonr@gnu.org>
parents: 55672
diff changeset
760 IN UINT,
c6a3ae6654db (AppendMenuW_Proc): Move declaration from w32menu.c.
Jason Rumney <jasonr@gnu.org>
parents: 55672
diff changeset
761 IN UINT_PTR,
c6a3ae6654db (AppendMenuW_Proc): Move declaration from w32menu.c.
Jason Rumney <jasonr@gnu.org>
parents: 55672
diff changeset
762 IN LPCWSTR);
52401
695cf19ef79e Add arch taglines
Miles Bader <miles@gnu.org>
parents: 51775
diff changeset
763
695cf19ef79e Add arch taglines
Miles Bader <miles@gnu.org>
parents: 51775
diff changeset
764 /* arch-tag: f201d05a-1240-4fc5-8ea4-ca24d4ee5671
695cf19ef79e Add arch taglines
Miles Bader <miles@gnu.org>
parents: 51775
diff changeset
765 (do not change this comment) */