annotate src/w32fns.c @ 96084:0623378cdbca

* w32fns.c, xfnc.c (x_default_font_parameter): Only set `font-param' for explicit `font' parameters. * frame.c (x_set_font): Remove unexplained call to fix inf-recursion.
author Stefan Monnier <monnier@iro.umontreal.ca>
date Fri, 20 Jun 2008 01:53:32 +0000
parents efbaf6995245
children e7d9b9d2e1ef
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
16884
36babc489b0c Change all uses of win95, winnt, and win32
Geoff Voelker <voelker@cs.washington.edu>
parents: 16602
diff changeset
1 /* Graphical user interface functions for the Microsoft W32 API.
64770
a0d1312ede66 Update years in copyright notice; nfc.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents: 64662
diff changeset
2 Copyright (C) 1989, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000,
79759
fc2bcd2a8aad Add 2008 to copyright years.
Glenn Morris <rgm@gnu.org>
parents: 79578
diff changeset
3 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008
fc2bcd2a8aad Add 2008 to copyright years.
Glenn Morris <rgm@gnu.org>
parents: 79578
diff changeset
4 Free Software Foundation, Inc.
13434
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
5
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
6 This file is part of GNU Emacs.
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
7
94963
8971ddf55736 Switch to recommended form of GPLv3 permissions notice.
Glenn Morris <rgm@gnu.org>
parents: 94917
diff changeset
8 GNU Emacs is free software: you can redistribute it and/or modify
13434
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
9 it under the terms of the GNU General Public License as published by
94963
8971ddf55736 Switch to recommended form of GPLv3 permissions notice.
Glenn Morris <rgm@gnu.org>
parents: 94917
diff changeset
10 the Free Software Foundation, either version 3 of the License, or
8971ddf55736 Switch to recommended form of GPLv3 permissions notice.
Glenn Morris <rgm@gnu.org>
parents: 94917
diff changeset
11 (at your option) any later version.
13434
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
12
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
13 GNU Emacs is distributed in the hope that it will be useful,
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
14 but WITHOUT ANY WARRANTY; without even the implied warranty of
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
15 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
16 GNU General Public License for more details.
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
17
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
18 You should have received a copy of the GNU General Public License
94963
8971ddf55736 Switch to recommended form of GPLv3 permissions notice.
Glenn Morris <rgm@gnu.org>
parents: 94917
diff changeset
19 along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>. */
13434
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
20
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
21 /* Added by Kevin Gallo */
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
22
19707
0181cc080316 Include limits.h and errno.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18508
diff changeset
23 #include <config.h>
0181cc080316 Include limits.h and errno.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18508
diff changeset
24
13434
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
25 #include <signal.h>
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
26 #include <stdio.h>
19707
0181cc080316 Include limits.h and errno.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18508
diff changeset
27 #include <limits.h>
0181cc080316 Include limits.h and errno.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18508
diff changeset
28 #include <errno.h>
79213
c2dfa5567b1b Include math.h.
Jason Rumney <jasonr@gnu.org>
parents: 79054
diff changeset
29 #include <math.h>
13434
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
30
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
31 #include "lisp.h"
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
32 #include "w32term.h"
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
33 #include "frame.h"
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
34 #include "window.h"
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
35 #include "buffer.h"
27397
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
36 #include "intervals.h"
89585
f89c9d4bd81c (Fx_create_frame, x_create_tip_frame): Use new version of x_new_fontset.
Jason Rumney <jasonr@gnu.org>
parents: 88123
diff changeset
37 #include "dispextern.h"
f89c9d4bd81c (Fx_create_frame, x_create_tip_frame): Use new version of x_new_fontset.
Jason Rumney <jasonr@gnu.org>
parents: 88123
diff changeset
38 #include "keyboard.h"
13434
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
39 #include "blockinput.h"
24412
d11ac02f9d6a Use epaths.h istead of paths.h.
Richard M. Stallman <rms@gnu.org>
parents: 24339
diff changeset
40 #include "epaths.h"
89585
f89c9d4bd81c (Fx_create_frame, x_create_tip_frame): Use new version of x_new_fontset.
Jason Rumney <jasonr@gnu.org>
parents: 88123
diff changeset
41 #include "character.h"
f89c9d4bd81c (Fx_create_frame, x_create_tip_frame): Use new version of x_new_fontset.
Jason Rumney <jasonr@gnu.org>
parents: 88123
diff changeset
42 #include "charset.h"
23506
246a14f0622f (Vx_pixel_size_width): New global variable.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23407
diff changeset
43 #include "coding.h"
25069
ee9bfbc340ba (w32_find_ccl_program): Get compiled CCL code by just
Kenichi Handa <handa@m17n.org>
parents: 24856
diff changeset
44 #include "ccl.h"
89585
f89c9d4bd81c (Fx_create_frame, x_create_tip_frame): Use new version of x_new_fontset.
Jason Rumney <jasonr@gnu.org>
parents: 88123
diff changeset
45 #include "fontset.h"
27397
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
46 #include "systime.h"
89585
f89c9d4bd81c (Fx_create_frame, x_create_tip_frame): Use new version of x_new_fontset.
Jason Rumney <jasonr@gnu.org>
parents: 88123
diff changeset
47 #include "termhooks.h"
f89c9d4bd81c (Fx_create_frame, x_create_tip_frame): Use new version of x_new_fontset.
Jason Rumney <jasonr@gnu.org>
parents: 88123
diff changeset
48 #include "w32heap.h"
27397
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
49
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
50 #include "bitmaps/gray.xbm"
13434
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
51
78907
90bd4f87874a (globals_of_w32fns): Init common controls.
Jason Rumney <jasonr@gnu.org>
parents: 78260
diff changeset
52 #include <commctrl.h>
13434
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
53 #include <commdlg.h>
21884
bc4455bca454 Include shellapi.h.
Richard M. Stallman <rms@gnu.org>
parents: 21874
diff changeset
54 #include <shellapi.h>
27397
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
55 #include <ctype.h>
53739
5456cd83c404 * makefile.w32-in, w32fns.c: Add `default-printer-name' function.
Jason Rumney <jasonr@gnu.org>
parents: 53332
diff changeset
56 #include <winspool.h>
78106
f9eb7f243bdc (w32_msg_pump) <WM_EMACS_CREATEWINDOW>: Initialize COM.
Jason Rumney <jasonr@gnu.org>
parents: 77995
diff changeset
57 #include <objbase.h>
27397
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
58
45963
e4d2d8c8186f (file_dialog_callback): New function.
Jason Rumney <jasonr@gnu.org>
parents: 45465
diff changeset
59 #include <dlgs.h>
91099
8bbec66c0718 Include imm.h.
Jason Rumney <jasonr@gnu.org>
parents: 91085
diff changeset
60 #include <imm.h>
45963
e4d2d8c8186f (file_dialog_callback): New function.
Jason Rumney <jasonr@gnu.org>
parents: 45465
diff changeset
61 #define FILE_NAME_TEXT_FIELD edt1
e4d2d8c8186f (file_dialog_callback): New function.
Jason Rumney <jasonr@gnu.org>
parents: 45465
diff changeset
62
90865
6d2559699bd0 [USE_FONT_BACKEND]: Port font backend changes from xfns.c.
Jason Rumney <jasonr@gnu.org>
parents: 90796
diff changeset
63 #include "font.h"
94917
e61553aa7a73 Throughout the file, delete all USE_FONT_BACKEND
Kenichi Handa <handa@m17n.org>
parents: 94618
diff changeset
64 #include "w32font.h"
90865
6d2559699bd0 [USE_FONT_BACKEND]: Port font backend changes from xfns.c.
Jason Rumney <jasonr@gnu.org>
parents: 90796
diff changeset
65
48888
f0df5f687c15 Revisited my earlier fix for the following entry in etc/PROBLEMS: 'Emacs built on Windows 9x/ME crashes at startup on Windows XP, or Emacs builtpart of on XP crashes at startup on Windows 9x/ME.' Fixed several Windows API errors detected by BoundsChecker
Ben Key <bkey1@tampabay.rr.com>
parents: 48483
diff changeset
66 void syms_of_w32fns ();
f0df5f687c15 Revisited my earlier fix for the following entry in etc/PROBLEMS: 'Emacs built on Windows 9x/ME crashes at startup on Windows XP, or Emacs builtpart of on XP crashes at startup on Windows 9x/ME.' Fixed several Windows API errors detected by BoundsChecker
Ben Key <bkey1@tampabay.rr.com>
parents: 48483
diff changeset
67 void globals_of_w32fns ();
f0df5f687c15 Revisited my earlier fix for the following entry in etc/PROBLEMS: 'Emacs built on Windows 9x/ME crashes at startup on Windows XP, or Emacs builtpart of on XP crashes at startup on Windows 9x/ME.' Fixed several Windows API errors detected by BoundsChecker
Ben Key <bkey1@tampabay.rr.com>
parents: 48483
diff changeset
68
13434
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
69 extern void free_frame_menubar ();
27397
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
70 extern double atof ();
41732
0d9b74cd27cd (trackmouse_window, track_mouse_event_fn): New vars.
Jason Rumney <jasonr@gnu.org>
parents: 41726
diff changeset
71 extern int w32_console_toggle_lock_key P_ ((int, Lisp_Object));
0d9b74cd27cd (trackmouse_window, track_mouse_event_fn): New vars.
Jason Rumney <jasonr@gnu.org>
parents: 41726
diff changeset
72 extern void w32_menu_display_help P_ ((HWND, HMENU, UINT, UINT));
0d9b74cd27cd (trackmouse_window, track_mouse_event_fn): New vars.
Jason Rumney <jasonr@gnu.org>
parents: 41726
diff changeset
73 extern void w32_free_menu_strings P_ ((HWND));
94917
e61553aa7a73 Throughout the file, delete all USE_FONT_BACKEND
Kenichi Handa <handa@m17n.org>
parents: 94618
diff changeset
74 #if OLD_FONT
59333
f23a47fb1568 (w32_load_system_font): Set FONT_WIDTH to maximum, not
Jason Rumney <jasonr@gnu.org>
parents: 57872
diff changeset
75 extern XCharStruct *w32_per_char_metric P_ ((XFontStruct *, wchar_t *, int));
94917
e61553aa7a73 Throughout the file, delete all USE_FONT_BACKEND
Kenichi Handa <handa@m17n.org>
parents: 94618
diff changeset
76 #endif
41732
0d9b74cd27cd (trackmouse_window, track_mouse_event_fn): New vars.
Jason Rumney <jasonr@gnu.org>
parents: 41726
diff changeset
77
15147
38c0ce06203f (quit_char, Vwin32_enable_italics, Vwin32_enable_palette):
Geoff Voelker <voelker@cs.washington.edu>
parents: 15034
diff changeset
78 extern int quit_char;
13434
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
79
23681
af0276da2059 (Vw32_pass_optional_keys_to_system): Variable removed.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23637
diff changeset
80 extern char *lispy_function_keys[];
af0276da2059 (Vw32_pass_optional_keys_to_system): Variable removed.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23637
diff changeset
81
13434
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
82 /* The colormap for converting color names to RGB values */
16588
481b7874a1e9 Change identifiers of the form win32* to w32*.
Geoff Voelker <voelker@cs.washington.edu>
parents: 16259
diff changeset
83 Lisp_Object Vw32_color_map;
13434
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
84
14810
4dd6867765b9 (Vwin32_pass_alt_to_system,
Geoff Voelker <voelker@cs.washington.edu>
parents: 14461
diff changeset
85 /* Non nil if alt key presses are passed on to Windows. */
16588
481b7874a1e9 Change identifiers of the form win32* to w32*.
Geoff Voelker <voelker@cs.washington.edu>
parents: 16259
diff changeset
86 Lisp_Object Vw32_pass_alt_to_system;
14810
4dd6867765b9 (Vwin32_pass_alt_to_system,
Geoff Voelker <voelker@cs.washington.edu>
parents: 14461
diff changeset
87
15459
76ff60cd2b8d (Vwin32_alt_is_meta): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 15434
diff changeset
88 /* Non nil if alt key is translated to meta_modifier, nil if it is translated
76ff60cd2b8d (Vwin32_alt_is_meta): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 15434
diff changeset
89 to alt_modifier. */
16588
481b7874a1e9 Change identifiers of the form win32* to w32*.
Geoff Voelker <voelker@cs.washington.edu>
parents: 16259
diff changeset
90 Lisp_Object Vw32_alt_is_meta;
15459
76ff60cd2b8d (Vwin32_alt_is_meta): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 15434
diff changeset
91
24339
e8b73c2ac4ec (Vw32_quit_key): New variable.
Andrew Innes <andrewi@gnu.org>
parents: 24252
diff changeset
92 /* If non-zero, the windows virtual key code for an alternative quit key. */
55656
29b250a07fe0 (Fw32_register_hot_key, Fw32_unregister_hot_key)
Jason Rumney <jasonr@gnu.org>
parents: 55592
diff changeset
93 int w32_quit_key;
24339
e8b73c2ac4ec (Vw32_quit_key): New variable.
Andrew Innes <andrewi@gnu.org>
parents: 24252
diff changeset
94
23681
af0276da2059 (Vw32_pass_optional_keys_to_system): Variable removed.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23637
diff changeset
95 /* Non nil if left window key events are passed on to Windows (this only
af0276da2059 (Vw32_pass_optional_keys_to_system): Variable removed.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23637
diff changeset
96 affects whether "tapping" the key opens the Start menu). */
af0276da2059 (Vw32_pass_optional_keys_to_system): Variable removed.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23637
diff changeset
97 Lisp_Object Vw32_pass_lwindow_to_system;
af0276da2059 (Vw32_pass_optional_keys_to_system): Variable removed.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23637
diff changeset
98
af0276da2059 (Vw32_pass_optional_keys_to_system): Variable removed.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23637
diff changeset
99 /* Non nil if right window key events are passed on to Windows (this
af0276da2059 (Vw32_pass_optional_keys_to_system): Variable removed.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23637
diff changeset
100 only affects whether "tapping" the key opens the Start menu). */
af0276da2059 (Vw32_pass_optional_keys_to_system): Variable removed.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23637
diff changeset
101 Lisp_Object Vw32_pass_rwindow_to_system;
af0276da2059 (Vw32_pass_optional_keys_to_system): Variable removed.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23637
diff changeset
102
23803
f112aa8f8f5d (Vw32_phantom_key_code): New variable.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23801
diff changeset
103 /* Virtual key code used to generate "phantom" key presses in order
f112aa8f8f5d (Vw32_phantom_key_code): New variable.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23801
diff changeset
104 to stop system from acting on Windows key events. */
f112aa8f8f5d (Vw32_phantom_key_code): New variable.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23801
diff changeset
105 Lisp_Object Vw32_phantom_key_code;
f112aa8f8f5d (Vw32_phantom_key_code): New variable.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23801
diff changeset
106
23681
af0276da2059 (Vw32_pass_optional_keys_to_system): Variable removed.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23637
diff changeset
107 /* Modifier associated with the left "Windows" key, or nil to act as a
af0276da2059 (Vw32_pass_optional_keys_to_system): Variable removed.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23637
diff changeset
108 normal key. */
af0276da2059 (Vw32_pass_optional_keys_to_system): Variable removed.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23637
diff changeset
109 Lisp_Object Vw32_lwindow_modifier;
af0276da2059 (Vw32_pass_optional_keys_to_system): Variable removed.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23637
diff changeset
110
af0276da2059 (Vw32_pass_optional_keys_to_system): Variable removed.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23637
diff changeset
111 /* Modifier associated with the right "Windows" key, or nil to act as a
af0276da2059 (Vw32_pass_optional_keys_to_system): Variable removed.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23637
diff changeset
112 normal key. */
af0276da2059 (Vw32_pass_optional_keys_to_system): Variable removed.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23637
diff changeset
113 Lisp_Object Vw32_rwindow_modifier;
af0276da2059 (Vw32_pass_optional_keys_to_system): Variable removed.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23637
diff changeset
114
af0276da2059 (Vw32_pass_optional_keys_to_system): Variable removed.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23637
diff changeset
115 /* Modifier associated with the "Apps" key, or nil to act as a normal
af0276da2059 (Vw32_pass_optional_keys_to_system): Variable removed.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23637
diff changeset
116 key. */
af0276da2059 (Vw32_pass_optional_keys_to_system): Variable removed.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23637
diff changeset
117 Lisp_Object Vw32_apps_modifier;
af0276da2059 (Vw32_pass_optional_keys_to_system): Variable removed.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23637
diff changeset
118
af0276da2059 (Vw32_pass_optional_keys_to_system): Variable removed.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23637
diff changeset
119 /* Value is nil if Num Lock acts as a function key. */
af0276da2059 (Vw32_pass_optional_keys_to_system): Variable removed.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23637
diff changeset
120 Lisp_Object Vw32_enable_num_lock;
af0276da2059 (Vw32_pass_optional_keys_to_system): Variable removed.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23637
diff changeset
121
af0276da2059 (Vw32_pass_optional_keys_to_system): Variable removed.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23637
diff changeset
122 /* Value is nil if Caps Lock acts as a function key. */
af0276da2059 (Vw32_pass_optional_keys_to_system): Variable removed.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23637
diff changeset
123 Lisp_Object Vw32_enable_caps_lock;
af0276da2059 (Vw32_pass_optional_keys_to_system): Variable removed.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23637
diff changeset
124
af0276da2059 (Vw32_pass_optional_keys_to_system): Variable removed.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23637
diff changeset
125 /* Modifier associated with Scroll Lock, or nil to act as a normal key. */
af0276da2059 (Vw32_pass_optional_keys_to_system): Variable removed.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23637
diff changeset
126 Lisp_Object Vw32_scroll_lock_modifier;
14810
4dd6867765b9 (Vwin32_pass_alt_to_system,
Geoff Voelker <voelker@cs.washington.edu>
parents: 14461
diff changeset
127
27894
6c4ff3519d09 (w32_wnd_proc) [WM_LBUTTON_DOWN, WM_RBUTTON_DOWN, WM_LBUTTON_UP,
Jason Rumney <jasonr@gnu.org>
parents: 27516
diff changeset
128 /* Switch to control whether we inhibit requests for synthesized bold
27397
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
129 and italic versions of fonts. */
42845
ebb3a20bc357 (w32_load_system_font, w32_to_x_charset): Use strnicmp
Jason Rumney <jasonr@gnu.org>
parents: 42833
diff changeset
130 int w32_enable_synthesized_fonts;
15147
38c0ce06203f (quit_char, Vwin32_enable_italics, Vwin32_enable_palette):
Geoff Voelker <voelker@cs.washington.edu>
parents: 15034
diff changeset
131
38c0ce06203f (quit_char, Vwin32_enable_italics, Vwin32_enable_palette):
Geoff Voelker <voelker@cs.washington.edu>
parents: 15034
diff changeset
132 /* Enable palette management. */
16588
481b7874a1e9 Change identifiers of the form win32* to w32*.
Geoff Voelker <voelker@cs.washington.edu>
parents: 16259
diff changeset
133 Lisp_Object Vw32_enable_palette;
15147
38c0ce06203f (quit_char, Vwin32_enable_italics, Vwin32_enable_palette):
Geoff Voelker <voelker@cs.washington.edu>
parents: 15034
diff changeset
134
38c0ce06203f (quit_char, Vwin32_enable_italics, Vwin32_enable_palette):
Geoff Voelker <voelker@cs.washington.edu>
parents: 15034
diff changeset
135 /* Control how close left/right button down events must be to
38c0ce06203f (quit_char, Vwin32_enable_italics, Vwin32_enable_palette):
Geoff Voelker <voelker@cs.washington.edu>
parents: 15034
diff changeset
136 be converted to a middle button down event. */
55656
29b250a07fe0 (Fw32_register_hot_key, Fw32_unregister_hot_key)
Jason Rumney <jasonr@gnu.org>
parents: 55592
diff changeset
137 int w32_mouse_button_tolerance;
15147
38c0ce06203f (quit_char, Vwin32_enable_italics, Vwin32_enable_palette):
Geoff Voelker <voelker@cs.washington.edu>
parents: 15034
diff changeset
138
15290
da73440fdb5f (Vwin32_mouse_move_interval): New lisp variable.
Karl Heuer <kwzh@gnu.org>
parents: 15280
diff changeset
139 /* Minimum interval between mouse movement (and scroll bar drag)
da73440fdb5f (Vwin32_mouse_move_interval): New lisp variable.
Karl Heuer <kwzh@gnu.org>
parents: 15280
diff changeset
140 events that are passed on to the event loop. */
55656
29b250a07fe0 (Fw32_register_hot_key, Fw32_unregister_hot_key)
Jason Rumney <jasonr@gnu.org>
parents: 55592
diff changeset
141 int w32_mouse_move_interval;
15290
da73440fdb5f (Vwin32_mouse_move_interval): New lisp variable.
Karl Heuer <kwzh@gnu.org>
parents: 15280
diff changeset
142
42719
70f13c4f82c7 (w32_pass_extra_mouse_buttons_to_system): New user option.
Jason Rumney <jasonr@gnu.org>
parents: 42537
diff changeset
143 /* Flag to indicate if XBUTTON events should be passed on to Windows. */
86065
2557aa084b57 (Fw32_registered_hot_keys): Don't return the nil values corresponding
Juanma Barranquero <lekktu@gmail.com>
parents: 86053
diff changeset
144 static int w32_pass_extra_mouse_buttons_to_system;
42719
70f13c4f82c7 (w32_pass_extra_mouse_buttons_to_system): New user option.
Jason Rumney <jasonr@gnu.org>
parents: 42537
diff changeset
145
85979
bb1f44062552 (w32_pass_multimedia_buttons_to_system): New user option.
Jason Rumney <jasonr@gnu.org>
parents: 85614
diff changeset
146 /* Flag to indicate if media keys should be passed on to Windows. */
86065
2557aa084b57 (Fw32_registered_hot_keys): Don't return the nil values corresponding
Juanma Barranquero <lekktu@gmail.com>
parents: 86053
diff changeset
147 static int w32_pass_multimedia_buttons_to_system;
42719
70f13c4f82c7 (w32_pass_extra_mouse_buttons_to_system): New user option.
Jason Rumney <jasonr@gnu.org>
parents: 42537
diff changeset
148
13434
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
149 /* Non nil if no window manager is in use. */
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
150 Lisp_Object Vx_no_window_manager;
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
151
36252
a8630c63f7d5 Rename everything containing *busy_cursor* and similar
Gerd Moellmann <gerd@gnu.org>
parents: 36080
diff changeset
152 /* Non-zero means we're allowed to display a hourglass pointer. */
a8630c63f7d5 Rename everything containing *busy_cursor* and similar
Gerd Moellmann <gerd@gnu.org>
parents: 36080
diff changeset
153
a8630c63f7d5 Rename everything containing *busy_cursor* and similar
Gerd Moellmann <gerd@gnu.org>
parents: 36080
diff changeset
154 int display_hourglass_p;
27397
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
155
93075
66248fc5b523 * w32fns.c (hourglass_timer, hourglass_hwnd): New variables.
Jason Rumney <jasonr@gnu.org>
parents: 92940
diff changeset
156 /* If non-zero, a w32 timer that, when it expires, displays an
66248fc5b523 * w32fns.c (hourglass_timer, hourglass_hwnd): New variables.
Jason Rumney <jasonr@gnu.org>
parents: 92940
diff changeset
157 hourglass cursor on all frames. */
66248fc5b523 * w32fns.c (hourglass_timer, hourglass_hwnd): New variables.
Jason Rumney <jasonr@gnu.org>
parents: 92940
diff changeset
158 static unsigned hourglass_timer = 0;
66248fc5b523 * w32fns.c (hourglass_timer, hourglass_hwnd): New variables.
Jason Rumney <jasonr@gnu.org>
parents: 92940
diff changeset
159 static HWND hourglass_hwnd = NULL;
66248fc5b523 * w32fns.c (hourglass_timer, hourglass_hwnd): New variables.
Jason Rumney <jasonr@gnu.org>
parents: 92940
diff changeset
160
13434
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
161 /* The background and shape of the mouse pointer, and shape when not
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
162 over text or in the modeline. */
29317
2d3d5bf49d4e Format and doc changes to bring closer to xfns.c.
Jason Rumney <jasonr@gnu.org>
parents: 29021
diff changeset
163
13434
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
164 Lisp_Object Vx_pointer_shape, Vx_nontext_pointer_shape, Vx_mode_pointer_shape;
64487
c9a7bffa9534 (Vx_hand_shape): Variable removed.
Kim F. Storm <storm@cua.dk>
parents: 64084
diff changeset
165 Lisp_Object Vx_hourglass_pointer_shape, Vx_window_horizontal_drag_shape;
27397
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
166
13434
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
167 /* The shape when over mouse-sensitive text. */
29317
2d3d5bf49d4e Format and doc changes to bring closer to xfns.c.
Jason Rumney <jasonr@gnu.org>
parents: 29021
diff changeset
168
13434
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
169 Lisp_Object Vx_sensitive_text_pointer_shape;
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
170
49369
5518e109ec3b 2003-01-21 Jason Rumney <jasonr@gnu.org>
Jason Rumney <jasonr@gnu.org>
parents: 49079
diff changeset
171 #ifndef IDC_HAND
5518e109ec3b 2003-01-21 Jason Rumney <jasonr@gnu.org>
Jason Rumney <jasonr@gnu.org>
parents: 49079
diff changeset
172 #define IDC_HAND MAKEINTRESOURCE(32649)
5518e109ec3b 2003-01-21 Jason Rumney <jasonr@gnu.org>
Jason Rumney <jasonr@gnu.org>
parents: 49079
diff changeset
173 #endif
5518e109ec3b 2003-01-21 Jason Rumney <jasonr@gnu.org>
Jason Rumney <jasonr@gnu.org>
parents: 49079
diff changeset
174
13434
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
175 /* Color of chars displayed in cursor box. */
29317
2d3d5bf49d4e Format and doc changes to bring closer to xfns.c.
Jason Rumney <jasonr@gnu.org>
parents: 29021
diff changeset
176
13434
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
177 Lisp_Object Vx_cursor_fore_pixel;
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
178
19707
0181cc080316 Include limits.h and errno.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18508
diff changeset
179 /* Nonzero if using Windows. */
29317
2d3d5bf49d4e Format and doc changes to bring closer to xfns.c.
Jason Rumney <jasonr@gnu.org>
parents: 29021
diff changeset
180
19707
0181cc080316 Include limits.h and errno.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18508
diff changeset
181 static int w32_in_use;
0181cc080316 Include limits.h and errno.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18508
diff changeset
182
23506
246a14f0622f (Vx_pixel_size_width): New global variable.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23407
diff changeset
183 /* Regexp matching a font name whose width is the same as `PIXEL_SIZE'. */
29317
2d3d5bf49d4e Format and doc changes to bring closer to xfns.c.
Jason Rumney <jasonr@gnu.org>
parents: 29021
diff changeset
184
23506
246a14f0622f (Vx_pixel_size_width): New global variable.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23407
diff changeset
185 Lisp_Object Vx_pixel_size_width_font_regexp;
246a14f0622f (Vx_pixel_size_width): New global variable.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23407
diff changeset
186
24147
c83b0bc4e8b9 (Vw32_bdf_filename_alist): New variable.
Geoff Voelker <voelker@cs.washington.edu>
parents: 24130
diff changeset
187 /* Alist of bdf fonts and the files that define them. */
c83b0bc4e8b9 (Vw32_bdf_filename_alist): New variable.
Geoff Voelker <voelker@cs.washington.edu>
parents: 24130
diff changeset
188 Lisp_Object Vw32_bdf_filename_alist;
c83b0bc4e8b9 (Vw32_bdf_filename_alist): New variable.
Geoff Voelker <voelker@cs.washington.edu>
parents: 24130
diff changeset
189
24497
b09ceba3d319 (enum_font_cb2): Set the font height to be the
Geoff Voelker <voelker@cs.washington.edu>
parents: 24481
diff changeset
190 /* A flag to control whether fonts are matched strictly or not. */
86065
2557aa084b57 (Fw32_registered_hot_keys): Don't return the nil values corresponding
Juanma Barranquero <lekktu@gmail.com>
parents: 86053
diff changeset
191 static int w32_strict_fontnames;
24481
f65692fe7dd5 (w32_strict_fontnames): New variable.
Geoff Voelker <voelker@cs.washington.edu>
parents: 24479
diff changeset
192
24695
2fe2c743ce68 (w32_strict_painting): New variable.
Andrew Innes <andrewi@gnu.org>
parents: 24692
diff changeset
193 /* A flag to control whether we should only repaint if GetUpdateRect
2fe2c743ce68 (w32_strict_painting): New variable.
Andrew Innes <andrewi@gnu.org>
parents: 24692
diff changeset
194 indicates there is an update region. */
86065
2557aa084b57 (Fw32_registered_hot_keys): Don't return the nil values corresponding
Juanma Barranquero <lekktu@gmail.com>
parents: 86053
diff changeset
195 static int w32_strict_painting;
24695
2fe2c743ce68 (w32_strict_painting): New variable.
Andrew Innes <andrewi@gnu.org>
parents: 24692
diff changeset
196
29317
2d3d5bf49d4e Format and doc changes to bring closer to xfns.c.
Jason Rumney <jasonr@gnu.org>
parents: 29021
diff changeset
197 /* Associative list linking character set strings to Windows codepages. */
86065
2557aa084b57 (Fw32_registered_hot_keys): Don't return the nil values corresponding
Juanma Barranquero <lekktu@gmail.com>
parents: 86053
diff changeset
198 static Lisp_Object Vw32_charset_info_alist;
29317
2d3d5bf49d4e Format and doc changes to bring closer to xfns.c.
Jason Rumney <jasonr@gnu.org>
parents: 29021
diff changeset
199
2d3d5bf49d4e Format and doc changes to bring closer to xfns.c.
Jason Rumney <jasonr@gnu.org>
parents: 29021
diff changeset
200 /* VIETNAMESE_CHARSET is not defined in some versions of MSVC. */
2d3d5bf49d4e Format and doc changes to bring closer to xfns.c.
Jason Rumney <jasonr@gnu.org>
parents: 29021
diff changeset
201 #ifndef VIETNAMESE_CHARSET
2d3d5bf49d4e Format and doc changes to bring closer to xfns.c.
Jason Rumney <jasonr@gnu.org>
parents: 29021
diff changeset
202 #define VIETNAMESE_CHARSET 163
2d3d5bf49d4e Format and doc changes to bring closer to xfns.c.
Jason Rumney <jasonr@gnu.org>
parents: 29021
diff changeset
203 #endif
2d3d5bf49d4e Format and doc changes to bring closer to xfns.c.
Jason Rumney <jasonr@gnu.org>
parents: 29021
diff changeset
204
13434
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
205 Lisp_Object Qnone;
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
206 Lisp_Object Qsuppress_icon;
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
207 Lisp_Object Qundefined_color;
36000
f4a0b086cc5d (Fx_show_tip): Fix calls to make_number.
Jason Rumney <jasonr@gnu.org>
parents: 35674
diff changeset
208 Lisp_Object Qcancel_timer;
96079
efbaf6995245 * w32fns.c, xfns.c (Qfont_param): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 95894
diff changeset
209 Lisp_Object Qfont_param;
23803
f112aa8f8f5d (Vw32_phantom_key_code): New variable.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23801
diff changeset
210 Lisp_Object Qhyper;
f112aa8f8f5d (Vw32_phantom_key_code): New variable.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23801
diff changeset
211 Lisp_Object Qsuper;
f112aa8f8f5d (Vw32_phantom_key_code): New variable.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23801
diff changeset
212 Lisp_Object Qmeta;
f112aa8f8f5d (Vw32_phantom_key_code): New variable.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23801
diff changeset
213 Lisp_Object Qalt;
f112aa8f8f5d (Vw32_phantom_key_code): New variable.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23801
diff changeset
214 Lisp_Object Qctrl;
f112aa8f8f5d (Vw32_phantom_key_code): New variable.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23801
diff changeset
215 Lisp_Object Qcontrol;
f112aa8f8f5d (Vw32_phantom_key_code): New variable.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23801
diff changeset
216 Lisp_Object Qshift;
f112aa8f8f5d (Vw32_phantom_key_code): New variable.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23801
diff changeset
217
29317
2d3d5bf49d4e Format and doc changes to bring closer to xfns.c.
Jason Rumney <jasonr@gnu.org>
parents: 29021
diff changeset
218 Lisp_Object Qw32_charset_ansi;
2d3d5bf49d4e Format and doc changes to bring closer to xfns.c.
Jason Rumney <jasonr@gnu.org>
parents: 29021
diff changeset
219 Lisp_Object Qw32_charset_default;
2d3d5bf49d4e Format and doc changes to bring closer to xfns.c.
Jason Rumney <jasonr@gnu.org>
parents: 29021
diff changeset
220 Lisp_Object Qw32_charset_symbol;
2d3d5bf49d4e Format and doc changes to bring closer to xfns.c.
Jason Rumney <jasonr@gnu.org>
parents: 29021
diff changeset
221 Lisp_Object Qw32_charset_shiftjis;
33387
01a10bc04233 (Qw32_charset_hangeul): Rename to match w32 headers.
Jason Rumney <jasonr@gnu.org>
parents: 33216
diff changeset
222 Lisp_Object Qw32_charset_hangeul;
29317
2d3d5bf49d4e Format and doc changes to bring closer to xfns.c.
Jason Rumney <jasonr@gnu.org>
parents: 29021
diff changeset
223 Lisp_Object Qw32_charset_gb2312;
2d3d5bf49d4e Format and doc changes to bring closer to xfns.c.
Jason Rumney <jasonr@gnu.org>
parents: 29021
diff changeset
224 Lisp_Object Qw32_charset_chinesebig5;
2d3d5bf49d4e Format and doc changes to bring closer to xfns.c.
Jason Rumney <jasonr@gnu.org>
parents: 29021
diff changeset
225 Lisp_Object Qw32_charset_oem;
2d3d5bf49d4e Format and doc changes to bring closer to xfns.c.
Jason Rumney <jasonr@gnu.org>
parents: 29021
diff changeset
226
31110
9feda85db5d6 (max): Define macro.
Andrew Innes <andrewi@gnu.org>
parents: 30601
diff changeset
227 #ifndef JOHAB_CHARSET
9feda85db5d6 (max): Define macro.
Andrew Innes <andrewi@gnu.org>
parents: 30601
diff changeset
228 #define JOHAB_CHARSET 130
9feda85db5d6 (max): Define macro.
Andrew Innes <andrewi@gnu.org>
parents: 30601
diff changeset
229 #endif
29317
2d3d5bf49d4e Format and doc changes to bring closer to xfns.c.
Jason Rumney <jasonr@gnu.org>
parents: 29021
diff changeset
230 #ifdef JOHAB_CHARSET
2d3d5bf49d4e Format and doc changes to bring closer to xfns.c.
Jason Rumney <jasonr@gnu.org>
parents: 29021
diff changeset
231 Lisp_Object Qw32_charset_easteurope;
2d3d5bf49d4e Format and doc changes to bring closer to xfns.c.
Jason Rumney <jasonr@gnu.org>
parents: 29021
diff changeset
232 Lisp_Object Qw32_charset_turkish;
2d3d5bf49d4e Format and doc changes to bring closer to xfns.c.
Jason Rumney <jasonr@gnu.org>
parents: 29021
diff changeset
233 Lisp_Object Qw32_charset_baltic;
2d3d5bf49d4e Format and doc changes to bring closer to xfns.c.
Jason Rumney <jasonr@gnu.org>
parents: 29021
diff changeset
234 Lisp_Object Qw32_charset_russian;
2d3d5bf49d4e Format and doc changes to bring closer to xfns.c.
Jason Rumney <jasonr@gnu.org>
parents: 29021
diff changeset
235 Lisp_Object Qw32_charset_arabic;
2d3d5bf49d4e Format and doc changes to bring closer to xfns.c.
Jason Rumney <jasonr@gnu.org>
parents: 29021
diff changeset
236 Lisp_Object Qw32_charset_greek;
2d3d5bf49d4e Format and doc changes to bring closer to xfns.c.
Jason Rumney <jasonr@gnu.org>
parents: 29021
diff changeset
237 Lisp_Object Qw32_charset_hebrew;
33387
01a10bc04233 (Qw32_charset_hangeul): Rename to match w32 headers.
Jason Rumney <jasonr@gnu.org>
parents: 33216
diff changeset
238 Lisp_Object Qw32_charset_vietnamese;
29317
2d3d5bf49d4e Format and doc changes to bring closer to xfns.c.
Jason Rumney <jasonr@gnu.org>
parents: 29021
diff changeset
239 Lisp_Object Qw32_charset_thai;
2d3d5bf49d4e Format and doc changes to bring closer to xfns.c.
Jason Rumney <jasonr@gnu.org>
parents: 29021
diff changeset
240 Lisp_Object Qw32_charset_johab;
2d3d5bf49d4e Format and doc changes to bring closer to xfns.c.
Jason Rumney <jasonr@gnu.org>
parents: 29021
diff changeset
241 Lisp_Object Qw32_charset_mac;
2d3d5bf49d4e Format and doc changes to bring closer to xfns.c.
Jason Rumney <jasonr@gnu.org>
parents: 29021
diff changeset
242 #endif
2d3d5bf49d4e Format and doc changes to bring closer to xfns.c.
Jason Rumney <jasonr@gnu.org>
parents: 29021
diff changeset
243
2d3d5bf49d4e Format and doc changes to bring closer to xfns.c.
Jason Rumney <jasonr@gnu.org>
parents: 29021
diff changeset
244 #ifdef UNICODE_CHARSET
2d3d5bf49d4e Format and doc changes to bring closer to xfns.c.
Jason Rumney <jasonr@gnu.org>
parents: 29021
diff changeset
245 Lisp_Object Qw32_charset_unicode;
2d3d5bf49d4e Format and doc changes to bring closer to xfns.c.
Jason Rumney <jasonr@gnu.org>
parents: 29021
diff changeset
246 #endif
2d3d5bf49d4e Format and doc changes to bring closer to xfns.c.
Jason Rumney <jasonr@gnu.org>
parents: 29021
diff changeset
247
55468
f13a7f45ce0f (Vw32_ansi_code_page): New Lisp variable.
Jason Rumney <jasonr@gnu.org>
parents: 54336
diff changeset
248 /* The ANSI codepage. */
55656
29b250a07fe0 (Fw32_register_hot_key, Fw32_unregister_hot_key)
Jason Rumney <jasonr@gnu.org>
parents: 55592
diff changeset
249 int w32_ansi_code_page;
55468
f13a7f45ce0f (Vw32_ansi_code_page): New Lisp variable.
Jason Rumney <jasonr@gnu.org>
parents: 54336
diff changeset
250
51474
0dbfd1fe2e91 (add_system_logical_colors_to_map): New function.
Jason Rumney <jasonr@gnu.org>
parents: 51211
diff changeset
251 /* Prefix for system colors. */
0dbfd1fe2e91 (add_system_logical_colors_to_map): New function.
Jason Rumney <jasonr@gnu.org>
parents: 51211
diff changeset
252 #define SYSTEM_COLOR_PREFIX "System"
0dbfd1fe2e91 (add_system_logical_colors_to_map): New function.
Jason Rumney <jasonr@gnu.org>
parents: 51211
diff changeset
253 #define SYSTEM_COLOR_PREFIX_LEN (sizeof (SYSTEM_COLOR_PREFIX) - 1)
0dbfd1fe2e91 (add_system_logical_colors_to_map): New function.
Jason Rumney <jasonr@gnu.org>
parents: 51211
diff changeset
254
15147
38c0ce06203f (quit_char, Vwin32_enable_italics, Vwin32_enable_palette):
Geoff Voelker <voelker@cs.washington.edu>
parents: 15034
diff changeset
255 /* State variables for emulating a three button mouse. */
38c0ce06203f (quit_char, Vwin32_enable_italics, Vwin32_enable_palette):
Geoff Voelker <voelker@cs.washington.edu>
parents: 15034
diff changeset
256 #define LMOUSE 1
38c0ce06203f (quit_char, Vwin32_enable_italics, Vwin32_enable_palette):
Geoff Voelker <voelker@cs.washington.edu>
parents: 15034
diff changeset
257 #define MMOUSE 2
38c0ce06203f (quit_char, Vwin32_enable_italics, Vwin32_enable_palette):
Geoff Voelker <voelker@cs.washington.edu>
parents: 15034
diff changeset
258 #define RMOUSE 4
38c0ce06203f (quit_char, Vwin32_enable_italics, Vwin32_enable_palette):
Geoff Voelker <voelker@cs.washington.edu>
parents: 15034
diff changeset
259
38c0ce06203f (quit_char, Vwin32_enable_italics, Vwin32_enable_palette):
Geoff Voelker <voelker@cs.washington.edu>
parents: 15034
diff changeset
260 static int button_state = 0;
16588
481b7874a1e9 Change identifiers of the form win32* to w32*.
Geoff Voelker <voelker@cs.washington.edu>
parents: 16259
diff changeset
261 static W32Msg saved_mouse_button_msg;
43472
7faac536665f (mouse_move_timer, mouse_button_timer): Initialize.
Jason Rumney <jasonr@gnu.org>
parents: 43398
diff changeset
262 static unsigned mouse_button_timer = 0; /* non-zero when timer is active */
16588
481b7874a1e9 Change identifiers of the form win32* to w32*.
Geoff Voelker <voelker@cs.washington.edu>
parents: 16259
diff changeset
263 static W32Msg saved_mouse_move_msg;
43472
7faac536665f (mouse_move_timer, mouse_button_timer): Initialize.
Jason Rumney <jasonr@gnu.org>
parents: 43398
diff changeset
264 static unsigned mouse_move_timer = 0;
15290
da73440fdb5f (Vwin32_mouse_move_interval): New lisp variable.
Karl Heuer <kwzh@gnu.org>
parents: 15280
diff changeset
265
41732
0d9b74cd27cd (trackmouse_window, track_mouse_event_fn): New vars.
Jason Rumney <jasonr@gnu.org>
parents: 41726
diff changeset
266 /* Window that is tracking the mouse. */
0d9b74cd27cd (trackmouse_window, track_mouse_event_fn): New vars.
Jason Rumney <jasonr@gnu.org>
parents: 41726
diff changeset
267 static HWND track_mouse_window;
48375
4d7b83cc03aa Added a partial implementation of play-sound-internal for Windows. Fixed the following entry in etc/PROBLEMS: Emacs built on Windows 9x/ME crashes at startup on Windows XP, or Emacs built on XP crashes at startup on Windows 9x/ME.
Ben Key <bkey1@tampabay.rr.com>
parents: 48359
diff changeset
268
92935
c99b62a964c4 (MONITOR_DEFAULT_TO_NEAREST, struct MONITOR_INFO)
Jason Rumney <jasonr@gnu.org>
parents: 92362
diff changeset
269 /* Multi-monitor API definitions that are not pulled from the headers
c99b62a964c4 (MONITOR_DEFAULT_TO_NEAREST, struct MONITOR_INFO)
Jason Rumney <jasonr@gnu.org>
parents: 92362
diff changeset
270 since we are compiling for NT 4. */
c99b62a964c4 (MONITOR_DEFAULT_TO_NEAREST, struct MONITOR_INFO)
Jason Rumney <jasonr@gnu.org>
parents: 92362
diff changeset
271 #ifndef MONITOR_DEFAULT_TO_NEAREST
c99b62a964c4 (MONITOR_DEFAULT_TO_NEAREST, struct MONITOR_INFO)
Jason Rumney <jasonr@gnu.org>
parents: 92362
diff changeset
272 #define MONITOR_DEFAULT_TO_NEAREST 2
c99b62a964c4 (MONITOR_DEFAULT_TO_NEAREST, struct MONITOR_INFO)
Jason Rumney <jasonr@gnu.org>
parents: 92362
diff changeset
273 #endif
c99b62a964c4 (MONITOR_DEFAULT_TO_NEAREST, struct MONITOR_INFO)
Jason Rumney <jasonr@gnu.org>
parents: 92362
diff changeset
274 /* MinGW headers define MONITORINFO unconditionally, but MSVC ones don't.
c99b62a964c4 (MONITOR_DEFAULT_TO_NEAREST, struct MONITOR_INFO)
Jason Rumney <jasonr@gnu.org>
parents: 92362
diff changeset
275 To avoid a compile error on one or the other, redefine with a new name. */
c99b62a964c4 (MONITOR_DEFAULT_TO_NEAREST, struct MONITOR_INFO)
Jason Rumney <jasonr@gnu.org>
parents: 92362
diff changeset
276 struct MONITOR_INFO
c99b62a964c4 (MONITOR_DEFAULT_TO_NEAREST, struct MONITOR_INFO)
Jason Rumney <jasonr@gnu.org>
parents: 92362
diff changeset
277 {
c99b62a964c4 (MONITOR_DEFAULT_TO_NEAREST, struct MONITOR_INFO)
Jason Rumney <jasonr@gnu.org>
parents: 92362
diff changeset
278 DWORD cbSize;
c99b62a964c4 (MONITOR_DEFAULT_TO_NEAREST, struct MONITOR_INFO)
Jason Rumney <jasonr@gnu.org>
parents: 92362
diff changeset
279 RECT rcMonitor;
c99b62a964c4 (MONITOR_DEFAULT_TO_NEAREST, struct MONITOR_INFO)
Jason Rumney <jasonr@gnu.org>
parents: 92362
diff changeset
280 RECT rcWork;
c99b62a964c4 (MONITOR_DEFAULT_TO_NEAREST, struct MONITOR_INFO)
Jason Rumney <jasonr@gnu.org>
parents: 92362
diff changeset
281 DWORD dwFlags;
c99b62a964c4 (MONITOR_DEFAULT_TO_NEAREST, struct MONITOR_INFO)
Jason Rumney <jasonr@gnu.org>
parents: 92362
diff changeset
282 };
c99b62a964c4 (MONITOR_DEFAULT_TO_NEAREST, struct MONITOR_INFO)
Jason Rumney <jasonr@gnu.org>
parents: 92362
diff changeset
283
51776
6a03280c654a (clipboard_sequence_fn): New variable.
Jason Rumney <jasonr@gnu.org>
parents: 51763
diff changeset
284 typedef BOOL (WINAPI * TrackMouseEvent_Proc)
6a03280c654a (clipboard_sequence_fn): New variable.
Jason Rumney <jasonr@gnu.org>
parents: 51763
diff changeset
285 (IN OUT LPTRACKMOUSEEVENT lpEventTrack);
91099
8bbec66c0718 Include imm.h.
Jason Rumney <jasonr@gnu.org>
parents: 91085
diff changeset
286 typedef LONG (WINAPI * ImmGetCompositionString_Proc)
8bbec66c0718 Include imm.h.
Jason Rumney <jasonr@gnu.org>
parents: 91085
diff changeset
287 (IN HIMC context, IN DWORD index, OUT LPVOID buffer, IN DWORD bufLen);
8bbec66c0718 Include imm.h.
Jason Rumney <jasonr@gnu.org>
parents: 91085
diff changeset
288 typedef HIMC (WINAPI * ImmGetContext_Proc) (IN HWND window);
92935
c99b62a964c4 (MONITOR_DEFAULT_TO_NEAREST, struct MONITOR_INFO)
Jason Rumney <jasonr@gnu.org>
parents: 92362
diff changeset
289 typedef HMONITOR (WINAPI * MonitorFromPoint_Proc) (IN POINT pt, IN DWORD flags);
c99b62a964c4 (MONITOR_DEFAULT_TO_NEAREST, struct MONITOR_INFO)
Jason Rumney <jasonr@gnu.org>
parents: 92362
diff changeset
290 typedef BOOL (WINAPI * GetMonitorInfo_Proc)
c99b62a964c4 (MONITOR_DEFAULT_TO_NEAREST, struct MONITOR_INFO)
Jason Rumney <jasonr@gnu.org>
parents: 92362
diff changeset
291 (IN HMONITOR monitor, OUT struct MONITOR_INFO* info);
51776
6a03280c654a (clipboard_sequence_fn): New variable.
Jason Rumney <jasonr@gnu.org>
parents: 51763
diff changeset
292
6a03280c654a (clipboard_sequence_fn): New variable.
Jason Rumney <jasonr@gnu.org>
parents: 51763
diff changeset
293 TrackMouseEvent_Proc track_mouse_event_fn = NULL;
6a03280c654a (clipboard_sequence_fn): New variable.
Jason Rumney <jasonr@gnu.org>
parents: 51763
diff changeset
294 ClipboardSequence_Proc clipboard_sequence_fn = NULL;
91099
8bbec66c0718 Include imm.h.
Jason Rumney <jasonr@gnu.org>
parents: 91085
diff changeset
295 ImmGetCompositionString_Proc get_composition_string_fn = NULL;
8bbec66c0718 Include imm.h.
Jason Rumney <jasonr@gnu.org>
parents: 91085
diff changeset
296 ImmGetContext_Proc get_ime_context_fn = NULL;
92935
c99b62a964c4 (MONITOR_DEFAULT_TO_NEAREST, struct MONITOR_INFO)
Jason Rumney <jasonr@gnu.org>
parents: 92362
diff changeset
297 MonitorFromPoint_Proc monitor_from_point_fn = NULL;
c99b62a964c4 (MONITOR_DEFAULT_TO_NEAREST, struct MONITOR_INFO)
Jason Rumney <jasonr@gnu.org>
parents: 92362
diff changeset
298 GetMonitorInfo_Proc get_monitor_info_fn = NULL;
91099
8bbec66c0718 Include imm.h.
Jason Rumney <jasonr@gnu.org>
parents: 91085
diff changeset
299
56971
a35b92556545 (w32_wnd_proc) [WM_MEASUREITEM, WM_DRAWITEM]: Handle
Jason Rumney <jasonr@gnu.org>
parents: 56856
diff changeset
300 extern AppendMenuW_Proc unicode_append_menu;
41732
0d9b74cd27cd (trackmouse_window, track_mouse_event_fn): New vars.
Jason Rumney <jasonr@gnu.org>
parents: 41726
diff changeset
301
91099
8bbec66c0718 Include imm.h.
Jason Rumney <jasonr@gnu.org>
parents: 91085
diff changeset
302 /* Flag to selectively ignore WM_IME_CHAR messages. */
8bbec66c0718 Include imm.h.
Jason Rumney <jasonr@gnu.org>
parents: 91085
diff changeset
303 static int ignore_ime_char = 0;
8bbec66c0718 Include imm.h.
Jason Rumney <jasonr@gnu.org>
parents: 91085
diff changeset
304
21874
c0871d40073e (msh_mousewheel): New variable.
Geoff Voelker <voelker@cs.washington.edu>
parents: 21735
diff changeset
305 /* W95 mousewheel handler */
47942
080b4586492b Fix typo in comment.
Juanma Barranquero <lekktu@gmail.com>
parents: 47731
diff changeset
306 unsigned int msh_mousewheel = 0;
21874
c0871d40073e (msh_mousewheel): New variable.
Geoff Voelker <voelker@cs.washington.edu>
parents: 21735
diff changeset
307
43472
7faac536665f (mouse_move_timer, mouse_button_timer): Initialize.
Jason Rumney <jasonr@gnu.org>
parents: 43398
diff changeset
308 /* Timers */
15290
da73440fdb5f (Vwin32_mouse_move_interval): New lisp variable.
Karl Heuer <kwzh@gnu.org>
parents: 15280
diff changeset
309 #define MOUSE_BUTTON_ID 1
da73440fdb5f (Vwin32_mouse_move_interval): New lisp variable.
Karl Heuer <kwzh@gnu.org>
parents: 15280
diff changeset
310 #define MOUSE_MOVE_ID 2
43472
7faac536665f (mouse_move_timer, mouse_button_timer): Initialize.
Jason Rumney <jasonr@gnu.org>
parents: 43398
diff changeset
311 #define MENU_FREE_ID 3
93075
66248fc5b523 * w32fns.c (hourglass_timer, hourglass_hwnd): New variables.
Jason Rumney <jasonr@gnu.org>
parents: 92940
diff changeset
312 #define HOURGLASS_ID 4
43472
7faac536665f (mouse_move_timer, mouse_button_timer): Initialize.
Jason Rumney <jasonr@gnu.org>
parents: 43398
diff changeset
313 /* The delay (milliseconds) before a menu is freed after WM_EXITMENULOOP
7faac536665f (mouse_move_timer, mouse_button_timer): Initialize.
Jason Rumney <jasonr@gnu.org>
parents: 43398
diff changeset
314 is received. */
7faac536665f (mouse_move_timer, mouse_button_timer): Initialize.
Jason Rumney <jasonr@gnu.org>
parents: 43398
diff changeset
315 #define MENU_FREE_DELAY 1000
7faac536665f (mouse_move_timer, mouse_button_timer): Initialize.
Jason Rumney <jasonr@gnu.org>
parents: 43398
diff changeset
316 static unsigned menu_free_timer = 0;
15147
38c0ce06203f (quit_char, Vwin32_enable_italics, Vwin32_enable_palette):
Geoff Voelker <voelker@cs.washington.edu>
parents: 15034
diff changeset
317
13434
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
318 /* The below are defined in frame.c. */
29317
2d3d5bf49d4e Format and doc changes to bring closer to xfns.c.
Jason Rumney <jasonr@gnu.org>
parents: 29021
diff changeset
319
13434
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
320 extern Lisp_Object Vwindow_system_version;
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
321
34546
51be06b616bf (Fx_hide_tip): Avoid unnecessary work when there's
Andrew Innes <andrewi@gnu.org>
parents: 34314
diff changeset
322 #ifdef GLYPH_DEBUG
51be06b616bf (Fx_hide_tip): Avoid unnecessary work when there's
Andrew Innes <andrewi@gnu.org>
parents: 34314
diff changeset
323 int image_cache_refcount, dpyinfo_refcount;
51be06b616bf (Fx_hide_tip): Avoid unnecessary work when there's
Andrew Innes <andrewi@gnu.org>
parents: 34314
diff changeset
324 #endif
51be06b616bf (Fx_hide_tip): Avoid unnecessary work when there's
Andrew Innes <andrewi@gnu.org>
parents: 34314
diff changeset
325
51be06b616bf (Fx_hide_tip): Avoid unnecessary work when there's
Andrew Innes <andrewi@gnu.org>
parents: 34314
diff changeset
326
16588
481b7874a1e9 Change identifiers of the form win32* to w32*.
Geoff Voelker <voelker@cs.washington.edu>
parents: 16259
diff changeset
327 /* From w32term.c. */
55656
29b250a07fe0 (Fw32_register_hot_key, Fw32_unregister_hot_key)
Jason Rumney <jasonr@gnu.org>
parents: 55592
diff changeset
328 extern int w32_num_mouse_buttons;
23681
af0276da2059 (Vw32_pass_optional_keys_to_system): Variable removed.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23637
diff changeset
329 extern Lisp_Object Vw32_recognize_altgr;
15147
38c0ce06203f (quit_char, Vwin32_enable_italics, Vwin32_enable_palette):
Geoff Voelker <voelker@cs.washington.edu>
parents: 15034
diff changeset
330
40385
b3dbd98f9b97 (w32_wnd_proc) <WM_KILLFOCUS>: Destroy the system caret.
Jason Rumney <jasonr@gnu.org>
parents: 40120
diff changeset
331 extern HWND w32_system_caret_hwnd;
42865
40d08b8571ec (w32_visible_system_caret_hwnd): New static variable.
Jason Rumney <jasonr@gnu.org>
parents: 42845
diff changeset
332
40385
b3dbd98f9b97 (w32_wnd_proc) <WM_KILLFOCUS>: Destroy the system caret.
Jason Rumney <jasonr@gnu.org>
parents: 40120
diff changeset
333 extern int w32_system_caret_height;
b3dbd98f9b97 (w32_wnd_proc) <WM_KILLFOCUS>: Destroy the system caret.
Jason Rumney <jasonr@gnu.org>
parents: 40120
diff changeset
334 extern int w32_system_caret_x;
b3dbd98f9b97 (w32_wnd_proc) <WM_KILLFOCUS>: Destroy the system caret.
Jason Rumney <jasonr@gnu.org>
parents: 40120
diff changeset
335 extern int w32_system_caret_y;
42865
40d08b8571ec (w32_visible_system_caret_hwnd): New static variable.
Jason Rumney <jasonr@gnu.org>
parents: 42845
diff changeset
336 extern int w32_use_visible_system_caret;
40d08b8571ec (w32_visible_system_caret_hwnd): New static variable.
Jason Rumney <jasonr@gnu.org>
parents: 42845
diff changeset
337
42918
9b06036a8c5e (syms_of_w32fns): Initialize w32_visible_system_caret_hwnd.
Jason Rumney <jasonr@gnu.org>
parents: 42865
diff changeset
338 static HWND w32_visible_system_caret_hwnd;
40385
b3dbd98f9b97 (w32_wnd_proc) <WM_KILLFOCUS>: Destroy the system caret.
Jason Rumney <jasonr@gnu.org>
parents: 40120
diff changeset
339
76075
25965473846d (current_popup_menu): Use from w32menu.c.
Jason Rumney <jasonr@gnu.org>
parents: 75348
diff changeset
340 /* From w32menu.c */
25965473846d (current_popup_menu): Use from w32menu.c.
Jason Rumney <jasonr@gnu.org>
parents: 75348
diff changeset
341 extern HMENU current_popup_menu;
76083
5e1d8f9b52ea * w32fns.c (menubar_in_use): New flag.
Jason Rumney <jasonr@gnu.org>
parents: 76078
diff changeset
342 static int menubar_in_use = 0;
76075
25965473846d (current_popup_menu): Use from w32menu.c.
Jason Rumney <jasonr@gnu.org>
parents: 75348
diff changeset
343
93599
a67af10a545c (uniscribe_font_driver) [WINDOWSNT]: Declare for w32fns.c.
Jason Rumney <jasonr@gnu.org>
parents: 93319
diff changeset
344 /* From w32uniscribe.c */
a67af10a545c (uniscribe_font_driver) [WINDOWSNT]: Declare for w32fns.c.
Jason Rumney <jasonr@gnu.org>
parents: 93319
diff changeset
345 extern void syms_of_w32uniscribe ();
a67af10a545c (uniscribe_font_driver) [WINDOWSNT]: Declare for w32fns.c.
Jason Rumney <jasonr@gnu.org>
parents: 93319
diff changeset
346 extern int uniscribe_available;
a67af10a545c (uniscribe_font_driver) [WINDOWSNT]: Declare for w32fns.c.
Jason Rumney <jasonr@gnu.org>
parents: 93319
diff changeset
347
93075
66248fc5b523 * w32fns.c (hourglass_timer, hourglass_hwnd): New variables.
Jason Rumney <jasonr@gnu.org>
parents: 92940
diff changeset
348 /* Function prototypes for hourglass support. */
66248fc5b523 * w32fns.c (hourglass_timer, hourglass_hwnd): New variables.
Jason Rumney <jasonr@gnu.org>
parents: 92940
diff changeset
349 static void show_hourglass P_ ((struct frame *));
66248fc5b523 * w32fns.c (hourglass_timer, hourglass_hwnd): New variables.
Jason Rumney <jasonr@gnu.org>
parents: 92940
diff changeset
350 static void hide_hourglass P_ ((void));
66248fc5b523 * w32fns.c (hourglass_timer, hourglass_hwnd): New variables.
Jason Rumney <jasonr@gnu.org>
parents: 92940
diff changeset
351
66248fc5b523 * w32fns.c (hourglass_timer, hourglass_hwnd): New variables.
Jason Rumney <jasonr@gnu.org>
parents: 92940
diff changeset
352
13434
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
353
19707
0181cc080316 Include limits.h and errno.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18508
diff changeset
354 /* Error if we are not connected to MS-Windows. */
0181cc080316 Include limits.h and errno.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18508
diff changeset
355 void
0181cc080316 Include limits.h and errno.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18508
diff changeset
356 check_w32 ()
0181cc080316 Include limits.h and errno.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18508
diff changeset
357 {
0181cc080316 Include limits.h and errno.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18508
diff changeset
358 if (! w32_in_use)
0181cc080316 Include limits.h and errno.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18508
diff changeset
359 error ("MS-Windows not in use or not initialized");
0181cc080316 Include limits.h and errno.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18508
diff changeset
360 }
0181cc080316 Include limits.h and errno.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18508
diff changeset
361
0181cc080316 Include limits.h and errno.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18508
diff changeset
362 /* Nonzero if we can use mouse menus.
0181cc080316 Include limits.h and errno.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18508
diff changeset
363 You should not call this unless HAVE_MENUS is defined. */
47942
080b4586492b Fix typo in comment.
Juanma Barranquero <lekktu@gmail.com>
parents: 47731
diff changeset
364
19707
0181cc080316 Include limits.h and errno.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18508
diff changeset
365 int
0181cc080316 Include limits.h and errno.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18508
diff changeset
366 have_menus_p ()
0181cc080316 Include limits.h and errno.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18508
diff changeset
367 {
0181cc080316 Include limits.h and errno.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18508
diff changeset
368 return w32_in_use;
0181cc080316 Include limits.h and errno.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18508
diff changeset
369 }
0181cc080316 Include limits.h and errno.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18508
diff changeset
370
13434
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
371 /* Extract a frame as a FRAME_PTR, defaulting to the selected frame
16588
481b7874a1e9 Change identifiers of the form win32* to w32*.
Geoff Voelker <voelker@cs.washington.edu>
parents: 16259
diff changeset
372 and checking validity for W32. */
13434
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
373
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
374 FRAME_PTR
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
375 check_x_frame (frame)
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
376 Lisp_Object frame;
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
377 {
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
378 FRAME_PTR f;
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
379
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
380 if (NILP (frame))
27397
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
381 frame = selected_frame;
40656
cdfd4d09b79a Update usage of CHECK_ macros (remove unused second argument).
Pavel Janík <Pavel@Janik.cz>
parents: 40528
diff changeset
382 CHECK_LIVE_FRAME (frame);
27397
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
383 f = XFRAME (frame);
16588
481b7874a1e9 Change identifiers of the form win32* to w32*.
Geoff Voelker <voelker@cs.washington.edu>
parents: 16259
diff changeset
384 if (! FRAME_W32_P (f))
63704
426ba3ecedd7 (check_x_frame, check_x_display_info): Follow error conventions.
Juanma Barranquero <lekktu@gmail.com>
parents: 63348
diff changeset
385 error ("Non-W32 frame used");
13434
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
386 return f;
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
387 }
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
388
47942
080b4586492b Fix typo in comment.
Juanma Barranquero <lekktu@gmail.com>
parents: 47731
diff changeset
389 /* Let the user specify a display with a frame.
16588
481b7874a1e9 Change identifiers of the form win32* to w32*.
Geoff Voelker <voelker@cs.washington.edu>
parents: 16259
diff changeset
390 nil stands for the selected frame--or, if that is not a w32 frame,
13434
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
391 the first display on the list. */
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
392
50362
6d942c1d5f2d * w32fns.c (Qauto_raise, Qauto_lower, ...): Remove vars for frame
Kim F. Storm <storm@cua.dk>
parents: 50229
diff changeset
393 struct w32_display_info *
13434
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
394 check_x_display_info (frame)
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
395 Lisp_Object frame;
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
396 {
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
397 if (NILP (frame))
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
398 {
27397
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
399 struct frame *sf = XFRAME (selected_frame);
47942
080b4586492b Fix typo in comment.
Juanma Barranquero <lekktu@gmail.com>
parents: 47731
diff changeset
400
27397
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
401 if (FRAME_W32_P (sf) && FRAME_LIVE_P (sf))
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
402 return FRAME_W32_DISPLAY_INFO (sf);
13434
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
403 else
16588
481b7874a1e9 Change identifiers of the form win32* to w32*.
Geoff Voelker <voelker@cs.washington.edu>
parents: 16259
diff changeset
404 return &one_w32_display_info;
13434
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
405 }
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
406 else if (STRINGP (frame))
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
407 return x_display_info_for_name (frame);
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
408 else
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
409 {
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
410 FRAME_PTR f;
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
411
40656
cdfd4d09b79a Update usage of CHECK_ macros (remove unused second argument).
Pavel Janík <Pavel@Janik.cz>
parents: 40528
diff changeset
412 CHECK_LIVE_FRAME (frame);
13434
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
413 f = XFRAME (frame);
16588
481b7874a1e9 Change identifiers of the form win32* to w32*.
Geoff Voelker <voelker@cs.washington.edu>
parents: 16259
diff changeset
414 if (! FRAME_W32_P (f))
63704
426ba3ecedd7 (check_x_frame, check_x_display_info): Follow error conventions.
Juanma Barranquero <lekktu@gmail.com>
parents: 63348
diff changeset
415 error ("Non-W32 frame used");
16588
481b7874a1e9 Change identifiers of the form win32* to w32*.
Geoff Voelker <voelker@cs.washington.edu>
parents: 16259
diff changeset
416 return FRAME_W32_DISPLAY_INFO (f);
13434
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
417 }
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
418 }
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
419
16588
481b7874a1e9 Change identifiers of the form win32* to w32*.
Geoff Voelker <voelker@cs.washington.edu>
parents: 16259
diff changeset
420 /* Return the Emacs frame-object corresponding to an w32 window.
13434
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
421 It could be the frame's main window or an icon window. */
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
422
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
423 /* This function can be called during GC, so use GC_xxx type test macros. */
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
424
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
425 struct frame *
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
426 x_window_to_frame (dpyinfo, wdesc)
16588
481b7874a1e9 Change identifiers of the form win32* to w32*.
Geoff Voelker <voelker@cs.washington.edu>
parents: 16259
diff changeset
427 struct w32_display_info *dpyinfo;
13434
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
428 HWND wdesc;
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
429 {
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
430 Lisp_Object tail, frame;
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
431 struct frame *f;
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
432
90970
3371fc48749b Replace uses of GC_* macros with the non-GC_ versions.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 90919
diff changeset
433 for (tail = Vframe_list; CONSP (tail); tail = XCDR (tail))
13434
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
434 {
25646
9154af188477 Use XCAR and XCDR instead of explicit member references.
Ken Raeburn <raeburn@raeburn.org>
parents: 25289
diff changeset
435 frame = XCAR (tail);
90970
3371fc48749b Replace uses of GC_* macros with the non-GC_ versions.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 90919
diff changeset
436 if (!FRAMEP (frame))
13434
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
437 continue;
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
438 f = XFRAME (frame);
26729
f5dded41adcc Changes for automatic remapping of X colors on terminal frames:
Eli Zaretskii <eliz@gnu.org>
parents: 25646
diff changeset
439 if (!FRAME_W32_P (f) || FRAME_W32_DISPLAY_INFO (f) != dpyinfo)
13434
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
440 continue;
27936
4c1ad68f8688 Bring up to date with xfns.c changes from 2000-02-25 and 2000-02-21.
Jason Rumney <jasonr@gnu.org>
parents: 27894
diff changeset
441
16588
481b7874a1e9 Change identifiers of the form win32* to w32*.
Geoff Voelker <voelker@cs.washington.edu>
parents: 16259
diff changeset
442 if (FRAME_W32_WINDOW (f) == wdesc)
13434
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
443 return f;
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
444 }
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
445 return 0;
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
446 }
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
447
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
448
34546
51be06b616bf (Fx_hide_tip): Avoid unnecessary work when there's
Andrew Innes <andrewi@gnu.org>
parents: 34314
diff changeset
449 static Lisp_Object unwind_create_frame P_ ((Lisp_Object));
51be06b616bf (Fx_hide_tip): Avoid unnecessary work when there's
Andrew Innes <andrewi@gnu.org>
parents: 34314
diff changeset
450 static Lisp_Object unwind_create_tip_frame P_ ((Lisp_Object));
64662
605f42af1c34 (my_set_window_pos, my_show_window): Don't declare.
Juanma Barranquero <lekktu@gmail.com>
parents: 64487
diff changeset
451 static void my_create_window P_ ((struct frame *));
605f42af1c34 (my_set_window_pos, my_show_window): Don't declare.
Juanma Barranquero <lekktu@gmail.com>
parents: 64487
diff changeset
452 static void my_create_tip_window P_ ((struct frame *));
50362
6d942c1d5f2d * w32fns.c (Qauto_raise, Qauto_lower, ...): Remove vars for frame
Kim F. Storm <storm@cua.dk>
parents: 50229
diff changeset
453
33387
01a10bc04233 (Qw32_charset_hangeul): Rename to match w32 headers.
Jason Rumney <jasonr@gnu.org>
parents: 33216
diff changeset
454 /* TODO: Native Input Method support; see x_create_im. */
27397
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
455 void x_set_foreground_color P_ ((struct frame *, Lisp_Object, Lisp_Object));
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
456 void x_set_background_color P_ ((struct frame *, Lisp_Object, Lisp_Object));
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
457 void x_set_mouse_color P_ ((struct frame *, Lisp_Object, Lisp_Object));
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
458 void x_set_cursor_color P_ ((struct frame *, Lisp_Object, Lisp_Object));
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
459 void x_set_border_color P_ ((struct frame *, Lisp_Object, Lisp_Object));
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
460 void x_set_cursor_type P_ ((struct frame *, Lisp_Object, Lisp_Object));
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
461 void x_set_icon_type P_ ((struct frame *, Lisp_Object, Lisp_Object));
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
462 void x_set_icon_name P_ ((struct frame *, Lisp_Object, Lisp_Object));
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
463 void x_explicitly_set_name P_ ((struct frame *, Lisp_Object, Lisp_Object));
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
464 void x_set_menu_bar_lines P_ ((struct frame *, Lisp_Object, Lisp_Object));
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
465 void x_set_title P_ ((struct frame *, Lisp_Object, Lisp_Object));
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
466 void x_set_tool_bar_lines P_ ((struct frame *, Lisp_Object, Lisp_Object));
40120
03eb905a4d8e (Fx_file_dialog): Pass a filter to GetOpenFileName.
Jason Rumney <jasonr@gnu.org>
parents: 40009
diff changeset
467 static void x_edge_detection P_ ((struct frame *, struct image *, Lisp_Object,
03eb905a4d8e (Fx_file_dialog): Pass a filter to GetOpenFileName.
Jason Rumney <jasonr@gnu.org>
parents: 40009
diff changeset
468 Lisp_Object));
13434
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
469
50362
6d942c1d5f2d * w32fns.c (Qauto_raise, Qauto_lower, ...): Remove vars for frame
Kim F. Storm <storm@cua.dk>
parents: 50229
diff changeset
470
13434
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
471
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
472
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
473 /* Store the screen positions of frame F into XPTR and YPTR.
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
474 These are the positions of the containing window manager window,
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
475 not Emacs's own window. */
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
476
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
477 void
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
478 x_real_positions (f, xptr, yptr)
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
479 FRAME_PTR f;
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
480 int *xptr, *yptr;
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
481 {
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
482 POINT pt;
43398
8782b8cfed62 *** empty log message ***
Jason Rumney <jasonr@gnu.org>
parents: 43210
diff changeset
483 RECT rect;
8782b8cfed62 *** empty log message ***
Jason Rumney <jasonr@gnu.org>
parents: 43210
diff changeset
484
78212
87b807b2d9b1 (x_real_positions): Get real position from OS instead of calculating it.
Jason Rumney <jasonr@gnu.org>
parents: 78106
diff changeset
485 /* Get the bounds of the WM window. */
87b807b2d9b1 (x_real_positions): Get real position from OS instead of calculating it.
Jason Rumney <jasonr@gnu.org>
parents: 78106
diff changeset
486 GetWindowRect (FRAME_W32_WINDOW (f), &rect);
87b807b2d9b1 (x_real_positions): Get real position from OS instead of calculating it.
Jason Rumney <jasonr@gnu.org>
parents: 78106
diff changeset
487
87b807b2d9b1 (x_real_positions): Get real position from OS instead of calculating it.
Jason Rumney <jasonr@gnu.org>
parents: 78106
diff changeset
488 pt.x = 0;
87b807b2d9b1 (x_real_positions): Get real position from OS instead of calculating it.
Jason Rumney <jasonr@gnu.org>
parents: 78106
diff changeset
489 pt.y = 0;
87b807b2d9b1 (x_real_positions): Get real position from OS instead of calculating it.
Jason Rumney <jasonr@gnu.org>
parents: 78106
diff changeset
490
87b807b2d9b1 (x_real_positions): Get real position from OS instead of calculating it.
Jason Rumney <jasonr@gnu.org>
parents: 78106
diff changeset
491 /* Convert (0, 0) in the client area to screen co-ordinates. */
87b807b2d9b1 (x_real_positions): Get real position from OS instead of calculating it.
Jason Rumney <jasonr@gnu.org>
parents: 78106
diff changeset
492 ClientToScreen (FRAME_W32_WINDOW (f), &pt);
13434
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
493
43398
8782b8cfed62 *** empty log message ***
Jason Rumney <jasonr@gnu.org>
parents: 43210
diff changeset
494 /* Remember x_pixels_diff and y_pixels_diff. */
51211
28ea05de2dc5 Make (many) trivial substitutions for renamed and
Kim F. Storm <storm@cua.dk>
parents: 50377
diff changeset
495 f->x_pixels_diff = pt.x - rect.left;
28ea05de2dc5 Make (many) trivial substitutions for renamed and
Kim F. Storm <storm@cua.dk>
parents: 50377
diff changeset
496 f->y_pixels_diff = pt.y - rect.top;
43398
8782b8cfed62 *** empty log message ***
Jason Rumney <jasonr@gnu.org>
parents: 43210
diff changeset
497
78212
87b807b2d9b1 (x_real_positions): Get real position from OS instead of calculating it.
Jason Rumney <jasonr@gnu.org>
parents: 78106
diff changeset
498 *xptr = rect.left;
87b807b2d9b1 (x_real_positions): Get real position from OS instead of calculating it.
Jason Rumney <jasonr@gnu.org>
parents: 78106
diff changeset
499 *yptr = rect.top;
13434
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
500 }
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
501
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
502
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
503
40964
fb970d0c56eb Change doc-string comments to `new style'. [w/`doc:' keyword]. Doc fixes.
Jason Rumney <jasonr@gnu.org>
parents: 40873
diff changeset
504 DEFUN ("w32-define-rgb-color", Fw32_define_rgb_color,
fb970d0c56eb Change doc-string comments to `new style'. [w/`doc:' keyword]. Doc fixes.
Jason Rumney <jasonr@gnu.org>
parents: 40873
diff changeset
505 Sw32_define_rgb_color, 4, 4, 0,
94432
2dd3f3069c1c (Fw32_define_rgb_color): Fix typo in docstring.
Juanma Barranquero <lekktu@gmail.com>
parents: 93599
diff changeset
506 doc: /* Convert RGB numbers to a Windows color reference and associate with NAME.
79387
0ca197abc593 (Fw32_registered_hot_keys): Don't return the nil values corresponding
Juanma Barranquero <lekktu@gmail.com>
parents: 79381
diff changeset
507 This adds or updates a named color to `w32-color-map', making it
40964
fb970d0c56eb Change doc-string comments to `new style'. [w/`doc:' keyword]. Doc fixes.
Jason Rumney <jasonr@gnu.org>
parents: 40873
diff changeset
508 available for use. The original entry's RGB ref is returned, or nil
fb970d0c56eb Change doc-string comments to `new style'. [w/`doc:' keyword]. Doc fixes.
Jason Rumney <jasonr@gnu.org>
parents: 40873
diff changeset
509 if the entry is new. */)
15147
38c0ce06203f (quit_char, Vwin32_enable_italics, Vwin32_enable_palette):
Geoff Voelker <voelker@cs.washington.edu>
parents: 15034
diff changeset
510 (red, green, blue, name)
38c0ce06203f (quit_char, Vwin32_enable_italics, Vwin32_enable_palette):
Geoff Voelker <voelker@cs.washington.edu>
parents: 15034
diff changeset
511 Lisp_Object red, green, blue, name;
13434
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
512 {
15147
38c0ce06203f (quit_char, Vwin32_enable_italics, Vwin32_enable_palette):
Geoff Voelker <voelker@cs.washington.edu>
parents: 15034
diff changeset
513 Lisp_Object rgb;
38c0ce06203f (quit_char, Vwin32_enable_italics, Vwin32_enable_palette):
Geoff Voelker <voelker@cs.washington.edu>
parents: 15034
diff changeset
514 Lisp_Object oldrgb = Qnil;
38c0ce06203f (quit_char, Vwin32_enable_italics, Vwin32_enable_palette):
Geoff Voelker <voelker@cs.washington.edu>
parents: 15034
diff changeset
515 Lisp_Object entry;
38c0ce06203f (quit_char, Vwin32_enable_italics, Vwin32_enable_palette):
Geoff Voelker <voelker@cs.washington.edu>
parents: 15034
diff changeset
516
40656
cdfd4d09b79a Update usage of CHECK_ macros (remove unused second argument).
Pavel Janík <Pavel@Janik.cz>
parents: 40528
diff changeset
517 CHECK_NUMBER (red);
cdfd4d09b79a Update usage of CHECK_ macros (remove unused second argument).
Pavel Janík <Pavel@Janik.cz>
parents: 40528
diff changeset
518 CHECK_NUMBER (green);
cdfd4d09b79a Update usage of CHECK_ macros (remove unused second argument).
Pavel Janík <Pavel@Janik.cz>
parents: 40528
diff changeset
519 CHECK_NUMBER (blue);
cdfd4d09b79a Update usage of CHECK_ macros (remove unused second argument).
Pavel Janík <Pavel@Janik.cz>
parents: 40528
diff changeset
520 CHECK_STRING (name);
15147
38c0ce06203f (quit_char, Vwin32_enable_italics, Vwin32_enable_palette):
Geoff Voelker <voelker@cs.washington.edu>
parents: 15034
diff changeset
521
79387
0ca197abc593 (Fw32_registered_hot_keys): Don't return the nil values corresponding
Juanma Barranquero <lekktu@gmail.com>
parents: 79381
diff changeset
522 XSETINT (rgb, RGB (XUINT (red), XUINT (green), XUINT (blue)));
15147
38c0ce06203f (quit_char, Vwin32_enable_italics, Vwin32_enable_palette):
Geoff Voelker <voelker@cs.washington.edu>
parents: 15034
diff changeset
523
38c0ce06203f (quit_char, Vwin32_enable_italics, Vwin32_enable_palette):
Geoff Voelker <voelker@cs.washington.edu>
parents: 15034
diff changeset
524 BLOCK_INPUT;
38c0ce06203f (quit_char, Vwin32_enable_italics, Vwin32_enable_palette):
Geoff Voelker <voelker@cs.washington.edu>
parents: 15034
diff changeset
525
16588
481b7874a1e9 Change identifiers of the form win32* to w32*.
Geoff Voelker <voelker@cs.washington.edu>
parents: 16259
diff changeset
526 /* replace existing entry in w32-color-map or add new entry. */
481b7874a1e9 Change identifiers of the form win32* to w32*.
Geoff Voelker <voelker@cs.washington.edu>
parents: 16259
diff changeset
527 entry = Fassoc (name, Vw32_color_map);
15147
38c0ce06203f (quit_char, Vwin32_enable_italics, Vwin32_enable_palette):
Geoff Voelker <voelker@cs.washington.edu>
parents: 15034
diff changeset
528 if (NILP (entry))
38c0ce06203f (quit_char, Vwin32_enable_italics, Vwin32_enable_palette):
Geoff Voelker <voelker@cs.washington.edu>
parents: 15034
diff changeset
529 {
38c0ce06203f (quit_char, Vwin32_enable_italics, Vwin32_enable_palette):
Geoff Voelker <voelker@cs.washington.edu>
parents: 15034
diff changeset
530 entry = Fcons (name, rgb);
16588
481b7874a1e9 Change identifiers of the form win32* to w32*.
Geoff Voelker <voelker@cs.washington.edu>
parents: 16259
diff changeset
531 Vw32_color_map = Fcons (entry, Vw32_color_map);
15147
38c0ce06203f (quit_char, Vwin32_enable_italics, Vwin32_enable_palette):
Geoff Voelker <voelker@cs.washington.edu>
parents: 15034
diff changeset
532 }
38c0ce06203f (quit_char, Vwin32_enable_italics, Vwin32_enable_palette):
Geoff Voelker <voelker@cs.washington.edu>
parents: 15034
diff changeset
533 else
38c0ce06203f (quit_char, Vwin32_enable_italics, Vwin32_enable_palette):
Geoff Voelker <voelker@cs.washington.edu>
parents: 15034
diff changeset
534 {
38c0ce06203f (quit_char, Vwin32_enable_italics, Vwin32_enable_palette):
Geoff Voelker <voelker@cs.washington.edu>
parents: 15034
diff changeset
535 oldrgb = Fcdr (entry);
38c0ce06203f (quit_char, Vwin32_enable_italics, Vwin32_enable_palette):
Geoff Voelker <voelker@cs.washington.edu>
parents: 15034
diff changeset
536 Fsetcdr (entry, rgb);
38c0ce06203f (quit_char, Vwin32_enable_italics, Vwin32_enable_palette):
Geoff Voelker <voelker@cs.washington.edu>
parents: 15034
diff changeset
537 }
38c0ce06203f (quit_char, Vwin32_enable_italics, Vwin32_enable_palette):
Geoff Voelker <voelker@cs.washington.edu>
parents: 15034
diff changeset
538
38c0ce06203f (quit_char, Vwin32_enable_italics, Vwin32_enable_palette):
Geoff Voelker <voelker@cs.washington.edu>
parents: 15034
diff changeset
539 UNBLOCK_INPUT;
38c0ce06203f (quit_char, Vwin32_enable_italics, Vwin32_enable_palette):
Geoff Voelker <voelker@cs.washington.edu>
parents: 15034
diff changeset
540
38c0ce06203f (quit_char, Vwin32_enable_italics, Vwin32_enable_palette):
Geoff Voelker <voelker@cs.washington.edu>
parents: 15034
diff changeset
541 return (oldrgb);
13434
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
542 }
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
543
40964
fb970d0c56eb Change doc-string comments to `new style'. [w/`doc:' keyword]. Doc fixes.
Jason Rumney <jasonr@gnu.org>
parents: 40873
diff changeset
544 DEFUN ("w32-load-color-file", Fw32_load_color_file,
fb970d0c56eb Change doc-string comments to `new style'. [w/`doc:' keyword]. Doc fixes.
Jason Rumney <jasonr@gnu.org>
parents: 40873
diff changeset
545 Sw32_load_color_file, 1, 1, 0,
fb970d0c56eb Change doc-string comments to `new style'. [w/`doc:' keyword]. Doc fixes.
Jason Rumney <jasonr@gnu.org>
parents: 40873
diff changeset
546 doc: /* Create an alist of color entries from an external file.
79387
0ca197abc593 (Fw32_registered_hot_keys): Don't return the nil values corresponding
Juanma Barranquero <lekktu@gmail.com>
parents: 79381
diff changeset
547 Assign this value to `w32-color-map' to replace the existing color map.
40964
fb970d0c56eb Change doc-string comments to `new style'. [w/`doc:' keyword]. Doc fixes.
Jason Rumney <jasonr@gnu.org>
parents: 40873
diff changeset
548
fb970d0c56eb Change doc-string comments to `new style'. [w/`doc:' keyword]. Doc fixes.
Jason Rumney <jasonr@gnu.org>
parents: 40873
diff changeset
549 The file should define one named RGB color per line like so:
fb970d0c56eb Change doc-string comments to `new style'. [w/`doc:' keyword]. Doc fixes.
Jason Rumney <jasonr@gnu.org>
parents: 40873
diff changeset
550 R G B name
fb970d0c56eb Change doc-string comments to `new style'. [w/`doc:' keyword]. Doc fixes.
Jason Rumney <jasonr@gnu.org>
parents: 40873
diff changeset
551 where R,G,B are numbers between 0 and 255 and name is an arbitrary string. */)
15147
38c0ce06203f (quit_char, Vwin32_enable_italics, Vwin32_enable_palette):
Geoff Voelker <voelker@cs.washington.edu>
parents: 15034
diff changeset
552 (filename)
38c0ce06203f (quit_char, Vwin32_enable_italics, Vwin32_enable_palette):
Geoff Voelker <voelker@cs.washington.edu>
parents: 15034
diff changeset
553 Lisp_Object filename;
38c0ce06203f (quit_char, Vwin32_enable_italics, Vwin32_enable_palette):
Geoff Voelker <voelker@cs.washington.edu>
parents: 15034
diff changeset
554 {
38c0ce06203f (quit_char, Vwin32_enable_italics, Vwin32_enable_palette):
Geoff Voelker <voelker@cs.washington.edu>
parents: 15034
diff changeset
555 FILE *fp;
38c0ce06203f (quit_char, Vwin32_enable_italics, Vwin32_enable_palette):
Geoff Voelker <voelker@cs.washington.edu>
parents: 15034
diff changeset
556 Lisp_Object cmap = Qnil;
38c0ce06203f (quit_char, Vwin32_enable_italics, Vwin32_enable_palette):
Geoff Voelker <voelker@cs.washington.edu>
parents: 15034
diff changeset
557 Lisp_Object abspath;
38c0ce06203f (quit_char, Vwin32_enable_italics, Vwin32_enable_palette):
Geoff Voelker <voelker@cs.washington.edu>
parents: 15034
diff changeset
558
40656
cdfd4d09b79a Update usage of CHECK_ macros (remove unused second argument).
Pavel Janík <Pavel@Janik.cz>
parents: 40528
diff changeset
559 CHECK_STRING (filename);
15147
38c0ce06203f (quit_char, Vwin32_enable_italics, Vwin32_enable_palette):
Geoff Voelker <voelker@cs.washington.edu>
parents: 15034
diff changeset
560 abspath = Fexpand_file_name (filename, Qnil);
38c0ce06203f (quit_char, Vwin32_enable_italics, Vwin32_enable_palette):
Geoff Voelker <voelker@cs.washington.edu>
parents: 15034
diff changeset
561
46370
40db0673e6f0 Most uses of XSTRING combined with STRING_BYTES or indirection changed to
Ken Raeburn <raeburn@raeburn.org>
parents: 46293
diff changeset
562 fp = fopen (SDATA (filename), "rt");
15147
38c0ce06203f (quit_char, Vwin32_enable_italics, Vwin32_enable_palette):
Geoff Voelker <voelker@cs.washington.edu>
parents: 15034
diff changeset
563 if (fp)
38c0ce06203f (quit_char, Vwin32_enable_italics, Vwin32_enable_palette):
Geoff Voelker <voelker@cs.washington.edu>
parents: 15034
diff changeset
564 {
38c0ce06203f (quit_char, Vwin32_enable_italics, Vwin32_enable_palette):
Geoff Voelker <voelker@cs.washington.edu>
parents: 15034
diff changeset
565 char buf[512];
38c0ce06203f (quit_char, Vwin32_enable_italics, Vwin32_enable_palette):
Geoff Voelker <voelker@cs.washington.edu>
parents: 15034
diff changeset
566 int red, green, blue;
38c0ce06203f (quit_char, Vwin32_enable_italics, Vwin32_enable_palette):
Geoff Voelker <voelker@cs.washington.edu>
parents: 15034
diff changeset
567 int num;
38c0ce06203f (quit_char, Vwin32_enable_italics, Vwin32_enable_palette):
Geoff Voelker <voelker@cs.washington.edu>
parents: 15034
diff changeset
568
38c0ce06203f (quit_char, Vwin32_enable_italics, Vwin32_enable_palette):
Geoff Voelker <voelker@cs.washington.edu>
parents: 15034
diff changeset
569 BLOCK_INPUT;
38c0ce06203f (quit_char, Vwin32_enable_italics, Vwin32_enable_palette):
Geoff Voelker <voelker@cs.washington.edu>
parents: 15034
diff changeset
570
38c0ce06203f (quit_char, Vwin32_enable_italics, Vwin32_enable_palette):
Geoff Voelker <voelker@cs.washington.edu>
parents: 15034
diff changeset
571 while (fgets (buf, sizeof (buf), fp) != NULL) {
38c0ce06203f (quit_char, Vwin32_enable_italics, Vwin32_enable_palette):
Geoff Voelker <voelker@cs.washington.edu>
parents: 15034
diff changeset
572 if (sscanf (buf, "%u %u %u %n", &red, &green, &blue, &num) == 3)
38c0ce06203f (quit_char, Vwin32_enable_italics, Vwin32_enable_palette):
Geoff Voelker <voelker@cs.washington.edu>
parents: 15034
diff changeset
573 {
38c0ce06203f (quit_char, Vwin32_enable_italics, Vwin32_enable_palette):
Geoff Voelker <voelker@cs.washington.edu>
parents: 15034
diff changeset
574 char *name = buf + num;
38c0ce06203f (quit_char, Vwin32_enable_italics, Vwin32_enable_palette):
Geoff Voelker <voelker@cs.washington.edu>
parents: 15034
diff changeset
575 num = strlen (name) - 1;
38c0ce06203f (quit_char, Vwin32_enable_italics, Vwin32_enable_palette):
Geoff Voelker <voelker@cs.washington.edu>
parents: 15034
diff changeset
576 if (name[num] == '\n')
38c0ce06203f (quit_char, Vwin32_enable_italics, Vwin32_enable_palette):
Geoff Voelker <voelker@cs.washington.edu>
parents: 15034
diff changeset
577 name[num] = 0;
38c0ce06203f (quit_char, Vwin32_enable_italics, Vwin32_enable_palette):
Geoff Voelker <voelker@cs.washington.edu>
parents: 15034
diff changeset
578 cmap = Fcons (Fcons (build_string (name),
38c0ce06203f (quit_char, Vwin32_enable_italics, Vwin32_enable_palette):
Geoff Voelker <voelker@cs.washington.edu>
parents: 15034
diff changeset
579 make_number (RGB (red, green, blue))),
38c0ce06203f (quit_char, Vwin32_enable_italics, Vwin32_enable_palette):
Geoff Voelker <voelker@cs.washington.edu>
parents: 15034
diff changeset
580 cmap);
38c0ce06203f (quit_char, Vwin32_enable_italics, Vwin32_enable_palette):
Geoff Voelker <voelker@cs.washington.edu>
parents: 15034
diff changeset
581 }
38c0ce06203f (quit_char, Vwin32_enable_italics, Vwin32_enable_palette):
Geoff Voelker <voelker@cs.washington.edu>
parents: 15034
diff changeset
582 }
38c0ce06203f (quit_char, Vwin32_enable_italics, Vwin32_enable_palette):
Geoff Voelker <voelker@cs.washington.edu>
parents: 15034
diff changeset
583 fclose (fp);
38c0ce06203f (quit_char, Vwin32_enable_italics, Vwin32_enable_palette):
Geoff Voelker <voelker@cs.washington.edu>
parents: 15034
diff changeset
584
38c0ce06203f (quit_char, Vwin32_enable_italics, Vwin32_enable_palette):
Geoff Voelker <voelker@cs.washington.edu>
parents: 15034
diff changeset
585 UNBLOCK_INPUT;
38c0ce06203f (quit_char, Vwin32_enable_italics, Vwin32_enable_palette):
Geoff Voelker <voelker@cs.washington.edu>
parents: 15034
diff changeset
586 }
38c0ce06203f (quit_char, Vwin32_enable_italics, Vwin32_enable_palette):
Geoff Voelker <voelker@cs.washington.edu>
parents: 15034
diff changeset
587
38c0ce06203f (quit_char, Vwin32_enable_italics, Vwin32_enable_palette):
Geoff Voelker <voelker@cs.washington.edu>
parents: 15034
diff changeset
588 return cmap;
38c0ce06203f (quit_char, Vwin32_enable_italics, Vwin32_enable_palette):
Geoff Voelker <voelker@cs.washington.edu>
parents: 15034
diff changeset
589 }
38c0ce06203f (quit_char, Vwin32_enable_italics, Vwin32_enable_palette):
Geoff Voelker <voelker@cs.washington.edu>
parents: 15034
diff changeset
590
16588
481b7874a1e9 Change identifiers of the form win32* to w32*.
Geoff Voelker <voelker@cs.washington.edu>
parents: 16259
diff changeset
591 /* The default colors for the w32 color map */
47942
080b4586492b Fix typo in comment.
Juanma Barranquero <lekktu@gmail.com>
parents: 47731
diff changeset
592 typedef struct colormap_t
13434
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
593 {
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
594 char *name;
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
595 COLORREF colorref;
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
596 } colormap_t;
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
597
47942
080b4586492b Fix typo in comment.
Juanma Barranquero <lekktu@gmail.com>
parents: 47731
diff changeset
598 colormap_t w32_color_map[] =
13434
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
599 {
14983
88b23d545848 (win32_color_map): Use PALETTERGB instead of RGB.
Geoff Voelker <voelker@cs.washington.edu>
parents: 14810
diff changeset
600 {"snow" , PALETTERGB (255,250,250)},
88b23d545848 (win32_color_map): Use PALETTERGB instead of RGB.
Geoff Voelker <voelker@cs.washington.edu>
parents: 14810
diff changeset
601 {"ghost white" , PALETTERGB (248,248,255)},
88b23d545848 (win32_color_map): Use PALETTERGB instead of RGB.
Geoff Voelker <voelker@cs.washington.edu>
parents: 14810
diff changeset
602 {"GhostWhite" , PALETTERGB (248,248,255)},
88b23d545848 (win32_color_map): Use PALETTERGB instead of RGB.
Geoff Voelker <voelker@cs.washington.edu>
parents: 14810
diff changeset
603 {"white smoke" , PALETTERGB (245,245,245)},
88b23d545848 (win32_color_map): Use PALETTERGB instead of RGB.
Geoff Voelker <voelker@cs.washington.edu>
parents: 14810
diff changeset
604 {"WhiteSmoke" , PALETTERGB (245,245,245)},
88b23d545848 (win32_color_map): Use PALETTERGB instead of RGB.
Geoff Voelker <voelker@cs.washington.edu>
parents: 14810
diff changeset
605 {"gainsboro" , PALETTERGB (220,220,220)},
88b23d545848 (win32_color_map): Use PALETTERGB instead of RGB.
Geoff Voelker <voelker@cs.washington.edu>
parents: 14810
diff changeset
606 {"floral white" , PALETTERGB (255,250,240)},
88b23d545848 (win32_color_map): Use PALETTERGB instead of RGB.
Geoff Voelker <voelker@cs.washington.edu>
parents: 14810
diff changeset
607 {"FloralWhite" , PALETTERGB (255,250,240)},
88b23d545848 (win32_color_map): Use PALETTERGB instead of RGB.
Geoff Voelker <voelker@cs.washington.edu>
parents: 14810
diff changeset
608 {"old lace" , PALETTERGB (253,245,230)},
88b23d545848 (win32_color_map): Use PALETTERGB instead of RGB.
Geoff Voelker <voelker@cs.washington.edu>
parents: 14810
diff changeset
609 {"OldLace" , PALETTERGB (253,245,230)},
88b23d545848 (win32_color_map): Use PALETTERGB instead of RGB.
Geoff Voelker <voelker@cs.washington.edu>
parents: 14810
diff changeset
610 {"linen" , PALETTERGB (250,240,230)},
88b23d545848 (win32_color_map): Use PALETTERGB instead of RGB.
Geoff Voelker <voelker@cs.washington.edu>
parents: 14810
diff changeset
611 {"antique white" , PALETTERGB (250,235,215)},
88b23d545848 (win32_color_map): Use PALETTERGB instead of RGB.
Geoff Voelker <voelker@cs.washington.edu>
parents: 14810
diff changeset
612 {"AntiqueWhite" , PALETTERGB (250,235,215)},
88b23d545848 (win32_color_map): Use PALETTERGB instead of RGB.
Geoff Voelker <voelker@cs.washington.edu>
parents: 14810
diff changeset
613 {"papaya whip" , PALETTERGB (255,239,213)},
88b23d545848 (win32_color_map): Use PALETTERGB instead of RGB.
Geoff Voelker <voelker@cs.washington.edu>
parents: 14810
diff changeset
614 {"PapayaWhip" , PALETTERGB (255,239,213)},
88b23d545848 (win32_color_map): Use PALETTERGB instead of RGB.
Geoff Voelker <voelker@cs.washington.edu>
parents: 14810
diff changeset
615 {"blanched almond" , PALETTERGB (255,235,205)},
88b23d545848 (win32_color_map): Use PALETTERGB instead of RGB.
Geoff Voelker <voelker@cs.washington.edu>
parents: 14810
diff changeset
616 {"BlanchedAlmond" , PALETTERGB (255,235,205)},
88b23d545848 (win32_color_map): Use PALETTERGB instead of RGB.
Geoff Voelker <voelker@cs.washington.edu>
parents: 14810
diff changeset
617 {"bisque" , PALETTERGB (255,228,196)},
88b23d545848 (win32_color_map): Use PALETTERGB instead of RGB.
Geoff Voelker <voelker@cs.washington.edu>
parents: 14810
diff changeset
618 {"peach puff" , PALETTERGB (255,218,185)},
88b23d545848 (win32_color_map): Use PALETTERGB instead of RGB.
Geoff Voelker <voelker@cs.washington.edu>
parents: 14810
diff changeset
619 {"PeachPuff" , PALETTERGB (255,218,185)},
88b23d545848 (win32_color_map): Use PALETTERGB instead of RGB.
Geoff Voelker <voelker@cs.washington.edu>
parents: 14810
diff changeset
620 {"navajo white" , PALETTERGB (255,222,173)},
88b23d545848 (win32_color_map): Use PALETTERGB instead of RGB.
Geoff Voelker <voelker@cs.washington.edu>
parents: 14810
diff changeset
621 {"NavajoWhite" , PALETTERGB (255,222,173)},
88b23d545848 (win32_color_map): Use PALETTERGB instead of RGB.
Geoff Voelker <voelker@cs.washington.edu>
parents: 14810
diff changeset
622 {"moccasin" , PALETTERGB (255,228,181)},
88b23d545848 (win32_color_map): Use PALETTERGB instead of RGB.
Geoff Voelker <voelker@cs.washington.edu>
parents: 14810
diff changeset
623 {"cornsilk" , PALETTERGB (255,248,220)},
88b23d545848 (win32_color_map): Use PALETTERGB instead of RGB.
Geoff Voelker <voelker@cs.washington.edu>
parents: 14810
diff changeset
624 {"ivory" , PALETTERGB (255,255,240)},
88b23d545848 (win32_color_map): Use PALETTERGB instead of RGB.
Geoff Voelker <voelker@cs.washington.edu>
parents: 14810
diff changeset
625 {"lemon chiffon" , PALETTERGB (255,250,205)},
88b23d545848 (win32_color_map): Use PALETTERGB instead of RGB.
Geoff Voelker <voelker@cs.washington.edu>
parents: 14810
diff changeset
626 {"LemonChiffon" , PALETTERGB (255,250,205)},
88b23d545848 (win32_color_map): Use PALETTERGB instead of RGB.
Geoff Voelker <voelker@cs.washington.edu>
parents: 14810
diff changeset
627 {"seashell" , PALETTERGB (255,245,238)},
88b23d545848 (win32_color_map): Use PALETTERGB instead of RGB.
Geoff Voelker <voelker@cs.washington.edu>
parents: 14810
diff changeset
628 {"honeydew" , PALETTERGB (240,255,240)},
88b23d545848 (win32_color_map): Use PALETTERGB instead of RGB.
Geoff Voelker <voelker@cs.washington.edu>
parents: 14810
diff changeset
629 {"mint cream" , PALETTERGB (245,255,250)},
88b23d545848 (win32_color_map): Use PALETTERGB instead of RGB.
Geoff Voelker <voelker@cs.washington.edu>
parents: 14810
diff changeset
630 {"MintCream" , PALETTERGB (245,255,250)},
88b23d545848 (win32_color_map): Use PALETTERGB instead of RGB.
Geoff Voelker <voelker@cs.washington.edu>
parents: 14810
diff changeset
631 {"azure" , PALETTERGB (240,255,255)},
88b23d545848 (win32_color_map): Use PALETTERGB instead of RGB.
Geoff Voelker <voelker@cs.washington.edu>
parents: 14810
diff changeset
632 {"alice blue" , PALETTERGB (240,248,255)},
88b23d545848 (win32_color_map): Use PALETTERGB instead of RGB.
Geoff Voelker <voelker@cs.washington.edu>
parents: 14810
diff changeset
633 {"AliceBlue" , PALETTERGB (240,248,255)},
88b23d545848 (win32_color_map): Use PALETTERGB instead of RGB.
Geoff Voelker <voelker@cs.washington.edu>
parents: 14810
diff changeset
634 {"lavender" , PALETTERGB (230,230,250)},
88b23d545848 (win32_color_map): Use PALETTERGB instead of RGB.
Geoff Voelker <voelker@cs.washington.edu>
parents: 14810
diff changeset
635 {"lavender blush" , PALETTERGB (255,240,245)},
88b23d545848 (win32_color_map): Use PALETTERGB instead of RGB.
Geoff Voelker <voelker@cs.washington.edu>
parents: 14810
diff changeset
636 {"LavenderBlush" , PALETTERGB (255,240,245)},
88b23d545848 (win32_color_map): Use PALETTERGB instead of RGB.
Geoff Voelker <voelker@cs.washington.edu>
parents: 14810
diff changeset
637 {"misty rose" , PALETTERGB (255,228,225)},
88b23d545848 (win32_color_map): Use PALETTERGB instead of RGB.
Geoff Voelker <voelker@cs.washington.edu>
parents: 14810
diff changeset
638 {"MistyRose" , PALETTERGB (255,228,225)},
88b23d545848 (win32_color_map): Use PALETTERGB instead of RGB.
Geoff Voelker <voelker@cs.washington.edu>
parents: 14810
diff changeset
639 {"white" , PALETTERGB (255,255,255)},
88b23d545848 (win32_color_map): Use PALETTERGB instead of RGB.
Geoff Voelker <voelker@cs.washington.edu>
parents: 14810
diff changeset
640 {"black" , PALETTERGB ( 0, 0, 0)},
88b23d545848 (win32_color_map): Use PALETTERGB instead of RGB.
Geoff Voelker <voelker@cs.washington.edu>
parents: 14810
diff changeset
641 {"dark slate gray" , PALETTERGB ( 47, 79, 79)},
88b23d545848 (win32_color_map): Use PALETTERGB instead of RGB.
Geoff Voelker <voelker@cs.washington.edu>
parents: 14810
diff changeset
642 {"DarkSlateGray" , PALETTERGB ( 47, 79, 79)},
88b23d545848 (win32_color_map): Use PALETTERGB instead of RGB.
Geoff Voelker <voelker@cs.washington.edu>
parents: 14810
diff changeset
643 {"dark slate grey" , PALETTERGB ( 47, 79, 79)},
88b23d545848 (win32_color_map): Use PALETTERGB instead of RGB.
Geoff Voelker <voelker@cs.washington.edu>
parents: 14810
diff changeset
644 {"DarkSlateGrey" , PALETTERGB ( 47, 79, 79)},
88b23d545848 (win32_color_map): Use PALETTERGB instead of RGB.
Geoff Voelker <voelker@cs.washington.edu>
parents: 14810
diff changeset
645 {"dim gray" , PALETTERGB (105,105,105)},
88b23d545848 (win32_color_map): Use PALETTERGB instead of RGB.
Geoff Voelker <voelker@cs.washington.edu>
parents: 14810
diff changeset
646 {"DimGray" , PALETTERGB (105,105,105)},
88b23d545848 (win32_color_map): Use PALETTERGB instead of RGB.
Geoff Voelker <voelker@cs.washington.edu>
parents: 14810
diff changeset
647 {"dim grey" , PALETTERGB (105,105,105)},
88b23d545848 (win32_color_map): Use PALETTERGB instead of RGB.
Geoff Voelker <voelker@cs.washington.edu>
parents: 14810
diff changeset
648 {"DimGrey" , PALETTERGB (105,105,105)},
88b23d545848 (win32_color_map): Use PALETTERGB instead of RGB.
Geoff Voelker <voelker@cs.washington.edu>
parents: 14810
diff changeset
649 {"slate gray" , PALETTERGB (112,128,144)},
88b23d545848 (win32_color_map): Use PALETTERGB instead of RGB.
Geoff Voelker <voelker@cs.washington.edu>
parents: 14810
diff changeset
650 {"SlateGray" , PALETTERGB (112,128,144)},
88b23d545848 (win32_color_map): Use PALETTERGB instead of RGB.
Geoff Voelker <voelker@cs.washington.edu>
parents: 14810
diff changeset
651 {"slate grey" , PALETTERGB (112,128,144)},
88b23d545848 (win32_color_map): Use PALETTERGB instead of RGB.
Geoff Voelker <voelker@cs.washington.edu>
parents: 14810
diff changeset
652 {"SlateGrey" , PALETTERGB (112,128,144)},
88b23d545848 (win32_color_map): Use PALETTERGB instead of RGB.
Geoff Voelker <voelker@cs.washington.edu>
parents: 14810
diff changeset
653 {"light slate gray" , PALETTERGB (119,136,153)},
88b23d545848 (win32_color_map): Use PALETTERGB instead of RGB.
Geoff Voelker <voelker@cs.washington.edu>
parents: 14810
diff changeset
654 {"LightSlateGray" , PALETTERGB (119,136,153)},
88b23d545848 (win32_color_map): Use PALETTERGB instead of RGB.
Geoff Voelker <voelker@cs.washington.edu>
parents: 14810
diff changeset
655 {"light slate grey" , PALETTERGB (119,136,153)},
88b23d545848 (win32_color_map): Use PALETTERGB instead of RGB.
Geoff Voelker <voelker@cs.washington.edu>
parents: 14810
diff changeset
656 {"LightSlateGrey" , PALETTERGB (119,136,153)},
88b23d545848 (win32_color_map): Use PALETTERGB instead of RGB.
Geoff Voelker <voelker@cs.washington.edu>
parents: 14810
diff changeset
657 {"gray" , PALETTERGB (190,190,190)},
88b23d545848 (win32_color_map): Use PALETTERGB instead of RGB.
Geoff Voelker <voelker@cs.washington.edu>
parents: 14810
diff changeset
658 {"grey" , PALETTERGB (190,190,190)},
88b23d545848 (win32_color_map): Use PALETTERGB instead of RGB.
Geoff Voelker <voelker@cs.washington.edu>
parents: 14810
diff changeset
659 {"light grey" , PALETTERGB (211,211,211)},
88b23d545848 (win32_color_map): Use PALETTERGB instead of RGB.
Geoff Voelker <voelker@cs.washington.edu>
parents: 14810
diff changeset
660 {"LightGrey" , PALETTERGB (211,211,211)},
88b23d545848 (win32_color_map): Use PALETTERGB instead of RGB.
Geoff Voelker <voelker@cs.washington.edu>
parents: 14810
diff changeset
661 {"light gray" , PALETTERGB (211,211,211)},
88b23d545848 (win32_color_map): Use PALETTERGB instead of RGB.
Geoff Voelker <voelker@cs.washington.edu>
parents: 14810
diff changeset
662 {"LightGray" , PALETTERGB (211,211,211)},
88b23d545848 (win32_color_map): Use PALETTERGB instead of RGB.
Geoff Voelker <voelker@cs.washington.edu>
parents: 14810
diff changeset
663 {"midnight blue" , PALETTERGB ( 25, 25,112)},
88b23d545848 (win32_color_map): Use PALETTERGB instead of RGB.
Geoff Voelker <voelker@cs.washington.edu>
parents: 14810
diff changeset
664 {"MidnightBlue" , PALETTERGB ( 25, 25,112)},
88b23d545848 (win32_color_map): Use PALETTERGB instead of RGB.
Geoff Voelker <voelker@cs.washington.edu>
parents: 14810
diff changeset
665 {"navy" , PALETTERGB ( 0, 0,128)},
88b23d545848 (win32_color_map): Use PALETTERGB instead of RGB.
Geoff Voelker <voelker@cs.washington.edu>
parents: 14810
diff changeset
666 {"navy blue" , PALETTERGB ( 0, 0,128)},
88b23d545848 (win32_color_map): Use PALETTERGB instead of RGB.
Geoff Voelker <voelker@cs.washington.edu>
parents: 14810
diff changeset
667 {"NavyBlue" , PALETTERGB ( 0, 0,128)},
88b23d545848 (win32_color_map): Use PALETTERGB instead of RGB.
Geoff Voelker <voelker@cs.washington.edu>
parents: 14810
diff changeset
668 {"cornflower blue" , PALETTERGB (100,149,237)},
88b23d545848 (win32_color_map): Use PALETTERGB instead of RGB.
Geoff Voelker <voelker@cs.washington.edu>
parents: 14810
diff changeset
669 {"CornflowerBlue" , PALETTERGB (100,149,237)},
88b23d545848 (win32_color_map): Use PALETTERGB instead of RGB.
Geoff Voelker <voelker@cs.washington.edu>
parents: 14810
diff changeset
670 {"dark slate blue" , PALETTERGB ( 72, 61,139)},
88b23d545848 (win32_color_map): Use PALETTERGB instead of RGB.
Geoff Voelker <voelker@cs.washington.edu>
parents: 14810
diff changeset
671 {"DarkSlateBlue" , PALETTERGB ( 72, 61,139)},
88b23d545848 (win32_color_map): Use PALETTERGB instead of RGB.
Geoff Voelker <voelker@cs.washington.edu>
parents: 14810
diff changeset
672 {"slate blue" , PALETTERGB (106, 90,205)},
88b23d545848 (win32_color_map): Use PALETTERGB instead of RGB.
Geoff Voelker <voelker@cs.washington.edu>
parents: 14810
diff changeset
673 {"SlateBlue" , PALETTERGB (106, 90,205)},
88b23d545848 (win32_color_map): Use PALETTERGB instead of RGB.
Geoff Voelker <voelker@cs.washington.edu>
parents: 14810
diff changeset
674 {"medium slate blue" , PALETTERGB (123,104,238)},
88b23d545848 (win32_color_map): Use PALETTERGB instead of RGB.
Geoff Voelker <voelker@cs.washington.edu>
parents: 14810
diff changeset
675 {"MediumSlateBlue" , PALETTERGB (123,104,238)},
88b23d545848 (win32_color_map): Use PALETTERGB instead of RGB.
Geoff Voelker <voelker@cs.washington.edu>
parents: 14810
diff changeset
676 {"light slate blue" , PALETTERGB (132,112,255)},
88b23d545848 (win32_color_map): Use PALETTERGB instead of RGB.
Geoff Voelker <voelker@cs.washington.edu>
parents: 14810
diff changeset
677 {"LightSlateBlue" , PALETTERGB (132,112,255)},
88b23d545848 (win32_color_map): Use PALETTERGB instead of RGB.
Geoff Voelker <voelker@cs.washington.edu>
parents: 14810
diff changeset
678 {"medium blue" , PALETTERGB ( 0, 0,205)},
88b23d545848 (win32_color_map): Use PALETTERGB instead of RGB.
Geoff Voelker <voelker@cs.washington.edu>
parents: 14810
diff changeset
679 {"MediumBlue" , PALETTERGB ( 0, 0,205)},
88b23d545848 (win32_color_map): Use PALETTERGB instead of RGB.
Geoff Voelker <voelker@cs.washington.edu>
parents: 14810
diff changeset
680 {"royal blue" , PALETTERGB ( 65,105,225)},
88b23d545848 (win32_color_map): Use PALETTERGB instead of RGB.
Geoff Voelker <voelker@cs.washington.edu>
parents: 14810
diff changeset
681 {"RoyalBlue" , PALETTERGB ( 65,105,225)},
88b23d545848 (win32_color_map): Use PALETTERGB instead of RGB.
Geoff Voelker <voelker@cs.washington.edu>
parents: 14810
diff changeset
682 {"blue" , PALETTERGB ( 0, 0,255)},
88b23d545848 (win32_color_map): Use PALETTERGB instead of RGB.
Geoff Voelker <voelker@cs.washington.edu>
parents: 14810
diff changeset
683 {"dodger blue" , PALETTERGB ( 30,144,255)},
88b23d545848 (win32_color_map): Use PALETTERGB instead of RGB.
Geoff Voelker <voelker@cs.washington.edu>
parents: 14810
diff changeset
684 {"DodgerBlue" , PALETTERGB ( 30,144,255)},
88b23d545848 (win32_color_map): Use PALETTERGB instead of RGB.
Geoff Voelker <voelker@cs.washington.edu>
parents: 14810
diff changeset
685 {"deep sky blue" , PALETTERGB ( 0,191,255)},
88b23d545848 (win32_color_map): Use PALETTERGB instead of RGB.
Geoff Voelker <voelker@cs.washington.edu>
parents: 14810
diff changeset
686 {"DeepSkyBlue" , PALETTERGB ( 0,191,255)},
88b23d545848 (win32_color_map): Use PALETTERGB instead of RGB.
Geoff Voelker <voelker@cs.washington.edu>
parents: 14810
diff changeset
687 {"sky blue" , PALETTERGB (135,206,235)},
88b23d545848 (win32_color_map): Use PALETTERGB instead of RGB.
Geoff Voelker <voelker@cs.washington.edu>
parents: 14810
diff changeset
688 {"SkyBlue" , PALETTERGB (135,206,235)},
88b23d545848 (win32_color_map): Use PALETTERGB instead of RGB.
Geoff Voelker <voelker@cs.washington.edu>
parents: 14810
diff changeset
689 {"light sky blue" , PALETTERGB (135,206,250)},
88b23d545848 (win32_color_map): Use PALETTERGB instead of RGB.
Geoff Voelker <voelker@cs.washington.edu>
parents: 14810
diff changeset
690 {"LightSkyBlue" , PALETTERGB (135,206,250)},
88b23d545848 (win32_color_map): Use PALETTERGB instead of RGB.
Geoff Voelker <voelker@cs.washington.edu>
parents: 14810
diff changeset
691 {"steel blue" , PALETTERGB ( 70,130,180)},
88b23d545848 (win32_color_map): Use PALETTERGB instead of RGB.
Geoff Voelker <voelker@cs.washington.edu>
parents: 14810
diff changeset
692 {"SteelBlue" , PALETTERGB ( 70,130,180)},
88b23d545848 (win32_color_map): Use PALETTERGB instead of RGB.
Geoff Voelker <voelker@cs.washington.edu>
parents: 14810
diff changeset
693 {"light steel blue" , PALETTERGB (176,196,222)},
88b23d545848 (win32_color_map): Use PALETTERGB instead of RGB.
Geoff Voelker <voelker@cs.washington.edu>
parents: 14810
diff changeset
694 {"LightSteelBlue" , PALETTERGB (176,196,222)},
88b23d545848 (win32_color_map): Use PALETTERGB instead of RGB.
Geoff Voelker <voelker@cs.washington.edu>
parents: 14810
diff changeset
695 {"light blue" , PALETTERGB (173,216,230)},
88b23d545848 (win32_color_map): Use PALETTERGB instead of RGB.
Geoff Voelker <voelker@cs.washington.edu>
parents: 14810
diff changeset
696 {"LightBlue" , PALETTERGB (173,216,230)},
88b23d545848 (win32_color_map): Use PALETTERGB instead of RGB.
Geoff Voelker <voelker@cs.washington.edu>
parents: 14810
diff changeset
697 {"powder blue" , PALETTERGB (176,224,230)},
88b23d545848 (win32_color_map): Use PALETTERGB instead of RGB.
Geoff Voelker <voelker@cs.washington.edu>
parents: 14810
diff changeset
698 {"PowderBlue" , PALETTERGB (176,224,230)},
88b23d545848 (win32_color_map): Use PALETTERGB instead of RGB.
Geoff Voelker <voelker@cs.washington.edu>
parents: 14810
diff changeset
699 {"pale turquoise" , PALETTERGB (175,238,238)},
88b23d545848 (win32_color_map): Use PALETTERGB instead of RGB.
Geoff Voelker <voelker@cs.washington.edu>
parents: 14810
diff changeset
700 {"PaleTurquoise" , PALETTERGB (175,238,238)},
88b23d545848 (win32_color_map): Use PALETTERGB instead of RGB.
Geoff Voelker <voelker@cs.washington.edu>
parents: 14810
diff changeset
701 {"dark turquoise" , PALETTERGB ( 0,206,209)},
88b23d545848 (win32_color_map): Use PALETTERGB instead of RGB.
Geoff Voelker <voelker@cs.washington.edu>
parents: 14810
diff changeset
702 {"DarkTurquoise" , PALETTERGB ( 0,206,209)},
88b23d545848 (win32_color_map): Use PALETTERGB instead of RGB.
Geoff Voelker <voelker@cs.washington.edu>
parents: 14810
diff changeset
703 {"medium turquoise" , PALETTERGB ( 72,209,204)},
88b23d545848 (win32_color_map): Use PALETTERGB instead of RGB.
Geoff Voelker <voelker@cs.washington.edu>
parents: 14810
diff changeset
704 {"MediumTurquoise" , PALETTERGB ( 72,209,204)},
88b23d545848 (win32_color_map): Use PALETTERGB instead of RGB.
Geoff Voelker <voelker@cs.washington.edu>
parents: 14810
diff changeset
705 {"turquoise" , PALETTERGB ( 64,224,208)},
88b23d545848 (win32_color_map): Use PALETTERGB instead of RGB.
Geoff Voelker <voelker@cs.washington.edu>
parents: 14810
diff changeset
706 {"cyan" , PALETTERGB ( 0,255,255)},
88b23d545848 (win32_color_map): Use PALETTERGB instead of RGB.
Geoff Voelker <voelker@cs.washington.edu>
parents: 14810
diff changeset
707 {"light cyan" , PALETTERGB (224,255,255)},
88b23d545848 (win32_color_map): Use PALETTERGB instead of RGB.
Geoff Voelker <voelker@cs.washington.edu>
parents: 14810
diff changeset
708 {"LightCyan" , PALETTERGB (224,255,255)},
88b23d545848 (win32_color_map): Use PALETTERGB instead of RGB.
Geoff Voelker <voelker@cs.washington.edu>
parents: 14810
diff changeset
709 {"cadet blue" , PALETTERGB ( 95,158,160)},
88b23d545848 (win32_color_map): Use PALETTERGB instead of RGB.
Geoff Voelker <voelker@cs.washington.edu>
parents: 14810
diff changeset
710 {"CadetBlue" , PALETTERGB ( 95,158,160)},
88b23d545848 (win32_color_map): Use PALETTERGB instead of RGB.
Geoff Voelker <voelker@cs.washington.edu>
parents: 14810
diff changeset
711 {"medium aquamarine" , PALETTERGB (102,205,170)},
88b23d545848 (win32_color_map): Use PALETTERGB instead of RGB.
Geoff Voelker <voelker@cs.washington.edu>
parents: 14810
diff changeset
712 {"MediumAquamarine" , PALETTERGB (102,205,170)},
88b23d545848 (win32_color_map): Use PALETTERGB instead of RGB.
Geoff Voelker <voelker@cs.washington.edu>
parents: 14810
diff changeset
713 {"aquamarine" , PALETTERGB (127,255,212)},
88b23d545848 (win32_color_map): Use PALETTERGB instead of RGB.
Geoff Voelker <voelker@cs.washington.edu>
parents: 14810
diff changeset
714 {"dark green" , PALETTERGB ( 0,100, 0)},
88b23d545848 (win32_color_map): Use PALETTERGB instead of RGB.
Geoff Voelker <voelker@cs.washington.edu>
parents: 14810
diff changeset
715 {"DarkGreen" , PALETTERGB ( 0,100, 0)},
88b23d545848 (win32_color_map): Use PALETTERGB instead of RGB.
Geoff Voelker <voelker@cs.washington.edu>
parents: 14810
diff changeset
716 {"dark olive green" , PALETTERGB ( 85,107, 47)},
88b23d545848 (win32_color_map): Use PALETTERGB instead of RGB.
Geoff Voelker <voelker@cs.washington.edu>
parents: 14810
diff changeset
717 {"DarkOliveGreen" , PALETTERGB ( 85,107, 47)},
88b23d545848 (win32_color_map): Use PALETTERGB instead of RGB.
Geoff Voelker <voelker@cs.washington.edu>
parents: 14810
diff changeset
718 {"dark sea green" , PALETTERGB (143,188,143)},
88b23d545848 (win32_color_map): Use PALETTERGB instead of RGB.
Geoff Voelker <voelker@cs.washington.edu>
parents: 14810
diff changeset
719 {"DarkSeaGreen" , PALETTERGB (143,188,143)},
88b23d545848 (win32_color_map): Use PALETTERGB instead of RGB.
Geoff Voelker <voelker@cs.washington.edu>
parents: 14810
diff changeset
720 {"sea green" , PALETTERGB ( 46,139, 87)},
88b23d545848 (win32_color_map): Use PALETTERGB instead of RGB.
Geoff Voelker <voelker@cs.washington.edu>
parents: 14810
diff changeset
721 {"SeaGreen" , PALETTERGB ( 46,139, 87)},
88b23d545848 (win32_color_map): Use PALETTERGB instead of RGB.
Geoff Voelker <voelker@cs.washington.edu>
parents: 14810
diff changeset
722 {"medium sea green" , PALETTERGB ( 60,179,113)},
88b23d545848 (win32_color_map): Use PALETTERGB instead of RGB.
Geoff Voelker <voelker@cs.washington.edu>
parents: 14810
diff changeset
723 {"MediumSeaGreen" , PALETTERGB ( 60,179,113)},
88b23d545848 (win32_color_map): Use PALETTERGB instead of RGB.
Geoff Voelker <voelker@cs.washington.edu>
parents: 14810
diff changeset
724 {"light sea green" , PALETTERGB ( 32,178,170)},
88b23d545848 (win32_color_map): Use PALETTERGB instead of RGB.
Geoff Voelker <voelker@cs.washington.edu>
parents: 14810
diff changeset
725 {"LightSeaGreen" , PALETTERGB ( 32,178,170)},
88b23d545848 (win32_color_map): Use PALETTERGB instead of RGB.
Geoff Voelker <voelker@cs.washington.edu>
parents: 14810
diff changeset
726 {"pale green" , PALETTERGB (152,251,152)},
88b23d545848 (win32_color_map): Use PALETTERGB instead of RGB.
Geoff Voelker <voelker@cs.washington.edu>
parents: 14810
diff changeset
727 {"PaleGreen" , PALETTERGB (152,251,152)},
88b23d545848 (win32_color_map): Use PALETTERGB instead of RGB.
Geoff Voelker <voelker@cs.washington.edu>
parents: 14810
diff changeset
728 {"spring green" , PALETTERGB ( 0,255,127)},
88b23d545848 (win32_color_map): Use PALETTERGB instead of RGB.
Geoff Voelker <voelker@cs.washington.edu>
parents: 14810
diff changeset
729 {"SpringGreen" , PALETTERGB ( 0,255,127)},
88b23d545848 (win32_color_map): Use PALETTERGB instead of RGB.
Geoff Voelker <voelker@cs.washington.edu>
parents: 14810
diff changeset
730 {"lawn green" , PALETTERGB (124,252, 0)},
88b23d545848 (win32_color_map): Use PALETTERGB instead of RGB.
Geoff Voelker <voelker@cs.washington.edu>
parents: 14810
diff changeset
731 {"LawnGreen" , PALETTERGB (124,252, 0)},
88b23d545848 (win32_color_map): Use PALETTERGB instead of RGB.
Geoff Voelker <voelker@cs.washington.edu>
parents: 14810
diff changeset
732 {"green" , PALETTERGB ( 0,255, 0)},
88b23d545848 (win32_color_map): Use PALETTERGB instead of RGB.
Geoff Voelker <voelker@cs.washington.edu>
parents: 14810
diff changeset
733 {"chartreuse" , PALETTERGB (127,255, 0)},
88b23d545848 (win32_color_map): Use PALETTERGB instead of RGB.
Geoff Voelker <voelker@cs.washington.edu>
parents: 14810
diff changeset
734 {"medium spring green" , PALETTERGB ( 0,250,154)},
88b23d545848 (win32_color_map): Use PALETTERGB instead of RGB.
Geoff Voelker <voelker@cs.washington.edu>
parents: 14810
diff changeset
735 {"MediumSpringGreen" , PALETTERGB ( 0,250,154)},
88b23d545848 (win32_color_map): Use PALETTERGB instead of RGB.
Geoff Voelker <voelker@cs.washington.edu>
parents: 14810
diff changeset
736 {"green yellow" , PALETTERGB (173,255, 47)},
88b23d545848 (win32_color_map): Use PALETTERGB instead of RGB.
Geoff Voelker <voelker@cs.washington.edu>
parents: 14810
diff changeset
737 {"GreenYellow" , PALETTERGB (173,255, 47)},
88b23d545848 (win32_color_map): Use PALETTERGB instead of RGB.
Geoff Voelker <voelker@cs.washington.edu>
parents: 14810
diff changeset
738 {"lime green" , PALETTERGB ( 50,205, 50)},
88b23d545848 (win32_color_map): Use PALETTERGB instead of RGB.
Geoff Voelker <voelker@cs.washington.edu>
parents: 14810
diff changeset
739 {"LimeGreen" , PALETTERGB ( 50,205, 50)},
88b23d545848 (win32_color_map): Use PALETTERGB instead of RGB.
Geoff Voelker <voelker@cs.washington.edu>
parents: 14810
diff changeset
740 {"yellow green" , PALETTERGB (154,205, 50)},
88b23d545848 (win32_color_map): Use PALETTERGB instead of RGB.
Geoff Voelker <voelker@cs.washington.edu>
parents: 14810
diff changeset
741 {"YellowGreen" , PALETTERGB (154,205, 50)},
88b23d545848 (win32_color_map): Use PALETTERGB instead of RGB.
Geoff Voelker <voelker@cs.washington.edu>
parents: 14810
diff changeset
742 {"forest green" , PALETTERGB ( 34,139, 34)},
88b23d545848 (win32_color_map): Use PALETTERGB instead of RGB.
Geoff Voelker <voelker@cs.washington.edu>
parents: 14810
diff changeset
743 {"ForestGreen" , PALETTERGB ( 34,139, 34)},
88b23d545848 (win32_color_map): Use PALETTERGB instead of RGB.
Geoff Voelker <voelker@cs.washington.edu>
parents: 14810
diff changeset
744 {"olive drab" , PALETTERGB (107,142, 35)},
88b23d545848 (win32_color_map): Use PALETTERGB instead of RGB.
Geoff Voelker <voelker@cs.washington.edu>
parents: 14810
diff changeset
745 {"OliveDrab" , PALETTERGB (107,142, 35)},
88b23d545848 (win32_color_map): Use PALETTERGB instead of RGB.
Geoff Voelker <voelker@cs.washington.edu>
parents: 14810
diff changeset
746 {"dark khaki" , PALETTERGB (189,183,107)},
88b23d545848 (win32_color_map): Use PALETTERGB instead of RGB.
Geoff Voelker <voelker@cs.washington.edu>
parents: 14810
diff changeset
747 {"DarkKhaki" , PALETTERGB (189,183,107)},
88b23d545848 (win32_color_map): Use PALETTERGB instead of RGB.
Geoff Voelker <voelker@cs.washington.edu>
parents: 14810
diff changeset
748 {"khaki" , PALETTERGB (240,230,140)},
88b23d545848 (win32_color_map): Use PALETTERGB instead of RGB.
Geoff Voelker <voelker@cs.washington.edu>
parents: 14810
diff changeset
749 {"pale goldenrod" , PALETTERGB (238,232,170)},
88b23d545848 (win32_color_map): Use PALETTERGB instead of RGB.
Geoff Voelker <voelker@cs.washington.edu>
parents: 14810
diff changeset
750 {"PaleGoldenrod" , PALETTERGB (238,232,170)},
88b23d545848 (win32_color_map): Use PALETTERGB instead of RGB.
Geoff Voelker <voelker@cs.washington.edu>
parents: 14810
diff changeset
751 {"light goldenrod yellow" , PALETTERGB (250,250,210)},
88b23d545848 (win32_color_map): Use PALETTERGB instead of RGB.
Geoff Voelker <voelker@cs.washington.edu>
parents: 14810
diff changeset
752 {"LightGoldenrodYellow" , PALETTERGB (250,250,210)},
88b23d545848 (win32_color_map): Use PALETTERGB instead of RGB.
Geoff Voelker <voelker@cs.washington.edu>
parents: 14810
diff changeset
753 {"light yellow" , PALETTERGB (255,255,224)},
88b23d545848 (win32_color_map): Use PALETTERGB instead of RGB.
Geoff Voelker <voelker@cs.washington.edu>
parents: 14810
diff changeset
754 {"LightYellow" , PALETTERGB (255,255,224)},
88b23d545848 (win32_color_map): Use PALETTERGB instead of RGB.
Geoff Voelker <voelker@cs.washington.edu>
parents: 14810
diff changeset
755 {"yellow" , PALETTERGB (255,255, 0)},
88b23d545848 (win32_color_map): Use PALETTERGB instead of RGB.
Geoff Voelker <voelker@cs.washington.edu>
parents: 14810
diff changeset
756 {"gold" , PALETTERGB (255,215, 0)},
88b23d545848 (win32_color_map): Use PALETTERGB instead of RGB.
Geoff Voelker <voelker@cs.washington.edu>
parents: 14810
diff changeset
757 {"light goldenrod" , PALETTERGB (238,221,130)},
88b23d545848 (win32_color_map): Use PALETTERGB instead of RGB.
Geoff Voelker <voelker@cs.washington.edu>
parents: 14810
diff changeset
758 {"LightGoldenrod" , PALETTERGB (238,221,130)},
88b23d545848 (win32_color_map): Use PALETTERGB instead of RGB.
Geoff Voelker <voelker@cs.washington.edu>
parents: 14810
diff changeset
759 {"goldenrod" , PALETTERGB (218,165, 32)},
88b23d545848 (win32_color_map): Use PALETTERGB instead of RGB.
Geoff Voelker <voelker@cs.washington.edu>
parents: 14810
diff changeset
760 {"dark goldenrod" , PALETTERGB (184,134, 11)},
88b23d545848 (win32_color_map): Use PALETTERGB instead of RGB.
Geoff Voelker <voelker@cs.washington.edu>
parents: 14810
diff changeset
761 {"DarkGoldenrod" , PALETTERGB (184,134, 11)},
88b23d545848 (win32_color_map): Use PALETTERGB instead of RGB.
Geoff Voelker <voelker@cs.washington.edu>
parents: 14810
diff changeset
762 {"rosy brown" , PALETTERGB (188,143,143)},
88b23d545848 (win32_color_map): Use PALETTERGB instead of RGB.
Geoff Voelker <voelker@cs.washington.edu>
parents: 14810
diff changeset
763 {"RosyBrown" , PALETTERGB (188,143,143)},
88b23d545848 (win32_color_map): Use PALETTERGB instead of RGB.
Geoff Voelker <voelker@cs.washington.edu>
parents: 14810
diff changeset
764 {"indian red" , PALETTERGB (205, 92, 92)},
88b23d545848 (win32_color_map): Use PALETTERGB instead of RGB.
Geoff Voelker <voelker@cs.washington.edu>
parents: 14810
diff changeset
765 {"IndianRed" , PALETTERGB (205, 92, 92)},
88b23d545848 (win32_color_map): Use PALETTERGB instead of RGB.
Geoff Voelker <voelker@cs.washington.edu>
parents: 14810
diff changeset
766 {"saddle brown" , PALETTERGB (139, 69, 19)},
88b23d545848 (win32_color_map): Use PALETTERGB instead of RGB.
Geoff Voelker <voelker@cs.washington.edu>
parents: 14810
diff changeset
767 {"SaddleBrown" , PALETTERGB (139, 69, 19)},
88b23d545848 (win32_color_map): Use PALETTERGB instead of RGB.
Geoff Voelker <voelker@cs.washington.edu>
parents: 14810
diff changeset
768 {"sienna" , PALETTERGB (160, 82, 45)},
88b23d545848 (win32_color_map): Use PALETTERGB instead of RGB.
Geoff Voelker <voelker@cs.washington.edu>
parents: 14810
diff changeset
769 {"peru" , PALETTERGB (205,133, 63)},
88b23d545848 (win32_color_map): Use PALETTERGB instead of RGB.
Geoff Voelker <voelker@cs.washington.edu>
parents: 14810
diff changeset
770 {"burlywood" , PALETTERGB (222,184,135)},
88b23d545848 (win32_color_map): Use PALETTERGB instead of RGB.
Geoff Voelker <voelker@cs.washington.edu>
parents: 14810
diff changeset
771 {"beige" , PALETTERGB (245,245,220)},
88b23d545848 (win32_color_map): Use PALETTERGB instead of RGB.
Geoff Voelker <voelker@cs.washington.edu>
parents: 14810
diff changeset
772 {"wheat" , PALETTERGB (245,222,179)},
88b23d545848 (win32_color_map): Use PALETTERGB instead of RGB.
Geoff Voelker <voelker@cs.washington.edu>
parents: 14810
diff changeset
773 {"sandy brown" , PALETTERGB (244,164, 96)},
88b23d545848 (win32_color_map): Use PALETTERGB instead of RGB.
Geoff Voelker <voelker@cs.washington.edu>
parents: 14810
diff changeset
774 {"SandyBrown" , PALETTERGB (244,164, 96)},
88b23d545848 (win32_color_map): Use PALETTERGB instead of RGB.
Geoff Voelker <voelker@cs.washington.edu>
parents: 14810
diff changeset
775 {"tan" , PALETTERGB (210,180,140)},
88b23d545848 (win32_color_map): Use PALETTERGB instead of RGB.
Geoff Voelker <voelker@cs.washington.edu>
parents: 14810
diff changeset
776 {"chocolate" , PALETTERGB (210,105, 30)},
88b23d545848 (win32_color_map): Use PALETTERGB instead of RGB.
Geoff Voelker <voelker@cs.washington.edu>
parents: 14810
diff changeset
777 {"firebrick" , PALETTERGB (178,34, 34)},
88b23d545848 (win32_color_map): Use PALETTERGB instead of RGB.
Geoff Voelker <voelker@cs.washington.edu>
parents: 14810
diff changeset
778 {"brown" , PALETTERGB (165,42, 42)},
88b23d545848 (win32_color_map): Use PALETTERGB instead of RGB.
Geoff Voelker <voelker@cs.washington.edu>
parents: 14810
diff changeset
779 {"dark salmon" , PALETTERGB (233,150,122)},
88b23d545848 (win32_color_map): Use PALETTERGB instead of RGB.
Geoff Voelker <voelker@cs.washington.edu>
parents: 14810
diff changeset
780 {"DarkSalmon" , PALETTERGB (233,150,122)},
88b23d545848 (win32_color_map): Use PALETTERGB instead of RGB.
Geoff Voelker <voelker@cs.washington.edu>
parents: 14810
diff changeset
781 {"salmon" , PALETTERGB (250,128,114)},
88b23d545848 (win32_color_map): Use PALETTERGB instead of RGB.
Geoff Voelker <voelker@cs.washington.edu>
parents: 14810
diff changeset
782 {"light salmon" , PALETTERGB (255,160,122)},
88b23d545848 (win32_color_map): Use PALETTERGB instead of RGB.
Geoff Voelker <voelker@cs.washington.edu>
parents: 14810
diff changeset
783 {"LightSalmon" , PALETTERGB (255,160,122)},
88b23d545848 (win32_color_map): Use PALETTERGB instead of RGB.
Geoff Voelker <voelker@cs.washington.edu>
parents: 14810
diff changeset
784 {"orange" , PALETTERGB (255,165, 0)},
88b23d545848 (win32_color_map): Use PALETTERGB instead of RGB.
Geoff Voelker <voelker@cs.washington.edu>
parents: 14810
diff changeset
785 {"dark orange" , PALETTERGB (255,140, 0)},
88b23d545848 (win32_color_map): Use PALETTERGB instead of RGB.
Geoff Voelker <voelker@cs.washington.edu>
parents: 14810
diff changeset
786 {"DarkOrange" , PALETTERGB (255,140, 0)},
88b23d545848 (win32_color_map): Use PALETTERGB instead of RGB.
Geoff Voelker <voelker@cs.washington.edu>
parents: 14810
diff changeset
787 {"coral" , PALETTERGB (255,127, 80)},
88b23d545848 (win32_color_map): Use PALETTERGB instead of RGB.
Geoff Voelker <voelker@cs.washington.edu>
parents: 14810
diff changeset
788 {"light coral" , PALETTERGB (240,128,128)},
88b23d545848 (win32_color_map): Use PALETTERGB instead of RGB.
Geoff Voelker <voelker@cs.washington.edu>
parents: 14810
diff changeset
789 {"LightCoral" , PALETTERGB (240,128,128)},
88b23d545848 (win32_color_map): Use PALETTERGB instead of RGB.
Geoff Voelker <voelker@cs.washington.edu>
parents: 14810
diff changeset
790 {"tomato" , PALETTERGB (255, 99, 71)},
88b23d545848 (win32_color_map): Use PALETTERGB instead of RGB.
Geoff Voelker <voelker@cs.washington.edu>
parents: 14810
diff changeset
791 {"orange red" , PALETTERGB (255, 69, 0)},
88b23d545848 (win32_color_map): Use PALETTERGB instead of RGB.
Geoff Voelker <voelker@cs.washington.edu>
parents: 14810
diff changeset
792 {"OrangeRed" , PALETTERGB (255, 69, 0)},
88b23d545848 (win32_color_map): Use PALETTERGB instead of RGB.
Geoff Voelker <voelker@cs.washington.edu>
parents: 14810
diff changeset
793 {"red" , PALETTERGB (255, 0, 0)},
88b23d545848 (win32_color_map): Use PALETTERGB instead of RGB.
Geoff Voelker <voelker@cs.washington.edu>
parents: 14810
diff changeset
794 {"hot pink" , PALETTERGB (255,105,180)},
88b23d545848 (win32_color_map): Use PALETTERGB instead of RGB.
Geoff Voelker <voelker@cs.washington.edu>
parents: 14810
diff changeset
795 {"HotPink" , PALETTERGB (255,105,180)},
88b23d545848 (win32_color_map): Use PALETTERGB instead of RGB.
Geoff Voelker <voelker@cs.washington.edu>
parents: 14810
diff changeset
796 {"deep pink" , PALETTERGB (255, 20,147)},
88b23d545848 (win32_color_map): Use PALETTERGB instead of RGB.
Geoff Voelker <voelker@cs.washington.edu>
parents: 14810
diff changeset
797 {"DeepPink" , PALETTERGB (255, 20,147)},
88b23d545848 (win32_color_map): Use PALETTERGB instead of RGB.
Geoff Voelker <voelker@cs.washington.edu>
parents: 14810
diff changeset
798 {"pink" , PALETTERGB (255,192,203)},
88b23d545848 (win32_color_map): Use PALETTERGB instead of RGB.
Geoff Voelker <voelker@cs.washington.edu>
parents: 14810
diff changeset
799 {"light pink" , PALETTERGB (255,182,193)},
88b23d545848 (win32_color_map): Use PALETTERGB instead of RGB.
Geoff Voelker <voelker@cs.washington.edu>
parents: 14810
diff changeset
800 {"LightPink" , PALETTERGB (255,182,193)},
88b23d545848 (win32_color_map): Use PALETTERGB instead of RGB.
Geoff Voelker <voelker@cs.washington.edu>
parents: 14810
diff changeset
801 {"pale violet red" , PALETTERGB (219,112,147)},
88b23d545848 (win32_color_map): Use PALETTERGB instead of RGB.
Geoff Voelker <voelker@cs.washington.edu>
parents: 14810
diff changeset
802 {"PaleVioletRed" , PALETTERGB (219,112,147)},
88b23d545848 (win32_color_map): Use PALETTERGB instead of RGB.
Geoff Voelker <voelker@cs.washington.edu>
parents: 14810
diff changeset
803 {"maroon" , PALETTERGB (176, 48, 96)},
88b23d545848 (win32_color_map): Use PALETTERGB instead of RGB.
Geoff Voelker <voelker@cs.washington.edu>
parents: 14810
diff changeset
804 {"medium violet red" , PALETTERGB (199, 21,133)},
88b23d545848 (win32_color_map): Use PALETTERGB instead of RGB.
Geoff Voelker <voelker@cs.washington.edu>
parents: 14810
diff changeset
805 {"MediumVioletRed" , PALETTERGB (199, 21,133)},
88b23d545848 (win32_color_map): Use PALETTERGB instead of RGB.
Geoff Voelker <voelker@cs.washington.edu>
parents: 14810
diff changeset
806 {"violet red" , PALETTERGB (208, 32,144)},
88b23d545848 (win32_color_map): Use PALETTERGB instead of RGB.
Geoff Voelker <voelker@cs.washington.edu>
parents: 14810
diff changeset
807 {"VioletRed" , PALETTERGB (208, 32,144)},
88b23d545848 (win32_color_map): Use PALETTERGB instead of RGB.
Geoff Voelker <voelker@cs.washington.edu>
parents: 14810
diff changeset
808 {"magenta" , PALETTERGB (255, 0,255)},
88b23d545848 (win32_color_map): Use PALETTERGB instead of RGB.
Geoff Voelker <voelker@cs.washington.edu>
parents: 14810
diff changeset
809 {"violet" , PALETTERGB (238,130,238)},
88b23d545848 (win32_color_map): Use PALETTERGB instead of RGB.
Geoff Voelker <voelker@cs.washington.edu>
parents: 14810
diff changeset
810 {"plum" , PALETTERGB (221,160,221)},
88b23d545848 (win32_color_map): Use PALETTERGB instead of RGB.
Geoff Voelker <voelker@cs.washington.edu>
parents: 14810
diff changeset
811 {"orchid" , PALETTERGB (218,112,214)},
88b23d545848 (win32_color_map): Use PALETTERGB instead of RGB.
Geoff Voelker <voelker@cs.washington.edu>
parents: 14810
diff changeset
812 {"medium orchid" , PALETTERGB (186, 85,211)},
88b23d545848 (win32_color_map): Use PALETTERGB instead of RGB.
Geoff Voelker <voelker@cs.washington.edu>
parents: 14810
diff changeset
813 {"MediumOrchid" , PALETTERGB (186, 85,211)},
88b23d545848 (win32_color_map): Use PALETTERGB instead of RGB.
Geoff Voelker <voelker@cs.washington.edu>
parents: 14810
diff changeset
814 {"dark orchid" , PALETTERGB (153, 50,204)},
88b23d545848 (win32_color_map): Use PALETTERGB instead of RGB.
Geoff Voelker <voelker@cs.washington.edu>
parents: 14810
diff changeset
815 {"DarkOrchid" , PALETTERGB (153, 50,204)},
88b23d545848 (win32_color_map): Use PALETTERGB instead of RGB.
Geoff Voelker <voelker@cs.washington.edu>
parents: 14810
diff changeset
816 {"dark violet" , PALETTERGB (148, 0,211)},
88b23d545848 (win32_color_map): Use PALETTERGB instead of RGB.
Geoff Voelker <voelker@cs.washington.edu>
parents: 14810
diff changeset
817 {"DarkViolet" , PALETTERGB (148, 0,211)},
88b23d545848 (win32_color_map): Use PALETTERGB instead of RGB.
Geoff Voelker <voelker@cs.washington.edu>
parents: 14810
diff changeset
818 {"blue violet" , PALETTERGB (138, 43,226)},
88b23d545848 (win32_color_map): Use PALETTERGB instead of RGB.
Geoff Voelker <voelker@cs.washington.edu>
parents: 14810
diff changeset
819 {"BlueViolet" , PALETTERGB (138, 43,226)},
88b23d545848 (win32_color_map): Use PALETTERGB instead of RGB.
Geoff Voelker <voelker@cs.washington.edu>
parents: 14810
diff changeset
820 {"purple" , PALETTERGB (160, 32,240)},
88b23d545848 (win32_color_map): Use PALETTERGB instead of RGB.
Geoff Voelker <voelker@cs.washington.edu>
parents: 14810
diff changeset
821 {"medium purple" , PALETTERGB (147,112,219)},
88b23d545848 (win32_color_map): Use PALETTERGB instead of RGB.
Geoff Voelker <voelker@cs.washington.edu>
parents: 14810
diff changeset
822 {"MediumPurple" , PALETTERGB (147,112,219)},
88b23d545848 (win32_color_map): Use PALETTERGB instead of RGB.
Geoff Voelker <voelker@cs.washington.edu>
parents: 14810
diff changeset
823 {"thistle" , PALETTERGB (216,191,216)},
88b23d545848 (win32_color_map): Use PALETTERGB instead of RGB.
Geoff Voelker <voelker@cs.washington.edu>
parents: 14810
diff changeset
824 {"gray0" , PALETTERGB ( 0, 0, 0)},
88b23d545848 (win32_color_map): Use PALETTERGB instead of RGB.
Geoff Voelker <voelker@cs.washington.edu>
parents: 14810
diff changeset
825 {"grey0" , PALETTERGB ( 0, 0, 0)},
88b23d545848 (win32_color_map): Use PALETTERGB instead of RGB.
Geoff Voelker <voelker@cs.washington.edu>
parents: 14810
diff changeset
826 {"dark grey" , PALETTERGB (169,169,169)},
88b23d545848 (win32_color_map): Use PALETTERGB instead of RGB.
Geoff Voelker <voelker@cs.washington.edu>
parents: 14810
diff changeset
827 {"DarkGrey" , PALETTERGB (169,169,169)},
88b23d545848 (win32_color_map): Use PALETTERGB instead of RGB.
Geoff Voelker <voelker@cs.washington.edu>
parents: 14810
diff changeset
828 {"dark gray" , PALETTERGB (169,169,169)},
88b23d545848 (win32_color_map): Use PALETTERGB instead of RGB.
Geoff Voelker <voelker@cs.washington.edu>
parents: 14810
diff changeset
829 {"DarkGray" , PALETTERGB (169,169,169)},
88b23d545848 (win32_color_map): Use PALETTERGB instead of RGB.
Geoff Voelker <voelker@cs.washington.edu>
parents: 14810
diff changeset
830 {"dark blue" , PALETTERGB ( 0, 0,139)},
88b23d545848 (win32_color_map): Use PALETTERGB instead of RGB.
Geoff Voelker <voelker@cs.washington.edu>
parents: 14810
diff changeset
831 {"DarkBlue" , PALETTERGB ( 0, 0,139)},
88b23d545848 (win32_color_map): Use PALETTERGB instead of RGB.
Geoff Voelker <voelker@cs.washington.edu>
parents: 14810
diff changeset
832 {"dark cyan" , PALETTERGB ( 0,139,139)},
88b23d545848 (win32_color_map): Use PALETTERGB instead of RGB.
Geoff Voelker <voelker@cs.washington.edu>
parents: 14810
diff changeset
833 {"DarkCyan" , PALETTERGB ( 0,139,139)},
88b23d545848 (win32_color_map): Use PALETTERGB instead of RGB.
Geoff Voelker <voelker@cs.washington.edu>
parents: 14810
diff changeset
834 {"dark magenta" , PALETTERGB (139, 0,139)},
88b23d545848 (win32_color_map): Use PALETTERGB instead of RGB.
Geoff Voelker <voelker@cs.washington.edu>
parents: 14810
diff changeset
835 {"DarkMagenta" , PALETTERGB (139, 0,139)},
88b23d545848 (win32_color_map): Use PALETTERGB instead of RGB.
Geoff Voelker <voelker@cs.washington.edu>
parents: 14810
diff changeset
836 {"dark red" , PALETTERGB (139, 0, 0)},
88b23d545848 (win32_color_map): Use PALETTERGB instead of RGB.
Geoff Voelker <voelker@cs.washington.edu>
parents: 14810
diff changeset
837 {"DarkRed" , PALETTERGB (139, 0, 0)},
88b23d545848 (win32_color_map): Use PALETTERGB instead of RGB.
Geoff Voelker <voelker@cs.washington.edu>
parents: 14810
diff changeset
838 {"light green" , PALETTERGB (144,238,144)},
88b23d545848 (win32_color_map): Use PALETTERGB instead of RGB.
Geoff Voelker <voelker@cs.washington.edu>
parents: 14810
diff changeset
839 {"LightGreen" , PALETTERGB (144,238,144)},
13434
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
840 };
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
841
16588
481b7874a1e9 Change identifiers of the form win32* to w32*.
Geoff Voelker <voelker@cs.washington.edu>
parents: 16259
diff changeset
842 DEFUN ("w32-default-color-map", Fw32_default_color_map, Sw32_default_color_map,
40964
fb970d0c56eb Change doc-string comments to `new style'. [w/`doc:' keyword]. Doc fixes.
Jason Rumney <jasonr@gnu.org>
parents: 40873
diff changeset
843 0, 0, 0, doc: /* Return the default color map. */)
13434
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
844 ()
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
845 {
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
846 int i;
16588
481b7874a1e9 Change identifiers of the form win32* to w32*.
Geoff Voelker <voelker@cs.washington.edu>
parents: 16259
diff changeset
847 colormap_t *pc = w32_color_map;
13434
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
848 Lisp_Object cmap;
47942
080b4586492b Fix typo in comment.
Juanma Barranquero <lekktu@gmail.com>
parents: 47731
diff changeset
849
13434
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
850 BLOCK_INPUT;
47942
080b4586492b Fix typo in comment.
Juanma Barranquero <lekktu@gmail.com>
parents: 47731
diff changeset
851
13434
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
852 cmap = Qnil;
47942
080b4586492b Fix typo in comment.
Juanma Barranquero <lekktu@gmail.com>
parents: 47731
diff changeset
853
080b4586492b Fix typo in comment.
Juanma Barranquero <lekktu@gmail.com>
parents: 47731
diff changeset
854 for (i = 0; i < sizeof (w32_color_map) / sizeof (w32_color_map[0]);
13434
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
855 pc++, i++)
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
856 cmap = Fcons (Fcons (build_string (pc->name),
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
857 make_number (pc->colorref)),
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
858 cmap);
47942
080b4586492b Fix typo in comment.
Juanma Barranquero <lekktu@gmail.com>
parents: 47731
diff changeset
859
13434
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
860 UNBLOCK_INPUT;
47942
080b4586492b Fix typo in comment.
Juanma Barranquero <lekktu@gmail.com>
parents: 47731
diff changeset
861
13434
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
862 return (cmap);
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
863 }
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
864
86065
2557aa084b57 (Fw32_registered_hot_keys): Don't return the nil values corresponding
Juanma Barranquero <lekktu@gmail.com>
parents: 86053
diff changeset
865 static Lisp_Object
16588
481b7874a1e9 Change identifiers of the form win32* to w32*.
Geoff Voelker <voelker@cs.washington.edu>
parents: 16259
diff changeset
866 w32_to_x_color (rgb)
13434
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
867 Lisp_Object rgb;
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
868 {
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
869 Lisp_Object color;
47942
080b4586492b Fix typo in comment.
Juanma Barranquero <lekktu@gmail.com>
parents: 47731
diff changeset
870
40656
cdfd4d09b79a Update usage of CHECK_ macros (remove unused second argument).
Pavel Janík <Pavel@Janik.cz>
parents: 40528
diff changeset
871 CHECK_NUMBER (rgb);
47942
080b4586492b Fix typo in comment.
Juanma Barranquero <lekktu@gmail.com>
parents: 47731
diff changeset
872
13434
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
873 BLOCK_INPUT;
47942
080b4586492b Fix typo in comment.
Juanma Barranquero <lekktu@gmail.com>
parents: 47731
diff changeset
874
16588
481b7874a1e9 Change identifiers of the form win32* to w32*.
Geoff Voelker <voelker@cs.washington.edu>
parents: 16259
diff changeset
875 color = Frassq (rgb, Vw32_color_map);
47942
080b4586492b Fix typo in comment.
Juanma Barranquero <lekktu@gmail.com>
parents: 47731
diff changeset
876
13434
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
877 UNBLOCK_INPUT;
47942
080b4586492b Fix typo in comment.
Juanma Barranquero <lekktu@gmail.com>
parents: 47731
diff changeset
878
13434
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
879 if (!NILP (color))
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
880 return (Fcar (color));
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
881 else
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
882 return Qnil;
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
883 }
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
884
55656
29b250a07fe0 (Fw32_register_hot_key, Fw32_unregister_hot_key)
Jason Rumney <jasonr@gnu.org>
parents: 55592
diff changeset
885 static Lisp_Object
23314
87acd2b6ce97 (w32_color_map_lookup): New function.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23160
diff changeset
886 w32_color_map_lookup (colorname)
87acd2b6ce97 (w32_color_map_lookup): New function.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23160
diff changeset
887 char *colorname;
87acd2b6ce97 (w32_color_map_lookup): New function.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23160
diff changeset
888 {
87acd2b6ce97 (w32_color_map_lookup): New function.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23160
diff changeset
889 Lisp_Object tail, ret = Qnil;
87acd2b6ce97 (w32_color_map_lookup): New function.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23160
diff changeset
890
87acd2b6ce97 (w32_color_map_lookup): New function.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23160
diff changeset
891 BLOCK_INPUT;
87acd2b6ce97 (w32_color_map_lookup): New function.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23160
diff changeset
892
85372
f7d19cfed7da * xselect.c (x_own_selection, x_handle_selection_clear)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 85311
diff changeset
893 for (tail = Vw32_color_map; CONSP (tail); tail = XCDR (tail))
23314
87acd2b6ce97 (w32_color_map_lookup): New function.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23160
diff changeset
894 {
87acd2b6ce97 (w32_color_map_lookup): New function.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23160
diff changeset
895 register Lisp_Object elt, tem;
87acd2b6ce97 (w32_color_map_lookup): New function.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23160
diff changeset
896
85372
f7d19cfed7da * xselect.c (x_own_selection, x_handle_selection_clear)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 85311
diff changeset
897 elt = XCAR (tail);
23314
87acd2b6ce97 (w32_color_map_lookup): New function.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23160
diff changeset
898 if (!CONSP (elt)) continue;
87acd2b6ce97 (w32_color_map_lookup): New function.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23160
diff changeset
899
87acd2b6ce97 (w32_color_map_lookup): New function.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23160
diff changeset
900 tem = Fcar (elt);
87acd2b6ce97 (w32_color_map_lookup): New function.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23160
diff changeset
901
46370
40db0673e6f0 Most uses of XSTRING combined with STRING_BYTES or indirection changed to
Ken Raeburn <raeburn@raeburn.org>
parents: 46293
diff changeset
902 if (lstrcmpi (SDATA (tem), colorname) == 0)
23314
87acd2b6ce97 (w32_color_map_lookup): New function.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23160
diff changeset
903 {
55656
29b250a07fe0 (Fw32_register_hot_key, Fw32_unregister_hot_key)
Jason Rumney <jasonr@gnu.org>
parents: 55592
diff changeset
904 ret = Fcdr (elt);
23314
87acd2b6ce97 (w32_color_map_lookup): New function.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23160
diff changeset
905 break;
87acd2b6ce97 (w32_color_map_lookup): New function.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23160
diff changeset
906 }
87acd2b6ce97 (w32_color_map_lookup): New function.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23160
diff changeset
907
87acd2b6ce97 (w32_color_map_lookup): New function.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23160
diff changeset
908 QUIT;
87acd2b6ce97 (w32_color_map_lookup): New function.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23160
diff changeset
909 }
87acd2b6ce97 (w32_color_map_lookup): New function.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23160
diff changeset
910
87acd2b6ce97 (w32_color_map_lookup): New function.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23160
diff changeset
911
87acd2b6ce97 (w32_color_map_lookup): New function.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23160
diff changeset
912 UNBLOCK_INPUT;
87acd2b6ce97 (w32_color_map_lookup): New function.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23160
diff changeset
913
87acd2b6ce97 (w32_color_map_lookup): New function.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23160
diff changeset
914 return ret;
87acd2b6ce97 (w32_color_map_lookup): New function.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23160
diff changeset
915 }
87acd2b6ce97 (w32_color_map_lookup): New function.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23160
diff changeset
916
51474
0dbfd1fe2e91 (add_system_logical_colors_to_map): New function.
Jason Rumney <jasonr@gnu.org>
parents: 51211
diff changeset
917
0dbfd1fe2e91 (add_system_logical_colors_to_map): New function.
Jason Rumney <jasonr@gnu.org>
parents: 51211
diff changeset
918 static void
0dbfd1fe2e91 (add_system_logical_colors_to_map): New function.
Jason Rumney <jasonr@gnu.org>
parents: 51211
diff changeset
919 add_system_logical_colors_to_map (system_colors)
0dbfd1fe2e91 (add_system_logical_colors_to_map): New function.
Jason Rumney <jasonr@gnu.org>
parents: 51211
diff changeset
920 Lisp_Object *system_colors;
0dbfd1fe2e91 (add_system_logical_colors_to_map): New function.
Jason Rumney <jasonr@gnu.org>
parents: 51211
diff changeset
921 {
0dbfd1fe2e91 (add_system_logical_colors_to_map): New function.
Jason Rumney <jasonr@gnu.org>
parents: 51211
diff changeset
922 HKEY colors_key;
0dbfd1fe2e91 (add_system_logical_colors_to_map): New function.
Jason Rumney <jasonr@gnu.org>
parents: 51211
diff changeset
923
0dbfd1fe2e91 (add_system_logical_colors_to_map): New function.
Jason Rumney <jasonr@gnu.org>
parents: 51211
diff changeset
924 /* Other registry operations are done with input blocked. */
0dbfd1fe2e91 (add_system_logical_colors_to_map): New function.
Jason Rumney <jasonr@gnu.org>
parents: 51211
diff changeset
925 BLOCK_INPUT;
0dbfd1fe2e91 (add_system_logical_colors_to_map): New function.
Jason Rumney <jasonr@gnu.org>
parents: 51211
diff changeset
926
0dbfd1fe2e91 (add_system_logical_colors_to_map): New function.
Jason Rumney <jasonr@gnu.org>
parents: 51211
diff changeset
927 /* Look for "Control Panel/Colors" under User and Machine registry
0dbfd1fe2e91 (add_system_logical_colors_to_map): New function.
Jason Rumney <jasonr@gnu.org>
parents: 51211
diff changeset
928 settings. */
0dbfd1fe2e91 (add_system_logical_colors_to_map): New function.
Jason Rumney <jasonr@gnu.org>
parents: 51211
diff changeset
929 if (RegOpenKeyEx (HKEY_CURRENT_USER, "Control Panel\\Colors", 0,
0dbfd1fe2e91 (add_system_logical_colors_to_map): New function.
Jason Rumney <jasonr@gnu.org>
parents: 51211
diff changeset
930 KEY_READ, &colors_key) == ERROR_SUCCESS
0dbfd1fe2e91 (add_system_logical_colors_to_map): New function.
Jason Rumney <jasonr@gnu.org>
parents: 51211
diff changeset
931 || RegOpenKeyEx (HKEY_LOCAL_MACHINE, "Control Panel\\Colors", 0,
0dbfd1fe2e91 (add_system_logical_colors_to_map): New function.
Jason Rumney <jasonr@gnu.org>
parents: 51211
diff changeset
932 KEY_READ, &colors_key) == ERROR_SUCCESS)
0dbfd1fe2e91 (add_system_logical_colors_to_map): New function.
Jason Rumney <jasonr@gnu.org>
parents: 51211
diff changeset
933 {
0dbfd1fe2e91 (add_system_logical_colors_to_map): New function.
Jason Rumney <jasonr@gnu.org>
parents: 51211
diff changeset
934 /* List all keys. */
0dbfd1fe2e91 (add_system_logical_colors_to_map): New function.
Jason Rumney <jasonr@gnu.org>
parents: 51211
diff changeset
935 char color_buffer[64];
0dbfd1fe2e91 (add_system_logical_colors_to_map): New function.
Jason Rumney <jasonr@gnu.org>
parents: 51211
diff changeset
936 char full_name_buffer[MAX_PATH + SYSTEM_COLOR_PREFIX_LEN];
0dbfd1fe2e91 (add_system_logical_colors_to_map): New function.
Jason Rumney <jasonr@gnu.org>
parents: 51211
diff changeset
937 int index = 0;
0dbfd1fe2e91 (add_system_logical_colors_to_map): New function.
Jason Rumney <jasonr@gnu.org>
parents: 51211
diff changeset
938 DWORD name_size, color_size;
0dbfd1fe2e91 (add_system_logical_colors_to_map): New function.
Jason Rumney <jasonr@gnu.org>
parents: 51211
diff changeset
939 char *name_buffer = full_name_buffer + SYSTEM_COLOR_PREFIX_LEN;
0dbfd1fe2e91 (add_system_logical_colors_to_map): New function.
Jason Rumney <jasonr@gnu.org>
parents: 51211
diff changeset
940
0dbfd1fe2e91 (add_system_logical_colors_to_map): New function.
Jason Rumney <jasonr@gnu.org>
parents: 51211
diff changeset
941 name_size = sizeof (full_name_buffer) - SYSTEM_COLOR_PREFIX_LEN;
0dbfd1fe2e91 (add_system_logical_colors_to_map): New function.
Jason Rumney <jasonr@gnu.org>
parents: 51211
diff changeset
942 color_size = sizeof (color_buffer);
0dbfd1fe2e91 (add_system_logical_colors_to_map): New function.
Jason Rumney <jasonr@gnu.org>
parents: 51211
diff changeset
943
0dbfd1fe2e91 (add_system_logical_colors_to_map): New function.
Jason Rumney <jasonr@gnu.org>
parents: 51211
diff changeset
944 strcpy (full_name_buffer, SYSTEM_COLOR_PREFIX);
0dbfd1fe2e91 (add_system_logical_colors_to_map): New function.
Jason Rumney <jasonr@gnu.org>
parents: 51211
diff changeset
945
0dbfd1fe2e91 (add_system_logical_colors_to_map): New function.
Jason Rumney <jasonr@gnu.org>
parents: 51211
diff changeset
946 while (RegEnumValueA (colors_key, index, name_buffer, &name_size,
0dbfd1fe2e91 (add_system_logical_colors_to_map): New function.
Jason Rumney <jasonr@gnu.org>
parents: 51211
diff changeset
947 NULL, NULL, color_buffer, &color_size)
0dbfd1fe2e91 (add_system_logical_colors_to_map): New function.
Jason Rumney <jasonr@gnu.org>
parents: 51211
diff changeset
948 == ERROR_SUCCESS)
0dbfd1fe2e91 (add_system_logical_colors_to_map): New function.
Jason Rumney <jasonr@gnu.org>
parents: 51211
diff changeset
949 {
0dbfd1fe2e91 (add_system_logical_colors_to_map): New function.
Jason Rumney <jasonr@gnu.org>
parents: 51211
diff changeset
950 int r, g, b;
0dbfd1fe2e91 (add_system_logical_colors_to_map): New function.
Jason Rumney <jasonr@gnu.org>
parents: 51211
diff changeset
951 if (sscanf (color_buffer, " %u %u %u", &r, &g, &b) == 3)
0dbfd1fe2e91 (add_system_logical_colors_to_map): New function.
Jason Rumney <jasonr@gnu.org>
parents: 51211
diff changeset
952 *system_colors = Fcons (Fcons (build_string (full_name_buffer),
0dbfd1fe2e91 (add_system_logical_colors_to_map): New function.
Jason Rumney <jasonr@gnu.org>
parents: 51211
diff changeset
953 make_number (RGB (r, g, b))),
0dbfd1fe2e91 (add_system_logical_colors_to_map): New function.
Jason Rumney <jasonr@gnu.org>
parents: 51211
diff changeset
954 *system_colors);
0dbfd1fe2e91 (add_system_logical_colors_to_map): New function.
Jason Rumney <jasonr@gnu.org>
parents: 51211
diff changeset
955
0dbfd1fe2e91 (add_system_logical_colors_to_map): New function.
Jason Rumney <jasonr@gnu.org>
parents: 51211
diff changeset
956 name_size = sizeof (full_name_buffer) - SYSTEM_COLOR_PREFIX_LEN;
0dbfd1fe2e91 (add_system_logical_colors_to_map): New function.
Jason Rumney <jasonr@gnu.org>
parents: 51211
diff changeset
957 color_size = sizeof (color_buffer);
0dbfd1fe2e91 (add_system_logical_colors_to_map): New function.
Jason Rumney <jasonr@gnu.org>
parents: 51211
diff changeset
958 index++;
0dbfd1fe2e91 (add_system_logical_colors_to_map): New function.
Jason Rumney <jasonr@gnu.org>
parents: 51211
diff changeset
959 }
0dbfd1fe2e91 (add_system_logical_colors_to_map): New function.
Jason Rumney <jasonr@gnu.org>
parents: 51211
diff changeset
960 RegCloseKey (colors_key);
0dbfd1fe2e91 (add_system_logical_colors_to_map): New function.
Jason Rumney <jasonr@gnu.org>
parents: 51211
diff changeset
961 }
0dbfd1fe2e91 (add_system_logical_colors_to_map): New function.
Jason Rumney <jasonr@gnu.org>
parents: 51211
diff changeset
962
0dbfd1fe2e91 (add_system_logical_colors_to_map): New function.
Jason Rumney <jasonr@gnu.org>
parents: 51211
diff changeset
963 UNBLOCK_INPUT;
0dbfd1fe2e91 (add_system_logical_colors_to_map): New function.
Jason Rumney <jasonr@gnu.org>
parents: 51211
diff changeset
964 }
0dbfd1fe2e91 (add_system_logical_colors_to_map): New function.
Jason Rumney <jasonr@gnu.org>
parents: 51211
diff changeset
965
0dbfd1fe2e91 (add_system_logical_colors_to_map): New function.
Jason Rumney <jasonr@gnu.org>
parents: 51211
diff changeset
966
55656
29b250a07fe0 (Fw32_register_hot_key, Fw32_unregister_hot_key)
Jason Rumney <jasonr@gnu.org>
parents: 55592
diff changeset
967 static Lisp_Object
16588
481b7874a1e9 Change identifiers of the form win32* to w32*.
Geoff Voelker <voelker@cs.washington.edu>
parents: 16259
diff changeset
968 x_to_w32_color (colorname)
13434
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
969 char * colorname;
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
970 {
35288
912ea0b8e09b (x_to_w32_color, x_set_icon_name, xlfd_strip_height)
Jason Rumney <jasonr@gnu.org>
parents: 34998
diff changeset
971 register Lisp_Object ret = Qnil;
912ea0b8e09b (x_to_w32_color, x_set_icon_name, xlfd_strip_height)
Jason Rumney <jasonr@gnu.org>
parents: 34998
diff changeset
972
13434
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
973 BLOCK_INPUT;
19707
0181cc080316 Include limits.h and errno.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18508
diff changeset
974
0181cc080316 Include limits.h and errno.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18508
diff changeset
975 if (colorname[0] == '#')
0181cc080316 Include limits.h and errno.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18508
diff changeset
976 {
0181cc080316 Include limits.h and errno.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18508
diff changeset
977 /* Could be an old-style RGB Device specification. */
0181cc080316 Include limits.h and errno.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18508
diff changeset
978 char *color;
0181cc080316 Include limits.h and errno.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18508
diff changeset
979 int size;
0181cc080316 Include limits.h and errno.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18508
diff changeset
980 color = colorname + 1;
47942
080b4586492b Fix typo in comment.
Juanma Barranquero <lekktu@gmail.com>
parents: 47731
diff changeset
981
79387
0ca197abc593 (Fw32_registered_hot_keys): Don't return the nil values corresponding
Juanma Barranquero <lekktu@gmail.com>
parents: 79381
diff changeset
982 size = strlen (color);
19707
0181cc080316 Include limits.h and errno.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18508
diff changeset
983 if (size == 3 || size == 6 || size == 9 || size == 12)
0181cc080316 Include limits.h and errno.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18508
diff changeset
984 {
0181cc080316 Include limits.h and errno.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18508
diff changeset
985 UINT colorval;
0181cc080316 Include limits.h and errno.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18508
diff changeset
986 int i, pos;
0181cc080316 Include limits.h and errno.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18508
diff changeset
987 pos = 0;
0181cc080316 Include limits.h and errno.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18508
diff changeset
988 size /= 3;
0181cc080316 Include limits.h and errno.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18508
diff changeset
989 colorval = 0;
47942
080b4586492b Fix typo in comment.
Juanma Barranquero <lekktu@gmail.com>
parents: 47731
diff changeset
990
19707
0181cc080316 Include limits.h and errno.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18508
diff changeset
991 for (i = 0; i < 3; i++)
0181cc080316 Include limits.h and errno.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18508
diff changeset
992 {
0181cc080316 Include limits.h and errno.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18508
diff changeset
993 char *end;
0181cc080316 Include limits.h and errno.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18508
diff changeset
994 char t;
0181cc080316 Include limits.h and errno.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18508
diff changeset
995 unsigned long value;
0181cc080316 Include limits.h and errno.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18508
diff changeset
996
0181cc080316 Include limits.h and errno.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18508
diff changeset
997 /* The check for 'x' in the following conditional takes into
0181cc080316 Include limits.h and errno.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18508
diff changeset
998 account the fact that strtol allows a "0x" in front of
0181cc080316 Include limits.h and errno.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18508
diff changeset
999 our numbers, and we don't. */
79387
0ca197abc593 (Fw32_registered_hot_keys): Don't return the nil values corresponding
Juanma Barranquero <lekktu@gmail.com>
parents: 79381
diff changeset
1000 if (!isxdigit (color[0]) || color[1] == 'x')
19707
0181cc080316 Include limits.h and errno.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18508
diff changeset
1001 break;
0181cc080316 Include limits.h and errno.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18508
diff changeset
1002 t = color[size];
0181cc080316 Include limits.h and errno.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18508
diff changeset
1003 color[size] = '\0';
79387
0ca197abc593 (Fw32_registered_hot_keys): Don't return the nil values corresponding
Juanma Barranquero <lekktu@gmail.com>
parents: 79381
diff changeset
1004 value = strtoul (color, &end, 16);
19707
0181cc080316 Include limits.h and errno.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18508
diff changeset
1005 color[size] = t;
0181cc080316 Include limits.h and errno.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18508
diff changeset
1006 if (errno == ERANGE || end - color != size)
0181cc080316 Include limits.h and errno.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18508
diff changeset
1007 break;
0181cc080316 Include limits.h and errno.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18508
diff changeset
1008 switch (size)
0181cc080316 Include limits.h and errno.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18508
diff changeset
1009 {
0181cc080316 Include limits.h and errno.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18508
diff changeset
1010 case 1:
0181cc080316 Include limits.h and errno.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18508
diff changeset
1011 value = value * 0x10;
0181cc080316 Include limits.h and errno.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18508
diff changeset
1012 break;
0181cc080316 Include limits.h and errno.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18508
diff changeset
1013 case 2:
0181cc080316 Include limits.h and errno.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18508
diff changeset
1014 break;
0181cc080316 Include limits.h and errno.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18508
diff changeset
1015 case 3:
0181cc080316 Include limits.h and errno.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18508
diff changeset
1016 value /= 0x10;
0181cc080316 Include limits.h and errno.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18508
diff changeset
1017 break;
0181cc080316 Include limits.h and errno.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18508
diff changeset
1018 case 4:
0181cc080316 Include limits.h and errno.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18508
diff changeset
1019 value /= 0x100;
0181cc080316 Include limits.h and errno.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18508
diff changeset
1020 break;
0181cc080316 Include limits.h and errno.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18508
diff changeset
1021 }
0181cc080316 Include limits.h and errno.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18508
diff changeset
1022 colorval |= (value << pos);
0181cc080316 Include limits.h and errno.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18508
diff changeset
1023 pos += 0x8;
0181cc080316 Include limits.h and errno.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18508
diff changeset
1024 if (i == 2)
0181cc080316 Include limits.h and errno.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18508
diff changeset
1025 {
0181cc080316 Include limits.h and errno.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18508
diff changeset
1026 UNBLOCK_INPUT;
55656
29b250a07fe0 (Fw32_register_hot_key, Fw32_unregister_hot_key)
Jason Rumney <jasonr@gnu.org>
parents: 55592
diff changeset
1027 XSETINT (ret, colorval);
29b250a07fe0 (Fw32_register_hot_key, Fw32_unregister_hot_key)
Jason Rumney <jasonr@gnu.org>
parents: 55592
diff changeset
1028 return ret;
19707
0181cc080316 Include limits.h and errno.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18508
diff changeset
1029 }
0181cc080316 Include limits.h and errno.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18508
diff changeset
1030 color = end;
0181cc080316 Include limits.h and errno.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18508
diff changeset
1031 }
0181cc080316 Include limits.h and errno.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18508
diff changeset
1032 }
0181cc080316 Include limits.h and errno.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18508
diff changeset
1033 }
79387
0ca197abc593 (Fw32_registered_hot_keys): Don't return the nil values corresponding
Juanma Barranquero <lekktu@gmail.com>
parents: 79381
diff changeset
1034 else if (strnicmp (colorname, "rgb:", 4) == 0)
19707
0181cc080316 Include limits.h and errno.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18508
diff changeset
1035 {
0181cc080316 Include limits.h and errno.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18508
diff changeset
1036 char *color;
0181cc080316 Include limits.h and errno.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18508
diff changeset
1037 UINT colorval;
0181cc080316 Include limits.h and errno.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18508
diff changeset
1038 int i, pos;
0181cc080316 Include limits.h and errno.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18508
diff changeset
1039 pos = 0;
0181cc080316 Include limits.h and errno.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18508
diff changeset
1040
0181cc080316 Include limits.h and errno.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18508
diff changeset
1041 colorval = 0;
0181cc080316 Include limits.h and errno.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18508
diff changeset
1042 color = colorname + 4;
0181cc080316 Include limits.h and errno.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18508
diff changeset
1043 for (i = 0; i < 3; i++)
0181cc080316 Include limits.h and errno.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18508
diff changeset
1044 {
0181cc080316 Include limits.h and errno.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18508
diff changeset
1045 char *end;
0181cc080316 Include limits.h and errno.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18508
diff changeset
1046 unsigned long value;
47942
080b4586492b Fix typo in comment.
Juanma Barranquero <lekktu@gmail.com>
parents: 47731
diff changeset
1047
19707
0181cc080316 Include limits.h and errno.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18508
diff changeset
1048 /* The check for 'x' in the following conditional takes into
0181cc080316 Include limits.h and errno.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18508
diff changeset
1049 account the fact that strtol allows a "0x" in front of
0181cc080316 Include limits.h and errno.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18508
diff changeset
1050 our numbers, and we don't. */
79387
0ca197abc593 (Fw32_registered_hot_keys): Don't return the nil values corresponding
Juanma Barranquero <lekktu@gmail.com>
parents: 79381
diff changeset
1051 if (!isxdigit (color[0]) || color[1] == 'x')
19707
0181cc080316 Include limits.h and errno.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18508
diff changeset
1052 break;
79387
0ca197abc593 (Fw32_registered_hot_keys): Don't return the nil values corresponding
Juanma Barranquero <lekktu@gmail.com>
parents: 79381
diff changeset
1053 value = strtoul (color, &end, 16);
19707
0181cc080316 Include limits.h and errno.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18508
diff changeset
1054 if (errno == ERANGE)
0181cc080316 Include limits.h and errno.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18508
diff changeset
1055 break;
0181cc080316 Include limits.h and errno.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18508
diff changeset
1056 switch (end - color)
0181cc080316 Include limits.h and errno.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18508
diff changeset
1057 {
0181cc080316 Include limits.h and errno.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18508
diff changeset
1058 case 1:
0181cc080316 Include limits.h and errno.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18508
diff changeset
1059 value = value * 0x10 + value;
0181cc080316 Include limits.h and errno.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18508
diff changeset
1060 break;
0181cc080316 Include limits.h and errno.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18508
diff changeset
1061 case 2:
0181cc080316 Include limits.h and errno.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18508
diff changeset
1062 break;
0181cc080316 Include limits.h and errno.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18508
diff changeset
1063 case 3:
0181cc080316 Include limits.h and errno.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18508
diff changeset
1064 value /= 0x10;
0181cc080316 Include limits.h and errno.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18508
diff changeset
1065 break;
0181cc080316 Include limits.h and errno.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18508
diff changeset
1066 case 4:
0181cc080316 Include limits.h and errno.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18508
diff changeset
1067 value /= 0x100;
0181cc080316 Include limits.h and errno.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18508
diff changeset
1068 break;
0181cc080316 Include limits.h and errno.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18508
diff changeset
1069 default:
0181cc080316 Include limits.h and errno.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18508
diff changeset
1070 value = ULONG_MAX;
0181cc080316 Include limits.h and errno.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18508
diff changeset
1071 }
0181cc080316 Include limits.h and errno.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18508
diff changeset
1072 if (value == ULONG_MAX)
0181cc080316 Include limits.h and errno.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18508
diff changeset
1073 break;
0181cc080316 Include limits.h and errno.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18508
diff changeset
1074 colorval |= (value << pos);
0181cc080316 Include limits.h and errno.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18508
diff changeset
1075 pos += 0x8;
0181cc080316 Include limits.h and errno.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18508
diff changeset
1076 if (i == 2)
0181cc080316 Include limits.h and errno.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18508
diff changeset
1077 {
0181cc080316 Include limits.h and errno.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18508
diff changeset
1078 if (*end != '\0')
0181cc080316 Include limits.h and errno.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18508
diff changeset
1079 break;
0181cc080316 Include limits.h and errno.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18508
diff changeset
1080 UNBLOCK_INPUT;
55656
29b250a07fe0 (Fw32_register_hot_key, Fw32_unregister_hot_key)
Jason Rumney <jasonr@gnu.org>
parents: 55592
diff changeset
1081 XSETINT (ret, colorval);
29b250a07fe0 (Fw32_register_hot_key, Fw32_unregister_hot_key)
Jason Rumney <jasonr@gnu.org>
parents: 55592
diff changeset
1082 return ret;
19707
0181cc080316 Include limits.h and errno.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18508
diff changeset
1083 }
0181cc080316 Include limits.h and errno.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18508
diff changeset
1084 if (*end != '/')
0181cc080316 Include limits.h and errno.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18508
diff changeset
1085 break;
0181cc080316 Include limits.h and errno.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18508
diff changeset
1086 color = end + 1;
0181cc080316 Include limits.h and errno.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18508
diff changeset
1087 }
0181cc080316 Include limits.h and errno.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18508
diff changeset
1088 }
79387
0ca197abc593 (Fw32_registered_hot_keys): Don't return the nil values corresponding
Juanma Barranquero <lekktu@gmail.com>
parents: 79381
diff changeset
1089 else if (strnicmp (colorname, "rgbi:", 5) == 0)
19707
0181cc080316 Include limits.h and errno.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18508
diff changeset
1090 {
0181cc080316 Include limits.h and errno.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18508
diff changeset
1091 /* This is an RGB Intensity specification. */
0181cc080316 Include limits.h and errno.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18508
diff changeset
1092 char *color;
0181cc080316 Include limits.h and errno.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18508
diff changeset
1093 UINT colorval;
0181cc080316 Include limits.h and errno.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18508
diff changeset
1094 int i, pos;
0181cc080316 Include limits.h and errno.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18508
diff changeset
1095 pos = 0;
0181cc080316 Include limits.h and errno.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18508
diff changeset
1096
0181cc080316 Include limits.h and errno.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18508
diff changeset
1097 colorval = 0;
0181cc080316 Include limits.h and errno.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18508
diff changeset
1098 color = colorname + 5;
0181cc080316 Include limits.h and errno.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18508
diff changeset
1099 for (i = 0; i < 3; i++)
0181cc080316 Include limits.h and errno.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18508
diff changeset
1100 {
0181cc080316 Include limits.h and errno.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18508
diff changeset
1101 char *end;
0181cc080316 Include limits.h and errno.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18508
diff changeset
1102 double value;
0181cc080316 Include limits.h and errno.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18508
diff changeset
1103 UINT val;
0181cc080316 Include limits.h and errno.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18508
diff changeset
1104
79387
0ca197abc593 (Fw32_registered_hot_keys): Don't return the nil values corresponding
Juanma Barranquero <lekktu@gmail.com>
parents: 79381
diff changeset
1105 value = strtod (color, &end);
19707
0181cc080316 Include limits.h and errno.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18508
diff changeset
1106 if (errno == ERANGE)
0181cc080316 Include limits.h and errno.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18508
diff changeset
1107 break;
0181cc080316 Include limits.h and errno.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18508
diff changeset
1108 if (value < 0.0 || value > 1.0)
0181cc080316 Include limits.h and errno.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18508
diff changeset
1109 break;
0181cc080316 Include limits.h and errno.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18508
diff changeset
1110 val = (UINT)(0x100 * value);
47942
080b4586492b Fix typo in comment.
Juanma Barranquero <lekktu@gmail.com>
parents: 47731
diff changeset
1111 /* We used 0x100 instead of 0xFF to give a continuous
19707
0181cc080316 Include limits.h and errno.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18508
diff changeset
1112 range between 0.0 and 1.0 inclusive. The next statement
0181cc080316 Include limits.h and errno.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18508
diff changeset
1113 fixes the 1.0 case. */
0181cc080316 Include limits.h and errno.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18508
diff changeset
1114 if (val == 0x100)
0181cc080316 Include limits.h and errno.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18508
diff changeset
1115 val = 0xFF;
0181cc080316 Include limits.h and errno.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18508
diff changeset
1116 colorval |= (val << pos);
0181cc080316 Include limits.h and errno.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18508
diff changeset
1117 pos += 0x8;
0181cc080316 Include limits.h and errno.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18508
diff changeset
1118 if (i == 2)
0181cc080316 Include limits.h and errno.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18508
diff changeset
1119 {
0181cc080316 Include limits.h and errno.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18508
diff changeset
1120 if (*end != '\0')
0181cc080316 Include limits.h and errno.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18508
diff changeset
1121 break;
0181cc080316 Include limits.h and errno.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18508
diff changeset
1122 UNBLOCK_INPUT;
55656
29b250a07fe0 (Fw32_register_hot_key, Fw32_unregister_hot_key)
Jason Rumney <jasonr@gnu.org>
parents: 55592
diff changeset
1123 XSETINT (ret, colorval);
29b250a07fe0 (Fw32_register_hot_key, Fw32_unregister_hot_key)
Jason Rumney <jasonr@gnu.org>
parents: 55592
diff changeset
1124 return ret;
19707
0181cc080316 Include limits.h and errno.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18508
diff changeset
1125 }
0181cc080316 Include limits.h and errno.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18508
diff changeset
1126 if (*end != '/')
0181cc080316 Include limits.h and errno.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18508
diff changeset
1127 break;
0181cc080316 Include limits.h and errno.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18508
diff changeset
1128 color = end + 1;
0181cc080316 Include limits.h and errno.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18508
diff changeset
1129 }
0181cc080316 Include limits.h and errno.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18508
diff changeset
1130 }
0181cc080316 Include limits.h and errno.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18508
diff changeset
1131 /* I am not going to attempt to handle any of the CIE color schemes
0181cc080316 Include limits.h and errno.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18508
diff changeset
1132 or TekHVC, since I don't know the algorithms for conversion to
0181cc080316 Include limits.h and errno.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18508
diff changeset
1133 RGB. */
23314
87acd2b6ce97 (w32_color_map_lookup): New function.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23160
diff changeset
1134
87acd2b6ce97 (w32_color_map_lookup): New function.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23160
diff changeset
1135 /* If we fail to lookup the color name in w32_color_map, then check the
47942
080b4586492b Fix typo in comment.
Juanma Barranquero <lekktu@gmail.com>
parents: 47731
diff changeset
1136 colorname to see if it can be crudely approximated: If the X color
23314
87acd2b6ce97 (w32_color_map_lookup): New function.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23160
diff changeset
1137 ends in a number (e.g., "darkseagreen2"), strip the number and
87acd2b6ce97 (w32_color_map_lookup): New function.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23160
diff changeset
1138 return the result of looking up the base color name. */
87acd2b6ce97 (w32_color_map_lookup): New function.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23160
diff changeset
1139 ret = w32_color_map_lookup (colorname);
47942
080b4586492b Fix typo in comment.
Juanma Barranquero <lekktu@gmail.com>
parents: 47731
diff changeset
1140 if (NILP (ret))
13434
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
1141 {
23314
87acd2b6ce97 (w32_color_map_lookup): New function.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23160
diff changeset
1142 int len = strlen (colorname);
87acd2b6ce97 (w32_color_map_lookup): New function.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23160
diff changeset
1143
47942
080b4586492b Fix typo in comment.
Juanma Barranquero <lekktu@gmail.com>
parents: 47731
diff changeset
1144 if (isdigit (colorname[len - 1]))
13434
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
1145 {
39548
6192be048459 (x_to_w32_color): Fix argument to alloca.
Andrew Innes <andrewi@gnu.org>
parents: 39137
diff changeset
1146 char *ptr, *approx = alloca (len + 1);
23314
87acd2b6ce97 (w32_color_map_lookup): New function.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23160
diff changeset
1147
87acd2b6ce97 (w32_color_map_lookup): New function.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23160
diff changeset
1148 strcpy (approx, colorname);
87acd2b6ce97 (w32_color_map_lookup): New function.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23160
diff changeset
1149 ptr = &approx[len - 1];
47942
080b4586492b Fix typo in comment.
Juanma Barranquero <lekktu@gmail.com>
parents: 47731
diff changeset
1150 while (ptr > approx && isdigit (*ptr))
23314
87acd2b6ce97 (w32_color_map_lookup): New function.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23160
diff changeset
1151 *ptr-- = '\0';
87acd2b6ce97 (w32_color_map_lookup): New function.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23160
diff changeset
1152
87acd2b6ce97 (w32_color_map_lookup): New function.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23160
diff changeset
1153 ret = w32_color_map_lookup (approx);
13434
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
1154 }
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
1155 }
47942
080b4586492b Fix typo in comment.
Juanma Barranquero <lekktu@gmail.com>
parents: 47731
diff changeset
1156
13434
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
1157 UNBLOCK_INPUT;
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
1158 return ret;
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
1159 }
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
1160
15147
38c0ce06203f (quit_char, Vwin32_enable_italics, Vwin32_enable_palette):
Geoff Voelker <voelker@cs.washington.edu>
parents: 15034
diff changeset
1161 void
16588
481b7874a1e9 Change identifiers of the form win32* to w32*.
Geoff Voelker <voelker@cs.washington.edu>
parents: 16259
diff changeset
1162 w32_regenerate_palette (FRAME_PTR f)
15147
38c0ce06203f (quit_char, Vwin32_enable_italics, Vwin32_enable_palette):
Geoff Voelker <voelker@cs.washington.edu>
parents: 15034
diff changeset
1163 {
16588
481b7874a1e9 Change identifiers of the form win32* to w32*.
Geoff Voelker <voelker@cs.washington.edu>
parents: 16259
diff changeset
1164 struct w32_palette_entry * list;
15147
38c0ce06203f (quit_char, Vwin32_enable_italics, Vwin32_enable_palette):
Geoff Voelker <voelker@cs.washington.edu>
parents: 15034
diff changeset
1165 LOGPALETTE * log_palette;
38c0ce06203f (quit_char, Vwin32_enable_italics, Vwin32_enable_palette):
Geoff Voelker <voelker@cs.washington.edu>
parents: 15034
diff changeset
1166 HPALETTE new_palette;
38c0ce06203f (quit_char, Vwin32_enable_italics, Vwin32_enable_palette):
Geoff Voelker <voelker@cs.washington.edu>
parents: 15034
diff changeset
1167 int i;
38c0ce06203f (quit_char, Vwin32_enable_italics, Vwin32_enable_palette):
Geoff Voelker <voelker@cs.washington.edu>
parents: 15034
diff changeset
1168
38c0ce06203f (quit_char, Vwin32_enable_italics, Vwin32_enable_palette):
Geoff Voelker <voelker@cs.washington.edu>
parents: 15034
diff changeset
1169 /* don't bother trying to create palette if not supported */
16588
481b7874a1e9 Change identifiers of the form win32* to w32*.
Geoff Voelker <voelker@cs.washington.edu>
parents: 16259
diff changeset
1170 if (! FRAME_W32_DISPLAY_INFO (f)->has_palette)
15147
38c0ce06203f (quit_char, Vwin32_enable_italics, Vwin32_enable_palette):
Geoff Voelker <voelker@cs.washington.edu>
parents: 15034
diff changeset
1171 return;
38c0ce06203f (quit_char, Vwin32_enable_italics, Vwin32_enable_palette):
Geoff Voelker <voelker@cs.washington.edu>
parents: 15034
diff changeset
1172
38c0ce06203f (quit_char, Vwin32_enable_italics, Vwin32_enable_palette):
Geoff Voelker <voelker@cs.washington.edu>
parents: 15034
diff changeset
1173 log_palette = (LOGPALETTE *)
38c0ce06203f (quit_char, Vwin32_enable_italics, Vwin32_enable_palette):
Geoff Voelker <voelker@cs.washington.edu>
parents: 15034
diff changeset
1174 alloca (sizeof (LOGPALETTE) +
16588
481b7874a1e9 Change identifiers of the form win32* to w32*.
Geoff Voelker <voelker@cs.washington.edu>
parents: 16259
diff changeset
1175 FRAME_W32_DISPLAY_INFO (f)->num_colors * sizeof (PALETTEENTRY));
15147
38c0ce06203f (quit_char, Vwin32_enable_italics, Vwin32_enable_palette):
Geoff Voelker <voelker@cs.washington.edu>
parents: 15034
diff changeset
1176 log_palette->palVersion = 0x300;
16588
481b7874a1e9 Change identifiers of the form win32* to w32*.
Geoff Voelker <voelker@cs.washington.edu>
parents: 16259
diff changeset
1177 log_palette->palNumEntries = FRAME_W32_DISPLAY_INFO (f)->num_colors;
481b7874a1e9 Change identifiers of the form win32* to w32*.
Geoff Voelker <voelker@cs.washington.edu>
parents: 16259
diff changeset
1178
481b7874a1e9 Change identifiers of the form win32* to w32*.
Geoff Voelker <voelker@cs.washington.edu>
parents: 16259
diff changeset
1179 list = FRAME_W32_DISPLAY_INFO (f)->color_list;
15147
38c0ce06203f (quit_char, Vwin32_enable_italics, Vwin32_enable_palette):
Geoff Voelker <voelker@cs.washington.edu>
parents: 15034
diff changeset
1180 for (i = 0;
16588
481b7874a1e9 Change identifiers of the form win32* to w32*.
Geoff Voelker <voelker@cs.washington.edu>
parents: 16259
diff changeset
1181 i < FRAME_W32_DISPLAY_INFO (f)->num_colors;
15147
38c0ce06203f (quit_char, Vwin32_enable_italics, Vwin32_enable_palette):
Geoff Voelker <voelker@cs.washington.edu>
parents: 15034
diff changeset
1182 i++, list = list->next)
38c0ce06203f (quit_char, Vwin32_enable_italics, Vwin32_enable_palette):
Geoff Voelker <voelker@cs.washington.edu>
parents: 15034
diff changeset
1183 log_palette->palPalEntry[i] = list->entry;
38c0ce06203f (quit_char, Vwin32_enable_italics, Vwin32_enable_palette):
Geoff Voelker <voelker@cs.washington.edu>
parents: 15034
diff changeset
1184
38c0ce06203f (quit_char, Vwin32_enable_italics, Vwin32_enable_palette):
Geoff Voelker <voelker@cs.washington.edu>
parents: 15034
diff changeset
1185 new_palette = CreatePalette (log_palette);
38c0ce06203f (quit_char, Vwin32_enable_italics, Vwin32_enable_palette):
Geoff Voelker <voelker@cs.washington.edu>
parents: 15034
diff changeset
1186
38c0ce06203f (quit_char, Vwin32_enable_italics, Vwin32_enable_palette):
Geoff Voelker <voelker@cs.washington.edu>
parents: 15034
diff changeset
1187 enter_crit ();
38c0ce06203f (quit_char, Vwin32_enable_italics, Vwin32_enable_palette):
Geoff Voelker <voelker@cs.washington.edu>
parents: 15034
diff changeset
1188
16588
481b7874a1e9 Change identifiers of the form win32* to w32*.
Geoff Voelker <voelker@cs.washington.edu>
parents: 16259
diff changeset
1189 if (FRAME_W32_DISPLAY_INFO (f)->palette)
481b7874a1e9 Change identifiers of the form win32* to w32*.
Geoff Voelker <voelker@cs.washington.edu>
parents: 16259
diff changeset
1190 DeleteObject (FRAME_W32_DISPLAY_INFO (f)->palette);
481b7874a1e9 Change identifiers of the form win32* to w32*.
Geoff Voelker <voelker@cs.washington.edu>
parents: 16259
diff changeset
1191 FRAME_W32_DISPLAY_INFO (f)->palette = new_palette;
15147
38c0ce06203f (quit_char, Vwin32_enable_italics, Vwin32_enable_palette):
Geoff Voelker <voelker@cs.washington.edu>
parents: 15034
diff changeset
1192
38c0ce06203f (quit_char, Vwin32_enable_italics, Vwin32_enable_palette):
Geoff Voelker <voelker@cs.washington.edu>
parents: 15034
diff changeset
1193 /* Realize display palette and garbage all frames. */
38c0ce06203f (quit_char, Vwin32_enable_italics, Vwin32_enable_palette):
Geoff Voelker <voelker@cs.washington.edu>
parents: 15034
diff changeset
1194 release_frame_dc (f, get_frame_dc (f));
38c0ce06203f (quit_char, Vwin32_enable_italics, Vwin32_enable_palette):
Geoff Voelker <voelker@cs.washington.edu>
parents: 15034
diff changeset
1195
38c0ce06203f (quit_char, Vwin32_enable_italics, Vwin32_enable_palette):
Geoff Voelker <voelker@cs.washington.edu>
parents: 15034
diff changeset
1196 leave_crit ();
38c0ce06203f (quit_char, Vwin32_enable_italics, Vwin32_enable_palette):
Geoff Voelker <voelker@cs.washington.edu>
parents: 15034
diff changeset
1197 }
38c0ce06203f (quit_char, Vwin32_enable_italics, Vwin32_enable_palette):
Geoff Voelker <voelker@cs.washington.edu>
parents: 15034
diff changeset
1198
16588
481b7874a1e9 Change identifiers of the form win32* to w32*.
Geoff Voelker <voelker@cs.washington.edu>
parents: 16259
diff changeset
1199 #define W32_COLOR(pe) RGB (pe.peRed, pe.peGreen, pe.peBlue)
481b7874a1e9 Change identifiers of the form win32* to w32*.
Geoff Voelker <voelker@cs.washington.edu>
parents: 16259
diff changeset
1200 #define SET_W32_COLOR(pe, color) \
15147
38c0ce06203f (quit_char, Vwin32_enable_italics, Vwin32_enable_palette):
Geoff Voelker <voelker@cs.washington.edu>
parents: 15034
diff changeset
1201 do \
38c0ce06203f (quit_char, Vwin32_enable_italics, Vwin32_enable_palette):
Geoff Voelker <voelker@cs.washington.edu>
parents: 15034
diff changeset
1202 { \
38c0ce06203f (quit_char, Vwin32_enable_italics, Vwin32_enable_palette):
Geoff Voelker <voelker@cs.washington.edu>
parents: 15034
diff changeset
1203 pe.peRed = GetRValue (color); \
38c0ce06203f (quit_char, Vwin32_enable_italics, Vwin32_enable_palette):
Geoff Voelker <voelker@cs.washington.edu>
parents: 15034
diff changeset
1204 pe.peGreen = GetGValue (color); \
38c0ce06203f (quit_char, Vwin32_enable_italics, Vwin32_enable_palette):
Geoff Voelker <voelker@cs.washington.edu>
parents: 15034
diff changeset
1205 pe.peBlue = GetBValue (color); \
38c0ce06203f (quit_char, Vwin32_enable_italics, Vwin32_enable_palette):
Geoff Voelker <voelker@cs.washington.edu>
parents: 15034
diff changeset
1206 pe.peFlags = 0; \
38c0ce06203f (quit_char, Vwin32_enable_italics, Vwin32_enable_palette):
Geoff Voelker <voelker@cs.washington.edu>
parents: 15034
diff changeset
1207 } while (0)
38c0ce06203f (quit_char, Vwin32_enable_italics, Vwin32_enable_palette):
Geoff Voelker <voelker@cs.washington.edu>
parents: 15034
diff changeset
1208
38c0ce06203f (quit_char, Vwin32_enable_italics, Vwin32_enable_palette):
Geoff Voelker <voelker@cs.washington.edu>
parents: 15034
diff changeset
1209 #if 0
38c0ce06203f (quit_char, Vwin32_enable_italics, Vwin32_enable_palette):
Geoff Voelker <voelker@cs.washington.edu>
parents: 15034
diff changeset
1210 /* Keep these around in case we ever want to track color usage. */
38c0ce06203f (quit_char, Vwin32_enable_italics, Vwin32_enable_palette):
Geoff Voelker <voelker@cs.washington.edu>
parents: 15034
diff changeset
1211 void
16588
481b7874a1e9 Change identifiers of the form win32* to w32*.
Geoff Voelker <voelker@cs.washington.edu>
parents: 16259
diff changeset
1212 w32_map_color (FRAME_PTR f, COLORREF color)
15147
38c0ce06203f (quit_char, Vwin32_enable_italics, Vwin32_enable_palette):
Geoff Voelker <voelker@cs.washington.edu>
parents: 15034
diff changeset
1213 {
16588
481b7874a1e9 Change identifiers of the form win32* to w32*.
Geoff Voelker <voelker@cs.washington.edu>
parents: 16259
diff changeset
1214 struct w32_palette_entry * list = FRAME_W32_DISPLAY_INFO (f)->color_list;
481b7874a1e9 Change identifiers of the form win32* to w32*.
Geoff Voelker <voelker@cs.washington.edu>
parents: 16259
diff changeset
1215
481b7874a1e9 Change identifiers of the form win32* to w32*.
Geoff Voelker <voelker@cs.washington.edu>
parents: 16259
diff changeset
1216 if (NILP (Vw32_enable_palette))
15147
38c0ce06203f (quit_char, Vwin32_enable_italics, Vwin32_enable_palette):
Geoff Voelker <voelker@cs.washington.edu>
parents: 15034
diff changeset
1217 return;
38c0ce06203f (quit_char, Vwin32_enable_italics, Vwin32_enable_palette):
Geoff Voelker <voelker@cs.washington.edu>
parents: 15034
diff changeset
1218
38c0ce06203f (quit_char, Vwin32_enable_italics, Vwin32_enable_palette):
Geoff Voelker <voelker@cs.washington.edu>
parents: 15034
diff changeset
1219 /* check if color is already mapped */
38c0ce06203f (quit_char, Vwin32_enable_italics, Vwin32_enable_palette):
Geoff Voelker <voelker@cs.washington.edu>
parents: 15034
diff changeset
1220 while (list)
38c0ce06203f (quit_char, Vwin32_enable_italics, Vwin32_enable_palette):
Geoff Voelker <voelker@cs.washington.edu>
parents: 15034
diff changeset
1221 {
16588
481b7874a1e9 Change identifiers of the form win32* to w32*.
Geoff Voelker <voelker@cs.washington.edu>
parents: 16259
diff changeset
1222 if (W32_COLOR (list->entry) == color)
15147
38c0ce06203f (quit_char, Vwin32_enable_italics, Vwin32_enable_palette):
Geoff Voelker <voelker@cs.washington.edu>
parents: 15034
diff changeset
1223 {
38c0ce06203f (quit_char, Vwin32_enable_italics, Vwin32_enable_palette):
Geoff Voelker <voelker@cs.washington.edu>
parents: 15034
diff changeset
1224 ++list->refcount;
38c0ce06203f (quit_char, Vwin32_enable_italics, Vwin32_enable_palette):
Geoff Voelker <voelker@cs.washington.edu>
parents: 15034
diff changeset
1225 return;
38c0ce06203f (quit_char, Vwin32_enable_italics, Vwin32_enable_palette):
Geoff Voelker <voelker@cs.washington.edu>
parents: 15034
diff changeset
1226 }
38c0ce06203f (quit_char, Vwin32_enable_italics, Vwin32_enable_palette):
Geoff Voelker <voelker@cs.washington.edu>
parents: 15034
diff changeset
1227 list = list->next;
38c0ce06203f (quit_char, Vwin32_enable_italics, Vwin32_enable_palette):
Geoff Voelker <voelker@cs.washington.edu>
parents: 15034
diff changeset
1228 }
38c0ce06203f (quit_char, Vwin32_enable_italics, Vwin32_enable_palette):
Geoff Voelker <voelker@cs.washington.edu>
parents: 15034
diff changeset
1229
38c0ce06203f (quit_char, Vwin32_enable_italics, Vwin32_enable_palette):
Geoff Voelker <voelker@cs.washington.edu>
parents: 15034
diff changeset
1230 /* not already mapped, so add to list and recreate Windows palette */
16588
481b7874a1e9 Change identifiers of the form win32* to w32*.
Geoff Voelker <voelker@cs.washington.edu>
parents: 16259
diff changeset
1231 list = (struct w32_palette_entry *)
481b7874a1e9 Change identifiers of the form win32* to w32*.
Geoff Voelker <voelker@cs.washington.edu>
parents: 16259
diff changeset
1232 xmalloc (sizeof (struct w32_palette_entry));
481b7874a1e9 Change identifiers of the form win32* to w32*.
Geoff Voelker <voelker@cs.washington.edu>
parents: 16259
diff changeset
1233 SET_W32_COLOR (list->entry, color);
15147
38c0ce06203f (quit_char, Vwin32_enable_italics, Vwin32_enable_palette):
Geoff Voelker <voelker@cs.washington.edu>
parents: 15034
diff changeset
1234 list->refcount = 1;
16588
481b7874a1e9 Change identifiers of the form win32* to w32*.
Geoff Voelker <voelker@cs.washington.edu>
parents: 16259
diff changeset
1235 list->next = FRAME_W32_DISPLAY_INFO (f)->color_list;
481b7874a1e9 Change identifiers of the form win32* to w32*.
Geoff Voelker <voelker@cs.washington.edu>
parents: 16259
diff changeset
1236 FRAME_W32_DISPLAY_INFO (f)->color_list = list;
481b7874a1e9 Change identifiers of the form win32* to w32*.
Geoff Voelker <voelker@cs.washington.edu>
parents: 16259
diff changeset
1237 FRAME_W32_DISPLAY_INFO (f)->num_colors++;
15147
38c0ce06203f (quit_char, Vwin32_enable_italics, Vwin32_enable_palette):
Geoff Voelker <voelker@cs.washington.edu>
parents: 15034
diff changeset
1238
38c0ce06203f (quit_char, Vwin32_enable_italics, Vwin32_enable_palette):
Geoff Voelker <voelker@cs.washington.edu>
parents: 15034
diff changeset
1239 /* set flag that palette must be regenerated */
16588
481b7874a1e9 Change identifiers of the form win32* to w32*.
Geoff Voelker <voelker@cs.washington.edu>
parents: 16259
diff changeset
1240 FRAME_W32_DISPLAY_INFO (f)->regen_palette = TRUE;
15147
38c0ce06203f (quit_char, Vwin32_enable_italics, Vwin32_enable_palette):
Geoff Voelker <voelker@cs.washington.edu>
parents: 15034
diff changeset
1241 }
38c0ce06203f (quit_char, Vwin32_enable_italics, Vwin32_enable_palette):
Geoff Voelker <voelker@cs.washington.edu>
parents: 15034
diff changeset
1242
38c0ce06203f (quit_char, Vwin32_enable_italics, Vwin32_enable_palette):
Geoff Voelker <voelker@cs.washington.edu>
parents: 15034
diff changeset
1243 void
16588
481b7874a1e9 Change identifiers of the form win32* to w32*.
Geoff Voelker <voelker@cs.washington.edu>
parents: 16259
diff changeset
1244 w32_unmap_color (FRAME_PTR f, COLORREF color)
15147
38c0ce06203f (quit_char, Vwin32_enable_italics, Vwin32_enable_palette):
Geoff Voelker <voelker@cs.washington.edu>
parents: 15034
diff changeset
1245 {
16588
481b7874a1e9 Change identifiers of the form win32* to w32*.
Geoff Voelker <voelker@cs.washington.edu>
parents: 16259
diff changeset
1246 struct w32_palette_entry * list = FRAME_W32_DISPLAY_INFO (f)->color_list;
481b7874a1e9 Change identifiers of the form win32* to w32*.
Geoff Voelker <voelker@cs.washington.edu>
parents: 16259
diff changeset
1247 struct w32_palette_entry **prev = &FRAME_W32_DISPLAY_INFO (f)->color_list;
481b7874a1e9 Change identifiers of the form win32* to w32*.
Geoff Voelker <voelker@cs.washington.edu>
parents: 16259
diff changeset
1248
481b7874a1e9 Change identifiers of the form win32* to w32*.
Geoff Voelker <voelker@cs.washington.edu>
parents: 16259
diff changeset
1249 if (NILP (Vw32_enable_palette))
15147
38c0ce06203f (quit_char, Vwin32_enable_italics, Vwin32_enable_palette):
Geoff Voelker <voelker@cs.washington.edu>
parents: 15034
diff changeset
1250 return;
38c0ce06203f (quit_char, Vwin32_enable_italics, Vwin32_enable_palette):
Geoff Voelker <voelker@cs.washington.edu>
parents: 15034
diff changeset
1251
38c0ce06203f (quit_char, Vwin32_enable_italics, Vwin32_enable_palette):
Geoff Voelker <voelker@cs.washington.edu>
parents: 15034
diff changeset
1252 /* check if color is already mapped */
38c0ce06203f (quit_char, Vwin32_enable_italics, Vwin32_enable_palette):
Geoff Voelker <voelker@cs.washington.edu>
parents: 15034
diff changeset
1253 while (list)
38c0ce06203f (quit_char, Vwin32_enable_italics, Vwin32_enable_palette):
Geoff Voelker <voelker@cs.washington.edu>
parents: 15034
diff changeset
1254 {
16588
481b7874a1e9 Change identifiers of the form win32* to w32*.
Geoff Voelker <voelker@cs.washington.edu>
parents: 16259
diff changeset
1255 if (W32_COLOR (list->entry) == color)
15147
38c0ce06203f (quit_char, Vwin32_enable_italics, Vwin32_enable_palette):
Geoff Voelker <voelker@cs.washington.edu>
parents: 15034
diff changeset
1256 {
38c0ce06203f (quit_char, Vwin32_enable_italics, Vwin32_enable_palette):
Geoff Voelker <voelker@cs.washington.edu>
parents: 15034
diff changeset
1257 if (--list->refcount == 0)
38c0ce06203f (quit_char, Vwin32_enable_italics, Vwin32_enable_palette):
Geoff Voelker <voelker@cs.washington.edu>
parents: 15034
diff changeset
1258 {
38c0ce06203f (quit_char, Vwin32_enable_italics, Vwin32_enable_palette):
Geoff Voelker <voelker@cs.washington.edu>
parents: 15034
diff changeset
1259 *prev = list->next;
38c0ce06203f (quit_char, Vwin32_enable_italics, Vwin32_enable_palette):
Geoff Voelker <voelker@cs.washington.edu>
parents: 15034
diff changeset
1260 xfree (list);
16588
481b7874a1e9 Change identifiers of the form win32* to w32*.
Geoff Voelker <voelker@cs.washington.edu>
parents: 16259
diff changeset
1261 FRAME_W32_DISPLAY_INFO (f)->num_colors--;
15147
38c0ce06203f (quit_char, Vwin32_enable_italics, Vwin32_enable_palette):
Geoff Voelker <voelker@cs.washington.edu>
parents: 15034
diff changeset
1262 break;
38c0ce06203f (quit_char, Vwin32_enable_italics, Vwin32_enable_palette):
Geoff Voelker <voelker@cs.washington.edu>
parents: 15034
diff changeset
1263 }
38c0ce06203f (quit_char, Vwin32_enable_italics, Vwin32_enable_palette):
Geoff Voelker <voelker@cs.washington.edu>
parents: 15034
diff changeset
1264 else
38c0ce06203f (quit_char, Vwin32_enable_italics, Vwin32_enable_palette):
Geoff Voelker <voelker@cs.washington.edu>
parents: 15034
diff changeset
1265 return;
38c0ce06203f (quit_char, Vwin32_enable_italics, Vwin32_enable_palette):
Geoff Voelker <voelker@cs.washington.edu>
parents: 15034
diff changeset
1266 }
38c0ce06203f (quit_char, Vwin32_enable_italics, Vwin32_enable_palette):
Geoff Voelker <voelker@cs.washington.edu>
parents: 15034
diff changeset
1267 prev = &list->next;
38c0ce06203f (quit_char, Vwin32_enable_italics, Vwin32_enable_palette):
Geoff Voelker <voelker@cs.washington.edu>
parents: 15034
diff changeset
1268 list = list->next;
38c0ce06203f (quit_char, Vwin32_enable_italics, Vwin32_enable_palette):
Geoff Voelker <voelker@cs.washington.edu>
parents: 15034
diff changeset
1269 }
38c0ce06203f (quit_char, Vwin32_enable_italics, Vwin32_enable_palette):
Geoff Voelker <voelker@cs.washington.edu>
parents: 15034
diff changeset
1270
38c0ce06203f (quit_char, Vwin32_enable_italics, Vwin32_enable_palette):
Geoff Voelker <voelker@cs.washington.edu>
parents: 15034
diff changeset
1271 /* set flag that palette must be regenerated */
16588
481b7874a1e9 Change identifiers of the form win32* to w32*.
Geoff Voelker <voelker@cs.washington.edu>
parents: 16259
diff changeset
1272 FRAME_W32_DISPLAY_INFO (f)->regen_palette = TRUE;
15147
38c0ce06203f (quit_char, Vwin32_enable_italics, Vwin32_enable_palette):
Geoff Voelker <voelker@cs.washington.edu>
parents: 15034
diff changeset
1273 }
38c0ce06203f (quit_char, Vwin32_enable_italics, Vwin32_enable_palette):
Geoff Voelker <voelker@cs.washington.edu>
parents: 15034
diff changeset
1274 #endif
38c0ce06203f (quit_char, Vwin32_enable_italics, Vwin32_enable_palette):
Geoff Voelker <voelker@cs.washington.edu>
parents: 15034
diff changeset
1275
27397
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
1276
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
1277 /* Gamma-correct COLOR on frame F. */
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
1278
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
1279 void
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
1280 gamma_correct (f, color)
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
1281 struct frame *f;
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
1282 COLORREF *color;
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
1283 {
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
1284 if (f->gamma)
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
1285 {
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
1286 *color = PALETTERGB (
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
1287 pow (GetRValue (*color) / 255.0, f->gamma) * 255.0 + 0.5,
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
1288 pow (GetGValue (*color) / 255.0, f->gamma) * 255.0 + 0.5,
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
1289 pow (GetBValue (*color) / 255.0, f->gamma) * 255.0 + 0.5);
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
1290 }
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
1291 }
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
1292
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
1293
13434
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
1294 /* Decide if color named COLOR is valid for the display associated with
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
1295 the selected frame; if so, return the rgb values in COLOR_DEF.
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
1296 If ALLOC is nonzero, allocate a new colormap cell. */
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
1297
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
1298 int
27397
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
1299 w32_defined_color (f, color, color_def, alloc)
13434
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
1300 FRAME_PTR f;
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
1301 char *color;
27397
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
1302 XColor *color_def;
13434
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
1303 int alloc;
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
1304 {
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
1305 register Lisp_Object tem;
27397
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
1306 COLORREF w32_color_ref;
14353
d0d8d9d73f7f backout 1.3
Geoff Voelker <voelker@cs.washington.edu>
parents: 14243
diff changeset
1307
16588
481b7874a1e9 Change identifiers of the form win32* to w32*.
Geoff Voelker <voelker@cs.washington.edu>
parents: 16259
diff changeset
1308 tem = x_to_w32_color (color);
14353
d0d8d9d73f7f backout 1.3
Geoff Voelker <voelker@cs.washington.edu>
parents: 14243
diff changeset
1309
47942
080b4586492b Fix typo in comment.
Juanma Barranquero <lekktu@gmail.com>
parents: 47731
diff changeset
1310 if (!NILP (tem))
13434
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
1311 {
27516
8001542eaee2 (w32_defined_color): Check for valid frame before
Jason Rumney <jasonr@gnu.org>
parents: 27407
diff changeset
1312 if (f)
8001542eaee2 (w32_defined_color): Check for valid frame before
Jason Rumney <jasonr@gnu.org>
parents: 27407
diff changeset
1313 {
8001542eaee2 (w32_defined_color): Check for valid frame before
Jason Rumney <jasonr@gnu.org>
parents: 27407
diff changeset
1314 /* Apply gamma correction. */
8001542eaee2 (w32_defined_color): Check for valid frame before
Jason Rumney <jasonr@gnu.org>
parents: 27407
diff changeset
1315 w32_color_ref = XUINT (tem);
8001542eaee2 (w32_defined_color): Check for valid frame before
Jason Rumney <jasonr@gnu.org>
parents: 27407
diff changeset
1316 gamma_correct (f, &w32_color_ref);
8001542eaee2 (w32_defined_color): Check for valid frame before
Jason Rumney <jasonr@gnu.org>
parents: 27407
diff changeset
1317 XSETINT (tem, w32_color_ref);
8001542eaee2 (w32_defined_color): Check for valid frame before
Jason Rumney <jasonr@gnu.org>
parents: 27407
diff changeset
1318 }
27407
7df920562cbe (w32_defined_color): Apply gamma correction before trying to map to
Jason Rumney <jasonr@gnu.org>
parents: 27397
diff changeset
1319
7df920562cbe (w32_defined_color): Apply gamma correction before trying to map to
Jason Rumney <jasonr@gnu.org>
parents: 27397
diff changeset
1320 /* Map this color to the palette if it is enabled. */
16588
481b7874a1e9 Change identifiers of the form win32* to w32*.
Geoff Voelker <voelker@cs.washington.edu>
parents: 16259
diff changeset
1321 if (!NILP (Vw32_enable_palette))
15147
38c0ce06203f (quit_char, Vwin32_enable_italics, Vwin32_enable_palette):
Geoff Voelker <voelker@cs.washington.edu>
parents: 15034
diff changeset
1322 {
16588
481b7874a1e9 Change identifiers of the form win32* to w32*.
Geoff Voelker <voelker@cs.washington.edu>
parents: 16259
diff changeset
1323 struct w32_palette_entry * entry =
27516
8001542eaee2 (w32_defined_color): Check for valid frame before
Jason Rumney <jasonr@gnu.org>
parents: 27407
diff changeset
1324 one_w32_display_info.color_list;
16588
481b7874a1e9 Change identifiers of the form win32* to w32*.
Geoff Voelker <voelker@cs.washington.edu>
parents: 16259
diff changeset
1325 struct w32_palette_entry ** prev =
27516
8001542eaee2 (w32_defined_color): Check for valid frame before
Jason Rumney <jasonr@gnu.org>
parents: 27407
diff changeset
1326 &one_w32_display_info.color_list;
47942
080b4586492b Fix typo in comment.
Juanma Barranquero <lekktu@gmail.com>
parents: 47731
diff changeset
1327
15147
38c0ce06203f (quit_char, Vwin32_enable_italics, Vwin32_enable_palette):
Geoff Voelker <voelker@cs.washington.edu>
parents: 15034
diff changeset
1328 /* check if color is already mapped */
38c0ce06203f (quit_char, Vwin32_enable_italics, Vwin32_enable_palette):
Geoff Voelker <voelker@cs.washington.edu>
parents: 15034
diff changeset
1329 while (entry)
38c0ce06203f (quit_char, Vwin32_enable_italics, Vwin32_enable_palette):
Geoff Voelker <voelker@cs.washington.edu>
parents: 15034
diff changeset
1330 {
16588
481b7874a1e9 Change identifiers of the form win32* to w32*.
Geoff Voelker <voelker@cs.washington.edu>
parents: 16259
diff changeset
1331 if (W32_COLOR (entry->entry) == XUINT (tem))
15147
38c0ce06203f (quit_char, Vwin32_enable_italics, Vwin32_enable_palette):
Geoff Voelker <voelker@cs.washington.edu>
parents: 15034
diff changeset
1332 break;
38c0ce06203f (quit_char, Vwin32_enable_italics, Vwin32_enable_palette):
Geoff Voelker <voelker@cs.washington.edu>
parents: 15034
diff changeset
1333 prev = &entry->next;
38c0ce06203f (quit_char, Vwin32_enable_italics, Vwin32_enable_palette):
Geoff Voelker <voelker@cs.washington.edu>
parents: 15034
diff changeset
1334 entry = entry->next;
38c0ce06203f (quit_char, Vwin32_enable_italics, Vwin32_enable_palette):
Geoff Voelker <voelker@cs.washington.edu>
parents: 15034
diff changeset
1335 }
38c0ce06203f (quit_char, Vwin32_enable_italics, Vwin32_enable_palette):
Geoff Voelker <voelker@cs.washington.edu>
parents: 15034
diff changeset
1336
38c0ce06203f (quit_char, Vwin32_enable_italics, Vwin32_enable_palette):
Geoff Voelker <voelker@cs.washington.edu>
parents: 15034
diff changeset
1337 if (entry == NULL && alloc)
38c0ce06203f (quit_char, Vwin32_enable_italics, Vwin32_enable_palette):
Geoff Voelker <voelker@cs.washington.edu>
parents: 15034
diff changeset
1338 {
38c0ce06203f (quit_char, Vwin32_enable_italics, Vwin32_enable_palette):
Geoff Voelker <voelker@cs.washington.edu>
parents: 15034
diff changeset
1339 /* not already mapped, so add to list */
16588
481b7874a1e9 Change identifiers of the form win32* to w32*.
Geoff Voelker <voelker@cs.washington.edu>
parents: 16259
diff changeset
1340 entry = (struct w32_palette_entry *)
481b7874a1e9 Change identifiers of the form win32* to w32*.
Geoff Voelker <voelker@cs.washington.edu>
parents: 16259
diff changeset
1341 xmalloc (sizeof (struct w32_palette_entry));
481b7874a1e9 Change identifiers of the form win32* to w32*.
Geoff Voelker <voelker@cs.washington.edu>
parents: 16259
diff changeset
1342 SET_W32_COLOR (entry->entry, XUINT (tem));
15147
38c0ce06203f (quit_char, Vwin32_enable_italics, Vwin32_enable_palette):
Geoff Voelker <voelker@cs.washington.edu>
parents: 15034
diff changeset
1343 entry->next = NULL;
38c0ce06203f (quit_char, Vwin32_enable_italics, Vwin32_enable_palette):
Geoff Voelker <voelker@cs.washington.edu>
parents: 15034
diff changeset
1344 *prev = entry;
27516
8001542eaee2 (w32_defined_color): Check for valid frame before
Jason Rumney <jasonr@gnu.org>
parents: 27407
diff changeset
1345 one_w32_display_info.num_colors++;
15147
38c0ce06203f (quit_char, Vwin32_enable_italics, Vwin32_enable_palette):
Geoff Voelker <voelker@cs.washington.edu>
parents: 15034
diff changeset
1346
38c0ce06203f (quit_char, Vwin32_enable_italics, Vwin32_enable_palette):
Geoff Voelker <voelker@cs.washington.edu>
parents: 15034
diff changeset
1347 /* set flag that palette must be regenerated */
27516
8001542eaee2 (w32_defined_color): Check for valid frame before
Jason Rumney <jasonr@gnu.org>
parents: 27407
diff changeset
1348 one_w32_display_info.regen_palette = TRUE;
15147
38c0ce06203f (quit_char, Vwin32_enable_italics, Vwin32_enable_palette):
Geoff Voelker <voelker@cs.washington.edu>
parents: 15034
diff changeset
1349 }
38c0ce06203f (quit_char, Vwin32_enable_italics, Vwin32_enable_palette):
Geoff Voelker <voelker@cs.washington.edu>
parents: 15034
diff changeset
1350 }
38c0ce06203f (quit_char, Vwin32_enable_italics, Vwin32_enable_palette):
Geoff Voelker <voelker@cs.washington.edu>
parents: 15034
diff changeset
1351 /* Ensure COLORREF value is snapped to nearest color in (default)
38c0ce06203f (quit_char, Vwin32_enable_italics, Vwin32_enable_palette):
Geoff Voelker <voelker@cs.washington.edu>
parents: 15034
diff changeset
1352 palette by simulating the PALETTERGB macro. This works whether
38c0ce06203f (quit_char, Vwin32_enable_italics, Vwin32_enable_palette):
Geoff Voelker <voelker@cs.washington.edu>
parents: 15034
diff changeset
1353 or not the display device has a palette. */
27397
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
1354 w32_color_ref = XUINT (tem) | 0x2000000;
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
1355
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
1356 color_def->pixel = w32_color_ref;
48346
140fd0332d31 (w32_defined_color): Adjust RGB values for Emacs.
Jason Rumney <jasonr@gnu.org>
parents: 47983
diff changeset
1357 color_def->red = GetRValue (w32_color_ref) * 256;
140fd0332d31 (w32_defined_color): Adjust RGB values for Emacs.
Jason Rumney <jasonr@gnu.org>
parents: 47983
diff changeset
1358 color_def->green = GetGValue (w32_color_ref) * 256;
140fd0332d31 (w32_defined_color): Adjust RGB values for Emacs.
Jason Rumney <jasonr@gnu.org>
parents: 47983
diff changeset
1359 color_def->blue = GetBValue (w32_color_ref) * 256;
27397
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
1360
13434
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
1361 return 1;
15147
38c0ce06203f (quit_char, Vwin32_enable_italics, Vwin32_enable_palette):
Geoff Voelker <voelker@cs.washington.edu>
parents: 15034
diff changeset
1362 }
47942
080b4586492b Fix typo in comment.
Juanma Barranquero <lekktu@gmail.com>
parents: 47731
diff changeset
1363 else
14353
d0d8d9d73f7f backout 1.3
Geoff Voelker <voelker@cs.washington.edu>
parents: 14243
diff changeset
1364 {
d0d8d9d73f7f backout 1.3
Geoff Voelker <voelker@cs.washington.edu>
parents: 14243
diff changeset
1365 return 0;
d0d8d9d73f7f backout 1.3
Geoff Voelker <voelker@cs.washington.edu>
parents: 14243
diff changeset
1366 }
13434
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
1367 }
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
1368
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
1369 /* Given a string ARG naming a color, compute a pixel value from it
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
1370 suitable for screen F.
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
1371 If F is not a color screen, return DEF (default) regardless of what
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
1372 ARG says. */
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
1373
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
1374 int
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
1375 x_decode_color (f, arg, def)
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
1376 FRAME_PTR f;
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
1377 Lisp_Object arg;
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
1378 int def;
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
1379 {
27397
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
1380 XColor cdef;
13434
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
1381
40656
cdfd4d09b79a Update usage of CHECK_ macros (remove unused second argument).
Pavel Janík <Pavel@Janik.cz>
parents: 40528
diff changeset
1382 CHECK_STRING (arg);
13434
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
1383
46370
40db0673e6f0 Most uses of XSTRING combined with STRING_BYTES or indirection changed to
Ken Raeburn <raeburn@raeburn.org>
parents: 46293
diff changeset
1384 if (strcmp (SDATA (arg), "black") == 0)
13434
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
1385 return BLACK_PIX_DEFAULT (f);
46370
40db0673e6f0 Most uses of XSTRING combined with STRING_BYTES or indirection changed to
Ken Raeburn <raeburn@raeburn.org>
parents: 46293
diff changeset
1386 else if (strcmp (SDATA (arg), "white") == 0)
13434
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
1387 return WHITE_PIX_DEFAULT (f);
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
1388
16588
481b7874a1e9 Change identifiers of the form win32* to w32*.
Geoff Voelker <voelker@cs.washington.edu>
parents: 16259
diff changeset
1389 if ((FRAME_W32_DISPLAY_INFO (f)->n_planes * FRAME_W32_DISPLAY_INFO (f)->n_cbits) == 1)
13434
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
1390 return def;
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
1391
27397
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
1392 /* w32_defined_color is responsible for coping with failures
13434
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
1393 by looking for a near-miss. */
46370
40db0673e6f0 Most uses of XSTRING combined with STRING_BYTES or indirection changed to
Ken Raeburn <raeburn@raeburn.org>
parents: 46293
diff changeset
1394 if (w32_defined_color (f, SDATA (arg), &cdef, 1))
27397
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
1395 return cdef.pixel;
13434
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
1396
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
1397 /* defined_color failed; return an ultimate default. */
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
1398 return def;
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
1399 }
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
1400
27397
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
1401
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
1402
13434
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
1403 /* Functions called only from `x_set_frame_param'
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
1404 to set individual parameters.
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
1405
16588
481b7874a1e9 Change identifiers of the form win32* to w32*.
Geoff Voelker <voelker@cs.washington.edu>
parents: 16259
diff changeset
1406 If FRAME_W32_WINDOW (f) is 0,
13434
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
1407 the frame is being created and its window does not exist yet.
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
1408 In that case, just record the parameter's new value
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
1409 in the standard place; do not attempt to change the window. */
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
1410
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
1411 void
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
1412 x_set_foreground_color (f, arg, oldval)
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
1413 struct frame *f;
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
1414 Lisp_Object arg, oldval;
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
1415 {
40120
03eb905a4d8e (Fx_file_dialog): Pass a filter to GetOpenFileName.
Jason Rumney <jasonr@gnu.org>
parents: 40009
diff changeset
1416 struct w32_output *x = f->output_data.w32;
03eb905a4d8e (Fx_file_dialog): Pass a filter to GetOpenFileName.
Jason Rumney <jasonr@gnu.org>
parents: 40009
diff changeset
1417 PIX_TYPE fg, old_fg;
03eb905a4d8e (Fx_file_dialog): Pass a filter to GetOpenFileName.
Jason Rumney <jasonr@gnu.org>
parents: 40009
diff changeset
1418
03eb905a4d8e (Fx_file_dialog): Pass a filter to GetOpenFileName.
Jason Rumney <jasonr@gnu.org>
parents: 40009
diff changeset
1419 fg = x_decode_color (f, arg, BLACK_PIX_DEFAULT (f));
03eb905a4d8e (Fx_file_dialog): Pass a filter to GetOpenFileName.
Jason Rumney <jasonr@gnu.org>
parents: 40009
diff changeset
1420 old_fg = FRAME_FOREGROUND_PIXEL (f);
03eb905a4d8e (Fx_file_dialog): Pass a filter to GetOpenFileName.
Jason Rumney <jasonr@gnu.org>
parents: 40009
diff changeset
1421 FRAME_FOREGROUND_PIXEL (f) = fg;
15147
38c0ce06203f (quit_char, Vwin32_enable_italics, Vwin32_enable_palette):
Geoff Voelker <voelker@cs.washington.edu>
parents: 15034
diff changeset
1422
16588
481b7874a1e9 Change identifiers of the form win32* to w32*.
Geoff Voelker <voelker@cs.washington.edu>
parents: 16259
diff changeset
1423 if (FRAME_W32_WINDOW (f) != 0)
13434
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
1424 {
40120
03eb905a4d8e (Fx_file_dialog): Pass a filter to GetOpenFileName.
Jason Rumney <jasonr@gnu.org>
parents: 40009
diff changeset
1425 if (x->cursor_pixel == old_fg)
03eb905a4d8e (Fx_file_dialog): Pass a filter to GetOpenFileName.
Jason Rumney <jasonr@gnu.org>
parents: 40009
diff changeset
1426 x->cursor_pixel = fg;
03eb905a4d8e (Fx_file_dialog): Pass a filter to GetOpenFileName.
Jason Rumney <jasonr@gnu.org>
parents: 40009
diff changeset
1427
27397
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
1428 update_face_from_frame_parameter (f, Qforeground_color, arg);
13434
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
1429 if (FRAME_VISIBLE_P (f))
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
1430 redraw_frame (f);
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
1431 }
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
1432 }
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
1433
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
1434 void
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
1435 x_set_background_color (f, arg, oldval)
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
1436 struct frame *f;
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
1437 Lisp_Object arg, oldval;
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
1438 {
27397
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
1439 FRAME_BACKGROUND_PIXEL (f)
13434
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
1440 = x_decode_color (f, arg, WHITE_PIX_DEFAULT (f));
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
1441
16588
481b7874a1e9 Change identifiers of the form win32* to w32*.
Geoff Voelker <voelker@cs.washington.edu>
parents: 16259
diff changeset
1442 if (FRAME_W32_WINDOW (f) != 0)
13434
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
1443 {
27397
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
1444 SetWindowLong (FRAME_W32_WINDOW (f), WND_BACKGROUND_INDEX,
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
1445 FRAME_BACKGROUND_PIXEL (f));
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
1446
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
1447 update_face_from_frame_parameter (f, Qbackground_color, arg);
13434
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
1448
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
1449 if (FRAME_VISIBLE_P (f))
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
1450 redraw_frame (f);
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
1451 }
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
1452 }
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
1453
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
1454 void
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
1455 x_set_mouse_color (f, arg, oldval)
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
1456 struct frame *f;
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
1457 Lisp_Object arg, oldval;
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
1458 {
50229
e3a41ffa1cba Remove setup of cross_cursor (already has hand_cursor).
Kim F. Storm <storm@cua.dk>
parents: 50164
diff changeset
1459 Cursor cursor, nontext_cursor, mode_cursor, hand_cursor;
17632
d2915156a803 (x_set_mouse_color): Update calls to x_catch_errors
Richard M. Stallman <rms@gnu.org>
parents: 16884
diff changeset
1460 int count;
13434
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
1461 int mask_color;
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
1462
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
1463 if (!EQ (Qnil, arg))
16588
481b7874a1e9 Change identifiers of the form win32* to w32*.
Geoff Voelker <voelker@cs.washington.edu>
parents: 16259
diff changeset
1464 f->output_data.w32->mouse_pixel
13434
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
1465 = x_decode_color (f, arg, BLACK_PIX_DEFAULT (f));
27397
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
1466 mask_color = FRAME_BACKGROUND_PIXEL (f);
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
1467
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
1468 /* Don't let pointers be invisible. */
16588
481b7874a1e9 Change identifiers of the form win32* to w32*.
Geoff Voelker <voelker@cs.washington.edu>
parents: 16259
diff changeset
1469 if (mask_color == f->output_data.w32->mouse_pixel
27397
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
1470 && mask_color == FRAME_BACKGROUND_PIXEL (f))
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
1471 f->output_data.w32->mouse_pixel = FRAME_FOREGROUND_PIXEL (f);
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
1472
33387
01a10bc04233 (Qw32_charset_hangeul): Rename to match w32 headers.
Jason Rumney <jasonr@gnu.org>
parents: 33216
diff changeset
1473 #if 0 /* TODO : cursor changes */
13434
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
1474 BLOCK_INPUT;
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
1475
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
1476 /* It's not okay to crash if the user selects a screwy cursor. */
17632
d2915156a803 (x_set_mouse_color): Update calls to x_catch_errors
Richard M. Stallman <rms@gnu.org>
parents: 16884
diff changeset
1477 count = x_catch_errors (FRAME_W32_DISPLAY (f));
13434
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
1478
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
1479 if (!EQ (Qnil, Vx_pointer_shape))
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
1480 {
40656
cdfd4d09b79a Update usage of CHECK_ macros (remove unused second argument).
Pavel Janík <Pavel@Janik.cz>
parents: 40528
diff changeset
1481 CHECK_NUMBER (Vx_pointer_shape);
16588
481b7874a1e9 Change identifiers of the form win32* to w32*.
Geoff Voelker <voelker@cs.washington.edu>
parents: 16259
diff changeset
1482 cursor = XCreateFontCursor (FRAME_W32_DISPLAY (f), XINT (Vx_pointer_shape));
13434
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
1483 }
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
1484 else
16588
481b7874a1e9 Change identifiers of the form win32* to w32*.
Geoff Voelker <voelker@cs.washington.edu>
parents: 16259
diff changeset
1485 cursor = XCreateFontCursor (FRAME_W32_DISPLAY (f), XC_xterm);
481b7874a1e9 Change identifiers of the form win32* to w32*.
Geoff Voelker <voelker@cs.washington.edu>
parents: 16259
diff changeset
1486 x_check_errors (FRAME_W32_DISPLAY (f), "bad text pointer cursor: %s");
13434
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
1487
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
1488 if (!EQ (Qnil, Vx_nontext_pointer_shape))
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
1489 {
40656
cdfd4d09b79a Update usage of CHECK_ macros (remove unused second argument).
Pavel Janík <Pavel@Janik.cz>
parents: 40528
diff changeset
1490 CHECK_NUMBER (Vx_nontext_pointer_shape);
16588
481b7874a1e9 Change identifiers of the form win32* to w32*.
Geoff Voelker <voelker@cs.washington.edu>
parents: 16259
diff changeset
1491 nontext_cursor = XCreateFontCursor (FRAME_W32_DISPLAY (f),
13434
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
1492 XINT (Vx_nontext_pointer_shape));
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
1493 }
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
1494 else
16588
481b7874a1e9 Change identifiers of the form win32* to w32*.
Geoff Voelker <voelker@cs.washington.edu>
parents: 16259
diff changeset
1495 nontext_cursor = XCreateFontCursor (FRAME_W32_DISPLAY (f), XC_left_ptr);
481b7874a1e9 Change identifiers of the form win32* to w32*.
Geoff Voelker <voelker@cs.washington.edu>
parents: 16259
diff changeset
1496 x_check_errors (FRAME_W32_DISPLAY (f), "bad nontext pointer cursor: %s");
13434
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
1497
36252
a8630c63f7d5 Rename everything containing *busy_cursor* and similar
Gerd Moellmann <gerd@gnu.org>
parents: 36080
diff changeset
1498 if (!EQ (Qnil, Vx_hourglass_pointer_shape))
a8630c63f7d5 Rename everything containing *busy_cursor* and similar
Gerd Moellmann <gerd@gnu.org>
parents: 36080
diff changeset
1499 {
40656
cdfd4d09b79a Update usage of CHECK_ macros (remove unused second argument).
Pavel Janík <Pavel@Janik.cz>
parents: 40528
diff changeset
1500 CHECK_NUMBER (Vx_hourglass_pointer_shape);
36252
a8630c63f7d5 Rename everything containing *busy_cursor* and similar
Gerd Moellmann <gerd@gnu.org>
parents: 36080
diff changeset
1501 hourglass_cursor = XCreateFontCursor (FRAME_W32_DISPLAY (f),
a8630c63f7d5 Rename everything containing *busy_cursor* and similar
Gerd Moellmann <gerd@gnu.org>
parents: 36080
diff changeset
1502 XINT (Vx_hourglass_pointer_shape));
a8630c63f7d5 Rename everything containing *busy_cursor* and similar
Gerd Moellmann <gerd@gnu.org>
parents: 36080
diff changeset
1503 }
a8630c63f7d5 Rename everything containing *busy_cursor* and similar
Gerd Moellmann <gerd@gnu.org>
parents: 36080
diff changeset
1504 else
a8630c63f7d5 Rename everything containing *busy_cursor* and similar
Gerd Moellmann <gerd@gnu.org>
parents: 36080
diff changeset
1505 hourglass_cursor = XCreateFontCursor (FRAME_W32_DISPLAY (f), XC_watch);
27397
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
1506 x_check_errors (FRAME_W32_DISPLAY (f), "bad busy pointer cursor: %s");
47942
080b4586492b Fix typo in comment.
Juanma Barranquero <lekktu@gmail.com>
parents: 47731
diff changeset
1507
27397
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
1508 x_check_errors (FRAME_W32_DISPLAY (f), "bad nontext pointer cursor: %s");
13434
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
1509 if (!EQ (Qnil, Vx_mode_pointer_shape))
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
1510 {
40656
cdfd4d09b79a Update usage of CHECK_ macros (remove unused second argument).
Pavel Janík <Pavel@Janik.cz>
parents: 40528
diff changeset
1511 CHECK_NUMBER (Vx_mode_pointer_shape);
16588
481b7874a1e9 Change identifiers of the form win32* to w32*.
Geoff Voelker <voelker@cs.washington.edu>
parents: 16259
diff changeset
1512 mode_cursor = XCreateFontCursor (FRAME_W32_DISPLAY (f),
13434
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
1513 XINT (Vx_mode_pointer_shape));
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
1514 }
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
1515 else
16588
481b7874a1e9 Change identifiers of the form win32* to w32*.
Geoff Voelker <voelker@cs.washington.edu>
parents: 16259
diff changeset
1516 mode_cursor = XCreateFontCursor (FRAME_W32_DISPLAY (f), XC_xterm);
481b7874a1e9 Change identifiers of the form win32* to w32*.
Geoff Voelker <voelker@cs.washington.edu>
parents: 16259
diff changeset
1517 x_check_errors (FRAME_W32_DISPLAY (f), "bad modeline pointer cursor: %s");
13434
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
1518
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
1519 if (!EQ (Qnil, Vx_sensitive_text_pointer_shape))
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
1520 {
40656
cdfd4d09b79a Update usage of CHECK_ macros (remove unused second argument).
Pavel Janík <Pavel@Janik.cz>
parents: 40528
diff changeset
1521 CHECK_NUMBER (Vx_sensitive_text_pointer_shape);
50229
e3a41ffa1cba Remove setup of cross_cursor (already has hand_cursor).
Kim F. Storm <storm@cua.dk>
parents: 50164
diff changeset
1522 hand_cursor
16588
481b7874a1e9 Change identifiers of the form win32* to w32*.
Geoff Voelker <voelker@cs.washington.edu>
parents: 16259
diff changeset
1523 = XCreateFontCursor (FRAME_W32_DISPLAY (f),
13434
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
1524 XINT (Vx_sensitive_text_pointer_shape));
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
1525 }
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
1526 else
50229
e3a41ffa1cba Remove setup of cross_cursor (already has hand_cursor).
Kim F. Storm <storm@cua.dk>
parents: 50164
diff changeset
1527 hand_cursor = XCreateFontCursor (FRAME_W32_DISPLAY (f), XC_crosshair);
13434
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
1528
34133
f1063cc498e4 (Fx_create_frame): Reintroduce the call to face-set-after-frame-defaults.
Jason Rumney <jasonr@gnu.org>
parents: 34089
diff changeset
1529 if (!NILP (Vx_window_horizontal_drag_shape))
f1063cc498e4 (Fx_create_frame): Reintroduce the call to face-set-after-frame-defaults.
Jason Rumney <jasonr@gnu.org>
parents: 34089
diff changeset
1530 {
40656
cdfd4d09b79a Update usage of CHECK_ macros (remove unused second argument).
Pavel Janík <Pavel@Janik.cz>
parents: 40528
diff changeset
1531 CHECK_NUMBER (Vx_window_horizontal_drag_shape);
34133
f1063cc498e4 (Fx_create_frame): Reintroduce the call to face-set-after-frame-defaults.
Jason Rumney <jasonr@gnu.org>
parents: 34089
diff changeset
1532 horizontal_drag_cursor
f1063cc498e4 (Fx_create_frame): Reintroduce the call to face-set-after-frame-defaults.
Jason Rumney <jasonr@gnu.org>
parents: 34089
diff changeset
1533 = XCreateFontCursor (FRAME_X_DISPLAY (f),
f1063cc498e4 (Fx_create_frame): Reintroduce the call to face-set-after-frame-defaults.
Jason Rumney <jasonr@gnu.org>
parents: 34089
diff changeset
1534 XINT (Vx_window_horizontal_drag_shape));
f1063cc498e4 (Fx_create_frame): Reintroduce the call to face-set-after-frame-defaults.
Jason Rumney <jasonr@gnu.org>
parents: 34089
diff changeset
1535 }
f1063cc498e4 (Fx_create_frame): Reintroduce the call to face-set-after-frame-defaults.
Jason Rumney <jasonr@gnu.org>
parents: 34089
diff changeset
1536 else
f1063cc498e4 (Fx_create_frame): Reintroduce the call to face-set-after-frame-defaults.
Jason Rumney <jasonr@gnu.org>
parents: 34089
diff changeset
1537 horizontal_drag_cursor
f1063cc498e4 (Fx_create_frame): Reintroduce the call to face-set-after-frame-defaults.
Jason Rumney <jasonr@gnu.org>
parents: 34089
diff changeset
1538 = XCreateFontCursor (FRAME_X_DISPLAY (f), XC_sb_h_double_arrow);
f1063cc498e4 (Fx_create_frame): Reintroduce the call to face-set-after-frame-defaults.
Jason Rumney <jasonr@gnu.org>
parents: 34089
diff changeset
1539
13434
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
1540 /* Check and report errors with the above calls. */
16588
481b7874a1e9 Change identifiers of the form win32* to w32*.
Geoff Voelker <voelker@cs.washington.edu>
parents: 16259
diff changeset
1541 x_check_errors (FRAME_W32_DISPLAY (f), "can't set cursor shape: %s");
17632
d2915156a803 (x_set_mouse_color): Update calls to x_catch_errors
Richard M. Stallman <rms@gnu.org>
parents: 16884
diff changeset
1542 x_uncatch_errors (FRAME_W32_DISPLAY (f), count);
13434
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
1543
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
1544 {
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
1545 XColor fore_color, back_color;
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
1546
16588
481b7874a1e9 Change identifiers of the form win32* to w32*.
Geoff Voelker <voelker@cs.washington.edu>
parents: 16259
diff changeset
1547 fore_color.pixel = f->output_data.w32->mouse_pixel;
13434
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
1548 back_color.pixel = mask_color;
16588
481b7874a1e9 Change identifiers of the form win32* to w32*.
Geoff Voelker <voelker@cs.washington.edu>
parents: 16259
diff changeset
1549 XQueryColor (FRAME_W32_DISPLAY (f),
481b7874a1e9 Change identifiers of the form win32* to w32*.
Geoff Voelker <voelker@cs.washington.edu>
parents: 16259
diff changeset
1550 DefaultColormap (FRAME_W32_DISPLAY (f),
481b7874a1e9 Change identifiers of the form win32* to w32*.
Geoff Voelker <voelker@cs.washington.edu>
parents: 16259
diff changeset
1551 DefaultScreen (FRAME_W32_DISPLAY (f))),
13434
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
1552 &fore_color);
16588
481b7874a1e9 Change identifiers of the form win32* to w32*.
Geoff Voelker <voelker@cs.washington.edu>
parents: 16259
diff changeset
1553 XQueryColor (FRAME_W32_DISPLAY (f),
481b7874a1e9 Change identifiers of the form win32* to w32*.
Geoff Voelker <voelker@cs.washington.edu>
parents: 16259
diff changeset
1554 DefaultColormap (FRAME_W32_DISPLAY (f),
481b7874a1e9 Change identifiers of the form win32* to w32*.
Geoff Voelker <voelker@cs.washington.edu>
parents: 16259
diff changeset
1555 DefaultScreen (FRAME_W32_DISPLAY (f))),
13434
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
1556 &back_color);
16588
481b7874a1e9 Change identifiers of the form win32* to w32*.
Geoff Voelker <voelker@cs.washington.edu>
parents: 16259
diff changeset
1557 XRecolorCursor (FRAME_W32_DISPLAY (f), cursor,
13434
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
1558 &fore_color, &back_color);
16588
481b7874a1e9 Change identifiers of the form win32* to w32*.
Geoff Voelker <voelker@cs.washington.edu>
parents: 16259
diff changeset
1559 XRecolorCursor (FRAME_W32_DISPLAY (f), nontext_cursor,
13434
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
1560 &fore_color, &back_color);
16588
481b7874a1e9 Change identifiers of the form win32* to w32*.
Geoff Voelker <voelker@cs.washington.edu>
parents: 16259
diff changeset
1561 XRecolorCursor (FRAME_W32_DISPLAY (f), mode_cursor,
13434
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
1562 &fore_color, &back_color);
50229
e3a41ffa1cba Remove setup of cross_cursor (already has hand_cursor).
Kim F. Storm <storm@cua.dk>
parents: 50164
diff changeset
1563 XRecolorCursor (FRAME_W32_DISPLAY (f), hand_cursor,
13434
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
1564 &fore_color, &back_color);
36252
a8630c63f7d5 Rename everything containing *busy_cursor* and similar
Gerd Moellmann <gerd@gnu.org>
parents: 36080
diff changeset
1565 XRecolorCursor (FRAME_W32_DISPLAY (f), hourglass_cursor,
27397
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
1566 &fore_color, &back_color);
13434
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
1567 }
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
1568
16588
481b7874a1e9 Change identifiers of the form win32* to w32*.
Geoff Voelker <voelker@cs.washington.edu>
parents: 16259
diff changeset
1569 if (FRAME_W32_WINDOW (f) != 0)
27397
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
1570 XDefineCursor (FRAME_W32_DISPLAY (f), FRAME_W32_WINDOW (f), cursor);
13434
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
1571
16588
481b7874a1e9 Change identifiers of the form win32* to w32*.
Geoff Voelker <voelker@cs.washington.edu>
parents: 16259
diff changeset
1572 if (cursor != f->output_data.w32->text_cursor && f->output_data.w32->text_cursor != 0)
481b7874a1e9 Change identifiers of the form win32* to w32*.
Geoff Voelker <voelker@cs.washington.edu>
parents: 16259
diff changeset
1573 XFreeCursor (FRAME_W32_DISPLAY (f), f->output_data.w32->text_cursor);
481b7874a1e9 Change identifiers of the form win32* to w32*.
Geoff Voelker <voelker@cs.washington.edu>
parents: 16259
diff changeset
1574 f->output_data.w32->text_cursor = cursor;
481b7874a1e9 Change identifiers of the form win32* to w32*.
Geoff Voelker <voelker@cs.washington.edu>
parents: 16259
diff changeset
1575
481b7874a1e9 Change identifiers of the form win32* to w32*.
Geoff Voelker <voelker@cs.washington.edu>
parents: 16259
diff changeset
1576 if (nontext_cursor != f->output_data.w32->nontext_cursor
481b7874a1e9 Change identifiers of the form win32* to w32*.
Geoff Voelker <voelker@cs.washington.edu>
parents: 16259
diff changeset
1577 && f->output_data.w32->nontext_cursor != 0)
481b7874a1e9 Change identifiers of the form win32* to w32*.
Geoff Voelker <voelker@cs.washington.edu>
parents: 16259
diff changeset
1578 XFreeCursor (FRAME_W32_DISPLAY (f), f->output_data.w32->nontext_cursor);
481b7874a1e9 Change identifiers of the form win32* to w32*.
Geoff Voelker <voelker@cs.washington.edu>
parents: 16259
diff changeset
1579 f->output_data.w32->nontext_cursor = nontext_cursor;
481b7874a1e9 Change identifiers of the form win32* to w32*.
Geoff Voelker <voelker@cs.washington.edu>
parents: 16259
diff changeset
1580
36252
a8630c63f7d5 Rename everything containing *busy_cursor* and similar
Gerd Moellmann <gerd@gnu.org>
parents: 36080
diff changeset
1581 if (hourglass_cursor != f->output_data.w32->hourglass_cursor
a8630c63f7d5 Rename everything containing *busy_cursor* and similar
Gerd Moellmann <gerd@gnu.org>
parents: 36080
diff changeset
1582 && f->output_data.w32->hourglass_cursor != 0)
a8630c63f7d5 Rename everything containing *busy_cursor* and similar
Gerd Moellmann <gerd@gnu.org>
parents: 36080
diff changeset
1583 XFreeCursor (FRAME_W32_DISPLAY (f), f->output_data.w32->hourglass_cursor);
a8630c63f7d5 Rename everything containing *busy_cursor* and similar
Gerd Moellmann <gerd@gnu.org>
parents: 36080
diff changeset
1584 f->output_data.w32->hourglass_cursor = hourglass_cursor;
27397
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
1585
16588
481b7874a1e9 Change identifiers of the form win32* to w32*.
Geoff Voelker <voelker@cs.washington.edu>
parents: 16259
diff changeset
1586 if (mode_cursor != f->output_data.w32->modeline_cursor
481b7874a1e9 Change identifiers of the form win32* to w32*.
Geoff Voelker <voelker@cs.washington.edu>
parents: 16259
diff changeset
1587 && f->output_data.w32->modeline_cursor != 0)
481b7874a1e9 Change identifiers of the form win32* to w32*.
Geoff Voelker <voelker@cs.washington.edu>
parents: 16259
diff changeset
1588 XFreeCursor (FRAME_W32_DISPLAY (f), f->output_data.w32->modeline_cursor);
481b7874a1e9 Change identifiers of the form win32* to w32*.
Geoff Voelker <voelker@cs.washington.edu>
parents: 16259
diff changeset
1589 f->output_data.w32->modeline_cursor = mode_cursor;
47942
080b4586492b Fix typo in comment.
Juanma Barranquero <lekktu@gmail.com>
parents: 47731
diff changeset
1590
50229
e3a41ffa1cba Remove setup of cross_cursor (already has hand_cursor).
Kim F. Storm <storm@cua.dk>
parents: 50164
diff changeset
1591 if (hand_cursor != f->output_data.w32->hand_cursor
e3a41ffa1cba Remove setup of cross_cursor (already has hand_cursor).
Kim F. Storm <storm@cua.dk>
parents: 50164
diff changeset
1592 && f->output_data.w32->hand_cursor != 0)
e3a41ffa1cba Remove setup of cross_cursor (already has hand_cursor).
Kim F. Storm <storm@cua.dk>
parents: 50164
diff changeset
1593 XFreeCursor (FRAME_W32_DISPLAY (f), f->output_data.w32->hand_cursor);
e3a41ffa1cba Remove setup of cross_cursor (already has hand_cursor).
Kim F. Storm <storm@cua.dk>
parents: 50164
diff changeset
1594 f->output_data.w32->hand_cursor = hand_cursor;
16588
481b7874a1e9 Change identifiers of the form win32* to w32*.
Geoff Voelker <voelker@cs.washington.edu>
parents: 16259
diff changeset
1595
481b7874a1e9 Change identifiers of the form win32* to w32*.
Geoff Voelker <voelker@cs.washington.edu>
parents: 16259
diff changeset
1596 XFlush (FRAME_W32_DISPLAY (f));
13434
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
1597 UNBLOCK_INPUT;
27397
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
1598
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
1599 update_face_from_frame_parameter (f, Qmouse_color, arg);
33387
01a10bc04233 (Qw32_charset_hangeul): Rename to match w32 headers.
Jason Rumney <jasonr@gnu.org>
parents: 33216
diff changeset
1600 #endif /* TODO */
13434
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
1601 }
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
1602
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
1603 void
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
1604 x_set_cursor_color (f, arg, oldval)
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
1605 struct frame *f;
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
1606 Lisp_Object arg, oldval;
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
1607 {
34062
0044985507c7 (x_set_cursor_color): Use x_update_cursor instead of x_display_cursor.
Jason Rumney <jasonr@gnu.org>
parents: 33929
diff changeset
1608 unsigned long fore_pixel, pixel;
13434
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
1609
29317
2d3d5bf49d4e Format and doc changes to bring closer to xfns.c.
Jason Rumney <jasonr@gnu.org>
parents: 29021
diff changeset
1610 if (!NILP (Vx_cursor_fore_pixel))
13434
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
1611 fore_pixel = x_decode_color (f, Vx_cursor_fore_pixel,
34062
0044985507c7 (x_set_cursor_color): Use x_update_cursor instead of x_display_cursor.
Jason Rumney <jasonr@gnu.org>
parents: 33929
diff changeset
1612 WHITE_PIX_DEFAULT (f));
13434
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
1613 else
27397
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
1614 fore_pixel = FRAME_BACKGROUND_PIXEL (f);
34062
0044985507c7 (x_set_cursor_color): Use x_update_cursor instead of x_display_cursor.
Jason Rumney <jasonr@gnu.org>
parents: 33929
diff changeset
1615
34089
445e01c537a3 Fix last change.
Jason Rumney <jasonr@gnu.org>
parents: 34062
diff changeset
1616 pixel = x_decode_color (f, arg, BLACK_PIX_DEFAULT (f));
47942
080b4586492b Fix typo in comment.
Juanma Barranquero <lekktu@gmail.com>
parents: 47731
diff changeset
1617
13434
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
1618 /* Make sure that the cursor color differs from the background color. */
34062
0044985507c7 (x_set_cursor_color): Use x_update_cursor instead of x_display_cursor.
Jason Rumney <jasonr@gnu.org>
parents: 33929
diff changeset
1619 if (pixel == FRAME_BACKGROUND_PIXEL (f))
0044985507c7 (x_set_cursor_color): Use x_update_cursor instead of x_display_cursor.
Jason Rumney <jasonr@gnu.org>
parents: 33929
diff changeset
1620 {
0044985507c7 (x_set_cursor_color): Use x_update_cursor instead of x_display_cursor.
Jason Rumney <jasonr@gnu.org>
parents: 33929
diff changeset
1621 pixel = f->output_data.w32->mouse_pixel;
0044985507c7 (x_set_cursor_color): Use x_update_cursor instead of x_display_cursor.
Jason Rumney <jasonr@gnu.org>
parents: 33929
diff changeset
1622 if (pixel == fore_pixel)
27397
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
1623 fore_pixel = FRAME_BACKGROUND_PIXEL (f);
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
1624 }
34062
0044985507c7 (x_set_cursor_color): Use x_update_cursor instead of x_display_cursor.
Jason Rumney <jasonr@gnu.org>
parents: 33929
diff changeset
1625
44047
73645cbc79a7 (x_set_cursor_color): Set foreground of cursor, not frame.
Jason Rumney <jasonr@gnu.org>
parents: 43963
diff changeset
1626 f->output_data.w32->cursor_foreground_pixel = fore_pixel;
34062
0044985507c7 (x_set_cursor_color): Use x_update_cursor instead of x_display_cursor.
Jason Rumney <jasonr@gnu.org>
parents: 33929
diff changeset
1627 f->output_data.w32->cursor_pixel = pixel;
16588
481b7874a1e9 Change identifiers of the form win32* to w32*.
Geoff Voelker <voelker@cs.washington.edu>
parents: 16259
diff changeset
1628
481b7874a1e9 Change identifiers of the form win32* to w32*.
Geoff Voelker <voelker@cs.washington.edu>
parents: 16259
diff changeset
1629 if (FRAME_W32_WINDOW (f) != 0)
13434
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
1630 {
44094
16eb7bad861d (x_set_cursor_color): Set cursor_gc as well.
Jason Rumney <jasonr@gnu.org>
parents: 44076
diff changeset
1631 BLOCK_INPUT;
16eb7bad861d (x_set_cursor_color): Set cursor_gc as well.
Jason Rumney <jasonr@gnu.org>
parents: 44076
diff changeset
1632 /* Update frame's cursor_gc. */
16eb7bad861d (x_set_cursor_color): Set cursor_gc as well.
Jason Rumney <jasonr@gnu.org>
parents: 44076
diff changeset
1633 f->output_data.w32->cursor_gc->foreground = fore_pixel;
16eb7bad861d (x_set_cursor_color): Set cursor_gc as well.
Jason Rumney <jasonr@gnu.org>
parents: 44076
diff changeset
1634 f->output_data.w32->cursor_gc->background = pixel;
16eb7bad861d (x_set_cursor_color): Set cursor_gc as well.
Jason Rumney <jasonr@gnu.org>
parents: 44076
diff changeset
1635
16eb7bad861d (x_set_cursor_color): Set cursor_gc as well.
Jason Rumney <jasonr@gnu.org>
parents: 44076
diff changeset
1636 UNBLOCK_INPUT;
16eb7bad861d (x_set_cursor_color): Set cursor_gc as well.
Jason Rumney <jasonr@gnu.org>
parents: 44076
diff changeset
1637
13434
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
1638 if (FRAME_VISIBLE_P (f))
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
1639 {
34062
0044985507c7 (x_set_cursor_color): Use x_update_cursor instead of x_display_cursor.
Jason Rumney <jasonr@gnu.org>
parents: 33929
diff changeset
1640 x_update_cursor (f, 0);
0044985507c7 (x_set_cursor_color): Use x_update_cursor instead of x_display_cursor.
Jason Rumney <jasonr@gnu.org>
parents: 33929
diff changeset
1641 x_update_cursor (f, 1);
13434
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
1642 }
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
1643 }
27397
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
1644
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
1645 update_face_from_frame_parameter (f, Qcursor_color, arg);
13434
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
1646 }
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
1647
24147
c83b0bc4e8b9 (Vw32_bdf_filename_alist): New variable.
Geoff Voelker <voelker@cs.washington.edu>
parents: 24130
diff changeset
1648 /* Set the border-color of frame F to pixel value PIX.
c83b0bc4e8b9 (Vw32_bdf_filename_alist): New variable.
Geoff Voelker <voelker@cs.washington.edu>
parents: 24130
diff changeset
1649 Note that this does not fully take effect if done before
47942
080b4586492b Fix typo in comment.
Juanma Barranquero <lekktu@gmail.com>
parents: 47731
diff changeset
1650 F has a window. */
50362
6d942c1d5f2d * w32fns.c (Qauto_raise, Qauto_lower, ...): Remove vars for frame
Kim F. Storm <storm@cua.dk>
parents: 50229
diff changeset
1651
24147
c83b0bc4e8b9 (Vw32_bdf_filename_alist): New variable.
Geoff Voelker <voelker@cs.washington.edu>
parents: 24130
diff changeset
1652 void
c83b0bc4e8b9 (Vw32_bdf_filename_alist): New variable.
Geoff Voelker <voelker@cs.washington.edu>
parents: 24130
diff changeset
1653 x_set_border_pixel (f, pix)
c83b0bc4e8b9 (Vw32_bdf_filename_alist): New variable.
Geoff Voelker <voelker@cs.washington.edu>
parents: 24130
diff changeset
1654 struct frame *f;
c83b0bc4e8b9 (Vw32_bdf_filename_alist): New variable.
Geoff Voelker <voelker@cs.washington.edu>
parents: 24130
diff changeset
1655 int pix;
c83b0bc4e8b9 (Vw32_bdf_filename_alist): New variable.
Geoff Voelker <voelker@cs.washington.edu>
parents: 24130
diff changeset
1656 {
50362
6d942c1d5f2d * w32fns.c (Qauto_raise, Qauto_lower, ...): Remove vars for frame
Kim F. Storm <storm@cua.dk>
parents: 50229
diff changeset
1657
24147
c83b0bc4e8b9 (Vw32_bdf_filename_alist): New variable.
Geoff Voelker <voelker@cs.washington.edu>
parents: 24130
diff changeset
1658 f->output_data.w32->border_pixel = pix;
c83b0bc4e8b9 (Vw32_bdf_filename_alist): New variable.
Geoff Voelker <voelker@cs.washington.edu>
parents: 24130
diff changeset
1659
51211
28ea05de2dc5 Make (many) trivial substitutions for renamed and
Kim F. Storm <storm@cua.dk>
parents: 50377
diff changeset
1660 if (FRAME_W32_WINDOW (f) != 0 && f->border_width > 0)
24147
c83b0bc4e8b9 (Vw32_bdf_filename_alist): New variable.
Geoff Voelker <voelker@cs.washington.edu>
parents: 24130
diff changeset
1661 {
c83b0bc4e8b9 (Vw32_bdf_filename_alist): New variable.
Geoff Voelker <voelker@cs.washington.edu>
parents: 24130
diff changeset
1662 if (FRAME_VISIBLE_P (f))
c83b0bc4e8b9 (Vw32_bdf_filename_alist): New variable.
Geoff Voelker <voelker@cs.washington.edu>
parents: 24130
diff changeset
1663 redraw_frame (f);
c83b0bc4e8b9 (Vw32_bdf_filename_alist): New variable.
Geoff Voelker <voelker@cs.washington.edu>
parents: 24130
diff changeset
1664 }
c83b0bc4e8b9 (Vw32_bdf_filename_alist): New variable.
Geoff Voelker <voelker@cs.washington.edu>
parents: 24130
diff changeset
1665 }
c83b0bc4e8b9 (Vw32_bdf_filename_alist): New variable.
Geoff Voelker <voelker@cs.washington.edu>
parents: 24130
diff changeset
1666
13434
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
1667 /* Set the border-color of frame F to value described by ARG.
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
1668 ARG can be a string naming a color.
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
1669 The border-color is used for the border that is drawn by the server.
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
1670 Note that this does not fully take effect if done before
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
1671 F has a window; it must be redone when the window is created. */
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
1672
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
1673 void
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
1674 x_set_border_color (f, arg, oldval)
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
1675 struct frame *f;
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
1676 Lisp_Object arg, oldval;
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
1677 {
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
1678 int pix;
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
1679
40656
cdfd4d09b79a Update usage of CHECK_ macros (remove unused second argument).
Pavel Janík <Pavel@Janik.cz>
parents: 40528
diff changeset
1680 CHECK_STRING (arg);
13434
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
1681 pix = x_decode_color (f, arg, BLACK_PIX_DEFAULT (f));
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
1682 x_set_border_pixel (f, pix);
27397
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
1683 update_face_from_frame_parameter (f, Qborder_color, arg);
13434
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
1684 }
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
1685
29317
2d3d5bf49d4e Format and doc changes to bring closer to xfns.c.
Jason Rumney <jasonr@gnu.org>
parents: 29021
diff changeset
1686
13434
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
1687 void
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
1688 x_set_cursor_type (f, arg, oldval)
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
1689 FRAME_PTR f;
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
1690 Lisp_Object arg, oldval;
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
1691 {
47140
9ef4bf7492cb (Vblink_cursor_alist): Removed.
Kim F. Storm <storm@cua.dk>
parents: 47097
diff changeset
1692 set_frame_cursor_types (f, arg);
13434
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
1693
49392
4e6b3d53732a (x_set_cursor_type): Set cursor_type_changed,
Jason Rumney <jasonr@gnu.org>
parents: 49369
diff changeset
1694 /* Make sure the cursor gets redrawn. */
49494
07f0ea120d7d (init_external_image_libraries): Try alternate names for the jpeg dll.
Juanma Barranquero <lekktu@gmail.com>
parents: 49455
diff changeset
1695 cursor_type_changed = 1;
13434
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
1696 }
29317
2d3d5bf49d4e Format and doc changes to bring closer to xfns.c.
Jason Rumney <jasonr@gnu.org>
parents: 29021
diff changeset
1697
13434
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
1698 void
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
1699 x_set_icon_type (f, arg, oldval)
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
1700 struct frame *f;
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
1701 Lisp_Object arg, oldval;
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
1702 {
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
1703 int result;
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
1704
25235
98c67187cd6b (x_set_icon_type): Support setting frame icons.
Geoff Voelker <voelker@cs.washington.edu>
parents: 25084
diff changeset
1705 if (NILP (arg) && NILP (oldval))
98c67187cd6b (x_set_icon_type): Support setting frame icons.
Geoff Voelker <voelker@cs.washington.edu>
parents: 25084
diff changeset
1706 return;
98c67187cd6b (x_set_icon_type): Support setting frame icons.
Geoff Voelker <voelker@cs.washington.edu>
parents: 25084
diff changeset
1707
47942
080b4586492b Fix typo in comment.
Juanma Barranquero <lekktu@gmail.com>
parents: 47731
diff changeset
1708 if (STRINGP (arg) && STRINGP (oldval)
25235
98c67187cd6b (x_set_icon_type): Support setting frame icons.
Geoff Voelker <voelker@cs.washington.edu>
parents: 25084
diff changeset
1709 && EQ (Fstring_equal (oldval, arg), Qt))
98c67187cd6b (x_set_icon_type): Support setting frame icons.
Geoff Voelker <voelker@cs.washington.edu>
parents: 25084
diff changeset
1710 return;
98c67187cd6b (x_set_icon_type): Support setting frame icons.
Geoff Voelker <voelker@cs.washington.edu>
parents: 25084
diff changeset
1711
98c67187cd6b (x_set_icon_type): Support setting frame icons.
Geoff Voelker <voelker@cs.washington.edu>
parents: 25084
diff changeset
1712 if (SYMBOLP (arg) && SYMBOLP (oldval) && EQ (arg, oldval))
13434
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
1713 return;
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
1714
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
1715 BLOCK_INPUT;
25235
98c67187cd6b (x_set_icon_type): Support setting frame icons.
Geoff Voelker <voelker@cs.washington.edu>
parents: 25084
diff changeset
1716
98c67187cd6b (x_set_icon_type): Support setting frame icons.
Geoff Voelker <voelker@cs.washington.edu>
parents: 25084
diff changeset
1717 result = x_bitmap_icon (f, arg);
13434
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
1718 if (result)
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
1719 {
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
1720 UNBLOCK_INPUT;
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
1721 error ("No icon window available");
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
1722 }
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
1723
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
1724 UNBLOCK_INPUT;
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
1725 }
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
1726
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
1727 void
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
1728 x_set_icon_name (f, arg, oldval)
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
1729 struct frame *f;
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
1730 Lisp_Object arg, oldval;
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
1731 {
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
1732 if (STRINGP (arg))
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
1733 {
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
1734 if (STRINGP (oldval) && EQ (Fstring_equal (oldval, arg), Qt))
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
1735 return;
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
1736 }
71171
9fcdaa132bf3 (x_set_icon_name): Don't use arg if it's not a string and not nil.
Eli Zaretskii <eliz@gnu.org>
parents: 70233
diff changeset
1737 else if (!NILP (arg) || NILP (oldval))
13434
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
1738 return;
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
1739
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
1740 f->icon_name = arg;
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
1741
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
1742 #if 0
16588
481b7874a1e9 Change identifiers of the form win32* to w32*.
Geoff Voelker <voelker@cs.washington.edu>
parents: 16259
diff changeset
1743 if (f->output_data.w32->icon_bitmap != 0)
13434
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
1744 return;
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
1745
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
1746 BLOCK_INPUT;
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
1747
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
1748 result = x_text_icon (f,
46370
40db0673e6f0 Most uses of XSTRING combined with STRING_BYTES or indirection changed to
Ken Raeburn <raeburn@raeburn.org>
parents: 46293
diff changeset
1749 (char *) SDATA ((!NILP (f->icon_name)
40db0673e6f0 Most uses of XSTRING combined with STRING_BYTES or indirection changed to
Ken Raeburn <raeburn@raeburn.org>
parents: 46293
diff changeset
1750 ? f->icon_name
40db0673e6f0 Most uses of XSTRING combined with STRING_BYTES or indirection changed to
Ken Raeburn <raeburn@raeburn.org>
parents: 46293
diff changeset
1751 : !NILP (f->title)
40db0673e6f0 Most uses of XSTRING combined with STRING_BYTES or indirection changed to
Ken Raeburn <raeburn@raeburn.org>
parents: 46293
diff changeset
1752 ? f->title
40db0673e6f0 Most uses of XSTRING combined with STRING_BYTES or indirection changed to
Ken Raeburn <raeburn@raeburn.org>
parents: 46293
diff changeset
1753 : f->name)));
13434
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
1754
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
1755 if (result)
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
1756 {
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
1757 UNBLOCK_INPUT;
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
1758 error ("No icon window available");
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
1759 }
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
1760
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
1761 /* If the window was unmapped (and its icon was mapped),
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
1762 the new icon is not mapped, so map the window in its stead. */
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
1763 if (FRAME_VISIBLE_P (f))
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
1764 {
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
1765 #ifdef USE_X_TOOLKIT
16588
481b7874a1e9 Change identifiers of the form win32* to w32*.
Geoff Voelker <voelker@cs.washington.edu>
parents: 16259
diff changeset
1766 XtPopup (f->output_data.w32->widget, XtGrabNone);
13434
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
1767 #endif
16588
481b7874a1e9 Change identifiers of the form win32* to w32*.
Geoff Voelker <voelker@cs.washington.edu>
parents: 16259
diff changeset
1768 XMapWindow (FRAME_W32_DISPLAY (f), FRAME_W32_WINDOW (f));
13434
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
1769 }
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
1770
16588
481b7874a1e9 Change identifiers of the form win32* to w32*.
Geoff Voelker <voelker@cs.washington.edu>
parents: 16259
diff changeset
1771 XFlush (FRAME_W32_DISPLAY (f));
13434
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
1772 UNBLOCK_INPUT;
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
1773 #endif
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
1774 }
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
1775
33870
8816b5542315 (x_change_window_heights): New function.
Jason Rumney <jasonr@gnu.org>
parents: 33865
diff changeset
1776
13434
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
1777 void
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
1778 x_set_menu_bar_lines (f, value, oldval)
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
1779 struct frame *f;
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
1780 Lisp_Object value, oldval;
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
1781 {
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
1782 int nlines;
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
1783 int olines = FRAME_MENU_BAR_LINES (f);
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
1784
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
1785 /* Right now, menu bars don't work properly in minibuf-only frames;
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
1786 most of the commands try to apply themselves to the minibuffer
27397
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
1787 frame itself, and get an error because you can't switch buffers
13434
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
1788 in or split the minibuffer window. */
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
1789 if (FRAME_MINIBUF_ONLY_P (f))
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
1790 return;
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
1791
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
1792 if (INTEGERP (value))
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
1793 nlines = XINT (value);
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
1794 else
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
1795 nlines = 0;
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
1796
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
1797 FRAME_MENU_BAR_LINES (f) = 0;
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
1798 if (nlines)
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
1799 FRAME_EXTERNAL_MENU_BAR (f) = 1;
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
1800 else
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
1801 {
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
1802 if (FRAME_EXTERNAL_MENU_BAR (f) == 1)
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
1803 free_frame_menubar (f);
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
1804 FRAME_EXTERNAL_MENU_BAR (f) = 0;
19707
0181cc080316 Include limits.h and errno.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18508
diff changeset
1805
0181cc080316 Include limits.h and errno.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18508
diff changeset
1806 /* Adjust the frame size so that the client (text) dimensions
0181cc080316 Include limits.h and errno.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18508
diff changeset
1807 remain the same. This depends on FRAME_EXTERNAL_MENU_BAR being
0181cc080316 Include limits.h and errno.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18508
diff changeset
1808 set correctly. */
51211
28ea05de2dc5 Make (many) trivial substitutions for renamed and
Kim F. Storm <storm@cua.dk>
parents: 50377
diff changeset
1809 x_set_window_size (f, 0, FRAME_COLS (f), FRAME_LINES (f));
27397
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
1810 do_pending_window_change (0);
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
1811 }
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
1812 adjust_glyphs (f);
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
1813 }
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
1814
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
1815
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
1816 /* Set the number of lines used for the tool bar of frame F to VALUE.
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
1817 VALUE not an integer, or < 0 means set the lines to zero. OLDVAL
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
1818 is the old number of tool bar lines. This function changes the
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
1819 height of all windows on frame F to match the new tool bar height.
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
1820 The frame's height doesn't change. */
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
1821
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
1822 void
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
1823 x_set_tool_bar_lines (f, value, oldval)
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
1824 struct frame *f;
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
1825 Lisp_Object value, oldval;
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
1826 {
33865
f32333d8172b (x_set_tool_bar_lines): Clear internal border when making tool bar
Jason Rumney <jasonr@gnu.org>
parents: 33443
diff changeset
1827 int delta, nlines, root_height;
f32333d8172b (x_set_tool_bar_lines): Clear internal border when making tool bar
Jason Rumney <jasonr@gnu.org>
parents: 33443
diff changeset
1828 Lisp_Object root_window;
27397
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
1829
36000
f4a0b086cc5d (Fx_show_tip): Fix calls to make_number.
Jason Rumney <jasonr@gnu.org>
parents: 35674
diff changeset
1830 /* Treat tool bars like menu bars. */
f4a0b086cc5d (Fx_show_tip): Fix calls to make_number.
Jason Rumney <jasonr@gnu.org>
parents: 35674
diff changeset
1831 if (FRAME_MINIBUF_ONLY_P (f))
f4a0b086cc5d (Fx_show_tip): Fix calls to make_number.
Jason Rumney <jasonr@gnu.org>
parents: 35674
diff changeset
1832 return;
f4a0b086cc5d (Fx_show_tip): Fix calls to make_number.
Jason Rumney <jasonr@gnu.org>
parents: 35674
diff changeset
1833
27397
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
1834 /* Use VALUE only if an integer >= 0. */
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
1835 if (INTEGERP (value) && XINT (value) >= 0)
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
1836 nlines = XFASTINT (value);
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
1837 else
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
1838 nlines = 0;
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
1839
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
1840 /* Make sure we redisplay all windows in this frame. */
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
1841 ++windows_or_buffers_changed;
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
1842
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
1843 delta = nlines - FRAME_TOOL_BAR_LINES (f);
33865
f32333d8172b (x_set_tool_bar_lines): Clear internal border when making tool bar
Jason Rumney <jasonr@gnu.org>
parents: 33443
diff changeset
1844
f32333d8172b (x_set_tool_bar_lines): Clear internal border when making tool bar
Jason Rumney <jasonr@gnu.org>
parents: 33443
diff changeset
1845 /* Don't resize the tool-bar to more than we have room for. */
f32333d8172b (x_set_tool_bar_lines): Clear internal border when making tool bar
Jason Rumney <jasonr@gnu.org>
parents: 33443
diff changeset
1846 root_window = FRAME_ROOT_WINDOW (f);
51211
28ea05de2dc5 Make (many) trivial substitutions for renamed and
Kim F. Storm <storm@cua.dk>
parents: 50377
diff changeset
1847 root_height = WINDOW_TOTAL_LINES (XWINDOW (root_window));
33865
f32333d8172b (x_set_tool_bar_lines): Clear internal border when making tool bar
Jason Rumney <jasonr@gnu.org>
parents: 33443
diff changeset
1848 if (root_height - delta < 1)
f32333d8172b (x_set_tool_bar_lines): Clear internal border when making tool bar
Jason Rumney <jasonr@gnu.org>
parents: 33443
diff changeset
1849 {
f32333d8172b (x_set_tool_bar_lines): Clear internal border when making tool bar
Jason Rumney <jasonr@gnu.org>
parents: 33443
diff changeset
1850 delta = root_height - 1;
f32333d8172b (x_set_tool_bar_lines): Clear internal border when making tool bar
Jason Rumney <jasonr@gnu.org>
parents: 33443
diff changeset
1851 nlines = FRAME_TOOL_BAR_LINES (f) + delta;
f32333d8172b (x_set_tool_bar_lines): Clear internal border when making tool bar
Jason Rumney <jasonr@gnu.org>
parents: 33443
diff changeset
1852 }
f32333d8172b (x_set_tool_bar_lines): Clear internal border when making tool bar
Jason Rumney <jasonr@gnu.org>
parents: 33443
diff changeset
1853
27397
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
1854 FRAME_TOOL_BAR_LINES (f) = nlines;
50362
6d942c1d5f2d * w32fns.c (Qauto_raise, Qauto_lower, ...): Remove vars for frame
Kim F. Storm <storm@cua.dk>
parents: 50229
diff changeset
1855 change_window_heights (root_window, delta);
27397
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
1856 adjust_glyphs (f);
33865
f32333d8172b (x_set_tool_bar_lines): Clear internal border when making tool bar
Jason Rumney <jasonr@gnu.org>
parents: 33443
diff changeset
1857
f32333d8172b (x_set_tool_bar_lines): Clear internal border when making tool bar
Jason Rumney <jasonr@gnu.org>
parents: 33443
diff changeset
1858 /* We also have to make sure that the internal border at the top of
f32333d8172b (x_set_tool_bar_lines): Clear internal border when making tool bar
Jason Rumney <jasonr@gnu.org>
parents: 33443
diff changeset
1859 the frame, below the menu bar or tool bar, is redrawn when the
f32333d8172b (x_set_tool_bar_lines): Clear internal border when making tool bar
Jason Rumney <jasonr@gnu.org>
parents: 33443
diff changeset
1860 tool bar disappears. This is so because the internal border is
f32333d8172b (x_set_tool_bar_lines): Clear internal border when making tool bar
Jason Rumney <jasonr@gnu.org>
parents: 33443
diff changeset
1861 below the tool bar if one is displayed, but is below the menu bar
f32333d8172b (x_set_tool_bar_lines): Clear internal border when making tool bar
Jason Rumney <jasonr@gnu.org>
parents: 33443
diff changeset
1862 if there isn't a tool bar. The tool bar draws into the area
f32333d8172b (x_set_tool_bar_lines): Clear internal border when making tool bar
Jason Rumney <jasonr@gnu.org>
parents: 33443
diff changeset
1863 below the menu bar. */
f32333d8172b (x_set_tool_bar_lines): Clear internal border when making tool bar
Jason Rumney <jasonr@gnu.org>
parents: 33443
diff changeset
1864 if (FRAME_W32_WINDOW (f) && FRAME_TOOL_BAR_LINES (f) == 0)
f32333d8172b (x_set_tool_bar_lines): Clear internal border when making tool bar
Jason Rumney <jasonr@gnu.org>
parents: 33443
diff changeset
1865 {
83571
ca1c27e2707e (x_set_tool_bar_lines): Don't use updating_frame.
Jason Rumney <jasonr@gnu.org>
parents: 76700
diff changeset
1866 clear_frame (f);
33865
f32333d8172b (x_set_tool_bar_lines): Clear internal border when making tool bar
Jason Rumney <jasonr@gnu.org>
parents: 33443
diff changeset
1867 clear_current_matrices (f);
f32333d8172b (x_set_tool_bar_lines): Clear internal border when making tool bar
Jason Rumney <jasonr@gnu.org>
parents: 33443
diff changeset
1868 }
f32333d8172b (x_set_tool_bar_lines): Clear internal border when making tool bar
Jason Rumney <jasonr@gnu.org>
parents: 33443
diff changeset
1869
f32333d8172b (x_set_tool_bar_lines): Clear internal border when making tool bar
Jason Rumney <jasonr@gnu.org>
parents: 33443
diff changeset
1870 /* If the tool bar gets smaller, the internal border below it
f32333d8172b (x_set_tool_bar_lines): Clear internal border when making tool bar
Jason Rumney <jasonr@gnu.org>
parents: 33443
diff changeset
1871 has to be cleared. It was formerly part of the display
f32333d8172b (x_set_tool_bar_lines): Clear internal border when making tool bar
Jason Rumney <jasonr@gnu.org>
parents: 33443
diff changeset
1872 of the larger tool bar, and updating windows won't clear it. */
f32333d8172b (x_set_tool_bar_lines): Clear internal border when making tool bar
Jason Rumney <jasonr@gnu.org>
parents: 33443
diff changeset
1873 if (delta < 0)
f32333d8172b (x_set_tool_bar_lines): Clear internal border when making tool bar
Jason Rumney <jasonr@gnu.org>
parents: 33443
diff changeset
1874 {
f32333d8172b (x_set_tool_bar_lines): Clear internal border when making tool bar
Jason Rumney <jasonr@gnu.org>
parents: 33443
diff changeset
1875 int height = FRAME_INTERNAL_BORDER_WIDTH (f);
51211
28ea05de2dc5 Make (many) trivial substitutions for renamed and
Kim F. Storm <storm@cua.dk>
parents: 50377
diff changeset
1876 int width = FRAME_PIXEL_WIDTH (f);
28ea05de2dc5 Make (many) trivial substitutions for renamed and
Kim F. Storm <storm@cua.dk>
parents: 50377
diff changeset
1877 int y = nlines * FRAME_LINE_HEIGHT (f);
33865
f32333d8172b (x_set_tool_bar_lines): Clear internal border when making tool bar
Jason Rumney <jasonr@gnu.org>
parents: 33443
diff changeset
1878
f32333d8172b (x_set_tool_bar_lines): Clear internal border when making tool bar
Jason Rumney <jasonr@gnu.org>
parents: 33443
diff changeset
1879 BLOCK_INPUT;
f32333d8172b (x_set_tool_bar_lines): Clear internal border when making tool bar
Jason Rumney <jasonr@gnu.org>
parents: 33443
diff changeset
1880 {
f32333d8172b (x_set_tool_bar_lines): Clear internal border when making tool bar
Jason Rumney <jasonr@gnu.org>
parents: 33443
diff changeset
1881 HDC hdc = get_frame_dc (f);
f32333d8172b (x_set_tool_bar_lines): Clear internal border when making tool bar
Jason Rumney <jasonr@gnu.org>
parents: 33443
diff changeset
1882 w32_clear_area (f, hdc, 0, y, width, height);
f32333d8172b (x_set_tool_bar_lines): Clear internal border when making tool bar
Jason Rumney <jasonr@gnu.org>
parents: 33443
diff changeset
1883 release_frame_dc (f, hdc);
f32333d8172b (x_set_tool_bar_lines): Clear internal border when making tool bar
Jason Rumney <jasonr@gnu.org>
parents: 33443
diff changeset
1884 }
f32333d8172b (x_set_tool_bar_lines): Clear internal border when making tool bar
Jason Rumney <jasonr@gnu.org>
parents: 33443
diff changeset
1885 UNBLOCK_INPUT;
40120
03eb905a4d8e (Fx_file_dialog): Pass a filter to GetOpenFileName.
Jason Rumney <jasonr@gnu.org>
parents: 40009
diff changeset
1886
03eb905a4d8e (Fx_file_dialog): Pass a filter to GetOpenFileName.
Jason Rumney <jasonr@gnu.org>
parents: 40009
diff changeset
1887 if (WINDOWP (f->tool_bar_window))
03eb905a4d8e (Fx_file_dialog): Pass a filter to GetOpenFileName.
Jason Rumney <jasonr@gnu.org>
parents: 40009
diff changeset
1888 clear_glyph_matrix (XWINDOW (f->tool_bar_window)->current_matrix);
33865
f32333d8172b (x_set_tool_bar_lines): Clear internal border when making tool bar
Jason Rumney <jasonr@gnu.org>
parents: 33443
diff changeset
1889 }
27397
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
1890 }
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
1891
13434
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
1892
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
1893 /* Change the name of frame F to NAME. If NAME is nil, set F's name to
16588
481b7874a1e9 Change identifiers of the form win32* to w32*.
Geoff Voelker <voelker@cs.washington.edu>
parents: 16259
diff changeset
1894 w32_id_name.
13434
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
1895
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
1896 If EXPLICIT is non-zero, that indicates that lisp code is setting the
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
1897 name; if NAME is a string, set F's name to NAME and set
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
1898 F->explicit_name; if NAME is Qnil, then clear F->explicit_name.
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
1899
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
1900 If EXPLICIT is zero, that indicates that Emacs redisplay code is
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
1901 suggesting a new name, which lisp code should override; if
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
1902 F->explicit_name is set, ignore the new name; otherwise, set it. */
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
1903
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
1904 void
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
1905 x_set_name (f, name, explicit)
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
1906 struct frame *f;
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
1907 Lisp_Object name;
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
1908 int explicit;
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
1909 {
47942
080b4586492b Fix typo in comment.
Juanma Barranquero <lekktu@gmail.com>
parents: 47731
diff changeset
1910 /* Make sure that requests from lisp code override requests from
13434
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
1911 Emacs redisplay code. */
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
1912 if (explicit)
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
1913 {
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
1914 /* If we're switching from explicit to implicit, we had better
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
1915 update the mode lines and thereby update the title. */
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
1916 if (f->explicit_name && NILP (name))
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
1917 update_mode_lines = 1;
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
1918
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
1919 f->explicit_name = ! NILP (name);
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
1920 }
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
1921 else if (f->explicit_name)
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
1922 return;
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
1923
16588
481b7874a1e9 Change identifiers of the form win32* to w32*.
Geoff Voelker <voelker@cs.washington.edu>
parents: 16259
diff changeset
1924 /* If NAME is nil, set the name to the w32_id_name. */
13434
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
1925 if (NILP (name))
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
1926 {
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
1927 /* Check for no change needed in this very common case
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
1928 before we do any consing. */
16588
481b7874a1e9 Change identifiers of the form win32* to w32*.
Geoff Voelker <voelker@cs.washington.edu>
parents: 16259
diff changeset
1929 if (!strcmp (FRAME_W32_DISPLAY_INFO (f)->w32_id_name,
46370
40db0673e6f0 Most uses of XSTRING combined with STRING_BYTES or indirection changed to
Ken Raeburn <raeburn@raeburn.org>
parents: 46293
diff changeset
1930 SDATA (f->name)))
13434
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
1931 return;
16588
481b7874a1e9 Change identifiers of the form win32* to w32*.
Geoff Voelker <voelker@cs.washington.edu>
parents: 16259
diff changeset
1932 name = build_string (FRAME_W32_DISPLAY_INFO (f)->w32_id_name);
13434
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
1933 }
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
1934 else
40656
cdfd4d09b79a Update usage of CHECK_ macros (remove unused second argument).
Pavel Janík <Pavel@Janik.cz>
parents: 40528
diff changeset
1935 CHECK_STRING (name);
13434
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
1936
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
1937 /* Don't change the name if it's already NAME. */
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
1938 if (! NILP (Fstring_equal (name, f->name)))
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
1939 return;
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
1940
19707
0181cc080316 Include limits.h and errno.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18508
diff changeset
1941 f->name = name;
0181cc080316 Include limits.h and errno.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18508
diff changeset
1942
0181cc080316 Include limits.h and errno.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18508
diff changeset
1943 /* For setting the frame title, the title parameter should override
0181cc080316 Include limits.h and errno.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18508
diff changeset
1944 the name parameter. */
0181cc080316 Include limits.h and errno.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18508
diff changeset
1945 if (! NILP (f->title))
0181cc080316 Include limits.h and errno.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18508
diff changeset
1946 name = f->title;
0181cc080316 Include limits.h and errno.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18508
diff changeset
1947
16588
481b7874a1e9 Change identifiers of the form win32* to w32*.
Geoff Voelker <voelker@cs.washington.edu>
parents: 16259
diff changeset
1948 if (FRAME_W32_WINDOW (f))
13434
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
1949 {
27397
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
1950 if (STRING_MULTIBYTE (name))
29317
2d3d5bf49d4e Format and doc changes to bring closer to xfns.c.
Jason Rumney <jasonr@gnu.org>
parents: 29021
diff changeset
1951 name = ENCODE_SYSTEM (name);
27397
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
1952
13434
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
1953 BLOCK_INPUT;
79387
0ca197abc593 (Fw32_registered_hot_keys): Don't return the nil values corresponding
Juanma Barranquero <lekktu@gmail.com>
parents: 79381
diff changeset
1954 SetWindowText (FRAME_W32_WINDOW (f), SDATA (name));
13434
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
1955 UNBLOCK_INPUT;
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
1956 }
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
1957 }
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
1958
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
1959 /* This function should be called when the user's lisp code has
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
1960 specified a name for the frame; the name will override any set by the
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
1961 redisplay code. */
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
1962 void
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
1963 x_explicitly_set_name (f, arg, oldval)
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
1964 FRAME_PTR f;
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
1965 Lisp_Object arg, oldval;
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
1966 {
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
1967 x_set_name (f, arg, 1);
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
1968 }
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
1969
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
1970 /* This function should be called by Emacs redisplay code to set the
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
1971 name; names set this way will never override names set by the user's
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
1972 lisp code. */
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
1973 void
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
1974 x_implicitly_set_name (f, arg, oldval)
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
1975 FRAME_PTR f;
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
1976 Lisp_Object arg, oldval;
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
1977 {
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
1978 x_set_name (f, arg, 0);
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
1979 }
19707
0181cc080316 Include limits.h and errno.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18508
diff changeset
1980
0181cc080316 Include limits.h and errno.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18508
diff changeset
1981 /* Change the title of frame F to NAME.
79054
dcfd2d0c6c47 *** empty log message ***
Martin Rudalics <rudalics@gmx.at>
parents: 78907
diff changeset
1982 If NAME is nil, use the frame name as the title. */
19707
0181cc080316 Include limits.h and errno.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18508
diff changeset
1983
0181cc080316 Include limits.h and errno.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18508
diff changeset
1984 void
27397
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
1985 x_set_title (f, name, old_name)
19707
0181cc080316 Include limits.h and errno.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18508
diff changeset
1986 struct frame *f;
27397
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
1987 Lisp_Object name, old_name;
19707
0181cc080316 Include limits.h and errno.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18508
diff changeset
1988 {
0181cc080316 Include limits.h and errno.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18508
diff changeset
1989 /* Don't change the title if it's already NAME. */
0181cc080316 Include limits.h and errno.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18508
diff changeset
1990 if (EQ (name, f->title))
0181cc080316 Include limits.h and errno.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18508
diff changeset
1991 return;
0181cc080316 Include limits.h and errno.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18508
diff changeset
1992
0181cc080316 Include limits.h and errno.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18508
diff changeset
1993 update_mode_lines = 1;
0181cc080316 Include limits.h and errno.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18508
diff changeset
1994
0181cc080316 Include limits.h and errno.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18508
diff changeset
1995 f->title = name;
0181cc080316 Include limits.h and errno.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18508
diff changeset
1996
0181cc080316 Include limits.h and errno.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18508
diff changeset
1997 if (NILP (name))
0181cc080316 Include limits.h and errno.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18508
diff changeset
1998 name = f->name;
0181cc080316 Include limits.h and errno.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18508
diff changeset
1999
0181cc080316 Include limits.h and errno.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18508
diff changeset
2000 if (FRAME_W32_WINDOW (f))
0181cc080316 Include limits.h and errno.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18508
diff changeset
2001 {
27397
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
2002 if (STRING_MULTIBYTE (name))
29317
2d3d5bf49d4e Format and doc changes to bring closer to xfns.c.
Jason Rumney <jasonr@gnu.org>
parents: 29021
diff changeset
2003 name = ENCODE_SYSTEM (name);
27397
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
2004
19707
0181cc080316 Include limits.h and errno.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18508
diff changeset
2005 BLOCK_INPUT;
79387
0ca197abc593 (Fw32_registered_hot_keys): Don't return the nil values corresponding
Juanma Barranquero <lekktu@gmail.com>
parents: 79381
diff changeset
2006 SetWindowText (FRAME_W32_WINDOW (f), SDATA (name));
19707
0181cc080316 Include limits.h and errno.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18508
diff changeset
2007 UNBLOCK_INPUT;
0181cc080316 Include limits.h and errno.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18508
diff changeset
2008 }
0181cc080316 Include limits.h and errno.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18508
diff changeset
2009 }
50362
6d942c1d5f2d * w32fns.c (Qauto_raise, Qauto_lower, ...): Remove vars for frame
Kim F. Storm <storm@cua.dk>
parents: 50229
diff changeset
2010
6d942c1d5f2d * w32fns.c (Qauto_raise, Qauto_lower, ...): Remove vars for frame
Kim F. Storm <storm@cua.dk>
parents: 50229
diff changeset
2011
50377
174f757a8504 (x_set_scroll_bar_default_width): Define return value as void.
Juanma Barranquero <lekktu@gmail.com>
parents: 50362
diff changeset
2012 void x_set_scroll_bar_default_width (f)
13434
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
2013 struct frame *f;
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
2014 {
51211
28ea05de2dc5 Make (many) trivial substitutions for renamed and
Kim F. Storm <storm@cua.dk>
parents: 50377
diff changeset
2015 int wid = FRAME_COLUMN_WIDTH (f);
28ea05de2dc5 Make (many) trivial substitutions for renamed and
Kim F. Storm <storm@cua.dk>
parents: 50377
diff changeset
2016
28ea05de2dc5 Make (many) trivial substitutions for renamed and
Kim F. Storm <storm@cua.dk>
parents: 50377
diff changeset
2017 FRAME_CONFIG_SCROLL_BAR_WIDTH (f) = GetSystemMetrics (SM_CXVSCROLL);
28ea05de2dc5 Make (many) trivial substitutions for renamed and
Kim F. Storm <storm@cua.dk>
parents: 50377
diff changeset
2018 FRAME_CONFIG_SCROLL_BAR_COLS (f) = (FRAME_CONFIG_SCROLL_BAR_WIDTH (f) +
28ea05de2dc5 Make (many) trivial substitutions for renamed and
Kim F. Storm <storm@cua.dk>
parents: 50377
diff changeset
2019 wid - 1) / wid;
50362
6d942c1d5f2d * w32fns.c (Qauto_raise, Qauto_lower, ...): Remove vars for frame
Kim F. Storm <storm@cua.dk>
parents: 50229
diff changeset
2020 }
6d942c1d5f2d * w32fns.c (Qauto_raise, Qauto_lower, ...): Remove vars for frame
Kim F. Storm <storm@cua.dk>
parents: 50229
diff changeset
2021
13434
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
2022
47942
080b4586492b Fix typo in comment.
Juanma Barranquero <lekktu@gmail.com>
parents: 47731
diff changeset
2023 /* Subroutines of creating a frame. */
13434
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
2024
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
2025
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
2026 /* Return the value of parameter PARAM.
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
2027
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
2028 First search ALIST, then Vdefault_frame_alist, then the X defaults
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
2029 database, using ATTRIBUTE as the attribute name and CLASS as its class.
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
2030
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
2031 Convert the resource to the type specified by desired_type.
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
2032
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
2033 If no default is specified, return Qunbound. If you call
27397
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
2034 w32_get_arg, make sure you deal with Qunbound in a reasonable way,
13434
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
2035 and don't let it get stored in any Lisp-visible variables! */
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
2036
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
2037 static Lisp_Object
27397
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
2038 w32_get_arg (alist, param, attribute, class, type)
13434
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
2039 Lisp_Object alist, param;
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
2040 char *attribute;
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
2041 char *class;
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
2042 enum resource_types type;
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
2043 {
50362
6d942c1d5f2d * w32fns.c (Qauto_raise, Qauto_lower, ...): Remove vars for frame
Kim F. Storm <storm@cua.dk>
parents: 50229
diff changeset
2044 return x_get_arg (check_x_display_info (Qnil),
6d942c1d5f2d * w32fns.c (Qauto_raise, Qauto_lower, ...): Remove vars for frame
Kim F. Storm <storm@cua.dk>
parents: 50229
diff changeset
2045 alist, param, attribute, class, type);
13434
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
2046 }
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
2047
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
2048
49369
5518e109ec3b 2003-01-21 Jason Rumney <jasonr@gnu.org>
Jason Rumney <jasonr@gnu.org>
parents: 49079
diff changeset
2049 Cursor
5518e109ec3b 2003-01-21 Jason Rumney <jasonr@gnu.org>
Jason Rumney <jasonr@gnu.org>
parents: 49079
diff changeset
2050 w32_load_cursor (LPCTSTR name)
5518e109ec3b 2003-01-21 Jason Rumney <jasonr@gnu.org>
Jason Rumney <jasonr@gnu.org>
parents: 49079
diff changeset
2051 {
5518e109ec3b 2003-01-21 Jason Rumney <jasonr@gnu.org>
Jason Rumney <jasonr@gnu.org>
parents: 49079
diff changeset
2052 /* Try first to load cursor from application resource. */
79387
0ca197abc593 (Fw32_registered_hot_keys): Don't return the nil values corresponding
Juanma Barranquero <lekktu@gmail.com>
parents: 79381
diff changeset
2053 Cursor cursor = LoadImage ((HINSTANCE) GetModuleHandle (NULL),
49369
5518e109ec3b 2003-01-21 Jason Rumney <jasonr@gnu.org>
Jason Rumney <jasonr@gnu.org>
parents: 49079
diff changeset
2054 name, IMAGE_CURSOR, 0, 0,
5518e109ec3b 2003-01-21 Jason Rumney <jasonr@gnu.org>
Jason Rumney <jasonr@gnu.org>
parents: 49079
diff changeset
2055 LR_DEFAULTCOLOR | LR_DEFAULTSIZE | LR_SHARED);
5518e109ec3b 2003-01-21 Jason Rumney <jasonr@gnu.org>
Jason Rumney <jasonr@gnu.org>
parents: 49079
diff changeset
2056 if (!cursor)
5518e109ec3b 2003-01-21 Jason Rumney <jasonr@gnu.org>
Jason Rumney <jasonr@gnu.org>
parents: 49079
diff changeset
2057 {
5518e109ec3b 2003-01-21 Jason Rumney <jasonr@gnu.org>
Jason Rumney <jasonr@gnu.org>
parents: 49079
diff changeset
2058 /* Then try to load a shared predefined cursor. */
5518e109ec3b 2003-01-21 Jason Rumney <jasonr@gnu.org>
Jason Rumney <jasonr@gnu.org>
parents: 49079
diff changeset
2059 cursor = LoadImage (NULL, name, IMAGE_CURSOR, 0, 0,
5518e109ec3b 2003-01-21 Jason Rumney <jasonr@gnu.org>
Jason Rumney <jasonr@gnu.org>
parents: 49079
diff changeset
2060 LR_DEFAULTCOLOR | LR_DEFAULTSIZE | LR_SHARED);
5518e109ec3b 2003-01-21 Jason Rumney <jasonr@gnu.org>
Jason Rumney <jasonr@gnu.org>
parents: 49079
diff changeset
2061 }
5518e109ec3b 2003-01-21 Jason Rumney <jasonr@gnu.org>
Jason Rumney <jasonr@gnu.org>
parents: 49079
diff changeset
2062 return cursor;
5518e109ec3b 2003-01-21 Jason Rumney <jasonr@gnu.org>
Jason Rumney <jasonr@gnu.org>
parents: 49079
diff changeset
2063 }
13434
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
2064
16588
481b7874a1e9 Change identifiers of the form win32* to w32*.
Geoff Voelker <voelker@cs.washington.edu>
parents: 16259
diff changeset
2065 extern LRESULT CALLBACK w32_wnd_proc ();
13434
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
2066
86065
2557aa084b57 (Fw32_registered_hot_keys): Don't return the nil values corresponding
Juanma Barranquero <lekktu@gmail.com>
parents: 86053
diff changeset
2067 static BOOL
16588
481b7874a1e9 Change identifiers of the form win32* to w32*.
Geoff Voelker <voelker@cs.washington.edu>
parents: 16259
diff changeset
2068 w32_init_class (hinst)
13434
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
2069 HINSTANCE hinst;
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
2070 {
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
2071 WNDCLASS wc;
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
2072
15147
38c0ce06203f (quit_char, Vwin32_enable_italics, Vwin32_enable_palette):
Geoff Voelker <voelker@cs.washington.edu>
parents: 15034
diff changeset
2073 wc.style = CS_HREDRAW | CS_VREDRAW;
16588
481b7874a1e9 Change identifiers of the form win32* to w32*.
Geoff Voelker <voelker@cs.washington.edu>
parents: 16259
diff changeset
2074 wc.lpfnWndProc = (WNDPROC) w32_wnd_proc;
13434
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
2075 wc.cbClsExtra = 0;
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
2076 wc.cbWndExtra = WND_EXTRA_BYTES;
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
2077 wc.hInstance = hinst;
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
2078 wc.hIcon = LoadIcon (hinst, EMACS_CLASS);
49369
5518e109ec3b 2003-01-21 Jason Rumney <jasonr@gnu.org>
Jason Rumney <jasonr@gnu.org>
parents: 49079
diff changeset
2079 wc.hCursor = w32_load_cursor (IDC_ARROW);
23506
246a14f0622f (Vx_pixel_size_width): New global variable.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23407
diff changeset
2080 wc.hbrBackground = NULL; /* GetStockObject (WHITE_BRUSH); */
13434
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
2081 wc.lpszMenuName = NULL;
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
2082 wc.lpszClassName = EMACS_CLASS;
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
2083
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
2084 return (RegisterClass (&wc));
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
2085 }
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
2086
86065
2557aa084b57 (Fw32_registered_hot_keys): Don't return the nil values corresponding
Juanma Barranquero <lekktu@gmail.com>
parents: 86053
diff changeset
2087 static HWND
16588
481b7874a1e9 Change identifiers of the form win32* to w32*.
Geoff Voelker <voelker@cs.washington.edu>
parents: 16259
diff changeset
2088 w32_createscrollbar (f, bar)
13434
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
2089 struct frame *f;
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
2090 struct scroll_bar * bar;
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
2091 {
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
2092 return (CreateWindow ("SCROLLBAR", "", SBS_VERT | WS_CHILD | WS_VISIBLE,
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
2093 /* Position and size of scroll bar. */
79387
0ca197abc593 (Fw32_registered_hot_keys): Don't return the nil values corresponding
Juanma Barranquero <lekktu@gmail.com>
parents: 79381
diff changeset
2094 XINT (bar->left) + VERTICAL_SCROLL_BAR_WIDTH_TRIM,
0ca197abc593 (Fw32_registered_hot_keys): Don't return the nil values corresponding
Juanma Barranquero <lekktu@gmail.com>
parents: 79381
diff changeset
2095 XINT (bar->top),
0ca197abc593 (Fw32_registered_hot_keys): Don't return the nil values corresponding
Juanma Barranquero <lekktu@gmail.com>
parents: 79381
diff changeset
2096 XINT (bar->width) - VERTICAL_SCROLL_BAR_WIDTH_TRIM * 2,
0ca197abc593 (Fw32_registered_hot_keys): Don't return the nil values corresponding
Juanma Barranquero <lekktu@gmail.com>
parents: 79381
diff changeset
2097 XINT (bar->height),
16588
481b7874a1e9 Change identifiers of the form win32* to w32*.
Geoff Voelker <voelker@cs.washington.edu>
parents: 16259
diff changeset
2098 FRAME_W32_WINDOW (f),
13434
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
2099 NULL,
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
2100 hinst,
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
2101 NULL));
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
2102 }
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
2103
86065
2557aa084b57 (Fw32_registered_hot_keys): Don't return the nil values corresponding
Juanma Barranquero <lekktu@gmail.com>
parents: 86053
diff changeset
2104 static void
16588
481b7874a1e9 Change identifiers of the form win32* to w32*.
Geoff Voelker <voelker@cs.washington.edu>
parents: 16259
diff changeset
2105 w32_createwindow (f)
13434
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
2106 struct frame *f;
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
2107 {
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
2108 HWND hwnd;
19707
0181cc080316 Include limits.h and errno.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18508
diff changeset
2109 RECT rect;
72269
b37e887392d9 (w32_createwindow): Handle -geometry command line option and the geometry
Eli Zaretskii <eliz@gnu.org>
parents: 72265
diff changeset
2110 Lisp_Object top = Qunbound;
b37e887392d9 (w32_createwindow): Handle -geometry command line option and the geometry
Eli Zaretskii <eliz@gnu.org>
parents: 72265
diff changeset
2111 Lisp_Object left = Qunbound;
19707
0181cc080316 Include limits.h and errno.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18508
diff changeset
2112
0181cc080316 Include limits.h and errno.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18508
diff changeset
2113 rect.left = rect.top = 0;
51211
28ea05de2dc5 Make (many) trivial substitutions for renamed and
Kim F. Storm <storm@cua.dk>
parents: 50377
diff changeset
2114 rect.right = FRAME_PIXEL_WIDTH (f);
28ea05de2dc5 Make (many) trivial substitutions for renamed and
Kim F. Storm <storm@cua.dk>
parents: 50377
diff changeset
2115 rect.bottom = FRAME_PIXEL_HEIGHT (f);
47942
080b4586492b Fix typo in comment.
Juanma Barranquero <lekktu@gmail.com>
parents: 47731
diff changeset
2116
19707
0181cc080316 Include limits.h and errno.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18508
diff changeset
2117 AdjustWindowRect (&rect, f->output_data.w32->dwStyle,
0181cc080316 Include limits.h and errno.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18508
diff changeset
2118 FRAME_EXTERNAL_MENU_BAR (f));
47942
080b4586492b Fix typo in comment.
Juanma Barranquero <lekktu@gmail.com>
parents: 47731
diff changeset
2119
13434
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
2120 /* Do first time app init */
47942
080b4586492b Fix typo in comment.
Juanma Barranquero <lekktu@gmail.com>
parents: 47731
diff changeset
2121
13434
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
2122 if (!hprevinst)
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
2123 {
16588
481b7874a1e9 Change identifiers of the form win32* to w32*.
Geoff Voelker <voelker@cs.washington.edu>
parents: 16259
diff changeset
2124 w32_init_class (hinst);
72269
b37e887392d9 (w32_createwindow): Handle -geometry command line option and the geometry
Eli Zaretskii <eliz@gnu.org>
parents: 72265
diff changeset
2125 }
b37e887392d9 (w32_createwindow): Handle -geometry command line option and the geometry
Eli Zaretskii <eliz@gnu.org>
parents: 72265
diff changeset
2126
73285
d1194b4c29b3 2006-10-07 Ralf Angeli <angeli@caeruleus.net>
Jason Rumney <jasonr@gnu.org>
parents: 73087
diff changeset
2127 if (f->size_hint_flags & USPosition || f->size_hint_flags & PPosition)
d1194b4c29b3 2006-10-07 Ralf Angeli <angeli@caeruleus.net>
Jason Rumney <jasonr@gnu.org>
parents: 73087
diff changeset
2128 {
d1194b4c29b3 2006-10-07 Ralf Angeli <angeli@caeruleus.net>
Jason Rumney <jasonr@gnu.org>
parents: 73087
diff changeset
2129 XSETINT (left, f->left_pos);
d1194b4c29b3 2006-10-07 Ralf Angeli <angeli@caeruleus.net>
Jason Rumney <jasonr@gnu.org>
parents: 73087
diff changeset
2130 XSETINT (top, f->top_pos);
d1194b4c29b3 2006-10-07 Ralf Angeli <angeli@caeruleus.net>
Jason Rumney <jasonr@gnu.org>
parents: 73087
diff changeset
2131 }
d1194b4c29b3 2006-10-07 Ralf Angeli <angeli@caeruleus.net>
Jason Rumney <jasonr@gnu.org>
parents: 73087
diff changeset
2132 else if (EQ (left, Qunbound) && EQ (top, Qunbound))
72269
b37e887392d9 (w32_createwindow): Handle -geometry command line option and the geometry
Eli Zaretskii <eliz@gnu.org>
parents: 72265
diff changeset
2133 {
b37e887392d9 (w32_createwindow): Handle -geometry command line option and the geometry
Eli Zaretskii <eliz@gnu.org>
parents: 72265
diff changeset
2134 /* When called with RES_TYPE_NUMBER, w32_get_arg will return zero
b37e887392d9 (w32_createwindow): Handle -geometry command line option and the geometry
Eli Zaretskii <eliz@gnu.org>
parents: 72265
diff changeset
2135 for anything that is not a number and is not Qunbound. */
b37e887392d9 (w32_createwindow): Handle -geometry command line option and the geometry
Eli Zaretskii <eliz@gnu.org>
parents: 72265
diff changeset
2136 left = w32_get_arg (Qnil, Qleft, "left", "Left", RES_TYPE_NUMBER);
b37e887392d9 (w32_createwindow): Handle -geometry command line option and the geometry
Eli Zaretskii <eliz@gnu.org>
parents: 72265
diff changeset
2137 top = w32_get_arg (Qnil, Qtop, "top", "Top", RES_TYPE_NUMBER);
b37e887392d9 (w32_createwindow): Handle -geometry command line option and the geometry
Eli Zaretskii <eliz@gnu.org>
parents: 72265
diff changeset
2138 }
72071
0bfda07cccbc (w32_createwindow): If `left' and/or `top' frame parameters are bound to some
Eli Zaretskii <eliz@gnu.org>
parents: 71545
diff changeset
2139
19707
0181cc080316 Include limits.h and errno.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18508
diff changeset
2140 FRAME_W32_WINDOW (f) = hwnd
0181cc080316 Include limits.h and errno.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18508
diff changeset
2141 = CreateWindow (EMACS_CLASS,
0181cc080316 Include limits.h and errno.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18508
diff changeset
2142 f->namebuf,
39137
2d2b989f4a4b (w32_createwindow): Undo last change.
Andrew Innes <andrewi@gnu.org>
parents: 39128
diff changeset
2143 f->output_data.w32->dwStyle | WS_CLIPCHILDREN,
72071
0bfda07cccbc (w32_createwindow): If `left' and/or `top' frame parameters are bound to some
Eli Zaretskii <eliz@gnu.org>
parents: 71545
diff changeset
2144 EQ (left, Qunbound) ? CW_USEDEFAULT : XINT (left),
0bfda07cccbc (w32_createwindow): If `left' and/or `top' frame parameters are bound to some
Eli Zaretskii <eliz@gnu.org>
parents: 71545
diff changeset
2145 EQ (top, Qunbound) ? CW_USEDEFAULT : XINT (top),
19707
0181cc080316 Include limits.h and errno.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18508
diff changeset
2146 rect.right - rect.left,
0181cc080316 Include limits.h and errno.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18508
diff changeset
2147 rect.bottom - rect.top,
0181cc080316 Include limits.h and errno.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18508
diff changeset
2148 NULL,
0181cc080316 Include limits.h and errno.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18508
diff changeset
2149 NULL,
0181cc080316 Include limits.h and errno.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18508
diff changeset
2150 hinst,
0181cc080316 Include limits.h and errno.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18508
diff changeset
2151 NULL);
0181cc080316 Include limits.h and errno.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18508
diff changeset
2152
13434
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
2153 if (hwnd)
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
2154 {
51211
28ea05de2dc5 Make (many) trivial substitutions for renamed and
Kim F. Storm <storm@cua.dk>
parents: 50377
diff changeset
2155 SetWindowLong (hwnd, WND_FONTWIDTH_INDEX, FRAME_COLUMN_WIDTH (f));
28ea05de2dc5 Make (many) trivial substitutions for renamed and
Kim F. Storm <storm@cua.dk>
parents: 50377
diff changeset
2156 SetWindowLong (hwnd, WND_LINEHEIGHT_INDEX, FRAME_LINE_HEIGHT (f));
28ea05de2dc5 Make (many) trivial substitutions for renamed and
Kim F. Storm <storm@cua.dk>
parents: 50377
diff changeset
2157 SetWindowLong (hwnd, WND_BORDER_INDEX, FRAME_INTERNAL_BORDER_WIDTH (f));
28ea05de2dc5 Make (many) trivial substitutions for renamed and
Kim F. Storm <storm@cua.dk>
parents: 50377
diff changeset
2158 SetWindowLong (hwnd, WND_SCROLLBAR_INDEX, f->scroll_bar_actual_width);
27397
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
2159 SetWindowLong (hwnd, WND_BACKGROUND_INDEX, FRAME_BACKGROUND_PIXEL (f));
15147
38c0ce06203f (quit_char, Vwin32_enable_italics, Vwin32_enable_palette):
Geoff Voelker <voelker@cs.washington.edu>
parents: 15034
diff changeset
2160
21884
bc4455bca454 Include shellapi.h.
Richard M. Stallman <rms@gnu.org>
parents: 21874
diff changeset
2161 /* Enable drag-n-drop. */
bc4455bca454 Include shellapi.h.
Richard M. Stallman <rms@gnu.org>
parents: 21874
diff changeset
2162 DragAcceptFiles (hwnd, TRUE);
47942
080b4586492b Fix typo in comment.
Juanma Barranquero <lekktu@gmail.com>
parents: 47731
diff changeset
2163
15147
38c0ce06203f (quit_char, Vwin32_enable_italics, Vwin32_enable_palette):
Geoff Voelker <voelker@cs.washington.edu>
parents: 15034
diff changeset
2164 /* Do this to discard the default setting specified by our parent. */
38c0ce06203f (quit_char, Vwin32_enable_italics, Vwin32_enable_palette):
Geoff Voelker <voelker@cs.washington.edu>
parents: 15034
diff changeset
2165 ShowWindow (hwnd, SW_HIDE);
71545
26164031aa5a (w32_createwindow): Use CW_USEDEFAULT instead of f->left_pos and SH_SHOW
Eli Zaretskii <eliz@gnu.org>
parents: 71171
diff changeset
2166
26164031aa5a (w32_createwindow): Use CW_USEDEFAULT instead of f->left_pos and SH_SHOW
Eli Zaretskii <eliz@gnu.org>
parents: 71171
diff changeset
2167 /* Update frame positions. */
26164031aa5a (w32_createwindow): Use CW_USEDEFAULT instead of f->left_pos and SH_SHOW
Eli Zaretskii <eliz@gnu.org>
parents: 71171
diff changeset
2168 GetWindowRect (hwnd, &rect);
26164031aa5a (w32_createwindow): Use CW_USEDEFAULT instead of f->left_pos and SH_SHOW
Eli Zaretskii <eliz@gnu.org>
parents: 71171
diff changeset
2169 f->left_pos = rect.left;
26164031aa5a (w32_createwindow): Use CW_USEDEFAULT instead of f->left_pos and SH_SHOW
Eli Zaretskii <eliz@gnu.org>
parents: 71171
diff changeset
2170 f->top_pos = rect.top;
13434
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
2171 }
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
2172 }
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
2173
86065
2557aa084b57 (Fw32_registered_hot_keys): Don't return the nil values corresponding
Juanma Barranquero <lekktu@gmail.com>
parents: 86053
diff changeset
2174 static void
13434
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
2175 my_post_msg (wmsg, hwnd, msg, wParam, lParam)
16588
481b7874a1e9 Change identifiers of the form win32* to w32*.
Geoff Voelker <voelker@cs.washington.edu>
parents: 16259
diff changeset
2176 W32Msg * wmsg;
13434
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
2177 HWND hwnd;
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
2178 UINT msg;
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
2179 WPARAM wParam;
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
2180 LPARAM lParam;
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
2181 {
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
2182 wmsg->msg.hwnd = hwnd;
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
2183 wmsg->msg.message = msg;
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
2184 wmsg->msg.wParam = wParam;
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
2185 wmsg->msg.lParam = lParam;
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
2186 wmsg->msg.time = GetMessageTime ();
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
2187
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
2188 post_msg (wmsg);
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
2189 }
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
2190
16884
36babc489b0c Change all uses of win95, winnt, and win32
Geoff Voelker <voelker@cs.washington.edu>
parents: 16602
diff changeset
2191 /* GetKeyState and MapVirtualKey on Windows 95 do not actually distinguish
14461
4fe9540be594 (modifiers, modifier_key_support_tested,
Geoff Voelker <voelker@cs.washington.edu>
parents: 14353
diff changeset
2192 between left and right keys as advertised. We test for this
4fe9540be594 (modifiers, modifier_key_support_tested,
Geoff Voelker <voelker@cs.washington.edu>
parents: 14353
diff changeset
2193 support dynamically, and set a flag when the support is absent. If
4fe9540be594 (modifiers, modifier_key_support_tested,
Geoff Voelker <voelker@cs.washington.edu>
parents: 14353
diff changeset
2194 absent, we keep track of the left and right control and alt keys
4fe9540be594 (modifiers, modifier_key_support_tested,
Geoff Voelker <voelker@cs.washington.edu>
parents: 14353
diff changeset
2195 ourselves. This is particularly necessary on keyboards that rely
4fe9540be594 (modifiers, modifier_key_support_tested,
Geoff Voelker <voelker@cs.washington.edu>
parents: 14353
diff changeset
2196 upon the AltGr key, which is represented as having the left control
4fe9540be594 (modifiers, modifier_key_support_tested,
Geoff Voelker <voelker@cs.washington.edu>
parents: 14353
diff changeset
2197 and right alt keys pressed. For these keyboards, we need to know
4fe9540be594 (modifiers, modifier_key_support_tested,
Geoff Voelker <voelker@cs.washington.edu>
parents: 14353
diff changeset
2198 when the left alt key has been pressed in addition to the AltGr key
4fe9540be594 (modifiers, modifier_key_support_tested,
Geoff Voelker <voelker@cs.washington.edu>
parents: 14353
diff changeset
2199 so that we can properly support M-AltGr-key sequences (such as M-@
4fe9540be594 (modifiers, modifier_key_support_tested,
Geoff Voelker <voelker@cs.washington.edu>
parents: 14353
diff changeset
2200 on Swedish keyboards). */
4fe9540be594 (modifiers, modifier_key_support_tested,
Geoff Voelker <voelker@cs.washington.edu>
parents: 14353
diff changeset
2201
4fe9540be594 (modifiers, modifier_key_support_tested,
Geoff Voelker <voelker@cs.washington.edu>
parents: 14353
diff changeset
2202 #define EMACS_LCONTROL 0
4fe9540be594 (modifiers, modifier_key_support_tested,
Geoff Voelker <voelker@cs.washington.edu>
parents: 14353
diff changeset
2203 #define EMACS_RCONTROL 1
4fe9540be594 (modifiers, modifier_key_support_tested,
Geoff Voelker <voelker@cs.washington.edu>
parents: 14353
diff changeset
2204 #define EMACS_LMENU 2
4fe9540be594 (modifiers, modifier_key_support_tested,
Geoff Voelker <voelker@cs.washington.edu>
parents: 14353
diff changeset
2205 #define EMACS_RMENU 3
4fe9540be594 (modifiers, modifier_key_support_tested,
Geoff Voelker <voelker@cs.washington.edu>
parents: 14353
diff changeset
2206
4fe9540be594 (modifiers, modifier_key_support_tested,
Geoff Voelker <voelker@cs.washington.edu>
parents: 14353
diff changeset
2207 static int modifiers[4];
4fe9540be594 (modifiers, modifier_key_support_tested,
Geoff Voelker <voelker@cs.washington.edu>
parents: 14353
diff changeset
2208 static int modifiers_recorded;
4fe9540be594 (modifiers, modifier_key_support_tested,
Geoff Voelker <voelker@cs.washington.edu>
parents: 14353
diff changeset
2209 static int modifier_key_support_tested;
4fe9540be594 (modifiers, modifier_key_support_tested,
Geoff Voelker <voelker@cs.washington.edu>
parents: 14353
diff changeset
2210
4fe9540be594 (modifiers, modifier_key_support_tested,
Geoff Voelker <voelker@cs.washington.edu>
parents: 14353
diff changeset
2211 static void
4fe9540be594 (modifiers, modifier_key_support_tested,
Geoff Voelker <voelker@cs.washington.edu>
parents: 14353
diff changeset
2212 test_modifier_support (unsigned int wparam)
4fe9540be594 (modifiers, modifier_key_support_tested,
Geoff Voelker <voelker@cs.washington.edu>
parents: 14353
diff changeset
2213 {
4fe9540be594 (modifiers, modifier_key_support_tested,
Geoff Voelker <voelker@cs.washington.edu>
parents: 14353
diff changeset
2214 unsigned int l, r;
4fe9540be594 (modifiers, modifier_key_support_tested,
Geoff Voelker <voelker@cs.washington.edu>
parents: 14353
diff changeset
2215
4fe9540be594 (modifiers, modifier_key_support_tested,
Geoff Voelker <voelker@cs.washington.edu>
parents: 14353
diff changeset
2216 if (wparam != VK_CONTROL && wparam != VK_MENU)
4fe9540be594 (modifiers, modifier_key_support_tested,
Geoff Voelker <voelker@cs.washington.edu>
parents: 14353
diff changeset
2217 return;
4fe9540be594 (modifiers, modifier_key_support_tested,
Geoff Voelker <voelker@cs.washington.edu>
parents: 14353
diff changeset
2218 if (wparam == VK_CONTROL)
4fe9540be594 (modifiers, modifier_key_support_tested,
Geoff Voelker <voelker@cs.washington.edu>
parents: 14353
diff changeset
2219 {
4fe9540be594 (modifiers, modifier_key_support_tested,
Geoff Voelker <voelker@cs.washington.edu>
parents: 14353
diff changeset
2220 l = VK_LCONTROL;
4fe9540be594 (modifiers, modifier_key_support_tested,
Geoff Voelker <voelker@cs.washington.edu>
parents: 14353
diff changeset
2221 r = VK_RCONTROL;
4fe9540be594 (modifiers, modifier_key_support_tested,
Geoff Voelker <voelker@cs.washington.edu>
parents: 14353
diff changeset
2222 }
4fe9540be594 (modifiers, modifier_key_support_tested,
Geoff Voelker <voelker@cs.washington.edu>
parents: 14353
diff changeset
2223 else
4fe9540be594 (modifiers, modifier_key_support_tested,
Geoff Voelker <voelker@cs.washington.edu>
parents: 14353
diff changeset
2224 {
4fe9540be594 (modifiers, modifier_key_support_tested,
Geoff Voelker <voelker@cs.washington.edu>
parents: 14353
diff changeset
2225 l = VK_LMENU;
4fe9540be594 (modifiers, modifier_key_support_tested,
Geoff Voelker <voelker@cs.washington.edu>
parents: 14353
diff changeset
2226 r = VK_RMENU;
4fe9540be594 (modifiers, modifier_key_support_tested,
Geoff Voelker <voelker@cs.washington.edu>
parents: 14353
diff changeset
2227 }
4fe9540be594 (modifiers, modifier_key_support_tested,
Geoff Voelker <voelker@cs.washington.edu>
parents: 14353
diff changeset
2228 if (!(GetKeyState (l) & 0x8000) && !(GetKeyState (r) & 0x8000))
4fe9540be594 (modifiers, modifier_key_support_tested,
Geoff Voelker <voelker@cs.washington.edu>
parents: 14353
diff changeset
2229 modifiers_recorded = 1;
4fe9540be594 (modifiers, modifier_key_support_tested,
Geoff Voelker <voelker@cs.washington.edu>
parents: 14353
diff changeset
2230 else
4fe9540be594 (modifiers, modifier_key_support_tested,
Geoff Voelker <voelker@cs.washington.edu>
parents: 14353
diff changeset
2231 modifiers_recorded = 0;
4fe9540be594 (modifiers, modifier_key_support_tested,
Geoff Voelker <voelker@cs.washington.edu>
parents: 14353
diff changeset
2232 modifier_key_support_tested = 1;
4fe9540be594 (modifiers, modifier_key_support_tested,
Geoff Voelker <voelker@cs.washington.edu>
parents: 14353
diff changeset
2233 }
4fe9540be594 (modifiers, modifier_key_support_tested,
Geoff Voelker <voelker@cs.washington.edu>
parents: 14353
diff changeset
2234
4fe9540be594 (modifiers, modifier_key_support_tested,
Geoff Voelker <voelker@cs.washington.edu>
parents: 14353
diff changeset
2235 static void
4fe9540be594 (modifiers, modifier_key_support_tested,
Geoff Voelker <voelker@cs.washington.edu>
parents: 14353
diff changeset
2236 record_keydown (unsigned int wparam, unsigned int lparam)
4fe9540be594 (modifiers, modifier_key_support_tested,
Geoff Voelker <voelker@cs.washington.edu>
parents: 14353
diff changeset
2237 {
4fe9540be594 (modifiers, modifier_key_support_tested,
Geoff Voelker <voelker@cs.washington.edu>
parents: 14353
diff changeset
2238 int i;
4fe9540be594 (modifiers, modifier_key_support_tested,
Geoff Voelker <voelker@cs.washington.edu>
parents: 14353
diff changeset
2239
4fe9540be594 (modifiers, modifier_key_support_tested,
Geoff Voelker <voelker@cs.washington.edu>
parents: 14353
diff changeset
2240 if (!modifier_key_support_tested)
4fe9540be594 (modifiers, modifier_key_support_tested,
Geoff Voelker <voelker@cs.washington.edu>
parents: 14353
diff changeset
2241 test_modifier_support (wparam);
4fe9540be594 (modifiers, modifier_key_support_tested,
Geoff Voelker <voelker@cs.washington.edu>
parents: 14353
diff changeset
2242
4fe9540be594 (modifiers, modifier_key_support_tested,
Geoff Voelker <voelker@cs.washington.edu>
parents: 14353
diff changeset
2243 if ((wparam != VK_CONTROL && wparam != VK_MENU) || !modifiers_recorded)
4fe9540be594 (modifiers, modifier_key_support_tested,
Geoff Voelker <voelker@cs.washington.edu>
parents: 14353
diff changeset
2244 return;
4fe9540be594 (modifiers, modifier_key_support_tested,
Geoff Voelker <voelker@cs.washington.edu>
parents: 14353
diff changeset
2245
4fe9540be594 (modifiers, modifier_key_support_tested,
Geoff Voelker <voelker@cs.washington.edu>
parents: 14353
diff changeset
2246 if (wparam == VK_CONTROL)
4fe9540be594 (modifiers, modifier_key_support_tested,
Geoff Voelker <voelker@cs.washington.edu>
parents: 14353
diff changeset
2247 i = (lparam & 0x1000000) ? EMACS_RCONTROL : EMACS_LCONTROL;
4fe9540be594 (modifiers, modifier_key_support_tested,
Geoff Voelker <voelker@cs.washington.edu>
parents: 14353
diff changeset
2248 else
4fe9540be594 (modifiers, modifier_key_support_tested,
Geoff Voelker <voelker@cs.washington.edu>
parents: 14353
diff changeset
2249 i = (lparam & 0x1000000) ? EMACS_RMENU : EMACS_LMENU;
4fe9540be594 (modifiers, modifier_key_support_tested,
Geoff Voelker <voelker@cs.washington.edu>
parents: 14353
diff changeset
2250
4fe9540be594 (modifiers, modifier_key_support_tested,
Geoff Voelker <voelker@cs.washington.edu>
parents: 14353
diff changeset
2251 modifiers[i] = 1;
4fe9540be594 (modifiers, modifier_key_support_tested,
Geoff Voelker <voelker@cs.washington.edu>
parents: 14353
diff changeset
2252 }
4fe9540be594 (modifiers, modifier_key_support_tested,
Geoff Voelker <voelker@cs.washington.edu>
parents: 14353
diff changeset
2253
4fe9540be594 (modifiers, modifier_key_support_tested,
Geoff Voelker <voelker@cs.washington.edu>
parents: 14353
diff changeset
2254 static void
4fe9540be594 (modifiers, modifier_key_support_tested,
Geoff Voelker <voelker@cs.washington.edu>
parents: 14353
diff changeset
2255 record_keyup (unsigned int wparam, unsigned int lparam)
4fe9540be594 (modifiers, modifier_key_support_tested,
Geoff Voelker <voelker@cs.washington.edu>
parents: 14353
diff changeset
2256 {
4fe9540be594 (modifiers, modifier_key_support_tested,
Geoff Voelker <voelker@cs.washington.edu>
parents: 14353
diff changeset
2257 int i;
4fe9540be594 (modifiers, modifier_key_support_tested,
Geoff Voelker <voelker@cs.washington.edu>
parents: 14353
diff changeset
2258
4fe9540be594 (modifiers, modifier_key_support_tested,
Geoff Voelker <voelker@cs.washington.edu>
parents: 14353
diff changeset
2259 if ((wparam != VK_CONTROL && wparam != VK_MENU) || !modifiers_recorded)
4fe9540be594 (modifiers, modifier_key_support_tested,
Geoff Voelker <voelker@cs.washington.edu>
parents: 14353
diff changeset
2260 return;
4fe9540be594 (modifiers, modifier_key_support_tested,
Geoff Voelker <voelker@cs.washington.edu>
parents: 14353
diff changeset
2261
4fe9540be594 (modifiers, modifier_key_support_tested,
Geoff Voelker <voelker@cs.washington.edu>
parents: 14353
diff changeset
2262 if (wparam == VK_CONTROL)
4fe9540be594 (modifiers, modifier_key_support_tested,
Geoff Voelker <voelker@cs.washington.edu>
parents: 14353
diff changeset
2263 i = (lparam & 0x1000000) ? EMACS_RCONTROL : EMACS_LCONTROL;
4fe9540be594 (modifiers, modifier_key_support_tested,
Geoff Voelker <voelker@cs.washington.edu>
parents: 14353
diff changeset
2264 else
4fe9540be594 (modifiers, modifier_key_support_tested,
Geoff Voelker <voelker@cs.washington.edu>
parents: 14353
diff changeset
2265 i = (lparam & 0x1000000) ? EMACS_RMENU : EMACS_LMENU;
4fe9540be594 (modifiers, modifier_key_support_tested,
Geoff Voelker <voelker@cs.washington.edu>
parents: 14353
diff changeset
2266
4fe9540be594 (modifiers, modifier_key_support_tested,
Geoff Voelker <voelker@cs.washington.edu>
parents: 14353
diff changeset
2267 modifiers[i] = 0;
4fe9540be594 (modifiers, modifier_key_support_tested,
Geoff Voelker <voelker@cs.washington.edu>
parents: 14353
diff changeset
2268 }
4fe9540be594 (modifiers, modifier_key_support_tested,
Geoff Voelker <voelker@cs.washington.edu>
parents: 14353
diff changeset
2269
14810
4dd6867765b9 (Vwin32_pass_alt_to_system,
Geoff Voelker <voelker@cs.washington.edu>
parents: 14461
diff changeset
2270 /* Emacs can lose focus while a modifier key has been pressed. When
47942
080b4586492b Fix typo in comment.
Juanma Barranquero <lekktu@gmail.com>
parents: 47731
diff changeset
2271 it regains focus, be conservative and clear all modifiers since
14810
4dd6867765b9 (Vwin32_pass_alt_to_system,
Geoff Voelker <voelker@cs.washington.edu>
parents: 14461
diff changeset
2272 we cannot reconstruct the left and right modifier state. */
4dd6867765b9 (Vwin32_pass_alt_to_system,
Geoff Voelker <voelker@cs.washington.edu>
parents: 14461
diff changeset
2273 static void
4dd6867765b9 (Vwin32_pass_alt_to_system,
Geoff Voelker <voelker@cs.washington.edu>
parents: 14461
diff changeset
2274 reset_modifiers ()
4dd6867765b9 (Vwin32_pass_alt_to_system,
Geoff Voelker <voelker@cs.washington.edu>
parents: 14461
diff changeset
2275 {
15314
796d825f4444 (reset_modifiers): Only clear a modifier if the modifier key has been
Richard M. Stallman <rms@gnu.org>
parents: 15290
diff changeset
2276 SHORT ctrl, alt;
796d825f4444 (reset_modifiers): Only clear a modifier if the modifier key has been
Richard M. Stallman <rms@gnu.org>
parents: 15290
diff changeset
2277
23803
f112aa8f8f5d (Vw32_phantom_key_code): New variable.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23801
diff changeset
2278 if (GetFocus () == NULL)
f112aa8f8f5d (Vw32_phantom_key_code): New variable.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23801
diff changeset
2279 /* Emacs doesn't have keyboard focus. Do nothing. */
14810
4dd6867765b9 (Vwin32_pass_alt_to_system,
Geoff Voelker <voelker@cs.washington.edu>
parents: 14461
diff changeset
2280 return;
15314
796d825f4444 (reset_modifiers): Only clear a modifier if the modifier key has been
Richard M. Stallman <rms@gnu.org>
parents: 15290
diff changeset
2281
796d825f4444 (reset_modifiers): Only clear a modifier if the modifier key has been
Richard M. Stallman <rms@gnu.org>
parents: 15290
diff changeset
2282 ctrl = GetAsyncKeyState (VK_CONTROL);
796d825f4444 (reset_modifiers): Only clear a modifier if the modifier key has been
Richard M. Stallman <rms@gnu.org>
parents: 15290
diff changeset
2283 alt = GetAsyncKeyState (VK_MENU);
796d825f4444 (reset_modifiers): Only clear a modifier if the modifier key has been
Richard M. Stallman <rms@gnu.org>
parents: 15290
diff changeset
2284
796d825f4444 (reset_modifiers): Only clear a modifier if the modifier key has been
Richard M. Stallman <rms@gnu.org>
parents: 15290
diff changeset
2285 if (!(ctrl & 0x08000))
796d825f4444 (reset_modifiers): Only clear a modifier if the modifier key has been
Richard M. Stallman <rms@gnu.org>
parents: 15290
diff changeset
2286 /* Clear any recorded control modifier state. */
796d825f4444 (reset_modifiers): Only clear a modifier if the modifier key has been
Richard M. Stallman <rms@gnu.org>
parents: 15290
diff changeset
2287 modifiers[EMACS_RCONTROL] = modifiers[EMACS_LCONTROL] = 0;
796d825f4444 (reset_modifiers): Only clear a modifier if the modifier key has been
Richard M. Stallman <rms@gnu.org>
parents: 15290
diff changeset
2288
796d825f4444 (reset_modifiers): Only clear a modifier if the modifier key has been
Richard M. Stallman <rms@gnu.org>
parents: 15290
diff changeset
2289 if (!(alt & 0x08000))
796d825f4444 (reset_modifiers): Only clear a modifier if the modifier key has been
Richard M. Stallman <rms@gnu.org>
parents: 15290
diff changeset
2290 /* Clear any recorded alt modifier state. */
796d825f4444 (reset_modifiers): Only clear a modifier if the modifier key has been
Richard M. Stallman <rms@gnu.org>
parents: 15290
diff changeset
2291 modifiers[EMACS_RMENU] = modifiers[EMACS_LMENU] = 0;
796d825f4444 (reset_modifiers): Only clear a modifier if the modifier key has been
Richard M. Stallman <rms@gnu.org>
parents: 15290
diff changeset
2292
23803
f112aa8f8f5d (Vw32_phantom_key_code): New variable.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23801
diff changeset
2293 /* Update the state of all modifier keys, because modifiers used in
f112aa8f8f5d (Vw32_phantom_key_code): New variable.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23801
diff changeset
2294 hot-key combinations can get stuck on if Emacs loses focus as a
f112aa8f8f5d (Vw32_phantom_key_code): New variable.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23801
diff changeset
2295 result of a hot-key being pressed. */
f112aa8f8f5d (Vw32_phantom_key_code): New variable.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23801
diff changeset
2296 {
f112aa8f8f5d (Vw32_phantom_key_code): New variable.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23801
diff changeset
2297 BYTE keystate[256];
f112aa8f8f5d (Vw32_phantom_key_code): New variable.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23801
diff changeset
2298
f112aa8f8f5d (Vw32_phantom_key_code): New variable.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23801
diff changeset
2299 #define CURRENT_STATE(key) ((GetAsyncKeyState (key) & 0x8000) >> 8)
f112aa8f8f5d (Vw32_phantom_key_code): New variable.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23801
diff changeset
2300
f112aa8f8f5d (Vw32_phantom_key_code): New variable.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23801
diff changeset
2301 GetKeyboardState (keystate);
f112aa8f8f5d (Vw32_phantom_key_code): New variable.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23801
diff changeset
2302 keystate[VK_SHIFT] = CURRENT_STATE (VK_SHIFT);
f112aa8f8f5d (Vw32_phantom_key_code): New variable.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23801
diff changeset
2303 keystate[VK_CONTROL] = CURRENT_STATE (VK_CONTROL);
f112aa8f8f5d (Vw32_phantom_key_code): New variable.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23801
diff changeset
2304 keystate[VK_LCONTROL] = CURRENT_STATE (VK_LCONTROL);
f112aa8f8f5d (Vw32_phantom_key_code): New variable.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23801
diff changeset
2305 keystate[VK_RCONTROL] = CURRENT_STATE (VK_RCONTROL);
f112aa8f8f5d (Vw32_phantom_key_code): New variable.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23801
diff changeset
2306 keystate[VK_MENU] = CURRENT_STATE (VK_MENU);
f112aa8f8f5d (Vw32_phantom_key_code): New variable.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23801
diff changeset
2307 keystate[VK_LMENU] = CURRENT_STATE (VK_LMENU);
f112aa8f8f5d (Vw32_phantom_key_code): New variable.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23801
diff changeset
2308 keystate[VK_RMENU] = CURRENT_STATE (VK_RMENU);
f112aa8f8f5d (Vw32_phantom_key_code): New variable.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23801
diff changeset
2309 keystate[VK_LWIN] = CURRENT_STATE (VK_LWIN);
f112aa8f8f5d (Vw32_phantom_key_code): New variable.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23801
diff changeset
2310 keystate[VK_RWIN] = CURRENT_STATE (VK_RWIN);
f112aa8f8f5d (Vw32_phantom_key_code): New variable.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23801
diff changeset
2311 keystate[VK_APPS] = CURRENT_STATE (VK_APPS);
f112aa8f8f5d (Vw32_phantom_key_code): New variable.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23801
diff changeset
2312 SetKeyboardState (keystate);
f112aa8f8f5d (Vw32_phantom_key_code): New variable.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23801
diff changeset
2313 }
14810
4dd6867765b9 (Vwin32_pass_alt_to_system,
Geoff Voelker <voelker@cs.washington.edu>
parents: 14461
diff changeset
2314 }
4dd6867765b9 (Vwin32_pass_alt_to_system,
Geoff Voelker <voelker@cs.washington.edu>
parents: 14461
diff changeset
2315
15377
65d9ff2c8602 (sync_modifiers): New function.
Richard M. Stallman <rms@gnu.org>
parents: 15314
diff changeset
2316 /* Synchronize modifier state with what is reported with the current
65d9ff2c8602 (sync_modifiers): New function.
Richard M. Stallman <rms@gnu.org>
parents: 15314
diff changeset
2317 keystroke. Even if we cannot distinguish between left and right
65d9ff2c8602 (sync_modifiers): New function.
Richard M. Stallman <rms@gnu.org>
parents: 15314
diff changeset
2318 modifier keys, we know that, if no modifiers are set, then neither
65d9ff2c8602 (sync_modifiers): New function.
Richard M. Stallman <rms@gnu.org>
parents: 15314
diff changeset
2319 the left or right modifier should be set. */
65d9ff2c8602 (sync_modifiers): New function.
Richard M. Stallman <rms@gnu.org>
parents: 15314
diff changeset
2320 static void
65d9ff2c8602 (sync_modifiers): New function.
Richard M. Stallman <rms@gnu.org>
parents: 15314
diff changeset
2321 sync_modifiers ()
65d9ff2c8602 (sync_modifiers): New function.
Richard M. Stallman <rms@gnu.org>
parents: 15314
diff changeset
2322 {
65d9ff2c8602 (sync_modifiers): New function.
Richard M. Stallman <rms@gnu.org>
parents: 15314
diff changeset
2323 if (!modifiers_recorded)
65d9ff2c8602 (sync_modifiers): New function.
Richard M. Stallman <rms@gnu.org>
parents: 15314
diff changeset
2324 return;
65d9ff2c8602 (sync_modifiers): New function.
Richard M. Stallman <rms@gnu.org>
parents: 15314
diff changeset
2325
47942
080b4586492b Fix typo in comment.
Juanma Barranquero <lekktu@gmail.com>
parents: 47731
diff changeset
2326 if (!(GetKeyState (VK_CONTROL) & 0x8000))
15377
65d9ff2c8602 (sync_modifiers): New function.
Richard M. Stallman <rms@gnu.org>
parents: 15314
diff changeset
2327 modifiers[EMACS_RCONTROL] = modifiers[EMACS_LCONTROL] = 0;
65d9ff2c8602 (sync_modifiers): New function.
Richard M. Stallman <rms@gnu.org>
parents: 15314
diff changeset
2328
47942
080b4586492b Fix typo in comment.
Juanma Barranquero <lekktu@gmail.com>
parents: 47731
diff changeset
2329 if (!(GetKeyState (VK_MENU) & 0x8000))
15377
65d9ff2c8602 (sync_modifiers): New function.
Richard M. Stallman <rms@gnu.org>
parents: 15314
diff changeset
2330 modifiers[EMACS_RMENU] = modifiers[EMACS_LMENU] = 0;
65d9ff2c8602 (sync_modifiers): New function.
Richard M. Stallman <rms@gnu.org>
parents: 15314
diff changeset
2331 }
65d9ff2c8602 (sync_modifiers): New function.
Richard M. Stallman <rms@gnu.org>
parents: 15314
diff changeset
2332
14461
4fe9540be594 (modifiers, modifier_key_support_tested,
Geoff Voelker <voelker@cs.washington.edu>
parents: 14353
diff changeset
2333 static int
4fe9540be594 (modifiers, modifier_key_support_tested,
Geoff Voelker <voelker@cs.washington.edu>
parents: 14353
diff changeset
2334 modifier_set (int vkey)
4fe9540be594 (modifiers, modifier_key_support_tested,
Geoff Voelker <voelker@cs.washington.edu>
parents: 14353
diff changeset
2335 {
23681
af0276da2059 (Vw32_pass_optional_keys_to_system): Variable removed.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23637
diff changeset
2336 if (vkey == VK_CAPITAL || vkey == VK_SCROLL)
15280
f39684fddaff (modifier_set): Check toggle state of CapsLock even
Karl Heuer <kwzh@gnu.org>
parents: 15232
diff changeset
2337 return (GetKeyState (vkey) & 0x1);
14461
4fe9540be594 (modifiers, modifier_key_support_tested,
Geoff Voelker <voelker@cs.washington.edu>
parents: 14353
diff changeset
2338 if (!modifiers_recorded)
4fe9540be594 (modifiers, modifier_key_support_tested,
Geoff Voelker <voelker@cs.washington.edu>
parents: 14353
diff changeset
2339 return (GetKeyState (vkey) & 0x8000);
4fe9540be594 (modifiers, modifier_key_support_tested,
Geoff Voelker <voelker@cs.washington.edu>
parents: 14353
diff changeset
2340
4fe9540be594 (modifiers, modifier_key_support_tested,
Geoff Voelker <voelker@cs.washington.edu>
parents: 14353
diff changeset
2341 switch (vkey)
4fe9540be594 (modifiers, modifier_key_support_tested,
Geoff Voelker <voelker@cs.washington.edu>
parents: 14353
diff changeset
2342 {
4fe9540be594 (modifiers, modifier_key_support_tested,
Geoff Voelker <voelker@cs.washington.edu>
parents: 14353
diff changeset
2343 case VK_LCONTROL:
4fe9540be594 (modifiers, modifier_key_support_tested,
Geoff Voelker <voelker@cs.washington.edu>
parents: 14353
diff changeset
2344 return modifiers[EMACS_LCONTROL];
4fe9540be594 (modifiers, modifier_key_support_tested,
Geoff Voelker <voelker@cs.washington.edu>
parents: 14353
diff changeset
2345 case VK_RCONTROL:
4fe9540be594 (modifiers, modifier_key_support_tested,
Geoff Voelker <voelker@cs.washington.edu>
parents: 14353
diff changeset
2346 return modifiers[EMACS_RCONTROL];
4fe9540be594 (modifiers, modifier_key_support_tested,
Geoff Voelker <voelker@cs.washington.edu>
parents: 14353
diff changeset
2347 case VK_LMENU:
4fe9540be594 (modifiers, modifier_key_support_tested,
Geoff Voelker <voelker@cs.washington.edu>
parents: 14353
diff changeset
2348 return modifiers[EMACS_LMENU];
4fe9540be594 (modifiers, modifier_key_support_tested,
Geoff Voelker <voelker@cs.washington.edu>
parents: 14353
diff changeset
2349 case VK_RMENU:
4fe9540be594 (modifiers, modifier_key_support_tested,
Geoff Voelker <voelker@cs.washington.edu>
parents: 14353
diff changeset
2350 return modifiers[EMACS_RMENU];
4fe9540be594 (modifiers, modifier_key_support_tested,
Geoff Voelker <voelker@cs.washington.edu>
parents: 14353
diff changeset
2351 }
4fe9540be594 (modifiers, modifier_key_support_tested,
Geoff Voelker <voelker@cs.washington.edu>
parents: 14353
diff changeset
2352 return (GetKeyState (vkey) & 0x8000);
4fe9540be594 (modifiers, modifier_key_support_tested,
Geoff Voelker <voelker@cs.washington.edu>
parents: 14353
diff changeset
2353 }
4fe9540be594 (modifiers, modifier_key_support_tested,
Geoff Voelker <voelker@cs.washington.edu>
parents: 14353
diff changeset
2354
23681
af0276da2059 (Vw32_pass_optional_keys_to_system): Variable removed.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23637
diff changeset
2355 /* Convert between the modifier bits W32 uses and the modifier bits
af0276da2059 (Vw32_pass_optional_keys_to_system): Variable removed.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23637
diff changeset
2356 Emacs uses. */
af0276da2059 (Vw32_pass_optional_keys_to_system): Variable removed.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23637
diff changeset
2357
af0276da2059 (Vw32_pass_optional_keys_to_system): Variable removed.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23637
diff changeset
2358 unsigned int
af0276da2059 (Vw32_pass_optional_keys_to_system): Variable removed.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23637
diff changeset
2359 w32_key_to_modifier (int key)
af0276da2059 (Vw32_pass_optional_keys_to_system): Variable removed.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23637
diff changeset
2360 {
af0276da2059 (Vw32_pass_optional_keys_to_system): Variable removed.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23637
diff changeset
2361 Lisp_Object key_mapping;
af0276da2059 (Vw32_pass_optional_keys_to_system): Variable removed.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23637
diff changeset
2362
af0276da2059 (Vw32_pass_optional_keys_to_system): Variable removed.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23637
diff changeset
2363 switch (key)
af0276da2059 (Vw32_pass_optional_keys_to_system): Variable removed.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23637
diff changeset
2364 {
af0276da2059 (Vw32_pass_optional_keys_to_system): Variable removed.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23637
diff changeset
2365 case VK_LWIN:
af0276da2059 (Vw32_pass_optional_keys_to_system): Variable removed.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23637
diff changeset
2366 key_mapping = Vw32_lwindow_modifier;
af0276da2059 (Vw32_pass_optional_keys_to_system): Variable removed.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23637
diff changeset
2367 break;
af0276da2059 (Vw32_pass_optional_keys_to_system): Variable removed.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23637
diff changeset
2368 case VK_RWIN:
af0276da2059 (Vw32_pass_optional_keys_to_system): Variable removed.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23637
diff changeset
2369 key_mapping = Vw32_rwindow_modifier;
af0276da2059 (Vw32_pass_optional_keys_to_system): Variable removed.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23637
diff changeset
2370 break;
af0276da2059 (Vw32_pass_optional_keys_to_system): Variable removed.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23637
diff changeset
2371 case VK_APPS:
af0276da2059 (Vw32_pass_optional_keys_to_system): Variable removed.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23637
diff changeset
2372 key_mapping = Vw32_apps_modifier;
af0276da2059 (Vw32_pass_optional_keys_to_system): Variable removed.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23637
diff changeset
2373 break;
af0276da2059 (Vw32_pass_optional_keys_to_system): Variable removed.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23637
diff changeset
2374 case VK_SCROLL:
af0276da2059 (Vw32_pass_optional_keys_to_system): Variable removed.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23637
diff changeset
2375 key_mapping = Vw32_scroll_lock_modifier;
af0276da2059 (Vw32_pass_optional_keys_to_system): Variable removed.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23637
diff changeset
2376 break;
af0276da2059 (Vw32_pass_optional_keys_to_system): Variable removed.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23637
diff changeset
2377 default:
af0276da2059 (Vw32_pass_optional_keys_to_system): Variable removed.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23637
diff changeset
2378 key_mapping = Qnil;
af0276da2059 (Vw32_pass_optional_keys_to_system): Variable removed.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23637
diff changeset
2379 }
af0276da2059 (Vw32_pass_optional_keys_to_system): Variable removed.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23637
diff changeset
2380
23803
f112aa8f8f5d (Vw32_phantom_key_code): New variable.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23801
diff changeset
2381 /* NB. This code runs in the input thread, asychronously to the lisp
f112aa8f8f5d (Vw32_phantom_key_code): New variable.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23801
diff changeset
2382 thread, so we must be careful to ensure access to lisp data is
f112aa8f8f5d (Vw32_phantom_key_code): New variable.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23801
diff changeset
2383 thread-safe. The following code is safe because the modifier
f112aa8f8f5d (Vw32_phantom_key_code): New variable.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23801
diff changeset
2384 variable values are updated atomically from lisp and symbols are
f112aa8f8f5d (Vw32_phantom_key_code): New variable.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23801
diff changeset
2385 not relocated by GC. Also, we don't have to worry about seeing GC
f112aa8f8f5d (Vw32_phantom_key_code): New variable.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23801
diff changeset
2386 markbits here. */
f112aa8f8f5d (Vw32_phantom_key_code): New variable.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23801
diff changeset
2387 if (EQ (key_mapping, Qhyper))
23681
af0276da2059 (Vw32_pass_optional_keys_to_system): Variable removed.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23637
diff changeset
2388 return hyper_modifier;
23803
f112aa8f8f5d (Vw32_phantom_key_code): New variable.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23801
diff changeset
2389 if (EQ (key_mapping, Qsuper))
23681
af0276da2059 (Vw32_pass_optional_keys_to_system): Variable removed.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23637
diff changeset
2390 return super_modifier;
23803
f112aa8f8f5d (Vw32_phantom_key_code): New variable.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23801
diff changeset
2391 if (EQ (key_mapping, Qmeta))
23681
af0276da2059 (Vw32_pass_optional_keys_to_system): Variable removed.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23637
diff changeset
2392 return meta_modifier;
23803
f112aa8f8f5d (Vw32_phantom_key_code): New variable.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23801
diff changeset
2393 if (EQ (key_mapping, Qalt))
23681
af0276da2059 (Vw32_pass_optional_keys_to_system): Variable removed.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23637
diff changeset
2394 return alt_modifier;
23803
f112aa8f8f5d (Vw32_phantom_key_code): New variable.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23801
diff changeset
2395 if (EQ (key_mapping, Qctrl))
23681
af0276da2059 (Vw32_pass_optional_keys_to_system): Variable removed.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23637
diff changeset
2396 return ctrl_modifier;
23803
f112aa8f8f5d (Vw32_phantom_key_code): New variable.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23801
diff changeset
2397 if (EQ (key_mapping, Qcontrol)) /* synonym for ctrl */
23681
af0276da2059 (Vw32_pass_optional_keys_to_system): Variable removed.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23637
diff changeset
2398 return ctrl_modifier;
23803
f112aa8f8f5d (Vw32_phantom_key_code): New variable.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23801
diff changeset
2399 if (EQ (key_mapping, Qshift))
23681
af0276da2059 (Vw32_pass_optional_keys_to_system): Variable removed.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23637
diff changeset
2400 return shift_modifier;
af0276da2059 (Vw32_pass_optional_keys_to_system): Variable removed.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23637
diff changeset
2401
af0276da2059 (Vw32_pass_optional_keys_to_system): Variable removed.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23637
diff changeset
2402 /* Don't generate any modifier if not explicitly requested. */
af0276da2059 (Vw32_pass_optional_keys_to_system): Variable removed.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23637
diff changeset
2403 return 0;
af0276da2059 (Vw32_pass_optional_keys_to_system): Variable removed.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23637
diff changeset
2404 }
af0276da2059 (Vw32_pass_optional_keys_to_system): Variable removed.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23637
diff changeset
2405
86065
2557aa084b57 (Fw32_registered_hot_keys): Don't return the nil values corresponding
Juanma Barranquero <lekktu@gmail.com>
parents: 86053
diff changeset
2406 static unsigned int
23681
af0276da2059 (Vw32_pass_optional_keys_to_system): Variable removed.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23637
diff changeset
2407 w32_get_modifiers ()
af0276da2059 (Vw32_pass_optional_keys_to_system): Variable removed.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23637
diff changeset
2408 {
af0276da2059 (Vw32_pass_optional_keys_to_system): Variable removed.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23637
diff changeset
2409 return ((modifier_set (VK_SHIFT) ? shift_modifier : 0) |
af0276da2059 (Vw32_pass_optional_keys_to_system): Variable removed.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23637
diff changeset
2410 (modifier_set (VK_CONTROL) ? ctrl_modifier : 0) |
af0276da2059 (Vw32_pass_optional_keys_to_system): Variable removed.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23637
diff changeset
2411 (modifier_set (VK_LWIN) ? w32_key_to_modifier (VK_LWIN) : 0) |
af0276da2059 (Vw32_pass_optional_keys_to_system): Variable removed.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23637
diff changeset
2412 (modifier_set (VK_RWIN) ? w32_key_to_modifier (VK_RWIN) : 0) |
af0276da2059 (Vw32_pass_optional_keys_to_system): Variable removed.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23637
diff changeset
2413 (modifier_set (VK_APPS) ? w32_key_to_modifier (VK_APPS) : 0) |
af0276da2059 (Vw32_pass_optional_keys_to_system): Variable removed.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23637
diff changeset
2414 (modifier_set (VK_SCROLL) ? w32_key_to_modifier (VK_SCROLL) : 0) |
af0276da2059 (Vw32_pass_optional_keys_to_system): Variable removed.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23637
diff changeset
2415 (modifier_set (VK_MENU) ?
af0276da2059 (Vw32_pass_optional_keys_to_system): Variable removed.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23637
diff changeset
2416 ((NILP (Vw32_alt_is_meta)) ? alt_modifier : meta_modifier) : 0));
af0276da2059 (Vw32_pass_optional_keys_to_system): Variable removed.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23637
diff changeset
2417 }
af0276da2059 (Vw32_pass_optional_keys_to_system): Variable removed.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23637
diff changeset
2418
14461
4fe9540be594 (modifiers, modifier_key_support_tested,
Geoff Voelker <voelker@cs.washington.edu>
parents: 14353
diff changeset
2419 /* We map the VK_* modifiers into console modifier constants
4fe9540be594 (modifiers, modifier_key_support_tested,
Geoff Voelker <voelker@cs.washington.edu>
parents: 14353
diff changeset
2420 so that we can use the same routines to handle both console
4fe9540be594 (modifiers, modifier_key_support_tested,
Geoff Voelker <voelker@cs.washington.edu>
parents: 14353
diff changeset
2421 and window input. */
4fe9540be594 (modifiers, modifier_key_support_tested,
Geoff Voelker <voelker@cs.washington.edu>
parents: 14353
diff changeset
2422
4fe9540be594 (modifiers, modifier_key_support_tested,
Geoff Voelker <voelker@cs.washington.edu>
parents: 14353
diff changeset
2423 static int
23681
af0276da2059 (Vw32_pass_optional_keys_to_system): Variable removed.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23637
diff changeset
2424 construct_console_modifiers ()
14461
4fe9540be594 (modifiers, modifier_key_support_tested,
Geoff Voelker <voelker@cs.washington.edu>
parents: 14353
diff changeset
2425 {
4fe9540be594 (modifiers, modifier_key_support_tested,
Geoff Voelker <voelker@cs.washington.edu>
parents: 14353
diff changeset
2426 int mods;
4fe9540be594 (modifiers, modifier_key_support_tested,
Geoff Voelker <voelker@cs.washington.edu>
parents: 14353
diff changeset
2427
4fe9540be594 (modifiers, modifier_key_support_tested,
Geoff Voelker <voelker@cs.washington.edu>
parents: 14353
diff changeset
2428 mods = 0;
4fe9540be594 (modifiers, modifier_key_support_tested,
Geoff Voelker <voelker@cs.washington.edu>
parents: 14353
diff changeset
2429 mods |= (modifier_set (VK_SHIFT)) ? SHIFT_PRESSED : 0;
4fe9540be594 (modifiers, modifier_key_support_tested,
Geoff Voelker <voelker@cs.washington.edu>
parents: 14353
diff changeset
2430 mods |= (modifier_set (VK_CAPITAL)) ? CAPSLOCK_ON : 0;
23681
af0276da2059 (Vw32_pass_optional_keys_to_system): Variable removed.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23637
diff changeset
2431 mods |= (modifier_set (VK_SCROLL)) ? SCROLLLOCK_ON : 0;
af0276da2059 (Vw32_pass_optional_keys_to_system): Variable removed.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23637
diff changeset
2432 mods |= (modifier_set (VK_NUMLOCK)) ? NUMLOCK_ON : 0;
14461
4fe9540be594 (modifiers, modifier_key_support_tested,
Geoff Voelker <voelker@cs.washington.edu>
parents: 14353
diff changeset
2433 mods |= (modifier_set (VK_LCONTROL)) ? LEFT_CTRL_PRESSED : 0;
4fe9540be594 (modifiers, modifier_key_support_tested,
Geoff Voelker <voelker@cs.washington.edu>
parents: 14353
diff changeset
2434 mods |= (modifier_set (VK_RCONTROL)) ? RIGHT_CTRL_PRESSED : 0;
4fe9540be594 (modifiers, modifier_key_support_tested,
Geoff Voelker <voelker@cs.washington.edu>
parents: 14353
diff changeset
2435 mods |= (modifier_set (VK_LMENU)) ? LEFT_ALT_PRESSED : 0;
4fe9540be594 (modifiers, modifier_key_support_tested,
Geoff Voelker <voelker@cs.washington.edu>
parents: 14353
diff changeset
2436 mods |= (modifier_set (VK_RMENU)) ? RIGHT_ALT_PRESSED : 0;
23681
af0276da2059 (Vw32_pass_optional_keys_to_system): Variable removed.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23637
diff changeset
2437 mods |= (modifier_set (VK_LWIN)) ? LEFT_WIN_PRESSED : 0;
af0276da2059 (Vw32_pass_optional_keys_to_system): Variable removed.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23637
diff changeset
2438 mods |= (modifier_set (VK_RWIN)) ? RIGHT_WIN_PRESSED : 0;
af0276da2059 (Vw32_pass_optional_keys_to_system): Variable removed.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23637
diff changeset
2439 mods |= (modifier_set (VK_APPS)) ? APPS_PRESSED : 0;
af0276da2059 (Vw32_pass_optional_keys_to_system): Variable removed.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23637
diff changeset
2440
af0276da2059 (Vw32_pass_optional_keys_to_system): Variable removed.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23637
diff changeset
2441 return mods;
af0276da2059 (Vw32_pass_optional_keys_to_system): Variable removed.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23637
diff changeset
2442 }
af0276da2059 (Vw32_pass_optional_keys_to_system): Variable removed.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23637
diff changeset
2443
af0276da2059 (Vw32_pass_optional_keys_to_system): Variable removed.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23637
diff changeset
2444 static int
af0276da2059 (Vw32_pass_optional_keys_to_system): Variable removed.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23637
diff changeset
2445 w32_get_key_modifiers (unsigned int wparam, unsigned int lparam)
af0276da2059 (Vw32_pass_optional_keys_to_system): Variable removed.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23637
diff changeset
2446 {
af0276da2059 (Vw32_pass_optional_keys_to_system): Variable removed.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23637
diff changeset
2447 int mods;
af0276da2059 (Vw32_pass_optional_keys_to_system): Variable removed.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23637
diff changeset
2448
af0276da2059 (Vw32_pass_optional_keys_to_system): Variable removed.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23637
diff changeset
2449 /* Convert to emacs modifiers. */
af0276da2059 (Vw32_pass_optional_keys_to_system): Variable removed.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23637
diff changeset
2450 mods = w32_kbd_mods_to_emacs (construct_console_modifiers (), wparam);
14461
4fe9540be594 (modifiers, modifier_key_support_tested,
Geoff Voelker <voelker@cs.washington.edu>
parents: 14353
diff changeset
2451
4fe9540be594 (modifiers, modifier_key_support_tested,
Geoff Voelker <voelker@cs.washington.edu>
parents: 14353
diff changeset
2452 return mods;
4fe9540be594 (modifiers, modifier_key_support_tested,
Geoff Voelker <voelker@cs.washington.edu>
parents: 14353
diff changeset
2453 }
4fe9540be594 (modifiers, modifier_key_support_tested,
Geoff Voelker <voelker@cs.washington.edu>
parents: 14353
diff changeset
2454
23681
af0276da2059 (Vw32_pass_optional_keys_to_system): Variable removed.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23637
diff changeset
2455 unsigned int
af0276da2059 (Vw32_pass_optional_keys_to_system): Variable removed.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23637
diff changeset
2456 map_keypad_keys (unsigned int virt_key, unsigned int extended)
af0276da2059 (Vw32_pass_optional_keys_to_system): Variable removed.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23637
diff changeset
2457 {
af0276da2059 (Vw32_pass_optional_keys_to_system): Variable removed.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23637
diff changeset
2458 if (virt_key < VK_CLEAR || virt_key > VK_DELETE)
af0276da2059 (Vw32_pass_optional_keys_to_system): Variable removed.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23637
diff changeset
2459 return virt_key;
af0276da2059 (Vw32_pass_optional_keys_to_system): Variable removed.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23637
diff changeset
2460
af0276da2059 (Vw32_pass_optional_keys_to_system): Variable removed.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23637
diff changeset
2461 if (virt_key == VK_RETURN)
14810
4dd6867765b9 (Vwin32_pass_alt_to_system,
Geoff Voelker <voelker@cs.washington.edu>
parents: 14461
diff changeset
2462 return (extended ? VK_NUMPAD_ENTER : VK_RETURN);
4dd6867765b9 (Vwin32_pass_alt_to_system,
Geoff Voelker <voelker@cs.washington.edu>
parents: 14461
diff changeset
2463
23681
af0276da2059 (Vw32_pass_optional_keys_to_system): Variable removed.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23637
diff changeset
2464 if (virt_key >= VK_PRIOR && virt_key <= VK_DOWN)
af0276da2059 (Vw32_pass_optional_keys_to_system): Variable removed.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23637
diff changeset
2465 return (!extended ? (VK_NUMPAD_PRIOR + (virt_key - VK_PRIOR)) : virt_key);
af0276da2059 (Vw32_pass_optional_keys_to_system): Variable removed.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23637
diff changeset
2466
af0276da2059 (Vw32_pass_optional_keys_to_system): Variable removed.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23637
diff changeset
2467 if (virt_key == VK_INSERT || virt_key == VK_DELETE)
af0276da2059 (Vw32_pass_optional_keys_to_system): Variable removed.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23637
diff changeset
2468 return (!extended ? (VK_NUMPAD_INSERT + (virt_key - VK_INSERT)) : virt_key);
af0276da2059 (Vw32_pass_optional_keys_to_system): Variable removed.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23637
diff changeset
2469
af0276da2059 (Vw32_pass_optional_keys_to_system): Variable removed.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23637
diff changeset
2470 if (virt_key == VK_CLEAR)
af0276da2059 (Vw32_pass_optional_keys_to_system): Variable removed.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23637
diff changeset
2471 return (!extended ? VK_NUMPAD_CLEAR : virt_key);
af0276da2059 (Vw32_pass_optional_keys_to_system): Variable removed.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23637
diff changeset
2472
af0276da2059 (Vw32_pass_optional_keys_to_system): Variable removed.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23637
diff changeset
2473 return virt_key;
af0276da2059 (Vw32_pass_optional_keys_to_system): Variable removed.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23637
diff changeset
2474 }
af0276da2059 (Vw32_pass_optional_keys_to_system): Variable removed.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23637
diff changeset
2475
af0276da2059 (Vw32_pass_optional_keys_to_system): Variable removed.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23637
diff changeset
2476 /* List of special key combinations which w32 would normally capture,
79387
0ca197abc593 (Fw32_registered_hot_keys): Don't return the nil values corresponding
Juanma Barranquero <lekktu@gmail.com>
parents: 79381
diff changeset
2477 but Emacs should grab instead. Not directly visible to lisp, to
23681
af0276da2059 (Vw32_pass_optional_keys_to_system): Variable removed.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23637
diff changeset
2478 simplify synchronization. Each item is an integer encoding a virtual
af0276da2059 (Vw32_pass_optional_keys_to_system): Variable removed.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23637
diff changeset
2479 key code and modifier combination to capture. */
86065
2557aa084b57 (Fw32_registered_hot_keys): Don't return the nil values corresponding
Juanma Barranquero <lekktu@gmail.com>
parents: 86053
diff changeset
2480 static Lisp_Object w32_grabbed_keys;
23681
af0276da2059 (Vw32_pass_optional_keys_to_system): Variable removed.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23637
diff changeset
2481
79387
0ca197abc593 (Fw32_registered_hot_keys): Don't return the nil values corresponding
Juanma Barranquero <lekktu@gmail.com>
parents: 79381
diff changeset
2482 #define HOTKEY(vk, mods) make_number (((vk) & 255) | ((mods) << 8))
23681
af0276da2059 (Vw32_pass_optional_keys_to_system): Variable removed.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23637
diff changeset
2483 #define HOTKEY_ID(k) (XFASTINT (k) & 0xbfff)
af0276da2059 (Vw32_pass_optional_keys_to_system): Variable removed.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23637
diff changeset
2484 #define HOTKEY_VK_CODE(k) (XFASTINT (k) & 255)
af0276da2059 (Vw32_pass_optional_keys_to_system): Variable removed.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23637
diff changeset
2485 #define HOTKEY_MODIFIERS(k) (XFASTINT (k) >> 8)
af0276da2059 (Vw32_pass_optional_keys_to_system): Variable removed.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23637
diff changeset
2486
55656
29b250a07fe0 (Fw32_register_hot_key, Fw32_unregister_hot_key)
Jason Rumney <jasonr@gnu.org>
parents: 55592
diff changeset
2487 #define RAW_HOTKEY_ID(k) ((k) & 0xbfff)
29b250a07fe0 (Fw32_register_hot_key, Fw32_unregister_hot_key)
Jason Rumney <jasonr@gnu.org>
parents: 55592
diff changeset
2488 #define RAW_HOTKEY_VK_CODE(k) ((k) & 255)
29b250a07fe0 (Fw32_register_hot_key, Fw32_unregister_hot_key)
Jason Rumney <jasonr@gnu.org>
parents: 55592
diff changeset
2489 #define RAW_HOTKEY_MODIFIERS(k) ((k) >> 8)
29b250a07fe0 (Fw32_register_hot_key, Fw32_unregister_hot_key)
Jason Rumney <jasonr@gnu.org>
parents: 55592
diff changeset
2490
23681
af0276da2059 (Vw32_pass_optional_keys_to_system): Variable removed.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23637
diff changeset
2491 /* Register hot-keys for reserved key combinations when Emacs has
af0276da2059 (Vw32_pass_optional_keys_to_system): Variable removed.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23637
diff changeset
2492 keyboard focus, since this is the only way Emacs can receive key
af0276da2059 (Vw32_pass_optional_keys_to_system): Variable removed.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23637
diff changeset
2493 combinations like Alt-Tab which are used by the system. */
af0276da2059 (Vw32_pass_optional_keys_to_system): Variable removed.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23637
diff changeset
2494
af0276da2059 (Vw32_pass_optional_keys_to_system): Variable removed.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23637
diff changeset
2495 static void
af0276da2059 (Vw32_pass_optional_keys_to_system): Variable removed.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23637
diff changeset
2496 register_hot_keys (hwnd)
af0276da2059 (Vw32_pass_optional_keys_to_system): Variable removed.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23637
diff changeset
2497 HWND hwnd;
af0276da2059 (Vw32_pass_optional_keys_to_system): Variable removed.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23637
diff changeset
2498 {
af0276da2059 (Vw32_pass_optional_keys_to_system): Variable removed.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23637
diff changeset
2499 Lisp_Object keylist;
af0276da2059 (Vw32_pass_optional_keys_to_system): Variable removed.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23637
diff changeset
2500
90970
3371fc48749b Replace uses of GC_* macros with the non-GC_ versions.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 90919
diff changeset
2501 /* Use CONSP, since we are called asynchronously. */
3371fc48749b Replace uses of GC_* macros with the non-GC_ versions.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 90919
diff changeset
2502 for (keylist = w32_grabbed_keys; CONSP (keylist); keylist = XCDR (keylist))
23681
af0276da2059 (Vw32_pass_optional_keys_to_system): Variable removed.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23637
diff changeset
2503 {
af0276da2059 (Vw32_pass_optional_keys_to_system): Variable removed.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23637
diff changeset
2504 Lisp_Object key = XCAR (keylist);
af0276da2059 (Vw32_pass_optional_keys_to_system): Variable removed.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23637
diff changeset
2505
af0276da2059 (Vw32_pass_optional_keys_to_system): Variable removed.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23637
diff changeset
2506 /* Deleted entries get set to nil. */
af0276da2059 (Vw32_pass_optional_keys_to_system): Variable removed.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23637
diff changeset
2507 if (!INTEGERP (key))
af0276da2059 (Vw32_pass_optional_keys_to_system): Variable removed.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23637
diff changeset
2508 continue;
af0276da2059 (Vw32_pass_optional_keys_to_system): Variable removed.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23637
diff changeset
2509
af0276da2059 (Vw32_pass_optional_keys_to_system): Variable removed.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23637
diff changeset
2510 RegisterHotKey (hwnd, HOTKEY_ID (key),
af0276da2059 (Vw32_pass_optional_keys_to_system): Variable removed.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23637
diff changeset
2511 HOTKEY_MODIFIERS (key), HOTKEY_VK_CODE (key));
af0276da2059 (Vw32_pass_optional_keys_to_system): Variable removed.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23637
diff changeset
2512 }
af0276da2059 (Vw32_pass_optional_keys_to_system): Variable removed.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23637
diff changeset
2513 }
af0276da2059 (Vw32_pass_optional_keys_to_system): Variable removed.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23637
diff changeset
2514
af0276da2059 (Vw32_pass_optional_keys_to_system): Variable removed.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23637
diff changeset
2515 static void
af0276da2059 (Vw32_pass_optional_keys_to_system): Variable removed.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23637
diff changeset
2516 unregister_hot_keys (hwnd)
af0276da2059 (Vw32_pass_optional_keys_to_system): Variable removed.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23637
diff changeset
2517 HWND hwnd;
af0276da2059 (Vw32_pass_optional_keys_to_system): Variable removed.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23637
diff changeset
2518 {
af0276da2059 (Vw32_pass_optional_keys_to_system): Variable removed.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23637
diff changeset
2519 Lisp_Object keylist;
af0276da2059 (Vw32_pass_optional_keys_to_system): Variable removed.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23637
diff changeset
2520
90970
3371fc48749b Replace uses of GC_* macros with the non-GC_ versions.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 90919
diff changeset
2521 for (keylist = w32_grabbed_keys; CONSP (keylist); keylist = XCDR (keylist))
23681
af0276da2059 (Vw32_pass_optional_keys_to_system): Variable removed.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23637
diff changeset
2522 {
af0276da2059 (Vw32_pass_optional_keys_to_system): Variable removed.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23637
diff changeset
2523 Lisp_Object key = XCAR (keylist);
af0276da2059 (Vw32_pass_optional_keys_to_system): Variable removed.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23637
diff changeset
2524
af0276da2059 (Vw32_pass_optional_keys_to_system): Variable removed.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23637
diff changeset
2525 if (!INTEGERP (key))
af0276da2059 (Vw32_pass_optional_keys_to_system): Variable removed.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23637
diff changeset
2526 continue;
af0276da2059 (Vw32_pass_optional_keys_to_system): Variable removed.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23637
diff changeset
2527
af0276da2059 (Vw32_pass_optional_keys_to_system): Variable removed.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23637
diff changeset
2528 UnregisterHotKey (hwnd, HOTKEY_ID (key));
af0276da2059 (Vw32_pass_optional_keys_to_system): Variable removed.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23637
diff changeset
2529 }
af0276da2059 (Vw32_pass_optional_keys_to_system): Variable removed.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23637
diff changeset
2530 }
af0276da2059 (Vw32_pass_optional_keys_to_system): Variable removed.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23637
diff changeset
2531
15147
38c0ce06203f (quit_char, Vwin32_enable_italics, Vwin32_enable_palette):
Geoff Voelker <voelker@cs.washington.edu>
parents: 15034
diff changeset
2532 /* Main message dispatch loop. */
38c0ce06203f (quit_char, Vwin32_enable_italics, Vwin32_enable_palette):
Geoff Voelker <voelker@cs.washington.edu>
parents: 15034
diff changeset
2533
19707
0181cc080316 Include limits.h and errno.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18508
diff changeset
2534 static void
0181cc080316 Include limits.h and errno.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18508
diff changeset
2535 w32_msg_pump (deferred_msg * msg_buf)
15147
38c0ce06203f (quit_char, Vwin32_enable_italics, Vwin32_enable_palette):
Geoff Voelker <voelker@cs.washington.edu>
parents: 15034
diff changeset
2536 {
38c0ce06203f (quit_char, Vwin32_enable_italics, Vwin32_enable_palette):
Geoff Voelker <voelker@cs.washington.edu>
parents: 15034
diff changeset
2537 MSG msg;
23681
af0276da2059 (Vw32_pass_optional_keys_to_system): Variable removed.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23637
diff changeset
2538 int result;
af0276da2059 (Vw32_pass_optional_keys_to_system): Variable removed.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23637
diff changeset
2539 HWND focus_window;
21874
c0871d40073e (msh_mousewheel): New variable.
Geoff Voelker <voelker@cs.washington.edu>
parents: 21735
diff changeset
2540
c0871d40073e (msh_mousewheel): New variable.
Geoff Voelker <voelker@cs.washington.edu>
parents: 21735
diff changeset
2541 msh_mousewheel = RegisterWindowMessage (MSH_MOUSEWHEEL);
47942
080b4586492b Fix typo in comment.
Juanma Barranquero <lekktu@gmail.com>
parents: 47731
diff changeset
2542
15147
38c0ce06203f (quit_char, Vwin32_enable_italics, Vwin32_enable_palette):
Geoff Voelker <voelker@cs.washington.edu>
parents: 15034
diff changeset
2543 while (GetMessage (&msg, NULL, 0, 0))
38c0ce06203f (quit_char, Vwin32_enable_italics, Vwin32_enable_palette):
Geoff Voelker <voelker@cs.washington.edu>
parents: 15034
diff changeset
2544 {
38c0ce06203f (quit_char, Vwin32_enable_italics, Vwin32_enable_palette):
Geoff Voelker <voelker@cs.washington.edu>
parents: 15034
diff changeset
2545 if (msg.hwnd == NULL)
38c0ce06203f (quit_char, Vwin32_enable_italics, Vwin32_enable_palette):
Geoff Voelker <voelker@cs.washington.edu>
parents: 15034
diff changeset
2546 {
38c0ce06203f (quit_char, Vwin32_enable_italics, Vwin32_enable_palette):
Geoff Voelker <voelker@cs.washington.edu>
parents: 15034
diff changeset
2547 switch (msg.message)
38c0ce06203f (quit_char, Vwin32_enable_italics, Vwin32_enable_palette):
Geoff Voelker <voelker@cs.washington.edu>
parents: 15034
diff changeset
2548 {
23950
d8f8533db4cc (w32_msg_pump): Ignore WM_NULL message posted to thread
Andrew Innes <andrewi@gnu.org>
parents: 23803
diff changeset
2549 case WM_NULL:
d8f8533db4cc (w32_msg_pump): Ignore WM_NULL message posted to thread
Andrew Innes <andrewi@gnu.org>
parents: 23803
diff changeset
2550 /* Produced by complete_deferred_msg; just ignore. */
d8f8533db4cc (w32_msg_pump): Ignore WM_NULL message posted to thread
Andrew Innes <andrewi@gnu.org>
parents: 23803
diff changeset
2551 break;
15147
38c0ce06203f (quit_char, Vwin32_enable_italics, Vwin32_enable_palette):
Geoff Voelker <voelker@cs.washington.edu>
parents: 15034
diff changeset
2552 case WM_EMACS_CREATEWINDOW:
78106
f9eb7f243bdc (w32_msg_pump) <WM_EMACS_CREATEWINDOW>: Initialize COM.
Jason Rumney <jasonr@gnu.org>
parents: 77995
diff changeset
2553 /* Initialize COM for this window. Even though we don't use it,
f9eb7f243bdc (w32_msg_pump) <WM_EMACS_CREATEWINDOW>: Initialize COM.
Jason Rumney <jasonr@gnu.org>
parents: 77995
diff changeset
2554 some third party shell extensions can cause it to be used in
f9eb7f243bdc (w32_msg_pump) <WM_EMACS_CREATEWINDOW>: Initialize COM.
Jason Rumney <jasonr@gnu.org>
parents: 77995
diff changeset
2555 system dialogs, which causes a crash if it is not initialized.
f9eb7f243bdc (w32_msg_pump) <WM_EMACS_CREATEWINDOW>: Initialize COM.
Jason Rumney <jasonr@gnu.org>
parents: 77995
diff changeset
2556 This is a known bug in Windows, which was fixed long ago, but
f9eb7f243bdc (w32_msg_pump) <WM_EMACS_CREATEWINDOW>: Initialize COM.
Jason Rumney <jasonr@gnu.org>
parents: 77995
diff changeset
2557 the patch for XP is not publically available until XP SP3,
f9eb7f243bdc (w32_msg_pump) <WM_EMACS_CREATEWINDOW>: Initialize COM.
Jason Rumney <jasonr@gnu.org>
parents: 77995
diff changeset
2558 and older versions will never be patched. */
f9eb7f243bdc (w32_msg_pump) <WM_EMACS_CREATEWINDOW>: Initialize COM.
Jason Rumney <jasonr@gnu.org>
parents: 77995
diff changeset
2559 CoInitialize (NULL);
16588
481b7874a1e9 Change identifiers of the form win32* to w32*.
Geoff Voelker <voelker@cs.washington.edu>
parents: 16259
diff changeset
2560 w32_createwindow ((struct frame *) msg.wParam);
19707
0181cc080316 Include limits.h and errno.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18508
diff changeset
2561 if (!PostThreadMessage (dwMainThreadId, WM_EMACS_DONE, 0, 0))
0181cc080316 Include limits.h and errno.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18508
diff changeset
2562 abort ();
15147
38c0ce06203f (quit_char, Vwin32_enable_italics, Vwin32_enable_palette):
Geoff Voelker <voelker@cs.washington.edu>
parents: 15034
diff changeset
2563 break;
21608
d191a8737145 (w32_msg_pump): Handle WM_EMACS_SETLOCALE.
Geoff Voelker <voelker@cs.washington.edu>
parents: 19707
diff changeset
2564 case WM_EMACS_SETLOCALE:
d191a8737145 (w32_msg_pump): Handle WM_EMACS_SETLOCALE.
Geoff Voelker <voelker@cs.washington.edu>
parents: 19707
diff changeset
2565 SetThreadLocale (msg.wParam);
d191a8737145 (w32_msg_pump): Handle WM_EMACS_SETLOCALE.
Geoff Voelker <voelker@cs.washington.edu>
parents: 19707
diff changeset
2566 /* Reply is not expected. */
d191a8737145 (w32_msg_pump): Handle WM_EMACS_SETLOCALE.
Geoff Voelker <voelker@cs.washington.edu>
parents: 19707
diff changeset
2567 break;
23681
af0276da2059 (Vw32_pass_optional_keys_to_system): Variable removed.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23637
diff changeset
2568 case WM_EMACS_SETKEYBOARDLAYOUT:
af0276da2059 (Vw32_pass_optional_keys_to_system): Variable removed.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23637
diff changeset
2569 result = (int) ActivateKeyboardLayout ((HKL) msg.wParam, 0);
af0276da2059 (Vw32_pass_optional_keys_to_system): Variable removed.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23637
diff changeset
2570 if (!PostThreadMessage (dwMainThreadId, WM_EMACS_DONE,
af0276da2059 (Vw32_pass_optional_keys_to_system): Variable removed.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23637
diff changeset
2571 result, 0))
af0276da2059 (Vw32_pass_optional_keys_to_system): Variable removed.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23637
diff changeset
2572 abort ();
af0276da2059 (Vw32_pass_optional_keys_to_system): Variable removed.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23637
diff changeset
2573 break;
af0276da2059 (Vw32_pass_optional_keys_to_system): Variable removed.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23637
diff changeset
2574 case WM_EMACS_REGISTER_HOT_KEY:
af0276da2059 (Vw32_pass_optional_keys_to_system): Variable removed.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23637
diff changeset
2575 focus_window = GetFocus ();
af0276da2059 (Vw32_pass_optional_keys_to_system): Variable removed.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23637
diff changeset
2576 if (focus_window != NULL)
af0276da2059 (Vw32_pass_optional_keys_to_system): Variable removed.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23637
diff changeset
2577 RegisterHotKey (focus_window,
55656
29b250a07fe0 (Fw32_register_hot_key, Fw32_unregister_hot_key)
Jason Rumney <jasonr@gnu.org>
parents: 55592
diff changeset
2578 RAW_HOTKEY_ID (msg.wParam),
29b250a07fe0 (Fw32_register_hot_key, Fw32_unregister_hot_key)
Jason Rumney <jasonr@gnu.org>
parents: 55592
diff changeset
2579 RAW_HOTKEY_MODIFIERS (msg.wParam),
29b250a07fe0 (Fw32_register_hot_key, Fw32_unregister_hot_key)
Jason Rumney <jasonr@gnu.org>
parents: 55592
diff changeset
2580 RAW_HOTKEY_VK_CODE (msg.wParam));
23681
af0276da2059 (Vw32_pass_optional_keys_to_system): Variable removed.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23637
diff changeset
2581 /* Reply is not expected. */
af0276da2059 (Vw32_pass_optional_keys_to_system): Variable removed.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23637
diff changeset
2582 break;
af0276da2059 (Vw32_pass_optional_keys_to_system): Variable removed.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23637
diff changeset
2583 case WM_EMACS_UNREGISTER_HOT_KEY:
af0276da2059 (Vw32_pass_optional_keys_to_system): Variable removed.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23637
diff changeset
2584 focus_window = GetFocus ();
af0276da2059 (Vw32_pass_optional_keys_to_system): Variable removed.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23637
diff changeset
2585 if (focus_window != NULL)
55656
29b250a07fe0 (Fw32_register_hot_key, Fw32_unregister_hot_key)
Jason Rumney <jasonr@gnu.org>
parents: 55592
diff changeset
2586 UnregisterHotKey (focus_window, RAW_HOTKEY_ID (msg.wParam));
23803
f112aa8f8f5d (Vw32_phantom_key_code): New variable.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23801
diff changeset
2587 /* Mark item as erased. NB: this code must be
f112aa8f8f5d (Vw32_phantom_key_code): New variable.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23801
diff changeset
2588 thread-safe. The next line is okay because the cons
f112aa8f8f5d (Vw32_phantom_key_code): New variable.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23801
diff changeset
2589 cell is never made into garbage and is not relocated by
f112aa8f8f5d (Vw32_phantom_key_code): New variable.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23801
diff changeset
2590 GC. */
55656
29b250a07fe0 (Fw32_register_hot_key, Fw32_unregister_hot_key)
Jason Rumney <jasonr@gnu.org>
parents: 55592
diff changeset
2591 XSETCAR ((Lisp_Object) ((EMACS_INT) msg.lParam), Qnil);
23681
af0276da2059 (Vw32_pass_optional_keys_to_system): Variable removed.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23637
diff changeset
2592 if (!PostThreadMessage (dwMainThreadId, WM_EMACS_DONE, 0, 0))
af0276da2059 (Vw32_pass_optional_keys_to_system): Variable removed.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23637
diff changeset
2593 abort ();
af0276da2059 (Vw32_pass_optional_keys_to_system): Variable removed.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23637
diff changeset
2594 break;
23803
f112aa8f8f5d (Vw32_phantom_key_code): New variable.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23801
diff changeset
2595 case WM_EMACS_TOGGLE_LOCK_KEY:
f112aa8f8f5d (Vw32_phantom_key_code): New variable.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23801
diff changeset
2596 {
f112aa8f8f5d (Vw32_phantom_key_code): New variable.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23801
diff changeset
2597 int vk_code = (int) msg.wParam;
f112aa8f8f5d (Vw32_phantom_key_code): New variable.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23801
diff changeset
2598 int cur_state = (GetKeyState (vk_code) & 1);
55656
29b250a07fe0 (Fw32_register_hot_key, Fw32_unregister_hot_key)
Jason Rumney <jasonr@gnu.org>
parents: 55592
diff changeset
2599 Lisp_Object new_state = (Lisp_Object) ((EMACS_INT) msg.lParam);
23803
f112aa8f8f5d (Vw32_phantom_key_code): New variable.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23801
diff changeset
2600
f112aa8f8f5d (Vw32_phantom_key_code): New variable.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23801
diff changeset
2601 /* NB: This code must be thread-safe. It is safe to
f112aa8f8f5d (Vw32_phantom_key_code): New variable.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23801
diff changeset
2602 call NILP because symbols are not relocated by GC,
f112aa8f8f5d (Vw32_phantom_key_code): New variable.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23801
diff changeset
2603 and pointer here is not touched by GC (so the markbit
f112aa8f8f5d (Vw32_phantom_key_code): New variable.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23801
diff changeset
2604 can't be set). Numbers are safe because they are
f112aa8f8f5d (Vw32_phantom_key_code): New variable.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23801
diff changeset
2605 immediate values. */
f112aa8f8f5d (Vw32_phantom_key_code): New variable.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23801
diff changeset
2606 if (NILP (new_state)
f112aa8f8f5d (Vw32_phantom_key_code): New variable.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23801
diff changeset
2607 || (NUMBERP (new_state)
35288
912ea0b8e09b (x_to_w32_color, x_set_icon_name, xlfd_strip_height)
Jason Rumney <jasonr@gnu.org>
parents: 34998
diff changeset
2608 && ((XUINT (new_state)) & 1) != cur_state))
23803
f112aa8f8f5d (Vw32_phantom_key_code): New variable.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23801
diff changeset
2609 {
f112aa8f8f5d (Vw32_phantom_key_code): New variable.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23801
diff changeset
2610 one_w32_display_info.faked_key = vk_code;
f112aa8f8f5d (Vw32_phantom_key_code): New variable.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23801
diff changeset
2611
f112aa8f8f5d (Vw32_phantom_key_code): New variable.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23801
diff changeset
2612 keybd_event ((BYTE) vk_code,
f112aa8f8f5d (Vw32_phantom_key_code): New variable.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23801
diff changeset
2613 (BYTE) MapVirtualKey (vk_code, 0),
f112aa8f8f5d (Vw32_phantom_key_code): New variable.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23801
diff changeset
2614 KEYEVENTF_EXTENDEDKEY | KEYEVENTF_KEYUP, 0);
f112aa8f8f5d (Vw32_phantom_key_code): New variable.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23801
diff changeset
2615 keybd_event ((BYTE) vk_code,
f112aa8f8f5d (Vw32_phantom_key_code): New variable.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23801
diff changeset
2616 (BYTE) MapVirtualKey (vk_code, 0),
f112aa8f8f5d (Vw32_phantom_key_code): New variable.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23801
diff changeset
2617 KEYEVENTF_EXTENDEDKEY | 0, 0);
f112aa8f8f5d (Vw32_phantom_key_code): New variable.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23801
diff changeset
2618 keybd_event ((BYTE) vk_code,
f112aa8f8f5d (Vw32_phantom_key_code): New variable.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23801
diff changeset
2619 (BYTE) MapVirtualKey (vk_code, 0),
f112aa8f8f5d (Vw32_phantom_key_code): New variable.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23801
diff changeset
2620 KEYEVENTF_EXTENDEDKEY | KEYEVENTF_KEYUP, 0);
f112aa8f8f5d (Vw32_phantom_key_code): New variable.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23801
diff changeset
2621 cur_state = !cur_state;
f112aa8f8f5d (Vw32_phantom_key_code): New variable.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23801
diff changeset
2622 }
f112aa8f8f5d (Vw32_phantom_key_code): New variable.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23801
diff changeset
2623 if (!PostThreadMessage (dwMainThreadId, WM_EMACS_DONE,
f112aa8f8f5d (Vw32_phantom_key_code): New variable.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23801
diff changeset
2624 cur_state, 0))
f112aa8f8f5d (Vw32_phantom_key_code): New variable.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23801
diff changeset
2625 abort ();
f112aa8f8f5d (Vw32_phantom_key_code): New variable.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23801
diff changeset
2626 }
f112aa8f8f5d (Vw32_phantom_key_code): New variable.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23801
diff changeset
2627 break;
92362
099207aa138c (w32_msg_pump): Disable debug code.
Jason Rumney <jasonr@gnu.org>
parents: 92175
diff changeset
2628 #ifdef MSG_DEBUG
099207aa138c (w32_msg_pump): Disable debug code.
Jason Rumney <jasonr@gnu.org>
parents: 92175
diff changeset
2629 /* Broadcast messages make it here, so you need to be looking
099207aa138c (w32_msg_pump): Disable debug code.
Jason Rumney <jasonr@gnu.org>
parents: 92175
diff changeset
2630 for something in particular for this to be useful. */
19707
0181cc080316 Include limits.h and errno.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18508
diff changeset
2631 default:
0181cc080316 Include limits.h and errno.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18508
diff changeset
2632 DebPrint (("msg %x not expected by w32_msg_pump\n", msg.message));
92362
099207aa138c (w32_msg_pump): Disable debug code.
Jason Rumney <jasonr@gnu.org>
parents: 92175
diff changeset
2633 #endif
15147
38c0ce06203f (quit_char, Vwin32_enable_italics, Vwin32_enable_palette):
Geoff Voelker <voelker@cs.washington.edu>
parents: 15034
diff changeset
2634 }
38c0ce06203f (quit_char, Vwin32_enable_italics, Vwin32_enable_palette):
Geoff Voelker <voelker@cs.washington.edu>
parents: 15034
diff changeset
2635 }
38c0ce06203f (quit_char, Vwin32_enable_italics, Vwin32_enable_palette):
Geoff Voelker <voelker@cs.washington.edu>
parents: 15034
diff changeset
2636 else
38c0ce06203f (quit_char, Vwin32_enable_italics, Vwin32_enable_palette):
Geoff Voelker <voelker@cs.washington.edu>
parents: 15034
diff changeset
2637 {
38c0ce06203f (quit_char, Vwin32_enable_italics, Vwin32_enable_palette):
Geoff Voelker <voelker@cs.washington.edu>
parents: 15034
diff changeset
2638 DispatchMessage (&msg);
38c0ce06203f (quit_char, Vwin32_enable_italics, Vwin32_enable_palette):
Geoff Voelker <voelker@cs.washington.edu>
parents: 15034
diff changeset
2639 }
19707
0181cc080316 Include limits.h and errno.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18508
diff changeset
2640
0181cc080316 Include limits.h and errno.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18508
diff changeset
2641 /* Exit nested loop when our deferred message has completed. */
0181cc080316 Include limits.h and errno.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18508
diff changeset
2642 if (msg_buf->completed)
0181cc080316 Include limits.h and errno.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18508
diff changeset
2643 break;
15147
38c0ce06203f (quit_char, Vwin32_enable_italics, Vwin32_enable_palette):
Geoff Voelker <voelker@cs.washington.edu>
parents: 15034
diff changeset
2644 }
19707
0181cc080316 Include limits.h and errno.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18508
diff changeset
2645 }
0181cc080316 Include limits.h and errno.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18508
diff changeset
2646
0181cc080316 Include limits.h and errno.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18508
diff changeset
2647 deferred_msg * deferred_msg_head;
0181cc080316 Include limits.h and errno.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18508
diff changeset
2648
0181cc080316 Include limits.h and errno.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18508
diff changeset
2649 static deferred_msg *
0181cc080316 Include limits.h and errno.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18508
diff changeset
2650 find_deferred_msg (HWND hwnd, UINT msg)
0181cc080316 Include limits.h and errno.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18508
diff changeset
2651 {
0181cc080316 Include limits.h and errno.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18508
diff changeset
2652 deferred_msg * item;
0181cc080316 Include limits.h and errno.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18508
diff changeset
2653
0181cc080316 Include limits.h and errno.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18508
diff changeset
2654 /* Don't actually need synchronization for read access, since
0181cc080316 Include limits.h and errno.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18508
diff changeset
2655 modification of single pointer is always atomic. */
0181cc080316 Include limits.h and errno.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18508
diff changeset
2656 /* enter_crit (); */
0181cc080316 Include limits.h and errno.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18508
diff changeset
2657
0181cc080316 Include limits.h and errno.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18508
diff changeset
2658 for (item = deferred_msg_head; item != NULL; item = item->next)
0181cc080316 Include limits.h and errno.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18508
diff changeset
2659 if (item->w32msg.msg.hwnd == hwnd
0181cc080316 Include limits.h and errno.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18508
diff changeset
2660 && item->w32msg.msg.message == msg)
0181cc080316 Include limits.h and errno.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18508
diff changeset
2661 break;
0181cc080316 Include limits.h and errno.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18508
diff changeset
2662
0181cc080316 Include limits.h and errno.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18508
diff changeset
2663 /* leave_crit (); */
0181cc080316 Include limits.h and errno.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18508
diff changeset
2664
0181cc080316 Include limits.h and errno.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18508
diff changeset
2665 return item;
0181cc080316 Include limits.h and errno.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18508
diff changeset
2666 }
0181cc080316 Include limits.h and errno.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18508
diff changeset
2667
0181cc080316 Include limits.h and errno.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18508
diff changeset
2668 static LRESULT
0181cc080316 Include limits.h and errno.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18508
diff changeset
2669 send_deferred_msg (deferred_msg * msg_buf,
0181cc080316 Include limits.h and errno.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18508
diff changeset
2670 HWND hwnd,
0181cc080316 Include limits.h and errno.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18508
diff changeset
2671 UINT msg,
0181cc080316 Include limits.h and errno.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18508
diff changeset
2672 WPARAM wParam,
0181cc080316 Include limits.h and errno.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18508
diff changeset
2673 LPARAM lParam)
0181cc080316 Include limits.h and errno.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18508
diff changeset
2674 {
0181cc080316 Include limits.h and errno.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18508
diff changeset
2675 /* Only input thread can send deferred messages. */
0181cc080316 Include limits.h and errno.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18508
diff changeset
2676 if (GetCurrentThreadId () != dwWindowsThreadId)
0181cc080316 Include limits.h and errno.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18508
diff changeset
2677 abort ();
0181cc080316 Include limits.h and errno.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18508
diff changeset
2678
0181cc080316 Include limits.h and errno.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18508
diff changeset
2679 /* It is an error to send a message that is already deferred. */
0181cc080316 Include limits.h and errno.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18508
diff changeset
2680 if (find_deferred_msg (hwnd, msg) != NULL)
0181cc080316 Include limits.h and errno.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18508
diff changeset
2681 abort ();
0181cc080316 Include limits.h and errno.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18508
diff changeset
2682
0181cc080316 Include limits.h and errno.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18508
diff changeset
2683 /* Enforced synchronization is not needed because this is the only
0181cc080316 Include limits.h and errno.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18508
diff changeset
2684 function that alters deferred_msg_head, and the following critical
0181cc080316 Include limits.h and errno.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18508
diff changeset
2685 section is guaranteed to only be serially reentered (since only the
0181cc080316 Include limits.h and errno.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18508
diff changeset
2686 input thread can call us). */
0181cc080316 Include limits.h and errno.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18508
diff changeset
2687
0181cc080316 Include limits.h and errno.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18508
diff changeset
2688 /* enter_crit (); */
0181cc080316 Include limits.h and errno.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18508
diff changeset
2689
0181cc080316 Include limits.h and errno.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18508
diff changeset
2690 msg_buf->completed = 0;
0181cc080316 Include limits.h and errno.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18508
diff changeset
2691 msg_buf->next = deferred_msg_head;
0181cc080316 Include limits.h and errno.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18508
diff changeset
2692 deferred_msg_head = msg_buf;
0181cc080316 Include limits.h and errno.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18508
diff changeset
2693 my_post_msg (&msg_buf->w32msg, hwnd, msg, wParam, lParam);
0181cc080316 Include limits.h and errno.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18508
diff changeset
2694
0181cc080316 Include limits.h and errno.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18508
diff changeset
2695 /* leave_crit (); */
0181cc080316 Include limits.h and errno.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18508
diff changeset
2696
0181cc080316 Include limits.h and errno.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18508
diff changeset
2697 /* Start a new nested message loop to process other messages until
0181cc080316 Include limits.h and errno.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18508
diff changeset
2698 this one is completed. */
0181cc080316 Include limits.h and errno.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18508
diff changeset
2699 w32_msg_pump (msg_buf);
0181cc080316 Include limits.h and errno.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18508
diff changeset
2700
0181cc080316 Include limits.h and errno.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18508
diff changeset
2701 deferred_msg_head = msg_buf->next;
0181cc080316 Include limits.h and errno.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18508
diff changeset
2702
0181cc080316 Include limits.h and errno.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18508
diff changeset
2703 return msg_buf->result;
0181cc080316 Include limits.h and errno.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18508
diff changeset
2704 }
0181cc080316 Include limits.h and errno.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18508
diff changeset
2705
0181cc080316 Include limits.h and errno.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18508
diff changeset
2706 void
0181cc080316 Include limits.h and errno.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18508
diff changeset
2707 complete_deferred_msg (HWND hwnd, UINT msg, LRESULT result)
0181cc080316 Include limits.h and errno.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18508
diff changeset
2708 {
0181cc080316 Include limits.h and errno.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18508
diff changeset
2709 deferred_msg * msg_buf = find_deferred_msg (hwnd, msg);
0181cc080316 Include limits.h and errno.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18508
diff changeset
2710
0181cc080316 Include limits.h and errno.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18508
diff changeset
2711 if (msg_buf == NULL)
79387
0ca197abc593 (Fw32_registered_hot_keys): Don't return the nil values corresponding
Juanma Barranquero <lekktu@gmail.com>
parents: 79381
diff changeset
2712 /* Message may have been cancelled, so don't abort. */
23950
d8f8533db4cc (w32_msg_pump): Ignore WM_NULL message posted to thread
Andrew Innes <andrewi@gnu.org>
parents: 23803
diff changeset
2713 return;
19707
0181cc080316 Include limits.h and errno.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18508
diff changeset
2714
0181cc080316 Include limits.h and errno.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18508
diff changeset
2715 msg_buf->result = result;
0181cc080316 Include limits.h and errno.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18508
diff changeset
2716 msg_buf->completed = 1;
0181cc080316 Include limits.h and errno.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18508
diff changeset
2717
0181cc080316 Include limits.h and errno.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18508
diff changeset
2718 /* Ensure input thread is woken so it notices the completion. */
0181cc080316 Include limits.h and errno.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18508
diff changeset
2719 PostThreadMessage (dwWindowsThreadId, WM_NULL, 0, 0);
0181cc080316 Include limits.h and errno.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18508
diff changeset
2720 }
0181cc080316 Include limits.h and errno.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18508
diff changeset
2721
86065
2557aa084b57 (Fw32_registered_hot_keys): Don't return the nil values corresponding
Juanma Barranquero <lekktu@gmail.com>
parents: 86053
diff changeset
2722 static void
23950
d8f8533db4cc (w32_msg_pump): Ignore WM_NULL message posted to thread
Andrew Innes <andrewi@gnu.org>
parents: 23803
diff changeset
2723 cancel_all_deferred_msgs ()
d8f8533db4cc (w32_msg_pump): Ignore WM_NULL message posted to thread
Andrew Innes <andrewi@gnu.org>
parents: 23803
diff changeset
2724 {
d8f8533db4cc (w32_msg_pump): Ignore WM_NULL message posted to thread
Andrew Innes <andrewi@gnu.org>
parents: 23803
diff changeset
2725 deferred_msg * item;
d8f8533db4cc (w32_msg_pump): Ignore WM_NULL message posted to thread
Andrew Innes <andrewi@gnu.org>
parents: 23803
diff changeset
2726
d8f8533db4cc (w32_msg_pump): Ignore WM_NULL message posted to thread
Andrew Innes <andrewi@gnu.org>
parents: 23803
diff changeset
2727 /* Don't actually need synchronization for read access, since
d8f8533db4cc (w32_msg_pump): Ignore WM_NULL message posted to thread
Andrew Innes <andrewi@gnu.org>
parents: 23803
diff changeset
2728 modification of single pointer is always atomic. */
d8f8533db4cc (w32_msg_pump): Ignore WM_NULL message posted to thread
Andrew Innes <andrewi@gnu.org>
parents: 23803
diff changeset
2729 /* enter_crit (); */
d8f8533db4cc (w32_msg_pump): Ignore WM_NULL message posted to thread
Andrew Innes <andrewi@gnu.org>
parents: 23803
diff changeset
2730
d8f8533db4cc (w32_msg_pump): Ignore WM_NULL message posted to thread
Andrew Innes <andrewi@gnu.org>
parents: 23803
diff changeset
2731 for (item = deferred_msg_head; item != NULL; item = item->next)
d8f8533db4cc (w32_msg_pump): Ignore WM_NULL message posted to thread
Andrew Innes <andrewi@gnu.org>
parents: 23803
diff changeset
2732 {
d8f8533db4cc (w32_msg_pump): Ignore WM_NULL message posted to thread
Andrew Innes <andrewi@gnu.org>
parents: 23803
diff changeset
2733 item->result = 0;
d8f8533db4cc (w32_msg_pump): Ignore WM_NULL message posted to thread
Andrew Innes <andrewi@gnu.org>
parents: 23803
diff changeset
2734 item->completed = 1;
d8f8533db4cc (w32_msg_pump): Ignore WM_NULL message posted to thread
Andrew Innes <andrewi@gnu.org>
parents: 23803
diff changeset
2735 }
d8f8533db4cc (w32_msg_pump): Ignore WM_NULL message posted to thread
Andrew Innes <andrewi@gnu.org>
parents: 23803
diff changeset
2736
d8f8533db4cc (w32_msg_pump): Ignore WM_NULL message posted to thread
Andrew Innes <andrewi@gnu.org>
parents: 23803
diff changeset
2737 /* leave_crit (); */
d8f8533db4cc (w32_msg_pump): Ignore WM_NULL message posted to thread
Andrew Innes <andrewi@gnu.org>
parents: 23803
diff changeset
2738
d8f8533db4cc (w32_msg_pump): Ignore WM_NULL message posted to thread
Andrew Innes <andrewi@gnu.org>
parents: 23803
diff changeset
2739 /* Ensure input thread is woken so it notices the completion. */
d8f8533db4cc (w32_msg_pump): Ignore WM_NULL message posted to thread
Andrew Innes <andrewi@gnu.org>
parents: 23803
diff changeset
2740 PostThreadMessage (dwWindowsThreadId, WM_NULL, 0, 0);
d8f8533db4cc (w32_msg_pump): Ignore WM_NULL message posted to thread
Andrew Innes <andrewi@gnu.org>
parents: 23803
diff changeset
2741 }
19707
0181cc080316 Include limits.h and errno.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18508
diff changeset
2742
74221
3146bd0e5646 (w32_msg_worker): Define as WINAPI and arg as void pointer.
Jason Rumney <jasonr@gnu.org>
parents: 73674
diff changeset
2743 DWORD WINAPI
3146bd0e5646 (w32_msg_worker): Define as WINAPI and arg as void pointer.
Jason Rumney <jasonr@gnu.org>
parents: 73674
diff changeset
2744 w32_msg_worker (void *arg)
19707
0181cc080316 Include limits.h and errno.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18508
diff changeset
2745 {
0181cc080316 Include limits.h and errno.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18508
diff changeset
2746 MSG msg;
0181cc080316 Include limits.h and errno.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18508
diff changeset
2747 deferred_msg dummy_buf;
0181cc080316 Include limits.h and errno.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18508
diff changeset
2748
0181cc080316 Include limits.h and errno.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18508
diff changeset
2749 /* Ensure our message queue is created */
47942
080b4586492b Fix typo in comment.
Juanma Barranquero <lekktu@gmail.com>
parents: 47731
diff changeset
2750
19707
0181cc080316 Include limits.h and errno.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18508
diff changeset
2751 PeekMessage (&msg, NULL, 0, 0, PM_NOREMOVE);
47942
080b4586492b Fix typo in comment.
Juanma Barranquero <lekktu@gmail.com>
parents: 47731
diff changeset
2752
19707
0181cc080316 Include limits.h and errno.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18508
diff changeset
2753 if (!PostThreadMessage (dwMainThreadId, WM_EMACS_DONE, 0, 0))
0181cc080316 Include limits.h and errno.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18508
diff changeset
2754 abort ();
0181cc080316 Include limits.h and errno.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18508
diff changeset
2755
0181cc080316 Include limits.h and errno.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18508
diff changeset
2756 memset (&dummy_buf, 0, sizeof (dummy_buf));
0181cc080316 Include limits.h and errno.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18508
diff changeset
2757 dummy_buf.w32msg.msg.hwnd = NULL;
0181cc080316 Include limits.h and errno.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18508
diff changeset
2758 dummy_buf.w32msg.msg.message = WM_NULL;
0181cc080316 Include limits.h and errno.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18508
diff changeset
2759
94432
2dd3f3069c1c (Fw32_define_rgb_color): Fix typo in docstring.
Juanma Barranquero <lekktu@gmail.com>
parents: 93599
diff changeset
2760 /* This is the initial message loop which should only exit when the
19707
0181cc080316 Include limits.h and errno.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18508
diff changeset
2761 application quits. */
0181cc080316 Include limits.h and errno.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18508
diff changeset
2762 w32_msg_pump (&dummy_buf);
0181cc080316 Include limits.h and errno.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18508
diff changeset
2763
0181cc080316 Include limits.h and errno.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18508
diff changeset
2764 return 0;
15147
38c0ce06203f (quit_char, Vwin32_enable_italics, Vwin32_enable_palette):
Geoff Voelker <voelker@cs.washington.edu>
parents: 15034
diff changeset
2765 }
38c0ce06203f (quit_char, Vwin32_enable_italics, Vwin32_enable_palette):
Geoff Voelker <voelker@cs.washington.edu>
parents: 15034
diff changeset
2766
23950
d8f8533db4cc (w32_msg_pump): Ignore WM_NULL message posted to thread
Andrew Innes <andrewi@gnu.org>
parents: 23803
diff changeset
2767 static void
69426
46a8c3e0161d (signal_user_input): New function.
Jason Rumney <jasonr@gnu.org>
parents: 69406
diff changeset
2768 signal_user_input ()
46a8c3e0161d (signal_user_input): New function.
Jason Rumney <jasonr@gnu.org>
parents: 69406
diff changeset
2769 {
46a8c3e0161d (signal_user_input): New function.
Jason Rumney <jasonr@gnu.org>
parents: 69406
diff changeset
2770 /* Interrupt any lisp that wants to be interrupted by input. */
46a8c3e0161d (signal_user_input): New function.
Jason Rumney <jasonr@gnu.org>
parents: 69406
diff changeset
2771 if (!NILP (Vthrow_on_input))
46a8c3e0161d (signal_user_input): New function.
Jason Rumney <jasonr@gnu.org>
parents: 69406
diff changeset
2772 {
46a8c3e0161d (signal_user_input): New function.
Jason Rumney <jasonr@gnu.org>
parents: 69406
diff changeset
2773 Vquit_flag = Vthrow_on_input;
46a8c3e0161d (signal_user_input): New function.
Jason Rumney <jasonr@gnu.org>
parents: 69406
diff changeset
2774 /* If we're inside a function that wants immediate quits,
46a8c3e0161d (signal_user_input): New function.
Jason Rumney <jasonr@gnu.org>
parents: 69406
diff changeset
2775 do it now. */
46a8c3e0161d (signal_user_input): New function.
Jason Rumney <jasonr@gnu.org>
parents: 69406
diff changeset
2776 if (immediate_quit && NILP (Vinhibit_quit))
46a8c3e0161d (signal_user_input): New function.
Jason Rumney <jasonr@gnu.org>
parents: 69406
diff changeset
2777 {
46a8c3e0161d (signal_user_input): New function.
Jason Rumney <jasonr@gnu.org>
parents: 69406
diff changeset
2778 immediate_quit = 0;
46a8c3e0161d (signal_user_input): New function.
Jason Rumney <jasonr@gnu.org>
parents: 69406
diff changeset
2779 QUIT;
46a8c3e0161d (signal_user_input): New function.
Jason Rumney <jasonr@gnu.org>
parents: 69406
diff changeset
2780 }
46a8c3e0161d (signal_user_input): New function.
Jason Rumney <jasonr@gnu.org>
parents: 69406
diff changeset
2781 }
46a8c3e0161d (signal_user_input): New function.
Jason Rumney <jasonr@gnu.org>
parents: 69406
diff changeset
2782 }
46a8c3e0161d (signal_user_input): New function.
Jason Rumney <jasonr@gnu.org>
parents: 69406
diff changeset
2783
46a8c3e0161d (signal_user_input): New function.
Jason Rumney <jasonr@gnu.org>
parents: 69406
diff changeset
2784
46a8c3e0161d (signal_user_input): New function.
Jason Rumney <jasonr@gnu.org>
parents: 69406
diff changeset
2785 static void
23950
d8f8533db4cc (w32_msg_pump): Ignore WM_NULL message posted to thread
Andrew Innes <andrewi@gnu.org>
parents: 23803
diff changeset
2786 post_character_message (hwnd, msg, wParam, lParam, modifiers)
d8f8533db4cc (w32_msg_pump): Ignore WM_NULL message posted to thread
Andrew Innes <andrewi@gnu.org>
parents: 23803
diff changeset
2787 HWND hwnd;
d8f8533db4cc (w32_msg_pump): Ignore WM_NULL message posted to thread
Andrew Innes <andrewi@gnu.org>
parents: 23803
diff changeset
2788 UINT msg;
d8f8533db4cc (w32_msg_pump): Ignore WM_NULL message posted to thread
Andrew Innes <andrewi@gnu.org>
parents: 23803
diff changeset
2789 WPARAM wParam;
d8f8533db4cc (w32_msg_pump): Ignore WM_NULL message posted to thread
Andrew Innes <andrewi@gnu.org>
parents: 23803
diff changeset
2790 LPARAM lParam;
d8f8533db4cc (w32_msg_pump): Ignore WM_NULL message posted to thread
Andrew Innes <andrewi@gnu.org>
parents: 23803
diff changeset
2791 DWORD modifiers;
d8f8533db4cc (w32_msg_pump): Ignore WM_NULL message posted to thread
Andrew Innes <andrewi@gnu.org>
parents: 23803
diff changeset
2792
d8f8533db4cc (w32_msg_pump): Ignore WM_NULL message posted to thread
Andrew Innes <andrewi@gnu.org>
parents: 23803
diff changeset
2793 {
d8f8533db4cc (w32_msg_pump): Ignore WM_NULL message posted to thread
Andrew Innes <andrewi@gnu.org>
parents: 23803
diff changeset
2794 W32Msg wmsg;
d8f8533db4cc (w32_msg_pump): Ignore WM_NULL message posted to thread
Andrew Innes <andrewi@gnu.org>
parents: 23803
diff changeset
2795
d8f8533db4cc (w32_msg_pump): Ignore WM_NULL message posted to thread
Andrew Innes <andrewi@gnu.org>
parents: 23803
diff changeset
2796 wmsg.dwModifiers = modifiers;
d8f8533db4cc (w32_msg_pump): Ignore WM_NULL message posted to thread
Andrew Innes <andrewi@gnu.org>
parents: 23803
diff changeset
2797
d8f8533db4cc (w32_msg_pump): Ignore WM_NULL message posted to thread
Andrew Innes <andrewi@gnu.org>
parents: 23803
diff changeset
2798 /* Detect quit_char and set quit-flag directly. Note that we
d8f8533db4cc (w32_msg_pump): Ignore WM_NULL message posted to thread
Andrew Innes <andrewi@gnu.org>
parents: 23803
diff changeset
2799 still need to post a message to ensure the main thread will be
79387
0ca197abc593 (Fw32_registered_hot_keys): Don't return the nil values corresponding
Juanma Barranquero <lekktu@gmail.com>
parents: 79381
diff changeset
2800 woken up if blocked in sys_select, but we do NOT want to post
23950
d8f8533db4cc (w32_msg_pump): Ignore WM_NULL message posted to thread
Andrew Innes <andrewi@gnu.org>
parents: 23803
diff changeset
2801 the quit_char message itself (because it will usually be as if
d8f8533db4cc (w32_msg_pump): Ignore WM_NULL message posted to thread
Andrew Innes <andrewi@gnu.org>
parents: 23803
diff changeset
2802 the user had typed quit_char twice). Instead, we post a dummy
d8f8533db4cc (w32_msg_pump): Ignore WM_NULL message posted to thread
Andrew Innes <andrewi@gnu.org>
parents: 23803
diff changeset
2803 message that has no particular effect. */
d8f8533db4cc (w32_msg_pump): Ignore WM_NULL message posted to thread
Andrew Innes <andrewi@gnu.org>
parents: 23803
diff changeset
2804 {
d8f8533db4cc (w32_msg_pump): Ignore WM_NULL message posted to thread
Andrew Innes <andrewi@gnu.org>
parents: 23803
diff changeset
2805 int c = wParam;
d8f8533db4cc (w32_msg_pump): Ignore WM_NULL message posted to thread
Andrew Innes <andrewi@gnu.org>
parents: 23803
diff changeset
2806 if (isalpha (c) && wmsg.dwModifiers == ctrl_modifier)
d8f8533db4cc (w32_msg_pump): Ignore WM_NULL message posted to thread
Andrew Innes <andrewi@gnu.org>
parents: 23803
diff changeset
2807 c = make_ctrl_char (c) & 0377;
24339
e8b73c2ac4ec (Vw32_quit_key): New variable.
Andrew Innes <andrewi@gnu.org>
parents: 24252
diff changeset
2808 if (c == quit_char
e8b73c2ac4ec (Vw32_quit_key): New variable.
Andrew Innes <andrewi@gnu.org>
parents: 24252
diff changeset
2809 || (wmsg.dwModifiers == 0 &&
55656
29b250a07fe0 (Fw32_register_hot_key, Fw32_unregister_hot_key)
Jason Rumney <jasonr@gnu.org>
parents: 55592
diff changeset
2810 w32_quit_key && wParam == w32_quit_key))
23950
d8f8533db4cc (w32_msg_pump): Ignore WM_NULL message posted to thread
Andrew Innes <andrewi@gnu.org>
parents: 23803
diff changeset
2811 {
d8f8533db4cc (w32_msg_pump): Ignore WM_NULL message posted to thread
Andrew Innes <andrewi@gnu.org>
parents: 23803
diff changeset
2812 Vquit_flag = Qt;
d8f8533db4cc (w32_msg_pump): Ignore WM_NULL message posted to thread
Andrew Innes <andrewi@gnu.org>
parents: 23803
diff changeset
2813
d8f8533db4cc (w32_msg_pump): Ignore WM_NULL message posted to thread
Andrew Innes <andrewi@gnu.org>
parents: 23803
diff changeset
2814 /* The choice of message is somewhat arbitrary, as long as
d8f8533db4cc (w32_msg_pump): Ignore WM_NULL message posted to thread
Andrew Innes <andrewi@gnu.org>
parents: 23803
diff changeset
2815 the main thread handler just ignores it. */
d8f8533db4cc (w32_msg_pump): Ignore WM_NULL message posted to thread
Andrew Innes <andrewi@gnu.org>
parents: 23803
diff changeset
2816 msg = WM_NULL;
d8f8533db4cc (w32_msg_pump): Ignore WM_NULL message posted to thread
Andrew Innes <andrewi@gnu.org>
parents: 23803
diff changeset
2817
d8f8533db4cc (w32_msg_pump): Ignore WM_NULL message posted to thread
Andrew Innes <andrewi@gnu.org>
parents: 23803
diff changeset
2818 /* Interrupt any blocking system calls. */
d8f8533db4cc (w32_msg_pump): Ignore WM_NULL message posted to thread
Andrew Innes <andrewi@gnu.org>
parents: 23803
diff changeset
2819 signal_quit ();
d8f8533db4cc (w32_msg_pump): Ignore WM_NULL message posted to thread
Andrew Innes <andrewi@gnu.org>
parents: 23803
diff changeset
2820
d8f8533db4cc (w32_msg_pump): Ignore WM_NULL message posted to thread
Andrew Innes <andrewi@gnu.org>
parents: 23803
diff changeset
2821 /* As a safety precaution, forcibly complete any deferred
d8f8533db4cc (w32_msg_pump): Ignore WM_NULL message posted to thread
Andrew Innes <andrewi@gnu.org>
parents: 23803
diff changeset
2822 messages. This is a kludge, but I don't see any particularly
d8f8533db4cc (w32_msg_pump): Ignore WM_NULL message posted to thread
Andrew Innes <andrewi@gnu.org>
parents: 23803
diff changeset
2823 clean way to handle the situation where a deferred message is
d8f8533db4cc (w32_msg_pump): Ignore WM_NULL message posted to thread
Andrew Innes <andrewi@gnu.org>
parents: 23803
diff changeset
2824 "dropped" in the lisp thread, and will thus never be
d8f8533db4cc (w32_msg_pump): Ignore WM_NULL message posted to thread
Andrew Innes <andrewi@gnu.org>
parents: 23803
diff changeset
2825 completed, eg. by the user trying to activate the menubar
d8f8533db4cc (w32_msg_pump): Ignore WM_NULL message posted to thread
Andrew Innes <andrewi@gnu.org>
parents: 23803
diff changeset
2826 when the lisp thread is busy, and then typing C-g when the
d8f8533db4cc (w32_msg_pump): Ignore WM_NULL message posted to thread
Andrew Innes <andrewi@gnu.org>
parents: 23803
diff changeset
2827 menubar doesn't open promptly (with the result that the
d8f8533db4cc (w32_msg_pump): Ignore WM_NULL message posted to thread
Andrew Innes <andrewi@gnu.org>
parents: 23803
diff changeset
2828 menubar never responds at all because the deferred
d8f8533db4cc (w32_msg_pump): Ignore WM_NULL message posted to thread
Andrew Innes <andrewi@gnu.org>
parents: 23803
diff changeset
2829 WM_INITMENU message is never completed). Another problem
d8f8533db4cc (w32_msg_pump): Ignore WM_NULL message posted to thread
Andrew Innes <andrewi@gnu.org>
parents: 23803
diff changeset
2830 situation is when the lisp thread calls SendMessage (to send
d8f8533db4cc (w32_msg_pump): Ignore WM_NULL message posted to thread
Andrew Innes <andrewi@gnu.org>
parents: 23803
diff changeset
2831 a window manager command) when a message has been deferred;
d8f8533db4cc (w32_msg_pump): Ignore WM_NULL message posted to thread
Andrew Innes <andrewi@gnu.org>
parents: 23803
diff changeset
2832 the lisp thread gets blocked indefinitely waiting for the
d8f8533db4cc (w32_msg_pump): Ignore WM_NULL message posted to thread
Andrew Innes <andrewi@gnu.org>
parents: 23803
diff changeset
2833 deferred message to be completed, which itself is waiting for
d8f8533db4cc (w32_msg_pump): Ignore WM_NULL message posted to thread
Andrew Innes <andrewi@gnu.org>
parents: 23803
diff changeset
2834 the lisp thread to respond.
d8f8533db4cc (w32_msg_pump): Ignore WM_NULL message posted to thread
Andrew Innes <andrewi@gnu.org>
parents: 23803
diff changeset
2835
d8f8533db4cc (w32_msg_pump): Ignore WM_NULL message posted to thread
Andrew Innes <andrewi@gnu.org>
parents: 23803
diff changeset
2836 Note that we don't want to block the input thread waiting for
d8f8533db4cc (w32_msg_pump): Ignore WM_NULL message posted to thread
Andrew Innes <andrewi@gnu.org>
parents: 23803
diff changeset
2837 a reponse from the lisp thread (although that would at least
d8f8533db4cc (w32_msg_pump): Ignore WM_NULL message posted to thread
Andrew Innes <andrewi@gnu.org>
parents: 23803
diff changeset
2838 solve the deadlock problem above), because we want to be able
d8f8533db4cc (w32_msg_pump): Ignore WM_NULL message posted to thread
Andrew Innes <andrewi@gnu.org>
parents: 23803
diff changeset
2839 to receive C-g to interrupt the lisp thread. */
d8f8533db4cc (w32_msg_pump): Ignore WM_NULL message posted to thread
Andrew Innes <andrewi@gnu.org>
parents: 23803
diff changeset
2840 cancel_all_deferred_msgs ();
d8f8533db4cc (w32_msg_pump): Ignore WM_NULL message posted to thread
Andrew Innes <andrewi@gnu.org>
parents: 23803
diff changeset
2841 }
69426
46a8c3e0161d (signal_user_input): New function.
Jason Rumney <jasonr@gnu.org>
parents: 69406
diff changeset
2842 else
46a8c3e0161d (signal_user_input): New function.
Jason Rumney <jasonr@gnu.org>
parents: 69406
diff changeset
2843 signal_user_input ();
23950
d8f8533db4cc (w32_msg_pump): Ignore WM_NULL message posted to thread
Andrew Innes <andrewi@gnu.org>
parents: 23803
diff changeset
2844 }
d8f8533db4cc (w32_msg_pump): Ignore WM_NULL message posted to thread
Andrew Innes <andrewi@gnu.org>
parents: 23803
diff changeset
2845
d8f8533db4cc (w32_msg_pump): Ignore WM_NULL message posted to thread
Andrew Innes <andrewi@gnu.org>
parents: 23803
diff changeset
2846 my_post_msg (&wmsg, hwnd, msg, wParam, lParam);
d8f8533db4cc (w32_msg_pump): Ignore WM_NULL message posted to thread
Andrew Innes <andrewi@gnu.org>
parents: 23803
diff changeset
2847 }
d8f8533db4cc (w32_msg_pump): Ignore WM_NULL message posted to thread
Andrew Innes <andrewi@gnu.org>
parents: 23803
diff changeset
2848
13434
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
2849 /* Main window procedure */
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
2850
47942
080b4586492b Fix typo in comment.
Juanma Barranquero <lekktu@gmail.com>
parents: 47731
diff changeset
2851 LRESULT CALLBACK
16588
481b7874a1e9 Change identifiers of the form win32* to w32*.
Geoff Voelker <voelker@cs.washington.edu>
parents: 16259
diff changeset
2852 w32_wnd_proc (hwnd, msg, wParam, lParam)
13434
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
2853 HWND hwnd;
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
2854 UINT msg;
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
2855 WPARAM wParam;
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
2856 LPARAM lParam;
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
2857 {
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
2858 struct frame *f;
16588
481b7874a1e9 Change identifiers of the form win32* to w32*.
Geoff Voelker <voelker@cs.washington.edu>
parents: 16259
diff changeset
2859 struct w32_display_info *dpyinfo = &one_w32_display_info;
481b7874a1e9 Change identifiers of the form win32* to w32*.
Geoff Voelker <voelker@cs.washington.edu>
parents: 16259
diff changeset
2860 W32Msg wmsg;
15290
da73440fdb5f (Vwin32_mouse_move_interval): New lisp variable.
Karl Heuer <kwzh@gnu.org>
parents: 15280
diff changeset
2861 int windows_translate;
24206
d3649b38bb37 (w32_wnd_proc): Fix bug introduced by previous change;
Andrew Innes <andrewi@gnu.org>
parents: 24147
diff changeset
2862 int key;
15290
da73440fdb5f (Vwin32_mouse_move_interval): New lisp variable.
Karl Heuer <kwzh@gnu.org>
parents: 15280
diff changeset
2863
15650
bc9525478463 (win32_wnd_proc): Handle WM_ERASEBKGND and
Karl Heuer <kwzh@gnu.org>
parents: 15459
diff changeset
2864 /* Note that it is okay to call x_window_to_frame, even though we are
bc9525478463 (win32_wnd_proc): Handle WM_ERASEBKGND and
Karl Heuer <kwzh@gnu.org>
parents: 15459
diff changeset
2865 not running in the main lisp thread, because frame deletion
bc9525478463 (win32_wnd_proc): Handle WM_ERASEBKGND and
Karl Heuer <kwzh@gnu.org>
parents: 15459
diff changeset
2866 requires the lisp thread to synchronize with this thread. Thus, if
bc9525478463 (win32_wnd_proc): Handle WM_ERASEBKGND and
Karl Heuer <kwzh@gnu.org>
parents: 15459
diff changeset
2867 a frame struct is returned, it can be used without concern that the
bc9525478463 (win32_wnd_proc): Handle WM_ERASEBKGND and
Karl Heuer <kwzh@gnu.org>
parents: 15459
diff changeset
2868 lisp thread might make it disappear while we are using it.
bc9525478463 (win32_wnd_proc): Handle WM_ERASEBKGND and
Karl Heuer <kwzh@gnu.org>
parents: 15459
diff changeset
2869
bc9525478463 (win32_wnd_proc): Handle WM_ERASEBKGND and
Karl Heuer <kwzh@gnu.org>
parents: 15459
diff changeset
2870 NB. Walking the frame list in this thread is safe (as long as
bc9525478463 (win32_wnd_proc): Handle WM_ERASEBKGND and
Karl Heuer <kwzh@gnu.org>
parents: 15459
diff changeset
2871 writes of Lisp_Object slots are atomic, which they are on Windows).
bc9525478463 (win32_wnd_proc): Handle WM_ERASEBKGND and
Karl Heuer <kwzh@gnu.org>
parents: 15459
diff changeset
2872 Although delete-frame can destructively modify the frame list while
bc9525478463 (win32_wnd_proc): Handle WM_ERASEBKGND and
Karl Heuer <kwzh@gnu.org>
parents: 15459
diff changeset
2873 we are walking it, a garbage collection cannot occur until after
bc9525478463 (win32_wnd_proc): Handle WM_ERASEBKGND and
Karl Heuer <kwzh@gnu.org>
parents: 15459
diff changeset
2874 delete-frame has synchronized with this thread.
bc9525478463 (win32_wnd_proc): Handle WM_ERASEBKGND and
Karl Heuer <kwzh@gnu.org>
parents: 15459
diff changeset
2875
bc9525478463 (win32_wnd_proc): Handle WM_ERASEBKGND and
Karl Heuer <kwzh@gnu.org>
parents: 15459
diff changeset
2876 It is also safe to use functions that make GDI calls, such as
16588
481b7874a1e9 Change identifiers of the form win32* to w32*.
Geoff Voelker <voelker@cs.washington.edu>
parents: 16259
diff changeset
2877 w32_clear_rect, because these functions must obtain a DC handle
15650
bc9525478463 (win32_wnd_proc): Handle WM_ERASEBKGND and
Karl Heuer <kwzh@gnu.org>
parents: 15459
diff changeset
2878 from the frame struct using get_frame_dc which is thread-aware. */
bc9525478463 (win32_wnd_proc): Handle WM_ERASEBKGND and
Karl Heuer <kwzh@gnu.org>
parents: 15459
diff changeset
2879
47942
080b4586492b Fix typo in comment.
Juanma Barranquero <lekktu@gmail.com>
parents: 47731
diff changeset
2880 switch (msg)
13434
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
2881 {
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
2882 case WM_ERASEBKGND:
15650
bc9525478463 (win32_wnd_proc): Handle WM_ERASEBKGND and
Karl Heuer <kwzh@gnu.org>
parents: 15459
diff changeset
2883 f = x_window_to_frame (dpyinfo, hwnd);
bc9525478463 (win32_wnd_proc): Handle WM_ERASEBKGND and
Karl Heuer <kwzh@gnu.org>
parents: 15459
diff changeset
2884 if (f)
bc9525478463 (win32_wnd_proc): Handle WM_ERASEBKGND and
Karl Heuer <kwzh@gnu.org>
parents: 15459
diff changeset
2885 {
27407
7df920562cbe (w32_defined_color): Apply gamma correction before trying to map to
Jason Rumney <jasonr@gnu.org>
parents: 27397
diff changeset
2886 HDC hdc = get_frame_dc (f);
15650
bc9525478463 (win32_wnd_proc): Handle WM_ERASEBKGND and
Karl Heuer <kwzh@gnu.org>
parents: 15459
diff changeset
2887 GetUpdateRect (hwnd, &wmsg.rect, FALSE);
27407
7df920562cbe (w32_defined_color): Apply gamma correction before trying to map to
Jason Rumney <jasonr@gnu.org>
parents: 27397
diff changeset
2888 w32_clear_rect (f, hdc, &wmsg.rect);
7df920562cbe (w32_defined_color): Apply gamma correction before trying to map to
Jason Rumney <jasonr@gnu.org>
parents: 27397
diff changeset
2889 release_frame_dc (f, hdc);
24718
547f54dfbb94 (x_to_w32_charset): Reinstall VIETNAMESE_CHARSET
Andrew Innes <andrewi@gnu.org>
parents: 24695
diff changeset
2890
547f54dfbb94 (x_to_w32_charset): Reinstall VIETNAMESE_CHARSET
Andrew Innes <andrewi@gnu.org>
parents: 24695
diff changeset
2891 #if defined (W32_DEBUG_DISPLAY)
39128
42efaa34094a (w32_createwindow): Remove the WS_CLIPCHILDREN style
Andrew Innes <andrewi@gnu.org>
parents: 37707
diff changeset
2892 DebPrint (("WM_ERASEBKGND (frame %p): erasing %d,%d-%d,%d\n",
42efaa34094a (w32_createwindow): Remove the WS_CLIPCHILDREN style
Andrew Innes <andrewi@gnu.org>
parents: 37707
diff changeset
2893 f,
42efaa34094a (w32_createwindow): Remove the WS_CLIPCHILDREN style
Andrew Innes <andrewi@gnu.org>
parents: 37707
diff changeset
2894 wmsg.rect.left, wmsg.rect.top,
42efaa34094a (w32_createwindow): Remove the WS_CLIPCHILDREN style
Andrew Innes <andrewi@gnu.org>
parents: 37707
diff changeset
2895 wmsg.rect.right, wmsg.rect.bottom));
24718
547f54dfbb94 (x_to_w32_charset): Reinstall VIETNAMESE_CHARSET
Andrew Innes <andrewi@gnu.org>
parents: 24695
diff changeset
2896 #endif /* W32_DEBUG_DISPLAY */
15650
bc9525478463 (win32_wnd_proc): Handle WM_ERASEBKGND and
Karl Heuer <kwzh@gnu.org>
parents: 15459
diff changeset
2897 }
15147
38c0ce06203f (quit_char, Vwin32_enable_italics, Vwin32_enable_palette):
Geoff Voelker <voelker@cs.washington.edu>
parents: 15034
diff changeset
2898 return 1;
38c0ce06203f (quit_char, Vwin32_enable_italics, Vwin32_enable_palette):
Geoff Voelker <voelker@cs.washington.edu>
parents: 15034
diff changeset
2899 case WM_PALETTECHANGED:
38c0ce06203f (quit_char, Vwin32_enable_italics, Vwin32_enable_palette):
Geoff Voelker <voelker@cs.washington.edu>
parents: 15034
diff changeset
2900 /* ignore our own changes */
38c0ce06203f (quit_char, Vwin32_enable_italics, Vwin32_enable_palette):
Geoff Voelker <voelker@cs.washington.edu>
parents: 15034
diff changeset
2901 if ((HWND)wParam != hwnd)
38c0ce06203f (quit_char, Vwin32_enable_italics, Vwin32_enable_palette):
Geoff Voelker <voelker@cs.washington.edu>
parents: 15034
diff changeset
2902 {
15650
bc9525478463 (win32_wnd_proc): Handle WM_ERASEBKGND and
Karl Heuer <kwzh@gnu.org>
parents: 15459
diff changeset
2903 f = x_window_to_frame (dpyinfo, hwnd);
bc9525478463 (win32_wnd_proc): Handle WM_ERASEBKGND and
Karl Heuer <kwzh@gnu.org>
parents: 15459
diff changeset
2904 if (f)
bc9525478463 (win32_wnd_proc): Handle WM_ERASEBKGND and
Karl Heuer <kwzh@gnu.org>
parents: 15459
diff changeset
2905 /* get_frame_dc will realize our palette and force all
bc9525478463 (win32_wnd_proc): Handle WM_ERASEBKGND and
Karl Heuer <kwzh@gnu.org>
parents: 15459
diff changeset
2906 frames to be redrawn if needed. */
bc9525478463 (win32_wnd_proc): Handle WM_ERASEBKGND and
Karl Heuer <kwzh@gnu.org>
parents: 15459
diff changeset
2907 release_frame_dc (f, get_frame_dc (f));
15147
38c0ce06203f (quit_char, Vwin32_enable_italics, Vwin32_enable_palette):
Geoff Voelker <voelker@cs.washington.edu>
parents: 15034
diff changeset
2908 }
38c0ce06203f (quit_char, Vwin32_enable_italics, Vwin32_enable_palette):
Geoff Voelker <voelker@cs.washington.edu>
parents: 15034
diff changeset
2909 return 0;
13434
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
2910 case WM_PAINT:
24718
547f54dfbb94 (x_to_w32_charset): Reinstall VIETNAMESE_CHARSET
Andrew Innes <andrewi@gnu.org>
parents: 24695
diff changeset
2911 {
24670
045e247575d9 [andrewi]
Andrew Innes <andrewi@gnu.org>
parents: 24583
diff changeset
2912 PAINTSTRUCT paintStruct;
045e247575d9 [andrewi]
Andrew Innes <andrewi@gnu.org>
parents: 24583
diff changeset
2913 RECT update_rect;
42935
20a21fb23284 (w32_wnd_proc) <WM_PAINT>: Initialize update_rect.
Jason Rumney <jasonr@gnu.org>
parents: 42918
diff changeset
2914 bzero (&update_rect, sizeof (update_rect));
24670
045e247575d9 [andrewi]
Andrew Innes <andrewi@gnu.org>
parents: 24583
diff changeset
2915
39128
42efaa34094a (w32_createwindow): Remove the WS_CLIPCHILDREN style
Andrew Innes <andrewi@gnu.org>
parents: 37707
diff changeset
2916 f = x_window_to_frame (dpyinfo, hwnd);
42efaa34094a (w32_createwindow): Remove the WS_CLIPCHILDREN style
Andrew Innes <andrewi@gnu.org>
parents: 37707
diff changeset
2917 if (f == 0)
42efaa34094a (w32_createwindow): Remove the WS_CLIPCHILDREN style
Andrew Innes <andrewi@gnu.org>
parents: 37707
diff changeset
2918 {
42efaa34094a (w32_createwindow): Remove the WS_CLIPCHILDREN style
Andrew Innes <andrewi@gnu.org>
parents: 37707
diff changeset
2919 DebPrint (("WM_PAINT received for unknown window %p\n", hwnd));
42efaa34094a (w32_createwindow): Remove the WS_CLIPCHILDREN style
Andrew Innes <andrewi@gnu.org>
parents: 37707
diff changeset
2920 return 0;
42efaa34094a (w32_createwindow): Remove the WS_CLIPCHILDREN style
Andrew Innes <andrewi@gnu.org>
parents: 37707
diff changeset
2921 }
42efaa34094a (w32_createwindow): Remove the WS_CLIPCHILDREN style
Andrew Innes <andrewi@gnu.org>
parents: 37707
diff changeset
2922
24670
045e247575d9 [andrewi]
Andrew Innes <andrewi@gnu.org>
parents: 24583
diff changeset
2923 /* MSDN Docs say not to call BeginPaint if GetUpdateRect
045e247575d9 [andrewi]
Andrew Innes <andrewi@gnu.org>
parents: 24583
diff changeset
2924 fails. Apparently this can happen under some
045e247575d9 [andrewi]
Andrew Innes <andrewi@gnu.org>
parents: 24583
diff changeset
2925 circumstances. */
42935
20a21fb23284 (w32_wnd_proc) <WM_PAINT>: Initialize update_rect.
Jason Rumney <jasonr@gnu.org>
parents: 42918
diff changeset
2926 if (GetUpdateRect (hwnd, &update_rect, FALSE) || !w32_strict_painting)
24670
045e247575d9 [andrewi]
Andrew Innes <andrewi@gnu.org>
parents: 24583
diff changeset
2927 {
045e247575d9 [andrewi]
Andrew Innes <andrewi@gnu.org>
parents: 24583
diff changeset
2928 enter_crit ();
045e247575d9 [andrewi]
Andrew Innes <andrewi@gnu.org>
parents: 24583
diff changeset
2929 BeginPaint (hwnd, &paintStruct);
045e247575d9 [andrewi]
Andrew Innes <andrewi@gnu.org>
parents: 24583
diff changeset
2930
42935
20a21fb23284 (w32_wnd_proc) <WM_PAINT>: Initialize update_rect.
Jason Rumney <jasonr@gnu.org>
parents: 42918
diff changeset
2931 /* The rectangles returned by GetUpdateRect and BeginPaint
20a21fb23284 (w32_wnd_proc) <WM_PAINT>: Initialize update_rect.
Jason Rumney <jasonr@gnu.org>
parents: 42918
diff changeset
2932 do not always match. Play it safe by assuming both areas
20a21fb23284 (w32_wnd_proc) <WM_PAINT>: Initialize update_rect.
Jason Rumney <jasonr@gnu.org>
parents: 42918
diff changeset
2933 are invalid. */
20a21fb23284 (w32_wnd_proc) <WM_PAINT>: Initialize update_rect.
Jason Rumney <jasonr@gnu.org>
parents: 42918
diff changeset
2934 UnionRect (&(wmsg.rect), &update_rect, &(paintStruct.rcPaint));
24670
045e247575d9 [andrewi]
Andrew Innes <andrewi@gnu.org>
parents: 24583
diff changeset
2935
045e247575d9 [andrewi]
Andrew Innes <andrewi@gnu.org>
parents: 24583
diff changeset
2936 #if defined (W32_DEBUG_DISPLAY)
39128
42efaa34094a (w32_createwindow): Remove the WS_CLIPCHILDREN style
Andrew Innes <andrewi@gnu.org>
parents: 37707
diff changeset
2937 DebPrint (("WM_PAINT (frame %p): painting %d,%d-%d,%d\n",
42efaa34094a (w32_createwindow): Remove the WS_CLIPCHILDREN style
Andrew Innes <andrewi@gnu.org>
parents: 37707
diff changeset
2938 f,
42efaa34094a (w32_createwindow): Remove the WS_CLIPCHILDREN style
Andrew Innes <andrewi@gnu.org>
parents: 37707
diff changeset
2939 wmsg.rect.left, wmsg.rect.top,
42efaa34094a (w32_createwindow): Remove the WS_CLIPCHILDREN style
Andrew Innes <andrewi@gnu.org>
parents: 37707
diff changeset
2940 wmsg.rect.right, wmsg.rect.bottom));
42efaa34094a (w32_createwindow): Remove the WS_CLIPCHILDREN style
Andrew Innes <andrewi@gnu.org>
parents: 37707
diff changeset
2941 DebPrint ((" [update region is %d,%d-%d,%d]\n",
24670
045e247575d9 [andrewi]
Andrew Innes <andrewi@gnu.org>
parents: 24583
diff changeset
2942 update_rect.left, update_rect.top,
045e247575d9 [andrewi]
Andrew Innes <andrewi@gnu.org>
parents: 24583
diff changeset
2943 update_rect.right, update_rect.bottom));
045e247575d9 [andrewi]
Andrew Innes <andrewi@gnu.org>
parents: 24583
diff changeset
2944 #endif
045e247575d9 [andrewi]
Andrew Innes <andrewi@gnu.org>
parents: 24583
diff changeset
2945 EndPaint (hwnd, &paintStruct);
045e247575d9 [andrewi]
Andrew Innes <andrewi@gnu.org>
parents: 24583
diff changeset
2946 leave_crit ();
045e247575d9 [andrewi]
Andrew Innes <andrewi@gnu.org>
parents: 24583
diff changeset
2947
045e247575d9 [andrewi]
Andrew Innes <andrewi@gnu.org>
parents: 24583
diff changeset
2948 my_post_msg (&wmsg, hwnd, msg, wParam, lParam);
47942
080b4586492b Fix typo in comment.
Juanma Barranquero <lekktu@gmail.com>
parents: 47731
diff changeset
2949
24670
045e247575d9 [andrewi]
Andrew Innes <andrewi@gnu.org>
parents: 24583
diff changeset
2950 return 0;
045e247575d9 [andrewi]
Andrew Innes <andrewi@gnu.org>
parents: 24583
diff changeset
2951 }
24695
2fe2c743ce68 (w32_strict_painting): New variable.
Andrew Innes <andrewi@gnu.org>
parents: 24692
diff changeset
2952
2fe2c743ce68 (w32_strict_painting): New variable.
Andrew Innes <andrewi@gnu.org>
parents: 24692
diff changeset
2953 /* If GetUpdateRect returns 0 (meaning there is no update
2fe2c743ce68 (w32_strict_painting): New variable.
Andrew Innes <andrewi@gnu.org>
parents: 24692
diff changeset
2954 region), assume the whole window needs to be repainted. */
79387
0ca197abc593 (Fw32_registered_hot_keys): Don't return the nil values corresponding
Juanma Barranquero <lekktu@gmail.com>
parents: 79381
diff changeset
2955 GetClientRect (hwnd, &wmsg.rect);
24695
2fe2c743ce68 (w32_strict_painting): New variable.
Andrew Innes <andrewi@gnu.org>
parents: 24692
diff changeset
2956 my_post_msg (&wmsg, hwnd, msg, wParam, lParam);
2fe2c743ce68 (w32_strict_painting): New variable.
Andrew Innes <andrewi@gnu.org>
parents: 24692
diff changeset
2957 return 0;
13434
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
2958 }
14461
4fe9540be594 (modifiers, modifier_key_support_tested,
Geoff Voelker <voelker@cs.washington.edu>
parents: 14353
diff changeset
2959
23681
af0276da2059 (Vw32_pass_optional_keys_to_system): Variable removed.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23637
diff changeset
2960 case WM_INPUTLANGCHANGE:
af0276da2059 (Vw32_pass_optional_keys_to_system): Variable removed.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23637
diff changeset
2961 /* Inform lisp thread of keyboard layout changes. */
af0276da2059 (Vw32_pass_optional_keys_to_system): Variable removed.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23637
diff changeset
2962 my_post_msg (&wmsg, hwnd, msg, wParam, lParam);
af0276da2059 (Vw32_pass_optional_keys_to_system): Variable removed.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23637
diff changeset
2963
af0276da2059 (Vw32_pass_optional_keys_to_system): Variable removed.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23637
diff changeset
2964 /* Clear dead keys in the keyboard state; for simplicity only
af0276da2059 (Vw32_pass_optional_keys_to_system): Variable removed.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23637
diff changeset
2965 preserve modifier key states. */
af0276da2059 (Vw32_pass_optional_keys_to_system): Variable removed.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23637
diff changeset
2966 {
af0276da2059 (Vw32_pass_optional_keys_to_system): Variable removed.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23637
diff changeset
2967 int i;
af0276da2059 (Vw32_pass_optional_keys_to_system): Variable removed.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23637
diff changeset
2968 BYTE keystate[256];
af0276da2059 (Vw32_pass_optional_keys_to_system): Variable removed.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23637
diff changeset
2969
af0276da2059 (Vw32_pass_optional_keys_to_system): Variable removed.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23637
diff changeset
2970 GetKeyboardState (keystate);
af0276da2059 (Vw32_pass_optional_keys_to_system): Variable removed.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23637
diff changeset
2971 for (i = 0; i < 256; i++)
af0276da2059 (Vw32_pass_optional_keys_to_system): Variable removed.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23637
diff changeset
2972 if (1
af0276da2059 (Vw32_pass_optional_keys_to_system): Variable removed.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23637
diff changeset
2973 && i != VK_SHIFT
af0276da2059 (Vw32_pass_optional_keys_to_system): Variable removed.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23637
diff changeset
2974 && i != VK_LSHIFT
af0276da2059 (Vw32_pass_optional_keys_to_system): Variable removed.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23637
diff changeset
2975 && i != VK_RSHIFT
af0276da2059 (Vw32_pass_optional_keys_to_system): Variable removed.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23637
diff changeset
2976 && i != VK_CAPITAL
af0276da2059 (Vw32_pass_optional_keys_to_system): Variable removed.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23637
diff changeset
2977 && i != VK_NUMLOCK
af0276da2059 (Vw32_pass_optional_keys_to_system): Variable removed.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23637
diff changeset
2978 && i != VK_SCROLL
af0276da2059 (Vw32_pass_optional_keys_to_system): Variable removed.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23637
diff changeset
2979 && i != VK_CONTROL
af0276da2059 (Vw32_pass_optional_keys_to_system): Variable removed.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23637
diff changeset
2980 && i != VK_LCONTROL
af0276da2059 (Vw32_pass_optional_keys_to_system): Variable removed.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23637
diff changeset
2981 && i != VK_RCONTROL
af0276da2059 (Vw32_pass_optional_keys_to_system): Variable removed.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23637
diff changeset
2982 && i != VK_MENU
af0276da2059 (Vw32_pass_optional_keys_to_system): Variable removed.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23637
diff changeset
2983 && i != VK_LMENU
af0276da2059 (Vw32_pass_optional_keys_to_system): Variable removed.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23637
diff changeset
2984 && i != VK_RMENU
af0276da2059 (Vw32_pass_optional_keys_to_system): Variable removed.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23637
diff changeset
2985 && i != VK_LWIN
af0276da2059 (Vw32_pass_optional_keys_to_system): Variable removed.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23637
diff changeset
2986 && i != VK_RWIN)
af0276da2059 (Vw32_pass_optional_keys_to_system): Variable removed.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23637
diff changeset
2987 keystate[i] = 0;
af0276da2059 (Vw32_pass_optional_keys_to_system): Variable removed.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23637
diff changeset
2988 SetKeyboardState (keystate);
af0276da2059 (Vw32_pass_optional_keys_to_system): Variable removed.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23637
diff changeset
2989 }
af0276da2059 (Vw32_pass_optional_keys_to_system): Variable removed.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23637
diff changeset
2990 goto dflt;
af0276da2059 (Vw32_pass_optional_keys_to_system): Variable removed.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23637
diff changeset
2991
af0276da2059 (Vw32_pass_optional_keys_to_system): Variable removed.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23637
diff changeset
2992 case WM_HOTKEY:
af0276da2059 (Vw32_pass_optional_keys_to_system): Variable removed.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23637
diff changeset
2993 /* Synchronize hot keys with normal input. */
af0276da2059 (Vw32_pass_optional_keys_to_system): Variable removed.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23637
diff changeset
2994 PostMessage (hwnd, WM_KEYDOWN, HIWORD (lParam), 0);
af0276da2059 (Vw32_pass_optional_keys_to_system): Variable removed.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23637
diff changeset
2995 return (0);
af0276da2059 (Vw32_pass_optional_keys_to_system): Variable removed.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23637
diff changeset
2996
14461
4fe9540be594 (modifiers, modifier_key_support_tested,
Geoff Voelker <voelker@cs.washington.edu>
parents: 14353
diff changeset
2997 case WM_KEYUP:
4fe9540be594 (modifiers, modifier_key_support_tested,
Geoff Voelker <voelker@cs.washington.edu>
parents: 14353
diff changeset
2998 case WM_SYSKEYUP:
4fe9540be594 (modifiers, modifier_key_support_tested,
Geoff Voelker <voelker@cs.washington.edu>
parents: 14353
diff changeset
2999 record_keyup (wParam, lParam);
4fe9540be594 (modifiers, modifier_key_support_tested,
Geoff Voelker <voelker@cs.washington.edu>
parents: 14353
diff changeset
3000 goto dflt;
4fe9540be594 (modifiers, modifier_key_support_tested,
Geoff Voelker <voelker@cs.washington.edu>
parents: 14353
diff changeset
3001
13434
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
3002 case WM_KEYDOWN:
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
3003 case WM_SYSKEYDOWN:
23681
af0276da2059 (Vw32_pass_optional_keys_to_system): Variable removed.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23637
diff changeset
3004 /* Ignore keystrokes we fake ourself; see below. */
af0276da2059 (Vw32_pass_optional_keys_to_system): Variable removed.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23637
diff changeset
3005 if (dpyinfo->faked_key == wParam)
af0276da2059 (Vw32_pass_optional_keys_to_system): Variable removed.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23637
diff changeset
3006 {
af0276da2059 (Vw32_pass_optional_keys_to_system): Variable removed.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23637
diff changeset
3007 dpyinfo->faked_key = 0;
24206
d3649b38bb37 (w32_wnd_proc): Fix bug introduced by previous change;
Andrew Innes <andrewi@gnu.org>
parents: 24147
diff changeset
3008 /* Make sure TranslateMessage sees them though (as long as
d3649b38bb37 (w32_wnd_proc): Fix bug introduced by previous change;
Andrew Innes <andrewi@gnu.org>
parents: 24147
diff changeset
3009 they don't produce WM_CHAR messages). This ensures that
d3649b38bb37 (w32_wnd_proc): Fix bug introduced by previous change;
Andrew Innes <andrewi@gnu.org>
parents: 24147
diff changeset
3010 indicator lights are toggled promptly on Windows 9x, for
d3649b38bb37 (w32_wnd_proc): Fix bug introduced by previous change;
Andrew Innes <andrewi@gnu.org>
parents: 24147
diff changeset
3011 example. */
79563
fb6105cb466b (w32_wnd_proc, Fw32_reconstruct_hot_key): Range check
Jason Rumney <jasonr@gnu.org>
parents: 79393
diff changeset
3012 if (wParam < 256 && lispy_function_keys[wParam])
24206
d3649b38bb37 (w32_wnd_proc): Fix bug introduced by previous change;
Andrew Innes <andrewi@gnu.org>
parents: 24147
diff changeset
3013 {
d3649b38bb37 (w32_wnd_proc): Fix bug introduced by previous change;
Andrew Innes <andrewi@gnu.org>
parents: 24147
diff changeset
3014 windows_translate = 1;
d3649b38bb37 (w32_wnd_proc): Fix bug introduced by previous change;
Andrew Innes <andrewi@gnu.org>
parents: 24147
diff changeset
3015 goto translate;
d3649b38bb37 (w32_wnd_proc): Fix bug introduced by previous change;
Andrew Innes <andrewi@gnu.org>
parents: 24147
diff changeset
3016 }
d3649b38bb37 (w32_wnd_proc): Fix bug introduced by previous change;
Andrew Innes <andrewi@gnu.org>
parents: 24147
diff changeset
3017 return 0;
23681
af0276da2059 (Vw32_pass_optional_keys_to_system): Variable removed.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23637
diff changeset
3018 }
af0276da2059 (Vw32_pass_optional_keys_to_system): Variable removed.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23637
diff changeset
3019
15377
65d9ff2c8602 (sync_modifiers): New function.
Richard M. Stallman <rms@gnu.org>
parents: 15314
diff changeset
3020 /* Synchronize modifiers with current keystroke. */
65d9ff2c8602 (sync_modifiers): New function.
Richard M. Stallman <rms@gnu.org>
parents: 15314
diff changeset
3021 sync_modifiers ();
14461
4fe9540be594 (modifiers, modifier_key_support_tested,
Geoff Voelker <voelker@cs.washington.edu>
parents: 14353
diff changeset
3022 record_keydown (wParam, lParam);
23681
af0276da2059 (Vw32_pass_optional_keys_to_system): Variable removed.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23637
diff changeset
3023 wParam = map_keypad_keys (wParam, (lParam & 0x1000000L) != 0);
15290
da73440fdb5f (Vwin32_mouse_move_interval): New lisp variable.
Karl Heuer <kwzh@gnu.org>
parents: 15280
diff changeset
3024
da73440fdb5f (Vwin32_mouse_move_interval): New lisp variable.
Karl Heuer <kwzh@gnu.org>
parents: 15280
diff changeset
3025 windows_translate = 0;
23681
af0276da2059 (Vw32_pass_optional_keys_to_system): Variable removed.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23637
diff changeset
3026
af0276da2059 (Vw32_pass_optional_keys_to_system): Variable removed.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23637
diff changeset
3027 switch (wParam)
af0276da2059 (Vw32_pass_optional_keys_to_system): Variable removed.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23637
diff changeset
3028 {
af0276da2059 (Vw32_pass_optional_keys_to_system): Variable removed.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23637
diff changeset
3029 case VK_LWIN:
af0276da2059 (Vw32_pass_optional_keys_to_system): Variable removed.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23637
diff changeset
3030 if (NILP (Vw32_pass_lwindow_to_system))
af0276da2059 (Vw32_pass_optional_keys_to_system): Variable removed.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23637
diff changeset
3031 {
af0276da2059 (Vw32_pass_optional_keys_to_system): Variable removed.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23637
diff changeset
3032 /* Prevent system from acting on keyup (which opens the
af0276da2059 (Vw32_pass_optional_keys_to_system): Variable removed.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23637
diff changeset
3033 Start menu if no other key was pressed) by simulating a
af0276da2059 (Vw32_pass_optional_keys_to_system): Variable removed.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23637
diff changeset
3034 press of Space which we will ignore. */
af0276da2059 (Vw32_pass_optional_keys_to_system): Variable removed.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23637
diff changeset
3035 if (GetAsyncKeyState (wParam) & 1)
af0276da2059 (Vw32_pass_optional_keys_to_system): Variable removed.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23637
diff changeset
3036 {
23803
f112aa8f8f5d (Vw32_phantom_key_code): New variable.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23801
diff changeset
3037 if (NUMBERP (Vw32_phantom_key_code))
24206
d3649b38bb37 (w32_wnd_proc): Fix bug introduced by previous change;
Andrew Innes <andrewi@gnu.org>
parents: 24147
diff changeset
3038 key = XUINT (Vw32_phantom_key_code) & 255;
23803
f112aa8f8f5d (Vw32_phantom_key_code): New variable.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23801
diff changeset
3039 else
24206
d3649b38bb37 (w32_wnd_proc): Fix bug introduced by previous change;
Andrew Innes <andrewi@gnu.org>
parents: 24147
diff changeset
3040 key = VK_SPACE;
d3649b38bb37 (w32_wnd_proc): Fix bug introduced by previous change;
Andrew Innes <andrewi@gnu.org>
parents: 24147
diff changeset
3041 dpyinfo->faked_key = key;
d3649b38bb37 (w32_wnd_proc): Fix bug introduced by previous change;
Andrew Innes <andrewi@gnu.org>
parents: 24147
diff changeset
3042 keybd_event (key, (BYTE) MapVirtualKey (key, 0), 0, 0);
23681
af0276da2059 (Vw32_pass_optional_keys_to_system): Variable removed.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23637
diff changeset
3043 }
af0276da2059 (Vw32_pass_optional_keys_to_system): Variable removed.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23637
diff changeset
3044 }
af0276da2059 (Vw32_pass_optional_keys_to_system): Variable removed.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23637
diff changeset
3045 if (!NILP (Vw32_lwindow_modifier))
af0276da2059 (Vw32_pass_optional_keys_to_system): Variable removed.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23637
diff changeset
3046 return 0;
af0276da2059 (Vw32_pass_optional_keys_to_system): Variable removed.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23637
diff changeset
3047 break;
af0276da2059 (Vw32_pass_optional_keys_to_system): Variable removed.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23637
diff changeset
3048 case VK_RWIN:
af0276da2059 (Vw32_pass_optional_keys_to_system): Variable removed.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23637
diff changeset
3049 if (NILP (Vw32_pass_rwindow_to_system))
af0276da2059 (Vw32_pass_optional_keys_to_system): Variable removed.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23637
diff changeset
3050 {
af0276da2059 (Vw32_pass_optional_keys_to_system): Variable removed.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23637
diff changeset
3051 if (GetAsyncKeyState (wParam) & 1)
af0276da2059 (Vw32_pass_optional_keys_to_system): Variable removed.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23637
diff changeset
3052 {
23803
f112aa8f8f5d (Vw32_phantom_key_code): New variable.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23801
diff changeset
3053 if (NUMBERP (Vw32_phantom_key_code))
24206
d3649b38bb37 (w32_wnd_proc): Fix bug introduced by previous change;
Andrew Innes <andrewi@gnu.org>
parents: 24147
diff changeset
3054 key = XUINT (Vw32_phantom_key_code) & 255;
23803
f112aa8f8f5d (Vw32_phantom_key_code): New variable.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23801
diff changeset
3055 else
24206
d3649b38bb37 (w32_wnd_proc): Fix bug introduced by previous change;
Andrew Innes <andrewi@gnu.org>
parents: 24147
diff changeset
3056 key = VK_SPACE;
d3649b38bb37 (w32_wnd_proc): Fix bug introduced by previous change;
Andrew Innes <andrewi@gnu.org>
parents: 24147
diff changeset
3057 dpyinfo->faked_key = key;
d3649b38bb37 (w32_wnd_proc): Fix bug introduced by previous change;
Andrew Innes <andrewi@gnu.org>
parents: 24147
diff changeset
3058 keybd_event (key, (BYTE) MapVirtualKey (key, 0), 0, 0);
23681
af0276da2059 (Vw32_pass_optional_keys_to_system): Variable removed.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23637
diff changeset
3059 }
af0276da2059 (Vw32_pass_optional_keys_to_system): Variable removed.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23637
diff changeset
3060 }
af0276da2059 (Vw32_pass_optional_keys_to_system): Variable removed.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23637
diff changeset
3061 if (!NILP (Vw32_rwindow_modifier))
af0276da2059 (Vw32_pass_optional_keys_to_system): Variable removed.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23637
diff changeset
3062 return 0;
af0276da2059 (Vw32_pass_optional_keys_to_system): Variable removed.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23637
diff changeset
3063 break;
24206
d3649b38bb37 (w32_wnd_proc): Fix bug introduced by previous change;
Andrew Innes <andrewi@gnu.org>
parents: 24147
diff changeset
3064 case VK_APPS:
23681
af0276da2059 (Vw32_pass_optional_keys_to_system): Variable removed.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23637
diff changeset
3065 if (!NILP (Vw32_apps_modifier))
af0276da2059 (Vw32_pass_optional_keys_to_system): Variable removed.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23637
diff changeset
3066 return 0;
af0276da2059 (Vw32_pass_optional_keys_to_system): Variable removed.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23637
diff changeset
3067 break;
af0276da2059 (Vw32_pass_optional_keys_to_system): Variable removed.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23637
diff changeset
3068 case VK_MENU:
47942
080b4586492b Fix typo in comment.
Juanma Barranquero <lekktu@gmail.com>
parents: 47731
diff changeset
3069 if (NILP (Vw32_pass_alt_to_system))
23803
f112aa8f8f5d (Vw32_phantom_key_code): New variable.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23801
diff changeset
3070 /* Prevent DefWindowProc from activating the menu bar if an
f112aa8f8f5d (Vw32_phantom_key_code): New variable.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23801
diff changeset
3071 Alt key is pressed and released by itself. */
23681
af0276da2059 (Vw32_pass_optional_keys_to_system): Variable removed.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23637
diff changeset
3072 return 0;
15290
da73440fdb5f (Vwin32_mouse_move_interval): New lisp variable.
Karl Heuer <kwzh@gnu.org>
parents: 15280
diff changeset
3073 windows_translate = 1;
23681
af0276da2059 (Vw32_pass_optional_keys_to_system): Variable removed.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23637
diff changeset
3074 break;
47942
080b4586492b Fix typo in comment.
Juanma Barranquero <lekktu@gmail.com>
parents: 47731
diff changeset
3075 case VK_CAPITAL:
23681
af0276da2059 (Vw32_pass_optional_keys_to_system): Variable removed.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23637
diff changeset
3076 /* Decide whether to treat as modifier or function key. */
af0276da2059 (Vw32_pass_optional_keys_to_system): Variable removed.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23637
diff changeset
3077 if (NILP (Vw32_enable_caps_lock))
af0276da2059 (Vw32_pass_optional_keys_to_system): Variable removed.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23637
diff changeset
3078 goto disable_lock_key;
23803
f112aa8f8f5d (Vw32_phantom_key_code): New variable.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23801
diff changeset
3079 windows_translate = 1;
f112aa8f8f5d (Vw32_phantom_key_code): New variable.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23801
diff changeset
3080 break;
23681
af0276da2059 (Vw32_pass_optional_keys_to_system): Variable removed.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23637
diff changeset
3081 case VK_NUMLOCK:
af0276da2059 (Vw32_pass_optional_keys_to_system): Variable removed.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23637
diff changeset
3082 /* Decide whether to treat as modifier or function key. */
af0276da2059 (Vw32_pass_optional_keys_to_system): Variable removed.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23637
diff changeset
3083 if (NILP (Vw32_enable_num_lock))
af0276da2059 (Vw32_pass_optional_keys_to_system): Variable removed.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23637
diff changeset
3084 goto disable_lock_key;
23803
f112aa8f8f5d (Vw32_phantom_key_code): New variable.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23801
diff changeset
3085 windows_translate = 1;
f112aa8f8f5d (Vw32_phantom_key_code): New variable.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23801
diff changeset
3086 break;
23681
af0276da2059 (Vw32_pass_optional_keys_to_system): Variable removed.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23637
diff changeset
3087 case VK_SCROLL:
af0276da2059 (Vw32_pass_optional_keys_to_system): Variable removed.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23637
diff changeset
3088 /* Decide whether to treat as modifier or function key. */
af0276da2059 (Vw32_pass_optional_keys_to_system): Variable removed.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23637
diff changeset
3089 if (NILP (Vw32_scroll_lock_modifier))
af0276da2059 (Vw32_pass_optional_keys_to_system): Variable removed.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23637
diff changeset
3090 goto disable_lock_key;
23803
f112aa8f8f5d (Vw32_phantom_key_code): New variable.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23801
diff changeset
3091 windows_translate = 1;
f112aa8f8f5d (Vw32_phantom_key_code): New variable.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23801
diff changeset
3092 break;
23681
af0276da2059 (Vw32_pass_optional_keys_to_system): Variable removed.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23637
diff changeset
3093 disable_lock_key:
23803
f112aa8f8f5d (Vw32_phantom_key_code): New variable.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23801
diff changeset
3094 /* Ensure the appropriate lock key state (and indicator light)
f112aa8f8f5d (Vw32_phantom_key_code): New variable.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23801
diff changeset
3095 remains in the same state. We do this by faking another
f112aa8f8f5d (Vw32_phantom_key_code): New variable.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23801
diff changeset
3096 press of the relevant key. Apparently, this really is the
f112aa8f8f5d (Vw32_phantom_key_code): New variable.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23801
diff changeset
3097 only way to toggle the state of the indicator lights. */
f112aa8f8f5d (Vw32_phantom_key_code): New variable.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23801
diff changeset
3098 dpyinfo->faked_key = wParam;
f112aa8f8f5d (Vw32_phantom_key_code): New variable.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23801
diff changeset
3099 keybd_event ((BYTE) wParam, (BYTE) MapVirtualKey (wParam, 0),
f112aa8f8f5d (Vw32_phantom_key_code): New variable.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23801
diff changeset
3100 KEYEVENTF_EXTENDEDKEY | KEYEVENTF_KEYUP, 0);
f112aa8f8f5d (Vw32_phantom_key_code): New variable.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23801
diff changeset
3101 keybd_event ((BYTE) wParam, (BYTE) MapVirtualKey (wParam, 0),
f112aa8f8f5d (Vw32_phantom_key_code): New variable.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23801
diff changeset
3102 KEYEVENTF_EXTENDEDKEY | 0, 0);
f112aa8f8f5d (Vw32_phantom_key_code): New variable.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23801
diff changeset
3103 keybd_event ((BYTE) wParam, (BYTE) MapVirtualKey (wParam, 0),
f112aa8f8f5d (Vw32_phantom_key_code): New variable.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23801
diff changeset
3104 KEYEVENTF_EXTENDEDKEY | KEYEVENTF_KEYUP, 0);
f112aa8f8f5d (Vw32_phantom_key_code): New variable.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23801
diff changeset
3105 /* Ensure indicator lights are updated promptly on Windows 9x
f112aa8f8f5d (Vw32_phantom_key_code): New variable.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23801
diff changeset
3106 (TranslateMessage apparently does this), after forwarding
f112aa8f8f5d (Vw32_phantom_key_code): New variable.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23801
diff changeset
3107 input event. */
f112aa8f8f5d (Vw32_phantom_key_code): New variable.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23801
diff changeset
3108 post_character_message (hwnd, msg, wParam, lParam,
f112aa8f8f5d (Vw32_phantom_key_code): New variable.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23801
diff changeset
3109 w32_get_key_modifiers (wParam, lParam));
f112aa8f8f5d (Vw32_phantom_key_code): New variable.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23801
diff changeset
3110 windows_translate = 1;
23681
af0276da2059 (Vw32_pass_optional_keys_to_system): Variable removed.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23637
diff changeset
3111 break;
47942
080b4586492b Fix typo in comment.
Juanma Barranquero <lekktu@gmail.com>
parents: 47731
diff changeset
3112 case VK_CONTROL:
23681
af0276da2059 (Vw32_pass_optional_keys_to_system): Variable removed.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23637
diff changeset
3113 case VK_SHIFT:
af0276da2059 (Vw32_pass_optional_keys_to_system): Variable removed.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23637
diff changeset
3114 case VK_PROCESSKEY: /* Generated by IME. */
af0276da2059 (Vw32_pass_optional_keys_to_system): Variable removed.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23637
diff changeset
3115 windows_translate = 1;
af0276da2059 (Vw32_pass_optional_keys_to_system): Variable removed.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23637
diff changeset
3116 break;
23803
f112aa8f8f5d (Vw32_phantom_key_code): New variable.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23801
diff changeset
3117 case VK_CANCEL:
f112aa8f8f5d (Vw32_phantom_key_code): New variable.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23801
diff changeset
3118 /* Windows maps Ctrl-Pause (aka Ctrl-Break) into VK_CANCEL,
f112aa8f8f5d (Vw32_phantom_key_code): New variable.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23801
diff changeset
3119 which is confusing for purposes of key binding; convert
f112aa8f8f5d (Vw32_phantom_key_code): New variable.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23801
diff changeset
3120 VK_CANCEL events into VK_PAUSE events. */
f112aa8f8f5d (Vw32_phantom_key_code): New variable.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23801
diff changeset
3121 wParam = VK_PAUSE;
f112aa8f8f5d (Vw32_phantom_key_code): New variable.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23801
diff changeset
3122 break;
f112aa8f8f5d (Vw32_phantom_key_code): New variable.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23801
diff changeset
3123 case VK_PAUSE:
f112aa8f8f5d (Vw32_phantom_key_code): New variable.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23801
diff changeset
3124 /* Windows maps Ctrl-NumLock into VK_PAUSE, which is confusing
f112aa8f8f5d (Vw32_phantom_key_code): New variable.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23801
diff changeset
3125 for purposes of key binding; convert these back into
f112aa8f8f5d (Vw32_phantom_key_code): New variable.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23801
diff changeset
3126 VK_NUMLOCK events, at least when we want to see NumLock key
f112aa8f8f5d (Vw32_phantom_key_code): New variable.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23801
diff changeset
3127 presses. (Note that there is never any possibility that
f112aa8f8f5d (Vw32_phantom_key_code): New variable.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23801
diff changeset
3128 VK_PAUSE with Ctrl really is C-Pause as per above.) */
f112aa8f8f5d (Vw32_phantom_key_code): New variable.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23801
diff changeset
3129 if (NILP (Vw32_enable_num_lock) && modifier_set (VK_CONTROL))
f112aa8f8f5d (Vw32_phantom_key_code): New variable.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23801
diff changeset
3130 wParam = VK_NUMLOCK;
f112aa8f8f5d (Vw32_phantom_key_code): New variable.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23801
diff changeset
3131 break;
23681
af0276da2059 (Vw32_pass_optional_keys_to_system): Variable removed.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23637
diff changeset
3132 default:
af0276da2059 (Vw32_pass_optional_keys_to_system): Variable removed.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23637
diff changeset
3133 /* If not defined as a function key, change it to a WM_CHAR message. */
79563
fb6105cb466b (w32_wnd_proc, Fw32_reconstruct_hot_key): Range check
Jason Rumney <jasonr@gnu.org>
parents: 79393
diff changeset
3134 if (wParam > 255 || !lispy_function_keys[wParam])
23681
af0276da2059 (Vw32_pass_optional_keys_to_system): Variable removed.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23637
diff changeset
3135 {
23803
f112aa8f8f5d (Vw32_phantom_key_code): New variable.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23801
diff changeset
3136 DWORD modifiers = construct_console_modifiers ();
f112aa8f8f5d (Vw32_phantom_key_code): New variable.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23801
diff changeset
3137
23681
af0276da2059 (Vw32_pass_optional_keys_to_system): Variable removed.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23637
diff changeset
3138 if (!NILP (Vw32_recognize_altgr)
af0276da2059 (Vw32_pass_optional_keys_to_system): Variable removed.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23637
diff changeset
3139 && modifier_set (VK_LCONTROL) && modifier_set (VK_RMENU))
af0276da2059 (Vw32_pass_optional_keys_to_system): Variable removed.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23637
diff changeset
3140 {
af0276da2059 (Vw32_pass_optional_keys_to_system): Variable removed.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23637
diff changeset
3141 /* Always let TranslateMessage handle AltGr key chords;
af0276da2059 (Vw32_pass_optional_keys_to_system): Variable removed.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23637
diff changeset
3142 for some reason, ToAscii doesn't always process AltGr
af0276da2059 (Vw32_pass_optional_keys_to_system): Variable removed.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23637
diff changeset
3143 chords correctly. */
af0276da2059 (Vw32_pass_optional_keys_to_system): Variable removed.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23637
diff changeset
3144 windows_translate = 1;
af0276da2059 (Vw32_pass_optional_keys_to_system): Variable removed.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23637
diff changeset
3145 }
23803
f112aa8f8f5d (Vw32_phantom_key_code): New variable.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23801
diff changeset
3146 else if ((modifiers & (~SHIFT_PRESSED & ~CAPSLOCK_ON)) != 0)
23681
af0276da2059 (Vw32_pass_optional_keys_to_system): Variable removed.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23637
diff changeset
3147 {
23803
f112aa8f8f5d (Vw32_phantom_key_code): New variable.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23801
diff changeset
3148 /* Handle key chords including any modifiers other
f112aa8f8f5d (Vw32_phantom_key_code): New variable.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23801
diff changeset
3149 than shift directly, in order to preserve as much
f112aa8f8f5d (Vw32_phantom_key_code): New variable.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23801
diff changeset
3150 modifier information as possible. */
23681
af0276da2059 (Vw32_pass_optional_keys_to_system): Variable removed.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23637
diff changeset
3151 if ('A' <= wParam && wParam <= 'Z')
af0276da2059 (Vw32_pass_optional_keys_to_system): Variable removed.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23637
diff changeset
3152 {
af0276da2059 (Vw32_pass_optional_keys_to_system): Variable removed.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23637
diff changeset
3153 /* Don't translate modified alphabetic keystrokes,
af0276da2059 (Vw32_pass_optional_keys_to_system): Variable removed.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23637
diff changeset
3154 so the user doesn't need to constantly switch
af0276da2059 (Vw32_pass_optional_keys_to_system): Variable removed.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23637
diff changeset
3155 layout to type control or meta keystrokes when
af0276da2059 (Vw32_pass_optional_keys_to_system): Variable removed.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23637
diff changeset
3156 the normal layout translates alphabetic
af0276da2059 (Vw32_pass_optional_keys_to_system): Variable removed.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23637
diff changeset
3157 characters to non-ascii characters. */
af0276da2059 (Vw32_pass_optional_keys_to_system): Variable removed.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23637
diff changeset
3158 if (!modifier_set (VK_SHIFT))
af0276da2059 (Vw32_pass_optional_keys_to_system): Variable removed.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23637
diff changeset
3159 wParam += ('a' - 'A');
af0276da2059 (Vw32_pass_optional_keys_to_system): Variable removed.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23637
diff changeset
3160 msg = WM_CHAR;
af0276da2059 (Vw32_pass_optional_keys_to_system): Variable removed.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23637
diff changeset
3161 }
af0276da2059 (Vw32_pass_optional_keys_to_system): Variable removed.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23637
diff changeset
3162 else
af0276da2059 (Vw32_pass_optional_keys_to_system): Variable removed.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23637
diff changeset
3163 {
af0276da2059 (Vw32_pass_optional_keys_to_system): Variable removed.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23637
diff changeset
3164 /* Try to handle other keystrokes by determining the
af0276da2059 (Vw32_pass_optional_keys_to_system): Variable removed.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23637
diff changeset
3165 base character (ie. translating the base key plus
af0276da2059 (Vw32_pass_optional_keys_to_system): Variable removed.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23637
diff changeset
3166 shift modifier). */
af0276da2059 (Vw32_pass_optional_keys_to_system): Variable removed.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23637
diff changeset
3167 int add;
af0276da2059 (Vw32_pass_optional_keys_to_system): Variable removed.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23637
diff changeset
3168 int isdead = 0;
af0276da2059 (Vw32_pass_optional_keys_to_system): Variable removed.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23637
diff changeset
3169 KEY_EVENT_RECORD key;
47942
080b4586492b Fix typo in comment.
Juanma Barranquero <lekktu@gmail.com>
parents: 47731
diff changeset
3170
23681
af0276da2059 (Vw32_pass_optional_keys_to_system): Variable removed.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23637
diff changeset
3171 key.bKeyDown = TRUE;
af0276da2059 (Vw32_pass_optional_keys_to_system): Variable removed.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23637
diff changeset
3172 key.wRepeatCount = 1;
af0276da2059 (Vw32_pass_optional_keys_to_system): Variable removed.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23637
diff changeset
3173 key.wVirtualKeyCode = wParam;
af0276da2059 (Vw32_pass_optional_keys_to_system): Variable removed.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23637
diff changeset
3174 key.wVirtualScanCode = (lParam & 0xFF0000) >> 16;
af0276da2059 (Vw32_pass_optional_keys_to_system): Variable removed.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23637
diff changeset
3175 key.uChar.AsciiChar = 0;
23803
f112aa8f8f5d (Vw32_phantom_key_code): New variable.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23801
diff changeset
3176 key.dwControlKeyState = modifiers;
23681
af0276da2059 (Vw32_pass_optional_keys_to_system): Variable removed.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23637
diff changeset
3177
af0276da2059 (Vw32_pass_optional_keys_to_system): Variable removed.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23637
diff changeset
3178 add = w32_kbd_patch_key (&key);
af0276da2059 (Vw32_pass_optional_keys_to_system): Variable removed.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23637
diff changeset
3179 /* 0 means an unrecognised keycode, negative means
af0276da2059 (Vw32_pass_optional_keys_to_system): Variable removed.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23637
diff changeset
3180 dead key. Ignore both. */
af0276da2059 (Vw32_pass_optional_keys_to_system): Variable removed.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23637
diff changeset
3181 while (--add >= 0)
af0276da2059 (Vw32_pass_optional_keys_to_system): Variable removed.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23637
diff changeset
3182 {
af0276da2059 (Vw32_pass_optional_keys_to_system): Variable removed.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23637
diff changeset
3183 /* Forward asciified character sequence. */
af0276da2059 (Vw32_pass_optional_keys_to_system): Variable removed.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23637
diff changeset
3184 post_character_message
79578
f54781f97950 (w32_wnd_proc) <WM_KEYDOWN>: Cast char to unsigned before passing as wParam.
Jason Rumney <jasonr@gnu.org>
parents: 79563
diff changeset
3185 (hwnd, WM_CHAR,
f54781f97950 (w32_wnd_proc) <WM_KEYDOWN>: Cast char to unsigned before passing as wParam.
Jason Rumney <jasonr@gnu.org>
parents: 79563
diff changeset
3186 (unsigned char) key.uChar.AsciiChar, lParam,
23681
af0276da2059 (Vw32_pass_optional_keys_to_system): Variable removed.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23637
diff changeset
3187 w32_get_key_modifiers (wParam, lParam));
af0276da2059 (Vw32_pass_optional_keys_to_system): Variable removed.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23637
diff changeset
3188 w32_kbd_patch_key (&key);
af0276da2059 (Vw32_pass_optional_keys_to_system): Variable removed.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23637
diff changeset
3189 }
af0276da2059 (Vw32_pass_optional_keys_to_system): Variable removed.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23637
diff changeset
3190 return 0;
af0276da2059 (Vw32_pass_optional_keys_to_system): Variable removed.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23637
diff changeset
3191 }
af0276da2059 (Vw32_pass_optional_keys_to_system): Variable removed.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23637
diff changeset
3192 }
af0276da2059 (Vw32_pass_optional_keys_to_system): Variable removed.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23637
diff changeset
3193 else
af0276da2059 (Vw32_pass_optional_keys_to_system): Variable removed.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23637
diff changeset
3194 {
af0276da2059 (Vw32_pass_optional_keys_to_system): Variable removed.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23637
diff changeset
3195 /* Let TranslateMessage handle everything else. */
af0276da2059 (Vw32_pass_optional_keys_to_system): Variable removed.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23637
diff changeset
3196 windows_translate = 1;
af0276da2059 (Vw32_pass_optional_keys_to_system): Variable removed.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23637
diff changeset
3197 }
af0276da2059 (Vw32_pass_optional_keys_to_system): Variable removed.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23637
diff changeset
3198 }
af0276da2059 (Vw32_pass_optional_keys_to_system): Variable removed.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23637
diff changeset
3199 }
14461
4fe9540be594 (modifiers, modifier_key_support_tested,
Geoff Voelker <voelker@cs.washington.edu>
parents: 14353
diff changeset
3200
23803
f112aa8f8f5d (Vw32_phantom_key_code): New variable.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23801
diff changeset
3201 translate:
15290
da73440fdb5f (Vwin32_mouse_move_interval): New lisp variable.
Karl Heuer <kwzh@gnu.org>
parents: 15280
diff changeset
3202 if (windows_translate)
da73440fdb5f (Vwin32_mouse_move_interval): New lisp variable.
Karl Heuer <kwzh@gnu.org>
parents: 15280
diff changeset
3203 {
16884
36babc489b0c Change all uses of win95, winnt, and win32
Geoff Voelker <voelker@cs.washington.edu>
parents: 16602
diff changeset
3204 MSG windows_msg = { hwnd, msg, wParam, lParam, 0, {0,0} };
36babc489b0c Change all uses of win95, winnt, and win32
Geoff Voelker <voelker@cs.washington.edu>
parents: 16602
diff changeset
3205 windows_msg.time = GetMessageTime ();
36babc489b0c Change all uses of win95, winnt, and win32
Geoff Voelker <voelker@cs.washington.edu>
parents: 16602
diff changeset
3206 TranslateMessage (&windows_msg);
15290
da73440fdb5f (Vwin32_mouse_move_interval): New lisp variable.
Karl Heuer <kwzh@gnu.org>
parents: 15280
diff changeset
3207 goto dflt;
da73440fdb5f (Vwin32_mouse_move_interval): New lisp variable.
Karl Heuer <kwzh@gnu.org>
parents: 15280
diff changeset
3208 }
da73440fdb5f (Vwin32_mouse_move_interval): New lisp variable.
Karl Heuer <kwzh@gnu.org>
parents: 15280
diff changeset
3209
13434
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
3210 /* Fall through */
47942
080b4586492b Fix typo in comment.
Juanma Barranquero <lekktu@gmail.com>
parents: 47731
diff changeset
3211
13434
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
3212 case WM_SYSCHAR:
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
3213 case WM_CHAR:
23681
af0276da2059 (Vw32_pass_optional_keys_to_system): Variable removed.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23637
diff changeset
3214 post_character_message (hwnd, msg, wParam, lParam,
af0276da2059 (Vw32_pass_optional_keys_to_system): Variable removed.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23637
diff changeset
3215 w32_get_key_modifiers (wParam, lParam));
13434
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
3216 break;
14810
4dd6867765b9 (Vwin32_pass_alt_to_system,
Geoff Voelker <voelker@cs.washington.edu>
parents: 14461
diff changeset
3217
91099
8bbec66c0718 Include imm.h.
Jason Rumney <jasonr@gnu.org>
parents: 91085
diff changeset
3218 case WM_UNICHAR:
8bbec66c0718 Include imm.h.
Jason Rumney <jasonr@gnu.org>
parents: 91085
diff changeset
3219 /* WM_UNICHAR looks promising from the docs, but the exact
8bbec66c0718 Include imm.h.
Jason Rumney <jasonr@gnu.org>
parents: 91085
diff changeset
3220 circumstances in which TranslateMessage sends it is one of those
8bbec66c0718 Include imm.h.
Jason Rumney <jasonr@gnu.org>
parents: 91085
diff changeset
3221 Microsoft secret API things that EU and US courts are supposed
8bbec66c0718 Include imm.h.
Jason Rumney <jasonr@gnu.org>
parents: 91085
diff changeset
3222 to have put a stop to already. Spy++ shows it being sent to Notepad
8bbec66c0718 Include imm.h.
Jason Rumney <jasonr@gnu.org>
parents: 91085
diff changeset
3223 and other MS apps, but never to Emacs.
8bbec66c0718 Include imm.h.
Jason Rumney <jasonr@gnu.org>
parents: 91085
diff changeset
3224
8bbec66c0718 Include imm.h.
Jason Rumney <jasonr@gnu.org>
parents: 91085
diff changeset
3225 Some third party IMEs send it in accordance with the official
8bbec66c0718 Include imm.h.
Jason Rumney <jasonr@gnu.org>
parents: 91085
diff changeset
3226 documentation though, so handle it here.
8bbec66c0718 Include imm.h.
Jason Rumney <jasonr@gnu.org>
parents: 91085
diff changeset
3227
8bbec66c0718 Include imm.h.
Jason Rumney <jasonr@gnu.org>
parents: 91085
diff changeset
3228 UNICODE_NOCHAR is used to test for support for this message.
8bbec66c0718 Include imm.h.
Jason Rumney <jasonr@gnu.org>
parents: 91085
diff changeset
3229 TRUE indicates that the message is supported. */
8bbec66c0718 Include imm.h.
Jason Rumney <jasonr@gnu.org>
parents: 91085
diff changeset
3230 if (wParam == UNICODE_NOCHAR)
8bbec66c0718 Include imm.h.
Jason Rumney <jasonr@gnu.org>
parents: 91085
diff changeset
3231 return TRUE;
8bbec66c0718 Include imm.h.
Jason Rumney <jasonr@gnu.org>
parents: 91085
diff changeset
3232
8bbec66c0718 Include imm.h.
Jason Rumney <jasonr@gnu.org>
parents: 91085
diff changeset
3233 {
8bbec66c0718 Include imm.h.
Jason Rumney <jasonr@gnu.org>
parents: 91085
diff changeset
3234 W32Msg wmsg;
8bbec66c0718 Include imm.h.
Jason Rumney <jasonr@gnu.org>
parents: 91085
diff changeset
3235 wmsg.dwModifiers = w32_get_key_modifiers (wParam, lParam);
8bbec66c0718 Include imm.h.
Jason Rumney <jasonr@gnu.org>
parents: 91085
diff changeset
3236 signal_user_input ();
8bbec66c0718 Include imm.h.
Jason Rumney <jasonr@gnu.org>
parents: 91085
diff changeset
3237 my_post_msg (&wmsg, hwnd, msg, wParam, lParam);
8bbec66c0718 Include imm.h.
Jason Rumney <jasonr@gnu.org>
parents: 91085
diff changeset
3238 }
8bbec66c0718 Include imm.h.
Jason Rumney <jasonr@gnu.org>
parents: 91085
diff changeset
3239 break;
8bbec66c0718 Include imm.h.
Jason Rumney <jasonr@gnu.org>
parents: 91085
diff changeset
3240
8bbec66c0718 Include imm.h.
Jason Rumney <jasonr@gnu.org>
parents: 91085
diff changeset
3241 case WM_IME_CHAR:
8bbec66c0718 Include imm.h.
Jason Rumney <jasonr@gnu.org>
parents: 91085
diff changeset
3242 /* If we can't get the IME result as unicode, use default processing,
8bbec66c0718 Include imm.h.
Jason Rumney <jasonr@gnu.org>
parents: 91085
diff changeset
3243 which will at least allow characters decodable in the system locale
8bbec66c0718 Include imm.h.
Jason Rumney <jasonr@gnu.org>
parents: 91085
diff changeset
3244 get through. */
8bbec66c0718 Include imm.h.
Jason Rumney <jasonr@gnu.org>
parents: 91085
diff changeset
3245 if (!get_composition_string_fn)
8bbec66c0718 Include imm.h.
Jason Rumney <jasonr@gnu.org>
parents: 91085
diff changeset
3246 goto dflt;
8bbec66c0718 Include imm.h.
Jason Rumney <jasonr@gnu.org>
parents: 91085
diff changeset
3247
8bbec66c0718 Include imm.h.
Jason Rumney <jasonr@gnu.org>
parents: 91085
diff changeset
3248 else if (!ignore_ime_char)
8bbec66c0718 Include imm.h.
Jason Rumney <jasonr@gnu.org>
parents: 91085
diff changeset
3249 {
8bbec66c0718 Include imm.h.
Jason Rumney <jasonr@gnu.org>
parents: 91085
diff changeset
3250 wchar_t * buffer;
8bbec66c0718 Include imm.h.
Jason Rumney <jasonr@gnu.org>
parents: 91085
diff changeset
3251 int size, i;
8bbec66c0718 Include imm.h.
Jason Rumney <jasonr@gnu.org>
parents: 91085
diff changeset
3252 W32Msg wmsg;
8bbec66c0718 Include imm.h.
Jason Rumney <jasonr@gnu.org>
parents: 91085
diff changeset
3253 HIMC context = get_ime_context_fn (hwnd);
8bbec66c0718 Include imm.h.
Jason Rumney <jasonr@gnu.org>
parents: 91085
diff changeset
3254 wmsg.dwModifiers = w32_get_key_modifiers (wParam, lParam);
8bbec66c0718 Include imm.h.
Jason Rumney <jasonr@gnu.org>
parents: 91085
diff changeset
3255 /* Get buffer size. */
8bbec66c0718 Include imm.h.
Jason Rumney <jasonr@gnu.org>
parents: 91085
diff changeset
3256 size = get_composition_string_fn (context, GCS_RESULTSTR, buffer, 0);
8bbec66c0718 Include imm.h.
Jason Rumney <jasonr@gnu.org>
parents: 91085
diff changeset
3257 buffer = alloca(size);
8bbec66c0718 Include imm.h.
Jason Rumney <jasonr@gnu.org>
parents: 91085
diff changeset
3258 size = get_composition_string_fn (context, GCS_RESULTSTR,
8bbec66c0718 Include imm.h.
Jason Rumney <jasonr@gnu.org>
parents: 91085
diff changeset
3259 buffer, size);
8bbec66c0718 Include imm.h.
Jason Rumney <jasonr@gnu.org>
parents: 91085
diff changeset
3260 signal_user_input ();
8bbec66c0718 Include imm.h.
Jason Rumney <jasonr@gnu.org>
parents: 91085
diff changeset
3261 for (i = 0; i < size / sizeof (wchar_t); i++)
8bbec66c0718 Include imm.h.
Jason Rumney <jasonr@gnu.org>
parents: 91085
diff changeset
3262 {
8bbec66c0718 Include imm.h.
Jason Rumney <jasonr@gnu.org>
parents: 91085
diff changeset
3263 my_post_msg (&wmsg, hwnd, WM_UNICHAR, (WPARAM) buffer[i],
8bbec66c0718 Include imm.h.
Jason Rumney <jasonr@gnu.org>
parents: 91085
diff changeset
3264 lParam);
8bbec66c0718 Include imm.h.
Jason Rumney <jasonr@gnu.org>
parents: 91085
diff changeset
3265 }
8bbec66c0718 Include imm.h.
Jason Rumney <jasonr@gnu.org>
parents: 91085
diff changeset
3266 /* We output the whole string above, so ignore following ones
8bbec66c0718 Include imm.h.
Jason Rumney <jasonr@gnu.org>
parents: 91085
diff changeset
3267 until we are notified of the end of composition. */
8bbec66c0718 Include imm.h.
Jason Rumney <jasonr@gnu.org>
parents: 91085
diff changeset
3268 ignore_ime_char = 1;
8bbec66c0718 Include imm.h.
Jason Rumney <jasonr@gnu.org>
parents: 91085
diff changeset
3269 }
8bbec66c0718 Include imm.h.
Jason Rumney <jasonr@gnu.org>
parents: 91085
diff changeset
3270 break;
8bbec66c0718 Include imm.h.
Jason Rumney <jasonr@gnu.org>
parents: 91085
diff changeset
3271
8bbec66c0718 Include imm.h.
Jason Rumney <jasonr@gnu.org>
parents: 91085
diff changeset
3272 case WM_IME_ENDCOMPOSITION:
8bbec66c0718 Include imm.h.
Jason Rumney <jasonr@gnu.org>
parents: 91085
diff changeset
3273 ignore_ime_char = 0;
8bbec66c0718 Include imm.h.
Jason Rumney <jasonr@gnu.org>
parents: 91085
diff changeset
3274 goto dflt;
8bbec66c0718 Include imm.h.
Jason Rumney <jasonr@gnu.org>
parents: 91085
diff changeset
3275
15147
38c0ce06203f (quit_char, Vwin32_enable_italics, Vwin32_enable_palette):
Geoff Voelker <voelker@cs.washington.edu>
parents: 15034
diff changeset
3276 /* Simulate middle mouse button events when left and right buttons
38c0ce06203f (quit_char, Vwin32_enable_italics, Vwin32_enable_palette):
Geoff Voelker <voelker@cs.washington.edu>
parents: 15034
diff changeset
3277 are used together, but only if user has two button mouse. */
13434
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
3278 case WM_LBUTTONDOWN:
15147
38c0ce06203f (quit_char, Vwin32_enable_italics, Vwin32_enable_palette):
Geoff Voelker <voelker@cs.washington.edu>
parents: 15034
diff changeset
3279 case WM_RBUTTONDOWN:
55656
29b250a07fe0 (Fw32_register_hot_key, Fw32_unregister_hot_key)
Jason Rumney <jasonr@gnu.org>
parents: 55592
diff changeset
3280 if (w32_num_mouse_buttons > 2)
15147
38c0ce06203f (quit_char, Vwin32_enable_italics, Vwin32_enable_palette):
Geoff Voelker <voelker@cs.washington.edu>
parents: 15034
diff changeset
3281 goto handle_plain_button;
38c0ce06203f (quit_char, Vwin32_enable_italics, Vwin32_enable_palette):
Geoff Voelker <voelker@cs.washington.edu>
parents: 15034
diff changeset
3282
38c0ce06203f (quit_char, Vwin32_enable_italics, Vwin32_enable_palette):
Geoff Voelker <voelker@cs.washington.edu>
parents: 15034
diff changeset
3283 {
38c0ce06203f (quit_char, Vwin32_enable_italics, Vwin32_enable_palette):
Geoff Voelker <voelker@cs.washington.edu>
parents: 15034
diff changeset
3284 int this = (msg == WM_LBUTTONDOWN) ? LMOUSE : RMOUSE;
38c0ce06203f (quit_char, Vwin32_enable_italics, Vwin32_enable_palette):
Geoff Voelker <voelker@cs.washington.edu>
parents: 15034
diff changeset
3285 int other = (msg == WM_LBUTTONDOWN) ? RMOUSE : LMOUSE;
38c0ce06203f (quit_char, Vwin32_enable_italics, Vwin32_enable_palette):
Geoff Voelker <voelker@cs.washington.edu>
parents: 15034
diff changeset
3286
15205
0f5d6cd72e21 (win_msg_worker): Use post_msg.
Richard M. Stallman <rms@gnu.org>
parents: 15148
diff changeset
3287 if (button_state & this)
0f5d6cd72e21 (win_msg_worker): Use post_msg.
Richard M. Stallman <rms@gnu.org>
parents: 15148
diff changeset
3288 return 0;
15147
38c0ce06203f (quit_char, Vwin32_enable_italics, Vwin32_enable_palette):
Geoff Voelker <voelker@cs.washington.edu>
parents: 15034
diff changeset
3289
38c0ce06203f (quit_char, Vwin32_enable_italics, Vwin32_enable_palette):
Geoff Voelker <voelker@cs.washington.edu>
parents: 15034
diff changeset
3290 if (button_state == 0)
38c0ce06203f (quit_char, Vwin32_enable_italics, Vwin32_enable_palette):
Geoff Voelker <voelker@cs.washington.edu>
parents: 15034
diff changeset
3291 SetCapture (hwnd);
38c0ce06203f (quit_char, Vwin32_enable_italics, Vwin32_enable_palette):
Geoff Voelker <voelker@cs.washington.edu>
parents: 15034
diff changeset
3292
38c0ce06203f (quit_char, Vwin32_enable_italics, Vwin32_enable_palette):
Geoff Voelker <voelker@cs.washington.edu>
parents: 15034
diff changeset
3293 button_state |= this;
38c0ce06203f (quit_char, Vwin32_enable_italics, Vwin32_enable_palette):
Geoff Voelker <voelker@cs.washington.edu>
parents: 15034
diff changeset
3294
38c0ce06203f (quit_char, Vwin32_enable_italics, Vwin32_enable_palette):
Geoff Voelker <voelker@cs.washington.edu>
parents: 15034
diff changeset
3295 if (button_state & other)
38c0ce06203f (quit_char, Vwin32_enable_italics, Vwin32_enable_palette):
Geoff Voelker <voelker@cs.washington.edu>
parents: 15034
diff changeset
3296 {
15290
da73440fdb5f (Vwin32_mouse_move_interval): New lisp variable.
Karl Heuer <kwzh@gnu.org>
parents: 15280
diff changeset
3297 if (mouse_button_timer)
15147
38c0ce06203f (quit_char, Vwin32_enable_italics, Vwin32_enable_palette):
Geoff Voelker <voelker@cs.washington.edu>
parents: 15034
diff changeset
3298 {
15290
da73440fdb5f (Vwin32_mouse_move_interval): New lisp variable.
Karl Heuer <kwzh@gnu.org>
parents: 15280
diff changeset
3299 KillTimer (hwnd, mouse_button_timer);
da73440fdb5f (Vwin32_mouse_move_interval): New lisp variable.
Karl Heuer <kwzh@gnu.org>
parents: 15280
diff changeset
3300 mouse_button_timer = 0;
15147
38c0ce06203f (quit_char, Vwin32_enable_italics, Vwin32_enable_palette):
Geoff Voelker <voelker@cs.washington.edu>
parents: 15034
diff changeset
3301
38c0ce06203f (quit_char, Vwin32_enable_italics, Vwin32_enable_palette):
Geoff Voelker <voelker@cs.washington.edu>
parents: 15034
diff changeset
3302 /* Generate middle mouse event instead. */
38c0ce06203f (quit_char, Vwin32_enable_italics, Vwin32_enable_palette):
Geoff Voelker <voelker@cs.washington.edu>
parents: 15034
diff changeset
3303 msg = WM_MBUTTONDOWN;
38c0ce06203f (quit_char, Vwin32_enable_italics, Vwin32_enable_palette):
Geoff Voelker <voelker@cs.washington.edu>
parents: 15034
diff changeset
3304 button_state |= MMOUSE;
38c0ce06203f (quit_char, Vwin32_enable_italics, Vwin32_enable_palette):
Geoff Voelker <voelker@cs.washington.edu>
parents: 15034
diff changeset
3305 }
38c0ce06203f (quit_char, Vwin32_enable_italics, Vwin32_enable_palette):
Geoff Voelker <voelker@cs.washington.edu>
parents: 15034
diff changeset
3306 else if (button_state & MMOUSE)
38c0ce06203f (quit_char, Vwin32_enable_italics, Vwin32_enable_palette):
Geoff Voelker <voelker@cs.washington.edu>
parents: 15034
diff changeset
3307 {
38c0ce06203f (quit_char, Vwin32_enable_italics, Vwin32_enable_palette):
Geoff Voelker <voelker@cs.washington.edu>
parents: 15034
diff changeset
3308 /* Ignore button event if we've already generated a
38c0ce06203f (quit_char, Vwin32_enable_italics, Vwin32_enable_palette):
Geoff Voelker <voelker@cs.washington.edu>
parents: 15034
diff changeset
3309 middle mouse down event. This happens if the
38c0ce06203f (quit_char, Vwin32_enable_italics, Vwin32_enable_palette):
Geoff Voelker <voelker@cs.washington.edu>
parents: 15034
diff changeset
3310 user releases and press one of the two buttons
38c0ce06203f (quit_char, Vwin32_enable_italics, Vwin32_enable_palette):
Geoff Voelker <voelker@cs.washington.edu>
parents: 15034
diff changeset
3311 after we've faked a middle mouse event. */
38c0ce06203f (quit_char, Vwin32_enable_italics, Vwin32_enable_palette):
Geoff Voelker <voelker@cs.washington.edu>
parents: 15034
diff changeset
3312 return 0;
38c0ce06203f (quit_char, Vwin32_enable_italics, Vwin32_enable_palette):
Geoff Voelker <voelker@cs.washington.edu>
parents: 15034
diff changeset
3313 }
38c0ce06203f (quit_char, Vwin32_enable_italics, Vwin32_enable_palette):
Geoff Voelker <voelker@cs.washington.edu>
parents: 15034
diff changeset
3314 else
38c0ce06203f (quit_char, Vwin32_enable_italics, Vwin32_enable_palette):
Geoff Voelker <voelker@cs.washington.edu>
parents: 15034
diff changeset
3315 {
38c0ce06203f (quit_char, Vwin32_enable_italics, Vwin32_enable_palette):
Geoff Voelker <voelker@cs.washington.edu>
parents: 15034
diff changeset
3316 /* Flush out saved message. */
15290
da73440fdb5f (Vwin32_mouse_move_interval): New lisp variable.
Karl Heuer <kwzh@gnu.org>
parents: 15280
diff changeset
3317 post_msg (&saved_mouse_button_msg);
15147
38c0ce06203f (quit_char, Vwin32_enable_italics, Vwin32_enable_palette):
Geoff Voelker <voelker@cs.washington.edu>
parents: 15034
diff changeset
3318 }
16588
481b7874a1e9 Change identifiers of the form win32* to w32*.
Geoff Voelker <voelker@cs.washington.edu>
parents: 16259
diff changeset
3319 wmsg.dwModifiers = w32_get_modifiers ();
15147
38c0ce06203f (quit_char, Vwin32_enable_italics, Vwin32_enable_palette):
Geoff Voelker <voelker@cs.washington.edu>
parents: 15034
diff changeset
3320 my_post_msg (&wmsg, hwnd, msg, wParam, lParam);
70233
589489bb1924 (w32_wnd_proc) <WM_LBUTTONDOWN, WM_RBUTTONDOWN>:
Jason Rumney <jasonr@gnu.org>
parents: 69879
diff changeset
3321 signal_user_input ();
15147
38c0ce06203f (quit_char, Vwin32_enable_italics, Vwin32_enable_palette):
Geoff Voelker <voelker@cs.washington.edu>
parents: 15034
diff changeset
3322
38c0ce06203f (quit_char, Vwin32_enable_italics, Vwin32_enable_palette):
Geoff Voelker <voelker@cs.washington.edu>
parents: 15034
diff changeset
3323 /* Clear message buffer. */
15290
da73440fdb5f (Vwin32_mouse_move_interval): New lisp variable.
Karl Heuer <kwzh@gnu.org>
parents: 15280
diff changeset
3324 saved_mouse_button_msg.msg.hwnd = 0;
15147
38c0ce06203f (quit_char, Vwin32_enable_italics, Vwin32_enable_palette):
Geoff Voelker <voelker@cs.washington.edu>
parents: 15034
diff changeset
3325 }
38c0ce06203f (quit_char, Vwin32_enable_italics, Vwin32_enable_palette):
Geoff Voelker <voelker@cs.washington.edu>
parents: 15034
diff changeset
3326 else
38c0ce06203f (quit_char, Vwin32_enable_italics, Vwin32_enable_palette):
Geoff Voelker <voelker@cs.washington.edu>
parents: 15034
diff changeset
3327 {
38c0ce06203f (quit_char, Vwin32_enable_italics, Vwin32_enable_palette):
Geoff Voelker <voelker@cs.washington.edu>
parents: 15034
diff changeset
3328 /* Hold onto message for now. */
15290
da73440fdb5f (Vwin32_mouse_move_interval): New lisp variable.
Karl Heuer <kwzh@gnu.org>
parents: 15280
diff changeset
3329 mouse_button_timer =
23803
f112aa8f8f5d (Vw32_phantom_key_code): New variable.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23801
diff changeset
3330 SetTimer (hwnd, MOUSE_BUTTON_ID,
55656
29b250a07fe0 (Fw32_register_hot_key, Fw32_unregister_hot_key)
Jason Rumney <jasonr@gnu.org>
parents: 55592
diff changeset
3331 w32_mouse_button_tolerance, NULL);
15290
da73440fdb5f (Vwin32_mouse_move_interval): New lisp variable.
Karl Heuer <kwzh@gnu.org>
parents: 15280
diff changeset
3332 saved_mouse_button_msg.msg.hwnd = hwnd;
da73440fdb5f (Vwin32_mouse_move_interval): New lisp variable.
Karl Heuer <kwzh@gnu.org>
parents: 15280
diff changeset
3333 saved_mouse_button_msg.msg.message = msg;
da73440fdb5f (Vwin32_mouse_move_interval): New lisp variable.
Karl Heuer <kwzh@gnu.org>
parents: 15280
diff changeset
3334 saved_mouse_button_msg.msg.wParam = wParam;
da73440fdb5f (Vwin32_mouse_move_interval): New lisp variable.
Karl Heuer <kwzh@gnu.org>
parents: 15280
diff changeset
3335 saved_mouse_button_msg.msg.lParam = lParam;
da73440fdb5f (Vwin32_mouse_move_interval): New lisp variable.
Karl Heuer <kwzh@gnu.org>
parents: 15280
diff changeset
3336 saved_mouse_button_msg.msg.time = GetMessageTime ();
16588
481b7874a1e9 Change identifiers of the form win32* to w32*.
Geoff Voelker <voelker@cs.washington.edu>
parents: 16259
diff changeset
3337 saved_mouse_button_msg.dwModifiers = w32_get_modifiers ();
15147
38c0ce06203f (quit_char, Vwin32_enable_italics, Vwin32_enable_palette):
Geoff Voelker <voelker@cs.washington.edu>
parents: 15034
diff changeset
3338 }
38c0ce06203f (quit_char, Vwin32_enable_italics, Vwin32_enable_palette):
Geoff Voelker <voelker@cs.washington.edu>
parents: 15034
diff changeset
3339 }
38c0ce06203f (quit_char, Vwin32_enable_italics, Vwin32_enable_palette):
Geoff Voelker <voelker@cs.washington.edu>
parents: 15034
diff changeset
3340 return 0;
38c0ce06203f (quit_char, Vwin32_enable_italics, Vwin32_enable_palette):
Geoff Voelker <voelker@cs.washington.edu>
parents: 15034
diff changeset
3341
13434
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
3342 case WM_LBUTTONUP:
15147
38c0ce06203f (quit_char, Vwin32_enable_italics, Vwin32_enable_palette):
Geoff Voelker <voelker@cs.washington.edu>
parents: 15034
diff changeset
3343 case WM_RBUTTONUP:
55656
29b250a07fe0 (Fw32_register_hot_key, Fw32_unregister_hot_key)
Jason Rumney <jasonr@gnu.org>
parents: 55592
diff changeset
3344 if (w32_num_mouse_buttons > 2)
15147
38c0ce06203f (quit_char, Vwin32_enable_italics, Vwin32_enable_palette):
Geoff Voelker <voelker@cs.washington.edu>
parents: 15034
diff changeset
3345 goto handle_plain_button;
38c0ce06203f (quit_char, Vwin32_enable_italics, Vwin32_enable_palette):
Geoff Voelker <voelker@cs.washington.edu>
parents: 15034
diff changeset
3346
38c0ce06203f (quit_char, Vwin32_enable_italics, Vwin32_enable_palette):
Geoff Voelker <voelker@cs.washington.edu>
parents: 15034
diff changeset
3347 {
38c0ce06203f (quit_char, Vwin32_enable_italics, Vwin32_enable_palette):
Geoff Voelker <voelker@cs.washington.edu>
parents: 15034
diff changeset
3348 int this = (msg == WM_LBUTTONUP) ? LMOUSE : RMOUSE;
38c0ce06203f (quit_char, Vwin32_enable_italics, Vwin32_enable_palette):
Geoff Voelker <voelker@cs.washington.edu>
parents: 15034
diff changeset
3349 int other = (msg == WM_LBUTTONUP) ? RMOUSE : LMOUSE;
38c0ce06203f (quit_char, Vwin32_enable_italics, Vwin32_enable_palette):
Geoff Voelker <voelker@cs.washington.edu>
parents: 15034
diff changeset
3350
15205
0f5d6cd72e21 (win_msg_worker): Use post_msg.
Richard M. Stallman <rms@gnu.org>
parents: 15148
diff changeset
3351 if ((button_state & this) == 0)
0f5d6cd72e21 (win_msg_worker): Use post_msg.
Richard M. Stallman <rms@gnu.org>
parents: 15148
diff changeset
3352 return 0;
15147
38c0ce06203f (quit_char, Vwin32_enable_italics, Vwin32_enable_palette):
Geoff Voelker <voelker@cs.washington.edu>
parents: 15034
diff changeset
3353
38c0ce06203f (quit_char, Vwin32_enable_italics, Vwin32_enable_palette):
Geoff Voelker <voelker@cs.washington.edu>
parents: 15034
diff changeset
3354 button_state &= ~this;
38c0ce06203f (quit_char, Vwin32_enable_italics, Vwin32_enable_palette):
Geoff Voelker <voelker@cs.washington.edu>
parents: 15034
diff changeset
3355
38c0ce06203f (quit_char, Vwin32_enable_italics, Vwin32_enable_palette):
Geoff Voelker <voelker@cs.washington.edu>
parents: 15034
diff changeset
3356 if (button_state & MMOUSE)
38c0ce06203f (quit_char, Vwin32_enable_italics, Vwin32_enable_palette):
Geoff Voelker <voelker@cs.washington.edu>
parents: 15034
diff changeset
3357 {
38c0ce06203f (quit_char, Vwin32_enable_italics, Vwin32_enable_palette):
Geoff Voelker <voelker@cs.washington.edu>
parents: 15034
diff changeset
3358 /* Only generate event when second button is released. */
38c0ce06203f (quit_char, Vwin32_enable_italics, Vwin32_enable_palette):
Geoff Voelker <voelker@cs.washington.edu>
parents: 15034
diff changeset
3359 if ((button_state & other) == 0)
38c0ce06203f (quit_char, Vwin32_enable_italics, Vwin32_enable_palette):
Geoff Voelker <voelker@cs.washington.edu>
parents: 15034
diff changeset
3360 {
38c0ce06203f (quit_char, Vwin32_enable_italics, Vwin32_enable_palette):
Geoff Voelker <voelker@cs.washington.edu>
parents: 15034
diff changeset
3361 msg = WM_MBUTTONUP;
38c0ce06203f (quit_char, Vwin32_enable_italics, Vwin32_enable_palette):
Geoff Voelker <voelker@cs.washington.edu>
parents: 15034
diff changeset
3362 button_state &= ~MMOUSE;
38c0ce06203f (quit_char, Vwin32_enable_italics, Vwin32_enable_palette):
Geoff Voelker <voelker@cs.washington.edu>
parents: 15034
diff changeset
3363
38c0ce06203f (quit_char, Vwin32_enable_italics, Vwin32_enable_palette):
Geoff Voelker <voelker@cs.washington.edu>
parents: 15034
diff changeset
3364 if (button_state) abort ();
38c0ce06203f (quit_char, Vwin32_enable_italics, Vwin32_enable_palette):
Geoff Voelker <voelker@cs.washington.edu>
parents: 15034
diff changeset
3365 }
38c0ce06203f (quit_char, Vwin32_enable_italics, Vwin32_enable_palette):
Geoff Voelker <voelker@cs.washington.edu>
parents: 15034
diff changeset
3366 else
38c0ce06203f (quit_char, Vwin32_enable_italics, Vwin32_enable_palette):
Geoff Voelker <voelker@cs.washington.edu>
parents: 15034
diff changeset
3367 return 0;
38c0ce06203f (quit_char, Vwin32_enable_italics, Vwin32_enable_palette):
Geoff Voelker <voelker@cs.washington.edu>
parents: 15034
diff changeset
3368 }
38c0ce06203f (quit_char, Vwin32_enable_italics, Vwin32_enable_palette):
Geoff Voelker <voelker@cs.washington.edu>
parents: 15034
diff changeset
3369 else
38c0ce06203f (quit_char, Vwin32_enable_italics, Vwin32_enable_palette):
Geoff Voelker <voelker@cs.washington.edu>
parents: 15034
diff changeset
3370 {
38c0ce06203f (quit_char, Vwin32_enable_italics, Vwin32_enable_palette):
Geoff Voelker <voelker@cs.washington.edu>
parents: 15034
diff changeset
3371 /* Flush out saved message if necessary. */
15290
da73440fdb5f (Vwin32_mouse_move_interval): New lisp variable.
Karl Heuer <kwzh@gnu.org>
parents: 15280
diff changeset
3372 if (saved_mouse_button_msg.msg.hwnd)
15147
38c0ce06203f (quit_char, Vwin32_enable_italics, Vwin32_enable_palette):
Geoff Voelker <voelker@cs.washington.edu>
parents: 15034
diff changeset
3373 {
15290
da73440fdb5f (Vwin32_mouse_move_interval): New lisp variable.
Karl Heuer <kwzh@gnu.org>
parents: 15280
diff changeset
3374 post_msg (&saved_mouse_button_msg);
15147
38c0ce06203f (quit_char, Vwin32_enable_italics, Vwin32_enable_palette):
Geoff Voelker <voelker@cs.washington.edu>
parents: 15034
diff changeset
3375 }
38c0ce06203f (quit_char, Vwin32_enable_italics, Vwin32_enable_palette):
Geoff Voelker <voelker@cs.washington.edu>
parents: 15034
diff changeset
3376 }
16588
481b7874a1e9 Change identifiers of the form win32* to w32*.
Geoff Voelker <voelker@cs.washington.edu>
parents: 16259
diff changeset
3377 wmsg.dwModifiers = w32_get_modifiers ();
15147
38c0ce06203f (quit_char, Vwin32_enable_italics, Vwin32_enable_palette):
Geoff Voelker <voelker@cs.washington.edu>
parents: 15034
diff changeset
3378 my_post_msg (&wmsg, hwnd, msg, wParam, lParam);
70233
589489bb1924 (w32_wnd_proc) <WM_LBUTTONDOWN, WM_RBUTTONDOWN>:
Jason Rumney <jasonr@gnu.org>
parents: 69879
diff changeset
3379 signal_user_input ();
15147
38c0ce06203f (quit_char, Vwin32_enable_italics, Vwin32_enable_palette):
Geoff Voelker <voelker@cs.washington.edu>
parents: 15034
diff changeset
3380
38c0ce06203f (quit_char, Vwin32_enable_italics, Vwin32_enable_palette):
Geoff Voelker <voelker@cs.washington.edu>
parents: 15034
diff changeset
3381 /* Always clear message buffer and cancel timer. */
15290
da73440fdb5f (Vwin32_mouse_move_interval): New lisp variable.
Karl Heuer <kwzh@gnu.org>
parents: 15280
diff changeset
3382 saved_mouse_button_msg.msg.hwnd = 0;
da73440fdb5f (Vwin32_mouse_move_interval): New lisp variable.
Karl Heuer <kwzh@gnu.org>
parents: 15280
diff changeset
3383 KillTimer (hwnd, mouse_button_timer);
da73440fdb5f (Vwin32_mouse_move_interval): New lisp variable.
Karl Heuer <kwzh@gnu.org>
parents: 15280
diff changeset
3384 mouse_button_timer = 0;
15147
38c0ce06203f (quit_char, Vwin32_enable_italics, Vwin32_enable_palette):
Geoff Voelker <voelker@cs.washington.edu>
parents: 15034
diff changeset
3385
38c0ce06203f (quit_char, Vwin32_enable_italics, Vwin32_enable_palette):
Geoff Voelker <voelker@cs.washington.edu>
parents: 15034
diff changeset
3386 if (button_state == 0)
38c0ce06203f (quit_char, Vwin32_enable_italics, Vwin32_enable_palette):
Geoff Voelker <voelker@cs.washington.edu>
parents: 15034
diff changeset
3387 ReleaseCapture ();
38c0ce06203f (quit_char, Vwin32_enable_italics, Vwin32_enable_palette):
Geoff Voelker <voelker@cs.washington.edu>
parents: 15034
diff changeset
3388 }
38c0ce06203f (quit_char, Vwin32_enable_italics, Vwin32_enable_palette):
Geoff Voelker <voelker@cs.washington.edu>
parents: 15034
diff changeset
3389 return 0;
38c0ce06203f (quit_char, Vwin32_enable_italics, Vwin32_enable_palette):
Geoff Voelker <voelker@cs.washington.edu>
parents: 15034
diff changeset
3390
42719
70f13c4f82c7 (w32_pass_extra_mouse_buttons_to_system): New user option.
Jason Rumney <jasonr@gnu.org>
parents: 42537
diff changeset
3391 case WM_XBUTTONDOWN:
70f13c4f82c7 (w32_pass_extra_mouse_buttons_to_system): New user option.
Jason Rumney <jasonr@gnu.org>
parents: 42537
diff changeset
3392 case WM_XBUTTONUP:
70f13c4f82c7 (w32_pass_extra_mouse_buttons_to_system): New user option.
Jason Rumney <jasonr@gnu.org>
parents: 42537
diff changeset
3393 if (w32_pass_extra_mouse_buttons_to_system)
70f13c4f82c7 (w32_pass_extra_mouse_buttons_to_system): New user option.
Jason Rumney <jasonr@gnu.org>
parents: 42537
diff changeset
3394 goto dflt;
70f13c4f82c7 (w32_pass_extra_mouse_buttons_to_system): New user option.
Jason Rumney <jasonr@gnu.org>
parents: 42537
diff changeset
3395 /* else fall through and process them. */
13434
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
3396 case WM_MBUTTONDOWN:
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
3397 case WM_MBUTTONUP:
15147
38c0ce06203f (quit_char, Vwin32_enable_italics, Vwin32_enable_palette):
Geoff Voelker <voelker@cs.washington.edu>
parents: 15034
diff changeset
3398 handle_plain_button:
13434
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
3399 {
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
3400 BOOL up;
19707
0181cc080316 Include limits.h and errno.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18508
diff changeset
3401 int button;
0181cc080316 Include limits.h and errno.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18508
diff changeset
3402
69406
8b54066613d1 (w32_wnd_proc): Ignore middle and extra button events if a menu is already
Eli Zaretskii <eliz@gnu.org>
parents: 68651
diff changeset
3403 /* Ignore middle and extra buttons as long as the menu is active. */
8b54066613d1 (w32_wnd_proc): Ignore middle and extra button events if a menu is already
Eli Zaretskii <eliz@gnu.org>
parents: 68651
diff changeset
3404 f = x_window_to_frame (dpyinfo, hwnd);
8b54066613d1 (w32_wnd_proc): Ignore middle and extra button events if a menu is already
Eli Zaretskii <eliz@gnu.org>
parents: 68651
diff changeset
3405 if (f && f->output_data.w32->menubar_active)
8b54066613d1 (w32_wnd_proc): Ignore middle and extra button events if a menu is already
Eli Zaretskii <eliz@gnu.org>
parents: 68651
diff changeset
3406 return 0;
8b54066613d1 (w32_wnd_proc): Ignore middle and extra button events if a menu is already
Eli Zaretskii <eliz@gnu.org>
parents: 68651
diff changeset
3407
42719
70f13c4f82c7 (w32_pass_extra_mouse_buttons_to_system): New user option.
Jason Rumney <jasonr@gnu.org>
parents: 42537
diff changeset
3408 if (parse_button (msg, HIWORD (wParam), &button, &up))
13434
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
3409 {
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
3410 if (up) ReleaseCapture ();
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
3411 else SetCapture (hwnd);
47942
080b4586492b Fix typo in comment.
Juanma Barranquero <lekktu@gmail.com>
parents: 47731
diff changeset
3412 button = (button == 0) ? LMOUSE :
19707
0181cc080316 Include limits.h and errno.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18508
diff changeset
3413 ((button == 1) ? MMOUSE : RMOUSE);
0181cc080316 Include limits.h and errno.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18508
diff changeset
3414 if (up)
0181cc080316 Include limits.h and errno.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18508
diff changeset
3415 button_state &= ~button;
0181cc080316 Include limits.h and errno.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18508
diff changeset
3416 else
0181cc080316 Include limits.h and errno.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18508
diff changeset
3417 button_state |= button;
13434
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
3418 }
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
3419 }
47942
080b4586492b Fix typo in comment.
Juanma Barranquero <lekktu@gmail.com>
parents: 47731
diff changeset
3420
16588
481b7874a1e9 Change identifiers of the form win32* to w32*.
Geoff Voelker <voelker@cs.washington.edu>
parents: 16259
diff changeset
3421 wmsg.dwModifiers = w32_get_modifiers ();
13434
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
3422 my_post_msg (&wmsg, hwnd, msg, wParam, lParam);
69426
46a8c3e0161d (signal_user_input): New function.
Jason Rumney <jasonr@gnu.org>
parents: 69406
diff changeset
3423 signal_user_input ();
42719
70f13c4f82c7 (w32_pass_extra_mouse_buttons_to_system): New user option.
Jason Rumney <jasonr@gnu.org>
parents: 42537
diff changeset
3424
70f13c4f82c7 (w32_pass_extra_mouse_buttons_to_system): New user option.
Jason Rumney <jasonr@gnu.org>
parents: 42537
diff changeset
3425 /* Need to return true for XBUTTON messages, false for others,
70f13c4f82c7 (w32_pass_extra_mouse_buttons_to_system): New user option.
Jason Rumney <jasonr@gnu.org>
parents: 42537
diff changeset
3426 to indicate that we processed the message. */
70f13c4f82c7 (w32_pass_extra_mouse_buttons_to_system): New user option.
Jason Rumney <jasonr@gnu.org>
parents: 42537
diff changeset
3427 return (msg == WM_XBUTTONDOWN || msg == WM_XBUTTONUP);
15147
38c0ce06203f (quit_char, Vwin32_enable_italics, Vwin32_enable_palette):
Geoff Voelker <voelker@cs.washington.edu>
parents: 15034
diff changeset
3428
41732
0d9b74cd27cd (trackmouse_window, track_mouse_event_fn): New vars.
Jason Rumney <jasonr@gnu.org>
parents: 41726
diff changeset
3429 case WM_MOUSEMOVE:
69879
a3c24f2249c9 (w32_wnd_proc) <WM_MOUSEMOVE>: Ignore mouse movements if a menu is active
Eli Zaretskii <eliz@gnu.org>
parents: 69867
diff changeset
3430 /* Ignore mouse movements as long as the menu is active. These
a3c24f2249c9 (w32_wnd_proc) <WM_MOUSEMOVE>: Ignore mouse movements if a menu is active
Eli Zaretskii <eliz@gnu.org>
parents: 69867
diff changeset
3431 movements are processed by the window manager anyway, and
a3c24f2249c9 (w32_wnd_proc) <WM_MOUSEMOVE>: Ignore mouse movements if a menu is active
Eli Zaretskii <eliz@gnu.org>
parents: 69867
diff changeset
3432 it's wrong to handle them as if they happened on the
a3c24f2249c9 (w32_wnd_proc) <WM_MOUSEMOVE>: Ignore mouse movements if a menu is active
Eli Zaretskii <eliz@gnu.org>
parents: 69867
diff changeset
3433 underlying frame. */
a3c24f2249c9 (w32_wnd_proc) <WM_MOUSEMOVE>: Ignore mouse movements if a menu is active
Eli Zaretskii <eliz@gnu.org>
parents: 69867
diff changeset
3434 f = x_window_to_frame (dpyinfo, hwnd);
a3c24f2249c9 (w32_wnd_proc) <WM_MOUSEMOVE>: Ignore mouse movements if a menu is active
Eli Zaretskii <eliz@gnu.org>
parents: 69867
diff changeset
3435 if (f && f->output_data.w32->menubar_active)
a3c24f2249c9 (w32_wnd_proc) <WM_MOUSEMOVE>: Ignore mouse movements if a menu is active
Eli Zaretskii <eliz@gnu.org>
parents: 69867
diff changeset
3436 return 0;
a3c24f2249c9 (w32_wnd_proc) <WM_MOUSEMOVE>: Ignore mouse movements if a menu is active
Eli Zaretskii <eliz@gnu.org>
parents: 69867
diff changeset
3437
41732
0d9b74cd27cd (trackmouse_window, track_mouse_event_fn): New vars.
Jason Rumney <jasonr@gnu.org>
parents: 41726
diff changeset
3438 /* If the mouse has just moved into the frame, start tracking
0d9b74cd27cd (trackmouse_window, track_mouse_event_fn): New vars.
Jason Rumney <jasonr@gnu.org>
parents: 41726
diff changeset
3439 it, so we will be notified when it leaves the frame. Mouse
0d9b74cd27cd (trackmouse_window, track_mouse_event_fn): New vars.
Jason Rumney <jasonr@gnu.org>
parents: 41726
diff changeset
3440 tracking only works under W98 and NT4 and later. On earlier
0d9b74cd27cd (trackmouse_window, track_mouse_event_fn): New vars.
Jason Rumney <jasonr@gnu.org>
parents: 41726
diff changeset
3441 versions, there is no way of telling when the mouse leaves the
0d9b74cd27cd (trackmouse_window, track_mouse_event_fn): New vars.
Jason Rumney <jasonr@gnu.org>
parents: 41726
diff changeset
3442 frame, so we just have to put up with help-echo and mouse
0d9b74cd27cd (trackmouse_window, track_mouse_event_fn): New vars.
Jason Rumney <jasonr@gnu.org>
parents: 41726
diff changeset
3443 highlighting remaining while the frame is not active. */
0d9b74cd27cd (trackmouse_window, track_mouse_event_fn): New vars.
Jason Rumney <jasonr@gnu.org>
parents: 41726
diff changeset
3444 if (track_mouse_event_fn && !track_mouse_window)
0d9b74cd27cd (trackmouse_window, track_mouse_event_fn): New vars.
Jason Rumney <jasonr@gnu.org>
parents: 41726
diff changeset
3445 {
0d9b74cd27cd (trackmouse_window, track_mouse_event_fn): New vars.
Jason Rumney <jasonr@gnu.org>
parents: 41726
diff changeset
3446 TRACKMOUSEEVENT tme;
0d9b74cd27cd (trackmouse_window, track_mouse_event_fn): New vars.
Jason Rumney <jasonr@gnu.org>
parents: 41726
diff changeset
3447 tme.cbSize = sizeof (tme);
0d9b74cd27cd (trackmouse_window, track_mouse_event_fn): New vars.
Jason Rumney <jasonr@gnu.org>
parents: 41726
diff changeset
3448 tme.dwFlags = TME_LEAVE;
0d9b74cd27cd (trackmouse_window, track_mouse_event_fn): New vars.
Jason Rumney <jasonr@gnu.org>
parents: 41726
diff changeset
3449 tme.hwndTrack = hwnd;
0d9b74cd27cd (trackmouse_window, track_mouse_event_fn): New vars.
Jason Rumney <jasonr@gnu.org>
parents: 41726
diff changeset
3450
0d9b74cd27cd (trackmouse_window, track_mouse_event_fn): New vars.
Jason Rumney <jasonr@gnu.org>
parents: 41726
diff changeset
3451 track_mouse_event_fn (&tme);
0d9b74cd27cd (trackmouse_window, track_mouse_event_fn): New vars.
Jason Rumney <jasonr@gnu.org>
parents: 41726
diff changeset
3452 track_mouse_window = hwnd;
0d9b74cd27cd (trackmouse_window, track_mouse_event_fn): New vars.
Jason Rumney <jasonr@gnu.org>
parents: 41726
diff changeset
3453 }
15290
da73440fdb5f (Vwin32_mouse_move_interval): New lisp variable.
Karl Heuer <kwzh@gnu.org>
parents: 15280
diff changeset
3454 case WM_VSCROLL:
55656
29b250a07fe0 (Fw32_register_hot_key, Fw32_unregister_hot_key)
Jason Rumney <jasonr@gnu.org>
parents: 55592
diff changeset
3455 if (w32_mouse_move_interval <= 0
15290
da73440fdb5f (Vwin32_mouse_move_interval): New lisp variable.
Karl Heuer <kwzh@gnu.org>
parents: 15280
diff changeset
3456 || (msg == WM_MOUSEMOVE && button_state == 0))
da73440fdb5f (Vwin32_mouse_move_interval): New lisp variable.
Karl Heuer <kwzh@gnu.org>
parents: 15280
diff changeset
3457 {
16588
481b7874a1e9 Change identifiers of the form win32* to w32*.
Geoff Voelker <voelker@cs.washington.edu>
parents: 16259
diff changeset
3458 wmsg.dwModifiers = w32_get_modifiers ();
15290
da73440fdb5f (Vwin32_mouse_move_interval): New lisp variable.
Karl Heuer <kwzh@gnu.org>
parents: 15280
diff changeset
3459 my_post_msg (&wmsg, hwnd, msg, wParam, lParam);
da73440fdb5f (Vwin32_mouse_move_interval): New lisp variable.
Karl Heuer <kwzh@gnu.org>
parents: 15280
diff changeset
3460 return 0;
da73440fdb5f (Vwin32_mouse_move_interval): New lisp variable.
Karl Heuer <kwzh@gnu.org>
parents: 15280
diff changeset
3461 }
47942
080b4586492b Fix typo in comment.
Juanma Barranquero <lekktu@gmail.com>
parents: 47731
diff changeset
3462
15290
da73440fdb5f (Vwin32_mouse_move_interval): New lisp variable.
Karl Heuer <kwzh@gnu.org>
parents: 15280
diff changeset
3463 /* Hang onto mouse move and scroll messages for a bit, to avoid
da73440fdb5f (Vwin32_mouse_move_interval): New lisp variable.
Karl Heuer <kwzh@gnu.org>
parents: 15280
diff changeset
3464 sending such events to Emacs faster than it can process them.
da73440fdb5f (Vwin32_mouse_move_interval): New lisp variable.
Karl Heuer <kwzh@gnu.org>
parents: 15280
diff changeset
3465 If we get more events before the timer from the first message
da73440fdb5f (Vwin32_mouse_move_interval): New lisp variable.
Karl Heuer <kwzh@gnu.org>
parents: 15280
diff changeset
3466 expires, we just replace the first message. */
da73440fdb5f (Vwin32_mouse_move_interval): New lisp variable.
Karl Heuer <kwzh@gnu.org>
parents: 15280
diff changeset
3467
da73440fdb5f (Vwin32_mouse_move_interval): New lisp variable.
Karl Heuer <kwzh@gnu.org>
parents: 15280
diff changeset
3468 if (saved_mouse_move_msg.msg.hwnd == 0)
da73440fdb5f (Vwin32_mouse_move_interval): New lisp variable.
Karl Heuer <kwzh@gnu.org>
parents: 15280
diff changeset
3469 mouse_move_timer =
23803
f112aa8f8f5d (Vw32_phantom_key_code): New variable.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23801
diff changeset
3470 SetTimer (hwnd, MOUSE_MOVE_ID,
55656
29b250a07fe0 (Fw32_register_hot_key, Fw32_unregister_hot_key)
Jason Rumney <jasonr@gnu.org>
parents: 55592
diff changeset
3471 w32_mouse_move_interval, NULL);
15290
da73440fdb5f (Vwin32_mouse_move_interval): New lisp variable.
Karl Heuer <kwzh@gnu.org>
parents: 15280
diff changeset
3472
da73440fdb5f (Vwin32_mouse_move_interval): New lisp variable.
Karl Heuer <kwzh@gnu.org>
parents: 15280
diff changeset
3473 /* Hold onto message for now. */
da73440fdb5f (Vwin32_mouse_move_interval): New lisp variable.
Karl Heuer <kwzh@gnu.org>
parents: 15280
diff changeset
3474 saved_mouse_move_msg.msg.hwnd = hwnd;
da73440fdb5f (Vwin32_mouse_move_interval): New lisp variable.
Karl Heuer <kwzh@gnu.org>
parents: 15280
diff changeset
3475 saved_mouse_move_msg.msg.message = msg;
da73440fdb5f (Vwin32_mouse_move_interval): New lisp variable.
Karl Heuer <kwzh@gnu.org>
parents: 15280
diff changeset
3476 saved_mouse_move_msg.msg.wParam = wParam;
da73440fdb5f (Vwin32_mouse_move_interval): New lisp variable.
Karl Heuer <kwzh@gnu.org>
parents: 15280
diff changeset
3477 saved_mouse_move_msg.msg.lParam = lParam;
da73440fdb5f (Vwin32_mouse_move_interval): New lisp variable.
Karl Heuer <kwzh@gnu.org>
parents: 15280
diff changeset
3478 saved_mouse_move_msg.msg.time = GetMessageTime ();
16588
481b7874a1e9 Change identifiers of the form win32* to w32*.
Geoff Voelker <voelker@cs.washington.edu>
parents: 16259
diff changeset
3479 saved_mouse_move_msg.dwModifiers = w32_get_modifiers ();
47942
080b4586492b Fix typo in comment.
Juanma Barranquero <lekktu@gmail.com>
parents: 47731
diff changeset
3480
15290
da73440fdb5f (Vwin32_mouse_move_interval): New lisp variable.
Karl Heuer <kwzh@gnu.org>
parents: 15280
diff changeset
3481 return 0;
da73440fdb5f (Vwin32_mouse_move_interval): New lisp variable.
Karl Heuer <kwzh@gnu.org>
parents: 15280
diff changeset
3482
19707
0181cc080316 Include limits.h and errno.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18508
diff changeset
3483 case WM_MOUSEWHEEL:
21884
bc4455bca454 Include shellapi.h.
Richard M. Stallman <rms@gnu.org>
parents: 21874
diff changeset
3484 case WM_DROPFILES:
bc4455bca454 Include shellapi.h.
Richard M. Stallman <rms@gnu.org>
parents: 21874
diff changeset
3485 wmsg.dwModifiers = w32_get_modifiers ();
bc4455bca454 Include shellapi.h.
Richard M. Stallman <rms@gnu.org>
parents: 21874
diff changeset
3486 my_post_msg (&wmsg, hwnd, msg, wParam, lParam);
69426
46a8c3e0161d (signal_user_input): New function.
Jason Rumney <jasonr@gnu.org>
parents: 69406
diff changeset
3487 signal_user_input ();
21884
bc4455bca454 Include shellapi.h.
Richard M. Stallman <rms@gnu.org>
parents: 21874
diff changeset
3488 return 0;
bc4455bca454 Include shellapi.h.
Richard M. Stallman <rms@gnu.org>
parents: 21874
diff changeset
3489
85979
bb1f44062552 (w32_pass_multimedia_buttons_to_system): New user option.
Jason Rumney <jasonr@gnu.org>
parents: 85614
diff changeset
3490 case WM_APPCOMMAND:
bb1f44062552 (w32_pass_multimedia_buttons_to_system): New user option.
Jason Rumney <jasonr@gnu.org>
parents: 85614
diff changeset
3491 if (w32_pass_multimedia_buttons_to_system)
bb1f44062552 (w32_pass_multimedia_buttons_to_system): New user option.
Jason Rumney <jasonr@gnu.org>
parents: 85614
diff changeset
3492 goto dflt;
bb1f44062552 (w32_pass_multimedia_buttons_to_system): New user option.
Jason Rumney <jasonr@gnu.org>
parents: 85614
diff changeset
3493 /* Otherwise, pass to lisp, the same way we do with mousehwheel. */
83878
f65f55d787ec Horizontal mouse wheel support:
Jason Rumney <jasonr@gnu.org>
parents: 83648
diff changeset
3494 case WM_MOUSEHWHEEL:
f65f55d787ec Horizontal mouse wheel support:
Jason Rumney <jasonr@gnu.org>
parents: 83648
diff changeset
3495 wmsg.dwModifiers = w32_get_modifiers ();
f65f55d787ec Horizontal mouse wheel support:
Jason Rumney <jasonr@gnu.org>
parents: 83648
diff changeset
3496 my_post_msg (&wmsg, hwnd, msg, wParam, lParam);
f65f55d787ec Horizontal mouse wheel support:
Jason Rumney <jasonr@gnu.org>
parents: 83648
diff changeset
3497 signal_user_input ();
f65f55d787ec Horizontal mouse wheel support:
Jason Rumney <jasonr@gnu.org>
parents: 83648
diff changeset
3498 /* Non-zero must be returned when WM_MOUSEHWHEEL messages are
f65f55d787ec Horizontal mouse wheel support:
Jason Rumney <jasonr@gnu.org>
parents: 83648
diff changeset
3499 handled, to prevent the system trying to handle it by faking
f65f55d787ec Horizontal mouse wheel support:
Jason Rumney <jasonr@gnu.org>
parents: 83648
diff changeset
3500 scroll bar events. */
f65f55d787ec Horizontal mouse wheel support:
Jason Rumney <jasonr@gnu.org>
parents: 83648
diff changeset
3501 return 1;
f65f55d787ec Horizontal mouse wheel support:
Jason Rumney <jasonr@gnu.org>
parents: 83648
diff changeset
3502
15290
da73440fdb5f (Vwin32_mouse_move_interval): New lisp variable.
Karl Heuer <kwzh@gnu.org>
parents: 15280
diff changeset
3503 case WM_TIMER:
da73440fdb5f (Vwin32_mouse_move_interval): New lisp variable.
Karl Heuer <kwzh@gnu.org>
parents: 15280
diff changeset
3504 /* Flush out saved messages if necessary. */
da73440fdb5f (Vwin32_mouse_move_interval): New lisp variable.
Karl Heuer <kwzh@gnu.org>
parents: 15280
diff changeset
3505 if (wParam == mouse_button_timer)
15147
38c0ce06203f (quit_char, Vwin32_enable_italics, Vwin32_enable_palette):
Geoff Voelker <voelker@cs.washington.edu>
parents: 15034
diff changeset
3506 {
15290
da73440fdb5f (Vwin32_mouse_move_interval): New lisp variable.
Karl Heuer <kwzh@gnu.org>
parents: 15280
diff changeset
3507 if (saved_mouse_button_msg.msg.hwnd)
da73440fdb5f (Vwin32_mouse_move_interval): New lisp variable.
Karl Heuer <kwzh@gnu.org>
parents: 15280
diff changeset
3508 {
da73440fdb5f (Vwin32_mouse_move_interval): New lisp variable.
Karl Heuer <kwzh@gnu.org>
parents: 15280
diff changeset
3509 post_msg (&saved_mouse_button_msg);
69426
46a8c3e0161d (signal_user_input): New function.
Jason Rumney <jasonr@gnu.org>
parents: 69406
diff changeset
3510 signal_user_input ();
15290
da73440fdb5f (Vwin32_mouse_move_interval): New lisp variable.
Karl Heuer <kwzh@gnu.org>
parents: 15280
diff changeset
3511 saved_mouse_button_msg.msg.hwnd = 0;
da73440fdb5f (Vwin32_mouse_move_interval): New lisp variable.
Karl Heuer <kwzh@gnu.org>
parents: 15280
diff changeset
3512 }
da73440fdb5f (Vwin32_mouse_move_interval): New lisp variable.
Karl Heuer <kwzh@gnu.org>
parents: 15280
diff changeset
3513 KillTimer (hwnd, mouse_button_timer);
da73440fdb5f (Vwin32_mouse_move_interval): New lisp variable.
Karl Heuer <kwzh@gnu.org>
parents: 15280
diff changeset
3514 mouse_button_timer = 0;
15147
38c0ce06203f (quit_char, Vwin32_enable_italics, Vwin32_enable_palette):
Geoff Voelker <voelker@cs.washington.edu>
parents: 15034
diff changeset
3515 }
15290
da73440fdb5f (Vwin32_mouse_move_interval): New lisp variable.
Karl Heuer <kwzh@gnu.org>
parents: 15280
diff changeset
3516 else if (wParam == mouse_move_timer)
da73440fdb5f (Vwin32_mouse_move_interval): New lisp variable.
Karl Heuer <kwzh@gnu.org>
parents: 15280
diff changeset
3517 {
da73440fdb5f (Vwin32_mouse_move_interval): New lisp variable.
Karl Heuer <kwzh@gnu.org>
parents: 15280
diff changeset
3518 if (saved_mouse_move_msg.msg.hwnd)
da73440fdb5f (Vwin32_mouse_move_interval): New lisp variable.
Karl Heuer <kwzh@gnu.org>
parents: 15280
diff changeset
3519 {
da73440fdb5f (Vwin32_mouse_move_interval): New lisp variable.
Karl Heuer <kwzh@gnu.org>
parents: 15280
diff changeset
3520 post_msg (&saved_mouse_move_msg);
da73440fdb5f (Vwin32_mouse_move_interval): New lisp variable.
Karl Heuer <kwzh@gnu.org>
parents: 15280
diff changeset
3521 saved_mouse_move_msg.msg.hwnd = 0;
da73440fdb5f (Vwin32_mouse_move_interval): New lisp variable.
Karl Heuer <kwzh@gnu.org>
parents: 15280
diff changeset
3522 }
da73440fdb5f (Vwin32_mouse_move_interval): New lisp variable.
Karl Heuer <kwzh@gnu.org>
parents: 15280
diff changeset
3523 KillTimer (hwnd, mouse_move_timer);
da73440fdb5f (Vwin32_mouse_move_interval): New lisp variable.
Karl Heuer <kwzh@gnu.org>
parents: 15280
diff changeset
3524 mouse_move_timer = 0;
da73440fdb5f (Vwin32_mouse_move_interval): New lisp variable.
Karl Heuer <kwzh@gnu.org>
parents: 15280
diff changeset
3525 }
43472
7faac536665f (mouse_move_timer, mouse_button_timer): Initialize.
Jason Rumney <jasonr@gnu.org>
parents: 43398
diff changeset
3526 else if (wParam == menu_free_timer)
7faac536665f (mouse_move_timer, mouse_button_timer): Initialize.
Jason Rumney <jasonr@gnu.org>
parents: 43398
diff changeset
3527 {
7faac536665f (mouse_move_timer, mouse_button_timer): Initialize.
Jason Rumney <jasonr@gnu.org>
parents: 43398
diff changeset
3528 KillTimer (hwnd, menu_free_timer);
7faac536665f (mouse_move_timer, mouse_button_timer): Initialize.
Jason Rumney <jasonr@gnu.org>
parents: 43398
diff changeset
3529 menu_free_timer = 0;
43484
a3cecd273126 (w32_wnd_proc) <WM_TIMER>: Fix last change.
Jason Rumney <jasonr@gnu.org>
parents: 43472
diff changeset
3530 f = x_window_to_frame (dpyinfo, hwnd);
76075
25965473846d (current_popup_menu): Use from w32menu.c.
Jason Rumney <jasonr@gnu.org>
parents: 75348
diff changeset
3531 /* If a popup menu is active, don't wipe its strings. */
76083
5e1d8f9b52ea * w32fns.c (menubar_in_use): New flag.
Jason Rumney <jasonr@gnu.org>
parents: 76078
diff changeset
3532 if (menubar_in_use
76075
25965473846d (current_popup_menu): Use from w32menu.c.
Jason Rumney <jasonr@gnu.org>
parents: 75348
diff changeset
3533 && current_popup_menu == NULL)
43472
7faac536665f (mouse_move_timer, mouse_button_timer): Initialize.
Jason Rumney <jasonr@gnu.org>
parents: 43398
diff changeset
3534 {
7faac536665f (mouse_move_timer, mouse_button_timer): Initialize.
Jason Rumney <jasonr@gnu.org>
parents: 43398
diff changeset
3535 /* Free memory used by owner-drawn and help-echo strings. */
7faac536665f (mouse_move_timer, mouse_button_timer): Initialize.
Jason Rumney <jasonr@gnu.org>
parents: 43398
diff changeset
3536 w32_free_menu_strings (hwnd);
7faac536665f (mouse_move_timer, mouse_button_timer): Initialize.
Jason Rumney <jasonr@gnu.org>
parents: 43398
diff changeset
3537 f->output_data.w32->menubar_active = 0;
76083
5e1d8f9b52ea * w32fns.c (menubar_in_use): New flag.
Jason Rumney <jasonr@gnu.org>
parents: 76078
diff changeset
3538 menubar_in_use = 0;
43472
7faac536665f (mouse_move_timer, mouse_button_timer): Initialize.
Jason Rumney <jasonr@gnu.org>
parents: 43398
diff changeset
3539 }
7faac536665f (mouse_move_timer, mouse_button_timer): Initialize.
Jason Rumney <jasonr@gnu.org>
parents: 43398
diff changeset
3540 }
93075
66248fc5b523 * w32fns.c (hourglass_timer, hourglass_hwnd): New variables.
Jason Rumney <jasonr@gnu.org>
parents: 92940
diff changeset
3541 else if (wParam == hourglass_timer)
66248fc5b523 * w32fns.c (hourglass_timer, hourglass_hwnd): New variables.
Jason Rumney <jasonr@gnu.org>
parents: 92940
diff changeset
3542 {
66248fc5b523 * w32fns.c (hourglass_timer, hourglass_hwnd): New variables.
Jason Rumney <jasonr@gnu.org>
parents: 92940
diff changeset
3543 KillTimer (hwnd, hourglass_timer);
66248fc5b523 * w32fns.c (hourglass_timer, hourglass_hwnd): New variables.
Jason Rumney <jasonr@gnu.org>
parents: 92940
diff changeset
3544 hourglass_timer = 0;
66248fc5b523 * w32fns.c (hourglass_timer, hourglass_hwnd): New variables.
Jason Rumney <jasonr@gnu.org>
parents: 92940
diff changeset
3545 show_hourglass (x_window_to_frame (dpyinfo, hwnd));
66248fc5b523 * w32fns.c (hourglass_timer, hourglass_hwnd): New variables.
Jason Rumney <jasonr@gnu.org>
parents: 92940
diff changeset
3546 }
15147
38c0ce06203f (quit_char, Vwin32_enable_italics, Vwin32_enable_palette):
Geoff Voelker <voelker@cs.washington.edu>
parents: 15034
diff changeset
3547 return 0;
47942
080b4586492b Fix typo in comment.
Juanma Barranquero <lekktu@gmail.com>
parents: 47731
diff changeset
3548
15290
da73440fdb5f (Vwin32_mouse_move_interval): New lisp variable.
Karl Heuer <kwzh@gnu.org>
parents: 15280
diff changeset
3549 case WM_NCACTIVATE:
da73440fdb5f (Vwin32_mouse_move_interval): New lisp variable.
Karl Heuer <kwzh@gnu.org>
parents: 15280
diff changeset
3550 /* Windows doesn't send us focus messages when putting up and
16884
36babc489b0c Change all uses of win95, winnt, and win32
Geoff Voelker <voelker@cs.washington.edu>
parents: 16602
diff changeset
3551 taking down a system popup dialog as for Ctrl-Alt-Del on Windows 95.
15290
da73440fdb5f (Vwin32_mouse_move_interval): New lisp variable.
Karl Heuer <kwzh@gnu.org>
parents: 15280
diff changeset
3552 The only indication we get that something happened is receiving
da73440fdb5f (Vwin32_mouse_move_interval): New lisp variable.
Karl Heuer <kwzh@gnu.org>
parents: 15280
diff changeset
3553 this message afterwards. So this is a good time to reset our
da73440fdb5f (Vwin32_mouse_move_interval): New lisp variable.
Karl Heuer <kwzh@gnu.org>
parents: 15280
diff changeset
3554 keyboard modifiers' state. */
da73440fdb5f (Vwin32_mouse_move_interval): New lisp variable.
Karl Heuer <kwzh@gnu.org>
parents: 15280
diff changeset
3555 reset_modifiers ();
da73440fdb5f (Vwin32_mouse_move_interval): New lisp variable.
Karl Heuer <kwzh@gnu.org>
parents: 15280
diff changeset
3556 goto dflt;
da73440fdb5f (Vwin32_mouse_move_interval): New lisp variable.
Karl Heuer <kwzh@gnu.org>
parents: 15280
diff changeset
3557
19707
0181cc080316 Include limits.h and errno.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18508
diff changeset
3558 case WM_INITMENU:
24751
e0eaca5025bc (w32_wnd_proc): Ensure mouse capture is released if
Andrew Innes <andrewi@gnu.org>
parents: 24718
diff changeset
3559 button_state = 0;
e0eaca5025bc (w32_wnd_proc): Ensure mouse capture is released if
Andrew Innes <andrewi@gnu.org>
parents: 24718
diff changeset
3560 ReleaseCapture ();
19707
0181cc080316 Include limits.h and errno.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18508
diff changeset
3561 /* We must ensure menu bar is fully constructed and up to date
0181cc080316 Include limits.h and errno.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18508
diff changeset
3562 before allowing user interaction with it. To achieve this
0181cc080316 Include limits.h and errno.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18508
diff changeset
3563 we send this message to the lisp thread and wait for a
0181cc080316 Include limits.h and errno.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18508
diff changeset
3564 reply (whose value is not actually needed) to indicate that
0181cc080316 Include limits.h and errno.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18508
diff changeset
3565 the menu bar is now ready for use, so we can now return.
0181cc080316 Include limits.h and errno.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18508
diff changeset
3566
0181cc080316 Include limits.h and errno.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18508
diff changeset
3567 To remain responsive in the meantime, we enter a nested message
0181cc080316 Include limits.h and errno.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18508
diff changeset
3568 loop that can process all other messages.
0181cc080316 Include limits.h and errno.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18508
diff changeset
3569
0181cc080316 Include limits.h and errno.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18508
diff changeset
3570 However, we skip all this if the message results from calling
0181cc080316 Include limits.h and errno.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18508
diff changeset
3571 TrackPopupMenu - in fact, we must NOT attempt to send the lisp
0181cc080316 Include limits.h and errno.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18508
diff changeset
3572 thread a message because it is blocked on us at this point. We
0181cc080316 Include limits.h and errno.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18508
diff changeset
3573 set menubar_active before calling TrackPopupMenu to indicate
0181cc080316 Include limits.h and errno.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18508
diff changeset
3574 this (there is no possibility of confusion with real menubar
0181cc080316 Include limits.h and errno.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18508
diff changeset
3575 being active). */
0181cc080316 Include limits.h and errno.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18508
diff changeset
3576
0181cc080316 Include limits.h and errno.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18508
diff changeset
3577 f = x_window_to_frame (dpyinfo, hwnd);
0181cc080316 Include limits.h and errno.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18508
diff changeset
3578 if (f
0181cc080316 Include limits.h and errno.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18508
diff changeset
3579 && (f->output_data.w32->menubar_active
0181cc080316 Include limits.h and errno.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18508
diff changeset
3580 /* We can receive this message even in the absence of a
0181cc080316 Include limits.h and errno.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18508
diff changeset
3581 menubar (ie. when the system menu is activated) - in this
0181cc080316 Include limits.h and errno.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18508
diff changeset
3582 case we do NOT want to forward the message, otherwise it
0181cc080316 Include limits.h and errno.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18508
diff changeset
3583 will cause the menubar to suddenly appear when the user
0181cc080316 Include limits.h and errno.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18508
diff changeset
3584 had requested it to be turned off! */
0181cc080316 Include limits.h and errno.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18508
diff changeset
3585 || f->output_data.w32->menubar_widget == NULL))
0181cc080316 Include limits.h and errno.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18508
diff changeset
3586 return 0;
0181cc080316 Include limits.h and errno.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18508
diff changeset
3587
0181cc080316 Include limits.h and errno.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18508
diff changeset
3588 {
0181cc080316 Include limits.h and errno.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18508
diff changeset
3589 deferred_msg msg_buf;
0181cc080316 Include limits.h and errno.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18508
diff changeset
3590
0181cc080316 Include limits.h and errno.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18508
diff changeset
3591 /* Detect if message has already been deferred; in this case
0181cc080316 Include limits.h and errno.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18508
diff changeset
3592 we cannot return any sensible value to ignore this. */
0181cc080316 Include limits.h and errno.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18508
diff changeset
3593 if (find_deferred_msg (hwnd, msg) != NULL)
0181cc080316 Include limits.h and errno.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18508
diff changeset
3594 abort ();
0181cc080316 Include limits.h and errno.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18508
diff changeset
3595
76083
5e1d8f9b52ea * w32fns.c (menubar_in_use): New flag.
Jason Rumney <jasonr@gnu.org>
parents: 76078
diff changeset
3596 menubar_in_use = 1;
76078
3479e5ecb040 * w32fns.c (w32_wnd_proc) [WM_INITMENU]: Set menubar_active frame parameter.
Jason Rumney <jasonr@gnu.org>
parents: 76075
diff changeset
3597
19707
0181cc080316 Include limits.h and errno.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18508
diff changeset
3598 return send_deferred_msg (&msg_buf, hwnd, msg, wParam, lParam);
0181cc080316 Include limits.h and errno.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18508
diff changeset
3599 }
0181cc080316 Include limits.h and errno.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18508
diff changeset
3600
0181cc080316 Include limits.h and errno.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18508
diff changeset
3601 case WM_EXITMENULOOP:
0181cc080316 Include limits.h and errno.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18508
diff changeset
3602 f = x_window_to_frame (dpyinfo, hwnd);
0181cc080316 Include limits.h and errno.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18508
diff changeset
3603
76075
25965473846d (current_popup_menu): Use from w32menu.c.
Jason Rumney <jasonr@gnu.org>
parents: 75348
diff changeset
3604 /* If a menu is still active, check again after a short delay,
25965473846d (current_popup_menu): Use from w32menu.c.
Jason Rumney <jasonr@gnu.org>
parents: 75348
diff changeset
3605 since Windows often (always?) sends the WM_EXITMENULOOP
25965473846d (current_popup_menu): Use from w32menu.c.
Jason Rumney <jasonr@gnu.org>
parents: 75348
diff changeset
3606 before the corresponding WM_COMMAND message.
25965473846d (current_popup_menu): Use from w32menu.c.
Jason Rumney <jasonr@gnu.org>
parents: 75348
diff changeset
3607 Don't do this if a popup menu is active, since it is only
25965473846d (current_popup_menu): Use from w32menu.c.
Jason Rumney <jasonr@gnu.org>
parents: 75348
diff changeset
3608 menubar menus that require cleaning up in this way.
25965473846d (current_popup_menu): Use from w32menu.c.
Jason Rumney <jasonr@gnu.org>
parents: 75348
diff changeset
3609 */
76083
5e1d8f9b52ea * w32fns.c (menubar_in_use): New flag.
Jason Rumney <jasonr@gnu.org>
parents: 76078
diff changeset
3610 if (f && menubar_in_use && current_popup_menu == NULL)
43472
7faac536665f (mouse_move_timer, mouse_button_timer): Initialize.
Jason Rumney <jasonr@gnu.org>
parents: 43398
diff changeset
3611 menu_free_timer = SetTimer (hwnd, MENU_FREE_ID, MENU_FREE_DELAY, NULL);
93075
66248fc5b523 * w32fns.c (hourglass_timer, hourglass_hwnd): New variables.
Jason Rumney <jasonr@gnu.org>
parents: 92940
diff changeset
3612
66248fc5b523 * w32fns.c (hourglass_timer, hourglass_hwnd): New variables.
Jason Rumney <jasonr@gnu.org>
parents: 92940
diff changeset
3613 /* If hourglass cursor should be displayed, display it now. */
66248fc5b523 * w32fns.c (hourglass_timer, hourglass_hwnd): New variables.
Jason Rumney <jasonr@gnu.org>
parents: 92940
diff changeset
3614 if (f && f->output_data.w32->hourglass_p)
66248fc5b523 * w32fns.c (hourglass_timer, hourglass_hwnd): New variables.
Jason Rumney <jasonr@gnu.org>
parents: 92940
diff changeset
3615 SetCursor (f->output_data.w32->hourglass_cursor);
66248fc5b523 * w32fns.c (hourglass_timer, hourglass_hwnd): New variables.
Jason Rumney <jasonr@gnu.org>
parents: 92940
diff changeset
3616
19707
0181cc080316 Include limits.h and errno.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18508
diff changeset
3617 goto dflt;
0181cc080316 Include limits.h and errno.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18508
diff changeset
3618
28272
f62bb21d38db (w32_wnd_proc): Handle WM_MENUSELECT message.
Jason Rumney <jasonr@gnu.org>
parents: 27936
diff changeset
3619 case WM_MENUSELECT:
41638
aadcf676d5de (w32_wnd_proc) <WM_MENUSELECT>: Display help directly.
Jason Rumney <jasonr@gnu.org>
parents: 41480
diff changeset
3620 /* Direct handling of help_echo in menus. Should be safe now
aadcf676d5de (w32_wnd_proc) <WM_MENUSELECT>: Display help directly.
Jason Rumney <jasonr@gnu.org>
parents: 41480
diff changeset
3621 that we generate the help_echo by placing a help event in the
aadcf676d5de (w32_wnd_proc) <WM_MENUSELECT>: Display help directly.
Jason Rumney <jasonr@gnu.org>
parents: 41480
diff changeset
3622 keyboard buffer. */
41380
aff1b15f295b (x_window_to_frame): Remove irrelevant TODO comment.
Jason Rumney <jasonr@gnu.org>
parents: 41322
diff changeset
3623 {
aff1b15f295b (x_window_to_frame): Remove irrelevant TODO comment.
Jason Rumney <jasonr@gnu.org>
parents: 41322
diff changeset
3624 HMENU menu = (HMENU) lParam;
aff1b15f295b (x_window_to_frame): Remove irrelevant TODO comment.
Jason Rumney <jasonr@gnu.org>
parents: 41322
diff changeset
3625 UINT menu_item = (UINT) LOWORD (wParam);
aff1b15f295b (x_window_to_frame): Remove irrelevant TODO comment.
Jason Rumney <jasonr@gnu.org>
parents: 41322
diff changeset
3626 UINT flags = (UINT) HIWORD (wParam);
aff1b15f295b (x_window_to_frame): Remove irrelevant TODO comment.
Jason Rumney <jasonr@gnu.org>
parents: 41322
diff changeset
3627
41638
aadcf676d5de (w32_wnd_proc) <WM_MENUSELECT>: Display help directly.
Jason Rumney <jasonr@gnu.org>
parents: 41480
diff changeset
3628 w32_menu_display_help (hwnd, menu, menu_item, flags);
41380
aff1b15f295b (x_window_to_frame): Remove irrelevant TODO comment.
Jason Rumney <jasonr@gnu.org>
parents: 41322
diff changeset
3629 }
28272
f62bb21d38db (w32_wnd_proc): Handle WM_MENUSELECT message.
Jason Rumney <jasonr@gnu.org>
parents: 27936
diff changeset
3630 return 0;
f62bb21d38db (w32_wnd_proc): Handle WM_MENUSELECT message.
Jason Rumney <jasonr@gnu.org>
parents: 27936
diff changeset
3631
21735
711a61942023 (x_set_vertical_scroll_bars): Put scroll bars on the
Geoff Voelker <voelker@cs.washington.edu>
parents: 21608
diff changeset
3632 case WM_MEASUREITEM:
711a61942023 (x_set_vertical_scroll_bars): Put scroll bars on the
Geoff Voelker <voelker@cs.washington.edu>
parents: 21608
diff changeset
3633 f = x_window_to_frame (dpyinfo, hwnd);
711a61942023 (x_set_vertical_scroll_bars): Put scroll bars on the
Geoff Voelker <voelker@cs.washington.edu>
parents: 21608
diff changeset
3634 if (f)
711a61942023 (x_set_vertical_scroll_bars): Put scroll bars on the
Geoff Voelker <voelker@cs.washington.edu>
parents: 21608
diff changeset
3635 {
711a61942023 (x_set_vertical_scroll_bars): Put scroll bars on the
Geoff Voelker <voelker@cs.washington.edu>
parents: 21608
diff changeset
3636 MEASUREITEMSTRUCT * pMis = (MEASUREITEMSTRUCT *) lParam;
711a61942023 (x_set_vertical_scroll_bars): Put scroll bars on the
Geoff Voelker <voelker@cs.washington.edu>
parents: 21608
diff changeset
3637
711a61942023 (x_set_vertical_scroll_bars): Put scroll bars on the
Geoff Voelker <voelker@cs.washington.edu>
parents: 21608
diff changeset
3638 if (pMis->CtlType == ODT_MENU)
711a61942023 (x_set_vertical_scroll_bars): Put scroll bars on the
Geoff Voelker <voelker@cs.washington.edu>
parents: 21608
diff changeset
3639 {
711a61942023 (x_set_vertical_scroll_bars): Put scroll bars on the
Geoff Voelker <voelker@cs.washington.edu>
parents: 21608
diff changeset
3640 /* Work out dimensions for popup menu titles. */
711a61942023 (x_set_vertical_scroll_bars): Put scroll bars on the
Geoff Voelker <voelker@cs.washington.edu>
parents: 21608
diff changeset
3641 char * title = (char *) pMis->itemData;
711a61942023 (x_set_vertical_scroll_bars): Put scroll bars on the
Geoff Voelker <voelker@cs.washington.edu>
parents: 21608
diff changeset
3642 HDC hdc = GetDC (hwnd);
711a61942023 (x_set_vertical_scroll_bars): Put scroll bars on the
Geoff Voelker <voelker@cs.washington.edu>
parents: 21608
diff changeset
3643 HFONT menu_font = GetCurrentObject (hdc, OBJ_FONT);
711a61942023 (x_set_vertical_scroll_bars): Put scroll bars on the
Geoff Voelker <voelker@cs.washington.edu>
parents: 21608
diff changeset
3644 LOGFONT menu_logfont;
711a61942023 (x_set_vertical_scroll_bars): Put scroll bars on the
Geoff Voelker <voelker@cs.washington.edu>
parents: 21608
diff changeset
3645 HFONT old_font;
711a61942023 (x_set_vertical_scroll_bars): Put scroll bars on the
Geoff Voelker <voelker@cs.washington.edu>
parents: 21608
diff changeset
3646 SIZE size;
711a61942023 (x_set_vertical_scroll_bars): Put scroll bars on the
Geoff Voelker <voelker@cs.washington.edu>
parents: 21608
diff changeset
3647
711a61942023 (x_set_vertical_scroll_bars): Put scroll bars on the
Geoff Voelker <voelker@cs.washington.edu>
parents: 21608
diff changeset
3648 GetObject (menu_font, sizeof (menu_logfont), &menu_logfont);
711a61942023 (x_set_vertical_scroll_bars): Put scroll bars on the
Geoff Voelker <voelker@cs.washington.edu>
parents: 21608
diff changeset
3649 menu_logfont.lfWeight = FW_BOLD;
711a61942023 (x_set_vertical_scroll_bars): Put scroll bars on the
Geoff Voelker <voelker@cs.washington.edu>
parents: 21608
diff changeset
3650 menu_font = CreateFontIndirect (&menu_logfont);
711a61942023 (x_set_vertical_scroll_bars): Put scroll bars on the
Geoff Voelker <voelker@cs.washington.edu>
parents: 21608
diff changeset
3651 old_font = SelectObject (hdc, menu_font);
711a61942023 (x_set_vertical_scroll_bars): Put scroll bars on the
Geoff Voelker <voelker@cs.washington.edu>
parents: 21608
diff changeset
3652
29317
2d3d5bf49d4e Format and doc changes to bring closer to xfns.c.
Jason Rumney <jasonr@gnu.org>
parents: 29021
diff changeset
3653 pMis->itemHeight = GetSystemMetrics (SM_CYMENUSIZE);
2d3d5bf49d4e Format and doc changes to bring closer to xfns.c.
Jason Rumney <jasonr@gnu.org>
parents: 29021
diff changeset
3654 if (title)
2d3d5bf49d4e Format and doc changes to bring closer to xfns.c.
Jason Rumney <jasonr@gnu.org>
parents: 29021
diff changeset
3655 {
56971
a35b92556545 (w32_wnd_proc) [WM_MEASUREITEM, WM_DRAWITEM]: Handle
Jason Rumney <jasonr@gnu.org>
parents: 56856
diff changeset
3656 if (unicode_append_menu)
a35b92556545 (w32_wnd_proc) [WM_MEASUREITEM, WM_DRAWITEM]: Handle
Jason Rumney <jasonr@gnu.org>
parents: 56856
diff changeset
3657 GetTextExtentPoint32W (hdc, (WCHAR *) title,
a35b92556545 (w32_wnd_proc) [WM_MEASUREITEM, WM_DRAWITEM]: Handle
Jason Rumney <jasonr@gnu.org>
parents: 56856
diff changeset
3658 wcslen ((WCHAR *) title),
a35b92556545 (w32_wnd_proc) [WM_MEASUREITEM, WM_DRAWITEM]: Handle
Jason Rumney <jasonr@gnu.org>
parents: 56856
diff changeset
3659 &size);
a35b92556545 (w32_wnd_proc) [WM_MEASUREITEM, WM_DRAWITEM]: Handle
Jason Rumney <jasonr@gnu.org>
parents: 56856
diff changeset
3660 else
a35b92556545 (w32_wnd_proc) [WM_MEASUREITEM, WM_DRAWITEM]: Handle
Jason Rumney <jasonr@gnu.org>
parents: 56856
diff changeset
3661 GetTextExtentPoint32 (hdc, title, strlen (title), &size);
a35b92556545 (w32_wnd_proc) [WM_MEASUREITEM, WM_DRAWITEM]: Handle
Jason Rumney <jasonr@gnu.org>
parents: 56856
diff changeset
3662
29317
2d3d5bf49d4e Format and doc changes to bring closer to xfns.c.
Jason Rumney <jasonr@gnu.org>
parents: 29021
diff changeset
3663 pMis->itemWidth = size.cx;
2d3d5bf49d4e Format and doc changes to bring closer to xfns.c.
Jason Rumney <jasonr@gnu.org>
parents: 29021
diff changeset
3664 if (pMis->itemHeight < size.cy)
2d3d5bf49d4e Format and doc changes to bring closer to xfns.c.
Jason Rumney <jasonr@gnu.org>
parents: 29021
diff changeset
3665 pMis->itemHeight = size.cy;
2d3d5bf49d4e Format and doc changes to bring closer to xfns.c.
Jason Rumney <jasonr@gnu.org>
parents: 29021
diff changeset
3666 }
2d3d5bf49d4e Format and doc changes to bring closer to xfns.c.
Jason Rumney <jasonr@gnu.org>
parents: 29021
diff changeset
3667 else
2d3d5bf49d4e Format and doc changes to bring closer to xfns.c.
Jason Rumney <jasonr@gnu.org>
parents: 29021
diff changeset
3668 pMis->itemWidth = 0;
21735
711a61942023 (x_set_vertical_scroll_bars): Put scroll bars on the
Geoff Voelker <voelker@cs.washington.edu>
parents: 21608
diff changeset
3669
711a61942023 (x_set_vertical_scroll_bars): Put scroll bars on the
Geoff Voelker <voelker@cs.washington.edu>
parents: 21608
diff changeset
3670 SelectObject (hdc, old_font);
711a61942023 (x_set_vertical_scroll_bars): Put scroll bars on the
Geoff Voelker <voelker@cs.washington.edu>
parents: 21608
diff changeset
3671 DeleteObject (menu_font);
711a61942023 (x_set_vertical_scroll_bars): Put scroll bars on the
Geoff Voelker <voelker@cs.washington.edu>
parents: 21608
diff changeset
3672 ReleaseDC (hwnd, hdc);
711a61942023 (x_set_vertical_scroll_bars): Put scroll bars on the
Geoff Voelker <voelker@cs.washington.edu>
parents: 21608
diff changeset
3673 return TRUE;
711a61942023 (x_set_vertical_scroll_bars): Put scroll bars on the
Geoff Voelker <voelker@cs.washington.edu>
parents: 21608
diff changeset
3674 }
711a61942023 (x_set_vertical_scroll_bars): Put scroll bars on the
Geoff Voelker <voelker@cs.washington.edu>
parents: 21608
diff changeset
3675 }
711a61942023 (x_set_vertical_scroll_bars): Put scroll bars on the
Geoff Voelker <voelker@cs.washington.edu>
parents: 21608
diff changeset
3676 return 0;
711a61942023 (x_set_vertical_scroll_bars): Put scroll bars on the
Geoff Voelker <voelker@cs.washington.edu>
parents: 21608
diff changeset
3677
711a61942023 (x_set_vertical_scroll_bars): Put scroll bars on the
Geoff Voelker <voelker@cs.washington.edu>
parents: 21608
diff changeset
3678 case WM_DRAWITEM:
711a61942023 (x_set_vertical_scroll_bars): Put scroll bars on the
Geoff Voelker <voelker@cs.washington.edu>
parents: 21608
diff changeset
3679 f = x_window_to_frame (dpyinfo, hwnd);
711a61942023 (x_set_vertical_scroll_bars): Put scroll bars on the
Geoff Voelker <voelker@cs.washington.edu>
parents: 21608
diff changeset
3680 if (f)
711a61942023 (x_set_vertical_scroll_bars): Put scroll bars on the
Geoff Voelker <voelker@cs.washington.edu>
parents: 21608
diff changeset
3681 {
711a61942023 (x_set_vertical_scroll_bars): Put scroll bars on the
Geoff Voelker <voelker@cs.washington.edu>
parents: 21608
diff changeset
3682 DRAWITEMSTRUCT * pDis = (DRAWITEMSTRUCT *) lParam;
711a61942023 (x_set_vertical_scroll_bars): Put scroll bars on the
Geoff Voelker <voelker@cs.washington.edu>
parents: 21608
diff changeset
3683
711a61942023 (x_set_vertical_scroll_bars): Put scroll bars on the
Geoff Voelker <voelker@cs.washington.edu>
parents: 21608
diff changeset
3684 if (pDis->CtlType == ODT_MENU)
711a61942023 (x_set_vertical_scroll_bars): Put scroll bars on the
Geoff Voelker <voelker@cs.washington.edu>
parents: 21608
diff changeset
3685 {
711a61942023 (x_set_vertical_scroll_bars): Put scroll bars on the
Geoff Voelker <voelker@cs.washington.edu>
parents: 21608
diff changeset
3686 /* Draw popup menu title. */
711a61942023 (x_set_vertical_scroll_bars): Put scroll bars on the
Geoff Voelker <voelker@cs.washington.edu>
parents: 21608
diff changeset
3687 char * title = (char *) pDis->itemData;
30239
6a55bd8a85f8 (w32_wnd_proc) [WM_DRAW_ITEM]: Do not try to draw a null title.
Jason Rumney <jasonr@gnu.org>
parents: 29317
diff changeset
3688 if (title)
6a55bd8a85f8 (w32_wnd_proc) [WM_DRAW_ITEM]: Do not try to draw a null title.
Jason Rumney <jasonr@gnu.org>
parents: 29317
diff changeset
3689 {
6a55bd8a85f8 (w32_wnd_proc) [WM_DRAW_ITEM]: Do not try to draw a null title.
Jason Rumney <jasonr@gnu.org>
parents: 29317
diff changeset
3690 HDC hdc = pDis->hDC;
6a55bd8a85f8 (w32_wnd_proc) [WM_DRAW_ITEM]: Do not try to draw a null title.
Jason Rumney <jasonr@gnu.org>
parents: 29317
diff changeset
3691 HFONT menu_font = GetCurrentObject (hdc, OBJ_FONT);
6a55bd8a85f8 (w32_wnd_proc) [WM_DRAW_ITEM]: Do not try to draw a null title.
Jason Rumney <jasonr@gnu.org>
parents: 29317
diff changeset
3692 LOGFONT menu_logfont;
6a55bd8a85f8 (w32_wnd_proc) [WM_DRAW_ITEM]: Do not try to draw a null title.
Jason Rumney <jasonr@gnu.org>
parents: 29317
diff changeset
3693 HFONT old_font;
6a55bd8a85f8 (w32_wnd_proc) [WM_DRAW_ITEM]: Do not try to draw a null title.
Jason Rumney <jasonr@gnu.org>
parents: 29317
diff changeset
3694
6a55bd8a85f8 (w32_wnd_proc) [WM_DRAW_ITEM]: Do not try to draw a null title.
Jason Rumney <jasonr@gnu.org>
parents: 29317
diff changeset
3695 GetObject (menu_font, sizeof (menu_logfont), &menu_logfont);
6a55bd8a85f8 (w32_wnd_proc) [WM_DRAW_ITEM]: Do not try to draw a null title.
Jason Rumney <jasonr@gnu.org>
parents: 29317
diff changeset
3696 menu_logfont.lfWeight = FW_BOLD;
6a55bd8a85f8 (w32_wnd_proc) [WM_DRAW_ITEM]: Do not try to draw a null title.
Jason Rumney <jasonr@gnu.org>
parents: 29317
diff changeset
3697 menu_font = CreateFontIndirect (&menu_logfont);
6a55bd8a85f8 (w32_wnd_proc) [WM_DRAW_ITEM]: Do not try to draw a null title.
Jason Rumney <jasonr@gnu.org>
parents: 29317
diff changeset
3698 old_font = SelectObject (hdc, menu_font);
6a55bd8a85f8 (w32_wnd_proc) [WM_DRAW_ITEM]: Do not try to draw a null title.
Jason Rumney <jasonr@gnu.org>
parents: 29317
diff changeset
3699
56971
a35b92556545 (w32_wnd_proc) [WM_MEASUREITEM, WM_DRAWITEM]: Handle
Jason Rumney <jasonr@gnu.org>
parents: 56856
diff changeset
3700 /* Always draw title as if not selected. */
a35b92556545 (w32_wnd_proc) [WM_MEASUREITEM, WM_DRAWITEM]: Handle
Jason Rumney <jasonr@gnu.org>
parents: 56856
diff changeset
3701 if (unicode_append_menu)
a35b92556545 (w32_wnd_proc) [WM_MEASUREITEM, WM_DRAWITEM]: Handle
Jason Rumney <jasonr@gnu.org>
parents: 56856
diff changeset
3702 ExtTextOutW (hdc,
a35b92556545 (w32_wnd_proc) [WM_MEASUREITEM, WM_DRAWITEM]: Handle
Jason Rumney <jasonr@gnu.org>
parents: 56856
diff changeset
3703 pDis->rcItem.left
a35b92556545 (w32_wnd_proc) [WM_MEASUREITEM, WM_DRAWITEM]: Handle
Jason Rumney <jasonr@gnu.org>
parents: 56856
diff changeset
3704 + GetSystemMetrics (SM_CXMENUCHECK),
a35b92556545 (w32_wnd_proc) [WM_MEASUREITEM, WM_DRAWITEM]: Handle
Jason Rumney <jasonr@gnu.org>
parents: 56856
diff changeset
3705 pDis->rcItem.top,
a35b92556545 (w32_wnd_proc) [WM_MEASUREITEM, WM_DRAWITEM]: Handle
Jason Rumney <jasonr@gnu.org>
parents: 56856
diff changeset
3706 ETO_OPAQUE, &pDis->rcItem,
a35b92556545 (w32_wnd_proc) [WM_MEASUREITEM, WM_DRAWITEM]: Handle
Jason Rumney <jasonr@gnu.org>
parents: 56856
diff changeset
3707 (WCHAR *) title,
a35b92556545 (w32_wnd_proc) [WM_MEASUREITEM, WM_DRAWITEM]: Handle
Jason Rumney <jasonr@gnu.org>
parents: 56856
diff changeset
3708 wcslen ((WCHAR *) title), NULL);
a35b92556545 (w32_wnd_proc) [WM_MEASUREITEM, WM_DRAWITEM]: Handle
Jason Rumney <jasonr@gnu.org>
parents: 56856
diff changeset
3709 else
a35b92556545 (w32_wnd_proc) [WM_MEASUREITEM, WM_DRAWITEM]: Handle
Jason Rumney <jasonr@gnu.org>
parents: 56856
diff changeset
3710 ExtTextOut (hdc,
a35b92556545 (w32_wnd_proc) [WM_MEASUREITEM, WM_DRAWITEM]: Handle
Jason Rumney <jasonr@gnu.org>
parents: 56856
diff changeset
3711 pDis->rcItem.left
a35b92556545 (w32_wnd_proc) [WM_MEASUREITEM, WM_DRAWITEM]: Handle
Jason Rumney <jasonr@gnu.org>
parents: 56856
diff changeset
3712 + GetSystemMetrics (SM_CXMENUCHECK),
a35b92556545 (w32_wnd_proc) [WM_MEASUREITEM, WM_DRAWITEM]: Handle
Jason Rumney <jasonr@gnu.org>
parents: 56856
diff changeset
3713 pDis->rcItem.top,
a35b92556545 (w32_wnd_proc) [WM_MEASUREITEM, WM_DRAWITEM]: Handle
Jason Rumney <jasonr@gnu.org>
parents: 56856
diff changeset
3714 ETO_OPAQUE, &pDis->rcItem,
a35b92556545 (w32_wnd_proc) [WM_MEASUREITEM, WM_DRAWITEM]: Handle
Jason Rumney <jasonr@gnu.org>
parents: 56856
diff changeset
3715 title, strlen (title), NULL);
30239
6a55bd8a85f8 (w32_wnd_proc) [WM_DRAW_ITEM]: Do not try to draw a null title.
Jason Rumney <jasonr@gnu.org>
parents: 29317
diff changeset
3716
6a55bd8a85f8 (w32_wnd_proc) [WM_DRAW_ITEM]: Do not try to draw a null title.
Jason Rumney <jasonr@gnu.org>
parents: 29317
diff changeset
3717 SelectObject (hdc, old_font);
6a55bd8a85f8 (w32_wnd_proc) [WM_DRAW_ITEM]: Do not try to draw a null title.
Jason Rumney <jasonr@gnu.org>
parents: 29317
diff changeset
3718 DeleteObject (menu_font);
6a55bd8a85f8 (w32_wnd_proc) [WM_DRAW_ITEM]: Do not try to draw a null title.
Jason Rumney <jasonr@gnu.org>
parents: 29317
diff changeset
3719 }
21735
711a61942023 (x_set_vertical_scroll_bars): Put scroll bars on the
Geoff Voelker <voelker@cs.washington.edu>
parents: 21608
diff changeset
3720 return TRUE;
711a61942023 (x_set_vertical_scroll_bars): Put scroll bars on the
Geoff Voelker <voelker@cs.washington.edu>
parents: 21608
diff changeset
3721 }
711a61942023 (x_set_vertical_scroll_bars): Put scroll bars on the
Geoff Voelker <voelker@cs.washington.edu>
parents: 21608
diff changeset
3722 }
711a61942023 (x_set_vertical_scroll_bars): Put scroll bars on the
Geoff Voelker <voelker@cs.washington.edu>
parents: 21608
diff changeset
3723 return 0;
711a61942023 (x_set_vertical_scroll_bars): Put scroll bars on the
Geoff Voelker <voelker@cs.washington.edu>
parents: 21608
diff changeset
3724
19707
0181cc080316 Include limits.h and errno.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18508
diff changeset
3725 #if 0
0181cc080316 Include limits.h and errno.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18508
diff changeset
3726 /* Still not right - can't distinguish between clicks in the
0181cc080316 Include limits.h and errno.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18508
diff changeset
3727 client area of the frame from clicks forwarded from the scroll
0181cc080316 Include limits.h and errno.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18508
diff changeset
3728 bars - may have to hook WM_NCHITTEST to remember the mouse
0181cc080316 Include limits.h and errno.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18508
diff changeset
3729 position and then check if it is in the client area ourselves. */
0181cc080316 Include limits.h and errno.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18508
diff changeset
3730 case WM_MOUSEACTIVATE:
0181cc080316 Include limits.h and errno.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18508
diff changeset
3731 /* Discard the mouse click that activates a frame, allowing the
0181cc080316 Include limits.h and errno.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18508
diff changeset
3732 user to click anywhere without changing point (or worse!).
0181cc080316 Include limits.h and errno.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18508
diff changeset
3733 Don't eat mouse clicks on scrollbars though!! */
0181cc080316 Include limits.h and errno.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18508
diff changeset
3734 if (LOWORD (lParam) == HTCLIENT )
0181cc080316 Include limits.h and errno.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18508
diff changeset
3735 return MA_ACTIVATEANDEAT;
0181cc080316 Include limits.h and errno.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18508
diff changeset
3736 goto dflt;
0181cc080316 Include limits.h and errno.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18508
diff changeset
3737 #endif
0181cc080316 Include limits.h and errno.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18508
diff changeset
3738
41732
0d9b74cd27cd (trackmouse_window, track_mouse_event_fn): New vars.
Jason Rumney <jasonr@gnu.org>
parents: 41726
diff changeset
3739 case WM_MOUSELEAVE:
0d9b74cd27cd (trackmouse_window, track_mouse_event_fn): New vars.
Jason Rumney <jasonr@gnu.org>
parents: 41726
diff changeset
3740 /* No longer tracking mouse. */
0d9b74cd27cd (trackmouse_window, track_mouse_event_fn): New vars.
Jason Rumney <jasonr@gnu.org>
parents: 41726
diff changeset
3741 track_mouse_window = NULL;
0d9b74cd27cd (trackmouse_window, track_mouse_event_fn): New vars.
Jason Rumney <jasonr@gnu.org>
parents: 41726
diff changeset
3742
23681
af0276da2059 (Vw32_pass_optional_keys_to_system): Variable removed.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23637
diff changeset
3743 case WM_ACTIVATEAPP:
19707
0181cc080316 Include limits.h and errno.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18508
diff changeset
3744 case WM_ACTIVATE:
0181cc080316 Include limits.h and errno.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18508
diff changeset
3745 case WM_WINDOWPOSCHANGED:
0181cc080316 Include limits.h and errno.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18508
diff changeset
3746 case WM_SHOWWINDOW:
0181cc080316 Include limits.h and errno.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18508
diff changeset
3747 /* Inform lisp thread that a frame might have just been obscured
0181cc080316 Include limits.h and errno.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18508
diff changeset
3748 or exposed, so should recheck visibility of all frames. */
0181cc080316 Include limits.h and errno.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18508
diff changeset
3749 my_post_msg (&wmsg, hwnd, msg, wParam, lParam);
0181cc080316 Include limits.h and errno.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18508
diff changeset
3750 goto dflt;
0181cc080316 Include limits.h and errno.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18508
diff changeset
3751
14810
4dd6867765b9 (Vwin32_pass_alt_to_system,
Geoff Voelker <voelker@cs.washington.edu>
parents: 14461
diff changeset
3752 case WM_SETFOCUS:
23803
f112aa8f8f5d (Vw32_phantom_key_code): New variable.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23801
diff changeset
3753 dpyinfo->faked_key = 0;
f112aa8f8f5d (Vw32_phantom_key_code): New variable.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23801
diff changeset
3754 reset_modifiers ();
23681
af0276da2059 (Vw32_pass_optional_keys_to_system): Variable removed.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23637
diff changeset
3755 register_hot_keys (hwnd);
af0276da2059 (Vw32_pass_optional_keys_to_system): Variable removed.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23637
diff changeset
3756 goto command;
15314
796d825f4444 (reset_modifiers): Only clear a modifier if the modifier key has been
Richard M. Stallman <rms@gnu.org>
parents: 15290
diff changeset
3757 case WM_KILLFOCUS:
23681
af0276da2059 (Vw32_pass_optional_keys_to_system): Variable removed.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23637
diff changeset
3758 unregister_hot_keys (hwnd);
24751
e0eaca5025bc (w32_wnd_proc): Ensure mouse capture is released if
Andrew Innes <andrewi@gnu.org>
parents: 24718
diff changeset
3759 button_state = 0;
e0eaca5025bc (w32_wnd_proc): Ensure mouse capture is released if
Andrew Innes <andrewi@gnu.org>
parents: 24718
diff changeset
3760 ReleaseCapture ();
40385
b3dbd98f9b97 (w32_wnd_proc) <WM_KILLFOCUS>: Destroy the system caret.
Jason Rumney <jasonr@gnu.org>
parents: 40120
diff changeset
3761 /* Relinquish the system caret. */
b3dbd98f9b97 (w32_wnd_proc) <WM_KILLFOCUS>: Destroy the system caret.
Jason Rumney <jasonr@gnu.org>
parents: 40120
diff changeset
3762 if (w32_system_caret_hwnd)
b3dbd98f9b97 (w32_wnd_proc) <WM_KILLFOCUS>: Destroy the system caret.
Jason Rumney <jasonr@gnu.org>
parents: 40120
diff changeset
3763 {
42918
9b06036a8c5e (syms_of_w32fns): Initialize w32_visible_system_caret_hwnd.
Jason Rumney <jasonr@gnu.org>
parents: 42865
diff changeset
3764 w32_visible_system_caret_hwnd = NULL;
40385
b3dbd98f9b97 (w32_wnd_proc) <WM_KILLFOCUS>: Destroy the system caret.
Jason Rumney <jasonr@gnu.org>
parents: 40120
diff changeset
3765 w32_system_caret_hwnd = NULL;
42918
9b06036a8c5e (syms_of_w32fns): Initialize w32_visible_system_caret_hwnd.
Jason Rumney <jasonr@gnu.org>
parents: 42865
diff changeset
3766 DestroyCaret ();
40385
b3dbd98f9b97 (w32_wnd_proc) <WM_KILLFOCUS>: Destroy the system caret.
Jason Rumney <jasonr@gnu.org>
parents: 40120
diff changeset
3767 }
43472
7faac536665f (mouse_move_timer, mouse_button_timer): Initialize.
Jason Rumney <jasonr@gnu.org>
parents: 43398
diff changeset
3768 goto command;
7faac536665f (mouse_move_timer, mouse_button_timer): Initialize.
Jason Rumney <jasonr@gnu.org>
parents: 43398
diff changeset
3769 case WM_COMMAND:
76083
5e1d8f9b52ea * w32fns.c (menubar_in_use): New flag.
Jason Rumney <jasonr@gnu.org>
parents: 76078
diff changeset
3770 menubar_in_use = 0;
43472
7faac536665f (mouse_move_timer, mouse_button_timer): Initialize.
Jason Rumney <jasonr@gnu.org>
parents: 43398
diff changeset
3771 f = x_window_to_frame (dpyinfo, hwnd);
7faac536665f (mouse_move_timer, mouse_button_timer): Initialize.
Jason Rumney <jasonr@gnu.org>
parents: 43398
diff changeset
3772 if (f && HIWORD (wParam) == 0)
7faac536665f (mouse_move_timer, mouse_button_timer): Initialize.
Jason Rumney <jasonr@gnu.org>
parents: 43398
diff changeset
3773 {
7faac536665f (mouse_move_timer, mouse_button_timer): Initialize.
Jason Rumney <jasonr@gnu.org>
parents: 43398
diff changeset
3774 if (menu_free_timer)
7faac536665f (mouse_move_timer, mouse_button_timer): Initialize.
Jason Rumney <jasonr@gnu.org>
parents: 43398
diff changeset
3775 {
7faac536665f (mouse_move_timer, mouse_button_timer): Initialize.
Jason Rumney <jasonr@gnu.org>
parents: 43398
diff changeset
3776 KillTimer (hwnd, menu_free_timer);
47942
080b4586492b Fix typo in comment.
Juanma Barranquero <lekktu@gmail.com>
parents: 47731
diff changeset
3777 menu_free_timer = 0;
43472
7faac536665f (mouse_move_timer, mouse_button_timer): Initialize.
Jason Rumney <jasonr@gnu.org>
parents: 43398
diff changeset
3778 }
7faac536665f (mouse_move_timer, mouse_button_timer): Initialize.
Jason Rumney <jasonr@gnu.org>
parents: 43398
diff changeset
3779 }
13434
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
3780 case WM_MOVE:
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
3781 case WM_SIZE:
23681
af0276da2059 (Vw32_pass_optional_keys_to_system): Variable removed.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23637
diff changeset
3782 command:
16588
481b7874a1e9 Change identifiers of the form win32* to w32*.
Geoff Voelker <voelker@cs.washington.edu>
parents: 16259
diff changeset
3783 wmsg.dwModifiers = w32_get_modifiers ();
13434
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
3784 my_post_msg (&wmsg, hwnd, msg, wParam, lParam);
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
3785 goto dflt;
15034
fb947ec168a8 (defined_color): Map color to nearest in default palette.
Richard M. Stallman <rms@gnu.org>
parents: 14983
diff changeset
3786
78106
f9eb7f243bdc (w32_msg_pump) <WM_EMACS_CREATEWINDOW>: Initialize COM.
Jason Rumney <jasonr@gnu.org>
parents: 77995
diff changeset
3787 case WM_DESTROY:
f9eb7f243bdc (w32_msg_pump) <WM_EMACS_CREATEWINDOW>: Initialize COM.
Jason Rumney <jasonr@gnu.org>
parents: 77995
diff changeset
3788 CoUninitialize ();
f9eb7f243bdc (w32_msg_pump) <WM_EMACS_CREATEWINDOW>: Initialize COM.
Jason Rumney <jasonr@gnu.org>
parents: 77995
diff changeset
3789 return 0;
f9eb7f243bdc (w32_msg_pump) <WM_EMACS_CREATEWINDOW>: Initialize COM.
Jason Rumney <jasonr@gnu.org>
parents: 77995
diff changeset
3790
15034
fb947ec168a8 (defined_color): Map color to nearest in default palette.
Richard M. Stallman <rms@gnu.org>
parents: 14983
diff changeset
3791 case WM_CLOSE:
16588
481b7874a1e9 Change identifiers of the form win32* to w32*.
Geoff Voelker <voelker@cs.washington.edu>
parents: 16259
diff changeset
3792 wmsg.dwModifiers = w32_get_modifiers ();
15034
fb947ec168a8 (defined_color): Map color to nearest in default palette.
Richard M. Stallman <rms@gnu.org>
parents: 14983
diff changeset
3793 my_post_msg (&wmsg, hwnd, msg, wParam, lParam);
fb947ec168a8 (defined_color): Map color to nearest in default palette.
Richard M. Stallman <rms@gnu.org>
parents: 14983
diff changeset
3794 return 0;
fb947ec168a8 (defined_color): Map color to nearest in default palette.
Richard M. Stallman <rms@gnu.org>
parents: 14983
diff changeset
3795
13434
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
3796 case WM_WINDOWPOSCHANGING:
41448
96beda35d0fa (w32_wnd_proc) <WM_MENUSELECT>: Revert last change.
Jason Rumney <jasonr@gnu.org>
parents: 41380
diff changeset
3797 /* Don't restrict the sizing of tip frames. */
96beda35d0fa (w32_wnd_proc) <WM_MENUSELECT>: Revert last change.
Jason Rumney <jasonr@gnu.org>
parents: 41380
diff changeset
3798 if (hwnd == tip_window)
96beda35d0fa (w32_wnd_proc) <WM_MENUSELECT>: Revert last change.
Jason Rumney <jasonr@gnu.org>
parents: 41380
diff changeset
3799 return 0;
13434
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
3800 {
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
3801 WINDOWPLACEMENT wp;
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
3802 LPWINDOWPOS lppos = (WINDOWPOS *) lParam;
19707
0181cc080316 Include limits.h and errno.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18508
diff changeset
3803
0181cc080316 Include limits.h and errno.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18508
diff changeset
3804 wp.length = sizeof (WINDOWPLACEMENT);
13434
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
3805 GetWindowPlacement (hwnd, &wp);
47942
080b4586492b Fix typo in comment.
Juanma Barranquero <lekktu@gmail.com>
parents: 47731
diff changeset
3806
19707
0181cc080316 Include limits.h and errno.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18508
diff changeset
3807 if (wp.showCmd != SW_SHOWMINIMIZED && (lppos->flags & SWP_NOSIZE) == 0)
13434
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
3808 {
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
3809 RECT rect;
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
3810 int wdiff;
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
3811 int hdiff;
19707
0181cc080316 Include limits.h and errno.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18508
diff changeset
3812 DWORD font_width;
0181cc080316 Include limits.h and errno.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18508
diff changeset
3813 DWORD line_height;
0181cc080316 Include limits.h and errno.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18508
diff changeset
3814 DWORD internal_border;
0181cc080316 Include limits.h and errno.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18508
diff changeset
3815 DWORD scrollbar_extra;
13434
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
3816 RECT wr;
47942
080b4586492b Fix typo in comment.
Juanma Barranquero <lekktu@gmail.com>
parents: 47731
diff changeset
3817
79387
0ca197abc593 (Fw32_registered_hot_keys): Don't return the nil values corresponding
Juanma Barranquero <lekktu@gmail.com>
parents: 79381
diff changeset
3818 wp.length = sizeof (wp);
13434
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
3819 GetWindowRect (hwnd, &wr);
47942
080b4586492b Fix typo in comment.
Juanma Barranquero <lekktu@gmail.com>
parents: 47731
diff changeset
3820
14353
d0d8d9d73f7f backout 1.3
Geoff Voelker <voelker@cs.washington.edu>
parents: 14243
diff changeset
3821 enter_crit ();
47942
080b4586492b Fix typo in comment.
Juanma Barranquero <lekktu@gmail.com>
parents: 47731
diff changeset
3822
19707
0181cc080316 Include limits.h and errno.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18508
diff changeset
3823 font_width = GetWindowLong (hwnd, WND_FONTWIDTH_INDEX);
0181cc080316 Include limits.h and errno.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18508
diff changeset
3824 line_height = GetWindowLong (hwnd, WND_LINEHEIGHT_INDEX);
0181cc080316 Include limits.h and errno.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18508
diff changeset
3825 internal_border = GetWindowLong (hwnd, WND_BORDER_INDEX);
0181cc080316 Include limits.h and errno.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18508
diff changeset
3826 scrollbar_extra = GetWindowLong (hwnd, WND_SCROLLBAR_INDEX);
47942
080b4586492b Fix typo in comment.
Juanma Barranquero <lekktu@gmail.com>
parents: 47731
diff changeset
3827
14353
d0d8d9d73f7f backout 1.3
Geoff Voelker <voelker@cs.washington.edu>
parents: 14243
diff changeset
3828 leave_crit ();
47942
080b4586492b Fix typo in comment.
Juanma Barranquero <lekktu@gmail.com>
parents: 47731
diff changeset
3829
13434
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
3830 memset (&rect, 0, sizeof (rect));
47942
080b4586492b Fix typo in comment.
Juanma Barranquero <lekktu@gmail.com>
parents: 47731
diff changeset
3831 AdjustWindowRect (&rect, GetWindowLong (hwnd, GWL_STYLE),
13434
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
3832 GetMenu (hwnd) != NULL);
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
3833
19707
0181cc080316 Include limits.h and errno.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18508
diff changeset
3834 /* Force width and height of client area to be exact
0181cc080316 Include limits.h and errno.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18508
diff changeset
3835 multiples of the character cell dimensions. */
0181cc080316 Include limits.h and errno.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18508
diff changeset
3836 wdiff = (lppos->cx - (rect.right - rect.left)
0181cc080316 Include limits.h and errno.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18508
diff changeset
3837 - 2 * internal_border - scrollbar_extra)
0181cc080316 Include limits.h and errno.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18508
diff changeset
3838 % font_width;
0181cc080316 Include limits.h and errno.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18508
diff changeset
3839 hdiff = (lppos->cy - (rect.bottom - rect.top)
0181cc080316 Include limits.h and errno.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18508
diff changeset
3840 - 2 * internal_border)
0181cc080316 Include limits.h and errno.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18508
diff changeset
3841 % line_height;
47942
080b4586492b Fix typo in comment.
Juanma Barranquero <lekktu@gmail.com>
parents: 47731
diff changeset
3842
13434
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
3843 if (wdiff || hdiff)
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
3844 {
47942
080b4586492b Fix typo in comment.
Juanma Barranquero <lekktu@gmail.com>
parents: 47731
diff changeset
3845 /* For right/bottom sizing we can just fix the sizes.
080b4586492b Fix typo in comment.
Juanma Barranquero <lekktu@gmail.com>
parents: 47731
diff changeset
3846 However for top/left sizing we will need to fix the X
13434
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
3847 and Y positions as well. */
47942
080b4586492b Fix typo in comment.
Juanma Barranquero <lekktu@gmail.com>
parents: 47731
diff changeset
3848
74618
69b307896f8b (w32_wnd_proc): Force non-tooltip frames to respect the minimum tracking size.
Juanma Barranquero <lekktu@gmail.com>
parents: 74350
diff changeset
3849 int cx_mintrack = GetSystemMetrics (SM_CXMINTRACK);
69b307896f8b (w32_wnd_proc): Force non-tooltip frames to respect the minimum tracking size.
Juanma Barranquero <lekktu@gmail.com>
parents: 74350
diff changeset
3850 int cy_mintrack = GetSystemMetrics (SM_CYMINTRACK);
69b307896f8b (w32_wnd_proc): Force non-tooltip frames to respect the minimum tracking size.
Juanma Barranquero <lekktu@gmail.com>
parents: 74350
diff changeset
3851
69b307896f8b (w32_wnd_proc): Force non-tooltip frames to respect the minimum tracking size.
Juanma Barranquero <lekktu@gmail.com>
parents: 74350
diff changeset
3852 lppos->cx = max (lppos->cx - wdiff, cx_mintrack);
69b307896f8b (w32_wnd_proc): Force non-tooltip frames to respect the minimum tracking size.
Juanma Barranquero <lekktu@gmail.com>
parents: 74350
diff changeset
3853 lppos->cy = max (lppos->cy - hdiff, cy_mintrack);
47942
080b4586492b Fix typo in comment.
Juanma Barranquero <lekktu@gmail.com>
parents: 47731
diff changeset
3854
080b4586492b Fix typo in comment.
Juanma Barranquero <lekktu@gmail.com>
parents: 47731
diff changeset
3855 if (wp.showCmd != SW_SHOWMAXIMIZED
19707
0181cc080316 Include limits.h and errno.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18508
diff changeset
3856 && (lppos->flags & SWP_NOMOVE) == 0)
13434
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
3857 {
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
3858 if (lppos->x != wr.left || lppos->y != wr.top)
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
3859 {
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
3860 lppos->x += wdiff;
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
3861 lppos->y += hdiff;
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
3862 }
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
3863 else
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
3864 {
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
3865 lppos->flags |= SWP_NOMOVE;
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
3866 }
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
3867 }
47942
080b4586492b Fix typo in comment.
Juanma Barranquero <lekktu@gmail.com>
parents: 47731
diff changeset
3868
19707
0181cc080316 Include limits.h and errno.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18508
diff changeset
3869 return 0;
13434
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
3870 }
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
3871 }
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
3872 }
47942
080b4586492b Fix typo in comment.
Juanma Barranquero <lekktu@gmail.com>
parents: 47731
diff changeset
3873
13434
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
3874 goto dflt;
19707
0181cc080316 Include limits.h and errno.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18508
diff changeset
3875
24479
3b2c3636bf0e (w32_wnd_proc): Handle WM_GETMINMAXINFO message.
Geoff Voelker <voelker@cs.washington.edu>
parents: 24412
diff changeset
3876 case WM_GETMINMAXINFO:
36080
743534626f73 (w32_wnd_proc) <WM_GETMINMAXINFO>: Allow resizing the
Andrew Innes <andrewi@gnu.org>
parents: 36000
diff changeset
3877 /* Hack to allow resizing the Emacs frame above the screen size.
743534626f73 (w32_wnd_proc) <WM_GETMINMAXINFO>: Allow resizing the
Andrew Innes <andrewi@gnu.org>
parents: 36000
diff changeset
3878 Note that Windows 9x limits coordinates to 16-bits. */
743534626f73 (w32_wnd_proc) <WM_GETMINMAXINFO>: Allow resizing the
Andrew Innes <andrewi@gnu.org>
parents: 36000
diff changeset
3879 ((LPMINMAXINFO) lParam)->ptMaxTrackSize.x = 32767;
743534626f73 (w32_wnd_proc) <WM_GETMINMAXINFO>: Allow resizing the
Andrew Innes <andrewi@gnu.org>
parents: 36000
diff changeset
3880 ((LPMINMAXINFO) lParam)->ptMaxTrackSize.y = 32767;
24479
3b2c3636bf0e (w32_wnd_proc): Handle WM_GETMINMAXINFO message.
Geoff Voelker <voelker@cs.washington.edu>
parents: 24412
diff changeset
3881 return 0;
3b2c3636bf0e (w32_wnd_proc): Handle WM_GETMINMAXINFO message.
Geoff Voelker <voelker@cs.washington.edu>
parents: 24412
diff changeset
3882
49369
5518e109ec3b 2003-01-21 Jason Rumney <jasonr@gnu.org>
Jason Rumney <jasonr@gnu.org>
parents: 49079
diff changeset
3883 case WM_SETCURSOR:
5518e109ec3b 2003-01-21 Jason Rumney <jasonr@gnu.org>
Jason Rumney <jasonr@gnu.org>
parents: 49079
diff changeset
3884 if (LOWORD (lParam) == HTCLIENT)
93075
66248fc5b523 * w32fns.c (hourglass_timer, hourglass_hwnd): New variables.
Jason Rumney <jasonr@gnu.org>
parents: 92940
diff changeset
3885 {
66248fc5b523 * w32fns.c (hourglass_timer, hourglass_hwnd): New variables.
Jason Rumney <jasonr@gnu.org>
parents: 92940
diff changeset
3886 f = x_window_to_frame (dpyinfo, hwnd);
66248fc5b523 * w32fns.c (hourglass_timer, hourglass_hwnd): New variables.
Jason Rumney <jasonr@gnu.org>
parents: 92940
diff changeset
3887 if (f->output_data.w32->hourglass_p && !menubar_in_use
66248fc5b523 * w32fns.c (hourglass_timer, hourglass_hwnd): New variables.
Jason Rumney <jasonr@gnu.org>
parents: 92940
diff changeset
3888 && !current_popup_menu)
66248fc5b523 * w32fns.c (hourglass_timer, hourglass_hwnd): New variables.
Jason Rumney <jasonr@gnu.org>
parents: 92940
diff changeset
3889 SetCursor (f->output_data.w32->hourglass_cursor);
66248fc5b523 * w32fns.c (hourglass_timer, hourglass_hwnd): New variables.
Jason Rumney <jasonr@gnu.org>
parents: 92940
diff changeset
3890 else
66248fc5b523 * w32fns.c (hourglass_timer, hourglass_hwnd): New variables.
Jason Rumney <jasonr@gnu.org>
parents: 92940
diff changeset
3891 SetCursor (f->output_data.w32->current_cursor);
66248fc5b523 * w32fns.c (hourglass_timer, hourglass_hwnd): New variables.
Jason Rumney <jasonr@gnu.org>
parents: 92940
diff changeset
3892 return 0;
66248fc5b523 * w32fns.c (hourglass_timer, hourglass_hwnd): New variables.
Jason Rumney <jasonr@gnu.org>
parents: 92940
diff changeset
3893 }
49369
5518e109ec3b 2003-01-21 Jason Rumney <jasonr@gnu.org>
Jason Rumney <jasonr@gnu.org>
parents: 49079
diff changeset
3894 goto dflt;
49494
07f0ea120d7d (init_external_image_libraries): Try alternate names for the jpeg dll.
Juanma Barranquero <lekktu@gmail.com>
parents: 49455
diff changeset
3895
49369
5518e109ec3b 2003-01-21 Jason Rumney <jasonr@gnu.org>
Jason Rumney <jasonr@gnu.org>
parents: 49079
diff changeset
3896 case WM_EMACS_SETCURSOR:
5518e109ec3b 2003-01-21 Jason Rumney <jasonr@gnu.org>
Jason Rumney <jasonr@gnu.org>
parents: 49079
diff changeset
3897 {
5518e109ec3b 2003-01-21 Jason Rumney <jasonr@gnu.org>
Jason Rumney <jasonr@gnu.org>
parents: 49079
diff changeset
3898 Cursor cursor = (Cursor) wParam;
93075
66248fc5b523 * w32fns.c (hourglass_timer, hourglass_hwnd): New variables.
Jason Rumney <jasonr@gnu.org>
parents: 92940
diff changeset
3899 f = x_window_to_frame (dpyinfo, hwnd);
66248fc5b523 * w32fns.c (hourglass_timer, hourglass_hwnd): New variables.
Jason Rumney <jasonr@gnu.org>
parents: 92940
diff changeset
3900 if (f && cursor)
66248fc5b523 * w32fns.c (hourglass_timer, hourglass_hwnd): New variables.
Jason Rumney <jasonr@gnu.org>
parents: 92940
diff changeset
3901 {
66248fc5b523 * w32fns.c (hourglass_timer, hourglass_hwnd): New variables.
Jason Rumney <jasonr@gnu.org>
parents: 92940
diff changeset
3902 f->output_data.w32->current_cursor = cursor;
66248fc5b523 * w32fns.c (hourglass_timer, hourglass_hwnd): New variables.
Jason Rumney <jasonr@gnu.org>
parents: 92940
diff changeset
3903 if (!f->output_data.w32->hourglass_p)
66248fc5b523 * w32fns.c (hourglass_timer, hourglass_hwnd): New variables.
Jason Rumney <jasonr@gnu.org>
parents: 92940
diff changeset
3904 SetCursor (cursor);
66248fc5b523 * w32fns.c (hourglass_timer, hourglass_hwnd): New variables.
Jason Rumney <jasonr@gnu.org>
parents: 92940
diff changeset
3905 }
49369
5518e109ec3b 2003-01-21 Jason Rumney <jasonr@gnu.org>
Jason Rumney <jasonr@gnu.org>
parents: 49079
diff changeset
3906 return 0;
5518e109ec3b 2003-01-21 Jason Rumney <jasonr@gnu.org>
Jason Rumney <jasonr@gnu.org>
parents: 49079
diff changeset
3907 }
49494
07f0ea120d7d (init_external_image_libraries): Try alternate names for the jpeg dll.
Juanma Barranquero <lekktu@gmail.com>
parents: 49455
diff changeset
3908
19707
0181cc080316 Include limits.h and errno.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18508
diff changeset
3909 case WM_EMACS_CREATESCROLLBAR:
0181cc080316 Include limits.h and errno.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18508
diff changeset
3910 return (LRESULT) w32_createscrollbar ((struct frame *) wParam,
0181cc080316 Include limits.h and errno.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18508
diff changeset
3911 (struct scroll_bar *) lParam);
0181cc080316 Include limits.h and errno.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18508
diff changeset
3912
15147
38c0ce06203f (quit_char, Vwin32_enable_italics, Vwin32_enable_palette):
Geoff Voelker <voelker@cs.washington.edu>
parents: 15034
diff changeset
3913 case WM_EMACS_SHOWWINDOW:
19707
0181cc080316 Include limits.h and errno.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18508
diff changeset
3914 return ShowWindow ((HWND) wParam, (WPARAM) lParam);
0181cc080316 Include limits.h and errno.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18508
diff changeset
3915
21608
d191a8737145 (w32_msg_pump): Handle WM_EMACS_SETLOCALE.
Geoff Voelker <voelker@cs.washington.edu>
parents: 19707
diff changeset
3916 case WM_EMACS_SETFOREGROUND:
24718
547f54dfbb94 (x_to_w32_charset): Reinstall VIETNAMESE_CHARSET
Andrew Innes <andrewi@gnu.org>
parents: 24695
diff changeset
3917 {
547f54dfbb94 (x_to_w32_charset): Reinstall VIETNAMESE_CHARSET
Andrew Innes <andrewi@gnu.org>
parents: 24695
diff changeset
3918 HWND foreground_window;
547f54dfbb94 (x_to_w32_charset): Reinstall VIETNAMESE_CHARSET
Andrew Innes <andrewi@gnu.org>
parents: 24695
diff changeset
3919 DWORD foreground_thread, retval;
547f54dfbb94 (x_to_w32_charset): Reinstall VIETNAMESE_CHARSET
Andrew Innes <andrewi@gnu.org>
parents: 24695
diff changeset
3920
547f54dfbb94 (x_to_w32_charset): Reinstall VIETNAMESE_CHARSET
Andrew Innes <andrewi@gnu.org>
parents: 24695
diff changeset
3921 /* On NT 5.0, and apparently Windows 98, it is necessary to
547f54dfbb94 (x_to_w32_charset): Reinstall VIETNAMESE_CHARSET
Andrew Innes <andrewi@gnu.org>
parents: 24695
diff changeset
3922 attach to the thread that currently has focus in order to
547f54dfbb94 (x_to_w32_charset): Reinstall VIETNAMESE_CHARSET
Andrew Innes <andrewi@gnu.org>
parents: 24695
diff changeset
3923 pull the focus away from it. */
547f54dfbb94 (x_to_w32_charset): Reinstall VIETNAMESE_CHARSET
Andrew Innes <andrewi@gnu.org>
parents: 24695
diff changeset
3924 foreground_window = GetForegroundWindow ();
547f54dfbb94 (x_to_w32_charset): Reinstall VIETNAMESE_CHARSET
Andrew Innes <andrewi@gnu.org>
parents: 24695
diff changeset
3925 foreground_thread = GetWindowThreadProcessId (foreground_window, NULL);
547f54dfbb94 (x_to_w32_charset): Reinstall VIETNAMESE_CHARSET
Andrew Innes <andrewi@gnu.org>
parents: 24695
diff changeset
3926 if (!foreground_window
547f54dfbb94 (x_to_w32_charset): Reinstall VIETNAMESE_CHARSET
Andrew Innes <andrewi@gnu.org>
parents: 24695
diff changeset
3927 || foreground_thread == GetCurrentThreadId ()
547f54dfbb94 (x_to_w32_charset): Reinstall VIETNAMESE_CHARSET
Andrew Innes <andrewi@gnu.org>
parents: 24695
diff changeset
3928 || !AttachThreadInput (GetCurrentThreadId (),
547f54dfbb94 (x_to_w32_charset): Reinstall VIETNAMESE_CHARSET
Andrew Innes <andrewi@gnu.org>
parents: 24695
diff changeset
3929 foreground_thread, TRUE))
547f54dfbb94 (x_to_w32_charset): Reinstall VIETNAMESE_CHARSET
Andrew Innes <andrewi@gnu.org>
parents: 24695
diff changeset
3930 foreground_thread = 0;
547f54dfbb94 (x_to_w32_charset): Reinstall VIETNAMESE_CHARSET
Andrew Innes <andrewi@gnu.org>
parents: 24695
diff changeset
3931
547f54dfbb94 (x_to_w32_charset): Reinstall VIETNAMESE_CHARSET
Andrew Innes <andrewi@gnu.org>
parents: 24695
diff changeset
3932 retval = SetForegroundWindow ((HWND) wParam);
547f54dfbb94 (x_to_w32_charset): Reinstall VIETNAMESE_CHARSET
Andrew Innes <andrewi@gnu.org>
parents: 24695
diff changeset
3933
547f54dfbb94 (x_to_w32_charset): Reinstall VIETNAMESE_CHARSET
Andrew Innes <andrewi@gnu.org>
parents: 24695
diff changeset
3934 /* Detach from the previous foreground thread. */
547f54dfbb94 (x_to_w32_charset): Reinstall VIETNAMESE_CHARSET
Andrew Innes <andrewi@gnu.org>
parents: 24695
diff changeset
3935 if (foreground_thread)
547f54dfbb94 (x_to_w32_charset): Reinstall VIETNAMESE_CHARSET
Andrew Innes <andrewi@gnu.org>
parents: 24695
diff changeset
3936 AttachThreadInput (GetCurrentThreadId (),
547f54dfbb94 (x_to_w32_charset): Reinstall VIETNAMESE_CHARSET
Andrew Innes <andrewi@gnu.org>
parents: 24695
diff changeset
3937 foreground_thread, FALSE);
547f54dfbb94 (x_to_w32_charset): Reinstall VIETNAMESE_CHARSET
Andrew Innes <andrewi@gnu.org>
parents: 24695
diff changeset
3938
547f54dfbb94 (x_to_w32_charset): Reinstall VIETNAMESE_CHARSET
Andrew Innes <andrewi@gnu.org>
parents: 24695
diff changeset
3939 return retval;
547f54dfbb94 (x_to_w32_charset): Reinstall VIETNAMESE_CHARSET
Andrew Innes <andrewi@gnu.org>
parents: 24695
diff changeset
3940 }
21608
d191a8737145 (w32_msg_pump): Handle WM_EMACS_SETLOCALE.
Geoff Voelker <voelker@cs.washington.edu>
parents: 19707
diff changeset
3941
15147
38c0ce06203f (quit_char, Vwin32_enable_italics, Vwin32_enable_palette):
Geoff Voelker <voelker@cs.washington.edu>
parents: 15034
diff changeset
3942 case WM_EMACS_SETWINDOWPOS:
38c0ce06203f (quit_char, Vwin32_enable_italics, Vwin32_enable_palette):
Geoff Voelker <voelker@cs.washington.edu>
parents: 15034
diff changeset
3943 {
19707
0181cc080316 Include limits.h and errno.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18508
diff changeset
3944 WINDOWPOS * pos = (WINDOWPOS *) wParam;
0181cc080316 Include limits.h and errno.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18508
diff changeset
3945 return SetWindowPos (hwnd, pos->hwndInsertAfter,
15147
38c0ce06203f (quit_char, Vwin32_enable_italics, Vwin32_enable_palette):
Geoff Voelker <voelker@cs.washington.edu>
parents: 15034
diff changeset
3946 pos->x, pos->y, pos->cx, pos->cy, pos->flags);
38c0ce06203f (quit_char, Vwin32_enable_italics, Vwin32_enable_palette):
Geoff Voelker <voelker@cs.washington.edu>
parents: 15034
diff changeset
3947 }
19707
0181cc080316 Include limits.h and errno.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18508
diff changeset
3948
13434
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
3949 case WM_EMACS_DESTROYWINDOW:
21884
bc4455bca454 Include shellapi.h.
Richard M. Stallman <rms@gnu.org>
parents: 21874
diff changeset
3950 DragAcceptFiles ((HWND) wParam, FALSE);
19707
0181cc080316 Include limits.h and errno.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18508
diff changeset
3951 return DestroyWindow ((HWND) wParam);
0181cc080316 Include limits.h and errno.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18508
diff changeset
3952
42865
40d08b8571ec (w32_visible_system_caret_hwnd): New static variable.
Jason Rumney <jasonr@gnu.org>
parents: 42845
diff changeset
3953 case WM_EMACS_HIDE_CARET:
40d08b8571ec (w32_visible_system_caret_hwnd): New static variable.
Jason Rumney <jasonr@gnu.org>
parents: 42845
diff changeset
3954 return HideCaret (hwnd);
40d08b8571ec (w32_visible_system_caret_hwnd): New static variable.
Jason Rumney <jasonr@gnu.org>
parents: 42845
diff changeset
3955
40d08b8571ec (w32_visible_system_caret_hwnd): New static variable.
Jason Rumney <jasonr@gnu.org>
parents: 42845
diff changeset
3956 case WM_EMACS_SHOW_CARET:
40d08b8571ec (w32_visible_system_caret_hwnd): New static variable.
Jason Rumney <jasonr@gnu.org>
parents: 42845
diff changeset
3957 return ShowCaret (hwnd);
40d08b8571ec (w32_visible_system_caret_hwnd): New static variable.
Jason Rumney <jasonr@gnu.org>
parents: 42845
diff changeset
3958
40385
b3dbd98f9b97 (w32_wnd_proc) <WM_KILLFOCUS>: Destroy the system caret.
Jason Rumney <jasonr@gnu.org>
parents: 40120
diff changeset
3959 case WM_EMACS_DESTROY_CARET:
b3dbd98f9b97 (w32_wnd_proc) <WM_KILLFOCUS>: Destroy the system caret.
Jason Rumney <jasonr@gnu.org>
parents: 40120
diff changeset
3960 w32_system_caret_hwnd = NULL;
42865
40d08b8571ec (w32_visible_system_caret_hwnd): New static variable.
Jason Rumney <jasonr@gnu.org>
parents: 42845
diff changeset
3961 w32_visible_system_caret_hwnd = NULL;
40385
b3dbd98f9b97 (w32_wnd_proc) <WM_KILLFOCUS>: Destroy the system caret.
Jason Rumney <jasonr@gnu.org>
parents: 40120
diff changeset
3962 return DestroyCaret ();
b3dbd98f9b97 (w32_wnd_proc) <WM_KILLFOCUS>: Destroy the system caret.
Jason Rumney <jasonr@gnu.org>
parents: 40120
diff changeset
3963
b3dbd98f9b97 (w32_wnd_proc) <WM_KILLFOCUS>: Destroy the system caret.
Jason Rumney <jasonr@gnu.org>
parents: 40120
diff changeset
3964 case WM_EMACS_TRACK_CARET:
b3dbd98f9b97 (w32_wnd_proc) <WM_KILLFOCUS>: Destroy the system caret.
Jason Rumney <jasonr@gnu.org>
parents: 40120
diff changeset
3965 /* If there is currently no system caret, create one. */
b3dbd98f9b97 (w32_wnd_proc) <WM_KILLFOCUS>: Destroy the system caret.
Jason Rumney <jasonr@gnu.org>
parents: 40120
diff changeset
3966 if (w32_system_caret_hwnd == NULL)
b3dbd98f9b97 (w32_wnd_proc) <WM_KILLFOCUS>: Destroy the system caret.
Jason Rumney <jasonr@gnu.org>
parents: 40120
diff changeset
3967 {
42865
40d08b8571ec (w32_visible_system_caret_hwnd): New static variable.
Jason Rumney <jasonr@gnu.org>
parents: 42845
diff changeset
3968 /* Use the default caret width, and avoid changing it
40d08b8571ec (w32_visible_system_caret_hwnd): New static variable.
Jason Rumney <jasonr@gnu.org>
parents: 42845
diff changeset
3969 unneccesarily, as it confuses screen reader software. */
40385
b3dbd98f9b97 (w32_wnd_proc) <WM_KILLFOCUS>: Destroy the system caret.
Jason Rumney <jasonr@gnu.org>
parents: 40120
diff changeset
3970 w32_system_caret_hwnd = hwnd;
42865
40d08b8571ec (w32_visible_system_caret_hwnd): New static variable.
Jason Rumney <jasonr@gnu.org>
parents: 42845
diff changeset
3971 CreateCaret (hwnd, NULL, 0,
40385
b3dbd98f9b97 (w32_wnd_proc) <WM_KILLFOCUS>: Destroy the system caret.
Jason Rumney <jasonr@gnu.org>
parents: 40120
diff changeset
3972 w32_system_caret_height);
b3dbd98f9b97 (w32_wnd_proc) <WM_KILLFOCUS>: Destroy the system caret.
Jason Rumney <jasonr@gnu.org>
parents: 40120
diff changeset
3973 }
47942
080b4586492b Fix typo in comment.
Juanma Barranquero <lekktu@gmail.com>
parents: 47731
diff changeset
3974
42865
40d08b8571ec (w32_visible_system_caret_hwnd): New static variable.
Jason Rumney <jasonr@gnu.org>
parents: 42845
diff changeset
3975 if (!SetCaretPos (w32_system_caret_x, w32_system_caret_y))
40d08b8571ec (w32_visible_system_caret_hwnd): New static variable.
Jason Rumney <jasonr@gnu.org>
parents: 42845
diff changeset
3976 return 0;
40d08b8571ec (w32_visible_system_caret_hwnd): New static variable.
Jason Rumney <jasonr@gnu.org>
parents: 42845
diff changeset
3977 /* Ensure visible caret gets turned on when requested. */
40d08b8571ec (w32_visible_system_caret_hwnd): New static variable.
Jason Rumney <jasonr@gnu.org>
parents: 42845
diff changeset
3978 else if (w32_use_visible_system_caret
40d08b8571ec (w32_visible_system_caret_hwnd): New static variable.
Jason Rumney <jasonr@gnu.org>
parents: 42845
diff changeset
3979 && w32_visible_system_caret_hwnd != hwnd)
40d08b8571ec (w32_visible_system_caret_hwnd): New static variable.
Jason Rumney <jasonr@gnu.org>
parents: 42845
diff changeset
3980 {
40d08b8571ec (w32_visible_system_caret_hwnd): New static variable.
Jason Rumney <jasonr@gnu.org>
parents: 42845
diff changeset
3981 w32_visible_system_caret_hwnd = hwnd;
40d08b8571ec (w32_visible_system_caret_hwnd): New static variable.
Jason Rumney <jasonr@gnu.org>
parents: 42845
diff changeset
3982 return ShowCaret (hwnd);
40d08b8571ec (w32_visible_system_caret_hwnd): New static variable.
Jason Rumney <jasonr@gnu.org>
parents: 42845
diff changeset
3983 }
40d08b8571ec (w32_visible_system_caret_hwnd): New static variable.
Jason Rumney <jasonr@gnu.org>
parents: 42845
diff changeset
3984 /* Ensure visible caret gets turned off when requested. */
40d08b8571ec (w32_visible_system_caret_hwnd): New static variable.
Jason Rumney <jasonr@gnu.org>
parents: 42845
diff changeset
3985 else if (!w32_use_visible_system_caret
40d08b8571ec (w32_visible_system_caret_hwnd): New static variable.
Jason Rumney <jasonr@gnu.org>
parents: 42845
diff changeset
3986 && w32_visible_system_caret_hwnd)
40d08b8571ec (w32_visible_system_caret_hwnd): New static variable.
Jason Rumney <jasonr@gnu.org>
parents: 42845
diff changeset
3987 {
40d08b8571ec (w32_visible_system_caret_hwnd): New static variable.
Jason Rumney <jasonr@gnu.org>
parents: 42845
diff changeset
3988 w32_visible_system_caret_hwnd = NULL;
40d08b8571ec (w32_visible_system_caret_hwnd): New static variable.
Jason Rumney <jasonr@gnu.org>
parents: 42845
diff changeset
3989 return HideCaret (hwnd);
40d08b8571ec (w32_visible_system_caret_hwnd): New static variable.
Jason Rumney <jasonr@gnu.org>
parents: 42845
diff changeset
3990 }
40d08b8571ec (w32_visible_system_caret_hwnd): New static variable.
Jason Rumney <jasonr@gnu.org>
parents: 42845
diff changeset
3991 else
40d08b8571ec (w32_visible_system_caret_hwnd): New static variable.
Jason Rumney <jasonr@gnu.org>
parents: 42845
diff changeset
3992 return 1;
40385
b3dbd98f9b97 (w32_wnd_proc) <WM_KILLFOCUS>: Destroy the system caret.
Jason Rumney <jasonr@gnu.org>
parents: 40120
diff changeset
3993
19707
0181cc080316 Include limits.h and errno.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18508
diff changeset
3994 case WM_EMACS_TRACKPOPUPMENU:
0181cc080316 Include limits.h and errno.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18508
diff changeset
3995 {
0181cc080316 Include limits.h and errno.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18508
diff changeset
3996 UINT flags;
0181cc080316 Include limits.h and errno.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18508
diff changeset
3997 POINT *pos;
0181cc080316 Include limits.h and errno.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18508
diff changeset
3998 int retval;
0181cc080316 Include limits.h and errno.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18508
diff changeset
3999 pos = (POINT *)lParam;
0181cc080316 Include limits.h and errno.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18508
diff changeset
4000 flags = TPM_CENTERALIGN;
0181cc080316 Include limits.h and errno.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18508
diff changeset
4001 if (button_state & LMOUSE)
0181cc080316 Include limits.h and errno.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18508
diff changeset
4002 flags |= TPM_LEFTBUTTON;
0181cc080316 Include limits.h and errno.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18508
diff changeset
4003 else if (button_state & RMOUSE)
0181cc080316 Include limits.h and errno.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18508
diff changeset
4004 flags |= TPM_RIGHTBUTTON;
47942
080b4586492b Fix typo in comment.
Juanma Barranquero <lekktu@gmail.com>
parents: 47731
diff changeset
4005
21735
711a61942023 (x_set_vertical_scroll_bars): Put scroll bars on the
Geoff Voelker <voelker@cs.washington.edu>
parents: 21608
diff changeset
4006 /* Remember we did a SetCapture on the initial mouse down event,
711a61942023 (x_set_vertical_scroll_bars): Put scroll bars on the
Geoff Voelker <voelker@cs.washington.edu>
parents: 21608
diff changeset
4007 so for safety, we make sure the capture is cancelled now. */
711a61942023 (x_set_vertical_scroll_bars): Put scroll bars on the
Geoff Voelker <voelker@cs.washington.edu>
parents: 21608
diff changeset
4008 ReleaseCapture ();
23160
95a213639589 (w32_wnd_proc): Always zero button_state when releasing
Geoff Voelker <voelker@cs.washington.edu>
parents: 22625
diff changeset
4009 button_state = 0;
21735
711a61942023 (x_set_vertical_scroll_bars): Put scroll bars on the
Geoff Voelker <voelker@cs.washington.edu>
parents: 21608
diff changeset
4010
19707
0181cc080316 Include limits.h and errno.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18508
diff changeset
4011 /* Use menubar_active to indicate that WM_INITMENU is from
0181cc080316 Include limits.h and errno.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18508
diff changeset
4012 TrackPopupMenu below, and should be ignored. */
0181cc080316 Include limits.h and errno.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18508
diff changeset
4013 f = x_window_to_frame (dpyinfo, hwnd);
0181cc080316 Include limits.h and errno.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18508
diff changeset
4014 if (f)
0181cc080316 Include limits.h and errno.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18508
diff changeset
4015 f->output_data.w32->menubar_active = 1;
47942
080b4586492b Fix typo in comment.
Juanma Barranquero <lekktu@gmail.com>
parents: 47731
diff changeset
4016
080b4586492b Fix typo in comment.
Juanma Barranquero <lekktu@gmail.com>
parents: 47731
diff changeset
4017 if (TrackPopupMenu ((HMENU)wParam, flags, pos->x, pos->y,
19707
0181cc080316 Include limits.h and errno.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18508
diff changeset
4018 0, hwnd, NULL))
0181cc080316 Include limits.h and errno.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18508
diff changeset
4019 {
0181cc080316 Include limits.h and errno.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18508
diff changeset
4020 MSG amsg;
0181cc080316 Include limits.h and errno.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18508
diff changeset
4021 /* Eat any mouse messages during popupmenu */
0181cc080316 Include limits.h and errno.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18508
diff changeset
4022 while (PeekMessage (&amsg, hwnd, WM_MOUSEFIRST, WM_MOUSELAST,
0181cc080316 Include limits.h and errno.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18508
diff changeset
4023 PM_REMOVE));
0181cc080316 Include limits.h and errno.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18508
diff changeset
4024 /* Get the menu selection, if any */
0181cc080316 Include limits.h and errno.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18508
diff changeset
4025 if (PeekMessage (&amsg, hwnd, WM_COMMAND, WM_COMMAND, PM_REMOVE))
0181cc080316 Include limits.h and errno.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18508
diff changeset
4026 {
0181cc080316 Include limits.h and errno.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18508
diff changeset
4027 retval = LOWORD (amsg.wParam);
0181cc080316 Include limits.h and errno.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18508
diff changeset
4028 }
0181cc080316 Include limits.h and errno.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18508
diff changeset
4029 else
0181cc080316 Include limits.h and errno.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18508
diff changeset
4030 {
0181cc080316 Include limits.h and errno.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18508
diff changeset
4031 retval = 0;
0181cc080316 Include limits.h and errno.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18508
diff changeset
4032 }
0181cc080316 Include limits.h and errno.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18508
diff changeset
4033 }
0181cc080316 Include limits.h and errno.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18508
diff changeset
4034 else
0181cc080316 Include limits.h and errno.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18508
diff changeset
4035 {
0181cc080316 Include limits.h and errno.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18508
diff changeset
4036 retval = -1;
0181cc080316 Include limits.h and errno.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18508
diff changeset
4037 }
0181cc080316 Include limits.h and errno.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18508
diff changeset
4038
0181cc080316 Include limits.h and errno.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18508
diff changeset
4039 return retval;
0181cc080316 Include limits.h and errno.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18508
diff changeset
4040 }
0181cc080316 Include limits.h and errno.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18508
diff changeset
4041
13434
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
4042 default:
21874
c0871d40073e (msh_mousewheel): New variable.
Geoff Voelker <voelker@cs.washington.edu>
parents: 21735
diff changeset
4043 /* Check for messages registered at runtime. */
c0871d40073e (msh_mousewheel): New variable.
Geoff Voelker <voelker@cs.washington.edu>
parents: 21735
diff changeset
4044 if (msg == msh_mousewheel)
c0871d40073e (msh_mousewheel): New variable.
Geoff Voelker <voelker@cs.washington.edu>
parents: 21735
diff changeset
4045 {
c0871d40073e (msh_mousewheel): New variable.
Geoff Voelker <voelker@cs.washington.edu>
parents: 21735
diff changeset
4046 wmsg.dwModifiers = w32_get_modifiers ();
c0871d40073e (msh_mousewheel): New variable.
Geoff Voelker <voelker@cs.washington.edu>
parents: 21735
diff changeset
4047 my_post_msg (&wmsg, hwnd, msg, wParam, lParam);
69426
46a8c3e0161d (signal_user_input): New function.
Jason Rumney <jasonr@gnu.org>
parents: 69406
diff changeset
4048 signal_user_input ();
21874
c0871d40073e (msh_mousewheel): New variable.
Geoff Voelker <voelker@cs.washington.edu>
parents: 21735
diff changeset
4049 return 0;
c0871d40073e (msh_mousewheel): New variable.
Geoff Voelker <voelker@cs.washington.edu>
parents: 21735
diff changeset
4050 }
47942
080b4586492b Fix typo in comment.
Juanma Barranquero <lekktu@gmail.com>
parents: 47731
diff changeset
4051
13434
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
4052 dflt:
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
4053 return DefWindowProc (hwnd, msg, wParam, lParam);
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
4054 }
47942
080b4586492b Fix typo in comment.
Juanma Barranquero <lekktu@gmail.com>
parents: 47731
diff changeset
4055
19707
0181cc080316 Include limits.h and errno.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18508
diff changeset
4056
0181cc080316 Include limits.h and errno.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18508
diff changeset
4057 /* The most common default return code for handled messages is 0. */
0181cc080316 Include limits.h and errno.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18508
diff changeset
4058 return 0;
13434
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
4059 }
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
4060
64662
605f42af1c34 (my_set_window_pos, my_show_window): Don't declare.
Juanma Barranquero <lekktu@gmail.com>
parents: 64487
diff changeset
4061 static void
13434
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
4062 my_create_window (f)
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
4063 struct frame * f;
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
4064 {
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
4065 MSG msg;
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
4066
19707
0181cc080316 Include limits.h and errno.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18508
diff changeset
4067 if (!PostThreadMessage (dwWindowsThreadId, WM_EMACS_CREATEWINDOW, (WPARAM)f, 0))
0181cc080316 Include limits.h and errno.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18508
diff changeset
4068 abort ();
13434
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
4069 GetMessage (&msg, NULL, WM_EMACS_DONE, WM_EMACS_DONE);
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
4070 }
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
4071
41380
aff1b15f295b (x_window_to_frame): Remove irrelevant TODO comment.
Jason Rumney <jasonr@gnu.org>
parents: 41322
diff changeset
4072
aff1b15f295b (x_window_to_frame): Remove irrelevant TODO comment.
Jason Rumney <jasonr@gnu.org>
parents: 41322
diff changeset
4073 /* Create a tooltip window. Unlike my_create_window, we do not do this
aff1b15f295b (x_window_to_frame): Remove irrelevant TODO comment.
Jason Rumney <jasonr@gnu.org>
parents: 41322
diff changeset
4074 indirectly via the Window thread, as we do not need to process Window
aff1b15f295b (x_window_to_frame): Remove irrelevant TODO comment.
Jason Rumney <jasonr@gnu.org>
parents: 41322
diff changeset
4075 messages for the tooltip. Creating tooltips indirectly also creates
aff1b15f295b (x_window_to_frame): Remove irrelevant TODO comment.
Jason Rumney <jasonr@gnu.org>
parents: 41322
diff changeset
4076 deadlocks when tooltips are created for menu items. */
64662
605f42af1c34 (my_set_window_pos, my_show_window): Don't declare.
Juanma Barranquero <lekktu@gmail.com>
parents: 64487
diff changeset
4077 static void
41380
aff1b15f295b (x_window_to_frame): Remove irrelevant TODO comment.
Jason Rumney <jasonr@gnu.org>
parents: 41322
diff changeset
4078 my_create_tip_window (f)
aff1b15f295b (x_window_to_frame): Remove irrelevant TODO comment.
Jason Rumney <jasonr@gnu.org>
parents: 41322
diff changeset
4079 struct frame *f;
aff1b15f295b (x_window_to_frame): Remove irrelevant TODO comment.
Jason Rumney <jasonr@gnu.org>
parents: 41322
diff changeset
4080 {
41448
96beda35d0fa (w32_wnd_proc) <WM_MENUSELECT>: Revert last change.
Jason Rumney <jasonr@gnu.org>
parents: 41380
diff changeset
4081 RECT rect;
96beda35d0fa (w32_wnd_proc) <WM_MENUSELECT>: Revert last change.
Jason Rumney <jasonr@gnu.org>
parents: 41380
diff changeset
4082
96beda35d0fa (w32_wnd_proc) <WM_MENUSELECT>: Revert last change.
Jason Rumney <jasonr@gnu.org>
parents: 41380
diff changeset
4083 rect.left = rect.top = 0;
51211
28ea05de2dc5 Make (many) trivial substitutions for renamed and
Kim F. Storm <storm@cua.dk>
parents: 50377
diff changeset
4084 rect.right = FRAME_PIXEL_WIDTH (f);
28ea05de2dc5 Make (many) trivial substitutions for renamed and
Kim F. Storm <storm@cua.dk>
parents: 50377
diff changeset
4085 rect.bottom = FRAME_PIXEL_HEIGHT (f);
41448
96beda35d0fa (w32_wnd_proc) <WM_MENUSELECT>: Revert last change.
Jason Rumney <jasonr@gnu.org>
parents: 41380
diff changeset
4086
96beda35d0fa (w32_wnd_proc) <WM_MENUSELECT>: Revert last change.
Jason Rumney <jasonr@gnu.org>
parents: 41380
diff changeset
4087 AdjustWindowRect (&rect, f->output_data.w32->dwStyle,
96beda35d0fa (w32_wnd_proc) <WM_MENUSELECT>: Revert last change.
Jason Rumney <jasonr@gnu.org>
parents: 41380
diff changeset
4088 FRAME_EXTERNAL_MENU_BAR (f));
96beda35d0fa (w32_wnd_proc) <WM_MENUSELECT>: Revert last change.
Jason Rumney <jasonr@gnu.org>
parents: 41380
diff changeset
4089
96beda35d0fa (w32_wnd_proc) <WM_MENUSELECT>: Revert last change.
Jason Rumney <jasonr@gnu.org>
parents: 41380
diff changeset
4090 tip_window = FRAME_W32_WINDOW (f)
41380
aff1b15f295b (x_window_to_frame): Remove irrelevant TODO comment.
Jason Rumney <jasonr@gnu.org>
parents: 41322
diff changeset
4091 = CreateWindow (EMACS_CLASS,
aff1b15f295b (x_window_to_frame): Remove irrelevant TODO comment.
Jason Rumney <jasonr@gnu.org>
parents: 41322
diff changeset
4092 f->namebuf,
aff1b15f295b (x_window_to_frame): Remove irrelevant TODO comment.
Jason Rumney <jasonr@gnu.org>
parents: 41322
diff changeset
4093 f->output_data.w32->dwStyle,
51211
28ea05de2dc5 Make (many) trivial substitutions for renamed and
Kim F. Storm <storm@cua.dk>
parents: 50377
diff changeset
4094 f->left_pos,
28ea05de2dc5 Make (many) trivial substitutions for renamed and
Kim F. Storm <storm@cua.dk>
parents: 50377
diff changeset
4095 f->top_pos,
41448
96beda35d0fa (w32_wnd_proc) <WM_MENUSELECT>: Revert last change.
Jason Rumney <jasonr@gnu.org>
parents: 41380
diff changeset
4096 rect.right - rect.left,
96beda35d0fa (w32_wnd_proc) <WM_MENUSELECT>: Revert last change.
Jason Rumney <jasonr@gnu.org>
parents: 41380
diff changeset
4097 rect.bottom - rect.top,
41380
aff1b15f295b (x_window_to_frame): Remove irrelevant TODO comment.
Jason Rumney <jasonr@gnu.org>
parents: 41322
diff changeset
4098 FRAME_W32_WINDOW (SELECTED_FRAME ()), /* owner */
aff1b15f295b (x_window_to_frame): Remove irrelevant TODO comment.
Jason Rumney <jasonr@gnu.org>
parents: 41322
diff changeset
4099 NULL,
aff1b15f295b (x_window_to_frame): Remove irrelevant TODO comment.
Jason Rumney <jasonr@gnu.org>
parents: 41322
diff changeset
4100 hinst,
aff1b15f295b (x_window_to_frame): Remove irrelevant TODO comment.
Jason Rumney <jasonr@gnu.org>
parents: 41322
diff changeset
4101 NULL);
aff1b15f295b (x_window_to_frame): Remove irrelevant TODO comment.
Jason Rumney <jasonr@gnu.org>
parents: 41322
diff changeset
4102
41448
96beda35d0fa (w32_wnd_proc) <WM_MENUSELECT>: Revert last change.
Jason Rumney <jasonr@gnu.org>
parents: 41380
diff changeset
4103 if (tip_window)
96beda35d0fa (w32_wnd_proc) <WM_MENUSELECT>: Revert last change.
Jason Rumney <jasonr@gnu.org>
parents: 41380
diff changeset
4104 {
51211
28ea05de2dc5 Make (many) trivial substitutions for renamed and
Kim F. Storm <storm@cua.dk>
parents: 50377
diff changeset
4105 SetWindowLong (tip_window, WND_FONTWIDTH_INDEX, FRAME_COLUMN_WIDTH (f));
28ea05de2dc5 Make (many) trivial substitutions for renamed and
Kim F. Storm <storm@cua.dk>
parents: 50377
diff changeset
4106 SetWindowLong (tip_window, WND_LINEHEIGHT_INDEX, FRAME_LINE_HEIGHT (f));
28ea05de2dc5 Make (many) trivial substitutions for renamed and
Kim F. Storm <storm@cua.dk>
parents: 50377
diff changeset
4107 SetWindowLong (tip_window, WND_BORDER_INDEX, FRAME_INTERNAL_BORDER_WIDTH (f));
41448
96beda35d0fa (w32_wnd_proc) <WM_MENUSELECT>: Revert last change.
Jason Rumney <jasonr@gnu.org>
parents: 41380
diff changeset
4108 SetWindowLong (tip_window, WND_BACKGROUND_INDEX, FRAME_BACKGROUND_PIXEL (f));
96beda35d0fa (w32_wnd_proc) <WM_MENUSELECT>: Revert last change.
Jason Rumney <jasonr@gnu.org>
parents: 41380
diff changeset
4109
96beda35d0fa (w32_wnd_proc) <WM_MENUSELECT>: Revert last change.
Jason Rumney <jasonr@gnu.org>
parents: 41380
diff changeset
4110 /* Tip frames have no scrollbars. */
96beda35d0fa (w32_wnd_proc) <WM_MENUSELECT>: Revert last change.
Jason Rumney <jasonr@gnu.org>
parents: 41380
diff changeset
4111 SetWindowLong (tip_window, WND_SCROLLBAR_INDEX, 0);
41380
aff1b15f295b (x_window_to_frame): Remove irrelevant TODO comment.
Jason Rumney <jasonr@gnu.org>
parents: 41322
diff changeset
4112
aff1b15f295b (x_window_to_frame): Remove irrelevant TODO comment.
Jason Rumney <jasonr@gnu.org>
parents: 41322
diff changeset
4113 /* Do this to discard the default setting specified by our parent. */
41448
96beda35d0fa (w32_wnd_proc) <WM_MENUSELECT>: Revert last change.
Jason Rumney <jasonr@gnu.org>
parents: 41380
diff changeset
4114 ShowWindow (tip_window, SW_HIDE);
41380
aff1b15f295b (x_window_to_frame): Remove irrelevant TODO comment.
Jason Rumney <jasonr@gnu.org>
parents: 41322
diff changeset
4115 }
aff1b15f295b (x_window_to_frame): Remove irrelevant TODO comment.
Jason Rumney <jasonr@gnu.org>
parents: 41322
diff changeset
4116 }
aff1b15f295b (x_window_to_frame): Remove irrelevant TODO comment.
Jason Rumney <jasonr@gnu.org>
parents: 41322
diff changeset
4117
aff1b15f295b (x_window_to_frame): Remove irrelevant TODO comment.
Jason Rumney <jasonr@gnu.org>
parents: 41322
diff changeset
4118
16588
481b7874a1e9 Change identifiers of the form win32* to w32*.
Geoff Voelker <voelker@cs.washington.edu>
parents: 16259
diff changeset
4119 /* Create and set up the w32 window for frame F. */
13434
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
4120
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
4121 static void
16588
481b7874a1e9 Change identifiers of the form win32* to w32*.
Geoff Voelker <voelker@cs.washington.edu>
parents: 16259
diff changeset
4122 w32_window (f, window_prompting, minibuffer_only)
13434
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
4123 struct frame *f;
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
4124 long window_prompting;
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
4125 int minibuffer_only;
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
4126 {
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
4127 BLOCK_INPUT;
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
4128
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
4129 /* Use the resource name as the top-level window name
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
4130 for looking up resources. Make a non-Lisp copy
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
4131 for the window manager, so GC relocation won't bother it.
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
4132
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
4133 Elsewhere we specify the window name for the window manager. */
47942
080b4586492b Fix typo in comment.
Juanma Barranquero <lekktu@gmail.com>
parents: 47731
diff changeset
4134
13434
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
4135 {
46370
40db0673e6f0 Most uses of XSTRING combined with STRING_BYTES or indirection changed to
Ken Raeburn <raeburn@raeburn.org>
parents: 46293
diff changeset
4136 char *str = (char *) SDATA (Vx_resource_name);
13434
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
4137 f->namebuf = (char *) xmalloc (strlen (str) + 1);
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
4138 strcpy (f->namebuf, str);
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
4139 }
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
4140
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
4141 my_create_window (f);
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
4142
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
4143 validate_x_resource_name ();
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
4144
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
4145 /* x_set_name normally ignores requests to set the name if the
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
4146 requested name is the same as the current name. This is the one
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
4147 place where that assumption isn't correct; f->name is set, but
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
4148 the server hasn't been told. */
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
4149 {
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
4150 Lisp_Object name;
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
4151 int explicit = f->explicit_name;
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
4152
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
4153 f->explicit_name = 0;
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
4154 name = f->name;
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
4155 f->name = Qnil;
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
4156 x_set_name (f, name, explicit);
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
4157 }
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
4158
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
4159 UNBLOCK_INPUT;
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
4160
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
4161 if (!minibuffer_only && FRAME_EXTERNAL_MENU_BAR (f))
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
4162 initialize_frame_menubar (f);
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
4163
16588
481b7874a1e9 Change identifiers of the form win32* to w32*.
Geoff Voelker <voelker@cs.washington.edu>
parents: 16259
diff changeset
4164 if (FRAME_W32_WINDOW (f) == 0)
13434
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
4165 error ("Unable to create window");
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
4166 }
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
4167
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
4168 /* Handle the icon stuff for this window. Perhaps later we might
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
4169 want an x_set_icon_position which can be called interactively as
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
4170 well. */
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
4171
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
4172 static void
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
4173 x_icon (f, parms)
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
4174 struct frame *f;
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
4175 Lisp_Object parms;
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
4176 {
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
4177 Lisp_Object icon_x, icon_y;
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
4178
16884
36babc489b0c Change all uses of win95, winnt, and win32
Geoff Voelker <voelker@cs.washington.edu>
parents: 16602
diff changeset
4179 /* Set the position of the icon. Note that Windows 95 groups all
13434
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
4180 icons in the tray. */
27397
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
4181 icon_x = w32_get_arg (parms, Qicon_left, 0, 0, RES_TYPE_NUMBER);
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
4182 icon_y = w32_get_arg (parms, Qicon_top, 0, 0, RES_TYPE_NUMBER);
13434
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
4183 if (!EQ (icon_x, Qunbound) && !EQ (icon_y, Qunbound))
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
4184 {
40656
cdfd4d09b79a Update usage of CHECK_ macros (remove unused second argument).
Pavel Janík <Pavel@Janik.cz>
parents: 40528
diff changeset
4185 CHECK_NUMBER (icon_x);
cdfd4d09b79a Update usage of CHECK_ macros (remove unused second argument).
Pavel Janík <Pavel@Janik.cz>
parents: 40528
diff changeset
4186 CHECK_NUMBER (icon_y);
13434
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
4187 }
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
4188 else if (!EQ (icon_x, Qunbound) || !EQ (icon_y, Qunbound))
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
4189 error ("Both left and top icon corners of icon must be specified");
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
4190
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
4191 BLOCK_INPUT;
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
4192
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
4193 if (! EQ (icon_x, Qunbound))
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
4194 x_wm_set_icon_position (f, XINT (icon_x), XINT (icon_y));
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
4195
19707
0181cc080316 Include limits.h and errno.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18508
diff changeset
4196 #if 0 /* TODO */
0181cc080316 Include limits.h and errno.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18508
diff changeset
4197 /* Start up iconic or window? */
0181cc080316 Include limits.h and errno.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18508
diff changeset
4198 x_wm_set_window_state
27397
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
4199 (f, (EQ (w32_get_arg (parms, Qvisibility, 0, 0, RES_TYPE_SYMBOL), Qicon)
19707
0181cc080316 Include limits.h and errno.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18508
diff changeset
4200 ? IconicState
0181cc080316 Include limits.h and errno.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18508
diff changeset
4201 : NormalState));
0181cc080316 Include limits.h and errno.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18508
diff changeset
4202
46370
40db0673e6f0 Most uses of XSTRING combined with STRING_BYTES or indirection changed to
Ken Raeburn <raeburn@raeburn.org>
parents: 46293
diff changeset
4203 x_text_icon (f, (char *) SDATA ((!NILP (f->icon_name)
19707
0181cc080316 Include limits.h and errno.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18508
diff changeset
4204 ? f->icon_name
46370
40db0673e6f0 Most uses of XSTRING combined with STRING_BYTES or indirection changed to
Ken Raeburn <raeburn@raeburn.org>
parents: 46293
diff changeset
4205 : f->name)));
19707
0181cc080316 Include limits.h and errno.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18508
diff changeset
4206 #endif
0181cc080316 Include limits.h and errno.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18508
diff changeset
4207
13434
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
4208 UNBLOCK_INPUT;
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
4209 }
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
4210
27397
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
4211
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
4212 static void
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
4213 x_make_gc (f)
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
4214 struct frame *f;
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
4215 {
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
4216 XGCValues gc_values;
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
4217
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
4218 BLOCK_INPUT;
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
4219
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
4220 /* Create the GC's of this frame.
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
4221 Note that many default values are used. */
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
4222
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
4223 /* Normal video */
51211
28ea05de2dc5 Make (many) trivial substitutions for renamed and
Kim F. Storm <storm@cua.dk>
parents: 50377
diff changeset
4224 gc_values.font = FRAME_FONT (f);
27397
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
4225
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
4226 /* Cursor has cursor-color background, background-color foreground. */
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
4227 gc_values.foreground = FRAME_BACKGROUND_PIXEL (f);
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
4228 gc_values.background = f->output_data.w32->cursor_pixel;
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
4229 f->output_data.w32->cursor_gc
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
4230 = XCreateGC (NULL, FRAME_W32_WINDOW (f),
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
4231 (GCFont | GCForeground | GCBackground),
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
4232 &gc_values);
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
4233
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
4234 /* Reliefs. */
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
4235 f->output_data.w32->white_relief.gc = 0;
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
4236 f->output_data.w32->black_relief.gc = 0;
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
4237
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
4238 UNBLOCK_INPUT;
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
4239 }
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
4240
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
4241
34546
51be06b616bf (Fx_hide_tip): Avoid unnecessary work when there's
Andrew Innes <andrewi@gnu.org>
parents: 34314
diff changeset
4242 /* Handler for signals raised during x_create_frame and
51be06b616bf (Fx_hide_tip): Avoid unnecessary work when there's
Andrew Innes <andrewi@gnu.org>
parents: 34314
diff changeset
4243 x_create_top_frame. FRAME is the frame which is partially
51be06b616bf (Fx_hide_tip): Avoid unnecessary work when there's
Andrew Innes <andrewi@gnu.org>
parents: 34314
diff changeset
4244 constructed. */
51be06b616bf (Fx_hide_tip): Avoid unnecessary work when there's
Andrew Innes <andrewi@gnu.org>
parents: 34314
diff changeset
4245
51be06b616bf (Fx_hide_tip): Avoid unnecessary work when there's
Andrew Innes <andrewi@gnu.org>
parents: 34314
diff changeset
4246 static Lisp_Object
51be06b616bf (Fx_hide_tip): Avoid unnecessary work when there's
Andrew Innes <andrewi@gnu.org>
parents: 34314
diff changeset
4247 unwind_create_frame (frame)
51be06b616bf (Fx_hide_tip): Avoid unnecessary work when there's
Andrew Innes <andrewi@gnu.org>
parents: 34314
diff changeset
4248 Lisp_Object frame;
51be06b616bf (Fx_hide_tip): Avoid unnecessary work when there's
Andrew Innes <andrewi@gnu.org>
parents: 34314
diff changeset
4249 {
51be06b616bf (Fx_hide_tip): Avoid unnecessary work when there's
Andrew Innes <andrewi@gnu.org>
parents: 34314
diff changeset
4250 struct frame *f = XFRAME (frame);
51be06b616bf (Fx_hide_tip): Avoid unnecessary work when there's
Andrew Innes <andrewi@gnu.org>
parents: 34314
diff changeset
4251
51be06b616bf (Fx_hide_tip): Avoid unnecessary work when there's
Andrew Innes <andrewi@gnu.org>
parents: 34314
diff changeset
4252 /* If frame is ``official'', nothing to do. */
51be06b616bf (Fx_hide_tip): Avoid unnecessary work when there's
Andrew Innes <andrewi@gnu.org>
parents: 34314
diff changeset
4253 if (!CONSP (Vframe_list) || !EQ (XCAR (Vframe_list), frame))
51be06b616bf (Fx_hide_tip): Avoid unnecessary work when there's
Andrew Innes <andrewi@gnu.org>
parents: 34314
diff changeset
4254 {
51be06b616bf (Fx_hide_tip): Avoid unnecessary work when there's
Andrew Innes <andrewi@gnu.org>
parents: 34314
diff changeset
4255 #ifdef GLYPH_DEBUG
51be06b616bf (Fx_hide_tip): Avoid unnecessary work when there's
Andrew Innes <andrewi@gnu.org>
parents: 34314
diff changeset
4256 struct w32_display_info *dpyinfo = FRAME_W32_DISPLAY_INFO (f);
51be06b616bf (Fx_hide_tip): Avoid unnecessary work when there's
Andrew Innes <andrewi@gnu.org>
parents: 34314
diff changeset
4257 #endif
47942
080b4586492b Fix typo in comment.
Juanma Barranquero <lekktu@gmail.com>
parents: 47731
diff changeset
4258
34546
51be06b616bf (Fx_hide_tip): Avoid unnecessary work when there's
Andrew Innes <andrewi@gnu.org>
parents: 34314
diff changeset
4259 x_free_frame_resources (f);
51be06b616bf (Fx_hide_tip): Avoid unnecessary work when there's
Andrew Innes <andrewi@gnu.org>
parents: 34314
diff changeset
4260
51be06b616bf (Fx_hide_tip): Avoid unnecessary work when there's
Andrew Innes <andrewi@gnu.org>
parents: 34314
diff changeset
4261 /* Check that reference counts are indeed correct. */
51be06b616bf (Fx_hide_tip): Avoid unnecessary work when there's
Andrew Innes <andrewi@gnu.org>
parents: 34314
diff changeset
4262 xassert (dpyinfo->reference_count == dpyinfo_refcount);
51be06b616bf (Fx_hide_tip): Avoid unnecessary work when there's
Andrew Innes <andrewi@gnu.org>
parents: 34314
diff changeset
4263 xassert (dpyinfo->image_cache->refcount == image_cache_refcount);
34638
abb4510a89f6 (unwind_create_frame): Return t if frame was deleted.
Gerd Moellmann <gerd@gnu.org>
parents: 34546
diff changeset
4264
abb4510a89f6 (unwind_create_frame): Return t if frame was deleted.
Gerd Moellmann <gerd@gnu.org>
parents: 34546
diff changeset
4265 return Qt;
34546
51be06b616bf (Fx_hide_tip): Avoid unnecessary work when there's
Andrew Innes <andrewi@gnu.org>
parents: 34314
diff changeset
4266 }
47942
080b4586492b Fix typo in comment.
Juanma Barranquero <lekktu@gmail.com>
parents: 47731
diff changeset
4267
34546
51be06b616bf (Fx_hide_tip): Avoid unnecessary work when there's
Andrew Innes <andrewi@gnu.org>
parents: 34314
diff changeset
4268 return Qnil;
51be06b616bf (Fx_hide_tip): Avoid unnecessary work when there's
Andrew Innes <andrewi@gnu.org>
parents: 34314
diff changeset
4269 }
51be06b616bf (Fx_hide_tip): Avoid unnecessary work when there's
Andrew Innes <andrewi@gnu.org>
parents: 34314
diff changeset
4270
90865
6d2559699bd0 [USE_FONT_BACKEND]: Port font backend changes from xfns.c.
Jason Rumney <jasonr@gnu.org>
parents: 90796
diff changeset
4271 static void
6d2559699bd0 [USE_FONT_BACKEND]: Port font backend changes from xfns.c.
Jason Rumney <jasonr@gnu.org>
parents: 90796
diff changeset
4272 x_default_font_parameter (f, parms)
6d2559699bd0 [USE_FONT_BACKEND]: Port font backend changes from xfns.c.
Jason Rumney <jasonr@gnu.org>
parents: 90796
diff changeset
4273 struct frame *f;
6d2559699bd0 [USE_FONT_BACKEND]: Port font backend changes from xfns.c.
Jason Rumney <jasonr@gnu.org>
parents: 90796
diff changeset
4274 Lisp_Object parms;
6d2559699bd0 [USE_FONT_BACKEND]: Port font backend changes from xfns.c.
Jason Rumney <jasonr@gnu.org>
parents: 90796
diff changeset
4275 {
6d2559699bd0 [USE_FONT_BACKEND]: Port font backend changes from xfns.c.
Jason Rumney <jasonr@gnu.org>
parents: 90796
diff changeset
4276 struct w32_display_info *dpyinfo = FRAME_W32_DISPLAY_INFO (f);
96084
0623378cdbca * w32fns.c, xfnc.c (x_default_font_parameter): Only set `font-param'
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 96079
diff changeset
4277 Lisp_Object font_param = x_get_arg (dpyinfo, parms, Qfont, NULL, NULL,
0623378cdbca * w32fns.c, xfnc.c (x_default_font_parameter): Only set `font-param'
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 96079
diff changeset
4278 RES_TYPE_STRING);
0623378cdbca * w32fns.c, xfnc.c (x_default_font_parameter): Only set `font-param'
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 96079
diff changeset
4279 Lisp_Object font;
0623378cdbca * w32fns.c, xfnc.c (x_default_font_parameter): Only set `font-param'
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 96079
diff changeset
4280 if (EQ (font_param, Qunbound))
0623378cdbca * w32fns.c, xfnc.c (x_default_font_parameter): Only set `font-param'
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 96079
diff changeset
4281 font_param = Qnil;
0623378cdbca * w32fns.c, xfnc.c (x_default_font_parameter): Only set `font-param'
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 96079
diff changeset
4282 font = !NILP (font_param) ? font_param
0623378cdbca * w32fns.c, xfnc.c (x_default_font_parameter): Only set `font-param'
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 96079
diff changeset
4283 : x_get_arg (dpyinfo, parms, Qfont, "font", "Font", RES_TYPE_STRING);
90865
6d2559699bd0 [USE_FONT_BACKEND]: Port font backend changes from xfns.c.
Jason Rumney <jasonr@gnu.org>
parents: 90796
diff changeset
4284
6d2559699bd0 [USE_FONT_BACKEND]: Port font backend changes from xfns.c.
Jason Rumney <jasonr@gnu.org>
parents: 90796
diff changeset
4285 if (!STRINGP (font))
6d2559699bd0 [USE_FONT_BACKEND]: Port font backend changes from xfns.c.
Jason Rumney <jasonr@gnu.org>
parents: 90796
diff changeset
4286 {
6d2559699bd0 [USE_FONT_BACKEND]: Port font backend changes from xfns.c.
Jason Rumney <jasonr@gnu.org>
parents: 90796
diff changeset
4287 int i;
6d2559699bd0 [USE_FONT_BACKEND]: Port font backend changes from xfns.c.
Jason Rumney <jasonr@gnu.org>
parents: 90796
diff changeset
4288 static char *names[]
90893
c36f1ca93a6e (x_default_font_parameter): Use new style font name.
Jason Rumney <jasonr@gnu.org>
parents: 90878
diff changeset
4289 = { "Courier New-10",
90865
6d2559699bd0 [USE_FONT_BACKEND]: Port font backend changes from xfns.c.
Jason Rumney <jasonr@gnu.org>
parents: 90796
diff changeset
4290 "-*-Courier-normal-r-*-*-13-*-*-*-c-*-iso8859-1",
6d2559699bd0 [USE_FONT_BACKEND]: Port font backend changes from xfns.c.
Jason Rumney <jasonr@gnu.org>
parents: 90796
diff changeset
4291 "-*-Fixedsys-normal-r-*-*-12-*-*-*-c-*-iso8859-1",
6d2559699bd0 [USE_FONT_BACKEND]: Port font backend changes from xfns.c.
Jason Rumney <jasonr@gnu.org>
parents: 90796
diff changeset
4292 "Fixedsys",
6d2559699bd0 [USE_FONT_BACKEND]: Port font backend changes from xfns.c.
Jason Rumney <jasonr@gnu.org>
parents: 90796
diff changeset
4293 NULL };
6d2559699bd0 [USE_FONT_BACKEND]: Port font backend changes from xfns.c.
Jason Rumney <jasonr@gnu.org>
parents: 90796
diff changeset
4294
6d2559699bd0 [USE_FONT_BACKEND]: Port font backend changes from xfns.c.
Jason Rumney <jasonr@gnu.org>
parents: 90796
diff changeset
4295 for (i = 0; names[i]; i++)
6d2559699bd0 [USE_FONT_BACKEND]: Port font backend changes from xfns.c.
Jason Rumney <jasonr@gnu.org>
parents: 90796
diff changeset
4296 {
6d2559699bd0 [USE_FONT_BACKEND]: Port font backend changes from xfns.c.
Jason Rumney <jasonr@gnu.org>
parents: 90796
diff changeset
4297 font = font_open_by_name (f, names[i]);
6d2559699bd0 [USE_FONT_BACKEND]: Port font backend changes from xfns.c.
Jason Rumney <jasonr@gnu.org>
parents: 90796
diff changeset
4298 if (! NILP (font))
6d2559699bd0 [USE_FONT_BACKEND]: Port font backend changes from xfns.c.
Jason Rumney <jasonr@gnu.org>
parents: 90796
diff changeset
4299 break;
6d2559699bd0 [USE_FONT_BACKEND]: Port font backend changes from xfns.c.
Jason Rumney <jasonr@gnu.org>
parents: 90796
diff changeset
4300 }
6d2559699bd0 [USE_FONT_BACKEND]: Port font backend changes from xfns.c.
Jason Rumney <jasonr@gnu.org>
parents: 90796
diff changeset
4301 if (NILP (font))
6d2559699bd0 [USE_FONT_BACKEND]: Port font backend changes from xfns.c.
Jason Rumney <jasonr@gnu.org>
parents: 90796
diff changeset
4302 error ("No suitable font was found");
6d2559699bd0 [USE_FONT_BACKEND]: Port font backend changes from xfns.c.
Jason Rumney <jasonr@gnu.org>
parents: 90796
diff changeset
4303 }
96084
0623378cdbca * w32fns.c, xfnc.c (x_default_font_parameter): Only set `font-param'
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 96079
diff changeset
4304 else if (!NILP (font_param))
96079
efbaf6995245 * w32fns.c, xfns.c (Qfont_param): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 95894
diff changeset
4305 {
efbaf6995245 * w32fns.c, xfns.c (Qfont_param): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 95894
diff changeset
4306 /* Remember the explicit font parameter, so we can re-apply it after
efbaf6995245 * w32fns.c, xfns.c (Qfont_param): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 95894
diff changeset
4307 we've applied the `default' face settings. */
96084
0623378cdbca * w32fns.c, xfnc.c (x_default_font_parameter): Only set `font-param'
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 96079
diff changeset
4308 x_set_frame_parameters (f, Fcons (Fcons (Qfont_param, font_param), Qnil));
0623378cdbca * w32fns.c, xfnc.c (x_default_font_parameter): Only set `font-param'
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 96079
diff changeset
4309 }
90865
6d2559699bd0 [USE_FONT_BACKEND]: Port font backend changes from xfns.c.
Jason Rumney <jasonr@gnu.org>
parents: 90796
diff changeset
4310 x_default_parameter (f, parms, Qfont, font, "font", "Font", RES_TYPE_STRING);
6d2559699bd0 [USE_FONT_BACKEND]: Port font backend changes from xfns.c.
Jason Rumney <jasonr@gnu.org>
parents: 90796
diff changeset
4311 }
34546
51be06b616bf (Fx_hide_tip): Avoid unnecessary work when there's
Andrew Innes <andrewi@gnu.org>
parents: 34314
diff changeset
4312
13434
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
4313 DEFUN ("x-create-frame", Fx_create_frame, Sx_create_frame,
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
4314 1, 1, 0,
40964
fb970d0c56eb Change doc-string comments to `new style'. [w/`doc:' keyword]. Doc fixes.
Jason Rumney <jasonr@gnu.org>
parents: 40873
diff changeset
4315 doc: /* Make a new window, which is called a \"frame\" in Emacs terms.
79393
09f6c4242048 (Fx_create_frame, Fx_display_pixel_width, Fx_display_pixel_height,
Juanma Barranquero <lekktu@gmail.com>
parents: 79387
diff changeset
4316 Return an Emacs frame object.
55892
c12c7852c322 (Fx_display_grayscale_p, Fw32_send_sys_command, Vw32_color_map):
Juanma Barranquero <lekktu@gmail.com>
parents: 55673
diff changeset
4317 PARAMETERS is an alist of frame parameters.
40964
fb970d0c56eb Change doc-string comments to `new style'. [w/`doc:' keyword]. Doc fixes.
Jason Rumney <jasonr@gnu.org>
parents: 40873
diff changeset
4318 If the parameters specify that the frame should not have a minibuffer,
fb970d0c56eb Change doc-string comments to `new style'. [w/`doc:' keyword]. Doc fixes.
Jason Rumney <jasonr@gnu.org>
parents: 40873
diff changeset
4319 and do not specify a specific minibuffer window to use,
fb970d0c56eb Change doc-string comments to `new style'. [w/`doc:' keyword]. Doc fixes.
Jason Rumney <jasonr@gnu.org>
parents: 40873
diff changeset
4320 then `default-minibuffer-frame' must be a frame whose minibuffer can
fb970d0c56eb Change doc-string comments to `new style'. [w/`doc:' keyword]. Doc fixes.
Jason Rumney <jasonr@gnu.org>
parents: 40873
diff changeset
4321 be shared by the new frame.
fb970d0c56eb Change doc-string comments to `new style'. [w/`doc:' keyword]. Doc fixes.
Jason Rumney <jasonr@gnu.org>
parents: 40873
diff changeset
4322
fb970d0c56eb Change doc-string comments to `new style'. [w/`doc:' keyword]. Doc fixes.
Jason Rumney <jasonr@gnu.org>
parents: 40873
diff changeset
4323 This function is an internal primitive--use `make-frame' instead. */)
55892
c12c7852c322 (Fx_display_grayscale_p, Fw32_send_sys_command, Vw32_color_map):
Juanma Barranquero <lekktu@gmail.com>
parents: 55673
diff changeset
4324 (parameters)
c12c7852c322 (Fx_display_grayscale_p, Fw32_send_sys_command, Vw32_color_map):
Juanma Barranquero <lekktu@gmail.com>
parents: 55673
diff changeset
4325 Lisp_Object parameters;
13434
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
4326 {
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
4327 struct frame *f;
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
4328 Lisp_Object frame, tem;
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
4329 Lisp_Object name;
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
4330 int minibuffer_only = 0;
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
4331 long window_prompting = 0;
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
4332 int width, height;
46285
3f111801efb4 Rename BINDING_STACK_SIZE to SPECPDL_INDEX.
Juanma Barranquero <lekktu@gmail.com>
parents: 46272
diff changeset
4333 int count = SPECPDL_INDEX ();
19707
0181cc080316 Include limits.h and errno.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18508
diff changeset
4334 struct gcpro gcpro1, gcpro2, gcpro3, gcpro4;
13434
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
4335 Lisp_Object display;
27397
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
4336 struct w32_display_info *dpyinfo = NULL;
13434
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
4337 Lisp_Object parent;
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
4338 struct kboard *kb;
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
4339
23506
246a14f0622f (Vx_pixel_size_width): New global variable.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23407
diff changeset
4340 check_w32 ();
246a14f0622f (Vx_pixel_size_width): New global variable.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23407
diff changeset
4341
87478
585596662817 Make copy of frame parameters because the original parameters
Martin Rudalics <rudalics@gmx.at>
parents: 87453
diff changeset
4342 /* Make copy of frame parameters because the original is in pure
585596662817 Make copy of frame parameters because the original parameters
Martin Rudalics <rudalics@gmx.at>
parents: 87453
diff changeset
4343 storage now. */
585596662817 Make copy of frame parameters because the original parameters
Martin Rudalics <rudalics@gmx.at>
parents: 87453
diff changeset
4344 parameters = Fcopy_alist (parameters);
585596662817 Make copy of frame parameters because the original parameters
Martin Rudalics <rudalics@gmx.at>
parents: 87453
diff changeset
4345
13434
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
4346 /* Use this general default value to start with
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
4347 until we know if this frame has a specified name. */
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
4348 Vx_resource_name = Vinvocation_name;
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
4349
55892
c12c7852c322 (Fx_display_grayscale_p, Fw32_send_sys_command, Vw32_color_map):
Juanma Barranquero <lekktu@gmail.com>
parents: 55673
diff changeset
4350 display = w32_get_arg (parameters, Qdisplay, 0, 0, RES_TYPE_STRING);
13434
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
4351 if (EQ (display, Qunbound))
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
4352 display = Qnil;
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
4353 dpyinfo = check_x_display_info (display);
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
4354 #ifdef MULTI_KBOARD
83619
5da6a46ddbd6 * s/darwin.h (SYSTEM_PURESIZE_EXTRA): Define here.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 83618
diff changeset
4355 kb = dpyinfo->terminal->kboard;
13434
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
4356 #else
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
4357 kb = &the_only_kboard;
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
4358 #endif
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
4359
55892
c12c7852c322 (Fx_display_grayscale_p, Fw32_send_sys_command, Vw32_color_map):
Juanma Barranquero <lekktu@gmail.com>
parents: 55673
diff changeset
4360 name = w32_get_arg (parameters, Qname, "name", "Name", RES_TYPE_STRING);
13434
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
4361 if (!STRINGP (name)
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
4362 && ! EQ (name, Qunbound)
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
4363 && ! NILP (name))
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
4364 error ("Invalid frame name--not a string or nil");
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
4365
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
4366 if (STRINGP (name))
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
4367 Vx_resource_name = name;
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
4368
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
4369 /* See if parent window is specified. */
55892
c12c7852c322 (Fx_display_grayscale_p, Fw32_send_sys_command, Vw32_color_map):
Juanma Barranquero <lekktu@gmail.com>
parents: 55673
diff changeset
4370 parent = w32_get_arg (parameters, Qparent_id, NULL, NULL, RES_TYPE_NUMBER);
13434
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
4371 if (EQ (parent, Qunbound))
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
4372 parent = Qnil;
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
4373 if (! NILP (parent))
40656
cdfd4d09b79a Update usage of CHECK_ macros (remove unused second argument).
Pavel Janík <Pavel@Janik.cz>
parents: 40528
diff changeset
4374 CHECK_NUMBER (parent);
13434
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
4375
19707
0181cc080316 Include limits.h and errno.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18508
diff changeset
4376 /* make_frame_without_minibuffer can run Lisp code and garbage collect. */
0181cc080316 Include limits.h and errno.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18508
diff changeset
4377 /* No need to protect DISPLAY because that's not used after passing
0181cc080316 Include limits.h and errno.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18508
diff changeset
4378 it to make_frame_without_minibuffer. */
0181cc080316 Include limits.h and errno.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18508
diff changeset
4379 frame = Qnil;
55892
c12c7852c322 (Fx_display_grayscale_p, Fw32_send_sys_command, Vw32_color_map):
Juanma Barranquero <lekktu@gmail.com>
parents: 55673
diff changeset
4380 GCPRO4 (parameters, parent, name, frame);
c12c7852c322 (Fx_display_grayscale_p, Fw32_send_sys_command, Vw32_color_map):
Juanma Barranquero <lekktu@gmail.com>
parents: 55673
diff changeset
4381 tem = w32_get_arg (parameters, Qminibuffer, "minibuffer", "Minibuffer",
32669
092d2df2a6c3 (Fx_create_frame): Don't bother calling
Jason Rumney <jasonr@gnu.org>
parents: 31110
diff changeset
4382 RES_TYPE_SYMBOL);
13434
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
4383 if (EQ (tem, Qnone) || NILP (tem))
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
4384 f = make_frame_without_minibuffer (Qnil, kb, display);
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
4385 else if (EQ (tem, Qonly))
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
4386 {
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
4387 f = make_minibuffer_frame ();
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
4388 minibuffer_only = 1;
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
4389 }
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
4390 else if (WINDOWP (tem))
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
4391 f = make_frame_without_minibuffer (tem, kb, display);
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
4392 else
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
4393 f = make_frame (1);
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
4394
19707
0181cc080316 Include limits.h and errno.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18508
diff changeset
4395 XSETFRAME (frame, f);
0181cc080316 Include limits.h and errno.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18508
diff changeset
4396
13434
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
4397 /* Note that Windows does support scroll bars. */
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
4398 FRAME_CAN_HAVE_SCROLL_BARS (f) = 1;
50362
6d942c1d5f2d * w32fns.c (Qauto_raise, Qauto_lower, ...): Remove vars for frame
Kim F. Storm <storm@cua.dk>
parents: 50229
diff changeset
4399
15147
38c0ce06203f (quit_char, Vwin32_enable_italics, Vwin32_enable_palette):
Geoff Voelker <voelker@cs.washington.edu>
parents: 15034
diff changeset
4400 /* By default, make scrollbars the system standard width. */
51211
28ea05de2dc5 Make (many) trivial substitutions for renamed and
Kim F. Storm <storm@cua.dk>
parents: 50377
diff changeset
4401 FRAME_CONFIG_SCROLL_BAR_WIDTH (f) = GetSystemMetrics (SM_CXVSCROLL);
13434
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
4402
83571
ca1c27e2707e (x_set_tool_bar_lines): Don't use updating_frame.
Jason Rumney <jasonr@gnu.org>
parents: 76700
diff changeset
4403 f->terminal = dpyinfo->terminal;
ca1c27e2707e (x_set_tool_bar_lines): Don't use updating_frame.
Jason Rumney <jasonr@gnu.org>
parents: 76700
diff changeset
4404 f->terminal->reference_count++;
ca1c27e2707e (x_set_tool_bar_lines): Don't use updating_frame.
Jason Rumney <jasonr@gnu.org>
parents: 76700
diff changeset
4405
16588
481b7874a1e9 Change identifiers of the form win32* to w32*.
Geoff Voelker <voelker@cs.washington.edu>
parents: 16259
diff changeset
4406 f->output_method = output_w32;
27397
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
4407 f->output_data.w32 =
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
4408 (struct w32_output *) xmalloc (sizeof (struct w32_output));
16588
481b7874a1e9 Change identifiers of the form win32* to w32*.
Geoff Voelker <voelker@cs.washington.edu>
parents: 16259
diff changeset
4409 bzero (f->output_data.w32, sizeof (struct w32_output));
23506
246a14f0622f (Vx_pixel_size_width): New global variable.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23407
diff changeset
4410 FRAME_FONTSET (f) = -1;
34546
51be06b616bf (Fx_hide_tip): Avoid unnecessary work when there's
Andrew Innes <andrewi@gnu.org>
parents: 34314
diff changeset
4411 record_unwind_protect (unwind_create_frame, frame);
23506
246a14f0622f (Vx_pixel_size_width): New global variable.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23407
diff changeset
4412
19707
0181cc080316 Include limits.h and errno.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18508
diff changeset
4413 f->icon_name
55892
c12c7852c322 (Fx_display_grayscale_p, Fw32_send_sys_command, Vw32_color_map):
Juanma Barranquero <lekktu@gmail.com>
parents: 55673
diff changeset
4414 = w32_get_arg (parameters, Qicon_name, "iconName", "Title", RES_TYPE_STRING);
19707
0181cc080316 Include limits.h and errno.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18508
diff changeset
4415 if (! STRINGP (f->icon_name))
0181cc080316 Include limits.h and errno.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18508
diff changeset
4416 f->icon_name = Qnil;
0181cc080316 Include limits.h and errno.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18508
diff changeset
4417
16588
481b7874a1e9 Change identifiers of the form win32* to w32*.
Geoff Voelker <voelker@cs.washington.edu>
parents: 16259
diff changeset
4418 /* FRAME_W32_DISPLAY_INFO (f) = dpyinfo; */
13434
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
4419 #ifdef MULTI_KBOARD
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
4420 FRAME_KBOARD (f) = kb;
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
4421 #endif
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
4422
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
4423 /* Specify the parent under which to make this window. */
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
4424
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
4425 if (!NILP (parent))
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
4426 {
32669
092d2df2a6c3 (Fx_create_frame): Don't bother calling
Jason Rumney <jasonr@gnu.org>
parents: 31110
diff changeset
4427 f->output_data.w32->parent_desc = (Window) XFASTINT (parent);
16588
481b7874a1e9 Change identifiers of the form win32* to w32*.
Geoff Voelker <voelker@cs.washington.edu>
parents: 16259
diff changeset
4428 f->output_data.w32->explicit_parent = 1;
13434
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
4429 }
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
4430 else
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
4431 {
16588
481b7874a1e9 Change identifiers of the form win32* to w32*.
Geoff Voelker <voelker@cs.washington.edu>
parents: 16259
diff changeset
4432 f->output_data.w32->parent_desc = FRAME_W32_DISPLAY_INFO (f)->root_window;
481b7874a1e9 Change identifiers of the form win32* to w32*.
Geoff Voelker <voelker@cs.washington.edu>
parents: 16259
diff changeset
4433 f->output_data.w32->explicit_parent = 0;
13434
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
4434 }
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
4435
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
4436 /* Set the name; the functions to which we pass f expect the name to
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
4437 be set. */
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
4438 if (EQ (name, Qunbound) || NILP (name))
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
4439 {
16588
481b7874a1e9 Change identifiers of the form win32* to w32*.
Geoff Voelker <voelker@cs.washington.edu>
parents: 16259
diff changeset
4440 f->name = build_string (dpyinfo->w32_id_name);
13434
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
4441 f->explicit_name = 0;
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
4442 }
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
4443 else
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
4444 {
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
4445 f->name = name;
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
4446 f->explicit_name = 1;
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
4447 /* use the frame's title when getting resources for this frame. */
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
4448 specbind (Qx_resource_name, name);
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
4449 }
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
4450
90893
c36f1ca93a6e (x_default_font_parameter): Use new style font name.
Jason Rumney <jasonr@gnu.org>
parents: 90878
diff changeset
4451 f->resx = dpyinfo->resx;
c36f1ca93a6e (x_default_font_parameter): Use new style font name.
Jason Rumney <jasonr@gnu.org>
parents: 90878
diff changeset
4452 f->resy = dpyinfo->resy;
c36f1ca93a6e (x_default_font_parameter): Use new style font name.
Jason Rumney <jasonr@gnu.org>
parents: 90878
diff changeset
4453
94917
e61553aa7a73 Throughout the file, delete all USE_FONT_BACKEND
Kenichi Handa <handa@m17n.org>
parents: 94618
diff changeset
4454 if (uniscribe_available)
e61553aa7a73 Throughout the file, delete all USE_FONT_BACKEND
Kenichi Handa <handa@m17n.org>
parents: 94618
diff changeset
4455 register_font_driver (&uniscribe_font_driver, f);
e61553aa7a73 Throughout the file, delete all USE_FONT_BACKEND
Kenichi Handa <handa@m17n.org>
parents: 94618
diff changeset
4456 register_font_driver (&w32font_driver, f);
e61553aa7a73 Throughout the file, delete all USE_FONT_BACKEND
Kenichi Handa <handa@m17n.org>
parents: 94618
diff changeset
4457
e61553aa7a73 Throughout the file, delete all USE_FONT_BACKEND
Kenichi Handa <handa@m17n.org>
parents: 94618
diff changeset
4458 x_default_parameter (f, parameters, Qfont_backend, Qnil,
e61553aa7a73 Throughout the file, delete all USE_FONT_BACKEND
Kenichi Handa <handa@m17n.org>
parents: 94618
diff changeset
4459 "fontBackend", "FontBackend", RES_TYPE_STRING);
13434
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
4460 /* Extract the window parameters from the supplied values
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
4461 that are needed to determine window geometry. */
94917
e61553aa7a73 Throughout the file, delete all USE_FONT_BACKEND
Kenichi Handa <handa@m17n.org>
parents: 94618
diff changeset
4462 x_default_font_parameter (f, parameters);
55892
c12c7852c322 (Fx_display_grayscale_p, Fw32_send_sys_command, Vw32_color_map):
Juanma Barranquero <lekktu@gmail.com>
parents: 55673
diff changeset
4463 x_default_parameter (f, parameters, Qborder_width, make_number (2),
32669
092d2df2a6c3 (Fx_create_frame): Don't bother calling
Jason Rumney <jasonr@gnu.org>
parents: 31110
diff changeset
4464 "borderWidth", "BorderWidth", RES_TYPE_NUMBER);
13434
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
4465 /* This defaults to 2 in order to match xterm. We recognize either
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
4466 internalBorderWidth or internalBorder (which is what xterm calls
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
4467 it). */
55892
c12c7852c322 (Fx_display_grayscale_p, Fw32_send_sys_command, Vw32_color_map):
Juanma Barranquero <lekktu@gmail.com>
parents: 55673
diff changeset
4468 if (NILP (Fassq (Qinternal_border_width, parameters)))
13434
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
4469 {
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
4470 Lisp_Object value;
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
4471
55892
c12c7852c322 (Fx_display_grayscale_p, Fw32_send_sys_command, Vw32_color_map):
Juanma Barranquero <lekktu@gmail.com>
parents: 55673
diff changeset
4472 value = w32_get_arg (parameters, Qinternal_border_width,
c12c7852c322 (Fx_display_grayscale_p, Fw32_send_sys_command, Vw32_color_map):
Juanma Barranquero <lekktu@gmail.com>
parents: 55673
diff changeset
4473 "internalBorder", "InternalBorder", RES_TYPE_NUMBER);
13434
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
4474 if (! EQ (value, Qunbound))
55892
c12c7852c322 (Fx_display_grayscale_p, Fw32_send_sys_command, Vw32_color_map):
Juanma Barranquero <lekktu@gmail.com>
parents: 55673
diff changeset
4475 parameters = Fcons (Fcons (Qinternal_border_width, value),
c12c7852c322 (Fx_display_grayscale_p, Fw32_send_sys_command, Vw32_color_map):
Juanma Barranquero <lekktu@gmail.com>
parents: 55673
diff changeset
4476 parameters);
13434
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
4477 }
19707
0181cc080316 Include limits.h and errno.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18508
diff changeset
4478 /* Default internalBorderWidth to 0 on Windows to match other programs. */
55892
c12c7852c322 (Fx_display_grayscale_p, Fw32_send_sys_command, Vw32_color_map):
Juanma Barranquero <lekktu@gmail.com>
parents: 55673
diff changeset
4479 x_default_parameter (f, parameters, Qinternal_border_width, make_number (0),
32669
092d2df2a6c3 (Fx_create_frame): Don't bother calling
Jason Rumney <jasonr@gnu.org>
parents: 31110
diff changeset
4480 "internalBorderWidth", "InternalBorder", RES_TYPE_NUMBER);
55892
c12c7852c322 (Fx_display_grayscale_p, Fw32_send_sys_command, Vw32_color_map):
Juanma Barranquero <lekktu@gmail.com>
parents: 55673
diff changeset
4481 x_default_parameter (f, parameters, Qvertical_scroll_bars, Qright,
32669
092d2df2a6c3 (Fx_create_frame): Don't bother calling
Jason Rumney <jasonr@gnu.org>
parents: 31110
diff changeset
4482 "verticalScrollBars", "ScrollBars", RES_TYPE_SYMBOL);
13434
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
4483
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
4484 /* Also do the stuff which must be set before the window exists. */
55892
c12c7852c322 (Fx_display_grayscale_p, Fw32_send_sys_command, Vw32_color_map):
Juanma Barranquero <lekktu@gmail.com>
parents: 55673
diff changeset
4485 x_default_parameter (f, parameters, Qforeground_color, build_string ("black"),
27397
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
4486 "foreground", "Foreground", RES_TYPE_STRING);
55892
c12c7852c322 (Fx_display_grayscale_p, Fw32_send_sys_command, Vw32_color_map):
Juanma Barranquero <lekktu@gmail.com>
parents: 55673
diff changeset
4487 x_default_parameter (f, parameters, Qbackground_color, build_string ("white"),
27397
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
4488 "background", "Background", RES_TYPE_STRING);
55892
c12c7852c322 (Fx_display_grayscale_p, Fw32_send_sys_command, Vw32_color_map):
Juanma Barranquero <lekktu@gmail.com>
parents: 55673
diff changeset
4489 x_default_parameter (f, parameters, Qmouse_color, build_string ("black"),
27397
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
4490 "pointerColor", "Foreground", RES_TYPE_STRING);
55892
c12c7852c322 (Fx_display_grayscale_p, Fw32_send_sys_command, Vw32_color_map):
Juanma Barranquero <lekktu@gmail.com>
parents: 55673
diff changeset
4491 x_default_parameter (f, parameters, Qcursor_color, build_string ("black"),
27397
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
4492 "cursorColor", "Foreground", RES_TYPE_STRING);
55892
c12c7852c322 (Fx_display_grayscale_p, Fw32_send_sys_command, Vw32_color_map):
Juanma Barranquero <lekktu@gmail.com>
parents: 55673
diff changeset
4493 x_default_parameter (f, parameters, Qborder_color, build_string ("black"),
27397
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
4494 "borderColor", "BorderColor", RES_TYPE_STRING);
55892
c12c7852c322 (Fx_display_grayscale_p, Fw32_send_sys_command, Vw32_color_map):
Juanma Barranquero <lekktu@gmail.com>
parents: 55673
diff changeset
4495 x_default_parameter (f, parameters, Qscreen_gamma, Qnil,
27397
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
4496 "screenGamma", "ScreenGamma", RES_TYPE_FLOAT);
55892
c12c7852c322 (Fx_display_grayscale_p, Fw32_send_sys_command, Vw32_color_map):
Juanma Barranquero <lekktu@gmail.com>
parents: 55673
diff changeset
4497 x_default_parameter (f, parameters, Qline_spacing, Qnil,
29317
2d3d5bf49d4e Format and doc changes to bring closer to xfns.c.
Jason Rumney <jasonr@gnu.org>
parents: 29021
diff changeset
4498 "lineSpacing", "LineSpacing", RES_TYPE_NUMBER);
55892
c12c7852c322 (Fx_display_grayscale_p, Fw32_send_sys_command, Vw32_color_map):
Juanma Barranquero <lekktu@gmail.com>
parents: 55673
diff changeset
4499 x_default_parameter (f, parameters, Qleft_fringe, Qnil,
41726
2dd41afd9b55 Merged fringe width related changes from xfns.c.
Kim F. Storm <storm@cua.dk>
parents: 41638
diff changeset
4500 "leftFringe", "LeftFringe", RES_TYPE_NUMBER);
55892
c12c7852c322 (Fx_display_grayscale_p, Fw32_send_sys_command, Vw32_color_map):
Juanma Barranquero <lekktu@gmail.com>
parents: 55673
diff changeset
4501 x_default_parameter (f, parameters, Qright_fringe, Qnil,
41726
2dd41afd9b55 Merged fringe width related changes from xfns.c.
Kim F. Storm <storm@cua.dk>
parents: 41638
diff changeset
4502 "rightFringe", "RightFringe", RES_TYPE_NUMBER);
27397
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
4503
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
4504
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
4505 /* Init faces before x_default_parameter is called for scroll-bar
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
4506 parameters because that function calls x_set_scroll_bar_width,
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
4507 which calls change_frame_size, which calls Fset_window_buffer,
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
4508 which runs hooks, which call Fvertical_motion. At the end, we
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
4509 end up in init_iterator with a null face cache, which should not
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
4510 happen. */
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
4511 init_frame_faces (f);
47942
080b4586492b Fix typo in comment.
Juanma Barranquero <lekktu@gmail.com>
parents: 47731
diff changeset
4512
55892
c12c7852c322 (Fx_display_grayscale_p, Fw32_send_sys_command, Vw32_color_map):
Juanma Barranquero <lekktu@gmail.com>
parents: 55673
diff changeset
4513 x_default_parameter (f, parameters, Qmenu_bar_lines, make_number (1),
27397
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
4514 "menuBar", "MenuBar", RES_TYPE_NUMBER);
55892
c12c7852c322 (Fx_display_grayscale_p, Fw32_send_sys_command, Vw32_color_map):
Juanma Barranquero <lekktu@gmail.com>
parents: 55673
diff changeset
4515 x_default_parameter (f, parameters, Qtool_bar_lines, make_number (1),
27397
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
4516 "toolBar", "ToolBar", RES_TYPE_NUMBER);
44109
b615e4daf825 [HAVE_IMAGES, HAVE_PBM]: Remove conditionals.
Jason Rumney <jasonr@gnu.org>
parents: 44097
diff changeset
4517
55892
c12c7852c322 (Fx_display_grayscale_p, Fw32_send_sys_command, Vw32_color_map):
Juanma Barranquero <lekktu@gmail.com>
parents: 55673
diff changeset
4518 x_default_parameter (f, parameters, Qbuffer_predicate, Qnil,
27397
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
4519 "bufferPredicate", "BufferPredicate", RES_TYPE_SYMBOL);
55892
c12c7852c322 (Fx_display_grayscale_p, Fw32_send_sys_command, Vw32_color_map):
Juanma Barranquero <lekktu@gmail.com>
parents: 55673
diff changeset
4520 x_default_parameter (f, parameters, Qtitle, Qnil,
27397
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
4521 "title", "Title", RES_TYPE_STRING);
55892
c12c7852c322 (Fx_display_grayscale_p, Fw32_send_sys_command, Vw32_color_map):
Juanma Barranquero <lekktu@gmail.com>
parents: 55673
diff changeset
4522 x_default_parameter (f, parameters, Qfullscreen, Qnil,
43398
8782b8cfed62 *** empty log message ***
Jason Rumney <jasonr@gnu.org>
parents: 43210
diff changeset
4523 "fullscreen", "Fullscreen", RES_TYPE_SYMBOL);
13434
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
4524
16588
481b7874a1e9 Change identifiers of the form win32* to w32*.
Geoff Voelker <voelker@cs.washington.edu>
parents: 16259
diff changeset
4525 f->output_data.w32->dwStyle = WS_OVERLAPPEDWINDOW;
481b7874a1e9 Change identifiers of the form win32* to w32*.
Geoff Voelker <voelker@cs.washington.edu>
parents: 16259
diff changeset
4526 f->output_data.w32->parent_desc = FRAME_W32_DISPLAY_INFO (f)->root_window;
40120
03eb905a4d8e (Fx_file_dialog): Pass a filter to GetOpenFileName.
Jason Rumney <jasonr@gnu.org>
parents: 40009
diff changeset
4527
49369
5518e109ec3b 2003-01-21 Jason Rumney <jasonr@gnu.org>
Jason Rumney <jasonr@gnu.org>
parents: 49079
diff changeset
4528 f->output_data.w32->text_cursor = w32_load_cursor (IDC_IBEAM);
5518e109ec3b 2003-01-21 Jason Rumney <jasonr@gnu.org>
Jason Rumney <jasonr@gnu.org>
parents: 49079
diff changeset
4529 f->output_data.w32->nontext_cursor = w32_load_cursor (IDC_ARROW);
5518e109ec3b 2003-01-21 Jason Rumney <jasonr@gnu.org>
Jason Rumney <jasonr@gnu.org>
parents: 49079
diff changeset
4530 f->output_data.w32->modeline_cursor = w32_load_cursor (IDC_ARROW);
50229
e3a41ffa1cba Remove setup of cross_cursor (already has hand_cursor).
Kim F. Storm <storm@cua.dk>
parents: 50164
diff changeset
4531 f->output_data.w32->hand_cursor = w32_load_cursor (IDC_HAND);
49369
5518e109ec3b 2003-01-21 Jason Rumney <jasonr@gnu.org>
Jason Rumney <jasonr@gnu.org>
parents: 49079
diff changeset
4532 f->output_data.w32->hourglass_cursor = w32_load_cursor (IDC_WAIT);
5518e109ec3b 2003-01-21 Jason Rumney <jasonr@gnu.org>
Jason Rumney <jasonr@gnu.org>
parents: 49079
diff changeset
4533 f->output_data.w32->horizontal_drag_cursor = w32_load_cursor (IDC_SIZEWE);
5518e109ec3b 2003-01-21 Jason Rumney <jasonr@gnu.org>
Jason Rumney <jasonr@gnu.org>
parents: 49079
diff changeset
4534
93075
66248fc5b523 * w32fns.c (hourglass_timer, hourglass_hwnd): New variables.
Jason Rumney <jasonr@gnu.org>
parents: 92940
diff changeset
4535 f->output_data.w32->current_cursor = f->output_data.w32->nontext_cursor;
66248fc5b523 * w32fns.c (hourglass_timer, hourglass_hwnd): New variables.
Jason Rumney <jasonr@gnu.org>
parents: 92940
diff changeset
4536
55892
c12c7852c322 (Fx_display_grayscale_p, Fw32_send_sys_command, Vw32_color_map):
Juanma Barranquero <lekktu@gmail.com>
parents: 55673
diff changeset
4537 window_prompting = x_figure_window_size (f, parameters, 1);
c12c7852c322 (Fx_display_grayscale_p, Fw32_send_sys_command, Vw32_color_map):
Juanma Barranquero <lekktu@gmail.com>
parents: 55673
diff changeset
4538
c12c7852c322 (Fx_display_grayscale_p, Fw32_send_sys_command, Vw32_color_map):
Juanma Barranquero <lekktu@gmail.com>
parents: 55673
diff changeset
4539 tem = w32_get_arg (parameters, Qunsplittable, 0, 0, RES_TYPE_BOOLEAN);
27397
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
4540 f->no_split = minibuffer_only || EQ (tem, Qt);
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
4541
16588
481b7874a1e9 Change identifiers of the form win32* to w32*.
Geoff Voelker <voelker@cs.washington.edu>
parents: 16259
diff changeset
4542 w32_window (f, window_prompting, minibuffer_only);
55892
c12c7852c322 (Fx_display_grayscale_p, Fw32_send_sys_command, Vw32_color_map):
Juanma Barranquero <lekktu@gmail.com>
parents: 55673
diff changeset
4543 x_icon (f, parameters);
27397
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
4544
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
4545 x_make_gc (f);
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
4546
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
4547 /* Now consider the frame official. */
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
4548 FRAME_W32_DISPLAY_INFO (f)->reference_count++;
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
4549 Vframe_list = Fcons (frame, Vframe_list);
13434
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
4550
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
4551 /* We need to do this after creating the window, so that the
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
4552 icon-creation functions can say whose icon they're describing. */
55892
c12c7852c322 (Fx_display_grayscale_p, Fw32_send_sys_command, Vw32_color_map):
Juanma Barranquero <lekktu@gmail.com>
parents: 55673
diff changeset
4553 x_default_parameter (f, parameters, Qicon_type, Qnil,
27397
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
4554 "bitmapIcon", "BitmapIcon", RES_TYPE_SYMBOL);
13434
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
4555
55892
c12c7852c322 (Fx_display_grayscale_p, Fw32_send_sys_command, Vw32_color_map):
Juanma Barranquero <lekktu@gmail.com>
parents: 55673
diff changeset
4556 x_default_parameter (f, parameters, Qauto_raise, Qnil,
27397
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
4557 "autoRaise", "AutoRaiseLower", RES_TYPE_BOOLEAN);
55892
c12c7852c322 (Fx_display_grayscale_p, Fw32_send_sys_command, Vw32_color_map):
Juanma Barranquero <lekktu@gmail.com>
parents: 55673
diff changeset
4558 x_default_parameter (f, parameters, Qauto_lower, Qnil,
27397
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
4559 "autoLower", "AutoRaiseLower", RES_TYPE_BOOLEAN);
55892
c12c7852c322 (Fx_display_grayscale_p, Fw32_send_sys_command, Vw32_color_map):
Juanma Barranquero <lekktu@gmail.com>
parents: 55673
diff changeset
4560 x_default_parameter (f, parameters, Qcursor_type, Qbox,
27397
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
4561 "cursorType", "CursorType", RES_TYPE_SYMBOL);
55892
c12c7852c322 (Fx_display_grayscale_p, Fw32_send_sys_command, Vw32_color_map):
Juanma Barranquero <lekktu@gmail.com>
parents: 55673
diff changeset
4562 x_default_parameter (f, parameters, Qscroll_bar_width, Qnil,
27397
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
4563 "scrollBarWidth", "ScrollBarWidth", RES_TYPE_NUMBER);
13434
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
4564
51211
28ea05de2dc5 Make (many) trivial substitutions for renamed and
Kim F. Storm <storm@cua.dk>
parents: 50377
diff changeset
4565 /* Dimensions, especially FRAME_LINES (f), must be done via change_frame_size.
13434
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
4566 Change will not be effected unless different from the current
51211
28ea05de2dc5 Make (many) trivial substitutions for renamed and
Kim F. Storm <storm@cua.dk>
parents: 50377
diff changeset
4567 FRAME_LINES (f). */
28ea05de2dc5 Make (many) trivial substitutions for renamed and
Kim F. Storm <storm@cua.dk>
parents: 50377
diff changeset
4568 width = FRAME_COLS (f);
28ea05de2dc5 Make (many) trivial substitutions for renamed and
Kim F. Storm <storm@cua.dk>
parents: 50377
diff changeset
4569 height = FRAME_LINES (f);
28ea05de2dc5 Make (many) trivial substitutions for renamed and
Kim F. Storm <storm@cua.dk>
parents: 50377
diff changeset
4570
28ea05de2dc5 Make (many) trivial substitutions for renamed and
Kim F. Storm <storm@cua.dk>
parents: 50377
diff changeset
4571 FRAME_LINES (f) = 0;
28ea05de2dc5 Make (many) trivial substitutions for renamed and
Kim F. Storm <storm@cua.dk>
parents: 50377
diff changeset
4572 SET_FRAME_COLS (f, 0);
27397
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
4573 change_frame_size (f, height, width, 1, 0, 0);
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
4574
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
4575 /* Tell the server what size and position, etc, we want, and how
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
4576 badly we want them. This should be done after we have the menu
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
4577 bar so that its size can be taken into account. */
13434
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
4578 BLOCK_INPUT;
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
4579 x_wm_set_size_hint (f, window_prompting, 0);
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
4580 UNBLOCK_INPUT;
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
4581
27397
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
4582 /* Make the window appear on the frame and enable display, unless
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
4583 the caller says not to. However, with explicit parent, Emacs
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
4584 cannot control visibility, so don't try. */
16588
481b7874a1e9 Change identifiers of the form win32* to w32*.
Geoff Voelker <voelker@cs.washington.edu>
parents: 16259
diff changeset
4585 if (! f->output_data.w32->explicit_parent)
13434
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
4586 {
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
4587 Lisp_Object visibility;
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
4588
55892
c12c7852c322 (Fx_display_grayscale_p, Fw32_send_sys_command, Vw32_color_map):
Juanma Barranquero <lekktu@gmail.com>
parents: 55673
diff changeset
4589 visibility = w32_get_arg (parameters, Qvisibility, 0, 0, RES_TYPE_SYMBOL);
13434
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
4590 if (EQ (visibility, Qunbound))
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
4591 visibility = Qt;
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
4592
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
4593 if (EQ (visibility, Qicon))
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
4594 x_iconify_frame (f);
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
4595 else if (! NILP (visibility))
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
4596 x_make_frame_visible (f);
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
4597 else
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
4598 /* Must have been Qnil. */
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
4599 ;
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
4600 }
83616
b78afd4acd43 * term.c (init_tty): Better initialize ttys in windows.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 83608
diff changeset
4601
b78afd4acd43 * term.c (init_tty): Better initialize ttys in windows.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 83608
diff changeset
4602 /* Initialize `default-minibuffer-frame' in case this is the first
b78afd4acd43 * term.c (init_tty): Better initialize ttys in windows.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 83608
diff changeset
4603 frame on this terminal. */
b78afd4acd43 * term.c (init_tty): Better initialize ttys in windows.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 83608
diff changeset
4604 if (FRAME_HAS_MINIBUF_P (f)
b78afd4acd43 * term.c (init_tty): Better initialize ttys in windows.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 83608
diff changeset
4605 && (!FRAMEP (kb->Vdefault_minibuffer_frame)
b78afd4acd43 * term.c (init_tty): Better initialize ttys in windows.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 83608
diff changeset
4606 || !FRAME_LIVE_P (XFRAME (kb->Vdefault_minibuffer_frame))))
b78afd4acd43 * term.c (init_tty): Better initialize ttys in windows.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 83608
diff changeset
4607 kb->Vdefault_minibuffer_frame = frame;
b78afd4acd43 * term.c (init_tty): Better initialize ttys in windows.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 83608
diff changeset
4608
b78afd4acd43 * term.c (init_tty): Better initialize ttys in windows.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 83608
diff changeset
4609 /* All remaining specified parameters, which have not been "used"
b78afd4acd43 * term.c (init_tty): Better initialize ttys in windows.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 83608
diff changeset
4610 by x_get_arg and friends, now go in the misc. alist of the frame. */
85372
f7d19cfed7da * xselect.c (x_own_selection, x_handle_selection_clear)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 85311
diff changeset
4611 for (tem = parameters; CONSP (tem); tem = XCDR (tem))
83616
b78afd4acd43 * term.c (init_tty): Better initialize ttys in windows.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 83608
diff changeset
4612 if (CONSP (XCAR (tem)) && !NILP (XCAR (XCAR (tem))))
b78afd4acd43 * term.c (init_tty): Better initialize ttys in windows.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 83608
diff changeset
4613 f->param_alist = Fcons (XCAR (tem), f->param_alist);
b78afd4acd43 * term.c (init_tty): Better initialize ttys in windows.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 83608
diff changeset
4614
27397
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
4615 UNGCPRO;
47942
080b4586492b Fix typo in comment.
Juanma Barranquero <lekktu@gmail.com>
parents: 47731
diff changeset
4616
36594
756c28377036 (Fx_create_frame): Clear Vwindow_list.
Gerd Moellmann <gerd@gnu.org>
parents: 36312
diff changeset
4617 /* Make sure windows on this frame appear in calls to next-window
756c28377036 (Fx_create_frame): Clear Vwindow_list.
Gerd Moellmann <gerd@gnu.org>
parents: 36312
diff changeset
4618 and similar functions. */
756c28377036 (Fx_create_frame): Clear Vwindow_list.
Gerd Moellmann <gerd@gnu.org>
parents: 36312
diff changeset
4619 Vwindow_list = Qnil;
47942
080b4586492b Fix typo in comment.
Juanma Barranquero <lekktu@gmail.com>
parents: 47731
diff changeset
4620
13434
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
4621 return unbind_to (count, frame);
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
4622 }
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
4623
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
4624 /* FRAME is used only to get a handle on the X display. We don't pass the
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
4625 display info directly because we're called from frame.c, which doesn't
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
4626 know about that structure. */
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
4627 Lisp_Object
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
4628 x_get_focus_frame (frame)
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
4629 struct frame *frame;
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
4630 {
16588
481b7874a1e9 Change identifiers of the form win32* to w32*.
Geoff Voelker <voelker@cs.washington.edu>
parents: 16259
diff changeset
4631 struct w32_display_info *dpyinfo = FRAME_W32_DISPLAY_INFO (frame);
13434
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
4632 Lisp_Object xfocus;
16588
481b7874a1e9 Change identifiers of the form win32* to w32*.
Geoff Voelker <voelker@cs.washington.edu>
parents: 16259
diff changeset
4633 if (! dpyinfo->w32_focus_frame)
13434
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
4634 return Qnil;
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
4635
16588
481b7874a1e9 Change identifiers of the form win32* to w32*.
Geoff Voelker <voelker@cs.washington.edu>
parents: 16259
diff changeset
4636 XSETFRAME (xfocus, dpyinfo->w32_focus_frame);
13434
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
4637 return xfocus;
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
4638 }
19707
0181cc080316 Include limits.h and errno.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18508
diff changeset
4639
84630
4197a953442f (Fx_focus_frame): Rename from Fw32_focus_frame.
Jason Rumney <jasonr@gnu.org>
parents: 83878
diff changeset
4640 DEFUN ("x-focus-frame", Fx_focus_frame, Sx_focus_frame, 1, 1, 0,
40964
fb970d0c56eb Change doc-string comments to `new style'. [w/`doc:' keyword]. Doc fixes.
Jason Rumney <jasonr@gnu.org>
parents: 40873
diff changeset
4641 doc: /* Give FRAME input focus, raising to foreground if necessary. */)
19707
0181cc080316 Include limits.h and errno.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18508
diff changeset
4642 (frame)
0181cc080316 Include limits.h and errno.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18508
diff changeset
4643 Lisp_Object frame;
0181cc080316 Include limits.h and errno.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18508
diff changeset
4644 {
0181cc080316 Include limits.h and errno.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18508
diff changeset
4645 x_focus_on_frame (check_x_frame (frame));
0181cc080316 Include limits.h and errno.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18508
diff changeset
4646 return Qnil;
0181cc080316 Include limits.h and errno.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18508
diff changeset
4647 }
0181cc080316 Include limits.h and errno.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18508
diff changeset
4648
13434
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
4649
94917
e61553aa7a73 Throughout the file, delete all USE_FONT_BACKEND
Kenichi Handa <handa@m17n.org>
parents: 94618
diff changeset
4650 #if OLD_FONT
e61553aa7a73 Throughout the file, delete all USE_FONT_BACKEND
Kenichi Handa <handa@m17n.org>
parents: 94618
diff changeset
4651
33387
01a10bc04233 (Qw32_charset_hangeul): Rename to match w32 headers.
Jason Rumney <jasonr@gnu.org>
parents: 33216
diff changeset
4652 /* Return the charset portion of a font name. */
79387
0ca197abc593 (Fw32_registered_hot_keys): Don't return the nil values corresponding
Juanma Barranquero <lekktu@gmail.com>
parents: 79381
diff changeset
4653 char *
0ca197abc593 (Fw32_registered_hot_keys): Don't return the nil values corresponding
Juanma Barranquero <lekktu@gmail.com>
parents: 79381
diff changeset
4654 xlfd_charset_of_font (char * fontname)
33387
01a10bc04233 (Qw32_charset_hangeul): Rename to match w32 headers.
Jason Rumney <jasonr@gnu.org>
parents: 33216
diff changeset
4655 {
01a10bc04233 (Qw32_charset_hangeul): Rename to match w32 headers.
Jason Rumney <jasonr@gnu.org>
parents: 33216
diff changeset
4656 char *charset, *encoding;
01a10bc04233 (Qw32_charset_hangeul): Rename to match w32 headers.
Jason Rumney <jasonr@gnu.org>
parents: 33216
diff changeset
4657
79387
0ca197abc593 (Fw32_registered_hot_keys): Don't return the nil values corresponding
Juanma Barranquero <lekktu@gmail.com>
parents: 79381
diff changeset
4658 encoding = strrchr (fontname, '-');
34284
3a21ff35392b (xlfd_charset_of_font): Don't overwrite fontname
Andrew Innes <andrewi@gnu.org>
parents: 34133
diff changeset
4659 if (!encoding || encoding == fontname)
33387
01a10bc04233 (Qw32_charset_hangeul): Rename to match w32 headers.
Jason Rumney <jasonr@gnu.org>
parents: 33216
diff changeset
4660 return NULL;
01a10bc04233 (Qw32_charset_hangeul): Rename to match w32 headers.
Jason Rumney <jasonr@gnu.org>
parents: 33216
diff changeset
4661
34314
8318a4ea6764 (xlfd_charset_of_font): Fix last change.
Andrew Innes <andrewi@gnu.org>
parents: 34284
diff changeset
4662 for (charset = encoding - 1; charset >= fontname; charset--)
8318a4ea6764 (xlfd_charset_of_font): Fix last change.
Andrew Innes <andrewi@gnu.org>
parents: 34284
diff changeset
4663 if (*charset == '-')
8318a4ea6764 (xlfd_charset_of_font): Fix last change.
Andrew Innes <andrewi@gnu.org>
parents: 34284
diff changeset
4664 break;
8318a4ea6764 (xlfd_charset_of_font): Fix last change.
Andrew Innes <andrewi@gnu.org>
parents: 34284
diff changeset
4665
79387
0ca197abc593 (Fw32_registered_hot_keys): Don't return the nil values corresponding
Juanma Barranquero <lekktu@gmail.com>
parents: 79381
diff changeset
4666 if (charset == fontname || strcmp (charset, "-*-*") == 0)
33387
01a10bc04233 (Qw32_charset_hangeul): Rename to match w32 headers.
Jason Rumney <jasonr@gnu.org>
parents: 33216
diff changeset
4667 return NULL;
01a10bc04233 (Qw32_charset_hangeul): Rename to match w32 headers.
Jason Rumney <jasonr@gnu.org>
parents: 33216
diff changeset
4668
01a10bc04233 (Qw32_charset_hangeul): Rename to match w32 headers.
Jason Rumney <jasonr@gnu.org>
parents: 33216
diff changeset
4669 return charset + 1;
01a10bc04233 (Qw32_charset_hangeul): Rename to match w32 headers.
Jason Rumney <jasonr@gnu.org>
parents: 33216
diff changeset
4670 }
01a10bc04233 (Qw32_charset_hangeul): Rename to match w32 headers.
Jason Rumney <jasonr@gnu.org>
parents: 33216
diff changeset
4671
24147
c83b0bc4e8b9 (Vw32_bdf_filename_alist): New variable.
Geoff Voelker <voelker@cs.washington.edu>
parents: 24130
diff changeset
4672 struct font_info *w32_load_bdf_font (struct frame *f, char *fontname,
c83b0bc4e8b9 (Vw32_bdf_filename_alist): New variable.
Geoff Voelker <voelker@cs.washington.edu>
parents: 24130
diff changeset
4673 int size, char* filename);
35288
912ea0b8e09b (x_to_w32_color, x_set_icon_name, xlfd_strip_height)
Jason Rumney <jasonr@gnu.org>
parents: 34998
diff changeset
4674 static Lisp_Object w32_list_bdf_fonts (Lisp_Object pattern, int max_names);
37707
6bc1c4d4eb50 (w32_to_x_font): Change prototype to fit the declaration.
Eli Zaretskii <eliz@gnu.org>
parents: 36594
diff changeset
4675 static BOOL w32_to_x_font (LOGFONT * lplf, char * lpxstr, int len,
6bc1c4d4eb50 (w32_to_x_font): Change prototype to fit the declaration.
Eli Zaretskii <eliz@gnu.org>
parents: 36594
diff changeset
4676 char * charset);
6bc1c4d4eb50 (w32_to_x_font): Change prototype to fit the declaration.
Eli Zaretskii <eliz@gnu.org>
parents: 36594
diff changeset
4677 static BOOL x_to_w32_font (char *lpxstr, LOGFONT *lplogfont);
24147
c83b0bc4e8b9 (Vw32_bdf_filename_alist): New variable.
Geoff Voelker <voelker@cs.washington.edu>
parents: 24130
diff changeset
4678
35288
912ea0b8e09b (x_to_w32_color, x_set_icon_name, xlfd_strip_height)
Jason Rumney <jasonr@gnu.org>
parents: 34998
diff changeset
4679 static struct font_info *
79387
0ca197abc593 (Fw32_registered_hot_keys): Don't return the nil values corresponding
Juanma Barranquero <lekktu@gmail.com>
parents: 79381
diff changeset
4680 w32_load_system_font (f, fontname, size)
24670
045e247575d9 [andrewi]
Andrew Innes <andrewi@gnu.org>
parents: 24583
diff changeset
4681 struct frame *f;
045e247575d9 [andrewi]
Andrew Innes <andrewi@gnu.org>
parents: 24583
diff changeset
4682 char * fontname;
045e247575d9 [andrewi]
Andrew Innes <andrewi@gnu.org>
parents: 24583
diff changeset
4683 int size;
13434
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
4684 {
23506
246a14f0622f (Vx_pixel_size_width): New global variable.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23407
diff changeset
4685 struct w32_display_info *dpyinfo = FRAME_W32_DISPLAY_INFO (f);
246a14f0622f (Vx_pixel_size_width): New global variable.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23407
diff changeset
4686 Lisp_Object font_names;
246a14f0622f (Vx_pixel_size_width): New global variable.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23407
diff changeset
4687
246a14f0622f (Vx_pixel_size_width): New global variable.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23407
diff changeset
4688 /* Get a list of all the fonts that match this name. Once we
246a14f0622f (Vx_pixel_size_width): New global variable.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23407
diff changeset
4689 have a list of matching fonts, we compare them against the fonts
246a14f0622f (Vx_pixel_size_width): New global variable.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23407
diff changeset
4690 we already have loaded by comparing names. */
246a14f0622f (Vx_pixel_size_width): New global variable.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23407
diff changeset
4691 font_names = w32_list_fonts (f, build_string (fontname), size, 100);
246a14f0622f (Vx_pixel_size_width): New global variable.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23407
diff changeset
4692
246a14f0622f (Vx_pixel_size_width): New global variable.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23407
diff changeset
4693 if (!NILP (font_names))
14353
d0d8d9d73f7f backout 1.3
Geoff Voelker <voelker@cs.washington.edu>
parents: 14243
diff changeset
4694 {
23506
246a14f0622f (Vx_pixel_size_width): New global variable.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23407
diff changeset
4695 Lisp_Object tail;
246a14f0622f (Vx_pixel_size_width): New global variable.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23407
diff changeset
4696 int i;
246a14f0622f (Vx_pixel_size_width): New global variable.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23407
diff changeset
4697
246a14f0622f (Vx_pixel_size_width): New global variable.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23407
diff changeset
4698 /* First check if any are already loaded, as that is cheaper
246a14f0622f (Vx_pixel_size_width): New global variable.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23407
diff changeset
4699 than loading another one. */
246a14f0622f (Vx_pixel_size_width): New global variable.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23407
diff changeset
4700 for (i = 0; i < dpyinfo->n_fonts; i++)
25646
9154af188477 Use XCAR and XCDR instead of explicit member references.
Ken Raeburn <raeburn@raeburn.org>
parents: 25289
diff changeset
4701 for (tail = font_names; CONSP (tail); tail = XCDR (tail))
27397
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
4702 if (dpyinfo->font_table[i].name
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
4703 && (!strcmp (dpyinfo->font_table[i].name,
46370
40db0673e6f0 Most uses of XSTRING combined with STRING_BYTES or indirection changed to
Ken Raeburn <raeburn@raeburn.org>
parents: 46293
diff changeset
4704 SDATA (XCAR (tail)))
27397
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
4705 || !strcmp (dpyinfo->font_table[i].full_name,
46370
40db0673e6f0 Most uses of XSTRING combined with STRING_BYTES or indirection changed to
Ken Raeburn <raeburn@raeburn.org>
parents: 46293
diff changeset
4706 SDATA (XCAR (tail)))))
23506
246a14f0622f (Vx_pixel_size_width): New global variable.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23407
diff changeset
4707 return (dpyinfo->font_table + i);
27397
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
4708
46370
40db0673e6f0 Most uses of XSTRING combined with STRING_BYTES or indirection changed to
Ken Raeburn <raeburn@raeburn.org>
parents: 46293
diff changeset
4709 fontname = (char *) SDATA (XCAR (font_names));
23506
246a14f0622f (Vx_pixel_size_width): New global variable.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23407
diff changeset
4710 }
24481
f65692fe7dd5 (w32_strict_fontnames): New variable.
Geoff Voelker <voelker@cs.washington.edu>
parents: 24479
diff changeset
4711 else if (w32_strict_fontnames)
24214
4fb0bce809bc (w32_load_system_font): Do not load unlisted fonts if
Geoff Voelker <voelker@cs.washington.edu>
parents: 24211
diff changeset
4712 {
4fb0bce809bc (w32_load_system_font): Do not load unlisted fonts if
Geoff Voelker <voelker@cs.washington.edu>
parents: 24211
diff changeset
4713 /* If EnumFontFamiliesEx was available, we got a full list of
4fb0bce809bc (w32_load_system_font): Do not load unlisted fonts if
Geoff Voelker <voelker@cs.washington.edu>
parents: 24211
diff changeset
4714 fonts back so stop now to avoid the possibility of loading a
4fb0bce809bc (w32_load_system_font): Do not load unlisted fonts if
Geoff Voelker <voelker@cs.washington.edu>
parents: 24211
diff changeset
4715 random font. If we had to fall back to EnumFontFamilies, the
4fb0bce809bc (w32_load_system_font): Do not load unlisted fonts if
Geoff Voelker <voelker@cs.washington.edu>
parents: 24211
diff changeset
4716 list is incomplete, so continue whether the font we want was
4fb0bce809bc (w32_load_system_font): Do not load unlisted fonts if
Geoff Voelker <voelker@cs.washington.edu>
parents: 24211
diff changeset
4717 listed or not. */
4fb0bce809bc (w32_load_system_font): Do not load unlisted fonts if
Geoff Voelker <voelker@cs.washington.edu>
parents: 24211
diff changeset
4718 HMODULE gdi32 = GetModuleHandle ("gdi32.dll");
4fb0bce809bc (w32_load_system_font): Do not load unlisted fonts if
Geoff Voelker <voelker@cs.washington.edu>
parents: 24211
diff changeset
4719 FARPROC enum_font_families_ex
24481
f65692fe7dd5 (w32_strict_fontnames): New variable.
Geoff Voelker <voelker@cs.washington.edu>
parents: 24479
diff changeset
4720 = GetProcAddress (gdi32, "EnumFontFamiliesExA");
24214
4fb0bce809bc (w32_load_system_font): Do not load unlisted fonts if
Geoff Voelker <voelker@cs.washington.edu>
parents: 24211
diff changeset
4721 if (enum_font_families_ex)
4fb0bce809bc (w32_load_system_font): Do not load unlisted fonts if
Geoff Voelker <voelker@cs.washington.edu>
parents: 24211
diff changeset
4722 return NULL;
4fb0bce809bc (w32_load_system_font): Do not load unlisted fonts if
Geoff Voelker <voelker@cs.washington.edu>
parents: 24211
diff changeset
4723 }
23506
246a14f0622f (Vx_pixel_size_width): New global variable.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23407
diff changeset
4724
246a14f0622f (Vx_pixel_size_width): New global variable.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23407
diff changeset
4725 /* Load the font and add it to the table. */
246a14f0622f (Vx_pixel_size_width): New global variable.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23407
diff changeset
4726 {
33387
01a10bc04233 (Qw32_charset_hangeul): Rename to match w32 headers.
Jason Rumney <jasonr@gnu.org>
parents: 33216
diff changeset
4727 char *full_name, *encoding, *charset;
23506
246a14f0622f (Vx_pixel_size_width): New global variable.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23407
diff changeset
4728 XFontStruct *font;
246a14f0622f (Vx_pixel_size_width): New global variable.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23407
diff changeset
4729 struct font_info *fontp;
14353
d0d8d9d73f7f backout 1.3
Geoff Voelker <voelker@cs.washington.edu>
parents: 14243
diff changeset
4730 LOGFONT lf;
23506
246a14f0622f (Vx_pixel_size_width): New global variable.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23407
diff changeset
4731 BOOL ok;
40009
f6ecf530f0a3 (w32_load_system_font): Cache codepage for font, in
Andrew Innes <andrewi@gnu.org>
parents: 39973
diff changeset
4732 int codepage;
27397
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
4733 int i;
23506
246a14f0622f (Vx_pixel_size_width): New global variable.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23407
diff changeset
4734
246a14f0622f (Vx_pixel_size_width): New global variable.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23407
diff changeset
4735 if (!fontname || !x_to_w32_font (fontname, &lf))
14353
d0d8d9d73f7f backout 1.3
Geoff Voelker <voelker@cs.washington.edu>
parents: 14243
diff changeset
4736 return (NULL);
15147
38c0ce06203f (quit_char, Vwin32_enable_italics, Vwin32_enable_palette):
Geoff Voelker <voelker@cs.washington.edu>
parents: 15034
diff changeset
4737
23506
246a14f0622f (Vx_pixel_size_width): New global variable.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23407
diff changeset
4738 if (!*lf.lfFaceName)
246a14f0622f (Vx_pixel_size_width): New global variable.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23407
diff changeset
4739 /* If no name was specified for the font, we get a random font
246a14f0622f (Vx_pixel_size_width): New global variable.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23407
diff changeset
4740 from CreateFontIndirect - this is not particularly
246a14f0622f (Vx_pixel_size_width): New global variable.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23407
diff changeset
4741 desirable, especially since CreateFontIndirect does not
246a14f0622f (Vx_pixel_size_width): New global variable.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23407
diff changeset
4742 fill out the missing name in lf, so we never know what we
246a14f0622f (Vx_pixel_size_width): New global variable.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23407
diff changeset
4743 ended up with. */
246a14f0622f (Vx_pixel_size_width): New global variable.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23407
diff changeset
4744 return NULL;
246a14f0622f (Vx_pixel_size_width): New global variable.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23407
diff changeset
4745
48359
1e8497bc057d (w32_load_system_font): Don't disable Cleartype.
Jason Rumney <jasonr@gnu.org>
parents: 48351
diff changeset
4746 lf.lfQuality = DEFAULT_QUALITY;
43210
3df71b933c36 (w32_load_system_font): Prevent Cleartype fonts from loading.
Jason Rumney <jasonr@gnu.org>
parents: 43207
diff changeset
4747
14353
d0d8d9d73f7f backout 1.3
Geoff Voelker <voelker@cs.washington.edu>
parents: 14243
diff changeset
4748 font = (XFontStruct *) xmalloc (sizeof (XFontStruct));
32721
0574ffc14f77 (w32_load_system_font): Call w32_cache_char_metrics.
Andrew Innes <andrewi@gnu.org>
parents: 32669
diff changeset
4749 bzero (font, sizeof (*font));
15147
38c0ce06203f (quit_char, Vwin32_enable_italics, Vwin32_enable_palette):
Geoff Voelker <voelker@cs.washington.edu>
parents: 15034
diff changeset
4750
24147
c83b0bc4e8b9 (Vw32_bdf_filename_alist): New variable.
Geoff Voelker <voelker@cs.washington.edu>
parents: 24130
diff changeset
4751 /* Set bdf to NULL to indicate that this is a Windows font. */
c83b0bc4e8b9 (Vw32_bdf_filename_alist): New variable.
Geoff Voelker <voelker@cs.washington.edu>
parents: 24130
diff changeset
4752 font->bdf = NULL;
15147
38c0ce06203f (quit_char, Vwin32_enable_italics, Vwin32_enable_palette):
Geoff Voelker <voelker@cs.washington.edu>
parents: 15034
diff changeset
4753
14353
d0d8d9d73f7f backout 1.3
Geoff Voelker <voelker@cs.washington.edu>
parents: 14243
diff changeset
4754 BLOCK_INPUT;
15147
38c0ce06203f (quit_char, Vwin32_enable_italics, Vwin32_enable_palette):
Geoff Voelker <voelker@cs.washington.edu>
parents: 15034
diff changeset
4755
38c0ce06203f (quit_char, Vwin32_enable_italics, Vwin32_enable_palette):
Geoff Voelker <voelker@cs.washington.edu>
parents: 15034
diff changeset
4756 font->hfont = CreateFontIndirect (&lf);
38c0ce06203f (quit_char, Vwin32_enable_italics, Vwin32_enable_palette):
Geoff Voelker <voelker@cs.washington.edu>
parents: 15034
diff changeset
4757
47942
080b4586492b Fix typo in comment.
Juanma Barranquero <lekktu@gmail.com>
parents: 47731
diff changeset
4758 if (font->hfont == NULL)
23620
2b55b8f8cdc1 (x_to_w32_font): Specify DEFAULT_CHARSET in the w32 LOGFONT struct if
Andrew Innes <andrewi@gnu.org>
parents: 23558
diff changeset
4759 {
2b55b8f8cdc1 (x_to_w32_font): Specify DEFAULT_CHARSET in the w32 LOGFONT struct if
Andrew Innes <andrewi@gnu.org>
parents: 23558
diff changeset
4760 ok = FALSE;
47942
080b4586492b Fix typo in comment.
Juanma Barranquero <lekktu@gmail.com>
parents: 47731
diff changeset
4761 }
080b4586492b Fix typo in comment.
Juanma Barranquero <lekktu@gmail.com>
parents: 47731
diff changeset
4762 else
23620
2b55b8f8cdc1 (x_to_w32_font): Specify DEFAULT_CHARSET in the w32 LOGFONT struct if
Andrew Innes <andrewi@gnu.org>
parents: 23558
diff changeset
4763 {
2b55b8f8cdc1 (x_to_w32_font): Specify DEFAULT_CHARSET in the w32 LOGFONT struct if
Andrew Innes <andrewi@gnu.org>
parents: 23558
diff changeset
4764 HDC hdc;
2b55b8f8cdc1 (x_to_w32_font): Specify DEFAULT_CHARSET in the w32 LOGFONT struct if
Andrew Innes <andrewi@gnu.org>
parents: 23558
diff changeset
4765 HANDLE oldobj;
40009
f6ecf530f0a3 (w32_load_system_font): Cache codepage for font, in
Andrew Innes <andrewi@gnu.org>
parents: 39973
diff changeset
4766
f6ecf530f0a3 (w32_load_system_font): Cache codepage for font, in
Andrew Innes <andrewi@gnu.org>
parents: 39973
diff changeset
4767 codepage = w32_codepage_for_font (fontname);
23620
2b55b8f8cdc1 (x_to_w32_font): Specify DEFAULT_CHARSET in the w32 LOGFONT struct if
Andrew Innes <andrewi@gnu.org>
parents: 23558
diff changeset
4768
2b55b8f8cdc1 (x_to_w32_font): Specify DEFAULT_CHARSET in the w32 LOGFONT struct if
Andrew Innes <andrewi@gnu.org>
parents: 23558
diff changeset
4769 hdc = GetDC (dpyinfo->root_window);
2b55b8f8cdc1 (x_to_w32_font): Specify DEFAULT_CHARSET in the w32 LOGFONT struct if
Andrew Innes <andrewi@gnu.org>
parents: 23558
diff changeset
4770 oldobj = SelectObject (hdc, font->hfont);
33929
886f1ee076bd (w32_load_system_font): Always mark font as double byte if codepage is unicode.
Jason Rumney <jasonr@gnu.org>
parents: 33879
diff changeset
4771
23620
2b55b8f8cdc1 (x_to_w32_font): Specify DEFAULT_CHARSET in the w32 LOGFONT struct if
Andrew Innes <andrewi@gnu.org>
parents: 23558
diff changeset
4772 ok = GetTextMetrics (hdc, &font->tm);
33929
886f1ee076bd (w32_load_system_font): Always mark font as double byte if codepage is unicode.
Jason Rumney <jasonr@gnu.org>
parents: 33879
diff changeset
4773 if (codepage == CP_UNICODE)
886f1ee076bd (w32_load_system_font): Always mark font as double byte if codepage is unicode.
Jason Rumney <jasonr@gnu.org>
parents: 33879
diff changeset
4774 font->double_byte_p = 1;
886f1ee076bd (w32_load_system_font): Always mark font as double byte if codepage is unicode.
Jason Rumney <jasonr@gnu.org>
parents: 33879
diff changeset
4775 else
39548
6192be048459 (x_to_w32_color): Fix argument to alloca.
Andrew Innes <andrewi@gnu.org>
parents: 39137
diff changeset
4776 {
6192be048459 (x_to_w32_color): Fix argument to alloca.
Andrew Innes <andrewi@gnu.org>
parents: 39137
diff changeset
4777 /* Unfortunately, some fonts (eg. MingLiU, a big5 ttf font)
6192be048459 (x_to_w32_color): Fix argument to alloca.
Andrew Innes <andrewi@gnu.org>
parents: 39137
diff changeset
4778 don't report themselves as double byte fonts, when
6192be048459 (x_to_w32_color): Fix argument to alloca.
Andrew Innes <andrewi@gnu.org>
parents: 39137
diff changeset
4779 patently they are. So instead of trusting
6192be048459 (x_to_w32_color): Fix argument to alloca.
Andrew Innes <andrewi@gnu.org>
parents: 39137
diff changeset
4780 GetFontLanguageInfo, we check the properties of the
6192be048459 (x_to_w32_color): Fix argument to alloca.
Andrew Innes <andrewi@gnu.org>
parents: 39137
diff changeset
4781 codepage directly, since that is ultimately what we are
6192be048459 (x_to_w32_color): Fix argument to alloca.
Andrew Innes <andrewi@gnu.org>
parents: 39137
diff changeset
4782 working from anyway. */
79387
0ca197abc593 (Fw32_registered_hot_keys): Don't return the nil values corresponding
Juanma Barranquero <lekktu@gmail.com>
parents: 79381
diff changeset
4783 /* font->double_byte_p = GetFontLanguageInfo (hdc) & GCP_DBCS; */
39548
6192be048459 (x_to_w32_color): Fix argument to alloca.
Andrew Innes <andrewi@gnu.org>
parents: 39137
diff changeset
4784 CPINFO cpi = {0};
6192be048459 (x_to_w32_color): Fix argument to alloca.
Andrew Innes <andrewi@gnu.org>
parents: 39137
diff changeset
4785 GetCPInfo (codepage, &cpi);
6192be048459 (x_to_w32_color): Fix argument to alloca.
Andrew Innes <andrewi@gnu.org>
parents: 39137
diff changeset
4786 font->double_byte_p = cpi.MaxCharSize > 1;
6192be048459 (x_to_w32_color): Fix argument to alloca.
Andrew Innes <andrewi@gnu.org>
parents: 39137
diff changeset
4787 }
33929
886f1ee076bd (w32_load_system_font): Always mark font as double byte if codepage is unicode.
Jason Rumney <jasonr@gnu.org>
parents: 33879
diff changeset
4788
23620
2b55b8f8cdc1 (x_to_w32_font): Specify DEFAULT_CHARSET in the w32 LOGFONT struct if
Andrew Innes <andrewi@gnu.org>
parents: 23558
diff changeset
4789 SelectObject (hdc, oldobj);
2b55b8f8cdc1 (x_to_w32_font): Specify DEFAULT_CHARSET in the w32 LOGFONT struct if
Andrew Innes <andrewi@gnu.org>
parents: 23558
diff changeset
4790 ReleaseDC (dpyinfo->root_window, hdc);
27397
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
4791 /* Fill out details in lf according to the font that was
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
4792 actually loaded. */
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
4793 lf.lfHeight = font->tm.tmInternalLeading - font->tm.tmHeight;
59333
f23a47fb1568 (w32_load_system_font): Set FONT_WIDTH to maximum, not
Jason Rumney <jasonr@gnu.org>
parents: 57872
diff changeset
4794 lf.lfWidth = font->tm.tmMaxCharWidth;
27397
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
4795 lf.lfWeight = font->tm.tmWeight;
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
4796 lf.lfItalic = font->tm.tmItalic;
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
4797 lf.lfCharSet = font->tm.tmCharSet;
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
4798 lf.lfPitchAndFamily = ((font->tm.tmPitchAndFamily & TMPF_FIXED_PITCH)
27516
8001542eaee2 (w32_defined_color): Check for valid frame before
Jason Rumney <jasonr@gnu.org>
parents: 27407
diff changeset
4799 ? VARIABLE_PITCH : FIXED_PITCH);
27397
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
4800 lf.lfOutPrecision = ((font->tm.tmPitchAndFamily & TMPF_VECTOR)
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
4801 ? OUT_STROKE_PRECIS : OUT_STRING_PRECIS);
32721
0574ffc14f77 (w32_load_system_font): Call w32_cache_char_metrics.
Andrew Innes <andrewi@gnu.org>
parents: 32669
diff changeset
4802
0574ffc14f77 (w32_load_system_font): Call w32_cache_char_metrics.
Andrew Innes <andrewi@gnu.org>
parents: 32669
diff changeset
4803 w32_cache_char_metrics (font);
23620
2b55b8f8cdc1 (x_to_w32_font): Specify DEFAULT_CHARSET in the w32 LOGFONT struct if
Andrew Innes <andrewi@gnu.org>
parents: 23558
diff changeset
4804 }
2b55b8f8cdc1 (x_to_w32_font): Specify DEFAULT_CHARSET in the w32 LOGFONT struct if
Andrew Innes <andrewi@gnu.org>
parents: 23558
diff changeset
4805
2b55b8f8cdc1 (x_to_w32_font): Specify DEFAULT_CHARSET in the w32 LOGFONT struct if
Andrew Innes <andrewi@gnu.org>
parents: 23558
diff changeset
4806 UNBLOCK_INPUT;
15147
38c0ce06203f (quit_char, Vwin32_enable_italics, Vwin32_enable_palette):
Geoff Voelker <voelker@cs.washington.edu>
parents: 15034
diff changeset
4807
23506
246a14f0622f (Vx_pixel_size_width): New global variable.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23407
diff changeset
4808 if (!ok)
246a14f0622f (Vx_pixel_size_width): New global variable.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23407
diff changeset
4809 {
23620
2b55b8f8cdc1 (x_to_w32_font): Specify DEFAULT_CHARSET in the w32 LOGFONT struct if
Andrew Innes <andrewi@gnu.org>
parents: 23558
diff changeset
4810 w32_unload_font (dpyinfo, font);
2b55b8f8cdc1 (x_to_w32_font): Specify DEFAULT_CHARSET in the w32 LOGFONT struct if
Andrew Innes <andrewi@gnu.org>
parents: 23558
diff changeset
4811 return (NULL);
2b55b8f8cdc1 (x_to_w32_font): Specify DEFAULT_CHARSET in the w32 LOGFONT struct if
Andrew Innes <andrewi@gnu.org>
parents: 23558
diff changeset
4812 }
13434
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
4813
27397
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
4814 /* Find a free slot in the font table. */
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
4815 for (i = 0; i < dpyinfo->n_fonts; ++i)
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
4816 if (dpyinfo->font_table[i].name == NULL)
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
4817 break;
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
4818
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
4819 /* If no free slot found, maybe enlarge the font table. */
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
4820 if (i == dpyinfo->n_fonts
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
4821 && dpyinfo->n_fonts == dpyinfo->font_table_size)
23506
246a14f0622f (Vx_pixel_size_width): New global variable.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23407
diff changeset
4822 {
27397
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
4823 int sz;
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
4824 dpyinfo->font_table_size = max (16, 2 * dpyinfo->font_table_size);
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
4825 sz = dpyinfo->font_table_size * sizeof *dpyinfo->font_table;
23506
246a14f0622f (Vx_pixel_size_width): New global variable.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23407
diff changeset
4826 dpyinfo->font_table
27397
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
4827 = (struct font_info *) xrealloc (dpyinfo->font_table, sz);
23506
246a14f0622f (Vx_pixel_size_width): New global variable.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23407
diff changeset
4828 }
27397
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
4829
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
4830 fontp = dpyinfo->font_table + i;
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
4831 if (i == dpyinfo->n_fonts)
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
4832 ++dpyinfo->n_fonts;
23506
246a14f0622f (Vx_pixel_size_width): New global variable.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23407
diff changeset
4833
246a14f0622f (Vx_pixel_size_width): New global variable.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23407
diff changeset
4834 /* Now fill in the slots of *FONTP. */
246a14f0622f (Vx_pixel_size_width): New global variable.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23407
diff changeset
4835 BLOCK_INPUT;
52737
6685d28af4a7 * w32fns.c (w32_load_system_font): Clear all members of FONTP before
Jason Rumney <jasonr@gnu.org>
parents: 52401
diff changeset
4836 bzero (fontp, sizeof (*fontp));
23506
246a14f0622f (Vx_pixel_size_width): New global variable.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23407
diff changeset
4837 fontp->font = font;
27397
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
4838 fontp->font_idx = i;
23506
246a14f0622f (Vx_pixel_size_width): New global variable.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23407
diff changeset
4839 fontp->name = (char *) xmalloc (strlen (fontname) + 1);
246a14f0622f (Vx_pixel_size_width): New global variable.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23407
diff changeset
4840 bcopy (fontname, fontp->name, strlen (fontname) + 1);
246a14f0622f (Vx_pixel_size_width): New global variable.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23407
diff changeset
4841
90878
efe9a1312ac6 * w32fns.c (w32_load_system_font): Fix detecting FIXED_PITCH fonts.
Jason Rumney <jasonr@gnu.org>
parents: 90865
diff changeset
4842 if ((lf.lfPitchAndFamily & 0x03) == FIXED_PITCH)
59333
f23a47fb1568 (w32_load_system_font): Set FONT_WIDTH to maximum, not
Jason Rumney <jasonr@gnu.org>
parents: 57872
diff changeset
4843 {
f23a47fb1568 (w32_load_system_font): Set FONT_WIDTH to maximum, not
Jason Rumney <jasonr@gnu.org>
parents: 57872
diff changeset
4844 /* Fixed width font. */
90899
f9569f59a835 (w32_load_system_font, w32_list_fonts): Use FONT_AVG_WIDTH.
Jason Rumney <jasonr@gnu.org>
parents: 90893
diff changeset
4845 fontp->average_width = fontp->space_width = FONT_AVG_WIDTH (font);
59333
f23a47fb1568 (w32_load_system_font): Set FONT_WIDTH to maximum, not
Jason Rumney <jasonr@gnu.org>
parents: 57872
diff changeset
4846 }
f23a47fb1568 (w32_load_system_font): Set FONT_WIDTH to maximum, not
Jason Rumney <jasonr@gnu.org>
parents: 57872
diff changeset
4847 else
f23a47fb1568 (w32_load_system_font): Set FONT_WIDTH to maximum, not
Jason Rumney <jasonr@gnu.org>
parents: 57872
diff changeset
4848 {
f23a47fb1568 (w32_load_system_font): Set FONT_WIDTH to maximum, not
Jason Rumney <jasonr@gnu.org>
parents: 57872
diff changeset
4849 wchar_t space = 32;
f23a47fb1568 (w32_load_system_font): Set FONT_WIDTH to maximum, not
Jason Rumney <jasonr@gnu.org>
parents: 57872
diff changeset
4850 XCharStruct* pcm;
f23a47fb1568 (w32_load_system_font): Set FONT_WIDTH to maximum, not
Jason Rumney <jasonr@gnu.org>
parents: 57872
diff changeset
4851 pcm = w32_per_char_metric (font, &space, ANSI_FONT);
f23a47fb1568 (w32_load_system_font): Set FONT_WIDTH to maximum, not
Jason Rumney <jasonr@gnu.org>
parents: 57872
diff changeset
4852 if (pcm)
f23a47fb1568 (w32_load_system_font): Set FONT_WIDTH to maximum, not
Jason Rumney <jasonr@gnu.org>
parents: 57872
diff changeset
4853 fontp->space_width = pcm->width;
f23a47fb1568 (w32_load_system_font): Set FONT_WIDTH to maximum, not
Jason Rumney <jasonr@gnu.org>
parents: 57872
diff changeset
4854 else
90899
f9569f59a835 (w32_load_system_font, w32_list_fonts): Use FONT_AVG_WIDTH.
Jason Rumney <jasonr@gnu.org>
parents: 90893
diff changeset
4855 fontp->space_width = FONT_AVG_WIDTH (font);
59333
f23a47fb1568 (w32_load_system_font): Set FONT_WIDTH to maximum, not
Jason Rumney <jasonr@gnu.org>
parents: 57872
diff changeset
4856
f23a47fb1568 (w32_load_system_font): Set FONT_WIDTH to maximum, not
Jason Rumney <jasonr@gnu.org>
parents: 57872
diff changeset
4857 fontp->average_width = font->tm.tmAveCharWidth;
f23a47fb1568 (w32_load_system_font): Set FONT_WIDTH to maximum, not
Jason Rumney <jasonr@gnu.org>
parents: 57872
diff changeset
4858 }
f23a47fb1568 (w32_load_system_font): Set FONT_WIDTH to maximum, not
Jason Rumney <jasonr@gnu.org>
parents: 57872
diff changeset
4859
89594
169b2685d6f6 (w32_load_system_font): Default charset to -1.
Jason Rumney <jasonr@gnu.org>
parents: 89585
diff changeset
4860 fontp->charset = -1;
33387
01a10bc04233 (Qw32_charset_hangeul): Rename to match w32 headers.
Jason Rumney <jasonr@gnu.org>
parents: 33216
diff changeset
4861 charset = xlfd_charset_of_font (fontname);
01a10bc04233 (Qw32_charset_hangeul): Rename to match w32 headers.
Jason Rumney <jasonr@gnu.org>
parents: 33216
diff changeset
4862
40009
f6ecf530f0a3 (w32_load_system_font): Cache codepage for font, in
Andrew Innes <andrewi@gnu.org>
parents: 39973
diff changeset
4863 /* Cache the W32 codepage for a font. This makes w32_encode_char
f6ecf530f0a3 (w32_load_system_font): Cache codepage for font, in
Andrew Innes <andrewi@gnu.org>
parents: 39973
diff changeset
4864 (called for every glyph during redisplay) much faster. */
f6ecf530f0a3 (w32_load_system_font): Cache codepage for font, in
Andrew Innes <andrewi@gnu.org>
parents: 39973
diff changeset
4865 fontp->codepage = codepage;
f6ecf530f0a3 (w32_load_system_font): Cache codepage for font, in
Andrew Innes <andrewi@gnu.org>
parents: 39973
diff changeset
4866
23506
246a14f0622f (Vx_pixel_size_width): New global variable.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23407
diff changeset
4867 /* Work out the font's full name. */
246a14f0622f (Vx_pixel_size_width): New global variable.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23407
diff changeset
4868 full_name = (char *)xmalloc (100);
33387
01a10bc04233 (Qw32_charset_hangeul): Rename to match w32 headers.
Jason Rumney <jasonr@gnu.org>
parents: 33216
diff changeset
4869 if (full_name && w32_to_x_font (&lf, full_name, 100, charset))
23506
246a14f0622f (Vx_pixel_size_width): New global variable.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23407
diff changeset
4870 fontp->full_name = full_name;
246a14f0622f (Vx_pixel_size_width): New global variable.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23407
diff changeset
4871 else
246a14f0622f (Vx_pixel_size_width): New global variable.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23407
diff changeset
4872 {
246a14f0622f (Vx_pixel_size_width): New global variable.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23407
diff changeset
4873 /* If all else fails - just use the name we used to load it. */
246a14f0622f (Vx_pixel_size_width): New global variable.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23407
diff changeset
4874 xfree (full_name);
246a14f0622f (Vx_pixel_size_width): New global variable.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23407
diff changeset
4875 fontp->full_name = fontp->name;
246a14f0622f (Vx_pixel_size_width): New global variable.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23407
diff changeset
4876 }
246a14f0622f (Vx_pixel_size_width): New global variable.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23407
diff changeset
4877
246a14f0622f (Vx_pixel_size_width): New global variable.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23407
diff changeset
4878 fontp->size = FONT_WIDTH (font);
246a14f0622f (Vx_pixel_size_width): New global variable.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23407
diff changeset
4879 fontp->height = FONT_HEIGHT (font);
246a14f0622f (Vx_pixel_size_width): New global variable.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23407
diff changeset
4880
246a14f0622f (Vx_pixel_size_width): New global variable.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23407
diff changeset
4881 /* The slot `encoding' specifies how to map a character
246a14f0622f (Vx_pixel_size_width): New global variable.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23407
diff changeset
4882 code-points (0x20..0x7F or 0x2020..0x7F7F) of each charset to
28272
f62bb21d38db (w32_wnd_proc): Handle WM_MENUSELECT message.
Jason Rumney <jasonr@gnu.org>
parents: 27936
diff changeset
4883 the font code-points (0:0x20..0x7F, 1:0xA0..0xFF), or
f62bb21d38db (w32_wnd_proc): Handle WM_MENUSELECT message.
Jason Rumney <jasonr@gnu.org>
parents: 27936
diff changeset
4884 (0:0x20..0x7F, 1:0xA0..0xFF,
f62bb21d38db (w32_wnd_proc): Handle WM_MENUSELECT message.
Jason Rumney <jasonr@gnu.org>
parents: 27936
diff changeset
4885 (0:0x2020..0x7F7F, 1:0xA0A0..0xFFFF, 3:0x20A0..0x7FFF,
23506
246a14f0622f (Vx_pixel_size_width): New global variable.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23407
diff changeset
4886 2:0xA020..0xFF7F). For the moment, we don't know which charset
89585
f89c9d4bd81c (Fx_create_frame, x_create_tip_frame): Use new version of x_new_fontset.
Jason Rumney <jasonr@gnu.org>
parents: 88123
diff changeset
4887 uses this font. So, we set information in fontp->encoding_type
23506
246a14f0622f (Vx_pixel_size_width): New global variable.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23407
diff changeset
4888 which is never used by any charset. If mapping can't be
246a14f0622f (Vx_pixel_size_width): New global variable.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23407
diff changeset
4889 decided, set FONT_ENCODING_NOT_DECIDED. */
24147
c83b0bc4e8b9 (Vw32_bdf_filename_alist): New variable.
Geoff Voelker <voelker@cs.washington.edu>
parents: 24130
diff changeset
4890
c83b0bc4e8b9 (Vw32_bdf_filename_alist): New variable.
Geoff Voelker <voelker@cs.washington.edu>
parents: 24130
diff changeset
4891 /* SJIS fonts need to be set to type 4, all others seem to work as
c83b0bc4e8b9 (Vw32_bdf_filename_alist): New variable.
Geoff Voelker <voelker@cs.washington.edu>
parents: 24130
diff changeset
4892 type FONT_ENCODING_NOT_DECIDED. */
c83b0bc4e8b9 (Vw32_bdf_filename_alist): New variable.
Geoff Voelker <voelker@cs.washington.edu>
parents: 24130
diff changeset
4893 encoding = strrchr (fontp->name, '-');
42845
ebb3a20bc357 (w32_load_system_font, w32_to_x_charset): Use strnicmp
Jason Rumney <jasonr@gnu.org>
parents: 42833
diff changeset
4894 if (encoding && strnicmp (encoding+1, "sjis", 4) == 0)
89585
f89c9d4bd81c (Fx_create_frame, x_create_tip_frame): Use new version of x_new_fontset.
Jason Rumney <jasonr@gnu.org>
parents: 88123
diff changeset
4895 fontp->encoding_type = 4;
24147
c83b0bc4e8b9 (Vw32_bdf_filename_alist): New variable.
Geoff Voelker <voelker@cs.washington.edu>
parents: 24130
diff changeset
4896 else
89585
f89c9d4bd81c (Fx_create_frame, x_create_tip_frame): Use new version of x_new_fontset.
Jason Rumney <jasonr@gnu.org>
parents: 88123
diff changeset
4897 fontp->encoding_type = FONT_ENCODING_NOT_DECIDED;
23506
246a14f0622f (Vx_pixel_size_width): New global variable.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23407
diff changeset
4898
246a14f0622f (Vx_pixel_size_width): New global variable.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23407
diff changeset
4899 /* The following three values are set to 0 under W32, which is
246a14f0622f (Vx_pixel_size_width): New global variable.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23407
diff changeset
4900 what they get set to if XGetFontProperty fails under X. */
246a14f0622f (Vx_pixel_size_width): New global variable.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23407
diff changeset
4901 fontp->baseline_offset = 0;
246a14f0622f (Vx_pixel_size_width): New global variable.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23407
diff changeset
4902 fontp->relative_compose = 0;
24147
c83b0bc4e8b9 (Vw32_bdf_filename_alist): New variable.
Geoff Voelker <voelker@cs.washington.edu>
parents: 24130
diff changeset
4903 fontp->default_ascent = 0;
23506
246a14f0622f (Vx_pixel_size_width): New global variable.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23407
diff changeset
4904
27397
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
4905 /* Set global flag fonts_changed_p to non-zero if the font loaded
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
4906 has a character with a smaller width than any other character
43398
8782b8cfed62 *** empty log message ***
Jason Rumney <jasonr@gnu.org>
parents: 43210
diff changeset
4907 before, or if the font loaded has a smaller height than any
27397
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
4908 other font loaded before. If this happens, it will make a
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
4909 glyph matrix reallocation necessary. */
43398
8782b8cfed62 *** empty log message ***
Jason Rumney <jasonr@gnu.org>
parents: 43210
diff changeset
4910 fonts_changed_p |= x_compute_min_glyph_bounds (f);
23506
246a14f0622f (Vx_pixel_size_width): New global variable.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23407
diff changeset
4911 UNBLOCK_INPUT;
246a14f0622f (Vx_pixel_size_width): New global variable.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23407
diff changeset
4912 return fontp;
246a14f0622f (Vx_pixel_size_width): New global variable.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23407
diff changeset
4913 }
246a14f0622f (Vx_pixel_size_width): New global variable.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23407
diff changeset
4914 }
246a14f0622f (Vx_pixel_size_width): New global variable.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23407
diff changeset
4915
24147
c83b0bc4e8b9 (Vw32_bdf_filename_alist): New variable.
Geoff Voelker <voelker@cs.washington.edu>
parents: 24130
diff changeset
4916 /* Load font named FONTNAME of size SIZE for frame F, and return a
c83b0bc4e8b9 (Vw32_bdf_filename_alist): New variable.
Geoff Voelker <voelker@cs.washington.edu>
parents: 24130
diff changeset
4917 pointer to the structure font_info while allocating it dynamically.
c83b0bc4e8b9 (Vw32_bdf_filename_alist): New variable.
Geoff Voelker <voelker@cs.washington.edu>
parents: 24130
diff changeset
4918 If loading fails, return NULL. */
c83b0bc4e8b9 (Vw32_bdf_filename_alist): New variable.
Geoff Voelker <voelker@cs.washington.edu>
parents: 24130
diff changeset
4919 struct font_info *
79387
0ca197abc593 (Fw32_registered_hot_keys): Don't return the nil values corresponding
Juanma Barranquero <lekktu@gmail.com>
parents: 79381
diff changeset
4920 w32_load_font (f, fontname, size)
0ca197abc593 (Fw32_registered_hot_keys): Don't return the nil values corresponding
Juanma Barranquero <lekktu@gmail.com>
parents: 79381
diff changeset
4921 struct frame *f;
0ca197abc593 (Fw32_registered_hot_keys): Don't return the nil values corresponding
Juanma Barranquero <lekktu@gmail.com>
parents: 79381
diff changeset
4922 char * fontname;
0ca197abc593 (Fw32_registered_hot_keys): Don't return the nil values corresponding
Juanma Barranquero <lekktu@gmail.com>
parents: 79381
diff changeset
4923 int size;
24147
c83b0bc4e8b9 (Vw32_bdf_filename_alist): New variable.
Geoff Voelker <voelker@cs.washington.edu>
parents: 24130
diff changeset
4924 {
c83b0bc4e8b9 (Vw32_bdf_filename_alist): New variable.
Geoff Voelker <voelker@cs.washington.edu>
parents: 24130
diff changeset
4925 Lisp_Object bdf_fonts;
c83b0bc4e8b9 (Vw32_bdf_filename_alist): New variable.
Geoff Voelker <voelker@cs.washington.edu>
parents: 24130
diff changeset
4926 struct font_info *retval = NULL;
56855
650b7ca40098 2004-08-31 NAKAMURA Toshikazu <nr-tkz@nifty.com> (tiny change)
Jason Rumney <jasonr@gnu.org>
parents: 56480
diff changeset
4927 struct w32_display_info *dpyinfo = FRAME_W32_DISPLAY_INFO (f);
24147
c83b0bc4e8b9 (Vw32_bdf_filename_alist): New variable.
Geoff Voelker <voelker@cs.washington.edu>
parents: 24130
diff changeset
4928
35288
912ea0b8e09b (x_to_w32_color, x_set_icon_name, xlfd_strip_height)
Jason Rumney <jasonr@gnu.org>
parents: 34998
diff changeset
4929 bdf_fonts = w32_list_bdf_fonts (build_string (fontname), 1);
24147
c83b0bc4e8b9 (Vw32_bdf_filename_alist): New variable.
Geoff Voelker <voelker@cs.washington.edu>
parents: 24130
diff changeset
4930
c83b0bc4e8b9 (Vw32_bdf_filename_alist): New variable.
Geoff Voelker <voelker@cs.washington.edu>
parents: 24130
diff changeset
4931 while (!retval && CONSP (bdf_fonts))
c83b0bc4e8b9 (Vw32_bdf_filename_alist): New variable.
Geoff Voelker <voelker@cs.washington.edu>
parents: 24130
diff changeset
4932 {
c83b0bc4e8b9 (Vw32_bdf_filename_alist): New variable.
Geoff Voelker <voelker@cs.washington.edu>
parents: 24130
diff changeset
4933 char *bdf_name, *bdf_file;
c83b0bc4e8b9 (Vw32_bdf_filename_alist): New variable.
Geoff Voelker <voelker@cs.washington.edu>
parents: 24130
diff changeset
4934 Lisp_Object bdf_pair;
56855
650b7ca40098 2004-08-31 NAKAMURA Toshikazu <nr-tkz@nifty.com> (tiny change)
Jason Rumney <jasonr@gnu.org>
parents: 56480
diff changeset
4935 int i;
24147
c83b0bc4e8b9 (Vw32_bdf_filename_alist): New variable.
Geoff Voelker <voelker@cs.washington.edu>
parents: 24130
diff changeset
4936
46370
40db0673e6f0 Most uses of XSTRING combined with STRING_BYTES or indirection changed to
Ken Raeburn <raeburn@raeburn.org>
parents: 46293
diff changeset
4937 bdf_name = SDATA (XCAR (bdf_fonts));
25646
9154af188477 Use XCAR and XCDR instead of explicit member references.
Ken Raeburn <raeburn@raeburn.org>
parents: 25289
diff changeset
4938 bdf_pair = Fassoc (XCAR (bdf_fonts), Vw32_bdf_filename_alist);
46370
40db0673e6f0 Most uses of XSTRING combined with STRING_BYTES or indirection changed to
Ken Raeburn <raeburn@raeburn.org>
parents: 46293
diff changeset
4939 bdf_file = SDATA (XCDR (bdf_pair));
24147
c83b0bc4e8b9 (Vw32_bdf_filename_alist): New variable.
Geoff Voelker <voelker@cs.washington.edu>
parents: 24130
diff changeset
4940
92935
c99b62a964c4 (MONITOR_DEFAULT_TO_NEAREST, struct MONITOR_INFO)
Jason Rumney <jasonr@gnu.org>
parents: 92362
diff changeset
4941 /* If the font is already loaded, do not load it again. */
56855
650b7ca40098 2004-08-31 NAKAMURA Toshikazu <nr-tkz@nifty.com> (tiny change)
Jason Rumney <jasonr@gnu.org>
parents: 56480
diff changeset
4942 for (i = 0; i < dpyinfo->n_fonts; i++)
650b7ca40098 2004-08-31 NAKAMURA Toshikazu <nr-tkz@nifty.com> (tiny change)
Jason Rumney <jasonr@gnu.org>
parents: 56480
diff changeset
4943 {
650b7ca40098 2004-08-31 NAKAMURA Toshikazu <nr-tkz@nifty.com> (tiny change)
Jason Rumney <jasonr@gnu.org>
parents: 56480
diff changeset
4944 if ((dpyinfo->font_table[i].name
650b7ca40098 2004-08-31 NAKAMURA Toshikazu <nr-tkz@nifty.com> (tiny change)
Jason Rumney <jasonr@gnu.org>
parents: 56480
diff changeset
4945 && !strcmp (dpyinfo->font_table[i].name, bdf_name))
650b7ca40098 2004-08-31 NAKAMURA Toshikazu <nr-tkz@nifty.com> (tiny change)
Jason Rumney <jasonr@gnu.org>
parents: 56480
diff changeset
4946 || (dpyinfo->font_table[i].full_name
650b7ca40098 2004-08-31 NAKAMURA Toshikazu <nr-tkz@nifty.com> (tiny change)
Jason Rumney <jasonr@gnu.org>
parents: 56480
diff changeset
4947 && !strcmp (dpyinfo->font_table[i].full_name, bdf_name)))
56856
d407cd57475c Fix typo in last checkin
Jason Rumney <jasonr@gnu.org>
parents: 56855
diff changeset
4948 return dpyinfo->font_table + i;
56855
650b7ca40098 2004-08-31 NAKAMURA Toshikazu <nr-tkz@nifty.com> (tiny change)
Jason Rumney <jasonr@gnu.org>
parents: 56480
diff changeset
4949 }
650b7ca40098 2004-08-31 NAKAMURA Toshikazu <nr-tkz@nifty.com> (tiny change)
Jason Rumney <jasonr@gnu.org>
parents: 56480
diff changeset
4950
24147
c83b0bc4e8b9 (Vw32_bdf_filename_alist): New variable.
Geoff Voelker <voelker@cs.washington.edu>
parents: 24130
diff changeset
4951 retval = w32_load_bdf_font (f, bdf_name, size, bdf_file);
c83b0bc4e8b9 (Vw32_bdf_filename_alist): New variable.
Geoff Voelker <voelker@cs.washington.edu>
parents: 24130
diff changeset
4952
25646
9154af188477 Use XCAR and XCDR instead of explicit member references.
Ken Raeburn <raeburn@raeburn.org>
parents: 25289
diff changeset
4953 bdf_fonts = XCDR (bdf_fonts);
24147
c83b0bc4e8b9 (Vw32_bdf_filename_alist): New variable.
Geoff Voelker <voelker@cs.washington.edu>
parents: 24130
diff changeset
4954 }
c83b0bc4e8b9 (Vw32_bdf_filename_alist): New variable.
Geoff Voelker <voelker@cs.washington.edu>
parents: 24130
diff changeset
4955
c83b0bc4e8b9 (Vw32_bdf_filename_alist): New variable.
Geoff Voelker <voelker@cs.washington.edu>
parents: 24130
diff changeset
4956 if (retval)
c83b0bc4e8b9 (Vw32_bdf_filename_alist): New variable.
Geoff Voelker <voelker@cs.washington.edu>
parents: 24130
diff changeset
4957 return retval;
c83b0bc4e8b9 (Vw32_bdf_filename_alist): New variable.
Geoff Voelker <voelker@cs.washington.edu>
parents: 24130
diff changeset
4958
79387
0ca197abc593 (Fw32_registered_hot_keys): Don't return the nil values corresponding
Juanma Barranquero <lekktu@gmail.com>
parents: 79381
diff changeset
4959 return w32_load_system_font (f, fontname, size);
24147
c83b0bc4e8b9 (Vw32_bdf_filename_alist): New variable.
Geoff Voelker <voelker@cs.washington.edu>
parents: 24130
diff changeset
4960 }
c83b0bc4e8b9 (Vw32_bdf_filename_alist): New variable.
Geoff Voelker <voelker@cs.washington.edu>
parents: 24130
diff changeset
4961
c83b0bc4e8b9 (Vw32_bdf_filename_alist): New variable.
Geoff Voelker <voelker@cs.washington.edu>
parents: 24130
diff changeset
4962
47942
080b4586492b Fix typo in comment.
Juanma Barranquero <lekktu@gmail.com>
parents: 47731
diff changeset
4963 void
16588
481b7874a1e9 Change identifiers of the form win32* to w32*.
Geoff Voelker <voelker@cs.washington.edu>
parents: 16259
diff changeset
4964 w32_unload_font (dpyinfo, font)
481b7874a1e9 Change identifiers of the form win32* to w32*.
Geoff Voelker <voelker@cs.washington.edu>
parents: 16259
diff changeset
4965 struct w32_display_info *dpyinfo;
13434
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
4966 XFontStruct * font;
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
4967 {
47942
080b4586492b Fix typo in comment.
Juanma Barranquero <lekktu@gmail.com>
parents: 47731
diff changeset
4968 if (font)
13434
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
4969 {
95481
4390d64d3328 Make "xfree (NULL)" a no-op; remove useless if-before-xfree.
Jim Meyering <jim@meyering.net>
parents: 95355
diff changeset
4970 xfree (font->per_char);
24147
c83b0bc4e8b9 (Vw32_bdf_filename_alist): New variable.
Geoff Voelker <voelker@cs.washington.edu>
parents: 24130
diff changeset
4971 if (font->bdf) w32_free_bdf_font (font->bdf);
c83b0bc4e8b9 (Vw32_bdf_filename_alist): New variable.
Geoff Voelker <voelker@cs.washington.edu>
parents: 24130
diff changeset
4972
79387
0ca197abc593 (Fw32_registered_hot_keys): Don't return the nil values corresponding
Juanma Barranquero <lekktu@gmail.com>
parents: 79381
diff changeset
4973 if (font->hfont) DeleteObject (font->hfont);
13434
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
4974 xfree (font);
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
4975 }
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
4976 }
94917
e61553aa7a73 Throughout the file, delete all USE_FONT_BACKEND
Kenichi Handa <handa@m17n.org>
parents: 94618
diff changeset
4977 #endif /* OLD_FONT */
13434
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
4978
16588
481b7874a1e9 Change identifiers of the form win32* to w32*.
Geoff Voelker <voelker@cs.washington.edu>
parents: 16259
diff changeset
4979 /* The font conversion stuff between x and w32 */
13434
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
4980
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
4981 /* X font string is as follows (from faces.el)
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
4982 * (let ((- "[-?]")
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
4983 * (foundry "[^-]+")
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
4984 * (family "[^-]+")
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
4985 * (weight "\\(bold\\|demibold\\|medium\\)") ; 1
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
4986 * (weight\? "\\([^-]*\\)") ; 1
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
4987 * (slant "\\([ior]\\)") ; 2
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
4988 * (slant\? "\\([^-]?\\)") ; 2
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
4989 * (swidth "\\([^-]*\\)") ; 3
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
4990 * (adstyle "[^-]*") ; 4
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
4991 * (pixelsize "[0-9]+")
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
4992 * (pointsize "[0-9][0-9]+")
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
4993 * (resx "[0-9][0-9]+")
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
4994 * (resy "[0-9][0-9]+")
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
4995 * (spacing "[cmp?*]")
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
4996 * (avgwidth "[0-9]+")
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
4997 * (registry "[^-]+")
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
4998 * (encoding "[^-]+")
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
4999 * )
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
5000 */
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
5001
47942
080b4586492b Fix typo in comment.
Juanma Barranquero <lekktu@gmail.com>
parents: 47731
diff changeset
5002 static LONG
16588
481b7874a1e9 Change identifiers of the form win32* to w32*.
Geoff Voelker <voelker@cs.washington.edu>
parents: 16259
diff changeset
5003 x_to_w32_weight (lpw)
13434
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
5004 char * lpw;
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
5005 {
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
5006 if (!lpw) return (FW_DONTCARE);
15147
38c0ce06203f (quit_char, Vwin32_enable_italics, Vwin32_enable_palette):
Geoff Voelker <voelker@cs.washington.edu>
parents: 15034
diff changeset
5007
95218
0f6fa3ec70b6 * dispextern.h, xfaces.c (xstrcasecmp): Renamed from xstricmp.
Jason Rumney <jasonr@gnu.org>
parents: 95162
diff changeset
5008 if (xstrcasecmp (lpw, "heavy") == 0) return FW_HEAVY;
0f6fa3ec70b6 * dispextern.h, xfaces.c (xstrcasecmp): Renamed from xstricmp.
Jason Rumney <jasonr@gnu.org>
parents: 95162
diff changeset
5009 else if (xstrcasecmp (lpw, "extrabold") == 0) return FW_EXTRABOLD;
0f6fa3ec70b6 * dispextern.h, xfaces.c (xstrcasecmp): Renamed from xstricmp.
Jason Rumney <jasonr@gnu.org>
parents: 95162
diff changeset
5010 else if (xstrcasecmp (lpw, "bold") == 0) return FW_BOLD;
0f6fa3ec70b6 * dispextern.h, xfaces.c (xstrcasecmp): Renamed from xstricmp.
Jason Rumney <jasonr@gnu.org>
parents: 95162
diff changeset
5011 else if (xstrcasecmp (lpw, "demibold") == 0) return FW_SEMIBOLD;
0f6fa3ec70b6 * dispextern.h, xfaces.c (xstrcasecmp): Renamed from xstricmp.
Jason Rumney <jasonr@gnu.org>
parents: 95162
diff changeset
5012 else if (xstrcasecmp (lpw, "semibold") == 0) return FW_SEMIBOLD;
0f6fa3ec70b6 * dispextern.h, xfaces.c (xstrcasecmp): Renamed from xstricmp.
Jason Rumney <jasonr@gnu.org>
parents: 95162
diff changeset
5013 else if (xstrcasecmp (lpw, "medium") == 0) return FW_MEDIUM;
0f6fa3ec70b6 * dispextern.h, xfaces.c (xstrcasecmp): Renamed from xstricmp.
Jason Rumney <jasonr@gnu.org>
parents: 95162
diff changeset
5014 else if (xstrcasecmp (lpw, "normal") == 0) return FW_NORMAL;
0f6fa3ec70b6 * dispextern.h, xfaces.c (xstrcasecmp): Renamed from xstricmp.
Jason Rumney <jasonr@gnu.org>
parents: 95162
diff changeset
5015 else if (xstrcasecmp (lpw, "light") == 0) return FW_LIGHT;
0f6fa3ec70b6 * dispextern.h, xfaces.c (xstrcasecmp): Renamed from xstricmp.
Jason Rumney <jasonr@gnu.org>
parents: 95162
diff changeset
5016 else if (xstrcasecmp (lpw, "extralight") == 0) return FW_EXTRALIGHT;
0f6fa3ec70b6 * dispextern.h, xfaces.c (xstrcasecmp): Renamed from xstricmp.
Jason Rumney <jasonr@gnu.org>
parents: 95162
diff changeset
5017 else if (xstrcasecmp (lpw, "thin") == 0) return FW_THIN;
13434
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
5018 else
15147
38c0ce06203f (quit_char, Vwin32_enable_italics, Vwin32_enable_palette):
Geoff Voelker <voelker@cs.washington.edu>
parents: 15034
diff changeset
5019 return FW_DONTCARE;
13434
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
5020 }
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
5021
15147
38c0ce06203f (quit_char, Vwin32_enable_italics, Vwin32_enable_palette):
Geoff Voelker <voelker@cs.washington.edu>
parents: 15034
diff changeset
5022
47942
080b4586492b Fix typo in comment.
Juanma Barranquero <lekktu@gmail.com>
parents: 47731
diff changeset
5023 static char *
16588
481b7874a1e9 Change identifiers of the form win32* to w32*.
Geoff Voelker <voelker@cs.washington.edu>
parents: 16259
diff changeset
5024 w32_to_x_weight (fnweight)
13434
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
5025 int fnweight;
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
5026 {
15147
38c0ce06203f (quit_char, Vwin32_enable_italics, Vwin32_enable_palette):
Geoff Voelker <voelker@cs.washington.edu>
parents: 15034
diff changeset
5027 if (fnweight >= FW_HEAVY) return "heavy";
38c0ce06203f (quit_char, Vwin32_enable_italics, Vwin32_enable_palette):
Geoff Voelker <voelker@cs.washington.edu>
parents: 15034
diff changeset
5028 if (fnweight >= FW_EXTRABOLD) return "extrabold";
38c0ce06203f (quit_char, Vwin32_enable_italics, Vwin32_enable_palette):
Geoff Voelker <voelker@cs.washington.edu>
parents: 15034
diff changeset
5029 if (fnweight >= FW_BOLD) return "bold";
24856
07a04c532706 (w32_to_x_weight): Return "demibold" instead of "semibold".
Andrew Innes <andrewi@gnu.org>
parents: 24751
diff changeset
5030 if (fnweight >= FW_SEMIBOLD) return "demibold";
15147
38c0ce06203f (quit_char, Vwin32_enable_italics, Vwin32_enable_palette):
Geoff Voelker <voelker@cs.washington.edu>
parents: 15034
diff changeset
5031 if (fnweight >= FW_MEDIUM) return "medium";
38c0ce06203f (quit_char, Vwin32_enable_italics, Vwin32_enable_palette):
Geoff Voelker <voelker@cs.washington.edu>
parents: 15034
diff changeset
5032 if (fnweight >= FW_NORMAL) return "normal";
38c0ce06203f (quit_char, Vwin32_enable_italics, Vwin32_enable_palette):
Geoff Voelker <voelker@cs.washington.edu>
parents: 15034
diff changeset
5033 if (fnweight >= FW_LIGHT) return "light";
38c0ce06203f (quit_char, Vwin32_enable_italics, Vwin32_enable_palette):
Geoff Voelker <voelker@cs.washington.edu>
parents: 15034
diff changeset
5034 if (fnweight >= FW_EXTRALIGHT) return "extralight";
38c0ce06203f (quit_char, Vwin32_enable_italics, Vwin32_enable_palette):
Geoff Voelker <voelker@cs.washington.edu>
parents: 15034
diff changeset
5035 if (fnweight >= FW_THIN) return "thin";
38c0ce06203f (quit_char, Vwin32_enable_italics, Vwin32_enable_palette):
Geoff Voelker <voelker@cs.washington.edu>
parents: 15034
diff changeset
5036 else
38c0ce06203f (quit_char, Vwin32_enable_italics, Vwin32_enable_palette):
Geoff Voelker <voelker@cs.washington.edu>
parents: 15034
diff changeset
5037 return "*";
38c0ce06203f (quit_char, Vwin32_enable_italics, Vwin32_enable_palette):
Geoff Voelker <voelker@cs.washington.edu>
parents: 15034
diff changeset
5038 }
38c0ce06203f (quit_char, Vwin32_enable_italics, Vwin32_enable_palette):
Geoff Voelker <voelker@cs.washington.edu>
parents: 15034
diff changeset
5039
90865
6d2559699bd0 [USE_FONT_BACKEND]: Port font backend changes from xfns.c.
Jason Rumney <jasonr@gnu.org>
parents: 90796
diff changeset
5040 LONG
16588
481b7874a1e9 Change identifiers of the form win32* to w32*.
Geoff Voelker <voelker@cs.washington.edu>
parents: 16259
diff changeset
5041 x_to_w32_charset (lpcs)
15147
38c0ce06203f (quit_char, Vwin32_enable_italics, Vwin32_enable_palette):
Geoff Voelker <voelker@cs.washington.edu>
parents: 15034
diff changeset
5042 char * lpcs;
38c0ce06203f (quit_char, Vwin32_enable_italics, Vwin32_enable_palette):
Geoff Voelker <voelker@cs.washington.edu>
parents: 15034
diff changeset
5043 {
33387
01a10bc04233 (Qw32_charset_hangeul): Rename to match w32 headers.
Jason Rumney <jasonr@gnu.org>
parents: 33216
diff changeset
5044 Lisp_Object this_entry, w32_charset;
39548
6192be048459 (x_to_w32_color): Fix argument to alloca.
Andrew Innes <andrewi@gnu.org>
parents: 39137
diff changeset
5045 char *charset;
6192be048459 (x_to_w32_color): Fix argument to alloca.
Andrew Innes <andrewi@gnu.org>
parents: 39137
diff changeset
5046 int len = strlen (lpcs);
6192be048459 (x_to_w32_color): Fix argument to alloca.
Andrew Innes <andrewi@gnu.org>
parents: 39137
diff changeset
5047
6192be048459 (x_to_w32_color): Fix argument to alloca.
Andrew Innes <andrewi@gnu.org>
parents: 39137
diff changeset
5048 /* Support "*-#nnn" format for unknown charsets. */
6192be048459 (x_to_w32_color): Fix argument to alloca.
Andrew Innes <andrewi@gnu.org>
parents: 39137
diff changeset
5049 if (strncmp (lpcs, "*-#", 3) == 0)
6192be048459 (x_to_w32_color): Fix argument to alloca.
Andrew Innes <andrewi@gnu.org>
parents: 39137
diff changeset
5050 return atoi (lpcs + 3);
6192be048459 (x_to_w32_color): Fix argument to alloca.
Andrew Innes <andrewi@gnu.org>
parents: 39137
diff changeset
5051
89594
169b2685d6f6 (w32_load_system_font): Default charset to -1.
Jason Rumney <jasonr@gnu.org>
parents: 89585
diff changeset
5052 /* All Windows fonts qualify as unicode. */
169b2685d6f6 (w32_load_system_font): Default charset to -1.
Jason Rumney <jasonr@gnu.org>
parents: 89585
diff changeset
5053 if (!strncmp (lpcs, "iso10646", 8))
169b2685d6f6 (w32_load_system_font): Default charset to -1.
Jason Rumney <jasonr@gnu.org>
parents: 89585
diff changeset
5054 return DEFAULT_CHARSET;
169b2685d6f6 (w32_load_system_font): Default charset to -1.
Jason Rumney <jasonr@gnu.org>
parents: 89585
diff changeset
5055
39548
6192be048459 (x_to_w32_color): Fix argument to alloca.
Andrew Innes <andrewi@gnu.org>
parents: 39137
diff changeset
5056 /* Handle wildcards by ignoring them; eg. treat "big5*-*" as "big5". */
6192be048459 (x_to_w32_color): Fix argument to alloca.
Andrew Innes <andrewi@gnu.org>
parents: 39137
diff changeset
5057 charset = alloca (len + 1);
6192be048459 (x_to_w32_color): Fix argument to alloca.
Andrew Innes <andrewi@gnu.org>
parents: 39137
diff changeset
5058 strcpy (charset, lpcs);
6192be048459 (x_to_w32_color): Fix argument to alloca.
Andrew Innes <andrewi@gnu.org>
parents: 39137
diff changeset
5059 lpcs = strchr (charset, '*');
6192be048459 (x_to_w32_color): Fix argument to alloca.
Andrew Innes <andrewi@gnu.org>
parents: 39137
diff changeset
5060 if (lpcs)
89594
169b2685d6f6 (w32_load_system_font): Default charset to -1.
Jason Rumney <jasonr@gnu.org>
parents: 89585
diff changeset
5061 *lpcs = '\0';
29317
2d3d5bf49d4e Format and doc changes to bring closer to xfns.c.
Jason Rumney <jasonr@gnu.org>
parents: 29021
diff changeset
5062
2d3d5bf49d4e Format and doc changes to bring closer to xfns.c.
Jason Rumney <jasonr@gnu.org>
parents: 29021
diff changeset
5063 /* Look through w32-charset-info-alist for the character set.
2d3d5bf49d4e Format and doc changes to bring closer to xfns.c.
Jason Rumney <jasonr@gnu.org>
parents: 29021
diff changeset
5064 Format of each entry is
2d3d5bf49d4e Format and doc changes to bring closer to xfns.c.
Jason Rumney <jasonr@gnu.org>
parents: 29021
diff changeset
5065 (CHARSET_NAME . (WINDOWS_CHARSET . CODEPAGE)).
2d3d5bf49d4e Format and doc changes to bring closer to xfns.c.
Jason Rumney <jasonr@gnu.org>
parents: 29021
diff changeset
5066 */
79387
0ca197abc593 (Fw32_registered_hot_keys): Don't return the nil values corresponding
Juanma Barranquero <lekktu@gmail.com>
parents: 79381
diff changeset
5067 this_entry = Fassoc (build_string (charset), Vw32_charset_info_alist);
0ca197abc593 (Fw32_registered_hot_keys): Don't return the nil values corresponding
Juanma Barranquero <lekktu@gmail.com>
parents: 79381
diff changeset
5068
0ca197abc593 (Fw32_registered_hot_keys): Don't return the nil values corresponding
Juanma Barranquero <lekktu@gmail.com>
parents: 79381
diff changeset
5069 if (NILP (this_entry))
33387
01a10bc04233 (Qw32_charset_hangeul): Rename to match w32 headers.
Jason Rumney <jasonr@gnu.org>
parents: 33216
diff changeset
5070 {
01a10bc04233 (Qw32_charset_hangeul): Rename to match w32 headers.
Jason Rumney <jasonr@gnu.org>
parents: 33216
diff changeset
5071 /* At startup, we want iso8859-1 fonts to come up properly. */
95218
0f6fa3ec70b6 * dispextern.h, xfaces.c (xstrcasecmp): Renamed from xstricmp.
Jason Rumney <jasonr@gnu.org>
parents: 95162
diff changeset
5072 if (xstrcasecmp (charset, "iso8859-1") == 0)
33387
01a10bc04233 (Qw32_charset_hangeul): Rename to match w32 headers.
Jason Rumney <jasonr@gnu.org>
parents: 33216
diff changeset
5073 return ANSI_CHARSET;
01a10bc04233 (Qw32_charset_hangeul): Rename to match w32 headers.
Jason Rumney <jasonr@gnu.org>
parents: 33216
diff changeset
5074 else
01a10bc04233 (Qw32_charset_hangeul): Rename to match w32 headers.
Jason Rumney <jasonr@gnu.org>
parents: 33216
diff changeset
5075 return DEFAULT_CHARSET;
01a10bc04233 (Qw32_charset_hangeul): Rename to match w32 headers.
Jason Rumney <jasonr@gnu.org>
parents: 33216
diff changeset
5076 }
01a10bc04233 (Qw32_charset_hangeul): Rename to match w32 headers.
Jason Rumney <jasonr@gnu.org>
parents: 33216
diff changeset
5077
01a10bc04233 (Qw32_charset_hangeul): Rename to match w32 headers.
Jason Rumney <jasonr@gnu.org>
parents: 33216
diff changeset
5078 w32_charset = Fcar (Fcdr (this_entry));
01a10bc04233 (Qw32_charset_hangeul): Rename to match w32 headers.
Jason Rumney <jasonr@gnu.org>
parents: 33216
diff changeset
5079
42845
ebb3a20bc357 (w32_load_system_font, w32_to_x_charset): Use strnicmp
Jason Rumney <jasonr@gnu.org>
parents: 42833
diff changeset
5080 /* Translate Lisp symbol to number. */
55656
29b250a07fe0 (Fw32_register_hot_key, Fw32_unregister_hot_key)
Jason Rumney <jasonr@gnu.org>
parents: 55592
diff changeset
5081 if (EQ (w32_charset, Qw32_charset_ansi))
33387
01a10bc04233 (Qw32_charset_hangeul): Rename to match w32 headers.
Jason Rumney <jasonr@gnu.org>
parents: 33216
diff changeset
5082 return ANSI_CHARSET;
55656
29b250a07fe0 (Fw32_register_hot_key, Fw32_unregister_hot_key)
Jason Rumney <jasonr@gnu.org>
parents: 55592
diff changeset
5083 if (EQ (w32_charset, Qw32_charset_symbol))
33387
01a10bc04233 (Qw32_charset_hangeul): Rename to match w32 headers.
Jason Rumney <jasonr@gnu.org>
parents: 33216
diff changeset
5084 return SYMBOL_CHARSET;
55656
29b250a07fe0 (Fw32_register_hot_key, Fw32_unregister_hot_key)
Jason Rumney <jasonr@gnu.org>
parents: 55592
diff changeset
5085 if (EQ (w32_charset, Qw32_charset_shiftjis))
33387
01a10bc04233 (Qw32_charset_hangeul): Rename to match w32 headers.
Jason Rumney <jasonr@gnu.org>
parents: 33216
diff changeset
5086 return SHIFTJIS_CHARSET;
55656
29b250a07fe0 (Fw32_register_hot_key, Fw32_unregister_hot_key)
Jason Rumney <jasonr@gnu.org>
parents: 55592
diff changeset
5087 if (EQ (w32_charset, Qw32_charset_hangeul))
33387
01a10bc04233 (Qw32_charset_hangeul): Rename to match w32 headers.
Jason Rumney <jasonr@gnu.org>
parents: 33216
diff changeset
5088 return HANGEUL_CHARSET;
55656
29b250a07fe0 (Fw32_register_hot_key, Fw32_unregister_hot_key)
Jason Rumney <jasonr@gnu.org>
parents: 55592
diff changeset
5089 if (EQ (w32_charset, Qw32_charset_chinesebig5))
33387
01a10bc04233 (Qw32_charset_hangeul): Rename to match w32 headers.
Jason Rumney <jasonr@gnu.org>
parents: 33216
diff changeset
5090 return CHINESEBIG5_CHARSET;
55656
29b250a07fe0 (Fw32_register_hot_key, Fw32_unregister_hot_key)
Jason Rumney <jasonr@gnu.org>
parents: 55592
diff changeset
5091 if (EQ (w32_charset, Qw32_charset_gb2312))
33387
01a10bc04233 (Qw32_charset_hangeul): Rename to match w32 headers.
Jason Rumney <jasonr@gnu.org>
parents: 33216
diff changeset
5092 return GB2312_CHARSET;
55656
29b250a07fe0 (Fw32_register_hot_key, Fw32_unregister_hot_key)
Jason Rumney <jasonr@gnu.org>
parents: 55592
diff changeset
5093 if (EQ (w32_charset, Qw32_charset_oem))
33387
01a10bc04233 (Qw32_charset_hangeul): Rename to match w32 headers.
Jason Rumney <jasonr@gnu.org>
parents: 33216
diff changeset
5094 return OEM_CHARSET;
29317
2d3d5bf49d4e Format and doc changes to bring closer to xfns.c.
Jason Rumney <jasonr@gnu.org>
parents: 29021
diff changeset
5095 #ifdef JOHAB_CHARSET
55656
29b250a07fe0 (Fw32_register_hot_key, Fw32_unregister_hot_key)
Jason Rumney <jasonr@gnu.org>
parents: 55592
diff changeset
5096 if (EQ (w32_charset, Qw32_charset_johab))
33387
01a10bc04233 (Qw32_charset_hangeul): Rename to match w32 headers.
Jason Rumney <jasonr@gnu.org>
parents: 33216
diff changeset
5097 return JOHAB_CHARSET;
55656
29b250a07fe0 (Fw32_register_hot_key, Fw32_unregister_hot_key)
Jason Rumney <jasonr@gnu.org>
parents: 55592
diff changeset
5098 if (EQ (w32_charset, Qw32_charset_easteurope))
33387
01a10bc04233 (Qw32_charset_hangeul): Rename to match w32 headers.
Jason Rumney <jasonr@gnu.org>
parents: 33216
diff changeset
5099 return EASTEUROPE_CHARSET;
55656
29b250a07fe0 (Fw32_register_hot_key, Fw32_unregister_hot_key)
Jason Rumney <jasonr@gnu.org>
parents: 55592
diff changeset
5100 if (EQ (w32_charset, Qw32_charset_turkish))
33387
01a10bc04233 (Qw32_charset_hangeul): Rename to match w32 headers.
Jason Rumney <jasonr@gnu.org>
parents: 33216
diff changeset
5101 return TURKISH_CHARSET;
55656
29b250a07fe0 (Fw32_register_hot_key, Fw32_unregister_hot_key)
Jason Rumney <jasonr@gnu.org>
parents: 55592
diff changeset
5102 if (EQ (w32_charset, Qw32_charset_baltic))
33387
01a10bc04233 (Qw32_charset_hangeul): Rename to match w32 headers.
Jason Rumney <jasonr@gnu.org>
parents: 33216
diff changeset
5103 return BALTIC_CHARSET;
55656
29b250a07fe0 (Fw32_register_hot_key, Fw32_unregister_hot_key)
Jason Rumney <jasonr@gnu.org>
parents: 55592
diff changeset
5104 if (EQ (w32_charset, Qw32_charset_russian))
33387
01a10bc04233 (Qw32_charset_hangeul): Rename to match w32 headers.
Jason Rumney <jasonr@gnu.org>
parents: 33216
diff changeset
5105 return RUSSIAN_CHARSET;
55656
29b250a07fe0 (Fw32_register_hot_key, Fw32_unregister_hot_key)
Jason Rumney <jasonr@gnu.org>
parents: 55592
diff changeset
5106 if (EQ (w32_charset, Qw32_charset_arabic))
33387
01a10bc04233 (Qw32_charset_hangeul): Rename to match w32 headers.
Jason Rumney <jasonr@gnu.org>
parents: 33216
diff changeset
5107 return ARABIC_CHARSET;
55656
29b250a07fe0 (Fw32_register_hot_key, Fw32_unregister_hot_key)
Jason Rumney <jasonr@gnu.org>
parents: 55592
diff changeset
5108 if (EQ (w32_charset, Qw32_charset_greek))
33387
01a10bc04233 (Qw32_charset_hangeul): Rename to match w32 headers.
Jason Rumney <jasonr@gnu.org>
parents: 33216
diff changeset
5109 return GREEK_CHARSET;
55656
29b250a07fe0 (Fw32_register_hot_key, Fw32_unregister_hot_key)
Jason Rumney <jasonr@gnu.org>
parents: 55592
diff changeset
5110 if (EQ (w32_charset, Qw32_charset_hebrew))
33387
01a10bc04233 (Qw32_charset_hangeul): Rename to match w32 headers.
Jason Rumney <jasonr@gnu.org>
parents: 33216
diff changeset
5111 return HEBREW_CHARSET;
55656
29b250a07fe0 (Fw32_register_hot_key, Fw32_unregister_hot_key)
Jason Rumney <jasonr@gnu.org>
parents: 55592
diff changeset
5112 if (EQ (w32_charset, Qw32_charset_vietnamese))
33387
01a10bc04233 (Qw32_charset_hangeul): Rename to match w32 headers.
Jason Rumney <jasonr@gnu.org>
parents: 33216
diff changeset
5113 return VIETNAMESE_CHARSET;
55656
29b250a07fe0 (Fw32_register_hot_key, Fw32_unregister_hot_key)
Jason Rumney <jasonr@gnu.org>
parents: 55592
diff changeset
5114 if (EQ (w32_charset, Qw32_charset_thai))
33387
01a10bc04233 (Qw32_charset_hangeul): Rename to match w32 headers.
Jason Rumney <jasonr@gnu.org>
parents: 33216
diff changeset
5115 return THAI_CHARSET;
55656
29b250a07fe0 (Fw32_register_hot_key, Fw32_unregister_hot_key)
Jason Rumney <jasonr@gnu.org>
parents: 55592
diff changeset
5116 if (EQ (w32_charset, Qw32_charset_mac))
33387
01a10bc04233 (Qw32_charset_hangeul): Rename to match w32 headers.
Jason Rumney <jasonr@gnu.org>
parents: 33216
diff changeset
5117 return MAC_CHARSET;
29317
2d3d5bf49d4e Format and doc changes to bring closer to xfns.c.
Jason Rumney <jasonr@gnu.org>
parents: 29021
diff changeset
5118 #endif /* JOHAB_CHARSET */
2d3d5bf49d4e Format and doc changes to bring closer to xfns.c.
Jason Rumney <jasonr@gnu.org>
parents: 29021
diff changeset
5119 #ifdef UNICODE_CHARSET
55656
29b250a07fe0 (Fw32_register_hot_key, Fw32_unregister_hot_key)
Jason Rumney <jasonr@gnu.org>
parents: 55592
diff changeset
5120 if (EQ (w32_charset, Qw32_charset_unicode))
33387
01a10bc04233 (Qw32_charset_hangeul): Rename to match w32 headers.
Jason Rumney <jasonr@gnu.org>
parents: 33216
diff changeset
5121 return UNICODE_CHARSET;
24718
547f54dfbb94 (x_to_w32_charset): Reinstall VIETNAMESE_CHARSET
Andrew Innes <andrewi@gnu.org>
parents: 24695
diff changeset
5122 #endif
29317
2d3d5bf49d4e Format and doc changes to bring closer to xfns.c.
Jason Rumney <jasonr@gnu.org>
parents: 29021
diff changeset
5123
2d3d5bf49d4e Format and doc changes to bring closer to xfns.c.
Jason Rumney <jasonr@gnu.org>
parents: 29021
diff changeset
5124 return DEFAULT_CHARSET;
2d3d5bf49d4e Format and doc changes to bring closer to xfns.c.
Jason Rumney <jasonr@gnu.org>
parents: 29021
diff changeset
5125 }
2d3d5bf49d4e Format and doc changes to bring closer to xfns.c.
Jason Rumney <jasonr@gnu.org>
parents: 29021
diff changeset
5126
15147
38c0ce06203f (quit_char, Vwin32_enable_italics, Vwin32_enable_palette):
Geoff Voelker <voelker@cs.washington.edu>
parents: 15034
diff changeset
5127
90865
6d2559699bd0 [USE_FONT_BACKEND]: Port font backend changes from xfns.c.
Jason Rumney <jasonr@gnu.org>
parents: 90796
diff changeset
5128 char *
89594
169b2685d6f6 (w32_load_system_font): Default charset to -1.
Jason Rumney <jasonr@gnu.org>
parents: 89585
diff changeset
5129 w32_to_x_charset (fncharset, matching)
15147
38c0ce06203f (quit_char, Vwin32_enable_italics, Vwin32_enable_palette):
Geoff Voelker <voelker@cs.washington.edu>
parents: 15034
diff changeset
5130 int fncharset;
89594
169b2685d6f6 (w32_load_system_font): Default charset to -1.
Jason Rumney <jasonr@gnu.org>
parents: 89585
diff changeset
5131 char *matching;
15147
38c0ce06203f (quit_char, Vwin32_enable_italics, Vwin32_enable_palette):
Geoff Voelker <voelker@cs.washington.edu>
parents: 15034
diff changeset
5132 {
40528
7fb50bbb61ad (w32_to_x_charset): Increase size of XLFD charset buffer.
Jason Rumney <jasonr@gnu.org>
parents: 40385
diff changeset
5133 static char buf[32];
33387
01a10bc04233 (Qw32_charset_hangeul): Rename to match w32 headers.
Jason Rumney <jasonr@gnu.org>
parents: 33216
diff changeset
5134 Lisp_Object charset_type;
89594
169b2685d6f6 (w32_load_system_font): Default charset to -1.
Jason Rumney <jasonr@gnu.org>
parents: 89585
diff changeset
5135 int match_len = 0;
169b2685d6f6 (w32_load_system_font): Default charset to -1.
Jason Rumney <jasonr@gnu.org>
parents: 89585
diff changeset
5136
169b2685d6f6 (w32_load_system_font): Default charset to -1.
Jason Rumney <jasonr@gnu.org>
parents: 89585
diff changeset
5137 if (matching)
169b2685d6f6 (w32_load_system_font): Default charset to -1.
Jason Rumney <jasonr@gnu.org>
parents: 89585
diff changeset
5138 {
169b2685d6f6 (w32_load_system_font): Default charset to -1.
Jason Rumney <jasonr@gnu.org>
parents: 89585
diff changeset
5139 /* If fully specified, accept it as it is. Otherwise use a
169b2685d6f6 (w32_load_system_font): Default charset to -1.
Jason Rumney <jasonr@gnu.org>
parents: 89585
diff changeset
5140 substring match. */
169b2685d6f6 (w32_load_system_font): Default charset to -1.
Jason Rumney <jasonr@gnu.org>
parents: 89585
diff changeset
5141 char *wildcard = strchr (matching, '*');
169b2685d6f6 (w32_load_system_font): Default charset to -1.
Jason Rumney <jasonr@gnu.org>
parents: 89585
diff changeset
5142 if (wildcard)
169b2685d6f6 (w32_load_system_font): Default charset to -1.
Jason Rumney <jasonr@gnu.org>
parents: 89585
diff changeset
5143 *wildcard = '\0';
169b2685d6f6 (w32_load_system_font): Default charset to -1.
Jason Rumney <jasonr@gnu.org>
parents: 89585
diff changeset
5144 else if (strchr (matching, '-'))
169b2685d6f6 (w32_load_system_font): Default charset to -1.
Jason Rumney <jasonr@gnu.org>
parents: 89585
diff changeset
5145 return matching;
169b2685d6f6 (w32_load_system_font): Default charset to -1.
Jason Rumney <jasonr@gnu.org>
parents: 89585
diff changeset
5146
169b2685d6f6 (w32_load_system_font): Default charset to -1.
Jason Rumney <jasonr@gnu.org>
parents: 89585
diff changeset
5147 match_len = strlen (matching);
169b2685d6f6 (w32_load_system_font): Default charset to -1.
Jason Rumney <jasonr@gnu.org>
parents: 89585
diff changeset
5148 }
33387
01a10bc04233 (Qw32_charset_hangeul): Rename to match w32 headers.
Jason Rumney <jasonr@gnu.org>
parents: 33216
diff changeset
5149
15147
38c0ce06203f (quit_char, Vwin32_enable_italics, Vwin32_enable_palette):
Geoff Voelker <voelker@cs.washington.edu>
parents: 15034
diff changeset
5150 switch (fncharset)
38c0ce06203f (quit_char, Vwin32_enable_italics, Vwin32_enable_palette):
Geoff Voelker <voelker@cs.washington.edu>
parents: 15034
diff changeset
5151 {
33387
01a10bc04233 (Qw32_charset_hangeul): Rename to match w32 headers.
Jason Rumney <jasonr@gnu.org>
parents: 33216
diff changeset
5152 case ANSI_CHARSET:
01a10bc04233 (Qw32_charset_hangeul): Rename to match w32 headers.
Jason Rumney <jasonr@gnu.org>
parents: 33216
diff changeset
5153 /* Handle startup case of w32-charset-info-alist not
01a10bc04233 (Qw32_charset_hangeul): Rename to match w32 headers.
Jason Rumney <jasonr@gnu.org>
parents: 33216
diff changeset
5154 being set up yet. */
79387
0ca197abc593 (Fw32_registered_hot_keys): Don't return the nil values corresponding
Juanma Barranquero <lekktu@gmail.com>
parents: 79381
diff changeset
5155 if (NILP (Vw32_charset_info_alist))
33387
01a10bc04233 (Qw32_charset_hangeul): Rename to match w32 headers.
Jason Rumney <jasonr@gnu.org>
parents: 33216
diff changeset
5156 return "iso8859-1";
01a10bc04233 (Qw32_charset_hangeul): Rename to match w32 headers.
Jason Rumney <jasonr@gnu.org>
parents: 33216
diff changeset
5157 charset_type = Qw32_charset_ansi;
01a10bc04233 (Qw32_charset_hangeul): Rename to match w32 headers.
Jason Rumney <jasonr@gnu.org>
parents: 33216
diff changeset
5158 break;
01a10bc04233 (Qw32_charset_hangeul): Rename to match w32 headers.
Jason Rumney <jasonr@gnu.org>
parents: 33216
diff changeset
5159 case DEFAULT_CHARSET:
01a10bc04233 (Qw32_charset_hangeul): Rename to match w32 headers.
Jason Rumney <jasonr@gnu.org>
parents: 33216
diff changeset
5160 charset_type = Qw32_charset_default;
01a10bc04233 (Qw32_charset_hangeul): Rename to match w32 headers.
Jason Rumney <jasonr@gnu.org>
parents: 33216
diff changeset
5161 break;
01a10bc04233 (Qw32_charset_hangeul): Rename to match w32 headers.
Jason Rumney <jasonr@gnu.org>
parents: 33216
diff changeset
5162 case SYMBOL_CHARSET:
01a10bc04233 (Qw32_charset_hangeul): Rename to match w32 headers.
Jason Rumney <jasonr@gnu.org>
parents: 33216
diff changeset
5163 charset_type = Qw32_charset_symbol;
01a10bc04233 (Qw32_charset_hangeul): Rename to match w32 headers.
Jason Rumney <jasonr@gnu.org>
parents: 33216
diff changeset
5164 break;
01a10bc04233 (Qw32_charset_hangeul): Rename to match w32 headers.
Jason Rumney <jasonr@gnu.org>
parents: 33216
diff changeset
5165 case SHIFTJIS_CHARSET:
01a10bc04233 (Qw32_charset_hangeul): Rename to match w32 headers.
Jason Rumney <jasonr@gnu.org>
parents: 33216
diff changeset
5166 charset_type = Qw32_charset_shiftjis;
01a10bc04233 (Qw32_charset_hangeul): Rename to match w32 headers.
Jason Rumney <jasonr@gnu.org>
parents: 33216
diff changeset
5167 break;
01a10bc04233 (Qw32_charset_hangeul): Rename to match w32 headers.
Jason Rumney <jasonr@gnu.org>
parents: 33216
diff changeset
5168 case HANGEUL_CHARSET:
01a10bc04233 (Qw32_charset_hangeul): Rename to match w32 headers.
Jason Rumney <jasonr@gnu.org>
parents: 33216
diff changeset
5169 charset_type = Qw32_charset_hangeul;
01a10bc04233 (Qw32_charset_hangeul): Rename to match w32 headers.
Jason Rumney <jasonr@gnu.org>
parents: 33216
diff changeset
5170 break;
01a10bc04233 (Qw32_charset_hangeul): Rename to match w32 headers.
Jason Rumney <jasonr@gnu.org>
parents: 33216
diff changeset
5171 case GB2312_CHARSET:
01a10bc04233 (Qw32_charset_hangeul): Rename to match w32 headers.
Jason Rumney <jasonr@gnu.org>
parents: 33216
diff changeset
5172 charset_type = Qw32_charset_gb2312;
01a10bc04233 (Qw32_charset_hangeul): Rename to match w32 headers.
Jason Rumney <jasonr@gnu.org>
parents: 33216
diff changeset
5173 break;
01a10bc04233 (Qw32_charset_hangeul): Rename to match w32 headers.
Jason Rumney <jasonr@gnu.org>
parents: 33216
diff changeset
5174 case CHINESEBIG5_CHARSET:
01a10bc04233 (Qw32_charset_hangeul): Rename to match w32 headers.
Jason Rumney <jasonr@gnu.org>
parents: 33216
diff changeset
5175 charset_type = Qw32_charset_chinesebig5;
01a10bc04233 (Qw32_charset_hangeul): Rename to match w32 headers.
Jason Rumney <jasonr@gnu.org>
parents: 33216
diff changeset
5176 break;
01a10bc04233 (Qw32_charset_hangeul): Rename to match w32 headers.
Jason Rumney <jasonr@gnu.org>
parents: 33216
diff changeset
5177 case OEM_CHARSET:
01a10bc04233 (Qw32_charset_hangeul): Rename to match w32 headers.
Jason Rumney <jasonr@gnu.org>
parents: 33216
diff changeset
5178 charset_type = Qw32_charset_oem;
01a10bc04233 (Qw32_charset_hangeul): Rename to match w32 headers.
Jason Rumney <jasonr@gnu.org>
parents: 33216
diff changeset
5179 break;
23506
246a14f0622f (Vx_pixel_size_width): New global variable.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23407
diff changeset
5180
246a14f0622f (Vx_pixel_size_width): New global variable.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23407
diff changeset
5181 /* More recent versions of Windows (95 and NT4.0) define more
246a14f0622f (Vx_pixel_size_width): New global variable.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23407
diff changeset
5182 character sets. */
246a14f0622f (Vx_pixel_size_width): New global variable.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23407
diff changeset
5183 #ifdef EASTEUROPE_CHARSET
33387
01a10bc04233 (Qw32_charset_hangeul): Rename to match w32 headers.
Jason Rumney <jasonr@gnu.org>
parents: 33216
diff changeset
5184 case EASTEUROPE_CHARSET:
01a10bc04233 (Qw32_charset_hangeul): Rename to match w32 headers.
Jason Rumney <jasonr@gnu.org>
parents: 33216
diff changeset
5185 charset_type = Qw32_charset_easteurope;
01a10bc04233 (Qw32_charset_hangeul): Rename to match w32 headers.
Jason Rumney <jasonr@gnu.org>
parents: 33216
diff changeset
5186 break;
01a10bc04233 (Qw32_charset_hangeul): Rename to match w32 headers.
Jason Rumney <jasonr@gnu.org>
parents: 33216
diff changeset
5187 case TURKISH_CHARSET:
01a10bc04233 (Qw32_charset_hangeul): Rename to match w32 headers.
Jason Rumney <jasonr@gnu.org>
parents: 33216
diff changeset
5188 charset_type = Qw32_charset_turkish;
01a10bc04233 (Qw32_charset_hangeul): Rename to match w32 headers.
Jason Rumney <jasonr@gnu.org>
parents: 33216
diff changeset
5189 break;
01a10bc04233 (Qw32_charset_hangeul): Rename to match w32 headers.
Jason Rumney <jasonr@gnu.org>
parents: 33216
diff changeset
5190 case BALTIC_CHARSET:
01a10bc04233 (Qw32_charset_hangeul): Rename to match w32 headers.
Jason Rumney <jasonr@gnu.org>
parents: 33216
diff changeset
5191 charset_type = Qw32_charset_baltic;
01a10bc04233 (Qw32_charset_hangeul): Rename to match w32 headers.
Jason Rumney <jasonr@gnu.org>
parents: 33216
diff changeset
5192 break;
24147
c83b0bc4e8b9 (Vw32_bdf_filename_alist): New variable.
Geoff Voelker <voelker@cs.washington.edu>
parents: 24130
diff changeset
5193 case RUSSIAN_CHARSET:
33387
01a10bc04233 (Qw32_charset_hangeul): Rename to match w32 headers.
Jason Rumney <jasonr@gnu.org>
parents: 33216
diff changeset
5194 charset_type = Qw32_charset_russian;
01a10bc04233 (Qw32_charset_hangeul): Rename to match w32 headers.
Jason Rumney <jasonr@gnu.org>
parents: 33216
diff changeset
5195 break;
01a10bc04233 (Qw32_charset_hangeul): Rename to match w32 headers.
Jason Rumney <jasonr@gnu.org>
parents: 33216
diff changeset
5196 case ARABIC_CHARSET:
01a10bc04233 (Qw32_charset_hangeul): Rename to match w32 headers.
Jason Rumney <jasonr@gnu.org>
parents: 33216
diff changeset
5197 charset_type = Qw32_charset_arabic;
01a10bc04233 (Qw32_charset_hangeul): Rename to match w32 headers.
Jason Rumney <jasonr@gnu.org>
parents: 33216
diff changeset
5198 break;
01a10bc04233 (Qw32_charset_hangeul): Rename to match w32 headers.
Jason Rumney <jasonr@gnu.org>
parents: 33216
diff changeset
5199 case GREEK_CHARSET:
01a10bc04233 (Qw32_charset_hangeul): Rename to match w32 headers.
Jason Rumney <jasonr@gnu.org>
parents: 33216
diff changeset
5200 charset_type = Qw32_charset_greek;
01a10bc04233 (Qw32_charset_hangeul): Rename to match w32 headers.
Jason Rumney <jasonr@gnu.org>
parents: 33216
diff changeset
5201 break;
01a10bc04233 (Qw32_charset_hangeul): Rename to match w32 headers.
Jason Rumney <jasonr@gnu.org>
parents: 33216
diff changeset
5202 case HEBREW_CHARSET:
01a10bc04233 (Qw32_charset_hangeul): Rename to match w32 headers.
Jason Rumney <jasonr@gnu.org>
parents: 33216
diff changeset
5203 charset_type = Qw32_charset_hebrew;
01a10bc04233 (Qw32_charset_hangeul): Rename to match w32 headers.
Jason Rumney <jasonr@gnu.org>
parents: 33216
diff changeset
5204 break;
01a10bc04233 (Qw32_charset_hangeul): Rename to match w32 headers.
Jason Rumney <jasonr@gnu.org>
parents: 33216
diff changeset
5205 case VIETNAMESE_CHARSET:
01a10bc04233 (Qw32_charset_hangeul): Rename to match w32 headers.
Jason Rumney <jasonr@gnu.org>
parents: 33216
diff changeset
5206 charset_type = Qw32_charset_vietnamese;
01a10bc04233 (Qw32_charset_hangeul): Rename to match w32 headers.
Jason Rumney <jasonr@gnu.org>
parents: 33216
diff changeset
5207 break;
01a10bc04233 (Qw32_charset_hangeul): Rename to match w32 headers.
Jason Rumney <jasonr@gnu.org>
parents: 33216
diff changeset
5208 case THAI_CHARSET:
01a10bc04233 (Qw32_charset_hangeul): Rename to match w32 headers.
Jason Rumney <jasonr@gnu.org>
parents: 33216
diff changeset
5209 charset_type = Qw32_charset_thai;
01a10bc04233 (Qw32_charset_hangeul): Rename to match w32 headers.
Jason Rumney <jasonr@gnu.org>
parents: 33216
diff changeset
5210 break;
01a10bc04233 (Qw32_charset_hangeul): Rename to match w32 headers.
Jason Rumney <jasonr@gnu.org>
parents: 33216
diff changeset
5211 case MAC_CHARSET:
01a10bc04233 (Qw32_charset_hangeul): Rename to match w32 headers.
Jason Rumney <jasonr@gnu.org>
parents: 33216
diff changeset
5212 charset_type = Qw32_charset_mac;
01a10bc04233 (Qw32_charset_hangeul): Rename to match w32 headers.
Jason Rumney <jasonr@gnu.org>
parents: 33216
diff changeset
5213 break;
01a10bc04233 (Qw32_charset_hangeul): Rename to match w32 headers.
Jason Rumney <jasonr@gnu.org>
parents: 33216
diff changeset
5214 case JOHAB_CHARSET:
01a10bc04233 (Qw32_charset_hangeul): Rename to match w32 headers.
Jason Rumney <jasonr@gnu.org>
parents: 33216
diff changeset
5215 charset_type = Qw32_charset_johab;
01a10bc04233 (Qw32_charset_hangeul): Rename to match w32 headers.
Jason Rumney <jasonr@gnu.org>
parents: 33216
diff changeset
5216 break;
23506
246a14f0622f (Vx_pixel_size_width): New global variable.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23407
diff changeset
5217 #endif
246a14f0622f (Vx_pixel_size_width): New global variable.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23407
diff changeset
5218
15147
38c0ce06203f (quit_char, Vwin32_enable_italics, Vwin32_enable_palette):
Geoff Voelker <voelker@cs.washington.edu>
parents: 15034
diff changeset
5219 #ifdef UNICODE_CHARSET
33387
01a10bc04233 (Qw32_charset_hangeul): Rename to match w32 headers.
Jason Rumney <jasonr@gnu.org>
parents: 33216
diff changeset
5220 case UNICODE_CHARSET:
01a10bc04233 (Qw32_charset_hangeul): Rename to match w32 headers.
Jason Rumney <jasonr@gnu.org>
parents: 33216
diff changeset
5221 charset_type = Qw32_charset_unicode;
01a10bc04233 (Qw32_charset_hangeul): Rename to match w32 headers.
Jason Rumney <jasonr@gnu.org>
parents: 33216
diff changeset
5222 break;
15147
38c0ce06203f (quit_char, Vwin32_enable_italics, Vwin32_enable_palette):
Geoff Voelker <voelker@cs.washington.edu>
parents: 15034
diff changeset
5223 #endif
33387
01a10bc04233 (Qw32_charset_hangeul): Rename to match w32 headers.
Jason Rumney <jasonr@gnu.org>
parents: 33216
diff changeset
5224 default:
01a10bc04233 (Qw32_charset_hangeul): Rename to match w32 headers.
Jason Rumney <jasonr@gnu.org>
parents: 33216
diff changeset
5225 /* Encode numerical value of unknown charset. */
01a10bc04233 (Qw32_charset_hangeul): Rename to match w32 headers.
Jason Rumney <jasonr@gnu.org>
parents: 33216
diff changeset
5226 sprintf (buf, "*-#%u", fncharset);
01a10bc04233 (Qw32_charset_hangeul): Rename to match w32 headers.
Jason Rumney <jasonr@gnu.org>
parents: 33216
diff changeset
5227 return buf;
01a10bc04233 (Qw32_charset_hangeul): Rename to match w32 headers.
Jason Rumney <jasonr@gnu.org>
parents: 33216
diff changeset
5228 }
47942
080b4586492b Fix typo in comment.
Juanma Barranquero <lekktu@gmail.com>
parents: 47731
diff changeset
5229
33387
01a10bc04233 (Qw32_charset_hangeul): Rename to match w32 headers.
Jason Rumney <jasonr@gnu.org>
parents: 33216
diff changeset
5230 {
01a10bc04233 (Qw32_charset_hangeul): Rename to match w32 headers.
Jason Rumney <jasonr@gnu.org>
parents: 33216
diff changeset
5231 Lisp_Object rest;
01a10bc04233 (Qw32_charset_hangeul): Rename to match w32 headers.
Jason Rumney <jasonr@gnu.org>
parents: 33216
diff changeset
5232 char * best_match = NULL;
89594
169b2685d6f6 (w32_load_system_font): Default charset to -1.
Jason Rumney <jasonr@gnu.org>
parents: 89585
diff changeset
5233 int matching_found = 0;
33387
01a10bc04233 (Qw32_charset_hangeul): Rename to match w32 headers.
Jason Rumney <jasonr@gnu.org>
parents: 33216
diff changeset
5234
01a10bc04233 (Qw32_charset_hangeul): Rename to match w32 headers.
Jason Rumney <jasonr@gnu.org>
parents: 33216
diff changeset
5235 /* Look through w32-charset-info-alist for the character set.
01a10bc04233 (Qw32_charset_hangeul): Rename to match w32 headers.
Jason Rumney <jasonr@gnu.org>
parents: 33216
diff changeset
5236 Prefer ISO codepages, and prefer lower numbers in the ISO
01a10bc04233 (Qw32_charset_hangeul): Rename to match w32 headers.
Jason Rumney <jasonr@gnu.org>
parents: 33216
diff changeset
5237 range. Only return charsets for codepages which are installed.
01a10bc04233 (Qw32_charset_hangeul): Rename to match w32 headers.
Jason Rumney <jasonr@gnu.org>
parents: 33216
diff changeset
5238
01a10bc04233 (Qw32_charset_hangeul): Rename to match w32 headers.
Jason Rumney <jasonr@gnu.org>
parents: 33216
diff changeset
5239 Format of each entry is
01a10bc04233 (Qw32_charset_hangeul): Rename to match w32 headers.
Jason Rumney <jasonr@gnu.org>
parents: 33216
diff changeset
5240 (CHARSET_NAME . (WINDOWS_CHARSET . CODEPAGE)).
01a10bc04233 (Qw32_charset_hangeul): Rename to match w32 headers.
Jason Rumney <jasonr@gnu.org>
parents: 33216
diff changeset
5241 */
01a10bc04233 (Qw32_charset_hangeul): Rename to match w32 headers.
Jason Rumney <jasonr@gnu.org>
parents: 33216
diff changeset
5242 for (rest = Vw32_charset_info_alist; CONSP (rest); rest = XCDR (rest))
01a10bc04233 (Qw32_charset_hangeul): Rename to match w32 headers.
Jason Rumney <jasonr@gnu.org>
parents: 33216
diff changeset
5243 {
01a10bc04233 (Qw32_charset_hangeul): Rename to match w32 headers.
Jason Rumney <jasonr@gnu.org>
parents: 33216
diff changeset
5244 char * x_charset;
01a10bc04233 (Qw32_charset_hangeul): Rename to match w32 headers.
Jason Rumney <jasonr@gnu.org>
parents: 33216
diff changeset
5245 Lisp_Object w32_charset;
01a10bc04233 (Qw32_charset_hangeul): Rename to match w32 headers.
Jason Rumney <jasonr@gnu.org>
parents: 33216
diff changeset
5246 Lisp_Object codepage;
01a10bc04233 (Qw32_charset_hangeul): Rename to match w32 headers.
Jason Rumney <jasonr@gnu.org>
parents: 33216
diff changeset
5247
01a10bc04233 (Qw32_charset_hangeul): Rename to match w32 headers.
Jason Rumney <jasonr@gnu.org>
parents: 33216
diff changeset
5248 Lisp_Object this_entry = XCAR (rest);
01a10bc04233 (Qw32_charset_hangeul): Rename to match w32 headers.
Jason Rumney <jasonr@gnu.org>
parents: 33216
diff changeset
5249
01a10bc04233 (Qw32_charset_hangeul): Rename to match w32 headers.
Jason Rumney <jasonr@gnu.org>
parents: 33216
diff changeset
5250 /* Skip invalid entries in alist. */
01a10bc04233 (Qw32_charset_hangeul): Rename to match w32 headers.
Jason Rumney <jasonr@gnu.org>
parents: 33216
diff changeset
5251 if (!CONSP (this_entry) || !STRINGP (XCAR (this_entry))
01a10bc04233 (Qw32_charset_hangeul): Rename to match w32 headers.
Jason Rumney <jasonr@gnu.org>
parents: 33216
diff changeset
5252 || !CONSP (XCDR (this_entry))
01a10bc04233 (Qw32_charset_hangeul): Rename to match w32 headers.
Jason Rumney <jasonr@gnu.org>
parents: 33216
diff changeset
5253 || !SYMBOLP (XCAR (XCDR (this_entry))))
01a10bc04233 (Qw32_charset_hangeul): Rename to match w32 headers.
Jason Rumney <jasonr@gnu.org>
parents: 33216
diff changeset
5254 continue;
01a10bc04233 (Qw32_charset_hangeul): Rename to match w32 headers.
Jason Rumney <jasonr@gnu.org>
parents: 33216
diff changeset
5255
46370
40db0673e6f0 Most uses of XSTRING combined with STRING_BYTES or indirection changed to
Ken Raeburn <raeburn@raeburn.org>
parents: 46293
diff changeset
5256 x_charset = SDATA (XCAR (this_entry));
33387
01a10bc04233 (Qw32_charset_hangeul): Rename to match w32 headers.
Jason Rumney <jasonr@gnu.org>
parents: 33216
diff changeset
5257 w32_charset = XCAR (XCDR (this_entry));
01a10bc04233 (Qw32_charset_hangeul): Rename to match w32 headers.
Jason Rumney <jasonr@gnu.org>
parents: 33216
diff changeset
5258 codepage = XCDR (XCDR (this_entry));
01a10bc04233 (Qw32_charset_hangeul): Rename to match w32 headers.
Jason Rumney <jasonr@gnu.org>
parents: 33216
diff changeset
5259
01a10bc04233 (Qw32_charset_hangeul): Rename to match w32 headers.
Jason Rumney <jasonr@gnu.org>
parents: 33216
diff changeset
5260 /* Look for Same charset and a valid codepage (or non-int
01a10bc04233 (Qw32_charset_hangeul): Rename to match w32 headers.
Jason Rumney <jasonr@gnu.org>
parents: 33216
diff changeset
5261 which means ignore). */
55656
29b250a07fe0 (Fw32_register_hot_key, Fw32_unregister_hot_key)
Jason Rumney <jasonr@gnu.org>
parents: 55592
diff changeset
5262 if (EQ (w32_charset, charset_type)
29b250a07fe0 (Fw32_register_hot_key, Fw32_unregister_hot_key)
Jason Rumney <jasonr@gnu.org>
parents: 55592
diff changeset
5263 && (!INTEGERP (codepage) || XINT (codepage) == CP_DEFAULT
33387
01a10bc04233 (Qw32_charset_hangeul): Rename to match w32 headers.
Jason Rumney <jasonr@gnu.org>
parents: 33216
diff changeset
5264 || IsValidCodePage (XINT (codepage))))
01a10bc04233 (Qw32_charset_hangeul): Rename to match w32 headers.
Jason Rumney <jasonr@gnu.org>
parents: 33216
diff changeset
5265 {
01a10bc04233 (Qw32_charset_hangeul): Rename to match w32 headers.
Jason Rumney <jasonr@gnu.org>
parents: 33216
diff changeset
5266 /* If we don't have a match already, then this is the
01a10bc04233 (Qw32_charset_hangeul): Rename to match w32 headers.
Jason Rumney <jasonr@gnu.org>
parents: 33216
diff changeset
5267 best. */
01a10bc04233 (Qw32_charset_hangeul): Rename to match w32 headers.
Jason Rumney <jasonr@gnu.org>
parents: 33216
diff changeset
5268 if (!best_match)
89594
169b2685d6f6 (w32_load_system_font): Default charset to -1.
Jason Rumney <jasonr@gnu.org>
parents: 89585
diff changeset
5269 {
169b2685d6f6 (w32_load_system_font): Default charset to -1.
Jason Rumney <jasonr@gnu.org>
parents: 89585
diff changeset
5270 best_match = x_charset;
169b2685d6f6 (w32_load_system_font): Default charset to -1.
Jason Rumney <jasonr@gnu.org>
parents: 89585
diff changeset
5271 if (matching && !strnicmp (x_charset, matching, match_len))
169b2685d6f6 (w32_load_system_font): Default charset to -1.
Jason Rumney <jasonr@gnu.org>
parents: 89585
diff changeset
5272 matching_found = 1;
169b2685d6f6 (w32_load_system_font): Default charset to -1.
Jason Rumney <jasonr@gnu.org>
parents: 89585
diff changeset
5273 }
169b2685d6f6 (w32_load_system_font): Default charset to -1.
Jason Rumney <jasonr@gnu.org>
parents: 89585
diff changeset
5274 /* If we already found a match for MATCHING, then
169b2685d6f6 (w32_load_system_font): Default charset to -1.
Jason Rumney <jasonr@gnu.org>
parents: 89585
diff changeset
5275 only consider other matches. */
169b2685d6f6 (w32_load_system_font): Default charset to -1.
Jason Rumney <jasonr@gnu.org>
parents: 89585
diff changeset
5276 else if (matching_found
169b2685d6f6 (w32_load_system_font): Default charset to -1.
Jason Rumney <jasonr@gnu.org>
parents: 89585
diff changeset
5277 && strnicmp (x_charset, matching, match_len))
169b2685d6f6 (w32_load_system_font): Default charset to -1.
Jason Rumney <jasonr@gnu.org>
parents: 89585
diff changeset
5278 continue;
169b2685d6f6 (w32_load_system_font): Default charset to -1.
Jason Rumney <jasonr@gnu.org>
parents: 89585
diff changeset
5279 /* If this matches what we want, and the best so far doesn't,
169b2685d6f6 (w32_load_system_font): Default charset to -1.
Jason Rumney <jasonr@gnu.org>
parents: 89585
diff changeset
5280 then this is better. */
169b2685d6f6 (w32_load_system_font): Default charset to -1.
Jason Rumney <jasonr@gnu.org>
parents: 89585
diff changeset
5281 else if (!matching_found && matching
169b2685d6f6 (w32_load_system_font): Default charset to -1.
Jason Rumney <jasonr@gnu.org>
parents: 89585
diff changeset
5282 && !strnicmp (x_charset, matching, match_len))
169b2685d6f6 (w32_load_system_font): Default charset to -1.
Jason Rumney <jasonr@gnu.org>
parents: 89585
diff changeset
5283 {
169b2685d6f6 (w32_load_system_font): Default charset to -1.
Jason Rumney <jasonr@gnu.org>
parents: 89585
diff changeset
5284 best_match = x_charset;
169b2685d6f6 (w32_load_system_font): Default charset to -1.
Jason Rumney <jasonr@gnu.org>
parents: 89585
diff changeset
5285 matching_found = 1;
169b2685d6f6 (w32_load_system_font): Default charset to -1.
Jason Rumney <jasonr@gnu.org>
parents: 89585
diff changeset
5286 }
169b2685d6f6 (w32_load_system_font): Default charset to -1.
Jason Rumney <jasonr@gnu.org>
parents: 89585
diff changeset
5287 /* If this is fully specified, and the best so far isn't,
169b2685d6f6 (w32_load_system_font): Default charset to -1.
Jason Rumney <jasonr@gnu.org>
parents: 89585
diff changeset
5288 then this is better. */
169b2685d6f6 (w32_load_system_font): Default charset to -1.
Jason Rumney <jasonr@gnu.org>
parents: 89585
diff changeset
5289 else if ((!strchr (best_match, '-') && strchr (x_charset, '-'))
169b2685d6f6 (w32_load_system_font): Default charset to -1.
Jason Rumney <jasonr@gnu.org>
parents: 89585
diff changeset
5290 /* If this is an ISO codepage, and the best so far isn't,
169b2685d6f6 (w32_load_system_font): Default charset to -1.
Jason Rumney <jasonr@gnu.org>
parents: 89585
diff changeset
5291 then this is better, but only if it fully specifies the
169b2685d6f6 (w32_load_system_font): Default charset to -1.
Jason Rumney <jasonr@gnu.org>
parents: 89585
diff changeset
5292 encoding. */
169b2685d6f6 (w32_load_system_font): Default charset to -1.
Jason Rumney <jasonr@gnu.org>
parents: 89585
diff changeset
5293 || (strnicmp (best_match, "iso", 3) != 0
169b2685d6f6 (w32_load_system_font): Default charset to -1.
Jason Rumney <jasonr@gnu.org>
parents: 89585
diff changeset
5294 && strnicmp (x_charset, "iso", 3) == 0
169b2685d6f6 (w32_load_system_font): Default charset to -1.
Jason Rumney <jasonr@gnu.org>
parents: 89585
diff changeset
5295 && strchr (x_charset, '-')))
169b2685d6f6 (w32_load_system_font): Default charset to -1.
Jason Rumney <jasonr@gnu.org>
parents: 89585
diff changeset
5296 best_match = x_charset;
33387
01a10bc04233 (Qw32_charset_hangeul): Rename to match w32 headers.
Jason Rumney <jasonr@gnu.org>
parents: 33216
diff changeset
5297 /* If both are ISO8859 codepages, choose the one with the
01a10bc04233 (Qw32_charset_hangeul): Rename to match w32 headers.
Jason Rumney <jasonr@gnu.org>
parents: 33216
diff changeset
5298 lowest number in the encoding field. */
42845
ebb3a20bc357 (w32_load_system_font, w32_to_x_charset): Use strnicmp
Jason Rumney <jasonr@gnu.org>
parents: 42833
diff changeset
5299 else if (strnicmp (best_match, "iso8859-", 8) == 0
ebb3a20bc357 (w32_load_system_font, w32_to_x_charset): Use strnicmp
Jason Rumney <jasonr@gnu.org>
parents: 42833
diff changeset
5300 && strnicmp (x_charset, "iso8859-", 8) == 0)
33387
01a10bc04233 (Qw32_charset_hangeul): Rename to match w32 headers.
Jason Rumney <jasonr@gnu.org>
parents: 33216
diff changeset
5301 {
01a10bc04233 (Qw32_charset_hangeul): Rename to match w32 headers.
Jason Rumney <jasonr@gnu.org>
parents: 33216
diff changeset
5302 int best_enc = atoi (best_match + 8);
01a10bc04233 (Qw32_charset_hangeul): Rename to match w32 headers.
Jason Rumney <jasonr@gnu.org>
parents: 33216
diff changeset
5303 int this_enc = atoi (x_charset + 8);
01a10bc04233 (Qw32_charset_hangeul): Rename to match w32 headers.
Jason Rumney <jasonr@gnu.org>
parents: 33216
diff changeset
5304 if (this_enc > 0 && this_enc < best_enc)
01a10bc04233 (Qw32_charset_hangeul): Rename to match w32 headers.
Jason Rumney <jasonr@gnu.org>
parents: 33216
diff changeset
5305 best_match = x_charset;
47942
080b4586492b Fix typo in comment.
Juanma Barranquero <lekktu@gmail.com>
parents: 47731
diff changeset
5306 }
33387
01a10bc04233 (Qw32_charset_hangeul): Rename to match w32 headers.
Jason Rumney <jasonr@gnu.org>
parents: 33216
diff changeset
5307 }
01a10bc04233 (Qw32_charset_hangeul): Rename to match w32 headers.
Jason Rumney <jasonr@gnu.org>
parents: 33216
diff changeset
5308 }
01a10bc04233 (Qw32_charset_hangeul): Rename to match w32 headers.
Jason Rumney <jasonr@gnu.org>
parents: 33216
diff changeset
5309
01a10bc04233 (Qw32_charset_hangeul): Rename to match w32 headers.
Jason Rumney <jasonr@gnu.org>
parents: 33216
diff changeset
5310 /* If no match, encode the numeric value. */
01a10bc04233 (Qw32_charset_hangeul): Rename to match w32 headers.
Jason Rumney <jasonr@gnu.org>
parents: 33216
diff changeset
5311 if (!best_match)
01a10bc04233 (Qw32_charset_hangeul): Rename to match w32 headers.
Jason Rumney <jasonr@gnu.org>
parents: 33216
diff changeset
5312 {
01a10bc04233 (Qw32_charset_hangeul): Rename to match w32 headers.
Jason Rumney <jasonr@gnu.org>
parents: 33216
diff changeset
5313 sprintf (buf, "*-#%u", fncharset);
01a10bc04233 (Qw32_charset_hangeul): Rename to match w32 headers.
Jason Rumney <jasonr@gnu.org>
parents: 33216
diff changeset
5314 return buf;
01a10bc04233 (Qw32_charset_hangeul): Rename to match w32 headers.
Jason Rumney <jasonr@gnu.org>
parents: 33216
diff changeset
5315 }
01a10bc04233 (Qw32_charset_hangeul): Rename to match w32 headers.
Jason Rumney <jasonr@gnu.org>
parents: 33216
diff changeset
5316
79387
0ca197abc593 (Fw32_registered_hot_keys): Don't return the nil values corresponding
Juanma Barranquero <lekktu@gmail.com>
parents: 79381
diff changeset
5317 strncpy (buf, best_match, 31);
89594
169b2685d6f6 (w32_load_system_font): Default charset to -1.
Jason Rumney <jasonr@gnu.org>
parents: 89585
diff changeset
5318 /* If the charset is not fully specified, put -0 on the end. */
169b2685d6f6 (w32_load_system_font): Default charset to -1.
Jason Rumney <jasonr@gnu.org>
parents: 89585
diff changeset
5319 if (!strchr (best_match, '-'))
169b2685d6f6 (w32_load_system_font): Default charset to -1.
Jason Rumney <jasonr@gnu.org>
parents: 89585
diff changeset
5320 {
169b2685d6f6 (w32_load_system_font): Default charset to -1.
Jason Rumney <jasonr@gnu.org>
parents: 89585
diff changeset
5321 int pos = strlen (best_match);
169b2685d6f6 (w32_load_system_font): Default charset to -1.
Jason Rumney <jasonr@gnu.org>
parents: 89585
diff changeset
5322 /* Charset specifiers shouldn't be very long. If it is a made
169b2685d6f6 (w32_load_system_font): Default charset to -1.
Jason Rumney <jasonr@gnu.org>
parents: 89585
diff changeset
5323 up one, truncating it should not do any harm since it isn't
169b2685d6f6 (w32_load_system_font): Default charset to -1.
Jason Rumney <jasonr@gnu.org>
parents: 89585
diff changeset
5324 recognized anyway. */
169b2685d6f6 (w32_load_system_font): Default charset to -1.
Jason Rumney <jasonr@gnu.org>
parents: 89585
diff changeset
5325 if (pos > 29)
169b2685d6f6 (w32_load_system_font): Default charset to -1.
Jason Rumney <jasonr@gnu.org>
parents: 89585
diff changeset
5326 pos = 29;
169b2685d6f6 (w32_load_system_font): Default charset to -1.
Jason Rumney <jasonr@gnu.org>
parents: 89585
diff changeset
5327 strcpy (buf + pos, "-0");
169b2685d6f6 (w32_load_system_font): Default charset to -1.
Jason Rumney <jasonr@gnu.org>
parents: 89585
diff changeset
5328 }
40528
7fb50bbb61ad (w32_to_x_charset): Increase size of XLFD charset buffer.
Jason Rumney <jasonr@gnu.org>
parents: 40385
diff changeset
5329 buf[31] = '\0';
33387
01a10bc04233 (Qw32_charset_hangeul): Rename to match w32 headers.
Jason Rumney <jasonr@gnu.org>
parents: 33216
diff changeset
5330 return buf;
01a10bc04233 (Qw32_charset_hangeul): Rename to match w32 headers.
Jason Rumney <jasonr@gnu.org>
parents: 33216
diff changeset
5331 }
13434
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
5332 }
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
5333
29317
2d3d5bf49d4e Format and doc changes to bring closer to xfns.c.
Jason Rumney <jasonr@gnu.org>
parents: 29021
diff changeset
5334
42845
ebb3a20bc357 (w32_load_system_font, w32_to_x_charset): Use strnicmp
Jason Rumney <jasonr@gnu.org>
parents: 42833
diff changeset
5335 /* Return all the X charsets that map to a font. */
ebb3a20bc357 (w32_load_system_font, w32_to_x_charset): Use strnicmp
Jason Rumney <jasonr@gnu.org>
parents: 42833
diff changeset
5336 static Lisp_Object
ebb3a20bc357 (w32_load_system_font, w32_to_x_charset): Use strnicmp
Jason Rumney <jasonr@gnu.org>
parents: 42833
diff changeset
5337 w32_to_all_x_charsets (fncharset)
ebb3a20bc357 (w32_load_system_font, w32_to_x_charset): Use strnicmp
Jason Rumney <jasonr@gnu.org>
parents: 42833
diff changeset
5338 int fncharset;
ebb3a20bc357 (w32_load_system_font, w32_to_x_charset): Use strnicmp
Jason Rumney <jasonr@gnu.org>
parents: 42833
diff changeset
5339 {
ebb3a20bc357 (w32_load_system_font, w32_to_x_charset): Use strnicmp
Jason Rumney <jasonr@gnu.org>
parents: 42833
diff changeset
5340 static char buf[32];
ebb3a20bc357 (w32_load_system_font, w32_to_x_charset): Use strnicmp
Jason Rumney <jasonr@gnu.org>
parents: 42833
diff changeset
5341 Lisp_Object charset_type;
ebb3a20bc357 (w32_load_system_font, w32_to_x_charset): Use strnicmp
Jason Rumney <jasonr@gnu.org>
parents: 42833
diff changeset
5342 Lisp_Object retval = Qnil;
ebb3a20bc357 (w32_load_system_font, w32_to_x_charset): Use strnicmp
Jason Rumney <jasonr@gnu.org>
parents: 42833
diff changeset
5343
ebb3a20bc357 (w32_load_system_font, w32_to_x_charset): Use strnicmp
Jason Rumney <jasonr@gnu.org>
parents: 42833
diff changeset
5344 switch (fncharset)
ebb3a20bc357 (w32_load_system_font, w32_to_x_charset): Use strnicmp
Jason Rumney <jasonr@gnu.org>
parents: 42833
diff changeset
5345 {
ebb3a20bc357 (w32_load_system_font, w32_to_x_charset): Use strnicmp
Jason Rumney <jasonr@gnu.org>
parents: 42833
diff changeset
5346 case ANSI_CHARSET:
ebb3a20bc357 (w32_load_system_font, w32_to_x_charset): Use strnicmp
Jason Rumney <jasonr@gnu.org>
parents: 42833
diff changeset
5347 /* Handle startup case of w32-charset-info-alist not
ebb3a20bc357 (w32_load_system_font, w32_to_x_charset): Use strnicmp
Jason Rumney <jasonr@gnu.org>
parents: 42833
diff changeset
5348 being set up yet. */
79387
0ca197abc593 (Fw32_registered_hot_keys): Don't return the nil values corresponding
Juanma Barranquero <lekktu@gmail.com>
parents: 79381
diff changeset
5349 if (NILP (Vw32_charset_info_alist))
43963
f5a7ee0b1b0e (w32_to_all_x_charsets): Return correct type in startup case.
Jason Rumney <jasonr@gnu.org>
parents: 43773
diff changeset
5350 return Fcons (build_string ("iso8859-1"), Qnil);
f5a7ee0b1b0e (w32_to_all_x_charsets): Return correct type in startup case.
Jason Rumney <jasonr@gnu.org>
parents: 43773
diff changeset
5351
42845
ebb3a20bc357 (w32_load_system_font, w32_to_x_charset): Use strnicmp
Jason Rumney <jasonr@gnu.org>
parents: 42833
diff changeset
5352 charset_type = Qw32_charset_ansi;
ebb3a20bc357 (w32_load_system_font, w32_to_x_charset): Use strnicmp
Jason Rumney <jasonr@gnu.org>
parents: 42833
diff changeset
5353 break;
ebb3a20bc357 (w32_load_system_font, w32_to_x_charset): Use strnicmp
Jason Rumney <jasonr@gnu.org>
parents: 42833
diff changeset
5354 case DEFAULT_CHARSET:
ebb3a20bc357 (w32_load_system_font, w32_to_x_charset): Use strnicmp
Jason Rumney <jasonr@gnu.org>
parents: 42833
diff changeset
5355 charset_type = Qw32_charset_default;
ebb3a20bc357 (w32_load_system_font, w32_to_x_charset): Use strnicmp
Jason Rumney <jasonr@gnu.org>
parents: 42833
diff changeset
5356 break;
ebb3a20bc357 (w32_load_system_font, w32_to_x_charset): Use strnicmp
Jason Rumney <jasonr@gnu.org>
parents: 42833
diff changeset
5357 case SYMBOL_CHARSET:
ebb3a20bc357 (w32_load_system_font, w32_to_x_charset): Use strnicmp
Jason Rumney <jasonr@gnu.org>
parents: 42833
diff changeset
5358 charset_type = Qw32_charset_symbol;
ebb3a20bc357 (w32_load_system_font, w32_to_x_charset): Use strnicmp
Jason Rumney <jasonr@gnu.org>
parents: 42833
diff changeset
5359 break;
ebb3a20bc357 (w32_load_system_font, w32_to_x_charset): Use strnicmp
Jason Rumney <jasonr@gnu.org>
parents: 42833
diff changeset
5360 case SHIFTJIS_CHARSET:
ebb3a20bc357 (w32_load_system_font, w32_to_x_charset): Use strnicmp
Jason Rumney <jasonr@gnu.org>
parents: 42833
diff changeset
5361 charset_type = Qw32_charset_shiftjis;
ebb3a20bc357 (w32_load_system_font, w32_to_x_charset): Use strnicmp
Jason Rumney <jasonr@gnu.org>
parents: 42833
diff changeset
5362 break;
ebb3a20bc357 (w32_load_system_font, w32_to_x_charset): Use strnicmp
Jason Rumney <jasonr@gnu.org>
parents: 42833
diff changeset
5363 case HANGEUL_CHARSET:
ebb3a20bc357 (w32_load_system_font, w32_to_x_charset): Use strnicmp
Jason Rumney <jasonr@gnu.org>
parents: 42833
diff changeset
5364 charset_type = Qw32_charset_hangeul;
ebb3a20bc357 (w32_load_system_font, w32_to_x_charset): Use strnicmp
Jason Rumney <jasonr@gnu.org>
parents: 42833
diff changeset
5365 break;
ebb3a20bc357 (w32_load_system_font, w32_to_x_charset): Use strnicmp
Jason Rumney <jasonr@gnu.org>
parents: 42833
diff changeset
5366 case GB2312_CHARSET:
ebb3a20bc357 (w32_load_system_font, w32_to_x_charset): Use strnicmp
Jason Rumney <jasonr@gnu.org>
parents: 42833
diff changeset
5367 charset_type = Qw32_charset_gb2312;
ebb3a20bc357 (w32_load_system_font, w32_to_x_charset): Use strnicmp
Jason Rumney <jasonr@gnu.org>
parents: 42833
diff changeset
5368 break;
ebb3a20bc357 (w32_load_system_font, w32_to_x_charset): Use strnicmp
Jason Rumney <jasonr@gnu.org>
parents: 42833
diff changeset
5369 case CHINESEBIG5_CHARSET:
ebb3a20bc357 (w32_load_system_font, w32_to_x_charset): Use strnicmp
Jason Rumney <jasonr@gnu.org>
parents: 42833
diff changeset
5370 charset_type = Qw32_charset_chinesebig5;
ebb3a20bc357 (w32_load_system_font, w32_to_x_charset): Use strnicmp
Jason Rumney <jasonr@gnu.org>
parents: 42833
diff changeset
5371 break;
ebb3a20bc357 (w32_load_system_font, w32_to_x_charset): Use strnicmp
Jason Rumney <jasonr@gnu.org>
parents: 42833
diff changeset
5372 case OEM_CHARSET:
ebb3a20bc357 (w32_load_system_font, w32_to_x_charset): Use strnicmp
Jason Rumney <jasonr@gnu.org>
parents: 42833
diff changeset
5373 charset_type = Qw32_charset_oem;
ebb3a20bc357 (w32_load_system_font, w32_to_x_charset): Use strnicmp
Jason Rumney <jasonr@gnu.org>
parents: 42833
diff changeset
5374 break;
ebb3a20bc357 (w32_load_system_font, w32_to_x_charset): Use strnicmp
Jason Rumney <jasonr@gnu.org>
parents: 42833
diff changeset
5375
ebb3a20bc357 (w32_load_system_font, w32_to_x_charset): Use strnicmp
Jason Rumney <jasonr@gnu.org>
parents: 42833
diff changeset
5376 /* More recent versions of Windows (95 and NT4.0) define more
ebb3a20bc357 (w32_load_system_font, w32_to_x_charset): Use strnicmp
Jason Rumney <jasonr@gnu.org>
parents: 42833
diff changeset
5377 character sets. */
ebb3a20bc357 (w32_load_system_font, w32_to_x_charset): Use strnicmp
Jason Rumney <jasonr@gnu.org>
parents: 42833
diff changeset
5378 #ifdef EASTEUROPE_CHARSET
ebb3a20bc357 (w32_load_system_font, w32_to_x_charset): Use strnicmp
Jason Rumney <jasonr@gnu.org>
parents: 42833
diff changeset
5379 case EASTEUROPE_CHARSET:
ebb3a20bc357 (w32_load_system_font, w32_to_x_charset): Use strnicmp
Jason Rumney <jasonr@gnu.org>
parents: 42833
diff changeset
5380 charset_type = Qw32_charset_easteurope;
ebb3a20bc357 (w32_load_system_font, w32_to_x_charset): Use strnicmp
Jason Rumney <jasonr@gnu.org>
parents: 42833
diff changeset
5381 break;
ebb3a20bc357 (w32_load_system_font, w32_to_x_charset): Use strnicmp
Jason Rumney <jasonr@gnu.org>
parents: 42833
diff changeset
5382 case TURKISH_CHARSET:
ebb3a20bc357 (w32_load_system_font, w32_to_x_charset): Use strnicmp
Jason Rumney <jasonr@gnu.org>
parents: 42833
diff changeset
5383 charset_type = Qw32_charset_turkish;
ebb3a20bc357 (w32_load_system_font, w32_to_x_charset): Use strnicmp
Jason Rumney <jasonr@gnu.org>
parents: 42833
diff changeset
5384 break;
ebb3a20bc357 (w32_load_system_font, w32_to_x_charset): Use strnicmp
Jason Rumney <jasonr@gnu.org>
parents: 42833
diff changeset
5385 case BALTIC_CHARSET:
ebb3a20bc357 (w32_load_system_font, w32_to_x_charset): Use strnicmp
Jason Rumney <jasonr@gnu.org>
parents: 42833
diff changeset
5386 charset_type = Qw32_charset_baltic;
ebb3a20bc357 (w32_load_system_font, w32_to_x_charset): Use strnicmp
Jason Rumney <jasonr@gnu.org>
parents: 42833
diff changeset
5387 break;
ebb3a20bc357 (w32_load_system_font, w32_to_x_charset): Use strnicmp
Jason Rumney <jasonr@gnu.org>
parents: 42833
diff changeset
5388 case RUSSIAN_CHARSET:
ebb3a20bc357 (w32_load_system_font, w32_to_x_charset): Use strnicmp
Jason Rumney <jasonr@gnu.org>
parents: 42833
diff changeset
5389 charset_type = Qw32_charset_russian;
ebb3a20bc357 (w32_load_system_font, w32_to_x_charset): Use strnicmp
Jason Rumney <jasonr@gnu.org>
parents: 42833
diff changeset
5390 break;
ebb3a20bc357 (w32_load_system_font, w32_to_x_charset): Use strnicmp
Jason Rumney <jasonr@gnu.org>
parents: 42833
diff changeset
5391 case ARABIC_CHARSET:
ebb3a20bc357 (w32_load_system_font, w32_to_x_charset): Use strnicmp
Jason Rumney <jasonr@gnu.org>
parents: 42833
diff changeset
5392 charset_type = Qw32_charset_arabic;
ebb3a20bc357 (w32_load_system_font, w32_to_x_charset): Use strnicmp
Jason Rumney <jasonr@gnu.org>
parents: 42833
diff changeset
5393 break;
ebb3a20bc357 (w32_load_system_font, w32_to_x_charset): Use strnicmp
Jason Rumney <jasonr@gnu.org>
parents: 42833
diff changeset
5394 case GREEK_CHARSET:
ebb3a20bc357 (w32_load_system_font, w32_to_x_charset): Use strnicmp
Jason Rumney <jasonr@gnu.org>
parents: 42833
diff changeset
5395 charset_type = Qw32_charset_greek;
ebb3a20bc357 (w32_load_system_font, w32_to_x_charset): Use strnicmp
Jason Rumney <jasonr@gnu.org>
parents: 42833
diff changeset
5396 break;
ebb3a20bc357 (w32_load_system_font, w32_to_x_charset): Use strnicmp
Jason Rumney <jasonr@gnu.org>
parents: 42833
diff changeset
5397 case HEBREW_CHARSET:
ebb3a20bc357 (w32_load_system_font, w32_to_x_charset): Use strnicmp
Jason Rumney <jasonr@gnu.org>
parents: 42833
diff changeset
5398 charset_type = Qw32_charset_hebrew;
ebb3a20bc357 (w32_load_system_font, w32_to_x_charset): Use strnicmp
Jason Rumney <jasonr@gnu.org>
parents: 42833
diff changeset
5399 break;
ebb3a20bc357 (w32_load_system_font, w32_to_x_charset): Use strnicmp
Jason Rumney <jasonr@gnu.org>
parents: 42833
diff changeset
5400 case VIETNAMESE_CHARSET:
ebb3a20bc357 (w32_load_system_font, w32_to_x_charset): Use strnicmp
Jason Rumney <jasonr@gnu.org>
parents: 42833
diff changeset
5401 charset_type = Qw32_charset_vietnamese;
ebb3a20bc357 (w32_load_system_font, w32_to_x_charset): Use strnicmp
Jason Rumney <jasonr@gnu.org>
parents: 42833
diff changeset
5402 break;
ebb3a20bc357 (w32_load_system_font, w32_to_x_charset): Use strnicmp
Jason Rumney <jasonr@gnu.org>
parents: 42833
diff changeset
5403 case THAI_CHARSET:
ebb3a20bc357 (w32_load_system_font, w32_to_x_charset): Use strnicmp
Jason Rumney <jasonr@gnu.org>
parents: 42833
diff changeset
5404 charset_type = Qw32_charset_thai;
ebb3a20bc357 (w32_load_system_font, w32_to_x_charset): Use strnicmp
Jason Rumney <jasonr@gnu.org>
parents: 42833
diff changeset
5405 break;
ebb3a20bc357 (w32_load_system_font, w32_to_x_charset): Use strnicmp
Jason Rumney <jasonr@gnu.org>
parents: 42833
diff changeset
5406 case MAC_CHARSET:
ebb3a20bc357 (w32_load_system_font, w32_to_x_charset): Use strnicmp
Jason Rumney <jasonr@gnu.org>
parents: 42833
diff changeset
5407 charset_type = Qw32_charset_mac;
ebb3a20bc357 (w32_load_system_font, w32_to_x_charset): Use strnicmp
Jason Rumney <jasonr@gnu.org>
parents: 42833
diff changeset
5408 break;
ebb3a20bc357 (w32_load_system_font, w32_to_x_charset): Use strnicmp
Jason Rumney <jasonr@gnu.org>
parents: 42833
diff changeset
5409 case JOHAB_CHARSET:
ebb3a20bc357 (w32_load_system_font, w32_to_x_charset): Use strnicmp
Jason Rumney <jasonr@gnu.org>
parents: 42833
diff changeset
5410 charset_type = Qw32_charset_johab;
ebb3a20bc357 (w32_load_system_font, w32_to_x_charset): Use strnicmp
Jason Rumney <jasonr@gnu.org>
parents: 42833
diff changeset
5411 break;
ebb3a20bc357 (w32_load_system_font, w32_to_x_charset): Use strnicmp
Jason Rumney <jasonr@gnu.org>
parents: 42833
diff changeset
5412 #endif
ebb3a20bc357 (w32_load_system_font, w32_to_x_charset): Use strnicmp
Jason Rumney <jasonr@gnu.org>
parents: 42833
diff changeset
5413
ebb3a20bc357 (w32_load_system_font, w32_to_x_charset): Use strnicmp
Jason Rumney <jasonr@gnu.org>
parents: 42833
diff changeset
5414 #ifdef UNICODE_CHARSET
ebb3a20bc357 (w32_load_system_font, w32_to_x_charset): Use strnicmp
Jason Rumney <jasonr@gnu.org>
parents: 42833
diff changeset
5415 case UNICODE_CHARSET:
ebb3a20bc357 (w32_load_system_font, w32_to_x_charset): Use strnicmp
Jason Rumney <jasonr@gnu.org>
parents: 42833
diff changeset
5416 charset_type = Qw32_charset_unicode;
ebb3a20bc357 (w32_load_system_font, w32_to_x_charset): Use strnicmp
Jason Rumney <jasonr@gnu.org>
parents: 42833
diff changeset
5417 break;
ebb3a20bc357 (w32_load_system_font, w32_to_x_charset): Use strnicmp
Jason Rumney <jasonr@gnu.org>
parents: 42833
diff changeset
5418 #endif
ebb3a20bc357 (w32_load_system_font, w32_to_x_charset): Use strnicmp
Jason Rumney <jasonr@gnu.org>
parents: 42833
diff changeset
5419 default:
ebb3a20bc357 (w32_load_system_font, w32_to_x_charset): Use strnicmp
Jason Rumney <jasonr@gnu.org>
parents: 42833
diff changeset
5420 /* Encode numerical value of unknown charset. */
ebb3a20bc357 (w32_load_system_font, w32_to_x_charset): Use strnicmp
Jason Rumney <jasonr@gnu.org>
parents: 42833
diff changeset
5421 sprintf (buf, "*-#%u", fncharset);
ebb3a20bc357 (w32_load_system_font, w32_to_x_charset): Use strnicmp
Jason Rumney <jasonr@gnu.org>
parents: 42833
diff changeset
5422 return Fcons (build_string (buf), Qnil);
ebb3a20bc357 (w32_load_system_font, w32_to_x_charset): Use strnicmp
Jason Rumney <jasonr@gnu.org>
parents: 42833
diff changeset
5423 }
47942
080b4586492b Fix typo in comment.
Juanma Barranquero <lekktu@gmail.com>
parents: 47731
diff changeset
5424
42845
ebb3a20bc357 (w32_load_system_font, w32_to_x_charset): Use strnicmp
Jason Rumney <jasonr@gnu.org>
parents: 42833
diff changeset
5425 {
ebb3a20bc357 (w32_load_system_font, w32_to_x_charset): Use strnicmp
Jason Rumney <jasonr@gnu.org>
parents: 42833
diff changeset
5426 Lisp_Object rest;
ebb3a20bc357 (w32_load_system_font, w32_to_x_charset): Use strnicmp
Jason Rumney <jasonr@gnu.org>
parents: 42833
diff changeset
5427 /* Look through w32-charset-info-alist for the character set.
89594
169b2685d6f6 (w32_load_system_font): Default charset to -1.
Jason Rumney <jasonr@gnu.org>
parents: 89585
diff changeset
5428 Only return fully specified charsets for codepages which are
169b2685d6f6 (w32_load_system_font): Default charset to -1.
Jason Rumney <jasonr@gnu.org>
parents: 89585
diff changeset
5429 installed.
42845
ebb3a20bc357 (w32_load_system_font, w32_to_x_charset): Use strnicmp
Jason Rumney <jasonr@gnu.org>
parents: 42833
diff changeset
5430
ebb3a20bc357 (w32_load_system_font, w32_to_x_charset): Use strnicmp
Jason Rumney <jasonr@gnu.org>
parents: 42833
diff changeset
5431 Format of each entry in Vw32_charset_info_alist is
ebb3a20bc357 (w32_load_system_font, w32_to_x_charset): Use strnicmp
Jason Rumney <jasonr@gnu.org>
parents: 42833
diff changeset
5432 (CHARSET_NAME . (WINDOWS_CHARSET . CODEPAGE)).
ebb3a20bc357 (w32_load_system_font, w32_to_x_charset): Use strnicmp
Jason Rumney <jasonr@gnu.org>
parents: 42833
diff changeset
5433 */
ebb3a20bc357 (w32_load_system_font, w32_to_x_charset): Use strnicmp
Jason Rumney <jasonr@gnu.org>
parents: 42833
diff changeset
5434 for (rest = Vw32_charset_info_alist; CONSP (rest); rest = XCDR (rest))
ebb3a20bc357 (w32_load_system_font, w32_to_x_charset): Use strnicmp
Jason Rumney <jasonr@gnu.org>
parents: 42833
diff changeset
5435 {
ebb3a20bc357 (w32_load_system_font, w32_to_x_charset): Use strnicmp
Jason Rumney <jasonr@gnu.org>
parents: 42833
diff changeset
5436 Lisp_Object x_charset;
ebb3a20bc357 (w32_load_system_font, w32_to_x_charset): Use strnicmp
Jason Rumney <jasonr@gnu.org>
parents: 42833
diff changeset
5437 Lisp_Object w32_charset;
ebb3a20bc357 (w32_load_system_font, w32_to_x_charset): Use strnicmp
Jason Rumney <jasonr@gnu.org>
parents: 42833
diff changeset
5438 Lisp_Object codepage;
ebb3a20bc357 (w32_load_system_font, w32_to_x_charset): Use strnicmp
Jason Rumney <jasonr@gnu.org>
parents: 42833
diff changeset
5439
ebb3a20bc357 (w32_load_system_font, w32_to_x_charset): Use strnicmp
Jason Rumney <jasonr@gnu.org>
parents: 42833
diff changeset
5440 Lisp_Object this_entry = XCAR (rest);
ebb3a20bc357 (w32_load_system_font, w32_to_x_charset): Use strnicmp
Jason Rumney <jasonr@gnu.org>
parents: 42833
diff changeset
5441
ebb3a20bc357 (w32_load_system_font, w32_to_x_charset): Use strnicmp
Jason Rumney <jasonr@gnu.org>
parents: 42833
diff changeset
5442 /* Skip invalid entries in alist. */
ebb3a20bc357 (w32_load_system_font, w32_to_x_charset): Use strnicmp
Jason Rumney <jasonr@gnu.org>
parents: 42833
diff changeset
5443 if (!CONSP (this_entry) || !STRINGP (XCAR (this_entry))
ebb3a20bc357 (w32_load_system_font, w32_to_x_charset): Use strnicmp
Jason Rumney <jasonr@gnu.org>
parents: 42833
diff changeset
5444 || !CONSP (XCDR (this_entry))
ebb3a20bc357 (w32_load_system_font, w32_to_x_charset): Use strnicmp
Jason Rumney <jasonr@gnu.org>
parents: 42833
diff changeset
5445 || !SYMBOLP (XCAR (XCDR (this_entry))))
ebb3a20bc357 (w32_load_system_font, w32_to_x_charset): Use strnicmp
Jason Rumney <jasonr@gnu.org>
parents: 42833
diff changeset
5446 continue;
ebb3a20bc357 (w32_load_system_font, w32_to_x_charset): Use strnicmp
Jason Rumney <jasonr@gnu.org>
parents: 42833
diff changeset
5447
ebb3a20bc357 (w32_load_system_font, w32_to_x_charset): Use strnicmp
Jason Rumney <jasonr@gnu.org>
parents: 42833
diff changeset
5448 x_charset = XCAR (this_entry);
ebb3a20bc357 (w32_load_system_font, w32_to_x_charset): Use strnicmp
Jason Rumney <jasonr@gnu.org>
parents: 42833
diff changeset
5449 w32_charset = XCAR (XCDR (this_entry));
ebb3a20bc357 (w32_load_system_font, w32_to_x_charset): Use strnicmp
Jason Rumney <jasonr@gnu.org>
parents: 42833
diff changeset
5450 codepage = XCDR (XCDR (this_entry));
ebb3a20bc357 (w32_load_system_font, w32_to_x_charset): Use strnicmp
Jason Rumney <jasonr@gnu.org>
parents: 42833
diff changeset
5451
89594
169b2685d6f6 (w32_load_system_font): Default charset to -1.
Jason Rumney <jasonr@gnu.org>
parents: 89585
diff changeset
5452 if (!strchr (SDATA (x_charset), '-'))
169b2685d6f6 (w32_load_system_font): Default charset to -1.
Jason Rumney <jasonr@gnu.org>
parents: 89585
diff changeset
5453 continue;
169b2685d6f6 (w32_load_system_font): Default charset to -1.
Jason Rumney <jasonr@gnu.org>
parents: 89585
diff changeset
5454
42845
ebb3a20bc357 (w32_load_system_font, w32_to_x_charset): Use strnicmp
Jason Rumney <jasonr@gnu.org>
parents: 42833
diff changeset
5455 /* Look for Same charset and a valid codepage (or non-int
ebb3a20bc357 (w32_load_system_font, w32_to_x_charset): Use strnicmp
Jason Rumney <jasonr@gnu.org>
parents: 42833
diff changeset
5456 which means ignore). */
55656
29b250a07fe0 (Fw32_register_hot_key, Fw32_unregister_hot_key)
Jason Rumney <jasonr@gnu.org>
parents: 55592
diff changeset
5457 if (EQ (w32_charset, charset_type)
29b250a07fe0 (Fw32_register_hot_key, Fw32_unregister_hot_key)
Jason Rumney <jasonr@gnu.org>
parents: 55592
diff changeset
5458 && (!INTEGERP (codepage) || XINT (codepage) == CP_DEFAULT
42845
ebb3a20bc357 (w32_load_system_font, w32_to_x_charset): Use strnicmp
Jason Rumney <jasonr@gnu.org>
parents: 42833
diff changeset
5459 || IsValidCodePage (XINT (codepage))))
ebb3a20bc357 (w32_load_system_font, w32_to_x_charset): Use strnicmp
Jason Rumney <jasonr@gnu.org>
parents: 42833
diff changeset
5460 {
ebb3a20bc357 (w32_load_system_font, w32_to_x_charset): Use strnicmp
Jason Rumney <jasonr@gnu.org>
parents: 42833
diff changeset
5461 retval = Fcons (x_charset, retval);
ebb3a20bc357 (w32_load_system_font, w32_to_x_charset): Use strnicmp
Jason Rumney <jasonr@gnu.org>
parents: 42833
diff changeset
5462 }
ebb3a20bc357 (w32_load_system_font, w32_to_x_charset): Use strnicmp
Jason Rumney <jasonr@gnu.org>
parents: 42833
diff changeset
5463 }
ebb3a20bc357 (w32_load_system_font, w32_to_x_charset): Use strnicmp
Jason Rumney <jasonr@gnu.org>
parents: 42833
diff changeset
5464
ebb3a20bc357 (w32_load_system_font, w32_to_x_charset): Use strnicmp
Jason Rumney <jasonr@gnu.org>
parents: 42833
diff changeset
5465 /* If no match, encode the numeric value. */
ebb3a20bc357 (w32_load_system_font, w32_to_x_charset): Use strnicmp
Jason Rumney <jasonr@gnu.org>
parents: 42833
diff changeset
5466 if (NILP (retval))
ebb3a20bc357 (w32_load_system_font, w32_to_x_charset): Use strnicmp
Jason Rumney <jasonr@gnu.org>
parents: 42833
diff changeset
5467 {
ebb3a20bc357 (w32_load_system_font, w32_to_x_charset): Use strnicmp
Jason Rumney <jasonr@gnu.org>
parents: 42833
diff changeset
5468 sprintf (buf, "*-#%u", fncharset);
ebb3a20bc357 (w32_load_system_font, w32_to_x_charset): Use strnicmp
Jason Rumney <jasonr@gnu.org>
parents: 42833
diff changeset
5469 return Fcons (build_string (buf), Qnil);
ebb3a20bc357 (w32_load_system_font, w32_to_x_charset): Use strnicmp
Jason Rumney <jasonr@gnu.org>
parents: 42833
diff changeset
5470 }
ebb3a20bc357 (w32_load_system_font, w32_to_x_charset): Use strnicmp
Jason Rumney <jasonr@gnu.org>
parents: 42833
diff changeset
5471
ebb3a20bc357 (w32_load_system_font, w32_to_x_charset): Use strnicmp
Jason Rumney <jasonr@gnu.org>
parents: 42833
diff changeset
5472 return retval;
ebb3a20bc357 (w32_load_system_font, w32_to_x_charset): Use strnicmp
Jason Rumney <jasonr@gnu.org>
parents: 42833
diff changeset
5473 }
ebb3a20bc357 (w32_load_system_font, w32_to_x_charset): Use strnicmp
Jason Rumney <jasonr@gnu.org>
parents: 42833
diff changeset
5474 }
ebb3a20bc357 (w32_load_system_font, w32_to_x_charset): Use strnicmp
Jason Rumney <jasonr@gnu.org>
parents: 42833
diff changeset
5475
94917
e61553aa7a73 Throughout the file, delete all USE_FONT_BACKEND
Kenichi Handa <handa@m17n.org>
parents: 94618
diff changeset
5476 #if OLD_FONT
e61553aa7a73 Throughout the file, delete all USE_FONT_BACKEND
Kenichi Handa <handa@m17n.org>
parents: 94618
diff changeset
5477
29317
2d3d5bf49d4e Format and doc changes to bring closer to xfns.c.
Jason Rumney <jasonr@gnu.org>
parents: 29021
diff changeset
5478 /* Get the Windows codepage corresponding to the specified font. The
2d3d5bf49d4e Format and doc changes to bring closer to xfns.c.
Jason Rumney <jasonr@gnu.org>
parents: 29021
diff changeset
5479 charset info in the font name is used to look up
2d3d5bf49d4e Format and doc changes to bring closer to xfns.c.
Jason Rumney <jasonr@gnu.org>
parents: 29021
diff changeset
5480 w32-charset-to-codepage-alist. */
47942
080b4586492b Fix typo in comment.
Juanma Barranquero <lekktu@gmail.com>
parents: 47731
diff changeset
5481 int
29317
2d3d5bf49d4e Format and doc changes to bring closer to xfns.c.
Jason Rumney <jasonr@gnu.org>
parents: 29021
diff changeset
5482 w32_codepage_for_font (char *fontname)
2d3d5bf49d4e Format and doc changes to bring closer to xfns.c.
Jason Rumney <jasonr@gnu.org>
parents: 29021
diff changeset
5483 {
33387
01a10bc04233 (Qw32_charset_hangeul): Rename to match w32 headers.
Jason Rumney <jasonr@gnu.org>
parents: 33216
diff changeset
5484 Lisp_Object codepage, entry;
01a10bc04233 (Qw32_charset_hangeul): Rename to match w32 headers.
Jason Rumney <jasonr@gnu.org>
parents: 33216
diff changeset
5485 char *charset_str, *charset, *end;
01a10bc04233 (Qw32_charset_hangeul): Rename to match w32 headers.
Jason Rumney <jasonr@gnu.org>
parents: 33216
diff changeset
5486
29317
2d3d5bf49d4e Format and doc changes to bring closer to xfns.c.
Jason Rumney <jasonr@gnu.org>
parents: 29021
diff changeset
5487 /* Extract charset part of font string. */
33387
01a10bc04233 (Qw32_charset_hangeul): Rename to match w32 headers.
Jason Rumney <jasonr@gnu.org>
parents: 33216
diff changeset
5488 charset = xlfd_charset_of_font (fontname);
01a10bc04233 (Qw32_charset_hangeul): Rename to match w32 headers.
Jason Rumney <jasonr@gnu.org>
parents: 33216
diff changeset
5489
01a10bc04233 (Qw32_charset_hangeul): Rename to match w32 headers.
Jason Rumney <jasonr@gnu.org>
parents: 33216
diff changeset
5490 if (!charset)
34284
3a21ff35392b (xlfd_charset_of_font): Don't overwrite fontname
Andrew Innes <andrewi@gnu.org>
parents: 34133
diff changeset
5491 return CP_UNKNOWN;
33387
01a10bc04233 (Qw32_charset_hangeul): Rename to match w32 headers.
Jason Rumney <jasonr@gnu.org>
parents: 33216
diff changeset
5492
39548
6192be048459 (x_to_w32_color): Fix argument to alloca.
Andrew Innes <andrewi@gnu.org>
parents: 39137
diff changeset
5493 charset_str = (char *) alloca (strlen (charset) + 1);
33387
01a10bc04233 (Qw32_charset_hangeul): Rename to match w32 headers.
Jason Rumney <jasonr@gnu.org>
parents: 33216
diff changeset
5494 strcpy (charset_str, charset);
29317
2d3d5bf49d4e Format and doc changes to bring closer to xfns.c.
Jason Rumney <jasonr@gnu.org>
parents: 29021
diff changeset
5495
39548
6192be048459 (x_to_w32_color): Fix argument to alloca.
Andrew Innes <andrewi@gnu.org>
parents: 39137
diff changeset
5496 #if 0
29317
2d3d5bf49d4e Format and doc changes to bring closer to xfns.c.
Jason Rumney <jasonr@gnu.org>
parents: 29021
diff changeset
5497 /* Remove leading "*-". */
2d3d5bf49d4e Format and doc changes to bring closer to xfns.c.
Jason Rumney <jasonr@gnu.org>
parents: 29021
diff changeset
5498 if (strncmp ("*-", charset_str, 2) == 0)
2d3d5bf49d4e Format and doc changes to bring closer to xfns.c.
Jason Rumney <jasonr@gnu.org>
parents: 29021
diff changeset
5499 charset = charset_str + 2;
2d3d5bf49d4e Format and doc changes to bring closer to xfns.c.
Jason Rumney <jasonr@gnu.org>
parents: 29021
diff changeset
5500 else
39548
6192be048459 (x_to_w32_color): Fix argument to alloca.
Andrew Innes <andrewi@gnu.org>
parents: 39137
diff changeset
5501 #endif
29317
2d3d5bf49d4e Format and doc changes to bring closer to xfns.c.
Jason Rumney <jasonr@gnu.org>
parents: 29021
diff changeset
5502 charset = charset_str;
2d3d5bf49d4e Format and doc changes to bring closer to xfns.c.
Jason Rumney <jasonr@gnu.org>
parents: 29021
diff changeset
5503
2d3d5bf49d4e Format and doc changes to bring closer to xfns.c.
Jason Rumney <jasonr@gnu.org>
parents: 29021
diff changeset
5504 /* Stop match at wildcard (including preceding '-'). */
2d3d5bf49d4e Format and doc changes to bring closer to xfns.c.
Jason Rumney <jasonr@gnu.org>
parents: 29021
diff changeset
5505 if (end = strchr (charset, '*'))
2d3d5bf49d4e Format and doc changes to bring closer to xfns.c.
Jason Rumney <jasonr@gnu.org>
parents: 29021
diff changeset
5506 {
2d3d5bf49d4e Format and doc changes to bring closer to xfns.c.
Jason Rumney <jasonr@gnu.org>
parents: 29021
diff changeset
5507 if (end > charset && *(end-1) == '-')
2d3d5bf49d4e Format and doc changes to bring closer to xfns.c.
Jason Rumney <jasonr@gnu.org>
parents: 29021
diff changeset
5508 end--;
2d3d5bf49d4e Format and doc changes to bring closer to xfns.c.
Jason Rumney <jasonr@gnu.org>
parents: 29021
diff changeset
5509 *end = '\0';
2d3d5bf49d4e Format and doc changes to bring closer to xfns.c.
Jason Rumney <jasonr@gnu.org>
parents: 29021
diff changeset
5510 }
2d3d5bf49d4e Format and doc changes to bring closer to xfns.c.
Jason Rumney <jasonr@gnu.org>
parents: 29021
diff changeset
5511
89594
169b2685d6f6 (w32_load_system_font): Default charset to -1.
Jason Rumney <jasonr@gnu.org>
parents: 89585
diff changeset
5512 if (!strcmp (charset, "iso10646"))
169b2685d6f6 (w32_load_system_font): Default charset to -1.
Jason Rumney <jasonr@gnu.org>
parents: 89585
diff changeset
5513 return CP_UNICODE;
169b2685d6f6 (w32_load_system_font): Default charset to -1.
Jason Rumney <jasonr@gnu.org>
parents: 89585
diff changeset
5514
169b2685d6f6 (w32_load_system_font): Default charset to -1.
Jason Rumney <jasonr@gnu.org>
parents: 89585
diff changeset
5515 if (NILP (Vw32_charset_info_alist))
169b2685d6f6 (w32_load_system_font): Default charset to -1.
Jason Rumney <jasonr@gnu.org>
parents: 89585
diff changeset
5516 return CP_DEFAULT;
169b2685d6f6 (w32_load_system_font): Default charset to -1.
Jason Rumney <jasonr@gnu.org>
parents: 89585
diff changeset
5517
33387
01a10bc04233 (Qw32_charset_hangeul): Rename to match w32 headers.
Jason Rumney <jasonr@gnu.org>
parents: 33216
diff changeset
5518 entry = Fassoc (build_string(charset), Vw32_charset_info_alist);
01a10bc04233 (Qw32_charset_hangeul): Rename to match w32 headers.
Jason Rumney <jasonr@gnu.org>
parents: 33216
diff changeset
5519 if (NILP (entry))
34284
3a21ff35392b (xlfd_charset_of_font): Don't overwrite fontname
Andrew Innes <andrewi@gnu.org>
parents: 34133
diff changeset
5520 return CP_UNKNOWN;
33387
01a10bc04233 (Qw32_charset_hangeul): Rename to match w32 headers.
Jason Rumney <jasonr@gnu.org>
parents: 33216
diff changeset
5521
01a10bc04233 (Qw32_charset_hangeul): Rename to match w32 headers.
Jason Rumney <jasonr@gnu.org>
parents: 33216
diff changeset
5522 codepage = Fcdr (Fcdr (entry));
01a10bc04233 (Qw32_charset_hangeul): Rename to match w32 headers.
Jason Rumney <jasonr@gnu.org>
parents: 33216
diff changeset
5523
01a10bc04233 (Qw32_charset_hangeul): Rename to match w32 headers.
Jason Rumney <jasonr@gnu.org>
parents: 33216
diff changeset
5524 if (NILP (codepage))
01a10bc04233 (Qw32_charset_hangeul): Rename to match w32 headers.
Jason Rumney <jasonr@gnu.org>
parents: 33216
diff changeset
5525 return CP_8BIT;
01a10bc04233 (Qw32_charset_hangeul): Rename to match w32 headers.
Jason Rumney <jasonr@gnu.org>
parents: 33216
diff changeset
5526 else if (XFASTINT (codepage) == XFASTINT (Qt))
01a10bc04233 (Qw32_charset_hangeul): Rename to match w32 headers.
Jason Rumney <jasonr@gnu.org>
parents: 33216
diff changeset
5527 return CP_UNICODE;
01a10bc04233 (Qw32_charset_hangeul): Rename to match w32 headers.
Jason Rumney <jasonr@gnu.org>
parents: 33216
diff changeset
5528 else if (INTEGERP (codepage))
29317
2d3d5bf49d4e Format and doc changes to bring closer to xfns.c.
Jason Rumney <jasonr@gnu.org>
parents: 29021
diff changeset
5529 return XINT (codepage);
2d3d5bf49d4e Format and doc changes to bring closer to xfns.c.
Jason Rumney <jasonr@gnu.org>
parents: 29021
diff changeset
5530 else
34284
3a21ff35392b (xlfd_charset_of_font): Don't overwrite fontname
Andrew Innes <andrewi@gnu.org>
parents: 34133
diff changeset
5531 return CP_UNKNOWN;
29317
2d3d5bf49d4e Format and doc changes to bring closer to xfns.c.
Jason Rumney <jasonr@gnu.org>
parents: 29021
diff changeset
5532 }
94917
e61553aa7a73 Throughout the file, delete all USE_FONT_BACKEND
Kenichi Handa <handa@m17n.org>
parents: 94618
diff changeset
5533 #endif /* OLD_FONT */
29317
2d3d5bf49d4e Format and doc changes to bring closer to xfns.c.
Jason Rumney <jasonr@gnu.org>
parents: 29021
diff changeset
5534
47942
080b4586492b Fix typo in comment.
Juanma Barranquero <lekktu@gmail.com>
parents: 47731
diff changeset
5535 static BOOL
33387
01a10bc04233 (Qw32_charset_hangeul): Rename to match w32 headers.
Jason Rumney <jasonr@gnu.org>
parents: 33216
diff changeset
5536 w32_to_x_font (lplogfont, lpxstr, len, specific_charset)
13434
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
5537 LOGFONT * lplogfont;
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
5538 char * lpxstr;
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
5539 int len;
33387
01a10bc04233 (Qw32_charset_hangeul): Rename to match w32 headers.
Jason Rumney <jasonr@gnu.org>
parents: 33216
diff changeset
5540 char * specific_charset;
13434
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
5541 {
27397
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
5542 char* fonttype;
24497
b09ceba3d319 (enum_font_cb2): Set the font height to be the
Geoff Voelker <voelker@cs.washington.edu>
parents: 24481
diff changeset
5543 char *fontname;
15205
0f5d6cd72e21 (win_msg_worker): Use post_msg.
Richard M. Stallman <rms@gnu.org>
parents: 15148
diff changeset
5544 char height_pixels[8];
0f5d6cd72e21 (win_msg_worker): Use post_msg.
Richard M. Stallman <rms@gnu.org>
parents: 15148
diff changeset
5545 char height_dpi[8];
0f5d6cd72e21 (win_msg_worker): Use post_msg.
Richard M. Stallman <rms@gnu.org>
parents: 15148
diff changeset
5546 char width_pixels[8];
23506
246a14f0622f (Vx_pixel_size_width): New global variable.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23407
diff changeset
5547 char *fontname_dash;
44047
73645cbc79a7 (x_set_cursor_color): Set foreground of cursor, not frame.
Jason Rumney <jasonr@gnu.org>
parents: 43963
diff changeset
5548 int display_resy = (int) one_w32_display_info.resy;
73645cbc79a7 (x_set_cursor_color): Set foreground of cursor, not frame.
Jason Rumney <jasonr@gnu.org>
parents: 43963
diff changeset
5549 int display_resx = (int) one_w32_display_info.resx;
24497
b09ceba3d319 (enum_font_cb2): Set the font height to be the
Geoff Voelker <voelker@cs.washington.edu>
parents: 24481
diff changeset
5550 struct coding_system coding;
15205
0f5d6cd72e21 (win_msg_worker): Use post_msg.
Richard M. Stallman <rms@gnu.org>
parents: 15148
diff changeset
5551
0f5d6cd72e21 (win_msg_worker): Use post_msg.
Richard M. Stallman <rms@gnu.org>
parents: 15148
diff changeset
5552 if (!lpxstr) abort ();
0f5d6cd72e21 (win_msg_worker): Use post_msg.
Richard M. Stallman <rms@gnu.org>
parents: 15148
diff changeset
5553
0f5d6cd72e21 (win_msg_worker): Use post_msg.
Richard M. Stallman <rms@gnu.org>
parents: 15148
diff changeset
5554 if (!lplogfont)
0f5d6cd72e21 (win_msg_worker): Use post_msg.
Richard M. Stallman <rms@gnu.org>
parents: 15148
diff changeset
5555 return FALSE;
0f5d6cd72e21 (win_msg_worker): Use post_msg.
Richard M. Stallman <rms@gnu.org>
parents: 15148
diff changeset
5556
27397
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
5557 if (lplogfont->lfOutPrecision == OUT_STRING_PRECIS)
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
5558 fonttype = "raster";
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
5559 else if (lplogfont->lfOutPrecision == OUT_STROKE_PRECIS)
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
5560 fonttype = "outline";
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
5561 else
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
5562 fonttype = "unknown";
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
5563
41322
482c520b29ba (Vw32_system_coding_system): Remove.
Jason Rumney <jasonr@gnu.org>
parents: 41250
diff changeset
5564 setup_coding_system (Fcheck_coding_system (Vlocale_coding_system),
24497
b09ceba3d319 (enum_font_cb2): Set the font height to be the
Geoff Voelker <voelker@cs.washington.edu>
parents: 24481
diff changeset
5565 &coding);
29021
be2769eac1a5 (w32_to_x_font): Setup members src_multibyte and
Kenichi Handa <handa@m17n.org>
parents: 28983
diff changeset
5566 coding.src_multibyte = 0;
be2769eac1a5 (w32_to_x_font): Setup members src_multibyte and
Kenichi Handa <handa@m17n.org>
parents: 28983
diff changeset
5567 coding.dst_multibyte = 1;
24497
b09ceba3d319 (enum_font_cb2): Set the font height to be the
Geoff Voelker <voelker@cs.washington.edu>
parents: 24481
diff changeset
5568 coding.mode |= CODING_MODE_LAST_BLOCK;
45983
1f9be7a1addc (w32_to_x_font): Disable composition handling.
Kenichi Handa <handa@m17n.org>
parents: 45963
diff changeset
5569 /* We explicitely disable composition handling because selection
1f9be7a1addc (w32_to_x_font): Disable composition handling.
Kenichi Handa <handa@m17n.org>
parents: 45963
diff changeset
5570 data should not contain any composition sequence. */
89585
f89c9d4bd81c (Fx_create_frame, x_create_tip_frame): Use new version of x_new_fontset.
Jason Rumney <jasonr@gnu.org>
parents: 88123
diff changeset
5571 coding.common_flags &= ~CODING_ANNOTATION_MASK;
f89c9d4bd81c (Fx_create_frame, x_create_tip_frame): Use new version of x_new_fontset.
Jason Rumney <jasonr@gnu.org>
parents: 88123
diff changeset
5572
f89c9d4bd81c (Fx_create_frame, x_create_tip_frame): Use new version of x_new_fontset.
Jason Rumney <jasonr@gnu.org>
parents: 88123
diff changeset
5573 coding.dst_bytes = LF_FACESIZE * 2;
f89c9d4bd81c (Fx_create_frame, x_create_tip_frame): Use new version of x_new_fontset.
Jason Rumney <jasonr@gnu.org>
parents: 88123
diff changeset
5574 coding.destination = (unsigned char *) xmalloc (coding.dst_bytes + 1);
f89c9d4bd81c (Fx_create_frame, x_create_tip_frame): Use new version of x_new_fontset.
Jason Rumney <jasonr@gnu.org>
parents: 88123
diff changeset
5575 decode_coding_c_string (&coding, lplogfont->lfFaceName,
f89c9d4bd81c (Fx_create_frame, x_create_tip_frame): Use new version of x_new_fontset.
Jason Rumney <jasonr@gnu.org>
parents: 88123
diff changeset
5576 strlen(lplogfont->lfFaceName), Qnil);
f89c9d4bd81c (Fx_create_frame, x_create_tip_frame): Use new version of x_new_fontset.
Jason Rumney <jasonr@gnu.org>
parents: 88123
diff changeset
5577 fontname = coding.destination;
24497
b09ceba3d319 (enum_font_cb2): Set the font height to be the
Geoff Voelker <voelker@cs.washington.edu>
parents: 24481
diff changeset
5578
b09ceba3d319 (enum_font_cb2): Set the font height to be the
Geoff Voelker <voelker@cs.washington.edu>
parents: 24481
diff changeset
5579 *(fontname + coding.produced) = '\0';
23506
246a14f0622f (Vx_pixel_size_width): New global variable.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23407
diff changeset
5580
246a14f0622f (Vx_pixel_size_width): New global variable.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23407
diff changeset
5581 /* Replace dashes with underscores so the dashes are not
24497
b09ceba3d319 (enum_font_cb2): Set the font height to be the
Geoff Voelker <voelker@cs.washington.edu>
parents: 24481
diff changeset
5582 misinterpreted. */
23506
246a14f0622f (Vx_pixel_size_width): New global variable.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23407
diff changeset
5583 fontname_dash = fontname;
246a14f0622f (Vx_pixel_size_width): New global variable.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23407
diff changeset
5584 while (fontname_dash = strchr (fontname_dash, '-'))
246a14f0622f (Vx_pixel_size_width): New global variable.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23407
diff changeset
5585 *fontname_dash = '_';
246a14f0622f (Vx_pixel_size_width): New global variable.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23407
diff changeset
5586
15205
0f5d6cd72e21 (win_msg_worker): Use post_msg.
Richard M. Stallman <rms@gnu.org>
parents: 15148
diff changeset
5587 if (lplogfont->lfHeight)
13434
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
5588 {
85263
f8835bb7ba30 Replace `abs' with `eabs'.
Eli Zaretskii <eliz@gnu.org>
parents: 85114
diff changeset
5589 sprintf (height_pixels, "%u", eabs (lplogfont->lfHeight));
15205
0f5d6cd72e21 (win_msg_worker): Use post_msg.
Richard M. Stallman <rms@gnu.org>
parents: 15148
diff changeset
5590 sprintf (height_dpi, "%u",
85263
f8835bb7ba30 Replace `abs' with `eabs'.
Eli Zaretskii <eliz@gnu.org>
parents: 85114
diff changeset
5591 eabs (lplogfont->lfHeight) * 720 / display_resy);
15147
38c0ce06203f (quit_char, Vwin32_enable_italics, Vwin32_enable_palette):
Geoff Voelker <voelker@cs.washington.edu>
parents: 15034
diff changeset
5592 }
38c0ce06203f (quit_char, Vwin32_enable_italics, Vwin32_enable_palette):
Geoff Voelker <voelker@cs.washington.edu>
parents: 15034
diff changeset
5593 else
13434
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
5594 {
15205
0f5d6cd72e21 (win_msg_worker): Use post_msg.
Richard M. Stallman <rms@gnu.org>
parents: 15148
diff changeset
5595 strcpy (height_pixels, "*");
0f5d6cd72e21 (win_msg_worker): Use post_msg.
Richard M. Stallman <rms@gnu.org>
parents: 15148
diff changeset
5596 strcpy (height_dpi, "*");
13434
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
5597 }
66449
24efdc78f7c1 (w32_to_x_font): Avoid forcing font widths.
Jason Rumney <jasonr@gnu.org>
parents: 64770
diff changeset
5598
95355
b2d851c43596 Fix typo in comment.
Juanma Barranquero <lekktu@gmail.com>
parents: 95218
diff changeset
5599 #if 0 /* Never put the width in the xlfd. It fails on fonts with
66449
24efdc78f7c1 (w32_to_x_font): Avoid forcing font widths.
Jason Rumney <jasonr@gnu.org>
parents: 64770
diff changeset
5600 double-width characters. */
15205
0f5d6cd72e21 (win_msg_worker): Use post_msg.
Richard M. Stallman <rms@gnu.org>
parents: 15148
diff changeset
5601 if (lplogfont->lfWidth)
0f5d6cd72e21 (win_msg_worker): Use post_msg.
Richard M. Stallman <rms@gnu.org>
parents: 15148
diff changeset
5602 sprintf (width_pixels, "%u", lplogfont->lfWidth * 10);
0f5d6cd72e21 (win_msg_worker): Use post_msg.
Richard M. Stallman <rms@gnu.org>
parents: 15148
diff changeset
5603 else
66449
24efdc78f7c1 (w32_to_x_font): Avoid forcing font widths.
Jason Rumney <jasonr@gnu.org>
parents: 64770
diff changeset
5604 #endif
15205
0f5d6cd72e21 (win_msg_worker): Use post_msg.
Richard M. Stallman <rms@gnu.org>
parents: 15148
diff changeset
5605 strcpy (width_pixels, "*");
0f5d6cd72e21 (win_msg_worker): Use post_msg.
Richard M. Stallman <rms@gnu.org>
parents: 15148
diff changeset
5606
0f5d6cd72e21 (win_msg_worker): Use post_msg.
Richard M. Stallman <rms@gnu.org>
parents: 15148
diff changeset
5607 _snprintf (lpxstr, len - 1,
27397
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
5608 "-%s-%s-%s-%c-normal-normal-%s-%s-%d-%d-%c-%s-%s",
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
5609 fonttype, /* foundry */
23506
246a14f0622f (Vx_pixel_size_width): New global variable.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23407
diff changeset
5610 fontname, /* family */
246a14f0622f (Vx_pixel_size_width): New global variable.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23407
diff changeset
5611 w32_to_x_weight (lplogfont->lfWeight), /* weight */
246a14f0622f (Vx_pixel_size_width): New global variable.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23407
diff changeset
5612 lplogfont->lfItalic?'i':'r', /* slant */
246a14f0622f (Vx_pixel_size_width): New global variable.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23407
diff changeset
5613 /* setwidth name */
246a14f0622f (Vx_pixel_size_width): New global variable.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23407
diff changeset
5614 /* add style name */
246a14f0622f (Vx_pixel_size_width): New global variable.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23407
diff changeset
5615 height_pixels, /* pixel size */
246a14f0622f (Vx_pixel_size_width): New global variable.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23407
diff changeset
5616 height_dpi, /* point size */
24147
c83b0bc4e8b9 (Vw32_bdf_filename_alist): New variable.
Geoff Voelker <voelker@cs.washington.edu>
parents: 24130
diff changeset
5617 display_resx, /* resx */
c83b0bc4e8b9 (Vw32_bdf_filename_alist): New variable.
Geoff Voelker <voelker@cs.washington.edu>
parents: 24130
diff changeset
5618 display_resy, /* resy */
23506
246a14f0622f (Vx_pixel_size_width): New global variable.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23407
diff changeset
5619 ((lplogfont->lfPitchAndFamily & 0x3) == VARIABLE_PITCH)
246a14f0622f (Vx_pixel_size_width): New global variable.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23407
diff changeset
5620 ? 'p' : 'c', /* spacing */
246a14f0622f (Vx_pixel_size_width): New global variable.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23407
diff changeset
5621 width_pixels, /* avg width */
89594
169b2685d6f6 (w32_load_system_font): Default charset to -1.
Jason Rumney <jasonr@gnu.org>
parents: 89585
diff changeset
5622 w32_to_x_charset (lplogfont->lfCharSet, specific_charset)
33387
01a10bc04233 (Qw32_charset_hangeul): Rename to match w32 headers.
Jason Rumney <jasonr@gnu.org>
parents: 33216
diff changeset
5623 /* charset registry and encoding */
15205
0f5d6cd72e21 (win_msg_worker): Use post_msg.
Richard M. Stallman <rms@gnu.org>
parents: 15148
diff changeset
5624 );
0f5d6cd72e21 (win_msg_worker): Use post_msg.
Richard M. Stallman <rms@gnu.org>
parents: 15148
diff changeset
5625
13434
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
5626 lpxstr[len - 1] = 0; /* just to be sure */
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
5627 return (TRUE);
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
5628 }
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
5629
47942
080b4586492b Fix typo in comment.
Juanma Barranquero <lekktu@gmail.com>
parents: 47731
diff changeset
5630 static BOOL
16588
481b7874a1e9 Change identifiers of the form win32* to w32*.
Geoff Voelker <voelker@cs.washington.edu>
parents: 16259
diff changeset
5631 x_to_w32_font (lpxstr, lplogfont)
13434
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
5632 char * lpxstr;
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
5633 LOGFONT * lplogfont;
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
5634 {
24497
b09ceba3d319 (enum_font_cb2): Set the font height to be the
Geoff Voelker <voelker@cs.washington.edu>
parents: 24481
diff changeset
5635 struct coding_system coding;
b09ceba3d319 (enum_font_cb2): Set the font height to be the
Geoff Voelker <voelker@cs.washington.edu>
parents: 24481
diff changeset
5636
13434
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
5637 if (!lplogfont) return (FALSE);
24497
b09ceba3d319 (enum_font_cb2): Set the font height to be the
Geoff Voelker <voelker@cs.washington.edu>
parents: 24481
diff changeset
5638
13434
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
5639 memset (lplogfont, 0, sizeof (*lplogfont));
15147
38c0ce06203f (quit_char, Vwin32_enable_italics, Vwin32_enable_palette):
Geoff Voelker <voelker@cs.washington.edu>
parents: 15034
diff changeset
5640
23620
2b55b8f8cdc1 (x_to_w32_font): Specify DEFAULT_CHARSET in the w32 LOGFONT struct if
Andrew Innes <andrewi@gnu.org>
parents: 23558
diff changeset
5641 /* Set default value for each field. */
15380
8b01836a6b06 (x_to_win32_font): Allow any quality fonts.
Richard M. Stallman <rms@gnu.org>
parents: 15377
diff changeset
5642 #if 1
13434
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
5643 lplogfont->lfOutPrecision = OUT_DEFAULT_PRECIS;
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
5644 lplogfont->lfClipPrecision = CLIP_DEFAULT_PRECIS;
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
5645 lplogfont->lfQuality = DEFAULT_QUALITY;
15147
38c0ce06203f (quit_char, Vwin32_enable_italics, Vwin32_enable_palette):
Geoff Voelker <voelker@cs.washington.edu>
parents: 15034
diff changeset
5646 #else
38c0ce06203f (quit_char, Vwin32_enable_italics, Vwin32_enable_palette):
Geoff Voelker <voelker@cs.washington.edu>
parents: 15034
diff changeset
5647 /* go for maximum quality */
38c0ce06203f (quit_char, Vwin32_enable_italics, Vwin32_enable_palette):
Geoff Voelker <voelker@cs.washington.edu>
parents: 15034
diff changeset
5648 lplogfont->lfOutPrecision = OUT_STROKE_PRECIS;
38c0ce06203f (quit_char, Vwin32_enable_italics, Vwin32_enable_palette):
Geoff Voelker <voelker@cs.washington.edu>
parents: 15034
diff changeset
5649 lplogfont->lfClipPrecision = CLIP_STROKE_PRECIS;
38c0ce06203f (quit_char, Vwin32_enable_italics, Vwin32_enable_palette):
Geoff Voelker <voelker@cs.washington.edu>
parents: 15034
diff changeset
5650 lplogfont->lfQuality = PROOF_QUALITY;
38c0ce06203f (quit_char, Vwin32_enable_italics, Vwin32_enable_palette):
Geoff Voelker <voelker@cs.washington.edu>
parents: 15034
diff changeset
5651 #endif
38c0ce06203f (quit_char, Vwin32_enable_italics, Vwin32_enable_palette):
Geoff Voelker <voelker@cs.washington.edu>
parents: 15034
diff changeset
5652
23620
2b55b8f8cdc1 (x_to_w32_font): Specify DEFAULT_CHARSET in the w32 LOGFONT struct if
Andrew Innes <andrewi@gnu.org>
parents: 23558
diff changeset
5653 lplogfont->lfCharSet = DEFAULT_CHARSET;
2b55b8f8cdc1 (x_to_w32_font): Specify DEFAULT_CHARSET in the w32 LOGFONT struct if
Andrew Innes <andrewi@gnu.org>
parents: 23558
diff changeset
5654 lplogfont->lfWeight = FW_DONTCARE;
2b55b8f8cdc1 (x_to_w32_font): Specify DEFAULT_CHARSET in the w32 LOGFONT struct if
Andrew Innes <andrewi@gnu.org>
parents: 23558
diff changeset
5655 lplogfont->lfPitchAndFamily = DEFAULT_PITCH | FF_DONTCARE;
2b55b8f8cdc1 (x_to_w32_font): Specify DEFAULT_CHARSET in the w32 LOGFONT struct if
Andrew Innes <andrewi@gnu.org>
parents: 23558
diff changeset
5656
15147
38c0ce06203f (quit_char, Vwin32_enable_italics, Vwin32_enable_palette):
Geoff Voelker <voelker@cs.washington.edu>
parents: 15034
diff changeset
5657 if (!lpxstr)
38c0ce06203f (quit_char, Vwin32_enable_italics, Vwin32_enable_palette):
Geoff Voelker <voelker@cs.washington.edu>
parents: 15034
diff changeset
5658 return FALSE;
38c0ce06203f (quit_char, Vwin32_enable_italics, Vwin32_enable_palette):
Geoff Voelker <voelker@cs.washington.edu>
parents: 15034
diff changeset
5659
38c0ce06203f (quit_char, Vwin32_enable_italics, Vwin32_enable_palette):
Geoff Voelker <voelker@cs.washington.edu>
parents: 15034
diff changeset
5660 /* Provide a simple escape mechanism for specifying Windows font names
38c0ce06203f (quit_char, Vwin32_enable_italics, Vwin32_enable_palette):
Geoff Voelker <voelker@cs.washington.edu>
parents: 15034
diff changeset
5661 * directly -- if font spec does not beginning with '-', assume this
38c0ce06203f (quit_char, Vwin32_enable_italics, Vwin32_enable_palette):
Geoff Voelker <voelker@cs.washington.edu>
parents: 15034
diff changeset
5662 * format:
38c0ce06203f (quit_char, Vwin32_enable_italics, Vwin32_enable_palette):
Geoff Voelker <voelker@cs.washington.edu>
parents: 15034
diff changeset
5663 * "<font name>[:height in pixels[:width in pixels[:weight]]]"
38c0ce06203f (quit_char, Vwin32_enable_italics, Vwin32_enable_palette):
Geoff Voelker <voelker@cs.washington.edu>
parents: 15034
diff changeset
5664 */
47942
080b4586492b Fix typo in comment.
Juanma Barranquero <lekktu@gmail.com>
parents: 47731
diff changeset
5665
15147
38c0ce06203f (quit_char, Vwin32_enable_italics, Vwin32_enable_palette):
Geoff Voelker <voelker@cs.washington.edu>
parents: 15034
diff changeset
5666 if (*lpxstr == '-')
38c0ce06203f (quit_char, Vwin32_enable_italics, Vwin32_enable_palette):
Geoff Voelker <voelker@cs.washington.edu>
parents: 15034
diff changeset
5667 {
24147
c83b0bc4e8b9 (Vw32_bdf_filename_alist): New variable.
Geoff Voelker <voelker@cs.washington.edu>
parents: 24130
diff changeset
5668 int fields, tem;
c83b0bc4e8b9 (Vw32_bdf_filename_alist): New variable.
Geoff Voelker <voelker@cs.washington.edu>
parents: 24130
diff changeset
5669 char name[50], weight[20], slant, pitch, pixels[10], height[10],
39548
6192be048459 (x_to_w32_color): Fix argument to alloca.
Andrew Innes <andrewi@gnu.org>
parents: 39137
diff changeset
5670 width[10], resy[10], remainder[50];
15147
38c0ce06203f (quit_char, Vwin32_enable_italics, Vwin32_enable_palette):
Geoff Voelker <voelker@cs.washington.edu>
parents: 15034
diff changeset
5671 char * encoding;
44047
73645cbc79a7 (x_set_cursor_color): Set foreground of cursor, not frame.
Jason Rumney <jasonr@gnu.org>
parents: 43963
diff changeset
5672 int dpi = (int) one_w32_display_info.resy;
15147
38c0ce06203f (quit_char, Vwin32_enable_italics, Vwin32_enable_palette):
Geoff Voelker <voelker@cs.washington.edu>
parents: 15034
diff changeset
5673
38c0ce06203f (quit_char, Vwin32_enable_italics, Vwin32_enable_palette):
Geoff Voelker <voelker@cs.washington.edu>
parents: 15034
diff changeset
5674 fields = sscanf (lpxstr,
39548
6192be048459 (x_to_w32_color): Fix argument to alloca.
Andrew Innes <andrewi@gnu.org>
parents: 39137
diff changeset
5675 "-%*[^-]-%49[^-]-%19[^-]-%c-%*[^-]-%*[^-]-%9[^-]-%9[^-]-%*[^-]-%9[^-]-%c-%9[^-]-%49s",
24147
c83b0bc4e8b9 (Vw32_bdf_filename_alist): New variable.
Geoff Voelker <voelker@cs.washington.edu>
parents: 24130
diff changeset
5676 name, weight, &slant, pixels, height, resy, &pitch, width, remainder);
39548
6192be048459 (x_to_w32_color): Fix argument to alloca.
Andrew Innes <andrewi@gnu.org>
parents: 39137
diff changeset
5677 if (fields == EOF)
6192be048459 (x_to_w32_color): Fix argument to alloca.
Andrew Innes <andrewi@gnu.org>
parents: 39137
diff changeset
5678 return (FALSE);
6192be048459 (x_to_w32_color): Fix argument to alloca.
Andrew Innes <andrewi@gnu.org>
parents: 39137
diff changeset
5679
6192be048459 (x_to_w32_color): Fix argument to alloca.
Andrew Innes <andrewi@gnu.org>
parents: 39137
diff changeset
5680 /* In the general case when wildcards cover more than one field,
6192be048459 (x_to_w32_color): Fix argument to alloca.
Andrew Innes <andrewi@gnu.org>
parents: 39137
diff changeset
5681 we don't know which field is which, so don't fill any in.
6192be048459 (x_to_w32_color): Fix argument to alloca.
Andrew Innes <andrewi@gnu.org>
parents: 39137
diff changeset
5682 However, we need to cope with this particular form, which is
6192be048459 (x_to_w32_color): Fix argument to alloca.
Andrew Innes <andrewi@gnu.org>
parents: 39137
diff changeset
5683 generated by font_list_1 (invoked by try_font_list):
6192be048459 (x_to_w32_color): Fix argument to alloca.
Andrew Innes <andrewi@gnu.org>
parents: 39137
diff changeset
5684 "-raster-6x10-*-gb2312*-*"
6192be048459 (x_to_w32_color): Fix argument to alloca.
Andrew Innes <andrewi@gnu.org>
parents: 39137
diff changeset
5685 and make sure to correctly parse the charset field. */
6192be048459 (x_to_w32_color): Fix argument to alloca.
Andrew Innes <andrewi@gnu.org>
parents: 39137
diff changeset
5686 if (fields == 3)
6192be048459 (x_to_w32_color): Fix argument to alloca.
Andrew Innes <andrewi@gnu.org>
parents: 39137
diff changeset
5687 {
6192be048459 (x_to_w32_color): Fix argument to alloca.
Andrew Innes <andrewi@gnu.org>
parents: 39137
diff changeset
5688 fields = sscanf (lpxstr,
6192be048459 (x_to_w32_color): Fix argument to alloca.
Andrew Innes <andrewi@gnu.org>
parents: 39137
diff changeset
5689 "-%*[^-]-%49[^-]-*-%49s",
6192be048459 (x_to_w32_color): Fix argument to alloca.
Andrew Innes <andrewi@gnu.org>
parents: 39137
diff changeset
5690 name, remainder);
6192be048459 (x_to_w32_color): Fix argument to alloca.
Andrew Innes <andrewi@gnu.org>
parents: 39137
diff changeset
5691 }
6192be048459 (x_to_w32_color): Fix argument to alloca.
Andrew Innes <andrewi@gnu.org>
parents: 39137
diff changeset
5692 else if (fields < 9)
6192be048459 (x_to_w32_color): Fix argument to alloca.
Andrew Innes <andrewi@gnu.org>
parents: 39137
diff changeset
5693 {
6192be048459 (x_to_w32_color): Fix argument to alloca.
Andrew Innes <andrewi@gnu.org>
parents: 39137
diff changeset
5694 fields = 0;
6192be048459 (x_to_w32_color): Fix argument to alloca.
Andrew Innes <andrewi@gnu.org>
parents: 39137
diff changeset
5695 remainder[0] = 0;
6192be048459 (x_to_w32_color): Fix argument to alloca.
Andrew Innes <andrewi@gnu.org>
parents: 39137
diff changeset
5696 }
27397
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
5697
15147
38c0ce06203f (quit_char, Vwin32_enable_italics, Vwin32_enable_palette):
Geoff Voelker <voelker@cs.washington.edu>
parents: 15034
diff changeset
5698 if (fields > 0 && name[0] != '*')
38c0ce06203f (quit_char, Vwin32_enable_italics, Vwin32_enable_palette):
Geoff Voelker <voelker@cs.washington.edu>
parents: 15034
diff changeset
5699 {
89967
cf5499fb503f (x_to_w32_font): Update to use new coding struct.
Jason Rumney <jasonr@gnu.org>
parents: 89956
diff changeset
5700 Lisp_Object string = build_string (name);
24497
b09ceba3d319 (enum_font_cb2): Set the font height to be the
Geoff Voelker <voelker@cs.washington.edu>
parents: 24481
diff changeset
5701 setup_coding_system
41322
482c520b29ba (Vw32_system_coding_system): Remove.
Jason Rumney <jasonr@gnu.org>
parents: 41250
diff changeset
5702 (Fcheck_coding_system (Vlocale_coding_system), &coding);
89967
cf5499fb503f (x_to_w32_font): Update to use new coding struct.
Jason Rumney <jasonr@gnu.org>
parents: 89956
diff changeset
5703 coding.mode |= (CODING_MODE_SAFE_ENCODING | CODING_MODE_LAST_BLOCK);
89909
68c22ea6027c Sync to HEAD
Kenichi Handa <handa@m17n.org>
parents: 89594
diff changeset
5704 /* Disable composition/charset annotation. */
68c22ea6027c Sync to HEAD
Kenichi Handa <handa@m17n.org>
parents: 89594
diff changeset
5705 coding.common_flags &= ~CODING_ANNOTATION_MASK;
89967
cf5499fb503f (x_to_w32_font): Update to use new coding struct.
Jason Rumney <jasonr@gnu.org>
parents: 89956
diff changeset
5706 coding.dst_bytes = SCHARS (string) * 2;
cf5499fb503f (x_to_w32_font): Update to use new coding struct.
Jason Rumney <jasonr@gnu.org>
parents: 89956
diff changeset
5707
cf5499fb503f (x_to_w32_font): Update to use new coding struct.
Jason Rumney <jasonr@gnu.org>
parents: 89956
diff changeset
5708 coding.destination = (unsigned char *) xmalloc (coding.dst_bytes);
cf5499fb503f (x_to_w32_font): Update to use new coding struct.
Jason Rumney <jasonr@gnu.org>
parents: 89956
diff changeset
5709 encode_coding_object (&coding, string, 0, 0,
cf5499fb503f (x_to_w32_font): Update to use new coding struct.
Jason Rumney <jasonr@gnu.org>
parents: 89956
diff changeset
5710 SCHARS (string), SBYTES (string), Qnil);
24583
0e5c5bd9b99d (x_to_w32_font): Provide sufficient buffer to encode_coding to avoid carryover.
Richard M. Stallman <rms@gnu.org>
parents: 24497
diff changeset
5711 if (coding.produced >= LF_FACESIZE)
0e5c5bd9b99d (x_to_w32_font): Provide sufficient buffer to encode_coding to avoid carryover.
Richard M. Stallman <rms@gnu.org>
parents: 24497
diff changeset
5712 coding.produced = LF_FACESIZE - 1;
89585
f89c9d4bd81c (Fx_create_frame, x_create_tip_frame): Use new version of x_new_fontset.
Jason Rumney <jasonr@gnu.org>
parents: 88123
diff changeset
5713
f89c9d4bd81c (Fx_create_frame, x_create_tip_frame): Use new version of x_new_fontset.
Jason Rumney <jasonr@gnu.org>
parents: 88123
diff changeset
5714 coding.destination[coding.produced] = '\0';
f89c9d4bd81c (Fx_create_frame, x_create_tip_frame): Use new version of x_new_fontset.
Jason Rumney <jasonr@gnu.org>
parents: 88123
diff changeset
5715
f89c9d4bd81c (Fx_create_frame, x_create_tip_frame): Use new version of x_new_fontset.
Jason Rumney <jasonr@gnu.org>
parents: 88123
diff changeset
5716 strcpy (lplogfont->lfFaceName, coding.destination);
f89c9d4bd81c (Fx_create_frame, x_create_tip_frame): Use new version of x_new_fontset.
Jason Rumney <jasonr@gnu.org>
parents: 88123
diff changeset
5717 xfree (coding.destination);
15147
38c0ce06203f (quit_char, Vwin32_enable_italics, Vwin32_enable_palette):
Geoff Voelker <voelker@cs.washington.edu>
parents: 15034
diff changeset
5718 }
38c0ce06203f (quit_char, Vwin32_enable_italics, Vwin32_enable_palette):
Geoff Voelker <voelker@cs.washington.edu>
parents: 15034
diff changeset
5719 else
38c0ce06203f (quit_char, Vwin32_enable_italics, Vwin32_enable_palette):
Geoff Voelker <voelker@cs.washington.edu>
parents: 15034
diff changeset
5720 {
27397
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
5721 lplogfont->lfFaceName[0] = '\0';
15147
38c0ce06203f (quit_char, Vwin32_enable_italics, Vwin32_enable_palette):
Geoff Voelker <voelker@cs.washington.edu>
parents: 15034
diff changeset
5722 }
38c0ce06203f (quit_char, Vwin32_enable_italics, Vwin32_enable_palette):
Geoff Voelker <voelker@cs.washington.edu>
parents: 15034
diff changeset
5723
38c0ce06203f (quit_char, Vwin32_enable_italics, Vwin32_enable_palette):
Geoff Voelker <voelker@cs.washington.edu>
parents: 15034
diff changeset
5724 fields--;
38c0ce06203f (quit_char, Vwin32_enable_italics, Vwin32_enable_palette):
Geoff Voelker <voelker@cs.washington.edu>
parents: 15034
diff changeset
5725
16588
481b7874a1e9 Change identifiers of the form win32* to w32*.
Geoff Voelker <voelker@cs.washington.edu>
parents: 16259
diff changeset
5726 lplogfont->lfWeight = x_to_w32_weight ((fields > 0 ? weight : ""));
15147
38c0ce06203f (quit_char, Vwin32_enable_italics, Vwin32_enable_palette):
Geoff Voelker <voelker@cs.washington.edu>
parents: 15034
diff changeset
5727
38c0ce06203f (quit_char, Vwin32_enable_italics, Vwin32_enable_palette):
Geoff Voelker <voelker@cs.washington.edu>
parents: 15034
diff changeset
5728 fields--;
38c0ce06203f (quit_char, Vwin32_enable_italics, Vwin32_enable_palette):
Geoff Voelker <voelker@cs.washington.edu>
parents: 15034
diff changeset
5729
33879
9bbea0dda9cd (x_to_w32_font): Do not filter out italic fonts, as new
Jason Rumney <jasonr@gnu.org>
parents: 33870
diff changeset
5730 lplogfont->lfItalic = (fields > 0 && slant == 'i');
15147
38c0ce06203f (quit_char, Vwin32_enable_italics, Vwin32_enable_palette):
Geoff Voelker <voelker@cs.washington.edu>
parents: 15034
diff changeset
5731
38c0ce06203f (quit_char, Vwin32_enable_italics, Vwin32_enable_palette):
Geoff Voelker <voelker@cs.washington.edu>
parents: 15034
diff changeset
5732 fields--;
38c0ce06203f (quit_char, Vwin32_enable_italics, Vwin32_enable_palette):
Geoff Voelker <voelker@cs.washington.edu>
parents: 15034
diff changeset
5733
38c0ce06203f (quit_char, Vwin32_enable_italics, Vwin32_enable_palette):
Geoff Voelker <voelker@cs.washington.edu>
parents: 15034
diff changeset
5734 if (fields > 0 && pixels[0] != '*')
38c0ce06203f (quit_char, Vwin32_enable_italics, Vwin32_enable_palette):
Geoff Voelker <voelker@cs.washington.edu>
parents: 15034
diff changeset
5735 lplogfont->lfHeight = atoi (pixels);
38c0ce06203f (quit_char, Vwin32_enable_italics, Vwin32_enable_palette):
Geoff Voelker <voelker@cs.washington.edu>
parents: 15034
diff changeset
5736
38c0ce06203f (quit_char, Vwin32_enable_italics, Vwin32_enable_palette):
Geoff Voelker <voelker@cs.washington.edu>
parents: 15034
diff changeset
5737 fields--;
38c0ce06203f (quit_char, Vwin32_enable_italics, Vwin32_enable_palette):
Geoff Voelker <voelker@cs.washington.edu>
parents: 15034
diff changeset
5738 fields--;
24147
c83b0bc4e8b9 (Vw32_bdf_filename_alist): New variable.
Geoff Voelker <voelker@cs.washington.edu>
parents: 24130
diff changeset
5739 if (fields > 0 && resy[0] != '*')
c83b0bc4e8b9 (Vw32_bdf_filename_alist): New variable.
Geoff Voelker <voelker@cs.washington.edu>
parents: 24130
diff changeset
5740 {
27397
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
5741 tem = atoi (resy);
24147
c83b0bc4e8b9 (Vw32_bdf_filename_alist): New variable.
Geoff Voelker <voelker@cs.washington.edu>
parents: 24130
diff changeset
5742 if (tem > 0) dpi = tem;
c83b0bc4e8b9 (Vw32_bdf_filename_alist): New variable.
Geoff Voelker <voelker@cs.washington.edu>
parents: 24130
diff changeset
5743 }
c83b0bc4e8b9 (Vw32_bdf_filename_alist): New variable.
Geoff Voelker <voelker@cs.washington.edu>
parents: 24130
diff changeset
5744
c83b0bc4e8b9 (Vw32_bdf_filename_alist): New variable.
Geoff Voelker <voelker@cs.washington.edu>
parents: 24130
diff changeset
5745 if (fields > -1 && lplogfont->lfHeight == 0 && height[0] != '*')
c83b0bc4e8b9 (Vw32_bdf_filename_alist): New variable.
Geoff Voelker <voelker@cs.washington.edu>
parents: 24130
diff changeset
5746 lplogfont->lfHeight = atoi (height) * dpi / 720;
c83b0bc4e8b9 (Vw32_bdf_filename_alist): New variable.
Geoff Voelker <voelker@cs.washington.edu>
parents: 24130
diff changeset
5747
c83b0bc4e8b9 (Vw32_bdf_filename_alist): New variable.
Geoff Voelker <voelker@cs.washington.edu>
parents: 24130
diff changeset
5748 if (fields > 0)
90878
efe9a1312ac6 * w32fns.c (w32_load_system_font): Fix detecting FIXED_PITCH fonts.
Jason Rumney <jasonr@gnu.org>
parents: 90865
diff changeset
5749 {
efe9a1312ac6 * w32fns.c (w32_load_system_font): Fix detecting FIXED_PITCH fonts.
Jason Rumney <jasonr@gnu.org>
parents: 90865
diff changeset
5750 if (pitch == 'p')
efe9a1312ac6 * w32fns.c (w32_load_system_font): Fix detecting FIXED_PITCH fonts.
Jason Rumney <jasonr@gnu.org>
parents: 90865
diff changeset
5751 lplogfont->lfPitchAndFamily = VARIABLE_PITCH | FF_DONTCARE;
efe9a1312ac6 * w32fns.c (w32_load_system_font): Fix detecting FIXED_PITCH fonts.
Jason Rumney <jasonr@gnu.org>
parents: 90865
diff changeset
5752 else if (pitch == 'c')
efe9a1312ac6 * w32fns.c (w32_load_system_font): Fix detecting FIXED_PITCH fonts.
Jason Rumney <jasonr@gnu.org>
parents: 90865
diff changeset
5753 lplogfont->lfPitchAndFamily = FIXED_PITCH | FF_DONTCARE;
efe9a1312ac6 * w32fns.c (w32_load_system_font): Fix detecting FIXED_PITCH fonts.
Jason Rumney <jasonr@gnu.org>
parents: 90865
diff changeset
5754 }
15147
38c0ce06203f (quit_char, Vwin32_enable_italics, Vwin32_enable_palette):
Geoff Voelker <voelker@cs.washington.edu>
parents: 15034
diff changeset
5755
38c0ce06203f (quit_char, Vwin32_enable_italics, Vwin32_enable_palette):
Geoff Voelker <voelker@cs.washington.edu>
parents: 15034
diff changeset
5756 fields--;
38c0ce06203f (quit_char, Vwin32_enable_italics, Vwin32_enable_palette):
Geoff Voelker <voelker@cs.washington.edu>
parents: 15034
diff changeset
5757
38c0ce06203f (quit_char, Vwin32_enable_italics, Vwin32_enable_palette):
Geoff Voelker <voelker@cs.washington.edu>
parents: 15034
diff changeset
5758 if (fields > 0 && width[0] != '*')
38c0ce06203f (quit_char, Vwin32_enable_italics, Vwin32_enable_palette):
Geoff Voelker <voelker@cs.washington.edu>
parents: 15034
diff changeset
5759 lplogfont->lfWidth = atoi (width) / 10;
38c0ce06203f (quit_char, Vwin32_enable_italics, Vwin32_enable_palette):
Geoff Voelker <voelker@cs.washington.edu>
parents: 15034
diff changeset
5760
38c0ce06203f (quit_char, Vwin32_enable_italics, Vwin32_enable_palette):
Geoff Voelker <voelker@cs.washington.edu>
parents: 15034
diff changeset
5761 fields--;
38c0ce06203f (quit_char, Vwin32_enable_italics, Vwin32_enable_palette):
Geoff Voelker <voelker@cs.washington.edu>
parents: 15034
diff changeset
5762
23506
246a14f0622f (Vx_pixel_size_width): New global variable.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23407
diff changeset
5763 /* Strip the trailing '-' if present. (it shouldn't be, as it
27516
8001542eaee2 (w32_defined_color): Check for valid frame before
Jason Rumney <jasonr@gnu.org>
parents: 27407
diff changeset
5764 fails the test against xlfd-tight-regexp in fontset.el). */
14353
d0d8d9d73f7f backout 1.3
Geoff Voelker <voelker@cs.washington.edu>
parents: 14243
diff changeset
5765 {
15147
38c0ce06203f (quit_char, Vwin32_enable_italics, Vwin32_enable_palette):
Geoff Voelker <voelker@cs.washington.edu>
parents: 15034
diff changeset
5766 int len = strlen (remainder);
38c0ce06203f (quit_char, Vwin32_enable_italics, Vwin32_enable_palette):
Geoff Voelker <voelker@cs.washington.edu>
parents: 15034
diff changeset
5767 if (len > 0 && remainder[len-1] == '-')
38c0ce06203f (quit_char, Vwin32_enable_italics, Vwin32_enable_palette):
Geoff Voelker <voelker@cs.washington.edu>
parents: 15034
diff changeset
5768 remainder[len-1] = 0;
13434
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
5769 }
15147
38c0ce06203f (quit_char, Vwin32_enable_italics, Vwin32_enable_palette):
Geoff Voelker <voelker@cs.washington.edu>
parents: 15034
diff changeset
5770 encoding = remainder;
39548
6192be048459 (x_to_w32_color): Fix argument to alloca.
Andrew Innes <andrewi@gnu.org>
parents: 39137
diff changeset
5771 #if 0
15147
38c0ce06203f (quit_char, Vwin32_enable_italics, Vwin32_enable_palette):
Geoff Voelker <voelker@cs.washington.edu>
parents: 15034
diff changeset
5772 if (strncmp (encoding, "*-", 2) == 0)
38c0ce06203f (quit_char, Vwin32_enable_italics, Vwin32_enable_palette):
Geoff Voelker <voelker@cs.washington.edu>
parents: 15034
diff changeset
5773 encoding += 2;
39548
6192be048459 (x_to_w32_color): Fix argument to alloca.
Andrew Innes <andrewi@gnu.org>
parents: 39137
diff changeset
5774 #endif
6192be048459 (x_to_w32_color): Fix argument to alloca.
Andrew Innes <andrewi@gnu.org>
parents: 39137
diff changeset
5775 lplogfont->lfCharSet = x_to_w32_charset (encoding);
15147
38c0ce06203f (quit_char, Vwin32_enable_italics, Vwin32_enable_palette):
Geoff Voelker <voelker@cs.washington.edu>
parents: 15034
diff changeset
5776 }
38c0ce06203f (quit_char, Vwin32_enable_italics, Vwin32_enable_palette):
Geoff Voelker <voelker@cs.washington.edu>
parents: 15034
diff changeset
5777 else
38c0ce06203f (quit_char, Vwin32_enable_italics, Vwin32_enable_palette):
Geoff Voelker <voelker@cs.washington.edu>
parents: 15034
diff changeset
5778 {
38c0ce06203f (quit_char, Vwin32_enable_italics, Vwin32_enable_palette):
Geoff Voelker <voelker@cs.washington.edu>
parents: 15034
diff changeset
5779 int fields;
38c0ce06203f (quit_char, Vwin32_enable_italics, Vwin32_enable_palette):
Geoff Voelker <voelker@cs.washington.edu>
parents: 15034
diff changeset
5780 char name[100], height[10], width[10], weight[20];
38c0ce06203f (quit_char, Vwin32_enable_italics, Vwin32_enable_palette):
Geoff Voelker <voelker@cs.washington.edu>
parents: 15034
diff changeset
5781
38c0ce06203f (quit_char, Vwin32_enable_italics, Vwin32_enable_palette):
Geoff Voelker <voelker@cs.washington.edu>
parents: 15034
diff changeset
5782 fields = sscanf (lpxstr,
38c0ce06203f (quit_char, Vwin32_enable_italics, Vwin32_enable_palette):
Geoff Voelker <voelker@cs.washington.edu>
parents: 15034
diff changeset
5783 "%99[^:]:%9[^:]:%9[^:]:%19s",
38c0ce06203f (quit_char, Vwin32_enable_italics, Vwin32_enable_palette):
Geoff Voelker <voelker@cs.washington.edu>
parents: 15034
diff changeset
5784 name, height, width, weight);
38c0ce06203f (quit_char, Vwin32_enable_italics, Vwin32_enable_palette):
Geoff Voelker <voelker@cs.washington.edu>
parents: 15034
diff changeset
5785
38c0ce06203f (quit_char, Vwin32_enable_italics, Vwin32_enable_palette):
Geoff Voelker <voelker@cs.washington.edu>
parents: 15034
diff changeset
5786 if (fields == EOF) return (FALSE);
38c0ce06203f (quit_char, Vwin32_enable_italics, Vwin32_enable_palette):
Geoff Voelker <voelker@cs.washington.edu>
parents: 15034
diff changeset
5787
38c0ce06203f (quit_char, Vwin32_enable_italics, Vwin32_enable_palette):
Geoff Voelker <voelker@cs.washington.edu>
parents: 15034
diff changeset
5788 if (fields > 0)
38c0ce06203f (quit_char, Vwin32_enable_italics, Vwin32_enable_palette):
Geoff Voelker <voelker@cs.washington.edu>
parents: 15034
diff changeset
5789 {
79387
0ca197abc593 (Fw32_registered_hot_keys): Don't return the nil values corresponding
Juanma Barranquero <lekktu@gmail.com>
parents: 79381
diff changeset
5790 strncpy (lplogfont->lfFaceName, name, LF_FACESIZE);
15147
38c0ce06203f (quit_char, Vwin32_enable_italics, Vwin32_enable_palette):
Geoff Voelker <voelker@cs.washington.edu>
parents: 15034
diff changeset
5791 lplogfont->lfFaceName[LF_FACESIZE-1] = 0;
38c0ce06203f (quit_char, Vwin32_enable_italics, Vwin32_enable_palette):
Geoff Voelker <voelker@cs.washington.edu>
parents: 15034
diff changeset
5792 }
38c0ce06203f (quit_char, Vwin32_enable_italics, Vwin32_enable_palette):
Geoff Voelker <voelker@cs.washington.edu>
parents: 15034
diff changeset
5793 else
38c0ce06203f (quit_char, Vwin32_enable_italics, Vwin32_enable_palette):
Geoff Voelker <voelker@cs.washington.edu>
parents: 15034
diff changeset
5794 {
38c0ce06203f (quit_char, Vwin32_enable_italics, Vwin32_enable_palette):
Geoff Voelker <voelker@cs.washington.edu>
parents: 15034
diff changeset
5795 lplogfont->lfFaceName[0] = 0;
38c0ce06203f (quit_char, Vwin32_enable_italics, Vwin32_enable_palette):
Geoff Voelker <voelker@cs.washington.edu>
parents: 15034
diff changeset
5796 }
38c0ce06203f (quit_char, Vwin32_enable_italics, Vwin32_enable_palette):
Geoff Voelker <voelker@cs.washington.edu>
parents: 15034
diff changeset
5797
38c0ce06203f (quit_char, Vwin32_enable_italics, Vwin32_enable_palette):
Geoff Voelker <voelker@cs.washington.edu>
parents: 15034
diff changeset
5798 fields--;
38c0ce06203f (quit_char, Vwin32_enable_italics, Vwin32_enable_palette):
Geoff Voelker <voelker@cs.washington.edu>
parents: 15034
diff changeset
5799
38c0ce06203f (quit_char, Vwin32_enable_italics, Vwin32_enable_palette):
Geoff Voelker <voelker@cs.washington.edu>
parents: 15034
diff changeset
5800 if (fields > 0)
38c0ce06203f (quit_char, Vwin32_enable_italics, Vwin32_enable_palette):
Geoff Voelker <voelker@cs.washington.edu>
parents: 15034
diff changeset
5801 lplogfont->lfHeight = atoi (height);
38c0ce06203f (quit_char, Vwin32_enable_italics, Vwin32_enable_palette):
Geoff Voelker <voelker@cs.washington.edu>
parents: 15034
diff changeset
5802
38c0ce06203f (quit_char, Vwin32_enable_italics, Vwin32_enable_palette):
Geoff Voelker <voelker@cs.washington.edu>
parents: 15034
diff changeset
5803 fields--;
38c0ce06203f (quit_char, Vwin32_enable_italics, Vwin32_enable_palette):
Geoff Voelker <voelker@cs.washington.edu>
parents: 15034
diff changeset
5804
38c0ce06203f (quit_char, Vwin32_enable_italics, Vwin32_enable_palette):
Geoff Voelker <voelker@cs.washington.edu>
parents: 15034
diff changeset
5805 if (fields > 0)
38c0ce06203f (quit_char, Vwin32_enable_italics, Vwin32_enable_palette):
Geoff Voelker <voelker@cs.washington.edu>
parents: 15034
diff changeset
5806 lplogfont->lfWidth = atoi (width);
38c0ce06203f (quit_char, Vwin32_enable_italics, Vwin32_enable_palette):
Geoff Voelker <voelker@cs.washington.edu>
parents: 15034
diff changeset
5807
38c0ce06203f (quit_char, Vwin32_enable_italics, Vwin32_enable_palette):
Geoff Voelker <voelker@cs.washington.edu>
parents: 15034
diff changeset
5808 fields--;
38c0ce06203f (quit_char, Vwin32_enable_italics, Vwin32_enable_palette):
Geoff Voelker <voelker@cs.washington.edu>
parents: 15034
diff changeset
5809
16588
481b7874a1e9 Change identifiers of the form win32* to w32*.
Geoff Voelker <voelker@cs.washington.edu>
parents: 16259
diff changeset
5810 lplogfont->lfWeight = x_to_w32_weight ((fields > 0 ? weight : ""));
15147
38c0ce06203f (quit_char, Vwin32_enable_italics, Vwin32_enable_palette):
Geoff Voelker <voelker@cs.washington.edu>
parents: 15034
diff changeset
5811 }
38c0ce06203f (quit_char, Vwin32_enable_italics, Vwin32_enable_palette):
Geoff Voelker <voelker@cs.washington.edu>
parents: 15034
diff changeset
5812
38c0ce06203f (quit_char, Vwin32_enable_italics, Vwin32_enable_palette):
Geoff Voelker <voelker@cs.washington.edu>
parents: 15034
diff changeset
5813 /* This makes TrueType fonts work better. */
85263
f8835bb7ba30 Replace `abs' with `eabs'.
Eli Zaretskii <eliz@gnu.org>
parents: 85114
diff changeset
5814 lplogfont->lfHeight = - eabs (lplogfont->lfHeight);
27397
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
5815
13434
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
5816 return (TRUE);
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
5817 }
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
5818
94917
e61553aa7a73 Throughout the file, delete all USE_FONT_BACKEND
Kenichi Handa <handa@m17n.org>
parents: 94618
diff changeset
5819 #if OLD_FONT
e61553aa7a73 Throughout the file, delete all USE_FONT_BACKEND
Kenichi Handa <handa@m17n.org>
parents: 94618
diff changeset
5820
27516
8001542eaee2 (w32_defined_color): Check for valid frame before
Jason Rumney <jasonr@gnu.org>
parents: 27407
diff changeset
5821 /* Strip the pixel height and point height from the given xlfd, and
8001542eaee2 (w32_defined_color): Check for valid frame before
Jason Rumney <jasonr@gnu.org>
parents: 27407
diff changeset
5822 return the pixel height. If no pixel height is specified, calculate
8001542eaee2 (w32_defined_color): Check for valid frame before
Jason Rumney <jasonr@gnu.org>
parents: 27407
diff changeset
5823 one from the point height, or if that isn't defined either, return
8001542eaee2 (w32_defined_color): Check for valid frame before
Jason Rumney <jasonr@gnu.org>
parents: 27407
diff changeset
5824 0 (which usually signifies a scalable font).
8001542eaee2 (w32_defined_color): Check for valid frame before
Jason Rumney <jasonr@gnu.org>
parents: 27407
diff changeset
5825 */
35288
912ea0b8e09b (x_to_w32_color, x_set_icon_name, xlfd_strip_height)
Jason Rumney <jasonr@gnu.org>
parents: 34998
diff changeset
5826 static int
912ea0b8e09b (x_to_w32_color, x_set_icon_name, xlfd_strip_height)
Jason Rumney <jasonr@gnu.org>
parents: 34998
diff changeset
5827 xlfd_strip_height (char *fontname)
912ea0b8e09b (x_to_w32_color, x_set_icon_name, xlfd_strip_height)
Jason Rumney <jasonr@gnu.org>
parents: 34998
diff changeset
5828 {
912ea0b8e09b (x_to_w32_color, x_set_icon_name, xlfd_strip_height)
Jason Rumney <jasonr@gnu.org>
parents: 34998
diff changeset
5829 int pixel_height, field_number;
27516
8001542eaee2 (w32_defined_color): Check for valid frame before
Jason Rumney <jasonr@gnu.org>
parents: 27407
diff changeset
5830 char *read_from, *write_to;
8001542eaee2 (w32_defined_color): Check for valid frame before
Jason Rumney <jasonr@gnu.org>
parents: 27407
diff changeset
5831
8001542eaee2 (w32_defined_color): Check for valid frame before
Jason Rumney <jasonr@gnu.org>
parents: 27407
diff changeset
5832 xassert (fontname);
8001542eaee2 (w32_defined_color): Check for valid frame before
Jason Rumney <jasonr@gnu.org>
parents: 27407
diff changeset
5833
8001542eaee2 (w32_defined_color): Check for valid frame before
Jason Rumney <jasonr@gnu.org>
parents: 27407
diff changeset
5834 pixel_height = field_number = 0;
8001542eaee2 (w32_defined_color): Check for valid frame before
Jason Rumney <jasonr@gnu.org>
parents: 27407
diff changeset
5835 write_to = NULL;
8001542eaee2 (w32_defined_color): Check for valid frame before
Jason Rumney <jasonr@gnu.org>
parents: 27407
diff changeset
5836
8001542eaee2 (w32_defined_color): Check for valid frame before
Jason Rumney <jasonr@gnu.org>
parents: 27407
diff changeset
5837 /* Look for height fields. */
8001542eaee2 (w32_defined_color): Check for valid frame before
Jason Rumney <jasonr@gnu.org>
parents: 27407
diff changeset
5838 for (read_from = fontname; *read_from; read_from++)
8001542eaee2 (w32_defined_color): Check for valid frame before
Jason Rumney <jasonr@gnu.org>
parents: 27407
diff changeset
5839 {
8001542eaee2 (w32_defined_color): Check for valid frame before
Jason Rumney <jasonr@gnu.org>
parents: 27407
diff changeset
5840 if (*read_from == '-')
8001542eaee2 (w32_defined_color): Check for valid frame before
Jason Rumney <jasonr@gnu.org>
parents: 27407
diff changeset
5841 {
8001542eaee2 (w32_defined_color): Check for valid frame before
Jason Rumney <jasonr@gnu.org>
parents: 27407
diff changeset
5842 field_number++;
8001542eaee2 (w32_defined_color): Check for valid frame before
Jason Rumney <jasonr@gnu.org>
parents: 27407
diff changeset
5843 if (field_number == 7) /* Pixel height. */
8001542eaee2 (w32_defined_color): Check for valid frame before
Jason Rumney <jasonr@gnu.org>
parents: 27407
diff changeset
5844 {
8001542eaee2 (w32_defined_color): Check for valid frame before
Jason Rumney <jasonr@gnu.org>
parents: 27407
diff changeset
5845 read_from++;
8001542eaee2 (w32_defined_color): Check for valid frame before
Jason Rumney <jasonr@gnu.org>
parents: 27407
diff changeset
5846 write_to = read_from;
8001542eaee2 (w32_defined_color): Check for valid frame before
Jason Rumney <jasonr@gnu.org>
parents: 27407
diff changeset
5847
8001542eaee2 (w32_defined_color): Check for valid frame before
Jason Rumney <jasonr@gnu.org>
parents: 27407
diff changeset
5848 /* Find end of field. */
8001542eaee2 (w32_defined_color): Check for valid frame before
Jason Rumney <jasonr@gnu.org>
parents: 27407
diff changeset
5849 for (;*read_from && *read_from != '-'; read_from++)
8001542eaee2 (w32_defined_color): Check for valid frame before
Jason Rumney <jasonr@gnu.org>
parents: 27407
diff changeset
5850 ;
8001542eaee2 (w32_defined_color): Check for valid frame before
Jason Rumney <jasonr@gnu.org>
parents: 27407
diff changeset
5851
8001542eaee2 (w32_defined_color): Check for valid frame before
Jason Rumney <jasonr@gnu.org>
parents: 27407
diff changeset
5852 /* Split the fontname at end of field. */
8001542eaee2 (w32_defined_color): Check for valid frame before
Jason Rumney <jasonr@gnu.org>
parents: 27407
diff changeset
5853 if (*read_from)
8001542eaee2 (w32_defined_color): Check for valid frame before
Jason Rumney <jasonr@gnu.org>
parents: 27407
diff changeset
5854 {
8001542eaee2 (w32_defined_color): Check for valid frame before
Jason Rumney <jasonr@gnu.org>
parents: 27407
diff changeset
5855 *read_from = '\0';
8001542eaee2 (w32_defined_color): Check for valid frame before
Jason Rumney <jasonr@gnu.org>
parents: 27407
diff changeset
5856 read_from++;
8001542eaee2 (w32_defined_color): Check for valid frame before
Jason Rumney <jasonr@gnu.org>
parents: 27407
diff changeset
5857 }
8001542eaee2 (w32_defined_color): Check for valid frame before
Jason Rumney <jasonr@gnu.org>
parents: 27407
diff changeset
5858 pixel_height = atoi (write_to);
8001542eaee2 (w32_defined_color): Check for valid frame before
Jason Rumney <jasonr@gnu.org>
parents: 27407
diff changeset
5859 /* Blank out field. */
8001542eaee2 (w32_defined_color): Check for valid frame before
Jason Rumney <jasonr@gnu.org>
parents: 27407
diff changeset
5860 if (read_from > write_to)
8001542eaee2 (w32_defined_color): Check for valid frame before
Jason Rumney <jasonr@gnu.org>
parents: 27407
diff changeset
5861 {
8001542eaee2 (w32_defined_color): Check for valid frame before
Jason Rumney <jasonr@gnu.org>
parents: 27407
diff changeset
5862 *write_to = '-';
8001542eaee2 (w32_defined_color): Check for valid frame before
Jason Rumney <jasonr@gnu.org>
parents: 27407
diff changeset
5863 write_to++;
8001542eaee2 (w32_defined_color): Check for valid frame before
Jason Rumney <jasonr@gnu.org>
parents: 27407
diff changeset
5864 }
33387
01a10bc04233 (Qw32_charset_hangeul): Rename to match w32 headers.
Jason Rumney <jasonr@gnu.org>
parents: 33216
diff changeset
5865 /* If the pixel height field is at the end (partial xlfd),
27516
8001542eaee2 (w32_defined_color): Check for valid frame before
Jason Rumney <jasonr@gnu.org>
parents: 27407
diff changeset
5866 return now. */
8001542eaee2 (w32_defined_color): Check for valid frame before
Jason Rumney <jasonr@gnu.org>
parents: 27407
diff changeset
5867 else
8001542eaee2 (w32_defined_color): Check for valid frame before
Jason Rumney <jasonr@gnu.org>
parents: 27407
diff changeset
5868 return pixel_height;
8001542eaee2 (w32_defined_color): Check for valid frame before
Jason Rumney <jasonr@gnu.org>
parents: 27407
diff changeset
5869
8001542eaee2 (w32_defined_color): Check for valid frame before
Jason Rumney <jasonr@gnu.org>
parents: 27407
diff changeset
5870 /* If we got a pixel height, the point height can be
8001542eaee2 (w32_defined_color): Check for valid frame before
Jason Rumney <jasonr@gnu.org>
parents: 27407
diff changeset
5871 ignored. Just blank it out and break now. */
8001542eaee2 (w32_defined_color): Check for valid frame before
Jason Rumney <jasonr@gnu.org>
parents: 27407
diff changeset
5872 if (pixel_height)
8001542eaee2 (w32_defined_color): Check for valid frame before
Jason Rumney <jasonr@gnu.org>
parents: 27407
diff changeset
5873 {
8001542eaee2 (w32_defined_color): Check for valid frame before
Jason Rumney <jasonr@gnu.org>
parents: 27407
diff changeset
5874 /* Find end of point size field. */
8001542eaee2 (w32_defined_color): Check for valid frame before
Jason Rumney <jasonr@gnu.org>
parents: 27407
diff changeset
5875 for (; *read_from && *read_from != '-'; read_from++)
8001542eaee2 (w32_defined_color): Check for valid frame before
Jason Rumney <jasonr@gnu.org>
parents: 27407
diff changeset
5876 ;
8001542eaee2 (w32_defined_color): Check for valid frame before
Jason Rumney <jasonr@gnu.org>
parents: 27407
diff changeset
5877
8001542eaee2 (w32_defined_color): Check for valid frame before
Jason Rumney <jasonr@gnu.org>
parents: 27407
diff changeset
5878 if (*read_from)
8001542eaee2 (w32_defined_color): Check for valid frame before
Jason Rumney <jasonr@gnu.org>
parents: 27407
diff changeset
5879 read_from++;
8001542eaee2 (w32_defined_color): Check for valid frame before
Jason Rumney <jasonr@gnu.org>
parents: 27407
diff changeset
5880
8001542eaee2 (w32_defined_color): Check for valid frame before
Jason Rumney <jasonr@gnu.org>
parents: 27407
diff changeset
5881 /* Blank out the point size field. */
8001542eaee2 (w32_defined_color): Check for valid frame before
Jason Rumney <jasonr@gnu.org>
parents: 27407
diff changeset
5882 if (read_from > write_to)
8001542eaee2 (w32_defined_color): Check for valid frame before
Jason Rumney <jasonr@gnu.org>
parents: 27407
diff changeset
5883 {
8001542eaee2 (w32_defined_color): Check for valid frame before
Jason Rumney <jasonr@gnu.org>
parents: 27407
diff changeset
5884 *write_to = '-';
8001542eaee2 (w32_defined_color): Check for valid frame before
Jason Rumney <jasonr@gnu.org>
parents: 27407
diff changeset
5885 write_to++;
8001542eaee2 (w32_defined_color): Check for valid frame before
Jason Rumney <jasonr@gnu.org>
parents: 27407
diff changeset
5886 }
8001542eaee2 (w32_defined_color): Check for valid frame before
Jason Rumney <jasonr@gnu.org>
parents: 27407
diff changeset
5887 else
8001542eaee2 (w32_defined_color): Check for valid frame before
Jason Rumney <jasonr@gnu.org>
parents: 27407
diff changeset
5888 return pixel_height;
8001542eaee2 (w32_defined_color): Check for valid frame before
Jason Rumney <jasonr@gnu.org>
parents: 27407
diff changeset
5889
8001542eaee2 (w32_defined_color): Check for valid frame before
Jason Rumney <jasonr@gnu.org>
parents: 27407
diff changeset
5890 break;
8001542eaee2 (w32_defined_color): Check for valid frame before
Jason Rumney <jasonr@gnu.org>
parents: 27407
diff changeset
5891 }
8001542eaee2 (w32_defined_color): Check for valid frame before
Jason Rumney <jasonr@gnu.org>
parents: 27407
diff changeset
5892 /* If the point height is already blank, break now. */
8001542eaee2 (w32_defined_color): Check for valid frame before
Jason Rumney <jasonr@gnu.org>
parents: 27407
diff changeset
5893 if (*read_from == '-')
8001542eaee2 (w32_defined_color): Check for valid frame before
Jason Rumney <jasonr@gnu.org>
parents: 27407
diff changeset
5894 {
8001542eaee2 (w32_defined_color): Check for valid frame before
Jason Rumney <jasonr@gnu.org>
parents: 27407
diff changeset
5895 read_from++;
8001542eaee2 (w32_defined_color): Check for valid frame before
Jason Rumney <jasonr@gnu.org>
parents: 27407
diff changeset
5896 break;
8001542eaee2 (w32_defined_color): Check for valid frame before
Jason Rumney <jasonr@gnu.org>
parents: 27407
diff changeset
5897 }
8001542eaee2 (w32_defined_color): Check for valid frame before
Jason Rumney <jasonr@gnu.org>
parents: 27407
diff changeset
5898 }
8001542eaee2 (w32_defined_color): Check for valid frame before
Jason Rumney <jasonr@gnu.org>
parents: 27407
diff changeset
5899 else if (field_number == 8)
8001542eaee2 (w32_defined_color): Check for valid frame before
Jason Rumney <jasonr@gnu.org>
parents: 27407
diff changeset
5900 {
8001542eaee2 (w32_defined_color): Check for valid frame before
Jason Rumney <jasonr@gnu.org>
parents: 27407
diff changeset
5901 /* If we didn't get a pixel height, try to get the point
8001542eaee2 (w32_defined_color): Check for valid frame before
Jason Rumney <jasonr@gnu.org>
parents: 27407
diff changeset
5902 height and convert that. */
8001542eaee2 (w32_defined_color): Check for valid frame before
Jason Rumney <jasonr@gnu.org>
parents: 27407
diff changeset
5903 int point_size;
8001542eaee2 (w32_defined_color): Check for valid frame before
Jason Rumney <jasonr@gnu.org>
parents: 27407
diff changeset
5904 char *point_size_start = read_from++;
8001542eaee2 (w32_defined_color): Check for valid frame before
Jason Rumney <jasonr@gnu.org>
parents: 27407
diff changeset
5905
8001542eaee2 (w32_defined_color): Check for valid frame before
Jason Rumney <jasonr@gnu.org>
parents: 27407
diff changeset
5906 /* Find end of field. */
8001542eaee2 (w32_defined_color): Check for valid frame before
Jason Rumney <jasonr@gnu.org>
parents: 27407
diff changeset
5907 for (; *read_from && *read_from != '-'; read_from++)
8001542eaee2 (w32_defined_color): Check for valid frame before
Jason Rumney <jasonr@gnu.org>
parents: 27407
diff changeset
5908 ;
8001542eaee2 (w32_defined_color): Check for valid frame before
Jason Rumney <jasonr@gnu.org>
parents: 27407
diff changeset
5909
8001542eaee2 (w32_defined_color): Check for valid frame before
Jason Rumney <jasonr@gnu.org>
parents: 27407
diff changeset
5910 if (*read_from)
8001542eaee2 (w32_defined_color): Check for valid frame before
Jason Rumney <jasonr@gnu.org>
parents: 27407
diff changeset
5911 {
8001542eaee2 (w32_defined_color): Check for valid frame before
Jason Rumney <jasonr@gnu.org>
parents: 27407
diff changeset
5912 *read_from = '\0';
8001542eaee2 (w32_defined_color): Check for valid frame before
Jason Rumney <jasonr@gnu.org>
parents: 27407
diff changeset
5913 read_from++;
8001542eaee2 (w32_defined_color): Check for valid frame before
Jason Rumney <jasonr@gnu.org>
parents: 27407
diff changeset
5914 }
8001542eaee2 (w32_defined_color): Check for valid frame before
Jason Rumney <jasonr@gnu.org>
parents: 27407
diff changeset
5915
8001542eaee2 (w32_defined_color): Check for valid frame before
Jason Rumney <jasonr@gnu.org>
parents: 27407
diff changeset
5916 point_size = atoi (point_size_start);
8001542eaee2 (w32_defined_color): Check for valid frame before
Jason Rumney <jasonr@gnu.org>
parents: 27407
diff changeset
5917
8001542eaee2 (w32_defined_color): Check for valid frame before
Jason Rumney <jasonr@gnu.org>
parents: 27407
diff changeset
5918 /* Convert to pixel height. */
8001542eaee2 (w32_defined_color): Check for valid frame before
Jason Rumney <jasonr@gnu.org>
parents: 27407
diff changeset
5919 pixel_height = point_size
8001542eaee2 (w32_defined_color): Check for valid frame before
Jason Rumney <jasonr@gnu.org>
parents: 27407
diff changeset
5920 * one_w32_display_info.height_in / 720;
8001542eaee2 (w32_defined_color): Check for valid frame before
Jason Rumney <jasonr@gnu.org>
parents: 27407
diff changeset
5921
8001542eaee2 (w32_defined_color): Check for valid frame before
Jason Rumney <jasonr@gnu.org>
parents: 27407
diff changeset
5922 /* Blank out this field and break. */
8001542eaee2 (w32_defined_color): Check for valid frame before
Jason Rumney <jasonr@gnu.org>
parents: 27407
diff changeset
5923 *write_to = '-';
8001542eaee2 (w32_defined_color): Check for valid frame before
Jason Rumney <jasonr@gnu.org>
parents: 27407
diff changeset
5924 write_to++;
8001542eaee2 (w32_defined_color): Check for valid frame before
Jason Rumney <jasonr@gnu.org>
parents: 27407
diff changeset
5925 break;
8001542eaee2 (w32_defined_color): Check for valid frame before
Jason Rumney <jasonr@gnu.org>
parents: 27407
diff changeset
5926 }
8001542eaee2 (w32_defined_color): Check for valid frame before
Jason Rumney <jasonr@gnu.org>
parents: 27407
diff changeset
5927 }
8001542eaee2 (w32_defined_color): Check for valid frame before
Jason Rumney <jasonr@gnu.org>
parents: 27407
diff changeset
5928 }
8001542eaee2 (w32_defined_color): Check for valid frame before
Jason Rumney <jasonr@gnu.org>
parents: 27407
diff changeset
5929
8001542eaee2 (w32_defined_color): Check for valid frame before
Jason Rumney <jasonr@gnu.org>
parents: 27407
diff changeset
5930 /* Shift the rest of the font spec into place. */
8001542eaee2 (w32_defined_color): Check for valid frame before
Jason Rumney <jasonr@gnu.org>
parents: 27407
diff changeset
5931 if (write_to && read_from > write_to)
8001542eaee2 (w32_defined_color): Check for valid frame before
Jason Rumney <jasonr@gnu.org>
parents: 27407
diff changeset
5932 {
8001542eaee2 (w32_defined_color): Check for valid frame before
Jason Rumney <jasonr@gnu.org>
parents: 27407
diff changeset
5933 for (; *read_from; read_from++, write_to++)
8001542eaee2 (w32_defined_color): Check for valid frame before
Jason Rumney <jasonr@gnu.org>
parents: 27407
diff changeset
5934 *write_to = *read_from;
8001542eaee2 (w32_defined_color): Check for valid frame before
Jason Rumney <jasonr@gnu.org>
parents: 27407
diff changeset
5935 *write_to = '\0';
8001542eaee2 (w32_defined_color): Check for valid frame before
Jason Rumney <jasonr@gnu.org>
parents: 27407
diff changeset
5936 }
8001542eaee2 (w32_defined_color): Check for valid frame before
Jason Rumney <jasonr@gnu.org>
parents: 27407
diff changeset
5937
8001542eaee2 (w32_defined_color): Check for valid frame before
Jason Rumney <jasonr@gnu.org>
parents: 27407
diff changeset
5938 return pixel_height;
8001542eaee2 (w32_defined_color): Check for valid frame before
Jason Rumney <jasonr@gnu.org>
parents: 27407
diff changeset
5939 }
8001542eaee2 (w32_defined_color): Check for valid frame before
Jason Rumney <jasonr@gnu.org>
parents: 27407
diff changeset
5940
27397
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
5941 /* Assume parameter 1 is fully qualified, no wildcards. */
47942
080b4586492b Fix typo in comment.
Juanma Barranquero <lekktu@gmail.com>
parents: 47731
diff changeset
5942 static BOOL
27397
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
5943 w32_font_match (fontname, pattern)
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
5944 char * fontname;
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
5945 char * pattern;
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
5946 {
57872
71ea49de0560 Use fast_string_match_ignore_case for comparing font names.
Jason Rumney <jasonr@gnu.org>
parents: 57868
diff changeset
5947 char *ptr;
57535
201c0ad15e73 (w32_font_match): Encode font name being matched.
Jason Rumney <jasonr@gnu.org>
parents: 56971
diff changeset
5948 char *font_name_copy;
201c0ad15e73 (w32_font_match): Encode font name being matched.
Jason Rumney <jasonr@gnu.org>
parents: 56971
diff changeset
5949 char *regex = alloca (strlen (pattern) * 2 + 3);
201c0ad15e73 (w32_font_match): Encode font name being matched.
Jason Rumney <jasonr@gnu.org>
parents: 56971
diff changeset
5950
57872
71ea49de0560 Use fast_string_match_ignore_case for comparing font names.
Jason Rumney <jasonr@gnu.org>
parents: 57868
diff changeset
5951 font_name_copy = alloca (strlen (fontname) + 1);
71ea49de0560 Use fast_string_match_ignore_case for comparing font names.
Jason Rumney <jasonr@gnu.org>
parents: 57868
diff changeset
5952 strcpy (font_name_copy, fontname);
27516
8001542eaee2 (w32_defined_color): Check for valid frame before
Jason Rumney <jasonr@gnu.org>
parents: 27407
diff changeset
5953
27397
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
5954 ptr = regex;
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
5955 *ptr++ = '^';
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
5956
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
5957 /* Turn pattern into a regexp and do a regexp match. */
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
5958 for (; *pattern; pattern++)
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
5959 {
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
5960 if (*pattern == '?')
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
5961 *ptr++ = '.';
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
5962 else if (*pattern == '*')
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
5963 {
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
5964 *ptr++ = '.';
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
5965 *ptr++ = '*';
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
5966 }
24147
c83b0bc4e8b9 (Vw32_bdf_filename_alist): New variable.
Geoff Voelker <voelker@cs.washington.edu>
parents: 24130
diff changeset
5967 else
27397
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
5968 *ptr++ = *pattern;
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
5969 }
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
5970 *ptr = '$';
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
5971 *(ptr + 1) = '\0';
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
5972
27516
8001542eaee2 (w32_defined_color): Check for valid frame before
Jason Rumney <jasonr@gnu.org>
parents: 27407
diff changeset
5973 /* Strip out font heights and compare them seperately, since
8001542eaee2 (w32_defined_color): Check for valid frame before
Jason Rumney <jasonr@gnu.org>
parents: 27407
diff changeset
5974 rounding error can cause mismatches. This also allows a
8001542eaee2 (w32_defined_color): Check for valid frame before
Jason Rumney <jasonr@gnu.org>
parents: 27407
diff changeset
5975 comparison between a font that declares only a pixel height and a
8001542eaee2 (w32_defined_color): Check for valid frame before
Jason Rumney <jasonr@gnu.org>
parents: 27407
diff changeset
5976 pattern that declares the point height.
8001542eaee2 (w32_defined_color): Check for valid frame before
Jason Rumney <jasonr@gnu.org>
parents: 27407
diff changeset
5977 */
8001542eaee2 (w32_defined_color): Check for valid frame before
Jason Rumney <jasonr@gnu.org>
parents: 27407
diff changeset
5978 {
8001542eaee2 (w32_defined_color): Check for valid frame before
Jason Rumney <jasonr@gnu.org>
parents: 27407
diff changeset
5979 int font_height, pattern_height;
8001542eaee2 (w32_defined_color): Check for valid frame before
Jason Rumney <jasonr@gnu.org>
parents: 27407
diff changeset
5980
8001542eaee2 (w32_defined_color): Check for valid frame before
Jason Rumney <jasonr@gnu.org>
parents: 27407
diff changeset
5981 font_height = xlfd_strip_height (font_name_copy);
8001542eaee2 (w32_defined_color): Check for valid frame before
Jason Rumney <jasonr@gnu.org>
parents: 27407
diff changeset
5982 pattern_height = xlfd_strip_height (regex);
8001542eaee2 (w32_defined_color): Check for valid frame before
Jason Rumney <jasonr@gnu.org>
parents: 27407
diff changeset
5983
8001542eaee2 (w32_defined_color): Check for valid frame before
Jason Rumney <jasonr@gnu.org>
parents: 27407
diff changeset
5984 /* Compare now, and don't bother doing expensive regexp matching
8001542eaee2 (w32_defined_color): Check for valid frame before
Jason Rumney <jasonr@gnu.org>
parents: 27407
diff changeset
5985 if the heights differ. */
8001542eaee2 (w32_defined_color): Check for valid frame before
Jason Rumney <jasonr@gnu.org>
parents: 27407
diff changeset
5986 if (font_height && pattern_height && (font_height != pattern_height))
8001542eaee2 (w32_defined_color): Check for valid frame before
Jason Rumney <jasonr@gnu.org>
parents: 27407
diff changeset
5987 return FALSE;
8001542eaee2 (w32_defined_color): Check for valid frame before
Jason Rumney <jasonr@gnu.org>
parents: 27407
diff changeset
5988 }
8001542eaee2 (w32_defined_color): Check for valid frame before
Jason Rumney <jasonr@gnu.org>
parents: 27407
diff changeset
5989
57872
71ea49de0560 Use fast_string_match_ignore_case for comparing font names.
Jason Rumney <jasonr@gnu.org>
parents: 57868
diff changeset
5990 return (fast_string_match_ignore_case (build_string (regex),
79387
0ca197abc593 (Fw32_registered_hot_keys): Don't return the nil values corresponding
Juanma Barranquero <lekktu@gmail.com>
parents: 79381
diff changeset
5991 build_string (font_name_copy)) >= 0);
13434
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
5992 }
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
5993
24214
4fb0bce809bc (w32_load_system_font): Do not load unlisted fonts if
Geoff Voelker <voelker@cs.washington.edu>
parents: 24211
diff changeset
5994 /* Callback functions, and a structure holding info they need, for
4fb0bce809bc (w32_load_system_font): Do not load unlisted fonts if
Geoff Voelker <voelker@cs.washington.edu>
parents: 24211
diff changeset
5995 listing system fonts on W32. We need one set of functions to do the
4fb0bce809bc (w32_load_system_font): Do not load unlisted fonts if
Geoff Voelker <voelker@cs.washington.edu>
parents: 24211
diff changeset
5996 job properly, but these don't work on NT 3.51 and earlier, so we
4fb0bce809bc (w32_load_system_font): Do not load unlisted fonts if
Geoff Voelker <voelker@cs.washington.edu>
parents: 24211
diff changeset
5997 have a second set which don't handle character sets properly to
4fb0bce809bc (w32_load_system_font): Do not load unlisted fonts if
Geoff Voelker <voelker@cs.washington.edu>
parents: 24211
diff changeset
5998 fall back on.
4fb0bce809bc (w32_load_system_font): Do not load unlisted fonts if
Geoff Voelker <voelker@cs.washington.edu>
parents: 24211
diff changeset
5999
4fb0bce809bc (w32_load_system_font): Do not load unlisted fonts if
Geoff Voelker <voelker@cs.washington.edu>
parents: 24211
diff changeset
6000 In both cases, there are two passes made. The first pass gets one
4fb0bce809bc (w32_load_system_font): Do not load unlisted fonts if
Geoff Voelker <voelker@cs.washington.edu>
parents: 24211
diff changeset
6001 font from each family, the second pass lists all the fonts from
4fb0bce809bc (w32_load_system_font): Do not load unlisted fonts if
Geoff Voelker <voelker@cs.washington.edu>
parents: 24211
diff changeset
6002 each family. */
4fb0bce809bc (w32_load_system_font): Do not load unlisted fonts if
Geoff Voelker <voelker@cs.washington.edu>
parents: 24211
diff changeset
6003
47942
080b4586492b Fix typo in comment.
Juanma Barranquero <lekktu@gmail.com>
parents: 47731
diff changeset
6004 typedef struct enumfont_t
13434
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
6005 {
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
6006 HDC hdc;
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
6007 int numFonts;
15205
0f5d6cd72e21 (win_msg_worker): Use post_msg.
Richard M. Stallman <rms@gnu.org>
parents: 15148
diff changeset
6008 LOGFONT logfont;
13434
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
6009 XFontStruct *size_ref;
45465
84120e75baa0 * w32fns.c (enumfont_t): Remove tail, make pattern a normal
Jason Rumney <jasonr@gnu.org>
parents: 45454
diff changeset
6010 Lisp_Object pattern;
42845
ebb3a20bc357 (w32_load_system_font, w32_to_x_charset): Use strnicmp
Jason Rumney <jasonr@gnu.org>
parents: 42833
diff changeset
6011 Lisp_Object list;
13434
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
6012 } enumfont_t;
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
6013
42845
ebb3a20bc357 (w32_load_system_font, w32_to_x_charset): Use strnicmp
Jason Rumney <jasonr@gnu.org>
parents: 42833
diff changeset
6014
ebb3a20bc357 (w32_load_system_font, w32_to_x_charset): Use strnicmp
Jason Rumney <jasonr@gnu.org>
parents: 42833
diff changeset
6015 static void
ebb3a20bc357 (w32_load_system_font, w32_to_x_charset): Use strnicmp
Jason Rumney <jasonr@gnu.org>
parents: 42833
diff changeset
6016 enum_font_maybe_add_to_list (enumfont_t *, LOGFONT *, char *, Lisp_Object);
ebb3a20bc357 (w32_load_system_font, w32_to_x_charset): Use strnicmp
Jason Rumney <jasonr@gnu.org>
parents: 42833
diff changeset
6017
ebb3a20bc357 (w32_load_system_font, w32_to_x_charset): Use strnicmp
Jason Rumney <jasonr@gnu.org>
parents: 42833
diff changeset
6018
47942
080b4586492b Fix typo in comment.
Juanma Barranquero <lekktu@gmail.com>
parents: 47731
diff changeset
6019 static int CALLBACK
13434
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
6020 enum_font_cb2 (lplf, lptm, FontType, lpef)
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
6021 ENUMLOGFONT * lplf;
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
6022 NEWTEXTMETRIC * lptm;
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
6023 int FontType;
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
6024 enumfont_t * lpef;
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
6025 {
40873
f288d1d604a7 (enum_font_cb2): Use leading @ on face name to detect
Jason Rumney <jasonr@gnu.org>
parents: 40656
diff changeset
6026 /* Ignore struck out and underlined versions of fonts. */
f288d1d604a7 (enum_font_cb2): Use leading @ on face name to detect
Jason Rumney <jasonr@gnu.org>
parents: 40656
diff changeset
6027 if (lplf->elfLogFont.lfStrikeOut || lplf->elfLogFont.lfUnderline)
f288d1d604a7 (enum_font_cb2): Use leading @ on face name to detect
Jason Rumney <jasonr@gnu.org>
parents: 40656
diff changeset
6028 return 1;
f288d1d604a7 (enum_font_cb2): Use leading @ on face name to detect
Jason Rumney <jasonr@gnu.org>
parents: 40656
diff changeset
6029
f288d1d604a7 (enum_font_cb2): Use leading @ on face name to detect
Jason Rumney <jasonr@gnu.org>
parents: 40656
diff changeset
6030 /* Only return fonts with names starting with @ if they were
f288d1d604a7 (enum_font_cb2): Use leading @ on face name to detect
Jason Rumney <jasonr@gnu.org>
parents: 40656
diff changeset
6031 explicitly specified, since Microsoft uses an initial @ to
f288d1d604a7 (enum_font_cb2): Use leading @ on face name to detect
Jason Rumney <jasonr@gnu.org>
parents: 40656
diff changeset
6032 denote fonts for vertical writing, without providing a more
f288d1d604a7 (enum_font_cb2): Use leading @ on face name to detect
Jason Rumney <jasonr@gnu.org>
parents: 40656
diff changeset
6033 convenient way of identifying them. */
f288d1d604a7 (enum_font_cb2): Use leading @ on face name to detect
Jason Rumney <jasonr@gnu.org>
parents: 40656
diff changeset
6034 if (lplf->elfLogFont.lfFaceName[0] == '@'
f288d1d604a7 (enum_font_cb2): Use leading @ on face name to detect
Jason Rumney <jasonr@gnu.org>
parents: 40656
diff changeset
6035 && lpef->logfont.lfFaceName[0] != '@')
40528
7fb50bbb61ad (w32_to_x_charset): Increase size of XLFD charset buffer.
Jason Rumney <jasonr@gnu.org>
parents: 40385
diff changeset
6036 return 1;
7fb50bbb61ad (w32_to_x_charset): Increase size of XLFD charset buffer.
Jason Rumney <jasonr@gnu.org>
parents: 40385
diff changeset
6037
23506
246a14f0622f (Vx_pixel_size_width): New global variable.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23407
diff changeset
6038 /* Check that the character set matches if it was specified */
246a14f0622f (Vx_pixel_size_width): New global variable.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23407
diff changeset
6039 if (lpef->logfont.lfCharSet != DEFAULT_CHARSET &&
246a14f0622f (Vx_pixel_size_width): New global variable.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23407
diff changeset
6040 lplf->elfLogFont.lfCharSet != lpef->logfont.lfCharSet)
40528
7fb50bbb61ad (w32_to_x_charset): Increase size of XLFD charset buffer.
Jason Rumney <jasonr@gnu.org>
parents: 40385
diff changeset
6041 return 1;
23506
246a14f0622f (Vx_pixel_size_width): New global variable.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23407
diff changeset
6042
45232
4413ac739ab9 (enum_font_cb2): Don't use DBCS raster fonts.
Jason Rumney <jasonr@gnu.org>
parents: 45009
diff changeset
6043 if (FontType == RASTER_FONTTYPE)
4413ac739ab9 (enum_font_cb2): Don't use DBCS raster fonts.
Jason Rumney <jasonr@gnu.org>
parents: 45009
diff changeset
6044 {
4413ac739ab9 (enum_font_cb2): Don't use DBCS raster fonts.
Jason Rumney <jasonr@gnu.org>
parents: 45009
diff changeset
6045 /* DBCS raster fonts have problems displaying, so skip them. */
4413ac739ab9 (enum_font_cb2): Don't use DBCS raster fonts.
Jason Rumney <jasonr@gnu.org>
parents: 45009
diff changeset
6046 int charset = lplf->elfLogFont.lfCharSet;
4413ac739ab9 (enum_font_cb2): Don't use DBCS raster fonts.
Jason Rumney <jasonr@gnu.org>
parents: 45009
diff changeset
6047 if (charset == SHIFTJIS_CHARSET
4413ac739ab9 (enum_font_cb2): Don't use DBCS raster fonts.
Jason Rumney <jasonr@gnu.org>
parents: 45009
diff changeset
6048 || charset == HANGEUL_CHARSET
4413ac739ab9 (enum_font_cb2): Don't use DBCS raster fonts.
Jason Rumney <jasonr@gnu.org>
parents: 45009
diff changeset
6049 || charset == CHINESEBIG5_CHARSET
4413ac739ab9 (enum_font_cb2): Don't use DBCS raster fonts.
Jason Rumney <jasonr@gnu.org>
parents: 45009
diff changeset
6050 || charset == GB2312_CHARSET
4413ac739ab9 (enum_font_cb2): Don't use DBCS raster fonts.
Jason Rumney <jasonr@gnu.org>
parents: 45009
diff changeset
6051 #ifdef JOHAB_CHARSET
4413ac739ab9 (enum_font_cb2): Don't use DBCS raster fonts.
Jason Rumney <jasonr@gnu.org>
parents: 45009
diff changeset
6052 || charset == JOHAB_CHARSET
4413ac739ab9 (enum_font_cb2): Don't use DBCS raster fonts.
Jason Rumney <jasonr@gnu.org>
parents: 45009
diff changeset
6053 #endif
4413ac739ab9 (enum_font_cb2): Don't use DBCS raster fonts.
Jason Rumney <jasonr@gnu.org>
parents: 45009
diff changeset
6054 )
4413ac739ab9 (enum_font_cb2): Don't use DBCS raster fonts.
Jason Rumney <jasonr@gnu.org>
parents: 45009
diff changeset
6055 return 1;
4413ac739ab9 (enum_font_cb2): Don't use DBCS raster fonts.
Jason Rumney <jasonr@gnu.org>
parents: 45009
diff changeset
6056 }
4413ac739ab9 (enum_font_cb2): Don't use DBCS raster fonts.
Jason Rumney <jasonr@gnu.org>
parents: 45009
diff changeset
6057
13434
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
6058 {
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
6059 char buf[100];
23506
246a14f0622f (Vx_pixel_size_width): New global variable.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23407
diff changeset
6060 Lisp_Object width = Qnil;
42845
ebb3a20bc357 (w32_load_system_font, w32_to_x_charset): Use strnicmp
Jason Rumney <jasonr@gnu.org>
parents: 42833
diff changeset
6061 Lisp_Object charset_list = Qnil;
33387
01a10bc04233 (Qw32_charset_hangeul): Rename to match w32 headers.
Jason Rumney <jasonr@gnu.org>
parents: 33216
diff changeset
6062 char *charset = NULL;
13434
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
6063
27397
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
6064 /* Truetype fonts do not report their true metrics until loaded */
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
6065 if (FontType != RASTER_FONTTYPE)
15205
0f5d6cd72e21 (win_msg_worker): Use post_msg.
Richard M. Stallman <rms@gnu.org>
parents: 15148
diff changeset
6066 {
45465
84120e75baa0 * w32fns.c (enumfont_t): Remove tail, make pattern a normal
Jason Rumney <jasonr@gnu.org>
parents: 45454
diff changeset
6067 if (!NILP (lpef->pattern))
27397
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
6068 {
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
6069 /* Scalable fonts are as big as you want them to be. */
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
6070 lplf->elfLogFont.lfHeight = lpef->logfont.lfHeight;
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
6071 lplf->elfLogFont.lfWidth = lpef->logfont.lfWidth;
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
6072 width = make_number (lpef->logfont.lfWidth);
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
6073 }
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
6074 else
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
6075 {
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
6076 lplf->elfLogFont.lfHeight = 0;
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
6077 lplf->elfLogFont.lfWidth = 0;
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
6078 }
15205
0f5d6cd72e21 (win_msg_worker): Use post_msg.
Richard M. Stallman <rms@gnu.org>
parents: 15148
diff changeset
6079 }
27397
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
6080
24497
b09ceba3d319 (enum_font_cb2): Set the font height to be the
Geoff Voelker <voelker@cs.washington.edu>
parents: 24481
diff changeset
6081 /* Make sure the height used here is the same as everywhere
b09ceba3d319 (enum_font_cb2): Set the font height to be the
Geoff Voelker <voelker@cs.washington.edu>
parents: 24481
diff changeset
6082 else (ie character height, not cell height). */
27397
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
6083 if (lplf->elfLogFont.lfHeight > 0)
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
6084 {
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
6085 /* lptm can be trusted for RASTER fonts, but not scalable ones. */
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
6086 if (FontType == RASTER_FONTTYPE)
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
6087 lplf->elfLogFont.lfHeight = lptm->tmInternalLeading - lptm->tmHeight;
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
6088 else
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
6089 lplf->elfLogFont.lfHeight = -lplf->elfLogFont.lfHeight;
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
6090 }
23506
246a14f0622f (Vx_pixel_size_width): New global variable.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23407
diff changeset
6091
45465
84120e75baa0 * w32fns.c (enumfont_t): Remove tail, make pattern a normal
Jason Rumney <jasonr@gnu.org>
parents: 45454
diff changeset
6092 if (!NILP (lpef->pattern))
33387
01a10bc04233 (Qw32_charset_hangeul): Rename to match w32 headers.
Jason Rumney <jasonr@gnu.org>
parents: 33216
diff changeset
6093 {
46370
40db0673e6f0 Most uses of XSTRING combined with STRING_BYTES or indirection changed to
Ken Raeburn <raeburn@raeburn.org>
parents: 46293
diff changeset
6094 charset = xlfd_charset_of_font (SDATA (lpef->pattern));
33387
01a10bc04233 (Qw32_charset_hangeul): Rename to match w32 headers.
Jason Rumney <jasonr@gnu.org>
parents: 33216
diff changeset
6095
43207
2dc57fcf62e9 (enum_font_cb2): Don't let charsets unknown to Windows
Jason Rumney <jasonr@gnu.org>
parents: 42935
diff changeset
6096 /* We already checked charsets above, but DEFAULT_CHARSET
2dc57fcf62e9 (enum_font_cb2): Don't let charsets unknown to Windows
Jason Rumney <jasonr@gnu.org>
parents: 42935
diff changeset
6097 slipped through. So only allow exact matches for DEFAULT_CHARSET. */
2dc57fcf62e9 (enum_font_cb2): Don't let charsets unknown to Windows
Jason Rumney <jasonr@gnu.org>
parents: 42935
diff changeset
6098 if (charset
2dc57fcf62e9 (enum_font_cb2): Don't let charsets unknown to Windows
Jason Rumney <jasonr@gnu.org>
parents: 42935
diff changeset
6099 && strncmp (charset, "*-*", 3) != 0
2dc57fcf62e9 (enum_font_cb2): Don't let charsets unknown to Windows
Jason Rumney <jasonr@gnu.org>
parents: 42935
diff changeset
6100 && lpef->logfont.lfCharSet == DEFAULT_CHARSET
89594
169b2685d6f6 (w32_load_system_font): Default charset to -1.
Jason Rumney <jasonr@gnu.org>
parents: 89585
diff changeset
6101 && strcmp (charset, w32_to_x_charset (DEFAULT_CHARSET, NULL)) != 0)
43207
2dc57fcf62e9 (enum_font_cb2): Don't let charsets unknown to Windows
Jason Rumney <jasonr@gnu.org>
parents: 42935
diff changeset
6102 return 1;
80195
6151abddc158 (enum_font_cb2): Don't use raster fonts for Unicode.
Jason Rumney <jasonr@gnu.org>
parents: 80140
diff changeset
6103
6151abddc158 (enum_font_cb2): Don't use raster fonts for Unicode.
Jason Rumney <jasonr@gnu.org>
parents: 80140
diff changeset
6104 /* Reject raster fonts if we are looking for a unicode font. */
6151abddc158 (enum_font_cb2): Don't use raster fonts for Unicode.
Jason Rumney <jasonr@gnu.org>
parents: 80140
diff changeset
6105 if (charset
6151abddc158 (enum_font_cb2): Don't use raster fonts for Unicode.
Jason Rumney <jasonr@gnu.org>
parents: 80140
diff changeset
6106 && FontType == RASTER_FONTTYPE
6151abddc158 (enum_font_cb2): Don't use raster fonts for Unicode.
Jason Rumney <jasonr@gnu.org>
parents: 80140
diff changeset
6107 && strncmp (charset, "iso10646", 8) == 0)
6151abddc158 (enum_font_cb2): Don't use raster fonts for Unicode.
Jason Rumney <jasonr@gnu.org>
parents: 80140
diff changeset
6108 return 1;
33387
01a10bc04233 (Qw32_charset_hangeul): Rename to match w32 headers.
Jason Rumney <jasonr@gnu.org>
parents: 33216
diff changeset
6109 }
01a10bc04233 (Qw32_charset_hangeul): Rename to match w32 headers.
Jason Rumney <jasonr@gnu.org>
parents: 33216
diff changeset
6110
42845
ebb3a20bc357 (w32_load_system_font, w32_to_x_charset): Use strnicmp
Jason Rumney <jasonr@gnu.org>
parents: 42833
diff changeset
6111 if (charset)
ebb3a20bc357 (w32_load_system_font, w32_to_x_charset): Use strnicmp
Jason Rumney <jasonr@gnu.org>
parents: 42833
diff changeset
6112 charset_list = Fcons (build_string (charset), Qnil);
ebb3a20bc357 (w32_load_system_font, w32_to_x_charset): Use strnicmp
Jason Rumney <jasonr@gnu.org>
parents: 42833
diff changeset
6113 else
89594
169b2685d6f6 (w32_load_system_font): Default charset to -1.
Jason Rumney <jasonr@gnu.org>
parents: 89585
diff changeset
6114 /* Always prefer unicode. */
169b2685d6f6 (w32_load_system_font): Default charset to -1.
Jason Rumney <jasonr@gnu.org>
parents: 89585
diff changeset
6115 charset_list
169b2685d6f6 (w32_load_system_font): Default charset to -1.
Jason Rumney <jasonr@gnu.org>
parents: 89585
diff changeset
6116 = Fcons (build_string ("iso10646-1"),
169b2685d6f6 (w32_load_system_font): Default charset to -1.
Jason Rumney <jasonr@gnu.org>
parents: 89585
diff changeset
6117 w32_to_all_x_charsets (lplf->elfLogFont.lfCharSet));
42845
ebb3a20bc357 (w32_load_system_font, w32_to_x_charset): Use strnicmp
Jason Rumney <jasonr@gnu.org>
parents: 42833
diff changeset
6118
ebb3a20bc357 (w32_load_system_font, w32_to_x_charset): Use strnicmp
Jason Rumney <jasonr@gnu.org>
parents: 42833
diff changeset
6119 /* Loop through the charsets. */
ebb3a20bc357 (w32_load_system_font, w32_to_x_charset): Use strnicmp
Jason Rumney <jasonr@gnu.org>
parents: 42833
diff changeset
6120 for ( ; CONSP (charset_list); charset_list = Fcdr (charset_list))
13434
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
6121 {
42845
ebb3a20bc357 (w32_load_system_font, w32_to_x_charset): Use strnicmp
Jason Rumney <jasonr@gnu.org>
parents: 42833
diff changeset
6122 Lisp_Object this_charset = Fcar (charset_list);
46370
40db0673e6f0 Most uses of XSTRING combined with STRING_BYTES or indirection changed to
Ken Raeburn <raeburn@raeburn.org>
parents: 46293
diff changeset
6123 charset = SDATA (this_charset);
42845
ebb3a20bc357 (w32_load_system_font, w32_to_x_charset): Use strnicmp
Jason Rumney <jasonr@gnu.org>
parents: 42833
diff changeset
6124
92175
049a396d6d9d Merge from emacs--rel--22
Miles Bader <miles@gnu.org>
parents: 92148 80195
diff changeset
6125 /* Don't list raster fonts as unicode. */
049a396d6d9d Merge from emacs--rel--22
Miles Bader <miles@gnu.org>
parents: 92148 80195
diff changeset
6126 if (charset
049a396d6d9d Merge from emacs--rel--22
Miles Bader <miles@gnu.org>
parents: 92148 80195
diff changeset
6127 && FontType == RASTER_FONTTYPE
049a396d6d9d Merge from emacs--rel--22
Miles Bader <miles@gnu.org>
parents: 92148 80195
diff changeset
6128 && strncmp (charset, "iso10646", 8) == 0)
049a396d6d9d Merge from emacs--rel--22
Miles Bader <miles@gnu.org>
parents: 92148 80195
diff changeset
6129 continue;
049a396d6d9d Merge from emacs--rel--22
Miles Bader <miles@gnu.org>
parents: 92148 80195
diff changeset
6130
89594
169b2685d6f6 (w32_load_system_font): Default charset to -1.
Jason Rumney <jasonr@gnu.org>
parents: 89585
diff changeset
6131 enum_font_maybe_add_to_list (lpef, &(lplf->elfLogFont),
169b2685d6f6 (w32_load_system_font): Default charset to -1.
Jason Rumney <jasonr@gnu.org>
parents: 89585
diff changeset
6132 charset, width);
80195
6151abddc158 (enum_font_cb2): Don't use raster fonts for Unicode.
Jason Rumney <jasonr@gnu.org>
parents: 80140
diff changeset
6133
42845
ebb3a20bc357 (w32_load_system_font, w32_to_x_charset): Use strnicmp
Jason Rumney <jasonr@gnu.org>
parents: 42833
diff changeset
6134 /* List bold and italic variations if w32-enable-synthesized-fonts
ebb3a20bc357 (w32_load_system_font, w32_to_x_charset): Use strnicmp
Jason Rumney <jasonr@gnu.org>
parents: 42833
diff changeset
6135 is non-nil and this is a plain font. */
ebb3a20bc357 (w32_load_system_font, w32_to_x_charset): Use strnicmp
Jason Rumney <jasonr@gnu.org>
parents: 42833
diff changeset
6136 if (w32_enable_synthesized_fonts
ebb3a20bc357 (w32_load_system_font, w32_to_x_charset): Use strnicmp
Jason Rumney <jasonr@gnu.org>
parents: 42833
diff changeset
6137 && lplf->elfLogFont.lfWeight == FW_NORMAL
ebb3a20bc357 (w32_load_system_font, w32_to_x_charset): Use strnicmp
Jason Rumney <jasonr@gnu.org>
parents: 42833
diff changeset
6138 && lplf->elfLogFont.lfItalic == FALSE)
ebb3a20bc357 (w32_load_system_font, w32_to_x_charset): Use strnicmp
Jason Rumney <jasonr@gnu.org>
parents: 42833
diff changeset
6139 {
ebb3a20bc357 (w32_load_system_font, w32_to_x_charset): Use strnicmp
Jason Rumney <jasonr@gnu.org>
parents: 42833
diff changeset
6140 /* bold. */
ebb3a20bc357 (w32_load_system_font, w32_to_x_charset): Use strnicmp
Jason Rumney <jasonr@gnu.org>
parents: 42833
diff changeset
6141 lplf->elfLogFont.lfWeight = FW_BOLD;
ebb3a20bc357 (w32_load_system_font, w32_to_x_charset): Use strnicmp
Jason Rumney <jasonr@gnu.org>
parents: 42833
diff changeset
6142 enum_font_maybe_add_to_list (lpef, &(lplf->elfLogFont),
ebb3a20bc357 (w32_load_system_font, w32_to_x_charset): Use strnicmp
Jason Rumney <jasonr@gnu.org>
parents: 42833
diff changeset
6143 charset, width);
ebb3a20bc357 (w32_load_system_font, w32_to_x_charset): Use strnicmp
Jason Rumney <jasonr@gnu.org>
parents: 42833
diff changeset
6144 /* bold italic. */
ebb3a20bc357 (w32_load_system_font, w32_to_x_charset): Use strnicmp
Jason Rumney <jasonr@gnu.org>
parents: 42833
diff changeset
6145 lplf->elfLogFont.lfItalic = TRUE;
ebb3a20bc357 (w32_load_system_font, w32_to_x_charset): Use strnicmp
Jason Rumney <jasonr@gnu.org>
parents: 42833
diff changeset
6146 enum_font_maybe_add_to_list (lpef, &(lplf->elfLogFont),
ebb3a20bc357 (w32_load_system_font, w32_to_x_charset): Use strnicmp
Jason Rumney <jasonr@gnu.org>
parents: 42833
diff changeset
6147 charset, width);
ebb3a20bc357 (w32_load_system_font, w32_to_x_charset): Use strnicmp
Jason Rumney <jasonr@gnu.org>
parents: 42833
diff changeset
6148 /* italic. */
ebb3a20bc357 (w32_load_system_font, w32_to_x_charset): Use strnicmp
Jason Rumney <jasonr@gnu.org>
parents: 42833
diff changeset
6149 lplf->elfLogFont.lfWeight = FW_NORMAL;
ebb3a20bc357 (w32_load_system_font, w32_to_x_charset): Use strnicmp
Jason Rumney <jasonr@gnu.org>
parents: 42833
diff changeset
6150 enum_font_maybe_add_to_list (lpef, &(lplf->elfLogFont),
ebb3a20bc357 (w32_load_system_font, w32_to_x_charset): Use strnicmp
Jason Rumney <jasonr@gnu.org>
parents: 42833
diff changeset
6151 charset, width);
ebb3a20bc357 (w32_load_system_font, w32_to_x_charset): Use strnicmp
Jason Rumney <jasonr@gnu.org>
parents: 42833
diff changeset
6152 }
13434
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
6153 }
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
6154 }
27397
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
6155
40528
7fb50bbb61ad (w32_to_x_charset): Increase size of XLFD charset buffer.
Jason Rumney <jasonr@gnu.org>
parents: 40385
diff changeset
6156 return 1;
13434
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
6157 }
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
6158
42845
ebb3a20bc357 (w32_load_system_font, w32_to_x_charset): Use strnicmp
Jason Rumney <jasonr@gnu.org>
parents: 42833
diff changeset
6159 static void
ebb3a20bc357 (w32_load_system_font, w32_to_x_charset): Use strnicmp
Jason Rumney <jasonr@gnu.org>
parents: 42833
diff changeset
6160 enum_font_maybe_add_to_list (lpef, logfont, match_charset, width)
ebb3a20bc357 (w32_load_system_font, w32_to_x_charset): Use strnicmp
Jason Rumney <jasonr@gnu.org>
parents: 42833
diff changeset
6161 enumfont_t * lpef;
ebb3a20bc357 (w32_load_system_font, w32_to_x_charset): Use strnicmp
Jason Rumney <jasonr@gnu.org>
parents: 42833
diff changeset
6162 LOGFONT * logfont;
ebb3a20bc357 (w32_load_system_font, w32_to_x_charset): Use strnicmp
Jason Rumney <jasonr@gnu.org>
parents: 42833
diff changeset
6163 char * match_charset;
ebb3a20bc357 (w32_load_system_font, w32_to_x_charset): Use strnicmp
Jason Rumney <jasonr@gnu.org>
parents: 42833
diff changeset
6164 Lisp_Object width;
ebb3a20bc357 (w32_load_system_font, w32_to_x_charset): Use strnicmp
Jason Rumney <jasonr@gnu.org>
parents: 42833
diff changeset
6165 {
ebb3a20bc357 (w32_load_system_font, w32_to_x_charset): Use strnicmp
Jason Rumney <jasonr@gnu.org>
parents: 42833
diff changeset
6166 char buf[100];
ebb3a20bc357 (w32_load_system_font, w32_to_x_charset): Use strnicmp
Jason Rumney <jasonr@gnu.org>
parents: 42833
diff changeset
6167
ebb3a20bc357 (w32_load_system_font, w32_to_x_charset): Use strnicmp
Jason Rumney <jasonr@gnu.org>
parents: 42833
diff changeset
6168 if (!w32_to_x_font (logfont, buf, 100, match_charset))
ebb3a20bc357 (w32_load_system_font, w32_to_x_charset): Use strnicmp
Jason Rumney <jasonr@gnu.org>
parents: 42833
diff changeset
6169 return;
ebb3a20bc357 (w32_load_system_font, w32_to_x_charset): Use strnicmp
Jason Rumney <jasonr@gnu.org>
parents: 42833
diff changeset
6170
45465
84120e75baa0 * w32fns.c (enumfont_t): Remove tail, make pattern a normal
Jason Rumney <jasonr@gnu.org>
parents: 45454
diff changeset
6171 if (NILP (lpef->pattern)
46370
40db0673e6f0 Most uses of XSTRING combined with STRING_BYTES or indirection changed to
Ken Raeburn <raeburn@raeburn.org>
parents: 46293
diff changeset
6172 || w32_font_match (buf, SDATA (lpef->pattern)))
42845
ebb3a20bc357 (w32_load_system_font, w32_to_x_charset): Use strnicmp
Jason Rumney <jasonr@gnu.org>
parents: 42833
diff changeset
6173 {
ebb3a20bc357 (w32_load_system_font, w32_to_x_charset): Use strnicmp
Jason Rumney <jasonr@gnu.org>
parents: 42833
diff changeset
6174 /* Check if we already listed this font. This may happen if
ebb3a20bc357 (w32_load_system_font, w32_to_x_charset): Use strnicmp
Jason Rumney <jasonr@gnu.org>
parents: 42833
diff changeset
6175 w32_enable_synthesized_fonts is non-nil, and there are real
ebb3a20bc357 (w32_load_system_font, w32_to_x_charset): Use strnicmp
Jason Rumney <jasonr@gnu.org>
parents: 42833
diff changeset
6176 bold and italic versions of the font. */
ebb3a20bc357 (w32_load_system_font, w32_to_x_charset): Use strnicmp
Jason Rumney <jasonr@gnu.org>
parents: 42833
diff changeset
6177 Lisp_Object font_name = build_string (buf);
ebb3a20bc357 (w32_load_system_font, w32_to_x_charset): Use strnicmp
Jason Rumney <jasonr@gnu.org>
parents: 42833
diff changeset
6178 if (NILP (Fmember (font_name, lpef->list)))
ebb3a20bc357 (w32_load_system_font, w32_to_x_charset): Use strnicmp
Jason Rumney <jasonr@gnu.org>
parents: 42833
diff changeset
6179 {
45465
84120e75baa0 * w32fns.c (enumfont_t): Remove tail, make pattern a normal
Jason Rumney <jasonr@gnu.org>
parents: 45454
diff changeset
6180 Lisp_Object entry = Fcons (font_name, width);
84120e75baa0 * w32fns.c (enumfont_t): Remove tail, make pattern a normal
Jason Rumney <jasonr@gnu.org>
parents: 45454
diff changeset
6181 lpef->list = Fcons (entry, lpef->list);
42845
ebb3a20bc357 (w32_load_system_font, w32_to_x_charset): Use strnicmp
Jason Rumney <jasonr@gnu.org>
parents: 42833
diff changeset
6182 lpef->numFonts++;
ebb3a20bc357 (w32_load_system_font, w32_to_x_charset): Use strnicmp
Jason Rumney <jasonr@gnu.org>
parents: 42833
diff changeset
6183 }
ebb3a20bc357 (w32_load_system_font, w32_to_x_charset): Use strnicmp
Jason Rumney <jasonr@gnu.org>
parents: 42833
diff changeset
6184 }
ebb3a20bc357 (w32_load_system_font, w32_to_x_charset): Use strnicmp
Jason Rumney <jasonr@gnu.org>
parents: 42833
diff changeset
6185 }
ebb3a20bc357 (w32_load_system_font, w32_to_x_charset): Use strnicmp
Jason Rumney <jasonr@gnu.org>
parents: 42833
diff changeset
6186
ebb3a20bc357 (w32_load_system_font, w32_to_x_charset): Use strnicmp
Jason Rumney <jasonr@gnu.org>
parents: 42833
diff changeset
6187
47942
080b4586492b Fix typo in comment.
Juanma Barranquero <lekktu@gmail.com>
parents: 47731
diff changeset
6188 static int CALLBACK
13434
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
6189 enum_font_cb1 (lplf, lptm, FontType, lpef)
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
6190 ENUMLOGFONT * lplf;
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
6191 NEWTEXTMETRIC * lptm;
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
6192 int FontType;
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
6193 enumfont_t * lpef;
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
6194 {
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
6195 return EnumFontFamilies (lpef->hdc,
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
6196 lplf->elfLogFont.lfFaceName,
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
6197 (FONTENUMPROC) enum_font_cb2,
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
6198 (LPARAM) lpef);
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
6199 }
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
6200
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
6201
35288
912ea0b8e09b (x_to_w32_color, x_set_icon_name, xlfd_strip_height)
Jason Rumney <jasonr@gnu.org>
parents: 34998
diff changeset
6202 static int CALLBACK
24214
4fb0bce809bc (w32_load_system_font): Do not load unlisted fonts if
Geoff Voelker <voelker@cs.washington.edu>
parents: 24211
diff changeset
6203 enum_fontex_cb2 (lplf, lptm, font_type, lpef)
4fb0bce809bc (w32_load_system_font): Do not load unlisted fonts if
Geoff Voelker <voelker@cs.washington.edu>
parents: 24211
diff changeset
6204 ENUMLOGFONTEX * lplf;
4fb0bce809bc (w32_load_system_font): Do not load unlisted fonts if
Geoff Voelker <voelker@cs.washington.edu>
parents: 24211
diff changeset
6205 NEWTEXTMETRICEX * lptm;
4fb0bce809bc (w32_load_system_font): Do not load unlisted fonts if
Geoff Voelker <voelker@cs.washington.edu>
parents: 24211
diff changeset
6206 int font_type;
4fb0bce809bc (w32_load_system_font): Do not load unlisted fonts if
Geoff Voelker <voelker@cs.washington.edu>
parents: 24211
diff changeset
6207 enumfont_t * lpef;
4fb0bce809bc (w32_load_system_font): Do not load unlisted fonts if
Geoff Voelker <voelker@cs.washington.edu>
parents: 24211
diff changeset
6208 {
4fb0bce809bc (w32_load_system_font): Do not load unlisted fonts if
Geoff Voelker <voelker@cs.washington.edu>
parents: 24211
diff changeset
6209 /* We are not interested in the extra info we get back from the 'Ex
4fb0bce809bc (w32_load_system_font): Do not load unlisted fonts if
Geoff Voelker <voelker@cs.washington.edu>
parents: 24211
diff changeset
6210 version - only the fact that we get character set variations
4fb0bce809bc (w32_load_system_font): Do not load unlisted fonts if
Geoff Voelker <voelker@cs.washington.edu>
parents: 24211
diff changeset
6211 enumerated seperately. */
4fb0bce809bc (w32_load_system_font): Do not load unlisted fonts if
Geoff Voelker <voelker@cs.washington.edu>
parents: 24211
diff changeset
6212 return enum_font_cb2 ((ENUMLOGFONT *) lplf, (NEWTEXTMETRIC *) lptm,
4fb0bce809bc (w32_load_system_font): Do not load unlisted fonts if
Geoff Voelker <voelker@cs.washington.edu>
parents: 24211
diff changeset
6213 font_type, lpef);
4fb0bce809bc (w32_load_system_font): Do not load unlisted fonts if
Geoff Voelker <voelker@cs.washington.edu>
parents: 24211
diff changeset
6214 }
4fb0bce809bc (w32_load_system_font): Do not load unlisted fonts if
Geoff Voelker <voelker@cs.washington.edu>
parents: 24211
diff changeset
6215
35288
912ea0b8e09b (x_to_w32_color, x_set_icon_name, xlfd_strip_height)
Jason Rumney <jasonr@gnu.org>
parents: 34998
diff changeset
6216 static int CALLBACK
24214
4fb0bce809bc (w32_load_system_font): Do not load unlisted fonts if
Geoff Voelker <voelker@cs.washington.edu>
parents: 24211
diff changeset
6217 enum_fontex_cb1 (lplf, lptm, font_type, lpef)
4fb0bce809bc (w32_load_system_font): Do not load unlisted fonts if
Geoff Voelker <voelker@cs.washington.edu>
parents: 24211
diff changeset
6218 ENUMLOGFONTEX * lplf;
4fb0bce809bc (w32_load_system_font): Do not load unlisted fonts if
Geoff Voelker <voelker@cs.washington.edu>
parents: 24211
diff changeset
6219 NEWTEXTMETRICEX * lptm;
4fb0bce809bc (w32_load_system_font): Do not load unlisted fonts if
Geoff Voelker <voelker@cs.washington.edu>
parents: 24211
diff changeset
6220 int font_type;
4fb0bce809bc (w32_load_system_font): Do not load unlisted fonts if
Geoff Voelker <voelker@cs.washington.edu>
parents: 24211
diff changeset
6221 enumfont_t * lpef;
4fb0bce809bc (w32_load_system_font): Do not load unlisted fonts if
Geoff Voelker <voelker@cs.washington.edu>
parents: 24211
diff changeset
6222 {
4fb0bce809bc (w32_load_system_font): Do not load unlisted fonts if
Geoff Voelker <voelker@cs.washington.edu>
parents: 24211
diff changeset
6223 HMODULE gdi32 = GetModuleHandle ("gdi32.dll");
4fb0bce809bc (w32_load_system_font): Do not load unlisted fonts if
Geoff Voelker <voelker@cs.washington.edu>
parents: 24211
diff changeset
6224 FARPROC enum_font_families_ex
4fb0bce809bc (w32_load_system_font): Do not load unlisted fonts if
Geoff Voelker <voelker@cs.washington.edu>
parents: 24211
diff changeset
6225 = GetProcAddress ( gdi32, "EnumFontFamiliesExA");
4fb0bce809bc (w32_load_system_font): Do not load unlisted fonts if
Geoff Voelker <voelker@cs.washington.edu>
parents: 24211
diff changeset
6226 /* We don't really expect EnumFontFamiliesEx to disappear once we
4fb0bce809bc (w32_load_system_font): Do not load unlisted fonts if
Geoff Voelker <voelker@cs.washington.edu>
parents: 24211
diff changeset
6227 get here, so don't bother handling it gracefully. */
4fb0bce809bc (w32_load_system_font): Do not load unlisted fonts if
Geoff Voelker <voelker@cs.washington.edu>
parents: 24211
diff changeset
6228 if (enum_font_families_ex == NULL)
4fb0bce809bc (w32_load_system_font): Do not load unlisted fonts if
Geoff Voelker <voelker@cs.washington.edu>
parents: 24211
diff changeset
6229 error ("gdi32.dll has disappeared!");
4fb0bce809bc (w32_load_system_font): Do not load unlisted fonts if
Geoff Voelker <voelker@cs.washington.edu>
parents: 24211
diff changeset
6230 return enum_font_families_ex (lpef->hdc,
4fb0bce809bc (w32_load_system_font): Do not load unlisted fonts if
Geoff Voelker <voelker@cs.washington.edu>
parents: 24211
diff changeset
6231 &lplf->elfLogFont,
4fb0bce809bc (w32_load_system_font): Do not load unlisted fonts if
Geoff Voelker <voelker@cs.washington.edu>
parents: 24211
diff changeset
6232 (FONTENUMPROC) enum_fontex_cb2,
4fb0bce809bc (w32_load_system_font): Do not load unlisted fonts if
Geoff Voelker <voelker@cs.washington.edu>
parents: 24211
diff changeset
6233 (LPARAM) lpef, 0);
4fb0bce809bc (w32_load_system_font): Do not load unlisted fonts if
Geoff Voelker <voelker@cs.washington.edu>
parents: 24211
diff changeset
6234 }
4fb0bce809bc (w32_load_system_font): Do not load unlisted fonts if
Geoff Voelker <voelker@cs.washington.edu>
parents: 24211
diff changeset
6235
23506
246a14f0622f (Vx_pixel_size_width): New global variable.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23407
diff changeset
6236 /* Interface to fontset handler. (adapted from mw32font.c in Meadow
246a14f0622f (Vx_pixel_size_width): New global variable.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23407
diff changeset
6237 and xterm.c in Emacs 20.3) */
246a14f0622f (Vx_pixel_size_width): New global variable.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23407
diff changeset
6238
79387
0ca197abc593 (Fw32_registered_hot_keys): Don't return the nil values corresponding
Juanma Barranquero <lekktu@gmail.com>
parents: 79381
diff changeset
6239 static Lisp_Object
0ca197abc593 (Fw32_registered_hot_keys): Don't return the nil values corresponding
Juanma Barranquero <lekktu@gmail.com>
parents: 79381
diff changeset
6240 w32_list_bdf_fonts (Lisp_Object pattern, int max_names)
24147
c83b0bc4e8b9 (Vw32_bdf_filename_alist): New variable.
Geoff Voelker <voelker@cs.washington.edu>
parents: 24130
diff changeset
6241 {
c83b0bc4e8b9 (Vw32_bdf_filename_alist): New variable.
Geoff Voelker <voelker@cs.washington.edu>
parents: 24130
diff changeset
6242 char *fontname, *ptnstr;
c83b0bc4e8b9 (Vw32_bdf_filename_alist): New variable.
Geoff Voelker <voelker@cs.washington.edu>
parents: 24130
diff changeset
6243 Lisp_Object list, tem, newlist = Qnil;
24670
045e247575d9 [andrewi]
Andrew Innes <andrewi@gnu.org>
parents: 24583
diff changeset
6244 int n_fonts = 0;
24147
c83b0bc4e8b9 (Vw32_bdf_filename_alist): New variable.
Geoff Voelker <voelker@cs.washington.edu>
parents: 24130
diff changeset
6245
c83b0bc4e8b9 (Vw32_bdf_filename_alist): New variable.
Geoff Voelker <voelker@cs.washington.edu>
parents: 24130
diff changeset
6246 list = Vw32_bdf_filename_alist;
46370
40db0673e6f0 Most uses of XSTRING combined with STRING_BYTES or indirection changed to
Ken Raeburn <raeburn@raeburn.org>
parents: 46293
diff changeset
6247 ptnstr = SDATA (pattern);
24147
c83b0bc4e8b9 (Vw32_bdf_filename_alist): New variable.
Geoff Voelker <voelker@cs.washington.edu>
parents: 24130
diff changeset
6248
25646
9154af188477 Use XCAR and XCDR instead of explicit member references.
Ken Raeburn <raeburn@raeburn.org>
parents: 25289
diff changeset
6249 for ( ; CONSP (list); list = XCDR (list))
24147
c83b0bc4e8b9 (Vw32_bdf_filename_alist): New variable.
Geoff Voelker <voelker@cs.washington.edu>
parents: 24130
diff changeset
6250 {
25646
9154af188477 Use XCAR and XCDR instead of explicit member references.
Ken Raeburn <raeburn@raeburn.org>
parents: 25289
diff changeset
6251 tem = XCAR (list);
24147
c83b0bc4e8b9 (Vw32_bdf_filename_alist): New variable.
Geoff Voelker <voelker@cs.washington.edu>
parents: 24130
diff changeset
6252 if (CONSP (tem))
46370
40db0673e6f0 Most uses of XSTRING combined with STRING_BYTES or indirection changed to
Ken Raeburn <raeburn@raeburn.org>
parents: 46293
diff changeset
6253 fontname = SDATA (XCAR (tem));
24147
c83b0bc4e8b9 (Vw32_bdf_filename_alist): New variable.
Geoff Voelker <voelker@cs.washington.edu>
parents: 24130
diff changeset
6254 else if (STRINGP (tem))
46370
40db0673e6f0 Most uses of XSTRING combined with STRING_BYTES or indirection changed to
Ken Raeburn <raeburn@raeburn.org>
parents: 46293
diff changeset
6255 fontname = SDATA (tem);
24147
c83b0bc4e8b9 (Vw32_bdf_filename_alist): New variable.
Geoff Voelker <voelker@cs.washington.edu>
parents: 24130
diff changeset
6256 else
c83b0bc4e8b9 (Vw32_bdf_filename_alist): New variable.
Geoff Voelker <voelker@cs.washington.edu>
parents: 24130
diff changeset
6257 continue;
c83b0bc4e8b9 (Vw32_bdf_filename_alist): New variable.
Geoff Voelker <voelker@cs.washington.edu>
parents: 24130
diff changeset
6258
c83b0bc4e8b9 (Vw32_bdf_filename_alist): New variable.
Geoff Voelker <voelker@cs.washington.edu>
parents: 24130
diff changeset
6259 if (w32_font_match (fontname, ptnstr))
24214
4fb0bce809bc (w32_load_system_font): Do not load unlisted fonts if
Geoff Voelker <voelker@cs.washington.edu>
parents: 24211
diff changeset
6260 {
25646
9154af188477 Use XCAR and XCDR instead of explicit member references.
Ken Raeburn <raeburn@raeburn.org>
parents: 25289
diff changeset
6261 newlist = Fcons (XCAR (tem), newlist);
24214
4fb0bce809bc (w32_load_system_font): Do not load unlisted fonts if
Geoff Voelker <voelker@cs.washington.edu>
parents: 24211
diff changeset
6262 n_fonts++;
49812
15e797b18d7f (w32_list_bdf_fonts, w32_list_fonts): Negative
Jason Rumney <jasonr@gnu.org>
parents: 49600
diff changeset
6263 if (max_names >= 0 && n_fonts >= max_names)
24214
4fb0bce809bc (w32_load_system_font): Do not load unlisted fonts if
Geoff Voelker <voelker@cs.washington.edu>
parents: 24211
diff changeset
6264 break;
4fb0bce809bc (w32_load_system_font): Do not load unlisted fonts if
Geoff Voelker <voelker@cs.washington.edu>
parents: 24211
diff changeset
6265 }
24147
c83b0bc4e8b9 (Vw32_bdf_filename_alist): New variable.
Geoff Voelker <voelker@cs.washington.edu>
parents: 24130
diff changeset
6266 }
c83b0bc4e8b9 (Vw32_bdf_filename_alist): New variable.
Geoff Voelker <voelker@cs.washington.edu>
parents: 24130
diff changeset
6267
c83b0bc4e8b9 (Vw32_bdf_filename_alist): New variable.
Geoff Voelker <voelker@cs.washington.edu>
parents: 24130
diff changeset
6268 return newlist;
c83b0bc4e8b9 (Vw32_bdf_filename_alist): New variable.
Geoff Voelker <voelker@cs.washington.edu>
parents: 24130
diff changeset
6269 }
c83b0bc4e8b9 (Vw32_bdf_filename_alist): New variable.
Geoff Voelker <voelker@cs.washington.edu>
parents: 24130
diff changeset
6270
24214
4fb0bce809bc (w32_load_system_font): Do not load unlisted fonts if
Geoff Voelker <voelker@cs.washington.edu>
parents: 24211
diff changeset
6271
23506
246a14f0622f (Vx_pixel_size_width): New global variable.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23407
diff changeset
6272 /* Return a list of names of available fonts matching PATTERN on frame
246a14f0622f (Vx_pixel_size_width): New global variable.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23407
diff changeset
6273 F. If SIZE is not 0, it is the size (maximum bound width) of fonts
246a14f0622f (Vx_pixel_size_width): New global variable.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23407
diff changeset
6274 to be listed. Frame F NULL means we have not yet created any
246a14f0622f (Vx_pixel_size_width): New global variable.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23407
diff changeset
6275 frame, which means we can't get proper size info, as we don't have
246a14f0622f (Vx_pixel_size_width): New global variable.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23407
diff changeset
6276 a device context to use for GetTextMetrics.
49812
15e797b18d7f (w32_list_bdf_fonts, w32_list_fonts): Negative
Jason Rumney <jasonr@gnu.org>
parents: 49600
diff changeset
6277 MAXNAMES sets a limit on how many fonts to match. If MAXNAMES is
15e797b18d7f (w32_list_bdf_fonts, w32_list_fonts): Negative
Jason Rumney <jasonr@gnu.org>
parents: 49600
diff changeset
6278 negative, then all matching fonts are returned. */
23506
246a14f0622f (Vx_pixel_size_width): New global variable.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23407
diff changeset
6279
246a14f0622f (Vx_pixel_size_width): New global variable.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23407
diff changeset
6280 Lisp_Object
36000
f4a0b086cc5d (Fx_show_tip): Fix calls to make_number.
Jason Rumney <jasonr@gnu.org>
parents: 35674
diff changeset
6281 w32_list_fonts (f, pattern, size, maxnames)
f4a0b086cc5d (Fx_show_tip): Fix calls to make_number.
Jason Rumney <jasonr@gnu.org>
parents: 35674
diff changeset
6282 struct frame *f;
f4a0b086cc5d (Fx_show_tip): Fix calls to make_number.
Jason Rumney <jasonr@gnu.org>
parents: 35674
diff changeset
6283 Lisp_Object pattern;
f4a0b086cc5d (Fx_show_tip): Fix calls to make_number.
Jason Rumney <jasonr@gnu.org>
parents: 35674
diff changeset
6284 int size;
f4a0b086cc5d (Fx_show_tip): Fix calls to make_number.
Jason Rumney <jasonr@gnu.org>
parents: 35674
diff changeset
6285 int maxnames;
23506
246a14f0622f (Vx_pixel_size_width): New global variable.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23407
diff changeset
6286 {
27397
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
6287 Lisp_Object patterns, key = Qnil, tem, tpat;
23506
246a14f0622f (Vx_pixel_size_width): New global variable.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23407
diff changeset
6288 Lisp_Object list = Qnil, newlist = Qnil, second_best = Qnil;
24147
c83b0bc4e8b9 (Vw32_bdf_filename_alist): New variable.
Geoff Voelker <voelker@cs.washington.edu>
parents: 24130
diff changeset
6289 struct w32_display_info *dpyinfo = &one_w32_display_info;
24214
4fb0bce809bc (w32_load_system_font): Do not load unlisted fonts if
Geoff Voelker <voelker@cs.washington.edu>
parents: 24211
diff changeset
6290 int n_fonts = 0;
23637
54b22e0a1f7b (w32_list_fonts): Report an error if a frame has not
Geoff Voelker <voelker@cs.washington.edu>
parents: 23620
diff changeset
6291
23506
246a14f0622f (Vx_pixel_size_width): New global variable.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23407
diff changeset
6292 patterns = Fassoc (pattern, Valternate_fontname_alist);
246a14f0622f (Vx_pixel_size_width): New global variable.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23407
diff changeset
6293 if (NILP (patterns))
246a14f0622f (Vx_pixel_size_width): New global variable.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23407
diff changeset
6294 patterns = Fcons (pattern, Qnil);
246a14f0622f (Vx_pixel_size_width): New global variable.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23407
diff changeset
6295
25646
9154af188477 Use XCAR and XCDR instead of explicit member references.
Ken Raeburn <raeburn@raeburn.org>
parents: 25289
diff changeset
6296 for (; CONSP (patterns); patterns = XCDR (patterns))
23506
246a14f0622f (Vx_pixel_size_width): New global variable.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23407
diff changeset
6297 {
246a14f0622f (Vx_pixel_size_width): New global variable.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23407
diff changeset
6298 enumfont_t ef;
33387
01a10bc04233 (Qw32_charset_hangeul): Rename to match w32 headers.
Jason Rumney <jasonr@gnu.org>
parents: 33216
diff changeset
6299 int codepage;
23506
246a14f0622f (Vx_pixel_size_width): New global variable.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23407
diff changeset
6300
25646
9154af188477 Use XCAR and XCDR instead of explicit member references.
Ken Raeburn <raeburn@raeburn.org>
parents: 25289
diff changeset
6301 tpat = XCAR (patterns);
23506
246a14f0622f (Vx_pixel_size_width): New global variable.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23407
diff changeset
6302
33387
01a10bc04233 (Qw32_charset_hangeul): Rename to match w32 headers.
Jason Rumney <jasonr@gnu.org>
parents: 33216
diff changeset
6303 if (!STRINGP (tpat))
01a10bc04233 (Qw32_charset_hangeul): Rename to match w32 headers.
Jason Rumney <jasonr@gnu.org>
parents: 33216
diff changeset
6304 continue;
01a10bc04233 (Qw32_charset_hangeul): Rename to match w32 headers.
Jason Rumney <jasonr@gnu.org>
parents: 33216
diff changeset
6305
01a10bc04233 (Qw32_charset_hangeul): Rename to match w32 headers.
Jason Rumney <jasonr@gnu.org>
parents: 33216
diff changeset
6306 /* Avoid expensive EnumFontFamilies functions if we are not
01a10bc04233 (Qw32_charset_hangeul): Rename to match w32 headers.
Jason Rumney <jasonr@gnu.org>
parents: 33216
diff changeset
6307 going to be able to output one of these anyway. */
46370
40db0673e6f0 Most uses of XSTRING combined with STRING_BYTES or indirection changed to
Ken Raeburn <raeburn@raeburn.org>
parents: 46293
diff changeset
6308 codepage = w32_codepage_for_font (SDATA (tpat));
33387
01a10bc04233 (Qw32_charset_hangeul): Rename to match w32 headers.
Jason Rumney <jasonr@gnu.org>
parents: 33216
diff changeset
6309 if (codepage != CP_8BIT && codepage != CP_UNICODE
34284
3a21ff35392b (xlfd_charset_of_font): Don't overwrite fontname
Andrew Innes <andrewi@gnu.org>
parents: 34133
diff changeset
6310 && codepage != CP_DEFAULT && codepage != CP_UNKNOWN
79387
0ca197abc593 (Fw32_registered_hot_keys): Don't return the nil values corresponding
Juanma Barranquero <lekktu@gmail.com>
parents: 79381
diff changeset
6311 && !IsValidCodePage (codepage))
33387
01a10bc04233 (Qw32_charset_hangeul): Rename to match w32 headers.
Jason Rumney <jasonr@gnu.org>
parents: 33216
diff changeset
6312 continue;
01a10bc04233 (Qw32_charset_hangeul): Rename to match w32 headers.
Jason Rumney <jasonr@gnu.org>
parents: 33216
diff changeset
6313
23506
246a14f0622f (Vx_pixel_size_width): New global variable.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23407
diff changeset
6314 /* See if we cached the result for this particular query.
246a14f0622f (Vx_pixel_size_width): New global variable.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23407
diff changeset
6315 The cache is an alist of the form:
246a14f0622f (Vx_pixel_size_width): New global variable.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23407
diff changeset
6316 ((PATTERN (FONTNAME . WIDTH) ...) ...)
246a14f0622f (Vx_pixel_size_width): New global variable.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23407
diff changeset
6317 */
25646
9154af188477 Use XCAR and XCDR instead of explicit member references.
Ken Raeburn <raeburn@raeburn.org>
parents: 25289
diff changeset
6318 if (tem = XCDR (dpyinfo->name_list_element),
24147
c83b0bc4e8b9 (Vw32_bdf_filename_alist): New variable.
Geoff Voelker <voelker@cs.washington.edu>
parents: 24130
diff changeset
6319 !NILP (list = Fassoc (tpat, tem)))
23506
246a14f0622f (Vx_pixel_size_width): New global variable.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23407
diff changeset
6320 {
246a14f0622f (Vx_pixel_size_width): New global variable.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23407
diff changeset
6321 list = Fcdr_safe (list);
246a14f0622f (Vx_pixel_size_width): New global variable.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23407
diff changeset
6322 /* We have a cached list. Don't have to get the list again. */
246a14f0622f (Vx_pixel_size_width): New global variable.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23407
diff changeset
6323 goto label_cached;
246a14f0622f (Vx_pixel_size_width): New global variable.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23407
diff changeset
6324 }
246a14f0622f (Vx_pixel_size_width): New global variable.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23407
diff changeset
6325
246a14f0622f (Vx_pixel_size_width): New global variable.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23407
diff changeset
6326 BLOCK_INPUT;
246a14f0622f (Vx_pixel_size_width): New global variable.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23407
diff changeset
6327 /* At first, put PATTERN in the cache. */
45465
84120e75baa0 * w32fns.c (enumfont_t): Remove tail, make pattern a normal
Jason Rumney <jasonr@gnu.org>
parents: 45454
diff changeset
6328 ef.pattern = tpat;
84120e75baa0 * w32fns.c (enumfont_t): Remove tail, make pattern a normal
Jason Rumney <jasonr@gnu.org>
parents: 45454
diff changeset
6329 ef.list = Qnil;
23506
246a14f0622f (Vx_pixel_size_width): New global variable.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23407
diff changeset
6330 ef.numFonts = 0;
24147
c83b0bc4e8b9 (Vw32_bdf_filename_alist): New variable.
Geoff Voelker <voelker@cs.washington.edu>
parents: 24130
diff changeset
6331
24214
4fb0bce809bc (w32_load_system_font): Do not load unlisted fonts if
Geoff Voelker <voelker@cs.washington.edu>
parents: 24211
diff changeset
6332 /* Use EnumFontFamiliesEx where it is available, as it knows
4fb0bce809bc (w32_load_system_font): Do not load unlisted fonts if
Geoff Voelker <voelker@cs.washington.edu>
parents: 24211
diff changeset
6333 about character sets. Fall back to EnumFontFamilies for
4fb0bce809bc (w32_load_system_font): Do not load unlisted fonts if
Geoff Voelker <voelker@cs.washington.edu>
parents: 24211
diff changeset
6334 older versions of NT that don't support the 'Ex function. */
46370
40db0673e6f0 Most uses of XSTRING combined with STRING_BYTES or indirection changed to
Ken Raeburn <raeburn@raeburn.org>
parents: 46293
diff changeset
6335 x_to_w32_font (SDATA (tpat), &ef.logfont);
23506
246a14f0622f (Vx_pixel_size_width): New global variable.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23407
diff changeset
6336 {
24214
4fb0bce809bc (w32_load_system_font): Do not load unlisted fonts if
Geoff Voelker <voelker@cs.washington.edu>
parents: 24211
diff changeset
6337 LOGFONT font_match_pattern;
4fb0bce809bc (w32_load_system_font): Do not load unlisted fonts if
Geoff Voelker <voelker@cs.washington.edu>
parents: 24211
diff changeset
6338 HMODULE gdi32 = GetModuleHandle ("gdi32.dll");
4fb0bce809bc (w32_load_system_font): Do not load unlisted fonts if
Geoff Voelker <voelker@cs.washington.edu>
parents: 24211
diff changeset
6339 FARPROC enum_font_families_ex
4fb0bce809bc (w32_load_system_font): Do not load unlisted fonts if
Geoff Voelker <voelker@cs.washington.edu>
parents: 24211
diff changeset
6340 = GetProcAddress ( gdi32, "EnumFontFamiliesExA");
4fb0bce809bc (w32_load_system_font): Do not load unlisted fonts if
Geoff Voelker <voelker@cs.washington.edu>
parents: 24211
diff changeset
6341
4fb0bce809bc (w32_load_system_font): Do not load unlisted fonts if
Geoff Voelker <voelker@cs.washington.edu>
parents: 24211
diff changeset
6342 /* We do our own pattern matching so we can handle wildcards. */
4fb0bce809bc (w32_load_system_font): Do not load unlisted fonts if
Geoff Voelker <voelker@cs.washington.edu>
parents: 24211
diff changeset
6343 font_match_pattern.lfFaceName[0] = 0;
4fb0bce809bc (w32_load_system_font): Do not load unlisted fonts if
Geoff Voelker <voelker@cs.washington.edu>
parents: 24211
diff changeset
6344 font_match_pattern.lfPitchAndFamily = 0;
4fb0bce809bc (w32_load_system_font): Do not load unlisted fonts if
Geoff Voelker <voelker@cs.washington.edu>
parents: 24211
diff changeset
6345 /* We can use the charset, because if it is a wildcard it will
4fb0bce809bc (w32_load_system_font): Do not load unlisted fonts if
Geoff Voelker <voelker@cs.washington.edu>
parents: 24211
diff changeset
6346 be DEFAULT_CHARSET anyway. */
4fb0bce809bc (w32_load_system_font): Do not load unlisted fonts if
Geoff Voelker <voelker@cs.washington.edu>
parents: 24211
diff changeset
6347 font_match_pattern.lfCharSet = ef.logfont.lfCharSet;
4fb0bce809bc (w32_load_system_font): Do not load unlisted fonts if
Geoff Voelker <voelker@cs.washington.edu>
parents: 24211
diff changeset
6348
24147
c83b0bc4e8b9 (Vw32_bdf_filename_alist): New variable.
Geoff Voelker <voelker@cs.washington.edu>
parents: 24130
diff changeset
6349 ef.hdc = GetDC (dpyinfo->root_window);
23506
246a14f0622f (Vx_pixel_size_width): New global variable.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23407
diff changeset
6350
24214
4fb0bce809bc (w32_load_system_font): Do not load unlisted fonts if
Geoff Voelker <voelker@cs.washington.edu>
parents: 24211
diff changeset
6351 if (enum_font_families_ex)
4fb0bce809bc (w32_load_system_font): Do not load unlisted fonts if
Geoff Voelker <voelker@cs.washington.edu>
parents: 24211
diff changeset
6352 enum_font_families_ex (ef.hdc,
4fb0bce809bc (w32_load_system_font): Do not load unlisted fonts if
Geoff Voelker <voelker@cs.washington.edu>
parents: 24211
diff changeset
6353 &font_match_pattern,
4fb0bce809bc (w32_load_system_font): Do not load unlisted fonts if
Geoff Voelker <voelker@cs.washington.edu>
parents: 24211
diff changeset
6354 (FONTENUMPROC) enum_fontex_cb1,
4fb0bce809bc (w32_load_system_font): Do not load unlisted fonts if
Geoff Voelker <voelker@cs.washington.edu>
parents: 24211
diff changeset
6355 (LPARAM) &ef, 0);
4fb0bce809bc (w32_load_system_font): Do not load unlisted fonts if
Geoff Voelker <voelker@cs.washington.edu>
parents: 24211
diff changeset
6356 else
4fb0bce809bc (w32_load_system_font): Do not load unlisted fonts if
Geoff Voelker <voelker@cs.washington.edu>
parents: 24211
diff changeset
6357 EnumFontFamilies (ef.hdc, NULL, (FONTENUMPROC) enum_font_cb1,
4fb0bce809bc (w32_load_system_font): Do not load unlisted fonts if
Geoff Voelker <voelker@cs.washington.edu>
parents: 24211
diff changeset
6358 (LPARAM)&ef);
23506
246a14f0622f (Vx_pixel_size_width): New global variable.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23407
diff changeset
6359
24147
c83b0bc4e8b9 (Vw32_bdf_filename_alist): New variable.
Geoff Voelker <voelker@cs.washington.edu>
parents: 24130
diff changeset
6360 ReleaseDC (dpyinfo->root_window, ef.hdc);
23506
246a14f0622f (Vx_pixel_size_width): New global variable.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23407
diff changeset
6361 }
246a14f0622f (Vx_pixel_size_width): New global variable.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23407
diff changeset
6362
246a14f0622f (Vx_pixel_size_width): New global variable.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23407
diff changeset
6363 UNBLOCK_INPUT;
45465
84120e75baa0 * w32fns.c (enumfont_t): Remove tail, make pattern a normal
Jason Rumney <jasonr@gnu.org>
parents: 45454
diff changeset
6364 list = ef.list;
23506
246a14f0622f (Vx_pixel_size_width): New global variable.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23407
diff changeset
6365
246a14f0622f (Vx_pixel_size_width): New global variable.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23407
diff changeset
6366 /* Make a list of the fonts we got back.
246a14f0622f (Vx_pixel_size_width): New global variable.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23407
diff changeset
6367 Store that in the font cache for the display. */
39973
579177964efa Avoid (most) uses of XCAR/XCDR as lvalues, for flexibility in experimenting
Ken Raeburn <raeburn@raeburn.org>
parents: 39812
diff changeset
6368 XSETCDR (dpyinfo->name_list_element,
579177964efa Avoid (most) uses of XCAR/XCDR as lvalues, for flexibility in experimenting
Ken Raeburn <raeburn@raeburn.org>
parents: 39812
diff changeset
6369 Fcons (Fcons (tpat, list),
579177964efa Avoid (most) uses of XCAR/XCDR as lvalues, for flexibility in experimenting
Ken Raeburn <raeburn@raeburn.org>
parents: 39812
diff changeset
6370 XCDR (dpyinfo->name_list_element)));
23506
246a14f0622f (Vx_pixel_size_width): New global variable.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23407
diff changeset
6371
246a14f0622f (Vx_pixel_size_width): New global variable.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23407
diff changeset
6372 label_cached:
246a14f0622f (Vx_pixel_size_width): New global variable.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23407
diff changeset
6373 if (NILP (list)) continue; /* Try the remaining alternatives. */
246a14f0622f (Vx_pixel_size_width): New global variable.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23407
diff changeset
6374
246a14f0622f (Vx_pixel_size_width): New global variable.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23407
diff changeset
6375 newlist = second_best = Qnil;
246a14f0622f (Vx_pixel_size_width): New global variable.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23407
diff changeset
6376
47942
080b4586492b Fix typo in comment.
Juanma Barranquero <lekktu@gmail.com>
parents: 47731
diff changeset
6377 /* Make a list of the fonts that have the right width. */
25646
9154af188477 Use XCAR and XCDR instead of explicit member references.
Ken Raeburn <raeburn@raeburn.org>
parents: 25289
diff changeset
6378 for (; CONSP (list); list = XCDR (list))
23506
246a14f0622f (Vx_pixel_size_width): New global variable.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23407
diff changeset
6379 {
246a14f0622f (Vx_pixel_size_width): New global variable.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23407
diff changeset
6380 int found_size;
25646
9154af188477 Use XCAR and XCDR instead of explicit member references.
Ken Raeburn <raeburn@raeburn.org>
parents: 25289
diff changeset
6381 tem = XCAR (list);
23506
246a14f0622f (Vx_pixel_size_width): New global variable.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23407
diff changeset
6382
246a14f0622f (Vx_pixel_size_width): New global variable.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23407
diff changeset
6383 if (!CONSP (tem))
246a14f0622f (Vx_pixel_size_width): New global variable.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23407
diff changeset
6384 continue;
25646
9154af188477 Use XCAR and XCDR instead of explicit member references.
Ken Raeburn <raeburn@raeburn.org>
parents: 25289
diff changeset
6385 if (NILP (XCAR (tem)))
23506
246a14f0622f (Vx_pixel_size_width): New global variable.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23407
diff changeset
6386 continue;
246a14f0622f (Vx_pixel_size_width): New global variable.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23407
diff changeset
6387 if (!size)
246a14f0622f (Vx_pixel_size_width): New global variable.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23407
diff changeset
6388 {
25646
9154af188477 Use XCAR and XCDR instead of explicit member references.
Ken Raeburn <raeburn@raeburn.org>
parents: 25289
diff changeset
6389 newlist = Fcons (XCAR (tem), newlist);
24214
4fb0bce809bc (w32_load_system_font): Do not load unlisted fonts if
Geoff Voelker <voelker@cs.washington.edu>
parents: 24211
diff changeset
6390 n_fonts++;
49812
15e797b18d7f (w32_list_bdf_fonts, w32_list_fonts): Negative
Jason Rumney <jasonr@gnu.org>
parents: 49600
diff changeset
6391 if (maxnames >= 0 && n_fonts >= maxnames)
24214
4fb0bce809bc (w32_load_system_font): Do not load unlisted fonts if
Geoff Voelker <voelker@cs.washington.edu>
parents: 24211
diff changeset
6392 break;
4fb0bce809bc (w32_load_system_font): Do not load unlisted fonts if
Geoff Voelker <voelker@cs.washington.edu>
parents: 24211
diff changeset
6393 else
4fb0bce809bc (w32_load_system_font): Do not load unlisted fonts if
Geoff Voelker <voelker@cs.washington.edu>
parents: 24211
diff changeset
6394 continue;
23506
246a14f0622f (Vx_pixel_size_width): New global variable.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23407
diff changeset
6395 }
25646
9154af188477 Use XCAR and XCDR instead of explicit member references.
Ken Raeburn <raeburn@raeburn.org>
parents: 25289
diff changeset
6396 if (!INTEGERP (XCDR (tem)))
23506
246a14f0622f (Vx_pixel_size_width): New global variable.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23407
diff changeset
6397 {
246a14f0622f (Vx_pixel_size_width): New global variable.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23407
diff changeset
6398 /* Since we don't yet know the size of the font, we must
246a14f0622f (Vx_pixel_size_width): New global variable.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23407
diff changeset
6399 load it and try GetTextMetrics. */
246a14f0622f (Vx_pixel_size_width): New global variable.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23407
diff changeset
6400 W32FontStruct thisinfo;
246a14f0622f (Vx_pixel_size_width): New global variable.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23407
diff changeset
6401 LOGFONT lf;
246a14f0622f (Vx_pixel_size_width): New global variable.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23407
diff changeset
6402 HDC hdc;
246a14f0622f (Vx_pixel_size_width): New global variable.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23407
diff changeset
6403 HANDLE oldobj;
246a14f0622f (Vx_pixel_size_width): New global variable.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23407
diff changeset
6404
46370
40db0673e6f0 Most uses of XSTRING combined with STRING_BYTES or indirection changed to
Ken Raeburn <raeburn@raeburn.org>
parents: 46293
diff changeset
6405 if (!x_to_w32_font (SDATA (XCAR (tem)), &lf))
23506
246a14f0622f (Vx_pixel_size_width): New global variable.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23407
diff changeset
6406 continue;
246a14f0622f (Vx_pixel_size_width): New global variable.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23407
diff changeset
6407
246a14f0622f (Vx_pixel_size_width): New global variable.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23407
diff changeset
6408 BLOCK_INPUT;
24147
c83b0bc4e8b9 (Vw32_bdf_filename_alist): New variable.
Geoff Voelker <voelker@cs.washington.edu>
parents: 24130
diff changeset
6409 thisinfo.bdf = NULL;
23506
246a14f0622f (Vx_pixel_size_width): New global variable.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23407
diff changeset
6410 thisinfo.hfont = CreateFontIndirect (&lf);
246a14f0622f (Vx_pixel_size_width): New global variable.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23407
diff changeset
6411 if (thisinfo.hfont == NULL)
246a14f0622f (Vx_pixel_size_width): New global variable.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23407
diff changeset
6412 continue;
246a14f0622f (Vx_pixel_size_width): New global variable.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23407
diff changeset
6413
246a14f0622f (Vx_pixel_size_width): New global variable.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23407
diff changeset
6414 hdc = GetDC (dpyinfo->root_window);
246a14f0622f (Vx_pixel_size_width): New global variable.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23407
diff changeset
6415 oldobj = SelectObject (hdc, thisinfo.hfont);
246a14f0622f (Vx_pixel_size_width): New global variable.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23407
diff changeset
6416 if (GetTextMetrics (hdc, &thisinfo.tm))
90899
f9569f59a835 (w32_load_system_font, w32_list_fonts): Use FONT_AVG_WIDTH.
Jason Rumney <jasonr@gnu.org>
parents: 90893
diff changeset
6417 XSETCDR (tem, make_number (FONT_AVG_WIDTH (&thisinfo)));
23506
246a14f0622f (Vx_pixel_size_width): New global variable.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23407
diff changeset
6418 else
39973
579177964efa Avoid (most) uses of XCAR/XCDR as lvalues, for flexibility in experimenting
Ken Raeburn <raeburn@raeburn.org>
parents: 39812
diff changeset
6419 XSETCDR (tem, make_number (0));
23506
246a14f0622f (Vx_pixel_size_width): New global variable.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23407
diff changeset
6420 SelectObject (hdc, oldobj);
246a14f0622f (Vx_pixel_size_width): New global variable.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23407
diff changeset
6421 ReleaseDC (dpyinfo->root_window, hdc);
79387
0ca197abc593 (Fw32_registered_hot_keys): Don't return the nil values corresponding
Juanma Barranquero <lekktu@gmail.com>
parents: 79381
diff changeset
6422 DeleteObject (thisinfo.hfont);
23506
246a14f0622f (Vx_pixel_size_width): New global variable.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23407
diff changeset
6423 UNBLOCK_INPUT;
246a14f0622f (Vx_pixel_size_width): New global variable.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23407
diff changeset
6424 }
25646
9154af188477 Use XCAR and XCDR instead of explicit member references.
Ken Raeburn <raeburn@raeburn.org>
parents: 25289
diff changeset
6425 found_size = XINT (XCDR (tem));
23506
246a14f0622f (Vx_pixel_size_width): New global variable.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23407
diff changeset
6426 if (found_size == size)
24214
4fb0bce809bc (w32_load_system_font): Do not load unlisted fonts if
Geoff Voelker <voelker@cs.washington.edu>
parents: 24211
diff changeset
6427 {
25646
9154af188477 Use XCAR and XCDR instead of explicit member references.
Ken Raeburn <raeburn@raeburn.org>
parents: 25289
diff changeset
6428 newlist = Fcons (XCAR (tem), newlist);
24214
4fb0bce809bc (w32_load_system_font): Do not load unlisted fonts if
Geoff Voelker <voelker@cs.washington.edu>
parents: 24211
diff changeset
6429 n_fonts++;
49812
15e797b18d7f (w32_list_bdf_fonts, w32_list_fonts): Negative
Jason Rumney <jasonr@gnu.org>
parents: 49600
diff changeset
6430 if (maxnames >= 0 && n_fonts >= maxnames)
24214
4fb0bce809bc (w32_load_system_font): Do not load unlisted fonts if
Geoff Voelker <voelker@cs.washington.edu>
parents: 24211
diff changeset
6431 break;
4fb0bce809bc (w32_load_system_font): Do not load unlisted fonts if
Geoff Voelker <voelker@cs.washington.edu>
parents: 24211
diff changeset
6432 }
23506
246a14f0622f (Vx_pixel_size_width): New global variable.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23407
diff changeset
6433 /* keep track of the closest matching size in case
246a14f0622f (Vx_pixel_size_width): New global variable.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23407
diff changeset
6434 no exact match is found. */
246a14f0622f (Vx_pixel_size_width): New global variable.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23407
diff changeset
6435 else if (found_size > 0)
246a14f0622f (Vx_pixel_size_width): New global variable.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23407
diff changeset
6436 {
246a14f0622f (Vx_pixel_size_width): New global variable.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23407
diff changeset
6437 if (NILP (second_best))
246a14f0622f (Vx_pixel_size_width): New global variable.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23407
diff changeset
6438 second_best = tem;
47942
080b4586492b Fix typo in comment.
Juanma Barranquero <lekktu@gmail.com>
parents: 47731
diff changeset
6439
23506
246a14f0622f (Vx_pixel_size_width): New global variable.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23407
diff changeset
6440 else if (found_size < size)
246a14f0622f (Vx_pixel_size_width): New global variable.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23407
diff changeset
6441 {
25646
9154af188477 Use XCAR and XCDR instead of explicit member references.
Ken Raeburn <raeburn@raeburn.org>
parents: 25289
diff changeset
6442 if (XINT (XCDR (second_best)) > size
9154af188477 Use XCAR and XCDR instead of explicit member references.
Ken Raeburn <raeburn@raeburn.org>
parents: 25289
diff changeset
6443 || XINT (XCDR (second_best)) < found_size)
23506
246a14f0622f (Vx_pixel_size_width): New global variable.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23407
diff changeset
6444 second_best = tem;
246a14f0622f (Vx_pixel_size_width): New global variable.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23407
diff changeset
6445 }
246a14f0622f (Vx_pixel_size_width): New global variable.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23407
diff changeset
6446 else
246a14f0622f (Vx_pixel_size_width): New global variable.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23407
diff changeset
6447 {
25646
9154af188477 Use XCAR and XCDR instead of explicit member references.
Ken Raeburn <raeburn@raeburn.org>
parents: 25289
diff changeset
6448 if (XINT (XCDR (second_best)) > size
9154af188477 Use XCAR and XCDR instead of explicit member references.
Ken Raeburn <raeburn@raeburn.org>
parents: 25289
diff changeset
6449 && XINT (XCDR (second_best)) >
23506
246a14f0622f (Vx_pixel_size_width): New global variable.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23407
diff changeset
6450 found_size)
246a14f0622f (Vx_pixel_size_width): New global variable.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23407
diff changeset
6451 second_best = tem;
246a14f0622f (Vx_pixel_size_width): New global variable.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23407
diff changeset
6452 }
246a14f0622f (Vx_pixel_size_width): New global variable.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23407
diff changeset
6453 }
246a14f0622f (Vx_pixel_size_width): New global variable.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23407
diff changeset
6454 }
246a14f0622f (Vx_pixel_size_width): New global variable.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23407
diff changeset
6455
246a14f0622f (Vx_pixel_size_width): New global variable.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23407
diff changeset
6456 if (!NILP (newlist))
246a14f0622f (Vx_pixel_size_width): New global variable.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23407
diff changeset
6457 break;
246a14f0622f (Vx_pixel_size_width): New global variable.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23407
diff changeset
6458 else if (!NILP (second_best))
246a14f0622f (Vx_pixel_size_width): New global variable.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23407
diff changeset
6459 {
25646
9154af188477 Use XCAR and XCDR instead of explicit member references.
Ken Raeburn <raeburn@raeburn.org>
parents: 25289
diff changeset
6460 newlist = Fcons (XCAR (second_best), Qnil);
23506
246a14f0622f (Vx_pixel_size_width): New global variable.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23407
diff changeset
6461 break;
246a14f0622f (Vx_pixel_size_width): New global variable.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23407
diff changeset
6462 }
246a14f0622f (Vx_pixel_size_width): New global variable.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23407
diff changeset
6463 }
246a14f0622f (Vx_pixel_size_width): New global variable.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23407
diff changeset
6464
24147
c83b0bc4e8b9 (Vw32_bdf_filename_alist): New variable.
Geoff Voelker <voelker@cs.washington.edu>
parents: 24130
diff changeset
6465 /* Include any bdf fonts. */
49812
15e797b18d7f (w32_list_bdf_fonts, w32_list_fonts): Negative
Jason Rumney <jasonr@gnu.org>
parents: 49600
diff changeset
6466 if (n_fonts < maxnames || maxnames < 0)
24147
c83b0bc4e8b9 (Vw32_bdf_filename_alist): New variable.
Geoff Voelker <voelker@cs.washington.edu>
parents: 24130
diff changeset
6467 {
c83b0bc4e8b9 (Vw32_bdf_filename_alist): New variable.
Geoff Voelker <voelker@cs.washington.edu>
parents: 24130
diff changeset
6468 Lisp_Object combined[2];
24214
4fb0bce809bc (w32_load_system_font): Do not load unlisted fonts if
Geoff Voelker <voelker@cs.washington.edu>
parents: 24211
diff changeset
6469 combined[0] = w32_list_bdf_fonts (pattern, maxnames - n_fonts);
24147
c83b0bc4e8b9 (Vw32_bdf_filename_alist): New variable.
Geoff Voelker <voelker@cs.washington.edu>
parents: 24130
diff changeset
6470 combined[1] = newlist;
79387
0ca197abc593 (Fw32_registered_hot_keys): Don't return the nil values corresponding
Juanma Barranquero <lekktu@gmail.com>
parents: 79381
diff changeset
6471 newlist = Fnconc (2, combined);
24147
c83b0bc4e8b9 (Vw32_bdf_filename_alist): New variable.
Geoff Voelker <voelker@cs.washington.edu>
parents: 24130
diff changeset
6472 }
c83b0bc4e8b9 (Vw32_bdf_filename_alist): New variable.
Geoff Voelker <voelker@cs.washington.edu>
parents: 24130
diff changeset
6473
23506
246a14f0622f (Vx_pixel_size_width): New global variable.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23407
diff changeset
6474 return newlist;
246a14f0622f (Vx_pixel_size_width): New global variable.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23407
diff changeset
6475 }
246a14f0622f (Vx_pixel_size_width): New global variable.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23407
diff changeset
6476
24214
4fb0bce809bc (w32_load_system_font): Do not load unlisted fonts if
Geoff Voelker <voelker@cs.washington.edu>
parents: 24211
diff changeset
6477
23506
246a14f0622f (Vx_pixel_size_width): New global variable.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23407
diff changeset
6478 /* Return a pointer to struct font_info of font FONT_IDX of frame F. */
246a14f0622f (Vx_pixel_size_width): New global variable.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23407
diff changeset
6479 struct font_info *
246a14f0622f (Vx_pixel_size_width): New global variable.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23407
diff changeset
6480 w32_get_font_info (f, font_idx)
246a14f0622f (Vx_pixel_size_width): New global variable.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23407
diff changeset
6481 FRAME_PTR f;
246a14f0622f (Vx_pixel_size_width): New global variable.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23407
diff changeset
6482 int font_idx;
246a14f0622f (Vx_pixel_size_width): New global variable.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23407
diff changeset
6483 {
246a14f0622f (Vx_pixel_size_width): New global variable.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23407
diff changeset
6484 return (FRAME_W32_FONT_TABLE (f) + font_idx);
246a14f0622f (Vx_pixel_size_width): New global variable.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23407
diff changeset
6485 }
246a14f0622f (Vx_pixel_size_width): New global variable.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23407
diff changeset
6486
246a14f0622f (Vx_pixel_size_width): New global variable.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23407
diff changeset
6487
246a14f0622f (Vx_pixel_size_width): New global variable.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23407
diff changeset
6488 struct font_info*
246a14f0622f (Vx_pixel_size_width): New global variable.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23407
diff changeset
6489 w32_query_font (struct frame *f, char *fontname)
246a14f0622f (Vx_pixel_size_width): New global variable.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23407
diff changeset
6490 {
246a14f0622f (Vx_pixel_size_width): New global variable.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23407
diff changeset
6491 int i;
246a14f0622f (Vx_pixel_size_width): New global variable.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23407
diff changeset
6492 struct font_info *pfi;
246a14f0622f (Vx_pixel_size_width): New global variable.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23407
diff changeset
6493
246a14f0622f (Vx_pixel_size_width): New global variable.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23407
diff changeset
6494 pfi = FRAME_W32_FONT_TABLE (f);
246a14f0622f (Vx_pixel_size_width): New global variable.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23407
diff changeset
6495
246a14f0622f (Vx_pixel_size_width): New global variable.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23407
diff changeset
6496 for (i = 0; i < one_w32_display_info.n_fonts ;i++, pfi++)
246a14f0622f (Vx_pixel_size_width): New global variable.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23407
diff changeset
6497 {
95218
0f6fa3ec70b6 * dispextern.h, xfaces.c (xstrcasecmp): Renamed from xstricmp.
Jason Rumney <jasonr@gnu.org>
parents: 95162
diff changeset
6498 if (xstrcasecmp (pfi->name, fontname) == 0) return pfi;
23506
246a14f0622f (Vx_pixel_size_width): New global variable.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23407
diff changeset
6499 }
246a14f0622f (Vx_pixel_size_width): New global variable.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23407
diff changeset
6500
246a14f0622f (Vx_pixel_size_width): New global variable.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23407
diff changeset
6501 return NULL;
246a14f0622f (Vx_pixel_size_width): New global variable.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23407
diff changeset
6502 }
246a14f0622f (Vx_pixel_size_width): New global variable.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23407
diff changeset
6503
246a14f0622f (Vx_pixel_size_width): New global variable.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23407
diff changeset
6504 /* Find a CCL program for a font specified by FONTP, and set the member
246a14f0622f (Vx_pixel_size_width): New global variable.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23407
diff changeset
6505 `encoder' of the structure. */
246a14f0622f (Vx_pixel_size_width): New global variable.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23407
diff changeset
6506
246a14f0622f (Vx_pixel_size_width): New global variable.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23407
diff changeset
6507 void
246a14f0622f (Vx_pixel_size_width): New global variable.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23407
diff changeset
6508 w32_find_ccl_program (fontp)
246a14f0622f (Vx_pixel_size_width): New global variable.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23407
diff changeset
6509 struct font_info *fontp;
246a14f0622f (Vx_pixel_size_width): New global variable.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23407
diff changeset
6510 {
25069
ee9bfbc340ba (w32_find_ccl_program): Get compiled CCL code by just
Kenichi Handa <handa@m17n.org>
parents: 24856
diff changeset
6511 Lisp_Object list, elt;
23506
246a14f0622f (Vx_pixel_size_width): New global variable.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23407
diff changeset
6512
25646
9154af188477 Use XCAR and XCDR instead of explicit member references.
Ken Raeburn <raeburn@raeburn.org>
parents: 25289
diff changeset
6513 for (list = Vfont_ccl_encoder_alist; CONSP (list); list = XCDR (list))
23506
246a14f0622f (Vx_pixel_size_width): New global variable.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23407
diff changeset
6514 {
25646
9154af188477 Use XCAR and XCDR instead of explicit member references.
Ken Raeburn <raeburn@raeburn.org>
parents: 25289
diff changeset
6515 elt = XCAR (list);
23506
246a14f0622f (Vx_pixel_size_width): New global variable.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23407
diff changeset
6516 if (CONSP (elt)
25646
9154af188477 Use XCAR and XCDR instead of explicit member references.
Ken Raeburn <raeburn@raeburn.org>
parents: 25289
diff changeset
6517 && STRINGP (XCAR (elt))
9154af188477 Use XCAR and XCDR instead of explicit member references.
Ken Raeburn <raeburn@raeburn.org>
parents: 25289
diff changeset
6518 && (fast_c_string_match_ignore_case (XCAR (elt), fontp->name)
23506
246a14f0622f (Vx_pixel_size_width): New global variable.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23407
diff changeset
6519 >= 0))
25069
ee9bfbc340ba (w32_find_ccl_program): Get compiled CCL code by just
Kenichi Handa <handa@m17n.org>
parents: 24856
diff changeset
6520 break;
ee9bfbc340ba (w32_find_ccl_program): Get compiled CCL code by just
Kenichi Handa <handa@m17n.org>
parents: 24856
diff changeset
6521 }
ee9bfbc340ba (w32_find_ccl_program): Get compiled CCL code by just
Kenichi Handa <handa@m17n.org>
parents: 24856
diff changeset
6522 if (! NILP (list))
ee9bfbc340ba (w32_find_ccl_program): Get compiled CCL code by just
Kenichi Handa <handa@m17n.org>
parents: 24856
diff changeset
6523 {
25084
d89aa269255d (w32_find_ccl_program): Add casting.
Kenichi Handa <handa@m17n.org>
parents: 25069
diff changeset
6524 struct ccl_program *ccl
d89aa269255d (w32_find_ccl_program): Add casting.
Kenichi Handa <handa@m17n.org>
parents: 25069
diff changeset
6525 = (struct ccl_program *) xmalloc (sizeof (struct ccl_program));
25069
ee9bfbc340ba (w32_find_ccl_program): Get compiled CCL code by just
Kenichi Handa <handa@m17n.org>
parents: 24856
diff changeset
6526
25646
9154af188477 Use XCAR and XCDR instead of explicit member references.
Ken Raeburn <raeburn@raeburn.org>
parents: 25289
diff changeset
6527 if (setup_ccl_program (ccl, XCDR (elt)) < 0)
25069
ee9bfbc340ba (w32_find_ccl_program): Get compiled CCL code by just
Kenichi Handa <handa@m17n.org>
parents: 24856
diff changeset
6528 xfree (ccl);
ee9bfbc340ba (w32_find_ccl_program): Get compiled CCL code by just
Kenichi Handa <handa@m17n.org>
parents: 24856
diff changeset
6529 else
ee9bfbc340ba (w32_find_ccl_program): Get compiled CCL code by just
Kenichi Handa <handa@m17n.org>
parents: 24856
diff changeset
6530 fontp->font_encoder = ccl;
23506
246a14f0622f (Vx_pixel_size_width): New global variable.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23407
diff changeset
6531 }
246a14f0622f (Vx_pixel_size_width): New global variable.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23407
diff changeset
6532 }
246a14f0622f (Vx_pixel_size_width): New global variable.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23407
diff changeset
6533
94917
e61553aa7a73 Throughout the file, delete all USE_FONT_BACKEND
Kenichi Handa <handa@m17n.org>
parents: 94618
diff changeset
6534 #endif /* OLD_FONT */
e61553aa7a73 Throughout the file, delete all USE_FONT_BACKEND
Kenichi Handa <handa@m17n.org>
parents: 94618
diff changeset
6535
55656
29b250a07fe0 (Fw32_register_hot_key, Fw32_unregister_hot_key)
Jason Rumney <jasonr@gnu.org>
parents: 55592
diff changeset
6536 /* directory-files from dired.c. */
79387
0ca197abc593 (Fw32_registered_hot_keys): Don't return the nil values corresponding
Juanma Barranquero <lekktu@gmail.com>
parents: 79381
diff changeset
6537 Lisp_Object Fdirectory_files P_ ((Lisp_Object, Lisp_Object, Lisp_Object, Lisp_Object));
55656
29b250a07fe0 (Fw32_register_hot_key, Fw32_unregister_hot_key)
Jason Rumney <jasonr@gnu.org>
parents: 55592
diff changeset
6538
23506
246a14f0622f (Vx_pixel_size_width): New global variable.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23407
diff changeset
6539
94917
e61553aa7a73 Throughout the file, delete all USE_FONT_BACKEND
Kenichi Handa <handa@m17n.org>
parents: 94618
diff changeset
6540 #if OLD_FONT
e61553aa7a73 Throughout the file, delete all USE_FONT_BACKEND
Kenichi Handa <handa@m17n.org>
parents: 94618
diff changeset
6541
35288
912ea0b8e09b (x_to_w32_color, x_set_icon_name, xlfd_strip_height)
Jason Rumney <jasonr@gnu.org>
parents: 34998
diff changeset
6542 /* Find BDF files in a specified directory. (use GCPRO when calling,
912ea0b8e09b (x_to_w32_color, x_set_icon_name, xlfd_strip_height)
Jason Rumney <jasonr@gnu.org>
parents: 34998
diff changeset
6543 as this calls lisp to get a directory listing). */
912ea0b8e09b (x_to_w32_color, x_set_icon_name, xlfd_strip_height)
Jason Rumney <jasonr@gnu.org>
parents: 34998
diff changeset
6544 static Lisp_Object
912ea0b8e09b (x_to_w32_color, x_set_icon_name, xlfd_strip_height)
Jason Rumney <jasonr@gnu.org>
parents: 34998
diff changeset
6545 w32_find_bdf_fonts_in_dir (Lisp_Object directory)
912ea0b8e09b (x_to_w32_color, x_set_icon_name, xlfd_strip_height)
Jason Rumney <jasonr@gnu.org>
parents: 34998
diff changeset
6546 {
912ea0b8e09b (x_to_w32_color, x_set_icon_name, xlfd_strip_height)
Jason Rumney <jasonr@gnu.org>
parents: 34998
diff changeset
6547 Lisp_Object filelist, list = Qnil;
912ea0b8e09b (x_to_w32_color, x_set_icon_name, xlfd_strip_height)
Jason Rumney <jasonr@gnu.org>
parents: 34998
diff changeset
6548 char fontname[100];
912ea0b8e09b (x_to_w32_color, x_set_icon_name, xlfd_strip_height)
Jason Rumney <jasonr@gnu.org>
parents: 34998
diff changeset
6549
79387
0ca197abc593 (Fw32_registered_hot_keys): Don't return the nil values corresponding
Juanma Barranquero <lekktu@gmail.com>
parents: 79381
diff changeset
6550 if (!STRINGP (directory))
35288
912ea0b8e09b (x_to_w32_color, x_set_icon_name, xlfd_strip_height)
Jason Rumney <jasonr@gnu.org>
parents: 34998
diff changeset
6551 return Qnil;
912ea0b8e09b (x_to_w32_color, x_set_icon_name, xlfd_strip_height)
Jason Rumney <jasonr@gnu.org>
parents: 34998
diff changeset
6552
912ea0b8e09b (x_to_w32_color, x_set_icon_name, xlfd_strip_height)
Jason Rumney <jasonr@gnu.org>
parents: 34998
diff changeset
6553 filelist = Fdirectory_files (directory, Qt,
55656
29b250a07fe0 (Fw32_register_hot_key, Fw32_unregister_hot_key)
Jason Rumney <jasonr@gnu.org>
parents: 55592
diff changeset
6554 build_string (".*\\.[bB][dD][fF]"), Qt);
35288
912ea0b8e09b (x_to_w32_color, x_set_icon_name, xlfd_strip_height)
Jason Rumney <jasonr@gnu.org>
parents: 34998
diff changeset
6555
79387
0ca197abc593 (Fw32_registered_hot_keys): Don't return the nil values corresponding
Juanma Barranquero <lekktu@gmail.com>
parents: 79381
diff changeset
6556 for ( ; CONSP (filelist); filelist = XCDR (filelist))
35288
912ea0b8e09b (x_to_w32_color, x_set_icon_name, xlfd_strip_height)
Jason Rumney <jasonr@gnu.org>
parents: 34998
diff changeset
6557 {
912ea0b8e09b (x_to_w32_color, x_set_icon_name, xlfd_strip_height)
Jason Rumney <jasonr@gnu.org>
parents: 34998
diff changeset
6558 Lisp_Object filename = XCAR (filelist);
46370
40db0673e6f0 Most uses of XSTRING combined with STRING_BYTES or indirection changed to
Ken Raeburn <raeburn@raeburn.org>
parents: 46293
diff changeset
6559 if (w32_BDF_to_x_font (SDATA (filename), fontname, 100))
35288
912ea0b8e09b (x_to_w32_color, x_set_icon_name, xlfd_strip_height)
Jason Rumney <jasonr@gnu.org>
parents: 34998
diff changeset
6560 store_in_alist (&list, build_string (fontname), filename);
912ea0b8e09b (x_to_w32_color, x_set_icon_name, xlfd_strip_height)
Jason Rumney <jasonr@gnu.org>
parents: 34998
diff changeset
6561 }
912ea0b8e09b (x_to_w32_color, x_set_icon_name, xlfd_strip_height)
Jason Rumney <jasonr@gnu.org>
parents: 34998
diff changeset
6562 return list;
912ea0b8e09b (x_to_w32_color, x_set_icon_name, xlfd_strip_height)
Jason Rumney <jasonr@gnu.org>
parents: 34998
diff changeset
6563 }
912ea0b8e09b (x_to_w32_color, x_set_icon_name, xlfd_strip_height)
Jason Rumney <jasonr@gnu.org>
parents: 34998
diff changeset
6564
24147
c83b0bc4e8b9 (Vw32_bdf_filename_alist): New variable.
Geoff Voelker <voelker@cs.washington.edu>
parents: 24130
diff changeset
6565 DEFUN ("w32-find-bdf-fonts", Fw32_find_bdf_fonts, Sw32_find_bdf_fonts,
c83b0bc4e8b9 (Vw32_bdf_filename_alist): New variable.
Geoff Voelker <voelker@cs.washington.edu>
parents: 24130
diff changeset
6566 1, 1, 0,
55892
c12c7852c322 (Fx_display_grayscale_p, Fw32_send_sys_command, Vw32_color_map):
Juanma Barranquero <lekktu@gmail.com>
parents: 55673
diff changeset
6567 doc: /* Return a list of BDF fonts in DIRECTORY.
c12c7852c322 (Fx_display_grayscale_p, Fw32_send_sys_command, Vw32_color_map):
Juanma Barranquero <lekktu@gmail.com>
parents: 55673
diff changeset
6568 The list is suitable for appending to `w32-bdf-filename-alist'.
c12c7852c322 (Fx_display_grayscale_p, Fw32_send_sys_command, Vw32_color_map):
Juanma Barranquero <lekktu@gmail.com>
parents: 55673
diff changeset
6569 Fonts which do not contain an xlfd description will not be included
c12c7852c322 (Fx_display_grayscale_p, Fw32_send_sys_command, Vw32_color_map):
Juanma Barranquero <lekktu@gmail.com>
parents: 55673
diff changeset
6570 in the list. DIRECTORY may be a list of directories. */)
24147
c83b0bc4e8b9 (Vw32_bdf_filename_alist): New variable.
Geoff Voelker <voelker@cs.washington.edu>
parents: 24130
diff changeset
6571 (directory)
c83b0bc4e8b9 (Vw32_bdf_filename_alist): New variable.
Geoff Voelker <voelker@cs.washington.edu>
parents: 24130
diff changeset
6572 Lisp_Object directory;
c83b0bc4e8b9 (Vw32_bdf_filename_alist): New variable.
Geoff Voelker <voelker@cs.washington.edu>
parents: 24130
diff changeset
6573 {
c83b0bc4e8b9 (Vw32_bdf_filename_alist): New variable.
Geoff Voelker <voelker@cs.washington.edu>
parents: 24130
diff changeset
6574 Lisp_Object list = Qnil;
c83b0bc4e8b9 (Vw32_bdf_filename_alist): New variable.
Geoff Voelker <voelker@cs.washington.edu>
parents: 24130
diff changeset
6575 struct gcpro gcpro1, gcpro2;
c83b0bc4e8b9 (Vw32_bdf_filename_alist): New variable.
Geoff Voelker <voelker@cs.washington.edu>
parents: 24130
diff changeset
6576
c83b0bc4e8b9 (Vw32_bdf_filename_alist): New variable.
Geoff Voelker <voelker@cs.washington.edu>
parents: 24130
diff changeset
6577 if (!CONSP (directory))
c83b0bc4e8b9 (Vw32_bdf_filename_alist): New variable.
Geoff Voelker <voelker@cs.washington.edu>
parents: 24130
diff changeset
6578 return w32_find_bdf_fonts_in_dir (directory);
c83b0bc4e8b9 (Vw32_bdf_filename_alist): New variable.
Geoff Voelker <voelker@cs.washington.edu>
parents: 24130
diff changeset
6579
25646
9154af188477 Use XCAR and XCDR instead of explicit member references.
Ken Raeburn <raeburn@raeburn.org>
parents: 25289
diff changeset
6580 for ( ; CONSP (directory); directory = XCDR (directory))
24147
c83b0bc4e8b9 (Vw32_bdf_filename_alist): New variable.
Geoff Voelker <voelker@cs.washington.edu>
parents: 24130
diff changeset
6581 {
c83b0bc4e8b9 (Vw32_bdf_filename_alist): New variable.
Geoff Voelker <voelker@cs.washington.edu>
parents: 24130
diff changeset
6582 Lisp_Object pair[2];
c83b0bc4e8b9 (Vw32_bdf_filename_alist): New variable.
Geoff Voelker <voelker@cs.washington.edu>
parents: 24130
diff changeset
6583 pair[0] = list;
c83b0bc4e8b9 (Vw32_bdf_filename_alist): New variable.
Geoff Voelker <voelker@cs.washington.edu>
parents: 24130
diff changeset
6584 pair[1] = Qnil;
c83b0bc4e8b9 (Vw32_bdf_filename_alist): New variable.
Geoff Voelker <voelker@cs.washington.edu>
parents: 24130
diff changeset
6585 GCPRO2 (directory, list);
79387
0ca197abc593 (Fw32_registered_hot_keys): Don't return the nil values corresponding
Juanma Barranquero <lekktu@gmail.com>
parents: 79381
diff changeset
6586 pair[1] = w32_find_bdf_fonts_in_dir ( XCAR (directory) );
0ca197abc593 (Fw32_registered_hot_keys): Don't return the nil values corresponding
Juanma Barranquero <lekktu@gmail.com>
parents: 79381
diff changeset
6587 list = Fnconc ( 2, pair );
24147
c83b0bc4e8b9 (Vw32_bdf_filename_alist): New variable.
Geoff Voelker <voelker@cs.washington.edu>
parents: 24130
diff changeset
6588 UNGCPRO;
c83b0bc4e8b9 (Vw32_bdf_filename_alist): New variable.
Geoff Voelker <voelker@cs.washington.edu>
parents: 24130
diff changeset
6589 }
c83b0bc4e8b9 (Vw32_bdf_filename_alist): New variable.
Geoff Voelker <voelker@cs.washington.edu>
parents: 24130
diff changeset
6590 return list;
c83b0bc4e8b9 (Vw32_bdf_filename_alist): New variable.
Geoff Voelker <voelker@cs.washington.edu>
parents: 24130
diff changeset
6591 }
94917
e61553aa7a73 Throughout the file, delete all USE_FONT_BACKEND
Kenichi Handa <handa@m17n.org>
parents: 94618
diff changeset
6592 #endif /* OLD_FONT */
24147
c83b0bc4e8b9 (Vw32_bdf_filename_alist): New variable.
Geoff Voelker <voelker@cs.washington.edu>
parents: 24130
diff changeset
6593
c83b0bc4e8b9 (Vw32_bdf_filename_alist): New variable.
Geoff Voelker <voelker@cs.washington.edu>
parents: 24130
diff changeset
6594
26729
f5dded41adcc Changes for automatic remapping of X colors on terminal frames:
Eli Zaretskii <eliz@gnu.org>
parents: 25646
diff changeset
6595 DEFUN ("xw-color-defined-p", Fxw_color_defined_p, Sxw_color_defined_p, 1, 2, 0,
40964
fb970d0c56eb Change doc-string comments to `new style'. [w/`doc:' keyword]. Doc fixes.
Jason Rumney <jasonr@gnu.org>
parents: 40873
diff changeset
6596 doc: /* Internal function called by `color-defined-p', which see. */)
13434
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
6597 (color, frame)
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
6598 Lisp_Object color, frame;
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
6599 {
27397
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
6600 XColor foo;
13434
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
6601 FRAME_PTR f = check_x_frame (frame);
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
6602
40656
cdfd4d09b79a Update usage of CHECK_ macros (remove unused second argument).
Pavel Janík <Pavel@Janik.cz>
parents: 40528
diff changeset
6603 CHECK_STRING (color);
13434
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
6604
46370
40db0673e6f0 Most uses of XSTRING combined with STRING_BYTES or indirection changed to
Ken Raeburn <raeburn@raeburn.org>
parents: 46293
diff changeset
6605 if (w32_defined_color (f, SDATA (color), &foo, 0))
13434
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
6606 return Qt;
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
6607 else
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
6608 return Qnil;
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
6609 }
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
6610
26729
f5dded41adcc Changes for automatic remapping of X colors on terminal frames:
Eli Zaretskii <eliz@gnu.org>
parents: 25646
diff changeset
6611 DEFUN ("xw-color-values", Fxw_color_values, Sxw_color_values, 1, 2, 0,
40964
fb970d0c56eb Change doc-string comments to `new style'. [w/`doc:' keyword]. Doc fixes.
Jason Rumney <jasonr@gnu.org>
parents: 40873
diff changeset
6612 doc: /* Internal function called by `color-values', which see. */)
13434
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
6613 (color, frame)
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
6614 Lisp_Object color, frame;
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
6615 {
27397
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
6616 XColor foo;
13434
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
6617 FRAME_PTR f = check_x_frame (frame);
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
6618
40656
cdfd4d09b79a Update usage of CHECK_ macros (remove unused second argument).
Pavel Janík <Pavel@Janik.cz>
parents: 40528
diff changeset
6619 CHECK_STRING (color);
13434
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
6620
46370
40db0673e6f0 Most uses of XSTRING combined with STRING_BYTES or indirection changed to
Ken Raeburn <raeburn@raeburn.org>
parents: 46293
diff changeset
6621 if (w32_defined_color (f, SDATA (color), &foo, 0))
72529
892ea79efee6 (Fxw_color_values): Simplify; use list3.
Kim F. Storm <storm@cua.dk>
parents: 72274
diff changeset
6622 return list3 (make_number ((GetRValue (foo.pixel) << 8)
892ea79efee6 (Fxw_color_values): Simplify; use list3.
Kim F. Storm <storm@cua.dk>
parents: 72274
diff changeset
6623 | GetRValue (foo.pixel)),
892ea79efee6 (Fxw_color_values): Simplify; use list3.
Kim F. Storm <storm@cua.dk>
parents: 72274
diff changeset
6624 make_number ((GetGValue (foo.pixel) << 8)
892ea79efee6 (Fxw_color_values): Simplify; use list3.
Kim F. Storm <storm@cua.dk>
parents: 72274
diff changeset
6625 | GetGValue (foo.pixel)),
892ea79efee6 (Fxw_color_values): Simplify; use list3.
Kim F. Storm <storm@cua.dk>
parents: 72274
diff changeset
6626 make_number ((GetBValue (foo.pixel) << 8)
892ea79efee6 (Fxw_color_values): Simplify; use list3.
Kim F. Storm <storm@cua.dk>
parents: 72274
diff changeset
6627 | GetBValue (foo.pixel)));
13434
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
6628 else
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
6629 return Qnil;
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
6630 }
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
6631
26729
f5dded41adcc Changes for automatic remapping of X colors on terminal frames:
Eli Zaretskii <eliz@gnu.org>
parents: 25646
diff changeset
6632 DEFUN ("xw-display-color-p", Fxw_display_color_p, Sxw_display_color_p, 0, 1, 0,
40964
fb970d0c56eb Change doc-string comments to `new style'. [w/`doc:' keyword]. Doc fixes.
Jason Rumney <jasonr@gnu.org>
parents: 40873
diff changeset
6633 doc: /* Internal function called by `display-color-p', which see. */)
13434
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
6634 (display)
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
6635 Lisp_Object display;
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
6636 {
16588
481b7874a1e9 Change identifiers of the form win32* to w32*.
Geoff Voelker <voelker@cs.washington.edu>
parents: 16259
diff changeset
6637 struct w32_display_info *dpyinfo = check_x_display_info (display);
13434
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
6638
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
6639 if ((dpyinfo->n_planes * dpyinfo->n_cbits) <= 2)
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
6640 return Qnil;
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
6641
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
6642 return Qt;
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
6643 }
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
6644
40964
fb970d0c56eb Change doc-string comments to `new style'. [w/`doc:' keyword]. Doc fixes.
Jason Rumney <jasonr@gnu.org>
parents: 40873
diff changeset
6645 DEFUN ("x-display-grayscale-p", Fx_display_grayscale_p,
fb970d0c56eb Change doc-string comments to `new style'. [w/`doc:' keyword]. Doc fixes.
Jason Rumney <jasonr@gnu.org>
parents: 40873
diff changeset
6646 Sx_display_grayscale_p, 0, 1, 0,
55892
c12c7852c322 (Fx_display_grayscale_p, Fw32_send_sys_command, Vw32_color_map):
Juanma Barranquero <lekktu@gmail.com>
parents: 55673
diff changeset
6647 doc: /* Return t if DISPLAY supports shades of gray.
40964
fb970d0c56eb Change doc-string comments to `new style'. [w/`doc:' keyword]. Doc fixes.
Jason Rumney <jasonr@gnu.org>
parents: 40873
diff changeset
6648 Note that color displays do support shades of gray.
fb970d0c56eb Change doc-string comments to `new style'. [w/`doc:' keyword]. Doc fixes.
Jason Rumney <jasonr@gnu.org>
parents: 40873
diff changeset
6649 The optional argument DISPLAY specifies which display to ask about.
fb970d0c56eb Change doc-string comments to `new style'. [w/`doc:' keyword]. Doc fixes.
Jason Rumney <jasonr@gnu.org>
parents: 40873
diff changeset
6650 DISPLAY should be either a frame or a display name (a string).
fb970d0c56eb Change doc-string comments to `new style'. [w/`doc:' keyword]. Doc fixes.
Jason Rumney <jasonr@gnu.org>
parents: 40873
diff changeset
6651 If omitted or nil, that stands for the selected frame's display. */)
13434
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
6652 (display)
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
6653 Lisp_Object display;
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
6654 {
16588
481b7874a1e9 Change identifiers of the form win32* to w32*.
Geoff Voelker <voelker@cs.washington.edu>
parents: 16259
diff changeset
6655 struct w32_display_info *dpyinfo = check_x_display_info (display);
13434
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
6656
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
6657 if ((dpyinfo->n_planes * dpyinfo->n_cbits) <= 1)
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
6658 return Qnil;
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
6659
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
6660 return Qt;
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
6661 }
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
6662
40964
fb970d0c56eb Change doc-string comments to `new style'. [w/`doc:' keyword]. Doc fixes.
Jason Rumney <jasonr@gnu.org>
parents: 40873
diff changeset
6663 DEFUN ("x-display-pixel-width", Fx_display_pixel_width,
fb970d0c56eb Change doc-string comments to `new style'. [w/`doc:' keyword]. Doc fixes.
Jason Rumney <jasonr@gnu.org>
parents: 40873
diff changeset
6664 Sx_display_pixel_width, 0, 1, 0,
79393
09f6c4242048 (Fx_create_frame, Fx_display_pixel_width, Fx_display_pixel_height,
Juanma Barranquero <lekktu@gmail.com>
parents: 79387
diff changeset
6665 doc: /* Return the width in pixels of DISPLAY.
40964
fb970d0c56eb Change doc-string comments to `new style'. [w/`doc:' keyword]. Doc fixes.
Jason Rumney <jasonr@gnu.org>
parents: 40873
diff changeset
6666 The optional argument DISPLAY specifies which display to ask about.
fb970d0c56eb Change doc-string comments to `new style'. [w/`doc:' keyword]. Doc fixes.
Jason Rumney <jasonr@gnu.org>
parents: 40873
diff changeset
6667 DISPLAY should be either a frame or a display name (a string).
fb970d0c56eb Change doc-string comments to `new style'. [w/`doc:' keyword]. Doc fixes.
Jason Rumney <jasonr@gnu.org>
parents: 40873
diff changeset
6668 If omitted or nil, that stands for the selected frame's display. */)
13434
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
6669 (display)
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
6670 Lisp_Object display;
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
6671 {
16588
481b7874a1e9 Change identifiers of the form win32* to w32*.
Geoff Voelker <voelker@cs.washington.edu>
parents: 16259
diff changeset
6672 struct w32_display_info *dpyinfo = check_x_display_info (display);
13434
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
6673
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
6674 return make_number (dpyinfo->width);
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
6675 }
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
6676
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
6677 DEFUN ("x-display-pixel-height", Fx_display_pixel_height,
40964
fb970d0c56eb Change doc-string comments to `new style'. [w/`doc:' keyword]. Doc fixes.
Jason Rumney <jasonr@gnu.org>
parents: 40873
diff changeset
6678 Sx_display_pixel_height, 0, 1, 0,
79393
09f6c4242048 (Fx_create_frame, Fx_display_pixel_width, Fx_display_pixel_height,
Juanma Barranquero <lekktu@gmail.com>
parents: 79387
diff changeset
6679 doc: /* Return the height in pixels of DISPLAY.
40964
fb970d0c56eb Change doc-string comments to `new style'. [w/`doc:' keyword]. Doc fixes.
Jason Rumney <jasonr@gnu.org>
parents: 40873
diff changeset
6680 The optional argument DISPLAY specifies which display to ask about.
fb970d0c56eb Change doc-string comments to `new style'. [w/`doc:' keyword]. Doc fixes.
Jason Rumney <jasonr@gnu.org>
parents: 40873
diff changeset
6681 DISPLAY should be either a frame or a display name (a string).
fb970d0c56eb Change doc-string comments to `new style'. [w/`doc:' keyword]. Doc fixes.
Jason Rumney <jasonr@gnu.org>
parents: 40873
diff changeset
6682 If omitted or nil, that stands for the selected frame's display. */)
13434
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
6683 (display)
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
6684 Lisp_Object display;
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
6685 {
16588
481b7874a1e9 Change identifiers of the form win32* to w32*.
Geoff Voelker <voelker@cs.washington.edu>
parents: 16259
diff changeset
6686 struct w32_display_info *dpyinfo = check_x_display_info (display);
13434
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
6687
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
6688 return make_number (dpyinfo->height);
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
6689 }
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
6690
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
6691 DEFUN ("x-display-planes", Fx_display_planes, Sx_display_planes,
40964
fb970d0c56eb Change doc-string comments to `new style'. [w/`doc:' keyword]. Doc fixes.
Jason Rumney <jasonr@gnu.org>
parents: 40873
diff changeset
6692 0, 1, 0,
79393
09f6c4242048 (Fx_create_frame, Fx_display_pixel_width, Fx_display_pixel_height,
Juanma Barranquero <lekktu@gmail.com>
parents: 79387
diff changeset
6693 doc: /* Return the number of bitplanes of DISPLAY.
40964
fb970d0c56eb Change doc-string comments to `new style'. [w/`doc:' keyword]. Doc fixes.
Jason Rumney <jasonr@gnu.org>
parents: 40873
diff changeset
6694 The optional argument DISPLAY specifies which display to ask about.
fb970d0c56eb Change doc-string comments to `new style'. [w/`doc:' keyword]. Doc fixes.
Jason Rumney <jasonr@gnu.org>
parents: 40873
diff changeset
6695 DISPLAY should be either a frame or a display name (a string).
fb970d0c56eb Change doc-string comments to `new style'. [w/`doc:' keyword]. Doc fixes.
Jason Rumney <jasonr@gnu.org>
parents: 40873
diff changeset
6696 If omitted or nil, that stands for the selected frame's display. */)
13434
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
6697 (display)
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
6698 Lisp_Object display;
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
6699 {
16588
481b7874a1e9 Change identifiers of the form win32* to w32*.
Geoff Voelker <voelker@cs.washington.edu>
parents: 16259
diff changeset
6700 struct w32_display_info *dpyinfo = check_x_display_info (display);
13434
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
6701
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
6702 return make_number (dpyinfo->n_planes * dpyinfo->n_cbits);
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
6703 }
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
6704
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
6705 DEFUN ("x-display-color-cells", Fx_display_color_cells, Sx_display_color_cells,
40964
fb970d0c56eb Change doc-string comments to `new style'. [w/`doc:' keyword]. Doc fixes.
Jason Rumney <jasonr@gnu.org>
parents: 40873
diff changeset
6706 0, 1, 0,
79393
09f6c4242048 (Fx_create_frame, Fx_display_pixel_width, Fx_display_pixel_height,
Juanma Barranquero <lekktu@gmail.com>
parents: 79387
diff changeset
6707 doc: /* Return the number of color cells of DISPLAY.
40964
fb970d0c56eb Change doc-string comments to `new style'. [w/`doc:' keyword]. Doc fixes.
Jason Rumney <jasonr@gnu.org>
parents: 40873
diff changeset
6708 The optional argument DISPLAY specifies which display to ask about.
fb970d0c56eb Change doc-string comments to `new style'. [w/`doc:' keyword]. Doc fixes.
Jason Rumney <jasonr@gnu.org>
parents: 40873
diff changeset
6709 DISPLAY should be either a frame or a display name (a string).
fb970d0c56eb Change doc-string comments to `new style'. [w/`doc:' keyword]. Doc fixes.
Jason Rumney <jasonr@gnu.org>
parents: 40873
diff changeset
6710 If omitted or nil, that stands for the selected frame's display. */)
13434
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
6711 (display)
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
6712 Lisp_Object display;
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
6713 {
16588
481b7874a1e9 Change identifiers of the form win32* to w32*.
Geoff Voelker <voelker@cs.washington.edu>
parents: 16259
diff changeset
6714 struct w32_display_info *dpyinfo = check_x_display_info (display);
13434
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
6715 HDC hdc;
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
6716 int cap;
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
6717
15147
38c0ce06203f (quit_char, Vwin32_enable_italics, Vwin32_enable_palette):
Geoff Voelker <voelker@cs.washington.edu>
parents: 15034
diff changeset
6718 hdc = GetDC (dpyinfo->root_window);
38c0ce06203f (quit_char, Vwin32_enable_italics, Vwin32_enable_palette):
Geoff Voelker <voelker@cs.washington.edu>
parents: 15034
diff changeset
6719 if (dpyinfo->has_palette)
55892
c12c7852c322 (Fx_display_grayscale_p, Fw32_send_sys_command, Vw32_color_map):
Juanma Barranquero <lekktu@gmail.com>
parents: 55673
diff changeset
6720 cap = GetDeviceCaps (hdc, SIZEPALETTE);
15147
38c0ce06203f (quit_char, Vwin32_enable_italics, Vwin32_enable_palette):
Geoff Voelker <voelker@cs.washington.edu>
parents: 15034
diff changeset
6721 else
55892
c12c7852c322 (Fx_display_grayscale_p, Fw32_send_sys_command, Vw32_color_map):
Juanma Barranquero <lekktu@gmail.com>
parents: 55673
diff changeset
6722 cap = GetDeviceCaps (hdc, NUMCOLORS);
34998
5091928844df (Fx_display_color_cells): Determine correct value, when
Andrew Innes <andrewi@gnu.org>
parents: 34942
diff changeset
6723
43773
8d3931ead0df (Fx_display_color_cells): Force 24+ bit color depths to 24-bit.
Juanma Barranquero <lekktu@gmail.com>
parents: 43484
diff changeset
6724 /* We force 24+ bit depths to 24-bit, both to prevent an overflow
8d3931ead0df (Fx_display_color_cells): Force 24+ bit color depths to 24-bit.
Juanma Barranquero <lekktu@gmail.com>
parents: 43484
diff changeset
6725 and because probably is more meaningful on Windows anyway */
34998
5091928844df (Fx_display_color_cells): Determine correct value, when
Andrew Innes <andrewi@gnu.org>
parents: 34942
diff changeset
6726 if (cap < 0)
79387
0ca197abc593 (Fw32_registered_hot_keys): Don't return the nil values corresponding
Juanma Barranquero <lekktu@gmail.com>
parents: 79381
diff changeset
6727 cap = 1 << min (dpyinfo->n_planes * dpyinfo->n_cbits, 24);
47942
080b4586492b Fix typo in comment.
Juanma Barranquero <lekktu@gmail.com>
parents: 47731
diff changeset
6728
13434
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
6729 ReleaseDC (dpyinfo->root_window, hdc);
47942
080b4586492b Fix typo in comment.
Juanma Barranquero <lekktu@gmail.com>
parents: 47731
diff changeset
6730
13434
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
6731 return make_number (cap);
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
6732 }
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
6733
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
6734 DEFUN ("x-server-max-request-size", Fx_server_max_request_size,
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
6735 Sx_server_max_request_size,
40964
fb970d0c56eb Change doc-string comments to `new style'. [w/`doc:' keyword]. Doc fixes.
Jason Rumney <jasonr@gnu.org>
parents: 40873
diff changeset
6736 0, 1, 0,
79393
09f6c4242048 (Fx_create_frame, Fx_display_pixel_width, Fx_display_pixel_height,
Juanma Barranquero <lekktu@gmail.com>
parents: 79387
diff changeset
6737 doc: /* Return the maximum request size of the server of DISPLAY.
40964
fb970d0c56eb Change doc-string comments to `new style'. [w/`doc:' keyword]. Doc fixes.
Jason Rumney <jasonr@gnu.org>
parents: 40873
diff changeset
6738 The optional argument DISPLAY specifies which display to ask about.
fb970d0c56eb Change doc-string comments to `new style'. [w/`doc:' keyword]. Doc fixes.
Jason Rumney <jasonr@gnu.org>
parents: 40873
diff changeset
6739 DISPLAY should be either a frame or a display name (a string).
fb970d0c56eb Change doc-string comments to `new style'. [w/`doc:' keyword]. Doc fixes.
Jason Rumney <jasonr@gnu.org>
parents: 40873
diff changeset
6740 If omitted or nil, that stands for the selected frame's display. */)
13434
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
6741 (display)
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
6742 Lisp_Object display;
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
6743 {
16588
481b7874a1e9 Change identifiers of the form win32* to w32*.
Geoff Voelker <voelker@cs.washington.edu>
parents: 16259
diff changeset
6744 struct w32_display_info *dpyinfo = check_x_display_info (display);
13434
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
6745
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
6746 return make_number (1);
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
6747 }
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
6748
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
6749 DEFUN ("x-server-vendor", Fx_server_vendor, Sx_server_vendor, 0, 1, 0,
79393
09f6c4242048 (Fx_create_frame, Fx_display_pixel_width, Fx_display_pixel_height,
Juanma Barranquero <lekktu@gmail.com>
parents: 79387
diff changeset
6750 doc: /* Return the "vendor ID" string of the W32 system (Microsoft).
40964
fb970d0c56eb Change doc-string comments to `new style'. [w/`doc:' keyword]. Doc fixes.
Jason Rumney <jasonr@gnu.org>
parents: 40873
diff changeset
6751 The optional argument DISPLAY specifies which display to ask about.
fb970d0c56eb Change doc-string comments to `new style'. [w/`doc:' keyword]. Doc fixes.
Jason Rumney <jasonr@gnu.org>
parents: 40873
diff changeset
6752 DISPLAY should be either a frame or a display name (a string).
fb970d0c56eb Change doc-string comments to `new style'. [w/`doc:' keyword]. Doc fixes.
Jason Rumney <jasonr@gnu.org>
parents: 40873
diff changeset
6753 If omitted or nil, that stands for the selected frame's display. */)
13434
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
6754 (display)
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
6755 Lisp_Object display;
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
6756 {
29317
2d3d5bf49d4e Format and doc changes to bring closer to xfns.c.
Jason Rumney <jasonr@gnu.org>
parents: 29021
diff changeset
6757 return build_string ("Microsoft Corp.");
13434
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
6758 }
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
6759
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
6760 DEFUN ("x-server-version", Fx_server_version, Sx_server_version, 0, 1, 0,
79393
09f6c4242048 (Fx_create_frame, Fx_display_pixel_width, Fx_display_pixel_height,
Juanma Barranquero <lekktu@gmail.com>
parents: 79387
diff changeset
6761 doc: /* Return the version numbers of the server of DISPLAY.
40964
fb970d0c56eb Change doc-string comments to `new style'. [w/`doc:' keyword]. Doc fixes.
Jason Rumney <jasonr@gnu.org>
parents: 40873
diff changeset
6762 The value is a list of three integers: the major and minor
79387
0ca197abc593 (Fw32_registered_hot_keys): Don't return the nil values corresponding
Juanma Barranquero <lekktu@gmail.com>
parents: 79381
diff changeset
6763 version numbers of the X Protocol in use, and the distributor-specific
0ca197abc593 (Fw32_registered_hot_keys): Don't return the nil values corresponding
Juanma Barranquero <lekktu@gmail.com>
parents: 79381
diff changeset
6764 release number. See also the function `x-server-vendor'.
40964
fb970d0c56eb Change doc-string comments to `new style'. [w/`doc:' keyword]. Doc fixes.
Jason Rumney <jasonr@gnu.org>
parents: 40873
diff changeset
6765
fb970d0c56eb Change doc-string comments to `new style'. [w/`doc:' keyword]. Doc fixes.
Jason Rumney <jasonr@gnu.org>
parents: 40873
diff changeset
6766 The optional argument DISPLAY specifies which display to ask about.
fb970d0c56eb Change doc-string comments to `new style'. [w/`doc:' keyword]. Doc fixes.
Jason Rumney <jasonr@gnu.org>
parents: 40873
diff changeset
6767 DISPLAY should be either a frame or a display name (a string).
fb970d0c56eb Change doc-string comments to `new style'. [w/`doc:' keyword]. Doc fixes.
Jason Rumney <jasonr@gnu.org>
parents: 40873
diff changeset
6768 If omitted or nil, that stands for the selected frame's display. */)
13434
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
6769 (display)
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
6770 Lisp_Object display;
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
6771 {
16588
481b7874a1e9 Change identifiers of the form win32* to w32*.
Geoff Voelker <voelker@cs.washington.edu>
parents: 16259
diff changeset
6772 return Fcons (make_number (w32_major_version),
33216
2eb7d429a997 (Fx_server_version): Include w32_build_number in the
Andrew Innes <andrewi@gnu.org>
parents: 32977
diff changeset
6773 Fcons (make_number (w32_minor_version),
2eb7d429a997 (Fx_server_version): Include w32_build_number in the
Andrew Innes <andrewi@gnu.org>
parents: 32977
diff changeset
6774 Fcons (make_number (w32_build_number), Qnil)));
13434
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
6775 }
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
6776
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
6777 DEFUN ("x-display-screens", Fx_display_screens, Sx_display_screens, 0, 1, 0,
79393
09f6c4242048 (Fx_create_frame, Fx_display_pixel_width, Fx_display_pixel_height,
Juanma Barranquero <lekktu@gmail.com>
parents: 79387
diff changeset
6778 doc: /* Return the number of screens on the server of DISPLAY.
40964
fb970d0c56eb Change doc-string comments to `new style'. [w/`doc:' keyword]. Doc fixes.
Jason Rumney <jasonr@gnu.org>
parents: 40873
diff changeset
6779 The optional argument DISPLAY specifies which display to ask about.
fb970d0c56eb Change doc-string comments to `new style'. [w/`doc:' keyword]. Doc fixes.
Jason Rumney <jasonr@gnu.org>
parents: 40873
diff changeset
6780 DISPLAY should be either a frame or a display name (a string).
fb970d0c56eb Change doc-string comments to `new style'. [w/`doc:' keyword]. Doc fixes.
Jason Rumney <jasonr@gnu.org>
parents: 40873
diff changeset
6781 If omitted or nil, that stands for the selected frame's display. */)
13434
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
6782 (display)
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
6783 Lisp_Object display;
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
6784 {
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
6785 return make_number (1);
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
6786 }
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
6787
40964
fb970d0c56eb Change doc-string comments to `new style'. [w/`doc:' keyword]. Doc fixes.
Jason Rumney <jasonr@gnu.org>
parents: 40873
diff changeset
6788 DEFUN ("x-display-mm-height", Fx_display_mm_height,
fb970d0c56eb Change doc-string comments to `new style'. [w/`doc:' keyword]. Doc fixes.
Jason Rumney <jasonr@gnu.org>
parents: 40873
diff changeset
6789 Sx_display_mm_height, 0, 1, 0,
79393
09f6c4242048 (Fx_create_frame, Fx_display_pixel_width, Fx_display_pixel_height,
Juanma Barranquero <lekktu@gmail.com>
parents: 79387
diff changeset
6790 doc: /* Return the height in millimeters of DISPLAY.
40964
fb970d0c56eb Change doc-string comments to `new style'. [w/`doc:' keyword]. Doc fixes.
Jason Rumney <jasonr@gnu.org>
parents: 40873
diff changeset
6791 The optional argument DISPLAY specifies which display to ask about.
fb970d0c56eb Change doc-string comments to `new style'. [w/`doc:' keyword]. Doc fixes.
Jason Rumney <jasonr@gnu.org>
parents: 40873
diff changeset
6792 DISPLAY should be either a frame or a display name (a string).
fb970d0c56eb Change doc-string comments to `new style'. [w/`doc:' keyword]. Doc fixes.
Jason Rumney <jasonr@gnu.org>
parents: 40873
diff changeset
6793 If omitted or nil, that stands for the selected frame's display. */)
13434
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
6794 (display)
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
6795 Lisp_Object display;
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
6796 {
16588
481b7874a1e9 Change identifiers of the form win32* to w32*.
Geoff Voelker <voelker@cs.washington.edu>
parents: 16259
diff changeset
6797 struct w32_display_info *dpyinfo = check_x_display_info (display);
13434
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
6798 HDC hdc;
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
6799 int cap;
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
6800
15147
38c0ce06203f (quit_char, Vwin32_enable_italics, Vwin32_enable_palette):
Geoff Voelker <voelker@cs.washington.edu>
parents: 15034
diff changeset
6801 hdc = GetDC (dpyinfo->root_window);
47942
080b4586492b Fix typo in comment.
Juanma Barranquero <lekktu@gmail.com>
parents: 47731
diff changeset
6802
13434
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
6803 cap = GetDeviceCaps (hdc, VERTSIZE);
47942
080b4586492b Fix typo in comment.
Juanma Barranquero <lekktu@gmail.com>
parents: 47731
diff changeset
6804
13434
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
6805 ReleaseDC (dpyinfo->root_window, hdc);
47942
080b4586492b Fix typo in comment.
Juanma Barranquero <lekktu@gmail.com>
parents: 47731
diff changeset
6806
13434
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
6807 return make_number (cap);
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
6808 }
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
6809
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
6810 DEFUN ("x-display-mm-width", Fx_display_mm_width, Sx_display_mm_width, 0, 1, 0,
79393
09f6c4242048 (Fx_create_frame, Fx_display_pixel_width, Fx_display_pixel_height,
Juanma Barranquero <lekktu@gmail.com>
parents: 79387
diff changeset
6811 doc: /* Return the width in millimeters of DISPLAY.
40964
fb970d0c56eb Change doc-string comments to `new style'. [w/`doc:' keyword]. Doc fixes.
Jason Rumney <jasonr@gnu.org>
parents: 40873
diff changeset
6812 The optional argument DISPLAY specifies which display to ask about.
fb970d0c56eb Change doc-string comments to `new style'. [w/`doc:' keyword]. Doc fixes.
Jason Rumney <jasonr@gnu.org>
parents: 40873
diff changeset
6813 DISPLAY should be either a frame or a display name (a string).
fb970d0c56eb Change doc-string comments to `new style'. [w/`doc:' keyword]. Doc fixes.
Jason Rumney <jasonr@gnu.org>
parents: 40873
diff changeset
6814 If omitted or nil, that stands for the selected frame's display. */)
13434
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
6815 (display)
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
6816 Lisp_Object display;
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
6817 {
16588
481b7874a1e9 Change identifiers of the form win32* to w32*.
Geoff Voelker <voelker@cs.washington.edu>
parents: 16259
diff changeset
6818 struct w32_display_info *dpyinfo = check_x_display_info (display);
13434
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
6819
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
6820 HDC hdc;
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
6821 int cap;
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
6822
15147
38c0ce06203f (quit_char, Vwin32_enable_italics, Vwin32_enable_palette):
Geoff Voelker <voelker@cs.washington.edu>
parents: 15034
diff changeset
6823 hdc = GetDC (dpyinfo->root_window);
47942
080b4586492b Fix typo in comment.
Juanma Barranquero <lekktu@gmail.com>
parents: 47731
diff changeset
6824
13434
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
6825 cap = GetDeviceCaps (hdc, HORZSIZE);
47942
080b4586492b Fix typo in comment.
Juanma Barranquero <lekktu@gmail.com>
parents: 47731
diff changeset
6826
13434
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
6827 ReleaseDC (dpyinfo->root_window, hdc);
47942
080b4586492b Fix typo in comment.
Juanma Barranquero <lekktu@gmail.com>
parents: 47731
diff changeset
6828
13434
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
6829 return make_number (cap);
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
6830 }
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
6831
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
6832 DEFUN ("x-display-backing-store", Fx_display_backing_store,
40964
fb970d0c56eb Change doc-string comments to `new style'. [w/`doc:' keyword]. Doc fixes.
Jason Rumney <jasonr@gnu.org>
parents: 40873
diff changeset
6833 Sx_display_backing_store, 0, 1, 0,
79393
09f6c4242048 (Fx_create_frame, Fx_display_pixel_width, Fx_display_pixel_height,
Juanma Barranquero <lekktu@gmail.com>
parents: 79387
diff changeset
6834 doc: /* Return an indication of whether DISPLAY does backing store.
40964
fb970d0c56eb Change doc-string comments to `new style'. [w/`doc:' keyword]. Doc fixes.
Jason Rumney <jasonr@gnu.org>
parents: 40873
diff changeset
6835 The value may be `always', `when-mapped', or `not-useful'.
fb970d0c56eb Change doc-string comments to `new style'. [w/`doc:' keyword]. Doc fixes.
Jason Rumney <jasonr@gnu.org>
parents: 40873
diff changeset
6836 The optional argument DISPLAY specifies which display to ask about.
fb970d0c56eb Change doc-string comments to `new style'. [w/`doc:' keyword]. Doc fixes.
Jason Rumney <jasonr@gnu.org>
parents: 40873
diff changeset
6837 DISPLAY should be either a frame or a display name (a string).
fb970d0c56eb Change doc-string comments to `new style'. [w/`doc:' keyword]. Doc fixes.
Jason Rumney <jasonr@gnu.org>
parents: 40873
diff changeset
6838 If omitted or nil, that stands for the selected frame's display. */)
13434
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
6839 (display)
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
6840 Lisp_Object display;
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
6841 {
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
6842 return intern ("not-useful");
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
6843 }
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
6844
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
6845 DEFUN ("x-display-visual-class", Fx_display_visual_class,
40964
fb970d0c56eb Change doc-string comments to `new style'. [w/`doc:' keyword]. Doc fixes.
Jason Rumney <jasonr@gnu.org>
parents: 40873
diff changeset
6846 Sx_display_visual_class, 0, 1, 0,
79393
09f6c4242048 (Fx_create_frame, Fx_display_pixel_width, Fx_display_pixel_height,
Juanma Barranquero <lekktu@gmail.com>
parents: 79387
diff changeset
6847 doc: /* Return the visual class of DISPLAY.
40964
fb970d0c56eb Change doc-string comments to `new style'. [w/`doc:' keyword]. Doc fixes.
Jason Rumney <jasonr@gnu.org>
parents: 40873
diff changeset
6848 The value is one of the symbols `static-gray', `gray-scale',
fb970d0c56eb Change doc-string comments to `new style'. [w/`doc:' keyword]. Doc fixes.
Jason Rumney <jasonr@gnu.org>
parents: 40873
diff changeset
6849 `static-color', `pseudo-color', `true-color', or `direct-color'.
fb970d0c56eb Change doc-string comments to `new style'. [w/`doc:' keyword]. Doc fixes.
Jason Rumney <jasonr@gnu.org>
parents: 40873
diff changeset
6850
fb970d0c56eb Change doc-string comments to `new style'. [w/`doc:' keyword]. Doc fixes.
Jason Rumney <jasonr@gnu.org>
parents: 40873
diff changeset
6851 The optional argument DISPLAY specifies which display to ask about.
fb970d0c56eb Change doc-string comments to `new style'. [w/`doc:' keyword]. Doc fixes.
Jason Rumney <jasonr@gnu.org>
parents: 40873
diff changeset
6852 DISPLAY should be either a frame or a display name (a string).
fb970d0c56eb Change doc-string comments to `new style'. [w/`doc:' keyword]. Doc fixes.
Jason Rumney <jasonr@gnu.org>
parents: 40873
diff changeset
6853 If omitted or nil, that stands for the selected frame's display. */)
13434
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
6854 (display)
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
6855 Lisp_Object display;
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
6856 {
16588
481b7874a1e9 Change identifiers of the form win32* to w32*.
Geoff Voelker <voelker@cs.washington.edu>
parents: 16259
diff changeset
6857 struct w32_display_info *dpyinfo = check_x_display_info (display);
34998
5091928844df (Fx_display_color_cells): Determine correct value, when
Andrew Innes <andrewi@gnu.org>
parents: 34942
diff changeset
6858 Lisp_Object result = Qnil;
5091928844df (Fx_display_color_cells): Determine correct value, when
Andrew Innes <andrewi@gnu.org>
parents: 34942
diff changeset
6859
5091928844df (Fx_display_color_cells): Determine correct value, when
Andrew Innes <andrewi@gnu.org>
parents: 34942
diff changeset
6860 if (dpyinfo->has_palette)
5091928844df (Fx_display_color_cells): Determine correct value, when
Andrew Innes <andrewi@gnu.org>
parents: 34942
diff changeset
6861 result = intern ("pseudo-color");
5091928844df (Fx_display_color_cells): Determine correct value, when
Andrew Innes <andrewi@gnu.org>
parents: 34942
diff changeset
6862 else if (dpyinfo->n_planes * dpyinfo->n_cbits == 1)
5091928844df (Fx_display_color_cells): Determine correct value, when
Andrew Innes <andrewi@gnu.org>
parents: 34942
diff changeset
6863 result = intern ("static-grey");
5091928844df (Fx_display_color_cells): Determine correct value, when
Andrew Innes <andrewi@gnu.org>
parents: 34942
diff changeset
6864 else if (dpyinfo->n_planes * dpyinfo->n_cbits == 4)
5091928844df (Fx_display_color_cells): Determine correct value, when
Andrew Innes <andrewi@gnu.org>
parents: 34942
diff changeset
6865 result = intern ("static-color");
5091928844df (Fx_display_color_cells): Determine correct value, when
Andrew Innes <andrewi@gnu.org>
parents: 34942
diff changeset
6866 else if (dpyinfo->n_planes * dpyinfo->n_cbits > 8)
5091928844df (Fx_display_color_cells): Determine correct value, when
Andrew Innes <andrewi@gnu.org>
parents: 34942
diff changeset
6867 result = intern ("true-color");
5091928844df (Fx_display_color_cells): Determine correct value, when
Andrew Innes <andrewi@gnu.org>
parents: 34942
diff changeset
6868
5091928844df (Fx_display_color_cells): Determine correct value, when
Andrew Innes <andrewi@gnu.org>
parents: 34942
diff changeset
6869 return result;
13434
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
6870 }
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
6871
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
6872 DEFUN ("x-display-save-under", Fx_display_save_under,
40964
fb970d0c56eb Change doc-string comments to `new style'. [w/`doc:' keyword]. Doc fixes.
Jason Rumney <jasonr@gnu.org>
parents: 40873
diff changeset
6873 Sx_display_save_under, 0, 1, 0,
79393
09f6c4242048 (Fx_create_frame, Fx_display_pixel_width, Fx_display_pixel_height,
Juanma Barranquero <lekktu@gmail.com>
parents: 79387
diff changeset
6874 doc: /* Return t if DISPLAY supports the save-under feature.
40964
fb970d0c56eb Change doc-string comments to `new style'. [w/`doc:' keyword]. Doc fixes.
Jason Rumney <jasonr@gnu.org>
parents: 40873
diff changeset
6875 The optional argument DISPLAY specifies which display to ask about.
fb970d0c56eb Change doc-string comments to `new style'. [w/`doc:' keyword]. Doc fixes.
Jason Rumney <jasonr@gnu.org>
parents: 40873
diff changeset
6876 DISPLAY should be either a frame or a display name (a string).
fb970d0c56eb Change doc-string comments to `new style'. [w/`doc:' keyword]. Doc fixes.
Jason Rumney <jasonr@gnu.org>
parents: 40873
diff changeset
6877 If omitted or nil, that stands for the selected frame's display. */)
13434
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
6878 (display)
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
6879 Lisp_Object display;
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
6880 {
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
6881 return Qnil;
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
6882 }
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
6883
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
6884 int
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
6885 x_pixel_width (f)
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
6886 register struct frame *f;
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
6887 {
51211
28ea05de2dc5 Make (many) trivial substitutions for renamed and
Kim F. Storm <storm@cua.dk>
parents: 50377
diff changeset
6888 return FRAME_PIXEL_WIDTH (f);
13434
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
6889 }
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
6890
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
6891 int
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
6892 x_pixel_height (f)
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
6893 register struct frame *f;
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
6894 {
51211
28ea05de2dc5 Make (many) trivial substitutions for renamed and
Kim F. Storm <storm@cua.dk>
parents: 50377
diff changeset
6895 return FRAME_PIXEL_HEIGHT (f);
13434
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
6896 }
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
6897
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
6898 int
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
6899 x_char_width (f)
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
6900 register struct frame *f;
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
6901 {
51211
28ea05de2dc5 Make (many) trivial substitutions for renamed and
Kim F. Storm <storm@cua.dk>
parents: 50377
diff changeset
6902 return FRAME_COLUMN_WIDTH (f);
13434
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
6903 }
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
6904
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
6905 int
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
6906 x_char_height (f)
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
6907 register struct frame *f;
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
6908 {
51211
28ea05de2dc5 Make (many) trivial substitutions for renamed and
Kim F. Storm <storm@cua.dk>
parents: 50377
diff changeset
6909 return FRAME_LINE_HEIGHT (f);
13434
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
6910 }
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
6911
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
6912 int
27397
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
6913 x_screen_planes (f)
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
6914 register struct frame *f;
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
6915 {
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
6916 return FRAME_W32_DISPLAY_INFO (f)->n_planes;
13434
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
6917 }
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
6918
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
6919 /* Return the display structure for the display named NAME.
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
6920 Open a new connection if necessary. */
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
6921
16588
481b7874a1e9 Change identifiers of the form win32* to w32*.
Geoff Voelker <voelker@cs.washington.edu>
parents: 16259
diff changeset
6922 struct w32_display_info *
13434
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
6923 x_display_info_for_name (name)
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
6924 Lisp_Object name;
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
6925 {
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
6926 Lisp_Object names;
16588
481b7874a1e9 Change identifiers of the form win32* to w32*.
Geoff Voelker <voelker@cs.washington.edu>
parents: 16259
diff changeset
6927 struct w32_display_info *dpyinfo;
13434
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
6928
40656
cdfd4d09b79a Update usage of CHECK_ macros (remove unused second argument).
Pavel Janík <Pavel@Janik.cz>
parents: 40528
diff changeset
6929 CHECK_STRING (name);
13434
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
6930
16588
481b7874a1e9 Change identifiers of the form win32* to w32*.
Geoff Voelker <voelker@cs.washington.edu>
parents: 16259
diff changeset
6931 for (dpyinfo = &one_w32_display_info, names = w32_display_name_list;
13434
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
6932 dpyinfo;
25646
9154af188477 Use XCAR and XCDR instead of explicit member references.
Ken Raeburn <raeburn@raeburn.org>
parents: 25289
diff changeset
6933 dpyinfo = dpyinfo->next, names = XCDR (names))
13434
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
6934 {
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
6935 Lisp_Object tem;
25646
9154af188477 Use XCAR and XCDR instead of explicit member references.
Ken Raeburn <raeburn@raeburn.org>
parents: 25289
diff changeset
6936 tem = Fstring_equal (XCAR (XCAR (names)), name);
13434
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
6937 if (!NILP (tem))
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
6938 return dpyinfo;
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
6939 }
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
6940
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
6941 /* Use this general default value to start with. */
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
6942 Vx_resource_name = Vinvocation_name;
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
6943
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
6944 validate_x_resource_name ();
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
6945
16588
481b7874a1e9 Change identifiers of the form win32* to w32*.
Geoff Voelker <voelker@cs.washington.edu>
parents: 16259
diff changeset
6946 dpyinfo = w32_term_init (name, (unsigned char *)0,
46370
40db0673e6f0 Most uses of XSTRING combined with STRING_BYTES or indirection changed to
Ken Raeburn <raeburn@raeburn.org>
parents: 46293
diff changeset
6947 (char *) SDATA (Vx_resource_name));
13434
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
6948
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
6949 if (dpyinfo == 0)
46370
40db0673e6f0 Most uses of XSTRING combined with STRING_BYTES or indirection changed to
Ken Raeburn <raeburn@raeburn.org>
parents: 46293
diff changeset
6950 error ("Cannot connect to server %s", SDATA (name));
13434
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
6951
19707
0181cc080316 Include limits.h and errno.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18508
diff changeset
6952 w32_in_use = 1;
13434
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
6953 XSETFASTINT (Vwindow_system_version, 3);
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
6954
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
6955 return dpyinfo;
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
6956 }
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
6957
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
6958 DEFUN ("x-open-connection", Fx_open_connection, Sx_open_connection,
40964
fb970d0c56eb Change doc-string comments to `new style'. [w/`doc:' keyword]. Doc fixes.
Jason Rumney <jasonr@gnu.org>
parents: 40873
diff changeset
6959 1, 3, 0, doc: /* Open a connection to a server.
fb970d0c56eb Change doc-string comments to `new style'. [w/`doc:' keyword]. Doc fixes.
Jason Rumney <jasonr@gnu.org>
parents: 40873
diff changeset
6960 DISPLAY is the name of the display to connect to.
fb970d0c56eb Change doc-string comments to `new style'. [w/`doc:' keyword]. Doc fixes.
Jason Rumney <jasonr@gnu.org>
parents: 40873
diff changeset
6961 Optional second arg XRM-STRING is a string of resources in xrdb format.
fb970d0c56eb Change doc-string comments to `new style'. [w/`doc:' keyword]. Doc fixes.
Jason Rumney <jasonr@gnu.org>
parents: 40873
diff changeset
6962 If the optional third arg MUST-SUCCEED is non-nil,
fb970d0c56eb Change doc-string comments to `new style'. [w/`doc:' keyword]. Doc fixes.
Jason Rumney <jasonr@gnu.org>
parents: 40873
diff changeset
6963 terminate Emacs if we can't open the connection. */)
13434
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
6964 (display, xrm_string, must_succeed)
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
6965 Lisp_Object display, xrm_string, must_succeed;
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
6966 {
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
6967 unsigned char *xrm_option;
16588
481b7874a1e9 Change identifiers of the form win32* to w32*.
Geoff Voelker <voelker@cs.washington.edu>
parents: 16259
diff changeset
6968 struct w32_display_info *dpyinfo;
13434
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
6969
40964
fb970d0c56eb Change doc-string comments to `new style'. [w/`doc:' keyword]. Doc fixes.
Jason Rumney <jasonr@gnu.org>
parents: 40873
diff changeset
6970 /* If initialization has already been done, return now to avoid
fb970d0c56eb Change doc-string comments to `new style'. [w/`doc:' keyword]. Doc fixes.
Jason Rumney <jasonr@gnu.org>
parents: 40873
diff changeset
6971 overwriting critical parts of one_w32_display_info. */
fb970d0c56eb Change doc-string comments to `new style'. [w/`doc:' keyword]. Doc fixes.
Jason Rumney <jasonr@gnu.org>
parents: 40873
diff changeset
6972 if (w32_in_use)
fb970d0c56eb Change doc-string comments to `new style'. [w/`doc:' keyword]. Doc fixes.
Jason Rumney <jasonr@gnu.org>
parents: 40873
diff changeset
6973 return Qnil;
fb970d0c56eb Change doc-string comments to `new style'. [w/`doc:' keyword]. Doc fixes.
Jason Rumney <jasonr@gnu.org>
parents: 40873
diff changeset
6974
40656
cdfd4d09b79a Update usage of CHECK_ macros (remove unused second argument).
Pavel Janík <Pavel@Janik.cz>
parents: 40528
diff changeset
6975 CHECK_STRING (display);
13434
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
6976 if (! NILP (xrm_string))
40656
cdfd4d09b79a Update usage of CHECK_ macros (remove unused second argument).
Pavel Janík <Pavel@Janik.cz>
parents: 40528
diff changeset
6977 CHECK_STRING (xrm_string);
13434
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
6978
83571
ca1c27e2707e (x_set_tool_bar_lines): Don't use updating_frame.
Jason Rumney <jasonr@gnu.org>
parents: 76700
diff changeset
6979 #if 0
19707
0181cc080316 Include limits.h and errno.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18508
diff changeset
6980 if (! EQ (Vwindow_system, intern ("w32")))
0181cc080316 Include limits.h and errno.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18508
diff changeset
6981 error ("Not using Microsoft Windows");
83571
ca1c27e2707e (x_set_tool_bar_lines): Don't use updating_frame.
Jason Rumney <jasonr@gnu.org>
parents: 76700
diff changeset
6982 #endif
19707
0181cc080316 Include limits.h and errno.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18508
diff changeset
6983
15147
38c0ce06203f (quit_char, Vwin32_enable_italics, Vwin32_enable_palette):
Geoff Voelker <voelker@cs.washington.edu>
parents: 15034
diff changeset
6984 /* Allow color mapping to be defined externally; first look in user's
38c0ce06203f (quit_char, Vwin32_enable_italics, Vwin32_enable_palette):
Geoff Voelker <voelker@cs.washington.edu>
parents: 15034
diff changeset
6985 HOME directory, then in Emacs etc dir for a file called rgb.txt. */
38c0ce06203f (quit_char, Vwin32_enable_italics, Vwin32_enable_palette):
Geoff Voelker <voelker@cs.washington.edu>
parents: 15034
diff changeset
6986 {
38c0ce06203f (quit_char, Vwin32_enable_italics, Vwin32_enable_palette):
Geoff Voelker <voelker@cs.washington.edu>
parents: 15034
diff changeset
6987 Lisp_Object color_file;
38c0ce06203f (quit_char, Vwin32_enable_italics, Vwin32_enable_palette):
Geoff Voelker <voelker@cs.washington.edu>
parents: 15034
diff changeset
6988 struct gcpro gcpro1;
38c0ce06203f (quit_char, Vwin32_enable_italics, Vwin32_enable_palette):
Geoff Voelker <voelker@cs.washington.edu>
parents: 15034
diff changeset
6989
79387
0ca197abc593 (Fw32_registered_hot_keys): Don't return the nil values corresponding
Juanma Barranquero <lekktu@gmail.com>
parents: 79381
diff changeset
6990 color_file = build_string ("~/rgb.txt");
15147
38c0ce06203f (quit_char, Vwin32_enable_italics, Vwin32_enable_palette):
Geoff Voelker <voelker@cs.washington.edu>
parents: 15034
diff changeset
6991
38c0ce06203f (quit_char, Vwin32_enable_italics, Vwin32_enable_palette):
Geoff Voelker <voelker@cs.washington.edu>
parents: 15034
diff changeset
6992 GCPRO1 (color_file);
38c0ce06203f (quit_char, Vwin32_enable_italics, Vwin32_enable_palette):
Geoff Voelker <voelker@cs.washington.edu>
parents: 15034
diff changeset
6993
38c0ce06203f (quit_char, Vwin32_enable_italics, Vwin32_enable_palette):
Geoff Voelker <voelker@cs.washington.edu>
parents: 15034
diff changeset
6994 if (NILP (Ffile_readable_p (color_file)))
38c0ce06203f (quit_char, Vwin32_enable_italics, Vwin32_enable_palette):
Geoff Voelker <voelker@cs.washington.edu>
parents: 15034
diff changeset
6995 color_file =
38c0ce06203f (quit_char, Vwin32_enable_italics, Vwin32_enable_palette):
Geoff Voelker <voelker@cs.washington.edu>
parents: 15034
diff changeset
6996 Fexpand_file_name (build_string ("rgb.txt"),
38c0ce06203f (quit_char, Vwin32_enable_italics, Vwin32_enable_palette):
Geoff Voelker <voelker@cs.washington.edu>
parents: 15034
diff changeset
6997 Fsymbol_value (intern ("data-directory")));
38c0ce06203f (quit_char, Vwin32_enable_italics, Vwin32_enable_palette):
Geoff Voelker <voelker@cs.washington.edu>
parents: 15034
diff changeset
6998
16588
481b7874a1e9 Change identifiers of the form win32* to w32*.
Geoff Voelker <voelker@cs.washington.edu>
parents: 16259
diff changeset
6999 Vw32_color_map = Fw32_load_color_file (color_file);
15147
38c0ce06203f (quit_char, Vwin32_enable_italics, Vwin32_enable_palette):
Geoff Voelker <voelker@cs.washington.edu>
parents: 15034
diff changeset
7000
38c0ce06203f (quit_char, Vwin32_enable_italics, Vwin32_enable_palette):
Geoff Voelker <voelker@cs.washington.edu>
parents: 15034
diff changeset
7001 UNGCPRO;
38c0ce06203f (quit_char, Vwin32_enable_italics, Vwin32_enable_palette):
Geoff Voelker <voelker@cs.washington.edu>
parents: 15034
diff changeset
7002 }
16588
481b7874a1e9 Change identifiers of the form win32* to w32*.
Geoff Voelker <voelker@cs.washington.edu>
parents: 16259
diff changeset
7003 if (NILP (Vw32_color_map))
481b7874a1e9 Change identifiers of the form win32* to w32*.
Geoff Voelker <voelker@cs.washington.edu>
parents: 16259
diff changeset
7004 Vw32_color_map = Fw32_default_color_map ();
13434
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
7005
51474
0dbfd1fe2e91 (add_system_logical_colors_to_map): New function.
Jason Rumney <jasonr@gnu.org>
parents: 51211
diff changeset
7006 /* Merge in system logical colors. */
0dbfd1fe2e91 (add_system_logical_colors_to_map): New function.
Jason Rumney <jasonr@gnu.org>
parents: 51211
diff changeset
7007 add_system_logical_colors_to_map (&Vw32_color_map);
0dbfd1fe2e91 (add_system_logical_colors_to_map): New function.
Jason Rumney <jasonr@gnu.org>
parents: 51211
diff changeset
7008
13434
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
7009 if (! NILP (xrm_string))
46370
40db0673e6f0 Most uses of XSTRING combined with STRING_BYTES or indirection changed to
Ken Raeburn <raeburn@raeburn.org>
parents: 46293
diff changeset
7010 xrm_option = (unsigned char *) SDATA (xrm_string);
13434
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
7011 else
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
7012 xrm_option = (unsigned char *) 0;
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
7013
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
7014 /* Use this general default value to start with. */
15147
38c0ce06203f (quit_char, Vwin32_enable_italics, Vwin32_enable_palette):
Geoff Voelker <voelker@cs.washington.edu>
parents: 15034
diff changeset
7015 /* First remove .exe suffix from invocation-name - it looks ugly. */
38c0ce06203f (quit_char, Vwin32_enable_italics, Vwin32_enable_palette):
Geoff Voelker <voelker@cs.washington.edu>
parents: 15034
diff changeset
7016 {
38c0ce06203f (quit_char, Vwin32_enable_italics, Vwin32_enable_palette):
Geoff Voelker <voelker@cs.washington.edu>
parents: 15034
diff changeset
7017 char basename[ MAX_PATH ], *str;
38c0ce06203f (quit_char, Vwin32_enable_italics, Vwin32_enable_palette):
Geoff Voelker <voelker@cs.washington.edu>
parents: 15034
diff changeset
7018
46370
40db0673e6f0 Most uses of XSTRING combined with STRING_BYTES or indirection changed to
Ken Raeburn <raeburn@raeburn.org>
parents: 46293
diff changeset
7019 strcpy (basename, SDATA (Vinvocation_name));
15147
38c0ce06203f (quit_char, Vwin32_enable_italics, Vwin32_enable_palette):
Geoff Voelker <voelker@cs.washington.edu>
parents: 15034
diff changeset
7020 str = strrchr (basename, '.');
38c0ce06203f (quit_char, Vwin32_enable_italics, Vwin32_enable_palette):
Geoff Voelker <voelker@cs.washington.edu>
parents: 15034
diff changeset
7021 if (str) *str = 0;
38c0ce06203f (quit_char, Vwin32_enable_italics, Vwin32_enable_palette):
Geoff Voelker <voelker@cs.washington.edu>
parents: 15034
diff changeset
7022 Vinvocation_name = build_string (basename);
38c0ce06203f (quit_char, Vwin32_enable_italics, Vwin32_enable_palette):
Geoff Voelker <voelker@cs.washington.edu>
parents: 15034
diff changeset
7023 }
13434
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
7024 Vx_resource_name = Vinvocation_name;
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
7025
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
7026 validate_x_resource_name ();
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
7027
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
7028 /* This is what opens the connection and sets x_current_display.
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
7029 This also initializes many symbols, such as those used for input. */
16588
481b7874a1e9 Change identifiers of the form win32* to w32*.
Geoff Voelker <voelker@cs.washington.edu>
parents: 16259
diff changeset
7030 dpyinfo = w32_term_init (display, xrm_option,
46370
40db0673e6f0 Most uses of XSTRING combined with STRING_BYTES or indirection changed to
Ken Raeburn <raeburn@raeburn.org>
parents: 46293
diff changeset
7031 (char *) SDATA (Vx_resource_name));
13434
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
7032
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
7033 if (dpyinfo == 0)
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
7034 {
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
7035 if (!NILP (must_succeed))
14353
d0d8d9d73f7f backout 1.3
Geoff Voelker <voelker@cs.washington.edu>
parents: 14243
diff changeset
7036 fatal ("Cannot connect to server %s.\n",
46370
40db0673e6f0 Most uses of XSTRING combined with STRING_BYTES or indirection changed to
Ken Raeburn <raeburn@raeburn.org>
parents: 46293
diff changeset
7037 SDATA (display));
13434
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
7038 else
46370
40db0673e6f0 Most uses of XSTRING combined with STRING_BYTES or indirection changed to
Ken Raeburn <raeburn@raeburn.org>
parents: 46293
diff changeset
7039 error ("Cannot connect to server %s", SDATA (display));
13434
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
7040 }
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
7041
19707
0181cc080316 Include limits.h and errno.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18508
diff changeset
7042 w32_in_use = 1;
0181cc080316 Include limits.h and errno.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18508
diff changeset
7043
13434
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
7044 XSETFASTINT (Vwindow_system_version, 3);
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
7045 return Qnil;
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
7046 }
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
7047
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
7048 DEFUN ("x-close-connection", Fx_close_connection,
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
7049 Sx_close_connection, 1, 1, 0,
40964
fb970d0c56eb Change doc-string comments to `new style'. [w/`doc:' keyword]. Doc fixes.
Jason Rumney <jasonr@gnu.org>
parents: 40873
diff changeset
7050 doc: /* Close the connection to DISPLAY's server.
fb970d0c56eb Change doc-string comments to `new style'. [w/`doc:' keyword]. Doc fixes.
Jason Rumney <jasonr@gnu.org>
parents: 40873
diff changeset
7051 For DISPLAY, specify either a frame or a display name (a string).
fb970d0c56eb Change doc-string comments to `new style'. [w/`doc:' keyword]. Doc fixes.
Jason Rumney <jasonr@gnu.org>
parents: 40873
diff changeset
7052 If DISPLAY is nil, that stands for the selected frame's display. */)
13434
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
7053 (display)
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
7054 Lisp_Object display;
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
7055 {
16588
481b7874a1e9 Change identifiers of the form win32* to w32*.
Geoff Voelker <voelker@cs.washington.edu>
parents: 16259
diff changeset
7056 struct w32_display_info *dpyinfo = check_x_display_info (display);
13434
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
7057 int i;
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
7058
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
7059 if (dpyinfo->reference_count > 0)
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
7060 error ("Display still has frames on it");
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
7061
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
7062 BLOCK_INPUT;
94917
e61553aa7a73 Throughout the file, delete all USE_FONT_BACKEND
Kenichi Handa <handa@m17n.org>
parents: 94618
diff changeset
7063 #if OLD_FONT
13434
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
7064 /* Free the fonts in the font table. */
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
7065 for (i = 0; i < dpyinfo->n_fonts; i++)
27397
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
7066 if (dpyinfo->font_table[i].name)
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
7067 {
28272
f62bb21d38db (w32_wnd_proc): Handle WM_MENUSELECT message.
Jason Rumney <jasonr@gnu.org>
parents: 27936
diff changeset
7068 if (dpyinfo->font_table[i].name != dpyinfo->font_table[i].full_name)
f62bb21d38db (w32_wnd_proc): Handle WM_MENUSELECT message.
Jason Rumney <jasonr@gnu.org>
parents: 27936
diff changeset
7069 xfree (dpyinfo->font_table[i].full_name);
27397
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
7070 xfree (dpyinfo->font_table[i].name);
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
7071 w32_unload_font (dpyinfo, dpyinfo->font_table[i].font);
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
7072 }
94917
e61553aa7a73 Throughout the file, delete all USE_FONT_BACKEND
Kenichi Handa <handa@m17n.org>
parents: 94618
diff changeset
7073 #endif
13434
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
7074 x_destroy_all_bitmaps (dpyinfo);
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
7075
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
7076 x_delete_display (dpyinfo);
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
7077 UNBLOCK_INPUT;
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
7078
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
7079 return Qnil;
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
7080 }
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
7081
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
7082 DEFUN ("x-display-list", Fx_display_list, Sx_display_list, 0, 0, 0,
40964
fb970d0c56eb Change doc-string comments to `new style'. [w/`doc:' keyword]. Doc fixes.
Jason Rumney <jasonr@gnu.org>
parents: 40873
diff changeset
7083 doc: /* Return the list of display names that Emacs has connections to. */)
13434
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
7084 ()
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
7085 {
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
7086 Lisp_Object tail, result;
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
7087
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
7088 result = Qnil;
85372
f7d19cfed7da * xselect.c (x_own_selection, x_handle_selection_clear)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 85311
diff changeset
7089 for (tail = w32_display_name_list; CONSP (tail); tail = XCDR (tail))
25646
9154af188477 Use XCAR and XCDR instead of explicit member references.
Ken Raeburn <raeburn@raeburn.org>
parents: 25289
diff changeset
7090 result = Fcons (XCAR (XCAR (tail)), result);
13434
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
7091
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
7092 return result;
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
7093 }
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
7094
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
7095 DEFUN ("x-synchronize", Fx_synchronize, Sx_synchronize, 1, 2, 0,
41008
cf49091f9de9 (Fx_synchronize): Reindent.
Pavel Janík <Pavel@Janik.cz>
parents: 40964
diff changeset
7096 doc: /* This is a noop on W32 systems. */)
cf49091f9de9 (Fx_synchronize): Reindent.
Pavel Janík <Pavel@Janik.cz>
parents: 40964
diff changeset
7097 (on, display)
cf49091f9de9 (Fx_synchronize): Reindent.
Pavel Janík <Pavel@Janik.cz>
parents: 40964
diff changeset
7098 Lisp_Object display, on;
13434
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
7099 {
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
7100 return Qnil;
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
7101 }
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
7102
27397
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
7103
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
7104
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
7105 /***********************************************************************
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
7106 Window properties
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
7107 ***********************************************************************/
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
7108
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
7109 DEFUN ("x-change-window-property", Fx_change_window_property,
53844
0093eae529e8 macfns.c, w32fns.c (Fx_change_window_property):
Jan Djärv <jan.h.d@swipnet.se>
parents: 53798
diff changeset
7110 Sx_change_window_property, 2, 6, 0,
40964
fb970d0c56eb Change doc-string comments to `new style'. [w/`doc:' keyword]. Doc fixes.
Jason Rumney <jasonr@gnu.org>
parents: 40873
diff changeset
7111 doc: /* Change window property PROP to VALUE on the X window of FRAME.
53844
0093eae529e8 macfns.c, w32fns.c (Fx_change_window_property):
Jan Djärv <jan.h.d@swipnet.se>
parents: 53798
diff changeset
7112 VALUE may be a string or a list of conses, numbers and/or strings.
0093eae529e8 macfns.c, w32fns.c (Fx_change_window_property):
Jan Djärv <jan.h.d@swipnet.se>
parents: 53798
diff changeset
7113 If an element in the list is a string, it is converted to
0093eae529e8 macfns.c, w32fns.c (Fx_change_window_property):
Jan Djärv <jan.h.d@swipnet.se>
parents: 53798
diff changeset
7114 an Atom and the value of the Atom is used. If an element is a cons,
0093eae529e8 macfns.c, w32fns.c (Fx_change_window_property):
Jan Djärv <jan.h.d@swipnet.se>
parents: 53798
diff changeset
7115 it is converted to a 32 bit number where the car is the 16 top bits and the
0093eae529e8 macfns.c, w32fns.c (Fx_change_window_property):
Jan Djärv <jan.h.d@swipnet.se>
parents: 53798
diff changeset
7116 cdr is the lower 16 bits.
0093eae529e8 macfns.c, w32fns.c (Fx_change_window_property):
Jan Djärv <jan.h.d@swipnet.se>
parents: 53798
diff changeset
7117 FRAME nil or omitted means use the selected frame.
0093eae529e8 macfns.c, w32fns.c (Fx_change_window_property):
Jan Djärv <jan.h.d@swipnet.se>
parents: 53798
diff changeset
7118 If TYPE is given and non-nil, it is the name of the type of VALUE.
0093eae529e8 macfns.c, w32fns.c (Fx_change_window_property):
Jan Djärv <jan.h.d@swipnet.se>
parents: 53798
diff changeset
7119 If TYPE is not given or nil, the type is STRING.
0093eae529e8 macfns.c, w32fns.c (Fx_change_window_property):
Jan Djärv <jan.h.d@swipnet.se>
parents: 53798
diff changeset
7120 FORMAT gives the size in bits of each element if VALUE is a list.
0093eae529e8 macfns.c, w32fns.c (Fx_change_window_property):
Jan Djärv <jan.h.d@swipnet.se>
parents: 53798
diff changeset
7121 It must be one of 8, 16 or 32.
0093eae529e8 macfns.c, w32fns.c (Fx_change_window_property):
Jan Djärv <jan.h.d@swipnet.se>
parents: 53798
diff changeset
7122 If VALUE is a string or FORMAT is nil or not given, FORMAT defaults to 8.
0093eae529e8 macfns.c, w32fns.c (Fx_change_window_property):
Jan Djärv <jan.h.d@swipnet.se>
parents: 53798
diff changeset
7123 If OUTER_P is non-nil, the property is changed for the outer X window of
0093eae529e8 macfns.c, w32fns.c (Fx_change_window_property):
Jan Djärv <jan.h.d@swipnet.se>
parents: 53798
diff changeset
7124 FRAME. Default is to change on the edit X window.
0093eae529e8 macfns.c, w32fns.c (Fx_change_window_property):
Jan Djärv <jan.h.d@swipnet.se>
parents: 53798
diff changeset
7125
0093eae529e8 macfns.c, w32fns.c (Fx_change_window_property):
Jan Djärv <jan.h.d@swipnet.se>
parents: 53798
diff changeset
7126 Value is VALUE. */)
0093eae529e8 macfns.c, w32fns.c (Fx_change_window_property):
Jan Djärv <jan.h.d@swipnet.se>
parents: 53798
diff changeset
7127 (prop, value, frame, type, format, outer_p)
0093eae529e8 macfns.c, w32fns.c (Fx_change_window_property):
Jan Djärv <jan.h.d@swipnet.se>
parents: 53798
diff changeset
7128 Lisp_Object prop, value, frame, type, format, outer_p;
27397
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
7129 {
33387
01a10bc04233 (Qw32_charset_hangeul): Rename to match w32 headers.
Jason Rumney <jasonr@gnu.org>
parents: 33216
diff changeset
7130 #if 0 /* TODO : port window properties to W32 */
27397
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
7131 struct frame *f = check_x_frame (frame);
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
7132 Atom prop_atom;
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
7133
40656
cdfd4d09b79a Update usage of CHECK_ macros (remove unused second argument).
Pavel Janík <Pavel@Janik.cz>
parents: 40528
diff changeset
7134 CHECK_STRING (prop);
cdfd4d09b79a Update usage of CHECK_ macros (remove unused second argument).
Pavel Janík <Pavel@Janik.cz>
parents: 40528
diff changeset
7135 CHECK_STRING (value);
27397
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
7136
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
7137 BLOCK_INPUT;
46370
40db0673e6f0 Most uses of XSTRING combined with STRING_BYTES or indirection changed to
Ken Raeburn <raeburn@raeburn.org>
parents: 46293
diff changeset
7138 prop_atom = XInternAtom (FRAME_W32_DISPLAY (f), SDATA (prop), False);
27397
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
7139 XChangeProperty (FRAME_W32_DISPLAY (f), FRAME_W32_WINDOW (f),
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
7140 prop_atom, XA_STRING, 8, PropModeReplace,
46370
40db0673e6f0 Most uses of XSTRING combined with STRING_BYTES or indirection changed to
Ken Raeburn <raeburn@raeburn.org>
parents: 46293
diff changeset
7141 SDATA (value), SCHARS (value));
27397
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
7142
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
7143 /* Make sure the property is set when we return. */
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
7144 XFlush (FRAME_W32_DISPLAY (f));
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
7145 UNBLOCK_INPUT;
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
7146
33387
01a10bc04233 (Qw32_charset_hangeul): Rename to match w32 headers.
Jason Rumney <jasonr@gnu.org>
parents: 33216
diff changeset
7147 #endif /* TODO */
27397
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
7148
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
7149 return value;
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
7150 }
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
7151
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
7152
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
7153 DEFUN ("x-delete-window-property", Fx_delete_window_property,
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
7154 Sx_delete_window_property, 1, 2, 0,
40964
fb970d0c56eb Change doc-string comments to `new style'. [w/`doc:' keyword]. Doc fixes.
Jason Rumney <jasonr@gnu.org>
parents: 40873
diff changeset
7155 doc: /* Remove window property PROP from X window of FRAME.
fb970d0c56eb Change doc-string comments to `new style'. [w/`doc:' keyword]. Doc fixes.
Jason Rumney <jasonr@gnu.org>
parents: 40873
diff changeset
7156 FRAME nil or omitted means use the selected frame. Value is PROP. */)
27397
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
7157 (prop, frame)
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
7158 Lisp_Object prop, frame;
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
7159 {
33387
01a10bc04233 (Qw32_charset_hangeul): Rename to match w32 headers.
Jason Rumney <jasonr@gnu.org>
parents: 33216
diff changeset
7160 #if 0 /* TODO : port window properties to W32 */
27397
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
7161
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
7162 struct frame *f = check_x_frame (frame);
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
7163 Atom prop_atom;
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
7164
40656
cdfd4d09b79a Update usage of CHECK_ macros (remove unused second argument).
Pavel Janík <Pavel@Janik.cz>
parents: 40528
diff changeset
7165 CHECK_STRING (prop);
27397
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
7166 BLOCK_INPUT;
46370
40db0673e6f0 Most uses of XSTRING combined with STRING_BYTES or indirection changed to
Ken Raeburn <raeburn@raeburn.org>
parents: 46293
diff changeset
7167 prop_atom = XInternAtom (FRAME_W32_DISPLAY (f), SDATA (prop), False);
27397
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
7168 XDeleteProperty (FRAME_W32_DISPLAY (f), FRAME_W32_WINDOW (f), prop_atom);
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
7169
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
7170 /* Make sure the property is removed when we return. */
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
7171 XFlush (FRAME_W32_DISPLAY (f));
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
7172 UNBLOCK_INPUT;
33387
01a10bc04233 (Qw32_charset_hangeul): Rename to match w32 headers.
Jason Rumney <jasonr@gnu.org>
parents: 33216
diff changeset
7173 #endif /* TODO */
27397
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
7174
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
7175 return prop;
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
7176 }
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
7177
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
7178
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
7179 DEFUN ("x-window-property", Fx_window_property, Sx_window_property,
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
7180 1, 2, 0,
40964
fb970d0c56eb Change doc-string comments to `new style'. [w/`doc:' keyword]. Doc fixes.
Jason Rumney <jasonr@gnu.org>
parents: 40873
diff changeset
7181 doc: /* Value is the value of window property PROP on FRAME.
fb970d0c56eb Change doc-string comments to `new style'. [w/`doc:' keyword]. Doc fixes.
Jason Rumney <jasonr@gnu.org>
parents: 40873
diff changeset
7182 If FRAME is nil or omitted, use the selected frame. Value is nil
fb970d0c56eb Change doc-string comments to `new style'. [w/`doc:' keyword]. Doc fixes.
Jason Rumney <jasonr@gnu.org>
parents: 40873
diff changeset
7183 if FRAME hasn't a property with name PROP or if PROP has no string
fb970d0c56eb Change doc-string comments to `new style'. [w/`doc:' keyword]. Doc fixes.
Jason Rumney <jasonr@gnu.org>
parents: 40873
diff changeset
7184 value. */)
27397
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
7185 (prop, frame)
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
7186 Lisp_Object prop, frame;
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
7187 {
33387
01a10bc04233 (Qw32_charset_hangeul): Rename to match w32 headers.
Jason Rumney <jasonr@gnu.org>
parents: 33216
diff changeset
7188 #if 0 /* TODO : port window properties to W32 */
27397
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
7189
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
7190 struct frame *f = check_x_frame (frame);
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
7191 Atom prop_atom;
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
7192 int rc;
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
7193 Lisp_Object prop_value = Qnil;
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
7194 char *tmp_data = NULL;
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
7195 Atom actual_type;
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
7196 int actual_format;
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
7197 unsigned long actual_size, bytes_remaining;
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
7198
40656
cdfd4d09b79a Update usage of CHECK_ macros (remove unused second argument).
Pavel Janík <Pavel@Janik.cz>
parents: 40528
diff changeset
7199 CHECK_STRING (prop);
27397
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
7200 BLOCK_INPUT;
46370
40db0673e6f0 Most uses of XSTRING combined with STRING_BYTES or indirection changed to
Ken Raeburn <raeburn@raeburn.org>
parents: 46293
diff changeset
7201 prop_atom = XInternAtom (FRAME_W32_DISPLAY (f), SDATA (prop), False);
27397
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
7202 rc = XGetWindowProperty (FRAME_W32_DISPLAY (f), FRAME_W32_WINDOW (f),
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
7203 prop_atom, 0, 0, False, XA_STRING,
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
7204 &actual_type, &actual_format, &actual_size,
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
7205 &bytes_remaining, (unsigned char **) &tmp_data);
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
7206 if (rc == Success)
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
7207 {
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
7208 int size = bytes_remaining;
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
7209
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
7210 XFree (tmp_data);
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
7211 tmp_data = NULL;
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
7212
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
7213 rc = XGetWindowProperty (FRAME_W32_DISPLAY (f), FRAME_W32_WINDOW (f),
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
7214 prop_atom, 0, bytes_remaining,
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
7215 False, XA_STRING,
47942
080b4586492b Fix typo in comment.
Juanma Barranquero <lekktu@gmail.com>
parents: 47731
diff changeset
7216 &actual_type, &actual_format,
080b4586492b Fix typo in comment.
Juanma Barranquero <lekktu@gmail.com>
parents: 47731
diff changeset
7217 &actual_size, &bytes_remaining,
27397
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
7218 (unsigned char **) &tmp_data);
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
7219 if (rc == Success)
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
7220 prop_value = make_string (tmp_data, size);
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
7221
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
7222 XFree (tmp_data);
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
7223 }
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
7224
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
7225 UNBLOCK_INPUT;
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
7226
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
7227 return prop_value;
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
7228
33387
01a10bc04233 (Qw32_charset_hangeul): Rename to match w32 headers.
Jason Rumney <jasonr@gnu.org>
parents: 33216
diff changeset
7229 #endif /* TODO */
27397
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
7230 return Qnil;
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
7231 }
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
7232
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
7233
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
7234
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
7235 /***********************************************************************
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
7236 Busy cursor
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
7237 ***********************************************************************/
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
7238
36252
a8630c63f7d5 Rename everything containing *busy_cursor* and similar
Gerd Moellmann <gerd@gnu.org>
parents: 36080
diff changeset
7239 /* Non-zero means an hourglass cursor is currently shown. */
a8630c63f7d5 Rename everything containing *busy_cursor* and similar
Gerd Moellmann <gerd@gnu.org>
parents: 36080
diff changeset
7240
a8630c63f7d5 Rename everything containing *busy_cursor* and similar
Gerd Moellmann <gerd@gnu.org>
parents: 36080
diff changeset
7241 static int hourglass_shown_p;
a8630c63f7d5 Rename everything containing *busy_cursor* and similar
Gerd Moellmann <gerd@gnu.org>
parents: 36080
diff changeset
7242
a8630c63f7d5 Rename everything containing *busy_cursor* and similar
Gerd Moellmann <gerd@gnu.org>
parents: 36080
diff changeset
7243 /* Number of seconds to wait before displaying an hourglass cursor. */
a8630c63f7d5 Rename everything containing *busy_cursor* and similar
Gerd Moellmann <gerd@gnu.org>
parents: 36080
diff changeset
7244
a8630c63f7d5 Rename everything containing *busy_cursor* and similar
Gerd Moellmann <gerd@gnu.org>
parents: 36080
diff changeset
7245 static Lisp_Object Vhourglass_delay;
a8630c63f7d5 Rename everything containing *busy_cursor* and similar
Gerd Moellmann <gerd@gnu.org>
parents: 36080
diff changeset
7246
a8630c63f7d5 Rename everything containing *busy_cursor* and similar
Gerd Moellmann <gerd@gnu.org>
parents: 36080
diff changeset
7247 /* Default number of seconds to wait before displaying an hourglass
27936
4c1ad68f8688 Bring up to date with xfns.c changes from 2000-02-25 and 2000-02-21.
Jason Rumney <jasonr@gnu.org>
parents: 27894
diff changeset
7248 cursor. */
4c1ad68f8688 Bring up to date with xfns.c changes from 2000-02-25 and 2000-02-21.
Jason Rumney <jasonr@gnu.org>
parents: 27894
diff changeset
7249
36252
a8630c63f7d5 Rename everything containing *busy_cursor* and similar
Gerd Moellmann <gerd@gnu.org>
parents: 36080
diff changeset
7250 #define DEFAULT_HOURGLASS_DELAY 1
27936
4c1ad68f8688 Bring up to date with xfns.c changes from 2000-02-25 and 2000-02-21.
Jason Rumney <jasonr@gnu.org>
parents: 27894
diff changeset
7251
93075
66248fc5b523 * w32fns.c (hourglass_timer, hourglass_hwnd): New variables.
Jason Rumney <jasonr@gnu.org>
parents: 92940
diff changeset
7252 /* Return non-zero if houglass timer has been started or hourglass is shown. */
66248fc5b523 * w32fns.c (hourglass_timer, hourglass_hwnd): New variables.
Jason Rumney <jasonr@gnu.org>
parents: 92940
diff changeset
7253
66248fc5b523 * w32fns.c (hourglass_timer, hourglass_hwnd): New variables.
Jason Rumney <jasonr@gnu.org>
parents: 92940
diff changeset
7254 int
66248fc5b523 * w32fns.c (hourglass_timer, hourglass_hwnd): New variables.
Jason Rumney <jasonr@gnu.org>
parents: 92940
diff changeset
7255 hourglass_started ()
66248fc5b523 * w32fns.c (hourglass_timer, hourglass_hwnd): New variables.
Jason Rumney <jasonr@gnu.org>
parents: 92940
diff changeset
7256 {
66248fc5b523 * w32fns.c (hourglass_timer, hourglass_hwnd): New variables.
Jason Rumney <jasonr@gnu.org>
parents: 92940
diff changeset
7257 return hourglass_shown_p || hourglass_timer;
66248fc5b523 * w32fns.c (hourglass_timer, hourglass_hwnd): New variables.
Jason Rumney <jasonr@gnu.org>
parents: 92940
diff changeset
7258 }
36252
a8630c63f7d5 Rename everything containing *busy_cursor* and similar
Gerd Moellmann <gerd@gnu.org>
parents: 36080
diff changeset
7259
a8630c63f7d5 Rename everything containing *busy_cursor* and similar
Gerd Moellmann <gerd@gnu.org>
parents: 36080
diff changeset
7260 /* Cancel a currently active hourglass timer, and start a new one. */
27936
4c1ad68f8688 Bring up to date with xfns.c changes from 2000-02-25 and 2000-02-21.
Jason Rumney <jasonr@gnu.org>
parents: 27894
diff changeset
7261
4c1ad68f8688 Bring up to date with xfns.c changes from 2000-02-25 and 2000-02-21.
Jason Rumney <jasonr@gnu.org>
parents: 27894
diff changeset
7262 void
36252
a8630c63f7d5 Rename everything containing *busy_cursor* and similar
Gerd Moellmann <gerd@gnu.org>
parents: 36080
diff changeset
7263 start_hourglass ()
27936
4c1ad68f8688 Bring up to date with xfns.c changes from 2000-02-25 and 2000-02-21.
Jason Rumney <jasonr@gnu.org>
parents: 27894
diff changeset
7264 {
93075
66248fc5b523 * w32fns.c (hourglass_timer, hourglass_hwnd): New variables.
Jason Rumney <jasonr@gnu.org>
parents: 92940
diff changeset
7265 DWORD delay;
66248fc5b523 * w32fns.c (hourglass_timer, hourglass_hwnd): New variables.
Jason Rumney <jasonr@gnu.org>
parents: 92940
diff changeset
7266 int secs, msecs = 0;
66248fc5b523 * w32fns.c (hourglass_timer, hourglass_hwnd): New variables.
Jason Rumney <jasonr@gnu.org>
parents: 92940
diff changeset
7267 struct frame * f = SELECTED_FRAME ();
47942
080b4586492b Fix typo in comment.
Juanma Barranquero <lekktu@gmail.com>
parents: 47731
diff changeset
7268
93319
a461c5c16bd5 (start_hourglass): Suppress hourglass on tty frames.
Jason Rumney <jasonr@gnu.org>
parents: 93075
diff changeset
7269 /* No cursors on non GUI frames. */
a461c5c16bd5 (start_hourglass): Suppress hourglass on tty frames.
Jason Rumney <jasonr@gnu.org>
parents: 93075
diff changeset
7270 if (!FRAME_W32_P (f))
a461c5c16bd5 (start_hourglass): Suppress hourglass on tty frames.
Jason Rumney <jasonr@gnu.org>
parents: 93075
diff changeset
7271 return;
a461c5c16bd5 (start_hourglass): Suppress hourglass on tty frames.
Jason Rumney <jasonr@gnu.org>
parents: 93075
diff changeset
7272
36252
a8630c63f7d5 Rename everything containing *busy_cursor* and similar
Gerd Moellmann <gerd@gnu.org>
parents: 36080
diff changeset
7273 cancel_hourglass ();
a8630c63f7d5 Rename everything containing *busy_cursor* and similar
Gerd Moellmann <gerd@gnu.org>
parents: 36080
diff changeset
7274
a8630c63f7d5 Rename everything containing *busy_cursor* and similar
Gerd Moellmann <gerd@gnu.org>
parents: 36080
diff changeset
7275 if (INTEGERP (Vhourglass_delay)
a8630c63f7d5 Rename everything containing *busy_cursor* and similar
Gerd Moellmann <gerd@gnu.org>
parents: 36080
diff changeset
7276 && XINT (Vhourglass_delay) > 0)
a8630c63f7d5 Rename everything containing *busy_cursor* and similar
Gerd Moellmann <gerd@gnu.org>
parents: 36080
diff changeset
7277 secs = XFASTINT (Vhourglass_delay);
a8630c63f7d5 Rename everything containing *busy_cursor* and similar
Gerd Moellmann <gerd@gnu.org>
parents: 36080
diff changeset
7278 else if (FLOATP (Vhourglass_delay)
a8630c63f7d5 Rename everything containing *busy_cursor* and similar
Gerd Moellmann <gerd@gnu.org>
parents: 36080
diff changeset
7279 && XFLOAT_DATA (Vhourglass_delay) > 0)
29317
2d3d5bf49d4e Format and doc changes to bring closer to xfns.c.
Jason Rumney <jasonr@gnu.org>
parents: 29021
diff changeset
7280 {
2d3d5bf49d4e Format and doc changes to bring closer to xfns.c.
Jason Rumney <jasonr@gnu.org>
parents: 29021
diff changeset
7281 Lisp_Object tem;
36252
a8630c63f7d5 Rename everything containing *busy_cursor* and similar
Gerd Moellmann <gerd@gnu.org>
parents: 36080
diff changeset
7282 tem = Ftruncate (Vhourglass_delay, Qnil);
29317
2d3d5bf49d4e Format and doc changes to bring closer to xfns.c.
Jason Rumney <jasonr@gnu.org>
parents: 29021
diff changeset
7283 secs = XFASTINT (tem);
93075
66248fc5b523 * w32fns.c (hourglass_timer, hourglass_hwnd): New variables.
Jason Rumney <jasonr@gnu.org>
parents: 92940
diff changeset
7284 msecs = (XFLOAT_DATA (Vhourglass_delay) - secs) * 1000;
36252
a8630c63f7d5 Rename everything containing *busy_cursor* and similar
Gerd Moellmann <gerd@gnu.org>
parents: 36080
diff changeset
7285 }
a8630c63f7d5 Rename everything containing *busy_cursor* and similar
Gerd Moellmann <gerd@gnu.org>
parents: 36080
diff changeset
7286 else
a8630c63f7d5 Rename everything containing *busy_cursor* and similar
Gerd Moellmann <gerd@gnu.org>
parents: 36080
diff changeset
7287 secs = DEFAULT_HOURGLASS_DELAY;
47942
080b4586492b Fix typo in comment.
Juanma Barranquero <lekktu@gmail.com>
parents: 47731
diff changeset
7288
93075
66248fc5b523 * w32fns.c (hourglass_timer, hourglass_hwnd): New variables.
Jason Rumney <jasonr@gnu.org>
parents: 92940
diff changeset
7289 delay = secs * 1000 + msecs;
66248fc5b523 * w32fns.c (hourglass_timer, hourglass_hwnd): New variables.
Jason Rumney <jasonr@gnu.org>
parents: 92940
diff changeset
7290 hourglass_hwnd = FRAME_W32_WINDOW (f);
66248fc5b523 * w32fns.c (hourglass_timer, hourglass_hwnd): New variables.
Jason Rumney <jasonr@gnu.org>
parents: 92940
diff changeset
7291 hourglass_timer = SetTimer (hourglass_hwnd, HOURGLASS_ID, delay, NULL);
27936
4c1ad68f8688 Bring up to date with xfns.c changes from 2000-02-25 and 2000-02-21.
Jason Rumney <jasonr@gnu.org>
parents: 27894
diff changeset
7292 }
4c1ad68f8688 Bring up to date with xfns.c changes from 2000-02-25 and 2000-02-21.
Jason Rumney <jasonr@gnu.org>
parents: 27894
diff changeset
7293
4c1ad68f8688 Bring up to date with xfns.c changes from 2000-02-25 and 2000-02-21.
Jason Rumney <jasonr@gnu.org>
parents: 27894
diff changeset
7294
36252
a8630c63f7d5 Rename everything containing *busy_cursor* and similar
Gerd Moellmann <gerd@gnu.org>
parents: 36080
diff changeset
7295 /* Cancel the hourglass cursor timer if active, hide an hourglass
a8630c63f7d5 Rename everything containing *busy_cursor* and similar
Gerd Moellmann <gerd@gnu.org>
parents: 36080
diff changeset
7296 cursor if shown. */
27936
4c1ad68f8688 Bring up to date with xfns.c changes from 2000-02-25 and 2000-02-21.
Jason Rumney <jasonr@gnu.org>
parents: 27894
diff changeset
7297
4c1ad68f8688 Bring up to date with xfns.c changes from 2000-02-25 and 2000-02-21.
Jason Rumney <jasonr@gnu.org>
parents: 27894
diff changeset
7298 void
36252
a8630c63f7d5 Rename everything containing *busy_cursor* and similar
Gerd Moellmann <gerd@gnu.org>
parents: 36080
diff changeset
7299 cancel_hourglass ()
a8630c63f7d5 Rename everything containing *busy_cursor* and similar
Gerd Moellmann <gerd@gnu.org>
parents: 36080
diff changeset
7300 {
93075
66248fc5b523 * w32fns.c (hourglass_timer, hourglass_hwnd): New variables.
Jason Rumney <jasonr@gnu.org>
parents: 92940
diff changeset
7301 if (hourglass_timer)
66248fc5b523 * w32fns.c (hourglass_timer, hourglass_hwnd): New variables.
Jason Rumney <jasonr@gnu.org>
parents: 92940
diff changeset
7302 {
66248fc5b523 * w32fns.c (hourglass_timer, hourglass_hwnd): New variables.
Jason Rumney <jasonr@gnu.org>
parents: 92940
diff changeset
7303 KillTimer (hourglass_hwnd, hourglass_timer);
66248fc5b523 * w32fns.c (hourglass_timer, hourglass_hwnd): New variables.
Jason Rumney <jasonr@gnu.org>
parents: 92940
diff changeset
7304 hourglass_timer = 0;
36252
a8630c63f7d5 Rename everything containing *busy_cursor* and similar
Gerd Moellmann <gerd@gnu.org>
parents: 36080
diff changeset
7305 }
47942
080b4586492b Fix typo in comment.
Juanma Barranquero <lekktu@gmail.com>
parents: 47731
diff changeset
7306
36252
a8630c63f7d5 Rename everything containing *busy_cursor* and similar
Gerd Moellmann <gerd@gnu.org>
parents: 36080
diff changeset
7307 if (hourglass_shown_p)
a8630c63f7d5 Rename everything containing *busy_cursor* and similar
Gerd Moellmann <gerd@gnu.org>
parents: 36080
diff changeset
7308 hide_hourglass ();
a8630c63f7d5 Rename everything containing *busy_cursor* and similar
Gerd Moellmann <gerd@gnu.org>
parents: 36080
diff changeset
7309 }
a8630c63f7d5 Rename everything containing *busy_cursor* and similar
Gerd Moellmann <gerd@gnu.org>
parents: 36080
diff changeset
7310
a8630c63f7d5 Rename everything containing *busy_cursor* and similar
Gerd Moellmann <gerd@gnu.org>
parents: 36080
diff changeset
7311
93075
66248fc5b523 * w32fns.c (hourglass_timer, hourglass_hwnd): New variables.
Jason Rumney <jasonr@gnu.org>
parents: 92940
diff changeset
7312 /* Timer function of hourglass_timer.
66248fc5b523 * w32fns.c (hourglass_timer, hourglass_hwnd): New variables.
Jason Rumney <jasonr@gnu.org>
parents: 92940
diff changeset
7313
66248fc5b523 * w32fns.c (hourglass_timer, hourglass_hwnd): New variables.
Jason Rumney <jasonr@gnu.org>
parents: 92940
diff changeset
7314 Display an hourglass cursor. Set the hourglass_p flag in display info
66248fc5b523 * w32fns.c (hourglass_timer, hourglass_hwnd): New variables.
Jason Rumney <jasonr@gnu.org>
parents: 92940
diff changeset
7315 to indicate that an hourglass cursor is shown. */
27936
4c1ad68f8688 Bring up to date with xfns.c changes from 2000-02-25 and 2000-02-21.
Jason Rumney <jasonr@gnu.org>
parents: 27894
diff changeset
7316
4c1ad68f8688 Bring up to date with xfns.c changes from 2000-02-25 and 2000-02-21.
Jason Rumney <jasonr@gnu.org>
parents: 27894
diff changeset
7317 static void
93075
66248fc5b523 * w32fns.c (hourglass_timer, hourglass_hwnd): New variables.
Jason Rumney <jasonr@gnu.org>
parents: 92940
diff changeset
7318 show_hourglass (f)
66248fc5b523 * w32fns.c (hourglass_timer, hourglass_hwnd): New variables.
Jason Rumney <jasonr@gnu.org>
parents: 92940
diff changeset
7319 struct frame *f;
66248fc5b523 * w32fns.c (hourglass_timer, hourglass_hwnd): New variables.
Jason Rumney <jasonr@gnu.org>
parents: 92940
diff changeset
7320 {
36252
a8630c63f7d5 Rename everything containing *busy_cursor* and similar
Gerd Moellmann <gerd@gnu.org>
parents: 36080
diff changeset
7321 if (!hourglass_shown_p)
27397
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
7322 {
93075
66248fc5b523 * w32fns.c (hourglass_timer, hourglass_hwnd): New variables.
Jason Rumney <jasonr@gnu.org>
parents: 92940
diff changeset
7323 f->output_data.w32->hourglass_p = 1;
66248fc5b523 * w32fns.c (hourglass_timer, hourglass_hwnd): New variables.
Jason Rumney <jasonr@gnu.org>
parents: 92940
diff changeset
7324 if (!menubar_in_use && !current_popup_menu)
66248fc5b523 * w32fns.c (hourglass_timer, hourglass_hwnd): New variables.
Jason Rumney <jasonr@gnu.org>
parents: 92940
diff changeset
7325 SetCursor (f->output_data.w32->hourglass_cursor);
36252
a8630c63f7d5 Rename everything containing *busy_cursor* and similar
Gerd Moellmann <gerd@gnu.org>
parents: 36080
diff changeset
7326 hourglass_shown_p = 1;
93075
66248fc5b523 * w32fns.c (hourglass_timer, hourglass_hwnd): New variables.
Jason Rumney <jasonr@gnu.org>
parents: 92940
diff changeset
7327 }
27936
4c1ad68f8688 Bring up to date with xfns.c changes from 2000-02-25 and 2000-02-21.
Jason Rumney <jasonr@gnu.org>
parents: 27894
diff changeset
7328 }
4c1ad68f8688 Bring up to date with xfns.c changes from 2000-02-25 and 2000-02-21.
Jason Rumney <jasonr@gnu.org>
parents: 27894
diff changeset
7329
4c1ad68f8688 Bring up to date with xfns.c changes from 2000-02-25 and 2000-02-21.
Jason Rumney <jasonr@gnu.org>
parents: 27894
diff changeset
7330
36252
a8630c63f7d5 Rename everything containing *busy_cursor* and similar
Gerd Moellmann <gerd@gnu.org>
parents: 36080
diff changeset
7331 /* Hide the hourglass cursor on all frames, if it is currently shown. */
27936
4c1ad68f8688 Bring up to date with xfns.c changes from 2000-02-25 and 2000-02-21.
Jason Rumney <jasonr@gnu.org>
parents: 27894
diff changeset
7332
4c1ad68f8688 Bring up to date with xfns.c changes from 2000-02-25 and 2000-02-21.
Jason Rumney <jasonr@gnu.org>
parents: 27894
diff changeset
7333 static void
36252
a8630c63f7d5 Rename everything containing *busy_cursor* and similar
Gerd Moellmann <gerd@gnu.org>
parents: 36080
diff changeset
7334 hide_hourglass ()
27936
4c1ad68f8688 Bring up to date with xfns.c changes from 2000-02-25 and 2000-02-21.
Jason Rumney <jasonr@gnu.org>
parents: 27894
diff changeset
7335 {
36252
a8630c63f7d5 Rename everything containing *busy_cursor* and similar
Gerd Moellmann <gerd@gnu.org>
parents: 36080
diff changeset
7336 if (hourglass_shown_p)
27936
4c1ad68f8688 Bring up to date with xfns.c changes from 2000-02-25 and 2000-02-21.
Jason Rumney <jasonr@gnu.org>
parents: 27894
diff changeset
7337 {
93075
66248fc5b523 * w32fns.c (hourglass_timer, hourglass_hwnd): New variables.
Jason Rumney <jasonr@gnu.org>
parents: 92940
diff changeset
7338 struct frame *f = x_window_to_frame (&one_w32_display_info,
66248fc5b523 * w32fns.c (hourglass_timer, hourglass_hwnd): New variables.
Jason Rumney <jasonr@gnu.org>
parents: 92940
diff changeset
7339 hourglass_hwnd);
66248fc5b523 * w32fns.c (hourglass_timer, hourglass_hwnd): New variables.
Jason Rumney <jasonr@gnu.org>
parents: 92940
diff changeset
7340
66248fc5b523 * w32fns.c (hourglass_timer, hourglass_hwnd): New variables.
Jason Rumney <jasonr@gnu.org>
parents: 92940
diff changeset
7341 f->output_data.w32->hourglass_p = 0;
66248fc5b523 * w32fns.c (hourglass_timer, hourglass_hwnd): New variables.
Jason Rumney <jasonr@gnu.org>
parents: 92940
diff changeset
7342 SetCursor (f->output_data.w32->current_cursor);
36252
a8630c63f7d5 Rename everything containing *busy_cursor* and similar
Gerd Moellmann <gerd@gnu.org>
parents: 36080
diff changeset
7343 hourglass_shown_p = 0;
93075
66248fc5b523 * w32fns.c (hourglass_timer, hourglass_hwnd): New variables.
Jason Rumney <jasonr@gnu.org>
parents: 92940
diff changeset
7344 }
27397
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
7345 }
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
7346
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
7347
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
7348
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
7349 /***********************************************************************
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
7350 Tool tips
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
7351 ***********************************************************************/
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
7352
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
7353 static Lisp_Object x_create_tip_frame P_ ((struct w32_display_info *,
40120
03eb905a4d8e (Fx_file_dialog): Pass a filter to GetOpenFileName.
Jason Rumney <jasonr@gnu.org>
parents: 40009
diff changeset
7354 Lisp_Object, Lisp_Object));
03eb905a4d8e (Fx_file_dialog): Pass a filter to GetOpenFileName.
Jason Rumney <jasonr@gnu.org>
parents: 40009
diff changeset
7355 static void compute_tip_xy P_ ((struct frame *, Lisp_Object, Lisp_Object,
03eb905a4d8e (Fx_file_dialog): Pass a filter to GetOpenFileName.
Jason Rumney <jasonr@gnu.org>
parents: 40009
diff changeset
7356 Lisp_Object, int, int, int *, int *));
47942
080b4586492b Fix typo in comment.
Juanma Barranquero <lekktu@gmail.com>
parents: 47731
diff changeset
7357
40120
03eb905a4d8e (Fx_file_dialog): Pass a filter to GetOpenFileName.
Jason Rumney <jasonr@gnu.org>
parents: 40009
diff changeset
7358 /* The frame of a currently visible tooltip. */
27397
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
7359
34546
51be06b616bf (Fx_hide_tip): Avoid unnecessary work when there's
Andrew Innes <andrewi@gnu.org>
parents: 34314
diff changeset
7360 Lisp_Object tip_frame;
27397
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
7361
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
7362 /* If non-nil, a timer started that hides the last tooltip when it
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
7363 fires. */
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
7364
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
7365 Lisp_Object tip_timer;
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
7366 Window tip_window;
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
7367
40120
03eb905a4d8e (Fx_file_dialog): Pass a filter to GetOpenFileName.
Jason Rumney <jasonr@gnu.org>
parents: 40009
diff changeset
7368 /* If non-nil, a vector of 3 elements containing the last args
03eb905a4d8e (Fx_file_dialog): Pass a filter to GetOpenFileName.
Jason Rumney <jasonr@gnu.org>
parents: 40009
diff changeset
7369 with which x-show-tip was called. See there. */
03eb905a4d8e (Fx_file_dialog): Pass a filter to GetOpenFileName.
Jason Rumney <jasonr@gnu.org>
parents: 40009
diff changeset
7370
03eb905a4d8e (Fx_file_dialog): Pass a filter to GetOpenFileName.
Jason Rumney <jasonr@gnu.org>
parents: 40009
diff changeset
7371 Lisp_Object last_show_tip_args;
03eb905a4d8e (Fx_file_dialog): Pass a filter to GetOpenFileName.
Jason Rumney <jasonr@gnu.org>
parents: 40009
diff changeset
7372
03eb905a4d8e (Fx_file_dialog): Pass a filter to GetOpenFileName.
Jason Rumney <jasonr@gnu.org>
parents: 40009
diff changeset
7373 /* Maximum size for tooltips; a cons (COLUMNS . ROWS). */
03eb905a4d8e (Fx_file_dialog): Pass a filter to GetOpenFileName.
Jason Rumney <jasonr@gnu.org>
parents: 40009
diff changeset
7374
03eb905a4d8e (Fx_file_dialog): Pass a filter to GetOpenFileName.
Jason Rumney <jasonr@gnu.org>
parents: 40009
diff changeset
7375 Lisp_Object Vx_max_tooltip_size;
03eb905a4d8e (Fx_file_dialog): Pass a filter to GetOpenFileName.
Jason Rumney <jasonr@gnu.org>
parents: 40009
diff changeset
7376
03eb905a4d8e (Fx_file_dialog): Pass a filter to GetOpenFileName.
Jason Rumney <jasonr@gnu.org>
parents: 40009
diff changeset
7377
34546
51be06b616bf (Fx_hide_tip): Avoid unnecessary work when there's
Andrew Innes <andrewi@gnu.org>
parents: 34314
diff changeset
7378 static Lisp_Object
51be06b616bf (Fx_hide_tip): Avoid unnecessary work when there's
Andrew Innes <andrewi@gnu.org>
parents: 34314
diff changeset
7379 unwind_create_tip_frame (frame)
51be06b616bf (Fx_hide_tip): Avoid unnecessary work when there's
Andrew Innes <andrewi@gnu.org>
parents: 34314
diff changeset
7380 Lisp_Object frame;
51be06b616bf (Fx_hide_tip): Avoid unnecessary work when there's
Andrew Innes <andrewi@gnu.org>
parents: 34314
diff changeset
7381 {
34638
abb4510a89f6 (unwind_create_frame): Return t if frame was deleted.
Gerd Moellmann <gerd@gnu.org>
parents: 34546
diff changeset
7382 Lisp_Object deleted;
abb4510a89f6 (unwind_create_frame): Return t if frame was deleted.
Gerd Moellmann <gerd@gnu.org>
parents: 34546
diff changeset
7383
abb4510a89f6 (unwind_create_frame): Return t if frame was deleted.
Gerd Moellmann <gerd@gnu.org>
parents: 34546
diff changeset
7384 deleted = unwind_create_frame (frame);
abb4510a89f6 (unwind_create_frame): Return t if frame was deleted.
Gerd Moellmann <gerd@gnu.org>
parents: 34546
diff changeset
7385 if (EQ (deleted, Qt))
abb4510a89f6 (unwind_create_frame): Return t if frame was deleted.
Gerd Moellmann <gerd@gnu.org>
parents: 34546
diff changeset
7386 {
abb4510a89f6 (unwind_create_frame): Return t if frame was deleted.
Gerd Moellmann <gerd@gnu.org>
parents: 34546
diff changeset
7387 tip_window = NULL;
abb4510a89f6 (unwind_create_frame): Return t if frame was deleted.
Gerd Moellmann <gerd@gnu.org>
parents: 34546
diff changeset
7388 tip_frame = Qnil;
abb4510a89f6 (unwind_create_frame): Return t if frame was deleted.
Gerd Moellmann <gerd@gnu.org>
parents: 34546
diff changeset
7389 }
47942
080b4586492b Fix typo in comment.
Juanma Barranquero <lekktu@gmail.com>
parents: 47731
diff changeset
7390
34638
abb4510a89f6 (unwind_create_frame): Return t if frame was deleted.
Gerd Moellmann <gerd@gnu.org>
parents: 34546
diff changeset
7391 return deleted;
34546
51be06b616bf (Fx_hide_tip): Avoid unnecessary work when there's
Andrew Innes <andrewi@gnu.org>
parents: 34314
diff changeset
7392 }
51be06b616bf (Fx_hide_tip): Avoid unnecessary work when there's
Andrew Innes <andrewi@gnu.org>
parents: 34314
diff changeset
7393
51be06b616bf (Fx_hide_tip): Avoid unnecessary work when there's
Andrew Innes <andrewi@gnu.org>
parents: 34314
diff changeset
7394
27397
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
7395 /* Create a frame for a tooltip on the display described by DPYINFO.
40120
03eb905a4d8e (Fx_file_dialog): Pass a filter to GetOpenFileName.
Jason Rumney <jasonr@gnu.org>
parents: 40009
diff changeset
7396 PARMS is a list of frame parameters. TEXT is the string to
03eb905a4d8e (Fx_file_dialog): Pass a filter to GetOpenFileName.
Jason Rumney <jasonr@gnu.org>
parents: 40009
diff changeset
7397 display in the tip frame. Value is the frame.
34546
51be06b616bf (Fx_hide_tip): Avoid unnecessary work when there's
Andrew Innes <andrewi@gnu.org>
parents: 34314
diff changeset
7398
51be06b616bf (Fx_hide_tip): Avoid unnecessary work when there's
Andrew Innes <andrewi@gnu.org>
parents: 34314
diff changeset
7399 Note that functions called here, esp. x_default_parameter can
51be06b616bf (Fx_hide_tip): Avoid unnecessary work when there's
Andrew Innes <andrewi@gnu.org>
parents: 34314
diff changeset
7400 signal errors, for instance when a specified color name is
51be06b616bf (Fx_hide_tip): Avoid unnecessary work when there's
Andrew Innes <andrewi@gnu.org>
parents: 34314
diff changeset
7401 undefined. We have to make sure that we're in a consistent state
51be06b616bf (Fx_hide_tip): Avoid unnecessary work when there's
Andrew Innes <andrewi@gnu.org>
parents: 34314
diff changeset
7402 when this happens. */
27397
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
7403
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
7404 static Lisp_Object
40120
03eb905a4d8e (Fx_file_dialog): Pass a filter to GetOpenFileName.
Jason Rumney <jasonr@gnu.org>
parents: 40009
diff changeset
7405 x_create_tip_frame (dpyinfo, parms, text)
27397
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
7406 struct w32_display_info *dpyinfo;
40120
03eb905a4d8e (Fx_file_dialog): Pass a filter to GetOpenFileName.
Jason Rumney <jasonr@gnu.org>
parents: 40009
diff changeset
7407 Lisp_Object parms, text;
27397
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
7408 {
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
7409 struct frame *f;
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
7410 Lisp_Object frame, tem;
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
7411 Lisp_Object name;
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
7412 long window_prompting = 0;
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
7413 int width, height;
46285
3f111801efb4 Rename BINDING_STACK_SIZE to SPECPDL_INDEX.
Juanma Barranquero <lekktu@gmail.com>
parents: 46272
diff changeset
7414 int count = SPECPDL_INDEX ();
27397
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
7415 struct gcpro gcpro1, gcpro2, gcpro3;
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
7416 struct kboard *kb;
40120
03eb905a4d8e (Fx_file_dialog): Pass a filter to GetOpenFileName.
Jason Rumney <jasonr@gnu.org>
parents: 40009
diff changeset
7417 int face_change_count_before = face_change_count;
03eb905a4d8e (Fx_file_dialog): Pass a filter to GetOpenFileName.
Jason Rumney <jasonr@gnu.org>
parents: 40009
diff changeset
7418 Lisp_Object buffer;
03eb905a4d8e (Fx_file_dialog): Pass a filter to GetOpenFileName.
Jason Rumney <jasonr@gnu.org>
parents: 40009
diff changeset
7419 struct buffer *old_buffer;
27397
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
7420
41380
aff1b15f295b (x_window_to_frame): Remove irrelevant TODO comment.
Jason Rumney <jasonr@gnu.org>
parents: 41322
diff changeset
7421 check_w32 ();
27397
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
7422
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
7423 /* Use this general default value to start with until we know if
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
7424 this frame has a specified name. */
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
7425 Vx_resource_name = Vinvocation_name;
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
7426
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
7427 #ifdef MULTI_KBOARD
83878
f65f55d787ec Horizontal mouse wheel support:
Jason Rumney <jasonr@gnu.org>
parents: 83648
diff changeset
7428 kb = dpyinfo->terminal->kboard;
27397
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
7429 #else
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
7430 kb = &the_only_kboard;
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
7431 #endif
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
7432
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
7433 /* Get the name of the frame to use for resource lookup. */
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
7434 name = w32_get_arg (parms, Qname, "name", "Name", RES_TYPE_STRING);
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
7435 if (!STRINGP (name)
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
7436 && !EQ (name, Qunbound)
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
7437 && !NILP (name))
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
7438 error ("Invalid frame name--not a string or nil");
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
7439 Vx_resource_name = name;
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
7440
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
7441 frame = Qnil;
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
7442 GCPRO3 (parms, name, frame);
41732
0d9b74cd27cd (trackmouse_window, track_mouse_event_fn): New vars.
Jason Rumney <jasonr@gnu.org>
parents: 41726
diff changeset
7443 /* Make a frame without minibuffer nor mode-line. */
0d9b74cd27cd (trackmouse_window, track_mouse_event_fn): New vars.
Jason Rumney <jasonr@gnu.org>
parents: 41726
diff changeset
7444 f = make_frame (0);
0d9b74cd27cd (trackmouse_window, track_mouse_event_fn): New vars.
Jason Rumney <jasonr@gnu.org>
parents: 41726
diff changeset
7445 f->wants_modeline = 0;
27397
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
7446 XSETFRAME (frame, f);
40120
03eb905a4d8e (Fx_file_dialog): Pass a filter to GetOpenFileName.
Jason Rumney <jasonr@gnu.org>
parents: 40009
diff changeset
7447
03eb905a4d8e (Fx_file_dialog): Pass a filter to GetOpenFileName.
Jason Rumney <jasonr@gnu.org>
parents: 40009
diff changeset
7448 buffer = Fget_buffer_create (build_string (" *tip*"));
51211
28ea05de2dc5 Make (many) trivial substitutions for renamed and
Kim F. Storm <storm@cua.dk>
parents: 50377
diff changeset
7449 Fset_window_buffer (FRAME_ROOT_WINDOW (f), buffer, Qnil);
40120
03eb905a4d8e (Fx_file_dialog): Pass a filter to GetOpenFileName.
Jason Rumney <jasonr@gnu.org>
parents: 40009
diff changeset
7450 old_buffer = current_buffer;
03eb905a4d8e (Fx_file_dialog): Pass a filter to GetOpenFileName.
Jason Rumney <jasonr@gnu.org>
parents: 40009
diff changeset
7451 set_buffer_internal_1 (XBUFFER (buffer));
03eb905a4d8e (Fx_file_dialog): Pass a filter to GetOpenFileName.
Jason Rumney <jasonr@gnu.org>
parents: 40009
diff changeset
7452 current_buffer->truncate_lines = Qnil;
55492
43663119f752 (x_create_tip_frame): Bind inhibit-read-only and
Kenichi Handa <handa@m17n.org>
parents: 55468
diff changeset
7453 specbind (Qinhibit_read_only, Qt);
43663119f752 (x_create_tip_frame): Bind inhibit-read-only and
Kenichi Handa <handa@m17n.org>
parents: 55468
diff changeset
7454 specbind (Qinhibit_modification_hooks, Qt);
40120
03eb905a4d8e (Fx_file_dialog): Pass a filter to GetOpenFileName.
Jason Rumney <jasonr@gnu.org>
parents: 40009
diff changeset
7455 Ferase_buffer ();
03eb905a4d8e (Fx_file_dialog): Pass a filter to GetOpenFileName.
Jason Rumney <jasonr@gnu.org>
parents: 40009
diff changeset
7456 Finsert (1, &text);
03eb905a4d8e (Fx_file_dialog): Pass a filter to GetOpenFileName.
Jason Rumney <jasonr@gnu.org>
parents: 40009
diff changeset
7457 set_buffer_internal_1 (old_buffer);
47942
080b4586492b Fix typo in comment.
Juanma Barranquero <lekktu@gmail.com>
parents: 47731
diff changeset
7458
27397
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
7459 FRAME_CAN_HAVE_SCROLL_BARS (f) = 0;
34546
51be06b616bf (Fx_hide_tip): Avoid unnecessary work when there's
Andrew Innes <andrewi@gnu.org>
parents: 34314
diff changeset
7460 record_unwind_protect (unwind_create_tip_frame, frame);
27397
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
7461
40120
03eb905a4d8e (Fx_file_dialog): Pass a filter to GetOpenFileName.
Jason Rumney <jasonr@gnu.org>
parents: 40009
diff changeset
7462 /* By setting the output method, we're essentially saying that
03eb905a4d8e (Fx_file_dialog): Pass a filter to GetOpenFileName.
Jason Rumney <jasonr@gnu.org>
parents: 40009
diff changeset
7463 the frame is live, as per FRAME_LIVE_P. If we get a signal
03eb905a4d8e (Fx_file_dialog): Pass a filter to GetOpenFileName.
Jason Rumney <jasonr@gnu.org>
parents: 40009
diff changeset
7464 from this point on, x_destroy_window might screw up reference
03eb905a4d8e (Fx_file_dialog): Pass a filter to GetOpenFileName.
Jason Rumney <jasonr@gnu.org>
parents: 40009
diff changeset
7465 counts etc. */
83608
2ad761d6b244 (x_create_tip_frame): Set terminal and ref count.
Jason Rumney <jasonr@gnu.org>
parents: 83571
diff changeset
7466 f->terminal = dpyinfo->terminal;
2ad761d6b244 (x_create_tip_frame): Set terminal and ref count.
Jason Rumney <jasonr@gnu.org>
parents: 83571
diff changeset
7467 f->terminal->reference_count++;
27516
8001542eaee2 (w32_defined_color): Check for valid frame before
Jason Rumney <jasonr@gnu.org>
parents: 27407
diff changeset
7468 f->output_method = output_w32;
27397
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
7469 f->output_data.w32 =
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
7470 (struct w32_output *) xmalloc (sizeof (struct w32_output));
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
7471 bzero (f->output_data.w32, sizeof (struct w32_output));
41380
aff1b15f295b (x_window_to_frame): Remove irrelevant TODO comment.
Jason Rumney <jasonr@gnu.org>
parents: 41322
diff changeset
7472
aff1b15f295b (x_window_to_frame): Remove irrelevant TODO comment.
Jason Rumney <jasonr@gnu.org>
parents: 41322
diff changeset
7473 FRAME_FONTSET (f) = -1;
27397
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
7474 f->icon_name = Qnil;
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
7475
41380
aff1b15f295b (x_window_to_frame): Remove irrelevant TODO comment.
Jason Rumney <jasonr@gnu.org>
parents: 41322
diff changeset
7476 #if 0 /* GLYPH_DEBUG TODO: image support. */
92109
4d9fc08769fa Consolidate the image_cache to the terminal struct.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 91327
diff changeset
7477 image_cache_refcount = FRAME_IMAGE_CACHE (f)->refcount;
34546
51be06b616bf (Fx_hide_tip): Avoid unnecessary work when there's
Andrew Innes <andrewi@gnu.org>
parents: 34314
diff changeset
7478 dpyinfo_refcount = dpyinfo->reference_count;
51be06b616bf (Fx_hide_tip): Avoid unnecessary work when there's
Andrew Innes <andrewi@gnu.org>
parents: 34314
diff changeset
7479 #endif /* GLYPH_DEBUG */
27397
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
7480 #ifdef MULTI_KBOARD
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
7481 FRAME_KBOARD (f) = kb;
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
7482 #endif
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
7483 f->output_data.w32->parent_desc = FRAME_W32_DISPLAY_INFO (f)->root_window;
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
7484 f->output_data.w32->explicit_parent = 0;
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
7485
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
7486 /* Set the name; the functions to which we pass f expect the name to
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
7487 be set. */
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
7488 if (EQ (name, Qunbound) || NILP (name))
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
7489 {
41380
aff1b15f295b (x_window_to_frame): Remove irrelevant TODO comment.
Jason Rumney <jasonr@gnu.org>
parents: 41322
diff changeset
7490 f->name = build_string (dpyinfo->w32_id_name);
27397
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
7491 f->explicit_name = 0;
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
7492 }
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
7493 else
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
7494 {
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
7495 f->name = name;
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
7496 f->explicit_name = 1;
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
7497 /* use the frame's title when getting resources for this frame. */
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
7498 specbind (Qx_resource_name, name);
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
7499 }
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
7500
90893
c36f1ca93a6e (x_default_font_parameter): Use new style font name.
Jason Rumney <jasonr@gnu.org>
parents: 90878
diff changeset
7501 f->resx = dpyinfo->resx;
c36f1ca93a6e (x_default_font_parameter): Use new style font name.
Jason Rumney <jasonr@gnu.org>
parents: 90878
diff changeset
7502 f->resy = dpyinfo->resy;
c36f1ca93a6e (x_default_font_parameter): Use new style font name.
Jason Rumney <jasonr@gnu.org>
parents: 90878
diff changeset
7503
94917
e61553aa7a73 Throughout the file, delete all USE_FONT_BACKEND
Kenichi Handa <handa@m17n.org>
parents: 94618
diff changeset
7504 /* Perhaps, we must allow frame parameter, say `font-backend',
e61553aa7a73 Throughout the file, delete all USE_FONT_BACKEND
Kenichi Handa <handa@m17n.org>
parents: 94618
diff changeset
7505 to specify which font backends to use. */
e61553aa7a73 Throughout the file, delete all USE_FONT_BACKEND
Kenichi Handa <handa@m17n.org>
parents: 94618
diff changeset
7506 register_font_driver (&w32font_driver, f);
e61553aa7a73 Throughout the file, delete all USE_FONT_BACKEND
Kenichi Handa <handa@m17n.org>
parents: 94618
diff changeset
7507
e61553aa7a73 Throughout the file, delete all USE_FONT_BACKEND
Kenichi Handa <handa@m17n.org>
parents: 94618
diff changeset
7508 x_default_parameter (f, parms, Qfont_backend, Qnil,
e61553aa7a73 Throughout the file, delete all USE_FONT_BACKEND
Kenichi Handa <handa@m17n.org>
parents: 94618
diff changeset
7509 "fontBackend", "FontBackend", RES_TYPE_STRING);
90865
6d2559699bd0 [USE_FONT_BACKEND]: Port font backend changes from xfns.c.
Jason Rumney <jasonr@gnu.org>
parents: 90796
diff changeset
7510
27397
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
7511 /* Extract the window parameters from the supplied values
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
7512 that are needed to determine window geometry. */
94917
e61553aa7a73 Throughout the file, delete all USE_FONT_BACKEND
Kenichi Handa <handa@m17n.org>
parents: 94618
diff changeset
7513 x_default_font_parameter (f, parms);
27397
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
7514
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
7515 x_default_parameter (f, parms, Qborder_width, make_number (2),
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
7516 "borderWidth", "BorderWidth", RES_TYPE_NUMBER);
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
7517 /* This defaults to 2 in order to match xterm. We recognize either
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
7518 internalBorderWidth or internalBorder (which is what xterm calls
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
7519 it). */
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
7520 if (NILP (Fassq (Qinternal_border_width, parms)))
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
7521 {
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
7522 Lisp_Object value;
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
7523
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
7524 value = w32_get_arg (parms, Qinternal_border_width,
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
7525 "internalBorder", "internalBorder", RES_TYPE_NUMBER);
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
7526 if (! EQ (value, Qunbound))
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
7527 parms = Fcons (Fcons (Qinternal_border_width, value),
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
7528 parms);
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
7529 }
41448
96beda35d0fa (w32_wnd_proc) <WM_MENUSELECT>: Revert last change.
Jason Rumney <jasonr@gnu.org>
parents: 41380
diff changeset
7530 x_default_parameter (f, parms, Qinternal_border_width, make_number (1),
27397
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
7531 "internalBorderWidth", "internalBorderWidth",
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
7532 RES_TYPE_NUMBER);
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
7533
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
7534 /* Also do the stuff which must be set before the window exists. */
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
7535 x_default_parameter (f, parms, Qforeground_color, build_string ("black"),
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
7536 "foreground", "Foreground", RES_TYPE_STRING);
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
7537 x_default_parameter (f, parms, Qbackground_color, build_string ("white"),
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
7538 "background", "Background", RES_TYPE_STRING);
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
7539 x_default_parameter (f, parms, Qmouse_color, build_string ("black"),
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
7540 "pointerColor", "Foreground", RES_TYPE_STRING);
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
7541 x_default_parameter (f, parms, Qcursor_color, build_string ("black"),
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
7542 "cursorColor", "Foreground", RES_TYPE_STRING);
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
7543 x_default_parameter (f, parms, Qborder_color, build_string ("black"),
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
7544 "borderColor", "BorderColor", RES_TYPE_STRING);
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
7545
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
7546 /* Init faces before x_default_parameter is called for scroll-bar
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
7547 parameters because that function calls x_set_scroll_bar_width,
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
7548 which calls change_frame_size, which calls Fset_window_buffer,
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
7549 which runs hooks, which call Fvertical_motion. At the end, we
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
7550 end up in init_iterator with a null face cache, which should not
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
7551 happen. */
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
7552 init_frame_faces (f);
41380
aff1b15f295b (x_window_to_frame): Remove irrelevant TODO comment.
Jason Rumney <jasonr@gnu.org>
parents: 41322
diff changeset
7553
aff1b15f295b (x_window_to_frame): Remove irrelevant TODO comment.
Jason Rumney <jasonr@gnu.org>
parents: 41322
diff changeset
7554 f->output_data.w32->dwStyle = WS_BORDER | WS_POPUP | WS_DISABLED;
27397
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
7555 f->output_data.w32->parent_desc = FRAME_W32_DISPLAY_INFO (f)->root_window;
41732
0d9b74cd27cd (trackmouse_window, track_mouse_event_fn): New vars.
Jason Rumney <jasonr@gnu.org>
parents: 41726
diff changeset
7556
50362
6d942c1d5f2d * w32fns.c (Qauto_raise, Qauto_lower, ...): Remove vars for frame
Kim F. Storm <storm@cua.dk>
parents: 50229
diff changeset
7557 window_prompting = x_figure_window_size (f, parms, 0);
27397
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
7558
41732
0d9b74cd27cd (trackmouse_window, track_mouse_event_fn): New vars.
Jason Rumney <jasonr@gnu.org>
parents: 41726
diff changeset
7559 /* No fringes on tip frame. */
51211
28ea05de2dc5 Make (many) trivial substitutions for renamed and
Kim F. Storm <storm@cua.dk>
parents: 50377
diff changeset
7560 f->fringe_cols = 0;
28ea05de2dc5 Make (many) trivial substitutions for renamed and
Kim F. Storm <storm@cua.dk>
parents: 50377
diff changeset
7561 f->left_fringe_width = 0;
28ea05de2dc5 Make (many) trivial substitutions for renamed and
Kim F. Storm <storm@cua.dk>
parents: 50377
diff changeset
7562 f->right_fringe_width = 0;
41732
0d9b74cd27cd (trackmouse_window, track_mouse_event_fn): New vars.
Jason Rumney <jasonr@gnu.org>
parents: 41726
diff changeset
7563
41380
aff1b15f295b (x_window_to_frame): Remove irrelevant TODO comment.
Jason Rumney <jasonr@gnu.org>
parents: 41322
diff changeset
7564 BLOCK_INPUT;
aff1b15f295b (x_window_to_frame): Remove irrelevant TODO comment.
Jason Rumney <jasonr@gnu.org>
parents: 41322
diff changeset
7565 my_create_tip_window (f);
aff1b15f295b (x_window_to_frame): Remove irrelevant TODO comment.
Jason Rumney <jasonr@gnu.org>
parents: 41322
diff changeset
7566 UNBLOCK_INPUT;
27397
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
7567
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
7568 x_make_gc (f);
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
7569
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
7570 x_default_parameter (f, parms, Qauto_raise, Qnil,
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
7571 "autoRaise", "AutoRaiseLower", RES_TYPE_BOOLEAN);
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
7572 x_default_parameter (f, parms, Qauto_lower, Qnil,
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
7573 "autoLower", "AutoRaiseLower", RES_TYPE_BOOLEAN);
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
7574 x_default_parameter (f, parms, Qcursor_type, Qbox,
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
7575 "cursorType", "CursorType", RES_TYPE_SYMBOL);
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
7576
51211
28ea05de2dc5 Make (many) trivial substitutions for renamed and
Kim F. Storm <storm@cua.dk>
parents: 50377
diff changeset
7577 /* Dimensions, especially FRAME_LINES (f), must be done via change_frame_size.
27397
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
7578 Change will not be effected unless different from the current
51211
28ea05de2dc5 Make (many) trivial substitutions for renamed and
Kim F. Storm <storm@cua.dk>
parents: 50377
diff changeset
7579 FRAME_LINES (f). */
28ea05de2dc5 Make (many) trivial substitutions for renamed and
Kim F. Storm <storm@cua.dk>
parents: 50377
diff changeset
7580 width = FRAME_COLS (f);
28ea05de2dc5 Make (many) trivial substitutions for renamed and
Kim F. Storm <storm@cua.dk>
parents: 50377
diff changeset
7581 height = FRAME_LINES (f);
28ea05de2dc5 Make (many) trivial substitutions for renamed and
Kim F. Storm <storm@cua.dk>
parents: 50377
diff changeset
7582 FRAME_LINES (f) = 0;
28ea05de2dc5 Make (many) trivial substitutions for renamed and
Kim F. Storm <storm@cua.dk>
parents: 50377
diff changeset
7583 SET_FRAME_COLS (f, 0);
27397
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
7584 change_frame_size (f, height, width, 1, 0, 0);
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
7585
47731
755c4233cfba * frame.c (Vdelete_frame_functions): New variable.
John Paul Wallington <jpw@pobox.com>
parents: 47161
diff changeset
7586 /* Add `tooltip' frame parameter's default value. */
755c4233cfba * frame.c (Vdelete_frame_functions): New variable.
John Paul Wallington <jpw@pobox.com>
parents: 47161
diff changeset
7587 if (NILP (Fframe_parameter (frame, intern ("tooltip"))))
755c4233cfba * frame.c (Vdelete_frame_functions): New variable.
John Paul Wallington <jpw@pobox.com>
parents: 47161
diff changeset
7588 Fmodify_frame_parameters (frame, Fcons (Fcons (intern ("tooltip"), Qt),
755c4233cfba * frame.c (Vdelete_frame_functions): New variable.
John Paul Wallington <jpw@pobox.com>
parents: 47161
diff changeset
7589 Qnil));
47942
080b4586492b Fix typo in comment.
Juanma Barranquero <lekktu@gmail.com>
parents: 47731
diff changeset
7590
40120
03eb905a4d8e (Fx_file_dialog): Pass a filter to GetOpenFileName.
Jason Rumney <jasonr@gnu.org>
parents: 40009
diff changeset
7591 /* Set up faces after all frame parameters are known. This call
03eb905a4d8e (Fx_file_dialog): Pass a filter to GetOpenFileName.
Jason Rumney <jasonr@gnu.org>
parents: 40009
diff changeset
7592 also merges in face attributes specified for new frames.
03eb905a4d8e (Fx_file_dialog): Pass a filter to GetOpenFileName.
Jason Rumney <jasonr@gnu.org>
parents: 40009
diff changeset
7593
03eb905a4d8e (Fx_file_dialog): Pass a filter to GetOpenFileName.
Jason Rumney <jasonr@gnu.org>
parents: 40009
diff changeset
7594 Frame parameters may be changed if .Xdefaults contains
03eb905a4d8e (Fx_file_dialog): Pass a filter to GetOpenFileName.
Jason Rumney <jasonr@gnu.org>
parents: 40009
diff changeset
7595 specifications for the default font. For example, if there is an
03eb905a4d8e (Fx_file_dialog): Pass a filter to GetOpenFileName.
Jason Rumney <jasonr@gnu.org>
parents: 40009
diff changeset
7596 `Emacs.default.attributeBackground: pink', the `background-color'
03eb905a4d8e (Fx_file_dialog): Pass a filter to GetOpenFileName.
Jason Rumney <jasonr@gnu.org>
parents: 40009
diff changeset
7597 attribute of the frame get's set, which let's the internal border
03eb905a4d8e (Fx_file_dialog): Pass a filter to GetOpenFileName.
Jason Rumney <jasonr@gnu.org>
parents: 40009
diff changeset
7598 of the tooltip frame appear in pink. Prevent this. */
03eb905a4d8e (Fx_file_dialog): Pass a filter to GetOpenFileName.
Jason Rumney <jasonr@gnu.org>
parents: 40009
diff changeset
7599 {
03eb905a4d8e (Fx_file_dialog): Pass a filter to GetOpenFileName.
Jason Rumney <jasonr@gnu.org>
parents: 40009
diff changeset
7600 Lisp_Object bg = Fframe_parameter (frame, Qbackground_color);
03eb905a4d8e (Fx_file_dialog): Pass a filter to GetOpenFileName.
Jason Rumney <jasonr@gnu.org>
parents: 40009
diff changeset
7601
03eb905a4d8e (Fx_file_dialog): Pass a filter to GetOpenFileName.
Jason Rumney <jasonr@gnu.org>
parents: 40009
diff changeset
7602 /* Set tip_frame here, so that */
03eb905a4d8e (Fx_file_dialog): Pass a filter to GetOpenFileName.
Jason Rumney <jasonr@gnu.org>
parents: 40009
diff changeset
7603 tip_frame = frame;
03eb905a4d8e (Fx_file_dialog): Pass a filter to GetOpenFileName.
Jason Rumney <jasonr@gnu.org>
parents: 40009
diff changeset
7604 call1 (Qface_set_after_frame_default, frame);
47942
080b4586492b Fix typo in comment.
Juanma Barranquero <lekktu@gmail.com>
parents: 47731
diff changeset
7605
40120
03eb905a4d8e (Fx_file_dialog): Pass a filter to GetOpenFileName.
Jason Rumney <jasonr@gnu.org>
parents: 40009
diff changeset
7606 if (!EQ (bg, Fframe_parameter (frame, Qbackground_color)))
03eb905a4d8e (Fx_file_dialog): Pass a filter to GetOpenFileName.
Jason Rumney <jasonr@gnu.org>
parents: 40009
diff changeset
7607 Fmodify_frame_parameters (frame, Fcons (Fcons (Qbackground_color, bg),
03eb905a4d8e (Fx_file_dialog): Pass a filter to GetOpenFileName.
Jason Rumney <jasonr@gnu.org>
parents: 40009
diff changeset
7608 Qnil));
03eb905a4d8e (Fx_file_dialog): Pass a filter to GetOpenFileName.
Jason Rumney <jasonr@gnu.org>
parents: 40009
diff changeset
7609 }
47942
080b4586492b Fix typo in comment.
Juanma Barranquero <lekktu@gmail.com>
parents: 47731
diff changeset
7610
27397
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
7611 f->no_split = 1;
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
7612
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
7613 UNGCPRO;
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
7614
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
7615 /* It is now ok to make the frame official even if we get an error
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
7616 below. And the frame needs to be on Vframe_list or making it
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
7617 visible won't work. */
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
7618 Vframe_list = Fcons (frame, Vframe_list);
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
7619
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
7620 /* Now that the frame is official, it counts as a reference to
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
7621 its display. */
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
7622 FRAME_W32_DISPLAY_INFO (f)->reference_count++;
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
7623
40120
03eb905a4d8e (Fx_file_dialog): Pass a filter to GetOpenFileName.
Jason Rumney <jasonr@gnu.org>
parents: 40009
diff changeset
7624 /* Setting attributes of faces of the tooltip frame from resources
03eb905a4d8e (Fx_file_dialog): Pass a filter to GetOpenFileName.
Jason Rumney <jasonr@gnu.org>
parents: 40009
diff changeset
7625 and similar will increment face_change_count, which leads to the
03eb905a4d8e (Fx_file_dialog): Pass a filter to GetOpenFileName.
Jason Rumney <jasonr@gnu.org>
parents: 40009
diff changeset
7626 clearing of all current matrices. Since this isn't necessary
03eb905a4d8e (Fx_file_dialog): Pass a filter to GetOpenFileName.
Jason Rumney <jasonr@gnu.org>
parents: 40009
diff changeset
7627 here, avoid it by resetting face_change_count to the value it
03eb905a4d8e (Fx_file_dialog): Pass a filter to GetOpenFileName.
Jason Rumney <jasonr@gnu.org>
parents: 40009
diff changeset
7628 had before we created the tip frame. */
03eb905a4d8e (Fx_file_dialog): Pass a filter to GetOpenFileName.
Jason Rumney <jasonr@gnu.org>
parents: 40009
diff changeset
7629 face_change_count = face_change_count_before;
03eb905a4d8e (Fx_file_dialog): Pass a filter to GetOpenFileName.
Jason Rumney <jasonr@gnu.org>
parents: 40009
diff changeset
7630
03eb905a4d8e (Fx_file_dialog): Pass a filter to GetOpenFileName.
Jason Rumney <jasonr@gnu.org>
parents: 40009
diff changeset
7631 /* Discard the unwind_protect. */
27397
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
7632 return unbind_to (count, frame);
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
7633 }
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
7634
40120
03eb905a4d8e (Fx_file_dialog): Pass a filter to GetOpenFileName.
Jason Rumney <jasonr@gnu.org>
parents: 40009
diff changeset
7635
03eb905a4d8e (Fx_file_dialog): Pass a filter to GetOpenFileName.
Jason Rumney <jasonr@gnu.org>
parents: 40009
diff changeset
7636 /* Compute where to display tip frame F. PARMS is the list of frame
03eb905a4d8e (Fx_file_dialog): Pass a filter to GetOpenFileName.
Jason Rumney <jasonr@gnu.org>
parents: 40009
diff changeset
7637 parameters for F. DX and DY are specified offsets from the current
03eb905a4d8e (Fx_file_dialog): Pass a filter to GetOpenFileName.
Jason Rumney <jasonr@gnu.org>
parents: 40009
diff changeset
7638 location of the mouse. WIDTH and HEIGHT are the width and height
03eb905a4d8e (Fx_file_dialog): Pass a filter to GetOpenFileName.
Jason Rumney <jasonr@gnu.org>
parents: 40009
diff changeset
7639 of the tooltip. Return coordinates relative to the root window of
03eb905a4d8e (Fx_file_dialog): Pass a filter to GetOpenFileName.
Jason Rumney <jasonr@gnu.org>
parents: 40009
diff changeset
7640 the display in *ROOT_X, and *ROOT_Y. */
03eb905a4d8e (Fx_file_dialog): Pass a filter to GetOpenFileName.
Jason Rumney <jasonr@gnu.org>
parents: 40009
diff changeset
7641
03eb905a4d8e (Fx_file_dialog): Pass a filter to GetOpenFileName.
Jason Rumney <jasonr@gnu.org>
parents: 40009
diff changeset
7642 static void
03eb905a4d8e (Fx_file_dialog): Pass a filter to GetOpenFileName.
Jason Rumney <jasonr@gnu.org>
parents: 40009
diff changeset
7643 compute_tip_xy (f, parms, dx, dy, width, height, root_x, root_y)
03eb905a4d8e (Fx_file_dialog): Pass a filter to GetOpenFileName.
Jason Rumney <jasonr@gnu.org>
parents: 40009
diff changeset
7644 struct frame *f;
03eb905a4d8e (Fx_file_dialog): Pass a filter to GetOpenFileName.
Jason Rumney <jasonr@gnu.org>
parents: 40009
diff changeset
7645 Lisp_Object parms, dx, dy;
03eb905a4d8e (Fx_file_dialog): Pass a filter to GetOpenFileName.
Jason Rumney <jasonr@gnu.org>
parents: 40009
diff changeset
7646 int width, height;
03eb905a4d8e (Fx_file_dialog): Pass a filter to GetOpenFileName.
Jason Rumney <jasonr@gnu.org>
parents: 40009
diff changeset
7647 int *root_x, *root_y;
03eb905a4d8e (Fx_file_dialog): Pass a filter to GetOpenFileName.
Jason Rumney <jasonr@gnu.org>
parents: 40009
diff changeset
7648 {
03eb905a4d8e (Fx_file_dialog): Pass a filter to GetOpenFileName.
Jason Rumney <jasonr@gnu.org>
parents: 40009
diff changeset
7649 Lisp_Object left, top;
92935
c99b62a964c4 (MONITOR_DEFAULT_TO_NEAREST, struct MONITOR_INFO)
Jason Rumney <jasonr@gnu.org>
parents: 92362
diff changeset
7650 int min_x, min_y, max_x, max_y;
47942
080b4586492b Fix typo in comment.
Juanma Barranquero <lekktu@gmail.com>
parents: 47731
diff changeset
7651
40120
03eb905a4d8e (Fx_file_dialog): Pass a filter to GetOpenFileName.
Jason Rumney <jasonr@gnu.org>
parents: 40009
diff changeset
7652 /* User-specified position? */
03eb905a4d8e (Fx_file_dialog): Pass a filter to GetOpenFileName.
Jason Rumney <jasonr@gnu.org>
parents: 40009
diff changeset
7653 left = Fcdr (Fassq (Qleft, parms));
03eb905a4d8e (Fx_file_dialog): Pass a filter to GetOpenFileName.
Jason Rumney <jasonr@gnu.org>
parents: 40009
diff changeset
7654 top = Fcdr (Fassq (Qtop, parms));
47942
080b4586492b Fix typo in comment.
Juanma Barranquero <lekktu@gmail.com>
parents: 47731
diff changeset
7655
40120
03eb905a4d8e (Fx_file_dialog): Pass a filter to GetOpenFileName.
Jason Rumney <jasonr@gnu.org>
parents: 40009
diff changeset
7656 /* Move the tooltip window where the mouse pointer is. Resize and
03eb905a4d8e (Fx_file_dialog): Pass a filter to GetOpenFileName.
Jason Rumney <jasonr@gnu.org>
parents: 40009
diff changeset
7657 show it. */
41380
aff1b15f295b (x_window_to_frame): Remove irrelevant TODO comment.
Jason Rumney <jasonr@gnu.org>
parents: 41322
diff changeset
7658 if (!INTEGERP (left) || !INTEGERP (top))
aff1b15f295b (x_window_to_frame): Remove irrelevant TODO comment.
Jason Rumney <jasonr@gnu.org>
parents: 41322
diff changeset
7659 {
aff1b15f295b (x_window_to_frame): Remove irrelevant TODO comment.
Jason Rumney <jasonr@gnu.org>
parents: 41322
diff changeset
7660 POINT pt;
aff1b15f295b (x_window_to_frame): Remove irrelevant TODO comment.
Jason Rumney <jasonr@gnu.org>
parents: 41322
diff changeset
7661
92935
c99b62a964c4 (MONITOR_DEFAULT_TO_NEAREST, struct MONITOR_INFO)
Jason Rumney <jasonr@gnu.org>
parents: 92362
diff changeset
7662 /* Default min and max values. */
c99b62a964c4 (MONITOR_DEFAULT_TO_NEAREST, struct MONITOR_INFO)
Jason Rumney <jasonr@gnu.org>
parents: 92362
diff changeset
7663 min_x = 0;
c99b62a964c4 (MONITOR_DEFAULT_TO_NEAREST, struct MONITOR_INFO)
Jason Rumney <jasonr@gnu.org>
parents: 92362
diff changeset
7664 min_y = 0;
c99b62a964c4 (MONITOR_DEFAULT_TO_NEAREST, struct MONITOR_INFO)
Jason Rumney <jasonr@gnu.org>
parents: 92362
diff changeset
7665 max_x = FRAME_W32_DISPLAY_INFO (f)->width;
c99b62a964c4 (MONITOR_DEFAULT_TO_NEAREST, struct MONITOR_INFO)
Jason Rumney <jasonr@gnu.org>
parents: 92362
diff changeset
7666 max_y = FRAME_W32_DISPLAY_INFO (f)->height;
c99b62a964c4 (MONITOR_DEFAULT_TO_NEAREST, struct MONITOR_INFO)
Jason Rumney <jasonr@gnu.org>
parents: 92362
diff changeset
7667
40120
03eb905a4d8e (Fx_file_dialog): Pass a filter to GetOpenFileName.
Jason Rumney <jasonr@gnu.org>
parents: 40009
diff changeset
7668 BLOCK_INPUT;
41380
aff1b15f295b (x_window_to_frame): Remove irrelevant TODO comment.
Jason Rumney <jasonr@gnu.org>
parents: 41322
diff changeset
7669 GetCursorPos (&pt);
aff1b15f295b (x_window_to_frame): Remove irrelevant TODO comment.
Jason Rumney <jasonr@gnu.org>
parents: 41322
diff changeset
7670 *root_x = pt.x;
aff1b15f295b (x_window_to_frame): Remove irrelevant TODO comment.
Jason Rumney <jasonr@gnu.org>
parents: 41322
diff changeset
7671 *root_y = pt.y;
40120
03eb905a4d8e (Fx_file_dialog): Pass a filter to GetOpenFileName.
Jason Rumney <jasonr@gnu.org>
parents: 40009
diff changeset
7672 UNBLOCK_INPUT;
92935
c99b62a964c4 (MONITOR_DEFAULT_TO_NEAREST, struct MONITOR_INFO)
Jason Rumney <jasonr@gnu.org>
parents: 92362
diff changeset
7673
c99b62a964c4 (MONITOR_DEFAULT_TO_NEAREST, struct MONITOR_INFO)
Jason Rumney <jasonr@gnu.org>
parents: 92362
diff changeset
7674 /* If multiple monitor support is available, constrain the tip onto
c99b62a964c4 (MONITOR_DEFAULT_TO_NEAREST, struct MONITOR_INFO)
Jason Rumney <jasonr@gnu.org>
parents: 92362
diff changeset
7675 the current monitor. This improves the above by allowing negative
c99b62a964c4 (MONITOR_DEFAULT_TO_NEAREST, struct MONITOR_INFO)
Jason Rumney <jasonr@gnu.org>
parents: 92362
diff changeset
7676 co-ordinates if monitor positions are such that they are valid, and
c99b62a964c4 (MONITOR_DEFAULT_TO_NEAREST, struct MONITOR_INFO)
Jason Rumney <jasonr@gnu.org>
parents: 92362
diff changeset
7677 snaps a tooltip onto a single monitor if we are close to the edge
c99b62a964c4 (MONITOR_DEFAULT_TO_NEAREST, struct MONITOR_INFO)
Jason Rumney <jasonr@gnu.org>
parents: 92362
diff changeset
7678 where it would otherwise flow onto the other monitor (or into
c99b62a964c4 (MONITOR_DEFAULT_TO_NEAREST, struct MONITOR_INFO)
Jason Rumney <jasonr@gnu.org>
parents: 92362
diff changeset
7679 nothingness if there is a gap in the overlap). */
c99b62a964c4 (MONITOR_DEFAULT_TO_NEAREST, struct MONITOR_INFO)
Jason Rumney <jasonr@gnu.org>
parents: 92362
diff changeset
7680 if (monitor_from_point_fn && get_monitor_info_fn)
c99b62a964c4 (MONITOR_DEFAULT_TO_NEAREST, struct MONITOR_INFO)
Jason Rumney <jasonr@gnu.org>
parents: 92362
diff changeset
7681 {
c99b62a964c4 (MONITOR_DEFAULT_TO_NEAREST, struct MONITOR_INFO)
Jason Rumney <jasonr@gnu.org>
parents: 92362
diff changeset
7682 struct MONITOR_INFO info;
c99b62a964c4 (MONITOR_DEFAULT_TO_NEAREST, struct MONITOR_INFO)
Jason Rumney <jasonr@gnu.org>
parents: 92362
diff changeset
7683 HMONITOR monitor
c99b62a964c4 (MONITOR_DEFAULT_TO_NEAREST, struct MONITOR_INFO)
Jason Rumney <jasonr@gnu.org>
parents: 92362
diff changeset
7684 = monitor_from_point_fn (pt, MONITOR_DEFAULT_TO_NEAREST);
c99b62a964c4 (MONITOR_DEFAULT_TO_NEAREST, struct MONITOR_INFO)
Jason Rumney <jasonr@gnu.org>
parents: 92362
diff changeset
7685 info.cbSize = sizeof (info);
c99b62a964c4 (MONITOR_DEFAULT_TO_NEAREST, struct MONITOR_INFO)
Jason Rumney <jasonr@gnu.org>
parents: 92362
diff changeset
7686
c99b62a964c4 (MONITOR_DEFAULT_TO_NEAREST, struct MONITOR_INFO)
Jason Rumney <jasonr@gnu.org>
parents: 92362
diff changeset
7687 if (get_monitor_info_fn (monitor, &info))
c99b62a964c4 (MONITOR_DEFAULT_TO_NEAREST, struct MONITOR_INFO)
Jason Rumney <jasonr@gnu.org>
parents: 92362
diff changeset
7688 {
c99b62a964c4 (MONITOR_DEFAULT_TO_NEAREST, struct MONITOR_INFO)
Jason Rumney <jasonr@gnu.org>
parents: 92362
diff changeset
7689 min_x = info.rcWork.left;
c99b62a964c4 (MONITOR_DEFAULT_TO_NEAREST, struct MONITOR_INFO)
Jason Rumney <jasonr@gnu.org>
parents: 92362
diff changeset
7690 min_y = info.rcWork.top;
c99b62a964c4 (MONITOR_DEFAULT_TO_NEAREST, struct MONITOR_INFO)
Jason Rumney <jasonr@gnu.org>
parents: 92362
diff changeset
7691 max_x = info.rcWork.right;
c99b62a964c4 (MONITOR_DEFAULT_TO_NEAREST, struct MONITOR_INFO)
Jason Rumney <jasonr@gnu.org>
parents: 92362
diff changeset
7692 max_y = info.rcWork.bottom;
c99b62a964c4 (MONITOR_DEFAULT_TO_NEAREST, struct MONITOR_INFO)
Jason Rumney <jasonr@gnu.org>
parents: 92362
diff changeset
7693 }
c99b62a964c4 (MONITOR_DEFAULT_TO_NEAREST, struct MONITOR_INFO)
Jason Rumney <jasonr@gnu.org>
parents: 92362
diff changeset
7694 }
40120
03eb905a4d8e (Fx_file_dialog): Pass a filter to GetOpenFileName.
Jason Rumney <jasonr@gnu.org>
parents: 40009
diff changeset
7695 }
03eb905a4d8e (Fx_file_dialog): Pass a filter to GetOpenFileName.
Jason Rumney <jasonr@gnu.org>
parents: 40009
diff changeset
7696
03eb905a4d8e (Fx_file_dialog): Pass a filter to GetOpenFileName.
Jason Rumney <jasonr@gnu.org>
parents: 40009
diff changeset
7697 if (INTEGERP (top))
03eb905a4d8e (Fx_file_dialog): Pass a filter to GetOpenFileName.
Jason Rumney <jasonr@gnu.org>
parents: 40009
diff changeset
7698 *root_y = XINT (top);
92935
c99b62a964c4 (MONITOR_DEFAULT_TO_NEAREST, struct MONITOR_INFO)
Jason Rumney <jasonr@gnu.org>
parents: 92362
diff changeset
7699 else if (*root_y + XINT (dy) <= min_y)
c99b62a964c4 (MONITOR_DEFAULT_TO_NEAREST, struct MONITOR_INFO)
Jason Rumney <jasonr@gnu.org>
parents: 92362
diff changeset
7700 *root_y = min_y; /* Can happen for negative dy */
c99b62a964c4 (MONITOR_DEFAULT_TO_NEAREST, struct MONITOR_INFO)
Jason Rumney <jasonr@gnu.org>
parents: 92362
diff changeset
7701 else if (*root_y + XINT (dy) + height <= max_y)
67530
5b6c71adc503 * (compute_tip_xy): Calculate root_y the same way as root_x,
Jan Djärv <jan.h.d@swipnet.se>
parents: 67438
diff changeset
7702 /* It fits below the pointer */
5b6c71adc503 * (compute_tip_xy): Calculate root_y the same way as root_x,
Jan Djärv <jan.h.d@swipnet.se>
parents: 67438
diff changeset
7703 *root_y += XINT (dy);
92935
c99b62a964c4 (MONITOR_DEFAULT_TO_NEAREST, struct MONITOR_INFO)
Jason Rumney <jasonr@gnu.org>
parents: 92362
diff changeset
7704 else if (height + XINT (dy) + min_y <= *root_y)
67530
5b6c71adc503 * (compute_tip_xy): Calculate root_y the same way as root_x,
Jan Djärv <jan.h.d@swipnet.se>
parents: 67438
diff changeset
7705 /* It fits above the pointer. */
5b6c71adc503 * (compute_tip_xy): Calculate root_y the same way as root_x,
Jan Djärv <jan.h.d@swipnet.se>
parents: 67438
diff changeset
7706 *root_y -= height + XINT (dy);
40120
03eb905a4d8e (Fx_file_dialog): Pass a filter to GetOpenFileName.
Jason Rumney <jasonr@gnu.org>
parents: 40009
diff changeset
7707 else
67530
5b6c71adc503 * (compute_tip_xy): Calculate root_y the same way as root_x,
Jan Djärv <jan.h.d@swipnet.se>
parents: 67438
diff changeset
7708 /* Put it on the top. */
92935
c99b62a964c4 (MONITOR_DEFAULT_TO_NEAREST, struct MONITOR_INFO)
Jason Rumney <jasonr@gnu.org>
parents: 92362
diff changeset
7709 *root_y = min_y;
40120
03eb905a4d8e (Fx_file_dialog): Pass a filter to GetOpenFileName.
Jason Rumney <jasonr@gnu.org>
parents: 40009
diff changeset
7710
03eb905a4d8e (Fx_file_dialog): Pass a filter to GetOpenFileName.
Jason Rumney <jasonr@gnu.org>
parents: 40009
diff changeset
7711 if (INTEGERP (left))
03eb905a4d8e (Fx_file_dialog): Pass a filter to GetOpenFileName.
Jason Rumney <jasonr@gnu.org>
parents: 40009
diff changeset
7712 *root_x = XINT (left);
92935
c99b62a964c4 (MONITOR_DEFAULT_TO_NEAREST, struct MONITOR_INFO)
Jason Rumney <jasonr@gnu.org>
parents: 92362
diff changeset
7713 else if (*root_x + XINT (dx) <= min_x)
67581
05d48e1da3ad * xfns.c (compute_tip_xy): Handle negative dx and dy.
Jan Djärv <jan.h.d@swipnet.se>
parents: 67530
diff changeset
7714 *root_x = 0; /* Can happen for negative dx */
92935
c99b62a964c4 (MONITOR_DEFAULT_TO_NEAREST, struct MONITOR_INFO)
Jason Rumney <jasonr@gnu.org>
parents: 92362
diff changeset
7715 else if (*root_x + XINT (dx) + width <= max_x)
42537
f0e15bcba768 (compute_tip_xy): If tooltip won't fit on the screen
Jason Rumney <jasonr@gnu.org>
parents: 42007
diff changeset
7716 /* It fits to the right of the pointer. */
f0e15bcba768 (compute_tip_xy): If tooltip won't fit on the screen
Jason Rumney <jasonr@gnu.org>
parents: 42007
diff changeset
7717 *root_x += XINT (dx);
92935
c99b62a964c4 (MONITOR_DEFAULT_TO_NEAREST, struct MONITOR_INFO)
Jason Rumney <jasonr@gnu.org>
parents: 92362
diff changeset
7718 else if (width + XINT (dx) + min_x <= *root_x)
42537
f0e15bcba768 (compute_tip_xy): If tooltip won't fit on the screen
Jason Rumney <jasonr@gnu.org>
parents: 42007
diff changeset
7719 /* It fits to the left of the pointer. */
40120
03eb905a4d8e (Fx_file_dialog): Pass a filter to GetOpenFileName.
Jason Rumney <jasonr@gnu.org>
parents: 40009
diff changeset
7720 *root_x -= width + XINT (dx);
03eb905a4d8e (Fx_file_dialog): Pass a filter to GetOpenFileName.
Jason Rumney <jasonr@gnu.org>
parents: 40009
diff changeset
7721 else
42537
f0e15bcba768 (compute_tip_xy): If tooltip won't fit on the screen
Jason Rumney <jasonr@gnu.org>
parents: 42007
diff changeset
7722 /* Put it left justified on the screen -- it ought to fit that way. */
92935
c99b62a964c4 (MONITOR_DEFAULT_TO_NEAREST, struct MONITOR_INFO)
Jason Rumney <jasonr@gnu.org>
parents: 92362
diff changeset
7723 *root_x = min_x;
41380
aff1b15f295b (x_window_to_frame): Remove irrelevant TODO comment.
Jason Rumney <jasonr@gnu.org>
parents: 41322
diff changeset
7724 }
aff1b15f295b (x_window_to_frame): Remove irrelevant TODO comment.
Jason Rumney <jasonr@gnu.org>
parents: 41322
diff changeset
7725
aff1b15f295b (x_window_to_frame): Remove irrelevant TODO comment.
Jason Rumney <jasonr@gnu.org>
parents: 41322
diff changeset
7726
31110
9feda85db5d6 (max): Define macro.
Andrew Innes <andrewi@gnu.org>
parents: 30601
diff changeset
7727 DEFUN ("x-show-tip", Fx_show_tip, Sx_show_tip, 1, 6, 0,
40964
fb970d0c56eb Change doc-string comments to `new style'. [w/`doc:' keyword]. Doc fixes.
Jason Rumney <jasonr@gnu.org>
parents: 40873
diff changeset
7728 doc: /* Show STRING in a \"tooltip\" window on frame FRAME.
fb970d0c56eb Change doc-string comments to `new style'. [w/`doc:' keyword]. Doc fixes.
Jason Rumney <jasonr@gnu.org>
parents: 40873
diff changeset
7729 A tooltip window is a small window displaying a string.
fb970d0c56eb Change doc-string comments to `new style'. [w/`doc:' keyword]. Doc fixes.
Jason Rumney <jasonr@gnu.org>
parents: 40873
diff changeset
7730
76700
742ee8b5b284 (Fx_show_tip): Doc fix.
Eli Zaretskii <eliz@gnu.org>
parents: 76083
diff changeset
7731 This is an internal function; Lisp code should call `tooltip-show'.
742ee8b5b284 (Fx_show_tip): Doc fix.
Eli Zaretskii <eliz@gnu.org>
parents: 76083
diff changeset
7732
40964
fb970d0c56eb Change doc-string comments to `new style'. [w/`doc:' keyword]. Doc fixes.
Jason Rumney <jasonr@gnu.org>
parents: 40873
diff changeset
7733 FRAME nil or omitted means use the selected frame.
fb970d0c56eb Change doc-string comments to `new style'. [w/`doc:' keyword]. Doc fixes.
Jason Rumney <jasonr@gnu.org>
parents: 40873
diff changeset
7734
fb970d0c56eb Change doc-string comments to `new style'. [w/`doc:' keyword]. Doc fixes.
Jason Rumney <jasonr@gnu.org>
parents: 40873
diff changeset
7735 PARMS is an optional list of frame parameters which can be
fb970d0c56eb Change doc-string comments to `new style'. [w/`doc:' keyword]. Doc fixes.
Jason Rumney <jasonr@gnu.org>
parents: 40873
diff changeset
7736 used to change the tooltip's appearance.
fb970d0c56eb Change doc-string comments to `new style'. [w/`doc:' keyword]. Doc fixes.
Jason Rumney <jasonr@gnu.org>
parents: 40873
diff changeset
7737
41380
aff1b15f295b (x_window_to_frame): Remove irrelevant TODO comment.
Jason Rumney <jasonr@gnu.org>
parents: 41322
diff changeset
7738 Automatically hide the tooltip after TIMEOUT seconds. TIMEOUT nil
aff1b15f295b (x_window_to_frame): Remove irrelevant TODO comment.
Jason Rumney <jasonr@gnu.org>
parents: 41322
diff changeset
7739 means use the default timeout of 5 seconds.
aff1b15f295b (x_window_to_frame): Remove irrelevant TODO comment.
Jason Rumney <jasonr@gnu.org>
parents: 41322
diff changeset
7740
55892
c12c7852c322 (Fx_display_grayscale_p, Fw32_send_sys_command, Vw32_color_map):
Juanma Barranquero <lekktu@gmail.com>
parents: 55673
diff changeset
7741 If the list of frame parameters PARMS contains a `left' parameter,
40964
fb970d0c56eb Change doc-string comments to `new style'. [w/`doc:' keyword]. Doc fixes.
Jason Rumney <jasonr@gnu.org>
parents: 40873
diff changeset
7742 the tooltip is displayed at that x-position. Otherwise it is
fb970d0c56eb Change doc-string comments to `new style'. [w/`doc:' keyword]. Doc fixes.
Jason Rumney <jasonr@gnu.org>
parents: 40873
diff changeset
7743 displayed at the mouse position, with offset DX added (default is 5 if
fb970d0c56eb Change doc-string comments to `new style'. [w/`doc:' keyword]. Doc fixes.
Jason Rumney <jasonr@gnu.org>
parents: 40873
diff changeset
7744 DX isn't specified). Likewise for the y-position; if a `top' frame
fb970d0c56eb Change doc-string comments to `new style'. [w/`doc:' keyword]. Doc fixes.
Jason Rumney <jasonr@gnu.org>
parents: 40873
diff changeset
7745 parameter is specified, it determines the y-position of the tooltip
fb970d0c56eb Change doc-string comments to `new style'. [w/`doc:' keyword]. Doc fixes.
Jason Rumney <jasonr@gnu.org>
parents: 40873
diff changeset
7746 window, otherwise it is displayed at the mouse position, with offset
fb970d0c56eb Change doc-string comments to `new style'. [w/`doc:' keyword]. Doc fixes.
Jason Rumney <jasonr@gnu.org>
parents: 40873
diff changeset
7747 DY added (default is -10).
fb970d0c56eb Change doc-string comments to `new style'. [w/`doc:' keyword]. Doc fixes.
Jason Rumney <jasonr@gnu.org>
parents: 40873
diff changeset
7748
fb970d0c56eb Change doc-string comments to `new style'. [w/`doc:' keyword]. Doc fixes.
Jason Rumney <jasonr@gnu.org>
parents: 40873
diff changeset
7749 A tooltip's maximum size is specified by `x-max-tooltip-size'.
fb970d0c56eb Change doc-string comments to `new style'. [w/`doc:' keyword]. Doc fixes.
Jason Rumney <jasonr@gnu.org>
parents: 40873
diff changeset
7750 Text larger than the specified size is clipped. */)
31110
9feda85db5d6 (max): Define macro.
Andrew Innes <andrewi@gnu.org>
parents: 30601
diff changeset
7751 (string, frame, parms, timeout, dx, dy)
9feda85db5d6 (max): Define macro.
Andrew Innes <andrewi@gnu.org>
parents: 30601
diff changeset
7752 Lisp_Object string, frame, parms, timeout, dx, dy;
27397
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
7753 {
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
7754 struct frame *f;
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
7755 struct window *w;
40120
03eb905a4d8e (Fx_file_dialog): Pass a filter to GetOpenFileName.
Jason Rumney <jasonr@gnu.org>
parents: 40009
diff changeset
7756 int root_x, root_y;
27397
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
7757 struct buffer *old_buffer;
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
7758 struct text_pos pos;
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
7759 int i, width, height;
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
7760 struct gcpro gcpro1, gcpro2, gcpro3, gcpro4;
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
7761 int old_windows_or_buffers_changed = windows_or_buffers_changed;
46285
3f111801efb4 Rename BINDING_STACK_SIZE to SPECPDL_INDEX.
Juanma Barranquero <lekktu@gmail.com>
parents: 46272
diff changeset
7762 int count = SPECPDL_INDEX ();
47942
080b4586492b Fix typo in comment.
Juanma Barranquero <lekktu@gmail.com>
parents: 47731
diff changeset
7763
27397
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
7764 specbind (Qinhibit_redisplay, Qt);
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
7765
29317
2d3d5bf49d4e Format and doc changes to bring closer to xfns.c.
Jason Rumney <jasonr@gnu.org>
parents: 29021
diff changeset
7766 GCPRO4 (string, parms, frame, timeout);
27397
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
7767
40656
cdfd4d09b79a Update usage of CHECK_ macros (remove unused second argument).
Pavel Janík <Pavel@Janik.cz>
parents: 40528
diff changeset
7768 CHECK_STRING (string);
27397
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
7769 f = check_x_frame (frame);
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
7770 if (NILP (timeout))
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
7771 timeout = make_number (5);
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
7772 else
40656
cdfd4d09b79a Update usage of CHECK_ macros (remove unused second argument).
Pavel Janík <Pavel@Janik.cz>
parents: 40528
diff changeset
7773 CHECK_NATNUM (timeout);
27397
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
7774
31110
9feda85db5d6 (max): Define macro.
Andrew Innes <andrewi@gnu.org>
parents: 30601
diff changeset
7775 if (NILP (dx))
9feda85db5d6 (max): Define macro.
Andrew Innes <andrewi@gnu.org>
parents: 30601
diff changeset
7776 dx = make_number (5);
9feda85db5d6 (max): Define macro.
Andrew Innes <andrewi@gnu.org>
parents: 30601
diff changeset
7777 else
40656
cdfd4d09b79a Update usage of CHECK_ macros (remove unused second argument).
Pavel Janík <Pavel@Janik.cz>
parents: 40528
diff changeset
7778 CHECK_NUMBER (dx);
47942
080b4586492b Fix typo in comment.
Juanma Barranquero <lekktu@gmail.com>
parents: 47731
diff changeset
7779
31110
9feda85db5d6 (max): Define macro.
Andrew Innes <andrewi@gnu.org>
parents: 30601
diff changeset
7780 if (NILP (dy))
36000
f4a0b086cc5d (Fx_show_tip): Fix calls to make_number.
Jason Rumney <jasonr@gnu.org>
parents: 35674
diff changeset
7781 dy = make_number (-10);
31110
9feda85db5d6 (max): Define macro.
Andrew Innes <andrewi@gnu.org>
parents: 30601
diff changeset
7782 else
40656
cdfd4d09b79a Update usage of CHECK_ macros (remove unused second argument).
Pavel Janík <Pavel@Janik.cz>
parents: 40528
diff changeset
7783 CHECK_NUMBER (dy);
31110
9feda85db5d6 (max): Define macro.
Andrew Innes <andrewi@gnu.org>
parents: 30601
diff changeset
7784
36000
f4a0b086cc5d (Fx_show_tip): Fix calls to make_number.
Jason Rumney <jasonr@gnu.org>
parents: 35674
diff changeset
7785 if (NILP (last_show_tip_args))
f4a0b086cc5d (Fx_show_tip): Fix calls to make_number.
Jason Rumney <jasonr@gnu.org>
parents: 35674
diff changeset
7786 last_show_tip_args = Fmake_vector (make_number (3), Qnil);
f4a0b086cc5d (Fx_show_tip): Fix calls to make_number.
Jason Rumney <jasonr@gnu.org>
parents: 35674
diff changeset
7787
f4a0b086cc5d (Fx_show_tip): Fix calls to make_number.
Jason Rumney <jasonr@gnu.org>
parents: 35674
diff changeset
7788 if (!NILP (tip_frame))
f4a0b086cc5d (Fx_show_tip): Fix calls to make_number.
Jason Rumney <jasonr@gnu.org>
parents: 35674
diff changeset
7789 {
f4a0b086cc5d (Fx_show_tip): Fix calls to make_number.
Jason Rumney <jasonr@gnu.org>
parents: 35674
diff changeset
7790 Lisp_Object last_string = AREF (last_show_tip_args, 0);
f4a0b086cc5d (Fx_show_tip): Fix calls to make_number.
Jason Rumney <jasonr@gnu.org>
parents: 35674
diff changeset
7791 Lisp_Object last_frame = AREF (last_show_tip_args, 1);
f4a0b086cc5d (Fx_show_tip): Fix calls to make_number.
Jason Rumney <jasonr@gnu.org>
parents: 35674
diff changeset
7792 Lisp_Object last_parms = AREF (last_show_tip_args, 2);
f4a0b086cc5d (Fx_show_tip): Fix calls to make_number.
Jason Rumney <jasonr@gnu.org>
parents: 35674
diff changeset
7793
f4a0b086cc5d (Fx_show_tip): Fix calls to make_number.
Jason Rumney <jasonr@gnu.org>
parents: 35674
diff changeset
7794 if (EQ (frame, last_frame)
f4a0b086cc5d (Fx_show_tip): Fix calls to make_number.
Jason Rumney <jasonr@gnu.org>
parents: 35674
diff changeset
7795 && !NILP (Fequal (last_string, string))
f4a0b086cc5d (Fx_show_tip): Fix calls to make_number.
Jason Rumney <jasonr@gnu.org>
parents: 35674
diff changeset
7796 && !NILP (Fequal (last_parms, parms)))
f4a0b086cc5d (Fx_show_tip): Fix calls to make_number.
Jason Rumney <jasonr@gnu.org>
parents: 35674
diff changeset
7797 {
f4a0b086cc5d (Fx_show_tip): Fix calls to make_number.
Jason Rumney <jasonr@gnu.org>
parents: 35674
diff changeset
7798 struct frame *f = XFRAME (tip_frame);
47942
080b4586492b Fix typo in comment.
Juanma Barranquero <lekktu@gmail.com>
parents: 47731
diff changeset
7799
36000
f4a0b086cc5d (Fx_show_tip): Fix calls to make_number.
Jason Rumney <jasonr@gnu.org>
parents: 35674
diff changeset
7800 /* Only DX and DY have changed. */
f4a0b086cc5d (Fx_show_tip): Fix calls to make_number.
Jason Rumney <jasonr@gnu.org>
parents: 35674
diff changeset
7801 if (!NILP (tip_timer))
f4a0b086cc5d (Fx_show_tip): Fix calls to make_number.
Jason Rumney <jasonr@gnu.org>
parents: 35674
diff changeset
7802 {
f4a0b086cc5d (Fx_show_tip): Fix calls to make_number.
Jason Rumney <jasonr@gnu.org>
parents: 35674
diff changeset
7803 Lisp_Object timer = tip_timer;
f4a0b086cc5d (Fx_show_tip): Fix calls to make_number.
Jason Rumney <jasonr@gnu.org>
parents: 35674
diff changeset
7804 tip_timer = Qnil;
f4a0b086cc5d (Fx_show_tip): Fix calls to make_number.
Jason Rumney <jasonr@gnu.org>
parents: 35674
diff changeset
7805 call1 (Qcancel_timer, timer);
f4a0b086cc5d (Fx_show_tip): Fix calls to make_number.
Jason Rumney <jasonr@gnu.org>
parents: 35674
diff changeset
7806 }
f4a0b086cc5d (Fx_show_tip): Fix calls to make_number.
Jason Rumney <jasonr@gnu.org>
parents: 35674
diff changeset
7807
f4a0b086cc5d (Fx_show_tip): Fix calls to make_number.
Jason Rumney <jasonr@gnu.org>
parents: 35674
diff changeset
7808 BLOCK_INPUT;
51211
28ea05de2dc5 Make (many) trivial substitutions for renamed and
Kim F. Storm <storm@cua.dk>
parents: 50377
diff changeset
7809 compute_tip_xy (f, parms, dx, dy, FRAME_PIXEL_WIDTH (f),
28ea05de2dc5 Make (many) trivial substitutions for renamed and
Kim F. Storm <storm@cua.dk>
parents: 50377
diff changeset
7810 FRAME_PIXEL_HEIGHT (f), &root_x, &root_y);
43210
3df71b933c36 (w32_load_system_font): Prevent Cleartype fonts from loading.
Jason Rumney <jasonr@gnu.org>
parents: 43207
diff changeset
7811
3df71b933c36 (w32_load_system_font): Prevent Cleartype fonts from loading.
Jason Rumney <jasonr@gnu.org>
parents: 43207
diff changeset
7812 /* Put tooltip in topmost group and in position. */
41380
aff1b15f295b (x_window_to_frame): Remove irrelevant TODO comment.
Jason Rumney <jasonr@gnu.org>
parents: 41322
diff changeset
7813 SetWindowPos (FRAME_W32_WINDOW (f), HWND_TOPMOST,
aff1b15f295b (x_window_to_frame): Remove irrelevant TODO comment.
Jason Rumney <jasonr@gnu.org>
parents: 41322
diff changeset
7814 root_x, root_y, 0, 0,
aff1b15f295b (x_window_to_frame): Remove irrelevant TODO comment.
Jason Rumney <jasonr@gnu.org>
parents: 41322
diff changeset
7815 SWP_NOSIZE | SWP_NOACTIVATE);
43210
3df71b933c36 (w32_load_system_font): Prevent Cleartype fonts from loading.
Jason Rumney <jasonr@gnu.org>
parents: 43207
diff changeset
7816
3df71b933c36 (w32_load_system_font): Prevent Cleartype fonts from loading.
Jason Rumney <jasonr@gnu.org>
parents: 43207
diff changeset
7817 /* Ensure tooltip is on top of other topmost windows (eg menus). */
3df71b933c36 (w32_load_system_font): Prevent Cleartype fonts from loading.
Jason Rumney <jasonr@gnu.org>
parents: 43207
diff changeset
7818 SetWindowPos (FRAME_W32_WINDOW (f), HWND_TOP,
3df71b933c36 (w32_load_system_font): Prevent Cleartype fonts from loading.
Jason Rumney <jasonr@gnu.org>
parents: 43207
diff changeset
7819 0, 0, 0, 0,
3df71b933c36 (w32_load_system_font): Prevent Cleartype fonts from loading.
Jason Rumney <jasonr@gnu.org>
parents: 43207
diff changeset
7820 SWP_NOMOVE | SWP_NOSIZE | SWP_NOACTIVATE);
3df71b933c36 (w32_load_system_font): Prevent Cleartype fonts from loading.
Jason Rumney <jasonr@gnu.org>
parents: 43207
diff changeset
7821
36000
f4a0b086cc5d (Fx_show_tip): Fix calls to make_number.
Jason Rumney <jasonr@gnu.org>
parents: 35674
diff changeset
7822 UNBLOCK_INPUT;
f4a0b086cc5d (Fx_show_tip): Fix calls to make_number.
Jason Rumney <jasonr@gnu.org>
parents: 35674
diff changeset
7823 goto start_timer;
f4a0b086cc5d (Fx_show_tip): Fix calls to make_number.
Jason Rumney <jasonr@gnu.org>
parents: 35674
diff changeset
7824 }
f4a0b086cc5d (Fx_show_tip): Fix calls to make_number.
Jason Rumney <jasonr@gnu.org>
parents: 35674
diff changeset
7825 }
f4a0b086cc5d (Fx_show_tip): Fix calls to make_number.
Jason Rumney <jasonr@gnu.org>
parents: 35674
diff changeset
7826
27397
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
7827 /* Hide a previous tip, if any. */
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
7828 Fx_hide_tip ();
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
7829
36000
f4a0b086cc5d (Fx_show_tip): Fix calls to make_number.
Jason Rumney <jasonr@gnu.org>
parents: 35674
diff changeset
7830 ASET (last_show_tip_args, 0, string);
f4a0b086cc5d (Fx_show_tip): Fix calls to make_number.
Jason Rumney <jasonr@gnu.org>
parents: 35674
diff changeset
7831 ASET (last_show_tip_args, 1, frame);
f4a0b086cc5d (Fx_show_tip): Fix calls to make_number.
Jason Rumney <jasonr@gnu.org>
parents: 35674
diff changeset
7832 ASET (last_show_tip_args, 2, parms);
f4a0b086cc5d (Fx_show_tip): Fix calls to make_number.
Jason Rumney <jasonr@gnu.org>
parents: 35674
diff changeset
7833
27397
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
7834 /* Add default values to frame parameters. */
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
7835 if (NILP (Fassq (Qname, parms)))
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
7836 parms = Fcons (Fcons (Qname, build_string ("tooltip")), parms);
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
7837 if (NILP (Fassq (Qinternal_border_width, parms)))
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
7838 parms = Fcons (Fcons (Qinternal_border_width, make_number (3)), parms);
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
7839 if (NILP (Fassq (Qborder_width, parms)))
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
7840 parms = Fcons (Fcons (Qborder_width, make_number (1)), parms);
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
7841 if (NILP (Fassq (Qborder_color, parms)))
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
7842 parms = Fcons (Fcons (Qborder_color, build_string ("lightyellow")), parms);
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
7843 if (NILP (Fassq (Qbackground_color, parms)))
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
7844 parms = Fcons (Fcons (Qbackground_color, build_string ("lightyellow")),
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
7845 parms);
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
7846
41480
2c71c672b3c7 (x_create_tip_frame): Set frame's fringes_extra to 0.
Jason Rumney <jasonr@gnu.org>
parents: 41448
diff changeset
7847 /* Block input until the tip has been fully drawn, to avoid crashes
2c71c672b3c7 (x_create_tip_frame): Set frame's fringes_extra to 0.
Jason Rumney <jasonr@gnu.org>
parents: 41448
diff changeset
7848 when drawing tips in menus. */
2c71c672b3c7 (x_create_tip_frame): Set frame's fringes_extra to 0.
Jason Rumney <jasonr@gnu.org>
parents: 41448
diff changeset
7849 BLOCK_INPUT;
2c71c672b3c7 (x_create_tip_frame): Set frame's fringes_extra to 0.
Jason Rumney <jasonr@gnu.org>
parents: 41448
diff changeset
7850
27397
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
7851 /* Create a frame for the tooltip, and record it in the global
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
7852 variable tip_frame. */
41380
aff1b15f295b (x_window_to_frame): Remove irrelevant TODO comment.
Jason Rumney <jasonr@gnu.org>
parents: 41322
diff changeset
7853 frame = x_create_tip_frame (FRAME_W32_DISPLAY_INFO (f), parms, string);
34546
51be06b616bf (Fx_hide_tip): Avoid unnecessary work when there's
Andrew Innes <andrewi@gnu.org>
parents: 34314
diff changeset
7854 f = XFRAME (frame);
27397
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
7855
40120
03eb905a4d8e (Fx_file_dialog): Pass a filter to GetOpenFileName.
Jason Rumney <jasonr@gnu.org>
parents: 40009
diff changeset
7856 /* Set up the frame's root window. */
27397
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
7857 w = XWINDOW (FRAME_ROOT_WINDOW (f));
51211
28ea05de2dc5 Make (many) trivial substitutions for renamed and
Kim F. Storm <storm@cua.dk>
parents: 50377
diff changeset
7858 w->left_col = w->top_line = make_number (0);
40120
03eb905a4d8e (Fx_file_dialog): Pass a filter to GetOpenFileName.
Jason Rumney <jasonr@gnu.org>
parents: 40009
diff changeset
7859
03eb905a4d8e (Fx_file_dialog): Pass a filter to GetOpenFileName.
Jason Rumney <jasonr@gnu.org>
parents: 40009
diff changeset
7860 if (CONSP (Vx_max_tooltip_size)
03eb905a4d8e (Fx_file_dialog): Pass a filter to GetOpenFileName.
Jason Rumney <jasonr@gnu.org>
parents: 40009
diff changeset
7861 && INTEGERP (XCAR (Vx_max_tooltip_size))
03eb905a4d8e (Fx_file_dialog): Pass a filter to GetOpenFileName.
Jason Rumney <jasonr@gnu.org>
parents: 40009
diff changeset
7862 && XINT (XCAR (Vx_max_tooltip_size)) > 0
03eb905a4d8e (Fx_file_dialog): Pass a filter to GetOpenFileName.
Jason Rumney <jasonr@gnu.org>
parents: 40009
diff changeset
7863 && INTEGERP (XCDR (Vx_max_tooltip_size))
03eb905a4d8e (Fx_file_dialog): Pass a filter to GetOpenFileName.
Jason Rumney <jasonr@gnu.org>
parents: 40009
diff changeset
7864 && XINT (XCDR (Vx_max_tooltip_size)) > 0)
03eb905a4d8e (Fx_file_dialog): Pass a filter to GetOpenFileName.
Jason Rumney <jasonr@gnu.org>
parents: 40009
diff changeset
7865 {
51211
28ea05de2dc5 Make (many) trivial substitutions for renamed and
Kim F. Storm <storm@cua.dk>
parents: 50377
diff changeset
7866 w->total_cols = XCAR (Vx_max_tooltip_size);
28ea05de2dc5 Make (many) trivial substitutions for renamed and
Kim F. Storm <storm@cua.dk>
parents: 50377
diff changeset
7867 w->total_lines = XCDR (Vx_max_tooltip_size);
28ea05de2dc5 Make (many) trivial substitutions for renamed and
Kim F. Storm <storm@cua.dk>
parents: 50377
diff changeset
7868 }
28ea05de2dc5 Make (many) trivial substitutions for renamed and
Kim F. Storm <storm@cua.dk>
parents: 50377
diff changeset
7869 else
28ea05de2dc5 Make (many) trivial substitutions for renamed and
Kim F. Storm <storm@cua.dk>
parents: 50377
diff changeset
7870 {
28ea05de2dc5 Make (many) trivial substitutions for renamed and
Kim F. Storm <storm@cua.dk>
parents: 50377
diff changeset
7871 w->total_cols = make_number (80);
28ea05de2dc5 Make (many) trivial substitutions for renamed and
Kim F. Storm <storm@cua.dk>
parents: 50377
diff changeset
7872 w->total_lines = make_number (40);
28ea05de2dc5 Make (many) trivial substitutions for renamed and
Kim F. Storm <storm@cua.dk>
parents: 50377
diff changeset
7873 }
28ea05de2dc5 Make (many) trivial substitutions for renamed and
Kim F. Storm <storm@cua.dk>
parents: 50377
diff changeset
7874
28ea05de2dc5 Make (many) trivial substitutions for renamed and
Kim F. Storm <storm@cua.dk>
parents: 50377
diff changeset
7875 FRAME_TOTAL_COLS (f) = XINT (w->total_cols);
27397
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
7876 adjust_glyphs (f);
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
7877 w->pseudo_window_p = 1;
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
7878
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
7879 /* Display the tooltip text in a temporary buffer. */
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
7880 old_buffer = current_buffer;
40120
03eb905a4d8e (Fx_file_dialog): Pass a filter to GetOpenFileName.
Jason Rumney <jasonr@gnu.org>
parents: 40009
diff changeset
7881 set_buffer_internal_1 (XBUFFER (XWINDOW (FRAME_ROOT_WINDOW (f))->buffer));
03eb905a4d8e (Fx_file_dialog): Pass a filter to GetOpenFileName.
Jason Rumney <jasonr@gnu.org>
parents: 40009
diff changeset
7882 current_buffer->truncate_lines = Qnil;
27397
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
7883 clear_glyph_matrix (w->desired_matrix);
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
7884 clear_glyph_matrix (w->current_matrix);
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
7885 SET_TEXT_POS (pos, BEGV, BEGV_BYTE);
63772
b9edfe751512 (Fx_show_tip): Pass new arg to try_window.
Richard M. Stallman <rms@gnu.org>
parents: 63704
diff changeset
7886 try_window (FRAME_ROOT_WINDOW (f), pos, 0);
27397
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
7887
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
7888 /* Compute width and height of the tooltip. */
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
7889 width = height = 0;
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
7890 for (i = 0; i < w->desired_matrix->nrows; ++i)
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
7891 {
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
7892 struct glyph_row *row = &w->desired_matrix->rows[i];
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
7893 struct glyph *last;
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
7894 int row_width;
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
7895
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
7896 /* Stop at the first empty row at the end. */
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
7897 if (!row->enabled_p || !row->displays_text_p)
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
7898 break;
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
7899
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
7900 /* Let the row go over the full width of the frame. */
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
7901 row->full_width_p = 1;
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
7902
41638
aadcf676d5de (w32_wnd_proc) <WM_MENUSELECT>: Display help directly.
Jason Rumney <jasonr@gnu.org>
parents: 41480
diff changeset
7903 #ifdef TODO /* Investigate why some fonts need more width than is
aadcf676d5de (w32_wnd_proc) <WM_MENUSELECT>: Display help directly.
Jason Rumney <jasonr@gnu.org>
parents: 41480
diff changeset
7904 calculated for some tooltips. */
27397
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
7905 /* There's a glyph at the end of rows that is use to place
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
7906 the cursor there. Don't include the width of this glyph. */
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
7907 if (row->used[TEXT_AREA])
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
7908 {
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
7909 last = &row->glyphs[TEXT_AREA][row->used[TEXT_AREA] - 1];
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
7910 row_width = row->pixel_width - last->pixel_width;
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
7911 }
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
7912 else
41638
aadcf676d5de (w32_wnd_proc) <WM_MENUSELECT>: Display help directly.
Jason Rumney <jasonr@gnu.org>
parents: 41480
diff changeset
7913 #endif
27397
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
7914 row_width = row->pixel_width;
47942
080b4586492b Fix typo in comment.
Juanma Barranquero <lekktu@gmail.com>
parents: 47731
diff changeset
7915
41380
aff1b15f295b (x_window_to_frame): Remove irrelevant TODO comment.
Jason Rumney <jasonr@gnu.org>
parents: 41322
diff changeset
7916 /* TODO: find why tips do not draw along baseline as instructed. */
41448
96beda35d0fa (w32_wnd_proc) <WM_MENUSELECT>: Revert last change.
Jason Rumney <jasonr@gnu.org>
parents: 41380
diff changeset
7917 height += row->height;
27397
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
7918 width = max (width, row_width);
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
7919 }
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
7920
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
7921 /* Add the frame's internal border to the width and height the X
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
7922 window should have. */
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
7923 height += 2 * FRAME_INTERNAL_BORDER_WIDTH (f);
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
7924 width += 2 * FRAME_INTERNAL_BORDER_WIDTH (f);
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
7925
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
7926 /* Move the tooltip window where the mouse pointer is. Resize and
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
7927 show it. */
40120
03eb905a4d8e (Fx_file_dialog): Pass a filter to GetOpenFileName.
Jason Rumney <jasonr@gnu.org>
parents: 40009
diff changeset
7928 compute_tip_xy (f, parms, dx, dy, width, height, &root_x, &root_y);
03eb905a4d8e (Fx_file_dialog): Pass a filter to GetOpenFileName.
Jason Rumney <jasonr@gnu.org>
parents: 40009
diff changeset
7929
41448
96beda35d0fa (w32_wnd_proc) <WM_MENUSELECT>: Revert last change.
Jason Rumney <jasonr@gnu.org>
parents: 41380
diff changeset
7930 {
96beda35d0fa (w32_wnd_proc) <WM_MENUSELECT>: Revert last change.
Jason Rumney <jasonr@gnu.org>
parents: 41380
diff changeset
7931 /* Adjust Window size to take border into account. */
96beda35d0fa (w32_wnd_proc) <WM_MENUSELECT>: Revert last change.
Jason Rumney <jasonr@gnu.org>
parents: 41380
diff changeset
7932 RECT rect;
96beda35d0fa (w32_wnd_proc) <WM_MENUSELECT>: Revert last change.
Jason Rumney <jasonr@gnu.org>
parents: 41380
diff changeset
7933 rect.left = rect.top = 0;
96beda35d0fa (w32_wnd_proc) <WM_MENUSELECT>: Revert last change.
Jason Rumney <jasonr@gnu.org>
parents: 41380
diff changeset
7934 rect.right = width;
96beda35d0fa (w32_wnd_proc) <WM_MENUSELECT>: Revert last change.
Jason Rumney <jasonr@gnu.org>
parents: 41380
diff changeset
7935 rect.bottom = height;
96beda35d0fa (w32_wnd_proc) <WM_MENUSELECT>: Revert last change.
Jason Rumney <jasonr@gnu.org>
parents: 41380
diff changeset
7936 AdjustWindowRect (&rect, f->output_data.w32->dwStyle,
96beda35d0fa (w32_wnd_proc) <WM_MENUSELECT>: Revert last change.
Jason Rumney <jasonr@gnu.org>
parents: 41380
diff changeset
7937 FRAME_EXTERNAL_MENU_BAR (f));
96beda35d0fa (w32_wnd_proc) <WM_MENUSELECT>: Revert last change.
Jason Rumney <jasonr@gnu.org>
parents: 41380
diff changeset
7938
69867
847d1fc86f9d (Fx_show_tip): Add 3 to the 5th arg of SetWindowPos.
Eli Zaretskii <eliz@gnu.org>
parents: 69547
diff changeset
7939 /* Position and size tooltip, and put it in the topmost group.
847d1fc86f9d (Fx_show_tip): Add 3 to the 5th arg of SetWindowPos.
Eli Zaretskii <eliz@gnu.org>
parents: 69547
diff changeset
7940 The add-on of 3 to the 5th argument is a kludge: without it,
847d1fc86f9d (Fx_show_tip): Add 3 to the 5th arg of SetWindowPos.
Eli Zaretskii <eliz@gnu.org>
parents: 69547
diff changeset
7941 some fonts cause the last character of the tip to be truncated,
847d1fc86f9d (Fx_show_tip): Add 3 to the 5th arg of SetWindowPos.
Eli Zaretskii <eliz@gnu.org>
parents: 69547
diff changeset
7942 for some obscure reason. */
41448
96beda35d0fa (w32_wnd_proc) <WM_MENUSELECT>: Revert last change.
Jason Rumney <jasonr@gnu.org>
parents: 41380
diff changeset
7943 SetWindowPos (FRAME_W32_WINDOW (f), HWND_TOPMOST,
69867
847d1fc86f9d (Fx_show_tip): Add 3 to the 5th arg of SetWindowPos.
Eli Zaretskii <eliz@gnu.org>
parents: 69547
diff changeset
7944 root_x, root_y, rect.right - rect.left + 3,
41448
96beda35d0fa (w32_wnd_proc) <WM_MENUSELECT>: Revert last change.
Jason Rumney <jasonr@gnu.org>
parents: 41380
diff changeset
7945 rect.bottom - rect.top, SWP_NOACTIVATE);
96beda35d0fa (w32_wnd_proc) <WM_MENUSELECT>: Revert last change.
Jason Rumney <jasonr@gnu.org>
parents: 41380
diff changeset
7946
43210
3df71b933c36 (w32_load_system_font): Prevent Cleartype fonts from loading.
Jason Rumney <jasonr@gnu.org>
parents: 43207
diff changeset
7947 /* Ensure tooltip is on top of other topmost windows (eg menus). */
3df71b933c36 (w32_load_system_font): Prevent Cleartype fonts from loading.
Jason Rumney <jasonr@gnu.org>
parents: 43207
diff changeset
7948 SetWindowPos (FRAME_W32_WINDOW (f), HWND_TOP,
3df71b933c36 (w32_load_system_font): Prevent Cleartype fonts from loading.
Jason Rumney <jasonr@gnu.org>
parents: 43207
diff changeset
7949 0, 0, 0, 0,
3df71b933c36 (w32_load_system_font): Prevent Cleartype fonts from loading.
Jason Rumney <jasonr@gnu.org>
parents: 43207
diff changeset
7950 SWP_NOMOVE | SWP_NOSIZE | SWP_NOACTIVATE);
3df71b933c36 (w32_load_system_font): Prevent Cleartype fonts from loading.
Jason Rumney <jasonr@gnu.org>
parents: 43207
diff changeset
7951
41448
96beda35d0fa (w32_wnd_proc) <WM_MENUSELECT>: Revert last change.
Jason Rumney <jasonr@gnu.org>
parents: 41380
diff changeset
7952 /* Let redisplay know that we have made the frame visible already. */
96beda35d0fa (w32_wnd_proc) <WM_MENUSELECT>: Revert last change.
Jason Rumney <jasonr@gnu.org>
parents: 41380
diff changeset
7953 f->async_visible = 1;
96beda35d0fa (w32_wnd_proc) <WM_MENUSELECT>: Revert last change.
Jason Rumney <jasonr@gnu.org>
parents: 41380
diff changeset
7954
96beda35d0fa (w32_wnd_proc) <WM_MENUSELECT>: Revert last change.
Jason Rumney <jasonr@gnu.org>
parents: 41380
diff changeset
7955 ShowWindow (FRAME_W32_WINDOW (f), SW_SHOWNOACTIVATE);
96beda35d0fa (w32_wnd_proc) <WM_MENUSELECT>: Revert last change.
Jason Rumney <jasonr@gnu.org>
parents: 41380
diff changeset
7956 }
27397
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
7957
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
7958 /* Draw into the window. */
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
7959 w->must_be_updated_p = 1;
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
7960 update_single_window (w, 1);
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
7961
41480
2c71c672b3c7 (x_create_tip_frame): Set frame's fringes_extra to 0.
Jason Rumney <jasonr@gnu.org>
parents: 41448
diff changeset
7962 UNBLOCK_INPUT;
2c71c672b3c7 (x_create_tip_frame): Set frame's fringes_extra to 0.
Jason Rumney <jasonr@gnu.org>
parents: 41448
diff changeset
7963
27397
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
7964 /* Restore original current buffer. */
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
7965 set_buffer_internal_1 (old_buffer);
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
7966 windows_or_buffers_changed = old_windows_or_buffers_changed;
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
7967
36000
f4a0b086cc5d (Fx_show_tip): Fix calls to make_number.
Jason Rumney <jasonr@gnu.org>
parents: 35674
diff changeset
7968 start_timer:
27397
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
7969 /* Let the tip disappear after timeout seconds. */
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
7970 tip_timer = call3 (intern ("run-at-time"), timeout, Qnil,
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
7971 intern ("x-hide-tip"));
29317
2d3d5bf49d4e Format and doc changes to bring closer to xfns.c.
Jason Rumney <jasonr@gnu.org>
parents: 29021
diff changeset
7972
27397
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
7973 UNGCPRO;
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
7974 return unbind_to (count, Qnil);
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
7975 }
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
7976
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
7977
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
7978 DEFUN ("x-hide-tip", Fx_hide_tip, Sx_hide_tip, 0, 0, 0,
40964
fb970d0c56eb Change doc-string comments to `new style'. [w/`doc:' keyword]. Doc fixes.
Jason Rumney <jasonr@gnu.org>
parents: 40873
diff changeset
7979 doc: /* Hide the current tooltip window, if there is any.
fb970d0c56eb Change doc-string comments to `new style'. [w/`doc:' keyword]. Doc fixes.
Jason Rumney <jasonr@gnu.org>
parents: 40873
diff changeset
7980 Value is t if tooltip was open, nil otherwise. */)
27397
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
7981 ()
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
7982 {
34546
51be06b616bf (Fx_hide_tip): Avoid unnecessary work when there's
Andrew Innes <andrewi@gnu.org>
parents: 34314
diff changeset
7983 int count;
51be06b616bf (Fx_hide_tip): Avoid unnecessary work when there's
Andrew Innes <andrewi@gnu.org>
parents: 34314
diff changeset
7984 Lisp_Object deleted, frame, timer;
51be06b616bf (Fx_hide_tip): Avoid unnecessary work when there's
Andrew Innes <andrewi@gnu.org>
parents: 34314
diff changeset
7985 struct gcpro gcpro1, gcpro2;
51be06b616bf (Fx_hide_tip): Avoid unnecessary work when there's
Andrew Innes <andrewi@gnu.org>
parents: 34314
diff changeset
7986
51be06b616bf (Fx_hide_tip): Avoid unnecessary work when there's
Andrew Innes <andrewi@gnu.org>
parents: 34314
diff changeset
7987 /* Return quickly if nothing to do. */
51be06b616bf (Fx_hide_tip): Avoid unnecessary work when there's
Andrew Innes <andrewi@gnu.org>
parents: 34314
diff changeset
7988 if (NILP (tip_timer) && NILP (tip_frame))
51be06b616bf (Fx_hide_tip): Avoid unnecessary work when there's
Andrew Innes <andrewi@gnu.org>
parents: 34314
diff changeset
7989 return Qnil;
47942
080b4586492b Fix typo in comment.
Juanma Barranquero <lekktu@gmail.com>
parents: 47731
diff changeset
7990
34546
51be06b616bf (Fx_hide_tip): Avoid unnecessary work when there's
Andrew Innes <andrewi@gnu.org>
parents: 34314
diff changeset
7991 frame = tip_frame;
51be06b616bf (Fx_hide_tip): Avoid unnecessary work when there's
Andrew Innes <andrewi@gnu.org>
parents: 34314
diff changeset
7992 timer = tip_timer;
51be06b616bf (Fx_hide_tip): Avoid unnecessary work when there's
Andrew Innes <andrewi@gnu.org>
parents: 34314
diff changeset
7993 GCPRO2 (frame, timer);
51be06b616bf (Fx_hide_tip): Avoid unnecessary work when there's
Andrew Innes <andrewi@gnu.org>
parents: 34314
diff changeset
7994 tip_frame = tip_timer = deleted = Qnil;
47942
080b4586492b Fix typo in comment.
Juanma Barranquero <lekktu@gmail.com>
parents: 47731
diff changeset
7995
46285
3f111801efb4 Rename BINDING_STACK_SIZE to SPECPDL_INDEX.
Juanma Barranquero <lekktu@gmail.com>
parents: 46272
diff changeset
7996 count = SPECPDL_INDEX ();
27397
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
7997 specbind (Qinhibit_redisplay, Qt);
34546
51be06b616bf (Fx_hide_tip): Avoid unnecessary work when there's
Andrew Innes <andrewi@gnu.org>
parents: 34314
diff changeset
7998 specbind (Qinhibit_quit, Qt);
47942
080b4586492b Fix typo in comment.
Juanma Barranquero <lekktu@gmail.com>
parents: 47731
diff changeset
7999
34546
51be06b616bf (Fx_hide_tip): Avoid unnecessary work when there's
Andrew Innes <andrewi@gnu.org>
parents: 34314
diff changeset
8000 if (!NILP (timer))
36000
f4a0b086cc5d (Fx_show_tip): Fix calls to make_number.
Jason Rumney <jasonr@gnu.org>
parents: 35674
diff changeset
8001 call1 (Qcancel_timer, timer);
34546
51be06b616bf (Fx_hide_tip): Avoid unnecessary work when there's
Andrew Innes <andrewi@gnu.org>
parents: 34314
diff changeset
8002
51be06b616bf (Fx_hide_tip): Avoid unnecessary work when there's
Andrew Innes <andrewi@gnu.org>
parents: 34314
diff changeset
8003 if (FRAMEP (frame))
51be06b616bf (Fx_hide_tip): Avoid unnecessary work when there's
Andrew Innes <andrewi@gnu.org>
parents: 34314
diff changeset
8004 {
51be06b616bf (Fx_hide_tip): Avoid unnecessary work when there's
Andrew Innes <andrewi@gnu.org>
parents: 34314
diff changeset
8005 Fdelete_frame (frame, Qnil);
51be06b616bf (Fx_hide_tip): Avoid unnecessary work when there's
Andrew Innes <andrewi@gnu.org>
parents: 34314
diff changeset
8006 deleted = Qt;
51be06b616bf (Fx_hide_tip): Avoid unnecessary work when there's
Andrew Innes <andrewi@gnu.org>
parents: 34314
diff changeset
8007 }
51be06b616bf (Fx_hide_tip): Avoid unnecessary work when there's
Andrew Innes <andrewi@gnu.org>
parents: 34314
diff changeset
8008
51be06b616bf (Fx_hide_tip): Avoid unnecessary work when there's
Andrew Innes <andrewi@gnu.org>
parents: 34314
diff changeset
8009 UNGCPRO;
51be06b616bf (Fx_hide_tip): Avoid unnecessary work when there's
Andrew Innes <andrewi@gnu.org>
parents: 34314
diff changeset
8010 return unbind_to (count, deleted);
27397
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
8011 }
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
8012
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
8013
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
8014
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
8015 /***********************************************************************
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
8016 File selection dialog
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
8017 ***********************************************************************/
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
8018 extern Lisp_Object Qfile_name_history;
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
8019
45963
e4d2d8c8186f (file_dialog_callback): New function.
Jason Rumney <jasonr@gnu.org>
parents: 45465
diff changeset
8020 /* Callback for altering the behaviour of the Open File dialog.
e4d2d8c8186f (file_dialog_callback): New function.
Jason Rumney <jasonr@gnu.org>
parents: 45465
diff changeset
8021 Makes the Filename text field contain "Current Directory" and be
e4d2d8c8186f (file_dialog_callback): New function.
Jason Rumney <jasonr@gnu.org>
parents: 45465
diff changeset
8022 read-only when "Directories" is selected in the filter. This
e4d2d8c8186f (file_dialog_callback): New function.
Jason Rumney <jasonr@gnu.org>
parents: 45465
diff changeset
8023 allows us to work around the fact that the standard Open File
e4d2d8c8186f (file_dialog_callback): New function.
Jason Rumney <jasonr@gnu.org>
parents: 45465
diff changeset
8024 dialog does not support directories. */
e4d2d8c8186f (file_dialog_callback): New function.
Jason Rumney <jasonr@gnu.org>
parents: 45465
diff changeset
8025 UINT CALLBACK
e4d2d8c8186f (file_dialog_callback): New function.
Jason Rumney <jasonr@gnu.org>
parents: 45465
diff changeset
8026 file_dialog_callback (hwnd, msg, wParam, lParam)
e4d2d8c8186f (file_dialog_callback): New function.
Jason Rumney <jasonr@gnu.org>
parents: 45465
diff changeset
8027 HWND hwnd;
e4d2d8c8186f (file_dialog_callback): New function.
Jason Rumney <jasonr@gnu.org>
parents: 45465
diff changeset
8028 UINT msg;
e4d2d8c8186f (file_dialog_callback): New function.
Jason Rumney <jasonr@gnu.org>
parents: 45465
diff changeset
8029 WPARAM wParam;
e4d2d8c8186f (file_dialog_callback): New function.
Jason Rumney <jasonr@gnu.org>
parents: 45465
diff changeset
8030 LPARAM lParam;
e4d2d8c8186f (file_dialog_callback): New function.
Jason Rumney <jasonr@gnu.org>
parents: 45465
diff changeset
8031 {
e4d2d8c8186f (file_dialog_callback): New function.
Jason Rumney <jasonr@gnu.org>
parents: 45465
diff changeset
8032 if (msg == WM_NOTIFY)
e4d2d8c8186f (file_dialog_callback): New function.
Jason Rumney <jasonr@gnu.org>
parents: 45465
diff changeset
8033 {
e4d2d8c8186f (file_dialog_callback): New function.
Jason Rumney <jasonr@gnu.org>
parents: 45465
diff changeset
8034 OFNOTIFY * notify = (OFNOTIFY *)lParam;
e4d2d8c8186f (file_dialog_callback): New function.
Jason Rumney <jasonr@gnu.org>
parents: 45465
diff changeset
8035 /* Detect when the Filter dropdown is changed. */
56263
1b78563a75d6 (file_dialog_callback): Disable edit control if set
Jason Rumney <jasonr@gnu.org>
parents: 55892
diff changeset
8036 if (notify->hdr.code == CDN_TYPECHANGE
1b78563a75d6 (file_dialog_callback): Disable edit control if set
Jason Rumney <jasonr@gnu.org>
parents: 55892
diff changeset
8037 || notify->hdr.code == CDN_INITDONE)
45963
e4d2d8c8186f (file_dialog_callback): New function.
Jason Rumney <jasonr@gnu.org>
parents: 45465
diff changeset
8038 {
e4d2d8c8186f (file_dialog_callback): New function.
Jason Rumney <jasonr@gnu.org>
parents: 45465
diff changeset
8039 HWND dialog = GetParent (hwnd);
e4d2d8c8186f (file_dialog_callback): New function.
Jason Rumney <jasonr@gnu.org>
parents: 45465
diff changeset
8040 HWND edit_control = GetDlgItem (dialog, FILE_NAME_TEXT_FIELD);
e4d2d8c8186f (file_dialog_callback): New function.
Jason Rumney <jasonr@gnu.org>
parents: 45465
diff changeset
8041
e4d2d8c8186f (file_dialog_callback): New function.
Jason Rumney <jasonr@gnu.org>
parents: 45465
diff changeset
8042 /* Directories is in index 2. */
e4d2d8c8186f (file_dialog_callback): New function.
Jason Rumney <jasonr@gnu.org>
parents: 45465
diff changeset
8043 if (notify->lpOFN->nFilterIndex == 2)
e4d2d8c8186f (file_dialog_callback): New function.
Jason Rumney <jasonr@gnu.org>
parents: 45465
diff changeset
8044 {
e4d2d8c8186f (file_dialog_callback): New function.
Jason Rumney <jasonr@gnu.org>
parents: 45465
diff changeset
8045 CommDlg_OpenSave_SetControlText (dialog, FILE_NAME_TEXT_FIELD,
e4d2d8c8186f (file_dialog_callback): New function.
Jason Rumney <jasonr@gnu.org>
parents: 45465
diff changeset
8046 "Current Directory");
e4d2d8c8186f (file_dialog_callback): New function.
Jason Rumney <jasonr@gnu.org>
parents: 45465
diff changeset
8047 EnableWindow (edit_control, FALSE);
e4d2d8c8186f (file_dialog_callback): New function.
Jason Rumney <jasonr@gnu.org>
parents: 45465
diff changeset
8048 }
e4d2d8c8186f (file_dialog_callback): New function.
Jason Rumney <jasonr@gnu.org>
parents: 45465
diff changeset
8049 else
e4d2d8c8186f (file_dialog_callback): New function.
Jason Rumney <jasonr@gnu.org>
parents: 45465
diff changeset
8050 {
56263
1b78563a75d6 (file_dialog_callback): Disable edit control if set
Jason Rumney <jasonr@gnu.org>
parents: 55892
diff changeset
8051 /* Don't override default filename on init done. */
1b78563a75d6 (file_dialog_callback): Disable edit control if set
Jason Rumney <jasonr@gnu.org>
parents: 55892
diff changeset
8052 if (notify->hdr.code == CDN_TYPECHANGE)
1b78563a75d6 (file_dialog_callback): Disable edit control if set
Jason Rumney <jasonr@gnu.org>
parents: 55892
diff changeset
8053 CommDlg_OpenSave_SetControlText (dialog,
1b78563a75d6 (file_dialog_callback): Disable edit control if set
Jason Rumney <jasonr@gnu.org>
parents: 55892
diff changeset
8054 FILE_NAME_TEXT_FIELD, "");
45963
e4d2d8c8186f (file_dialog_callback): New function.
Jason Rumney <jasonr@gnu.org>
parents: 45465
diff changeset
8055 EnableWindow (edit_control, TRUE);
e4d2d8c8186f (file_dialog_callback): New function.
Jason Rumney <jasonr@gnu.org>
parents: 45465
diff changeset
8056 }
e4d2d8c8186f (file_dialog_callback): New function.
Jason Rumney <jasonr@gnu.org>
parents: 45465
diff changeset
8057 }
e4d2d8c8186f (file_dialog_callback): New function.
Jason Rumney <jasonr@gnu.org>
parents: 45465
diff changeset
8058 }
e4d2d8c8186f (file_dialog_callback): New function.
Jason Rumney <jasonr@gnu.org>
parents: 45465
diff changeset
8059 return 0;
e4d2d8c8186f (file_dialog_callback): New function.
Jason Rumney <jasonr@gnu.org>
parents: 45465
diff changeset
8060 }
e4d2d8c8186f (file_dialog_callback): New function.
Jason Rumney <jasonr@gnu.org>
parents: 45465
diff changeset
8061
63348
abe4cbe0bdef (NEWOPENFILENAME): New struct.
Jason Rumney <jasonr@gnu.org>
parents: 63340
diff changeset
8062 /* Since we compile with _WIN32_WINNT set to 0x0400 (for NT4 compatibility)
abe4cbe0bdef (NEWOPENFILENAME): New struct.
Jason Rumney <jasonr@gnu.org>
parents: 63340
diff changeset
8063 we end up with the old file dialogs. Define a big enough struct for the
abe4cbe0bdef (NEWOPENFILENAME): New struct.
Jason Rumney <jasonr@gnu.org>
parents: 63340
diff changeset
8064 new dialog to trick GetOpenFileName into giving us the new dialogs on
abe4cbe0bdef (NEWOPENFILENAME): New struct.
Jason Rumney <jasonr@gnu.org>
parents: 63340
diff changeset
8065 Windows 2000 and XP. */
abe4cbe0bdef (NEWOPENFILENAME): New struct.
Jason Rumney <jasonr@gnu.org>
parents: 63340
diff changeset
8066 typedef struct
abe4cbe0bdef (NEWOPENFILENAME): New struct.
Jason Rumney <jasonr@gnu.org>
parents: 63340
diff changeset
8067 {
abe4cbe0bdef (NEWOPENFILENAME): New struct.
Jason Rumney <jasonr@gnu.org>
parents: 63340
diff changeset
8068 OPENFILENAME real_details;
abe4cbe0bdef (NEWOPENFILENAME): New struct.
Jason Rumney <jasonr@gnu.org>
parents: 63340
diff changeset
8069 void * pReserved;
abe4cbe0bdef (NEWOPENFILENAME): New struct.
Jason Rumney <jasonr@gnu.org>
parents: 63340
diff changeset
8070 DWORD dwReserved;
abe4cbe0bdef (NEWOPENFILENAME): New struct.
Jason Rumney <jasonr@gnu.org>
parents: 63340
diff changeset
8071 DWORD FlagsEx;
abe4cbe0bdef (NEWOPENFILENAME): New struct.
Jason Rumney <jasonr@gnu.org>
parents: 63340
diff changeset
8072 } NEWOPENFILENAME;
abe4cbe0bdef (NEWOPENFILENAME): New struct.
Jason Rumney <jasonr@gnu.org>
parents: 63340
diff changeset
8073
63704
426ba3ecedd7 (check_x_frame, check_x_display_info): Follow error conventions.
Juanma Barranquero <lekktu@gmail.com>
parents: 63348
diff changeset
8074
57868
c955f6add62a * fileio.c (Fread_file_name): Pass Qt as fifth parameter to
Jan Djärv <jan.h.d@swipnet.se>
parents: 57765
diff changeset
8075 DEFUN ("x-file-dialog", Fx_file_dialog, Sx_file_dialog, 2, 5, 0,
40964
fb970d0c56eb Change doc-string comments to `new style'. [w/`doc:' keyword]. Doc fixes.
Jason Rumney <jasonr@gnu.org>
parents: 40873
diff changeset
8076 doc: /* Read file name, prompting with PROMPT in directory DIR.
fb970d0c56eb Change doc-string comments to `new style'. [w/`doc:' keyword]. Doc fixes.
Jason Rumney <jasonr@gnu.org>
parents: 40873
diff changeset
8077 Use a file selection dialog.
fb970d0c56eb Change doc-string comments to `new style'. [w/`doc:' keyword]. Doc fixes.
Jason Rumney <jasonr@gnu.org>
parents: 40873
diff changeset
8078 Select DEFAULT-FILENAME in the dialog's file selection box, if
57868
c955f6add62a * fileio.c (Fread_file_name): Pass Qt as fifth parameter to
Jan Djärv <jan.h.d@swipnet.se>
parents: 57765
diff changeset
8079 specified. Ensure that file exists if MUSTMATCH is non-nil.
c955f6add62a * fileio.c (Fread_file_name): Pass Qt as fifth parameter to
Jan Djärv <jan.h.d@swipnet.se>
parents: 57765
diff changeset
8080 If ONLY-DIR-P is non-nil, the user can only select directories. */)
c955f6add62a * fileio.c (Fread_file_name): Pass Qt as fifth parameter to
Jan Djärv <jan.h.d@swipnet.se>
parents: 57765
diff changeset
8081 (prompt, dir, default_filename, mustmatch, only_dir_p)
c955f6add62a * fileio.c (Fread_file_name): Pass Qt as fifth parameter to
Jan Djärv <jan.h.d@swipnet.se>
parents: 57765
diff changeset
8082 Lisp_Object prompt, dir, default_filename, mustmatch, only_dir_p;
27397
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
8083 {
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
8084 struct frame *f = SELECTED_FRAME ();
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
8085 Lisp_Object file = Qnil;
46293
1fb8f75062c6 Use macro SPECPDL_INDEX.
Juanma Barranquero <lekktu@gmail.com>
parents: 46285
diff changeset
8086 int count = SPECPDL_INDEX ();
57868
c955f6add62a * fileio.c (Fread_file_name): Pass Qt as fifth parameter to
Jan Djärv <jan.h.d@swipnet.se>
parents: 57765
diff changeset
8087 struct gcpro gcpro1, gcpro2, gcpro3, gcpro4, gcpro5, gcpro6;
27397
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
8088 char filename[MAX_PATH + 1];
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
8089 char init_dir[MAX_PATH + 1];
56263
1b78563a75d6 (file_dialog_callback): Disable edit control if set
Jason Rumney <jasonr@gnu.org>
parents: 55892
diff changeset
8090 int default_filter_index = 1; /* 1: All Files, 2: Directories only */
27397
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
8091
57868
c955f6add62a * fileio.c (Fread_file_name): Pass Qt as fifth parameter to
Jan Djärv <jan.h.d@swipnet.se>
parents: 57765
diff changeset
8092 GCPRO6 (prompt, dir, default_filename, mustmatch, only_dir_p, file);
40656
cdfd4d09b79a Update usage of CHECK_ macros (remove unused second argument).
Pavel Janík <Pavel@Janik.cz>
parents: 40528
diff changeset
8093 CHECK_STRING (prompt);
cdfd4d09b79a Update usage of CHECK_ macros (remove unused second argument).
Pavel Janík <Pavel@Janik.cz>
parents: 40528
diff changeset
8094 CHECK_STRING (dir);
27397
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
8095
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
8096 /* Create the dialog with PROMPT as title, using DIR as initial
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
8097 directory and using "*" as pattern. */
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
8098 dir = Fexpand_file_name (dir, Qnil);
56480
5e87c40cea58 2004-07-19 KOBAYASHI Yasuhiro <kobayays@otsukakj.co.jp> (tiny change)
Jason Rumney <jasonr@gnu.org>
parents: 56430
diff changeset
8099 strncpy (init_dir, SDATA (ENCODE_FILE (dir)), MAX_PATH);
27397
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
8100 init_dir[MAX_PATH] = '\0';
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
8101 unixtodos_filename (init_dir);
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
8102
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
8103 if (STRINGP (default_filename))
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
8104 {
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
8105 char *file_name_only;
56480
5e87c40cea58 2004-07-19 KOBAYASHI Yasuhiro <kobayays@otsukakj.co.jp> (tiny change)
Jason Rumney <jasonr@gnu.org>
parents: 56430
diff changeset
8106 char *full_path_name = SDATA (ENCODE_FILE (default_filename));
27397
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
8107
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
8108 unixtodos_filename (full_path_name);
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
8109
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
8110 file_name_only = strrchr (full_path_name, '\\');
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
8111 if (!file_name_only)
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
8112 file_name_only = full_path_name;
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
8113 else
56263
1b78563a75d6 (file_dialog_callback): Disable edit control if set
Jason Rumney <jasonr@gnu.org>
parents: 55892
diff changeset
8114 file_name_only++;
27397
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
8115
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
8116 strncpy (filename, file_name_only, MAX_PATH);
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
8117 filename[MAX_PATH] = '\0';
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
8118 }
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
8119 else
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
8120 filename[0] = '\0';
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
8121
45963
e4d2d8c8186f (file_dialog_callback): New function.
Jason Rumney <jasonr@gnu.org>
parents: 45465
diff changeset
8122 {
63348
abe4cbe0bdef (NEWOPENFILENAME): New struct.
Jason Rumney <jasonr@gnu.org>
parents: 63340
diff changeset
8123 NEWOPENFILENAME new_file_details;
63297
431c88e4a3a2 (Fx_file_dialog): Unblock input before falling back to minibuffer.
Jason Rumney <jasonr@gnu.org>
parents: 63279
diff changeset
8124 BOOL file_opened = FALSE;
63348
abe4cbe0bdef (NEWOPENFILENAME): New struct.
Jason Rumney <jasonr@gnu.org>
parents: 63340
diff changeset
8125 OPENFILENAME * file_details = &new_file_details.real_details;
63704
426ba3ecedd7 (check_x_frame, check_x_display_info): Follow error conventions.
Juanma Barranquero <lekktu@gmail.com>
parents: 63348
diff changeset
8126
45963
e4d2d8c8186f (file_dialog_callback): New function.
Jason Rumney <jasonr@gnu.org>
parents: 45465
diff changeset
8127 /* Prevent redisplay. */
e4d2d8c8186f (file_dialog_callback): New function.
Jason Rumney <jasonr@gnu.org>
parents: 45465
diff changeset
8128 specbind (Qinhibit_redisplay, Qt);
e4d2d8c8186f (file_dialog_callback): New function.
Jason Rumney <jasonr@gnu.org>
parents: 45465
diff changeset
8129 BLOCK_INPUT;
e4d2d8c8186f (file_dialog_callback): New function.
Jason Rumney <jasonr@gnu.org>
parents: 45465
diff changeset
8130
63348
abe4cbe0bdef (NEWOPENFILENAME): New struct.
Jason Rumney <jasonr@gnu.org>
parents: 63340
diff changeset
8131 bzero (&new_file_details, sizeof (new_file_details));
abe4cbe0bdef (NEWOPENFILENAME): New struct.
Jason Rumney <jasonr@gnu.org>
parents: 63340
diff changeset
8132 /* Apparently NT4 crashes if you give it an unexpected size.
abe4cbe0bdef (NEWOPENFILENAME): New struct.
Jason Rumney <jasonr@gnu.org>
parents: 63340
diff changeset
8133 I'm not sure about Windows 9x, so play it safe. */
abe4cbe0bdef (NEWOPENFILENAME): New struct.
Jason Rumney <jasonr@gnu.org>
parents: 63340
diff changeset
8134 if (w32_major_version > 4 && w32_major_version < 95)
77995
04fafc2fc785 (Fx_file_dialog): Take size from struct not pointer.
Jason Rumney <jasonr@gnu.org>
parents: 76700
diff changeset
8135 file_details->lStructSize = sizeof (NEWOPENFILENAME);
63348
abe4cbe0bdef (NEWOPENFILENAME): New struct.
Jason Rumney <jasonr@gnu.org>
parents: 63340
diff changeset
8136 else
77995
04fafc2fc785 (Fx_file_dialog): Take size from struct not pointer.
Jason Rumney <jasonr@gnu.org>
parents: 76700
diff changeset
8137 file_details->lStructSize = sizeof (OPENFILENAME);
63348
abe4cbe0bdef (NEWOPENFILENAME): New struct.
Jason Rumney <jasonr@gnu.org>
parents: 63340
diff changeset
8138
abe4cbe0bdef (NEWOPENFILENAME): New struct.
Jason Rumney <jasonr@gnu.org>
parents: 63340
diff changeset
8139 file_details->hwndOwner = FRAME_W32_WINDOW (f);
45963
e4d2d8c8186f (file_dialog_callback): New function.
Jason Rumney <jasonr@gnu.org>
parents: 45465
diff changeset
8140 /* Undocumented Bug in Common File Dialog:
e4d2d8c8186f (file_dialog_callback): New function.
Jason Rumney <jasonr@gnu.org>
parents: 45465
diff changeset
8141 If a filter is not specified, shell links are not resolved. */
63348
abe4cbe0bdef (NEWOPENFILENAME): New struct.
Jason Rumney <jasonr@gnu.org>
parents: 63340
diff changeset
8142 file_details->lpstrFilter = "All Files (*.*)\0*.*\0Directories\0*|*\0\0";
abe4cbe0bdef (NEWOPENFILENAME): New struct.
Jason Rumney <jasonr@gnu.org>
parents: 63340
diff changeset
8143 file_details->lpstrFile = filename;
abe4cbe0bdef (NEWOPENFILENAME): New struct.
Jason Rumney <jasonr@gnu.org>
parents: 63340
diff changeset
8144 file_details->nMaxFile = sizeof (filename);
abe4cbe0bdef (NEWOPENFILENAME): New struct.
Jason Rumney <jasonr@gnu.org>
parents: 63340
diff changeset
8145 file_details->lpstrInitialDir = init_dir;
abe4cbe0bdef (NEWOPENFILENAME): New struct.
Jason Rumney <jasonr@gnu.org>
parents: 63340
diff changeset
8146 file_details->lpstrTitle = SDATA (prompt);
56263
1b78563a75d6 (file_dialog_callback): Disable edit control if set
Jason Rumney <jasonr@gnu.org>
parents: 55892
diff changeset
8147
57868
c955f6add62a * fileio.c (Fread_file_name): Pass Qt as fifth parameter to
Jan Djärv <jan.h.d@swipnet.se>
parents: 57765
diff changeset
8148 if (! NILP (only_dir_p))
56263
1b78563a75d6 (file_dialog_callback): Disable edit control if set
Jason Rumney <jasonr@gnu.org>
parents: 55892
diff changeset
8149 default_filter_index = 2;
1b78563a75d6 (file_dialog_callback): Disable edit control if set
Jason Rumney <jasonr@gnu.org>
parents: 55892
diff changeset
8150
63348
abe4cbe0bdef (NEWOPENFILENAME): New struct.
Jason Rumney <jasonr@gnu.org>
parents: 63340
diff changeset
8151 file_details->nFilterIndex = default_filter_index;
abe4cbe0bdef (NEWOPENFILENAME): New struct.
Jason Rumney <jasonr@gnu.org>
parents: 63340
diff changeset
8152
abe4cbe0bdef (NEWOPENFILENAME): New struct.
Jason Rumney <jasonr@gnu.org>
parents: 63340
diff changeset
8153 file_details->Flags = (OFN_HIDEREADONLY | OFN_NOCHANGEDIR
45963
e4d2d8c8186f (file_dialog_callback): New function.
Jason Rumney <jasonr@gnu.org>
parents: 45465
diff changeset
8154 | OFN_EXPLORER | OFN_ENABLEHOOK);
e4d2d8c8186f (file_dialog_callback): New function.
Jason Rumney <jasonr@gnu.org>
parents: 45465
diff changeset
8155 if (!NILP (mustmatch))
63348
abe4cbe0bdef (NEWOPENFILENAME): New struct.
Jason Rumney <jasonr@gnu.org>
parents: 63340
diff changeset
8156 {
abe4cbe0bdef (NEWOPENFILENAME): New struct.
Jason Rumney <jasonr@gnu.org>
parents: 63340
diff changeset
8157 /* Require that the path to the parent directory exists. */
abe4cbe0bdef (NEWOPENFILENAME): New struct.
Jason Rumney <jasonr@gnu.org>
parents: 63340
diff changeset
8158 file_details->Flags |= OFN_PATHMUSTEXIST;
abe4cbe0bdef (NEWOPENFILENAME): New struct.
Jason Rumney <jasonr@gnu.org>
parents: 63340
diff changeset
8159 /* If we are looking for a file, require that it exists. */
abe4cbe0bdef (NEWOPENFILENAME): New struct.
Jason Rumney <jasonr@gnu.org>
parents: 63340
diff changeset
8160 if (NILP (only_dir_p))
abe4cbe0bdef (NEWOPENFILENAME): New struct.
Jason Rumney <jasonr@gnu.org>
parents: 63340
diff changeset
8161 file_details->Flags |= OFN_FILEMUSTEXIST;
abe4cbe0bdef (NEWOPENFILENAME): New struct.
Jason Rumney <jasonr@gnu.org>
parents: 63340
diff changeset
8162 }
abe4cbe0bdef (NEWOPENFILENAME): New struct.
Jason Rumney <jasonr@gnu.org>
parents: 63340
diff changeset
8163
abe4cbe0bdef (NEWOPENFILENAME): New struct.
Jason Rumney <jasonr@gnu.org>
parents: 63340
diff changeset
8164 file_details->lpfnHook = (LPOFNHOOKPROC) file_dialog_callback;
abe4cbe0bdef (NEWOPENFILENAME): New struct.
Jason Rumney <jasonr@gnu.org>
parents: 63340
diff changeset
8165
abe4cbe0bdef (NEWOPENFILENAME): New struct.
Jason Rumney <jasonr@gnu.org>
parents: 63340
diff changeset
8166 file_opened = GetOpenFileName (file_details);
63297
431c88e4a3a2 (Fx_file_dialog): Unblock input before falling back to minibuffer.
Jason Rumney <jasonr@gnu.org>
parents: 63279
diff changeset
8167
431c88e4a3a2 (Fx_file_dialog): Unblock input before falling back to minibuffer.
Jason Rumney <jasonr@gnu.org>
parents: 63279
diff changeset
8168 UNBLOCK_INPUT;
431c88e4a3a2 (Fx_file_dialog): Unblock input before falling back to minibuffer.
Jason Rumney <jasonr@gnu.org>
parents: 63279
diff changeset
8169
431c88e4a3a2 (Fx_file_dialog): Unblock input before falling back to minibuffer.
Jason Rumney <jasonr@gnu.org>
parents: 63279
diff changeset
8170 if (file_opened)
45963
e4d2d8c8186f (file_dialog_callback): New function.
Jason Rumney <jasonr@gnu.org>
parents: 45465
diff changeset
8171 {
e4d2d8c8186f (file_dialog_callback): New function.
Jason Rumney <jasonr@gnu.org>
parents: 45465
diff changeset
8172 dostounix_filename (filename);
63348
abe4cbe0bdef (NEWOPENFILENAME): New struct.
Jason Rumney <jasonr@gnu.org>
parents: 63340
diff changeset
8173
abe4cbe0bdef (NEWOPENFILENAME): New struct.
Jason Rumney <jasonr@gnu.org>
parents: 63340
diff changeset
8174 if (file_details->nFilterIndex == 2)
45963
e4d2d8c8186f (file_dialog_callback): New function.
Jason Rumney <jasonr@gnu.org>
parents: 45465
diff changeset
8175 {
56263
1b78563a75d6 (file_dialog_callback): Disable edit control if set
Jason Rumney <jasonr@gnu.org>
parents: 55892
diff changeset
8176 /* "Directories" selected - strip dummy file name. */
45963
e4d2d8c8186f (file_dialog_callback): New function.
Jason Rumney <jasonr@gnu.org>
parents: 45465
diff changeset
8177 char * last = strrchr (filename, '/');
e4d2d8c8186f (file_dialog_callback): New function.
Jason Rumney <jasonr@gnu.org>
parents: 45465
diff changeset
8178 *last = '\0';
e4d2d8c8186f (file_dialog_callback): New function.
Jason Rumney <jasonr@gnu.org>
parents: 45465
diff changeset
8179 }
e4d2d8c8186f (file_dialog_callback): New function.
Jason Rumney <jasonr@gnu.org>
parents: 45465
diff changeset
8180
79387
0ca197abc593 (Fw32_registered_hot_keys): Don't return the nil values corresponding
Juanma Barranquero <lekktu@gmail.com>
parents: 79381
diff changeset
8181 file = DECODE_FILE (build_string (filename));
45963
e4d2d8c8186f (file_dialog_callback): New function.
Jason Rumney <jasonr@gnu.org>
parents: 45465
diff changeset
8182 }
e4d2d8c8186f (file_dialog_callback): New function.
Jason Rumney <jasonr@gnu.org>
parents: 45465
diff changeset
8183 /* User cancelled the dialog without making a selection. */
e4d2d8c8186f (file_dialog_callback): New function.
Jason Rumney <jasonr@gnu.org>
parents: 45465
diff changeset
8184 else if (!CommDlgExtendedError ())
e4d2d8c8186f (file_dialog_callback): New function.
Jason Rumney <jasonr@gnu.org>
parents: 45465
diff changeset
8185 file = Qnil;
e4d2d8c8186f (file_dialog_callback): New function.
Jason Rumney <jasonr@gnu.org>
parents: 45465
diff changeset
8186 /* An error occurred, fallback on reading from the mini-buffer. */
e4d2d8c8186f (file_dialog_callback): New function.
Jason Rumney <jasonr@gnu.org>
parents: 45465
diff changeset
8187 else
e4d2d8c8186f (file_dialog_callback): New function.
Jason Rumney <jasonr@gnu.org>
parents: 45465
diff changeset
8188 file = Fcompleting_read (prompt, intern ("read-file-name-internal"),
e4d2d8c8186f (file_dialog_callback): New function.
Jason Rumney <jasonr@gnu.org>
parents: 45465
diff changeset
8189 dir, mustmatch, dir, Qfile_name_history,
e4d2d8c8186f (file_dialog_callback): New function.
Jason Rumney <jasonr@gnu.org>
parents: 45465
diff changeset
8190 default_filename, Qnil);
e4d2d8c8186f (file_dialog_callback): New function.
Jason Rumney <jasonr@gnu.org>
parents: 45465
diff changeset
8191
e4d2d8c8186f (file_dialog_callback): New function.
Jason Rumney <jasonr@gnu.org>
parents: 45465
diff changeset
8192 file = unbind_to (count, file);
e4d2d8c8186f (file_dialog_callback): New function.
Jason Rumney <jasonr@gnu.org>
parents: 45465
diff changeset
8193 }
27397
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
8194
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
8195 UNGCPRO;
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
8196
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
8197 /* Make "Cancel" equivalent to C-g. */
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
8198 if (NILP (file))
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
8199 Fsignal (Qquit, Qnil);
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
8200
29317
2d3d5bf49d4e Format and doc changes to bring closer to xfns.c.
Jason Rumney <jasonr@gnu.org>
parents: 29021
diff changeset
8201 return unbind_to (count, file);
27397
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
8202 }
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
8203
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
8204
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
8205
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
8206 /***********************************************************************
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
8207 w32 specialized functions
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
8208 ***********************************************************************/
16588
481b7874a1e9 Change identifiers of the form win32* to w32*.
Geoff Voelker <voelker@cs.washington.edu>
parents: 16259
diff changeset
8209
40964
fb970d0c56eb Change doc-string comments to `new style'. [w/`doc:' keyword]. Doc fixes.
Jason Rumney <jasonr@gnu.org>
parents: 40873
diff changeset
8210 DEFUN ("w32-send-sys-command", Fw32_send_sys_command,
fb970d0c56eb Change doc-string comments to `new style'. [w/`doc:' keyword]. Doc fixes.
Jason Rumney <jasonr@gnu.org>
parents: 40873
diff changeset
8211 Sw32_send_sys_command, 1, 2, 0,
fb970d0c56eb Change doc-string comments to `new style'. [w/`doc:' keyword]. Doc fixes.
Jason Rumney <jasonr@gnu.org>
parents: 40873
diff changeset
8212 doc: /* Send frame a Windows WM_SYSCOMMAND message of type COMMAND.
55892
c12c7852c322 (Fx_display_grayscale_p, Fw32_send_sys_command, Vw32_color_map):
Juanma Barranquero <lekktu@gmail.com>
parents: 55673
diff changeset
8213 Some useful values for COMMAND are #xf030 to maximize frame (#xf020
42845
ebb3a20bc357 (w32_load_system_font, w32_to_x_charset): Use strnicmp
Jason Rumney <jasonr@gnu.org>
parents: 42833
diff changeset
8214 to minimize), #xf120 to restore frame to original size, and #xf100
ebb3a20bc357 (w32_load_system_font, w32_to_x_charset): Use strnicmp
Jason Rumney <jasonr@gnu.org>
parents: 42833
diff changeset
8215 to activate the menubar for keyboard access. #xf140 activates the
40964
fb970d0c56eb Change doc-string comments to `new style'. [w/`doc:' keyword]. Doc fixes.
Jason Rumney <jasonr@gnu.org>
parents: 40873
diff changeset
8216 screen saver if defined.
fb970d0c56eb Change doc-string comments to `new style'. [w/`doc:' keyword]. Doc fixes.
Jason Rumney <jasonr@gnu.org>
parents: 40873
diff changeset
8217
fb970d0c56eb Change doc-string comments to `new style'. [w/`doc:' keyword]. Doc fixes.
Jason Rumney <jasonr@gnu.org>
parents: 40873
diff changeset
8218 If optional parameter FRAME is not specified, use selected frame. */)
19707
0181cc080316 Include limits.h and errno.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18508
diff changeset
8219 (command, frame)
0181cc080316 Include limits.h and errno.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18508
diff changeset
8220 Lisp_Object command, frame;
0181cc080316 Include limits.h and errno.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18508
diff changeset
8221 {
0181cc080316 Include limits.h and errno.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18508
diff changeset
8222 FRAME_PTR f = check_x_frame (frame);
0181cc080316 Include limits.h and errno.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18508
diff changeset
8223
40656
cdfd4d09b79a Update usage of CHECK_ macros (remove unused second argument).
Pavel Janík <Pavel@Janik.cz>
parents: 40528
diff changeset
8224 CHECK_NUMBER (command);
19707
0181cc080316 Include limits.h and errno.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18508
diff changeset
8225
24718
547f54dfbb94 (x_to_w32_charset): Reinstall VIETNAMESE_CHARSET
Andrew Innes <andrewi@gnu.org>
parents: 24695
diff changeset
8226 PostMessage (FRAME_W32_WINDOW (f), WM_SYSCOMMAND, XINT (command), 0);
19707
0181cc080316 Include limits.h and errno.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18508
diff changeset
8227
0181cc080316 Include limits.h and errno.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18508
diff changeset
8228 return Qnil;
0181cc080316 Include limits.h and errno.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18508
diff changeset
8229 }
0181cc080316 Include limits.h and errno.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18508
diff changeset
8230
24670
045e247575d9 [andrewi]
Andrew Innes <andrewi@gnu.org>
parents: 24583
diff changeset
8231 DEFUN ("w32-shell-execute", Fw32_shell_execute, Sw32_shell_execute, 2, 4, 0,
40964
fb970d0c56eb Change doc-string comments to `new style'. [w/`doc:' keyword]. Doc fixes.
Jason Rumney <jasonr@gnu.org>
parents: 40873
diff changeset
8232 doc: /* Get Windows to perform OPERATION on DOCUMENT.
fb970d0c56eb Change doc-string comments to `new style'. [w/`doc:' keyword]. Doc fixes.
Jason Rumney <jasonr@gnu.org>
parents: 40873
diff changeset
8233 This is a wrapper around the ShellExecute system function, which
fb970d0c56eb Change doc-string comments to `new style'. [w/`doc:' keyword]. Doc fixes.
Jason Rumney <jasonr@gnu.org>
parents: 40873
diff changeset
8234 invokes the application registered to handle OPERATION for DOCUMENT.
74350
501f287c0352 (Fw32_shell_execute): Doc fix.
Eli Zaretskii <eliz@gnu.org>
parents: 74221
diff changeset
8235
501f287c0352 (Fw32_shell_execute): Doc fix.
Eli Zaretskii <eliz@gnu.org>
parents: 74221
diff changeset
8236 OPERATION is either nil or a string that names a supported operation.
501f287c0352 (Fw32_shell_execute): Doc fix.
Eli Zaretskii <eliz@gnu.org>
parents: 74221
diff changeset
8237 What operations can be used depends on the particular DOCUMENT and its
501f287c0352 (Fw32_shell_execute): Doc fix.
Eli Zaretskii <eliz@gnu.org>
parents: 74221
diff changeset
8238 handler application, but typically it is one of the following common
501f287c0352 (Fw32_shell_execute): Doc fix.
Eli Zaretskii <eliz@gnu.org>
parents: 74221
diff changeset
8239 operations:
501f287c0352 (Fw32_shell_execute): Doc fix.
Eli Zaretskii <eliz@gnu.org>
parents: 74221
diff changeset
8240
501f287c0352 (Fw32_shell_execute): Doc fix.
Eli Zaretskii <eliz@gnu.org>
parents: 74221
diff changeset
8241 \"open\" - open DOCUMENT, which could be a file, a directory, or an
501f287c0352 (Fw32_shell_execute): Doc fix.
Eli Zaretskii <eliz@gnu.org>
parents: 74221
diff changeset
8242 executable program. If it is an application, that
501f287c0352 (Fw32_shell_execute): Doc fix.
Eli Zaretskii <eliz@gnu.org>
parents: 74221
diff changeset
8243 application is launched in the current buffer's default
501f287c0352 (Fw32_shell_execute): Doc fix.
Eli Zaretskii <eliz@gnu.org>
parents: 74221
diff changeset
8244 directory. Otherwise, the application associated with
501f287c0352 (Fw32_shell_execute): Doc fix.
Eli Zaretskii <eliz@gnu.org>
parents: 74221
diff changeset
8245 DOCUMENT is launched in the buffer's default directory.
501f287c0352 (Fw32_shell_execute): Doc fix.
Eli Zaretskii <eliz@gnu.org>
parents: 74221
diff changeset
8246 \"print\" - print DOCUMENT, which must be a file
501f287c0352 (Fw32_shell_execute): Doc fix.
Eli Zaretskii <eliz@gnu.org>
parents: 74221
diff changeset
8247 \"explore\" - start the Windows Explorer on DOCUMENT
501f287c0352 (Fw32_shell_execute): Doc fix.
Eli Zaretskii <eliz@gnu.org>
parents: 74221
diff changeset
8248 \"edit\" - launch an editor and open DOCUMENT for editing; which
501f287c0352 (Fw32_shell_execute): Doc fix.
Eli Zaretskii <eliz@gnu.org>
parents: 74221
diff changeset
8249 editor is launched depends on the association for the
501f287c0352 (Fw32_shell_execute): Doc fix.
Eli Zaretskii <eliz@gnu.org>
parents: 74221
diff changeset
8250 specified DOCUMENT
501f287c0352 (Fw32_shell_execute): Doc fix.
Eli Zaretskii <eliz@gnu.org>
parents: 74221
diff changeset
8251 \"find\" - initiate search starting from DOCUMENT which must specify
501f287c0352 (Fw32_shell_execute): Doc fix.
Eli Zaretskii <eliz@gnu.org>
parents: 74221
diff changeset
8252 a directory
501f287c0352 (Fw32_shell_execute): Doc fix.
Eli Zaretskii <eliz@gnu.org>
parents: 74221
diff changeset
8253 nil - invoke the default OPERATION, or \"open\" if default is
501f287c0352 (Fw32_shell_execute): Doc fix.
Eli Zaretskii <eliz@gnu.org>
parents: 74221
diff changeset
8254 not defined or unavailable
501f287c0352 (Fw32_shell_execute): Doc fix.
Eli Zaretskii <eliz@gnu.org>
parents: 74221
diff changeset
8255
501f287c0352 (Fw32_shell_execute): Doc fix.
Eli Zaretskii <eliz@gnu.org>
parents: 74221
diff changeset
8256 DOCUMENT is typically the name of a document file or a URL, but can
501f287c0352 (Fw32_shell_execute): Doc fix.
Eli Zaretskii <eliz@gnu.org>
parents: 74221
diff changeset
8257 also be a program executable to run, or a directory to open in the
501f287c0352 (Fw32_shell_execute): Doc fix.
Eli Zaretskii <eliz@gnu.org>
parents: 74221
diff changeset
8258 Windows Explorer.
501f287c0352 (Fw32_shell_execute): Doc fix.
Eli Zaretskii <eliz@gnu.org>
parents: 74221
diff changeset
8259
79387
0ca197abc593 (Fw32_registered_hot_keys): Don't return the nil values corresponding
Juanma Barranquero <lekktu@gmail.com>
parents: 79381
diff changeset
8260 If DOCUMENT is a program executable, the optional third arg PARAMETERS
0ca197abc593 (Fw32_registered_hot_keys): Don't return the nil values corresponding
Juanma Barranquero <lekktu@gmail.com>
parents: 79381
diff changeset
8261 can be a string containing command line parameters that will be passed
0ca197abc593 (Fw32_registered_hot_keys): Don't return the nil values corresponding
Juanma Barranquero <lekktu@gmail.com>
parents: 79381
diff changeset
8262 to the program; otherwise, PARAMETERS should be nil or unspecified.
0ca197abc593 (Fw32_registered_hot_keys): Don't return the nil values corresponding
Juanma Barranquero <lekktu@gmail.com>
parents: 79381
diff changeset
8263
0ca197abc593 (Fw32_registered_hot_keys): Don't return the nil values corresponding
Juanma Barranquero <lekktu@gmail.com>
parents: 79381
diff changeset
8264 Optional fourth argument SHOW-FLAG can be used to control how the
74350
501f287c0352 (Fw32_shell_execute): Doc fix.
Eli Zaretskii <eliz@gnu.org>
parents: 74221
diff changeset
8265 application will be displayed when it is invoked. If SHOW-FLAG is nil
79387
0ca197abc593 (Fw32_registered_hot_keys): Don't return the nil values corresponding
Juanma Barranquero <lekktu@gmail.com>
parents: 79381
diff changeset
8266 or unspecified, the application is displayed normally, otherwise it is
74350
501f287c0352 (Fw32_shell_execute): Doc fix.
Eli Zaretskii <eliz@gnu.org>
parents: 74221
diff changeset
8267 an integer representing a ShowWindow flag:
40964
fb970d0c56eb Change doc-string comments to `new style'. [w/`doc:' keyword]. Doc fixes.
Jason Rumney <jasonr@gnu.org>
parents: 40873
diff changeset
8268
fb970d0c56eb Change doc-string comments to `new style'. [w/`doc:' keyword]. Doc fixes.
Jason Rumney <jasonr@gnu.org>
parents: 40873
diff changeset
8269 0 - start hidden
fb970d0c56eb Change doc-string comments to `new style'. [w/`doc:' keyword]. Doc fixes.
Jason Rumney <jasonr@gnu.org>
parents: 40873
diff changeset
8270 1 - start normally
fb970d0c56eb Change doc-string comments to `new style'. [w/`doc:' keyword]. Doc fixes.
Jason Rumney <jasonr@gnu.org>
parents: 40873
diff changeset
8271 3 - start maximized
fb970d0c56eb Change doc-string comments to `new style'. [w/`doc:' keyword]. Doc fixes.
Jason Rumney <jasonr@gnu.org>
parents: 40873
diff changeset
8272 6 - start minimized */)
24670
045e247575d9 [andrewi]
Andrew Innes <andrewi@gnu.org>
parents: 24583
diff changeset
8273 (operation, document, parameters, show_flag)
045e247575d9 [andrewi]
Andrew Innes <andrewi@gnu.org>
parents: 24583
diff changeset
8274 Lisp_Object operation, document, parameters, show_flag;
045e247575d9 [andrewi]
Andrew Innes <andrewi@gnu.org>
parents: 24583
diff changeset
8275 {
045e247575d9 [andrewi]
Andrew Innes <andrewi@gnu.org>
parents: 24583
diff changeset
8276 Lisp_Object current_dir;
045e247575d9 [andrewi]
Andrew Innes <andrewi@gnu.org>
parents: 24583
diff changeset
8277
40656
cdfd4d09b79a Update usage of CHECK_ macros (remove unused second argument).
Pavel Janík <Pavel@Janik.cz>
parents: 40528
diff changeset
8278 CHECK_STRING (document);
24670
045e247575d9 [andrewi]
Andrew Innes <andrewi@gnu.org>
parents: 24583
diff changeset
8279
80140
001f79563e5a (Fw32_shell_execute): Encode parameters.
Jason Rumney <jasonr@gnu.org>
parents: 79759
diff changeset
8280 /* Encode filename, current directory and parameters. */
24670
045e247575d9 [andrewi]
Andrew Innes <andrewi@gnu.org>
parents: 24583
diff changeset
8281 current_dir = ENCODE_FILE (current_buffer->directory);
045e247575d9 [andrewi]
Andrew Innes <andrewi@gnu.org>
parents: 24583
diff changeset
8282 document = ENCODE_FILE (document);
80140
001f79563e5a (Fw32_shell_execute): Encode parameters.
Jason Rumney <jasonr@gnu.org>
parents: 79759
diff changeset
8283 if (STRINGP (parameters))
001f79563e5a (Fw32_shell_execute): Encode parameters.
Jason Rumney <jasonr@gnu.org>
parents: 79759
diff changeset
8284 parameters = ENCODE_SYSTEM (parameters);
001f79563e5a (Fw32_shell_execute): Encode parameters.
Jason Rumney <jasonr@gnu.org>
parents: 79759
diff changeset
8285
24670
045e247575d9 [andrewi]
Andrew Innes <andrewi@gnu.org>
parents: 24583
diff changeset
8286 if ((int) ShellExecute (NULL,
27397
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
8287 (STRINGP (operation) ?
46370
40db0673e6f0 Most uses of XSTRING combined with STRING_BYTES or indirection changed to
Ken Raeburn <raeburn@raeburn.org>
parents: 46293
diff changeset
8288 SDATA (operation) : NULL),
40db0673e6f0 Most uses of XSTRING combined with STRING_BYTES or indirection changed to
Ken Raeburn <raeburn@raeburn.org>
parents: 46293
diff changeset
8289 SDATA (document),
24670
045e247575d9 [andrewi]
Andrew Innes <andrewi@gnu.org>
parents: 24583
diff changeset
8290 (STRINGP (parameters) ?
46370
40db0673e6f0 Most uses of XSTRING combined with STRING_BYTES or indirection changed to
Ken Raeburn <raeburn@raeburn.org>
parents: 46293
diff changeset
8291 SDATA (parameters) : NULL),
40db0673e6f0 Most uses of XSTRING combined with STRING_BYTES or indirection changed to
Ken Raeburn <raeburn@raeburn.org>
parents: 46293
diff changeset
8292 SDATA (current_dir),
24670
045e247575d9 [andrewi]
Andrew Innes <andrewi@gnu.org>
parents: 24583
diff changeset
8293 (INTEGERP (show_flag) ?
045e247575d9 [andrewi]
Andrew Innes <andrewi@gnu.org>
parents: 24583
diff changeset
8294 XINT (show_flag) : SW_SHOWDEFAULT))
045e247575d9 [andrewi]
Andrew Innes <andrewi@gnu.org>
parents: 24583
diff changeset
8295 > 32)
045e247575d9 [andrewi]
Andrew Innes <andrewi@gnu.org>
parents: 24583
diff changeset
8296 return Qt;
34698
cc62e2e0949d (Fw32_shell_execute): Use it.
Andrew Innes <andrewi@gnu.org>
parents: 34643
diff changeset
8297 error ("ShellExecute failed: %s", w32_strerror (0));
24670
045e247575d9 [andrewi]
Andrew Innes <andrewi@gnu.org>
parents: 24583
diff changeset
8298 }
045e247575d9 [andrewi]
Andrew Innes <andrewi@gnu.org>
parents: 24583
diff changeset
8299
23681
af0276da2059 (Vw32_pass_optional_keys_to_system): Variable removed.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23637
diff changeset
8300 /* Lookup virtual keycode from string representing the name of a
af0276da2059 (Vw32_pass_optional_keys_to_system): Variable removed.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23637
diff changeset
8301 non-ascii keystroke into the corresponding virtual key, using
af0276da2059 (Vw32_pass_optional_keys_to_system): Variable removed.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23637
diff changeset
8302 lispy_function_keys. */
af0276da2059 (Vw32_pass_optional_keys_to_system): Variable removed.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23637
diff changeset
8303 static int
af0276da2059 (Vw32_pass_optional_keys_to_system): Variable removed.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23637
diff changeset
8304 lookup_vk_code (char *key)
af0276da2059 (Vw32_pass_optional_keys_to_system): Variable removed.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23637
diff changeset
8305 {
af0276da2059 (Vw32_pass_optional_keys_to_system): Variable removed.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23637
diff changeset
8306 int i;
af0276da2059 (Vw32_pass_optional_keys_to_system): Variable removed.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23637
diff changeset
8307
af0276da2059 (Vw32_pass_optional_keys_to_system): Variable removed.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23637
diff changeset
8308 for (i = 0; i < 256; i++)
79563
fb6105cb466b (w32_wnd_proc, Fw32_reconstruct_hot_key): Range check
Jason Rumney <jasonr@gnu.org>
parents: 79393
diff changeset
8309 if (lispy_function_keys[i]
23681
af0276da2059 (Vw32_pass_optional_keys_to_system): Variable removed.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23637
diff changeset
8310 && strcmp (lispy_function_keys[i], key) == 0)
af0276da2059 (Vw32_pass_optional_keys_to_system): Variable removed.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23637
diff changeset
8311 return i;
af0276da2059 (Vw32_pass_optional_keys_to_system): Variable removed.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23637
diff changeset
8312
af0276da2059 (Vw32_pass_optional_keys_to_system): Variable removed.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23637
diff changeset
8313 return -1;
af0276da2059 (Vw32_pass_optional_keys_to_system): Variable removed.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23637
diff changeset
8314 }
af0276da2059 (Vw32_pass_optional_keys_to_system): Variable removed.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23637
diff changeset
8315
af0276da2059 (Vw32_pass_optional_keys_to_system): Variable removed.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23637
diff changeset
8316 /* Convert a one-element vector style key sequence to a hot key
af0276da2059 (Vw32_pass_optional_keys_to_system): Variable removed.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23637
diff changeset
8317 definition. */
55656
29b250a07fe0 (Fw32_register_hot_key, Fw32_unregister_hot_key)
Jason Rumney <jasonr@gnu.org>
parents: 55592
diff changeset
8318 static Lisp_Object
23681
af0276da2059 (Vw32_pass_optional_keys_to_system): Variable removed.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23637
diff changeset
8319 w32_parse_hot_key (key)
af0276da2059 (Vw32_pass_optional_keys_to_system): Variable removed.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23637
diff changeset
8320 Lisp_Object key;
af0276da2059 (Vw32_pass_optional_keys_to_system): Variable removed.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23637
diff changeset
8321 {
af0276da2059 (Vw32_pass_optional_keys_to_system): Variable removed.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23637
diff changeset
8322 /* Copied from Fdefine_key and store_in_keymap. */
af0276da2059 (Vw32_pass_optional_keys_to_system): Variable removed.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23637
diff changeset
8323 register Lisp_Object c;
af0276da2059 (Vw32_pass_optional_keys_to_system): Variable removed.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23637
diff changeset
8324 int vk_code;
af0276da2059 (Vw32_pass_optional_keys_to_system): Variable removed.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23637
diff changeset
8325 int lisp_modifiers;
af0276da2059 (Vw32_pass_optional_keys_to_system): Variable removed.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23637
diff changeset
8326 int w32_modifiers;
af0276da2059 (Vw32_pass_optional_keys_to_system): Variable removed.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23637
diff changeset
8327 struct gcpro gcpro1;
af0276da2059 (Vw32_pass_optional_keys_to_system): Variable removed.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23637
diff changeset
8328
40656
cdfd4d09b79a Update usage of CHECK_ macros (remove unused second argument).
Pavel Janík <Pavel@Janik.cz>
parents: 40528
diff changeset
8329 CHECK_VECTOR (key);
23681
af0276da2059 (Vw32_pass_optional_keys_to_system): Variable removed.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23637
diff changeset
8330
af0276da2059 (Vw32_pass_optional_keys_to_system): Variable removed.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23637
diff changeset
8331 if (XFASTINT (Flength (key)) != 1)
af0276da2059 (Vw32_pass_optional_keys_to_system): Variable removed.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23637
diff changeset
8332 return Qnil;
af0276da2059 (Vw32_pass_optional_keys_to_system): Variable removed.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23637
diff changeset
8333
af0276da2059 (Vw32_pass_optional_keys_to_system): Variable removed.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23637
diff changeset
8334 GCPRO1 (key);
af0276da2059 (Vw32_pass_optional_keys_to_system): Variable removed.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23637
diff changeset
8335
af0276da2059 (Vw32_pass_optional_keys_to_system): Variable removed.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23637
diff changeset
8336 c = Faref (key, make_number (0));
af0276da2059 (Vw32_pass_optional_keys_to_system): Variable removed.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23637
diff changeset
8337
af0276da2059 (Vw32_pass_optional_keys_to_system): Variable removed.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23637
diff changeset
8338 if (CONSP (c) && lucid_event_type_list_p (c))
af0276da2059 (Vw32_pass_optional_keys_to_system): Variable removed.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23637
diff changeset
8339 c = Fevent_convert_list (c);
af0276da2059 (Vw32_pass_optional_keys_to_system): Variable removed.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23637
diff changeset
8340
af0276da2059 (Vw32_pass_optional_keys_to_system): Variable removed.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23637
diff changeset
8341 UNGCPRO;
af0276da2059 (Vw32_pass_optional_keys_to_system): Variable removed.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23637
diff changeset
8342
af0276da2059 (Vw32_pass_optional_keys_to_system): Variable removed.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23637
diff changeset
8343 if (! INTEGERP (c) && ! SYMBOLP (c))
af0276da2059 (Vw32_pass_optional_keys_to_system): Variable removed.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23637
diff changeset
8344 error ("Key definition is invalid");
af0276da2059 (Vw32_pass_optional_keys_to_system): Variable removed.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23637
diff changeset
8345
af0276da2059 (Vw32_pass_optional_keys_to_system): Variable removed.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23637
diff changeset
8346 /* Work out the base key and the modifiers. */
af0276da2059 (Vw32_pass_optional_keys_to_system): Variable removed.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23637
diff changeset
8347 if (SYMBOLP (c))
af0276da2059 (Vw32_pass_optional_keys_to_system): Variable removed.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23637
diff changeset
8348 {
af0276da2059 (Vw32_pass_optional_keys_to_system): Variable removed.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23637
diff changeset
8349 c = parse_modifiers (c);
55656
29b250a07fe0 (Fw32_register_hot_key, Fw32_unregister_hot_key)
Jason Rumney <jasonr@gnu.org>
parents: 55592
diff changeset
8350 lisp_modifiers = XINT (Fcar (Fcdr (c)));
23681
af0276da2059 (Vw32_pass_optional_keys_to_system): Variable removed.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23637
diff changeset
8351 c = Fcar (c);
af0276da2059 (Vw32_pass_optional_keys_to_system): Variable removed.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23637
diff changeset
8352 if (!SYMBOLP (c))
af0276da2059 (Vw32_pass_optional_keys_to_system): Variable removed.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23637
diff changeset
8353 abort ();
46370
40db0673e6f0 Most uses of XSTRING combined with STRING_BYTES or indirection changed to
Ken Raeburn <raeburn@raeburn.org>
parents: 46293
diff changeset
8354 vk_code = lookup_vk_code (SDATA (SYMBOL_NAME (c)));
23681
af0276da2059 (Vw32_pass_optional_keys_to_system): Variable removed.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23637
diff changeset
8355 }
af0276da2059 (Vw32_pass_optional_keys_to_system): Variable removed.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23637
diff changeset
8356 else if (INTEGERP (c))
af0276da2059 (Vw32_pass_optional_keys_to_system): Variable removed.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23637
diff changeset
8357 {
af0276da2059 (Vw32_pass_optional_keys_to_system): Variable removed.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23637
diff changeset
8358 lisp_modifiers = XINT (c) & ~CHARACTERBITS;
af0276da2059 (Vw32_pass_optional_keys_to_system): Variable removed.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23637
diff changeset
8359 /* Many ascii characters are their own virtual key code. */
af0276da2059 (Vw32_pass_optional_keys_to_system): Variable removed.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23637
diff changeset
8360 vk_code = XINT (c) & CHARACTERBITS;
af0276da2059 (Vw32_pass_optional_keys_to_system): Variable removed.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23637
diff changeset
8361 }
af0276da2059 (Vw32_pass_optional_keys_to_system): Variable removed.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23637
diff changeset
8362
af0276da2059 (Vw32_pass_optional_keys_to_system): Variable removed.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23637
diff changeset
8363 if (vk_code < 0 || vk_code > 255)
af0276da2059 (Vw32_pass_optional_keys_to_system): Variable removed.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23637
diff changeset
8364 return Qnil;
af0276da2059 (Vw32_pass_optional_keys_to_system): Variable removed.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23637
diff changeset
8365
af0276da2059 (Vw32_pass_optional_keys_to_system): Variable removed.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23637
diff changeset
8366 if ((lisp_modifiers & meta_modifier) != 0
af0276da2059 (Vw32_pass_optional_keys_to_system): Variable removed.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23637
diff changeset
8367 && !NILP (Vw32_alt_is_meta))
af0276da2059 (Vw32_pass_optional_keys_to_system): Variable removed.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23637
diff changeset
8368 lisp_modifiers |= alt_modifier;
af0276da2059 (Vw32_pass_optional_keys_to_system): Variable removed.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23637
diff changeset
8369
31110
9feda85db5d6 (max): Define macro.
Andrew Innes <andrewi@gnu.org>
parents: 30601
diff changeset
8370 /* Supply defs missing from mingw32. */
9feda85db5d6 (max): Define macro.
Andrew Innes <andrewi@gnu.org>
parents: 30601
diff changeset
8371 #ifndef MOD_ALT
9feda85db5d6 (max): Define macro.
Andrew Innes <andrewi@gnu.org>
parents: 30601
diff changeset
8372 #define MOD_ALT 0x0001
9feda85db5d6 (max): Define macro.
Andrew Innes <andrewi@gnu.org>
parents: 30601
diff changeset
8373 #define MOD_CONTROL 0x0002
9feda85db5d6 (max): Define macro.
Andrew Innes <andrewi@gnu.org>
parents: 30601
diff changeset
8374 #define MOD_SHIFT 0x0004
9feda85db5d6 (max): Define macro.
Andrew Innes <andrewi@gnu.org>
parents: 30601
diff changeset
8375 #define MOD_WIN 0x0008
9feda85db5d6 (max): Define macro.
Andrew Innes <andrewi@gnu.org>
parents: 30601
diff changeset
8376 #endif
9feda85db5d6 (max): Define macro.
Andrew Innes <andrewi@gnu.org>
parents: 30601
diff changeset
8377
23681
af0276da2059 (Vw32_pass_optional_keys_to_system): Variable removed.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23637
diff changeset
8378 /* Convert lisp modifiers to Windows hot-key form. */
af0276da2059 (Vw32_pass_optional_keys_to_system): Variable removed.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23637
diff changeset
8379 w32_modifiers = (lisp_modifiers & hyper_modifier) ? MOD_WIN : 0;
af0276da2059 (Vw32_pass_optional_keys_to_system): Variable removed.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23637
diff changeset
8380 w32_modifiers |= (lisp_modifiers & alt_modifier) ? MOD_ALT : 0;
af0276da2059 (Vw32_pass_optional_keys_to_system): Variable removed.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23637
diff changeset
8381 w32_modifiers |= (lisp_modifiers & ctrl_modifier) ? MOD_CONTROL : 0;
af0276da2059 (Vw32_pass_optional_keys_to_system): Variable removed.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23637
diff changeset
8382 w32_modifiers |= (lisp_modifiers & shift_modifier) ? MOD_SHIFT : 0;
af0276da2059 (Vw32_pass_optional_keys_to_system): Variable removed.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23637
diff changeset
8383
af0276da2059 (Vw32_pass_optional_keys_to_system): Variable removed.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23637
diff changeset
8384 return HOTKEY (vk_code, w32_modifiers);
af0276da2059 (Vw32_pass_optional_keys_to_system): Variable removed.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23637
diff changeset
8385 }
af0276da2059 (Vw32_pass_optional_keys_to_system): Variable removed.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23637
diff changeset
8386
40964
fb970d0c56eb Change doc-string comments to `new style'. [w/`doc:' keyword]. Doc fixes.
Jason Rumney <jasonr@gnu.org>
parents: 40873
diff changeset
8387 DEFUN ("w32-register-hot-key", Fw32_register_hot_key,
fb970d0c56eb Change doc-string comments to `new style'. [w/`doc:' keyword]. Doc fixes.
Jason Rumney <jasonr@gnu.org>
parents: 40873
diff changeset
8388 Sw32_register_hot_key, 1, 1, 0,
fb970d0c56eb Change doc-string comments to `new style'. [w/`doc:' keyword]. Doc fixes.
Jason Rumney <jasonr@gnu.org>
parents: 40873
diff changeset
8389 doc: /* Register KEY as a hot-key combination.
fb970d0c56eb Change doc-string comments to `new style'. [w/`doc:' keyword]. Doc fixes.
Jason Rumney <jasonr@gnu.org>
parents: 40873
diff changeset
8390 Certain key combinations like Alt-Tab are reserved for system use on
fb970d0c56eb Change doc-string comments to `new style'. [w/`doc:' keyword]. Doc fixes.
Jason Rumney <jasonr@gnu.org>
parents: 40873
diff changeset
8391 Windows, and therefore are normally intercepted by the system. However,
fb970d0c56eb Change doc-string comments to `new style'. [w/`doc:' keyword]. Doc fixes.
Jason Rumney <jasonr@gnu.org>
parents: 40873
diff changeset
8392 most of these key combinations can be received by registering them as
fb970d0c56eb Change doc-string comments to `new style'. [w/`doc:' keyword]. Doc fixes.
Jason Rumney <jasonr@gnu.org>
parents: 40873
diff changeset
8393 hot-keys, overriding their special meaning.
fb970d0c56eb Change doc-string comments to `new style'. [w/`doc:' keyword]. Doc fixes.
Jason Rumney <jasonr@gnu.org>
parents: 40873
diff changeset
8394
fb970d0c56eb Change doc-string comments to `new style'. [w/`doc:' keyword]. Doc fixes.
Jason Rumney <jasonr@gnu.org>
parents: 40873
diff changeset
8395 KEY must be a one element key definition in vector form that would be
fb970d0c56eb Change doc-string comments to `new style'. [w/`doc:' keyword]. Doc fixes.
Jason Rumney <jasonr@gnu.org>
parents: 40873
diff changeset
8396 acceptable to `define-key' (e.g. [A-tab] for Alt-Tab). The meta
fb970d0c56eb Change doc-string comments to `new style'. [w/`doc:' keyword]. Doc fixes.
Jason Rumney <jasonr@gnu.org>
parents: 40873
diff changeset
8397 modifier is interpreted as Alt if `w32-alt-is-meta' is t, and hyper
fb970d0c56eb Change doc-string comments to `new style'. [w/`doc:' keyword]. Doc fixes.
Jason Rumney <jasonr@gnu.org>
parents: 40873
diff changeset
8398 is always interpreted as the Windows modifier keys.
fb970d0c56eb Change doc-string comments to `new style'. [w/`doc:' keyword]. Doc fixes.
Jason Rumney <jasonr@gnu.org>
parents: 40873
diff changeset
8399
fb970d0c56eb Change doc-string comments to `new style'. [w/`doc:' keyword]. Doc fixes.
Jason Rumney <jasonr@gnu.org>
parents: 40873
diff changeset
8400 The return value is the hotkey-id if registered, otherwise nil. */)
23681
af0276da2059 (Vw32_pass_optional_keys_to_system): Variable removed.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23637
diff changeset
8401 (key)
af0276da2059 (Vw32_pass_optional_keys_to_system): Variable removed.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23637
diff changeset
8402 Lisp_Object key;
af0276da2059 (Vw32_pass_optional_keys_to_system): Variable removed.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23637
diff changeset
8403 {
af0276da2059 (Vw32_pass_optional_keys_to_system): Variable removed.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23637
diff changeset
8404 key = w32_parse_hot_key (key);
af0276da2059 (Vw32_pass_optional_keys_to_system): Variable removed.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23637
diff changeset
8405
79381
c157297ae42e (Fw32_register_hot_key): Don't try to register
Juanma Barranquero <lekktu@gmail.com>
parents: 79213
diff changeset
8406 if (!NILP (key) && NILP (Fmemq (key, w32_grabbed_keys)))
23681
af0276da2059 (Vw32_pass_optional_keys_to_system): Variable removed.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23637
diff changeset
8407 {
af0276da2059 (Vw32_pass_optional_keys_to_system): Variable removed.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23637
diff changeset
8408 /* Reuse an empty slot if possible. */
af0276da2059 (Vw32_pass_optional_keys_to_system): Variable removed.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23637
diff changeset
8409 Lisp_Object item = Fmemq (Qnil, w32_grabbed_keys);
af0276da2059 (Vw32_pass_optional_keys_to_system): Variable removed.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23637
diff changeset
8410
af0276da2059 (Vw32_pass_optional_keys_to_system): Variable removed.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23637
diff changeset
8411 /* Safe to add new key to list, even if we have focus. */
af0276da2059 (Vw32_pass_optional_keys_to_system): Variable removed.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23637
diff changeset
8412 if (NILP (item))
af0276da2059 (Vw32_pass_optional_keys_to_system): Variable removed.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23637
diff changeset
8413 w32_grabbed_keys = Fcons (key, w32_grabbed_keys);
af0276da2059 (Vw32_pass_optional_keys_to_system): Variable removed.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23637
diff changeset
8414 else
39973
579177964efa Avoid (most) uses of XCAR/XCDR as lvalues, for flexibility in experimenting
Ken Raeburn <raeburn@raeburn.org>
parents: 39812
diff changeset
8415 XSETCAR (item, key);
23681
af0276da2059 (Vw32_pass_optional_keys_to_system): Variable removed.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23637
diff changeset
8416
af0276da2059 (Vw32_pass_optional_keys_to_system): Variable removed.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23637
diff changeset
8417 /* Notify input thread about new hot-key definition, so that it
af0276da2059 (Vw32_pass_optional_keys_to_system): Variable removed.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23637
diff changeset
8418 takes effect without needing to switch focus. */
55656
29b250a07fe0 (Fw32_register_hot_key, Fw32_unregister_hot_key)
Jason Rumney <jasonr@gnu.org>
parents: 55592
diff changeset
8419 #ifdef USE_LISP_UNION_TYPE
29b250a07fe0 (Fw32_register_hot_key, Fw32_unregister_hot_key)
Jason Rumney <jasonr@gnu.org>
parents: 55592
diff changeset
8420 PostThreadMessage (dwWindowsThreadId, WM_EMACS_REGISTER_HOT_KEY,
29b250a07fe0 (Fw32_register_hot_key, Fw32_unregister_hot_key)
Jason Rumney <jasonr@gnu.org>
parents: 55592
diff changeset
8421 (WPARAM) key.i, 0);
29b250a07fe0 (Fw32_register_hot_key, Fw32_unregister_hot_key)
Jason Rumney <jasonr@gnu.org>
parents: 55592
diff changeset
8422 #else
23681
af0276da2059 (Vw32_pass_optional_keys_to_system): Variable removed.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23637
diff changeset
8423 PostThreadMessage (dwWindowsThreadId, WM_EMACS_REGISTER_HOT_KEY,
af0276da2059 (Vw32_pass_optional_keys_to_system): Variable removed.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23637
diff changeset
8424 (WPARAM) key, 0);
55656
29b250a07fe0 (Fw32_register_hot_key, Fw32_unregister_hot_key)
Jason Rumney <jasonr@gnu.org>
parents: 55592
diff changeset
8425 #endif
23681
af0276da2059 (Vw32_pass_optional_keys_to_system): Variable removed.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23637
diff changeset
8426 }
af0276da2059 (Vw32_pass_optional_keys_to_system): Variable removed.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23637
diff changeset
8427
af0276da2059 (Vw32_pass_optional_keys_to_system): Variable removed.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23637
diff changeset
8428 return key;
af0276da2059 (Vw32_pass_optional_keys_to_system): Variable removed.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23637
diff changeset
8429 }
af0276da2059 (Vw32_pass_optional_keys_to_system): Variable removed.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23637
diff changeset
8430
40964
fb970d0c56eb Change doc-string comments to `new style'. [w/`doc:' keyword]. Doc fixes.
Jason Rumney <jasonr@gnu.org>
parents: 40873
diff changeset
8431 DEFUN ("w32-unregister-hot-key", Fw32_unregister_hot_key,
fb970d0c56eb Change doc-string comments to `new style'. [w/`doc:' keyword]. Doc fixes.
Jason Rumney <jasonr@gnu.org>
parents: 40873
diff changeset
8432 Sw32_unregister_hot_key, 1, 1, 0,
55892
c12c7852c322 (Fx_display_grayscale_p, Fw32_send_sys_command, Vw32_color_map):
Juanma Barranquero <lekktu@gmail.com>
parents: 55673
diff changeset
8433 doc: /* Unregister KEY as a hot-key combination. */)
23681
af0276da2059 (Vw32_pass_optional_keys_to_system): Variable removed.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23637
diff changeset
8434 (key)
af0276da2059 (Vw32_pass_optional_keys_to_system): Variable removed.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23637
diff changeset
8435 Lisp_Object key;
af0276da2059 (Vw32_pass_optional_keys_to_system): Variable removed.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23637
diff changeset
8436 {
af0276da2059 (Vw32_pass_optional_keys_to_system): Variable removed.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23637
diff changeset
8437 Lisp_Object item;
af0276da2059 (Vw32_pass_optional_keys_to_system): Variable removed.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23637
diff changeset
8438
af0276da2059 (Vw32_pass_optional_keys_to_system): Variable removed.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23637
diff changeset
8439 if (!INTEGERP (key))
af0276da2059 (Vw32_pass_optional_keys_to_system): Variable removed.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23637
diff changeset
8440 key = w32_parse_hot_key (key);
af0276da2059 (Vw32_pass_optional_keys_to_system): Variable removed.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23637
diff changeset
8441
af0276da2059 (Vw32_pass_optional_keys_to_system): Variable removed.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23637
diff changeset
8442 item = Fmemq (key, w32_grabbed_keys);
af0276da2059 (Vw32_pass_optional_keys_to_system): Variable removed.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23637
diff changeset
8443
af0276da2059 (Vw32_pass_optional_keys_to_system): Variable removed.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23637
diff changeset
8444 if (!NILP (item))
af0276da2059 (Vw32_pass_optional_keys_to_system): Variable removed.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23637
diff changeset
8445 {
af0276da2059 (Vw32_pass_optional_keys_to_system): Variable removed.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23637
diff changeset
8446 /* Notify input thread about hot-key definition being removed, so
af0276da2059 (Vw32_pass_optional_keys_to_system): Variable removed.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23637
diff changeset
8447 that it takes effect without needing focus switch. */
55656
29b250a07fe0 (Fw32_register_hot_key, Fw32_unregister_hot_key)
Jason Rumney <jasonr@gnu.org>
parents: 55592
diff changeset
8448 #ifdef USE_LISP_UNION_TYPE
23681
af0276da2059 (Vw32_pass_optional_keys_to_system): Variable removed.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23637
diff changeset
8449 if (PostThreadMessage (dwWindowsThreadId, WM_EMACS_UNREGISTER_HOT_KEY,
55656
29b250a07fe0 (Fw32_register_hot_key, Fw32_unregister_hot_key)
Jason Rumney <jasonr@gnu.org>
parents: 55592
diff changeset
8450 (WPARAM) XINT (XCAR (item)), (LPARAM) item.i))
29b250a07fe0 (Fw32_register_hot_key, Fw32_unregister_hot_key)
Jason Rumney <jasonr@gnu.org>
parents: 55592
diff changeset
8451 #else
29b250a07fe0 (Fw32_register_hot_key, Fw32_unregister_hot_key)
Jason Rumney <jasonr@gnu.org>
parents: 55592
diff changeset
8452 if (PostThreadMessage (dwWindowsThreadId, WM_EMACS_UNREGISTER_HOT_KEY,
55673
4401083a1583 Fix last change for non USE_LISP_UNION_TYPE case.
Jason Rumney <jasonr@gnu.org>
parents: 55656
diff changeset
8453 (WPARAM) XINT (XCAR (item)), (LPARAM) item))
55656
29b250a07fe0 (Fw32_register_hot_key, Fw32_unregister_hot_key)
Jason Rumney <jasonr@gnu.org>
parents: 55592
diff changeset
8454 #endif
23681
af0276da2059 (Vw32_pass_optional_keys_to_system): Variable removed.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23637
diff changeset
8455 {
af0276da2059 (Vw32_pass_optional_keys_to_system): Variable removed.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23637
diff changeset
8456 MSG msg;
af0276da2059 (Vw32_pass_optional_keys_to_system): Variable removed.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23637
diff changeset
8457 GetMessage (&msg, NULL, WM_EMACS_DONE, WM_EMACS_DONE);
af0276da2059 (Vw32_pass_optional_keys_to_system): Variable removed.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23637
diff changeset
8458 }
af0276da2059 (Vw32_pass_optional_keys_to_system): Variable removed.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23637
diff changeset
8459 return Qt;
af0276da2059 (Vw32_pass_optional_keys_to_system): Variable removed.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23637
diff changeset
8460 }
af0276da2059 (Vw32_pass_optional_keys_to_system): Variable removed.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23637
diff changeset
8461 return Qnil;
af0276da2059 (Vw32_pass_optional_keys_to_system): Variable removed.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23637
diff changeset
8462 }
af0276da2059 (Vw32_pass_optional_keys_to_system): Variable removed.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23637
diff changeset
8463
40964
fb970d0c56eb Change doc-string comments to `new style'. [w/`doc:' keyword]. Doc fixes.
Jason Rumney <jasonr@gnu.org>
parents: 40873
diff changeset
8464 DEFUN ("w32-registered-hot-keys", Fw32_registered_hot_keys,
fb970d0c56eb Change doc-string comments to `new style'. [w/`doc:' keyword]. Doc fixes.
Jason Rumney <jasonr@gnu.org>
parents: 40873
diff changeset
8465 Sw32_registered_hot_keys, 0, 0, 0,
fb970d0c56eb Change doc-string comments to `new style'. [w/`doc:' keyword]. Doc fixes.
Jason Rumney <jasonr@gnu.org>
parents: 40873
diff changeset
8466 doc: /* Return list of registered hot-key IDs. */)
23681
af0276da2059 (Vw32_pass_optional_keys_to_system): Variable removed.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23637
diff changeset
8467 ()
af0276da2059 (Vw32_pass_optional_keys_to_system): Variable removed.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23637
diff changeset
8468 {
79387
0ca197abc593 (Fw32_registered_hot_keys): Don't return the nil values corresponding
Juanma Barranquero <lekktu@gmail.com>
parents: 79381
diff changeset
8469 return Fdelq (Qnil, Fcopy_sequence (w32_grabbed_keys));
23681
af0276da2059 (Vw32_pass_optional_keys_to_system): Variable removed.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23637
diff changeset
8470 }
af0276da2059 (Vw32_pass_optional_keys_to_system): Variable removed.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23637
diff changeset
8471
40964
fb970d0c56eb Change doc-string comments to `new style'. [w/`doc:' keyword]. Doc fixes.
Jason Rumney <jasonr@gnu.org>
parents: 40873
diff changeset
8472 DEFUN ("w32-reconstruct-hot-key", Fw32_reconstruct_hot_key,
fb970d0c56eb Change doc-string comments to `new style'. [w/`doc:' keyword]. Doc fixes.
Jason Rumney <jasonr@gnu.org>
parents: 40873
diff changeset
8473 Sw32_reconstruct_hot_key, 1, 1, 0,
55892
c12c7852c322 (Fx_display_grayscale_p, Fw32_send_sys_command, Vw32_color_map):
Juanma Barranquero <lekktu@gmail.com>
parents: 55673
diff changeset
8474 doc: /* Convert hot-key ID to a lisp key combination.
c12c7852c322 (Fx_display_grayscale_p, Fw32_send_sys_command, Vw32_color_map):
Juanma Barranquero <lekktu@gmail.com>
parents: 55673
diff changeset
8475 usage: (w32-reconstruct-hot-key ID) */)
23681
af0276da2059 (Vw32_pass_optional_keys_to_system): Variable removed.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23637
diff changeset
8476 (hotkeyid)
af0276da2059 (Vw32_pass_optional_keys_to_system): Variable removed.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23637
diff changeset
8477 Lisp_Object hotkeyid;
af0276da2059 (Vw32_pass_optional_keys_to_system): Variable removed.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23637
diff changeset
8478 {
af0276da2059 (Vw32_pass_optional_keys_to_system): Variable removed.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23637
diff changeset
8479 int vk_code, w32_modifiers;
af0276da2059 (Vw32_pass_optional_keys_to_system): Variable removed.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23637
diff changeset
8480 Lisp_Object key;
af0276da2059 (Vw32_pass_optional_keys_to_system): Variable removed.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23637
diff changeset
8481
40656
cdfd4d09b79a Update usage of CHECK_ macros (remove unused second argument).
Pavel Janík <Pavel@Janik.cz>
parents: 40528
diff changeset
8482 CHECK_NUMBER (hotkeyid);
23681
af0276da2059 (Vw32_pass_optional_keys_to_system): Variable removed.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23637
diff changeset
8483
af0276da2059 (Vw32_pass_optional_keys_to_system): Variable removed.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23637
diff changeset
8484 vk_code = HOTKEY_VK_CODE (hotkeyid);
af0276da2059 (Vw32_pass_optional_keys_to_system): Variable removed.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23637
diff changeset
8485 w32_modifiers = HOTKEY_MODIFIERS (hotkeyid);
af0276da2059 (Vw32_pass_optional_keys_to_system): Variable removed.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23637
diff changeset
8486
79563
fb6105cb466b (w32_wnd_proc, Fw32_reconstruct_hot_key): Range check
Jason Rumney <jasonr@gnu.org>
parents: 79393
diff changeset
8487 if (vk_code < 256 && lispy_function_keys[vk_code])
23681
af0276da2059 (Vw32_pass_optional_keys_to_system): Variable removed.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23637
diff changeset
8488 key = intern (lispy_function_keys[vk_code]);
af0276da2059 (Vw32_pass_optional_keys_to_system): Variable removed.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23637
diff changeset
8489 else
af0276da2059 (Vw32_pass_optional_keys_to_system): Variable removed.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23637
diff changeset
8490 key = make_number (vk_code);
af0276da2059 (Vw32_pass_optional_keys_to_system): Variable removed.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23637
diff changeset
8491
af0276da2059 (Vw32_pass_optional_keys_to_system): Variable removed.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23637
diff changeset
8492 key = Fcons (key, Qnil);
af0276da2059 (Vw32_pass_optional_keys_to_system): Variable removed.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23637
diff changeset
8493 if (w32_modifiers & MOD_SHIFT)
23950
d8f8533db4cc (w32_msg_pump): Ignore WM_NULL message posted to thread
Andrew Innes <andrewi@gnu.org>
parents: 23803
diff changeset
8494 key = Fcons (Qshift, key);
23681
af0276da2059 (Vw32_pass_optional_keys_to_system): Variable removed.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23637
diff changeset
8495 if (w32_modifiers & MOD_CONTROL)
23950
d8f8533db4cc (w32_msg_pump): Ignore WM_NULL message posted to thread
Andrew Innes <andrewi@gnu.org>
parents: 23803
diff changeset
8496 key = Fcons (Qctrl, key);
23681
af0276da2059 (Vw32_pass_optional_keys_to_system): Variable removed.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23637
diff changeset
8497 if (w32_modifiers & MOD_ALT)
23950
d8f8533db4cc (w32_msg_pump): Ignore WM_NULL message posted to thread
Andrew Innes <andrewi@gnu.org>
parents: 23803
diff changeset
8498 key = Fcons (NILP (Vw32_alt_is_meta) ? Qalt : Qmeta, key);
23681
af0276da2059 (Vw32_pass_optional_keys_to_system): Variable removed.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23637
diff changeset
8499 if (w32_modifiers & MOD_WIN)
23950
d8f8533db4cc (w32_msg_pump): Ignore WM_NULL message posted to thread
Andrew Innes <andrewi@gnu.org>
parents: 23803
diff changeset
8500 key = Fcons (Qhyper, key);
23681
af0276da2059 (Vw32_pass_optional_keys_to_system): Variable removed.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23637
diff changeset
8501
af0276da2059 (Vw32_pass_optional_keys_to_system): Variable removed.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23637
diff changeset
8502 return key;
af0276da2059 (Vw32_pass_optional_keys_to_system): Variable removed.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23637
diff changeset
8503 }
23803
f112aa8f8f5d (Vw32_phantom_key_code): New variable.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23801
diff changeset
8504
40964
fb970d0c56eb Change doc-string comments to `new style'. [w/`doc:' keyword]. Doc fixes.
Jason Rumney <jasonr@gnu.org>
parents: 40873
diff changeset
8505 DEFUN ("w32-toggle-lock-key", Fw32_toggle_lock_key,
fb970d0c56eb Change doc-string comments to `new style'. [w/`doc:' keyword]. Doc fixes.
Jason Rumney <jasonr@gnu.org>
parents: 40873
diff changeset
8506 Sw32_toggle_lock_key, 1, 2, 0,
fb970d0c56eb Change doc-string comments to `new style'. [w/`doc:' keyword]. Doc fixes.
Jason Rumney <jasonr@gnu.org>
parents: 40873
diff changeset
8507 doc: /* Toggle the state of the lock key KEY.
fb970d0c56eb Change doc-string comments to `new style'. [w/`doc:' keyword]. Doc fixes.
Jason Rumney <jasonr@gnu.org>
parents: 40873
diff changeset
8508 KEY can be `capslock', `kp-numlock', or `scroll'.
fb970d0c56eb Change doc-string comments to `new style'. [w/`doc:' keyword]. Doc fixes.
Jason Rumney <jasonr@gnu.org>
parents: 40873
diff changeset
8509 If the optional parameter NEW-STATE is a number, then the state of KEY
fb970d0c56eb Change doc-string comments to `new style'. [w/`doc:' keyword]. Doc fixes.
Jason Rumney <jasonr@gnu.org>
parents: 40873
diff changeset
8510 is set to off if the low bit of NEW-STATE is zero, otherwise on. */)
23803
f112aa8f8f5d (Vw32_phantom_key_code): New variable.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23801
diff changeset
8511 (key, new_state)
f112aa8f8f5d (Vw32_phantom_key_code): New variable.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23801
diff changeset
8512 Lisp_Object key, new_state;
f112aa8f8f5d (Vw32_phantom_key_code): New variable.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23801
diff changeset
8513 {
f112aa8f8f5d (Vw32_phantom_key_code): New variable.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23801
diff changeset
8514 int vk_code;
f112aa8f8f5d (Vw32_phantom_key_code): New variable.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23801
diff changeset
8515
f112aa8f8f5d (Vw32_phantom_key_code): New variable.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23801
diff changeset
8516 if (EQ (key, intern ("capslock")))
f112aa8f8f5d (Vw32_phantom_key_code): New variable.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23801
diff changeset
8517 vk_code = VK_CAPITAL;
f112aa8f8f5d (Vw32_phantom_key_code): New variable.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23801
diff changeset
8518 else if (EQ (key, intern ("kp-numlock")))
f112aa8f8f5d (Vw32_phantom_key_code): New variable.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23801
diff changeset
8519 vk_code = VK_NUMLOCK;
f112aa8f8f5d (Vw32_phantom_key_code): New variable.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23801
diff changeset
8520 else if (EQ (key, intern ("scroll")))
f112aa8f8f5d (Vw32_phantom_key_code): New variable.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23801
diff changeset
8521 vk_code = VK_SCROLL;
f112aa8f8f5d (Vw32_phantom_key_code): New variable.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23801
diff changeset
8522 else
f112aa8f8f5d (Vw32_phantom_key_code): New variable.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23801
diff changeset
8523 return Qnil;
f112aa8f8f5d (Vw32_phantom_key_code): New variable.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23801
diff changeset
8524
f112aa8f8f5d (Vw32_phantom_key_code): New variable.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23801
diff changeset
8525 if (!dwWindowsThreadId)
f112aa8f8f5d (Vw32_phantom_key_code): New variable.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23801
diff changeset
8526 return make_number (w32_console_toggle_lock_key (vk_code, new_state));
f112aa8f8f5d (Vw32_phantom_key_code): New variable.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23801
diff changeset
8527
55656
29b250a07fe0 (Fw32_register_hot_key, Fw32_unregister_hot_key)
Jason Rumney <jasonr@gnu.org>
parents: 55592
diff changeset
8528 #ifdef USE_LISP_UNION_TYPE
23803
f112aa8f8f5d (Vw32_phantom_key_code): New variable.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23801
diff changeset
8529 if (PostThreadMessage (dwWindowsThreadId, WM_EMACS_TOGGLE_LOCK_KEY,
55656
29b250a07fe0 (Fw32_register_hot_key, Fw32_unregister_hot_key)
Jason Rumney <jasonr@gnu.org>
parents: 55592
diff changeset
8530 (WPARAM) vk_code, (LPARAM) new_state.i))
29b250a07fe0 (Fw32_register_hot_key, Fw32_unregister_hot_key)
Jason Rumney <jasonr@gnu.org>
parents: 55592
diff changeset
8531 #else
29b250a07fe0 (Fw32_register_hot_key, Fw32_unregister_hot_key)
Jason Rumney <jasonr@gnu.org>
parents: 55592
diff changeset
8532 if (PostThreadMessage (dwWindowsThreadId, WM_EMACS_TOGGLE_LOCK_KEY,
55673
4401083a1583 Fix last change for non USE_LISP_UNION_TYPE case.
Jason Rumney <jasonr@gnu.org>
parents: 55656
diff changeset
8533 (WPARAM) vk_code, (LPARAM) new_state))
55656
29b250a07fe0 (Fw32_register_hot_key, Fw32_unregister_hot_key)
Jason Rumney <jasonr@gnu.org>
parents: 55592
diff changeset
8534 #endif
23803
f112aa8f8f5d (Vw32_phantom_key_code): New variable.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23801
diff changeset
8535 {
f112aa8f8f5d (Vw32_phantom_key_code): New variable.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23801
diff changeset
8536 MSG msg;
f112aa8f8f5d (Vw32_phantom_key_code): New variable.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23801
diff changeset
8537 GetMessage (&msg, NULL, WM_EMACS_DONE, WM_EMACS_DONE);
f112aa8f8f5d (Vw32_phantom_key_code): New variable.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23801
diff changeset
8538 return make_number (msg.wParam);
f112aa8f8f5d (Vw32_phantom_key_code): New variable.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23801
diff changeset
8539 }
f112aa8f8f5d (Vw32_phantom_key_code): New variable.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23801
diff changeset
8540 return Qnil;
f112aa8f8f5d (Vw32_phantom_key_code): New variable.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23801
diff changeset
8541 }
74661
0b62ec4c4929 (w32-window-exists-p): New function.
Eli Zaretskii <eliz@gnu.org>
parents: 74618
diff changeset
8542
0b62ec4c4929 (w32-window-exists-p): New function.
Eli Zaretskii <eliz@gnu.org>
parents: 74618
diff changeset
8543 DEFUN ("w32-window-exists-p", Fw32_window_exists_p, Sw32_window_exists_p,
0b62ec4c4929 (w32-window-exists-p): New function.
Eli Zaretskii <eliz@gnu.org>
parents: 74618
diff changeset
8544 2, 2, 0,
0b62ec4c4929 (w32-window-exists-p): New function.
Eli Zaretskii <eliz@gnu.org>
parents: 74618
diff changeset
8545 doc: /* Return non-nil if a window exists with the specified CLASS and NAME.
0b62ec4c4929 (w32-window-exists-p): New function.
Eli Zaretskii <eliz@gnu.org>
parents: 74618
diff changeset
8546
0b62ec4c4929 (w32-window-exists-p): New function.
Eli Zaretskii <eliz@gnu.org>
parents: 74618
diff changeset
8547 This is a direct interface to the Windows API FindWindow function. */)
0b62ec4c4929 (w32-window-exists-p): New function.
Eli Zaretskii <eliz@gnu.org>
parents: 74618
diff changeset
8548 (class, name)
0b62ec4c4929 (w32-window-exists-p): New function.
Eli Zaretskii <eliz@gnu.org>
parents: 74618
diff changeset
8549 Lisp_Object class, name;
0b62ec4c4929 (w32-window-exists-p): New function.
Eli Zaretskii <eliz@gnu.org>
parents: 74618
diff changeset
8550 {
0b62ec4c4929 (w32-window-exists-p): New function.
Eli Zaretskii <eliz@gnu.org>
parents: 74618
diff changeset
8551 HWND hnd;
0b62ec4c4929 (w32-window-exists-p): New function.
Eli Zaretskii <eliz@gnu.org>
parents: 74618
diff changeset
8552
0b62ec4c4929 (w32-window-exists-p): New function.
Eli Zaretskii <eliz@gnu.org>
parents: 74618
diff changeset
8553 if (!NILP (class))
0b62ec4c4929 (w32-window-exists-p): New function.
Eli Zaretskii <eliz@gnu.org>
parents: 74618
diff changeset
8554 CHECK_STRING (class);
0b62ec4c4929 (w32-window-exists-p): New function.
Eli Zaretskii <eliz@gnu.org>
parents: 74618
diff changeset
8555 if (!NILP (name))
0b62ec4c4929 (w32-window-exists-p): New function.
Eli Zaretskii <eliz@gnu.org>
parents: 74618
diff changeset
8556 CHECK_STRING (name);
0b62ec4c4929 (w32-window-exists-p): New function.
Eli Zaretskii <eliz@gnu.org>
parents: 74618
diff changeset
8557
0b62ec4c4929 (w32-window-exists-p): New function.
Eli Zaretskii <eliz@gnu.org>
parents: 74618
diff changeset
8558 hnd = FindWindow (STRINGP (class) ? ((LPCTSTR) SDATA (class)) : NULL,
0b62ec4c4929 (w32-window-exists-p): New function.
Eli Zaretskii <eliz@gnu.org>
parents: 74618
diff changeset
8559 STRINGP (name) ? ((LPCTSTR) SDATA (name)) : NULL);
0b62ec4c4929 (w32-window-exists-p): New function.
Eli Zaretskii <eliz@gnu.org>
parents: 74618
diff changeset
8560 if (!hnd)
0b62ec4c4929 (w32-window-exists-p): New function.
Eli Zaretskii <eliz@gnu.org>
parents: 74618
diff changeset
8561 return Qnil;
0b62ec4c4929 (w32-window-exists-p): New function.
Eli Zaretskii <eliz@gnu.org>
parents: 74618
diff changeset
8562 return Qt;
0b62ec4c4929 (w32-window-exists-p): New function.
Eli Zaretskii <eliz@gnu.org>
parents: 74618
diff changeset
8563 }
0b62ec4c4929 (w32-window-exists-p): New function.
Eli Zaretskii <eliz@gnu.org>
parents: 74618
diff changeset
8564
94447
45acd5e62f88 (Fw32_battery_status): New defun.
Jason Rumney <jasonr@gnu.org>
parents: 94432
diff changeset
8565 DEFUN ("w32-battery-status", Fw32_battery_status, Sw32_battery_status, 0, 0, 0,
45acd5e62f88 (Fw32_battery_status): New defun.
Jason Rumney <jasonr@gnu.org>
parents: 94432
diff changeset
8566 doc: /* Get power status information from Windows system.
45acd5e62f88 (Fw32_battery_status): New defun.
Jason Rumney <jasonr@gnu.org>
parents: 94432
diff changeset
8567
45acd5e62f88 (Fw32_battery_status): New defun.
Jason Rumney <jasonr@gnu.org>
parents: 94432
diff changeset
8568 The following %-sequences are provided:
45acd5e62f88 (Fw32_battery_status): New defun.
Jason Rumney <jasonr@gnu.org>
parents: 94432
diff changeset
8569 %L AC line status (verbose)
45acd5e62f88 (Fw32_battery_status): New defun.
Jason Rumney <jasonr@gnu.org>
parents: 94432
diff changeset
8570 %B Battery status (verbose)
45acd5e62f88 (Fw32_battery_status): New defun.
Jason Rumney <jasonr@gnu.org>
parents: 94432
diff changeset
8571 %b Battery status, empty means high, `-' means low,
45acd5e62f88 (Fw32_battery_status): New defun.
Jason Rumney <jasonr@gnu.org>
parents: 94432
diff changeset
8572 `!' means critical, and `+' means charging
45acd5e62f88 (Fw32_battery_status): New defun.
Jason Rumney <jasonr@gnu.org>
parents: 94432
diff changeset
8573 %p Battery load percentage
45acd5e62f88 (Fw32_battery_status): New defun.
Jason Rumney <jasonr@gnu.org>
parents: 94432
diff changeset
8574 %s Remaining time (to charge or discharge) in seconds
45acd5e62f88 (Fw32_battery_status): New defun.
Jason Rumney <jasonr@gnu.org>
parents: 94432
diff changeset
8575 %m Remaining time (to charge or discharge) in minutes
45acd5e62f88 (Fw32_battery_status): New defun.
Jason Rumney <jasonr@gnu.org>
parents: 94432
diff changeset
8576 %h Remaining time (to charge or discharge) in hours
45acd5e62f88 (Fw32_battery_status): New defun.
Jason Rumney <jasonr@gnu.org>
parents: 94432
diff changeset
8577 %t Remaining time (to charge or discharge) in the form `h:min' */)
45acd5e62f88 (Fw32_battery_status): New defun.
Jason Rumney <jasonr@gnu.org>
parents: 94432
diff changeset
8578 ()
45acd5e62f88 (Fw32_battery_status): New defun.
Jason Rumney <jasonr@gnu.org>
parents: 94432
diff changeset
8579 {
45acd5e62f88 (Fw32_battery_status): New defun.
Jason Rumney <jasonr@gnu.org>
parents: 94432
diff changeset
8580 Lisp_Object status = Qnil;
45acd5e62f88 (Fw32_battery_status): New defun.
Jason Rumney <jasonr@gnu.org>
parents: 94432
diff changeset
8581
45acd5e62f88 (Fw32_battery_status): New defun.
Jason Rumney <jasonr@gnu.org>
parents: 94432
diff changeset
8582 SYSTEM_POWER_STATUS system_status;
45acd5e62f88 (Fw32_battery_status): New defun.
Jason Rumney <jasonr@gnu.org>
parents: 94432
diff changeset
8583 if (GetSystemPowerStatus (&system_status))
45acd5e62f88 (Fw32_battery_status): New defun.
Jason Rumney <jasonr@gnu.org>
parents: 94432
diff changeset
8584 {
45acd5e62f88 (Fw32_battery_status): New defun.
Jason Rumney <jasonr@gnu.org>
parents: 94432
diff changeset
8585 Lisp_Object line_status, battery_status, battery_status_symbol;
45acd5e62f88 (Fw32_battery_status): New defun.
Jason Rumney <jasonr@gnu.org>
parents: 94432
diff changeset
8586 Lisp_Object load_percentage, seconds, minutes, hours, remain;
45acd5e62f88 (Fw32_battery_status): New defun.
Jason Rumney <jasonr@gnu.org>
parents: 94432
diff changeset
8587 Lisp_Object sequences[8];
45acd5e62f88 (Fw32_battery_status): New defun.
Jason Rumney <jasonr@gnu.org>
parents: 94432
diff changeset
8588
45acd5e62f88 (Fw32_battery_status): New defun.
Jason Rumney <jasonr@gnu.org>
parents: 94432
diff changeset
8589 long seconds_left = (long) system_status.BatteryLifeTime;
45acd5e62f88 (Fw32_battery_status): New defun.
Jason Rumney <jasonr@gnu.org>
parents: 94432
diff changeset
8590
45acd5e62f88 (Fw32_battery_status): New defun.
Jason Rumney <jasonr@gnu.org>
parents: 94432
diff changeset
8591 if (system_status.ACLineStatus == 0)
45acd5e62f88 (Fw32_battery_status): New defun.
Jason Rumney <jasonr@gnu.org>
parents: 94432
diff changeset
8592 line_status = build_string ("off-line");
45acd5e62f88 (Fw32_battery_status): New defun.
Jason Rumney <jasonr@gnu.org>
parents: 94432
diff changeset
8593 else if (system_status.ACLineStatus == 1)
45acd5e62f88 (Fw32_battery_status): New defun.
Jason Rumney <jasonr@gnu.org>
parents: 94432
diff changeset
8594 line_status = build_string ("on-line");
45acd5e62f88 (Fw32_battery_status): New defun.
Jason Rumney <jasonr@gnu.org>
parents: 94432
diff changeset
8595 else
45acd5e62f88 (Fw32_battery_status): New defun.
Jason Rumney <jasonr@gnu.org>
parents: 94432
diff changeset
8596 line_status = build_string ("N/A");
45acd5e62f88 (Fw32_battery_status): New defun.
Jason Rumney <jasonr@gnu.org>
parents: 94432
diff changeset
8597
45acd5e62f88 (Fw32_battery_status): New defun.
Jason Rumney <jasonr@gnu.org>
parents: 94432
diff changeset
8598 if (system_status.BatteryFlag & 128)
45acd5e62f88 (Fw32_battery_status): New defun.
Jason Rumney <jasonr@gnu.org>
parents: 94432
diff changeset
8599 {
45acd5e62f88 (Fw32_battery_status): New defun.
Jason Rumney <jasonr@gnu.org>
parents: 94432
diff changeset
8600 battery_status = build_string ("N/A");
45acd5e62f88 (Fw32_battery_status): New defun.
Jason Rumney <jasonr@gnu.org>
parents: 94432
diff changeset
8601 battery_status_symbol = build_string ("");
45acd5e62f88 (Fw32_battery_status): New defun.
Jason Rumney <jasonr@gnu.org>
parents: 94432
diff changeset
8602 }
45acd5e62f88 (Fw32_battery_status): New defun.
Jason Rumney <jasonr@gnu.org>
parents: 94432
diff changeset
8603 else if (system_status.BatteryFlag & 8)
45acd5e62f88 (Fw32_battery_status): New defun.
Jason Rumney <jasonr@gnu.org>
parents: 94432
diff changeset
8604 {
45acd5e62f88 (Fw32_battery_status): New defun.
Jason Rumney <jasonr@gnu.org>
parents: 94432
diff changeset
8605 battery_status = build_string ("charging");
45acd5e62f88 (Fw32_battery_status): New defun.
Jason Rumney <jasonr@gnu.org>
parents: 94432
diff changeset
8606 battery_status_symbol = build_string ("+");
45acd5e62f88 (Fw32_battery_status): New defun.
Jason Rumney <jasonr@gnu.org>
parents: 94432
diff changeset
8607 if (system_status.BatteryFullLifeTime != -1L)
45acd5e62f88 (Fw32_battery_status): New defun.
Jason Rumney <jasonr@gnu.org>
parents: 94432
diff changeset
8608 seconds_left = system_status.BatteryFullLifeTime - seconds_left;
45acd5e62f88 (Fw32_battery_status): New defun.
Jason Rumney <jasonr@gnu.org>
parents: 94432
diff changeset
8609 }
45acd5e62f88 (Fw32_battery_status): New defun.
Jason Rumney <jasonr@gnu.org>
parents: 94432
diff changeset
8610 else if (system_status.BatteryFlag & 4)
45acd5e62f88 (Fw32_battery_status): New defun.
Jason Rumney <jasonr@gnu.org>
parents: 94432
diff changeset
8611 {
45acd5e62f88 (Fw32_battery_status): New defun.
Jason Rumney <jasonr@gnu.org>
parents: 94432
diff changeset
8612 battery_status = build_string ("critical");
45acd5e62f88 (Fw32_battery_status): New defun.
Jason Rumney <jasonr@gnu.org>
parents: 94432
diff changeset
8613 battery_status_symbol = build_string ("!");
45acd5e62f88 (Fw32_battery_status): New defun.
Jason Rumney <jasonr@gnu.org>
parents: 94432
diff changeset
8614 }
45acd5e62f88 (Fw32_battery_status): New defun.
Jason Rumney <jasonr@gnu.org>
parents: 94432
diff changeset
8615 else if (system_status.BatteryFlag & 2)
45acd5e62f88 (Fw32_battery_status): New defun.
Jason Rumney <jasonr@gnu.org>
parents: 94432
diff changeset
8616 {
45acd5e62f88 (Fw32_battery_status): New defun.
Jason Rumney <jasonr@gnu.org>
parents: 94432
diff changeset
8617 battery_status = build_string ("low");
45acd5e62f88 (Fw32_battery_status): New defun.
Jason Rumney <jasonr@gnu.org>
parents: 94432
diff changeset
8618 battery_status_symbol = build_string ("-");
45acd5e62f88 (Fw32_battery_status): New defun.
Jason Rumney <jasonr@gnu.org>
parents: 94432
diff changeset
8619 }
45acd5e62f88 (Fw32_battery_status): New defun.
Jason Rumney <jasonr@gnu.org>
parents: 94432
diff changeset
8620 else if (system_status.BatteryFlag & 1)
45acd5e62f88 (Fw32_battery_status): New defun.
Jason Rumney <jasonr@gnu.org>
parents: 94432
diff changeset
8621 {
45acd5e62f88 (Fw32_battery_status): New defun.
Jason Rumney <jasonr@gnu.org>
parents: 94432
diff changeset
8622 battery_status = build_string ("high");
45acd5e62f88 (Fw32_battery_status): New defun.
Jason Rumney <jasonr@gnu.org>
parents: 94432
diff changeset
8623 battery_status_symbol = build_string ("");
45acd5e62f88 (Fw32_battery_status): New defun.
Jason Rumney <jasonr@gnu.org>
parents: 94432
diff changeset
8624 }
45acd5e62f88 (Fw32_battery_status): New defun.
Jason Rumney <jasonr@gnu.org>
parents: 94432
diff changeset
8625 else
45acd5e62f88 (Fw32_battery_status): New defun.
Jason Rumney <jasonr@gnu.org>
parents: 94432
diff changeset
8626 {
45acd5e62f88 (Fw32_battery_status): New defun.
Jason Rumney <jasonr@gnu.org>
parents: 94432
diff changeset
8627 battery_status = build_string ("medium");
45acd5e62f88 (Fw32_battery_status): New defun.
Jason Rumney <jasonr@gnu.org>
parents: 94432
diff changeset
8628 battery_status_symbol = build_string ("");
45acd5e62f88 (Fw32_battery_status): New defun.
Jason Rumney <jasonr@gnu.org>
parents: 94432
diff changeset
8629 }
45acd5e62f88 (Fw32_battery_status): New defun.
Jason Rumney <jasonr@gnu.org>
parents: 94432
diff changeset
8630
45acd5e62f88 (Fw32_battery_status): New defun.
Jason Rumney <jasonr@gnu.org>
parents: 94432
diff changeset
8631 if (system_status.BatteryLifePercent > 100)
45acd5e62f88 (Fw32_battery_status): New defun.
Jason Rumney <jasonr@gnu.org>
parents: 94432
diff changeset
8632 load_percentage = build_string ("N/A");
45acd5e62f88 (Fw32_battery_status): New defun.
Jason Rumney <jasonr@gnu.org>
parents: 94432
diff changeset
8633 else
45acd5e62f88 (Fw32_battery_status): New defun.
Jason Rumney <jasonr@gnu.org>
parents: 94432
diff changeset
8634 {
45acd5e62f88 (Fw32_battery_status): New defun.
Jason Rumney <jasonr@gnu.org>
parents: 94432
diff changeset
8635 char buffer[16];
45acd5e62f88 (Fw32_battery_status): New defun.
Jason Rumney <jasonr@gnu.org>
parents: 94432
diff changeset
8636 _snprintf (buffer, 16, "%d", system_status.BatteryLifePercent);
45acd5e62f88 (Fw32_battery_status): New defun.
Jason Rumney <jasonr@gnu.org>
parents: 94432
diff changeset
8637 load_percentage = build_string (buffer);
45acd5e62f88 (Fw32_battery_status): New defun.
Jason Rumney <jasonr@gnu.org>
parents: 94432
diff changeset
8638 }
45acd5e62f88 (Fw32_battery_status): New defun.
Jason Rumney <jasonr@gnu.org>
parents: 94432
diff changeset
8639
45acd5e62f88 (Fw32_battery_status): New defun.
Jason Rumney <jasonr@gnu.org>
parents: 94432
diff changeset
8640 if (seconds_left < 0)
45acd5e62f88 (Fw32_battery_status): New defun.
Jason Rumney <jasonr@gnu.org>
parents: 94432
diff changeset
8641 seconds = minutes = hours = remain = build_string ("N/A");
45acd5e62f88 (Fw32_battery_status): New defun.
Jason Rumney <jasonr@gnu.org>
parents: 94432
diff changeset
8642 else
45acd5e62f88 (Fw32_battery_status): New defun.
Jason Rumney <jasonr@gnu.org>
parents: 94432
diff changeset
8643 {
45acd5e62f88 (Fw32_battery_status): New defun.
Jason Rumney <jasonr@gnu.org>
parents: 94432
diff changeset
8644 long m;
45acd5e62f88 (Fw32_battery_status): New defun.
Jason Rumney <jasonr@gnu.org>
parents: 94432
diff changeset
8645 float h;
45acd5e62f88 (Fw32_battery_status): New defun.
Jason Rumney <jasonr@gnu.org>
parents: 94432
diff changeset
8646 char buffer[16];
45acd5e62f88 (Fw32_battery_status): New defun.
Jason Rumney <jasonr@gnu.org>
parents: 94432
diff changeset
8647 _snprintf (buffer, 16, "%ld", seconds_left);
45acd5e62f88 (Fw32_battery_status): New defun.
Jason Rumney <jasonr@gnu.org>
parents: 94432
diff changeset
8648 seconds = build_string (buffer);
45acd5e62f88 (Fw32_battery_status): New defun.
Jason Rumney <jasonr@gnu.org>
parents: 94432
diff changeset
8649
45acd5e62f88 (Fw32_battery_status): New defun.
Jason Rumney <jasonr@gnu.org>
parents: 94432
diff changeset
8650 m = seconds_left / 60;
94618
033cc6f89687 (Fw32_battery_status): Fix computation of %t (h:min) format.
Juanma Barranquero <lekktu@gmail.com>
parents: 94447
diff changeset
8651 _snprintf (buffer, 16, "%ld", m);
94447
45acd5e62f88 (Fw32_battery_status): New defun.
Jason Rumney <jasonr@gnu.org>
parents: 94432
diff changeset
8652 minutes = build_string (buffer);
45acd5e62f88 (Fw32_battery_status): New defun.
Jason Rumney <jasonr@gnu.org>
parents: 94432
diff changeset
8653
45acd5e62f88 (Fw32_battery_status): New defun.
Jason Rumney <jasonr@gnu.org>
parents: 94432
diff changeset
8654 h = seconds_left / 3600.0;
45acd5e62f88 (Fw32_battery_status): New defun.
Jason Rumney <jasonr@gnu.org>
parents: 94432
diff changeset
8655 _snprintf (buffer, 16, "%3.1f", h);
45acd5e62f88 (Fw32_battery_status): New defun.
Jason Rumney <jasonr@gnu.org>
parents: 94432
diff changeset
8656 hours = build_string (buffer);
45acd5e62f88 (Fw32_battery_status): New defun.
Jason Rumney <jasonr@gnu.org>
parents: 94432
diff changeset
8657
94618
033cc6f89687 (Fw32_battery_status): Fix computation of %t (h:min) format.
Juanma Barranquero <lekktu@gmail.com>
parents: 94447
diff changeset
8658 _snprintf (buffer, 16, "%ld:%02ld", m / 60, m % 60);
94447
45acd5e62f88 (Fw32_battery_status): New defun.
Jason Rumney <jasonr@gnu.org>
parents: 94432
diff changeset
8659 remain = build_string (buffer);
45acd5e62f88 (Fw32_battery_status): New defun.
Jason Rumney <jasonr@gnu.org>
parents: 94432
diff changeset
8660 }
45acd5e62f88 (Fw32_battery_status): New defun.
Jason Rumney <jasonr@gnu.org>
parents: 94432
diff changeset
8661 sequences[0] = Fcons (make_number ('L'), line_status);
45acd5e62f88 (Fw32_battery_status): New defun.
Jason Rumney <jasonr@gnu.org>
parents: 94432
diff changeset
8662 sequences[1] = Fcons (make_number ('B'), battery_status);
45acd5e62f88 (Fw32_battery_status): New defun.
Jason Rumney <jasonr@gnu.org>
parents: 94432
diff changeset
8663 sequences[2] = Fcons (make_number ('b'), battery_status_symbol);
45acd5e62f88 (Fw32_battery_status): New defun.
Jason Rumney <jasonr@gnu.org>
parents: 94432
diff changeset
8664 sequences[3] = Fcons (make_number ('p'), load_percentage);
45acd5e62f88 (Fw32_battery_status): New defun.
Jason Rumney <jasonr@gnu.org>
parents: 94432
diff changeset
8665 sequences[4] = Fcons (make_number ('s'), seconds);
45acd5e62f88 (Fw32_battery_status): New defun.
Jason Rumney <jasonr@gnu.org>
parents: 94432
diff changeset
8666 sequences[5] = Fcons (make_number ('m'), minutes);
45acd5e62f88 (Fw32_battery_status): New defun.
Jason Rumney <jasonr@gnu.org>
parents: 94432
diff changeset
8667 sequences[6] = Fcons (make_number ('h'), hours);
45acd5e62f88 (Fw32_battery_status): New defun.
Jason Rumney <jasonr@gnu.org>
parents: 94432
diff changeset
8668 sequences[7] = Fcons (make_number ('t'), remain);
45acd5e62f88 (Fw32_battery_status): New defun.
Jason Rumney <jasonr@gnu.org>
parents: 94432
diff changeset
8669
45acd5e62f88 (Fw32_battery_status): New defun.
Jason Rumney <jasonr@gnu.org>
parents: 94432
diff changeset
8670 status = Flist (8, sequences);
45acd5e62f88 (Fw32_battery_status): New defun.
Jason Rumney <jasonr@gnu.org>
parents: 94432
diff changeset
8671 }
45acd5e62f88 (Fw32_battery_status): New defun.
Jason Rumney <jasonr@gnu.org>
parents: 94432
diff changeset
8672 return status;
45acd5e62f88 (Fw32_battery_status): New defun.
Jason Rumney <jasonr@gnu.org>
parents: 94432
diff changeset
8673 }
74661
0b62ec4c4929 (w32-window-exists-p): New function.
Eli Zaretskii <eliz@gnu.org>
parents: 74618
diff changeset
8674
13434
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
8675
34643
7108531c744b (Ffile_system_info): New function.
Andrew Innes <andrewi@gnu.org>
parents: 34638
diff changeset
8676 DEFUN ("file-system-info", Ffile_system_info, Sfile_system_info, 1, 1, 0,
40964
fb970d0c56eb Change doc-string comments to `new style'. [w/`doc:' keyword]. Doc fixes.
Jason Rumney <jasonr@gnu.org>
parents: 40873
diff changeset
8677 doc: /* Return storage information about the file system FILENAME is on.
fb970d0c56eb Change doc-string comments to `new style'. [w/`doc:' keyword]. Doc fixes.
Jason Rumney <jasonr@gnu.org>
parents: 40873
diff changeset
8678 Value is a list of floats (TOTAL FREE AVAIL), where TOTAL is the total
fb970d0c56eb Change doc-string comments to `new style'. [w/`doc:' keyword]. Doc fixes.
Jason Rumney <jasonr@gnu.org>
parents: 40873
diff changeset
8679 storage of the file system, FREE is the free storage, and AVAIL is the
fb970d0c56eb Change doc-string comments to `new style'. [w/`doc:' keyword]. Doc fixes.
Jason Rumney <jasonr@gnu.org>
parents: 40873
diff changeset
8680 storage available to a non-superuser. All 3 numbers are in bytes.
fb970d0c56eb Change doc-string comments to `new style'. [w/`doc:' keyword]. Doc fixes.
Jason Rumney <jasonr@gnu.org>
parents: 40873
diff changeset
8681 If the underlying system call fails, value is nil. */)
34643
7108531c744b (Ffile_system_info): New function.
Andrew Innes <andrewi@gnu.org>
parents: 34638
diff changeset
8682 (filename)
7108531c744b (Ffile_system_info): New function.
Andrew Innes <andrewi@gnu.org>
parents: 34638
diff changeset
8683 Lisp_Object filename;
7108531c744b (Ffile_system_info): New function.
Andrew Innes <andrewi@gnu.org>
parents: 34638
diff changeset
8684 {
7108531c744b (Ffile_system_info): New function.
Andrew Innes <andrewi@gnu.org>
parents: 34638
diff changeset
8685 Lisp_Object encoded, value;
7108531c744b (Ffile_system_info): New function.
Andrew Innes <andrewi@gnu.org>
parents: 34638
diff changeset
8686
40656
cdfd4d09b79a Update usage of CHECK_ macros (remove unused second argument).
Pavel Janík <Pavel@Janik.cz>
parents: 40528
diff changeset
8687 CHECK_STRING (filename);
34643
7108531c744b (Ffile_system_info): New function.
Andrew Innes <andrewi@gnu.org>
parents: 34638
diff changeset
8688 filename = Fexpand_file_name (filename, Qnil);
7108531c744b (Ffile_system_info): New function.
Andrew Innes <andrewi@gnu.org>
parents: 34638
diff changeset
8689 encoded = ENCODE_FILE (filename);
7108531c744b (Ffile_system_info): New function.
Andrew Innes <andrewi@gnu.org>
parents: 34638
diff changeset
8690
7108531c744b (Ffile_system_info): New function.
Andrew Innes <andrewi@gnu.org>
parents: 34638
diff changeset
8691 value = Qnil;
7108531c744b (Ffile_system_info): New function.
Andrew Innes <andrewi@gnu.org>
parents: 34638
diff changeset
8692
7108531c744b (Ffile_system_info): New function.
Andrew Innes <andrewi@gnu.org>
parents: 34638
diff changeset
8693 /* Determining the required information on Windows turns out, sadly,
7108531c744b (Ffile_system_info): New function.
Andrew Innes <andrewi@gnu.org>
parents: 34638
diff changeset
8694 to be more involved than one would hope. The original Win32 api
7108531c744b (Ffile_system_info): New function.
Andrew Innes <andrewi@gnu.org>
parents: 34638
diff changeset
8695 call for this will return bogus information on some systems, but we
7108531c744b (Ffile_system_info): New function.
Andrew Innes <andrewi@gnu.org>
parents: 34638
diff changeset
8696 must dynamically probe for the replacement api, since that was
7108531c744b (Ffile_system_info): New function.
Andrew Innes <andrewi@gnu.org>
parents: 34638
diff changeset
8697 added rather late on. */
7108531c744b (Ffile_system_info): New function.
Andrew Innes <andrewi@gnu.org>
parents: 34638
diff changeset
8698 {
7108531c744b (Ffile_system_info): New function.
Andrew Innes <andrewi@gnu.org>
parents: 34638
diff changeset
8699 HMODULE hKernel = GetModuleHandle ("kernel32");
7108531c744b (Ffile_system_info): New function.
Andrew Innes <andrewi@gnu.org>
parents: 34638
diff changeset
8700 BOOL (*pfn_GetDiskFreeSpaceEx)
7108531c744b (Ffile_system_info): New function.
Andrew Innes <andrewi@gnu.org>
parents: 34638
diff changeset
8701 (char *, PULARGE_INTEGER, PULARGE_INTEGER, PULARGE_INTEGER)
7108531c744b (Ffile_system_info): New function.
Andrew Innes <andrewi@gnu.org>
parents: 34638
diff changeset
8702 = (void *) GetProcAddress (hKernel, "GetDiskFreeSpaceEx");
7108531c744b (Ffile_system_info): New function.
Andrew Innes <andrewi@gnu.org>
parents: 34638
diff changeset
8703
7108531c744b (Ffile_system_info): New function.
Andrew Innes <andrewi@gnu.org>
parents: 34638
diff changeset
8704 /* On Windows, we may need to specify the root directory of the
7108531c744b (Ffile_system_info): New function.
Andrew Innes <andrewi@gnu.org>
parents: 34638
diff changeset
8705 volume holding FILENAME. */
7108531c744b (Ffile_system_info): New function.
Andrew Innes <andrewi@gnu.org>
parents: 34638
diff changeset
8706 char rootname[MAX_PATH];
46370
40db0673e6f0 Most uses of XSTRING combined with STRING_BYTES or indirection changed to
Ken Raeburn <raeburn@raeburn.org>
parents: 46293
diff changeset
8707 char *name = SDATA (encoded);
34643
7108531c744b (Ffile_system_info): New function.
Andrew Innes <andrewi@gnu.org>
parents: 34638
diff changeset
8708
7108531c744b (Ffile_system_info): New function.
Andrew Innes <andrewi@gnu.org>
parents: 34638
diff changeset
8709 /* find the root name of the volume if given */
7108531c744b (Ffile_system_info): New function.
Andrew Innes <andrewi@gnu.org>
parents: 34638
diff changeset
8710 if (isalpha (name[0]) && name[1] == ':')
7108531c744b (Ffile_system_info): New function.
Andrew Innes <andrewi@gnu.org>
parents: 34638
diff changeset
8711 {
7108531c744b (Ffile_system_info): New function.
Andrew Innes <andrewi@gnu.org>
parents: 34638
diff changeset
8712 rootname[0] = name[0];
7108531c744b (Ffile_system_info): New function.
Andrew Innes <andrewi@gnu.org>
parents: 34638
diff changeset
8713 rootname[1] = name[1];
7108531c744b (Ffile_system_info): New function.
Andrew Innes <andrewi@gnu.org>
parents: 34638
diff changeset
8714 rootname[2] = '\\';
7108531c744b (Ffile_system_info): New function.
Andrew Innes <andrewi@gnu.org>
parents: 34638
diff changeset
8715 rootname[3] = 0;
7108531c744b (Ffile_system_info): New function.
Andrew Innes <andrewi@gnu.org>
parents: 34638
diff changeset
8716 }
7108531c744b (Ffile_system_info): New function.
Andrew Innes <andrewi@gnu.org>
parents: 34638
diff changeset
8717 else if (IS_DIRECTORY_SEP (name[0]) && IS_DIRECTORY_SEP (name[1]))
7108531c744b (Ffile_system_info): New function.
Andrew Innes <andrewi@gnu.org>
parents: 34638
diff changeset
8718 {
7108531c744b (Ffile_system_info): New function.
Andrew Innes <andrewi@gnu.org>
parents: 34638
diff changeset
8719 char *str = rootname;
7108531c744b (Ffile_system_info): New function.
Andrew Innes <andrewi@gnu.org>
parents: 34638
diff changeset
8720 int slashes = 4;
7108531c744b (Ffile_system_info): New function.
Andrew Innes <andrewi@gnu.org>
parents: 34638
diff changeset
8721 do
7108531c744b (Ffile_system_info): New function.
Andrew Innes <andrewi@gnu.org>
parents: 34638
diff changeset
8722 {
7108531c744b (Ffile_system_info): New function.
Andrew Innes <andrewi@gnu.org>
parents: 34638
diff changeset
8723 if (IS_DIRECTORY_SEP (*name) && --slashes == 0)
7108531c744b (Ffile_system_info): New function.
Andrew Innes <andrewi@gnu.org>
parents: 34638
diff changeset
8724 break;
7108531c744b (Ffile_system_info): New function.
Andrew Innes <andrewi@gnu.org>
parents: 34638
diff changeset
8725 *str++ = *name++;
7108531c744b (Ffile_system_info): New function.
Andrew Innes <andrewi@gnu.org>
parents: 34638
diff changeset
8726 }
7108531c744b (Ffile_system_info): New function.
Andrew Innes <andrewi@gnu.org>
parents: 34638
diff changeset
8727 while ( *name );
7108531c744b (Ffile_system_info): New function.
Andrew Innes <andrewi@gnu.org>
parents: 34638
diff changeset
8728
7108531c744b (Ffile_system_info): New function.
Andrew Innes <andrewi@gnu.org>
parents: 34638
diff changeset
8729 *str++ = '\\';
7108531c744b (Ffile_system_info): New function.
Andrew Innes <andrewi@gnu.org>
parents: 34638
diff changeset
8730 *str = 0;
7108531c744b (Ffile_system_info): New function.
Andrew Innes <andrewi@gnu.org>
parents: 34638
diff changeset
8731 }
7108531c744b (Ffile_system_info): New function.
Andrew Innes <andrewi@gnu.org>
parents: 34638
diff changeset
8732
7108531c744b (Ffile_system_info): New function.
Andrew Innes <andrewi@gnu.org>
parents: 34638
diff changeset
8733 if (pfn_GetDiskFreeSpaceEx)
7108531c744b (Ffile_system_info): New function.
Andrew Innes <andrewi@gnu.org>
parents: 34638
diff changeset
8734 {
44047
73645cbc79a7 (x_set_cursor_color): Set foreground of cursor, not frame.
Jason Rumney <jasonr@gnu.org>
parents: 43963
diff changeset
8735 /* Unsigned large integers cannot be cast to double, so
73645cbc79a7 (x_set_cursor_color): Set foreground of cursor, not frame.
Jason Rumney <jasonr@gnu.org>
parents: 43963
diff changeset
8736 use signed ones instead. */
34643
7108531c744b (Ffile_system_info): New function.
Andrew Innes <andrewi@gnu.org>
parents: 34638
diff changeset
8737 LARGE_INTEGER availbytes;
7108531c744b (Ffile_system_info): New function.
Andrew Innes <andrewi@gnu.org>
parents: 34638
diff changeset
8738 LARGE_INTEGER freebytes;
7108531c744b (Ffile_system_info): New function.
Andrew Innes <andrewi@gnu.org>
parents: 34638
diff changeset
8739 LARGE_INTEGER totalbytes;
7108531c744b (Ffile_system_info): New function.
Andrew Innes <andrewi@gnu.org>
parents: 34638
diff changeset
8740
79387
0ca197abc593 (Fw32_registered_hot_keys): Don't return the nil values corresponding
Juanma Barranquero <lekktu@gmail.com>
parents: 79381
diff changeset
8741 if (pfn_GetDiskFreeSpaceEx (rootname,
0ca197abc593 (Fw32_registered_hot_keys): Don't return the nil values corresponding
Juanma Barranquero <lekktu@gmail.com>
parents: 79381
diff changeset
8742 (ULARGE_INTEGER *)&availbytes,
0ca197abc593 (Fw32_registered_hot_keys): Don't return the nil values corresponding
Juanma Barranquero <lekktu@gmail.com>
parents: 79381
diff changeset
8743 (ULARGE_INTEGER *)&totalbytes,
0ca197abc593 (Fw32_registered_hot_keys): Don't return the nil values corresponding
Juanma Barranquero <lekktu@gmail.com>
parents: 79381
diff changeset
8744 (ULARGE_INTEGER *)&freebytes))
34643
7108531c744b (Ffile_system_info): New function.
Andrew Innes <andrewi@gnu.org>
parents: 34638
diff changeset
8745 value = list3 (make_float ((double) totalbytes.QuadPart),
7108531c744b (Ffile_system_info): New function.
Andrew Innes <andrewi@gnu.org>
parents: 34638
diff changeset
8746 make_float ((double) freebytes.QuadPart),
7108531c744b (Ffile_system_info): New function.
Andrew Innes <andrewi@gnu.org>
parents: 34638
diff changeset
8747 make_float ((double) availbytes.QuadPart));
7108531c744b (Ffile_system_info): New function.
Andrew Innes <andrewi@gnu.org>
parents: 34638
diff changeset
8748 }
7108531c744b (Ffile_system_info): New function.
Andrew Innes <andrewi@gnu.org>
parents: 34638
diff changeset
8749 else
7108531c744b (Ffile_system_info): New function.
Andrew Innes <andrewi@gnu.org>
parents: 34638
diff changeset
8750 {
7108531c744b (Ffile_system_info): New function.
Andrew Innes <andrewi@gnu.org>
parents: 34638
diff changeset
8751 DWORD sectors_per_cluster;
7108531c744b (Ffile_system_info): New function.
Andrew Innes <andrewi@gnu.org>
parents: 34638
diff changeset
8752 DWORD bytes_per_sector;
7108531c744b (Ffile_system_info): New function.
Andrew Innes <andrewi@gnu.org>
parents: 34638
diff changeset
8753 DWORD free_clusters;
7108531c744b (Ffile_system_info): New function.
Andrew Innes <andrewi@gnu.org>
parents: 34638
diff changeset
8754 DWORD total_clusters;
7108531c744b (Ffile_system_info): New function.
Andrew Innes <andrewi@gnu.org>
parents: 34638
diff changeset
8755
79387
0ca197abc593 (Fw32_registered_hot_keys): Don't return the nil values corresponding
Juanma Barranquero <lekktu@gmail.com>
parents: 79381
diff changeset
8756 if (GetDiskFreeSpace (rootname,
0ca197abc593 (Fw32_registered_hot_keys): Don't return the nil values corresponding
Juanma Barranquero <lekktu@gmail.com>
parents: 79381
diff changeset
8757 &sectors_per_cluster,
0ca197abc593 (Fw32_registered_hot_keys): Don't return the nil values corresponding
Juanma Barranquero <lekktu@gmail.com>
parents: 79381
diff changeset
8758 &bytes_per_sector,
0ca197abc593 (Fw32_registered_hot_keys): Don't return the nil values corresponding
Juanma Barranquero <lekktu@gmail.com>
parents: 79381
diff changeset
8759 &free_clusters,
0ca197abc593 (Fw32_registered_hot_keys): Don't return the nil values corresponding
Juanma Barranquero <lekktu@gmail.com>
parents: 79381
diff changeset
8760 &total_clusters))
34643
7108531c744b (Ffile_system_info): New function.
Andrew Innes <andrewi@gnu.org>
parents: 34638
diff changeset
8761 value = list3 (make_float ((double) total_clusters
7108531c744b (Ffile_system_info): New function.
Andrew Innes <andrewi@gnu.org>
parents: 34638
diff changeset
8762 * sectors_per_cluster * bytes_per_sector),
7108531c744b (Ffile_system_info): New function.
Andrew Innes <andrewi@gnu.org>
parents: 34638
diff changeset
8763 make_float ((double) free_clusters
7108531c744b (Ffile_system_info): New function.
Andrew Innes <andrewi@gnu.org>
parents: 34638
diff changeset
8764 * sectors_per_cluster * bytes_per_sector),
7108531c744b (Ffile_system_info): New function.
Andrew Innes <andrewi@gnu.org>
parents: 34638
diff changeset
8765 make_float ((double) free_clusters
7108531c744b (Ffile_system_info): New function.
Andrew Innes <andrewi@gnu.org>
parents: 34638
diff changeset
8766 * sectors_per_cluster * bytes_per_sector));
7108531c744b (Ffile_system_info): New function.
Andrew Innes <andrewi@gnu.org>
parents: 34638
diff changeset
8767 }
7108531c744b (Ffile_system_info): New function.
Andrew Innes <andrewi@gnu.org>
parents: 34638
diff changeset
8768 }
7108531c744b (Ffile_system_info): New function.
Andrew Innes <andrewi@gnu.org>
parents: 34638
diff changeset
8769
7108531c744b (Ffile_system_info): New function.
Andrew Innes <andrewi@gnu.org>
parents: 34638
diff changeset
8770 return value;
7108531c744b (Ffile_system_info): New function.
Andrew Innes <andrewi@gnu.org>
parents: 34638
diff changeset
8771 }
7108531c744b (Ffile_system_info): New function.
Andrew Innes <andrewi@gnu.org>
parents: 34638
diff changeset
8772
53739
5456cd83c404 * makefile.w32-in, w32fns.c: Add `default-printer-name' function.
Jason Rumney <jasonr@gnu.org>
parents: 53332
diff changeset
8773 DEFUN ("default-printer-name", Fdefault_printer_name, Sdefault_printer_name,
5456cd83c404 * makefile.w32-in, w32fns.c: Add `default-printer-name' function.
Jason Rumney <jasonr@gnu.org>
parents: 53332
diff changeset
8774 0, 0, 0, doc: /* Return the name of Windows default printer device. */)
5456cd83c404 * makefile.w32-in, w32fns.c: Add `default-printer-name' function.
Jason Rumney <jasonr@gnu.org>
parents: 53332
diff changeset
8775 ()
5456cd83c404 * makefile.w32-in, w32fns.c: Add `default-printer-name' function.
Jason Rumney <jasonr@gnu.org>
parents: 53332
diff changeset
8776 {
5456cd83c404 * makefile.w32-in, w32fns.c: Add `default-printer-name' function.
Jason Rumney <jasonr@gnu.org>
parents: 53332
diff changeset
8777 static char pname_buf[256];
5456cd83c404 * makefile.w32-in, w32fns.c: Add `default-printer-name' function.
Jason Rumney <jasonr@gnu.org>
parents: 53332
diff changeset
8778 int err;
5456cd83c404 * makefile.w32-in, w32fns.c: Add `default-printer-name' function.
Jason Rumney <jasonr@gnu.org>
parents: 53332
diff changeset
8779 HANDLE hPrn;
5456cd83c404 * makefile.w32-in, w32fns.c: Add `default-printer-name' function.
Jason Rumney <jasonr@gnu.org>
parents: 53332
diff changeset
8780 PRINTER_INFO_2 *ppi2 = NULL;
5456cd83c404 * makefile.w32-in, w32fns.c: Add `default-printer-name' function.
Jason Rumney <jasonr@gnu.org>
parents: 53332
diff changeset
8781 DWORD dwNeeded = 0, dwReturned = 0;
5456cd83c404 * makefile.w32-in, w32fns.c: Add `default-printer-name' function.
Jason Rumney <jasonr@gnu.org>
parents: 53332
diff changeset
8782
5456cd83c404 * makefile.w32-in, w32fns.c: Add `default-printer-name' function.
Jason Rumney <jasonr@gnu.org>
parents: 53332
diff changeset
8783 /* Retrieve the default string from Win.ini (the registry).
5456cd83c404 * makefile.w32-in, w32fns.c: Add `default-printer-name' function.
Jason Rumney <jasonr@gnu.org>
parents: 53332
diff changeset
8784 * String will be in form "printername,drivername,portname".
5456cd83c404 * makefile.w32-in, w32fns.c: Add `default-printer-name' function.
Jason Rumney <jasonr@gnu.org>
parents: 53332
diff changeset
8785 * This is the most portable way to get the default printer. */
5456cd83c404 * makefile.w32-in, w32fns.c: Add `default-printer-name' function.
Jason Rumney <jasonr@gnu.org>
parents: 53332
diff changeset
8786 if (GetProfileString ("windows", "device", ",,", pname_buf, sizeof (pname_buf)) <= 0)
5456cd83c404 * makefile.w32-in, w32fns.c: Add `default-printer-name' function.
Jason Rumney <jasonr@gnu.org>
parents: 53332
diff changeset
8787 return Qnil;
5456cd83c404 * makefile.w32-in, w32fns.c: Add `default-printer-name' function.
Jason Rumney <jasonr@gnu.org>
parents: 53332
diff changeset
8788 /* printername precedes first "," character */
5456cd83c404 * makefile.w32-in, w32fns.c: Add `default-printer-name' function.
Jason Rumney <jasonr@gnu.org>
parents: 53332
diff changeset
8789 strtok (pname_buf, ",");
5456cd83c404 * makefile.w32-in, w32fns.c: Add `default-printer-name' function.
Jason Rumney <jasonr@gnu.org>
parents: 53332
diff changeset
8790 /* We want to know more than the printer name */
5456cd83c404 * makefile.w32-in, w32fns.c: Add `default-printer-name' function.
Jason Rumney <jasonr@gnu.org>
parents: 53332
diff changeset
8791 if (!OpenPrinter (pname_buf, &hPrn, NULL))
5456cd83c404 * makefile.w32-in, w32fns.c: Add `default-printer-name' function.
Jason Rumney <jasonr@gnu.org>
parents: 53332
diff changeset
8792 return Qnil;
5456cd83c404 * makefile.w32-in, w32fns.c: Add `default-printer-name' function.
Jason Rumney <jasonr@gnu.org>
parents: 53332
diff changeset
8793 GetPrinter (hPrn, 2, NULL, 0, &dwNeeded);
5456cd83c404 * makefile.w32-in, w32fns.c: Add `default-printer-name' function.
Jason Rumney <jasonr@gnu.org>
parents: 53332
diff changeset
8794 if (dwNeeded == 0)
5456cd83c404 * makefile.w32-in, w32fns.c: Add `default-printer-name' function.
Jason Rumney <jasonr@gnu.org>
parents: 53332
diff changeset
8795 {
5456cd83c404 * makefile.w32-in, w32fns.c: Add `default-printer-name' function.
Jason Rumney <jasonr@gnu.org>
parents: 53332
diff changeset
8796 ClosePrinter (hPrn);
5456cd83c404 * makefile.w32-in, w32fns.c: Add `default-printer-name' function.
Jason Rumney <jasonr@gnu.org>
parents: 53332
diff changeset
8797 return Qnil;
5456cd83c404 * makefile.w32-in, w32fns.c: Add `default-printer-name' function.
Jason Rumney <jasonr@gnu.org>
parents: 53332
diff changeset
8798 }
5456cd83c404 * makefile.w32-in, w32fns.c: Add `default-printer-name' function.
Jason Rumney <jasonr@gnu.org>
parents: 53332
diff changeset
8799 /* Allocate memory for the PRINTER_INFO_2 struct */
5456cd83c404 * makefile.w32-in, w32fns.c: Add `default-printer-name' function.
Jason Rumney <jasonr@gnu.org>
parents: 53332
diff changeset
8800 ppi2 = (PRINTER_INFO_2 *) xmalloc (dwNeeded);
5456cd83c404 * makefile.w32-in, w32fns.c: Add `default-printer-name' function.
Jason Rumney <jasonr@gnu.org>
parents: 53332
diff changeset
8801 if (!ppi2)
5456cd83c404 * makefile.w32-in, w32fns.c: Add `default-printer-name' function.
Jason Rumney <jasonr@gnu.org>
parents: 53332
diff changeset
8802 {
5456cd83c404 * makefile.w32-in, w32fns.c: Add `default-printer-name' function.
Jason Rumney <jasonr@gnu.org>
parents: 53332
diff changeset
8803 ClosePrinter (hPrn);
5456cd83c404 * makefile.w32-in, w32fns.c: Add `default-printer-name' function.
Jason Rumney <jasonr@gnu.org>
parents: 53332
diff changeset
8804 return Qnil;
5456cd83c404 * makefile.w32-in, w32fns.c: Add `default-printer-name' function.
Jason Rumney <jasonr@gnu.org>
parents: 53332
diff changeset
8805 }
79387
0ca197abc593 (Fw32_registered_hot_keys): Don't return the nil values corresponding
Juanma Barranquero <lekktu@gmail.com>
parents: 79381
diff changeset
8806 /* Call GetPrinter again with big enouth memory block */
53739
5456cd83c404 * makefile.w32-in, w32fns.c: Add `default-printer-name' function.
Jason Rumney <jasonr@gnu.org>
parents: 53332
diff changeset
8807 err = GetPrinter (hPrn, 2, (LPBYTE)ppi2, dwNeeded, &dwReturned);
5456cd83c404 * makefile.w32-in, w32fns.c: Add `default-printer-name' function.
Jason Rumney <jasonr@gnu.org>
parents: 53332
diff changeset
8808 ClosePrinter (hPrn);
5456cd83c404 * makefile.w32-in, w32fns.c: Add `default-printer-name' function.
Jason Rumney <jasonr@gnu.org>
parents: 53332
diff changeset
8809 if (!err)
5456cd83c404 * makefile.w32-in, w32fns.c: Add `default-printer-name' function.
Jason Rumney <jasonr@gnu.org>
parents: 53332
diff changeset
8810 {
79387
0ca197abc593 (Fw32_registered_hot_keys): Don't return the nil values corresponding
Juanma Barranquero <lekktu@gmail.com>
parents: 79381
diff changeset
8811 xfree (ppi2);
53739
5456cd83c404 * makefile.w32-in, w32fns.c: Add `default-printer-name' function.
Jason Rumney <jasonr@gnu.org>
parents: 53332
diff changeset
8812 return Qnil;
5456cd83c404 * makefile.w32-in, w32fns.c: Add `default-printer-name' function.
Jason Rumney <jasonr@gnu.org>
parents: 53332
diff changeset
8813 }
5456cd83c404 * makefile.w32-in, w32fns.c: Add `default-printer-name' function.
Jason Rumney <jasonr@gnu.org>
parents: 53332
diff changeset
8814
5456cd83c404 * makefile.w32-in, w32fns.c: Add `default-printer-name' function.
Jason Rumney <jasonr@gnu.org>
parents: 53332
diff changeset
8815 if (ppi2)
5456cd83c404 * makefile.w32-in, w32fns.c: Add `default-printer-name' function.
Jason Rumney <jasonr@gnu.org>
parents: 53332
diff changeset
8816 {
5456cd83c404 * makefile.w32-in, w32fns.c: Add `default-printer-name' function.
Jason Rumney <jasonr@gnu.org>
parents: 53332
diff changeset
8817 if (ppi2->Attributes & PRINTER_ATTRIBUTE_SHARED && ppi2->pServerName)
5456cd83c404 * makefile.w32-in, w32fns.c: Add `default-printer-name' function.
Jason Rumney <jasonr@gnu.org>
parents: 53332
diff changeset
8818 {
5456cd83c404 * makefile.w32-in, w32fns.c: Add `default-printer-name' function.
Jason Rumney <jasonr@gnu.org>
parents: 53332
diff changeset
8819 /* a remote printer */
5456cd83c404 * makefile.w32-in, w32fns.c: Add `default-printer-name' function.
Jason Rumney <jasonr@gnu.org>
parents: 53332
diff changeset
8820 if (*ppi2->pServerName == '\\')
79387
0ca197abc593 (Fw32_registered_hot_keys): Don't return the nil values corresponding
Juanma Barranquero <lekktu@gmail.com>
parents: 79381
diff changeset
8821 _snprintf (pname_buf, sizeof (pname_buf), "%s\\%s", ppi2->pServerName,
0ca197abc593 (Fw32_registered_hot_keys): Don't return the nil values corresponding
Juanma Barranquero <lekktu@gmail.com>
parents: 79381
diff changeset
8822 ppi2->pShareName);
53739
5456cd83c404 * makefile.w32-in, w32fns.c: Add `default-printer-name' function.
Jason Rumney <jasonr@gnu.org>
parents: 53332
diff changeset
8823 else
79387
0ca197abc593 (Fw32_registered_hot_keys): Don't return the nil values corresponding
Juanma Barranquero <lekktu@gmail.com>
parents: 79381
diff changeset
8824 _snprintf (pname_buf, sizeof (pname_buf), "\\\\%s\\%s", ppi2->pServerName,
0ca197abc593 (Fw32_registered_hot_keys): Don't return the nil values corresponding
Juanma Barranquero <lekktu@gmail.com>
parents: 79381
diff changeset
8825 ppi2->pShareName);
53739
5456cd83c404 * makefile.w32-in, w32fns.c: Add `default-printer-name' function.
Jason Rumney <jasonr@gnu.org>
parents: 53332
diff changeset
8826 pname_buf[sizeof (pname_buf) - 1] = '\0';
5456cd83c404 * makefile.w32-in, w32fns.c: Add `default-printer-name' function.
Jason Rumney <jasonr@gnu.org>
parents: 53332
diff changeset
8827 }
5456cd83c404 * makefile.w32-in, w32fns.c: Add `default-printer-name' function.
Jason Rumney <jasonr@gnu.org>
parents: 53332
diff changeset
8828 else
5456cd83c404 * makefile.w32-in, w32fns.c: Add `default-printer-name' function.
Jason Rumney <jasonr@gnu.org>
parents: 53332
diff changeset
8829 {
5456cd83c404 * makefile.w32-in, w32fns.c: Add `default-printer-name' function.
Jason Rumney <jasonr@gnu.org>
parents: 53332
diff changeset
8830 /* a local printer */
79387
0ca197abc593 (Fw32_registered_hot_keys): Don't return the nil values corresponding
Juanma Barranquero <lekktu@gmail.com>
parents: 79381
diff changeset
8831 strncpy (pname_buf, ppi2->pPortName, sizeof (pname_buf));
53739
5456cd83c404 * makefile.w32-in, w32fns.c: Add `default-printer-name' function.
Jason Rumney <jasonr@gnu.org>
parents: 53332
diff changeset
8832 pname_buf[sizeof (pname_buf) - 1] = '\0';
5456cd83c404 * makefile.w32-in, w32fns.c: Add `default-printer-name' function.
Jason Rumney <jasonr@gnu.org>
parents: 53332
diff changeset
8833 /* `pPortName' can include several ports, delimited by ','.
5456cd83c404 * makefile.w32-in, w32fns.c: Add `default-printer-name' function.
Jason Rumney <jasonr@gnu.org>
parents: 53332
diff changeset
8834 * we only use the first one. */
79387
0ca197abc593 (Fw32_registered_hot_keys): Don't return the nil values corresponding
Juanma Barranquero <lekktu@gmail.com>
parents: 79381
diff changeset
8835 strtok (pname_buf, ",");
53739
5456cd83c404 * makefile.w32-in, w32fns.c: Add `default-printer-name' function.
Jason Rumney <jasonr@gnu.org>
parents: 53332
diff changeset
8836 }
79387
0ca197abc593 (Fw32_registered_hot_keys): Don't return the nil values corresponding
Juanma Barranquero <lekktu@gmail.com>
parents: 79381
diff changeset
8837 xfree (ppi2);
53739
5456cd83c404 * makefile.w32-in, w32fns.c: Add `default-printer-name' function.
Jason Rumney <jasonr@gnu.org>
parents: 53332
diff changeset
8838 }
5456cd83c404 * makefile.w32-in, w32fns.c: Add `default-printer-name' function.
Jason Rumney <jasonr@gnu.org>
parents: 53332
diff changeset
8839
5456cd83c404 * makefile.w32-in, w32fns.c: Add `default-printer-name' function.
Jason Rumney <jasonr@gnu.org>
parents: 53332
diff changeset
8840 return build_string (pname_buf);
5456cd83c404 * makefile.w32-in, w32fns.c: Add `default-printer-name' function.
Jason Rumney <jasonr@gnu.org>
parents: 53332
diff changeset
8841 }
5456cd83c404 * makefile.w32-in, w32fns.c: Add `default-printer-name' function.
Jason Rumney <jasonr@gnu.org>
parents: 53332
diff changeset
8842
41480
2c71c672b3c7 (x_create_tip_frame): Set frame's fringes_extra to 0.
Jason Rumney <jasonr@gnu.org>
parents: 41448
diff changeset
8843 /***********************************************************************
2c71c672b3c7 (x_create_tip_frame): Set frame's fringes_extra to 0.
Jason Rumney <jasonr@gnu.org>
parents: 41448
diff changeset
8844 Initialization
2c71c672b3c7 (x_create_tip_frame): Set frame's fringes_extra to 0.
Jason Rumney <jasonr@gnu.org>
parents: 41448
diff changeset
8845 ***********************************************************************/
2c71c672b3c7 (x_create_tip_frame): Set frame's fringes_extra to 0.
Jason Rumney <jasonr@gnu.org>
parents: 41448
diff changeset
8846
55892
c12c7852c322 (Fx_display_grayscale_p, Fw32_send_sys_command, Vw32_color_map):
Juanma Barranquero <lekktu@gmail.com>
parents: 55673
diff changeset
8847 /* Keep this list in the same order as frame_parms in frame.c.
50362
6d942c1d5f2d * w32fns.c (Qauto_raise, Qauto_lower, ...): Remove vars for frame
Kim F. Storm <storm@cua.dk>
parents: 50229
diff changeset
8848 Use 0 for unsupported frame parameters. */
6d942c1d5f2d * w32fns.c (Qauto_raise, Qauto_lower, ...): Remove vars for frame
Kim F. Storm <storm@cua.dk>
parents: 50229
diff changeset
8849
6d942c1d5f2d * w32fns.c (Qauto_raise, Qauto_lower, ...): Remove vars for frame
Kim F. Storm <storm@cua.dk>
parents: 50229
diff changeset
8850 frame_parm_handler w32_frame_parm_handlers[] =
6d942c1d5f2d * w32fns.c (Qauto_raise, Qauto_lower, ...): Remove vars for frame
Kim F. Storm <storm@cua.dk>
parents: 50229
diff changeset
8851 {
6d942c1d5f2d * w32fns.c (Qauto_raise, Qauto_lower, ...): Remove vars for frame
Kim F. Storm <storm@cua.dk>
parents: 50229
diff changeset
8852 x_set_autoraise,
6d942c1d5f2d * w32fns.c (Qauto_raise, Qauto_lower, ...): Remove vars for frame
Kim F. Storm <storm@cua.dk>
parents: 50229
diff changeset
8853 x_set_autolower,
6d942c1d5f2d * w32fns.c (Qauto_raise, Qauto_lower, ...): Remove vars for frame
Kim F. Storm <storm@cua.dk>
parents: 50229
diff changeset
8854 x_set_background_color,
6d942c1d5f2d * w32fns.c (Qauto_raise, Qauto_lower, ...): Remove vars for frame
Kim F. Storm <storm@cua.dk>
parents: 50229
diff changeset
8855 x_set_border_color,
6d942c1d5f2d * w32fns.c (Qauto_raise, Qauto_lower, ...): Remove vars for frame
Kim F. Storm <storm@cua.dk>
parents: 50229
diff changeset
8856 x_set_border_width,
6d942c1d5f2d * w32fns.c (Qauto_raise, Qauto_lower, ...): Remove vars for frame
Kim F. Storm <storm@cua.dk>
parents: 50229
diff changeset
8857 x_set_cursor_color,
6d942c1d5f2d * w32fns.c (Qauto_raise, Qauto_lower, ...): Remove vars for frame
Kim F. Storm <storm@cua.dk>
parents: 50229
diff changeset
8858 x_set_cursor_type,
6d942c1d5f2d * w32fns.c (Qauto_raise, Qauto_lower, ...): Remove vars for frame
Kim F. Storm <storm@cua.dk>
parents: 50229
diff changeset
8859 x_set_font,
6d942c1d5f2d * w32fns.c (Qauto_raise, Qauto_lower, ...): Remove vars for frame
Kim F. Storm <storm@cua.dk>
parents: 50229
diff changeset
8860 x_set_foreground_color,
6d942c1d5f2d * w32fns.c (Qauto_raise, Qauto_lower, ...): Remove vars for frame
Kim F. Storm <storm@cua.dk>
parents: 50229
diff changeset
8861 x_set_icon_name,
6d942c1d5f2d * w32fns.c (Qauto_raise, Qauto_lower, ...): Remove vars for frame
Kim F. Storm <storm@cua.dk>
parents: 50229
diff changeset
8862 x_set_icon_type,
6d942c1d5f2d * w32fns.c (Qauto_raise, Qauto_lower, ...): Remove vars for frame
Kim F. Storm <storm@cua.dk>
parents: 50229
diff changeset
8863 x_set_internal_border_width,
6d942c1d5f2d * w32fns.c (Qauto_raise, Qauto_lower, ...): Remove vars for frame
Kim F. Storm <storm@cua.dk>
parents: 50229
diff changeset
8864 x_set_menu_bar_lines,
6d942c1d5f2d * w32fns.c (Qauto_raise, Qauto_lower, ...): Remove vars for frame
Kim F. Storm <storm@cua.dk>
parents: 50229
diff changeset
8865 x_set_mouse_color,
6d942c1d5f2d * w32fns.c (Qauto_raise, Qauto_lower, ...): Remove vars for frame
Kim F. Storm <storm@cua.dk>
parents: 50229
diff changeset
8866 x_explicitly_set_name,
6d942c1d5f2d * w32fns.c (Qauto_raise, Qauto_lower, ...): Remove vars for frame
Kim F. Storm <storm@cua.dk>
parents: 50229
diff changeset
8867 x_set_scroll_bar_width,
6d942c1d5f2d * w32fns.c (Qauto_raise, Qauto_lower, ...): Remove vars for frame
Kim F. Storm <storm@cua.dk>
parents: 50229
diff changeset
8868 x_set_title,
6d942c1d5f2d * w32fns.c (Qauto_raise, Qauto_lower, ...): Remove vars for frame
Kim F. Storm <storm@cua.dk>
parents: 50229
diff changeset
8869 x_set_unsplittable,
6d942c1d5f2d * w32fns.c (Qauto_raise, Qauto_lower, ...): Remove vars for frame
Kim F. Storm <storm@cua.dk>
parents: 50229
diff changeset
8870 x_set_vertical_scroll_bars,
6d942c1d5f2d * w32fns.c (Qauto_raise, Qauto_lower, ...): Remove vars for frame
Kim F. Storm <storm@cua.dk>
parents: 50229
diff changeset
8871 x_set_visibility,
6d942c1d5f2d * w32fns.c (Qauto_raise, Qauto_lower, ...): Remove vars for frame
Kim F. Storm <storm@cua.dk>
parents: 50229
diff changeset
8872 x_set_tool_bar_lines,
6d942c1d5f2d * w32fns.c (Qauto_raise, Qauto_lower, ...): Remove vars for frame
Kim F. Storm <storm@cua.dk>
parents: 50229
diff changeset
8873 0, /* x_set_scroll_bar_foreground, */
6d942c1d5f2d * w32fns.c (Qauto_raise, Qauto_lower, ...): Remove vars for frame
Kim F. Storm <storm@cua.dk>
parents: 50229
diff changeset
8874 0, /* x_set_scroll_bar_background, */
6d942c1d5f2d * w32fns.c (Qauto_raise, Qauto_lower, ...): Remove vars for frame
Kim F. Storm <storm@cua.dk>
parents: 50229
diff changeset
8875 x_set_screen_gamma,
6d942c1d5f2d * w32fns.c (Qauto_raise, Qauto_lower, ...): Remove vars for frame
Kim F. Storm <storm@cua.dk>
parents: 50229
diff changeset
8876 x_set_line_spacing,
6d942c1d5f2d * w32fns.c (Qauto_raise, Qauto_lower, ...): Remove vars for frame
Kim F. Storm <storm@cua.dk>
parents: 50229
diff changeset
8877 x_set_fringe_width,
6d942c1d5f2d * w32fns.c (Qauto_raise, Qauto_lower, ...): Remove vars for frame
Kim F. Storm <storm@cua.dk>
parents: 50229
diff changeset
8878 x_set_fringe_width,
6d942c1d5f2d * w32fns.c (Qauto_raise, Qauto_lower, ...): Remove vars for frame
Kim F. Storm <storm@cua.dk>
parents: 50229
diff changeset
8879 0, /* x_set_wait_for_wm, */
6d942c1d5f2d * w32fns.c (Qauto_raise, Qauto_lower, ...): Remove vars for frame
Kim F. Storm <storm@cua.dk>
parents: 50229
diff changeset
8880 x_set_fullscreen,
95162
4b6526b6c53a Seiji Zenitani <zenitani at mac.com>
Glenn Morris <rgm@gnu.org>
parents: 94963
diff changeset
8881 x_set_font_backend,
4b6526b6c53a Seiji Zenitani <zenitani at mac.com>
Glenn Morris <rgm@gnu.org>
parents: 94963
diff changeset
8882 0 /* x_set_alpha, */
50362
6d942c1d5f2d * w32fns.c (Qauto_raise, Qauto_lower, ...): Remove vars for frame
Kim F. Storm <storm@cua.dk>
parents: 50229
diff changeset
8883 };
6d942c1d5f2d * w32fns.c (Qauto_raise, Qauto_lower, ...): Remove vars for frame
Kim F. Storm <storm@cua.dk>
parents: 50229
diff changeset
8884
41480
2c71c672b3c7 (x_create_tip_frame): Set frame's fringes_extra to 0.
Jason Rumney <jasonr@gnu.org>
parents: 41448
diff changeset
8885 void
16588
481b7874a1e9 Change identifiers of the form win32* to w32*.
Geoff Voelker <voelker@cs.washington.edu>
parents: 16259
diff changeset
8886 syms_of_w32fns ()
13434
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
8887 {
49455
a6825c5c7ce7 (init_jpeg_functions, jpeg_resync_to_restart_wrapper):
Jason Rumney <jasonr@gnu.org>
parents: 49448
diff changeset
8888 globals_of_w32fns ();
a6825c5c7ce7 (init_jpeg_functions, jpeg_resync_to_restart_wrapper):
Jason Rumney <jasonr@gnu.org>
parents: 49448
diff changeset
8889 /* This is zero if not using MS-Windows. */
19707
0181cc080316 Include limits.h and errno.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18508
diff changeset
8890 w32_in_use = 0;
41732
0d9b74cd27cd (trackmouse_window, track_mouse_event_fn): New vars.
Jason Rumney <jasonr@gnu.org>
parents: 41726
diff changeset
8891 track_mouse_window = NULL;
0d9b74cd27cd (trackmouse_window, track_mouse_event_fn): New vars.
Jason Rumney <jasonr@gnu.org>
parents: 41726
diff changeset
8892
42918
9b06036a8c5e (syms_of_w32fns): Initialize w32_visible_system_caret_hwnd.
Jason Rumney <jasonr@gnu.org>
parents: 42865
diff changeset
8893 w32_visible_system_caret_hwnd = NULL;
9b06036a8c5e (syms_of_w32fns): Initialize w32_visible_system_caret_hwnd.
Jason Rumney <jasonr@gnu.org>
parents: 42865
diff changeset
8894
90919
2f257010ddd5 (syms_of_w32fns): Use DEFSYM macro.
Jason Rumney <jasonr@gnu.org>
parents: 90918
diff changeset
8895 DEFSYM (Qnone, "none");
2f257010ddd5 (syms_of_w32fns): Use DEFSYM macro.
Jason Rumney <jasonr@gnu.org>
parents: 90918
diff changeset
8896 DEFSYM (Qsuppress_icon, "suppress-icon");
2f257010ddd5 (syms_of_w32fns): Use DEFSYM macro.
Jason Rumney <jasonr@gnu.org>
parents: 90918
diff changeset
8897 DEFSYM (Qundefined_color, "undefined-color");
2f257010ddd5 (syms_of_w32fns): Use DEFSYM macro.
Jason Rumney <jasonr@gnu.org>
parents: 90918
diff changeset
8898 DEFSYM (Qcancel_timer, "cancel-timer");
2f257010ddd5 (syms_of_w32fns): Use DEFSYM macro.
Jason Rumney <jasonr@gnu.org>
parents: 90918
diff changeset
8899 DEFSYM (Qhyper, "hyper");
2f257010ddd5 (syms_of_w32fns): Use DEFSYM macro.
Jason Rumney <jasonr@gnu.org>
parents: 90918
diff changeset
8900 DEFSYM (Qsuper, "super");
2f257010ddd5 (syms_of_w32fns): Use DEFSYM macro.
Jason Rumney <jasonr@gnu.org>
parents: 90918
diff changeset
8901 DEFSYM (Qmeta, "meta");
2f257010ddd5 (syms_of_w32fns): Use DEFSYM macro.
Jason Rumney <jasonr@gnu.org>
parents: 90918
diff changeset
8902 DEFSYM (Qalt, "alt");
2f257010ddd5 (syms_of_w32fns): Use DEFSYM macro.
Jason Rumney <jasonr@gnu.org>
parents: 90918
diff changeset
8903 DEFSYM (Qctrl, "ctrl");
2f257010ddd5 (syms_of_w32fns): Use DEFSYM macro.
Jason Rumney <jasonr@gnu.org>
parents: 90918
diff changeset
8904 DEFSYM (Qcontrol, "control");
2f257010ddd5 (syms_of_w32fns): Use DEFSYM macro.
Jason Rumney <jasonr@gnu.org>
parents: 90918
diff changeset
8905 DEFSYM (Qshift, "shift");
96079
efbaf6995245 * w32fns.c, xfns.c (Qfont_param): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 95894
diff changeset
8906 DEFSYM (Qfont_param, "font-parameter");
43398
8782b8cfed62 *** empty log message ***
Jason Rumney <jasonr@gnu.org>
parents: 43210
diff changeset
8907 /* This is the end of symbol initialization. */
23803
f112aa8f8f5d (Vw32_phantom_key_code): New variable.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23801
diff changeset
8908
27397
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
8909 /* Text property `display' should be nonsticky by default. */
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
8910 Vtext_property_default_nonsticky
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
8911 = Fcons (Fcons (Qdisplay, Qt), Vtext_property_default_nonsticky);
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
8912
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
8913
13434
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
8914 Fput (Qundefined_color, Qerror_conditions,
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
8915 Fcons (Qundefined_color, Fcons (Qerror, Qnil)));
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
8916 Fput (Qundefined_color, Qerror_message,
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
8917 build_string ("Undefined color"));
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
8918
23681
af0276da2059 (Vw32_pass_optional_keys_to_system): Variable removed.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23637
diff changeset
8919 staticpro (&w32_grabbed_keys);
af0276da2059 (Vw32_pass_optional_keys_to_system): Variable removed.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23637
diff changeset
8920 w32_grabbed_keys = Qnil;
af0276da2059 (Vw32_pass_optional_keys_to_system): Variable removed.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23637
diff changeset
8921
16588
481b7874a1e9 Change identifiers of the form win32* to w32*.
Geoff Voelker <voelker@cs.washington.edu>
parents: 16259
diff changeset
8922 DEFVAR_LISP ("w32-color-map", &Vw32_color_map,
55892
c12c7852c322 (Fx_display_grayscale_p, Fw32_send_sys_command, Vw32_color_map):
Juanma Barranquero <lekktu@gmail.com>
parents: 55673
diff changeset
8923 doc: /* An array of color name mappings for Windows. */);
16588
481b7874a1e9 Change identifiers of the form win32* to w32*.
Geoff Voelker <voelker@cs.washington.edu>
parents: 16259
diff changeset
8924 Vw32_color_map = Qnil;
481b7874a1e9 Change identifiers of the form win32* to w32*.
Geoff Voelker <voelker@cs.washington.edu>
parents: 16259
diff changeset
8925
481b7874a1e9 Change identifiers of the form win32* to w32*.
Geoff Voelker <voelker@cs.washington.edu>
parents: 16259
diff changeset
8926 DEFVAR_LISP ("w32-pass-alt-to-system", &Vw32_pass_alt_to_system,
73087
9ce57eb0c589 (w32-pass-alt-to-system, w32-alt-is-meta)
Eli Zaretskii <eliz@gnu.org>
parents: 72529
diff changeset
8927 doc: /* Non-nil if Alt key presses are passed on to Windows.
9ce57eb0c589 (w32-pass-alt-to-system, w32-alt-is-meta)
Eli Zaretskii <eliz@gnu.org>
parents: 72529
diff changeset
8928 When non-nil, for example, Alt pressed and released and then space will
9ce57eb0c589 (w32-pass-alt-to-system, w32-alt-is-meta)
Eli Zaretskii <eliz@gnu.org>
parents: 72529
diff changeset
8929 open the System menu. When nil, Emacs processes the Alt key events, and
9ce57eb0c589 (w32-pass-alt-to-system, w32-alt-is-meta)
Eli Zaretskii <eliz@gnu.org>
parents: 72529
diff changeset
8930 then silently swallows them. */);
16588
481b7874a1e9 Change identifiers of the form win32* to w32*.
Geoff Voelker <voelker@cs.washington.edu>
parents: 16259
diff changeset
8931 Vw32_pass_alt_to_system = Qnil;
481b7874a1e9 Change identifiers of the form win32* to w32*.
Geoff Voelker <voelker@cs.washington.edu>
parents: 16259
diff changeset
8932
481b7874a1e9 Change identifiers of the form win32* to w32*.
Geoff Voelker <voelker@cs.washington.edu>
parents: 16259
diff changeset
8933 DEFVAR_LISP ("w32-alt-is-meta", &Vw32_alt_is_meta,
73087
9ce57eb0c589 (w32-pass-alt-to-system, w32-alt-is-meta)
Eli Zaretskii <eliz@gnu.org>
parents: 72529
diff changeset
8934 doc: /* Non-nil if the Alt key is to be considered the same as the META key.
9ce57eb0c589 (w32-pass-alt-to-system, w32-alt-is-meta)
Eli Zaretskii <eliz@gnu.org>
parents: 72529
diff changeset
8935 When nil, Emacs will translate the Alt key to the ALT modifier, not to META. */);
16588
481b7874a1e9 Change identifiers of the form win32* to w32*.
Geoff Voelker <voelker@cs.washington.edu>
parents: 16259
diff changeset
8936 Vw32_alt_is_meta = Qt;
481b7874a1e9 Change identifiers of the form win32* to w32*.
Geoff Voelker <voelker@cs.washington.edu>
parents: 16259
diff changeset
8937
55656
29b250a07fe0 (Fw32_register_hot_key, Fw32_unregister_hot_key)
Jason Rumney <jasonr@gnu.org>
parents: 55592
diff changeset
8938 DEFVAR_INT ("w32-quit-key", &w32_quit_key,
29b250a07fe0 (Fw32_register_hot_key, Fw32_unregister_hot_key)
Jason Rumney <jasonr@gnu.org>
parents: 55592
diff changeset
8939 doc: /* If non-zero, the virtual key code for an alternative quit key. */);
29b250a07fe0 (Fw32_register_hot_key, Fw32_unregister_hot_key)
Jason Rumney <jasonr@gnu.org>
parents: 55592
diff changeset
8940 w32_quit_key = 0;
24339
e8b73c2ac4ec (Vw32_quit_key): New variable.
Andrew Innes <andrewi@gnu.org>
parents: 24252
diff changeset
8941
47942
080b4586492b Fix typo in comment.
Juanma Barranquero <lekktu@gmail.com>
parents: 47731
diff changeset
8942 DEFVAR_LISP ("w32-pass-lwindow-to-system",
23681
af0276da2059 (Vw32_pass_optional_keys_to_system): Variable removed.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23637
diff changeset
8943 &Vw32_pass_lwindow_to_system,
73087
9ce57eb0c589 (w32-pass-alt-to-system, w32-alt-is-meta)
Eli Zaretskii <eliz@gnu.org>
parents: 72529
diff changeset
8944 doc: /* If non-nil, the left \"Windows\" key is passed on to Windows.
9ce57eb0c589 (w32-pass-alt-to-system, w32-alt-is-meta)
Eli Zaretskii <eliz@gnu.org>
parents: 72529
diff changeset
8945
9ce57eb0c589 (w32-pass-alt-to-system, w32-alt-is-meta)
Eli Zaretskii <eliz@gnu.org>
parents: 72529
diff changeset
8946 When non-nil, the Start menu is opened by tapping the key.
9ce57eb0c589 (w32-pass-alt-to-system, w32-alt-is-meta)
Eli Zaretskii <eliz@gnu.org>
parents: 72529
diff changeset
8947 If you set this to nil, the left \"Windows\" key is processed by Emacs
9ce57eb0c589 (w32-pass-alt-to-system, w32-alt-is-meta)
Eli Zaretskii <eliz@gnu.org>
parents: 72529
diff changeset
8948 according to the value of `w32-lwindow-modifier', which see.
9ce57eb0c589 (w32-pass-alt-to-system, w32-alt-is-meta)
Eli Zaretskii <eliz@gnu.org>
parents: 72529
diff changeset
8949
9ce57eb0c589 (w32-pass-alt-to-system, w32-alt-is-meta)
Eli Zaretskii <eliz@gnu.org>
parents: 72529
diff changeset
8950 Note that some combinations of the left \"Windows\" key with other keys are
9ce57eb0c589 (w32-pass-alt-to-system, w32-alt-is-meta)
Eli Zaretskii <eliz@gnu.org>
parents: 72529
diff changeset
8951 caught by Windows at low level, and so binding them in Emacs will have no
9ce57eb0c589 (w32-pass-alt-to-system, w32-alt-is-meta)
Eli Zaretskii <eliz@gnu.org>
parents: 72529
diff changeset
8952 effect. For example, <lwindow>-r always pops up the Windows Run dialog,
9ce57eb0c589 (w32-pass-alt-to-system, w32-alt-is-meta)
Eli Zaretskii <eliz@gnu.org>
parents: 72529
diff changeset
8953 <lwindow>-<Pause> pops up the "System Properties" dialog, etc. However, see
9ce57eb0c589 (w32-pass-alt-to-system, w32-alt-is-meta)
Eli Zaretskii <eliz@gnu.org>
parents: 72529
diff changeset
8954 the doc string of `w32-phantom-key-code'. */);
23681
af0276da2059 (Vw32_pass_optional_keys_to_system): Variable removed.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23637
diff changeset
8955 Vw32_pass_lwindow_to_system = Qt;
af0276da2059 (Vw32_pass_optional_keys_to_system): Variable removed.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23637
diff changeset
8956
47942
080b4586492b Fix typo in comment.
Juanma Barranquero <lekktu@gmail.com>
parents: 47731
diff changeset
8957 DEFVAR_LISP ("w32-pass-rwindow-to-system",
23681
af0276da2059 (Vw32_pass_optional_keys_to_system): Variable removed.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23637
diff changeset
8958 &Vw32_pass_rwindow_to_system,
73087
9ce57eb0c589 (w32-pass-alt-to-system, w32-alt-is-meta)
Eli Zaretskii <eliz@gnu.org>
parents: 72529
diff changeset
8959 doc: /* If non-nil, the right \"Windows\" key is passed on to Windows.
9ce57eb0c589 (w32-pass-alt-to-system, w32-alt-is-meta)
Eli Zaretskii <eliz@gnu.org>
parents: 72529
diff changeset
8960
9ce57eb0c589 (w32-pass-alt-to-system, w32-alt-is-meta)
Eli Zaretskii <eliz@gnu.org>
parents: 72529
diff changeset
8961 When non-nil, the Start menu is opened by tapping the key.
9ce57eb0c589 (w32-pass-alt-to-system, w32-alt-is-meta)
Eli Zaretskii <eliz@gnu.org>
parents: 72529
diff changeset
8962 If you set this to nil, the right \"Windows\" key is processed by Emacs
9ce57eb0c589 (w32-pass-alt-to-system, w32-alt-is-meta)
Eli Zaretskii <eliz@gnu.org>
parents: 72529
diff changeset
8963 according to the value of `w32-rwindow-modifier', which see.
9ce57eb0c589 (w32-pass-alt-to-system, w32-alt-is-meta)
Eli Zaretskii <eliz@gnu.org>
parents: 72529
diff changeset
8964
9ce57eb0c589 (w32-pass-alt-to-system, w32-alt-is-meta)
Eli Zaretskii <eliz@gnu.org>
parents: 72529
diff changeset
8965 Note that some combinations of the right \"Windows\" key with other keys are
9ce57eb0c589 (w32-pass-alt-to-system, w32-alt-is-meta)
Eli Zaretskii <eliz@gnu.org>
parents: 72529
diff changeset
8966 caught by Windows at low level, and so binding them in Emacs will have no
9ce57eb0c589 (w32-pass-alt-to-system, w32-alt-is-meta)
Eli Zaretskii <eliz@gnu.org>
parents: 72529
diff changeset
8967 effect. For example, <rwindow>-r always pops up the Windows Run dialog,
9ce57eb0c589 (w32-pass-alt-to-system, w32-alt-is-meta)
Eli Zaretskii <eliz@gnu.org>
parents: 72529
diff changeset
8968 <rwindow>-<Pause> pops up the "System Properties" dialog, etc. However, see
9ce57eb0c589 (w32-pass-alt-to-system, w32-alt-is-meta)
Eli Zaretskii <eliz@gnu.org>
parents: 72529
diff changeset
8969 the doc string of `w32-phantom-key-code'. */);
23681
af0276da2059 (Vw32_pass_optional_keys_to_system): Variable removed.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23637
diff changeset
8970 Vw32_pass_rwindow_to_system = Qt;
af0276da2059 (Vw32_pass_optional_keys_to_system): Variable removed.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23637
diff changeset
8971
55656
29b250a07fe0 (Fw32_register_hot_key, Fw32_unregister_hot_key)
Jason Rumney <jasonr@gnu.org>
parents: 55592
diff changeset
8972 DEFVAR_LISP ("w32-phantom-key-code",
23803
f112aa8f8f5d (Vw32_phantom_key_code): New variable.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23801
diff changeset
8973 &Vw32_phantom_key_code,
55656
29b250a07fe0 (Fw32_register_hot_key, Fw32_unregister_hot_key)
Jason Rumney <jasonr@gnu.org>
parents: 55592
diff changeset
8974 doc: /* Virtual key code used to generate \"phantom\" key presses.
40964
fb970d0c56eb Change doc-string comments to `new style'. [w/`doc:' keyword]. Doc fixes.
Jason Rumney <jasonr@gnu.org>
parents: 40873
diff changeset
8975 Value is a number between 0 and 255.
fb970d0c56eb Change doc-string comments to `new style'. [w/`doc:' keyword]. Doc fixes.
Jason Rumney <jasonr@gnu.org>
parents: 40873
diff changeset
8976
fb970d0c56eb Change doc-string comments to `new style'. [w/`doc:' keyword]. Doc fixes.
Jason Rumney <jasonr@gnu.org>
parents: 40873
diff changeset
8977 Phantom key presses are generated in order to stop the system from
fb970d0c56eb Change doc-string comments to `new style'. [w/`doc:' keyword]. Doc fixes.
Jason Rumney <jasonr@gnu.org>
parents: 40873
diff changeset
8978 acting on \"Windows\" key events when `w32-pass-lwindow-to-system' or
fb970d0c56eb Change doc-string comments to `new style'. [w/`doc:' keyword]. Doc fixes.
Jason Rumney <jasonr@gnu.org>
parents: 40873
diff changeset
8979 `w32-pass-rwindow-to-system' is nil. */);
24718
547f54dfbb94 (x_to_w32_charset): Reinstall VIETNAMESE_CHARSET
Andrew Innes <andrewi@gnu.org>
parents: 24695
diff changeset
8980 /* Although 255 is technically not a valid key code, it works and
547f54dfbb94 (x_to_w32_charset): Reinstall VIETNAMESE_CHARSET
Andrew Innes <andrewi@gnu.org>
parents: 24695
diff changeset
8981 means that this hack won't interfere with any real key code. */
55656
29b250a07fe0 (Fw32_register_hot_key, Fw32_unregister_hot_key)
Jason Rumney <jasonr@gnu.org>
parents: 55592
diff changeset
8982 XSETINT (Vw32_phantom_key_code, 255);
23803
f112aa8f8f5d (Vw32_phantom_key_code): New variable.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23801
diff changeset
8983
47942
080b4586492b Fix typo in comment.
Juanma Barranquero <lekktu@gmail.com>
parents: 47731
diff changeset
8984 DEFVAR_LISP ("w32-enable-num-lock",
23681
af0276da2059 (Vw32_pass_optional_keys_to_system): Variable removed.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23637
diff changeset
8985 &Vw32_enable_num_lock,
73087
9ce57eb0c589 (w32-pass-alt-to-system, w32-alt-is-meta)
Eli Zaretskii <eliz@gnu.org>
parents: 72529
diff changeset
8986 doc: /* If non-nil, the Num Lock key acts normally.
9ce57eb0c589 (w32-pass-alt-to-system, w32-alt-is-meta)
Eli Zaretskii <eliz@gnu.org>
parents: 72529
diff changeset
8987 Set to nil to handle Num Lock as the `kp-numlock' key. */);
23681
af0276da2059 (Vw32_pass_optional_keys_to_system): Variable removed.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23637
diff changeset
8988 Vw32_enable_num_lock = Qt;
af0276da2059 (Vw32_pass_optional_keys_to_system): Variable removed.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23637
diff changeset
8989
47942
080b4586492b Fix typo in comment.
Juanma Barranquero <lekktu@gmail.com>
parents: 47731
diff changeset
8990 DEFVAR_LISP ("w32-enable-caps-lock",
23681
af0276da2059 (Vw32_pass_optional_keys_to_system): Variable removed.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23637
diff changeset
8991 &Vw32_enable_caps_lock,
73087
9ce57eb0c589 (w32-pass-alt-to-system, w32-alt-is-meta)
Eli Zaretskii <eliz@gnu.org>
parents: 72529
diff changeset
8992 doc: /* If non-nil, the Caps Lock key acts normally.
9ce57eb0c589 (w32-pass-alt-to-system, w32-alt-is-meta)
Eli Zaretskii <eliz@gnu.org>
parents: 72529
diff changeset
8993 Set to nil to handle Caps Lock as the `capslock' key. */);
23681
af0276da2059 (Vw32_pass_optional_keys_to_system): Variable removed.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23637
diff changeset
8994 Vw32_enable_caps_lock = Qt;
af0276da2059 (Vw32_pass_optional_keys_to_system): Variable removed.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23637
diff changeset
8995
af0276da2059 (Vw32_pass_optional_keys_to_system): Variable removed.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23637
diff changeset
8996 DEFVAR_LISP ("w32-scroll-lock-modifier",
af0276da2059 (Vw32_pass_optional_keys_to_system): Variable removed.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23637
diff changeset
8997 &Vw32_scroll_lock_modifier,
73087
9ce57eb0c589 (w32-pass-alt-to-system, w32-alt-is-meta)
Eli Zaretskii <eliz@gnu.org>
parents: 72529
diff changeset
8998 doc: /* Modifier to use for the Scroll Lock ON state.
40964
fb970d0c56eb Change doc-string comments to `new style'. [w/`doc:' keyword]. Doc fixes.
Jason Rumney <jasonr@gnu.org>
parents: 40873
diff changeset
8999 The value can be hyper, super, meta, alt, control or shift for the
73087
9ce57eb0c589 (w32-pass-alt-to-system, w32-alt-is-meta)
Eli Zaretskii <eliz@gnu.org>
parents: 72529
diff changeset
9000 respective modifier, or nil to handle Scroll Lock as the `scroll' key.
9ce57eb0c589 (w32-pass-alt-to-system, w32-alt-is-meta)
Eli Zaretskii <eliz@gnu.org>
parents: 72529
diff changeset
9001 Any other value will cause the Scroll Lock key to be ignored. */);
23681
af0276da2059 (Vw32_pass_optional_keys_to_system): Variable removed.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23637
diff changeset
9002 Vw32_scroll_lock_modifier = Qt;
af0276da2059 (Vw32_pass_optional_keys_to_system): Variable removed.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23637
diff changeset
9003
af0276da2059 (Vw32_pass_optional_keys_to_system): Variable removed.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23637
diff changeset
9004 DEFVAR_LISP ("w32-lwindow-modifier",
af0276da2059 (Vw32_pass_optional_keys_to_system): Variable removed.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23637
diff changeset
9005 &Vw32_lwindow_modifier,
40964
fb970d0c56eb Change doc-string comments to `new style'. [w/`doc:' keyword]. Doc fixes.
Jason Rumney <jasonr@gnu.org>
parents: 40873
diff changeset
9006 doc: /* Modifier to use for the left \"Windows\" key.
fb970d0c56eb Change doc-string comments to `new style'. [w/`doc:' keyword]. Doc fixes.
Jason Rumney <jasonr@gnu.org>
parents: 40873
diff changeset
9007 The value can be hyper, super, meta, alt, control or shift for the
73087
9ce57eb0c589 (w32-pass-alt-to-system, w32-alt-is-meta)
Eli Zaretskii <eliz@gnu.org>
parents: 72529
diff changeset
9008 respective modifier, or nil to appear as the `lwindow' key.
40964
fb970d0c56eb Change doc-string comments to `new style'. [w/`doc:' keyword]. Doc fixes.
Jason Rumney <jasonr@gnu.org>
parents: 40873
diff changeset
9009 Any other value will cause the key to be ignored. */);
23681
af0276da2059 (Vw32_pass_optional_keys_to_system): Variable removed.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23637
diff changeset
9010 Vw32_lwindow_modifier = Qnil;
af0276da2059 (Vw32_pass_optional_keys_to_system): Variable removed.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23637
diff changeset
9011
af0276da2059 (Vw32_pass_optional_keys_to_system): Variable removed.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23637
diff changeset
9012 DEFVAR_LISP ("w32-rwindow-modifier",
af0276da2059 (Vw32_pass_optional_keys_to_system): Variable removed.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23637
diff changeset
9013 &Vw32_rwindow_modifier,
40964
fb970d0c56eb Change doc-string comments to `new style'. [w/`doc:' keyword]. Doc fixes.
Jason Rumney <jasonr@gnu.org>
parents: 40873
diff changeset
9014 doc: /* Modifier to use for the right \"Windows\" key.
fb970d0c56eb Change doc-string comments to `new style'. [w/`doc:' keyword]. Doc fixes.
Jason Rumney <jasonr@gnu.org>
parents: 40873
diff changeset
9015 The value can be hyper, super, meta, alt, control or shift for the
73087
9ce57eb0c589 (w32-pass-alt-to-system, w32-alt-is-meta)
Eli Zaretskii <eliz@gnu.org>
parents: 72529
diff changeset
9016 respective modifier, or nil to appear as the `rwindow' key.
40964
fb970d0c56eb Change doc-string comments to `new style'. [w/`doc:' keyword]. Doc fixes.
Jason Rumney <jasonr@gnu.org>
parents: 40873
diff changeset
9017 Any other value will cause the key to be ignored. */);
23681
af0276da2059 (Vw32_pass_optional_keys_to_system): Variable removed.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23637
diff changeset
9018 Vw32_rwindow_modifier = Qnil;
af0276da2059 (Vw32_pass_optional_keys_to_system): Variable removed.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23637
diff changeset
9019
af0276da2059 (Vw32_pass_optional_keys_to_system): Variable removed.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23637
diff changeset
9020 DEFVAR_LISP ("w32-apps-modifier",
af0276da2059 (Vw32_pass_optional_keys_to_system): Variable removed.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23637
diff changeset
9021 &Vw32_apps_modifier,
40964
fb970d0c56eb Change doc-string comments to `new style'. [w/`doc:' keyword]. Doc fixes.
Jason Rumney <jasonr@gnu.org>
parents: 40873
diff changeset
9022 doc: /* Modifier to use for the \"Apps\" key.
fb970d0c56eb Change doc-string comments to `new style'. [w/`doc:' keyword]. Doc fixes.
Jason Rumney <jasonr@gnu.org>
parents: 40873
diff changeset
9023 The value can be hyper, super, meta, alt, control or shift for the
73087
9ce57eb0c589 (w32-pass-alt-to-system, w32-alt-is-meta)
Eli Zaretskii <eliz@gnu.org>
parents: 72529
diff changeset
9024 respective modifier, or nil to appear as the `apps' key.
40964
fb970d0c56eb Change doc-string comments to `new style'. [w/`doc:' keyword]. Doc fixes.
Jason Rumney <jasonr@gnu.org>
parents: 40873
diff changeset
9025 Any other value will cause the key to be ignored. */);
23681
af0276da2059 (Vw32_pass_optional_keys_to_system): Variable removed.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23637
diff changeset
9026 Vw32_apps_modifier = Qnil;
16588
481b7874a1e9 Change identifiers of the form win32* to w32*.
Geoff Voelker <voelker@cs.washington.edu>
parents: 16259
diff changeset
9027
42845
ebb3a20bc357 (w32_load_system_font, w32_to_x_charset): Use strnicmp
Jason Rumney <jasonr@gnu.org>
parents: 42833
diff changeset
9028 DEFVAR_BOOL ("w32-enable-synthesized-fonts", &w32_enable_synthesized_fonts,
40964
fb970d0c56eb Change doc-string comments to `new style'. [w/`doc:' keyword]. Doc fixes.
Jason Rumney <jasonr@gnu.org>
parents: 40873
diff changeset
9029 doc: /* Non-nil enables selection of artificially italicized and bold fonts. */);
42845
ebb3a20bc357 (w32_load_system_font, w32_to_x_charset): Use strnicmp
Jason Rumney <jasonr@gnu.org>
parents: 42833
diff changeset
9030 w32_enable_synthesized_fonts = 0;
16588
481b7874a1e9 Change identifiers of the form win32* to w32*.
Geoff Voelker <voelker@cs.washington.edu>
parents: 16259
diff changeset
9031
481b7874a1e9 Change identifiers of the form win32* to w32*.
Geoff Voelker <voelker@cs.washington.edu>
parents: 16259
diff changeset
9032 DEFVAR_LISP ("w32-enable-palette", &Vw32_enable_palette,
40964
fb970d0c56eb Change doc-string comments to `new style'. [w/`doc:' keyword]. Doc fixes.
Jason Rumney <jasonr@gnu.org>
parents: 40873
diff changeset
9033 doc: /* Non-nil enables Windows palette management to map colors exactly. */);
16588
481b7874a1e9 Change identifiers of the form win32* to w32*.
Geoff Voelker <voelker@cs.washington.edu>
parents: 16259
diff changeset
9034 Vw32_enable_palette = Qt;
481b7874a1e9 Change identifiers of the form win32* to w32*.
Geoff Voelker <voelker@cs.washington.edu>
parents: 16259
diff changeset
9035
481b7874a1e9 Change identifiers of the form win32* to w32*.
Geoff Voelker <voelker@cs.washington.edu>
parents: 16259
diff changeset
9036 DEFVAR_INT ("w32-mouse-button-tolerance",
55656
29b250a07fe0 (Fw32_register_hot_key, Fw32_unregister_hot_key)
Jason Rumney <jasonr@gnu.org>
parents: 55592
diff changeset
9037 &w32_mouse_button_tolerance,
40964
fb970d0c56eb Change doc-string comments to `new style'. [w/`doc:' keyword]. Doc fixes.
Jason Rumney <jasonr@gnu.org>
parents: 40873
diff changeset
9038 doc: /* Analogue of double click interval for faking middle mouse events.
fb970d0c56eb Change doc-string comments to `new style'. [w/`doc:' keyword]. Doc fixes.
Jason Rumney <jasonr@gnu.org>
parents: 40873
diff changeset
9039 The value is the minimum time in milliseconds that must elapse between
73087
9ce57eb0c589 (w32-pass-alt-to-system, w32-alt-is-meta)
Eli Zaretskii <eliz@gnu.org>
parents: 72529
diff changeset
9040 left and right button down events before they are considered distinct events.
40964
fb970d0c56eb Change doc-string comments to `new style'. [w/`doc:' keyword]. Doc fixes.
Jason Rumney <jasonr@gnu.org>
parents: 40873
diff changeset
9041 If both mouse buttons are depressed within this interval, a middle mouse
fb970d0c56eb Change doc-string comments to `new style'. [w/`doc:' keyword]. Doc fixes.
Jason Rumney <jasonr@gnu.org>
parents: 40873
diff changeset
9042 button down event is generated instead. */);
55656
29b250a07fe0 (Fw32_register_hot_key, Fw32_unregister_hot_key)
Jason Rumney <jasonr@gnu.org>
parents: 55592
diff changeset
9043 w32_mouse_button_tolerance = GetDoubleClickTime () / 2;
16588
481b7874a1e9 Change identifiers of the form win32* to w32*.
Geoff Voelker <voelker@cs.washington.edu>
parents: 16259
diff changeset
9044
481b7874a1e9 Change identifiers of the form win32* to w32*.
Geoff Voelker <voelker@cs.washington.edu>
parents: 16259
diff changeset
9045 DEFVAR_INT ("w32-mouse-move-interval",
55656
29b250a07fe0 (Fw32_register_hot_key, Fw32_unregister_hot_key)
Jason Rumney <jasonr@gnu.org>
parents: 55592
diff changeset
9046 &w32_mouse_move_interval,
40964
fb970d0c56eb Change doc-string comments to `new style'. [w/`doc:' keyword]. Doc fixes.
Jason Rumney <jasonr@gnu.org>
parents: 40873
diff changeset
9047 doc: /* Minimum interval between mouse move events.
fb970d0c56eb Change doc-string comments to `new style'. [w/`doc:' keyword]. Doc fixes.
Jason Rumney <jasonr@gnu.org>
parents: 40873
diff changeset
9048 The value is the minimum time in milliseconds that must elapse between
fb970d0c56eb Change doc-string comments to `new style'. [w/`doc:' keyword]. Doc fixes.
Jason Rumney <jasonr@gnu.org>
parents: 40873
diff changeset
9049 successive mouse move (or scroll bar drag) events before they are
fb970d0c56eb Change doc-string comments to `new style'. [w/`doc:' keyword]. Doc fixes.
Jason Rumney <jasonr@gnu.org>
parents: 40873
diff changeset
9050 reported as lisp events. */);
55656
29b250a07fe0 (Fw32_register_hot_key, Fw32_unregister_hot_key)
Jason Rumney <jasonr@gnu.org>
parents: 55592
diff changeset
9051 w32_mouse_move_interval = 0;
15290
da73440fdb5f (Vwin32_mouse_move_interval): New lisp variable.
Karl Heuer <kwzh@gnu.org>
parents: 15280
diff changeset
9052
42719
70f13c4f82c7 (w32_pass_extra_mouse_buttons_to_system): New user option.
Jason Rumney <jasonr@gnu.org>
parents: 42537
diff changeset
9053 DEFVAR_BOOL ("w32-pass-extra-mouse-buttons-to-system",
70f13c4f82c7 (w32_pass_extra_mouse_buttons_to_system): New user option.
Jason Rumney <jasonr@gnu.org>
parents: 42537
diff changeset
9054 &w32_pass_extra_mouse_buttons_to_system,
73087
9ce57eb0c589 (w32-pass-alt-to-system, w32-alt-is-meta)
Eli Zaretskii <eliz@gnu.org>
parents: 72529
diff changeset
9055 doc: /* If non-nil, the fourth and fifth mouse buttons are passed to Windows.
42719
70f13c4f82c7 (w32_pass_extra_mouse_buttons_to_system): New user option.
Jason Rumney <jasonr@gnu.org>
parents: 42537
diff changeset
9056 Recent versions of Windows support mice with up to five buttons.
70f13c4f82c7 (w32_pass_extra_mouse_buttons_to_system): New user option.
Jason Rumney <jasonr@gnu.org>
parents: 42537
diff changeset
9057 Since most applications don't support these extra buttons, most mouse
70f13c4f82c7 (w32_pass_extra_mouse_buttons_to_system): New user option.
Jason Rumney <jasonr@gnu.org>
parents: 42537
diff changeset
9058 drivers will allow you to map them to functions at the system level.
70f13c4f82c7 (w32_pass_extra_mouse_buttons_to_system): New user option.
Jason Rumney <jasonr@gnu.org>
parents: 42537
diff changeset
9059 If this variable is non-nil, Emacs will pass them on, allowing the
70f13c4f82c7 (w32_pass_extra_mouse_buttons_to_system): New user option.
Jason Rumney <jasonr@gnu.org>
parents: 42537
diff changeset
9060 system to handle them. */);
70f13c4f82c7 (w32_pass_extra_mouse_buttons_to_system): New user option.
Jason Rumney <jasonr@gnu.org>
parents: 42537
diff changeset
9061 w32_pass_extra_mouse_buttons_to_system = 0;
70f13c4f82c7 (w32_pass_extra_mouse_buttons_to_system): New user option.
Jason Rumney <jasonr@gnu.org>
parents: 42537
diff changeset
9062
85979
bb1f44062552 (w32_pass_multimedia_buttons_to_system): New user option.
Jason Rumney <jasonr@gnu.org>
parents: 85614
diff changeset
9063 DEFVAR_BOOL ("w32-pass-multimedia-buttons-to-system",
bb1f44062552 (w32_pass_multimedia_buttons_to_system): New user option.
Jason Rumney <jasonr@gnu.org>
parents: 85614
diff changeset
9064 &w32_pass_multimedia_buttons_to_system,
bb1f44062552 (w32_pass_multimedia_buttons_to_system): New user option.
Jason Rumney <jasonr@gnu.org>
parents: 85614
diff changeset
9065 doc: /* If non-nil, media buttons are passed to Windows.
bb1f44062552 (w32_pass_multimedia_buttons_to_system): New user option.
Jason Rumney <jasonr@gnu.org>
parents: 85614
diff changeset
9066 Some modern keyboards contain buttons for controlling media players, web
86065
2557aa084b57 (Fw32_registered_hot_keys): Don't return the nil values corresponding
Juanma Barranquero <lekktu@gmail.com>
parents: 86053
diff changeset
9067 browsers and other applications. Generally these buttons are handled on a
85979
bb1f44062552 (w32_pass_multimedia_buttons_to_system): New user option.
Jason Rumney <jasonr@gnu.org>
parents: 85614
diff changeset
9068 system wide basis, but by setting this to nil they are made available
bb1f44062552 (w32_pass_multimedia_buttons_to_system): New user option.
Jason Rumney <jasonr@gnu.org>
parents: 85614
diff changeset
9069 to Emacs for binding. Depending on your keyboard, additional keys that
bb1f44062552 (w32_pass_multimedia_buttons_to_system): New user option.
Jason Rumney <jasonr@gnu.org>
parents: 85614
diff changeset
9070 may be available are:
bb1f44062552 (w32_pass_multimedia_buttons_to_system): New user option.
Jason Rumney <jasonr@gnu.org>
parents: 85614
diff changeset
9071
bb1f44062552 (w32_pass_multimedia_buttons_to_system): New user option.
Jason Rumney <jasonr@gnu.org>
parents: 85614
diff changeset
9072 browser-back, browser-forward, browser-refresh, browser-stop,
bb1f44062552 (w32_pass_multimedia_buttons_to_system): New user option.
Jason Rumney <jasonr@gnu.org>
parents: 85614
diff changeset
9073 browser-search, browser-favorites, browser-home,
bb1f44062552 (w32_pass_multimedia_buttons_to_system): New user option.
Jason Rumney <jasonr@gnu.org>
parents: 85614
diff changeset
9074 mail, mail-reply, mail-forward, mail-send,
bb1f44062552 (w32_pass_multimedia_buttons_to_system): New user option.
Jason Rumney <jasonr@gnu.org>
parents: 85614
diff changeset
9075 app-1, app-2,
bb1f44062552 (w32_pass_multimedia_buttons_to_system): New user option.
Jason Rumney <jasonr@gnu.org>
parents: 85614
diff changeset
9076 help, find, new, open, close, save, print, undo, redo, copy, cut, paste,
bb1f44062552 (w32_pass_multimedia_buttons_to_system): New user option.
Jason Rumney <jasonr@gnu.org>
parents: 85614
diff changeset
9077 spell-check, correction-list, toggle-dictate-command,
bb1f44062552 (w32_pass_multimedia_buttons_to_system): New user option.
Jason Rumney <jasonr@gnu.org>
parents: 85614
diff changeset
9078 media-next, media-previous, media-stop, media-play-pause, media-select,
bb1f44062552 (w32_pass_multimedia_buttons_to_system): New user option.
Jason Rumney <jasonr@gnu.org>
parents: 85614
diff changeset
9079 media-play, media-pause, media-record, media-fast-forward, media-rewind,
bb1f44062552 (w32_pass_multimedia_buttons_to_system): New user option.
Jason Rumney <jasonr@gnu.org>
parents: 85614
diff changeset
9080 media-channel-up, media-channel-down,
bb1f44062552 (w32_pass_multimedia_buttons_to_system): New user option.
Jason Rumney <jasonr@gnu.org>
parents: 85614
diff changeset
9081 volume-mute, volume-up, volume-down,
bb1f44062552 (w32_pass_multimedia_buttons_to_system): New user option.
Jason Rumney <jasonr@gnu.org>
parents: 85614
diff changeset
9082 mic-volume-mute, mic-volume-down, mic-volume-up, mic-toggle,
86065
2557aa084b57 (Fw32_registered_hot_keys): Don't return the nil values corresponding
Juanma Barranquero <lekktu@gmail.com>
parents: 86053
diff changeset
9083 bass-down, bass-boost, bass-up, treble-down, treble-up */);
85979
bb1f44062552 (w32_pass_multimedia_buttons_to_system): New user option.
Jason Rumney <jasonr@gnu.org>
parents: 85614
diff changeset
9084 w32_pass_multimedia_buttons_to_system = 1;
bb1f44062552 (w32_pass_multimedia_buttons_to_system): New user option.
Jason Rumney <jasonr@gnu.org>
parents: 85614
diff changeset
9085
13434
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
9086 DEFVAR_LISP ("x-pointer-shape", &Vx_pointer_shape,
40964
fb970d0c56eb Change doc-string comments to `new style'. [w/`doc:' keyword]. Doc fixes.
Jason Rumney <jasonr@gnu.org>
parents: 40873
diff changeset
9087 doc: /* The shape of the pointer when over text.
fb970d0c56eb Change doc-string comments to `new style'. [w/`doc:' keyword]. Doc fixes.
Jason Rumney <jasonr@gnu.org>
parents: 40873
diff changeset
9088 Changing the value does not affect existing frames
fb970d0c56eb Change doc-string comments to `new style'. [w/`doc:' keyword]. Doc fixes.
Jason Rumney <jasonr@gnu.org>
parents: 40873
diff changeset
9089 unless you set the mouse color. */);
13434
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
9090 Vx_pointer_shape = Qnil;
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
9091
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
9092 Vx_nontext_pointer_shape = Qnil;
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
9093
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
9094 Vx_mode_pointer_shape = Qnil;
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
9095
36252
a8630c63f7d5 Rename everything containing *busy_cursor* and similar
Gerd Moellmann <gerd@gnu.org>
parents: 36080
diff changeset
9096 DEFVAR_LISP ("x-hourglass-pointer-shape", &Vx_hourglass_pointer_shape,
40964
fb970d0c56eb Change doc-string comments to `new style'. [w/`doc:' keyword]. Doc fixes.
Jason Rumney <jasonr@gnu.org>
parents: 40873
diff changeset
9097 doc: /* The shape of the pointer when Emacs is busy.
fb970d0c56eb Change doc-string comments to `new style'. [w/`doc:' keyword]. Doc fixes.
Jason Rumney <jasonr@gnu.org>
parents: 40873
diff changeset
9098 This variable takes effect when you create a new frame
fb970d0c56eb Change doc-string comments to `new style'. [w/`doc:' keyword]. Doc fixes.
Jason Rumney <jasonr@gnu.org>
parents: 40873
diff changeset
9099 or when you set the mouse color. */);
36252
a8630c63f7d5 Rename everything containing *busy_cursor* and similar
Gerd Moellmann <gerd@gnu.org>
parents: 36080
diff changeset
9100 Vx_hourglass_pointer_shape = Qnil;
a8630c63f7d5 Rename everything containing *busy_cursor* and similar
Gerd Moellmann <gerd@gnu.org>
parents: 36080
diff changeset
9101
a8630c63f7d5 Rename everything containing *busy_cursor* and similar
Gerd Moellmann <gerd@gnu.org>
parents: 36080
diff changeset
9102 DEFVAR_BOOL ("display-hourglass", &display_hourglass_p,
40964
fb970d0c56eb Change doc-string comments to `new style'. [w/`doc:' keyword]. Doc fixes.
Jason Rumney <jasonr@gnu.org>
parents: 40873
diff changeset
9103 doc: /* Non-zero means Emacs displays an hourglass pointer on window systems. */);
36252
a8630c63f7d5 Rename everything containing *busy_cursor* and similar
Gerd Moellmann <gerd@gnu.org>
parents: 36080
diff changeset
9104 display_hourglass_p = 1;
47942
080b4586492b Fix typo in comment.
Juanma Barranquero <lekktu@gmail.com>
parents: 47731
diff changeset
9105
36252
a8630c63f7d5 Rename everything containing *busy_cursor* and similar
Gerd Moellmann <gerd@gnu.org>
parents: 36080
diff changeset
9106 DEFVAR_LISP ("hourglass-delay", &Vhourglass_delay,
40964
fb970d0c56eb Change doc-string comments to `new style'. [w/`doc:' keyword]. Doc fixes.
Jason Rumney <jasonr@gnu.org>
parents: 40873
diff changeset
9107 doc: /* *Seconds to wait before displaying an hourglass pointer.
fb970d0c56eb Change doc-string comments to `new style'. [w/`doc:' keyword]. Doc fixes.
Jason Rumney <jasonr@gnu.org>
parents: 40873
diff changeset
9108 Value must be an integer or float. */);
36252
a8630c63f7d5 Rename everything containing *busy_cursor* and similar
Gerd Moellmann <gerd@gnu.org>
parents: 36080
diff changeset
9109 Vhourglass_delay = make_number (DEFAULT_HOURGLASS_DELAY);
27936
4c1ad68f8688 Bring up to date with xfns.c changes from 2000-02-25 and 2000-02-21.
Jason Rumney <jasonr@gnu.org>
parents: 27894
diff changeset
9110
27397
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
9111 DEFVAR_LISP ("x-sensitive-text-pointer-shape",
79387
0ca197abc593 (Fw32_registered_hot_keys): Don't return the nil values corresponding
Juanma Barranquero <lekktu@gmail.com>
parents: 79381
diff changeset
9112 &Vx_sensitive_text_pointer_shape,
40964
fb970d0c56eb Change doc-string comments to `new style'. [w/`doc:' keyword]. Doc fixes.
Jason Rumney <jasonr@gnu.org>
parents: 40873
diff changeset
9113 doc: /* The shape of the pointer when over mouse-sensitive text.
fb970d0c56eb Change doc-string comments to `new style'. [w/`doc:' keyword]. Doc fixes.
Jason Rumney <jasonr@gnu.org>
parents: 40873
diff changeset
9114 This variable takes effect when you create a new frame
fb970d0c56eb Change doc-string comments to `new style'. [w/`doc:' keyword]. Doc fixes.
Jason Rumney <jasonr@gnu.org>
parents: 40873
diff changeset
9115 or when you set the mouse color. */);
13434
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
9116 Vx_sensitive_text_pointer_shape = Qnil;
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
9117
34133
f1063cc498e4 (Fx_create_frame): Reintroduce the call to face-set-after-frame-defaults.
Jason Rumney <jasonr@gnu.org>
parents: 34089
diff changeset
9118 DEFVAR_LISP ("x-window-horizontal-drag-cursor",
79387
0ca197abc593 (Fw32_registered_hot_keys): Don't return the nil values corresponding
Juanma Barranquero <lekktu@gmail.com>
parents: 79381
diff changeset
9119 &Vx_window_horizontal_drag_shape,
40964
fb970d0c56eb Change doc-string comments to `new style'. [w/`doc:' keyword]. Doc fixes.
Jason Rumney <jasonr@gnu.org>
parents: 40873
diff changeset
9120 doc: /* Pointer shape to use for indicating a window can be dragged horizontally.
fb970d0c56eb Change doc-string comments to `new style'. [w/`doc:' keyword]. Doc fixes.
Jason Rumney <jasonr@gnu.org>
parents: 40873
diff changeset
9121 This variable takes effect when you create a new frame
fb970d0c56eb Change doc-string comments to `new style'. [w/`doc:' keyword]. Doc fixes.
Jason Rumney <jasonr@gnu.org>
parents: 40873
diff changeset
9122 or when you set the mouse color. */);
34133
f1063cc498e4 (Fx_create_frame): Reintroduce the call to face-set-after-frame-defaults.
Jason Rumney <jasonr@gnu.org>
parents: 34089
diff changeset
9123 Vx_window_horizontal_drag_shape = Qnil;
f1063cc498e4 (Fx_create_frame): Reintroduce the call to face-set-after-frame-defaults.
Jason Rumney <jasonr@gnu.org>
parents: 34089
diff changeset
9124
13434
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
9125 DEFVAR_LISP ("x-cursor-fore-pixel", &Vx_cursor_fore_pixel,
40964
fb970d0c56eb Change doc-string comments to `new style'. [w/`doc:' keyword]. Doc fixes.
Jason Rumney <jasonr@gnu.org>
parents: 40873
diff changeset
9126 doc: /* A string indicating the foreground color of the cursor box. */);
13434
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
9127 Vx_cursor_fore_pixel = Qnil;
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
9128
40120
03eb905a4d8e (Fx_file_dialog): Pass a filter to GetOpenFileName.
Jason Rumney <jasonr@gnu.org>
parents: 40009
diff changeset
9129 DEFVAR_LISP ("x-max-tooltip-size", &Vx_max_tooltip_size,
41019
aa792c415dd6 Doc fixes.
Jason Rumney <jasonr@gnu.org>
parents: 41008
diff changeset
9130 doc: /* Maximum size for tooltips.
aa792c415dd6 Doc fixes.
Jason Rumney <jasonr@gnu.org>
parents: 41008
diff changeset
9131 Value is a pair (COLUMNS . ROWS). Text larger than this is clipped. */);
40120
03eb905a4d8e (Fx_file_dialog): Pass a filter to GetOpenFileName.
Jason Rumney <jasonr@gnu.org>
parents: 40009
diff changeset
9132 Vx_max_tooltip_size = Fcons (make_number (80), make_number (40));
47942
080b4586492b Fix typo in comment.
Juanma Barranquero <lekktu@gmail.com>
parents: 47731
diff changeset
9133
13434
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
9134 DEFVAR_LISP ("x-no-window-manager", &Vx_no_window_manager,
40964
fb970d0c56eb Change doc-string comments to `new style'. [w/`doc:' keyword]. Doc fixes.
Jason Rumney <jasonr@gnu.org>
parents: 40873
diff changeset
9135 doc: /* Non-nil if no window manager is in use.
fb970d0c56eb Change doc-string comments to `new style'. [w/`doc:' keyword]. Doc fixes.
Jason Rumney <jasonr@gnu.org>
parents: 40873
diff changeset
9136 Emacs doesn't try to figure this out; this is always nil
fb970d0c56eb Change doc-string comments to `new style'. [w/`doc:' keyword]. Doc fixes.
Jason Rumney <jasonr@gnu.org>
parents: 40873
diff changeset
9137 unless you set it to something else. */);
13434
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
9138 /* We don't have any way to find this out, so set it to nil
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
9139 and maybe the user would like to set it to t. */
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
9140 Vx_no_window_manager = Qnil;
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
9141
23506
246a14f0622f (Vx_pixel_size_width): New global variable.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23407
diff changeset
9142 DEFVAR_LISP ("x-pixel-size-width-font-regexp",
246a14f0622f (Vx_pixel_size_width): New global variable.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23407
diff changeset
9143 &Vx_pixel_size_width_font_regexp,
40964
fb970d0c56eb Change doc-string comments to `new style'. [w/`doc:' keyword]. Doc fixes.
Jason Rumney <jasonr@gnu.org>
parents: 40873
diff changeset
9144 doc: /* Regexp matching a font name whose width is the same as `PIXEL_SIZE'.
fb970d0c56eb Change doc-string comments to `new style'. [w/`doc:' keyword]. Doc fixes.
Jason Rumney <jasonr@gnu.org>
parents: 40873
diff changeset
9145
fb970d0c56eb Change doc-string comments to `new style'. [w/`doc:' keyword]. Doc fixes.
Jason Rumney <jasonr@gnu.org>
parents: 40873
diff changeset
9146 Since Emacs gets width of a font matching with this regexp from
fb970d0c56eb Change doc-string comments to `new style'. [w/`doc:' keyword]. Doc fixes.
Jason Rumney <jasonr@gnu.org>
parents: 40873
diff changeset
9147 PIXEL_SIZE field of the name, font finding mechanism gets faster for
fb970d0c56eb Change doc-string comments to `new style'. [w/`doc:' keyword]. Doc fixes.
Jason Rumney <jasonr@gnu.org>
parents: 40873
diff changeset
9148 such a font. This is especially effective for such large fonts as
fb970d0c56eb Change doc-string comments to `new style'. [w/`doc:' keyword]. Doc fixes.
Jason Rumney <jasonr@gnu.org>
parents: 40873
diff changeset
9149 Chinese, Japanese, and Korean. */);
23506
246a14f0622f (Vx_pixel_size_width): New global variable.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23407
diff changeset
9150 Vx_pixel_size_width_font_regexp = Qnil;
246a14f0622f (Vx_pixel_size_width): New global variable.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23407
diff changeset
9151
24147
c83b0bc4e8b9 (Vw32_bdf_filename_alist): New variable.
Geoff Voelker <voelker@cs.washington.edu>
parents: 24130
diff changeset
9152 DEFVAR_LISP ("w32-bdf-filename-alist",
c83b0bc4e8b9 (Vw32_bdf_filename_alist): New variable.
Geoff Voelker <voelker@cs.washington.edu>
parents: 24130
diff changeset
9153 &Vw32_bdf_filename_alist,
40964
fb970d0c56eb Change doc-string comments to `new style'. [w/`doc:' keyword]. Doc fixes.
Jason Rumney <jasonr@gnu.org>
parents: 40873
diff changeset
9154 doc: /* List of bdf fonts and their corresponding filenames. */);
24147
c83b0bc4e8b9 (Vw32_bdf_filename_alist): New variable.
Geoff Voelker <voelker@cs.washington.edu>
parents: 24130
diff changeset
9155 Vw32_bdf_filename_alist = Qnil;
c83b0bc4e8b9 (Vw32_bdf_filename_alist): New variable.
Geoff Voelker <voelker@cs.washington.edu>
parents: 24130
diff changeset
9156
24481
f65692fe7dd5 (w32_strict_fontnames): New variable.
Geoff Voelker <voelker@cs.washington.edu>
parents: 24479
diff changeset
9157 DEFVAR_BOOL ("w32-strict-fontnames",
f65692fe7dd5 (w32_strict_fontnames): New variable.
Geoff Voelker <voelker@cs.washington.edu>
parents: 24479
diff changeset
9158 &w32_strict_fontnames,
40964
fb970d0c56eb Change doc-string comments to `new style'. [w/`doc:' keyword]. Doc fixes.
Jason Rumney <jasonr@gnu.org>
parents: 40873
diff changeset
9159 doc: /* Non-nil means only use fonts that are exact matches for those requested.
fb970d0c56eb Change doc-string comments to `new style'. [w/`doc:' keyword]. Doc fixes.
Jason Rumney <jasonr@gnu.org>
parents: 40873
diff changeset
9160 Default is nil, which allows old fontnames that are not XLFD compliant,
fb970d0c56eb Change doc-string comments to `new style'. [w/`doc:' keyword]. Doc fixes.
Jason Rumney <jasonr@gnu.org>
parents: 40873
diff changeset
9161 and allows third-party CJK display to work by specifying false charset
fb970d0c56eb Change doc-string comments to `new style'. [w/`doc:' keyword]. Doc fixes.
Jason Rumney <jasonr@gnu.org>
parents: 40873
diff changeset
9162 fields to trick Emacs into translating to Big5, SJIS etc.
fb970d0c56eb Change doc-string comments to `new style'. [w/`doc:' keyword]. Doc fixes.
Jason Rumney <jasonr@gnu.org>
parents: 40873
diff changeset
9163 Setting this to t will prevent wrong fonts being selected when
fb970d0c56eb Change doc-string comments to `new style'. [w/`doc:' keyword]. Doc fixes.
Jason Rumney <jasonr@gnu.org>
parents: 40873
diff changeset
9164 fontsets are automatically created. */);
24481
f65692fe7dd5 (w32_strict_fontnames): New variable.
Geoff Voelker <voelker@cs.washington.edu>
parents: 24479
diff changeset
9165 w32_strict_fontnames = 0;
f65692fe7dd5 (w32_strict_fontnames): New variable.
Geoff Voelker <voelker@cs.washington.edu>
parents: 24479
diff changeset
9166
24695
2fe2c743ce68 (w32_strict_painting): New variable.
Andrew Innes <andrewi@gnu.org>
parents: 24692
diff changeset
9167 DEFVAR_BOOL ("w32-strict-painting",
2fe2c743ce68 (w32_strict_painting): New variable.
Andrew Innes <andrewi@gnu.org>
parents: 24692
diff changeset
9168 &w32_strict_painting,
40964
fb970d0c56eb Change doc-string comments to `new style'. [w/`doc:' keyword]. Doc fixes.
Jason Rumney <jasonr@gnu.org>
parents: 40873
diff changeset
9169 doc: /* Non-nil means use strict rules for repainting frames.
63279
091ece2ed577 (syms_of_w32fns): Fix spellings.
Juanma Barranquero <lekktu@gmail.com>
parents: 59333
diff changeset
9170 Set this to nil to get the old behavior for repainting; this should
40964
fb970d0c56eb Change doc-string comments to `new style'. [w/`doc:' keyword]. Doc fixes.
Jason Rumney <jasonr@gnu.org>
parents: 40873
diff changeset
9171 only be necessary if the default setting causes problems. */);
24695
2fe2c743ce68 (w32_strict_painting): New variable.
Andrew Innes <andrewi@gnu.org>
parents: 24692
diff changeset
9172 w32_strict_painting = 1;
2fe2c743ce68 (w32_strict_painting): New variable.
Andrew Innes <andrewi@gnu.org>
parents: 24692
diff changeset
9173
29317
2d3d5bf49d4e Format and doc changes to bring closer to xfns.c.
Jason Rumney <jasonr@gnu.org>
parents: 29021
diff changeset
9174 DEFVAR_LISP ("w32-charset-info-alist",
2d3d5bf49d4e Format and doc changes to bring closer to xfns.c.
Jason Rumney <jasonr@gnu.org>
parents: 29021
diff changeset
9175 &Vw32_charset_info_alist,
41019
aa792c415dd6 Doc fixes.
Jason Rumney <jasonr@gnu.org>
parents: 41008
diff changeset
9176 doc: /* Alist linking Emacs character sets to Windows fonts and codepages.
aa792c415dd6 Doc fixes.
Jason Rumney <jasonr@gnu.org>
parents: 41008
diff changeset
9177 Each entry should be of the form:
40964
fb970d0c56eb Change doc-string comments to `new style'. [w/`doc:' keyword]. Doc fixes.
Jason Rumney <jasonr@gnu.org>
parents: 40873
diff changeset
9178
fb970d0c56eb Change doc-string comments to `new style'. [w/`doc:' keyword]. Doc fixes.
Jason Rumney <jasonr@gnu.org>
parents: 40873
diff changeset
9179 (CHARSET_NAME . (WINDOWS_CHARSET . CODEPAGE))
fb970d0c56eb Change doc-string comments to `new style'. [w/`doc:' keyword]. Doc fixes.
Jason Rumney <jasonr@gnu.org>
parents: 40873
diff changeset
9180
fb970d0c56eb Change doc-string comments to `new style'. [w/`doc:' keyword]. Doc fixes.
Jason Rumney <jasonr@gnu.org>
parents: 40873
diff changeset
9181 where CHARSET_NAME is a string used in font names to identify the charset,
fb970d0c56eb Change doc-string comments to `new style'. [w/`doc:' keyword]. Doc fixes.
Jason Rumney <jasonr@gnu.org>
parents: 40873
diff changeset
9182 WINDOWS_CHARSET is a symbol that can be one of:
fb970d0c56eb Change doc-string comments to `new style'. [w/`doc:' keyword]. Doc fixes.
Jason Rumney <jasonr@gnu.org>
parents: 40873
diff changeset
9183 w32-charset-ansi, w32-charset-default, w32-charset-symbol,
fb970d0c56eb Change doc-string comments to `new style'. [w/`doc:' keyword]. Doc fixes.
Jason Rumney <jasonr@gnu.org>
parents: 40873
diff changeset
9184 w32-charset-shiftjis, w32-charset-hangeul, w32-charset-gb2312,
fb970d0c56eb Change doc-string comments to `new style'. [w/`doc:' keyword]. Doc fixes.
Jason Rumney <jasonr@gnu.org>
parents: 40873
diff changeset
9185 w32-charset-chinesebig5,
fb970d0c56eb Change doc-string comments to `new style'. [w/`doc:' keyword]. Doc fixes.
Jason Rumney <jasonr@gnu.org>
parents: 40873
diff changeset
9186 w32-charset-johab, w32-charset-hebrew,
fb970d0c56eb Change doc-string comments to `new style'. [w/`doc:' keyword]. Doc fixes.
Jason Rumney <jasonr@gnu.org>
parents: 40873
diff changeset
9187 w32-charset-arabic, w32-charset-greek, w32-charset-turkish,
fb970d0c56eb Change doc-string comments to `new style'. [w/`doc:' keyword]. Doc fixes.
Jason Rumney <jasonr@gnu.org>
parents: 40873
diff changeset
9188 w32-charset-vietnamese, w32-charset-thai, w32-charset-easteurope,
fb970d0c56eb Change doc-string comments to `new style'. [w/`doc:' keyword]. Doc fixes.
Jason Rumney <jasonr@gnu.org>
parents: 40873
diff changeset
9189 w32-charset-russian, w32-charset-mac, w32-charset-baltic,
fb970d0c56eb Change doc-string comments to `new style'. [w/`doc:' keyword]. Doc fixes.
Jason Rumney <jasonr@gnu.org>
parents: 40873
diff changeset
9190 w32-charset-unicode,
fb970d0c56eb Change doc-string comments to `new style'. [w/`doc:' keyword]. Doc fixes.
Jason Rumney <jasonr@gnu.org>
parents: 40873
diff changeset
9191 or w32-charset-oem.
fb970d0c56eb Change doc-string comments to `new style'. [w/`doc:' keyword]. Doc fixes.
Jason Rumney <jasonr@gnu.org>
parents: 40873
diff changeset
9192 CODEPAGE should be an integer specifying the codepage that should be used
fb970d0c56eb Change doc-string comments to `new style'. [w/`doc:' keyword]. Doc fixes.
Jason Rumney <jasonr@gnu.org>
parents: 40873
diff changeset
9193 to display the character set, t to do no translation and output as Unicode,
fb970d0c56eb Change doc-string comments to `new style'. [w/`doc:' keyword]. Doc fixes.
Jason Rumney <jasonr@gnu.org>
parents: 40873
diff changeset
9194 or nil to do no translation and output as 8 bit (or multibyte on far-east
fb970d0c56eb Change doc-string comments to `new style'. [w/`doc:' keyword]. Doc fixes.
Jason Rumney <jasonr@gnu.org>
parents: 40873
diff changeset
9195 versions of Windows) characters. */);
90919
2f257010ddd5 (syms_of_w32fns): Use DEFSYM macro.
Jason Rumney <jasonr@gnu.org>
parents: 90918
diff changeset
9196 Vw32_charset_info_alist = Qnil;
2f257010ddd5 (syms_of_w32fns): Use DEFSYM macro.
Jason Rumney <jasonr@gnu.org>
parents: 90918
diff changeset
9197
2f257010ddd5 (syms_of_w32fns): Use DEFSYM macro.
Jason Rumney <jasonr@gnu.org>
parents: 90918
diff changeset
9198 DEFSYM (Qw32_charset_ansi, "w32-charset-ansi");
2f257010ddd5 (syms_of_w32fns): Use DEFSYM macro.
Jason Rumney <jasonr@gnu.org>
parents: 90918
diff changeset
9199 DEFSYM (Qw32_charset_symbol, "w32-charset-symbol");
2f257010ddd5 (syms_of_w32fns): Use DEFSYM macro.
Jason Rumney <jasonr@gnu.org>
parents: 90918
diff changeset
9200 DEFSYM (Qw32_charset_default, "w32-charset-default");
2f257010ddd5 (syms_of_w32fns): Use DEFSYM macro.
Jason Rumney <jasonr@gnu.org>
parents: 90918
diff changeset
9201 DEFSYM (Qw32_charset_shiftjis, "w32-charset-shiftjis");
2f257010ddd5 (syms_of_w32fns): Use DEFSYM macro.
Jason Rumney <jasonr@gnu.org>
parents: 90918
diff changeset
9202 DEFSYM (Qw32_charset_hangeul, "w32-charset-hangeul");
2f257010ddd5 (syms_of_w32fns): Use DEFSYM macro.
Jason Rumney <jasonr@gnu.org>
parents: 90918
diff changeset
9203 DEFSYM (Qw32_charset_chinesebig5, "w32-charset-chinesebig5");
2f257010ddd5 (syms_of_w32fns): Use DEFSYM macro.
Jason Rumney <jasonr@gnu.org>
parents: 90918
diff changeset
9204 DEFSYM (Qw32_charset_gb2312, "w32-charset-gb2312");
2f257010ddd5 (syms_of_w32fns): Use DEFSYM macro.
Jason Rumney <jasonr@gnu.org>
parents: 90918
diff changeset
9205 DEFSYM (Qw32_charset_oem, "w32-charset-oem");
29317
2d3d5bf49d4e Format and doc changes to bring closer to xfns.c.
Jason Rumney <jasonr@gnu.org>
parents: 29021
diff changeset
9206
2d3d5bf49d4e Format and doc changes to bring closer to xfns.c.
Jason Rumney <jasonr@gnu.org>
parents: 29021
diff changeset
9207 #ifdef JOHAB_CHARSET
2d3d5bf49d4e Format and doc changes to bring closer to xfns.c.
Jason Rumney <jasonr@gnu.org>
parents: 29021
diff changeset
9208 {
2d3d5bf49d4e Format and doc changes to bring closer to xfns.c.
Jason Rumney <jasonr@gnu.org>
parents: 29021
diff changeset
9209 static int w32_extra_charsets_defined = 1;
40964
fb970d0c56eb Change doc-string comments to `new style'. [w/`doc:' keyword]. Doc fixes.
Jason Rumney <jasonr@gnu.org>
parents: 40873
diff changeset
9210 DEFVAR_BOOL ("w32-extra-charsets-defined", &w32_extra_charsets_defined,
fb970d0c56eb Change doc-string comments to `new style'. [w/`doc:' keyword]. Doc fixes.
Jason Rumney <jasonr@gnu.org>
parents: 40873
diff changeset
9211 doc: /* Internal variable. */);
29317
2d3d5bf49d4e Format and doc changes to bring closer to xfns.c.
Jason Rumney <jasonr@gnu.org>
parents: 29021
diff changeset
9212
90919
2f257010ddd5 (syms_of_w32fns): Use DEFSYM macro.
Jason Rumney <jasonr@gnu.org>
parents: 90918
diff changeset
9213 DEFSYM (Qw32_charset_johab, "w32-charset-johab");
2f257010ddd5 (syms_of_w32fns): Use DEFSYM macro.
Jason Rumney <jasonr@gnu.org>
parents: 90918
diff changeset
9214 DEFSYM (Qw32_charset_easteurope, "w32-charset-easteurope");
2f257010ddd5 (syms_of_w32fns): Use DEFSYM macro.
Jason Rumney <jasonr@gnu.org>
parents: 90918
diff changeset
9215 DEFSYM (Qw32_charset_turkish, "w32-charset-turkish");
2f257010ddd5 (syms_of_w32fns): Use DEFSYM macro.
Jason Rumney <jasonr@gnu.org>
parents: 90918
diff changeset
9216 DEFSYM (Qw32_charset_baltic, "w32-charset-baltic");
2f257010ddd5 (syms_of_w32fns): Use DEFSYM macro.
Jason Rumney <jasonr@gnu.org>
parents: 90918
diff changeset
9217 DEFSYM (Qw32_charset_russian, "w32-charset-russian");
2f257010ddd5 (syms_of_w32fns): Use DEFSYM macro.
Jason Rumney <jasonr@gnu.org>
parents: 90918
diff changeset
9218 DEFSYM (Qw32_charset_arabic, "w32-charset-arabic");
2f257010ddd5 (syms_of_w32fns): Use DEFSYM macro.
Jason Rumney <jasonr@gnu.org>
parents: 90918
diff changeset
9219 DEFSYM (Qw32_charset_greek, "w32-charset-greek");
2f257010ddd5 (syms_of_w32fns): Use DEFSYM macro.
Jason Rumney <jasonr@gnu.org>
parents: 90918
diff changeset
9220 DEFSYM (Qw32_charset_hebrew, "w32-charset-hebrew");
2f257010ddd5 (syms_of_w32fns): Use DEFSYM macro.
Jason Rumney <jasonr@gnu.org>
parents: 90918
diff changeset
9221 DEFSYM (Qw32_charset_vietnamese, "w32-charset-vietnamese");
2f257010ddd5 (syms_of_w32fns): Use DEFSYM macro.
Jason Rumney <jasonr@gnu.org>
parents: 90918
diff changeset
9222 DEFSYM (Qw32_charset_thai, "w32-charset-thai");
2f257010ddd5 (syms_of_w32fns): Use DEFSYM macro.
Jason Rumney <jasonr@gnu.org>
parents: 90918
diff changeset
9223 DEFSYM (Qw32_charset_mac, "w32-charset-mac");
29317
2d3d5bf49d4e Format and doc changes to bring closer to xfns.c.
Jason Rumney <jasonr@gnu.org>
parents: 29021
diff changeset
9224 }
2d3d5bf49d4e Format and doc changes to bring closer to xfns.c.
Jason Rumney <jasonr@gnu.org>
parents: 29021
diff changeset
9225 #endif
2d3d5bf49d4e Format and doc changes to bring closer to xfns.c.
Jason Rumney <jasonr@gnu.org>
parents: 29021
diff changeset
9226
2d3d5bf49d4e Format and doc changes to bring closer to xfns.c.
Jason Rumney <jasonr@gnu.org>
parents: 29021
diff changeset
9227 #ifdef UNICODE_CHARSET
2d3d5bf49d4e Format and doc changes to bring closer to xfns.c.
Jason Rumney <jasonr@gnu.org>
parents: 29021
diff changeset
9228 {
2d3d5bf49d4e Format and doc changes to bring closer to xfns.c.
Jason Rumney <jasonr@gnu.org>
parents: 29021
diff changeset
9229 static int w32_unicode_charset_defined = 1;
2d3d5bf49d4e Format and doc changes to bring closer to xfns.c.
Jason Rumney <jasonr@gnu.org>
parents: 29021
diff changeset
9230 DEFVAR_BOOL ("w32-unicode-charset-defined",
40964
fb970d0c56eb Change doc-string comments to `new style'. [w/`doc:' keyword]. Doc fixes.
Jason Rumney <jasonr@gnu.org>
parents: 40873
diff changeset
9231 &w32_unicode_charset_defined,
fb970d0c56eb Change doc-string comments to `new style'. [w/`doc:' keyword]. Doc fixes.
Jason Rumney <jasonr@gnu.org>
parents: 40873
diff changeset
9232 doc: /* Internal variable. */);
90919
2f257010ddd5 (syms_of_w32fns): Use DEFSYM macro.
Jason Rumney <jasonr@gnu.org>
parents: 90918
diff changeset
9233 DEFSYM (Qw32_charset_unicode, "w32-charset-unicode");
74661
0b62ec4c4929 (w32-window-exists-p): New function.
Eli Zaretskii <eliz@gnu.org>
parents: 74618
diff changeset
9234 }
29317
2d3d5bf49d4e Format and doc changes to bring closer to xfns.c.
Jason Rumney <jasonr@gnu.org>
parents: 29021
diff changeset
9235 #endif
2d3d5bf49d4e Format and doc changes to bring closer to xfns.c.
Jason Rumney <jasonr@gnu.org>
parents: 29021
diff changeset
9236
33387
01a10bc04233 (Qw32_charset_hangeul): Rename to match w32 headers.
Jason Rumney <jasonr@gnu.org>
parents: 33216
diff changeset
9237 #if 0 /* TODO: Port to W32 */
27397
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
9238 defsubr (&Sx_change_window_property);
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
9239 defsubr (&Sx_delete_window_property);
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
9240 defsubr (&Sx_window_property);
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
9241 #endif
26729
f5dded41adcc Changes for automatic remapping of X colors on terminal frames:
Eli Zaretskii <eliz@gnu.org>
parents: 25646
diff changeset
9242 defsubr (&Sxw_display_color_p);
13434
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
9243 defsubr (&Sx_display_grayscale_p);
26729
f5dded41adcc Changes for automatic remapping of X colors on terminal frames:
Eli Zaretskii <eliz@gnu.org>
parents: 25646
diff changeset
9244 defsubr (&Sxw_color_defined_p);
f5dded41adcc Changes for automatic remapping of X colors on terminal frames:
Eli Zaretskii <eliz@gnu.org>
parents: 25646
diff changeset
9245 defsubr (&Sxw_color_values);
13434
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
9246 defsubr (&Sx_server_max_request_size);
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
9247 defsubr (&Sx_server_vendor);
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
9248 defsubr (&Sx_server_version);
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
9249 defsubr (&Sx_display_pixel_width);
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
9250 defsubr (&Sx_display_pixel_height);
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
9251 defsubr (&Sx_display_mm_width);
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
9252 defsubr (&Sx_display_mm_height);
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
9253 defsubr (&Sx_display_screens);
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
9254 defsubr (&Sx_display_planes);
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
9255 defsubr (&Sx_display_color_cells);
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
9256 defsubr (&Sx_display_visual_class);
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
9257 defsubr (&Sx_display_backing_store);
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
9258 defsubr (&Sx_display_save_under);
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
9259 defsubr (&Sx_create_frame);
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
9260 defsubr (&Sx_open_connection);
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
9261 defsubr (&Sx_close_connection);
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
9262 defsubr (&Sx_display_list);
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
9263 defsubr (&Sx_synchronize);
84630
4197a953442f (Fx_focus_frame): Rename from Fw32_focus_frame.
Jason Rumney <jasonr@gnu.org>
parents: 83878
diff changeset
9264 defsubr (&Sx_focus_frame);
13434
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
9265
16588
481b7874a1e9 Change identifiers of the form win32* to w32*.
Geoff Voelker <voelker@cs.washington.edu>
parents: 16259
diff changeset
9266 /* W32 specific functions */
481b7874a1e9 Change identifiers of the form win32* to w32*.
Geoff Voelker <voelker@cs.washington.edu>
parents: 16259
diff changeset
9267
481b7874a1e9 Change identifiers of the form win32* to w32*.
Geoff Voelker <voelker@cs.washington.edu>
parents: 16259
diff changeset
9268 defsubr (&Sw32_define_rgb_color);
481b7874a1e9 Change identifiers of the form win32* to w32*.
Geoff Voelker <voelker@cs.washington.edu>
parents: 16259
diff changeset
9269 defsubr (&Sw32_default_color_map);
481b7874a1e9 Change identifiers of the form win32* to w32*.
Geoff Voelker <voelker@cs.washington.edu>
parents: 16259
diff changeset
9270 defsubr (&Sw32_load_color_file);
19707
0181cc080316 Include limits.h and errno.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18508
diff changeset
9271 defsubr (&Sw32_send_sys_command);
24670
045e247575d9 [andrewi]
Andrew Innes <andrewi@gnu.org>
parents: 24583
diff changeset
9272 defsubr (&Sw32_shell_execute);
23681
af0276da2059 (Vw32_pass_optional_keys_to_system): Variable removed.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23637
diff changeset
9273 defsubr (&Sw32_register_hot_key);
af0276da2059 (Vw32_pass_optional_keys_to_system): Variable removed.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23637
diff changeset
9274 defsubr (&Sw32_unregister_hot_key);
af0276da2059 (Vw32_pass_optional_keys_to_system): Variable removed.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23637
diff changeset
9275 defsubr (&Sw32_registered_hot_keys);
af0276da2059 (Vw32_pass_optional_keys_to_system): Variable removed.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23637
diff changeset
9276 defsubr (&Sw32_reconstruct_hot_key);
23803
f112aa8f8f5d (Vw32_phantom_key_code): New variable.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23801
diff changeset
9277 defsubr (&Sw32_toggle_lock_key);
74661
0b62ec4c4929 (w32-window-exists-p): New function.
Eli Zaretskii <eliz@gnu.org>
parents: 74618
diff changeset
9278 defsubr (&Sw32_window_exists_p);
94917
e61553aa7a73 Throughout the file, delete all USE_FONT_BACKEND
Kenichi Handa <handa@m17n.org>
parents: 94618
diff changeset
9279 #if OLD_FONT
24147
c83b0bc4e8b9 (Vw32_bdf_filename_alist): New variable.
Geoff Voelker <voelker@cs.washington.edu>
parents: 24130
diff changeset
9280 defsubr (&Sw32_find_bdf_fonts);
94917
e61553aa7a73 Throughout the file, delete all USE_FONT_BACKEND
Kenichi Handa <handa@m17n.org>
parents: 94618
diff changeset
9281 #endif
94447
45acd5e62f88 (Fw32_battery_status): New defun.
Jason Rumney <jasonr@gnu.org>
parents: 94432
diff changeset
9282 defsubr (&Sw32_battery_status);
23506
246a14f0622f (Vx_pixel_size_width): New global variable.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23407
diff changeset
9283
34643
7108531c744b (Ffile_system_info): New function.
Andrew Innes <andrewi@gnu.org>
parents: 34638
diff changeset
9284 defsubr (&Sfile_system_info);
53739
5456cd83c404 * makefile.w32-in, w32fns.c: Add `default-printer-name' function.
Jason Rumney <jasonr@gnu.org>
parents: 53332
diff changeset
9285 defsubr (&Sdefault_printer_name);
34643
7108531c744b (Ffile_system_info): New function.
Andrew Innes <andrewi@gnu.org>
parents: 34638
diff changeset
9286
94917
e61553aa7a73 Throughout the file, delete all USE_FONT_BACKEND
Kenichi Handa <handa@m17n.org>
parents: 94618
diff changeset
9287 #if OLD_FONT
23506
246a14f0622f (Vx_pixel_size_width): New global variable.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23407
diff changeset
9288 /* Setting callback functions for fontset handler. */
246a14f0622f (Vx_pixel_size_width): New global variable.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23407
diff changeset
9289 get_font_info_func = w32_get_font_info;
27397
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
9290
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
9291 #if 0 /* This function pointer doesn't seem to be used anywhere.
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
9292 And the pointer assigned has the wrong type, anyway. */
23506
246a14f0622f (Vx_pixel_size_width): New global variable.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23407
diff changeset
9293 list_fonts_func = w32_list_fonts;
27397
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
9294 #endif
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
9295
23506
246a14f0622f (Vx_pixel_size_width): New global variable.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23407
diff changeset
9296 load_font_func = w32_load_font;
246a14f0622f (Vx_pixel_size_width): New global variable.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23407
diff changeset
9297 find_ccl_program_func = w32_find_ccl_program;
246a14f0622f (Vx_pixel_size_width): New global variable.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23407
diff changeset
9298 query_font_func = w32_query_font;
246a14f0622f (Vx_pixel_size_width): New global variable.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23407
diff changeset
9299 set_frame_fontset_func = x_set_font;
89585
f89c9d4bd81c (Fx_create_frame, x_create_tip_frame): Use new version of x_new_fontset.
Jason Rumney <jasonr@gnu.org>
parents: 88123
diff changeset
9300 get_font_repertory_func = x_get_font_repertory;
94917
e61553aa7a73 Throughout the file, delete all USE_FONT_BACKEND
Kenichi Handa <handa@m17n.org>
parents: 94618
diff changeset
9301 #endif
23506
246a14f0622f (Vx_pixel_size_width): New global variable.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23407
diff changeset
9302 check_window_system_func = check_w32;
27397
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
9303
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
9304
93075
66248fc5b523 * w32fns.c (hourglass_timer, hourglass_hwnd): New variables.
Jason Rumney <jasonr@gnu.org>
parents: 92940
diff changeset
9305 hourglass_timer = 0;
66248fc5b523 * w32fns.c (hourglass_timer, hourglass_hwnd): New variables.
Jason Rumney <jasonr@gnu.org>
parents: 92940
diff changeset
9306 hourglass_hwnd = NULL;
36252
a8630c63f7d5 Rename everything containing *busy_cursor* and similar
Gerd Moellmann <gerd@gnu.org>
parents: 36080
diff changeset
9307 hourglass_shown_p = 0;
27397
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
9308 defsubr (&Sx_show_tip);
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
9309 defsubr (&Sx_hide_tip);
34729
3dc60d80125f (syms_of_w32fns): Initialize and staticpro tip_frame.
Jason Rumney <jasonr@gnu.org>
parents: 34698
diff changeset
9310 tip_timer = Qnil;
27397
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
9311 staticpro (&tip_timer);
34729
3dc60d80125f (syms_of_w32fns): Initialize and staticpro tip_frame.
Jason Rumney <jasonr@gnu.org>
parents: 34698
diff changeset
9312 tip_frame = Qnil;
3dc60d80125f (syms_of_w32fns): Initialize and staticpro tip_frame.
Jason Rumney <jasonr@gnu.org>
parents: 34698
diff changeset
9313 staticpro (&tip_frame);
27397
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
9314
41380
aff1b15f295b (x_window_to_frame): Remove irrelevant TODO comment.
Jason Rumney <jasonr@gnu.org>
parents: 41322
diff changeset
9315 last_show_tip_args = Qnil;
aff1b15f295b (x_window_to_frame): Remove irrelevant TODO comment.
Jason Rumney <jasonr@gnu.org>
parents: 41322
diff changeset
9316 staticpro (&last_show_tip_args);
aff1b15f295b (x_window_to_frame): Remove irrelevant TODO comment.
Jason Rumney <jasonr@gnu.org>
parents: 41322
diff changeset
9317
27397
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
9318 defsubr (&Sx_file_dialog);
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
9319 }
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
9320
49494
07f0ea120d7d (init_external_image_libraries): Try alternate names for the jpeg dll.
Juanma Barranquero <lekktu@gmail.com>
parents: 49455
diff changeset
9321
48888
f0df5f687c15 Revisited my earlier fix for the following entry in etc/PROBLEMS: 'Emacs built on Windows 9x/ME crashes at startup on Windows XP, or Emacs builtpart of on XP crashes at startup on Windows 9x/ME.' Fixed several Windows API errors detected by BoundsChecker
Ben Key <bkey1@tampabay.rr.com>
parents: 48483
diff changeset
9322 /*
f0df5f687c15 Revisited my earlier fix for the following entry in etc/PROBLEMS: 'Emacs built on Windows 9x/ME crashes at startup on Windows XP, or Emacs builtpart of on XP crashes at startup on Windows 9x/ME.' Fixed several Windows API errors detected by BoundsChecker
Ben Key <bkey1@tampabay.rr.com>
parents: 48483
diff changeset
9323 globals_of_w32fns is used to initialize those global variables that
f0df5f687c15 Revisited my earlier fix for the following entry in etc/PROBLEMS: 'Emacs built on Windows 9x/ME crashes at startup on Windows XP, or Emacs builtpart of on XP crashes at startup on Windows 9x/ME.' Fixed several Windows API errors detected by BoundsChecker
Ben Key <bkey1@tampabay.rr.com>
parents: 48483
diff changeset
9324 must always be initialized on startup even when the global variable
f0df5f687c15 Revisited my earlier fix for the following entry in etc/PROBLEMS: 'Emacs built on Windows 9x/ME crashes at startup on Windows XP, or Emacs builtpart of on XP crashes at startup on Windows 9x/ME.' Fixed several Windows API errors detected by BoundsChecker
Ben Key <bkey1@tampabay.rr.com>
parents: 48483
diff changeset
9325 initialized is non zero (see the function main in emacs.c).
f0df5f687c15 Revisited my earlier fix for the following entry in etc/PROBLEMS: 'Emacs built on Windows 9x/ME crashes at startup on Windows XP, or Emacs builtpart of on XP crashes at startup on Windows 9x/ME.' Fixed several Windows API errors detected by BoundsChecker
Ben Key <bkey1@tampabay.rr.com>
parents: 48483
diff changeset
9326 globals_of_w32fns is called from syms_of_w32fns when the global
f0df5f687c15 Revisited my earlier fix for the following entry in etc/PROBLEMS: 'Emacs built on Windows 9x/ME crashes at startup on Windows XP, or Emacs builtpart of on XP crashes at startup on Windows 9x/ME.' Fixed several Windows API errors detected by BoundsChecker
Ben Key <bkey1@tampabay.rr.com>
parents: 48483
diff changeset
9327 variable initialized is 0 and directly from main when initialized
f0df5f687c15 Revisited my earlier fix for the following entry in etc/PROBLEMS: 'Emacs built on Windows 9x/ME crashes at startup on Windows XP, or Emacs builtpart of on XP crashes at startup on Windows 9x/ME.' Fixed several Windows API errors detected by BoundsChecker
Ben Key <bkey1@tampabay.rr.com>
parents: 48483
diff changeset
9328 is non zero.
f0df5f687c15 Revisited my earlier fix for the following entry in etc/PROBLEMS: 'Emacs built on Windows 9x/ME crashes at startup on Windows XP, or Emacs builtpart of on XP crashes at startup on Windows 9x/ME.' Fixed several Windows API errors detected by BoundsChecker
Ben Key <bkey1@tampabay.rr.com>
parents: 48483
diff changeset
9329 */
79387
0ca197abc593 (Fw32_registered_hot_keys): Don't return the nil values corresponding
Juanma Barranquero <lekktu@gmail.com>
parents: 79381
diff changeset
9330 void
0ca197abc593 (Fw32_registered_hot_keys): Don't return the nil values corresponding
Juanma Barranquero <lekktu@gmail.com>
parents: 79381
diff changeset
9331 globals_of_w32fns ()
48888
f0df5f687c15 Revisited my earlier fix for the following entry in etc/PROBLEMS: 'Emacs built on Windows 9x/ME crashes at startup on Windows XP, or Emacs builtpart of on XP crashes at startup on Windows 9x/ME.' Fixed several Windows API errors detected by BoundsChecker
Ben Key <bkey1@tampabay.rr.com>
parents: 48483
diff changeset
9332 {
f0df5f687c15 Revisited my earlier fix for the following entry in etc/PROBLEMS: 'Emacs built on Windows 9x/ME crashes at startup on Windows XP, or Emacs builtpart of on XP crashes at startup on Windows 9x/ME.' Fixed several Windows API errors detected by BoundsChecker
Ben Key <bkey1@tampabay.rr.com>
parents: 48483
diff changeset
9333 HMODULE user32_lib = GetModuleHandle ("user32.dll");
51776
6a03280c654a (clipboard_sequence_fn): New variable.
Jason Rumney <jasonr@gnu.org>
parents: 51763
diff changeset
9334 /*
6a03280c654a (clipboard_sequence_fn): New variable.
Jason Rumney <jasonr@gnu.org>
parents: 51763
diff changeset
9335 TrackMouseEvent not available in all versions of Windows, so must load
6a03280c654a (clipboard_sequence_fn): New variable.
Jason Rumney <jasonr@gnu.org>
parents: 51763
diff changeset
9336 it dynamically. Do it once, here, instead of every time it is used.
48888
f0df5f687c15 Revisited my earlier fix for the following entry in etc/PROBLEMS: 'Emacs built on Windows 9x/ME crashes at startup on Windows XP, or Emacs builtpart of on XP crashes at startup on Windows 9x/ME.' Fixed several Windows API errors detected by BoundsChecker
Ben Key <bkey1@tampabay.rr.com>
parents: 48483
diff changeset
9337 */
51776
6a03280c654a (clipboard_sequence_fn): New variable.
Jason Rumney <jasonr@gnu.org>
parents: 51763
diff changeset
9338 track_mouse_event_fn = (TrackMouseEvent_Proc)
6a03280c654a (clipboard_sequence_fn): New variable.
Jason Rumney <jasonr@gnu.org>
parents: 51763
diff changeset
9339 GetProcAddress (user32_lib, "TrackMouseEvent");
6a03280c654a (clipboard_sequence_fn): New variable.
Jason Rumney <jasonr@gnu.org>
parents: 51763
diff changeset
9340 /* ditto for GetClipboardSequenceNumber. */
6a03280c654a (clipboard_sequence_fn): New variable.
Jason Rumney <jasonr@gnu.org>
parents: 51763
diff changeset
9341 clipboard_sequence_fn = (ClipboardSequence_Proc)
6a03280c654a (clipboard_sequence_fn): New variable.
Jason Rumney <jasonr@gnu.org>
parents: 51763
diff changeset
9342 GetProcAddress (user32_lib, "GetClipboardSequenceNumber");
92935
c99b62a964c4 (MONITOR_DEFAULT_TO_NEAREST, struct MONITOR_INFO)
Jason Rumney <jasonr@gnu.org>
parents: 92362
diff changeset
9343
c99b62a964c4 (MONITOR_DEFAULT_TO_NEAREST, struct MONITOR_INFO)
Jason Rumney <jasonr@gnu.org>
parents: 92362
diff changeset
9344 monitor_from_point_fn = (MonitorFromPoint_Proc)
c99b62a964c4 (MONITOR_DEFAULT_TO_NEAREST, struct MONITOR_INFO)
Jason Rumney <jasonr@gnu.org>
parents: 92362
diff changeset
9345 GetProcAddress (user32_lib, "MonitorFromPoint");
c99b62a964c4 (MONITOR_DEFAULT_TO_NEAREST, struct MONITOR_INFO)
Jason Rumney <jasonr@gnu.org>
parents: 92362
diff changeset
9346 get_monitor_info_fn = (GetMonitorInfo_Proc)
c99b62a964c4 (MONITOR_DEFAULT_TO_NEAREST, struct MONITOR_INFO)
Jason Rumney <jasonr@gnu.org>
parents: 92362
diff changeset
9347 GetProcAddress (user32_lib, "GetMonitorInfoA");
c99b62a964c4 (MONITOR_DEFAULT_TO_NEAREST, struct MONITOR_INFO)
Jason Rumney <jasonr@gnu.org>
parents: 92362
diff changeset
9348
91099
8bbec66c0718 Include imm.h.
Jason Rumney <jasonr@gnu.org>
parents: 91085
diff changeset
9349 {
8bbec66c0718 Include imm.h.
Jason Rumney <jasonr@gnu.org>
parents: 91085
diff changeset
9350 HMODULE imm32_lib = GetModuleHandle ("imm32.dll");
8bbec66c0718 Include imm.h.
Jason Rumney <jasonr@gnu.org>
parents: 91085
diff changeset
9351 get_composition_string_fn = (ImmGetCompositionString_Proc)
8bbec66c0718 Include imm.h.
Jason Rumney <jasonr@gnu.org>
parents: 91085
diff changeset
9352 GetProcAddress (imm32_lib, "ImmGetCompositionStringW");
8bbec66c0718 Include imm.h.
Jason Rumney <jasonr@gnu.org>
parents: 91085
diff changeset
9353 get_ime_context_fn = (ImmGetContext_Proc)
8bbec66c0718 Include imm.h.
Jason Rumney <jasonr@gnu.org>
parents: 91085
diff changeset
9354 GetProcAddress (imm32_lib, "ImmGetContext");
8bbec66c0718 Include imm.h.
Jason Rumney <jasonr@gnu.org>
parents: 91085
diff changeset
9355 }
55468
f13a7f45ce0f (Vw32_ansi_code_page): New Lisp variable.
Jason Rumney <jasonr@gnu.org>
parents: 54336
diff changeset
9356 DEFVAR_INT ("w32-ansi-code-page",
55656
29b250a07fe0 (Fw32_register_hot_key, Fw32_unregister_hot_key)
Jason Rumney <jasonr@gnu.org>
parents: 55592
diff changeset
9357 &w32_ansi_code_page,
55468
f13a7f45ce0f (Vw32_ansi_code_page): New Lisp variable.
Jason Rumney <jasonr@gnu.org>
parents: 54336
diff changeset
9358 doc: /* The ANSI code page used by the system. */);
55656
29b250a07fe0 (Fw32_register_hot_key, Fw32_unregister_hot_key)
Jason Rumney <jasonr@gnu.org>
parents: 55592
diff changeset
9359 w32_ansi_code_page = GetACP ();
78907
90bd4f87874a (globals_of_w32fns): Init common controls.
Jason Rumney <jasonr@gnu.org>
parents: 78260
diff changeset
9360
90bd4f87874a (globals_of_w32fns): Init common controls.
Jason Rumney <jasonr@gnu.org>
parents: 78260
diff changeset
9361 /* MessageBox does not work without this when linked to comctl32.dll 6.0. */
90bd4f87874a (globals_of_w32fns): Init common controls.
Jason Rumney <jasonr@gnu.org>
parents: 78260
diff changeset
9362 InitCommonControls ();
93599
a67af10a545c (uniscribe_font_driver) [WINDOWSNT]: Declare for w32fns.c.
Jason Rumney <jasonr@gnu.org>
parents: 93319
diff changeset
9363
a67af10a545c (uniscribe_font_driver) [WINDOWSNT]: Declare for w32fns.c.
Jason Rumney <jasonr@gnu.org>
parents: 93319
diff changeset
9364 syms_of_w32uniscribe ();
48888
f0df5f687c15 Revisited my earlier fix for the following entry in etc/PROBLEMS: 'Emacs built on Windows 9x/ME crashes at startup on Windows XP, or Emacs builtpart of on XP crashes at startup on Windows 9x/ME.' Fixed several Windows API errors detected by BoundsChecker
Ben Key <bkey1@tampabay.rr.com>
parents: 48483
diff changeset
9365 }
f0df5f687c15 Revisited my earlier fix for the following entry in etc/PROBLEMS: 'Emacs built on Windows 9x/ME crashes at startup on Windows XP, or Emacs builtpart of on XP crashes at startup on Windows 9x/ME.' Fixed several Windows API errors detected by BoundsChecker
Ben Key <bkey1@tampabay.rr.com>
parents: 48483
diff changeset
9366
13434
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
9367 #undef abort
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
9368
47942
080b4586492b Fix typo in comment.
Juanma Barranquero <lekktu@gmail.com>
parents: 47731
diff changeset
9369 void
79387
0ca197abc593 (Fw32_registered_hot_keys): Don't return the nil values corresponding
Juanma Barranquero <lekktu@gmail.com>
parents: 79381
diff changeset
9370 w32_abort ()
13434
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
9371 {
15147
38c0ce06203f (quit_char, Vwin32_enable_italics, Vwin32_enable_palette):
Geoff Voelker <voelker@cs.washington.edu>
parents: 15034
diff changeset
9372 int button;
38c0ce06203f (quit_char, Vwin32_enable_italics, Vwin32_enable_palette):
Geoff Voelker <voelker@cs.washington.edu>
parents: 15034
diff changeset
9373 button = MessageBox (NULL,
38c0ce06203f (quit_char, Vwin32_enable_italics, Vwin32_enable_palette):
Geoff Voelker <voelker@cs.washington.edu>
parents: 15034
diff changeset
9374 "A fatal error has occurred!\n\n"
63340
1cd9a44aa129 (w32_abort): Use the MB_YESNO dialog instead of
Eli Zaretskii <eliz@gnu.org>
parents: 63297
diff changeset
9375 "Would you like to attach a debugger?\n\n"
67438
2e919998931e (w32_abort) [__GNUC__]: Add instructions for attaching GDB to the abort dialog.
Eli Zaretskii <eliz@gnu.org>
parents: 67269
diff changeset
9376 "Select YES to debug, NO to abort Emacs"
2e919998931e (w32_abort) [__GNUC__]: Add instructions for attaching GDB to the abort dialog.
Eli Zaretskii <eliz@gnu.org>
parents: 67269
diff changeset
9377 #if __GNUC__
2e919998931e (w32_abort) [__GNUC__]: Add instructions for attaching GDB to the abort dialog.
Eli Zaretskii <eliz@gnu.org>
parents: 67269
diff changeset
9378 "\n\n(type \"gdb -p <emacs-PID>\" and\n"
2e919998931e (w32_abort) [__GNUC__]: Add instructions for attaching GDB to the abort dialog.
Eli Zaretskii <eliz@gnu.org>
parents: 67269
diff changeset
9379 "\"continue\" inside GDB before clicking YES.)"
2e919998931e (w32_abort) [__GNUC__]: Add instructions for attaching GDB to the abort dialog.
Eli Zaretskii <eliz@gnu.org>
parents: 67269
diff changeset
9380 #endif
2e919998931e (w32_abort) [__GNUC__]: Add instructions for attaching GDB to the abort dialog.
Eli Zaretskii <eliz@gnu.org>
parents: 67269
diff changeset
9381 , "Emacs Abort Dialog",
15147
38c0ce06203f (quit_char, Vwin32_enable_italics, Vwin32_enable_palette):
Geoff Voelker <voelker@cs.washington.edu>
parents: 15034
diff changeset
9382 MB_ICONEXCLAMATION | MB_TASKMODAL
63340
1cd9a44aa129 (w32_abort): Use the MB_YESNO dialog instead of
Eli Zaretskii <eliz@gnu.org>
parents: 63297
diff changeset
9383 | MB_SETFOREGROUND | MB_YESNO);
15147
38c0ce06203f (quit_char, Vwin32_enable_italics, Vwin32_enable_palette):
Geoff Voelker <voelker@cs.washington.edu>
parents: 15034
diff changeset
9384 switch (button)
38c0ce06203f (quit_char, Vwin32_enable_italics, Vwin32_enable_palette):
Geoff Voelker <voelker@cs.washington.edu>
parents: 15034
diff changeset
9385 {
63340
1cd9a44aa129 (w32_abort): Use the MB_YESNO dialog instead of
Eli Zaretskii <eliz@gnu.org>
parents: 63297
diff changeset
9386 case IDYES:
15147
38c0ce06203f (quit_char, Vwin32_enable_italics, Vwin32_enable_palette):
Geoff Voelker <voelker@cs.washington.edu>
parents: 15034
diff changeset
9387 DebugBreak ();
63340
1cd9a44aa129 (w32_abort): Use the MB_YESNO dialog instead of
Eli Zaretskii <eliz@gnu.org>
parents: 63297
diff changeset
9388 exit (2); /* tell the compiler we will never return */
1cd9a44aa129 (w32_abort): Use the MB_YESNO dialog instead of
Eli Zaretskii <eliz@gnu.org>
parents: 63297
diff changeset
9389 case IDNO:
15147
38c0ce06203f (quit_char, Vwin32_enable_italics, Vwin32_enable_palette):
Geoff Voelker <voelker@cs.washington.edu>
parents: 15034
diff changeset
9390 default:
38c0ce06203f (quit_char, Vwin32_enable_italics, Vwin32_enable_palette):
Geoff Voelker <voelker@cs.washington.edu>
parents: 15034
diff changeset
9391 abort ();
38c0ce06203f (quit_char, Vwin32_enable_italics, Vwin32_enable_palette):
Geoff Voelker <voelker@cs.washington.edu>
parents: 15034
diff changeset
9392 break;
38c0ce06203f (quit_char, Vwin32_enable_italics, Vwin32_enable_palette):
Geoff Voelker <voelker@cs.washington.edu>
parents: 15034
diff changeset
9393 }
13434
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
9394 }
15148
220145cf7546 (continuation of previous checkin)
Geoff Voelker <voelker@cs.washington.edu>
parents: 15147
diff changeset
9395
23801
119fd94ae526 (w32_last_error): Fix cut+paste error.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23681
diff changeset
9396 /* For convenience when debugging. */
119fd94ae526 (w32_last_error): Fix cut+paste error.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23681
diff changeset
9397 int
79387
0ca197abc593 (Fw32_registered_hot_keys): Don't return the nil values corresponding
Juanma Barranquero <lekktu@gmail.com>
parents: 79381
diff changeset
9398 w32_last_error ()
23801
119fd94ae526 (w32_last_error): Fix cut+paste error.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23681
diff changeset
9399 {
119fd94ae526 (w32_last_error): Fix cut+paste error.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23681
diff changeset
9400 return GetLastError ();
119fd94ae526 (w32_last_error): Fix cut+paste error.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23681
diff changeset
9401 }
52401
695cf19ef79e Add arch taglines
Miles Bader <miles@gnu.org>
parents: 52351
diff changeset
9402
695cf19ef79e Add arch taglines
Miles Bader <miles@gnu.org>
parents: 52351
diff changeset
9403 /* arch-tag: 707589ab-b9be-4638-8cdd-74629cc9b446
695cf19ef79e Add arch taglines
Miles Bader <miles@gnu.org>
parents: 52351
diff changeset
9404 (do not change this comment) */