annotate src/w32fns.c @ 110982:2b3bece0553a

merge emacs-23
author Kenichi Handa <handa@m17n.org>
date Tue, 12 Oct 2010 21:41:18 +0900
parents 2cf388f16cae
children df8e0cd18128 734b2470f93c
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,
106815
1d1d5d9bd884 Add 2010 to copyright years.
Glenn Morris <rgm@gnu.org>
parents: 105877
diff changeset
3 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010
79759
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>
105669
68dd71358159 * alloc.c: Do not define struct catchtag.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 105374
diff changeset
30 #include <setjmp.h>
13434
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
31
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
32 #include "lisp.h"
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
33 #include "w32term.h"
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
34 #include "frame.h"
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
35 #include "window.h"
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
36 #include "buffer.h"
27397
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
37 #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
38 #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
39 #include "keyboard.h"
13434
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
40 #include "blockinput.h"
24412
d11ac02f9d6a Use epaths.h istead of paths.h.
Richard M. Stallman <rms@gnu.org>
parents: 24339
diff changeset
41 #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
42 #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
43 #include "charset.h"
23506
246a14f0622f (Vx_pixel_size_width): New global variable.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23407
diff changeset
44 #include "coding.h"
25069
ee9bfbc340ba (w32_find_ccl_program): Get compiled CCL code by just
Kenichi Handa <handa@m17n.org>
parents: 24856
diff changeset
45 #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
46 #include "fontset.h"
27397
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
47 #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
48 #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
49 #include "w32heap.h"
108496
49f3d201fdd0 Backport from trunk: Fix bug #6126.
Eli Zaretskii <eliz@gnu.org>
parents: 107753
diff changeset
50 #include "w32.h"
27397
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
51
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
52 #include "bitmaps/gray.xbm"
13434
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
53
78907
90bd4f87874a (globals_of_w32fns): Init common controls.
Jason Rumney <jasonr@gnu.org>
parents: 78260
diff changeset
54 #include <commctrl.h>
13434
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
55 #include <commdlg.h>
21884
bc4455bca454 Include shellapi.h.
Richard M. Stallman <rms@gnu.org>
parents: 21874
diff changeset
56 #include <shellapi.h>
27397
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
57 #include <ctype.h>
53739
5456cd83c404 * makefile.w32-in, w32fns.c: Add `default-printer-name' function.
Jason Rumney <jasonr@gnu.org>
parents: 53332
diff changeset
58 #include <winspool.h>
78106
f9eb7f243bdc (w32_msg_pump) <WM_EMACS_CREATEWINDOW>: Initialize COM.
Jason Rumney <jasonr@gnu.org>
parents: 77995
diff changeset
59 #include <objbase.h>
27397
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
60
45963
e4d2d8c8186f (file_dialog_callback): New function.
Jason Rumney <jasonr@gnu.org>
parents: 45465
diff changeset
61 #include <dlgs.h>
91099
8bbec66c0718 Include imm.h.
Jason Rumney <jasonr@gnu.org>
parents: 91085
diff changeset
62 #include <imm.h>
45963
e4d2d8c8186f (file_dialog_callback): New function.
Jason Rumney <jasonr@gnu.org>
parents: 45465
diff changeset
63 #define FILE_NAME_TEXT_FIELD edt1
e4d2d8c8186f (file_dialog_callback): New function.
Jason Rumney <jasonr@gnu.org>
parents: 45465
diff changeset
64
90865
6d2559699bd0 [USE_FONT_BACKEND]: Port font backend changes from xfns.c.
Jason Rumney <jasonr@gnu.org>
parents: 90796
diff changeset
65 #include "font.h"
94917
e61553aa7a73 Throughout the file, delete all USE_FONT_BACKEND
Kenichi Handa <handa@m17n.org>
parents: 94618
diff changeset
66 #include "w32font.h"
90865
6d2559699bd0 [USE_FONT_BACKEND]: Port font backend changes from xfns.c.
Jason Rumney <jasonr@gnu.org>
parents: 90796
diff changeset
67
96489
b76b9628d74f Changes from Toru Tsuneyoshi for using Trash can when deleting files.
Jason Rumney <jasonr@gnu.org>
parents: 96403
diff changeset
68 #ifndef FOF_NO_CONNECTED_ELEMENTS
b76b9628d74f Changes from Toru Tsuneyoshi for using Trash can when deleting files.
Jason Rumney <jasonr@gnu.org>
parents: 96403
diff changeset
69 #define FOF_NO_CONNECTED_ELEMENTS 0x2000
b76b9628d74f Changes from Toru Tsuneyoshi for using Trash can when deleting files.
Jason Rumney <jasonr@gnu.org>
parents: 96403
diff changeset
70 #endif
b76b9628d74f Changes from Toru Tsuneyoshi for using Trash can when deleting files.
Jason Rumney <jasonr@gnu.org>
parents: 96403
diff changeset
71
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
72 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
73 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
74
13434
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
75 extern void free_frame_menubar ();
27397
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
76 extern double atof ();
41732
0d9b74cd27cd (trackmouse_window, track_mouse_event_fn): New vars.
Jason Rumney <jasonr@gnu.org>
parents: 41726
diff changeset
77 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
78 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
79 extern void w32_free_menu_strings P_ ((HWND));
96538
187f69369145 * w32fns.c (map_w32_filename): Declare extern.
Juanma Barranquero <lekktu@gmail.com>
parents: 96489
diff changeset
80 extern const char *map_w32_filename P_ ((const char *, const char **));
41732
0d9b74cd27cd (trackmouse_window, track_mouse_event_fn): New vars.
Jason Rumney <jasonr@gnu.org>
parents: 41726
diff changeset
81
15147
38c0ce06203f (quit_char, Vwin32_enable_italics, Vwin32_enable_palette):
Geoff Voelker <voelker@cs.washington.edu>
parents: 15034
diff changeset
82 extern int quit_char;
13434
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
83
23681
af0276da2059 (Vw32_pass_optional_keys_to_system): Variable removed.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23637
diff changeset
84 extern char *lispy_function_keys[];
af0276da2059 (Vw32_pass_optional_keys_to_system): Variable removed.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23637
diff changeset
85
13434
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
86 /* 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
87 Lisp_Object Vw32_color_map;
13434
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
88
14810
4dd6867765b9 (Vwin32_pass_alt_to_system,
Geoff Voelker <voelker@cs.washington.edu>
parents: 14461
diff changeset
89 /* 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
90 Lisp_Object Vw32_pass_alt_to_system;
14810
4dd6867765b9 (Vwin32_pass_alt_to_system,
Geoff Voelker <voelker@cs.washington.edu>
parents: 14461
diff changeset
91
15459
76ff60cd2b8d (Vwin32_alt_is_meta): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 15434
diff changeset
92 /* 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
93 to alt_modifier. */
16588
481b7874a1e9 Change identifiers of the form win32* to w32*.
Geoff Voelker <voelker@cs.washington.edu>
parents: 16259
diff changeset
94 Lisp_Object Vw32_alt_is_meta;
15459
76ff60cd2b8d (Vwin32_alt_is_meta): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 15434
diff changeset
95
24339
e8b73c2ac4ec (Vw32_quit_key): New variable.
Andrew Innes <andrewi@gnu.org>
parents: 24252
diff changeset
96 /* 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
97 int w32_quit_key;
24339
e8b73c2ac4ec (Vw32_quit_key): New variable.
Andrew Innes <andrewi@gnu.org>
parents: 24252
diff changeset
98
23681
af0276da2059 (Vw32_pass_optional_keys_to_system): Variable removed.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23637
diff changeset
99 /* 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
100 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_lwindow_to_system;
af0276da2059 (Vw32_pass_optional_keys_to_system): Variable removed.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23637
diff changeset
102
af0276da2059 (Vw32_pass_optional_keys_to_system): Variable removed.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23637
diff changeset
103 /* 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
104 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
105 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
106
23803
f112aa8f8f5d (Vw32_phantom_key_code): New variable.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23801
diff changeset
107 /* 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
108 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
109 Lisp_Object Vw32_phantom_key_code;
f112aa8f8f5d (Vw32_phantom_key_code): New variable.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23801
diff changeset
110
23681
af0276da2059 (Vw32_pass_optional_keys_to_system): Variable removed.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23637
diff changeset
111 /* 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
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_lwindow_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 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
116 normal key. */
af0276da2059 (Vw32_pass_optional_keys_to_system): Variable removed.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23637
diff changeset
117 Lisp_Object Vw32_rwindow_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 /* 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
120 key. */
af0276da2059 (Vw32_pass_optional_keys_to_system): Variable removed.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23637
diff changeset
121 Lisp_Object Vw32_apps_modifier;
af0276da2059 (Vw32_pass_optional_keys_to_system): Variable removed.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23637
diff changeset
122
af0276da2059 (Vw32_pass_optional_keys_to_system): Variable removed.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23637
diff changeset
123 /* 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
124 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
125
af0276da2059 (Vw32_pass_optional_keys_to_system): Variable removed.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23637
diff changeset
126 /* 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
127 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
128
af0276da2059 (Vw32_pass_optional_keys_to_system): Variable removed.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23637
diff changeset
129 /* 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
130 Lisp_Object Vw32_scroll_lock_modifier;
14810
4dd6867765b9 (Vwin32_pass_alt_to_system,
Geoff Voelker <voelker@cs.washington.edu>
parents: 14461
diff changeset
131
27894
6c4ff3519d09 (w32_wnd_proc) [WM_LBUTTON_DOWN, WM_RBUTTON_DOWN, WM_LBUTTON_UP,
Jason Rumney <jasonr@gnu.org>
parents: 27516
diff changeset
132 /* 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
133 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
134 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
135
38c0ce06203f (quit_char, Vwin32_enable_italics, Vwin32_enable_palette):
Geoff Voelker <voelker@cs.washington.edu>
parents: 15034
diff changeset
136 /* Enable palette management. */
16588
481b7874a1e9 Change identifiers of the form win32* to w32*.
Geoff Voelker <voelker@cs.washington.edu>
parents: 16259
diff changeset
137 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
138
38c0ce06203f (quit_char, Vwin32_enable_italics, Vwin32_enable_palette):
Geoff Voelker <voelker@cs.washington.edu>
parents: 15034
diff changeset
139 /* 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
140 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
141 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
142
15290
da73440fdb5f (Vwin32_mouse_move_interval): New lisp variable.
Karl Heuer <kwzh@gnu.org>
parents: 15280
diff changeset
143 /* 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
144 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
145 int w32_mouse_move_interval;
15290
da73440fdb5f (Vwin32_mouse_move_interval): New lisp variable.
Karl Heuer <kwzh@gnu.org>
parents: 15280
diff changeset
146
42719
70f13c4f82c7 (w32_pass_extra_mouse_buttons_to_system): New user option.
Jason Rumney <jasonr@gnu.org>
parents: 42537
diff changeset
147 /* 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
148 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
149
85979
bb1f44062552 (w32_pass_multimedia_buttons_to_system): New user option.
Jason Rumney <jasonr@gnu.org>
parents: 85614
diff changeset
150 /* 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
151 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
152
13434
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
153 /* Non nil if no window manager is in use. */
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
154 Lisp_Object Vx_no_window_manager;
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
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
100982
7c89b12c3a26 (Vx_pointer_shape, Vx_nontext_pointer_shape)
Jason Rumney <jasonr@gnu.org>
parents: 100951
diff changeset
161 #if 0 /* TODO: Mouse cursor customization. */
13434
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
162 /* The background and shape of the mouse pointer, and shape when not
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
163 over text or in the modeline. */
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;
100982
7c89b12c3a26 (Vx_pointer_shape, Vx_nontext_pointer_shape)
Jason Rumney <jasonr@gnu.org>
parents: 100951
diff changeset
170 #endif
13434
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
171
49369
5518e109ec3b 2003-01-21 Jason Rumney <jasonr@gnu.org>
Jason Rumney <jasonr@gnu.org>
parents: 49079
diff changeset
172 #ifndef IDC_HAND
5518e109ec3b 2003-01-21 Jason Rumney <jasonr@gnu.org>
Jason Rumney <jasonr@gnu.org>
parents: 49079
diff changeset
173 #define IDC_HAND MAKEINTRESOURCE(32649)
5518e109ec3b 2003-01-21 Jason Rumney <jasonr@gnu.org>
Jason Rumney <jasonr@gnu.org>
parents: 49079
diff changeset
174 #endif
5518e109ec3b 2003-01-21 Jason Rumney <jasonr@gnu.org>
Jason Rumney <jasonr@gnu.org>
parents: 49079
diff changeset
175
13434
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
176 /* Color of chars displayed in cursor box. */
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
13434
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
197 Lisp_Object Qnone;
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
198 Lisp_Object Qsuppress_icon;
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
199 Lisp_Object Qundefined_color;
36000
f4a0b086cc5d (Fx_show_tip): Fix calls to make_number.
Jason Rumney <jasonr@gnu.org>
parents: 35674
diff changeset
200 Lisp_Object Qcancel_timer;
96079
efbaf6995245 * w32fns.c, xfns.c (Qfont_param): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 95894
diff changeset
201 Lisp_Object Qfont_param;
23803
f112aa8f8f5d (Vw32_phantom_key_code): New variable.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23801
diff changeset
202 Lisp_Object Qhyper;
f112aa8f8f5d (Vw32_phantom_key_code): New variable.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23801
diff changeset
203 Lisp_Object Qsuper;
f112aa8f8f5d (Vw32_phantom_key_code): New variable.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23801
diff changeset
204 Lisp_Object Qmeta;
f112aa8f8f5d (Vw32_phantom_key_code): New variable.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23801
diff changeset
205 Lisp_Object Qalt;
f112aa8f8f5d (Vw32_phantom_key_code): New variable.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23801
diff changeset
206 Lisp_Object Qctrl;
f112aa8f8f5d (Vw32_phantom_key_code): New variable.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23801
diff changeset
207 Lisp_Object Qcontrol;
f112aa8f8f5d (Vw32_phantom_key_code): New variable.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23801
diff changeset
208 Lisp_Object Qshift;
f112aa8f8f5d (Vw32_phantom_key_code): New variable.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23801
diff changeset
209
29317
2d3d5bf49d4e Format and doc changes to bring closer to xfns.c.
Jason Rumney <jasonr@gnu.org>
parents: 29021
diff changeset
210
55468
f13a7f45ce0f (Vw32_ansi_code_page): New Lisp variable.
Jason Rumney <jasonr@gnu.org>
parents: 54336
diff changeset
211 /* The ANSI codepage. */
55656
29b250a07fe0 (Fw32_register_hot_key, Fw32_unregister_hot_key)
Jason Rumney <jasonr@gnu.org>
parents: 55592
diff changeset
212 int w32_ansi_code_page;
55468
f13a7f45ce0f (Vw32_ansi_code_page): New Lisp variable.
Jason Rumney <jasonr@gnu.org>
parents: 54336
diff changeset
213
51474
0dbfd1fe2e91 (add_system_logical_colors_to_map): New function.
Jason Rumney <jasonr@gnu.org>
parents: 51211
diff changeset
214 /* Prefix for system colors. */
0dbfd1fe2e91 (add_system_logical_colors_to_map): New function.
Jason Rumney <jasonr@gnu.org>
parents: 51211
diff changeset
215 #define SYSTEM_COLOR_PREFIX "System"
0dbfd1fe2e91 (add_system_logical_colors_to_map): New function.
Jason Rumney <jasonr@gnu.org>
parents: 51211
diff changeset
216 #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
217
15147
38c0ce06203f (quit_char, Vwin32_enable_italics, Vwin32_enable_palette):
Geoff Voelker <voelker@cs.washington.edu>
parents: 15034
diff changeset
218 /* 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
219 #define LMOUSE 1
38c0ce06203f (quit_char, Vwin32_enable_italics, Vwin32_enable_palette):
Geoff Voelker <voelker@cs.washington.edu>
parents: 15034
diff changeset
220 #define MMOUSE 2
38c0ce06203f (quit_char, Vwin32_enable_italics, Vwin32_enable_palette):
Geoff Voelker <voelker@cs.washington.edu>
parents: 15034
diff changeset
221 #define RMOUSE 4
38c0ce06203f (quit_char, Vwin32_enable_italics, Vwin32_enable_palette):
Geoff Voelker <voelker@cs.washington.edu>
parents: 15034
diff changeset
222
38c0ce06203f (quit_char, Vwin32_enable_italics, Vwin32_enable_palette):
Geoff Voelker <voelker@cs.washington.edu>
parents: 15034
diff changeset
223 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
224 static W32Msg saved_mouse_button_msg;
43472
7faac536665f (mouse_move_timer, mouse_button_timer): Initialize.
Jason Rumney <jasonr@gnu.org>
parents: 43398
diff changeset
225 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
226 static W32Msg saved_mouse_move_msg;
43472
7faac536665f (mouse_move_timer, mouse_button_timer): Initialize.
Jason Rumney <jasonr@gnu.org>
parents: 43398
diff changeset
227 static unsigned mouse_move_timer = 0;
15290
da73440fdb5f (Vwin32_mouse_move_interval): New lisp variable.
Karl Heuer <kwzh@gnu.org>
parents: 15280
diff changeset
228
41732
0d9b74cd27cd (trackmouse_window, track_mouse_event_fn): New vars.
Jason Rumney <jasonr@gnu.org>
parents: 41726
diff changeset
229 /* Window that is tracking the mouse. */
0d9b74cd27cd (trackmouse_window, track_mouse_event_fn): New vars.
Jason Rumney <jasonr@gnu.org>
parents: 41726
diff changeset
230 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
231
92935
c99b62a964c4 (MONITOR_DEFAULT_TO_NEAREST, struct MONITOR_INFO)
Jason Rumney <jasonr@gnu.org>
parents: 92362
diff changeset
232 /* 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
233 since we are compiling for NT 4. */
c99b62a964c4 (MONITOR_DEFAULT_TO_NEAREST, struct MONITOR_INFO)
Jason Rumney <jasonr@gnu.org>
parents: 92362
diff changeset
234 #ifndef MONITOR_DEFAULT_TO_NEAREST
c99b62a964c4 (MONITOR_DEFAULT_TO_NEAREST, struct MONITOR_INFO)
Jason Rumney <jasonr@gnu.org>
parents: 92362
diff changeset
235 #define MONITOR_DEFAULT_TO_NEAREST 2
c99b62a964c4 (MONITOR_DEFAULT_TO_NEAREST, struct MONITOR_INFO)
Jason Rumney <jasonr@gnu.org>
parents: 92362
diff changeset
236 #endif
c99b62a964c4 (MONITOR_DEFAULT_TO_NEAREST, struct MONITOR_INFO)
Jason Rumney <jasonr@gnu.org>
parents: 92362
diff changeset
237 /* 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
238 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
239 struct MONITOR_INFO
c99b62a964c4 (MONITOR_DEFAULT_TO_NEAREST, struct MONITOR_INFO)
Jason Rumney <jasonr@gnu.org>
parents: 92362
diff changeset
240 {
c99b62a964c4 (MONITOR_DEFAULT_TO_NEAREST, struct MONITOR_INFO)
Jason Rumney <jasonr@gnu.org>
parents: 92362
diff changeset
241 DWORD cbSize;
c99b62a964c4 (MONITOR_DEFAULT_TO_NEAREST, struct MONITOR_INFO)
Jason Rumney <jasonr@gnu.org>
parents: 92362
diff changeset
242 RECT rcMonitor;
c99b62a964c4 (MONITOR_DEFAULT_TO_NEAREST, struct MONITOR_INFO)
Jason Rumney <jasonr@gnu.org>
parents: 92362
diff changeset
243 RECT rcWork;
c99b62a964c4 (MONITOR_DEFAULT_TO_NEAREST, struct MONITOR_INFO)
Jason Rumney <jasonr@gnu.org>
parents: 92362
diff changeset
244 DWORD dwFlags;
c99b62a964c4 (MONITOR_DEFAULT_TO_NEAREST, struct MONITOR_INFO)
Jason Rumney <jasonr@gnu.org>
parents: 92362
diff changeset
245 };
c99b62a964c4 (MONITOR_DEFAULT_TO_NEAREST, struct MONITOR_INFO)
Jason Rumney <jasonr@gnu.org>
parents: 92362
diff changeset
246
97493
dde0533b6aec [_MSC_VER && _MSC_VER < 1300]: Declare HMONITOR.
Eli Zaretskii <eliz@gnu.org>
parents: 97194
diff changeset
247 /* Reportedly, VS 6 does not have this in its headers. */
dde0533b6aec [_MSC_VER && _MSC_VER < 1300]: Declare HMONITOR.
Eli Zaretskii <eliz@gnu.org>
parents: 97194
diff changeset
248 #if defined(_MSC_VER) && _MSC_VER < 1300
dde0533b6aec [_MSC_VER && _MSC_VER < 1300]: Declare HMONITOR.
Eli Zaretskii <eliz@gnu.org>
parents: 97194
diff changeset
249 DECLARE_HANDLE(HMONITOR);
dde0533b6aec [_MSC_VER && _MSC_VER < 1300]: Declare HMONITOR.
Eli Zaretskii <eliz@gnu.org>
parents: 97194
diff changeset
250 #endif
dde0533b6aec [_MSC_VER && _MSC_VER < 1300]: Declare HMONITOR.
Eli Zaretskii <eliz@gnu.org>
parents: 97194
diff changeset
251
51776
6a03280c654a (clipboard_sequence_fn): New variable.
Jason Rumney <jasonr@gnu.org>
parents: 51763
diff changeset
252 typedef BOOL (WINAPI * TrackMouseEvent_Proc)
6a03280c654a (clipboard_sequence_fn): New variable.
Jason Rumney <jasonr@gnu.org>
parents: 51763
diff changeset
253 (IN OUT LPTRACKMOUSEEVENT lpEventTrack);
91099
8bbec66c0718 Include imm.h.
Jason Rumney <jasonr@gnu.org>
parents: 91085
diff changeset
254 typedef LONG (WINAPI * ImmGetCompositionString_Proc)
8bbec66c0718 Include imm.h.
Jason Rumney <jasonr@gnu.org>
parents: 91085
diff changeset
255 (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
256 typedef HIMC (WINAPI * ImmGetContext_Proc) (IN HWND window);
104030
91b945d54645 * w32fns.c (w32_wnd_proc) [WM_IME_STARTCOMPOSITION]: Position
Jason Rumney <jasonr@gnu.org>
parents: 103674
diff changeset
257 typedef HWND (WINAPI * ImmReleaseContext_Proc) (IN HWND wnd, IN HIMC context);
91b945d54645 * w32fns.c (w32_wnd_proc) [WM_IME_STARTCOMPOSITION]: Position
Jason Rumney <jasonr@gnu.org>
parents: 103674
diff changeset
258 typedef HWND (WINAPI * ImmSetCompositionWindow_Proc) (IN HIMC context,
91b945d54645 * w32fns.c (w32_wnd_proc) [WM_IME_STARTCOMPOSITION]: Position
Jason Rumney <jasonr@gnu.org>
parents: 103674
diff changeset
259 IN COMPOSITIONFORM *form);
92935
c99b62a964c4 (MONITOR_DEFAULT_TO_NEAREST, struct MONITOR_INFO)
Jason Rumney <jasonr@gnu.org>
parents: 92362
diff changeset
260 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
261 typedef BOOL (WINAPI * GetMonitorInfo_Proc)
c99b62a964c4 (MONITOR_DEFAULT_TO_NEAREST, struct MONITOR_INFO)
Jason Rumney <jasonr@gnu.org>
parents: 92362
diff changeset
262 (IN HMONITOR monitor, OUT struct MONITOR_INFO* info);
51776
6a03280c654a (clipboard_sequence_fn): New variable.
Jason Rumney <jasonr@gnu.org>
parents: 51763
diff changeset
263
6a03280c654a (clipboard_sequence_fn): New variable.
Jason Rumney <jasonr@gnu.org>
parents: 51763
diff changeset
264 TrackMouseEvent_Proc track_mouse_event_fn = NULL;
6a03280c654a (clipboard_sequence_fn): New variable.
Jason Rumney <jasonr@gnu.org>
parents: 51763
diff changeset
265 ClipboardSequence_Proc clipboard_sequence_fn = NULL;
91099
8bbec66c0718 Include imm.h.
Jason Rumney <jasonr@gnu.org>
parents: 91085
diff changeset
266 ImmGetCompositionString_Proc get_composition_string_fn = NULL;
8bbec66c0718 Include imm.h.
Jason Rumney <jasonr@gnu.org>
parents: 91085
diff changeset
267 ImmGetContext_Proc get_ime_context_fn = NULL;
104030
91b945d54645 * w32fns.c (w32_wnd_proc) [WM_IME_STARTCOMPOSITION]: Position
Jason Rumney <jasonr@gnu.org>
parents: 103674
diff changeset
268 ImmReleaseContext_Proc release_ime_context_fn = NULL;
91b945d54645 * w32fns.c (w32_wnd_proc) [WM_IME_STARTCOMPOSITION]: Position
Jason Rumney <jasonr@gnu.org>
parents: 103674
diff changeset
269 ImmSetCompositionWindow_Proc set_ime_composition_window_fn = NULL;
92935
c99b62a964c4 (MONITOR_DEFAULT_TO_NEAREST, struct MONITOR_INFO)
Jason Rumney <jasonr@gnu.org>
parents: 92362
diff changeset
270 MonitorFromPoint_Proc monitor_from_point_fn = NULL;
c99b62a964c4 (MONITOR_DEFAULT_TO_NEAREST, struct MONITOR_INFO)
Jason Rumney <jasonr@gnu.org>
parents: 92362
diff changeset
271 GetMonitorInfo_Proc get_monitor_info_fn = NULL;
91099
8bbec66c0718 Include imm.h.
Jason Rumney <jasonr@gnu.org>
parents: 91085
diff changeset
272
56971
a35b92556545 (w32_wnd_proc) [WM_MEASUREITEM, WM_DRAWITEM]: Handle
Jason Rumney <jasonr@gnu.org>
parents: 56856
diff changeset
273 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
274
91099
8bbec66c0718 Include imm.h.
Jason Rumney <jasonr@gnu.org>
parents: 91085
diff changeset
275 /* Flag to selectively ignore WM_IME_CHAR messages. */
8bbec66c0718 Include imm.h.
Jason Rumney <jasonr@gnu.org>
parents: 91085
diff changeset
276 static int ignore_ime_char = 0;
8bbec66c0718 Include imm.h.
Jason Rumney <jasonr@gnu.org>
parents: 91085
diff changeset
277
21874
c0871d40073e (msh_mousewheel): New variable.
Geoff Voelker <voelker@cs.washington.edu>
parents: 21735
diff changeset
278 /* W95 mousewheel handler */
47942
080b4586492b Fix typo in comment.
Juanma Barranquero <lekktu@gmail.com>
parents: 47731
diff changeset
279 unsigned int msh_mousewheel = 0;
21874
c0871d40073e (msh_mousewheel): New variable.
Geoff Voelker <voelker@cs.washington.edu>
parents: 21735
diff changeset
280
43472
7faac536665f (mouse_move_timer, mouse_button_timer): Initialize.
Jason Rumney <jasonr@gnu.org>
parents: 43398
diff changeset
281 /* Timers */
15290
da73440fdb5f (Vwin32_mouse_move_interval): New lisp variable.
Karl Heuer <kwzh@gnu.org>
parents: 15280
diff changeset
282 #define MOUSE_BUTTON_ID 1
da73440fdb5f (Vwin32_mouse_move_interval): New lisp variable.
Karl Heuer <kwzh@gnu.org>
parents: 15280
diff changeset
283 #define MOUSE_MOVE_ID 2
43472
7faac536665f (mouse_move_timer, mouse_button_timer): Initialize.
Jason Rumney <jasonr@gnu.org>
parents: 43398
diff changeset
284 #define MENU_FREE_ID 3
93075
66248fc5b523 * w32fns.c (hourglass_timer, hourglass_hwnd): New variables.
Jason Rumney <jasonr@gnu.org>
parents: 92940
diff changeset
285 #define HOURGLASS_ID 4
43472
7faac536665f (mouse_move_timer, mouse_button_timer): Initialize.
Jason Rumney <jasonr@gnu.org>
parents: 43398
diff changeset
286 /* 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
287 is received. */
7faac536665f (mouse_move_timer, mouse_button_timer): Initialize.
Jason Rumney <jasonr@gnu.org>
parents: 43398
diff changeset
288 #define MENU_FREE_DELAY 1000
7faac536665f (mouse_move_timer, mouse_button_timer): Initialize.
Jason Rumney <jasonr@gnu.org>
parents: 43398
diff changeset
289 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
290
109295
fffdf1688ad0 src/w32fns.c (Qtooltip): Declare.
Juanma Barranquero <lekktu@gmail.com>
parents: 109290
diff changeset
291 /* In dispnew.c */
29317
2d3d5bf49d4e Format and doc changes to bring closer to xfns.c.
Jason Rumney <jasonr@gnu.org>
parents: 29021
diff changeset
292
13434
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
293 extern Lisp_Object Vwindow_system_version;
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
294
109295
fffdf1688ad0 src/w32fns.c (Qtooltip): Declare.
Juanma Barranquero <lekktu@gmail.com>
parents: 109290
diff changeset
295 /* The below are defined in frame.c. */
fffdf1688ad0 src/w32fns.c (Qtooltip): Declare.
Juanma Barranquero <lekktu@gmail.com>
parents: 109290
diff changeset
296
fffdf1688ad0 src/w32fns.c (Qtooltip): Declare.
Juanma Barranquero <lekktu@gmail.com>
parents: 109290
diff changeset
297 extern Lisp_Object Qtooltip;
fffdf1688ad0 src/w32fns.c (Qtooltip): Declare.
Juanma Barranquero <lekktu@gmail.com>
parents: 109290
diff changeset
298
34546
51be06b616bf (Fx_hide_tip): Avoid unnecessary work when there's
Andrew Innes <andrewi@gnu.org>
parents: 34314
diff changeset
299 #ifdef GLYPH_DEBUG
51be06b616bf (Fx_hide_tip): Avoid unnecessary work when there's
Andrew Innes <andrewi@gnu.org>
parents: 34314
diff changeset
300 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
301 #endif
51be06b616bf (Fx_hide_tip): Avoid unnecessary work when there's
Andrew Innes <andrewi@gnu.org>
parents: 34314
diff changeset
302
51be06b616bf (Fx_hide_tip): Avoid unnecessary work when there's
Andrew Innes <andrewi@gnu.org>
parents: 34314
diff changeset
303
16588
481b7874a1e9 Change identifiers of the form win32* to w32*.
Geoff Voelker <voelker@cs.washington.edu>
parents: 16259
diff changeset
304 /* From w32term.c. */
55656
29b250a07fe0 (Fw32_register_hot_key, Fw32_unregister_hot_key)
Jason Rumney <jasonr@gnu.org>
parents: 55592
diff changeset
305 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
306 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
307
40385
b3dbd98f9b97 (w32_wnd_proc) <WM_KILLFOCUS>: Destroy the system caret.
Jason Rumney <jasonr@gnu.org>
parents: 40120
diff changeset
308 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
309
40385
b3dbd98f9b97 (w32_wnd_proc) <WM_KILLFOCUS>: Destroy the system caret.
Jason Rumney <jasonr@gnu.org>
parents: 40120
diff changeset
310 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
311 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
312 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
313 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
314
42918
9b06036a8c5e (syms_of_w32fns): Initialize w32_visible_system_caret_hwnd.
Jason Rumney <jasonr@gnu.org>
parents: 42865
diff changeset
315 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
316
76075
25965473846d (current_popup_menu): Use from w32menu.c.
Jason Rumney <jasonr@gnu.org>
parents: 75348
diff changeset
317 /* From w32menu.c */
25965473846d (current_popup_menu): Use from w32menu.c.
Jason Rumney <jasonr@gnu.org>
parents: 75348
diff changeset
318 extern HMENU current_popup_menu;
76083
5e1d8f9b52ea * w32fns.c (menubar_in_use): New flag.
Jason Rumney <jasonr@gnu.org>
parents: 76078
diff changeset
319 static int menubar_in_use = 0;
76075
25965473846d (current_popup_menu): Use from w32menu.c.
Jason Rumney <jasonr@gnu.org>
parents: 75348
diff changeset
320
93599
a67af10a545c (uniscribe_font_driver) [WINDOWSNT]: Declare for w32fns.c.
Jason Rumney <jasonr@gnu.org>
parents: 93319
diff changeset
321 /* From w32uniscribe.c */
a67af10a545c (uniscribe_font_driver) [WINDOWSNT]: Declare for w32fns.c.
Jason Rumney <jasonr@gnu.org>
parents: 93319
diff changeset
322 extern void syms_of_w32uniscribe ();
a67af10a545c (uniscribe_font_driver) [WINDOWSNT]: Declare for w32fns.c.
Jason Rumney <jasonr@gnu.org>
parents: 93319
diff changeset
323 extern int uniscribe_available;
a67af10a545c (uniscribe_font_driver) [WINDOWSNT]: Declare for w32fns.c.
Jason Rumney <jasonr@gnu.org>
parents: 93319
diff changeset
324
93075
66248fc5b523 * w32fns.c (hourglass_timer, hourglass_hwnd): New variables.
Jason Rumney <jasonr@gnu.org>
parents: 92940
diff changeset
325 /* Function prototypes for hourglass support. */
96674
ff312a846b25 * w32fns.c (Fx_create_frame): Remove duplicate unwind_protect.
Jason Rumney <jasonr@gnu.org>
parents: 96664
diff changeset
326 static void w32_show_hourglass P_ ((struct frame *));
ff312a846b25 * w32fns.c (Fx_create_frame): Remove duplicate unwind_protect.
Jason Rumney <jasonr@gnu.org>
parents: 96664
diff changeset
327 static void w32_hide_hourglass P_ ((void));
93075
66248fc5b523 * w32fns.c (hourglass_timer, hourglass_hwnd): New variables.
Jason Rumney <jasonr@gnu.org>
parents: 92940
diff changeset
328
66248fc5b523 * w32fns.c (hourglass_timer, hourglass_hwnd): New variables.
Jason Rumney <jasonr@gnu.org>
parents: 92940
diff changeset
329
13434
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
330
19707
0181cc080316 Include limits.h and errno.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18508
diff changeset
331 /* 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
332 void
0181cc080316 Include limits.h and errno.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18508
diff changeset
333 check_w32 ()
0181cc080316 Include limits.h and errno.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18508
diff changeset
334 {
0181cc080316 Include limits.h and errno.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18508
diff changeset
335 if (! w32_in_use)
0181cc080316 Include limits.h and errno.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18508
diff changeset
336 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
337 }
0181cc080316 Include limits.h and errno.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18508
diff changeset
338
0181cc080316 Include limits.h and errno.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18508
diff changeset
339 /* Nonzero if we can use mouse menus.
0181cc080316 Include limits.h and errno.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18508
diff changeset
340 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
341
19707
0181cc080316 Include limits.h and errno.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18508
diff changeset
342 int
0181cc080316 Include limits.h and errno.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18508
diff changeset
343 have_menus_p ()
0181cc080316 Include limits.h and errno.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18508
diff changeset
344 {
0181cc080316 Include limits.h and errno.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18508
diff changeset
345 return w32_in_use;
0181cc080316 Include limits.h and errno.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18508
diff changeset
346 }
0181cc080316 Include limits.h and errno.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18508
diff changeset
347
13434
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
348 /* 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
349 and checking validity for W32. */
13434
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
350
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
351 FRAME_PTR
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
352 check_x_frame (frame)
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
353 Lisp_Object frame;
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
354 {
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
355 FRAME_PTR f;
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
356
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
357 if (NILP (frame))
27397
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
358 frame = selected_frame;
40656
cdfd4d09b79a Update usage of CHECK_ macros (remove unused second argument).
Pavel Janík <Pavel@Janik.cz>
parents: 40528
diff changeset
359 CHECK_LIVE_FRAME (frame);
27397
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
360 f = XFRAME (frame);
16588
481b7874a1e9 Change identifiers of the form win32* to w32*.
Geoff Voelker <voelker@cs.washington.edu>
parents: 16259
diff changeset
361 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
362 error ("Non-W32 frame used");
13434
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
363 return f;
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
364 }
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
365
47942
080b4586492b Fix typo in comment.
Juanma Barranquero <lekktu@gmail.com>
parents: 47731
diff changeset
366 /* 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
367 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
368 the first display on the list. */
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
369
50362
6d942c1d5f2d * w32fns.c (Qauto_raise, Qauto_lower, ...): Remove vars for frame
Kim F. Storm <storm@cua.dk>
parents: 50229
diff changeset
370 struct w32_display_info *
13434
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
371 check_x_display_info (frame)
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
372 Lisp_Object frame;
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 if (NILP (frame))
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
375 {
27397
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
376 struct frame *sf = XFRAME (selected_frame);
47942
080b4586492b Fix typo in comment.
Juanma Barranquero <lekktu@gmail.com>
parents: 47731
diff changeset
377
27397
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
378 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
379 return FRAME_W32_DISPLAY_INFO (sf);
13434
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
380 else
16588
481b7874a1e9 Change identifiers of the form win32* to w32*.
Geoff Voelker <voelker@cs.washington.edu>
parents: 16259
diff changeset
381 return &one_w32_display_info;
13434
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
382 }
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
383 else if (STRINGP (frame))
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
384 return x_display_info_for_name (frame);
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
385 else
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
386 {
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
387 FRAME_PTR f;
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
388
40656
cdfd4d09b79a Update usage of CHECK_ macros (remove unused second argument).
Pavel Janík <Pavel@Janik.cz>
parents: 40528
diff changeset
389 CHECK_LIVE_FRAME (frame);
13434
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
390 f = XFRAME (frame);
16588
481b7874a1e9 Change identifiers of the form win32* to w32*.
Geoff Voelker <voelker@cs.washington.edu>
parents: 16259
diff changeset
391 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
392 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
393 return FRAME_W32_DISPLAY_INFO (f);
13434
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
394 }
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
395 }
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
396
16588
481b7874a1e9 Change identifiers of the form win32* to w32*.
Geoff Voelker <voelker@cs.washington.edu>
parents: 16259
diff changeset
397 /* Return the Emacs frame-object corresponding to an w32 window.
13434
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
398 It could be the frame's main window or an icon window. */
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
399
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
400 /* 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
401
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
402 struct frame *
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
403 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
404 struct w32_display_info *dpyinfo;
13434
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
405 HWND wdesc;
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
406 {
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
407 Lisp_Object tail, frame;
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
408 struct frame *f;
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
409
90970
3371fc48749b Replace uses of GC_* macros with the non-GC_ versions.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 90919
diff changeset
410 for (tail = Vframe_list; CONSP (tail); tail = XCDR (tail))
13434
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
411 {
25646
9154af188477 Use XCAR and XCDR instead of explicit member references.
Ken Raeburn <raeburn@raeburn.org>
parents: 25289
diff changeset
412 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
413 if (!FRAMEP (frame))
13434
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
414 continue;
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
415 f = XFRAME (frame);
26729
f5dded41adcc Changes for automatic remapping of X colors on terminal frames:
Eli Zaretskii <eliz@gnu.org>
parents: 25646
diff changeset
416 if (!FRAME_W32_P (f) || FRAME_W32_DISPLAY_INFO (f) != dpyinfo)
13434
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
417 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
418
16588
481b7874a1e9 Change identifiers of the form win32* to w32*.
Geoff Voelker <voelker@cs.washington.edu>
parents: 16259
diff changeset
419 if (FRAME_W32_WINDOW (f) == wdesc)
13434
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
420 return f;
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
421 }
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
422 return 0;
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
423 }
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
34546
51be06b616bf (Fx_hide_tip): Avoid unnecessary work when there's
Andrew Innes <andrewi@gnu.org>
parents: 34314
diff changeset
426 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
427 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
428 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
429 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
430
33387
01a10bc04233 (Qw32_charset_hangeul): Rename to match w32 headers.
Jason Rumney <jasonr@gnu.org>
parents: 33216
diff changeset
431 /* 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
432 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
433 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
434 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
435 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
436 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
437 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
438 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
439 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
440 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
441 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
442 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
443 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
444 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
445 Lisp_Object));
13434
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
446
50362
6d942c1d5f2d * w32fns.c (Qauto_raise, Qauto_lower, ...): Remove vars for frame
Kim F. Storm <storm@cua.dk>
parents: 50229
diff changeset
447
13434
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
448
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
449
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
450 /* Store the screen positions of frame F into XPTR and YPTR.
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
451 These are the positions of the containing window manager window,
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
452 not Emacs's own window. */
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
453
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
454 void
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
455 x_real_positions (f, xptr, yptr)
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
456 FRAME_PTR f;
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
457 int *xptr, *yptr;
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
458 {
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
459 POINT pt;
43398
8782b8cfed62 *** empty log message ***
Jason Rumney <jasonr@gnu.org>
parents: 43210
diff changeset
460 RECT rect;
8782b8cfed62 *** empty log message ***
Jason Rumney <jasonr@gnu.org>
parents: 43210
diff changeset
461
78212
87b807b2d9b1 (x_real_positions): Get real position from OS instead of calculating it.
Jason Rumney <jasonr@gnu.org>
parents: 78106
diff changeset
462 /* 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
463 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
464
87b807b2d9b1 (x_real_positions): Get real position from OS instead of calculating it.
Jason Rumney <jasonr@gnu.org>
parents: 78106
diff changeset
465 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
466 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
467
87b807b2d9b1 (x_real_positions): Get real position from OS instead of calculating it.
Jason Rumney <jasonr@gnu.org>
parents: 78106
diff changeset
468 /* 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
469 ClientToScreen (FRAME_W32_WINDOW (f), &pt);
13434
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
470
43398
8782b8cfed62 *** empty log message ***
Jason Rumney <jasonr@gnu.org>
parents: 43210
diff changeset
471 /* 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
472 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
473 f->y_pixels_diff = pt.y - rect.top;
43398
8782b8cfed62 *** empty log message ***
Jason Rumney <jasonr@gnu.org>
parents: 43210
diff changeset
474
78212
87b807b2d9b1 (x_real_positions): Get real position from OS instead of calculating it.
Jason Rumney <jasonr@gnu.org>
parents: 78106
diff changeset
475 *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
476 *yptr = rect.top;
13434
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
477 }
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
478
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
479
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
480
40964
fb970d0c56eb Change doc-string comments to `new style'. [w/`doc:' keyword]. Doc fixes.
Jason Rumney <jasonr@gnu.org>
parents: 40873
diff changeset
481 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
482 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
483 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
484 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
485 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
486 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
487 (red, green, blue, name)
38c0ce06203f (quit_char, Vwin32_enable_italics, Vwin32_enable_palette):
Geoff Voelker <voelker@cs.washington.edu>
parents: 15034
diff changeset
488 Lisp_Object red, green, blue, name;
13434
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
489 {
15147
38c0ce06203f (quit_char, Vwin32_enable_italics, Vwin32_enable_palette):
Geoff Voelker <voelker@cs.washington.edu>
parents: 15034
diff changeset
490 Lisp_Object rgb;
38c0ce06203f (quit_char, Vwin32_enable_italics, Vwin32_enable_palette):
Geoff Voelker <voelker@cs.washington.edu>
parents: 15034
diff changeset
491 Lisp_Object oldrgb = Qnil;
38c0ce06203f (quit_char, Vwin32_enable_italics, Vwin32_enable_palette):
Geoff Voelker <voelker@cs.washington.edu>
parents: 15034
diff changeset
492 Lisp_Object entry;
38c0ce06203f (quit_char, Vwin32_enable_italics, Vwin32_enable_palette):
Geoff Voelker <voelker@cs.washington.edu>
parents: 15034
diff changeset
493
40656
cdfd4d09b79a Update usage of CHECK_ macros (remove unused second argument).
Pavel Janík <Pavel@Janik.cz>
parents: 40528
diff changeset
494 CHECK_NUMBER (red);
cdfd4d09b79a Update usage of CHECK_ macros (remove unused second argument).
Pavel Janík <Pavel@Janik.cz>
parents: 40528
diff changeset
495 CHECK_NUMBER (green);
cdfd4d09b79a Update usage of CHECK_ macros (remove unused second argument).
Pavel Janík <Pavel@Janik.cz>
parents: 40528
diff changeset
496 CHECK_NUMBER (blue);
cdfd4d09b79a Update usage of CHECK_ macros (remove unused second argument).
Pavel Janík <Pavel@Janik.cz>
parents: 40528
diff changeset
497 CHECK_STRING (name);
15147
38c0ce06203f (quit_char, Vwin32_enable_italics, Vwin32_enable_palette):
Geoff Voelker <voelker@cs.washington.edu>
parents: 15034
diff changeset
498
79387
0ca197abc593 (Fw32_registered_hot_keys): Don't return the nil values corresponding
Juanma Barranquero <lekktu@gmail.com>
parents: 79381
diff changeset
499 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
500
38c0ce06203f (quit_char, Vwin32_enable_italics, Vwin32_enable_palette):
Geoff Voelker <voelker@cs.washington.edu>
parents: 15034
diff changeset
501 BLOCK_INPUT;
38c0ce06203f (quit_char, Vwin32_enable_italics, Vwin32_enable_palette):
Geoff Voelker <voelker@cs.washington.edu>
parents: 15034
diff changeset
502
16588
481b7874a1e9 Change identifiers of the form win32* to w32*.
Geoff Voelker <voelker@cs.washington.edu>
parents: 16259
diff changeset
503 /* 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
504 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
505 if (NILP (entry))
38c0ce06203f (quit_char, Vwin32_enable_italics, Vwin32_enable_palette):
Geoff Voelker <voelker@cs.washington.edu>
parents: 15034
diff changeset
506 {
38c0ce06203f (quit_char, Vwin32_enable_italics, Vwin32_enable_palette):
Geoff Voelker <voelker@cs.washington.edu>
parents: 15034
diff changeset
507 entry = Fcons (name, rgb);
16588
481b7874a1e9 Change identifiers of the form win32* to w32*.
Geoff Voelker <voelker@cs.washington.edu>
parents: 16259
diff changeset
508 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
509 }
38c0ce06203f (quit_char, Vwin32_enable_italics, Vwin32_enable_palette):
Geoff Voelker <voelker@cs.washington.edu>
parents: 15034
diff changeset
510 else
38c0ce06203f (quit_char, Vwin32_enable_italics, Vwin32_enable_palette):
Geoff Voelker <voelker@cs.washington.edu>
parents: 15034
diff changeset
511 {
38c0ce06203f (quit_char, Vwin32_enable_italics, Vwin32_enable_palette):
Geoff Voelker <voelker@cs.washington.edu>
parents: 15034
diff changeset
512 oldrgb = Fcdr (entry);
38c0ce06203f (quit_char, Vwin32_enable_italics, Vwin32_enable_palette):
Geoff Voelker <voelker@cs.washington.edu>
parents: 15034
diff changeset
513 Fsetcdr (entry, rgb);
38c0ce06203f (quit_char, Vwin32_enable_italics, Vwin32_enable_palette):
Geoff Voelker <voelker@cs.washington.edu>
parents: 15034
diff changeset
514 }
38c0ce06203f (quit_char, Vwin32_enable_italics, Vwin32_enable_palette):
Geoff Voelker <voelker@cs.washington.edu>
parents: 15034
diff changeset
515
38c0ce06203f (quit_char, Vwin32_enable_italics, Vwin32_enable_palette):
Geoff Voelker <voelker@cs.washington.edu>
parents: 15034
diff changeset
516 UNBLOCK_INPUT;
38c0ce06203f (quit_char, Vwin32_enable_italics, Vwin32_enable_palette):
Geoff Voelker <voelker@cs.washington.edu>
parents: 15034
diff changeset
517
38c0ce06203f (quit_char, Vwin32_enable_italics, Vwin32_enable_palette):
Geoff Voelker <voelker@cs.washington.edu>
parents: 15034
diff changeset
518 return (oldrgb);
13434
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
519 }
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
520
16588
481b7874a1e9 Change identifiers of the form win32* to w32*.
Geoff Voelker <voelker@cs.washington.edu>
parents: 16259
diff changeset
521 /* The default colors for the w32 color map */
47942
080b4586492b Fix typo in comment.
Juanma Barranquero <lekktu@gmail.com>
parents: 47731
diff changeset
522 typedef struct colormap_t
13434
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
523 {
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
524 char *name;
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
525 COLORREF colorref;
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
526 } colormap_t;
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
527
47942
080b4586492b Fix typo in comment.
Juanma Barranquero <lekktu@gmail.com>
parents: 47731
diff changeset
528 colormap_t w32_color_map[] =
13434
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
529 {
14983
88b23d545848 (win32_color_map): Use PALETTERGB instead of RGB.
Geoff Voelker <voelker@cs.washington.edu>
parents: 14810
diff changeset
530 {"snow" , PALETTERGB (255,250,250)},
88b23d545848 (win32_color_map): Use PALETTERGB instead of RGB.
Geoff Voelker <voelker@cs.washington.edu>
parents: 14810
diff changeset
531 {"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
532 {"GhostWhite" , PALETTERGB (248,248,255)},
88b23d545848 (win32_color_map): Use PALETTERGB instead of RGB.
Geoff Voelker <voelker@cs.washington.edu>
parents: 14810
diff changeset
533 {"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
534 {"WhiteSmoke" , PALETTERGB (245,245,245)},
88b23d545848 (win32_color_map): Use PALETTERGB instead of RGB.
Geoff Voelker <voelker@cs.washington.edu>
parents: 14810
diff changeset
535 {"gainsboro" , PALETTERGB (220,220,220)},
88b23d545848 (win32_color_map): Use PALETTERGB instead of RGB.
Geoff Voelker <voelker@cs.washington.edu>
parents: 14810
diff changeset
536 {"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
537 {"FloralWhite" , PALETTERGB (255,250,240)},
88b23d545848 (win32_color_map): Use PALETTERGB instead of RGB.
Geoff Voelker <voelker@cs.washington.edu>
parents: 14810
diff changeset
538 {"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
539 {"OldLace" , PALETTERGB (253,245,230)},
88b23d545848 (win32_color_map): Use PALETTERGB instead of RGB.
Geoff Voelker <voelker@cs.washington.edu>
parents: 14810
diff changeset
540 {"linen" , PALETTERGB (250,240,230)},
88b23d545848 (win32_color_map): Use PALETTERGB instead of RGB.
Geoff Voelker <voelker@cs.washington.edu>
parents: 14810
diff changeset
541 {"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
542 {"AntiqueWhite" , PALETTERGB (250,235,215)},
88b23d545848 (win32_color_map): Use PALETTERGB instead of RGB.
Geoff Voelker <voelker@cs.washington.edu>
parents: 14810
diff changeset
543 {"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
544 {"PapayaWhip" , PALETTERGB (255,239,213)},
88b23d545848 (win32_color_map): Use PALETTERGB instead of RGB.
Geoff Voelker <voelker@cs.washington.edu>
parents: 14810
diff changeset
545 {"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
546 {"BlanchedAlmond" , PALETTERGB (255,235,205)},
88b23d545848 (win32_color_map): Use PALETTERGB instead of RGB.
Geoff Voelker <voelker@cs.washington.edu>
parents: 14810
diff changeset
547 {"bisque" , PALETTERGB (255,228,196)},
88b23d545848 (win32_color_map): Use PALETTERGB instead of RGB.
Geoff Voelker <voelker@cs.washington.edu>
parents: 14810
diff changeset
548 {"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
549 {"PeachPuff" , PALETTERGB (255,218,185)},
88b23d545848 (win32_color_map): Use PALETTERGB instead of RGB.
Geoff Voelker <voelker@cs.washington.edu>
parents: 14810
diff changeset
550 {"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
551 {"NavajoWhite" , PALETTERGB (255,222,173)},
88b23d545848 (win32_color_map): Use PALETTERGB instead of RGB.
Geoff Voelker <voelker@cs.washington.edu>
parents: 14810
diff changeset
552 {"moccasin" , PALETTERGB (255,228,181)},
88b23d545848 (win32_color_map): Use PALETTERGB instead of RGB.
Geoff Voelker <voelker@cs.washington.edu>
parents: 14810
diff changeset
553 {"cornsilk" , PALETTERGB (255,248,220)},
88b23d545848 (win32_color_map): Use PALETTERGB instead of RGB.
Geoff Voelker <voelker@cs.washington.edu>
parents: 14810
diff changeset
554 {"ivory" , PALETTERGB (255,255,240)},
88b23d545848 (win32_color_map): Use PALETTERGB instead of RGB.
Geoff Voelker <voelker@cs.washington.edu>
parents: 14810
diff changeset
555 {"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
556 {"LemonChiffon" , PALETTERGB (255,250,205)},
88b23d545848 (win32_color_map): Use PALETTERGB instead of RGB.
Geoff Voelker <voelker@cs.washington.edu>
parents: 14810
diff changeset
557 {"seashell" , PALETTERGB (255,245,238)},
88b23d545848 (win32_color_map): Use PALETTERGB instead of RGB.
Geoff Voelker <voelker@cs.washington.edu>
parents: 14810
diff changeset
558 {"honeydew" , PALETTERGB (240,255,240)},
88b23d545848 (win32_color_map): Use PALETTERGB instead of RGB.
Geoff Voelker <voelker@cs.washington.edu>
parents: 14810
diff changeset
559 {"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
560 {"MintCream" , PALETTERGB (245,255,250)},
88b23d545848 (win32_color_map): Use PALETTERGB instead of RGB.
Geoff Voelker <voelker@cs.washington.edu>
parents: 14810
diff changeset
561 {"azure" , PALETTERGB (240,255,255)},
88b23d545848 (win32_color_map): Use PALETTERGB instead of RGB.
Geoff Voelker <voelker@cs.washington.edu>
parents: 14810
diff changeset
562 {"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
563 {"AliceBlue" , PALETTERGB (240,248,255)},
88b23d545848 (win32_color_map): Use PALETTERGB instead of RGB.
Geoff Voelker <voelker@cs.washington.edu>
parents: 14810
diff changeset
564 {"lavender" , PALETTERGB (230,230,250)},
88b23d545848 (win32_color_map): Use PALETTERGB instead of RGB.
Geoff Voelker <voelker@cs.washington.edu>
parents: 14810
diff changeset
565 {"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
566 {"LavenderBlush" , PALETTERGB (255,240,245)},
88b23d545848 (win32_color_map): Use PALETTERGB instead of RGB.
Geoff Voelker <voelker@cs.washington.edu>
parents: 14810
diff changeset
567 {"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
568 {"MistyRose" , PALETTERGB (255,228,225)},
88b23d545848 (win32_color_map): Use PALETTERGB instead of RGB.
Geoff Voelker <voelker@cs.washington.edu>
parents: 14810
diff changeset
569 {"white" , PALETTERGB (255,255,255)},
88b23d545848 (win32_color_map): Use PALETTERGB instead of RGB.
Geoff Voelker <voelker@cs.washington.edu>
parents: 14810
diff changeset
570 {"black" , PALETTERGB ( 0, 0, 0)},
88b23d545848 (win32_color_map): Use PALETTERGB instead of RGB.
Geoff Voelker <voelker@cs.washington.edu>
parents: 14810
diff changeset
571 {"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
572 {"DarkSlateGray" , PALETTERGB ( 47, 79, 79)},
88b23d545848 (win32_color_map): Use PALETTERGB instead of RGB.
Geoff Voelker <voelker@cs.washington.edu>
parents: 14810
diff changeset
573 {"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
574 {"DarkSlateGrey" , PALETTERGB ( 47, 79, 79)},
88b23d545848 (win32_color_map): Use PALETTERGB instead of RGB.
Geoff Voelker <voelker@cs.washington.edu>
parents: 14810
diff changeset
575 {"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
576 {"DimGray" , PALETTERGB (105,105,105)},
88b23d545848 (win32_color_map): Use PALETTERGB instead of RGB.
Geoff Voelker <voelker@cs.washington.edu>
parents: 14810
diff changeset
577 {"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
578 {"DimGrey" , PALETTERGB (105,105,105)},
88b23d545848 (win32_color_map): Use PALETTERGB instead of RGB.
Geoff Voelker <voelker@cs.washington.edu>
parents: 14810
diff changeset
579 {"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
580 {"SlateGray" , PALETTERGB (112,128,144)},
88b23d545848 (win32_color_map): Use PALETTERGB instead of RGB.
Geoff Voelker <voelker@cs.washington.edu>
parents: 14810
diff changeset
581 {"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
582 {"SlateGrey" , PALETTERGB (112,128,144)},
88b23d545848 (win32_color_map): Use PALETTERGB instead of RGB.
Geoff Voelker <voelker@cs.washington.edu>
parents: 14810
diff changeset
583 {"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
584 {"LightSlateGray" , PALETTERGB (119,136,153)},
88b23d545848 (win32_color_map): Use PALETTERGB instead of RGB.
Geoff Voelker <voelker@cs.washington.edu>
parents: 14810
diff changeset
585 {"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
586 {"LightSlateGrey" , PALETTERGB (119,136,153)},
88b23d545848 (win32_color_map): Use PALETTERGB instead of RGB.
Geoff Voelker <voelker@cs.washington.edu>
parents: 14810
diff changeset
587 {"gray" , PALETTERGB (190,190,190)},
88b23d545848 (win32_color_map): Use PALETTERGB instead of RGB.
Geoff Voelker <voelker@cs.washington.edu>
parents: 14810
diff changeset
588 {"grey" , PALETTERGB (190,190,190)},
88b23d545848 (win32_color_map): Use PALETTERGB instead of RGB.
Geoff Voelker <voelker@cs.washington.edu>
parents: 14810
diff changeset
589 {"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
590 {"LightGrey" , PALETTERGB (211,211,211)},
88b23d545848 (win32_color_map): Use PALETTERGB instead of RGB.
Geoff Voelker <voelker@cs.washington.edu>
parents: 14810
diff changeset
591 {"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
592 {"LightGray" , PALETTERGB (211,211,211)},
88b23d545848 (win32_color_map): Use PALETTERGB instead of RGB.
Geoff Voelker <voelker@cs.washington.edu>
parents: 14810
diff changeset
593 {"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
594 {"MidnightBlue" , PALETTERGB ( 25, 25,112)},
88b23d545848 (win32_color_map): Use PALETTERGB instead of RGB.
Geoff Voelker <voelker@cs.washington.edu>
parents: 14810
diff changeset
595 {"navy" , PALETTERGB ( 0, 0,128)},
88b23d545848 (win32_color_map): Use PALETTERGB instead of RGB.
Geoff Voelker <voelker@cs.washington.edu>
parents: 14810
diff changeset
596 {"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
597 {"NavyBlue" , PALETTERGB ( 0, 0,128)},
88b23d545848 (win32_color_map): Use PALETTERGB instead of RGB.
Geoff Voelker <voelker@cs.washington.edu>
parents: 14810
diff changeset
598 {"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
599 {"CornflowerBlue" , PALETTERGB (100,149,237)},
88b23d545848 (win32_color_map): Use PALETTERGB instead of RGB.
Geoff Voelker <voelker@cs.washington.edu>
parents: 14810
diff changeset
600 {"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
601 {"DarkSlateBlue" , PALETTERGB ( 72, 61,139)},
88b23d545848 (win32_color_map): Use PALETTERGB instead of RGB.
Geoff Voelker <voelker@cs.washington.edu>
parents: 14810
diff changeset
602 {"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
603 {"SlateBlue" , PALETTERGB (106, 90,205)},
88b23d545848 (win32_color_map): Use PALETTERGB instead of RGB.
Geoff Voelker <voelker@cs.washington.edu>
parents: 14810
diff changeset
604 {"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
605 {"MediumSlateBlue" , PALETTERGB (123,104,238)},
88b23d545848 (win32_color_map): Use PALETTERGB instead of RGB.
Geoff Voelker <voelker@cs.washington.edu>
parents: 14810
diff changeset
606 {"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
607 {"LightSlateBlue" , PALETTERGB (132,112,255)},
88b23d545848 (win32_color_map): Use PALETTERGB instead of RGB.
Geoff Voelker <voelker@cs.washington.edu>
parents: 14810
diff changeset
608 {"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
609 {"MediumBlue" , PALETTERGB ( 0, 0,205)},
88b23d545848 (win32_color_map): Use PALETTERGB instead of RGB.
Geoff Voelker <voelker@cs.washington.edu>
parents: 14810
diff changeset
610 {"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
611 {"RoyalBlue" , PALETTERGB ( 65,105,225)},
88b23d545848 (win32_color_map): Use PALETTERGB instead of RGB.
Geoff Voelker <voelker@cs.washington.edu>
parents: 14810
diff changeset
612 {"blue" , PALETTERGB ( 0, 0,255)},
88b23d545848 (win32_color_map): Use PALETTERGB instead of RGB.
Geoff Voelker <voelker@cs.washington.edu>
parents: 14810
diff changeset
613 {"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
614 {"DodgerBlue" , PALETTERGB ( 30,144,255)},
88b23d545848 (win32_color_map): Use PALETTERGB instead of RGB.
Geoff Voelker <voelker@cs.washington.edu>
parents: 14810
diff changeset
615 {"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
616 {"DeepSkyBlue" , PALETTERGB ( 0,191,255)},
88b23d545848 (win32_color_map): Use PALETTERGB instead of RGB.
Geoff Voelker <voelker@cs.washington.edu>
parents: 14810
diff changeset
617 {"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
618 {"SkyBlue" , PALETTERGB (135,206,235)},
88b23d545848 (win32_color_map): Use PALETTERGB instead of RGB.
Geoff Voelker <voelker@cs.washington.edu>
parents: 14810
diff changeset
619 {"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
620 {"LightSkyBlue" , PALETTERGB (135,206,250)},
88b23d545848 (win32_color_map): Use PALETTERGB instead of RGB.
Geoff Voelker <voelker@cs.washington.edu>
parents: 14810
diff changeset
621 {"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
622 {"SteelBlue" , PALETTERGB ( 70,130,180)},
88b23d545848 (win32_color_map): Use PALETTERGB instead of RGB.
Geoff Voelker <voelker@cs.washington.edu>
parents: 14810
diff changeset
623 {"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
624 {"LightSteelBlue" , PALETTERGB (176,196,222)},
88b23d545848 (win32_color_map): Use PALETTERGB instead of RGB.
Geoff Voelker <voelker@cs.washington.edu>
parents: 14810
diff changeset
625 {"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
626 {"LightBlue" , PALETTERGB (173,216,230)},
88b23d545848 (win32_color_map): Use PALETTERGB instead of RGB.
Geoff Voelker <voelker@cs.washington.edu>
parents: 14810
diff changeset
627 {"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
628 {"PowderBlue" , PALETTERGB (176,224,230)},
88b23d545848 (win32_color_map): Use PALETTERGB instead of RGB.
Geoff Voelker <voelker@cs.washington.edu>
parents: 14810
diff changeset
629 {"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
630 {"PaleTurquoise" , PALETTERGB (175,238,238)},
88b23d545848 (win32_color_map): Use PALETTERGB instead of RGB.
Geoff Voelker <voelker@cs.washington.edu>
parents: 14810
diff changeset
631 {"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
632 {"DarkTurquoise" , PALETTERGB ( 0,206,209)},
88b23d545848 (win32_color_map): Use PALETTERGB instead of RGB.
Geoff Voelker <voelker@cs.washington.edu>
parents: 14810
diff changeset
633 {"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
634 {"MediumTurquoise" , PALETTERGB ( 72,209,204)},
88b23d545848 (win32_color_map): Use PALETTERGB instead of RGB.
Geoff Voelker <voelker@cs.washington.edu>
parents: 14810
diff changeset
635 {"turquoise" , PALETTERGB ( 64,224,208)},
88b23d545848 (win32_color_map): Use PALETTERGB instead of RGB.
Geoff Voelker <voelker@cs.washington.edu>
parents: 14810
diff changeset
636 {"cyan" , PALETTERGB ( 0,255,255)},
88b23d545848 (win32_color_map): Use PALETTERGB instead of RGB.
Geoff Voelker <voelker@cs.washington.edu>
parents: 14810
diff changeset
637 {"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
638 {"LightCyan" , PALETTERGB (224,255,255)},
88b23d545848 (win32_color_map): Use PALETTERGB instead of RGB.
Geoff Voelker <voelker@cs.washington.edu>
parents: 14810
diff changeset
639 {"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
640 {"CadetBlue" , PALETTERGB ( 95,158,160)},
88b23d545848 (win32_color_map): Use PALETTERGB instead of RGB.
Geoff Voelker <voelker@cs.washington.edu>
parents: 14810
diff changeset
641 {"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
642 {"MediumAquamarine" , PALETTERGB (102,205,170)},
88b23d545848 (win32_color_map): Use PALETTERGB instead of RGB.
Geoff Voelker <voelker@cs.washington.edu>
parents: 14810
diff changeset
643 {"aquamarine" , PALETTERGB (127,255,212)},
88b23d545848 (win32_color_map): Use PALETTERGB instead of RGB.
Geoff Voelker <voelker@cs.washington.edu>
parents: 14810
diff changeset
644 {"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
645 {"DarkGreen" , PALETTERGB ( 0,100, 0)},
88b23d545848 (win32_color_map): Use PALETTERGB instead of RGB.
Geoff Voelker <voelker@cs.washington.edu>
parents: 14810
diff changeset
646 {"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
647 {"DarkOliveGreen" , PALETTERGB ( 85,107, 47)},
88b23d545848 (win32_color_map): Use PALETTERGB instead of RGB.
Geoff Voelker <voelker@cs.washington.edu>
parents: 14810
diff changeset
648 {"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
649 {"DarkSeaGreen" , PALETTERGB (143,188,143)},
88b23d545848 (win32_color_map): Use PALETTERGB instead of RGB.
Geoff Voelker <voelker@cs.washington.edu>
parents: 14810
diff changeset
650 {"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
651 {"SeaGreen" , PALETTERGB ( 46,139, 87)},
88b23d545848 (win32_color_map): Use PALETTERGB instead of RGB.
Geoff Voelker <voelker@cs.washington.edu>
parents: 14810
diff changeset
652 {"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
653 {"MediumSeaGreen" , PALETTERGB ( 60,179,113)},
88b23d545848 (win32_color_map): Use PALETTERGB instead of RGB.
Geoff Voelker <voelker@cs.washington.edu>
parents: 14810
diff changeset
654 {"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
655 {"LightSeaGreen" , PALETTERGB ( 32,178,170)},
88b23d545848 (win32_color_map): Use PALETTERGB instead of RGB.
Geoff Voelker <voelker@cs.washington.edu>
parents: 14810
diff changeset
656 {"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
657 {"PaleGreen" , PALETTERGB (152,251,152)},
88b23d545848 (win32_color_map): Use PALETTERGB instead of RGB.
Geoff Voelker <voelker@cs.washington.edu>
parents: 14810
diff changeset
658 {"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
659 {"SpringGreen" , PALETTERGB ( 0,255,127)},
88b23d545848 (win32_color_map): Use PALETTERGB instead of RGB.
Geoff Voelker <voelker@cs.washington.edu>
parents: 14810
diff changeset
660 {"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
661 {"LawnGreen" , PALETTERGB (124,252, 0)},
88b23d545848 (win32_color_map): Use PALETTERGB instead of RGB.
Geoff Voelker <voelker@cs.washington.edu>
parents: 14810
diff changeset
662 {"green" , PALETTERGB ( 0,255, 0)},
88b23d545848 (win32_color_map): Use PALETTERGB instead of RGB.
Geoff Voelker <voelker@cs.washington.edu>
parents: 14810
diff changeset
663 {"chartreuse" , PALETTERGB (127,255, 0)},
88b23d545848 (win32_color_map): Use PALETTERGB instead of RGB.
Geoff Voelker <voelker@cs.washington.edu>
parents: 14810
diff changeset
664 {"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
665 {"MediumSpringGreen" , PALETTERGB ( 0,250,154)},
88b23d545848 (win32_color_map): Use PALETTERGB instead of RGB.
Geoff Voelker <voelker@cs.washington.edu>
parents: 14810
diff changeset
666 {"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
667 {"GreenYellow" , PALETTERGB (173,255, 47)},
88b23d545848 (win32_color_map): Use PALETTERGB instead of RGB.
Geoff Voelker <voelker@cs.washington.edu>
parents: 14810
diff changeset
668 {"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
669 {"LimeGreen" , PALETTERGB ( 50,205, 50)},
88b23d545848 (win32_color_map): Use PALETTERGB instead of RGB.
Geoff Voelker <voelker@cs.washington.edu>
parents: 14810
diff changeset
670 {"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
671 {"YellowGreen" , PALETTERGB (154,205, 50)},
88b23d545848 (win32_color_map): Use PALETTERGB instead of RGB.
Geoff Voelker <voelker@cs.washington.edu>
parents: 14810
diff changeset
672 {"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
673 {"ForestGreen" , PALETTERGB ( 34,139, 34)},
88b23d545848 (win32_color_map): Use PALETTERGB instead of RGB.
Geoff Voelker <voelker@cs.washington.edu>
parents: 14810
diff changeset
674 {"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
675 {"OliveDrab" , PALETTERGB (107,142, 35)},
88b23d545848 (win32_color_map): Use PALETTERGB instead of RGB.
Geoff Voelker <voelker@cs.washington.edu>
parents: 14810
diff changeset
676 {"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
677 {"DarkKhaki" , PALETTERGB (189,183,107)},
88b23d545848 (win32_color_map): Use PALETTERGB instead of RGB.
Geoff Voelker <voelker@cs.washington.edu>
parents: 14810
diff changeset
678 {"khaki" , PALETTERGB (240,230,140)},
88b23d545848 (win32_color_map): Use PALETTERGB instead of RGB.
Geoff Voelker <voelker@cs.washington.edu>
parents: 14810
diff changeset
679 {"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
680 {"PaleGoldenrod" , PALETTERGB (238,232,170)},
88b23d545848 (win32_color_map): Use PALETTERGB instead of RGB.
Geoff Voelker <voelker@cs.washington.edu>
parents: 14810
diff changeset
681 {"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
682 {"LightGoldenrodYellow" , PALETTERGB (250,250,210)},
88b23d545848 (win32_color_map): Use PALETTERGB instead of RGB.
Geoff Voelker <voelker@cs.washington.edu>
parents: 14810
diff changeset
683 {"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
684 {"LightYellow" , PALETTERGB (255,255,224)},
88b23d545848 (win32_color_map): Use PALETTERGB instead of RGB.
Geoff Voelker <voelker@cs.washington.edu>
parents: 14810
diff changeset
685 {"yellow" , PALETTERGB (255,255, 0)},
88b23d545848 (win32_color_map): Use PALETTERGB instead of RGB.
Geoff Voelker <voelker@cs.washington.edu>
parents: 14810
diff changeset
686 {"gold" , PALETTERGB (255,215, 0)},
88b23d545848 (win32_color_map): Use PALETTERGB instead of RGB.
Geoff Voelker <voelker@cs.washington.edu>
parents: 14810
diff changeset
687 {"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
688 {"LightGoldenrod" , PALETTERGB (238,221,130)},
88b23d545848 (win32_color_map): Use PALETTERGB instead of RGB.
Geoff Voelker <voelker@cs.washington.edu>
parents: 14810
diff changeset
689 {"goldenrod" , PALETTERGB (218,165, 32)},
88b23d545848 (win32_color_map): Use PALETTERGB instead of RGB.
Geoff Voelker <voelker@cs.washington.edu>
parents: 14810
diff changeset
690 {"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
691 {"DarkGoldenrod" , PALETTERGB (184,134, 11)},
88b23d545848 (win32_color_map): Use PALETTERGB instead of RGB.
Geoff Voelker <voelker@cs.washington.edu>
parents: 14810
diff changeset
692 {"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
693 {"RosyBrown" , PALETTERGB (188,143,143)},
88b23d545848 (win32_color_map): Use PALETTERGB instead of RGB.
Geoff Voelker <voelker@cs.washington.edu>
parents: 14810
diff changeset
694 {"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
695 {"IndianRed" , PALETTERGB (205, 92, 92)},
88b23d545848 (win32_color_map): Use PALETTERGB instead of RGB.
Geoff Voelker <voelker@cs.washington.edu>
parents: 14810
diff changeset
696 {"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
697 {"SaddleBrown" , PALETTERGB (139, 69, 19)},
88b23d545848 (win32_color_map): Use PALETTERGB instead of RGB.
Geoff Voelker <voelker@cs.washington.edu>
parents: 14810
diff changeset
698 {"sienna" , PALETTERGB (160, 82, 45)},
88b23d545848 (win32_color_map): Use PALETTERGB instead of RGB.
Geoff Voelker <voelker@cs.washington.edu>
parents: 14810
diff changeset
699 {"peru" , PALETTERGB (205,133, 63)},
88b23d545848 (win32_color_map): Use PALETTERGB instead of RGB.
Geoff Voelker <voelker@cs.washington.edu>
parents: 14810
diff changeset
700 {"burlywood" , PALETTERGB (222,184,135)},
88b23d545848 (win32_color_map): Use PALETTERGB instead of RGB.
Geoff Voelker <voelker@cs.washington.edu>
parents: 14810
diff changeset
701 {"beige" , PALETTERGB (245,245,220)},
88b23d545848 (win32_color_map): Use PALETTERGB instead of RGB.
Geoff Voelker <voelker@cs.washington.edu>
parents: 14810
diff changeset
702 {"wheat" , PALETTERGB (245,222,179)},
88b23d545848 (win32_color_map): Use PALETTERGB instead of RGB.
Geoff Voelker <voelker@cs.washington.edu>
parents: 14810
diff changeset
703 {"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
704 {"SandyBrown" , PALETTERGB (244,164, 96)},
88b23d545848 (win32_color_map): Use PALETTERGB instead of RGB.
Geoff Voelker <voelker@cs.washington.edu>
parents: 14810
diff changeset
705 {"tan" , PALETTERGB (210,180,140)},
88b23d545848 (win32_color_map): Use PALETTERGB instead of RGB.
Geoff Voelker <voelker@cs.washington.edu>
parents: 14810
diff changeset
706 {"chocolate" , PALETTERGB (210,105, 30)},
88b23d545848 (win32_color_map): Use PALETTERGB instead of RGB.
Geoff Voelker <voelker@cs.washington.edu>
parents: 14810
diff changeset
707 {"firebrick" , PALETTERGB (178,34, 34)},
88b23d545848 (win32_color_map): Use PALETTERGB instead of RGB.
Geoff Voelker <voelker@cs.washington.edu>
parents: 14810
diff changeset
708 {"brown" , PALETTERGB (165,42, 42)},
88b23d545848 (win32_color_map): Use PALETTERGB instead of RGB.
Geoff Voelker <voelker@cs.washington.edu>
parents: 14810
diff changeset
709 {"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
710 {"DarkSalmon" , PALETTERGB (233,150,122)},
88b23d545848 (win32_color_map): Use PALETTERGB instead of RGB.
Geoff Voelker <voelker@cs.washington.edu>
parents: 14810
diff changeset
711 {"salmon" , PALETTERGB (250,128,114)},
88b23d545848 (win32_color_map): Use PALETTERGB instead of RGB.
Geoff Voelker <voelker@cs.washington.edu>
parents: 14810
diff changeset
712 {"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
713 {"LightSalmon" , PALETTERGB (255,160,122)},
88b23d545848 (win32_color_map): Use PALETTERGB instead of RGB.
Geoff Voelker <voelker@cs.washington.edu>
parents: 14810
diff changeset
714 {"orange" , PALETTERGB (255,165, 0)},
88b23d545848 (win32_color_map): Use PALETTERGB instead of RGB.
Geoff Voelker <voelker@cs.washington.edu>
parents: 14810
diff changeset
715 {"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
716 {"DarkOrange" , PALETTERGB (255,140, 0)},
88b23d545848 (win32_color_map): Use PALETTERGB instead of RGB.
Geoff Voelker <voelker@cs.washington.edu>
parents: 14810
diff changeset
717 {"coral" , PALETTERGB (255,127, 80)},
88b23d545848 (win32_color_map): Use PALETTERGB instead of RGB.
Geoff Voelker <voelker@cs.washington.edu>
parents: 14810
diff changeset
718 {"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
719 {"LightCoral" , PALETTERGB (240,128,128)},
88b23d545848 (win32_color_map): Use PALETTERGB instead of RGB.
Geoff Voelker <voelker@cs.washington.edu>
parents: 14810
diff changeset
720 {"tomato" , PALETTERGB (255, 99, 71)},
88b23d545848 (win32_color_map): Use PALETTERGB instead of RGB.
Geoff Voelker <voelker@cs.washington.edu>
parents: 14810
diff changeset
721 {"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
722 {"OrangeRed" , PALETTERGB (255, 69, 0)},
88b23d545848 (win32_color_map): Use PALETTERGB instead of RGB.
Geoff Voelker <voelker@cs.washington.edu>
parents: 14810
diff changeset
723 {"red" , PALETTERGB (255, 0, 0)},
88b23d545848 (win32_color_map): Use PALETTERGB instead of RGB.
Geoff Voelker <voelker@cs.washington.edu>
parents: 14810
diff changeset
724 {"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
725 {"HotPink" , PALETTERGB (255,105,180)},
88b23d545848 (win32_color_map): Use PALETTERGB instead of RGB.
Geoff Voelker <voelker@cs.washington.edu>
parents: 14810
diff changeset
726 {"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
727 {"DeepPink" , PALETTERGB (255, 20,147)},
88b23d545848 (win32_color_map): Use PALETTERGB instead of RGB.
Geoff Voelker <voelker@cs.washington.edu>
parents: 14810
diff changeset
728 {"pink" , PALETTERGB (255,192,203)},
88b23d545848 (win32_color_map): Use PALETTERGB instead of RGB.
Geoff Voelker <voelker@cs.washington.edu>
parents: 14810
diff changeset
729 {"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
730 {"LightPink" , PALETTERGB (255,182,193)},
88b23d545848 (win32_color_map): Use PALETTERGB instead of RGB.
Geoff Voelker <voelker@cs.washington.edu>
parents: 14810
diff changeset
731 {"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
732 {"PaleVioletRed" , PALETTERGB (219,112,147)},
88b23d545848 (win32_color_map): Use PALETTERGB instead of RGB.
Geoff Voelker <voelker@cs.washington.edu>
parents: 14810
diff changeset
733 {"maroon" , PALETTERGB (176, 48, 96)},
88b23d545848 (win32_color_map): Use PALETTERGB instead of RGB.
Geoff Voelker <voelker@cs.washington.edu>
parents: 14810
diff changeset
734 {"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
735 {"MediumVioletRed" , PALETTERGB (199, 21,133)},
88b23d545848 (win32_color_map): Use PALETTERGB instead of RGB.
Geoff Voelker <voelker@cs.washington.edu>
parents: 14810
diff changeset
736 {"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
737 {"VioletRed" , PALETTERGB (208, 32,144)},
88b23d545848 (win32_color_map): Use PALETTERGB instead of RGB.
Geoff Voelker <voelker@cs.washington.edu>
parents: 14810
diff changeset
738 {"magenta" , PALETTERGB (255, 0,255)},
88b23d545848 (win32_color_map): Use PALETTERGB instead of RGB.
Geoff Voelker <voelker@cs.washington.edu>
parents: 14810
diff changeset
739 {"violet" , PALETTERGB (238,130,238)},
88b23d545848 (win32_color_map): Use PALETTERGB instead of RGB.
Geoff Voelker <voelker@cs.washington.edu>
parents: 14810
diff changeset
740 {"plum" , PALETTERGB (221,160,221)},
88b23d545848 (win32_color_map): Use PALETTERGB instead of RGB.
Geoff Voelker <voelker@cs.washington.edu>
parents: 14810
diff changeset
741 {"orchid" , PALETTERGB (218,112,214)},
88b23d545848 (win32_color_map): Use PALETTERGB instead of RGB.
Geoff Voelker <voelker@cs.washington.edu>
parents: 14810
diff changeset
742 {"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
743 {"MediumOrchid" , PALETTERGB (186, 85,211)},
88b23d545848 (win32_color_map): Use PALETTERGB instead of RGB.
Geoff Voelker <voelker@cs.washington.edu>
parents: 14810
diff changeset
744 {"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
745 {"DarkOrchid" , PALETTERGB (153, 50,204)},
88b23d545848 (win32_color_map): Use PALETTERGB instead of RGB.
Geoff Voelker <voelker@cs.washington.edu>
parents: 14810
diff changeset
746 {"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
747 {"DarkViolet" , PALETTERGB (148, 0,211)},
88b23d545848 (win32_color_map): Use PALETTERGB instead of RGB.
Geoff Voelker <voelker@cs.washington.edu>
parents: 14810
diff changeset
748 {"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
749 {"BlueViolet" , PALETTERGB (138, 43,226)},
88b23d545848 (win32_color_map): Use PALETTERGB instead of RGB.
Geoff Voelker <voelker@cs.washington.edu>
parents: 14810
diff changeset
750 {"purple" , PALETTERGB (160, 32,240)},
88b23d545848 (win32_color_map): Use PALETTERGB instead of RGB.
Geoff Voelker <voelker@cs.washington.edu>
parents: 14810
diff changeset
751 {"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
752 {"MediumPurple" , PALETTERGB (147,112,219)},
88b23d545848 (win32_color_map): Use PALETTERGB instead of RGB.
Geoff Voelker <voelker@cs.washington.edu>
parents: 14810
diff changeset
753 {"thistle" , PALETTERGB (216,191,216)},
88b23d545848 (win32_color_map): Use PALETTERGB instead of RGB.
Geoff Voelker <voelker@cs.washington.edu>
parents: 14810
diff changeset
754 {"gray0" , PALETTERGB ( 0, 0, 0)},
88b23d545848 (win32_color_map): Use PALETTERGB instead of RGB.
Geoff Voelker <voelker@cs.washington.edu>
parents: 14810
diff changeset
755 {"grey0" , PALETTERGB ( 0, 0, 0)},
88b23d545848 (win32_color_map): Use PALETTERGB instead of RGB.
Geoff Voelker <voelker@cs.washington.edu>
parents: 14810
diff changeset
756 {"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
757 {"DarkGrey" , PALETTERGB (169,169,169)},
88b23d545848 (win32_color_map): Use PALETTERGB instead of RGB.
Geoff Voelker <voelker@cs.washington.edu>
parents: 14810
diff changeset
758 {"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
759 {"DarkGray" , PALETTERGB (169,169,169)},
88b23d545848 (win32_color_map): Use PALETTERGB instead of RGB.
Geoff Voelker <voelker@cs.washington.edu>
parents: 14810
diff changeset
760 {"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
761 {"DarkBlue" , PALETTERGB ( 0, 0,139)},
88b23d545848 (win32_color_map): Use PALETTERGB instead of RGB.
Geoff Voelker <voelker@cs.washington.edu>
parents: 14810
diff changeset
762 {"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
763 {"DarkCyan" , PALETTERGB ( 0,139,139)},
88b23d545848 (win32_color_map): Use PALETTERGB instead of RGB.
Geoff Voelker <voelker@cs.washington.edu>
parents: 14810
diff changeset
764 {"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
765 {"DarkMagenta" , PALETTERGB (139, 0,139)},
88b23d545848 (win32_color_map): Use PALETTERGB instead of RGB.
Geoff Voelker <voelker@cs.washington.edu>
parents: 14810
diff changeset
766 {"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
767 {"DarkRed" , PALETTERGB (139, 0, 0)},
88b23d545848 (win32_color_map): Use PALETTERGB instead of RGB.
Geoff Voelker <voelker@cs.washington.edu>
parents: 14810
diff changeset
768 {"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
769 {"LightGreen" , PALETTERGB (144,238,144)},
13434
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
770 };
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
771
16588
481b7874a1e9 Change identifiers of the form win32* to w32*.
Geoff Voelker <voelker@cs.washington.edu>
parents: 16259
diff changeset
772 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
773 0, 0, 0, doc: /* Return the default color map. */)
13434
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
774 ()
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
775 {
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
776 int i;
16588
481b7874a1e9 Change identifiers of the form win32* to w32*.
Geoff Voelker <voelker@cs.washington.edu>
parents: 16259
diff changeset
777 colormap_t *pc = w32_color_map;
13434
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
778 Lisp_Object cmap;
47942
080b4586492b Fix typo in comment.
Juanma Barranquero <lekktu@gmail.com>
parents: 47731
diff changeset
779
13434
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
780 BLOCK_INPUT;
47942
080b4586492b Fix typo in comment.
Juanma Barranquero <lekktu@gmail.com>
parents: 47731
diff changeset
781
13434
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
782 cmap = Qnil;
47942
080b4586492b Fix typo in comment.
Juanma Barranquero <lekktu@gmail.com>
parents: 47731
diff changeset
783
080b4586492b Fix typo in comment.
Juanma Barranquero <lekktu@gmail.com>
parents: 47731
diff changeset
784 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
785 pc++, i++)
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
786 cmap = Fcons (Fcons (build_string (pc->name),
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
787 make_number (pc->colorref)),
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
788 cmap);
47942
080b4586492b Fix typo in comment.
Juanma Barranquero <lekktu@gmail.com>
parents: 47731
diff changeset
789
13434
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
790 UNBLOCK_INPUT;
47942
080b4586492b Fix typo in comment.
Juanma Barranquero <lekktu@gmail.com>
parents: 47731
diff changeset
791
13434
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
792 return (cmap);
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
793 }
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
794
86065
2557aa084b57 (Fw32_registered_hot_keys): Don't return the nil values corresponding
Juanma Barranquero <lekktu@gmail.com>
parents: 86053
diff changeset
795 static Lisp_Object
16588
481b7874a1e9 Change identifiers of the form win32* to w32*.
Geoff Voelker <voelker@cs.washington.edu>
parents: 16259
diff changeset
796 w32_to_x_color (rgb)
13434
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
797 Lisp_Object rgb;
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
798 {
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
799 Lisp_Object color;
47942
080b4586492b Fix typo in comment.
Juanma Barranquero <lekktu@gmail.com>
parents: 47731
diff changeset
800
40656
cdfd4d09b79a Update usage of CHECK_ macros (remove unused second argument).
Pavel Janík <Pavel@Janik.cz>
parents: 40528
diff changeset
801 CHECK_NUMBER (rgb);
47942
080b4586492b Fix typo in comment.
Juanma Barranquero <lekktu@gmail.com>
parents: 47731
diff changeset
802
13434
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
803 BLOCK_INPUT;
47942
080b4586492b Fix typo in comment.
Juanma Barranquero <lekktu@gmail.com>
parents: 47731
diff changeset
804
16588
481b7874a1e9 Change identifiers of the form win32* to w32*.
Geoff Voelker <voelker@cs.washington.edu>
parents: 16259
diff changeset
805 color = Frassq (rgb, Vw32_color_map);
47942
080b4586492b Fix typo in comment.
Juanma Barranquero <lekktu@gmail.com>
parents: 47731
diff changeset
806
13434
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
807 UNBLOCK_INPUT;
47942
080b4586492b Fix typo in comment.
Juanma Barranquero <lekktu@gmail.com>
parents: 47731
diff changeset
808
13434
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
809 if (!NILP (color))
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
810 return (Fcar (color));
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
811 else
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
812 return Qnil;
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
813 }
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
814
55656
29b250a07fe0 (Fw32_register_hot_key, Fw32_unregister_hot_key)
Jason Rumney <jasonr@gnu.org>
parents: 55592
diff changeset
815 static Lisp_Object
23314
87acd2b6ce97 (w32_color_map_lookup): New function.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23160
diff changeset
816 w32_color_map_lookup (colorname)
87acd2b6ce97 (w32_color_map_lookup): New function.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23160
diff changeset
817 char *colorname;
87acd2b6ce97 (w32_color_map_lookup): New function.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23160
diff changeset
818 {
87acd2b6ce97 (w32_color_map_lookup): New function.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23160
diff changeset
819 Lisp_Object tail, ret = Qnil;
87acd2b6ce97 (w32_color_map_lookup): New function.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23160
diff changeset
820
87acd2b6ce97 (w32_color_map_lookup): New function.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23160
diff changeset
821 BLOCK_INPUT;
87acd2b6ce97 (w32_color_map_lookup): New function.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23160
diff changeset
822
85372
f7d19cfed7da * xselect.c (x_own_selection, x_handle_selection_clear)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 85311
diff changeset
823 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
824 {
87acd2b6ce97 (w32_color_map_lookup): New function.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23160
diff changeset
825 register Lisp_Object elt, tem;
87acd2b6ce97 (w32_color_map_lookup): New function.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23160
diff changeset
826
85372
f7d19cfed7da * xselect.c (x_own_selection, x_handle_selection_clear)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 85311
diff changeset
827 elt = XCAR (tail);
23314
87acd2b6ce97 (w32_color_map_lookup): New function.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23160
diff changeset
828 if (!CONSP (elt)) continue;
87acd2b6ce97 (w32_color_map_lookup): New function.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23160
diff changeset
829
87acd2b6ce97 (w32_color_map_lookup): New function.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23160
diff changeset
830 tem = Fcar (elt);
87acd2b6ce97 (w32_color_map_lookup): New function.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23160
diff changeset
831
46370
40db0673e6f0 Most uses of XSTRING combined with STRING_BYTES or indirection changed to
Ken Raeburn <raeburn@raeburn.org>
parents: 46293
diff changeset
832 if (lstrcmpi (SDATA (tem), colorname) == 0)
23314
87acd2b6ce97 (w32_color_map_lookup): New function.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23160
diff changeset
833 {
55656
29b250a07fe0 (Fw32_register_hot_key, Fw32_unregister_hot_key)
Jason Rumney <jasonr@gnu.org>
parents: 55592
diff changeset
834 ret = Fcdr (elt);
23314
87acd2b6ce97 (w32_color_map_lookup): New function.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23160
diff changeset
835 break;
87acd2b6ce97 (w32_color_map_lookup): New function.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23160
diff changeset
836 }
87acd2b6ce97 (w32_color_map_lookup): New function.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23160
diff changeset
837
87acd2b6ce97 (w32_color_map_lookup): New function.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23160
diff changeset
838 QUIT;
87acd2b6ce97 (w32_color_map_lookup): New function.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23160
diff changeset
839 }
87acd2b6ce97 (w32_color_map_lookup): New function.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23160
diff changeset
840
87acd2b6ce97 (w32_color_map_lookup): New function.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23160
diff changeset
841
87acd2b6ce97 (w32_color_map_lookup): New function.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23160
diff changeset
842 UNBLOCK_INPUT;
87acd2b6ce97 (w32_color_map_lookup): New function.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23160
diff changeset
843
87acd2b6ce97 (w32_color_map_lookup): New function.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23160
diff changeset
844 return ret;
87acd2b6ce97 (w32_color_map_lookup): New function.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23160
diff changeset
845 }
87acd2b6ce97 (w32_color_map_lookup): New function.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23160
diff changeset
846
51474
0dbfd1fe2e91 (add_system_logical_colors_to_map): New function.
Jason Rumney <jasonr@gnu.org>
parents: 51211
diff changeset
847
0dbfd1fe2e91 (add_system_logical_colors_to_map): New function.
Jason Rumney <jasonr@gnu.org>
parents: 51211
diff changeset
848 static void
0dbfd1fe2e91 (add_system_logical_colors_to_map): New function.
Jason Rumney <jasonr@gnu.org>
parents: 51211
diff changeset
849 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
850 Lisp_Object *system_colors;
0dbfd1fe2e91 (add_system_logical_colors_to_map): New function.
Jason Rumney <jasonr@gnu.org>
parents: 51211
diff changeset
851 {
0dbfd1fe2e91 (add_system_logical_colors_to_map): New function.
Jason Rumney <jasonr@gnu.org>
parents: 51211
diff changeset
852 HKEY colors_key;
0dbfd1fe2e91 (add_system_logical_colors_to_map): New function.
Jason Rumney <jasonr@gnu.org>
parents: 51211
diff changeset
853
0dbfd1fe2e91 (add_system_logical_colors_to_map): New function.
Jason Rumney <jasonr@gnu.org>
parents: 51211
diff changeset
854 /* 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
855 BLOCK_INPUT;
0dbfd1fe2e91 (add_system_logical_colors_to_map): New function.
Jason Rumney <jasonr@gnu.org>
parents: 51211
diff changeset
856
0dbfd1fe2e91 (add_system_logical_colors_to_map): New function.
Jason Rumney <jasonr@gnu.org>
parents: 51211
diff changeset
857 /* 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
858 settings. */
0dbfd1fe2e91 (add_system_logical_colors_to_map): New function.
Jason Rumney <jasonr@gnu.org>
parents: 51211
diff changeset
859 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
860 KEY_READ, &colors_key) == ERROR_SUCCESS
0dbfd1fe2e91 (add_system_logical_colors_to_map): New function.
Jason Rumney <jasonr@gnu.org>
parents: 51211
diff changeset
861 || 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
862 KEY_READ, &colors_key) == ERROR_SUCCESS)
0dbfd1fe2e91 (add_system_logical_colors_to_map): New function.
Jason Rumney <jasonr@gnu.org>
parents: 51211
diff changeset
863 {
0dbfd1fe2e91 (add_system_logical_colors_to_map): New function.
Jason Rumney <jasonr@gnu.org>
parents: 51211
diff changeset
864 /* List all keys. */
0dbfd1fe2e91 (add_system_logical_colors_to_map): New function.
Jason Rumney <jasonr@gnu.org>
parents: 51211
diff changeset
865 char color_buffer[64];
0dbfd1fe2e91 (add_system_logical_colors_to_map): New function.
Jason Rumney <jasonr@gnu.org>
parents: 51211
diff changeset
866 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
867 int index = 0;
0dbfd1fe2e91 (add_system_logical_colors_to_map): New function.
Jason Rumney <jasonr@gnu.org>
parents: 51211
diff changeset
868 DWORD name_size, color_size;
0dbfd1fe2e91 (add_system_logical_colors_to_map): New function.
Jason Rumney <jasonr@gnu.org>
parents: 51211
diff changeset
869 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
870
0dbfd1fe2e91 (add_system_logical_colors_to_map): New function.
Jason Rumney <jasonr@gnu.org>
parents: 51211
diff changeset
871 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
872 color_size = sizeof (color_buffer);
0dbfd1fe2e91 (add_system_logical_colors_to_map): New function.
Jason Rumney <jasonr@gnu.org>
parents: 51211
diff changeset
873
0dbfd1fe2e91 (add_system_logical_colors_to_map): New function.
Jason Rumney <jasonr@gnu.org>
parents: 51211
diff changeset
874 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
875
0dbfd1fe2e91 (add_system_logical_colors_to_map): New function.
Jason Rumney <jasonr@gnu.org>
parents: 51211
diff changeset
876 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
877 NULL, NULL, color_buffer, &color_size)
0dbfd1fe2e91 (add_system_logical_colors_to_map): New function.
Jason Rumney <jasonr@gnu.org>
parents: 51211
diff changeset
878 == ERROR_SUCCESS)
0dbfd1fe2e91 (add_system_logical_colors_to_map): New function.
Jason Rumney <jasonr@gnu.org>
parents: 51211
diff changeset
879 {
0dbfd1fe2e91 (add_system_logical_colors_to_map): New function.
Jason Rumney <jasonr@gnu.org>
parents: 51211
diff changeset
880 int r, g, b;
0dbfd1fe2e91 (add_system_logical_colors_to_map): New function.
Jason Rumney <jasonr@gnu.org>
parents: 51211
diff changeset
881 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
882 *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
883 make_number (RGB (r, g, b))),
0dbfd1fe2e91 (add_system_logical_colors_to_map): New function.
Jason Rumney <jasonr@gnu.org>
parents: 51211
diff changeset
884 *system_colors);
0dbfd1fe2e91 (add_system_logical_colors_to_map): New function.
Jason Rumney <jasonr@gnu.org>
parents: 51211
diff changeset
885
0dbfd1fe2e91 (add_system_logical_colors_to_map): New function.
Jason Rumney <jasonr@gnu.org>
parents: 51211
diff changeset
886 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
887 color_size = sizeof (color_buffer);
0dbfd1fe2e91 (add_system_logical_colors_to_map): New function.
Jason Rumney <jasonr@gnu.org>
parents: 51211
diff changeset
888 index++;
0dbfd1fe2e91 (add_system_logical_colors_to_map): New function.
Jason Rumney <jasonr@gnu.org>
parents: 51211
diff changeset
889 }
0dbfd1fe2e91 (add_system_logical_colors_to_map): New function.
Jason Rumney <jasonr@gnu.org>
parents: 51211
diff changeset
890 RegCloseKey (colors_key);
0dbfd1fe2e91 (add_system_logical_colors_to_map): New function.
Jason Rumney <jasonr@gnu.org>
parents: 51211
diff changeset
891 }
0dbfd1fe2e91 (add_system_logical_colors_to_map): New function.
Jason Rumney <jasonr@gnu.org>
parents: 51211
diff changeset
892
0dbfd1fe2e91 (add_system_logical_colors_to_map): New function.
Jason Rumney <jasonr@gnu.org>
parents: 51211
diff changeset
893 UNBLOCK_INPUT;
0dbfd1fe2e91 (add_system_logical_colors_to_map): New function.
Jason Rumney <jasonr@gnu.org>
parents: 51211
diff changeset
894 }
0dbfd1fe2e91 (add_system_logical_colors_to_map): New function.
Jason Rumney <jasonr@gnu.org>
parents: 51211
diff changeset
895
0dbfd1fe2e91 (add_system_logical_colors_to_map): New function.
Jason Rumney <jasonr@gnu.org>
parents: 51211
diff changeset
896
55656
29b250a07fe0 (Fw32_register_hot_key, Fw32_unregister_hot_key)
Jason Rumney <jasonr@gnu.org>
parents: 55592
diff changeset
897 static Lisp_Object
16588
481b7874a1e9 Change identifiers of the form win32* to w32*.
Geoff Voelker <voelker@cs.washington.edu>
parents: 16259
diff changeset
898 x_to_w32_color (colorname)
13434
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
899 char * colorname;
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
900 {
35288
912ea0b8e09b (x_to_w32_color, x_set_icon_name, xlfd_strip_height)
Jason Rumney <jasonr@gnu.org>
parents: 34998
diff changeset
901 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
902
13434
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
903 BLOCK_INPUT;
19707
0181cc080316 Include limits.h and errno.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18508
diff changeset
904
0181cc080316 Include limits.h and errno.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18508
diff changeset
905 if (colorname[0] == '#')
0181cc080316 Include limits.h and errno.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18508
diff changeset
906 {
0181cc080316 Include limits.h and errno.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18508
diff changeset
907 /* 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
908 char *color;
0181cc080316 Include limits.h and errno.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18508
diff changeset
909 int size;
0181cc080316 Include limits.h and errno.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18508
diff changeset
910 color = colorname + 1;
47942
080b4586492b Fix typo in comment.
Juanma Barranquero <lekktu@gmail.com>
parents: 47731
diff changeset
911
79387
0ca197abc593 (Fw32_registered_hot_keys): Don't return the nil values corresponding
Juanma Barranquero <lekktu@gmail.com>
parents: 79381
diff changeset
912 size = strlen (color);
19707
0181cc080316 Include limits.h and errno.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18508
diff changeset
913 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
914 {
0181cc080316 Include limits.h and errno.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18508
diff changeset
915 UINT colorval;
0181cc080316 Include limits.h and errno.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18508
diff changeset
916 int i, pos;
0181cc080316 Include limits.h and errno.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18508
diff changeset
917 pos = 0;
0181cc080316 Include limits.h and errno.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18508
diff changeset
918 size /= 3;
0181cc080316 Include limits.h and errno.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18508
diff changeset
919 colorval = 0;
47942
080b4586492b Fix typo in comment.
Juanma Barranquero <lekktu@gmail.com>
parents: 47731
diff changeset
920
19707
0181cc080316 Include limits.h and errno.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18508
diff changeset
921 for (i = 0; i < 3; i++)
0181cc080316 Include limits.h and errno.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18508
diff changeset
922 {
0181cc080316 Include limits.h and errno.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18508
diff changeset
923 char *end;
0181cc080316 Include limits.h and errno.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18508
diff changeset
924 char t;
0181cc080316 Include limits.h and errno.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18508
diff changeset
925 unsigned long value;
0181cc080316 Include limits.h and errno.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18508
diff changeset
926
0181cc080316 Include limits.h and errno.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18508
diff changeset
927 /* 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
928 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
929 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
930 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
931 break;
0181cc080316 Include limits.h and errno.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18508
diff changeset
932 t = color[size];
0181cc080316 Include limits.h and errno.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18508
diff changeset
933 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
934 value = strtoul (color, &end, 16);
19707
0181cc080316 Include limits.h and errno.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18508
diff changeset
935 color[size] = t;
0181cc080316 Include limits.h and errno.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18508
diff changeset
936 if (errno == ERANGE || end - color != size)
0181cc080316 Include limits.h and errno.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18508
diff changeset
937 break;
0181cc080316 Include limits.h and errno.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18508
diff changeset
938 switch (size)
0181cc080316 Include limits.h and errno.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18508
diff changeset
939 {
0181cc080316 Include limits.h and errno.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18508
diff changeset
940 case 1:
0181cc080316 Include limits.h and errno.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18508
diff changeset
941 value = value * 0x10;
0181cc080316 Include limits.h and errno.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18508
diff changeset
942 break;
0181cc080316 Include limits.h and errno.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18508
diff changeset
943 case 2:
0181cc080316 Include limits.h and errno.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18508
diff changeset
944 break;
0181cc080316 Include limits.h and errno.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18508
diff changeset
945 case 3:
0181cc080316 Include limits.h and errno.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18508
diff changeset
946 value /= 0x10;
0181cc080316 Include limits.h and errno.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18508
diff changeset
947 break;
0181cc080316 Include limits.h and errno.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18508
diff changeset
948 case 4:
0181cc080316 Include limits.h and errno.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18508
diff changeset
949 value /= 0x100;
0181cc080316 Include limits.h and errno.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18508
diff changeset
950 break;
0181cc080316 Include limits.h and errno.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18508
diff changeset
951 }
0181cc080316 Include limits.h and errno.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18508
diff changeset
952 colorval |= (value << pos);
0181cc080316 Include limits.h and errno.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18508
diff changeset
953 pos += 0x8;
0181cc080316 Include limits.h and errno.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18508
diff changeset
954 if (i == 2)
0181cc080316 Include limits.h and errno.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18508
diff changeset
955 {
0181cc080316 Include limits.h and errno.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18508
diff changeset
956 UNBLOCK_INPUT;
55656
29b250a07fe0 (Fw32_register_hot_key, Fw32_unregister_hot_key)
Jason Rumney <jasonr@gnu.org>
parents: 55592
diff changeset
957 XSETINT (ret, colorval);
29b250a07fe0 (Fw32_register_hot_key, Fw32_unregister_hot_key)
Jason Rumney <jasonr@gnu.org>
parents: 55592
diff changeset
958 return ret;
19707
0181cc080316 Include limits.h and errno.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18508
diff changeset
959 }
0181cc080316 Include limits.h and errno.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18508
diff changeset
960 color = end;
0181cc080316 Include limits.h and errno.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18508
diff changeset
961 }
0181cc080316 Include limits.h and errno.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18508
diff changeset
962 }
0181cc080316 Include limits.h and errno.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18508
diff changeset
963 }
79387
0ca197abc593 (Fw32_registered_hot_keys): Don't return the nil values corresponding
Juanma Barranquero <lekktu@gmail.com>
parents: 79381
diff changeset
964 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
965 {
0181cc080316 Include limits.h and errno.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18508
diff changeset
966 char *color;
0181cc080316 Include limits.h and errno.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18508
diff changeset
967 UINT colorval;
0181cc080316 Include limits.h and errno.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18508
diff changeset
968 int i, pos;
0181cc080316 Include limits.h and errno.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18508
diff changeset
969 pos = 0;
0181cc080316 Include limits.h and errno.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18508
diff changeset
970
0181cc080316 Include limits.h and errno.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18508
diff changeset
971 colorval = 0;
0181cc080316 Include limits.h and errno.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18508
diff changeset
972 color = colorname + 4;
0181cc080316 Include limits.h and errno.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18508
diff changeset
973 for (i = 0; i < 3; i++)
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 char *end;
0181cc080316 Include limits.h and errno.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18508
diff changeset
976 unsigned long value;
47942
080b4586492b Fix typo in comment.
Juanma Barranquero <lekktu@gmail.com>
parents: 47731
diff changeset
977
19707
0181cc080316 Include limits.h and errno.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18508
diff changeset
978 /* 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
979 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
980 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
981 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
982 break;
79387
0ca197abc593 (Fw32_registered_hot_keys): Don't return the nil values corresponding
Juanma Barranquero <lekktu@gmail.com>
parents: 79381
diff changeset
983 value = strtoul (color, &end, 16);
19707
0181cc080316 Include limits.h and errno.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18508
diff changeset
984 if (errno == ERANGE)
0181cc080316 Include limits.h and errno.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18508
diff changeset
985 break;
0181cc080316 Include limits.h and errno.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18508
diff changeset
986 switch (end - color)
0181cc080316 Include limits.h and errno.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18508
diff changeset
987 {
0181cc080316 Include limits.h and errno.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18508
diff changeset
988 case 1:
0181cc080316 Include limits.h and errno.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18508
diff changeset
989 value = value * 0x10 + value;
0181cc080316 Include limits.h and errno.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18508
diff changeset
990 break;
0181cc080316 Include limits.h and errno.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18508
diff changeset
991 case 2:
0181cc080316 Include limits.h and errno.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18508
diff changeset
992 break;
0181cc080316 Include limits.h and errno.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18508
diff changeset
993 case 3:
0181cc080316 Include limits.h and errno.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18508
diff changeset
994 value /= 0x10;
0181cc080316 Include limits.h and errno.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18508
diff changeset
995 break;
0181cc080316 Include limits.h and errno.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18508
diff changeset
996 case 4:
0181cc080316 Include limits.h and errno.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18508
diff changeset
997 value /= 0x100;
0181cc080316 Include limits.h and errno.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18508
diff changeset
998 break;
0181cc080316 Include limits.h and errno.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18508
diff changeset
999 default:
0181cc080316 Include limits.h and errno.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18508
diff changeset
1000 value = ULONG_MAX;
0181cc080316 Include limits.h and errno.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18508
diff changeset
1001 }
0181cc080316 Include limits.h and errno.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18508
diff changeset
1002 if (value == ULONG_MAX)
0181cc080316 Include limits.h and errno.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18508
diff changeset
1003 break;
0181cc080316 Include limits.h and errno.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18508
diff changeset
1004 colorval |= (value << pos);
0181cc080316 Include limits.h and errno.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18508
diff changeset
1005 pos += 0x8;
0181cc080316 Include limits.h and errno.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18508
diff changeset
1006 if (i == 2)
0181cc080316 Include limits.h and errno.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18508
diff changeset
1007 {
0181cc080316 Include limits.h and errno.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18508
diff changeset
1008 if (*end != '\0')
0181cc080316 Include limits.h and errno.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18508
diff changeset
1009 break;
0181cc080316 Include limits.h and errno.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18508
diff changeset
1010 UNBLOCK_INPUT;
55656
29b250a07fe0 (Fw32_register_hot_key, Fw32_unregister_hot_key)
Jason Rumney <jasonr@gnu.org>
parents: 55592
diff changeset
1011 XSETINT (ret, colorval);
29b250a07fe0 (Fw32_register_hot_key, Fw32_unregister_hot_key)
Jason Rumney <jasonr@gnu.org>
parents: 55592
diff changeset
1012 return ret;
19707
0181cc080316 Include limits.h and errno.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18508
diff changeset
1013 }
0181cc080316 Include limits.h and errno.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18508
diff changeset
1014 if (*end != '/')
0181cc080316 Include limits.h and errno.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18508
diff changeset
1015 break;
0181cc080316 Include limits.h and errno.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18508
diff changeset
1016 color = end + 1;
0181cc080316 Include limits.h and errno.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18508
diff changeset
1017 }
0181cc080316 Include limits.h and errno.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18508
diff changeset
1018 }
79387
0ca197abc593 (Fw32_registered_hot_keys): Don't return the nil values corresponding
Juanma Barranquero <lekktu@gmail.com>
parents: 79381
diff changeset
1019 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
1020 {
0181cc080316 Include limits.h and errno.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18508
diff changeset
1021 /* This is an RGB Intensity specification. */
0181cc080316 Include limits.h and errno.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18508
diff changeset
1022 char *color;
0181cc080316 Include limits.h and errno.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18508
diff changeset
1023 UINT colorval;
0181cc080316 Include limits.h and errno.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18508
diff changeset
1024 int i, pos;
0181cc080316 Include limits.h and errno.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18508
diff changeset
1025 pos = 0;
0181cc080316 Include limits.h and errno.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18508
diff changeset
1026
0181cc080316 Include limits.h and errno.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18508
diff changeset
1027 colorval = 0;
0181cc080316 Include limits.h and errno.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18508
diff changeset
1028 color = colorname + 5;
0181cc080316 Include limits.h and errno.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18508
diff changeset
1029 for (i = 0; i < 3; i++)
0181cc080316 Include limits.h and errno.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18508
diff changeset
1030 {
0181cc080316 Include limits.h and errno.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18508
diff changeset
1031 char *end;
0181cc080316 Include limits.h and errno.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18508
diff changeset
1032 double value;
0181cc080316 Include limits.h and errno.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18508
diff changeset
1033 UINT val;
0181cc080316 Include limits.h and errno.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18508
diff changeset
1034
79387
0ca197abc593 (Fw32_registered_hot_keys): Don't return the nil values corresponding
Juanma Barranquero <lekktu@gmail.com>
parents: 79381
diff changeset
1035 value = strtod (color, &end);
19707
0181cc080316 Include limits.h and errno.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18508
diff changeset
1036 if (errno == ERANGE)
0181cc080316 Include limits.h and errno.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18508
diff changeset
1037 break;
0181cc080316 Include limits.h and errno.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18508
diff changeset
1038 if (value < 0.0 || value > 1.0)
0181cc080316 Include limits.h and errno.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18508
diff changeset
1039 break;
0181cc080316 Include limits.h and errno.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18508
diff changeset
1040 val = (UINT)(0x100 * value);
47942
080b4586492b Fix typo in comment.
Juanma Barranquero <lekktu@gmail.com>
parents: 47731
diff changeset
1041 /* 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
1042 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
1043 fixes the 1.0 case. */
0181cc080316 Include limits.h and errno.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18508
diff changeset
1044 if (val == 0x100)
0181cc080316 Include limits.h and errno.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18508
diff changeset
1045 val = 0xFF;
0181cc080316 Include limits.h and errno.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18508
diff changeset
1046 colorval |= (val << pos);
0181cc080316 Include limits.h and errno.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18508
diff changeset
1047 pos += 0x8;
0181cc080316 Include limits.h and errno.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18508
diff changeset
1048 if (i == 2)
0181cc080316 Include limits.h and errno.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18508
diff changeset
1049 {
0181cc080316 Include limits.h and errno.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18508
diff changeset
1050 if (*end != '\0')
0181cc080316 Include limits.h and errno.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18508
diff changeset
1051 break;
0181cc080316 Include limits.h and errno.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18508
diff changeset
1052 UNBLOCK_INPUT;
55656
29b250a07fe0 (Fw32_register_hot_key, Fw32_unregister_hot_key)
Jason Rumney <jasonr@gnu.org>
parents: 55592
diff changeset
1053 XSETINT (ret, colorval);
29b250a07fe0 (Fw32_register_hot_key, Fw32_unregister_hot_key)
Jason Rumney <jasonr@gnu.org>
parents: 55592
diff changeset
1054 return ret;
19707
0181cc080316 Include limits.h and errno.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18508
diff changeset
1055 }
0181cc080316 Include limits.h and errno.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18508
diff changeset
1056 if (*end != '/')
0181cc080316 Include limits.h and errno.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18508
diff changeset
1057 break;
0181cc080316 Include limits.h and errno.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18508
diff changeset
1058 color = end + 1;
0181cc080316 Include limits.h and errno.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18508
diff changeset
1059 }
0181cc080316 Include limits.h and errno.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18508
diff changeset
1060 }
0181cc080316 Include limits.h and errno.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18508
diff changeset
1061 /* 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
1062 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
1063 RGB. */
23314
87acd2b6ce97 (w32_color_map_lookup): New function.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23160
diff changeset
1064
87acd2b6ce97 (w32_color_map_lookup): New function.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23160
diff changeset
1065 /* 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
1066 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
1067 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
1068 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
1069 ret = w32_color_map_lookup (colorname);
47942
080b4586492b Fix typo in comment.
Juanma Barranquero <lekktu@gmail.com>
parents: 47731
diff changeset
1070 if (NILP (ret))
13434
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
1071 {
23314
87acd2b6ce97 (w32_color_map_lookup): New function.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23160
diff changeset
1072 int len = strlen (colorname);
87acd2b6ce97 (w32_color_map_lookup): New function.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23160
diff changeset
1073
47942
080b4586492b Fix typo in comment.
Juanma Barranquero <lekktu@gmail.com>
parents: 47731
diff changeset
1074 if (isdigit (colorname[len - 1]))
13434
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
1075 {
39548
6192be048459 (x_to_w32_color): Fix argument to alloca.
Andrew Innes <andrewi@gnu.org>
parents: 39137
diff changeset
1076 char *ptr, *approx = alloca (len + 1);
23314
87acd2b6ce97 (w32_color_map_lookup): New function.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23160
diff changeset
1077
87acd2b6ce97 (w32_color_map_lookup): New function.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23160
diff changeset
1078 strcpy (approx, colorname);
87acd2b6ce97 (w32_color_map_lookup): New function.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23160
diff changeset
1079 ptr = &approx[len - 1];
47942
080b4586492b Fix typo in comment.
Juanma Barranquero <lekktu@gmail.com>
parents: 47731
diff changeset
1080 while (ptr > approx && isdigit (*ptr))
23314
87acd2b6ce97 (w32_color_map_lookup): New function.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23160
diff changeset
1081 *ptr-- = '\0';
87acd2b6ce97 (w32_color_map_lookup): New function.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23160
diff changeset
1082
87acd2b6ce97 (w32_color_map_lookup): New function.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23160
diff changeset
1083 ret = w32_color_map_lookup (approx);
13434
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
1084 }
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
1085 }
47942
080b4586492b Fix typo in comment.
Juanma Barranquero <lekktu@gmail.com>
parents: 47731
diff changeset
1086
13434
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
1087 UNBLOCK_INPUT;
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
1088 return ret;
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
1089 }
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
1090
15147
38c0ce06203f (quit_char, Vwin32_enable_italics, Vwin32_enable_palette):
Geoff Voelker <voelker@cs.washington.edu>
parents: 15034
diff changeset
1091 void
16588
481b7874a1e9 Change identifiers of the form win32* to w32*.
Geoff Voelker <voelker@cs.washington.edu>
parents: 16259
diff changeset
1092 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
1093 {
16588
481b7874a1e9 Change identifiers of the form win32* to w32*.
Geoff Voelker <voelker@cs.washington.edu>
parents: 16259
diff changeset
1094 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
1095 LOGPALETTE * log_palette;
38c0ce06203f (quit_char, Vwin32_enable_italics, Vwin32_enable_palette):
Geoff Voelker <voelker@cs.washington.edu>
parents: 15034
diff changeset
1096 HPALETTE new_palette;
38c0ce06203f (quit_char, Vwin32_enable_italics, Vwin32_enable_palette):
Geoff Voelker <voelker@cs.washington.edu>
parents: 15034
diff changeset
1097 int i;
38c0ce06203f (quit_char, Vwin32_enable_italics, Vwin32_enable_palette):
Geoff Voelker <voelker@cs.washington.edu>
parents: 15034
diff changeset
1098
38c0ce06203f (quit_char, Vwin32_enable_italics, Vwin32_enable_palette):
Geoff Voelker <voelker@cs.washington.edu>
parents: 15034
diff changeset
1099 /* 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
1100 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
1101 return;
38c0ce06203f (quit_char, Vwin32_enable_italics, Vwin32_enable_palette):
Geoff Voelker <voelker@cs.washington.edu>
parents: 15034
diff changeset
1102
38c0ce06203f (quit_char, Vwin32_enable_italics, Vwin32_enable_palette):
Geoff Voelker <voelker@cs.washington.edu>
parents: 15034
diff changeset
1103 log_palette = (LOGPALETTE *)
38c0ce06203f (quit_char, Vwin32_enable_italics, Vwin32_enable_palette):
Geoff Voelker <voelker@cs.washington.edu>
parents: 15034
diff changeset
1104 alloca (sizeof (LOGPALETTE) +
16588
481b7874a1e9 Change identifiers of the form win32* to w32*.
Geoff Voelker <voelker@cs.washington.edu>
parents: 16259
diff changeset
1105 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
1106 log_palette->palVersion = 0x300;
16588
481b7874a1e9 Change identifiers of the form win32* to w32*.
Geoff Voelker <voelker@cs.washington.edu>
parents: 16259
diff changeset
1107 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
1108
481b7874a1e9 Change identifiers of the form win32* to w32*.
Geoff Voelker <voelker@cs.washington.edu>
parents: 16259
diff changeset
1109 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
1110 for (i = 0;
16588
481b7874a1e9 Change identifiers of the form win32* to w32*.
Geoff Voelker <voelker@cs.washington.edu>
parents: 16259
diff changeset
1111 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
1112 i++, list = list->next)
38c0ce06203f (quit_char, Vwin32_enable_italics, Vwin32_enable_palette):
Geoff Voelker <voelker@cs.washington.edu>
parents: 15034
diff changeset
1113 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
1114
38c0ce06203f (quit_char, Vwin32_enable_italics, Vwin32_enable_palette):
Geoff Voelker <voelker@cs.washington.edu>
parents: 15034
diff changeset
1115 new_palette = CreatePalette (log_palette);
38c0ce06203f (quit_char, Vwin32_enable_italics, Vwin32_enable_palette):
Geoff Voelker <voelker@cs.washington.edu>
parents: 15034
diff changeset
1116
38c0ce06203f (quit_char, Vwin32_enable_italics, Vwin32_enable_palette):
Geoff Voelker <voelker@cs.washington.edu>
parents: 15034
diff changeset
1117 enter_crit ();
38c0ce06203f (quit_char, Vwin32_enable_italics, Vwin32_enable_palette):
Geoff Voelker <voelker@cs.washington.edu>
parents: 15034
diff changeset
1118
16588
481b7874a1e9 Change identifiers of the form win32* to w32*.
Geoff Voelker <voelker@cs.washington.edu>
parents: 16259
diff changeset
1119 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
1120 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
1121 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
1122
38c0ce06203f (quit_char, Vwin32_enable_italics, Vwin32_enable_palette):
Geoff Voelker <voelker@cs.washington.edu>
parents: 15034
diff changeset
1123 /* 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
1124 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
1125
38c0ce06203f (quit_char, Vwin32_enable_italics, Vwin32_enable_palette):
Geoff Voelker <voelker@cs.washington.edu>
parents: 15034
diff changeset
1126 leave_crit ();
38c0ce06203f (quit_char, Vwin32_enable_italics, Vwin32_enable_palette):
Geoff Voelker <voelker@cs.washington.edu>
parents: 15034
diff changeset
1127 }
38c0ce06203f (quit_char, Vwin32_enable_italics, Vwin32_enable_palette):
Geoff Voelker <voelker@cs.washington.edu>
parents: 15034
diff changeset
1128
16588
481b7874a1e9 Change identifiers of the form win32* to w32*.
Geoff Voelker <voelker@cs.washington.edu>
parents: 16259
diff changeset
1129 #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
1130 #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
1131 do \
38c0ce06203f (quit_char, Vwin32_enable_italics, Vwin32_enable_palette):
Geoff Voelker <voelker@cs.washington.edu>
parents: 15034
diff changeset
1132 { \
38c0ce06203f (quit_char, Vwin32_enable_italics, Vwin32_enable_palette):
Geoff Voelker <voelker@cs.washington.edu>
parents: 15034
diff changeset
1133 pe.peRed = GetRValue (color); \
38c0ce06203f (quit_char, Vwin32_enable_italics, Vwin32_enable_palette):
Geoff Voelker <voelker@cs.washington.edu>
parents: 15034
diff changeset
1134 pe.peGreen = GetGValue (color); \
38c0ce06203f (quit_char, Vwin32_enable_italics, Vwin32_enable_palette):
Geoff Voelker <voelker@cs.washington.edu>
parents: 15034
diff changeset
1135 pe.peBlue = GetBValue (color); \
38c0ce06203f (quit_char, Vwin32_enable_italics, Vwin32_enable_palette):
Geoff Voelker <voelker@cs.washington.edu>
parents: 15034
diff changeset
1136 pe.peFlags = 0; \
38c0ce06203f (quit_char, Vwin32_enable_italics, Vwin32_enable_palette):
Geoff Voelker <voelker@cs.washington.edu>
parents: 15034
diff changeset
1137 } while (0)
38c0ce06203f (quit_char, Vwin32_enable_italics, Vwin32_enable_palette):
Geoff Voelker <voelker@cs.washington.edu>
parents: 15034
diff changeset
1138
38c0ce06203f (quit_char, Vwin32_enable_italics, Vwin32_enable_palette):
Geoff Voelker <voelker@cs.washington.edu>
parents: 15034
diff changeset
1139 #if 0
38c0ce06203f (quit_char, Vwin32_enable_italics, Vwin32_enable_palette):
Geoff Voelker <voelker@cs.washington.edu>
parents: 15034
diff changeset
1140 /* 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
1141 void
16588
481b7874a1e9 Change identifiers of the form win32* to w32*.
Geoff Voelker <voelker@cs.washington.edu>
parents: 16259
diff changeset
1142 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
1143 {
16588
481b7874a1e9 Change identifiers of the form win32* to w32*.
Geoff Voelker <voelker@cs.washington.edu>
parents: 16259
diff changeset
1144 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
1145
481b7874a1e9 Change identifiers of the form win32* to w32*.
Geoff Voelker <voelker@cs.washington.edu>
parents: 16259
diff changeset
1146 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
1147 return;
38c0ce06203f (quit_char, Vwin32_enable_italics, Vwin32_enable_palette):
Geoff Voelker <voelker@cs.washington.edu>
parents: 15034
diff changeset
1148
38c0ce06203f (quit_char, Vwin32_enable_italics, Vwin32_enable_palette):
Geoff Voelker <voelker@cs.washington.edu>
parents: 15034
diff changeset
1149 /* 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
1150 while (list)
38c0ce06203f (quit_char, Vwin32_enable_italics, Vwin32_enable_palette):
Geoff Voelker <voelker@cs.washington.edu>
parents: 15034
diff changeset
1151 {
16588
481b7874a1e9 Change identifiers of the form win32* to w32*.
Geoff Voelker <voelker@cs.washington.edu>
parents: 16259
diff changeset
1152 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
1153 {
38c0ce06203f (quit_char, Vwin32_enable_italics, Vwin32_enable_palette):
Geoff Voelker <voelker@cs.washington.edu>
parents: 15034
diff changeset
1154 ++list->refcount;
38c0ce06203f (quit_char, Vwin32_enable_italics, Vwin32_enable_palette):
Geoff Voelker <voelker@cs.washington.edu>
parents: 15034
diff changeset
1155 return;
38c0ce06203f (quit_char, Vwin32_enable_italics, Vwin32_enable_palette):
Geoff Voelker <voelker@cs.washington.edu>
parents: 15034
diff changeset
1156 }
38c0ce06203f (quit_char, Vwin32_enable_italics, Vwin32_enable_palette):
Geoff Voelker <voelker@cs.washington.edu>
parents: 15034
diff changeset
1157 list = list->next;
38c0ce06203f (quit_char, Vwin32_enable_italics, Vwin32_enable_palette):
Geoff Voelker <voelker@cs.washington.edu>
parents: 15034
diff changeset
1158 }
38c0ce06203f (quit_char, Vwin32_enable_italics, Vwin32_enable_palette):
Geoff Voelker <voelker@cs.washington.edu>
parents: 15034
diff changeset
1159
38c0ce06203f (quit_char, Vwin32_enable_italics, Vwin32_enable_palette):
Geoff Voelker <voelker@cs.washington.edu>
parents: 15034
diff changeset
1160 /* 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
1161 list = (struct w32_palette_entry *)
481b7874a1e9 Change identifiers of the form win32* to w32*.
Geoff Voelker <voelker@cs.washington.edu>
parents: 16259
diff changeset
1162 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
1163 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
1164 list->refcount = 1;
16588
481b7874a1e9 Change identifiers of the form win32* to w32*.
Geoff Voelker <voelker@cs.washington.edu>
parents: 16259
diff changeset
1165 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
1166 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
1167 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
1168
38c0ce06203f (quit_char, Vwin32_enable_italics, Vwin32_enable_palette):
Geoff Voelker <voelker@cs.washington.edu>
parents: 15034
diff changeset
1169 /* 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
1170 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
1171 }
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 void
16588
481b7874a1e9 Change identifiers of the form win32* to w32*.
Geoff Voelker <voelker@cs.washington.edu>
parents: 16259
diff changeset
1174 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
1175 {
16588
481b7874a1e9 Change identifiers of the form win32* to w32*.
Geoff Voelker <voelker@cs.washington.edu>
parents: 16259
diff changeset
1176 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
1177 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
1178
481b7874a1e9 Change identifiers of the form win32* to w32*.
Geoff Voelker <voelker@cs.washington.edu>
parents: 16259
diff changeset
1179 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
1180 return;
38c0ce06203f (quit_char, Vwin32_enable_italics, Vwin32_enable_palette):
Geoff Voelker <voelker@cs.washington.edu>
parents: 15034
diff changeset
1181
38c0ce06203f (quit_char, Vwin32_enable_italics, Vwin32_enable_palette):
Geoff Voelker <voelker@cs.washington.edu>
parents: 15034
diff changeset
1182 /* 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
1183 while (list)
38c0ce06203f (quit_char, Vwin32_enable_italics, Vwin32_enable_palette):
Geoff Voelker <voelker@cs.washington.edu>
parents: 15034
diff changeset
1184 {
16588
481b7874a1e9 Change identifiers of the form win32* to w32*.
Geoff Voelker <voelker@cs.washington.edu>
parents: 16259
diff changeset
1185 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
1186 {
38c0ce06203f (quit_char, Vwin32_enable_italics, Vwin32_enable_palette):
Geoff Voelker <voelker@cs.washington.edu>
parents: 15034
diff changeset
1187 if (--list->refcount == 0)
38c0ce06203f (quit_char, Vwin32_enable_italics, Vwin32_enable_palette):
Geoff Voelker <voelker@cs.washington.edu>
parents: 15034
diff changeset
1188 {
38c0ce06203f (quit_char, Vwin32_enable_italics, Vwin32_enable_palette):
Geoff Voelker <voelker@cs.washington.edu>
parents: 15034
diff changeset
1189 *prev = list->next;
38c0ce06203f (quit_char, Vwin32_enable_italics, Vwin32_enable_palette):
Geoff Voelker <voelker@cs.washington.edu>
parents: 15034
diff changeset
1190 xfree (list);
16588
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)->num_colors--;
15147
38c0ce06203f (quit_char, Vwin32_enable_italics, Vwin32_enable_palette):
Geoff Voelker <voelker@cs.washington.edu>
parents: 15034
diff changeset
1192 break;
38c0ce06203f (quit_char, Vwin32_enable_italics, Vwin32_enable_palette):
Geoff Voelker <voelker@cs.washington.edu>
parents: 15034
diff changeset
1193 }
38c0ce06203f (quit_char, Vwin32_enable_italics, Vwin32_enable_palette):
Geoff Voelker <voelker@cs.washington.edu>
parents: 15034
diff changeset
1194 else
38c0ce06203f (quit_char, Vwin32_enable_italics, Vwin32_enable_palette):
Geoff Voelker <voelker@cs.washington.edu>
parents: 15034
diff changeset
1195 return;
38c0ce06203f (quit_char, Vwin32_enable_italics, Vwin32_enable_palette):
Geoff Voelker <voelker@cs.washington.edu>
parents: 15034
diff changeset
1196 }
38c0ce06203f (quit_char, Vwin32_enable_italics, Vwin32_enable_palette):
Geoff Voelker <voelker@cs.washington.edu>
parents: 15034
diff changeset
1197 prev = &list->next;
38c0ce06203f (quit_char, Vwin32_enable_italics, Vwin32_enable_palette):
Geoff Voelker <voelker@cs.washington.edu>
parents: 15034
diff changeset
1198 list = list->next;
38c0ce06203f (quit_char, Vwin32_enable_italics, Vwin32_enable_palette):
Geoff Voelker <voelker@cs.washington.edu>
parents: 15034
diff changeset
1199 }
38c0ce06203f (quit_char, Vwin32_enable_italics, Vwin32_enable_palette):
Geoff Voelker <voelker@cs.washington.edu>
parents: 15034
diff changeset
1200
38c0ce06203f (quit_char, Vwin32_enable_italics, Vwin32_enable_palette):
Geoff Voelker <voelker@cs.washington.edu>
parents: 15034
diff changeset
1201 /* 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
1202 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
1203 }
38c0ce06203f (quit_char, Vwin32_enable_italics, Vwin32_enable_palette):
Geoff Voelker <voelker@cs.washington.edu>
parents: 15034
diff changeset
1204 #endif
38c0ce06203f (quit_char, Vwin32_enable_italics, Vwin32_enable_palette):
Geoff Voelker <voelker@cs.washington.edu>
parents: 15034
diff changeset
1205
27397
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
1206
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
1207 /* Gamma-correct COLOR on frame F. */
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
1208
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
1209 void
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
1210 gamma_correct (f, color)
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
1211 struct frame *f;
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
1212 COLORREF *color;
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
1213 {
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
1214 if (f->gamma)
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
1215 {
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
1216 *color = PALETTERGB (
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
1217 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
1218 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
1219 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
1220 }
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
1221 }
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
1222
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
1223
13434
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
1224 /* Decide if color named COLOR is valid for the display associated with
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
1225 the selected frame; if so, return the rgb values in COLOR_DEF.
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
1226 If ALLOC is nonzero, allocate a new colormap cell. */
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
1227
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
1228 int
27397
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
1229 w32_defined_color (f, color, color_def, alloc)
13434
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
1230 FRAME_PTR f;
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
1231 char *color;
27397
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
1232 XColor *color_def;
13434
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
1233 int alloc;
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
1234 {
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
1235 register Lisp_Object tem;
27397
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
1236 COLORREF w32_color_ref;
14353
d0d8d9d73f7f backout 1.3
Geoff Voelker <voelker@cs.washington.edu>
parents: 14243
diff changeset
1237
16588
481b7874a1e9 Change identifiers of the form win32* to w32*.
Geoff Voelker <voelker@cs.washington.edu>
parents: 16259
diff changeset
1238 tem = x_to_w32_color (color);
14353
d0d8d9d73f7f backout 1.3
Geoff Voelker <voelker@cs.washington.edu>
parents: 14243
diff changeset
1239
47942
080b4586492b Fix typo in comment.
Juanma Barranquero <lekktu@gmail.com>
parents: 47731
diff changeset
1240 if (!NILP (tem))
13434
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
1241 {
27516
8001542eaee2 (w32_defined_color): Check for valid frame before
Jason Rumney <jasonr@gnu.org>
parents: 27407
diff changeset
1242 if (f)
8001542eaee2 (w32_defined_color): Check for valid frame before
Jason Rumney <jasonr@gnu.org>
parents: 27407
diff changeset
1243 {
8001542eaee2 (w32_defined_color): Check for valid frame before
Jason Rumney <jasonr@gnu.org>
parents: 27407
diff changeset
1244 /* Apply gamma correction. */
8001542eaee2 (w32_defined_color): Check for valid frame before
Jason Rumney <jasonr@gnu.org>
parents: 27407
diff changeset
1245 w32_color_ref = XUINT (tem);
8001542eaee2 (w32_defined_color): Check for valid frame before
Jason Rumney <jasonr@gnu.org>
parents: 27407
diff changeset
1246 gamma_correct (f, &w32_color_ref);
8001542eaee2 (w32_defined_color): Check for valid frame before
Jason Rumney <jasonr@gnu.org>
parents: 27407
diff changeset
1247 XSETINT (tem, w32_color_ref);
8001542eaee2 (w32_defined_color): Check for valid frame before
Jason Rumney <jasonr@gnu.org>
parents: 27407
diff changeset
1248 }
27407
7df920562cbe (w32_defined_color): Apply gamma correction before trying to map to
Jason Rumney <jasonr@gnu.org>
parents: 27397
diff changeset
1249
7df920562cbe (w32_defined_color): Apply gamma correction before trying to map to
Jason Rumney <jasonr@gnu.org>
parents: 27397
diff changeset
1250 /* 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
1251 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
1252 {
16588
481b7874a1e9 Change identifiers of the form win32* to w32*.
Geoff Voelker <voelker@cs.washington.edu>
parents: 16259
diff changeset
1253 struct w32_palette_entry * entry =
27516
8001542eaee2 (w32_defined_color): Check for valid frame before
Jason Rumney <jasonr@gnu.org>
parents: 27407
diff changeset
1254 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
1255 struct w32_palette_entry ** prev =
27516
8001542eaee2 (w32_defined_color): Check for valid frame before
Jason Rumney <jasonr@gnu.org>
parents: 27407
diff changeset
1256 &one_w32_display_info.color_list;
47942
080b4586492b Fix typo in comment.
Juanma Barranquero <lekktu@gmail.com>
parents: 47731
diff changeset
1257
15147
38c0ce06203f (quit_char, Vwin32_enable_italics, Vwin32_enable_palette):
Geoff Voelker <voelker@cs.washington.edu>
parents: 15034
diff changeset
1258 /* 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
1259 while (entry)
38c0ce06203f (quit_char, Vwin32_enable_italics, Vwin32_enable_palette):
Geoff Voelker <voelker@cs.washington.edu>
parents: 15034
diff changeset
1260 {
16588
481b7874a1e9 Change identifiers of the form win32* to w32*.
Geoff Voelker <voelker@cs.washington.edu>
parents: 16259
diff changeset
1261 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
1262 break;
38c0ce06203f (quit_char, Vwin32_enable_italics, Vwin32_enable_palette):
Geoff Voelker <voelker@cs.washington.edu>
parents: 15034
diff changeset
1263 prev = &entry->next;
38c0ce06203f (quit_char, Vwin32_enable_italics, Vwin32_enable_palette):
Geoff Voelker <voelker@cs.washington.edu>
parents: 15034
diff changeset
1264 entry = entry->next;
38c0ce06203f (quit_char, Vwin32_enable_italics, Vwin32_enable_palette):
Geoff Voelker <voelker@cs.washington.edu>
parents: 15034
diff changeset
1265 }
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 if (entry == NULL && alloc)
38c0ce06203f (quit_char, Vwin32_enable_italics, Vwin32_enable_palette):
Geoff Voelker <voelker@cs.washington.edu>
parents: 15034
diff changeset
1268 {
38c0ce06203f (quit_char, Vwin32_enable_italics, Vwin32_enable_palette):
Geoff Voelker <voelker@cs.washington.edu>
parents: 15034
diff changeset
1269 /* 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
1270 entry = (struct w32_palette_entry *)
481b7874a1e9 Change identifiers of the form win32* to w32*.
Geoff Voelker <voelker@cs.washington.edu>
parents: 16259
diff changeset
1271 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
1272 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
1273 entry->next = NULL;
38c0ce06203f (quit_char, Vwin32_enable_italics, Vwin32_enable_palette):
Geoff Voelker <voelker@cs.washington.edu>
parents: 15034
diff changeset
1274 *prev = entry;
27516
8001542eaee2 (w32_defined_color): Check for valid frame before
Jason Rumney <jasonr@gnu.org>
parents: 27407
diff changeset
1275 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
1276
38c0ce06203f (quit_char, Vwin32_enable_italics, Vwin32_enable_palette):
Geoff Voelker <voelker@cs.washington.edu>
parents: 15034
diff changeset
1277 /* 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
1278 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
1279 }
38c0ce06203f (quit_char, Vwin32_enable_italics, Vwin32_enable_palette):
Geoff Voelker <voelker@cs.washington.edu>
parents: 15034
diff changeset
1280 }
38c0ce06203f (quit_char, Vwin32_enable_italics, Vwin32_enable_palette):
Geoff Voelker <voelker@cs.washington.edu>
parents: 15034
diff changeset
1281 /* 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
1282 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
1283 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
1284 w32_color_ref = XUINT (tem) | 0x2000000;
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_def->pixel = w32_color_ref;
48346
140fd0332d31 (w32_defined_color): Adjust RGB values for Emacs.
Jason Rumney <jasonr@gnu.org>
parents: 47983
diff changeset
1287 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
1288 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
1289 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
1290
13434
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
1291 return 1;
15147
38c0ce06203f (quit_char, Vwin32_enable_italics, Vwin32_enable_palette):
Geoff Voelker <voelker@cs.washington.edu>
parents: 15034
diff changeset
1292 }
47942
080b4586492b Fix typo in comment.
Juanma Barranquero <lekktu@gmail.com>
parents: 47731
diff changeset
1293 else
14353
d0d8d9d73f7f backout 1.3
Geoff Voelker <voelker@cs.washington.edu>
parents: 14243
diff changeset
1294 {
d0d8d9d73f7f backout 1.3
Geoff Voelker <voelker@cs.washington.edu>
parents: 14243
diff changeset
1295 return 0;
d0d8d9d73f7f backout 1.3
Geoff Voelker <voelker@cs.washington.edu>
parents: 14243
diff changeset
1296 }
13434
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
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
1299 /* 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
1300 suitable for screen F.
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
1301 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
1302 ARG says. */
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
1303
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
1304 int
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
1305 x_decode_color (f, arg, def)
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
1306 FRAME_PTR f;
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
1307 Lisp_Object arg;
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
1308 int def;
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
1309 {
27397
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
1310 XColor cdef;
13434
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
1311
40656
cdfd4d09b79a Update usage of CHECK_ macros (remove unused second argument).
Pavel Janík <Pavel@Janik.cz>
parents: 40528
diff changeset
1312 CHECK_STRING (arg);
13434
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
1313
46370
40db0673e6f0 Most uses of XSTRING combined with STRING_BYTES or indirection changed to
Ken Raeburn <raeburn@raeburn.org>
parents: 46293
diff changeset
1314 if (strcmp (SDATA (arg), "black") == 0)
13434
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
1315 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
1316 else if (strcmp (SDATA (arg), "white") == 0)
13434
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
1317 return WHITE_PIX_DEFAULT (f);
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
1318
16588
481b7874a1e9 Change identifiers of the form win32* to w32*.
Geoff Voelker <voelker@cs.washington.edu>
parents: 16259
diff changeset
1319 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
1320 return def;
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
1321
27397
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
1322 /* w32_defined_color is responsible for coping with failures
13434
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
1323 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
1324 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
1325 return cdef.pixel;
13434
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
1326
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
1327 /* defined_color failed; return an ultimate default. */
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
1328 return def;
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
1329 }
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
1330
27397
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
1331
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
1332
13434
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
1333 /* Functions called only from `x_set_frame_param'
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
1334 to set individual parameters.
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
1335
16588
481b7874a1e9 Change identifiers of the form win32* to w32*.
Geoff Voelker <voelker@cs.washington.edu>
parents: 16259
diff changeset
1336 If FRAME_W32_WINDOW (f) is 0,
13434
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
1337 the frame is being created and its window does not exist yet.
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
1338 In that case, just record the parameter's new value
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
1339 in the standard place; do not attempt to change the window. */
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
1340
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
1341 void
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
1342 x_set_foreground_color (f, arg, oldval)
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
1343 struct frame *f;
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
1344 Lisp_Object arg, oldval;
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
1345 {
40120
03eb905a4d8e (Fx_file_dialog): Pass a filter to GetOpenFileName.
Jason Rumney <jasonr@gnu.org>
parents: 40009
diff changeset
1346 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
1347 PIX_TYPE fg, old_fg;
03eb905a4d8e (Fx_file_dialog): Pass a filter to GetOpenFileName.
Jason Rumney <jasonr@gnu.org>
parents: 40009
diff changeset
1348
03eb905a4d8e (Fx_file_dialog): Pass a filter to GetOpenFileName.
Jason Rumney <jasonr@gnu.org>
parents: 40009
diff changeset
1349 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
1350 old_fg = FRAME_FOREGROUND_PIXEL (f);
03eb905a4d8e (Fx_file_dialog): Pass a filter to GetOpenFileName.
Jason Rumney <jasonr@gnu.org>
parents: 40009
diff changeset
1351 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
1352
16588
481b7874a1e9 Change identifiers of the form win32* to w32*.
Geoff Voelker <voelker@cs.washington.edu>
parents: 16259
diff changeset
1353 if (FRAME_W32_WINDOW (f) != 0)
13434
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
1354 {
40120
03eb905a4d8e (Fx_file_dialog): Pass a filter to GetOpenFileName.
Jason Rumney <jasonr@gnu.org>
parents: 40009
diff changeset
1355 if (x->cursor_pixel == old_fg)
109326
269057771f8c Fix bug #6609.
Eli Zaretskii <eliz@gnu.org>
parents: 109295
diff changeset
1356 {
269057771f8c Fix bug #6609.
Eli Zaretskii <eliz@gnu.org>
parents: 109295
diff changeset
1357 x->cursor_pixel = fg;
269057771f8c Fix bug #6609.
Eli Zaretskii <eliz@gnu.org>
parents: 109295
diff changeset
1358 x->cursor_gc->background = fg;
269057771f8c Fix bug #6609.
Eli Zaretskii <eliz@gnu.org>
parents: 109295
diff changeset
1359 }
40120
03eb905a4d8e (Fx_file_dialog): Pass a filter to GetOpenFileName.
Jason Rumney <jasonr@gnu.org>
parents: 40009
diff changeset
1360
27397
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
1361 update_face_from_frame_parameter (f, Qforeground_color, arg);
13434
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
1362 if (FRAME_VISIBLE_P (f))
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
1363 redraw_frame (f);
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
1364 }
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
1365 }
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
1366
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
1367 void
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
1368 x_set_background_color (f, arg, oldval)
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
1369 struct frame *f;
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
1370 Lisp_Object arg, oldval;
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
1371 {
27397
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
1372 FRAME_BACKGROUND_PIXEL (f)
13434
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
1373 = x_decode_color (f, arg, WHITE_PIX_DEFAULT (f));
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
1374
16588
481b7874a1e9 Change identifiers of the form win32* to w32*.
Geoff Voelker <voelker@cs.washington.edu>
parents: 16259
diff changeset
1375 if (FRAME_W32_WINDOW (f) != 0)
13434
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
1376 {
27397
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
1377 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
1378 FRAME_BACKGROUND_PIXEL (f));
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
1379
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
1380 update_face_from_frame_parameter (f, Qbackground_color, arg);
13434
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
1381
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
1382 if (FRAME_VISIBLE_P (f))
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
1383 redraw_frame (f);
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
1384 }
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
1385 }
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
1386
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
1387 void
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
1388 x_set_mouse_color (f, arg, oldval)
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
1389 struct frame *f;
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
1390 Lisp_Object arg, oldval;
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
1391 {
50229
e3a41ffa1cba Remove setup of cross_cursor (already has hand_cursor).
Kim F. Storm <storm@cua.dk>
parents: 50164
diff changeset
1392 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
1393 int count;
13434
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
1394 int mask_color;
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
1395
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
1396 if (!EQ (Qnil, arg))
16588
481b7874a1e9 Change identifiers of the form win32* to w32*.
Geoff Voelker <voelker@cs.washington.edu>
parents: 16259
diff changeset
1397 f->output_data.w32->mouse_pixel
13434
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
1398 = 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
1399 mask_color = FRAME_BACKGROUND_PIXEL (f);
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
1400
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
1401 /* 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
1402 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
1403 && mask_color == FRAME_BACKGROUND_PIXEL (f))
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
1404 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
1405
100982
7c89b12c3a26 (Vx_pointer_shape, Vx_nontext_pointer_shape)
Jason Rumney <jasonr@gnu.org>
parents: 100951
diff changeset
1406 #if 0 /* TODO : Mouse cursor customization. */
13434
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
1407 BLOCK_INPUT;
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
1408
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
1409 /* 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
1410 count = x_catch_errors (FRAME_W32_DISPLAY (f));
13434
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
1411
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
1412 if (!EQ (Qnil, Vx_pointer_shape))
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
1413 {
40656
cdfd4d09b79a Update usage of CHECK_ macros (remove unused second argument).
Pavel Janík <Pavel@Janik.cz>
parents: 40528
diff changeset
1414 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
1415 cursor = XCreateFontCursor (FRAME_W32_DISPLAY (f), XINT (Vx_pointer_shape));
13434
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
1416 }
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
1417 else
16588
481b7874a1e9 Change identifiers of the form win32* to w32*.
Geoff Voelker <voelker@cs.washington.edu>
parents: 16259
diff changeset
1418 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
1419 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
1420
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
1421 if (!EQ (Qnil, Vx_nontext_pointer_shape))
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
1422 {
40656
cdfd4d09b79a Update usage of CHECK_ macros (remove unused second argument).
Pavel Janík <Pavel@Janik.cz>
parents: 40528
diff changeset
1423 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
1424 nontext_cursor = XCreateFontCursor (FRAME_W32_DISPLAY (f),
13434
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
1425 XINT (Vx_nontext_pointer_shape));
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
1426 }
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
1427 else
16588
481b7874a1e9 Change identifiers of the form win32* to w32*.
Geoff Voelker <voelker@cs.washington.edu>
parents: 16259
diff changeset
1428 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
1429 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
1430
36252
a8630c63f7d5 Rename everything containing *busy_cursor* and similar
Gerd Moellmann <gerd@gnu.org>
parents: 36080
diff changeset
1431 if (!EQ (Qnil, Vx_hourglass_pointer_shape))
a8630c63f7d5 Rename everything containing *busy_cursor* and similar
Gerd Moellmann <gerd@gnu.org>
parents: 36080
diff changeset
1432 {
40656
cdfd4d09b79a Update usage of CHECK_ macros (remove unused second argument).
Pavel Janík <Pavel@Janik.cz>
parents: 40528
diff changeset
1433 CHECK_NUMBER (Vx_hourglass_pointer_shape);
36252
a8630c63f7d5 Rename everything containing *busy_cursor* and similar
Gerd Moellmann <gerd@gnu.org>
parents: 36080
diff changeset
1434 hourglass_cursor = XCreateFontCursor (FRAME_W32_DISPLAY (f),
a8630c63f7d5 Rename everything containing *busy_cursor* and similar
Gerd Moellmann <gerd@gnu.org>
parents: 36080
diff changeset
1435 XINT (Vx_hourglass_pointer_shape));
a8630c63f7d5 Rename everything containing *busy_cursor* and similar
Gerd Moellmann <gerd@gnu.org>
parents: 36080
diff changeset
1436 }
a8630c63f7d5 Rename everything containing *busy_cursor* and similar
Gerd Moellmann <gerd@gnu.org>
parents: 36080
diff changeset
1437 else
a8630c63f7d5 Rename everything containing *busy_cursor* and similar
Gerd Moellmann <gerd@gnu.org>
parents: 36080
diff changeset
1438 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
1439 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
1440
27397
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
1441 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
1442 if (!EQ (Qnil, Vx_mode_pointer_shape))
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
1443 {
40656
cdfd4d09b79a Update usage of CHECK_ macros (remove unused second argument).
Pavel Janík <Pavel@Janik.cz>
parents: 40528
diff changeset
1444 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
1445 mode_cursor = XCreateFontCursor (FRAME_W32_DISPLAY (f),
13434
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
1446 XINT (Vx_mode_pointer_shape));
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
1447 }
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
1448 else
16588
481b7874a1e9 Change identifiers of the form win32* to w32*.
Geoff Voelker <voelker@cs.washington.edu>
parents: 16259
diff changeset
1449 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
1450 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
1451
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
1452 if (!EQ (Qnil, Vx_sensitive_text_pointer_shape))
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
1453 {
40656
cdfd4d09b79a Update usage of CHECK_ macros (remove unused second argument).
Pavel Janík <Pavel@Janik.cz>
parents: 40528
diff changeset
1454 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
1455 hand_cursor
16588
481b7874a1e9 Change identifiers of the form win32* to w32*.
Geoff Voelker <voelker@cs.washington.edu>
parents: 16259
diff changeset
1456 = XCreateFontCursor (FRAME_W32_DISPLAY (f),
13434
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
1457 XINT (Vx_sensitive_text_pointer_shape));
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
1458 }
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
1459 else
50229
e3a41ffa1cba Remove setup of cross_cursor (already has hand_cursor).
Kim F. Storm <storm@cua.dk>
parents: 50164
diff changeset
1460 hand_cursor = XCreateFontCursor (FRAME_W32_DISPLAY (f), XC_crosshair);
13434
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
1461
34133
f1063cc498e4 (Fx_create_frame): Reintroduce the call to face-set-after-frame-defaults.
Jason Rumney <jasonr@gnu.org>
parents: 34089
diff changeset
1462 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
1463 {
40656
cdfd4d09b79a Update usage of CHECK_ macros (remove unused second argument).
Pavel Janík <Pavel@Janik.cz>
parents: 40528
diff changeset
1464 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
1465 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
1466 = 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
1467 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
1468 }
f1063cc498e4 (Fx_create_frame): Reintroduce the call to face-set-after-frame-defaults.
Jason Rumney <jasonr@gnu.org>
parents: 34089
diff changeset
1469 else
f1063cc498e4 (Fx_create_frame): Reintroduce the call to face-set-after-frame-defaults.
Jason Rumney <jasonr@gnu.org>
parents: 34089
diff changeset
1470 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
1471 = 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
1472
13434
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
1473 /* 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
1474 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
1475 x_uncatch_errors (FRAME_W32_DISPLAY (f), count);
13434
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
1476
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
1477 {
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
1478 XColor fore_color, back_color;
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
1479
16588
481b7874a1e9 Change identifiers of the form win32* to w32*.
Geoff Voelker <voelker@cs.washington.edu>
parents: 16259
diff changeset
1480 fore_color.pixel = f->output_data.w32->mouse_pixel;
13434
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
1481 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
1482 XQueryColor (FRAME_W32_DISPLAY (f),
481b7874a1e9 Change identifiers of the form win32* to w32*.
Geoff Voelker <voelker@cs.washington.edu>
parents: 16259
diff changeset
1483 DefaultColormap (FRAME_W32_DISPLAY (f),
481b7874a1e9 Change identifiers of the form win32* to w32*.
Geoff Voelker <voelker@cs.washington.edu>
parents: 16259
diff changeset
1484 DefaultScreen (FRAME_W32_DISPLAY (f))),
13434
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
1485 &fore_color);
16588
481b7874a1e9 Change identifiers of the form win32* to w32*.
Geoff Voelker <voelker@cs.washington.edu>
parents: 16259
diff changeset
1486 XQueryColor (FRAME_W32_DISPLAY (f),
481b7874a1e9 Change identifiers of the form win32* to w32*.
Geoff Voelker <voelker@cs.washington.edu>
parents: 16259
diff changeset
1487 DefaultColormap (FRAME_W32_DISPLAY (f),
481b7874a1e9 Change identifiers of the form win32* to w32*.
Geoff Voelker <voelker@cs.washington.edu>
parents: 16259
diff changeset
1488 DefaultScreen (FRAME_W32_DISPLAY (f))),
13434
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
1489 &back_color);
16588
481b7874a1e9 Change identifiers of the form win32* to w32*.
Geoff Voelker <voelker@cs.washington.edu>
parents: 16259
diff changeset
1490 XRecolorCursor (FRAME_W32_DISPLAY (f), cursor,
13434
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
1491 &fore_color, &back_color);
16588
481b7874a1e9 Change identifiers of the form win32* to w32*.
Geoff Voelker <voelker@cs.washington.edu>
parents: 16259
diff changeset
1492 XRecolorCursor (FRAME_W32_DISPLAY (f), nontext_cursor,
13434
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
1493 &fore_color, &back_color);
16588
481b7874a1e9 Change identifiers of the form win32* to w32*.
Geoff Voelker <voelker@cs.washington.edu>
parents: 16259
diff changeset
1494 XRecolorCursor (FRAME_W32_DISPLAY (f), mode_cursor,
13434
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
1495 &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
1496 XRecolorCursor (FRAME_W32_DISPLAY (f), hand_cursor,
13434
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
1497 &fore_color, &back_color);
36252
a8630c63f7d5 Rename everything containing *busy_cursor* and similar
Gerd Moellmann <gerd@gnu.org>
parents: 36080
diff changeset
1498 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
1499 &fore_color, &back_color);
13434
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
1500 }
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
1501
16588
481b7874a1e9 Change identifiers of the form win32* to w32*.
Geoff Voelker <voelker@cs.washington.edu>
parents: 16259
diff changeset
1502 if (FRAME_W32_WINDOW (f) != 0)
27397
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
1503 XDefineCursor (FRAME_W32_DISPLAY (f), FRAME_W32_WINDOW (f), cursor);
13434
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
1504
16588
481b7874a1e9 Change identifiers of the form win32* to w32*.
Geoff Voelker <voelker@cs.washington.edu>
parents: 16259
diff changeset
1505 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
1506 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
1507 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
1508
481b7874a1e9 Change identifiers of the form win32* to w32*.
Geoff Voelker <voelker@cs.washington.edu>
parents: 16259
diff changeset
1509 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
1510 && 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
1511 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
1512 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
1513
36252
a8630c63f7d5 Rename everything containing *busy_cursor* and similar
Gerd Moellmann <gerd@gnu.org>
parents: 36080
diff changeset
1514 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
1515 && f->output_data.w32->hourglass_cursor != 0)
a8630c63f7d5 Rename everything containing *busy_cursor* and similar
Gerd Moellmann <gerd@gnu.org>
parents: 36080
diff changeset
1516 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
1517 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
1518
16588
481b7874a1e9 Change identifiers of the form win32* to w32*.
Geoff Voelker <voelker@cs.washington.edu>
parents: 16259
diff changeset
1519 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
1520 && 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
1521 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
1522 f->output_data.w32->modeline_cursor = mode_cursor;
47942
080b4586492b Fix typo in comment.
Juanma Barranquero <lekktu@gmail.com>
parents: 47731
diff changeset
1523
50229
e3a41ffa1cba Remove setup of cross_cursor (already has hand_cursor).
Kim F. Storm <storm@cua.dk>
parents: 50164
diff changeset
1524 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
1525 && 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
1526 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
1527 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
1528
481b7874a1e9 Change identifiers of the form win32* to w32*.
Geoff Voelker <voelker@cs.washington.edu>
parents: 16259
diff changeset
1529 XFlush (FRAME_W32_DISPLAY (f));
13434
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
1530 UNBLOCK_INPUT;
27397
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
1531
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
1532 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
1533 #endif /* TODO */
13434
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
1534 }
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
1535
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
1536 void
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
1537 x_set_cursor_color (f, arg, oldval)
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
1538 struct frame *f;
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
1539 Lisp_Object arg, oldval;
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
1540 {
34062
0044985507c7 (x_set_cursor_color): Use x_update_cursor instead of x_display_cursor.
Jason Rumney <jasonr@gnu.org>
parents: 33929
diff changeset
1541 unsigned long fore_pixel, pixel;
13434
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
1542
29317
2d3d5bf49d4e Format and doc changes to bring closer to xfns.c.
Jason Rumney <jasonr@gnu.org>
parents: 29021
diff changeset
1543 if (!NILP (Vx_cursor_fore_pixel))
13434
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
1544 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
1545 WHITE_PIX_DEFAULT (f));
13434
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
1546 else
27397
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
1547 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
1548
34089
445e01c537a3 Fix last change.
Jason Rumney <jasonr@gnu.org>
parents: 34062
diff changeset
1549 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
1550
13434
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
1551 /* 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
1552 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
1553 {
0044985507c7 (x_set_cursor_color): Use x_update_cursor instead of x_display_cursor.
Jason Rumney <jasonr@gnu.org>
parents: 33929
diff changeset
1554 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
1555 if (pixel == fore_pixel)
27397
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
1556 fore_pixel = FRAME_BACKGROUND_PIXEL (f);
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
1557 }
34062
0044985507c7 (x_set_cursor_color): Use x_update_cursor instead of x_display_cursor.
Jason Rumney <jasonr@gnu.org>
parents: 33929
diff changeset
1558
44047
73645cbc79a7 (x_set_cursor_color): Set foreground of cursor, not frame.
Jason Rumney <jasonr@gnu.org>
parents: 43963
diff changeset
1559 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
1560 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
1561
481b7874a1e9 Change identifiers of the form win32* to w32*.
Geoff Voelker <voelker@cs.washington.edu>
parents: 16259
diff changeset
1562 if (FRAME_W32_WINDOW (f) != 0)
13434
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
1563 {
44094
16eb7bad861d (x_set_cursor_color): Set cursor_gc as well.
Jason Rumney <jasonr@gnu.org>
parents: 44076
diff changeset
1564 BLOCK_INPUT;
16eb7bad861d (x_set_cursor_color): Set cursor_gc as well.
Jason Rumney <jasonr@gnu.org>
parents: 44076
diff changeset
1565 /* Update frame's cursor_gc. */
16eb7bad861d (x_set_cursor_color): Set cursor_gc as well.
Jason Rumney <jasonr@gnu.org>
parents: 44076
diff changeset
1566 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
1567 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
1568
16eb7bad861d (x_set_cursor_color): Set cursor_gc as well.
Jason Rumney <jasonr@gnu.org>
parents: 44076
diff changeset
1569 UNBLOCK_INPUT;
16eb7bad861d (x_set_cursor_color): Set cursor_gc as well.
Jason Rumney <jasonr@gnu.org>
parents: 44076
diff changeset
1570
13434
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
1571 if (FRAME_VISIBLE_P (f))
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
1572 {
34062
0044985507c7 (x_set_cursor_color): Use x_update_cursor instead of x_display_cursor.
Jason Rumney <jasonr@gnu.org>
parents: 33929
diff changeset
1573 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
1574 x_update_cursor (f, 1);
13434
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
1575 }
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
1576 }
27397
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
1577
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
1578 update_face_from_frame_parameter (f, Qcursor_color, arg);
13434
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
1579 }
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
1580
24147
c83b0bc4e8b9 (Vw32_bdf_filename_alist): New variable.
Geoff Voelker <voelker@cs.washington.edu>
parents: 24130
diff changeset
1581 /* 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
1582 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
1583 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
1584
24147
c83b0bc4e8b9 (Vw32_bdf_filename_alist): New variable.
Geoff Voelker <voelker@cs.washington.edu>
parents: 24130
diff changeset
1585 void
c83b0bc4e8b9 (Vw32_bdf_filename_alist): New variable.
Geoff Voelker <voelker@cs.washington.edu>
parents: 24130
diff changeset
1586 x_set_border_pixel (f, pix)
c83b0bc4e8b9 (Vw32_bdf_filename_alist): New variable.
Geoff Voelker <voelker@cs.washington.edu>
parents: 24130
diff changeset
1587 struct frame *f;
c83b0bc4e8b9 (Vw32_bdf_filename_alist): New variable.
Geoff Voelker <voelker@cs.washington.edu>
parents: 24130
diff changeset
1588 int pix;
c83b0bc4e8b9 (Vw32_bdf_filename_alist): New variable.
Geoff Voelker <voelker@cs.washington.edu>
parents: 24130
diff changeset
1589 {
50362
6d942c1d5f2d * w32fns.c (Qauto_raise, Qauto_lower, ...): Remove vars for frame
Kim F. Storm <storm@cua.dk>
parents: 50229
diff changeset
1590
24147
c83b0bc4e8b9 (Vw32_bdf_filename_alist): New variable.
Geoff Voelker <voelker@cs.washington.edu>
parents: 24130
diff changeset
1591 f->output_data.w32->border_pixel = pix;
c83b0bc4e8b9 (Vw32_bdf_filename_alist): New variable.
Geoff Voelker <voelker@cs.washington.edu>
parents: 24130
diff changeset
1592
51211
28ea05de2dc5 Make (many) trivial substitutions for renamed and
Kim F. Storm <storm@cua.dk>
parents: 50377
diff changeset
1593 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
1594 {
c83b0bc4e8b9 (Vw32_bdf_filename_alist): New variable.
Geoff Voelker <voelker@cs.washington.edu>
parents: 24130
diff changeset
1595 if (FRAME_VISIBLE_P (f))
c83b0bc4e8b9 (Vw32_bdf_filename_alist): New variable.
Geoff Voelker <voelker@cs.washington.edu>
parents: 24130
diff changeset
1596 redraw_frame (f);
c83b0bc4e8b9 (Vw32_bdf_filename_alist): New variable.
Geoff Voelker <voelker@cs.washington.edu>
parents: 24130
diff changeset
1597 }
c83b0bc4e8b9 (Vw32_bdf_filename_alist): New variable.
Geoff Voelker <voelker@cs.washington.edu>
parents: 24130
diff changeset
1598 }
c83b0bc4e8b9 (Vw32_bdf_filename_alist): New variable.
Geoff Voelker <voelker@cs.washington.edu>
parents: 24130
diff changeset
1599
13434
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
1600 /* Set the border-color of frame F to value described by ARG.
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
1601 ARG can be a string naming a color.
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
1602 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
1603 Note that this does not fully take effect if done before
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
1604 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
1605
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
1606 void
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
1607 x_set_border_color (f, arg, oldval)
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
1608 struct frame *f;
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
1609 Lisp_Object arg, oldval;
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
1610 {
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
1611 int pix;
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
1612
40656
cdfd4d09b79a Update usage of CHECK_ macros (remove unused second argument).
Pavel Janík <Pavel@Janik.cz>
parents: 40528
diff changeset
1613 CHECK_STRING (arg);
13434
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
1614 pix = x_decode_color (f, arg, BLACK_PIX_DEFAULT (f));
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
1615 x_set_border_pixel (f, pix);
27397
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
1616 update_face_from_frame_parameter (f, Qborder_color, arg);
13434
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
1617 }
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
1618
29317
2d3d5bf49d4e Format and doc changes to bring closer to xfns.c.
Jason Rumney <jasonr@gnu.org>
parents: 29021
diff changeset
1619
13434
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
1620 void
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
1621 x_set_cursor_type (f, arg, oldval)
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
1622 FRAME_PTR f;
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
1623 Lisp_Object arg, oldval;
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
1624 {
47140
9ef4bf7492cb (Vblink_cursor_alist): Removed.
Kim F. Storm <storm@cua.dk>
parents: 47097
diff changeset
1625 set_frame_cursor_types (f, arg);
13434
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
1626
49392
4e6b3d53732a (x_set_cursor_type): Set cursor_type_changed,
Jason Rumney <jasonr@gnu.org>
parents: 49369
diff changeset
1627 /* 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
1628 cursor_type_changed = 1;
13434
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
1629 }
29317
2d3d5bf49d4e Format and doc changes to bring closer to xfns.c.
Jason Rumney <jasonr@gnu.org>
parents: 29021
diff changeset
1630
13434
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
1631 void
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
1632 x_set_icon_type (f, arg, oldval)
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
1633 struct frame *f;
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
1634 Lisp_Object arg, oldval;
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
1635 {
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
1636 int result;
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
1637
25235
98c67187cd6b (x_set_icon_type): Support setting frame icons.
Geoff Voelker <voelker@cs.washington.edu>
parents: 25084
diff changeset
1638 if (NILP (arg) && NILP (oldval))
98c67187cd6b (x_set_icon_type): Support setting frame icons.
Geoff Voelker <voelker@cs.washington.edu>
parents: 25084
diff changeset
1639 return;
98c67187cd6b (x_set_icon_type): Support setting frame icons.
Geoff Voelker <voelker@cs.washington.edu>
parents: 25084
diff changeset
1640
47942
080b4586492b Fix typo in comment.
Juanma Barranquero <lekktu@gmail.com>
parents: 47731
diff changeset
1641 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
1642 && 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
1643 return;
98c67187cd6b (x_set_icon_type): Support setting frame icons.
Geoff Voelker <voelker@cs.washington.edu>
parents: 25084
diff changeset
1644
98c67187cd6b (x_set_icon_type): Support setting frame icons.
Geoff Voelker <voelker@cs.washington.edu>
parents: 25084
diff changeset
1645 if (SYMBOLP (arg) && SYMBOLP (oldval) && EQ (arg, oldval))
13434
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
1646 return;
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
1647
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
1648 BLOCK_INPUT;
25235
98c67187cd6b (x_set_icon_type): Support setting frame icons.
Geoff Voelker <voelker@cs.washington.edu>
parents: 25084
diff changeset
1649
98c67187cd6b (x_set_icon_type): Support setting frame icons.
Geoff Voelker <voelker@cs.washington.edu>
parents: 25084
diff changeset
1650 result = x_bitmap_icon (f, arg);
13434
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
1651 if (result)
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
1652 {
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
1653 UNBLOCK_INPUT;
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
1654 error ("No icon window available");
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
1655 }
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
1656
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
1657 UNBLOCK_INPUT;
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
1658 }
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
1659
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
1660 void
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
1661 x_set_icon_name (f, arg, oldval)
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
1662 struct frame *f;
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
1663 Lisp_Object arg, oldval;
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
1664 {
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
1665 if (STRINGP (arg))
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
1666 {
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
1667 if (STRINGP (oldval) && EQ (Fstring_equal (oldval, arg), Qt))
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
1668 return;
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
1669 }
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
1670 else if (!NILP (arg) || NILP (oldval))
13434
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
1671 return;
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 f->icon_name = arg;
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
1674
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
1675 #if 0
16588
481b7874a1e9 Change identifiers of the form win32* to w32*.
Geoff Voelker <voelker@cs.washington.edu>
parents: 16259
diff changeset
1676 if (f->output_data.w32->icon_bitmap != 0)
13434
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
1677 return;
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
1678
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
1679 BLOCK_INPUT;
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
1680
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
1681 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
1682 (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
1683 ? 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
1684 : !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
1685 ? f->title
40db0673e6f0 Most uses of XSTRING combined with STRING_BYTES or indirection changed to
Ken Raeburn <raeburn@raeburn.org>
parents: 46293
diff changeset
1686 : f->name)));
13434
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
1687
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
1688 if (result)
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
1689 {
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
1690 UNBLOCK_INPUT;
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
1691 error ("No icon window available");
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
1692 }
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
1693
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
1694 /* If the window was unmapped (and its icon was mapped),
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
1695 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
1696 if (FRAME_VISIBLE_P (f))
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
1697 {
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
1698 #ifdef USE_X_TOOLKIT
16588
481b7874a1e9 Change identifiers of the form win32* to w32*.
Geoff Voelker <voelker@cs.washington.edu>
parents: 16259
diff changeset
1699 XtPopup (f->output_data.w32->widget, XtGrabNone);
13434
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
1700 #endif
16588
481b7874a1e9 Change identifiers of the form win32* to w32*.
Geoff Voelker <voelker@cs.washington.edu>
parents: 16259
diff changeset
1701 XMapWindow (FRAME_W32_DISPLAY (f), FRAME_W32_WINDOW (f));
13434
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
16588
481b7874a1e9 Change identifiers of the form win32* to w32*.
Geoff Voelker <voelker@cs.washington.edu>
parents: 16259
diff changeset
1704 XFlush (FRAME_W32_DISPLAY (f));
13434
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
1705 UNBLOCK_INPUT;
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
1706 #endif
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
1707 }
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
1708
33870
8816b5542315 (x_change_window_heights): New function.
Jason Rumney <jasonr@gnu.org>
parents: 33865
diff changeset
1709
13434
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
1710 void
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
1711 x_set_menu_bar_lines (f, value, oldval)
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
1712 struct frame *f;
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
1713 Lisp_Object value, oldval;
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 int nlines;
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
1716 int olines = FRAME_MENU_BAR_LINES (f);
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
1717
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
1718 /* Right now, menu bars don't work properly in minibuf-only frames;
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
1719 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
1720 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
1721 in or split the minibuffer window. */
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
1722 if (FRAME_MINIBUF_ONLY_P (f))
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
1723 return;
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
1724
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
1725 if (INTEGERP (value))
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
1726 nlines = XINT (value);
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
1727 else
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
1728 nlines = 0;
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
1729
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
1730 FRAME_MENU_BAR_LINES (f) = 0;
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
1731 if (nlines)
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
1732 FRAME_EXTERNAL_MENU_BAR (f) = 1;
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
1733 else
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
1734 {
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
1735 if (FRAME_EXTERNAL_MENU_BAR (f) == 1)
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
1736 free_frame_menubar (f);
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
1737 FRAME_EXTERNAL_MENU_BAR (f) = 0;
19707
0181cc080316 Include limits.h and errno.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18508
diff changeset
1738
0181cc080316 Include limits.h and errno.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18508
diff changeset
1739 /* 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
1740 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
1741 set correctly. */
51211
28ea05de2dc5 Make (many) trivial substitutions for renamed and
Kim F. Storm <storm@cua.dk>
parents: 50377
diff changeset
1742 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
1743 do_pending_window_change (0);
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
1744 }
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
1745 adjust_glyphs (f);
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
1746 }
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
1747
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
1748
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
1749 /* 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
1750 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
1751 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
1752 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
1753 The frame's height doesn't change. */
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
1754
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
1755 void
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
1756 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
1757 struct frame *f;
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
1758 Lisp_Object value, oldval;
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
1759 {
33865
f32333d8172b (x_set_tool_bar_lines): Clear internal border when making tool bar
Jason Rumney <jasonr@gnu.org>
parents: 33443
diff changeset
1760 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
1761 Lisp_Object root_window;
27397
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
1762
36000
f4a0b086cc5d (Fx_show_tip): Fix calls to make_number.
Jason Rumney <jasonr@gnu.org>
parents: 35674
diff changeset
1763 /* Treat tool bars like menu bars. */
f4a0b086cc5d (Fx_show_tip): Fix calls to make_number.
Jason Rumney <jasonr@gnu.org>
parents: 35674
diff changeset
1764 if (FRAME_MINIBUF_ONLY_P (f))
f4a0b086cc5d (Fx_show_tip): Fix calls to make_number.
Jason Rumney <jasonr@gnu.org>
parents: 35674
diff changeset
1765 return;
f4a0b086cc5d (Fx_show_tip): Fix calls to make_number.
Jason Rumney <jasonr@gnu.org>
parents: 35674
diff changeset
1766
27397
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
1767 /* Use VALUE only if an integer >= 0. */
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
1768 if (INTEGERP (value) && XINT (value) >= 0)
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
1769 nlines = XFASTINT (value);
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
1770 else
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
1771 nlines = 0;
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
1772
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
1773 /* 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
1774 ++windows_or_buffers_changed;
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
1775
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
1776 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
1777
f32333d8172b (x_set_tool_bar_lines): Clear internal border when making tool bar
Jason Rumney <jasonr@gnu.org>
parents: 33443
diff changeset
1778 /* 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
1779 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
1780 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
1781 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
1782 {
f32333d8172b (x_set_tool_bar_lines): Clear internal border when making tool bar
Jason Rumney <jasonr@gnu.org>
parents: 33443
diff changeset
1783 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
1784 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
1785 }
f32333d8172b (x_set_tool_bar_lines): Clear internal border when making tool bar
Jason Rumney <jasonr@gnu.org>
parents: 33443
diff changeset
1786
27397
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
1787 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
1788 change_window_heights (root_window, delta);
27397
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
1789 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
1790
f32333d8172b (x_set_tool_bar_lines): Clear internal border when making tool bar
Jason Rumney <jasonr@gnu.org>
parents: 33443
diff changeset
1791 /* 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
1792 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
1793 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
1794 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
1795 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
1796 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
1797 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
1798 {
83571
ca1c27e2707e (x_set_tool_bar_lines): Don't use updating_frame.
Jason Rumney <jasonr@gnu.org>
parents: 76700
diff changeset
1799 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
1800 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
1801 }
f32333d8172b (x_set_tool_bar_lines): Clear internal border when making tool bar
Jason Rumney <jasonr@gnu.org>
parents: 33443
diff changeset
1802
f32333d8172b (x_set_tool_bar_lines): Clear internal border when making tool bar
Jason Rumney <jasonr@gnu.org>
parents: 33443
diff changeset
1803 /* 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
1804 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
1805 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
1806 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
1807 {
f32333d8172b (x_set_tool_bar_lines): Clear internal border when making tool bar
Jason Rumney <jasonr@gnu.org>
parents: 33443
diff changeset
1808 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
1809 int width = FRAME_PIXEL_WIDTH (f);
28ea05de2dc5 Make (many) trivial substitutions for renamed and
Kim F. Storm <storm@cua.dk>
parents: 50377
diff changeset
1810 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
1811
f32333d8172b (x_set_tool_bar_lines): Clear internal border when making tool bar
Jason Rumney <jasonr@gnu.org>
parents: 33443
diff changeset
1812 BLOCK_INPUT;
f32333d8172b (x_set_tool_bar_lines): Clear internal border when making tool bar
Jason Rumney <jasonr@gnu.org>
parents: 33443
diff changeset
1813 {
f32333d8172b (x_set_tool_bar_lines): Clear internal border when making tool bar
Jason Rumney <jasonr@gnu.org>
parents: 33443
diff changeset
1814 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
1815 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
1816 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
1817 }
f32333d8172b (x_set_tool_bar_lines): Clear internal border when making tool bar
Jason Rumney <jasonr@gnu.org>
parents: 33443
diff changeset
1818 UNBLOCK_INPUT;
40120
03eb905a4d8e (Fx_file_dialog): Pass a filter to GetOpenFileName.
Jason Rumney <jasonr@gnu.org>
parents: 40009
diff changeset
1819
03eb905a4d8e (Fx_file_dialog): Pass a filter to GetOpenFileName.
Jason Rumney <jasonr@gnu.org>
parents: 40009
diff changeset
1820 if (WINDOWP (f->tool_bar_window))
03eb905a4d8e (Fx_file_dialog): Pass a filter to GetOpenFileName.
Jason Rumney <jasonr@gnu.org>
parents: 40009
diff changeset
1821 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
1822 }
27397
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
1823 }
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
1824
13434
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
1825
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
1826 /* 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
1827 w32_id_name.
13434
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
1828
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
1829 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
1830 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
1831 F->explicit_name; if NAME is Qnil, then clear F->explicit_name.
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
1832
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
1833 If EXPLICIT is zero, that indicates that Emacs redisplay code is
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
1834 suggesting a new name, which lisp code should override; if
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
1835 F->explicit_name is set, ignore the new name; otherwise, set it. */
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
1836
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
1837 void
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
1838 x_set_name (f, name, explicit)
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
1839 struct frame *f;
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
1840 Lisp_Object name;
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
1841 int explicit;
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
1842 {
47942
080b4586492b Fix typo in comment.
Juanma Barranquero <lekktu@gmail.com>
parents: 47731
diff changeset
1843 /* Make sure that requests from lisp code override requests from
13434
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
1844 Emacs redisplay code. */
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
1845 if (explicit)
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
1846 {
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
1847 /* If we're switching from explicit to implicit, we had better
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
1848 update the mode lines and thereby update the title. */
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
1849 if (f->explicit_name && NILP (name))
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
1850 update_mode_lines = 1;
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
1851
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
1852 f->explicit_name = ! NILP (name);
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
1853 }
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
1854 else if (f->explicit_name)
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
1855 return;
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
1856
16588
481b7874a1e9 Change identifiers of the form win32* to w32*.
Geoff Voelker <voelker@cs.washington.edu>
parents: 16259
diff changeset
1857 /* 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
1858 if (NILP (name))
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
1859 {
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
1860 /* Check for no change needed in this very common case
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
1861 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
1862 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
1863 SDATA (f->name)))
13434
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
1864 return;
16588
481b7874a1e9 Change identifiers of the form win32* to w32*.
Geoff Voelker <voelker@cs.washington.edu>
parents: 16259
diff changeset
1865 name = build_string (FRAME_W32_DISPLAY_INFO (f)->w32_id_name);
13434
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
1866 }
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
1867 else
40656
cdfd4d09b79a Update usage of CHECK_ macros (remove unused second argument).
Pavel Janík <Pavel@Janik.cz>
parents: 40528
diff changeset
1868 CHECK_STRING (name);
13434
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
1869
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
1870 /* Don't change the name if it's already NAME. */
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
1871 if (! NILP (Fstring_equal (name, f->name)))
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
1872 return;
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
1873
19707
0181cc080316 Include limits.h and errno.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18508
diff changeset
1874 f->name = name;
0181cc080316 Include limits.h and errno.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18508
diff changeset
1875
0181cc080316 Include limits.h and errno.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18508
diff changeset
1876 /* 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
1877 the name parameter. */
0181cc080316 Include limits.h and errno.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18508
diff changeset
1878 if (! NILP (f->title))
0181cc080316 Include limits.h and errno.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18508
diff changeset
1879 name = f->title;
0181cc080316 Include limits.h and errno.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18508
diff changeset
1880
16588
481b7874a1e9 Change identifiers of the form win32* to w32*.
Geoff Voelker <voelker@cs.washington.edu>
parents: 16259
diff changeset
1881 if (FRAME_W32_WINDOW (f))
13434
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
1882 {
27397
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
1883 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
1884 name = ENCODE_SYSTEM (name);
27397
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
1885
13434
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
1886 BLOCK_INPUT;
79387
0ca197abc593 (Fw32_registered_hot_keys): Don't return the nil values corresponding
Juanma Barranquero <lekktu@gmail.com>
parents: 79381
diff changeset
1887 SetWindowText (FRAME_W32_WINDOW (f), SDATA (name));
13434
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
1888 UNBLOCK_INPUT;
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
1889 }
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
1890 }
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
1891
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
1892 /* This function should be called when the user's lisp code has
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
1893 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
1894 redisplay code. */
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
1895 void
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
1896 x_explicitly_set_name (f, arg, oldval)
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
1897 FRAME_PTR f;
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
1898 Lisp_Object arg, oldval;
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 x_set_name (f, arg, 1);
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
1901 }
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
1902
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
1903 /* This function should be called by Emacs redisplay code to set the
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
1904 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
1905 lisp code. */
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
1906 void
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
1907 x_implicitly_set_name (f, arg, oldval)
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
1908 FRAME_PTR f;
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
1909 Lisp_Object arg, oldval;
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
1910 {
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
1911 x_set_name (f, arg, 0);
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
1912 }
19707
0181cc080316 Include limits.h and errno.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18508
diff changeset
1913
0181cc080316 Include limits.h and errno.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18508
diff changeset
1914 /* Change the title of frame F to NAME.
79054
dcfd2d0c6c47 *** empty log message ***
Martin Rudalics <rudalics@gmx.at>
parents: 78907
diff changeset
1915 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
1916
0181cc080316 Include limits.h and errno.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18508
diff changeset
1917 void
27397
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
1918 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
1919 struct frame *f;
27397
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
1920 Lisp_Object name, old_name;
19707
0181cc080316 Include limits.h and errno.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18508
diff changeset
1921 {
0181cc080316 Include limits.h and errno.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18508
diff changeset
1922 /* 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
1923 if (EQ (name, f->title))
0181cc080316 Include limits.h and errno.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18508
diff changeset
1924 return;
0181cc080316 Include limits.h and errno.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18508
diff changeset
1925
0181cc080316 Include limits.h and errno.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18508
diff changeset
1926 update_mode_lines = 1;
0181cc080316 Include limits.h and errno.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18508
diff changeset
1927
0181cc080316 Include limits.h and errno.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18508
diff changeset
1928 f->title = name;
0181cc080316 Include limits.h and errno.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18508
diff changeset
1929
0181cc080316 Include limits.h and errno.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18508
diff changeset
1930 if (NILP (name))
0181cc080316 Include limits.h and errno.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18508
diff changeset
1931 name = f->name;
0181cc080316 Include limits.h and errno.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18508
diff changeset
1932
0181cc080316 Include limits.h and errno.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18508
diff changeset
1933 if (FRAME_W32_WINDOW (f))
0181cc080316 Include limits.h and errno.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18508
diff changeset
1934 {
27397
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
1935 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
1936 name = ENCODE_SYSTEM (name);
27397
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
1937
19707
0181cc080316 Include limits.h and errno.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18508
diff changeset
1938 BLOCK_INPUT;
79387
0ca197abc593 (Fw32_registered_hot_keys): Don't return the nil values corresponding
Juanma Barranquero <lekktu@gmail.com>
parents: 79381
diff changeset
1939 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
1940 UNBLOCK_INPUT;
0181cc080316 Include limits.h and errno.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18508
diff changeset
1941 }
0181cc080316 Include limits.h and errno.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18508
diff changeset
1942 }
50362
6d942c1d5f2d * w32fns.c (Qauto_raise, Qauto_lower, ...): Remove vars for frame
Kim F. Storm <storm@cua.dk>
parents: 50229
diff changeset
1943
6d942c1d5f2d * w32fns.c (Qauto_raise, Qauto_lower, ...): Remove vars for frame
Kim F. Storm <storm@cua.dk>
parents: 50229
diff changeset
1944
50377
174f757a8504 (x_set_scroll_bar_default_width): Define return value as void.
Juanma Barranquero <lekktu@gmail.com>
parents: 50362
diff changeset
1945 void x_set_scroll_bar_default_width (f)
13434
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
1946 struct frame *f;
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
1947 {
51211
28ea05de2dc5 Make (many) trivial substitutions for renamed and
Kim F. Storm <storm@cua.dk>
parents: 50377
diff changeset
1948 int wid = FRAME_COLUMN_WIDTH (f);
28ea05de2dc5 Make (many) trivial substitutions for renamed and
Kim F. Storm <storm@cua.dk>
parents: 50377
diff changeset
1949
28ea05de2dc5 Make (many) trivial substitutions for renamed and
Kim F. Storm <storm@cua.dk>
parents: 50377
diff changeset
1950 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
1951 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
1952 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
1953 }
6d942c1d5f2d * w32fns.c (Qauto_raise, Qauto_lower, ...): Remove vars for frame
Kim F. Storm <storm@cua.dk>
parents: 50229
diff changeset
1954
13434
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
1955
96662
5418ff994d7c (w32_get_arg): Remove wrapper function.
Jason Rumney <jasonr@gnu.org>
parents: 96555
diff changeset
1956 /* Subroutines for creating a frame. */
5418ff994d7c (w32_get_arg): Remove wrapper function.
Jason Rumney <jasonr@gnu.org>
parents: 96555
diff changeset
1957
49369
5518e109ec3b 2003-01-21 Jason Rumney <jasonr@gnu.org>
Jason Rumney <jasonr@gnu.org>
parents: 49079
diff changeset
1958 Cursor
5518e109ec3b 2003-01-21 Jason Rumney <jasonr@gnu.org>
Jason Rumney <jasonr@gnu.org>
parents: 49079
diff changeset
1959 w32_load_cursor (LPCTSTR name)
5518e109ec3b 2003-01-21 Jason Rumney <jasonr@gnu.org>
Jason Rumney <jasonr@gnu.org>
parents: 49079
diff changeset
1960 {
5518e109ec3b 2003-01-21 Jason Rumney <jasonr@gnu.org>
Jason Rumney <jasonr@gnu.org>
parents: 49079
diff changeset
1961 /* 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
1962 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
1963 name, IMAGE_CURSOR, 0, 0,
5518e109ec3b 2003-01-21 Jason Rumney <jasonr@gnu.org>
Jason Rumney <jasonr@gnu.org>
parents: 49079
diff changeset
1964 LR_DEFAULTCOLOR | LR_DEFAULTSIZE | LR_SHARED);
5518e109ec3b 2003-01-21 Jason Rumney <jasonr@gnu.org>
Jason Rumney <jasonr@gnu.org>
parents: 49079
diff changeset
1965 if (!cursor)
5518e109ec3b 2003-01-21 Jason Rumney <jasonr@gnu.org>
Jason Rumney <jasonr@gnu.org>
parents: 49079
diff changeset
1966 {
5518e109ec3b 2003-01-21 Jason Rumney <jasonr@gnu.org>
Jason Rumney <jasonr@gnu.org>
parents: 49079
diff changeset
1967 /* 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
1968 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
1969 LR_DEFAULTCOLOR | LR_DEFAULTSIZE | LR_SHARED);
5518e109ec3b 2003-01-21 Jason Rumney <jasonr@gnu.org>
Jason Rumney <jasonr@gnu.org>
parents: 49079
diff changeset
1970 }
5518e109ec3b 2003-01-21 Jason Rumney <jasonr@gnu.org>
Jason Rumney <jasonr@gnu.org>
parents: 49079
diff changeset
1971 return cursor;
5518e109ec3b 2003-01-21 Jason Rumney <jasonr@gnu.org>
Jason Rumney <jasonr@gnu.org>
parents: 49079
diff changeset
1972 }
13434
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
1973
16588
481b7874a1e9 Change identifiers of the form win32* to w32*.
Geoff Voelker <voelker@cs.washington.edu>
parents: 16259
diff changeset
1974 extern LRESULT CALLBACK w32_wnd_proc ();
13434
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
1975
86065
2557aa084b57 (Fw32_registered_hot_keys): Don't return the nil values corresponding
Juanma Barranquero <lekktu@gmail.com>
parents: 86053
diff changeset
1976 static BOOL
16588
481b7874a1e9 Change identifiers of the form win32* to w32*.
Geoff Voelker <voelker@cs.washington.edu>
parents: 16259
diff changeset
1977 w32_init_class (hinst)
13434
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
1978 HINSTANCE hinst;
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
1979 {
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
1980 WNDCLASS wc;
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
1981
15147
38c0ce06203f (quit_char, Vwin32_enable_italics, Vwin32_enable_palette):
Geoff Voelker <voelker@cs.washington.edu>
parents: 15034
diff changeset
1982 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
1983 wc.lpfnWndProc = (WNDPROC) w32_wnd_proc;
13434
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
1984 wc.cbClsExtra = 0;
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
1985 wc.cbWndExtra = WND_EXTRA_BYTES;
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
1986 wc.hInstance = hinst;
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
1987 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
1988 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
1989 wc.hbrBackground = NULL; /* GetStockObject (WHITE_BRUSH); */
13434
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
1990 wc.lpszMenuName = NULL;
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
1991 wc.lpszClassName = EMACS_CLASS;
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
1992
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
1993 return (RegisterClass (&wc));
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
1994 }
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
1995
86065
2557aa084b57 (Fw32_registered_hot_keys): Don't return the nil values corresponding
Juanma Barranquero <lekktu@gmail.com>
parents: 86053
diff changeset
1996 static HWND
16588
481b7874a1e9 Change identifiers of the form win32* to w32*.
Geoff Voelker <voelker@cs.washington.edu>
parents: 16259
diff changeset
1997 w32_createscrollbar (f, bar)
13434
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
1998 struct frame *f;
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
1999 struct scroll_bar * bar;
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
2000 {
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
2001 return (CreateWindow ("SCROLLBAR", "", SBS_VERT | WS_CHILD | WS_VISIBLE,
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
2002 /* 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
2003 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
2004 XINT (bar->top),
0ca197abc593 (Fw32_registered_hot_keys): Don't return the nil values corresponding
Juanma Barranquero <lekktu@gmail.com>
parents: 79381
diff changeset
2005 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
2006 XINT (bar->height),
16588
481b7874a1e9 Change identifiers of the form win32* to w32*.
Geoff Voelker <voelker@cs.washington.edu>
parents: 16259
diff changeset
2007 FRAME_W32_WINDOW (f),
13434
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
2008 NULL,
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
2009 hinst,
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
2010 NULL));
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
2011 }
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
2012
86065
2557aa084b57 (Fw32_registered_hot_keys): Don't return the nil values corresponding
Juanma Barranquero <lekktu@gmail.com>
parents: 86053
diff changeset
2013 static void
16588
481b7874a1e9 Change identifiers of the form win32* to w32*.
Geoff Voelker <voelker@cs.washington.edu>
parents: 16259
diff changeset
2014 w32_createwindow (f)
13434
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
2015 struct frame *f;
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
2016 {
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
2017 HWND hwnd;
19707
0181cc080316 Include limits.h and errno.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18508
diff changeset
2018 RECT rect;
72269
b37e887392d9 (w32_createwindow): Handle -geometry command line option and the geometry
Eli Zaretskii <eliz@gnu.org>
parents: 72265
diff changeset
2019 Lisp_Object top = Qunbound;
b37e887392d9 (w32_createwindow): Handle -geometry command line option and the geometry
Eli Zaretskii <eliz@gnu.org>
parents: 72265
diff changeset
2020 Lisp_Object left = Qunbound;
96662
5418ff994d7c (w32_get_arg): Remove wrapper function.
Jason Rumney <jasonr@gnu.org>
parents: 96555
diff changeset
2021 struct w32_display_info *dpyinfo = &one_w32_display_info;
19707
0181cc080316 Include limits.h and errno.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18508
diff changeset
2022
0181cc080316 Include limits.h and errno.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18508
diff changeset
2023 rect.left = rect.top = 0;
51211
28ea05de2dc5 Make (many) trivial substitutions for renamed and
Kim F. Storm <storm@cua.dk>
parents: 50377
diff changeset
2024 rect.right = FRAME_PIXEL_WIDTH (f);
28ea05de2dc5 Make (many) trivial substitutions for renamed and
Kim F. Storm <storm@cua.dk>
parents: 50377
diff changeset
2025 rect.bottom = FRAME_PIXEL_HEIGHT (f);
47942
080b4586492b Fix typo in comment.
Juanma Barranquero <lekktu@gmail.com>
parents: 47731
diff changeset
2026
19707
0181cc080316 Include limits.h and errno.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18508
diff changeset
2027 AdjustWindowRect (&rect, f->output_data.w32->dwStyle,
0181cc080316 Include limits.h and errno.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18508
diff changeset
2028 FRAME_EXTERNAL_MENU_BAR (f));
47942
080b4586492b Fix typo in comment.
Juanma Barranquero <lekktu@gmail.com>
parents: 47731
diff changeset
2029
13434
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
2030 /* Do first time app init */
47942
080b4586492b Fix typo in comment.
Juanma Barranquero <lekktu@gmail.com>
parents: 47731
diff changeset
2031
13434
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
2032 if (!hprevinst)
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
2033 {
16588
481b7874a1e9 Change identifiers of the form win32* to w32*.
Geoff Voelker <voelker@cs.washington.edu>
parents: 16259
diff changeset
2034 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
2035 }
b37e887392d9 (w32_createwindow): Handle -geometry command line option and the geometry
Eli Zaretskii <eliz@gnu.org>
parents: 72265
diff changeset
2036
73285
d1194b4c29b3 2006-10-07 Ralf Angeli <angeli@caeruleus.net>
Jason Rumney <jasonr@gnu.org>
parents: 73087
diff changeset
2037 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
2038 {
d1194b4c29b3 2006-10-07 Ralf Angeli <angeli@caeruleus.net>
Jason Rumney <jasonr@gnu.org>
parents: 73087
diff changeset
2039 XSETINT (left, f->left_pos);
d1194b4c29b3 2006-10-07 Ralf Angeli <angeli@caeruleus.net>
Jason Rumney <jasonr@gnu.org>
parents: 73087
diff changeset
2040 XSETINT (top, f->top_pos);
d1194b4c29b3 2006-10-07 Ralf Angeli <angeli@caeruleus.net>
Jason Rumney <jasonr@gnu.org>
parents: 73087
diff changeset
2041 }
d1194b4c29b3 2006-10-07 Ralf Angeli <angeli@caeruleus.net>
Jason Rumney <jasonr@gnu.org>
parents: 73087
diff changeset
2042 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
2043 {
b37e887392d9 (w32_createwindow): Handle -geometry command line option and the geometry
Eli Zaretskii <eliz@gnu.org>
parents: 72265
diff changeset
2044 /* 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
2045 for anything that is not a number and is not Qunbound. */
96662
5418ff994d7c (w32_get_arg): Remove wrapper function.
Jason Rumney <jasonr@gnu.org>
parents: 96555
diff changeset
2046 left = x_get_arg (dpyinfo, Qnil, Qleft, "left", "Left", RES_TYPE_NUMBER);
5418ff994d7c (w32_get_arg): Remove wrapper function.
Jason Rumney <jasonr@gnu.org>
parents: 96555
diff changeset
2047 top = x_get_arg (dpyinfo, Qnil, Qtop, "top", "Top", RES_TYPE_NUMBER);
72269
b37e887392d9 (w32_createwindow): Handle -geometry command line option and the geometry
Eli Zaretskii <eliz@gnu.org>
parents: 72265
diff changeset
2048 }
72071
0bfda07cccbc (w32_createwindow): If `left' and/or `top' frame parameters are bound to some
Eli Zaretskii <eliz@gnu.org>
parents: 71545
diff changeset
2049
19707
0181cc080316 Include limits.h and errno.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18508
diff changeset
2050 FRAME_W32_WINDOW (f) = hwnd
0181cc080316 Include limits.h and errno.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18508
diff changeset
2051 = CreateWindow (EMACS_CLASS,
0181cc080316 Include limits.h and errno.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18508
diff changeset
2052 f->namebuf,
39137
2d2b989f4a4b (w32_createwindow): Undo last change.
Andrew Innes <andrewi@gnu.org>
parents: 39128
diff changeset
2053 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
2054 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
2055 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
2056 rect.right - rect.left,
0181cc080316 Include limits.h and errno.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18508
diff changeset
2057 rect.bottom - rect.top,
0181cc080316 Include limits.h and errno.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18508
diff changeset
2058 NULL,
0181cc080316 Include limits.h and errno.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18508
diff changeset
2059 NULL,
0181cc080316 Include limits.h and errno.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18508
diff changeset
2060 hinst,
0181cc080316 Include limits.h and errno.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18508
diff changeset
2061 NULL);
0181cc080316 Include limits.h and errno.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18508
diff changeset
2062
13434
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
2063 if (hwnd)
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
2064 {
51211
28ea05de2dc5 Make (many) trivial substitutions for renamed and
Kim F. Storm <storm@cua.dk>
parents: 50377
diff changeset
2065 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
2066 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
2067 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
2068 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
2069 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
2070
21884
bc4455bca454 Include shellapi.h.
Richard M. Stallman <rms@gnu.org>
parents: 21874
diff changeset
2071 /* Enable drag-n-drop. */
bc4455bca454 Include shellapi.h.
Richard M. Stallman <rms@gnu.org>
parents: 21874
diff changeset
2072 DragAcceptFiles (hwnd, TRUE);
47942
080b4586492b Fix typo in comment.
Juanma Barranquero <lekktu@gmail.com>
parents: 47731
diff changeset
2073
15147
38c0ce06203f (quit_char, Vwin32_enable_italics, Vwin32_enable_palette):
Geoff Voelker <voelker@cs.washington.edu>
parents: 15034
diff changeset
2074 /* 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
2075 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
2076
26164031aa5a (w32_createwindow): Use CW_USEDEFAULT instead of f->left_pos and SH_SHOW
Eli Zaretskii <eliz@gnu.org>
parents: 71171
diff changeset
2077 /* 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
2078 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
2079 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
2080 f->top_pos = rect.top;
13434
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
2081 }
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
2082 }
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
2083
86065
2557aa084b57 (Fw32_registered_hot_keys): Don't return the nil values corresponding
Juanma Barranquero <lekktu@gmail.com>
parents: 86053
diff changeset
2084 static void
13434
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
2085 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
2086 W32Msg * wmsg;
13434
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
2087 HWND hwnd;
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
2088 UINT msg;
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
2089 WPARAM wParam;
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
2090 LPARAM lParam;
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 wmsg->msg.hwnd = hwnd;
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
2093 wmsg->msg.message = msg;
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
2094 wmsg->msg.wParam = wParam;
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
2095 wmsg->msg.lParam = lParam;
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
2096 wmsg->msg.time = GetMessageTime ();
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
2097
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
2098 post_msg (wmsg);
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
2099 }
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
2100
16884
36babc489b0c Change all uses of win95, winnt, and win32
Geoff Voelker <voelker@cs.washington.edu>
parents: 16602
diff changeset
2101 /* 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
2102 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
2103 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
2104 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
2105 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
2106 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
2107 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
2108 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
2109 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
2110 on Swedish keyboards). */
4fe9540be594 (modifiers, modifier_key_support_tested,
Geoff Voelker <voelker@cs.washington.edu>
parents: 14353
diff changeset
2111
4fe9540be594 (modifiers, modifier_key_support_tested,
Geoff Voelker <voelker@cs.washington.edu>
parents: 14353
diff changeset
2112 #define EMACS_LCONTROL 0
4fe9540be594 (modifiers, modifier_key_support_tested,
Geoff Voelker <voelker@cs.washington.edu>
parents: 14353
diff changeset
2113 #define EMACS_RCONTROL 1
4fe9540be594 (modifiers, modifier_key_support_tested,
Geoff Voelker <voelker@cs.washington.edu>
parents: 14353
diff changeset
2114 #define EMACS_LMENU 2
4fe9540be594 (modifiers, modifier_key_support_tested,
Geoff Voelker <voelker@cs.washington.edu>
parents: 14353
diff changeset
2115 #define EMACS_RMENU 3
4fe9540be594 (modifiers, modifier_key_support_tested,
Geoff Voelker <voelker@cs.washington.edu>
parents: 14353
diff changeset
2116
4fe9540be594 (modifiers, modifier_key_support_tested,
Geoff Voelker <voelker@cs.washington.edu>
parents: 14353
diff changeset
2117 static int modifiers[4];
4fe9540be594 (modifiers, modifier_key_support_tested,
Geoff Voelker <voelker@cs.washington.edu>
parents: 14353
diff changeset
2118 static int modifiers_recorded;
4fe9540be594 (modifiers, modifier_key_support_tested,
Geoff Voelker <voelker@cs.washington.edu>
parents: 14353
diff changeset
2119 static int modifier_key_support_tested;
4fe9540be594 (modifiers, modifier_key_support_tested,
Geoff Voelker <voelker@cs.washington.edu>
parents: 14353
diff changeset
2120
4fe9540be594 (modifiers, modifier_key_support_tested,
Geoff Voelker <voelker@cs.washington.edu>
parents: 14353
diff changeset
2121 static void
4fe9540be594 (modifiers, modifier_key_support_tested,
Geoff Voelker <voelker@cs.washington.edu>
parents: 14353
diff changeset
2122 test_modifier_support (unsigned int wparam)
4fe9540be594 (modifiers, modifier_key_support_tested,
Geoff Voelker <voelker@cs.washington.edu>
parents: 14353
diff changeset
2123 {
4fe9540be594 (modifiers, modifier_key_support_tested,
Geoff Voelker <voelker@cs.washington.edu>
parents: 14353
diff changeset
2124 unsigned int l, r;
4fe9540be594 (modifiers, modifier_key_support_tested,
Geoff Voelker <voelker@cs.washington.edu>
parents: 14353
diff changeset
2125
4fe9540be594 (modifiers, modifier_key_support_tested,
Geoff Voelker <voelker@cs.washington.edu>
parents: 14353
diff changeset
2126 if (wparam != VK_CONTROL && wparam != VK_MENU)
4fe9540be594 (modifiers, modifier_key_support_tested,
Geoff Voelker <voelker@cs.washington.edu>
parents: 14353
diff changeset
2127 return;
4fe9540be594 (modifiers, modifier_key_support_tested,
Geoff Voelker <voelker@cs.washington.edu>
parents: 14353
diff changeset
2128 if (wparam == VK_CONTROL)
4fe9540be594 (modifiers, modifier_key_support_tested,
Geoff Voelker <voelker@cs.washington.edu>
parents: 14353
diff changeset
2129 {
4fe9540be594 (modifiers, modifier_key_support_tested,
Geoff Voelker <voelker@cs.washington.edu>
parents: 14353
diff changeset
2130 l = VK_LCONTROL;
4fe9540be594 (modifiers, modifier_key_support_tested,
Geoff Voelker <voelker@cs.washington.edu>
parents: 14353
diff changeset
2131 r = VK_RCONTROL;
4fe9540be594 (modifiers, modifier_key_support_tested,
Geoff Voelker <voelker@cs.washington.edu>
parents: 14353
diff changeset
2132 }
4fe9540be594 (modifiers, modifier_key_support_tested,
Geoff Voelker <voelker@cs.washington.edu>
parents: 14353
diff changeset
2133 else
4fe9540be594 (modifiers, modifier_key_support_tested,
Geoff Voelker <voelker@cs.washington.edu>
parents: 14353
diff changeset
2134 {
4fe9540be594 (modifiers, modifier_key_support_tested,
Geoff Voelker <voelker@cs.washington.edu>
parents: 14353
diff changeset
2135 l = VK_LMENU;
4fe9540be594 (modifiers, modifier_key_support_tested,
Geoff Voelker <voelker@cs.washington.edu>
parents: 14353
diff changeset
2136 r = VK_RMENU;
4fe9540be594 (modifiers, modifier_key_support_tested,
Geoff Voelker <voelker@cs.washington.edu>
parents: 14353
diff changeset
2137 }
4fe9540be594 (modifiers, modifier_key_support_tested,
Geoff Voelker <voelker@cs.washington.edu>
parents: 14353
diff changeset
2138 if (!(GetKeyState (l) & 0x8000) && !(GetKeyState (r) & 0x8000))
4fe9540be594 (modifiers, modifier_key_support_tested,
Geoff Voelker <voelker@cs.washington.edu>
parents: 14353
diff changeset
2139 modifiers_recorded = 1;
4fe9540be594 (modifiers, modifier_key_support_tested,
Geoff Voelker <voelker@cs.washington.edu>
parents: 14353
diff changeset
2140 else
4fe9540be594 (modifiers, modifier_key_support_tested,
Geoff Voelker <voelker@cs.washington.edu>
parents: 14353
diff changeset
2141 modifiers_recorded = 0;
4fe9540be594 (modifiers, modifier_key_support_tested,
Geoff Voelker <voelker@cs.washington.edu>
parents: 14353
diff changeset
2142 modifier_key_support_tested = 1;
4fe9540be594 (modifiers, modifier_key_support_tested,
Geoff Voelker <voelker@cs.washington.edu>
parents: 14353
diff changeset
2143 }
4fe9540be594 (modifiers, modifier_key_support_tested,
Geoff Voelker <voelker@cs.washington.edu>
parents: 14353
diff changeset
2144
4fe9540be594 (modifiers, modifier_key_support_tested,
Geoff Voelker <voelker@cs.washington.edu>
parents: 14353
diff changeset
2145 static void
4fe9540be594 (modifiers, modifier_key_support_tested,
Geoff Voelker <voelker@cs.washington.edu>
parents: 14353
diff changeset
2146 record_keydown (unsigned int wparam, unsigned int lparam)
4fe9540be594 (modifiers, modifier_key_support_tested,
Geoff Voelker <voelker@cs.washington.edu>
parents: 14353
diff changeset
2147 {
4fe9540be594 (modifiers, modifier_key_support_tested,
Geoff Voelker <voelker@cs.washington.edu>
parents: 14353
diff changeset
2148 int i;
4fe9540be594 (modifiers, modifier_key_support_tested,
Geoff Voelker <voelker@cs.washington.edu>
parents: 14353
diff changeset
2149
4fe9540be594 (modifiers, modifier_key_support_tested,
Geoff Voelker <voelker@cs.washington.edu>
parents: 14353
diff changeset
2150 if (!modifier_key_support_tested)
4fe9540be594 (modifiers, modifier_key_support_tested,
Geoff Voelker <voelker@cs.washington.edu>
parents: 14353
diff changeset
2151 test_modifier_support (wparam);
4fe9540be594 (modifiers, modifier_key_support_tested,
Geoff Voelker <voelker@cs.washington.edu>
parents: 14353
diff changeset
2152
4fe9540be594 (modifiers, modifier_key_support_tested,
Geoff Voelker <voelker@cs.washington.edu>
parents: 14353
diff changeset
2153 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
2154 return;
4fe9540be594 (modifiers, modifier_key_support_tested,
Geoff Voelker <voelker@cs.washington.edu>
parents: 14353
diff changeset
2155
4fe9540be594 (modifiers, modifier_key_support_tested,
Geoff Voelker <voelker@cs.washington.edu>
parents: 14353
diff changeset
2156 if (wparam == VK_CONTROL)
4fe9540be594 (modifiers, modifier_key_support_tested,
Geoff Voelker <voelker@cs.washington.edu>
parents: 14353
diff changeset
2157 i = (lparam & 0x1000000) ? EMACS_RCONTROL : EMACS_LCONTROL;
4fe9540be594 (modifiers, modifier_key_support_tested,
Geoff Voelker <voelker@cs.washington.edu>
parents: 14353
diff changeset
2158 else
4fe9540be594 (modifiers, modifier_key_support_tested,
Geoff Voelker <voelker@cs.washington.edu>
parents: 14353
diff changeset
2159 i = (lparam & 0x1000000) ? EMACS_RMENU : EMACS_LMENU;
4fe9540be594 (modifiers, modifier_key_support_tested,
Geoff Voelker <voelker@cs.washington.edu>
parents: 14353
diff changeset
2160
4fe9540be594 (modifiers, modifier_key_support_tested,
Geoff Voelker <voelker@cs.washington.edu>
parents: 14353
diff changeset
2161 modifiers[i] = 1;
4fe9540be594 (modifiers, modifier_key_support_tested,
Geoff Voelker <voelker@cs.washington.edu>
parents: 14353
diff changeset
2162 }
4fe9540be594 (modifiers, modifier_key_support_tested,
Geoff Voelker <voelker@cs.washington.edu>
parents: 14353
diff changeset
2163
4fe9540be594 (modifiers, modifier_key_support_tested,
Geoff Voelker <voelker@cs.washington.edu>
parents: 14353
diff changeset
2164 static void
4fe9540be594 (modifiers, modifier_key_support_tested,
Geoff Voelker <voelker@cs.washington.edu>
parents: 14353
diff changeset
2165 record_keyup (unsigned int wparam, unsigned int lparam)
4fe9540be594 (modifiers, modifier_key_support_tested,
Geoff Voelker <voelker@cs.washington.edu>
parents: 14353
diff changeset
2166 {
4fe9540be594 (modifiers, modifier_key_support_tested,
Geoff Voelker <voelker@cs.washington.edu>
parents: 14353
diff changeset
2167 int i;
4fe9540be594 (modifiers, modifier_key_support_tested,
Geoff Voelker <voelker@cs.washington.edu>
parents: 14353
diff changeset
2168
4fe9540be594 (modifiers, modifier_key_support_tested,
Geoff Voelker <voelker@cs.washington.edu>
parents: 14353
diff changeset
2169 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
2170 return;
4fe9540be594 (modifiers, modifier_key_support_tested,
Geoff Voelker <voelker@cs.washington.edu>
parents: 14353
diff changeset
2171
4fe9540be594 (modifiers, modifier_key_support_tested,
Geoff Voelker <voelker@cs.washington.edu>
parents: 14353
diff changeset
2172 if (wparam == VK_CONTROL)
4fe9540be594 (modifiers, modifier_key_support_tested,
Geoff Voelker <voelker@cs.washington.edu>
parents: 14353
diff changeset
2173 i = (lparam & 0x1000000) ? EMACS_RCONTROL : EMACS_LCONTROL;
4fe9540be594 (modifiers, modifier_key_support_tested,
Geoff Voelker <voelker@cs.washington.edu>
parents: 14353
diff changeset
2174 else
4fe9540be594 (modifiers, modifier_key_support_tested,
Geoff Voelker <voelker@cs.washington.edu>
parents: 14353
diff changeset
2175 i = (lparam & 0x1000000) ? EMACS_RMENU : EMACS_LMENU;
4fe9540be594 (modifiers, modifier_key_support_tested,
Geoff Voelker <voelker@cs.washington.edu>
parents: 14353
diff changeset
2176
4fe9540be594 (modifiers, modifier_key_support_tested,
Geoff Voelker <voelker@cs.washington.edu>
parents: 14353
diff changeset
2177 modifiers[i] = 0;
4fe9540be594 (modifiers, modifier_key_support_tested,
Geoff Voelker <voelker@cs.washington.edu>
parents: 14353
diff changeset
2178 }
4fe9540be594 (modifiers, modifier_key_support_tested,
Geoff Voelker <voelker@cs.washington.edu>
parents: 14353
diff changeset
2179
14810
4dd6867765b9 (Vwin32_pass_alt_to_system,
Geoff Voelker <voelker@cs.washington.edu>
parents: 14461
diff changeset
2180 /* 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
2181 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
2182 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
2183 static void
4dd6867765b9 (Vwin32_pass_alt_to_system,
Geoff Voelker <voelker@cs.washington.edu>
parents: 14461
diff changeset
2184 reset_modifiers ()
4dd6867765b9 (Vwin32_pass_alt_to_system,
Geoff Voelker <voelker@cs.washington.edu>
parents: 14461
diff changeset
2185 {
15314
796d825f4444 (reset_modifiers): Only clear a modifier if the modifier key has been
Richard M. Stallman <rms@gnu.org>
parents: 15290
diff changeset
2186 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
2187
23803
f112aa8f8f5d (Vw32_phantom_key_code): New variable.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23801
diff changeset
2188 if (GetFocus () == NULL)
f112aa8f8f5d (Vw32_phantom_key_code): New variable.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23801
diff changeset
2189 /* 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
2190 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
2191
796d825f4444 (reset_modifiers): Only clear a modifier if the modifier key has been
Richard M. Stallman <rms@gnu.org>
parents: 15290
diff changeset
2192 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
2193 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
2194
796d825f4444 (reset_modifiers): Only clear a modifier if the modifier key has been
Richard M. Stallman <rms@gnu.org>
parents: 15290
diff changeset
2195 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
2196 /* 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
2197 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
2198
796d825f4444 (reset_modifiers): Only clear a modifier if the modifier key has been
Richard M. Stallman <rms@gnu.org>
parents: 15290
diff changeset
2199 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
2200 /* 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
2201 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
2202
23803
f112aa8f8f5d (Vw32_phantom_key_code): New variable.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23801
diff changeset
2203 /* 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
2204 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
2205 result of a hot-key being pressed. */
f112aa8f8f5d (Vw32_phantom_key_code): New variable.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23801
diff changeset
2206 {
f112aa8f8f5d (Vw32_phantom_key_code): New variable.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23801
diff changeset
2207 BYTE keystate[256];
f112aa8f8f5d (Vw32_phantom_key_code): New variable.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23801
diff changeset
2208
f112aa8f8f5d (Vw32_phantom_key_code): New variable.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23801
diff changeset
2209 #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
2210
f112aa8f8f5d (Vw32_phantom_key_code): New variable.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23801
diff changeset
2211 GetKeyboardState (keystate);
f112aa8f8f5d (Vw32_phantom_key_code): New variable.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23801
diff changeset
2212 keystate[VK_SHIFT] = CURRENT_STATE (VK_SHIFT);
f112aa8f8f5d (Vw32_phantom_key_code): New variable.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23801
diff changeset
2213 keystate[VK_CONTROL] = CURRENT_STATE (VK_CONTROL);
f112aa8f8f5d (Vw32_phantom_key_code): New variable.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23801
diff changeset
2214 keystate[VK_LCONTROL] = CURRENT_STATE (VK_LCONTROL);
f112aa8f8f5d (Vw32_phantom_key_code): New variable.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23801
diff changeset
2215 keystate[VK_RCONTROL] = CURRENT_STATE (VK_RCONTROL);
f112aa8f8f5d (Vw32_phantom_key_code): New variable.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23801
diff changeset
2216 keystate[VK_MENU] = CURRENT_STATE (VK_MENU);
f112aa8f8f5d (Vw32_phantom_key_code): New variable.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23801
diff changeset
2217 keystate[VK_LMENU] = CURRENT_STATE (VK_LMENU);
f112aa8f8f5d (Vw32_phantom_key_code): New variable.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23801
diff changeset
2218 keystate[VK_RMENU] = CURRENT_STATE (VK_RMENU);
f112aa8f8f5d (Vw32_phantom_key_code): New variable.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23801
diff changeset
2219 keystate[VK_LWIN] = CURRENT_STATE (VK_LWIN);
f112aa8f8f5d (Vw32_phantom_key_code): New variable.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23801
diff changeset
2220 keystate[VK_RWIN] = CURRENT_STATE (VK_RWIN);
f112aa8f8f5d (Vw32_phantom_key_code): New variable.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23801
diff changeset
2221 keystate[VK_APPS] = CURRENT_STATE (VK_APPS);
f112aa8f8f5d (Vw32_phantom_key_code): New variable.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23801
diff changeset
2222 SetKeyboardState (keystate);
f112aa8f8f5d (Vw32_phantom_key_code): New variable.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23801
diff changeset
2223 }
14810
4dd6867765b9 (Vwin32_pass_alt_to_system,
Geoff Voelker <voelker@cs.washington.edu>
parents: 14461
diff changeset
2224 }
4dd6867765b9 (Vwin32_pass_alt_to_system,
Geoff Voelker <voelker@cs.washington.edu>
parents: 14461
diff changeset
2225
15377
65d9ff2c8602 (sync_modifiers): New function.
Richard M. Stallman <rms@gnu.org>
parents: 15314
diff changeset
2226 /* 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
2227 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
2228 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
2229 the left or right modifier should be set. */
65d9ff2c8602 (sync_modifiers): New function.
Richard M. Stallman <rms@gnu.org>
parents: 15314
diff changeset
2230 static void
65d9ff2c8602 (sync_modifiers): New function.
Richard M. Stallman <rms@gnu.org>
parents: 15314
diff changeset
2231 sync_modifiers ()
65d9ff2c8602 (sync_modifiers): New function.
Richard M. Stallman <rms@gnu.org>
parents: 15314
diff changeset
2232 {
65d9ff2c8602 (sync_modifiers): New function.
Richard M. Stallman <rms@gnu.org>
parents: 15314
diff changeset
2233 if (!modifiers_recorded)
65d9ff2c8602 (sync_modifiers): New function.
Richard M. Stallman <rms@gnu.org>
parents: 15314
diff changeset
2234 return;
65d9ff2c8602 (sync_modifiers): New function.
Richard M. Stallman <rms@gnu.org>
parents: 15314
diff changeset
2235
47942
080b4586492b Fix typo in comment.
Juanma Barranquero <lekktu@gmail.com>
parents: 47731
diff changeset
2236 if (!(GetKeyState (VK_CONTROL) & 0x8000))
15377
65d9ff2c8602 (sync_modifiers): New function.
Richard M. Stallman <rms@gnu.org>
parents: 15314
diff changeset
2237 modifiers[EMACS_RCONTROL] = modifiers[EMACS_LCONTROL] = 0;
65d9ff2c8602 (sync_modifiers): New function.
Richard M. Stallman <rms@gnu.org>
parents: 15314
diff changeset
2238
47942
080b4586492b Fix typo in comment.
Juanma Barranquero <lekktu@gmail.com>
parents: 47731
diff changeset
2239 if (!(GetKeyState (VK_MENU) & 0x8000))
15377
65d9ff2c8602 (sync_modifiers): New function.
Richard M. Stallman <rms@gnu.org>
parents: 15314
diff changeset
2240 modifiers[EMACS_RMENU] = modifiers[EMACS_LMENU] = 0;
65d9ff2c8602 (sync_modifiers): New function.
Richard M. Stallman <rms@gnu.org>
parents: 15314
diff changeset
2241 }
65d9ff2c8602 (sync_modifiers): New function.
Richard M. Stallman <rms@gnu.org>
parents: 15314
diff changeset
2242
14461
4fe9540be594 (modifiers, modifier_key_support_tested,
Geoff Voelker <voelker@cs.washington.edu>
parents: 14353
diff changeset
2243 static int
4fe9540be594 (modifiers, modifier_key_support_tested,
Geoff Voelker <voelker@cs.washington.edu>
parents: 14353
diff changeset
2244 modifier_set (int vkey)
4fe9540be594 (modifiers, modifier_key_support_tested,
Geoff Voelker <voelker@cs.washington.edu>
parents: 14353
diff changeset
2245 {
23681
af0276da2059 (Vw32_pass_optional_keys_to_system): Variable removed.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23637
diff changeset
2246 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
2247 return (GetKeyState (vkey) & 0x1);
14461
4fe9540be594 (modifiers, modifier_key_support_tested,
Geoff Voelker <voelker@cs.washington.edu>
parents: 14353
diff changeset
2248 if (!modifiers_recorded)
4fe9540be594 (modifiers, modifier_key_support_tested,
Geoff Voelker <voelker@cs.washington.edu>
parents: 14353
diff changeset
2249 return (GetKeyState (vkey) & 0x8000);
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 switch (vkey)
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 case VK_LCONTROL:
4fe9540be594 (modifiers, modifier_key_support_tested,
Geoff Voelker <voelker@cs.washington.edu>
parents: 14353
diff changeset
2254 return modifiers[EMACS_LCONTROL];
4fe9540be594 (modifiers, modifier_key_support_tested,
Geoff Voelker <voelker@cs.washington.edu>
parents: 14353
diff changeset
2255 case VK_RCONTROL:
4fe9540be594 (modifiers, modifier_key_support_tested,
Geoff Voelker <voelker@cs.washington.edu>
parents: 14353
diff changeset
2256 return modifiers[EMACS_RCONTROL];
4fe9540be594 (modifiers, modifier_key_support_tested,
Geoff Voelker <voelker@cs.washington.edu>
parents: 14353
diff changeset
2257 case VK_LMENU:
4fe9540be594 (modifiers, modifier_key_support_tested,
Geoff Voelker <voelker@cs.washington.edu>
parents: 14353
diff changeset
2258 return modifiers[EMACS_LMENU];
4fe9540be594 (modifiers, modifier_key_support_tested,
Geoff Voelker <voelker@cs.washington.edu>
parents: 14353
diff changeset
2259 case VK_RMENU:
4fe9540be594 (modifiers, modifier_key_support_tested,
Geoff Voelker <voelker@cs.washington.edu>
parents: 14353
diff changeset
2260 return modifiers[EMACS_RMENU];
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 return (GetKeyState (vkey) & 0x8000);
4fe9540be594 (modifiers, modifier_key_support_tested,
Geoff Voelker <voelker@cs.washington.edu>
parents: 14353
diff changeset
2263 }
4fe9540be594 (modifiers, modifier_key_support_tested,
Geoff Voelker <voelker@cs.washington.edu>
parents: 14353
diff changeset
2264
23681
af0276da2059 (Vw32_pass_optional_keys_to_system): Variable removed.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23637
diff changeset
2265 /* 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
2266 Emacs uses. */
af0276da2059 (Vw32_pass_optional_keys_to_system): Variable removed.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23637
diff changeset
2267
af0276da2059 (Vw32_pass_optional_keys_to_system): Variable removed.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23637
diff changeset
2268 unsigned int
af0276da2059 (Vw32_pass_optional_keys_to_system): Variable removed.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23637
diff changeset
2269 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
2270 {
af0276da2059 (Vw32_pass_optional_keys_to_system): Variable removed.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23637
diff changeset
2271 Lisp_Object key_mapping;
af0276da2059 (Vw32_pass_optional_keys_to_system): Variable removed.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23637
diff changeset
2272
af0276da2059 (Vw32_pass_optional_keys_to_system): Variable removed.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23637
diff changeset
2273 switch (key)
af0276da2059 (Vw32_pass_optional_keys_to_system): Variable removed.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23637
diff changeset
2274 {
af0276da2059 (Vw32_pass_optional_keys_to_system): Variable removed.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23637
diff changeset
2275 case VK_LWIN:
af0276da2059 (Vw32_pass_optional_keys_to_system): Variable removed.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23637
diff changeset
2276 key_mapping = Vw32_lwindow_modifier;
af0276da2059 (Vw32_pass_optional_keys_to_system): Variable removed.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23637
diff changeset
2277 break;
af0276da2059 (Vw32_pass_optional_keys_to_system): Variable removed.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23637
diff changeset
2278 case VK_RWIN:
af0276da2059 (Vw32_pass_optional_keys_to_system): Variable removed.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23637
diff changeset
2279 key_mapping = Vw32_rwindow_modifier;
af0276da2059 (Vw32_pass_optional_keys_to_system): Variable removed.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23637
diff changeset
2280 break;
af0276da2059 (Vw32_pass_optional_keys_to_system): Variable removed.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23637
diff changeset
2281 case VK_APPS:
af0276da2059 (Vw32_pass_optional_keys_to_system): Variable removed.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23637
diff changeset
2282 key_mapping = Vw32_apps_modifier;
af0276da2059 (Vw32_pass_optional_keys_to_system): Variable removed.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23637
diff changeset
2283 break;
af0276da2059 (Vw32_pass_optional_keys_to_system): Variable removed.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23637
diff changeset
2284 case VK_SCROLL:
af0276da2059 (Vw32_pass_optional_keys_to_system): Variable removed.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23637
diff changeset
2285 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
2286 break;
af0276da2059 (Vw32_pass_optional_keys_to_system): Variable removed.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23637
diff changeset
2287 default:
af0276da2059 (Vw32_pass_optional_keys_to_system): Variable removed.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23637
diff changeset
2288 key_mapping = Qnil;
af0276da2059 (Vw32_pass_optional_keys_to_system): Variable removed.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23637
diff changeset
2289 }
af0276da2059 (Vw32_pass_optional_keys_to_system): Variable removed.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23637
diff changeset
2290
23803
f112aa8f8f5d (Vw32_phantom_key_code): New variable.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23801
diff changeset
2291 /* 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
2292 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
2293 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
2294 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
2295 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
2296 markbits here. */
f112aa8f8f5d (Vw32_phantom_key_code): New variable.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23801
diff changeset
2297 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
2298 return hyper_modifier;
23803
f112aa8f8f5d (Vw32_phantom_key_code): New variable.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23801
diff changeset
2299 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
2300 return super_modifier;
23803
f112aa8f8f5d (Vw32_phantom_key_code): New variable.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23801
diff changeset
2301 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
2302 return meta_modifier;
23803
f112aa8f8f5d (Vw32_phantom_key_code): New variable.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23801
diff changeset
2303 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
2304 return alt_modifier;
23803
f112aa8f8f5d (Vw32_phantom_key_code): New variable.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23801
diff changeset
2305 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
2306 return ctrl_modifier;
23803
f112aa8f8f5d (Vw32_phantom_key_code): New variable.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23801
diff changeset
2307 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
2308 return ctrl_modifier;
23803
f112aa8f8f5d (Vw32_phantom_key_code): New variable.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23801
diff changeset
2309 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
2310 return shift_modifier;
af0276da2059 (Vw32_pass_optional_keys_to_system): Variable removed.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23637
diff changeset
2311
af0276da2059 (Vw32_pass_optional_keys_to_system): Variable removed.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23637
diff changeset
2312 /* 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
2313 return 0;
af0276da2059 (Vw32_pass_optional_keys_to_system): Variable removed.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23637
diff changeset
2314 }
af0276da2059 (Vw32_pass_optional_keys_to_system): Variable removed.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23637
diff changeset
2315
86065
2557aa084b57 (Fw32_registered_hot_keys): Don't return the nil values corresponding
Juanma Barranquero <lekktu@gmail.com>
parents: 86053
diff changeset
2316 static unsigned int
23681
af0276da2059 (Vw32_pass_optional_keys_to_system): Variable removed.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23637
diff changeset
2317 w32_get_modifiers ()
af0276da2059 (Vw32_pass_optional_keys_to_system): Variable removed.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23637
diff changeset
2318 {
af0276da2059 (Vw32_pass_optional_keys_to_system): Variable removed.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23637
diff changeset
2319 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
2320 (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
2321 (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
2322 (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
2323 (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
2324 (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
2325 (modifier_set (VK_MENU) ?
af0276da2059 (Vw32_pass_optional_keys_to_system): Variable removed.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23637
diff changeset
2326 ((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
2327 }
af0276da2059 (Vw32_pass_optional_keys_to_system): Variable removed.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23637
diff changeset
2328
14461
4fe9540be594 (modifiers, modifier_key_support_tested,
Geoff Voelker <voelker@cs.washington.edu>
parents: 14353
diff changeset
2329 /* 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
2330 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
2331 and window input. */
4fe9540be594 (modifiers, modifier_key_support_tested,
Geoff Voelker <voelker@cs.washington.edu>
parents: 14353
diff changeset
2332
4fe9540be594 (modifiers, modifier_key_support_tested,
Geoff Voelker <voelker@cs.washington.edu>
parents: 14353
diff changeset
2333 static int
23681
af0276da2059 (Vw32_pass_optional_keys_to_system): Variable removed.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23637
diff changeset
2334 construct_console_modifiers ()
14461
4fe9540be594 (modifiers, modifier_key_support_tested,
Geoff Voelker <voelker@cs.washington.edu>
parents: 14353
diff changeset
2335 {
4fe9540be594 (modifiers, modifier_key_support_tested,
Geoff Voelker <voelker@cs.washington.edu>
parents: 14353
diff changeset
2336 int mods;
4fe9540be594 (modifiers, modifier_key_support_tested,
Geoff Voelker <voelker@cs.washington.edu>
parents: 14353
diff changeset
2337
4fe9540be594 (modifiers, modifier_key_support_tested,
Geoff Voelker <voelker@cs.washington.edu>
parents: 14353
diff changeset
2338 mods = 0;
4fe9540be594 (modifiers, modifier_key_support_tested,
Geoff Voelker <voelker@cs.washington.edu>
parents: 14353
diff changeset
2339 mods |= (modifier_set (VK_SHIFT)) ? SHIFT_PRESSED : 0;
4fe9540be594 (modifiers, modifier_key_support_tested,
Geoff Voelker <voelker@cs.washington.edu>
parents: 14353
diff changeset
2340 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
2341 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
2342 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
2343 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
2344 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
2345 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
2346 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
2347 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
2348 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
2349 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
2350
af0276da2059 (Vw32_pass_optional_keys_to_system): Variable removed.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23637
diff changeset
2351 return mods;
af0276da2059 (Vw32_pass_optional_keys_to_system): Variable removed.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23637
diff changeset
2352 }
af0276da2059 (Vw32_pass_optional_keys_to_system): Variable removed.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23637
diff changeset
2353
af0276da2059 (Vw32_pass_optional_keys_to_system): Variable removed.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23637
diff changeset
2354 static int
af0276da2059 (Vw32_pass_optional_keys_to_system): Variable removed.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23637
diff changeset
2355 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
2356 {
af0276da2059 (Vw32_pass_optional_keys_to_system): Variable removed.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23637
diff changeset
2357 int mods;
af0276da2059 (Vw32_pass_optional_keys_to_system): Variable removed.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23637
diff changeset
2358
af0276da2059 (Vw32_pass_optional_keys_to_system): Variable removed.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23637
diff changeset
2359 /* Convert to emacs modifiers. */
af0276da2059 (Vw32_pass_optional_keys_to_system): Variable removed.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23637
diff changeset
2360 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
2361
4fe9540be594 (modifiers, modifier_key_support_tested,
Geoff Voelker <voelker@cs.washington.edu>
parents: 14353
diff changeset
2362 return mods;
4fe9540be594 (modifiers, modifier_key_support_tested,
Geoff Voelker <voelker@cs.washington.edu>
parents: 14353
diff changeset
2363 }
4fe9540be594 (modifiers, modifier_key_support_tested,
Geoff Voelker <voelker@cs.washington.edu>
parents: 14353
diff changeset
2364
23681
af0276da2059 (Vw32_pass_optional_keys_to_system): Variable removed.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23637
diff changeset
2365 unsigned int
af0276da2059 (Vw32_pass_optional_keys_to_system): Variable removed.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23637
diff changeset
2366 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
2367 {
af0276da2059 (Vw32_pass_optional_keys_to_system): Variable removed.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23637
diff changeset
2368 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
2369 return virt_key;
af0276da2059 (Vw32_pass_optional_keys_to_system): Variable removed.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23637
diff changeset
2370
af0276da2059 (Vw32_pass_optional_keys_to_system): Variable removed.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23637
diff changeset
2371 if (virt_key == VK_RETURN)
14810
4dd6867765b9 (Vwin32_pass_alt_to_system,
Geoff Voelker <voelker@cs.washington.edu>
parents: 14461
diff changeset
2372 return (extended ? VK_NUMPAD_ENTER : VK_RETURN);
4dd6867765b9 (Vwin32_pass_alt_to_system,
Geoff Voelker <voelker@cs.washington.edu>
parents: 14461
diff changeset
2373
23681
af0276da2059 (Vw32_pass_optional_keys_to_system): Variable removed.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23637
diff changeset
2374 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
2375 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
2376
af0276da2059 (Vw32_pass_optional_keys_to_system): Variable removed.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23637
diff changeset
2377 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
2378 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
2379
af0276da2059 (Vw32_pass_optional_keys_to_system): Variable removed.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23637
diff changeset
2380 if (virt_key == VK_CLEAR)
af0276da2059 (Vw32_pass_optional_keys_to_system): Variable removed.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23637
diff changeset
2381 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
2382
af0276da2059 (Vw32_pass_optional_keys_to_system): Variable removed.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23637
diff changeset
2383 return virt_key;
af0276da2059 (Vw32_pass_optional_keys_to_system): Variable removed.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23637
diff changeset
2384 }
af0276da2059 (Vw32_pass_optional_keys_to_system): Variable removed.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23637
diff changeset
2385
af0276da2059 (Vw32_pass_optional_keys_to_system): Variable removed.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23637
diff changeset
2386 /* 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
2387 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
2388 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
2389 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
2390 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
2391
79387
0ca197abc593 (Fw32_registered_hot_keys): Don't return the nil values corresponding
Juanma Barranquero <lekktu@gmail.com>
parents: 79381
diff changeset
2392 #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
2393 #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
2394 #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
2395 #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
2396
55656
29b250a07fe0 (Fw32_register_hot_key, Fw32_unregister_hot_key)
Jason Rumney <jasonr@gnu.org>
parents: 55592
diff changeset
2397 #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
2398 #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
2399 #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
2400
23681
af0276da2059 (Vw32_pass_optional_keys_to_system): Variable removed.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23637
diff changeset
2401 /* 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
2402 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
2403 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
2404
af0276da2059 (Vw32_pass_optional_keys_to_system): Variable removed.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23637
diff changeset
2405 static void
af0276da2059 (Vw32_pass_optional_keys_to_system): Variable removed.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23637
diff changeset
2406 register_hot_keys (hwnd)
af0276da2059 (Vw32_pass_optional_keys_to_system): Variable removed.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23637
diff changeset
2407 HWND hwnd;
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 Lisp_Object keylist;
af0276da2059 (Vw32_pass_optional_keys_to_system): Variable removed.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23637
diff changeset
2410
90970
3371fc48749b Replace uses of GC_* macros with the non-GC_ versions.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 90919
diff changeset
2411 /* 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
2412 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
2413 {
af0276da2059 (Vw32_pass_optional_keys_to_system): Variable removed.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23637
diff changeset
2414 Lisp_Object key = XCAR (keylist);
af0276da2059 (Vw32_pass_optional_keys_to_system): Variable removed.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23637
diff changeset
2415
af0276da2059 (Vw32_pass_optional_keys_to_system): Variable removed.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23637
diff changeset
2416 /* 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
2417 if (!INTEGERP (key))
af0276da2059 (Vw32_pass_optional_keys_to_system): Variable removed.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23637
diff changeset
2418 continue;
af0276da2059 (Vw32_pass_optional_keys_to_system): Variable removed.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23637
diff changeset
2419
af0276da2059 (Vw32_pass_optional_keys_to_system): Variable removed.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23637
diff changeset
2420 RegisterHotKey (hwnd, HOTKEY_ID (key),
af0276da2059 (Vw32_pass_optional_keys_to_system): Variable removed.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23637
diff changeset
2421 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
2422 }
af0276da2059 (Vw32_pass_optional_keys_to_system): Variable removed.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23637
diff changeset
2423 }
af0276da2059 (Vw32_pass_optional_keys_to_system): Variable removed.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23637
diff changeset
2424
af0276da2059 (Vw32_pass_optional_keys_to_system): Variable removed.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23637
diff changeset
2425 static void
af0276da2059 (Vw32_pass_optional_keys_to_system): Variable removed.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23637
diff changeset
2426 unregister_hot_keys (hwnd)
af0276da2059 (Vw32_pass_optional_keys_to_system): Variable removed.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23637
diff changeset
2427 HWND hwnd;
af0276da2059 (Vw32_pass_optional_keys_to_system): Variable removed.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23637
diff changeset
2428 {
af0276da2059 (Vw32_pass_optional_keys_to_system): Variable removed.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23637
diff changeset
2429 Lisp_Object keylist;
af0276da2059 (Vw32_pass_optional_keys_to_system): Variable removed.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23637
diff changeset
2430
90970
3371fc48749b Replace uses of GC_* macros with the non-GC_ versions.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 90919
diff changeset
2431 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
2432 {
af0276da2059 (Vw32_pass_optional_keys_to_system): Variable removed.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23637
diff changeset
2433 Lisp_Object key = XCAR (keylist);
af0276da2059 (Vw32_pass_optional_keys_to_system): Variable removed.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23637
diff changeset
2434
af0276da2059 (Vw32_pass_optional_keys_to_system): Variable removed.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23637
diff changeset
2435 if (!INTEGERP (key))
af0276da2059 (Vw32_pass_optional_keys_to_system): Variable removed.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23637
diff changeset
2436 continue;
af0276da2059 (Vw32_pass_optional_keys_to_system): Variable removed.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23637
diff changeset
2437
af0276da2059 (Vw32_pass_optional_keys_to_system): Variable removed.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23637
diff changeset
2438 UnregisterHotKey (hwnd, HOTKEY_ID (key));
af0276da2059 (Vw32_pass_optional_keys_to_system): Variable removed.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23637
diff changeset
2439 }
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
15147
38c0ce06203f (quit_char, Vwin32_enable_italics, Vwin32_enable_palette):
Geoff Voelker <voelker@cs.washington.edu>
parents: 15034
diff changeset
2442 /* Main message dispatch loop. */
38c0ce06203f (quit_char, Vwin32_enable_italics, Vwin32_enable_palette):
Geoff Voelker <voelker@cs.washington.edu>
parents: 15034
diff changeset
2443
19707
0181cc080316 Include limits.h and errno.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18508
diff changeset
2444 static void
0181cc080316 Include limits.h and errno.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18508
diff changeset
2445 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
2446 {
38c0ce06203f (quit_char, Vwin32_enable_italics, Vwin32_enable_palette):
Geoff Voelker <voelker@cs.washington.edu>
parents: 15034
diff changeset
2447 MSG msg;
23681
af0276da2059 (Vw32_pass_optional_keys_to_system): Variable removed.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23637
diff changeset
2448 int result;
af0276da2059 (Vw32_pass_optional_keys_to_system): Variable removed.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23637
diff changeset
2449 HWND focus_window;
21874
c0871d40073e (msh_mousewheel): New variable.
Geoff Voelker <voelker@cs.washington.edu>
parents: 21735
diff changeset
2450
c0871d40073e (msh_mousewheel): New variable.
Geoff Voelker <voelker@cs.washington.edu>
parents: 21735
diff changeset
2451 msh_mousewheel = RegisterWindowMessage (MSH_MOUSEWHEEL);
47942
080b4586492b Fix typo in comment.
Juanma Barranquero <lekktu@gmail.com>
parents: 47731
diff changeset
2452
15147
38c0ce06203f (quit_char, Vwin32_enable_italics, Vwin32_enable_palette):
Geoff Voelker <voelker@cs.washington.edu>
parents: 15034
diff changeset
2453 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
2454 {
38c0ce06203f (quit_char, Vwin32_enable_italics, Vwin32_enable_palette):
Geoff Voelker <voelker@cs.washington.edu>
parents: 15034
diff changeset
2455 if (msg.hwnd == NULL)
38c0ce06203f (quit_char, Vwin32_enable_italics, Vwin32_enable_palette):
Geoff Voelker <voelker@cs.washington.edu>
parents: 15034
diff changeset
2456 {
38c0ce06203f (quit_char, Vwin32_enable_italics, Vwin32_enable_palette):
Geoff Voelker <voelker@cs.washington.edu>
parents: 15034
diff changeset
2457 switch (msg.message)
38c0ce06203f (quit_char, Vwin32_enable_italics, Vwin32_enable_palette):
Geoff Voelker <voelker@cs.washington.edu>
parents: 15034
diff changeset
2458 {
23950
d8f8533db4cc (w32_msg_pump): Ignore WM_NULL message posted to thread
Andrew Innes <andrewi@gnu.org>
parents: 23803
diff changeset
2459 case WM_NULL:
d8f8533db4cc (w32_msg_pump): Ignore WM_NULL message posted to thread
Andrew Innes <andrewi@gnu.org>
parents: 23803
diff changeset
2460 /* 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
2461 break;
15147
38c0ce06203f (quit_char, Vwin32_enable_italics, Vwin32_enable_palette):
Geoff Voelker <voelker@cs.washington.edu>
parents: 15034
diff changeset
2462 case WM_EMACS_CREATEWINDOW:
78106
f9eb7f243bdc (w32_msg_pump) <WM_EMACS_CREATEWINDOW>: Initialize COM.
Jason Rumney <jasonr@gnu.org>
parents: 77995
diff changeset
2463 /* 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
2464 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
2465 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
2466 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
2467 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
2468 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
2469 CoInitialize (NULL);
16588
481b7874a1e9 Change identifiers of the form win32* to w32*.
Geoff Voelker <voelker@cs.washington.edu>
parents: 16259
diff changeset
2470 w32_createwindow ((struct frame *) msg.wParam);
19707
0181cc080316 Include limits.h and errno.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18508
diff changeset
2471 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
2472 abort ();
15147
38c0ce06203f (quit_char, Vwin32_enable_italics, Vwin32_enable_palette):
Geoff Voelker <voelker@cs.washington.edu>
parents: 15034
diff changeset
2473 break;
21608
d191a8737145 (w32_msg_pump): Handle WM_EMACS_SETLOCALE.
Geoff Voelker <voelker@cs.washington.edu>
parents: 19707
diff changeset
2474 case WM_EMACS_SETLOCALE:
d191a8737145 (w32_msg_pump): Handle WM_EMACS_SETLOCALE.
Geoff Voelker <voelker@cs.washington.edu>
parents: 19707
diff changeset
2475 SetThreadLocale (msg.wParam);
d191a8737145 (w32_msg_pump): Handle WM_EMACS_SETLOCALE.
Geoff Voelker <voelker@cs.washington.edu>
parents: 19707
diff changeset
2476 /* Reply is not expected. */
d191a8737145 (w32_msg_pump): Handle WM_EMACS_SETLOCALE.
Geoff Voelker <voelker@cs.washington.edu>
parents: 19707
diff changeset
2477 break;
23681
af0276da2059 (Vw32_pass_optional_keys_to_system): Variable removed.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23637
diff changeset
2478 case WM_EMACS_SETKEYBOARDLAYOUT:
af0276da2059 (Vw32_pass_optional_keys_to_system): Variable removed.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23637
diff changeset
2479 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
2480 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
2481 result, 0))
af0276da2059 (Vw32_pass_optional_keys_to_system): Variable removed.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23637
diff changeset
2482 abort ();
af0276da2059 (Vw32_pass_optional_keys_to_system): Variable removed.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23637
diff changeset
2483 break;
af0276da2059 (Vw32_pass_optional_keys_to_system): Variable removed.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23637
diff changeset
2484 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
2485 focus_window = GetFocus ();
af0276da2059 (Vw32_pass_optional_keys_to_system): Variable removed.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23637
diff changeset
2486 if (focus_window != NULL)
af0276da2059 (Vw32_pass_optional_keys_to_system): Variable removed.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23637
diff changeset
2487 RegisterHotKey (focus_window,
55656
29b250a07fe0 (Fw32_register_hot_key, Fw32_unregister_hot_key)
Jason Rumney <jasonr@gnu.org>
parents: 55592
diff changeset
2488 RAW_HOTKEY_ID (msg.wParam),
29b250a07fe0 (Fw32_register_hot_key, Fw32_unregister_hot_key)
Jason Rumney <jasonr@gnu.org>
parents: 55592
diff changeset
2489 RAW_HOTKEY_MODIFIERS (msg.wParam),
29b250a07fe0 (Fw32_register_hot_key, Fw32_unregister_hot_key)
Jason Rumney <jasonr@gnu.org>
parents: 55592
diff changeset
2490 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
2491 /* Reply is not expected. */
af0276da2059 (Vw32_pass_optional_keys_to_system): Variable removed.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23637
diff changeset
2492 break;
af0276da2059 (Vw32_pass_optional_keys_to_system): Variable removed.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23637
diff changeset
2493 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
2494 focus_window = GetFocus ();
af0276da2059 (Vw32_pass_optional_keys_to_system): Variable removed.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23637
diff changeset
2495 if (focus_window != NULL)
55656
29b250a07fe0 (Fw32_register_hot_key, Fw32_unregister_hot_key)
Jason Rumney <jasonr@gnu.org>
parents: 55592
diff changeset
2496 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
2497 /* 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
2498 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
2499 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
2500 GC. */
55656
29b250a07fe0 (Fw32_register_hot_key, Fw32_unregister_hot_key)
Jason Rumney <jasonr@gnu.org>
parents: 55592
diff changeset
2501 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
2502 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
2503 abort ();
af0276da2059 (Vw32_pass_optional_keys_to_system): Variable removed.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23637
diff changeset
2504 break;
23803
f112aa8f8f5d (Vw32_phantom_key_code): New variable.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23801
diff changeset
2505 case WM_EMACS_TOGGLE_LOCK_KEY:
f112aa8f8f5d (Vw32_phantom_key_code): New variable.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23801
diff changeset
2506 {
f112aa8f8f5d (Vw32_phantom_key_code): New variable.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23801
diff changeset
2507 int vk_code = (int) msg.wParam;
f112aa8f8f5d (Vw32_phantom_key_code): New variable.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23801
diff changeset
2508 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
2509 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
2510
f112aa8f8f5d (Vw32_phantom_key_code): New variable.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23801
diff changeset
2511 /* 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
2512 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
2513 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
2514 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
2515 immediate values. */
f112aa8f8f5d (Vw32_phantom_key_code): New variable.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23801
diff changeset
2516 if (NILP (new_state)
f112aa8f8f5d (Vw32_phantom_key_code): New variable.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23801
diff changeset
2517 || (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
2518 && ((XUINT (new_state)) & 1) != cur_state))
23803
f112aa8f8f5d (Vw32_phantom_key_code): New variable.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23801
diff changeset
2519 {
f112aa8f8f5d (Vw32_phantom_key_code): New variable.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23801
diff changeset
2520 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
2521
f112aa8f8f5d (Vw32_phantom_key_code): New variable.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23801
diff changeset
2522 keybd_event ((BYTE) vk_code,
f112aa8f8f5d (Vw32_phantom_key_code): New variable.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23801
diff changeset
2523 (BYTE) MapVirtualKey (vk_code, 0),
f112aa8f8f5d (Vw32_phantom_key_code): New variable.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23801
diff changeset
2524 KEYEVENTF_EXTENDEDKEY | KEYEVENTF_KEYUP, 0);
f112aa8f8f5d (Vw32_phantom_key_code): New variable.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23801
diff changeset
2525 keybd_event ((BYTE) vk_code,
f112aa8f8f5d (Vw32_phantom_key_code): New variable.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23801
diff changeset
2526 (BYTE) MapVirtualKey (vk_code, 0),
f112aa8f8f5d (Vw32_phantom_key_code): New variable.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23801
diff changeset
2527 KEYEVENTF_EXTENDEDKEY | 0, 0);
f112aa8f8f5d (Vw32_phantom_key_code): New variable.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23801
diff changeset
2528 keybd_event ((BYTE) vk_code,
f112aa8f8f5d (Vw32_phantom_key_code): New variable.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23801
diff changeset
2529 (BYTE) MapVirtualKey (vk_code, 0),
f112aa8f8f5d (Vw32_phantom_key_code): New variable.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23801
diff changeset
2530 KEYEVENTF_EXTENDEDKEY | KEYEVENTF_KEYUP, 0);
f112aa8f8f5d (Vw32_phantom_key_code): New variable.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23801
diff changeset
2531 cur_state = !cur_state;
f112aa8f8f5d (Vw32_phantom_key_code): New variable.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23801
diff changeset
2532 }
f112aa8f8f5d (Vw32_phantom_key_code): New variable.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23801
diff changeset
2533 if (!PostThreadMessage (dwMainThreadId, WM_EMACS_DONE,
f112aa8f8f5d (Vw32_phantom_key_code): New variable.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23801
diff changeset
2534 cur_state, 0))
f112aa8f8f5d (Vw32_phantom_key_code): New variable.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23801
diff changeset
2535 abort ();
f112aa8f8f5d (Vw32_phantom_key_code): New variable.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23801
diff changeset
2536 }
f112aa8f8f5d (Vw32_phantom_key_code): New variable.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23801
diff changeset
2537 break;
92362
099207aa138c (w32_msg_pump): Disable debug code.
Jason Rumney <jasonr@gnu.org>
parents: 92175
diff changeset
2538 #ifdef MSG_DEBUG
099207aa138c (w32_msg_pump): Disable debug code.
Jason Rumney <jasonr@gnu.org>
parents: 92175
diff changeset
2539 /* 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
2540 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
2541 default:
0181cc080316 Include limits.h and errno.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18508
diff changeset
2542 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
2543 #endif
15147
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 }
38c0ce06203f (quit_char, Vwin32_enable_italics, Vwin32_enable_palette):
Geoff Voelker <voelker@cs.washington.edu>
parents: 15034
diff changeset
2546 else
38c0ce06203f (quit_char, Vwin32_enable_italics, Vwin32_enable_palette):
Geoff Voelker <voelker@cs.washington.edu>
parents: 15034
diff changeset
2547 {
38c0ce06203f (quit_char, Vwin32_enable_italics, Vwin32_enable_palette):
Geoff Voelker <voelker@cs.washington.edu>
parents: 15034
diff changeset
2548 DispatchMessage (&msg);
38c0ce06203f (quit_char, Vwin32_enable_italics, Vwin32_enable_palette):
Geoff Voelker <voelker@cs.washington.edu>
parents: 15034
diff changeset
2549 }
19707
0181cc080316 Include limits.h and errno.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18508
diff changeset
2550
0181cc080316 Include limits.h and errno.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18508
diff changeset
2551 /* 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
2552 if (msg_buf->completed)
0181cc080316 Include limits.h and errno.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18508
diff changeset
2553 break;
15147
38c0ce06203f (quit_char, Vwin32_enable_italics, Vwin32_enable_palette):
Geoff Voelker <voelker@cs.washington.edu>
parents: 15034
diff changeset
2554 }
19707
0181cc080316 Include limits.h and errno.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18508
diff changeset
2555 }
0181cc080316 Include limits.h and errno.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18508
diff changeset
2556
0181cc080316 Include limits.h and errno.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18508
diff changeset
2557 deferred_msg * deferred_msg_head;
0181cc080316 Include limits.h and errno.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18508
diff changeset
2558
0181cc080316 Include limits.h and errno.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18508
diff changeset
2559 static deferred_msg *
0181cc080316 Include limits.h and errno.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18508
diff changeset
2560 find_deferred_msg (HWND hwnd, UINT msg)
0181cc080316 Include limits.h and errno.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18508
diff changeset
2561 {
0181cc080316 Include limits.h and errno.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18508
diff changeset
2562 deferred_msg * item;
0181cc080316 Include limits.h and errno.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18508
diff changeset
2563
0181cc080316 Include limits.h and errno.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18508
diff changeset
2564 /* 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
2565 modification of single pointer is always atomic. */
0181cc080316 Include limits.h and errno.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18508
diff changeset
2566 /* enter_crit (); */
0181cc080316 Include limits.h and errno.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18508
diff changeset
2567
0181cc080316 Include limits.h and errno.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18508
diff changeset
2568 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
2569 if (item->w32msg.msg.hwnd == hwnd
0181cc080316 Include limits.h and errno.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18508
diff changeset
2570 && item->w32msg.msg.message == msg)
0181cc080316 Include limits.h and errno.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18508
diff changeset
2571 break;
0181cc080316 Include limits.h and errno.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18508
diff changeset
2572
0181cc080316 Include limits.h and errno.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18508
diff changeset
2573 /* leave_crit (); */
0181cc080316 Include limits.h and errno.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18508
diff changeset
2574
0181cc080316 Include limits.h and errno.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18508
diff changeset
2575 return item;
0181cc080316 Include limits.h and errno.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18508
diff changeset
2576 }
0181cc080316 Include limits.h and errno.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18508
diff changeset
2577
0181cc080316 Include limits.h and errno.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18508
diff changeset
2578 static LRESULT
0181cc080316 Include limits.h and errno.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18508
diff changeset
2579 send_deferred_msg (deferred_msg * msg_buf,
0181cc080316 Include limits.h and errno.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18508
diff changeset
2580 HWND hwnd,
0181cc080316 Include limits.h and errno.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18508
diff changeset
2581 UINT msg,
0181cc080316 Include limits.h and errno.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18508
diff changeset
2582 WPARAM wParam,
0181cc080316 Include limits.h and errno.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18508
diff changeset
2583 LPARAM lParam)
0181cc080316 Include limits.h and errno.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18508
diff changeset
2584 {
0181cc080316 Include limits.h and errno.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18508
diff changeset
2585 /* Only input thread can send deferred messages. */
0181cc080316 Include limits.h and errno.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18508
diff changeset
2586 if (GetCurrentThreadId () != dwWindowsThreadId)
0181cc080316 Include limits.h and errno.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18508
diff changeset
2587 abort ();
0181cc080316 Include limits.h and errno.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18508
diff changeset
2588
0181cc080316 Include limits.h and errno.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18508
diff changeset
2589 /* 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
2590 if (find_deferred_msg (hwnd, msg) != NULL)
0181cc080316 Include limits.h and errno.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18508
diff changeset
2591 abort ();
0181cc080316 Include limits.h and errno.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18508
diff changeset
2592
0181cc080316 Include limits.h and errno.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18508
diff changeset
2593 /* 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
2594 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
2595 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
2596 input thread can call us). */
0181cc080316 Include limits.h and errno.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18508
diff changeset
2597
0181cc080316 Include limits.h and errno.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18508
diff changeset
2598 /* enter_crit (); */
0181cc080316 Include limits.h and errno.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18508
diff changeset
2599
0181cc080316 Include limits.h and errno.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18508
diff changeset
2600 msg_buf->completed = 0;
0181cc080316 Include limits.h and errno.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18508
diff changeset
2601 msg_buf->next = deferred_msg_head;
0181cc080316 Include limits.h and errno.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18508
diff changeset
2602 deferred_msg_head = msg_buf;
0181cc080316 Include limits.h and errno.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18508
diff changeset
2603 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
2604
0181cc080316 Include limits.h and errno.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18508
diff changeset
2605 /* leave_crit (); */
0181cc080316 Include limits.h and errno.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18508
diff changeset
2606
0181cc080316 Include limits.h and errno.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18508
diff changeset
2607 /* 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
2608 this one is completed. */
0181cc080316 Include limits.h and errno.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18508
diff changeset
2609 w32_msg_pump (msg_buf);
0181cc080316 Include limits.h and errno.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18508
diff changeset
2610
0181cc080316 Include limits.h and errno.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18508
diff changeset
2611 deferred_msg_head = msg_buf->next;
0181cc080316 Include limits.h and errno.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18508
diff changeset
2612
0181cc080316 Include limits.h and errno.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18508
diff changeset
2613 return msg_buf->result;
0181cc080316 Include limits.h and errno.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18508
diff changeset
2614 }
0181cc080316 Include limits.h and errno.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18508
diff changeset
2615
0181cc080316 Include limits.h and errno.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18508
diff changeset
2616 void
0181cc080316 Include limits.h and errno.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18508
diff changeset
2617 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
2618 {
0181cc080316 Include limits.h and errno.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18508
diff changeset
2619 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
2620
0181cc080316 Include limits.h and errno.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18508
diff changeset
2621 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
2622 /* 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
2623 return;
19707
0181cc080316 Include limits.h and errno.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18508
diff changeset
2624
0181cc080316 Include limits.h and errno.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18508
diff changeset
2625 msg_buf->result = result;
0181cc080316 Include limits.h and errno.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18508
diff changeset
2626 msg_buf->completed = 1;
0181cc080316 Include limits.h and errno.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18508
diff changeset
2627
0181cc080316 Include limits.h and errno.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18508
diff changeset
2628 /* 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
2629 PostThreadMessage (dwWindowsThreadId, WM_NULL, 0, 0);
0181cc080316 Include limits.h and errno.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18508
diff changeset
2630 }
0181cc080316 Include limits.h and errno.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18508
diff changeset
2631
86065
2557aa084b57 (Fw32_registered_hot_keys): Don't return the nil values corresponding
Juanma Barranquero <lekktu@gmail.com>
parents: 86053
diff changeset
2632 static void
23950
d8f8533db4cc (w32_msg_pump): Ignore WM_NULL message posted to thread
Andrew Innes <andrewi@gnu.org>
parents: 23803
diff changeset
2633 cancel_all_deferred_msgs ()
d8f8533db4cc (w32_msg_pump): Ignore WM_NULL message posted to thread
Andrew Innes <andrewi@gnu.org>
parents: 23803
diff changeset
2634 {
d8f8533db4cc (w32_msg_pump): Ignore WM_NULL message posted to thread
Andrew Innes <andrewi@gnu.org>
parents: 23803
diff changeset
2635 deferred_msg * item;
d8f8533db4cc (w32_msg_pump): Ignore WM_NULL message posted to thread
Andrew Innes <andrewi@gnu.org>
parents: 23803
diff changeset
2636
d8f8533db4cc (w32_msg_pump): Ignore WM_NULL message posted to thread
Andrew Innes <andrewi@gnu.org>
parents: 23803
diff changeset
2637 /* 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
2638 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
2639 /* enter_crit (); */
d8f8533db4cc (w32_msg_pump): Ignore WM_NULL message posted to thread
Andrew Innes <andrewi@gnu.org>
parents: 23803
diff changeset
2640
d8f8533db4cc (w32_msg_pump): Ignore WM_NULL message posted to thread
Andrew Innes <andrewi@gnu.org>
parents: 23803
diff changeset
2641 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
2642 {
d8f8533db4cc (w32_msg_pump): Ignore WM_NULL message posted to thread
Andrew Innes <andrewi@gnu.org>
parents: 23803
diff changeset
2643 item->result = 0;
d8f8533db4cc (w32_msg_pump): Ignore WM_NULL message posted to thread
Andrew Innes <andrewi@gnu.org>
parents: 23803
diff changeset
2644 item->completed = 1;
d8f8533db4cc (w32_msg_pump): Ignore WM_NULL message posted to thread
Andrew Innes <andrewi@gnu.org>
parents: 23803
diff changeset
2645 }
d8f8533db4cc (w32_msg_pump): Ignore WM_NULL message posted to thread
Andrew Innes <andrewi@gnu.org>
parents: 23803
diff changeset
2646
d8f8533db4cc (w32_msg_pump): Ignore WM_NULL message posted to thread
Andrew Innes <andrewi@gnu.org>
parents: 23803
diff changeset
2647 /* leave_crit (); */
d8f8533db4cc (w32_msg_pump): Ignore WM_NULL message posted to thread
Andrew Innes <andrewi@gnu.org>
parents: 23803
diff changeset
2648
d8f8533db4cc (w32_msg_pump): Ignore WM_NULL message posted to thread
Andrew Innes <andrewi@gnu.org>
parents: 23803
diff changeset
2649 /* 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
2650 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
2651 }
19707
0181cc080316 Include limits.h and errno.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18508
diff changeset
2652
74221
3146bd0e5646 (w32_msg_worker): Define as WINAPI and arg as void pointer.
Jason Rumney <jasonr@gnu.org>
parents: 73674
diff changeset
2653 DWORD WINAPI
3146bd0e5646 (w32_msg_worker): Define as WINAPI and arg as void pointer.
Jason Rumney <jasonr@gnu.org>
parents: 73674
diff changeset
2654 w32_msg_worker (void *arg)
19707
0181cc080316 Include limits.h and errno.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18508
diff changeset
2655 {
0181cc080316 Include limits.h and errno.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18508
diff changeset
2656 MSG msg;
0181cc080316 Include limits.h and errno.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18508
diff changeset
2657 deferred_msg dummy_buf;
0181cc080316 Include limits.h and errno.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18508
diff changeset
2658
0181cc080316 Include limits.h and errno.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18508
diff changeset
2659 /* Ensure our message queue is created */
47942
080b4586492b Fix typo in comment.
Juanma Barranquero <lekktu@gmail.com>
parents: 47731
diff changeset
2660
19707
0181cc080316 Include limits.h and errno.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18508
diff changeset
2661 PeekMessage (&msg, NULL, 0, 0, PM_NOREMOVE);
47942
080b4586492b Fix typo in comment.
Juanma Barranquero <lekktu@gmail.com>
parents: 47731
diff changeset
2662
19707
0181cc080316 Include limits.h and errno.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18508
diff changeset
2663 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
2664 abort ();
0181cc080316 Include limits.h and errno.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18508
diff changeset
2665
0181cc080316 Include limits.h and errno.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18508
diff changeset
2666 memset (&dummy_buf, 0, sizeof (dummy_buf));
0181cc080316 Include limits.h and errno.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18508
diff changeset
2667 dummy_buf.w32msg.msg.hwnd = NULL;
0181cc080316 Include limits.h and errno.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18508
diff changeset
2668 dummy_buf.w32msg.msg.message = WM_NULL;
0181cc080316 Include limits.h and errno.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18508
diff changeset
2669
94432
2dd3f3069c1c (Fw32_define_rgb_color): Fix typo in docstring.
Juanma Barranquero <lekktu@gmail.com>
parents: 93599
diff changeset
2670 /* 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
2671 application quits. */
0181cc080316 Include limits.h and errno.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18508
diff changeset
2672 w32_msg_pump (&dummy_buf);
0181cc080316 Include limits.h and errno.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18508
diff changeset
2673
0181cc080316 Include limits.h and errno.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18508
diff changeset
2674 return 0;
15147
38c0ce06203f (quit_char, Vwin32_enable_italics, Vwin32_enable_palette):
Geoff Voelker <voelker@cs.washington.edu>
parents: 15034
diff changeset
2675 }
38c0ce06203f (quit_char, Vwin32_enable_italics, Vwin32_enable_palette):
Geoff Voelker <voelker@cs.washington.edu>
parents: 15034
diff changeset
2676
23950
d8f8533db4cc (w32_msg_pump): Ignore WM_NULL message posted to thread
Andrew Innes <andrewi@gnu.org>
parents: 23803
diff changeset
2677 static void
69426
46a8c3e0161d (signal_user_input): New function.
Jason Rumney <jasonr@gnu.org>
parents: 69406
diff changeset
2678 signal_user_input ()
46a8c3e0161d (signal_user_input): New function.
Jason Rumney <jasonr@gnu.org>
parents: 69406
diff changeset
2679 {
46a8c3e0161d (signal_user_input): New function.
Jason Rumney <jasonr@gnu.org>
parents: 69406
diff changeset
2680 /* 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
2681 if (!NILP (Vthrow_on_input))
46a8c3e0161d (signal_user_input): New function.
Jason Rumney <jasonr@gnu.org>
parents: 69406
diff changeset
2682 {
46a8c3e0161d (signal_user_input): New function.
Jason Rumney <jasonr@gnu.org>
parents: 69406
diff changeset
2683 Vquit_flag = Vthrow_on_input;
46a8c3e0161d (signal_user_input): New function.
Jason Rumney <jasonr@gnu.org>
parents: 69406
diff changeset
2684 /* 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
2685 do it now. */
46a8c3e0161d (signal_user_input): New function.
Jason Rumney <jasonr@gnu.org>
parents: 69406
diff changeset
2686 if (immediate_quit && NILP (Vinhibit_quit))
46a8c3e0161d (signal_user_input): New function.
Jason Rumney <jasonr@gnu.org>
parents: 69406
diff changeset
2687 {
46a8c3e0161d (signal_user_input): New function.
Jason Rumney <jasonr@gnu.org>
parents: 69406
diff changeset
2688 immediate_quit = 0;
46a8c3e0161d (signal_user_input): New function.
Jason Rumney <jasonr@gnu.org>
parents: 69406
diff changeset
2689 QUIT;
46a8c3e0161d (signal_user_input): New function.
Jason Rumney <jasonr@gnu.org>
parents: 69406
diff changeset
2690 }
46a8c3e0161d (signal_user_input): New function.
Jason Rumney <jasonr@gnu.org>
parents: 69406
diff changeset
2691 }
46a8c3e0161d (signal_user_input): New function.
Jason Rumney <jasonr@gnu.org>
parents: 69406
diff changeset
2692 }
46a8c3e0161d (signal_user_input): New function.
Jason Rumney <jasonr@gnu.org>
parents: 69406
diff changeset
2693
46a8c3e0161d (signal_user_input): New function.
Jason Rumney <jasonr@gnu.org>
parents: 69406
diff changeset
2694
46a8c3e0161d (signal_user_input): New function.
Jason Rumney <jasonr@gnu.org>
parents: 69406
diff changeset
2695 static void
23950
d8f8533db4cc (w32_msg_pump): Ignore WM_NULL message posted to thread
Andrew Innes <andrewi@gnu.org>
parents: 23803
diff changeset
2696 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
2697 HWND hwnd;
d8f8533db4cc (w32_msg_pump): Ignore WM_NULL message posted to thread
Andrew Innes <andrewi@gnu.org>
parents: 23803
diff changeset
2698 UINT msg;
d8f8533db4cc (w32_msg_pump): Ignore WM_NULL message posted to thread
Andrew Innes <andrewi@gnu.org>
parents: 23803
diff changeset
2699 WPARAM wParam;
d8f8533db4cc (w32_msg_pump): Ignore WM_NULL message posted to thread
Andrew Innes <andrewi@gnu.org>
parents: 23803
diff changeset
2700 LPARAM lParam;
d8f8533db4cc (w32_msg_pump): Ignore WM_NULL message posted to thread
Andrew Innes <andrewi@gnu.org>
parents: 23803
diff changeset
2701 DWORD modifiers;
d8f8533db4cc (w32_msg_pump): Ignore WM_NULL message posted to thread
Andrew Innes <andrewi@gnu.org>
parents: 23803
diff changeset
2702
d8f8533db4cc (w32_msg_pump): Ignore WM_NULL message posted to thread
Andrew Innes <andrewi@gnu.org>
parents: 23803
diff changeset
2703 {
d8f8533db4cc (w32_msg_pump): Ignore WM_NULL message posted to thread
Andrew Innes <andrewi@gnu.org>
parents: 23803
diff changeset
2704 W32Msg wmsg;
d8f8533db4cc (w32_msg_pump): Ignore WM_NULL message posted to thread
Andrew Innes <andrewi@gnu.org>
parents: 23803
diff changeset
2705
d8f8533db4cc (w32_msg_pump): Ignore WM_NULL message posted to thread
Andrew Innes <andrewi@gnu.org>
parents: 23803
diff changeset
2706 wmsg.dwModifiers = modifiers;
d8f8533db4cc (w32_msg_pump): Ignore WM_NULL message posted to thread
Andrew Innes <andrewi@gnu.org>
parents: 23803
diff changeset
2707
d8f8533db4cc (w32_msg_pump): Ignore WM_NULL message posted to thread
Andrew Innes <andrewi@gnu.org>
parents: 23803
diff changeset
2708 /* 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
2709 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
2710 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
2711 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
2712 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
2713 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
2714 {
d8f8533db4cc (w32_msg_pump): Ignore WM_NULL message posted to thread
Andrew Innes <andrewi@gnu.org>
parents: 23803
diff changeset
2715 int c = wParam;
d8f8533db4cc (w32_msg_pump): Ignore WM_NULL message posted to thread
Andrew Innes <andrewi@gnu.org>
parents: 23803
diff changeset
2716 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
2717 c = make_ctrl_char (c) & 0377;
24339
e8b73c2ac4ec (Vw32_quit_key): New variable.
Andrew Innes <andrewi@gnu.org>
parents: 24252
diff changeset
2718 if (c == quit_char
e8b73c2ac4ec (Vw32_quit_key): New variable.
Andrew Innes <andrewi@gnu.org>
parents: 24252
diff changeset
2719 || (wmsg.dwModifiers == 0 &&
55656
29b250a07fe0 (Fw32_register_hot_key, Fw32_unregister_hot_key)
Jason Rumney <jasonr@gnu.org>
parents: 55592
diff changeset
2720 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
2721 {
d8f8533db4cc (w32_msg_pump): Ignore WM_NULL message posted to thread
Andrew Innes <andrewi@gnu.org>
parents: 23803
diff changeset
2722 Vquit_flag = Qt;
d8f8533db4cc (w32_msg_pump): Ignore WM_NULL message posted to thread
Andrew Innes <andrewi@gnu.org>
parents: 23803
diff changeset
2723
d8f8533db4cc (w32_msg_pump): Ignore WM_NULL message posted to thread
Andrew Innes <andrewi@gnu.org>
parents: 23803
diff changeset
2724 /* 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
2725 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
2726 msg = WM_NULL;
d8f8533db4cc (w32_msg_pump): Ignore WM_NULL message posted to thread
Andrew Innes <andrewi@gnu.org>
parents: 23803
diff changeset
2727
d8f8533db4cc (w32_msg_pump): Ignore WM_NULL message posted to thread
Andrew Innes <andrewi@gnu.org>
parents: 23803
diff changeset
2728 /* 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
2729 signal_quit ();
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 /* 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
2732 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
2733 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
2734 "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
2735 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
2736 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
2737 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
2738 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
2739 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
2740 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
2741 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
2742 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
2743 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
2744 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
2745
d8f8533db4cc (w32_msg_pump): Ignore WM_NULL message posted to thread
Andrew Innes <andrewi@gnu.org>
parents: 23803
diff changeset
2746 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
2747 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
2748 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
2749 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
2750 cancel_all_deferred_msgs ();
d8f8533db4cc (w32_msg_pump): Ignore WM_NULL message posted to thread
Andrew Innes <andrewi@gnu.org>
parents: 23803
diff changeset
2751 }
69426
46a8c3e0161d (signal_user_input): New function.
Jason Rumney <jasonr@gnu.org>
parents: 69406
diff changeset
2752 else
46a8c3e0161d (signal_user_input): New function.
Jason Rumney <jasonr@gnu.org>
parents: 69406
diff changeset
2753 signal_user_input ();
23950
d8f8533db4cc (w32_msg_pump): Ignore WM_NULL message posted to thread
Andrew Innes <andrewi@gnu.org>
parents: 23803
diff changeset
2754 }
d8f8533db4cc (w32_msg_pump): Ignore WM_NULL message posted to thread
Andrew Innes <andrewi@gnu.org>
parents: 23803
diff changeset
2755
d8f8533db4cc (w32_msg_pump): Ignore WM_NULL message posted to thread
Andrew Innes <andrewi@gnu.org>
parents: 23803
diff changeset
2756 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
2757 }
d8f8533db4cc (w32_msg_pump): Ignore WM_NULL message posted to thread
Andrew Innes <andrewi@gnu.org>
parents: 23803
diff changeset
2758
13434
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
2759 /* Main window procedure */
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
2760
47942
080b4586492b Fix typo in comment.
Juanma Barranquero <lekktu@gmail.com>
parents: 47731
diff changeset
2761 LRESULT CALLBACK
16588
481b7874a1e9 Change identifiers of the form win32* to w32*.
Geoff Voelker <voelker@cs.washington.edu>
parents: 16259
diff changeset
2762 w32_wnd_proc (hwnd, msg, wParam, lParam)
13434
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
2763 HWND hwnd;
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
2764 UINT msg;
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
2765 WPARAM wParam;
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
2766 LPARAM lParam;
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
2767 {
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
2768 struct frame *f;
16588
481b7874a1e9 Change identifiers of the form win32* to w32*.
Geoff Voelker <voelker@cs.washington.edu>
parents: 16259
diff changeset
2769 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
2770 W32Msg wmsg;
15290
da73440fdb5f (Vwin32_mouse_move_interval): New lisp variable.
Karl Heuer <kwzh@gnu.org>
parents: 15280
diff changeset
2771 int windows_translate;
24206
d3649b38bb37 (w32_wnd_proc): Fix bug introduced by previous change;
Andrew Innes <andrewi@gnu.org>
parents: 24147
diff changeset
2772 int key;
15290
da73440fdb5f (Vwin32_mouse_move_interval): New lisp variable.
Karl Heuer <kwzh@gnu.org>
parents: 15280
diff changeset
2773
15650
bc9525478463 (win32_wnd_proc): Handle WM_ERASEBKGND and
Karl Heuer <kwzh@gnu.org>
parents: 15459
diff changeset
2774 /* 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
2775 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
2776 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
2777 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
2778 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
2779
bc9525478463 (win32_wnd_proc): Handle WM_ERASEBKGND and
Karl Heuer <kwzh@gnu.org>
parents: 15459
diff changeset
2780 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
2781 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
2782 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
2783 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
2784 delete-frame has synchronized with this thread.
bc9525478463 (win32_wnd_proc): Handle WM_ERASEBKGND and
Karl Heuer <kwzh@gnu.org>
parents: 15459
diff changeset
2785
bc9525478463 (win32_wnd_proc): Handle WM_ERASEBKGND and
Karl Heuer <kwzh@gnu.org>
parents: 15459
diff changeset
2786 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
2787 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
2788 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
2789
47942
080b4586492b Fix typo in comment.
Juanma Barranquero <lekktu@gmail.com>
parents: 47731
diff changeset
2790 switch (msg)
13434
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
2791 {
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
2792 case WM_ERASEBKGND:
15650
bc9525478463 (win32_wnd_proc): Handle WM_ERASEBKGND and
Karl Heuer <kwzh@gnu.org>
parents: 15459
diff changeset
2793 f = x_window_to_frame (dpyinfo, hwnd);
bc9525478463 (win32_wnd_proc): Handle WM_ERASEBKGND and
Karl Heuer <kwzh@gnu.org>
parents: 15459
diff changeset
2794 if (f)
bc9525478463 (win32_wnd_proc): Handle WM_ERASEBKGND and
Karl Heuer <kwzh@gnu.org>
parents: 15459
diff changeset
2795 {
27407
7df920562cbe (w32_defined_color): Apply gamma correction before trying to map to
Jason Rumney <jasonr@gnu.org>
parents: 27397
diff changeset
2796 HDC hdc = get_frame_dc (f);
15650
bc9525478463 (win32_wnd_proc): Handle WM_ERASEBKGND and
Karl Heuer <kwzh@gnu.org>
parents: 15459
diff changeset
2797 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
2798 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
2799 release_frame_dc (f, hdc);
24718
547f54dfbb94 (x_to_w32_charset): Reinstall VIETNAMESE_CHARSET
Andrew Innes <andrewi@gnu.org>
parents: 24695
diff changeset
2800
547f54dfbb94 (x_to_w32_charset): Reinstall VIETNAMESE_CHARSET
Andrew Innes <andrewi@gnu.org>
parents: 24695
diff changeset
2801 #if defined (W32_DEBUG_DISPLAY)
39128
42efaa34094a (w32_createwindow): Remove the WS_CLIPCHILDREN style
Andrew Innes <andrewi@gnu.org>
parents: 37707
diff changeset
2802 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
2803 f,
42efaa34094a (w32_createwindow): Remove the WS_CLIPCHILDREN style
Andrew Innes <andrewi@gnu.org>
parents: 37707
diff changeset
2804 wmsg.rect.left, wmsg.rect.top,
42efaa34094a (w32_createwindow): Remove the WS_CLIPCHILDREN style
Andrew Innes <andrewi@gnu.org>
parents: 37707
diff changeset
2805 wmsg.rect.right, wmsg.rect.bottom));
24718
547f54dfbb94 (x_to_w32_charset): Reinstall VIETNAMESE_CHARSET
Andrew Innes <andrewi@gnu.org>
parents: 24695
diff changeset
2806 #endif /* W32_DEBUG_DISPLAY */
15650
bc9525478463 (win32_wnd_proc): Handle WM_ERASEBKGND and
Karl Heuer <kwzh@gnu.org>
parents: 15459
diff changeset
2807 }
15147
38c0ce06203f (quit_char, Vwin32_enable_italics, Vwin32_enable_palette):
Geoff Voelker <voelker@cs.washington.edu>
parents: 15034
diff changeset
2808 return 1;
38c0ce06203f (quit_char, Vwin32_enable_italics, Vwin32_enable_palette):
Geoff Voelker <voelker@cs.washington.edu>
parents: 15034
diff changeset
2809 case WM_PALETTECHANGED:
38c0ce06203f (quit_char, Vwin32_enable_italics, Vwin32_enable_palette):
Geoff Voelker <voelker@cs.washington.edu>
parents: 15034
diff changeset
2810 /* ignore our own changes */
38c0ce06203f (quit_char, Vwin32_enable_italics, Vwin32_enable_palette):
Geoff Voelker <voelker@cs.washington.edu>
parents: 15034
diff changeset
2811 if ((HWND)wParam != hwnd)
38c0ce06203f (quit_char, Vwin32_enable_italics, Vwin32_enable_palette):
Geoff Voelker <voelker@cs.washington.edu>
parents: 15034
diff changeset
2812 {
15650
bc9525478463 (win32_wnd_proc): Handle WM_ERASEBKGND and
Karl Heuer <kwzh@gnu.org>
parents: 15459
diff changeset
2813 f = x_window_to_frame (dpyinfo, hwnd);
bc9525478463 (win32_wnd_proc): Handle WM_ERASEBKGND and
Karl Heuer <kwzh@gnu.org>
parents: 15459
diff changeset
2814 if (f)
bc9525478463 (win32_wnd_proc): Handle WM_ERASEBKGND and
Karl Heuer <kwzh@gnu.org>
parents: 15459
diff changeset
2815 /* 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
2816 frames to be redrawn if needed. */
bc9525478463 (win32_wnd_proc): Handle WM_ERASEBKGND and
Karl Heuer <kwzh@gnu.org>
parents: 15459
diff changeset
2817 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
2818 }
38c0ce06203f (quit_char, Vwin32_enable_italics, Vwin32_enable_palette):
Geoff Voelker <voelker@cs.washington.edu>
parents: 15034
diff changeset
2819 return 0;
13434
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
2820 case WM_PAINT:
24718
547f54dfbb94 (x_to_w32_charset): Reinstall VIETNAMESE_CHARSET
Andrew Innes <andrewi@gnu.org>
parents: 24695
diff changeset
2821 {
24670
045e247575d9 [andrewi]
Andrew Innes <andrewi@gnu.org>
parents: 24583
diff changeset
2822 PAINTSTRUCT paintStruct;
045e247575d9 [andrewi]
Andrew Innes <andrewi@gnu.org>
parents: 24583
diff changeset
2823 RECT update_rect;
42935
20a21fb23284 (w32_wnd_proc) <WM_PAINT>: Initialize update_rect.
Jason Rumney <jasonr@gnu.org>
parents: 42918
diff changeset
2824 bzero (&update_rect, sizeof (update_rect));
24670
045e247575d9 [andrewi]
Andrew Innes <andrewi@gnu.org>
parents: 24583
diff changeset
2825
39128
42efaa34094a (w32_createwindow): Remove the WS_CLIPCHILDREN style
Andrew Innes <andrewi@gnu.org>
parents: 37707
diff changeset
2826 f = x_window_to_frame (dpyinfo, hwnd);
42efaa34094a (w32_createwindow): Remove the WS_CLIPCHILDREN style
Andrew Innes <andrewi@gnu.org>
parents: 37707
diff changeset
2827 if (f == 0)
42efaa34094a (w32_createwindow): Remove the WS_CLIPCHILDREN style
Andrew Innes <andrewi@gnu.org>
parents: 37707
diff changeset
2828 {
42efaa34094a (w32_createwindow): Remove the WS_CLIPCHILDREN style
Andrew Innes <andrewi@gnu.org>
parents: 37707
diff changeset
2829 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
2830 return 0;
42efaa34094a (w32_createwindow): Remove the WS_CLIPCHILDREN style
Andrew Innes <andrewi@gnu.org>
parents: 37707
diff changeset
2831 }
42efaa34094a (w32_createwindow): Remove the WS_CLIPCHILDREN style
Andrew Innes <andrewi@gnu.org>
parents: 37707
diff changeset
2832
24670
045e247575d9 [andrewi]
Andrew Innes <andrewi@gnu.org>
parents: 24583
diff changeset
2833 /* MSDN Docs say not to call BeginPaint if GetUpdateRect
045e247575d9 [andrewi]
Andrew Innes <andrewi@gnu.org>
parents: 24583
diff changeset
2834 fails. Apparently this can happen under some
045e247575d9 [andrewi]
Andrew Innes <andrewi@gnu.org>
parents: 24583
diff changeset
2835 circumstances. */
42935
20a21fb23284 (w32_wnd_proc) <WM_PAINT>: Initialize update_rect.
Jason Rumney <jasonr@gnu.org>
parents: 42918
diff changeset
2836 if (GetUpdateRect (hwnd, &update_rect, FALSE) || !w32_strict_painting)
24670
045e247575d9 [andrewi]
Andrew Innes <andrewi@gnu.org>
parents: 24583
diff changeset
2837 {
045e247575d9 [andrewi]
Andrew Innes <andrewi@gnu.org>
parents: 24583
diff changeset
2838 enter_crit ();
045e247575d9 [andrewi]
Andrew Innes <andrewi@gnu.org>
parents: 24583
diff changeset
2839 BeginPaint (hwnd, &paintStruct);
045e247575d9 [andrewi]
Andrew Innes <andrewi@gnu.org>
parents: 24583
diff changeset
2840
42935
20a21fb23284 (w32_wnd_proc) <WM_PAINT>: Initialize update_rect.
Jason Rumney <jasonr@gnu.org>
parents: 42918
diff changeset
2841 /* 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
2842 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
2843 are invalid. */
20a21fb23284 (w32_wnd_proc) <WM_PAINT>: Initialize update_rect.
Jason Rumney <jasonr@gnu.org>
parents: 42918
diff changeset
2844 UnionRect (&(wmsg.rect), &update_rect, &(paintStruct.rcPaint));
24670
045e247575d9 [andrewi]
Andrew Innes <andrewi@gnu.org>
parents: 24583
diff changeset
2845
045e247575d9 [andrewi]
Andrew Innes <andrewi@gnu.org>
parents: 24583
diff changeset
2846 #if defined (W32_DEBUG_DISPLAY)
39128
42efaa34094a (w32_createwindow): Remove the WS_CLIPCHILDREN style
Andrew Innes <andrewi@gnu.org>
parents: 37707
diff changeset
2847 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
2848 f,
42efaa34094a (w32_createwindow): Remove the WS_CLIPCHILDREN style
Andrew Innes <andrewi@gnu.org>
parents: 37707
diff changeset
2849 wmsg.rect.left, wmsg.rect.top,
42efaa34094a (w32_createwindow): Remove the WS_CLIPCHILDREN style
Andrew Innes <andrewi@gnu.org>
parents: 37707
diff changeset
2850 wmsg.rect.right, wmsg.rect.bottom));
42efaa34094a (w32_createwindow): Remove the WS_CLIPCHILDREN style
Andrew Innes <andrewi@gnu.org>
parents: 37707
diff changeset
2851 DebPrint ((" [update region is %d,%d-%d,%d]\n",
24670
045e247575d9 [andrewi]
Andrew Innes <andrewi@gnu.org>
parents: 24583
diff changeset
2852 update_rect.left, update_rect.top,
045e247575d9 [andrewi]
Andrew Innes <andrewi@gnu.org>
parents: 24583
diff changeset
2853 update_rect.right, update_rect.bottom));
045e247575d9 [andrewi]
Andrew Innes <andrewi@gnu.org>
parents: 24583
diff changeset
2854 #endif
045e247575d9 [andrewi]
Andrew Innes <andrewi@gnu.org>
parents: 24583
diff changeset
2855 EndPaint (hwnd, &paintStruct);
045e247575d9 [andrewi]
Andrew Innes <andrewi@gnu.org>
parents: 24583
diff changeset
2856 leave_crit ();
045e247575d9 [andrewi]
Andrew Innes <andrewi@gnu.org>
parents: 24583
diff changeset
2857
102584
5cd33b0be96f * w32term.h (WM_EMACS_PAINT): New message.
Jason Rumney <jasonr@gnu.org>
parents: 102394
diff changeset
2858 /* Change the message type to prevent Windows from
5cd33b0be96f * w32term.h (WM_EMACS_PAINT): New message.
Jason Rumney <jasonr@gnu.org>
parents: 102394
diff changeset
2859 combining WM_PAINT messages in the Lisp thread's queue,
5cd33b0be96f * w32term.h (WM_EMACS_PAINT): New message.
Jason Rumney <jasonr@gnu.org>
parents: 102394
diff changeset
2860 since Windows assumes that each message queue is
5cd33b0be96f * w32term.h (WM_EMACS_PAINT): New message.
Jason Rumney <jasonr@gnu.org>
parents: 102394
diff changeset
2861 dedicated to one frame and does not bother checking
5cd33b0be96f * w32term.h (WM_EMACS_PAINT): New message.
Jason Rumney <jasonr@gnu.org>
parents: 102394
diff changeset
2862 that hwnd matches before combining them. */
5cd33b0be96f * w32term.h (WM_EMACS_PAINT): New message.
Jason Rumney <jasonr@gnu.org>
parents: 102394
diff changeset
2863 my_post_msg (&wmsg, hwnd, WM_EMACS_PAINT, wParam, lParam);
47942
080b4586492b Fix typo in comment.
Juanma Barranquero <lekktu@gmail.com>
parents: 47731
diff changeset
2864
24670
045e247575d9 [andrewi]
Andrew Innes <andrewi@gnu.org>
parents: 24583
diff changeset
2865 return 0;
045e247575d9 [andrewi]
Andrew Innes <andrewi@gnu.org>
parents: 24583
diff changeset
2866 }
24695
2fe2c743ce68 (w32_strict_painting): New variable.
Andrew Innes <andrewi@gnu.org>
parents: 24692
diff changeset
2867
2fe2c743ce68 (w32_strict_painting): New variable.
Andrew Innes <andrewi@gnu.org>
parents: 24692
diff changeset
2868 /* If GetUpdateRect returns 0 (meaning there is no update
2fe2c743ce68 (w32_strict_painting): New variable.
Andrew Innes <andrewi@gnu.org>
parents: 24692
diff changeset
2869 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
2870 GetClientRect (hwnd, &wmsg.rect);
24695
2fe2c743ce68 (w32_strict_painting): New variable.
Andrew Innes <andrewi@gnu.org>
parents: 24692
diff changeset
2871 my_post_msg (&wmsg, hwnd, msg, wParam, lParam);
2fe2c743ce68 (w32_strict_painting): New variable.
Andrew Innes <andrewi@gnu.org>
parents: 24692
diff changeset
2872 return 0;
13434
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
2873 }
14461
4fe9540be594 (modifiers, modifier_key_support_tested,
Geoff Voelker <voelker@cs.washington.edu>
parents: 14353
diff changeset
2874
23681
af0276da2059 (Vw32_pass_optional_keys_to_system): Variable removed.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23637
diff changeset
2875 case WM_INPUTLANGCHANGE:
af0276da2059 (Vw32_pass_optional_keys_to_system): Variable removed.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23637
diff changeset
2876 /* 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
2877 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
2878
af0276da2059 (Vw32_pass_optional_keys_to_system): Variable removed.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23637
diff changeset
2879 /* 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
2880 preserve modifier key states. */
af0276da2059 (Vw32_pass_optional_keys_to_system): Variable removed.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23637
diff changeset
2881 {
af0276da2059 (Vw32_pass_optional_keys_to_system): Variable removed.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23637
diff changeset
2882 int i;
af0276da2059 (Vw32_pass_optional_keys_to_system): Variable removed.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23637
diff changeset
2883 BYTE keystate[256];
af0276da2059 (Vw32_pass_optional_keys_to_system): Variable removed.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23637
diff changeset
2884
af0276da2059 (Vw32_pass_optional_keys_to_system): Variable removed.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23637
diff changeset
2885 GetKeyboardState (keystate);
af0276da2059 (Vw32_pass_optional_keys_to_system): Variable removed.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23637
diff changeset
2886 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
2887 if (1
af0276da2059 (Vw32_pass_optional_keys_to_system): Variable removed.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23637
diff changeset
2888 && i != VK_SHIFT
af0276da2059 (Vw32_pass_optional_keys_to_system): Variable removed.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23637
diff changeset
2889 && i != VK_LSHIFT
af0276da2059 (Vw32_pass_optional_keys_to_system): Variable removed.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23637
diff changeset
2890 && i != VK_RSHIFT
af0276da2059 (Vw32_pass_optional_keys_to_system): Variable removed.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23637
diff changeset
2891 && i != VK_CAPITAL
af0276da2059 (Vw32_pass_optional_keys_to_system): Variable removed.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23637
diff changeset
2892 && i != VK_NUMLOCK
af0276da2059 (Vw32_pass_optional_keys_to_system): Variable removed.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23637
diff changeset
2893 && i != VK_SCROLL
af0276da2059 (Vw32_pass_optional_keys_to_system): Variable removed.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23637
diff changeset
2894 && i != VK_CONTROL
af0276da2059 (Vw32_pass_optional_keys_to_system): Variable removed.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23637
diff changeset
2895 && i != VK_LCONTROL
af0276da2059 (Vw32_pass_optional_keys_to_system): Variable removed.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23637
diff changeset
2896 && i != VK_RCONTROL
af0276da2059 (Vw32_pass_optional_keys_to_system): Variable removed.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23637
diff changeset
2897 && i != VK_MENU
af0276da2059 (Vw32_pass_optional_keys_to_system): Variable removed.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23637
diff changeset
2898 && i != VK_LMENU
af0276da2059 (Vw32_pass_optional_keys_to_system): Variable removed.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23637
diff changeset
2899 && i != VK_RMENU
af0276da2059 (Vw32_pass_optional_keys_to_system): Variable removed.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23637
diff changeset
2900 && i != VK_LWIN
af0276da2059 (Vw32_pass_optional_keys_to_system): Variable removed.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23637
diff changeset
2901 && i != VK_RWIN)
af0276da2059 (Vw32_pass_optional_keys_to_system): Variable removed.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23637
diff changeset
2902 keystate[i] = 0;
af0276da2059 (Vw32_pass_optional_keys_to_system): Variable removed.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23637
diff changeset
2903 SetKeyboardState (keystate);
af0276da2059 (Vw32_pass_optional_keys_to_system): Variable removed.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23637
diff changeset
2904 }
af0276da2059 (Vw32_pass_optional_keys_to_system): Variable removed.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23637
diff changeset
2905 goto dflt;
af0276da2059 (Vw32_pass_optional_keys_to_system): Variable removed.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23637
diff changeset
2906
af0276da2059 (Vw32_pass_optional_keys_to_system): Variable removed.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23637
diff changeset
2907 case WM_HOTKEY:
af0276da2059 (Vw32_pass_optional_keys_to_system): Variable removed.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23637
diff changeset
2908 /* 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
2909 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
2910 return (0);
af0276da2059 (Vw32_pass_optional_keys_to_system): Variable removed.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23637
diff changeset
2911
14461
4fe9540be594 (modifiers, modifier_key_support_tested,
Geoff Voelker <voelker@cs.washington.edu>
parents: 14353
diff changeset
2912 case WM_KEYUP:
4fe9540be594 (modifiers, modifier_key_support_tested,
Geoff Voelker <voelker@cs.washington.edu>
parents: 14353
diff changeset
2913 case WM_SYSKEYUP:
4fe9540be594 (modifiers, modifier_key_support_tested,
Geoff Voelker <voelker@cs.washington.edu>
parents: 14353
diff changeset
2914 record_keyup (wParam, lParam);
4fe9540be594 (modifiers, modifier_key_support_tested,
Geoff Voelker <voelker@cs.washington.edu>
parents: 14353
diff changeset
2915 goto dflt;
4fe9540be594 (modifiers, modifier_key_support_tested,
Geoff Voelker <voelker@cs.washington.edu>
parents: 14353
diff changeset
2916
13434
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
2917 case WM_KEYDOWN:
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
2918 case WM_SYSKEYDOWN:
23681
af0276da2059 (Vw32_pass_optional_keys_to_system): Variable removed.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23637
diff changeset
2919 /* 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
2920 if (dpyinfo->faked_key == wParam)
af0276da2059 (Vw32_pass_optional_keys_to_system): Variable removed.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23637
diff changeset
2921 {
af0276da2059 (Vw32_pass_optional_keys_to_system): Variable removed.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23637
diff changeset
2922 dpyinfo->faked_key = 0;
24206
d3649b38bb37 (w32_wnd_proc): Fix bug introduced by previous change;
Andrew Innes <andrewi@gnu.org>
parents: 24147
diff changeset
2923 /* 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
2924 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
2925 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
2926 example. */
79563
fb6105cb466b (w32_wnd_proc, Fw32_reconstruct_hot_key): Range check
Jason Rumney <jasonr@gnu.org>
parents: 79393
diff changeset
2927 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
2928 {
d3649b38bb37 (w32_wnd_proc): Fix bug introduced by previous change;
Andrew Innes <andrewi@gnu.org>
parents: 24147
diff changeset
2929 windows_translate = 1;
d3649b38bb37 (w32_wnd_proc): Fix bug introduced by previous change;
Andrew Innes <andrewi@gnu.org>
parents: 24147
diff changeset
2930 goto translate;
d3649b38bb37 (w32_wnd_proc): Fix bug introduced by previous change;
Andrew Innes <andrewi@gnu.org>
parents: 24147
diff changeset
2931 }
d3649b38bb37 (w32_wnd_proc): Fix bug introduced by previous change;
Andrew Innes <andrewi@gnu.org>
parents: 24147
diff changeset
2932 return 0;
23681
af0276da2059 (Vw32_pass_optional_keys_to_system): Variable removed.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23637
diff changeset
2933 }
af0276da2059 (Vw32_pass_optional_keys_to_system): Variable removed.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23637
diff changeset
2934
15377
65d9ff2c8602 (sync_modifiers): New function.
Richard M. Stallman <rms@gnu.org>
parents: 15314
diff changeset
2935 /* Synchronize modifiers with current keystroke. */
65d9ff2c8602 (sync_modifiers): New function.
Richard M. Stallman <rms@gnu.org>
parents: 15314
diff changeset
2936 sync_modifiers ();
14461
4fe9540be594 (modifiers, modifier_key_support_tested,
Geoff Voelker <voelker@cs.washington.edu>
parents: 14353
diff changeset
2937 record_keydown (wParam, lParam);
23681
af0276da2059 (Vw32_pass_optional_keys_to_system): Variable removed.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23637
diff changeset
2938 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
2939
da73440fdb5f (Vwin32_mouse_move_interval): New lisp variable.
Karl Heuer <kwzh@gnu.org>
parents: 15280
diff changeset
2940 windows_translate = 0;
23681
af0276da2059 (Vw32_pass_optional_keys_to_system): Variable removed.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23637
diff changeset
2941
af0276da2059 (Vw32_pass_optional_keys_to_system): Variable removed.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23637
diff changeset
2942 switch (wParam)
af0276da2059 (Vw32_pass_optional_keys_to_system): Variable removed.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23637
diff changeset
2943 {
af0276da2059 (Vw32_pass_optional_keys_to_system): Variable removed.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23637
diff changeset
2944 case VK_LWIN:
af0276da2059 (Vw32_pass_optional_keys_to_system): Variable removed.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23637
diff changeset
2945 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
2946 {
af0276da2059 (Vw32_pass_optional_keys_to_system): Variable removed.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23637
diff changeset
2947 /* 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
2948 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
2949 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
2950 if (GetAsyncKeyState (wParam) & 1)
af0276da2059 (Vw32_pass_optional_keys_to_system): Variable removed.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23637
diff changeset
2951 {
23803
f112aa8f8f5d (Vw32_phantom_key_code): New variable.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23801
diff changeset
2952 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
2953 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
2954 else
24206
d3649b38bb37 (w32_wnd_proc): Fix bug introduced by previous change;
Andrew Innes <andrewi@gnu.org>
parents: 24147
diff changeset
2955 key = VK_SPACE;
d3649b38bb37 (w32_wnd_proc): Fix bug introduced by previous change;
Andrew Innes <andrewi@gnu.org>
parents: 24147
diff changeset
2956 dpyinfo->faked_key = key;
d3649b38bb37 (w32_wnd_proc): Fix bug introduced by previous change;
Andrew Innes <andrewi@gnu.org>
parents: 24147
diff changeset
2957 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
2958 }
af0276da2059 (Vw32_pass_optional_keys_to_system): Variable removed.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23637
diff changeset
2959 }
af0276da2059 (Vw32_pass_optional_keys_to_system): Variable removed.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23637
diff changeset
2960 if (!NILP (Vw32_lwindow_modifier))
af0276da2059 (Vw32_pass_optional_keys_to_system): Variable removed.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23637
diff changeset
2961 return 0;
af0276da2059 (Vw32_pass_optional_keys_to_system): Variable removed.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23637
diff changeset
2962 break;
af0276da2059 (Vw32_pass_optional_keys_to_system): Variable removed.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23637
diff changeset
2963 case VK_RWIN:
af0276da2059 (Vw32_pass_optional_keys_to_system): Variable removed.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23637
diff changeset
2964 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
2965 {
af0276da2059 (Vw32_pass_optional_keys_to_system): Variable removed.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23637
diff changeset
2966 if (GetAsyncKeyState (wParam) & 1)
af0276da2059 (Vw32_pass_optional_keys_to_system): Variable removed.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23637
diff changeset
2967 {
23803
f112aa8f8f5d (Vw32_phantom_key_code): New variable.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23801
diff changeset
2968 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
2969 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
2970 else
24206
d3649b38bb37 (w32_wnd_proc): Fix bug introduced by previous change;
Andrew Innes <andrewi@gnu.org>
parents: 24147
diff changeset
2971 key = VK_SPACE;
d3649b38bb37 (w32_wnd_proc): Fix bug introduced by previous change;
Andrew Innes <andrewi@gnu.org>
parents: 24147
diff changeset
2972 dpyinfo->faked_key = key;
d3649b38bb37 (w32_wnd_proc): Fix bug introduced by previous change;
Andrew Innes <andrewi@gnu.org>
parents: 24147
diff changeset
2973 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
2974 }
af0276da2059 (Vw32_pass_optional_keys_to_system): Variable removed.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23637
diff changeset
2975 }
af0276da2059 (Vw32_pass_optional_keys_to_system): Variable removed.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23637
diff changeset
2976 if (!NILP (Vw32_rwindow_modifier))
af0276da2059 (Vw32_pass_optional_keys_to_system): Variable removed.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23637
diff changeset
2977 return 0;
af0276da2059 (Vw32_pass_optional_keys_to_system): Variable removed.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23637
diff changeset
2978 break;
24206
d3649b38bb37 (w32_wnd_proc): Fix bug introduced by previous change;
Andrew Innes <andrewi@gnu.org>
parents: 24147
diff changeset
2979 case VK_APPS:
23681
af0276da2059 (Vw32_pass_optional_keys_to_system): Variable removed.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23637
diff changeset
2980 if (!NILP (Vw32_apps_modifier))
af0276da2059 (Vw32_pass_optional_keys_to_system): Variable removed.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23637
diff changeset
2981 return 0;
af0276da2059 (Vw32_pass_optional_keys_to_system): Variable removed.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23637
diff changeset
2982 break;
af0276da2059 (Vw32_pass_optional_keys_to_system): Variable removed.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23637
diff changeset
2983 case VK_MENU:
47942
080b4586492b Fix typo in comment.
Juanma Barranquero <lekktu@gmail.com>
parents: 47731
diff changeset
2984 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
2985 /* 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
2986 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
2987 return 0;
15290
da73440fdb5f (Vwin32_mouse_move_interval): New lisp variable.
Karl Heuer <kwzh@gnu.org>
parents: 15280
diff changeset
2988 windows_translate = 1;
23681
af0276da2059 (Vw32_pass_optional_keys_to_system): Variable removed.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23637
diff changeset
2989 break;
47942
080b4586492b Fix typo in comment.
Juanma Barranquero <lekktu@gmail.com>
parents: 47731
diff changeset
2990 case VK_CAPITAL:
23681
af0276da2059 (Vw32_pass_optional_keys_to_system): Variable removed.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23637
diff changeset
2991 /* 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
2992 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
2993 goto disable_lock_key;
23803
f112aa8f8f5d (Vw32_phantom_key_code): New variable.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23801
diff changeset
2994 windows_translate = 1;
f112aa8f8f5d (Vw32_phantom_key_code): New variable.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23801
diff changeset
2995 break;
23681
af0276da2059 (Vw32_pass_optional_keys_to_system): Variable removed.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23637
diff changeset
2996 case VK_NUMLOCK:
af0276da2059 (Vw32_pass_optional_keys_to_system): Variable removed.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23637
diff changeset
2997 /* 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
2998 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
2999 goto disable_lock_key;
23803
f112aa8f8f5d (Vw32_phantom_key_code): New variable.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23801
diff changeset
3000 windows_translate = 1;
f112aa8f8f5d (Vw32_phantom_key_code): New variable.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23801
diff changeset
3001 break;
23681
af0276da2059 (Vw32_pass_optional_keys_to_system): Variable removed.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23637
diff changeset
3002 case VK_SCROLL:
af0276da2059 (Vw32_pass_optional_keys_to_system): Variable removed.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23637
diff changeset
3003 /* 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
3004 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
3005 goto disable_lock_key;
23803
f112aa8f8f5d (Vw32_phantom_key_code): New variable.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23801
diff changeset
3006 windows_translate = 1;
f112aa8f8f5d (Vw32_phantom_key_code): New variable.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23801
diff changeset
3007 break;
23681
af0276da2059 (Vw32_pass_optional_keys_to_system): Variable removed.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23637
diff changeset
3008 disable_lock_key:
23803
f112aa8f8f5d (Vw32_phantom_key_code): New variable.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23801
diff changeset
3009 /* 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
3010 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
3011 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
3012 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
3013 dpyinfo->faked_key = wParam;
f112aa8f8f5d (Vw32_phantom_key_code): New variable.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23801
diff changeset
3014 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
3015 KEYEVENTF_EXTENDEDKEY | KEYEVENTF_KEYUP, 0);
f112aa8f8f5d (Vw32_phantom_key_code): New variable.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23801
diff changeset
3016 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
3017 KEYEVENTF_EXTENDEDKEY | 0, 0);
f112aa8f8f5d (Vw32_phantom_key_code): New variable.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23801
diff changeset
3018 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
3019 KEYEVENTF_EXTENDEDKEY | KEYEVENTF_KEYUP, 0);
f112aa8f8f5d (Vw32_phantom_key_code): New variable.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23801
diff changeset
3020 /* 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
3021 (TranslateMessage apparently does this), after forwarding
f112aa8f8f5d (Vw32_phantom_key_code): New variable.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23801
diff changeset
3022 input event. */
f112aa8f8f5d (Vw32_phantom_key_code): New variable.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23801
diff changeset
3023 post_character_message (hwnd, msg, wParam, lParam,
f112aa8f8f5d (Vw32_phantom_key_code): New variable.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23801
diff changeset
3024 w32_get_key_modifiers (wParam, lParam));
f112aa8f8f5d (Vw32_phantom_key_code): New variable.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23801
diff changeset
3025 windows_translate = 1;
23681
af0276da2059 (Vw32_pass_optional_keys_to_system): Variable removed.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23637
diff changeset
3026 break;
47942
080b4586492b Fix typo in comment.
Juanma Barranquero <lekktu@gmail.com>
parents: 47731
diff changeset
3027 case VK_CONTROL:
23681
af0276da2059 (Vw32_pass_optional_keys_to_system): Variable removed.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23637
diff changeset
3028 case VK_SHIFT:
af0276da2059 (Vw32_pass_optional_keys_to_system): Variable removed.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23637
diff changeset
3029 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
3030 windows_translate = 1;
af0276da2059 (Vw32_pass_optional_keys_to_system): Variable removed.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23637
diff changeset
3031 break;
23803
f112aa8f8f5d (Vw32_phantom_key_code): New variable.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23801
diff changeset
3032 case VK_CANCEL:
f112aa8f8f5d (Vw32_phantom_key_code): New variable.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23801
diff changeset
3033 /* 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
3034 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
3035 VK_CANCEL events into VK_PAUSE events. */
f112aa8f8f5d (Vw32_phantom_key_code): New variable.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23801
diff changeset
3036 wParam = VK_PAUSE;
f112aa8f8f5d (Vw32_phantom_key_code): New variable.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23801
diff changeset
3037 break;
f112aa8f8f5d (Vw32_phantom_key_code): New variable.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23801
diff changeset
3038 case VK_PAUSE:
f112aa8f8f5d (Vw32_phantom_key_code): New variable.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23801
diff changeset
3039 /* 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
3040 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
3041 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
3042 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
3043 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
3044 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
3045 wParam = VK_NUMLOCK;
f112aa8f8f5d (Vw32_phantom_key_code): New variable.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23801
diff changeset
3046 break;
23681
af0276da2059 (Vw32_pass_optional_keys_to_system): Variable removed.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23637
diff changeset
3047 default:
af0276da2059 (Vw32_pass_optional_keys_to_system): Variable removed.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23637
diff changeset
3048 /* 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
3049 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
3050 {
23803
f112aa8f8f5d (Vw32_phantom_key_code): New variable.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23801
diff changeset
3051 DWORD modifiers = construct_console_modifiers ();
f112aa8f8f5d (Vw32_phantom_key_code): New variable.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23801
diff changeset
3052
23681
af0276da2059 (Vw32_pass_optional_keys_to_system): Variable removed.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23637
diff changeset
3053 if (!NILP (Vw32_recognize_altgr)
af0276da2059 (Vw32_pass_optional_keys_to_system): Variable removed.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23637
diff changeset
3054 && 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
3055 {
af0276da2059 (Vw32_pass_optional_keys_to_system): Variable removed.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23637
diff changeset
3056 /* 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
3057 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
3058 chords correctly. */
af0276da2059 (Vw32_pass_optional_keys_to_system): Variable removed.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23637
diff changeset
3059 windows_translate = 1;
af0276da2059 (Vw32_pass_optional_keys_to_system): Variable removed.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23637
diff changeset
3060 }
23803
f112aa8f8f5d (Vw32_phantom_key_code): New variable.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23801
diff changeset
3061 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
3062 {
23803
f112aa8f8f5d (Vw32_phantom_key_code): New variable.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23801
diff changeset
3063 /* Handle key chords including any modifiers other
f112aa8f8f5d (Vw32_phantom_key_code): New variable.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23801
diff changeset
3064 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
3065 modifier information as possible. */
23681
af0276da2059 (Vw32_pass_optional_keys_to_system): Variable removed.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23637
diff changeset
3066 if ('A' <= wParam && wParam <= 'Z')
af0276da2059 (Vw32_pass_optional_keys_to_system): Variable removed.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23637
diff changeset
3067 {
af0276da2059 (Vw32_pass_optional_keys_to_system): Variable removed.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23637
diff changeset
3068 /* 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
3069 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
3070 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
3071 the normal layout translates alphabetic
af0276da2059 (Vw32_pass_optional_keys_to_system): Variable removed.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23637
diff changeset
3072 characters to non-ascii characters. */
af0276da2059 (Vw32_pass_optional_keys_to_system): Variable removed.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23637
diff changeset
3073 if (!modifier_set (VK_SHIFT))
af0276da2059 (Vw32_pass_optional_keys_to_system): Variable removed.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23637
diff changeset
3074 wParam += ('a' - 'A');
af0276da2059 (Vw32_pass_optional_keys_to_system): Variable removed.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23637
diff changeset
3075 msg = WM_CHAR;
af0276da2059 (Vw32_pass_optional_keys_to_system): Variable removed.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23637
diff changeset
3076 }
af0276da2059 (Vw32_pass_optional_keys_to_system): Variable removed.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23637
diff changeset
3077 else
af0276da2059 (Vw32_pass_optional_keys_to_system): Variable removed.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23637
diff changeset
3078 {
af0276da2059 (Vw32_pass_optional_keys_to_system): Variable removed.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23637
diff changeset
3079 /* 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
3080 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
3081 shift modifier). */
af0276da2059 (Vw32_pass_optional_keys_to_system): Variable removed.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23637
diff changeset
3082 int add;
af0276da2059 (Vw32_pass_optional_keys_to_system): Variable removed.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23637
diff changeset
3083 int isdead = 0;
af0276da2059 (Vw32_pass_optional_keys_to_system): Variable removed.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23637
diff changeset
3084 KEY_EVENT_RECORD key;
47942
080b4586492b Fix typo in comment.
Juanma Barranquero <lekktu@gmail.com>
parents: 47731
diff changeset
3085
23681
af0276da2059 (Vw32_pass_optional_keys_to_system): Variable removed.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23637
diff changeset
3086 key.bKeyDown = TRUE;
af0276da2059 (Vw32_pass_optional_keys_to_system): Variable removed.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23637
diff changeset
3087 key.wRepeatCount = 1;
af0276da2059 (Vw32_pass_optional_keys_to_system): Variable removed.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23637
diff changeset
3088 key.wVirtualKeyCode = wParam;
af0276da2059 (Vw32_pass_optional_keys_to_system): Variable removed.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23637
diff changeset
3089 key.wVirtualScanCode = (lParam & 0xFF0000) >> 16;
af0276da2059 (Vw32_pass_optional_keys_to_system): Variable removed.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23637
diff changeset
3090 key.uChar.AsciiChar = 0;
23803
f112aa8f8f5d (Vw32_phantom_key_code): New variable.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23801
diff changeset
3091 key.dwControlKeyState = modifiers;
23681
af0276da2059 (Vw32_pass_optional_keys_to_system): Variable removed.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23637
diff changeset
3092
af0276da2059 (Vw32_pass_optional_keys_to_system): Variable removed.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23637
diff changeset
3093 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
3094 /* 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
3095 dead key. Ignore both. */
af0276da2059 (Vw32_pass_optional_keys_to_system): Variable removed.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23637
diff changeset
3096 while (--add >= 0)
af0276da2059 (Vw32_pass_optional_keys_to_system): Variable removed.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23637
diff changeset
3097 {
af0276da2059 (Vw32_pass_optional_keys_to_system): Variable removed.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23637
diff changeset
3098 /* Forward asciified character sequence. */
af0276da2059 (Vw32_pass_optional_keys_to_system): Variable removed.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23637
diff changeset
3099 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
3100 (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
3101 (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
3102 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
3103 w32_kbd_patch_key (&key);
af0276da2059 (Vw32_pass_optional_keys_to_system): Variable removed.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23637
diff changeset
3104 }
af0276da2059 (Vw32_pass_optional_keys_to_system): Variable removed.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23637
diff changeset
3105 return 0;
af0276da2059 (Vw32_pass_optional_keys_to_system): Variable removed.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23637
diff changeset
3106 }
af0276da2059 (Vw32_pass_optional_keys_to_system): Variable removed.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23637
diff changeset
3107 }
af0276da2059 (Vw32_pass_optional_keys_to_system): Variable removed.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23637
diff changeset
3108 else
af0276da2059 (Vw32_pass_optional_keys_to_system): Variable removed.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23637
diff changeset
3109 {
af0276da2059 (Vw32_pass_optional_keys_to_system): Variable removed.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23637
diff changeset
3110 /* Let TranslateMessage handle everything else. */
af0276da2059 (Vw32_pass_optional_keys_to_system): Variable removed.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23637
diff changeset
3111 windows_translate = 1;
af0276da2059 (Vw32_pass_optional_keys_to_system): Variable removed.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23637
diff changeset
3112 }
af0276da2059 (Vw32_pass_optional_keys_to_system): Variable removed.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23637
diff changeset
3113 }
af0276da2059 (Vw32_pass_optional_keys_to_system): Variable removed.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23637
diff changeset
3114 }
14461
4fe9540be594 (modifiers, modifier_key_support_tested,
Geoff Voelker <voelker@cs.washington.edu>
parents: 14353
diff changeset
3115
23803
f112aa8f8f5d (Vw32_phantom_key_code): New variable.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23801
diff changeset
3116 translate:
15290
da73440fdb5f (Vwin32_mouse_move_interval): New lisp variable.
Karl Heuer <kwzh@gnu.org>
parents: 15280
diff changeset
3117 if (windows_translate)
da73440fdb5f (Vwin32_mouse_move_interval): New lisp variable.
Karl Heuer <kwzh@gnu.org>
parents: 15280
diff changeset
3118 {
16884
36babc489b0c Change all uses of win95, winnt, and win32
Geoff Voelker <voelker@cs.washington.edu>
parents: 16602
diff changeset
3119 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
3120 windows_msg.time = GetMessageTime ();
36babc489b0c Change all uses of win95, winnt, and win32
Geoff Voelker <voelker@cs.washington.edu>
parents: 16602
diff changeset
3121 TranslateMessage (&windows_msg);
15290
da73440fdb5f (Vwin32_mouse_move_interval): New lisp variable.
Karl Heuer <kwzh@gnu.org>
parents: 15280
diff changeset
3122 goto dflt;
da73440fdb5f (Vwin32_mouse_move_interval): New lisp variable.
Karl Heuer <kwzh@gnu.org>
parents: 15280
diff changeset
3123 }
da73440fdb5f (Vwin32_mouse_move_interval): New lisp variable.
Karl Heuer <kwzh@gnu.org>
parents: 15280
diff changeset
3124
13434
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
3125 /* Fall through */
47942
080b4586492b Fix typo in comment.
Juanma Barranquero <lekktu@gmail.com>
parents: 47731
diff changeset
3126
13434
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
3127 case WM_SYSCHAR:
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
3128 case WM_CHAR:
23681
af0276da2059 (Vw32_pass_optional_keys_to_system): Variable removed.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23637
diff changeset
3129 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
3130 w32_get_key_modifiers (wParam, lParam));
13434
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
3131 break;
14810
4dd6867765b9 (Vwin32_pass_alt_to_system,
Geoff Voelker <voelker@cs.washington.edu>
parents: 14461
diff changeset
3132
91099
8bbec66c0718 Include imm.h.
Jason Rumney <jasonr@gnu.org>
parents: 91085
diff changeset
3133 case WM_UNICHAR:
8bbec66c0718 Include imm.h.
Jason Rumney <jasonr@gnu.org>
parents: 91085
diff changeset
3134 /* WM_UNICHAR looks promising from the docs, but the exact
8bbec66c0718 Include imm.h.
Jason Rumney <jasonr@gnu.org>
parents: 91085
diff changeset
3135 circumstances in which TranslateMessage sends it is one of those
8bbec66c0718 Include imm.h.
Jason Rumney <jasonr@gnu.org>
parents: 91085
diff changeset
3136 Microsoft secret API things that EU and US courts are supposed
8bbec66c0718 Include imm.h.
Jason Rumney <jasonr@gnu.org>
parents: 91085
diff changeset
3137 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
3138 and other MS apps, but never to Emacs.
8bbec66c0718 Include imm.h.
Jason Rumney <jasonr@gnu.org>
parents: 91085
diff changeset
3139
8bbec66c0718 Include imm.h.
Jason Rumney <jasonr@gnu.org>
parents: 91085
diff changeset
3140 Some third party IMEs send it in accordance with the official
8bbec66c0718 Include imm.h.
Jason Rumney <jasonr@gnu.org>
parents: 91085
diff changeset
3141 documentation though, so handle it here.
8bbec66c0718 Include imm.h.
Jason Rumney <jasonr@gnu.org>
parents: 91085
diff changeset
3142
8bbec66c0718 Include imm.h.
Jason Rumney <jasonr@gnu.org>
parents: 91085
diff changeset
3143 UNICODE_NOCHAR is used to test for support for this message.
8bbec66c0718 Include imm.h.
Jason Rumney <jasonr@gnu.org>
parents: 91085
diff changeset
3144 TRUE indicates that the message is supported. */
8bbec66c0718 Include imm.h.
Jason Rumney <jasonr@gnu.org>
parents: 91085
diff changeset
3145 if (wParam == UNICODE_NOCHAR)
8bbec66c0718 Include imm.h.
Jason Rumney <jasonr@gnu.org>
parents: 91085
diff changeset
3146 return TRUE;
8bbec66c0718 Include imm.h.
Jason Rumney <jasonr@gnu.org>
parents: 91085
diff changeset
3147
8bbec66c0718 Include imm.h.
Jason Rumney <jasonr@gnu.org>
parents: 91085
diff changeset
3148 {
8bbec66c0718 Include imm.h.
Jason Rumney <jasonr@gnu.org>
parents: 91085
diff changeset
3149 W32Msg wmsg;
8bbec66c0718 Include imm.h.
Jason Rumney <jasonr@gnu.org>
parents: 91085
diff changeset
3150 wmsg.dwModifiers = w32_get_key_modifiers (wParam, lParam);
8bbec66c0718 Include imm.h.
Jason Rumney <jasonr@gnu.org>
parents: 91085
diff changeset
3151 signal_user_input ();
8bbec66c0718 Include imm.h.
Jason Rumney <jasonr@gnu.org>
parents: 91085
diff changeset
3152 my_post_msg (&wmsg, hwnd, msg, wParam, lParam);
8bbec66c0718 Include imm.h.
Jason Rumney <jasonr@gnu.org>
parents: 91085
diff changeset
3153 }
8bbec66c0718 Include imm.h.
Jason Rumney <jasonr@gnu.org>
parents: 91085
diff changeset
3154 break;
8bbec66c0718 Include imm.h.
Jason Rumney <jasonr@gnu.org>
parents: 91085
diff changeset
3155
8bbec66c0718 Include imm.h.
Jason Rumney <jasonr@gnu.org>
parents: 91085
diff changeset
3156 case WM_IME_CHAR:
8bbec66c0718 Include imm.h.
Jason Rumney <jasonr@gnu.org>
parents: 91085
diff changeset
3157 /* 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
3158 which will at least allow characters decodable in the system locale
8bbec66c0718 Include imm.h.
Jason Rumney <jasonr@gnu.org>
parents: 91085
diff changeset
3159 get through. */
8bbec66c0718 Include imm.h.
Jason Rumney <jasonr@gnu.org>
parents: 91085
diff changeset
3160 if (!get_composition_string_fn)
8bbec66c0718 Include imm.h.
Jason Rumney <jasonr@gnu.org>
parents: 91085
diff changeset
3161 goto dflt;
8bbec66c0718 Include imm.h.
Jason Rumney <jasonr@gnu.org>
parents: 91085
diff changeset
3162
8bbec66c0718 Include imm.h.
Jason Rumney <jasonr@gnu.org>
parents: 91085
diff changeset
3163 else if (!ignore_ime_char)
8bbec66c0718 Include imm.h.
Jason Rumney <jasonr@gnu.org>
parents: 91085
diff changeset
3164 {
8bbec66c0718 Include imm.h.
Jason Rumney <jasonr@gnu.org>
parents: 91085
diff changeset
3165 wchar_t * buffer;
8bbec66c0718 Include imm.h.
Jason Rumney <jasonr@gnu.org>
parents: 91085
diff changeset
3166 int size, i;
8bbec66c0718 Include imm.h.
Jason Rumney <jasonr@gnu.org>
parents: 91085
diff changeset
3167 W32Msg wmsg;
8bbec66c0718 Include imm.h.
Jason Rumney <jasonr@gnu.org>
parents: 91085
diff changeset
3168 HIMC context = get_ime_context_fn (hwnd);
8bbec66c0718 Include imm.h.
Jason Rumney <jasonr@gnu.org>
parents: 91085
diff changeset
3169 wmsg.dwModifiers = w32_get_key_modifiers (wParam, lParam);
8bbec66c0718 Include imm.h.
Jason Rumney <jasonr@gnu.org>
parents: 91085
diff changeset
3170 /* Get buffer size. */
8bbec66c0718 Include imm.h.
Jason Rumney <jasonr@gnu.org>
parents: 91085
diff changeset
3171 size = get_composition_string_fn (context, GCS_RESULTSTR, buffer, 0);
8bbec66c0718 Include imm.h.
Jason Rumney <jasonr@gnu.org>
parents: 91085
diff changeset
3172 buffer = alloca(size);
8bbec66c0718 Include imm.h.
Jason Rumney <jasonr@gnu.org>
parents: 91085
diff changeset
3173 size = get_composition_string_fn (context, GCS_RESULTSTR,
8bbec66c0718 Include imm.h.
Jason Rumney <jasonr@gnu.org>
parents: 91085
diff changeset
3174 buffer, size);
104030
91b945d54645 * w32fns.c (w32_wnd_proc) [WM_IME_STARTCOMPOSITION]: Position
Jason Rumney <jasonr@gnu.org>
parents: 103674
diff changeset
3175 release_ime_context_fn (hwnd, context);
91b945d54645 * w32fns.c (w32_wnd_proc) [WM_IME_STARTCOMPOSITION]: Position
Jason Rumney <jasonr@gnu.org>
parents: 103674
diff changeset
3176
91099
8bbec66c0718 Include imm.h.
Jason Rumney <jasonr@gnu.org>
parents: 91085
diff changeset
3177 signal_user_input ();
8bbec66c0718 Include imm.h.
Jason Rumney <jasonr@gnu.org>
parents: 91085
diff changeset
3178 for (i = 0; i < size / sizeof (wchar_t); i++)
8bbec66c0718 Include imm.h.
Jason Rumney <jasonr@gnu.org>
parents: 91085
diff changeset
3179 {
8bbec66c0718 Include imm.h.
Jason Rumney <jasonr@gnu.org>
parents: 91085
diff changeset
3180 my_post_msg (&wmsg, hwnd, WM_UNICHAR, (WPARAM) buffer[i],
8bbec66c0718 Include imm.h.
Jason Rumney <jasonr@gnu.org>
parents: 91085
diff changeset
3181 lParam);
8bbec66c0718 Include imm.h.
Jason Rumney <jasonr@gnu.org>
parents: 91085
diff changeset
3182 }
102394
f978553ef98f (w32_wnd_proc): Only ignore IME messages for the
Jason Rumney <jasonr@gnu.org>
parents: 101901
diff changeset
3183 /* Ignore the messages for the rest of the
f978553ef98f (w32_wnd_proc): Only ignore IME messages for the
Jason Rumney <jasonr@gnu.org>
parents: 101901
diff changeset
3184 characters in the string that was output above. */
f978553ef98f (w32_wnd_proc): Only ignore IME messages for the
Jason Rumney <jasonr@gnu.org>
parents: 101901
diff changeset
3185 ignore_ime_char = (size / sizeof (wchar_t)) - 1;
91099
8bbec66c0718 Include imm.h.
Jason Rumney <jasonr@gnu.org>
parents: 91085
diff changeset
3186 }
102394
f978553ef98f (w32_wnd_proc): Only ignore IME messages for the
Jason Rumney <jasonr@gnu.org>
parents: 101901
diff changeset
3187 else
f978553ef98f (w32_wnd_proc): Only ignore IME messages for the
Jason Rumney <jasonr@gnu.org>
parents: 101901
diff changeset
3188 ignore_ime_char--;
f978553ef98f (w32_wnd_proc): Only ignore IME messages for the
Jason Rumney <jasonr@gnu.org>
parents: 101901
diff changeset
3189
91099
8bbec66c0718 Include imm.h.
Jason Rumney <jasonr@gnu.org>
parents: 91085
diff changeset
3190 break;
8bbec66c0718 Include imm.h.
Jason Rumney <jasonr@gnu.org>
parents: 91085
diff changeset
3191
104030
91b945d54645 * w32fns.c (w32_wnd_proc) [WM_IME_STARTCOMPOSITION]: Position
Jason Rumney <jasonr@gnu.org>
parents: 103674
diff changeset
3192 case WM_IME_STARTCOMPOSITION:
91b945d54645 * w32fns.c (w32_wnd_proc) [WM_IME_STARTCOMPOSITION]: Position
Jason Rumney <jasonr@gnu.org>
parents: 103674
diff changeset
3193 if (!set_ime_composition_window_fn)
91b945d54645 * w32fns.c (w32_wnd_proc) [WM_IME_STARTCOMPOSITION]: Position
Jason Rumney <jasonr@gnu.org>
parents: 103674
diff changeset
3194 goto dflt;
91b945d54645 * w32fns.c (w32_wnd_proc) [WM_IME_STARTCOMPOSITION]: Position
Jason Rumney <jasonr@gnu.org>
parents: 103674
diff changeset
3195 else
91b945d54645 * w32fns.c (w32_wnd_proc) [WM_IME_STARTCOMPOSITION]: Position
Jason Rumney <jasonr@gnu.org>
parents: 103674
diff changeset
3196 {
91b945d54645 * w32fns.c (w32_wnd_proc) [WM_IME_STARTCOMPOSITION]: Position
Jason Rumney <jasonr@gnu.org>
parents: 103674
diff changeset
3197 COMPOSITIONFORM form;
91b945d54645 * w32fns.c (w32_wnd_proc) [WM_IME_STARTCOMPOSITION]: Position
Jason Rumney <jasonr@gnu.org>
parents: 103674
diff changeset
3198 HIMC context;
91b945d54645 * w32fns.c (w32_wnd_proc) [WM_IME_STARTCOMPOSITION]: Position
Jason Rumney <jasonr@gnu.org>
parents: 103674
diff changeset
3199 struct window *w;
91b945d54645 * w32fns.c (w32_wnd_proc) [WM_IME_STARTCOMPOSITION]: Position
Jason Rumney <jasonr@gnu.org>
parents: 103674
diff changeset
3200
91b945d54645 * w32fns.c (w32_wnd_proc) [WM_IME_STARTCOMPOSITION]: Position
Jason Rumney <jasonr@gnu.org>
parents: 103674
diff changeset
3201 if (!context)
91b945d54645 * w32fns.c (w32_wnd_proc) [WM_IME_STARTCOMPOSITION]: Position
Jason Rumney <jasonr@gnu.org>
parents: 103674
diff changeset
3202 break;
91b945d54645 * w32fns.c (w32_wnd_proc) [WM_IME_STARTCOMPOSITION]: Position
Jason Rumney <jasonr@gnu.org>
parents: 103674
diff changeset
3203
91b945d54645 * w32fns.c (w32_wnd_proc) [WM_IME_STARTCOMPOSITION]: Position
Jason Rumney <jasonr@gnu.org>
parents: 103674
diff changeset
3204 f = x_window_to_frame (dpyinfo, hwnd);
91b945d54645 * w32fns.c (w32_wnd_proc) [WM_IME_STARTCOMPOSITION]: Position
Jason Rumney <jasonr@gnu.org>
parents: 103674
diff changeset
3205 w = XWINDOW (FRAME_SELECTED_WINDOW (f));
91b945d54645 * w32fns.c (w32_wnd_proc) [WM_IME_STARTCOMPOSITION]: Position
Jason Rumney <jasonr@gnu.org>
parents: 103674
diff changeset
3206
91b945d54645 * w32fns.c (w32_wnd_proc) [WM_IME_STARTCOMPOSITION]: Position
Jason Rumney <jasonr@gnu.org>
parents: 103674
diff changeset
3207 form.dwStyle = CFS_RECT;
91b945d54645 * w32fns.c (w32_wnd_proc) [WM_IME_STARTCOMPOSITION]: Position
Jason Rumney <jasonr@gnu.org>
parents: 103674
diff changeset
3208 form.ptCurrentPos.x = w32_system_caret_x;
91b945d54645 * w32fns.c (w32_wnd_proc) [WM_IME_STARTCOMPOSITION]: Position
Jason Rumney <jasonr@gnu.org>
parents: 103674
diff changeset
3209 form.ptCurrentPos.y = w32_system_caret_y;
91b945d54645 * w32fns.c (w32_wnd_proc) [WM_IME_STARTCOMPOSITION]: Position
Jason Rumney <jasonr@gnu.org>
parents: 103674
diff changeset
3210
91b945d54645 * w32fns.c (w32_wnd_proc) [WM_IME_STARTCOMPOSITION]: Position
Jason Rumney <jasonr@gnu.org>
parents: 103674
diff changeset
3211 form.rcArea.left = WINDOW_TEXT_TO_FRAME_PIXEL_X (w, 0);
91b945d54645 * w32fns.c (w32_wnd_proc) [WM_IME_STARTCOMPOSITION]: Position
Jason Rumney <jasonr@gnu.org>
parents: 103674
diff changeset
3212 form.rcArea.top = (WINDOW_TOP_EDGE_Y (w)
91b945d54645 * w32fns.c (w32_wnd_proc) [WM_IME_STARTCOMPOSITION]: Position
Jason Rumney <jasonr@gnu.org>
parents: 103674
diff changeset
3213 + WINDOW_HEADER_LINE_HEIGHT (w));
91b945d54645 * w32fns.c (w32_wnd_proc) [WM_IME_STARTCOMPOSITION]: Position
Jason Rumney <jasonr@gnu.org>
parents: 103674
diff changeset
3214 form.rcArea.right = (WINDOW_BOX_RIGHT_EDGE_X (w)
91b945d54645 * w32fns.c (w32_wnd_proc) [WM_IME_STARTCOMPOSITION]: Position
Jason Rumney <jasonr@gnu.org>
parents: 103674
diff changeset
3215 - WINDOW_RIGHT_MARGIN_WIDTH (w)
91b945d54645 * w32fns.c (w32_wnd_proc) [WM_IME_STARTCOMPOSITION]: Position
Jason Rumney <jasonr@gnu.org>
parents: 103674
diff changeset
3216 - WINDOW_RIGHT_FRINGE_WIDTH (w));
91b945d54645 * w32fns.c (w32_wnd_proc) [WM_IME_STARTCOMPOSITION]: Position
Jason Rumney <jasonr@gnu.org>
parents: 103674
diff changeset
3217 form.rcArea.bottom = (WINDOW_BOTTOM_EDGE_Y (w)
91b945d54645 * w32fns.c (w32_wnd_proc) [WM_IME_STARTCOMPOSITION]: Position
Jason Rumney <jasonr@gnu.org>
parents: 103674
diff changeset
3218 - WINDOW_MODE_LINE_HEIGHT (w));
91b945d54645 * w32fns.c (w32_wnd_proc) [WM_IME_STARTCOMPOSITION]: Position
Jason Rumney <jasonr@gnu.org>
parents: 103674
diff changeset
3219
91b945d54645 * w32fns.c (w32_wnd_proc) [WM_IME_STARTCOMPOSITION]: Position
Jason Rumney <jasonr@gnu.org>
parents: 103674
diff changeset
3220 context = get_ime_context_fn (hwnd);
91b945d54645 * w32fns.c (w32_wnd_proc) [WM_IME_STARTCOMPOSITION]: Position
Jason Rumney <jasonr@gnu.org>
parents: 103674
diff changeset
3221 set_ime_composition_window_fn (context, &form);
91b945d54645 * w32fns.c (w32_wnd_proc) [WM_IME_STARTCOMPOSITION]: Position
Jason Rumney <jasonr@gnu.org>
parents: 103674
diff changeset
3222 release_ime_context_fn (hwnd, context);
91b945d54645 * w32fns.c (w32_wnd_proc) [WM_IME_STARTCOMPOSITION]: Position
Jason Rumney <jasonr@gnu.org>
parents: 103674
diff changeset
3223 }
91b945d54645 * w32fns.c (w32_wnd_proc) [WM_IME_STARTCOMPOSITION]: Position
Jason Rumney <jasonr@gnu.org>
parents: 103674
diff changeset
3224 break;
91b945d54645 * w32fns.c (w32_wnd_proc) [WM_IME_STARTCOMPOSITION]: Position
Jason Rumney <jasonr@gnu.org>
parents: 103674
diff changeset
3225
91099
8bbec66c0718 Include imm.h.
Jason Rumney <jasonr@gnu.org>
parents: 91085
diff changeset
3226 case WM_IME_ENDCOMPOSITION:
8bbec66c0718 Include imm.h.
Jason Rumney <jasonr@gnu.org>
parents: 91085
diff changeset
3227 ignore_ime_char = 0;
8bbec66c0718 Include imm.h.
Jason Rumney <jasonr@gnu.org>
parents: 91085
diff changeset
3228 goto dflt;
8bbec66c0718 Include imm.h.
Jason Rumney <jasonr@gnu.org>
parents: 91085
diff changeset
3229
15147
38c0ce06203f (quit_char, Vwin32_enable_italics, Vwin32_enable_palette):
Geoff Voelker <voelker@cs.washington.edu>
parents: 15034
diff changeset
3230 /* 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
3231 are used together, but only if user has two button mouse. */
13434
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
3232 case WM_LBUTTONDOWN:
15147
38c0ce06203f (quit_char, Vwin32_enable_italics, Vwin32_enable_palette):
Geoff Voelker <voelker@cs.washington.edu>
parents: 15034
diff changeset
3233 case WM_RBUTTONDOWN:
55656
29b250a07fe0 (Fw32_register_hot_key, Fw32_unregister_hot_key)
Jason Rumney <jasonr@gnu.org>
parents: 55592
diff changeset
3234 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
3235 goto handle_plain_button;
38c0ce06203f (quit_char, Vwin32_enable_italics, Vwin32_enable_palette):
Geoff Voelker <voelker@cs.washington.edu>
parents: 15034
diff changeset
3236
38c0ce06203f (quit_char, Vwin32_enable_italics, Vwin32_enable_palette):
Geoff Voelker <voelker@cs.washington.edu>
parents: 15034
diff changeset
3237 {
38c0ce06203f (quit_char, Vwin32_enable_italics, Vwin32_enable_palette):
Geoff Voelker <voelker@cs.washington.edu>
parents: 15034
diff changeset
3238 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
3239 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
3240
15205
0f5d6cd72e21 (win_msg_worker): Use post_msg.
Richard M. Stallman <rms@gnu.org>
parents: 15148
diff changeset
3241 if (button_state & this)
0f5d6cd72e21 (win_msg_worker): Use post_msg.
Richard M. Stallman <rms@gnu.org>
parents: 15148
diff changeset
3242 return 0;
15147
38c0ce06203f (quit_char, Vwin32_enable_italics, Vwin32_enable_palette):
Geoff Voelker <voelker@cs.washington.edu>
parents: 15034
diff changeset
3243
38c0ce06203f (quit_char, Vwin32_enable_italics, Vwin32_enable_palette):
Geoff Voelker <voelker@cs.washington.edu>
parents: 15034
diff changeset
3244 if (button_state == 0)
38c0ce06203f (quit_char, Vwin32_enable_italics, Vwin32_enable_palette):
Geoff Voelker <voelker@cs.washington.edu>
parents: 15034
diff changeset
3245 SetCapture (hwnd);
38c0ce06203f (quit_char, Vwin32_enable_italics, Vwin32_enable_palette):
Geoff Voelker <voelker@cs.washington.edu>
parents: 15034
diff changeset
3246
38c0ce06203f (quit_char, Vwin32_enable_italics, Vwin32_enable_palette):
Geoff Voelker <voelker@cs.washington.edu>
parents: 15034
diff changeset
3247 button_state |= this;
38c0ce06203f (quit_char, Vwin32_enable_italics, Vwin32_enable_palette):
Geoff Voelker <voelker@cs.washington.edu>
parents: 15034
diff changeset
3248
38c0ce06203f (quit_char, Vwin32_enable_italics, Vwin32_enable_palette):
Geoff Voelker <voelker@cs.washington.edu>
parents: 15034
diff changeset
3249 if (button_state & other)
38c0ce06203f (quit_char, Vwin32_enable_italics, Vwin32_enable_palette):
Geoff Voelker <voelker@cs.washington.edu>
parents: 15034
diff changeset
3250 {
15290
da73440fdb5f (Vwin32_mouse_move_interval): New lisp variable.
Karl Heuer <kwzh@gnu.org>
parents: 15280
diff changeset
3251 if (mouse_button_timer)
15147
38c0ce06203f (quit_char, Vwin32_enable_italics, Vwin32_enable_palette):
Geoff Voelker <voelker@cs.washington.edu>
parents: 15034
diff changeset
3252 {
15290
da73440fdb5f (Vwin32_mouse_move_interval): New lisp variable.
Karl Heuer <kwzh@gnu.org>
parents: 15280
diff changeset
3253 KillTimer (hwnd, mouse_button_timer);
da73440fdb5f (Vwin32_mouse_move_interval): New lisp variable.
Karl Heuer <kwzh@gnu.org>
parents: 15280
diff changeset
3254 mouse_button_timer = 0;
15147
38c0ce06203f (quit_char, Vwin32_enable_italics, Vwin32_enable_palette):
Geoff Voelker <voelker@cs.washington.edu>
parents: 15034
diff changeset
3255
38c0ce06203f (quit_char, Vwin32_enable_italics, Vwin32_enable_palette):
Geoff Voelker <voelker@cs.washington.edu>
parents: 15034
diff changeset
3256 /* Generate middle mouse event instead. */
38c0ce06203f (quit_char, Vwin32_enable_italics, Vwin32_enable_palette):
Geoff Voelker <voelker@cs.washington.edu>
parents: 15034
diff changeset
3257 msg = WM_MBUTTONDOWN;
38c0ce06203f (quit_char, Vwin32_enable_italics, Vwin32_enable_palette):
Geoff Voelker <voelker@cs.washington.edu>
parents: 15034
diff changeset
3258 button_state |= MMOUSE;
38c0ce06203f (quit_char, Vwin32_enable_italics, Vwin32_enable_palette):
Geoff Voelker <voelker@cs.washington.edu>
parents: 15034
diff changeset
3259 }
38c0ce06203f (quit_char, Vwin32_enable_italics, Vwin32_enable_palette):
Geoff Voelker <voelker@cs.washington.edu>
parents: 15034
diff changeset
3260 else if (button_state & MMOUSE)
38c0ce06203f (quit_char, Vwin32_enable_italics, Vwin32_enable_palette):
Geoff Voelker <voelker@cs.washington.edu>
parents: 15034
diff changeset
3261 {
38c0ce06203f (quit_char, Vwin32_enable_italics, Vwin32_enable_palette):
Geoff Voelker <voelker@cs.washington.edu>
parents: 15034
diff changeset
3262 /* 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
3263 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
3264 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
3265 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
3266 return 0;
38c0ce06203f (quit_char, Vwin32_enable_italics, Vwin32_enable_palette):
Geoff Voelker <voelker@cs.washington.edu>
parents: 15034
diff changeset
3267 }
38c0ce06203f (quit_char, Vwin32_enable_italics, Vwin32_enable_palette):
Geoff Voelker <voelker@cs.washington.edu>
parents: 15034
diff changeset
3268 else
38c0ce06203f (quit_char, Vwin32_enable_italics, Vwin32_enable_palette):
Geoff Voelker <voelker@cs.washington.edu>
parents: 15034
diff changeset
3269 {
38c0ce06203f (quit_char, Vwin32_enable_italics, Vwin32_enable_palette):
Geoff Voelker <voelker@cs.washington.edu>
parents: 15034
diff changeset
3270 /* Flush out saved message. */
15290
da73440fdb5f (Vwin32_mouse_move_interval): New lisp variable.
Karl Heuer <kwzh@gnu.org>
parents: 15280
diff changeset
3271 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
3272 }
16588
481b7874a1e9 Change identifiers of the form win32* to w32*.
Geoff Voelker <voelker@cs.washington.edu>
parents: 16259
diff changeset
3273 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
3274 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
3275 signal_user_input ();
15147
38c0ce06203f (quit_char, Vwin32_enable_italics, Vwin32_enable_palette):
Geoff Voelker <voelker@cs.washington.edu>
parents: 15034
diff changeset
3276
38c0ce06203f (quit_char, Vwin32_enable_italics, Vwin32_enable_palette):
Geoff Voelker <voelker@cs.washington.edu>
parents: 15034
diff changeset
3277 /* Clear message buffer. */
15290
da73440fdb5f (Vwin32_mouse_move_interval): New lisp variable.
Karl Heuer <kwzh@gnu.org>
parents: 15280
diff changeset
3278 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
3279 }
38c0ce06203f (quit_char, Vwin32_enable_italics, Vwin32_enable_palette):
Geoff Voelker <voelker@cs.washington.edu>
parents: 15034
diff changeset
3280 else
38c0ce06203f (quit_char, Vwin32_enable_italics, Vwin32_enable_palette):
Geoff Voelker <voelker@cs.washington.edu>
parents: 15034
diff changeset
3281 {
38c0ce06203f (quit_char, Vwin32_enable_italics, Vwin32_enable_palette):
Geoff Voelker <voelker@cs.washington.edu>
parents: 15034
diff changeset
3282 /* Hold onto message for now. */
15290
da73440fdb5f (Vwin32_mouse_move_interval): New lisp variable.
Karl Heuer <kwzh@gnu.org>
parents: 15280
diff changeset
3283 mouse_button_timer =
23803
f112aa8f8f5d (Vw32_phantom_key_code): New variable.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23801
diff changeset
3284 SetTimer (hwnd, MOUSE_BUTTON_ID,
55656
29b250a07fe0 (Fw32_register_hot_key, Fw32_unregister_hot_key)
Jason Rumney <jasonr@gnu.org>
parents: 55592
diff changeset
3285 w32_mouse_button_tolerance, NULL);
15290
da73440fdb5f (Vwin32_mouse_move_interval): New lisp variable.
Karl Heuer <kwzh@gnu.org>
parents: 15280
diff changeset
3286 saved_mouse_button_msg.msg.hwnd = hwnd;
da73440fdb5f (Vwin32_mouse_move_interval): New lisp variable.
Karl Heuer <kwzh@gnu.org>
parents: 15280
diff changeset
3287 saved_mouse_button_msg.msg.message = msg;
da73440fdb5f (Vwin32_mouse_move_interval): New lisp variable.
Karl Heuer <kwzh@gnu.org>
parents: 15280
diff changeset
3288 saved_mouse_button_msg.msg.wParam = wParam;
da73440fdb5f (Vwin32_mouse_move_interval): New lisp variable.
Karl Heuer <kwzh@gnu.org>
parents: 15280
diff changeset
3289 saved_mouse_button_msg.msg.lParam = lParam;
da73440fdb5f (Vwin32_mouse_move_interval): New lisp variable.
Karl Heuer <kwzh@gnu.org>
parents: 15280
diff changeset
3290 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
3291 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
3292 }
38c0ce06203f (quit_char, Vwin32_enable_italics, Vwin32_enable_palette):
Geoff Voelker <voelker@cs.washington.edu>
parents: 15034
diff changeset
3293 }
38c0ce06203f (quit_char, Vwin32_enable_italics, Vwin32_enable_palette):
Geoff Voelker <voelker@cs.washington.edu>
parents: 15034
diff changeset
3294 return 0;
38c0ce06203f (quit_char, Vwin32_enable_italics, Vwin32_enable_palette):
Geoff Voelker <voelker@cs.washington.edu>
parents: 15034
diff changeset
3295
13434
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
3296 case WM_LBUTTONUP:
15147
38c0ce06203f (quit_char, Vwin32_enable_italics, Vwin32_enable_palette):
Geoff Voelker <voelker@cs.washington.edu>
parents: 15034
diff changeset
3297 case WM_RBUTTONUP:
55656
29b250a07fe0 (Fw32_register_hot_key, Fw32_unregister_hot_key)
Jason Rumney <jasonr@gnu.org>
parents: 55592
diff changeset
3298 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
3299 goto handle_plain_button;
38c0ce06203f (quit_char, Vwin32_enable_italics, Vwin32_enable_palette):
Geoff Voelker <voelker@cs.washington.edu>
parents: 15034
diff changeset
3300
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 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
3303 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
3304
15205
0f5d6cd72e21 (win_msg_worker): Use post_msg.
Richard M. Stallman <rms@gnu.org>
parents: 15148
diff changeset
3305 if ((button_state & this) == 0)
0f5d6cd72e21 (win_msg_worker): Use post_msg.
Richard M. Stallman <rms@gnu.org>
parents: 15148
diff changeset
3306 return 0;
15147
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 button_state &= ~this;
38c0ce06203f (quit_char, Vwin32_enable_italics, Vwin32_enable_palette):
Geoff Voelker <voelker@cs.washington.edu>
parents: 15034
diff changeset
3309
38c0ce06203f (quit_char, Vwin32_enable_italics, Vwin32_enable_palette):
Geoff Voelker <voelker@cs.washington.edu>
parents: 15034
diff changeset
3310 if (button_state & MMOUSE)
38c0ce06203f (quit_char, Vwin32_enable_italics, Vwin32_enable_palette):
Geoff Voelker <voelker@cs.washington.edu>
parents: 15034
diff changeset
3311 {
38c0ce06203f (quit_char, Vwin32_enable_italics, Vwin32_enable_palette):
Geoff Voelker <voelker@cs.washington.edu>
parents: 15034
diff changeset
3312 /* 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
3313 if ((button_state & other) == 0)
38c0ce06203f (quit_char, Vwin32_enable_italics, Vwin32_enable_palette):
Geoff Voelker <voelker@cs.washington.edu>
parents: 15034
diff changeset
3314 {
38c0ce06203f (quit_char, Vwin32_enable_italics, Vwin32_enable_palette):
Geoff Voelker <voelker@cs.washington.edu>
parents: 15034
diff changeset
3315 msg = WM_MBUTTONUP;
38c0ce06203f (quit_char, Vwin32_enable_italics, Vwin32_enable_palette):
Geoff Voelker <voelker@cs.washington.edu>
parents: 15034
diff changeset
3316 button_state &= ~MMOUSE;
38c0ce06203f (quit_char, Vwin32_enable_italics, Vwin32_enable_palette):
Geoff Voelker <voelker@cs.washington.edu>
parents: 15034
diff changeset
3317
38c0ce06203f (quit_char, Vwin32_enable_italics, Vwin32_enable_palette):
Geoff Voelker <voelker@cs.washington.edu>
parents: 15034
diff changeset
3318 if (button_state) abort ();
38c0ce06203f (quit_char, Vwin32_enable_italics, Vwin32_enable_palette):
Geoff Voelker <voelker@cs.washington.edu>
parents: 15034
diff changeset
3319 }
38c0ce06203f (quit_char, Vwin32_enable_italics, Vwin32_enable_palette):
Geoff Voelker <voelker@cs.washington.edu>
parents: 15034
diff changeset
3320 else
38c0ce06203f (quit_char, Vwin32_enable_italics, Vwin32_enable_palette):
Geoff Voelker <voelker@cs.washington.edu>
parents: 15034
diff changeset
3321 return 0;
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 else
38c0ce06203f (quit_char, Vwin32_enable_italics, Vwin32_enable_palette):
Geoff Voelker <voelker@cs.washington.edu>
parents: 15034
diff changeset
3324 {
38c0ce06203f (quit_char, Vwin32_enable_italics, Vwin32_enable_palette):
Geoff Voelker <voelker@cs.washington.edu>
parents: 15034
diff changeset
3325 /* Flush out saved message if necessary. */
15290
da73440fdb5f (Vwin32_mouse_move_interval): New lisp variable.
Karl Heuer <kwzh@gnu.org>
parents: 15280
diff changeset
3326 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
3327 {
15290
da73440fdb5f (Vwin32_mouse_move_interval): New lisp variable.
Karl Heuer <kwzh@gnu.org>
parents: 15280
diff changeset
3328 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
3329 }
38c0ce06203f (quit_char, Vwin32_enable_italics, Vwin32_enable_palette):
Geoff Voelker <voelker@cs.washington.edu>
parents: 15034
diff changeset
3330 }
16588
481b7874a1e9 Change identifiers of the form win32* to w32*.
Geoff Voelker <voelker@cs.washington.edu>
parents: 16259
diff changeset
3331 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
3332 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
3333 signal_user_input ();
15147
38c0ce06203f (quit_char, Vwin32_enable_italics, Vwin32_enable_palette):
Geoff Voelker <voelker@cs.washington.edu>
parents: 15034
diff changeset
3334
38c0ce06203f (quit_char, Vwin32_enable_italics, Vwin32_enable_palette):
Geoff Voelker <voelker@cs.washington.edu>
parents: 15034
diff changeset
3335 /* 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
3336 saved_mouse_button_msg.msg.hwnd = 0;
da73440fdb5f (Vwin32_mouse_move_interval): New lisp variable.
Karl Heuer <kwzh@gnu.org>
parents: 15280
diff changeset
3337 KillTimer (hwnd, mouse_button_timer);
da73440fdb5f (Vwin32_mouse_move_interval): New lisp variable.
Karl Heuer <kwzh@gnu.org>
parents: 15280
diff changeset
3338 mouse_button_timer = 0;
15147
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 if (button_state == 0)
38c0ce06203f (quit_char, Vwin32_enable_italics, Vwin32_enable_palette):
Geoff Voelker <voelker@cs.washington.edu>
parents: 15034
diff changeset
3341 ReleaseCapture ();
38c0ce06203f (quit_char, Vwin32_enable_italics, Vwin32_enable_palette):
Geoff Voelker <voelker@cs.washington.edu>
parents: 15034
diff changeset
3342 }
38c0ce06203f (quit_char, Vwin32_enable_italics, Vwin32_enable_palette):
Geoff Voelker <voelker@cs.washington.edu>
parents: 15034
diff changeset
3343 return 0;
38c0ce06203f (quit_char, Vwin32_enable_italics, Vwin32_enable_palette):
Geoff Voelker <voelker@cs.washington.edu>
parents: 15034
diff changeset
3344
42719
70f13c4f82c7 (w32_pass_extra_mouse_buttons_to_system): New user option.
Jason Rumney <jasonr@gnu.org>
parents: 42537
diff changeset
3345 case WM_XBUTTONDOWN:
70f13c4f82c7 (w32_pass_extra_mouse_buttons_to_system): New user option.
Jason Rumney <jasonr@gnu.org>
parents: 42537
diff changeset
3346 case WM_XBUTTONUP:
70f13c4f82c7 (w32_pass_extra_mouse_buttons_to_system): New user option.
Jason Rumney <jasonr@gnu.org>
parents: 42537
diff changeset
3347 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
3348 goto dflt;
70f13c4f82c7 (w32_pass_extra_mouse_buttons_to_system): New user option.
Jason Rumney <jasonr@gnu.org>
parents: 42537
diff changeset
3349 /* else fall through and process them. */
13434
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
3350 case WM_MBUTTONDOWN:
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
3351 case WM_MBUTTONUP:
15147
38c0ce06203f (quit_char, Vwin32_enable_italics, Vwin32_enable_palette):
Geoff Voelker <voelker@cs.washington.edu>
parents: 15034
diff changeset
3352 handle_plain_button:
13434
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
3353 {
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
3354 BOOL up;
19707
0181cc080316 Include limits.h and errno.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18508
diff changeset
3355 int button;
0181cc080316 Include limits.h and errno.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18508
diff changeset
3356
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
3357 /* 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
3358 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
3359 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
3360 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
3361
42719
70f13c4f82c7 (w32_pass_extra_mouse_buttons_to_system): New user option.
Jason Rumney <jasonr@gnu.org>
parents: 42537
diff changeset
3362 if (parse_button (msg, HIWORD (wParam), &button, &up))
13434
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
3363 {
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
3364 if (up) ReleaseCapture ();
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
3365 else SetCapture (hwnd);
47942
080b4586492b Fix typo in comment.
Juanma Barranquero <lekktu@gmail.com>
parents: 47731
diff changeset
3366 button = (button == 0) ? LMOUSE :
19707
0181cc080316 Include limits.h and errno.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18508
diff changeset
3367 ((button == 1) ? MMOUSE : RMOUSE);
0181cc080316 Include limits.h and errno.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18508
diff changeset
3368 if (up)
0181cc080316 Include limits.h and errno.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18508
diff changeset
3369 button_state &= ~button;
0181cc080316 Include limits.h and errno.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18508
diff changeset
3370 else
0181cc080316 Include limits.h and errno.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18508
diff changeset
3371 button_state |= button;
13434
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
3372 }
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
3373 }
47942
080b4586492b Fix typo in comment.
Juanma Barranquero <lekktu@gmail.com>
parents: 47731
diff changeset
3374
16588
481b7874a1e9 Change identifiers of the form win32* to w32*.
Geoff Voelker <voelker@cs.washington.edu>
parents: 16259
diff changeset
3375 wmsg.dwModifiers = w32_get_modifiers ();
13434
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
3376 my_post_msg (&wmsg, hwnd, msg, wParam, lParam);
69426
46a8c3e0161d (signal_user_input): New function.
Jason Rumney <jasonr@gnu.org>
parents: 69406
diff changeset
3377 signal_user_input ();
42719
70f13c4f82c7 (w32_pass_extra_mouse_buttons_to_system): New user option.
Jason Rumney <jasonr@gnu.org>
parents: 42537
diff changeset
3378
70f13c4f82c7 (w32_pass_extra_mouse_buttons_to_system): New user option.
Jason Rumney <jasonr@gnu.org>
parents: 42537
diff changeset
3379 /* 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
3380 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
3381 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
3382
41732
0d9b74cd27cd (trackmouse_window, track_mouse_event_fn): New vars.
Jason Rumney <jasonr@gnu.org>
parents: 41726
diff changeset
3383 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
3384 /* 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
3385 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
3386 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
3387 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
3388 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
3389 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
3390 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
3391
41732
0d9b74cd27cd (trackmouse_window, track_mouse_event_fn): New vars.
Jason Rumney <jasonr@gnu.org>
parents: 41726
diff changeset
3392 /* 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
3393 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
3394 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
3395 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
3396 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
3397 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
3398 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
3399 {
0d9b74cd27cd (trackmouse_window, track_mouse_event_fn): New vars.
Jason Rumney <jasonr@gnu.org>
parents: 41726
diff changeset
3400 TRACKMOUSEEVENT tme;
0d9b74cd27cd (trackmouse_window, track_mouse_event_fn): New vars.
Jason Rumney <jasonr@gnu.org>
parents: 41726
diff changeset
3401 tme.cbSize = sizeof (tme);
0d9b74cd27cd (trackmouse_window, track_mouse_event_fn): New vars.
Jason Rumney <jasonr@gnu.org>
parents: 41726
diff changeset
3402 tme.dwFlags = TME_LEAVE;
0d9b74cd27cd (trackmouse_window, track_mouse_event_fn): New vars.
Jason Rumney <jasonr@gnu.org>
parents: 41726
diff changeset
3403 tme.hwndTrack = hwnd;
0d9b74cd27cd (trackmouse_window, track_mouse_event_fn): New vars.
Jason Rumney <jasonr@gnu.org>
parents: 41726
diff changeset
3404
0d9b74cd27cd (trackmouse_window, track_mouse_event_fn): New vars.
Jason Rumney <jasonr@gnu.org>
parents: 41726
diff changeset
3405 track_mouse_event_fn (&tme);
0d9b74cd27cd (trackmouse_window, track_mouse_event_fn): New vars.
Jason Rumney <jasonr@gnu.org>
parents: 41726
diff changeset
3406 track_mouse_window = hwnd;
0d9b74cd27cd (trackmouse_window, track_mouse_event_fn): New vars.
Jason Rumney <jasonr@gnu.org>
parents: 41726
diff changeset
3407 }
15290
da73440fdb5f (Vwin32_mouse_move_interval): New lisp variable.
Karl Heuer <kwzh@gnu.org>
parents: 15280
diff changeset
3408 case WM_VSCROLL:
55656
29b250a07fe0 (Fw32_register_hot_key, Fw32_unregister_hot_key)
Jason Rumney <jasonr@gnu.org>
parents: 55592
diff changeset
3409 if (w32_mouse_move_interval <= 0
15290
da73440fdb5f (Vwin32_mouse_move_interval): New lisp variable.
Karl Heuer <kwzh@gnu.org>
parents: 15280
diff changeset
3410 || (msg == WM_MOUSEMOVE && button_state == 0))
da73440fdb5f (Vwin32_mouse_move_interval): New lisp variable.
Karl Heuer <kwzh@gnu.org>
parents: 15280
diff changeset
3411 {
16588
481b7874a1e9 Change identifiers of the form win32* to w32*.
Geoff Voelker <voelker@cs.washington.edu>
parents: 16259
diff changeset
3412 wmsg.dwModifiers = w32_get_modifiers ();
15290
da73440fdb5f (Vwin32_mouse_move_interval): New lisp variable.
Karl Heuer <kwzh@gnu.org>
parents: 15280
diff changeset
3413 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
3414 return 0;
da73440fdb5f (Vwin32_mouse_move_interval): New lisp variable.
Karl Heuer <kwzh@gnu.org>
parents: 15280
diff changeset
3415 }
47942
080b4586492b Fix typo in comment.
Juanma Barranquero <lekktu@gmail.com>
parents: 47731
diff changeset
3416
15290
da73440fdb5f (Vwin32_mouse_move_interval): New lisp variable.
Karl Heuer <kwzh@gnu.org>
parents: 15280
diff changeset
3417 /* 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
3418 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
3419 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
3420 expires, we just replace the first message. */
da73440fdb5f (Vwin32_mouse_move_interval): New lisp variable.
Karl Heuer <kwzh@gnu.org>
parents: 15280
diff changeset
3421
da73440fdb5f (Vwin32_mouse_move_interval): New lisp variable.
Karl Heuer <kwzh@gnu.org>
parents: 15280
diff changeset
3422 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
3423 mouse_move_timer =
23803
f112aa8f8f5d (Vw32_phantom_key_code): New variable.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23801
diff changeset
3424 SetTimer (hwnd, MOUSE_MOVE_ID,
55656
29b250a07fe0 (Fw32_register_hot_key, Fw32_unregister_hot_key)
Jason Rumney <jasonr@gnu.org>
parents: 55592
diff changeset
3425 w32_mouse_move_interval, NULL);
15290
da73440fdb5f (Vwin32_mouse_move_interval): New lisp variable.
Karl Heuer <kwzh@gnu.org>
parents: 15280
diff changeset
3426
da73440fdb5f (Vwin32_mouse_move_interval): New lisp variable.
Karl Heuer <kwzh@gnu.org>
parents: 15280
diff changeset
3427 /* Hold onto message for now. */
da73440fdb5f (Vwin32_mouse_move_interval): New lisp variable.
Karl Heuer <kwzh@gnu.org>
parents: 15280
diff changeset
3428 saved_mouse_move_msg.msg.hwnd = hwnd;
da73440fdb5f (Vwin32_mouse_move_interval): New lisp variable.
Karl Heuer <kwzh@gnu.org>
parents: 15280
diff changeset
3429 saved_mouse_move_msg.msg.message = msg;
da73440fdb5f (Vwin32_mouse_move_interval): New lisp variable.
Karl Heuer <kwzh@gnu.org>
parents: 15280
diff changeset
3430 saved_mouse_move_msg.msg.wParam = wParam;
da73440fdb5f (Vwin32_mouse_move_interval): New lisp variable.
Karl Heuer <kwzh@gnu.org>
parents: 15280
diff changeset
3431 saved_mouse_move_msg.msg.lParam = lParam;
da73440fdb5f (Vwin32_mouse_move_interval): New lisp variable.
Karl Heuer <kwzh@gnu.org>
parents: 15280
diff changeset
3432 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
3433 saved_mouse_move_msg.dwModifiers = w32_get_modifiers ();
47942
080b4586492b Fix typo in comment.
Juanma Barranquero <lekktu@gmail.com>
parents: 47731
diff changeset
3434
15290
da73440fdb5f (Vwin32_mouse_move_interval): New lisp variable.
Karl Heuer <kwzh@gnu.org>
parents: 15280
diff changeset
3435 return 0;
da73440fdb5f (Vwin32_mouse_move_interval): New lisp variable.
Karl Heuer <kwzh@gnu.org>
parents: 15280
diff changeset
3436
19707
0181cc080316 Include limits.h and errno.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18508
diff changeset
3437 case WM_MOUSEWHEEL:
21884
bc4455bca454 Include shellapi.h.
Richard M. Stallman <rms@gnu.org>
parents: 21874
diff changeset
3438 case WM_DROPFILES:
bc4455bca454 Include shellapi.h.
Richard M. Stallman <rms@gnu.org>
parents: 21874
diff changeset
3439 wmsg.dwModifiers = w32_get_modifiers ();
bc4455bca454 Include shellapi.h.
Richard M. Stallman <rms@gnu.org>
parents: 21874
diff changeset
3440 my_post_msg (&wmsg, hwnd, msg, wParam, lParam);
69426
46a8c3e0161d (signal_user_input): New function.
Jason Rumney <jasonr@gnu.org>
parents: 69406
diff changeset
3441 signal_user_input ();
21884
bc4455bca454 Include shellapi.h.
Richard M. Stallman <rms@gnu.org>
parents: 21874
diff changeset
3442 return 0;
bc4455bca454 Include shellapi.h.
Richard M. Stallman <rms@gnu.org>
parents: 21874
diff changeset
3443
85979
bb1f44062552 (w32_pass_multimedia_buttons_to_system): New user option.
Jason Rumney <jasonr@gnu.org>
parents: 85614
diff changeset
3444 case WM_APPCOMMAND:
bb1f44062552 (w32_pass_multimedia_buttons_to_system): New user option.
Jason Rumney <jasonr@gnu.org>
parents: 85614
diff changeset
3445 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
3446 goto dflt;
bb1f44062552 (w32_pass_multimedia_buttons_to_system): New user option.
Jason Rumney <jasonr@gnu.org>
parents: 85614
diff changeset
3447 /* 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
3448 case WM_MOUSEHWHEEL:
f65f55d787ec Horizontal mouse wheel support:
Jason Rumney <jasonr@gnu.org>
parents: 83648
diff changeset
3449 wmsg.dwModifiers = w32_get_modifiers ();
f65f55d787ec Horizontal mouse wheel support:
Jason Rumney <jasonr@gnu.org>
parents: 83648
diff changeset
3450 my_post_msg (&wmsg, hwnd, msg, wParam, lParam);
f65f55d787ec Horizontal mouse wheel support:
Jason Rumney <jasonr@gnu.org>
parents: 83648
diff changeset
3451 signal_user_input ();
f65f55d787ec Horizontal mouse wheel support:
Jason Rumney <jasonr@gnu.org>
parents: 83648
diff changeset
3452 /* Non-zero must be returned when WM_MOUSEHWHEEL messages are
f65f55d787ec Horizontal mouse wheel support:
Jason Rumney <jasonr@gnu.org>
parents: 83648
diff changeset
3453 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
3454 scroll bar events. */
f65f55d787ec Horizontal mouse wheel support:
Jason Rumney <jasonr@gnu.org>
parents: 83648
diff changeset
3455 return 1;
f65f55d787ec Horizontal mouse wheel support:
Jason Rumney <jasonr@gnu.org>
parents: 83648
diff changeset
3456
15290
da73440fdb5f (Vwin32_mouse_move_interval): New lisp variable.
Karl Heuer <kwzh@gnu.org>
parents: 15280
diff changeset
3457 case WM_TIMER:
da73440fdb5f (Vwin32_mouse_move_interval): New lisp variable.
Karl Heuer <kwzh@gnu.org>
parents: 15280
diff changeset
3458 /* Flush out saved messages if necessary. */
da73440fdb5f (Vwin32_mouse_move_interval): New lisp variable.
Karl Heuer <kwzh@gnu.org>
parents: 15280
diff changeset
3459 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
3460 {
15290
da73440fdb5f (Vwin32_mouse_move_interval): New lisp variable.
Karl Heuer <kwzh@gnu.org>
parents: 15280
diff changeset
3461 if (saved_mouse_button_msg.msg.hwnd)
da73440fdb5f (Vwin32_mouse_move_interval): New lisp variable.
Karl Heuer <kwzh@gnu.org>
parents: 15280
diff changeset
3462 {
da73440fdb5f (Vwin32_mouse_move_interval): New lisp variable.
Karl Heuer <kwzh@gnu.org>
parents: 15280
diff changeset
3463 post_msg (&saved_mouse_button_msg);
69426
46a8c3e0161d (signal_user_input): New function.
Jason Rumney <jasonr@gnu.org>
parents: 69406
diff changeset
3464 signal_user_input ();
15290
da73440fdb5f (Vwin32_mouse_move_interval): New lisp variable.
Karl Heuer <kwzh@gnu.org>
parents: 15280
diff changeset
3465 saved_mouse_button_msg.msg.hwnd = 0;
da73440fdb5f (Vwin32_mouse_move_interval): New lisp variable.
Karl Heuer <kwzh@gnu.org>
parents: 15280
diff changeset
3466 }
da73440fdb5f (Vwin32_mouse_move_interval): New lisp variable.
Karl Heuer <kwzh@gnu.org>
parents: 15280
diff changeset
3467 KillTimer (hwnd, mouse_button_timer);
da73440fdb5f (Vwin32_mouse_move_interval): New lisp variable.
Karl Heuer <kwzh@gnu.org>
parents: 15280
diff changeset
3468 mouse_button_timer = 0;
15147
38c0ce06203f (quit_char, Vwin32_enable_italics, Vwin32_enable_palette):
Geoff Voelker <voelker@cs.washington.edu>
parents: 15034
diff changeset
3469 }
15290
da73440fdb5f (Vwin32_mouse_move_interval): New lisp variable.
Karl Heuer <kwzh@gnu.org>
parents: 15280
diff changeset
3470 else if (wParam == mouse_move_timer)
da73440fdb5f (Vwin32_mouse_move_interval): New lisp variable.
Karl Heuer <kwzh@gnu.org>
parents: 15280
diff changeset
3471 {
da73440fdb5f (Vwin32_mouse_move_interval): New lisp variable.
Karl Heuer <kwzh@gnu.org>
parents: 15280
diff changeset
3472 if (saved_mouse_move_msg.msg.hwnd)
da73440fdb5f (Vwin32_mouse_move_interval): New lisp variable.
Karl Heuer <kwzh@gnu.org>
parents: 15280
diff changeset
3473 {
da73440fdb5f (Vwin32_mouse_move_interval): New lisp variable.
Karl Heuer <kwzh@gnu.org>
parents: 15280
diff changeset
3474 post_msg (&saved_mouse_move_msg);
da73440fdb5f (Vwin32_mouse_move_interval): New lisp variable.
Karl Heuer <kwzh@gnu.org>
parents: 15280
diff changeset
3475 saved_mouse_move_msg.msg.hwnd = 0;
da73440fdb5f (Vwin32_mouse_move_interval): New lisp variable.
Karl Heuer <kwzh@gnu.org>
parents: 15280
diff changeset
3476 }
da73440fdb5f (Vwin32_mouse_move_interval): New lisp variable.
Karl Heuer <kwzh@gnu.org>
parents: 15280
diff changeset
3477 KillTimer (hwnd, mouse_move_timer);
da73440fdb5f (Vwin32_mouse_move_interval): New lisp variable.
Karl Heuer <kwzh@gnu.org>
parents: 15280
diff changeset
3478 mouse_move_timer = 0;
da73440fdb5f (Vwin32_mouse_move_interval): New lisp variable.
Karl Heuer <kwzh@gnu.org>
parents: 15280
diff changeset
3479 }
43472
7faac536665f (mouse_move_timer, mouse_button_timer): Initialize.
Jason Rumney <jasonr@gnu.org>
parents: 43398
diff changeset
3480 else if (wParam == menu_free_timer)
7faac536665f (mouse_move_timer, mouse_button_timer): Initialize.
Jason Rumney <jasonr@gnu.org>
parents: 43398
diff changeset
3481 {
7faac536665f (mouse_move_timer, mouse_button_timer): Initialize.
Jason Rumney <jasonr@gnu.org>
parents: 43398
diff changeset
3482 KillTimer (hwnd, menu_free_timer);
7faac536665f (mouse_move_timer, mouse_button_timer): Initialize.
Jason Rumney <jasonr@gnu.org>
parents: 43398
diff changeset
3483 menu_free_timer = 0;
43484
a3cecd273126 (w32_wnd_proc) <WM_TIMER>: Fix last change.
Jason Rumney <jasonr@gnu.org>
parents: 43472
diff changeset
3484 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
3485 /* 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
3486 if (menubar_in_use
76075
25965473846d (current_popup_menu): Use from w32menu.c.
Jason Rumney <jasonr@gnu.org>
parents: 75348
diff changeset
3487 && current_popup_menu == NULL)
43472
7faac536665f (mouse_move_timer, mouse_button_timer): Initialize.
Jason Rumney <jasonr@gnu.org>
parents: 43398
diff changeset
3488 {
7faac536665f (mouse_move_timer, mouse_button_timer): Initialize.
Jason Rumney <jasonr@gnu.org>
parents: 43398
diff changeset
3489 /* 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
3490 w32_free_menu_strings (hwnd);
7faac536665f (mouse_move_timer, mouse_button_timer): Initialize.
Jason Rumney <jasonr@gnu.org>
parents: 43398
diff changeset
3491 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
3492 menubar_in_use = 0;
43472
7faac536665f (mouse_move_timer, mouse_button_timer): Initialize.
Jason Rumney <jasonr@gnu.org>
parents: 43398
diff changeset
3493 }
7faac536665f (mouse_move_timer, mouse_button_timer): Initialize.
Jason Rumney <jasonr@gnu.org>
parents: 43398
diff changeset
3494 }
93075
66248fc5b523 * w32fns.c (hourglass_timer, hourglass_hwnd): New variables.
Jason Rumney <jasonr@gnu.org>
parents: 92940
diff changeset
3495 else if (wParam == hourglass_timer)
66248fc5b523 * w32fns.c (hourglass_timer, hourglass_hwnd): New variables.
Jason Rumney <jasonr@gnu.org>
parents: 92940
diff changeset
3496 {
66248fc5b523 * w32fns.c (hourglass_timer, hourglass_hwnd): New variables.
Jason Rumney <jasonr@gnu.org>
parents: 92940
diff changeset
3497 KillTimer (hwnd, hourglass_timer);
66248fc5b523 * w32fns.c (hourglass_timer, hourglass_hwnd): New variables.
Jason Rumney <jasonr@gnu.org>
parents: 92940
diff changeset
3498 hourglass_timer = 0;
96674
ff312a846b25 * w32fns.c (Fx_create_frame): Remove duplicate unwind_protect.
Jason Rumney <jasonr@gnu.org>
parents: 96664
diff changeset
3499 w32_show_hourglass (x_window_to_frame (dpyinfo, hwnd));
93075
66248fc5b523 * w32fns.c (hourglass_timer, hourglass_hwnd): New variables.
Jason Rumney <jasonr@gnu.org>
parents: 92940
diff changeset
3500 }
15147
38c0ce06203f (quit_char, Vwin32_enable_italics, Vwin32_enable_palette):
Geoff Voelker <voelker@cs.washington.edu>
parents: 15034
diff changeset
3501 return 0;
47942
080b4586492b Fix typo in comment.
Juanma Barranquero <lekktu@gmail.com>
parents: 47731
diff changeset
3502
15290
da73440fdb5f (Vwin32_mouse_move_interval): New lisp variable.
Karl Heuer <kwzh@gnu.org>
parents: 15280
diff changeset
3503 case WM_NCACTIVATE:
da73440fdb5f (Vwin32_mouse_move_interval): New lisp variable.
Karl Heuer <kwzh@gnu.org>
parents: 15280
diff changeset
3504 /* 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
3505 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
3506 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
3507 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
3508 keyboard modifiers' state. */
da73440fdb5f (Vwin32_mouse_move_interval): New lisp variable.
Karl Heuer <kwzh@gnu.org>
parents: 15280
diff changeset
3509 reset_modifiers ();
da73440fdb5f (Vwin32_mouse_move_interval): New lisp variable.
Karl Heuer <kwzh@gnu.org>
parents: 15280
diff changeset
3510 goto dflt;
da73440fdb5f (Vwin32_mouse_move_interval): New lisp variable.
Karl Heuer <kwzh@gnu.org>
parents: 15280
diff changeset
3511
19707
0181cc080316 Include limits.h and errno.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18508
diff changeset
3512 case WM_INITMENU:
24751
e0eaca5025bc (w32_wnd_proc): Ensure mouse capture is released if
Andrew Innes <andrewi@gnu.org>
parents: 24718
diff changeset
3513 button_state = 0;
e0eaca5025bc (w32_wnd_proc): Ensure mouse capture is released if
Andrew Innes <andrewi@gnu.org>
parents: 24718
diff changeset
3514 ReleaseCapture ();
19707
0181cc080316 Include limits.h and errno.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18508
diff changeset
3515 /* 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
3516 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
3517 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
3518 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
3519 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
3520
0181cc080316 Include limits.h and errno.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18508
diff changeset
3521 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
3522 loop that can process all other messages.
0181cc080316 Include limits.h and errno.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18508
diff changeset
3523
0181cc080316 Include limits.h and errno.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18508
diff changeset
3524 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
3525 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
3526 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
3527 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
3528 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
3529 being active). */
0181cc080316 Include limits.h and errno.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18508
diff changeset
3530
0181cc080316 Include limits.h and errno.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18508
diff changeset
3531 f = x_window_to_frame (dpyinfo, hwnd);
0181cc080316 Include limits.h and errno.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18508
diff changeset
3532 if (f
0181cc080316 Include limits.h and errno.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18508
diff changeset
3533 && (f->output_data.w32->menubar_active
0181cc080316 Include limits.h and errno.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18508
diff changeset
3534 /* 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
3535 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
3536 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
3537 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
3538 had requested it to be turned off! */
0181cc080316 Include limits.h and errno.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18508
diff changeset
3539 || f->output_data.w32->menubar_widget == NULL))
0181cc080316 Include limits.h and errno.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18508
diff changeset
3540 return 0;
0181cc080316 Include limits.h and errno.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18508
diff changeset
3541
0181cc080316 Include limits.h and errno.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18508
diff changeset
3542 {
0181cc080316 Include limits.h and errno.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18508
diff changeset
3543 deferred_msg msg_buf;
0181cc080316 Include limits.h and errno.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18508
diff changeset
3544
0181cc080316 Include limits.h and errno.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18508
diff changeset
3545 /* 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
3546 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
3547 if (find_deferred_msg (hwnd, msg) != NULL)
0181cc080316 Include limits.h and errno.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18508
diff changeset
3548 abort ();
0181cc080316 Include limits.h and errno.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18508
diff changeset
3549
76083
5e1d8f9b52ea * w32fns.c (menubar_in_use): New flag.
Jason Rumney <jasonr@gnu.org>
parents: 76078
diff changeset
3550 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
3551
19707
0181cc080316 Include limits.h and errno.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18508
diff changeset
3552 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
3553 }
0181cc080316 Include limits.h and errno.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18508
diff changeset
3554
0181cc080316 Include limits.h and errno.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18508
diff changeset
3555 case WM_EXITMENULOOP:
0181cc080316 Include limits.h and errno.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18508
diff changeset
3556 f = x_window_to_frame (dpyinfo, hwnd);
0181cc080316 Include limits.h and errno.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18508
diff changeset
3557
76075
25965473846d (current_popup_menu): Use from w32menu.c.
Jason Rumney <jasonr@gnu.org>
parents: 75348
diff changeset
3558 /* 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
3559 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
3560 before the corresponding WM_COMMAND message.
25965473846d (current_popup_menu): Use from w32menu.c.
Jason Rumney <jasonr@gnu.org>
parents: 75348
diff changeset
3561 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
3562 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
3563 */
76083
5e1d8f9b52ea * w32fns.c (menubar_in_use): New flag.
Jason Rumney <jasonr@gnu.org>
parents: 76078
diff changeset
3564 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
3565 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
3566
66248fc5b523 * w32fns.c (hourglass_timer, hourglass_hwnd): New variables.
Jason Rumney <jasonr@gnu.org>
parents: 92940
diff changeset
3567 /* 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
3568 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
3569 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
3570
19707
0181cc080316 Include limits.h and errno.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18508
diff changeset
3571 goto dflt;
0181cc080316 Include limits.h and errno.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18508
diff changeset
3572
28272
f62bb21d38db (w32_wnd_proc): Handle WM_MENUSELECT message.
Jason Rumney <jasonr@gnu.org>
parents: 27936
diff changeset
3573 case WM_MENUSELECT:
41638
aadcf676d5de (w32_wnd_proc) <WM_MENUSELECT>: Display help directly.
Jason Rumney <jasonr@gnu.org>
parents: 41480
diff changeset
3574 /* 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
3575 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
3576 keyboard buffer. */
41380
aff1b15f295b (x_window_to_frame): Remove irrelevant TODO comment.
Jason Rumney <jasonr@gnu.org>
parents: 41322
diff changeset
3577 {
aff1b15f295b (x_window_to_frame): Remove irrelevant TODO comment.
Jason Rumney <jasonr@gnu.org>
parents: 41322
diff changeset
3578 HMENU menu = (HMENU) lParam;
aff1b15f295b (x_window_to_frame): Remove irrelevant TODO comment.
Jason Rumney <jasonr@gnu.org>
parents: 41322
diff changeset
3579 UINT menu_item = (UINT) LOWORD (wParam);
aff1b15f295b (x_window_to_frame): Remove irrelevant TODO comment.
Jason Rumney <jasonr@gnu.org>
parents: 41322
diff changeset
3580 UINT flags = (UINT) HIWORD (wParam);
aff1b15f295b (x_window_to_frame): Remove irrelevant TODO comment.
Jason Rumney <jasonr@gnu.org>
parents: 41322
diff changeset
3581
41638
aadcf676d5de (w32_wnd_proc) <WM_MENUSELECT>: Display help directly.
Jason Rumney <jasonr@gnu.org>
parents: 41480
diff changeset
3582 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
3583 }
28272
f62bb21d38db (w32_wnd_proc): Handle WM_MENUSELECT message.
Jason Rumney <jasonr@gnu.org>
parents: 27936
diff changeset
3584 return 0;
f62bb21d38db (w32_wnd_proc): Handle WM_MENUSELECT message.
Jason Rumney <jasonr@gnu.org>
parents: 27936
diff changeset
3585
21735
711a61942023 (x_set_vertical_scroll_bars): Put scroll bars on the
Geoff Voelker <voelker@cs.washington.edu>
parents: 21608
diff changeset
3586 case WM_MEASUREITEM:
711a61942023 (x_set_vertical_scroll_bars): Put scroll bars on the
Geoff Voelker <voelker@cs.washington.edu>
parents: 21608
diff changeset
3587 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
3588 if (f)
711a61942023 (x_set_vertical_scroll_bars): Put scroll bars on the
Geoff Voelker <voelker@cs.washington.edu>
parents: 21608
diff changeset
3589 {
711a61942023 (x_set_vertical_scroll_bars): Put scroll bars on the
Geoff Voelker <voelker@cs.washington.edu>
parents: 21608
diff changeset
3590 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
3591
711a61942023 (x_set_vertical_scroll_bars): Put scroll bars on the
Geoff Voelker <voelker@cs.washington.edu>
parents: 21608
diff changeset
3592 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
3593 {
711a61942023 (x_set_vertical_scroll_bars): Put scroll bars on the
Geoff Voelker <voelker@cs.washington.edu>
parents: 21608
diff changeset
3594 /* 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
3595 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
3596 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
3597 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
3598 LOGFONT menu_logfont;
711a61942023 (x_set_vertical_scroll_bars): Put scroll bars on the
Geoff Voelker <voelker@cs.washington.edu>
parents: 21608
diff changeset
3599 HFONT old_font;
711a61942023 (x_set_vertical_scroll_bars): Put scroll bars on the
Geoff Voelker <voelker@cs.washington.edu>
parents: 21608
diff changeset
3600 SIZE size;
711a61942023 (x_set_vertical_scroll_bars): Put scroll bars on the
Geoff Voelker <voelker@cs.washington.edu>
parents: 21608
diff changeset
3601
711a61942023 (x_set_vertical_scroll_bars): Put scroll bars on the
Geoff Voelker <voelker@cs.washington.edu>
parents: 21608
diff changeset
3602 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
3603 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
3604 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
3605 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
3606
29317
2d3d5bf49d4e Format and doc changes to bring closer to xfns.c.
Jason Rumney <jasonr@gnu.org>
parents: 29021
diff changeset
3607 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
3608 if (title)
2d3d5bf49d4e Format and doc changes to bring closer to xfns.c.
Jason Rumney <jasonr@gnu.org>
parents: 29021
diff changeset
3609 {
56971
a35b92556545 (w32_wnd_proc) [WM_MEASUREITEM, WM_DRAWITEM]: Handle
Jason Rumney <jasonr@gnu.org>
parents: 56856
diff changeset
3610 if (unicode_append_menu)
a35b92556545 (w32_wnd_proc) [WM_MEASUREITEM, WM_DRAWITEM]: Handle
Jason Rumney <jasonr@gnu.org>
parents: 56856
diff changeset
3611 GetTextExtentPoint32W (hdc, (WCHAR *) title,
a35b92556545 (w32_wnd_proc) [WM_MEASUREITEM, WM_DRAWITEM]: Handle
Jason Rumney <jasonr@gnu.org>
parents: 56856
diff changeset
3612 wcslen ((WCHAR *) title),
a35b92556545 (w32_wnd_proc) [WM_MEASUREITEM, WM_DRAWITEM]: Handle
Jason Rumney <jasonr@gnu.org>
parents: 56856
diff changeset
3613 &size);
a35b92556545 (w32_wnd_proc) [WM_MEASUREITEM, WM_DRAWITEM]: Handle
Jason Rumney <jasonr@gnu.org>
parents: 56856
diff changeset
3614 else
a35b92556545 (w32_wnd_proc) [WM_MEASUREITEM, WM_DRAWITEM]: Handle
Jason Rumney <jasonr@gnu.org>
parents: 56856
diff changeset
3615 GetTextExtentPoint32 (hdc, title, strlen (title), &size);
a35b92556545 (w32_wnd_proc) [WM_MEASUREITEM, WM_DRAWITEM]: Handle
Jason Rumney <jasonr@gnu.org>
parents: 56856
diff changeset
3616
29317
2d3d5bf49d4e Format and doc changes to bring closer to xfns.c.
Jason Rumney <jasonr@gnu.org>
parents: 29021
diff changeset
3617 pMis->itemWidth = size.cx;
2d3d5bf49d4e Format and doc changes to bring closer to xfns.c.
Jason Rumney <jasonr@gnu.org>
parents: 29021
diff changeset
3618 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
3619 pMis->itemHeight = size.cy;
2d3d5bf49d4e Format and doc changes to bring closer to xfns.c.
Jason Rumney <jasonr@gnu.org>
parents: 29021
diff changeset
3620 }
2d3d5bf49d4e Format and doc changes to bring closer to xfns.c.
Jason Rumney <jasonr@gnu.org>
parents: 29021
diff changeset
3621 else
2d3d5bf49d4e Format and doc changes to bring closer to xfns.c.
Jason Rumney <jasonr@gnu.org>
parents: 29021
diff changeset
3622 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
3623
711a61942023 (x_set_vertical_scroll_bars): Put scroll bars on the
Geoff Voelker <voelker@cs.washington.edu>
parents: 21608
diff changeset
3624 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
3625 DeleteObject (menu_font);
711a61942023 (x_set_vertical_scroll_bars): Put scroll bars on the
Geoff Voelker <voelker@cs.washington.edu>
parents: 21608
diff changeset
3626 ReleaseDC (hwnd, hdc);
711a61942023 (x_set_vertical_scroll_bars): Put scroll bars on the
Geoff Voelker <voelker@cs.washington.edu>
parents: 21608
diff changeset
3627 return TRUE;
711a61942023 (x_set_vertical_scroll_bars): Put scroll bars on the
Geoff Voelker <voelker@cs.washington.edu>
parents: 21608
diff changeset
3628 }
711a61942023 (x_set_vertical_scroll_bars): Put scroll bars on the
Geoff Voelker <voelker@cs.washington.edu>
parents: 21608
diff changeset
3629 }
711a61942023 (x_set_vertical_scroll_bars): Put scroll bars on the
Geoff Voelker <voelker@cs.washington.edu>
parents: 21608
diff changeset
3630 return 0;
711a61942023 (x_set_vertical_scroll_bars): Put scroll bars on the
Geoff Voelker <voelker@cs.washington.edu>
parents: 21608
diff changeset
3631
711a61942023 (x_set_vertical_scroll_bars): Put scroll bars on the
Geoff Voelker <voelker@cs.washington.edu>
parents: 21608
diff changeset
3632 case WM_DRAWITEM:
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 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
3637
711a61942023 (x_set_vertical_scroll_bars): Put scroll bars on the
Geoff Voelker <voelker@cs.washington.edu>
parents: 21608
diff changeset
3638 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
3639 {
711a61942023 (x_set_vertical_scroll_bars): Put scroll bars on the
Geoff Voelker <voelker@cs.washington.edu>
parents: 21608
diff changeset
3640 /* 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
3641 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
3642 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
3643 {
6a55bd8a85f8 (w32_wnd_proc) [WM_DRAW_ITEM]: Do not try to draw a null title.
Jason Rumney <jasonr@gnu.org>
parents: 29317
diff changeset
3644 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
3645 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
3646 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
3647 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
3648
6a55bd8a85f8 (w32_wnd_proc) [WM_DRAW_ITEM]: Do not try to draw a null title.
Jason Rumney <jasonr@gnu.org>
parents: 29317
diff changeset
3649 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
3650 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
3651 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
3652 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
3653
56971
a35b92556545 (w32_wnd_proc) [WM_MEASUREITEM, WM_DRAWITEM]: Handle
Jason Rumney <jasonr@gnu.org>
parents: 56856
diff changeset
3654 /* 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
3655 if (unicode_append_menu)
a35b92556545 (w32_wnd_proc) [WM_MEASUREITEM, WM_DRAWITEM]: Handle
Jason Rumney <jasonr@gnu.org>
parents: 56856
diff changeset
3656 ExtTextOutW (hdc,
a35b92556545 (w32_wnd_proc) [WM_MEASUREITEM, WM_DRAWITEM]: Handle
Jason Rumney <jasonr@gnu.org>
parents: 56856
diff changeset
3657 pDis->rcItem.left
a35b92556545 (w32_wnd_proc) [WM_MEASUREITEM, WM_DRAWITEM]: Handle
Jason Rumney <jasonr@gnu.org>
parents: 56856
diff changeset
3658 + GetSystemMetrics (SM_CXMENUCHECK),
a35b92556545 (w32_wnd_proc) [WM_MEASUREITEM, WM_DRAWITEM]: Handle
Jason Rumney <jasonr@gnu.org>
parents: 56856
diff changeset
3659 pDis->rcItem.top,
a35b92556545 (w32_wnd_proc) [WM_MEASUREITEM, WM_DRAWITEM]: Handle
Jason Rumney <jasonr@gnu.org>
parents: 56856
diff changeset
3660 ETO_OPAQUE, &pDis->rcItem,
a35b92556545 (w32_wnd_proc) [WM_MEASUREITEM, WM_DRAWITEM]: Handle
Jason Rumney <jasonr@gnu.org>
parents: 56856
diff changeset
3661 (WCHAR *) title,
a35b92556545 (w32_wnd_proc) [WM_MEASUREITEM, WM_DRAWITEM]: Handle
Jason Rumney <jasonr@gnu.org>
parents: 56856
diff changeset
3662 wcslen ((WCHAR *) title), NULL);
a35b92556545 (w32_wnd_proc) [WM_MEASUREITEM, WM_DRAWITEM]: Handle
Jason Rumney <jasonr@gnu.org>
parents: 56856
diff changeset
3663 else
a35b92556545 (w32_wnd_proc) [WM_MEASUREITEM, WM_DRAWITEM]: Handle
Jason Rumney <jasonr@gnu.org>
parents: 56856
diff changeset
3664 ExtTextOut (hdc,
a35b92556545 (w32_wnd_proc) [WM_MEASUREITEM, WM_DRAWITEM]: Handle
Jason Rumney <jasonr@gnu.org>
parents: 56856
diff changeset
3665 pDis->rcItem.left
a35b92556545 (w32_wnd_proc) [WM_MEASUREITEM, WM_DRAWITEM]: Handle
Jason Rumney <jasonr@gnu.org>
parents: 56856
diff changeset
3666 + GetSystemMetrics (SM_CXMENUCHECK),
a35b92556545 (w32_wnd_proc) [WM_MEASUREITEM, WM_DRAWITEM]: Handle
Jason Rumney <jasonr@gnu.org>
parents: 56856
diff changeset
3667 pDis->rcItem.top,
a35b92556545 (w32_wnd_proc) [WM_MEASUREITEM, WM_DRAWITEM]: Handle
Jason Rumney <jasonr@gnu.org>
parents: 56856
diff changeset
3668 ETO_OPAQUE, &pDis->rcItem,
a35b92556545 (w32_wnd_proc) [WM_MEASUREITEM, WM_DRAWITEM]: Handle
Jason Rumney <jasonr@gnu.org>
parents: 56856
diff changeset
3669 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
3670
6a55bd8a85f8 (w32_wnd_proc) [WM_DRAW_ITEM]: Do not try to draw a null title.
Jason Rumney <jasonr@gnu.org>
parents: 29317
diff changeset
3671 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
3672 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
3673 }
21735
711a61942023 (x_set_vertical_scroll_bars): Put scroll bars on the
Geoff Voelker <voelker@cs.washington.edu>
parents: 21608
diff changeset
3674 return TRUE;
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 }
711a61942023 (x_set_vertical_scroll_bars): Put scroll bars on the
Geoff Voelker <voelker@cs.washington.edu>
parents: 21608
diff changeset
3677 return 0;
711a61942023 (x_set_vertical_scroll_bars): Put scroll bars on the
Geoff Voelker <voelker@cs.washington.edu>
parents: 21608
diff changeset
3678
19707
0181cc080316 Include limits.h and errno.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18508
diff changeset
3679 #if 0
0181cc080316 Include limits.h and errno.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18508
diff changeset
3680 /* 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
3681 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
3682 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
3683 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
3684 case WM_MOUSEACTIVATE:
0181cc080316 Include limits.h and errno.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18508
diff changeset
3685 /* 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
3686 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
3687 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
3688 if (LOWORD (lParam) == HTCLIENT )
0181cc080316 Include limits.h and errno.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18508
diff changeset
3689 return MA_ACTIVATEANDEAT;
0181cc080316 Include limits.h and errno.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18508
diff changeset
3690 goto dflt;
0181cc080316 Include limits.h and errno.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18508
diff changeset
3691 #endif
0181cc080316 Include limits.h and errno.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18508
diff changeset
3692
41732
0d9b74cd27cd (trackmouse_window, track_mouse_event_fn): New vars.
Jason Rumney <jasonr@gnu.org>
parents: 41726
diff changeset
3693 case WM_MOUSELEAVE:
0d9b74cd27cd (trackmouse_window, track_mouse_event_fn): New vars.
Jason Rumney <jasonr@gnu.org>
parents: 41726
diff changeset
3694 /* No longer tracking mouse. */
0d9b74cd27cd (trackmouse_window, track_mouse_event_fn): New vars.
Jason Rumney <jasonr@gnu.org>
parents: 41726
diff changeset
3695 track_mouse_window = NULL;
0d9b74cd27cd (trackmouse_window, track_mouse_event_fn): New vars.
Jason Rumney <jasonr@gnu.org>
parents: 41726
diff changeset
3696
23681
af0276da2059 (Vw32_pass_optional_keys_to_system): Variable removed.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23637
diff changeset
3697 case WM_ACTIVATEAPP:
19707
0181cc080316 Include limits.h and errno.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18508
diff changeset
3698 case WM_ACTIVATE:
0181cc080316 Include limits.h and errno.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18508
diff changeset
3699 case WM_WINDOWPOSCHANGED:
0181cc080316 Include limits.h and errno.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18508
diff changeset
3700 case WM_SHOWWINDOW:
0181cc080316 Include limits.h and errno.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18508
diff changeset
3701 /* 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
3702 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
3703 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
3704 goto dflt;
0181cc080316 Include limits.h and errno.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18508
diff changeset
3705
14810
4dd6867765b9 (Vwin32_pass_alt_to_system,
Geoff Voelker <voelker@cs.washington.edu>
parents: 14461
diff changeset
3706 case WM_SETFOCUS:
23803
f112aa8f8f5d (Vw32_phantom_key_code): New variable.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23801
diff changeset
3707 dpyinfo->faked_key = 0;
f112aa8f8f5d (Vw32_phantom_key_code): New variable.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23801
diff changeset
3708 reset_modifiers ();
23681
af0276da2059 (Vw32_pass_optional_keys_to_system): Variable removed.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23637
diff changeset
3709 register_hot_keys (hwnd);
af0276da2059 (Vw32_pass_optional_keys_to_system): Variable removed.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23637
diff changeset
3710 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
3711 case WM_KILLFOCUS:
23681
af0276da2059 (Vw32_pass_optional_keys_to_system): Variable removed.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23637
diff changeset
3712 unregister_hot_keys (hwnd);
24751
e0eaca5025bc (w32_wnd_proc): Ensure mouse capture is released if
Andrew Innes <andrewi@gnu.org>
parents: 24718
diff changeset
3713 button_state = 0;
e0eaca5025bc (w32_wnd_proc): Ensure mouse capture is released if
Andrew Innes <andrewi@gnu.org>
parents: 24718
diff changeset
3714 ReleaseCapture ();
40385
b3dbd98f9b97 (w32_wnd_proc) <WM_KILLFOCUS>: Destroy the system caret.
Jason Rumney <jasonr@gnu.org>
parents: 40120
diff changeset
3715 /* Relinquish the system caret. */
b3dbd98f9b97 (w32_wnd_proc) <WM_KILLFOCUS>: Destroy the system caret.
Jason Rumney <jasonr@gnu.org>
parents: 40120
diff changeset
3716 if (w32_system_caret_hwnd)
b3dbd98f9b97 (w32_wnd_proc) <WM_KILLFOCUS>: Destroy the system caret.
Jason Rumney <jasonr@gnu.org>
parents: 40120
diff changeset
3717 {
42918
9b06036a8c5e (syms_of_w32fns): Initialize w32_visible_system_caret_hwnd.
Jason Rumney <jasonr@gnu.org>
parents: 42865
diff changeset
3718 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
3719 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
3720 DestroyCaret ();
40385
b3dbd98f9b97 (w32_wnd_proc) <WM_KILLFOCUS>: Destroy the system caret.
Jason Rumney <jasonr@gnu.org>
parents: 40120
diff changeset
3721 }
43472
7faac536665f (mouse_move_timer, mouse_button_timer): Initialize.
Jason Rumney <jasonr@gnu.org>
parents: 43398
diff changeset
3722 goto command;
7faac536665f (mouse_move_timer, mouse_button_timer): Initialize.
Jason Rumney <jasonr@gnu.org>
parents: 43398
diff changeset
3723 case WM_COMMAND:
76083
5e1d8f9b52ea * w32fns.c (menubar_in_use): New flag.
Jason Rumney <jasonr@gnu.org>
parents: 76078
diff changeset
3724 menubar_in_use = 0;
43472
7faac536665f (mouse_move_timer, mouse_button_timer): Initialize.
Jason Rumney <jasonr@gnu.org>
parents: 43398
diff changeset
3725 f = x_window_to_frame (dpyinfo, hwnd);
7faac536665f (mouse_move_timer, mouse_button_timer): Initialize.
Jason Rumney <jasonr@gnu.org>
parents: 43398
diff changeset
3726 if (f && HIWORD (wParam) == 0)
7faac536665f (mouse_move_timer, mouse_button_timer): Initialize.
Jason Rumney <jasonr@gnu.org>
parents: 43398
diff changeset
3727 {
7faac536665f (mouse_move_timer, mouse_button_timer): Initialize.
Jason Rumney <jasonr@gnu.org>
parents: 43398
diff changeset
3728 if (menu_free_timer)
7faac536665f (mouse_move_timer, mouse_button_timer): Initialize.
Jason Rumney <jasonr@gnu.org>
parents: 43398
diff changeset
3729 {
7faac536665f (mouse_move_timer, mouse_button_timer): Initialize.
Jason Rumney <jasonr@gnu.org>
parents: 43398
diff changeset
3730 KillTimer (hwnd, menu_free_timer);
47942
080b4586492b Fix typo in comment.
Juanma Barranquero <lekktu@gmail.com>
parents: 47731
diff changeset
3731 menu_free_timer = 0;
43472
7faac536665f (mouse_move_timer, mouse_button_timer): Initialize.
Jason Rumney <jasonr@gnu.org>
parents: 43398
diff changeset
3732 }
7faac536665f (mouse_move_timer, mouse_button_timer): Initialize.
Jason Rumney <jasonr@gnu.org>
parents: 43398
diff changeset
3733 }
13434
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
3734 case WM_MOVE:
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
3735 case WM_SIZE:
23681
af0276da2059 (Vw32_pass_optional_keys_to_system): Variable removed.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23637
diff changeset
3736 command:
16588
481b7874a1e9 Change identifiers of the form win32* to w32*.
Geoff Voelker <voelker@cs.washington.edu>
parents: 16259
diff changeset
3737 wmsg.dwModifiers = w32_get_modifiers ();
13434
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
3738 my_post_msg (&wmsg, hwnd, msg, wParam, lParam);
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
3739 goto dflt;
15034
fb947ec168a8 (defined_color): Map color to nearest in default palette.
Richard M. Stallman <rms@gnu.org>
parents: 14983
diff changeset
3740
78106
f9eb7f243bdc (w32_msg_pump) <WM_EMACS_CREATEWINDOW>: Initialize COM.
Jason Rumney <jasonr@gnu.org>
parents: 77995
diff changeset
3741 case WM_DESTROY:
f9eb7f243bdc (w32_msg_pump) <WM_EMACS_CREATEWINDOW>: Initialize COM.
Jason Rumney <jasonr@gnu.org>
parents: 77995
diff changeset
3742 CoUninitialize ();
f9eb7f243bdc (w32_msg_pump) <WM_EMACS_CREATEWINDOW>: Initialize COM.
Jason Rumney <jasonr@gnu.org>
parents: 77995
diff changeset
3743 return 0;
f9eb7f243bdc (w32_msg_pump) <WM_EMACS_CREATEWINDOW>: Initialize COM.
Jason Rumney <jasonr@gnu.org>
parents: 77995
diff changeset
3744
15034
fb947ec168a8 (defined_color): Map color to nearest in default palette.
Richard M. Stallman <rms@gnu.org>
parents: 14983
diff changeset
3745 case WM_CLOSE:
16588
481b7874a1e9 Change identifiers of the form win32* to w32*.
Geoff Voelker <voelker@cs.washington.edu>
parents: 16259
diff changeset
3746 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
3747 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
3748 return 0;
fb947ec168a8 (defined_color): Map color to nearest in default palette.
Richard M. Stallman <rms@gnu.org>
parents: 14983
diff changeset
3749
13434
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
3750 case WM_WINDOWPOSCHANGING:
41448
96beda35d0fa (w32_wnd_proc) <WM_MENUSELECT>: Revert last change.
Jason Rumney <jasonr@gnu.org>
parents: 41380
diff changeset
3751 /* 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
3752 if (hwnd == tip_window)
96beda35d0fa (w32_wnd_proc) <WM_MENUSELECT>: Revert last change.
Jason Rumney <jasonr@gnu.org>
parents: 41380
diff changeset
3753 return 0;
13434
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
3754 {
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
3755 WINDOWPLACEMENT wp;
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
3756 LPWINDOWPOS lppos = (WINDOWPOS *) lParam;
19707
0181cc080316 Include limits.h and errno.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18508
diff changeset
3757
0181cc080316 Include limits.h and errno.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18508
diff changeset
3758 wp.length = sizeof (WINDOWPLACEMENT);
13434
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
3759 GetWindowPlacement (hwnd, &wp);
47942
080b4586492b Fix typo in comment.
Juanma Barranquero <lekktu@gmail.com>
parents: 47731
diff changeset
3760
19707
0181cc080316 Include limits.h and errno.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18508
diff changeset
3761 if (wp.showCmd != SW_SHOWMINIMIZED && (lppos->flags & SWP_NOSIZE) == 0)
13434
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
3762 {
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
3763 RECT rect;
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
3764 int wdiff;
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
3765 int hdiff;
19707
0181cc080316 Include limits.h and errno.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18508
diff changeset
3766 DWORD font_width;
0181cc080316 Include limits.h and errno.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18508
diff changeset
3767 DWORD line_height;
0181cc080316 Include limits.h and errno.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18508
diff changeset
3768 DWORD internal_border;
0181cc080316 Include limits.h and errno.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18508
diff changeset
3769 DWORD scrollbar_extra;
13434
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
3770 RECT wr;
47942
080b4586492b Fix typo in comment.
Juanma Barranquero <lekktu@gmail.com>
parents: 47731
diff changeset
3771
79387
0ca197abc593 (Fw32_registered_hot_keys): Don't return the nil values corresponding
Juanma Barranquero <lekktu@gmail.com>
parents: 79381
diff changeset
3772 wp.length = sizeof (wp);
13434
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
3773 GetWindowRect (hwnd, &wr);
47942
080b4586492b Fix typo in comment.
Juanma Barranquero <lekktu@gmail.com>
parents: 47731
diff changeset
3774
14353
d0d8d9d73f7f backout 1.3
Geoff Voelker <voelker@cs.washington.edu>
parents: 14243
diff changeset
3775 enter_crit ();
47942
080b4586492b Fix typo in comment.
Juanma Barranquero <lekktu@gmail.com>
parents: 47731
diff changeset
3776
19707
0181cc080316 Include limits.h and errno.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18508
diff changeset
3777 font_width = GetWindowLong (hwnd, WND_FONTWIDTH_INDEX);
0181cc080316 Include limits.h and errno.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18508
diff changeset
3778 line_height = GetWindowLong (hwnd, WND_LINEHEIGHT_INDEX);
0181cc080316 Include limits.h and errno.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18508
diff changeset
3779 internal_border = GetWindowLong (hwnd, WND_BORDER_INDEX);
0181cc080316 Include limits.h and errno.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18508
diff changeset
3780 scrollbar_extra = GetWindowLong (hwnd, WND_SCROLLBAR_INDEX);
47942
080b4586492b Fix typo in comment.
Juanma Barranquero <lekktu@gmail.com>
parents: 47731
diff changeset
3781
14353
d0d8d9d73f7f backout 1.3
Geoff Voelker <voelker@cs.washington.edu>
parents: 14243
diff changeset
3782 leave_crit ();
47942
080b4586492b Fix typo in comment.
Juanma Barranquero <lekktu@gmail.com>
parents: 47731
diff changeset
3783
13434
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
3784 memset (&rect, 0, sizeof (rect));
47942
080b4586492b Fix typo in comment.
Juanma Barranquero <lekktu@gmail.com>
parents: 47731
diff changeset
3785 AdjustWindowRect (&rect, GetWindowLong (hwnd, GWL_STYLE),
13434
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
3786 GetMenu (hwnd) != NULL);
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
3787
19707
0181cc080316 Include limits.h and errno.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18508
diff changeset
3788 /* 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
3789 multiples of the character cell dimensions. */
0181cc080316 Include limits.h and errno.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18508
diff changeset
3790 wdiff = (lppos->cx - (rect.right - rect.left)
0181cc080316 Include limits.h and errno.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18508
diff changeset
3791 - 2 * internal_border - scrollbar_extra)
0181cc080316 Include limits.h and errno.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18508
diff changeset
3792 % font_width;
0181cc080316 Include limits.h and errno.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18508
diff changeset
3793 hdiff = (lppos->cy - (rect.bottom - rect.top)
0181cc080316 Include limits.h and errno.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18508
diff changeset
3794 - 2 * internal_border)
0181cc080316 Include limits.h and errno.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18508
diff changeset
3795 % line_height;
47942
080b4586492b Fix typo in comment.
Juanma Barranquero <lekktu@gmail.com>
parents: 47731
diff changeset
3796
13434
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
3797 if (wdiff || hdiff)
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
3798 {
47942
080b4586492b Fix typo in comment.
Juanma Barranquero <lekktu@gmail.com>
parents: 47731
diff changeset
3799 /* For right/bottom sizing we can just fix the sizes.
080b4586492b Fix typo in comment.
Juanma Barranquero <lekktu@gmail.com>
parents: 47731
diff changeset
3800 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
3801 and Y positions as well. */
47942
080b4586492b Fix typo in comment.
Juanma Barranquero <lekktu@gmail.com>
parents: 47731
diff changeset
3802
74618
69b307896f8b (w32_wnd_proc): Force non-tooltip frames to respect the minimum tracking size.
Juanma Barranquero <lekktu@gmail.com>
parents: 74350
diff changeset
3803 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
3804 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
3805
69b307896f8b (w32_wnd_proc): Force non-tooltip frames to respect the minimum tracking size.
Juanma Barranquero <lekktu@gmail.com>
parents: 74350
diff changeset
3806 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
3807 lppos->cy = max (lppos->cy - hdiff, cy_mintrack);
47942
080b4586492b Fix typo in comment.
Juanma Barranquero <lekktu@gmail.com>
parents: 47731
diff changeset
3808
080b4586492b Fix typo in comment.
Juanma Barranquero <lekktu@gmail.com>
parents: 47731
diff changeset
3809 if (wp.showCmd != SW_SHOWMAXIMIZED
19707
0181cc080316 Include limits.h and errno.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18508
diff changeset
3810 && (lppos->flags & SWP_NOMOVE) == 0)
13434
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
3811 {
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
3812 if (lppos->x != wr.left || lppos->y != wr.top)
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
3813 {
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
3814 lppos->x += wdiff;
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
3815 lppos->y += hdiff;
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
3816 }
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
3817 else
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
3818 {
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
3819 lppos->flags |= SWP_NOMOVE;
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
3820 }
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
3821 }
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 return 0;
13434
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
3824 }
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
3825 }
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
3826 }
47942
080b4586492b Fix typo in comment.
Juanma Barranquero <lekktu@gmail.com>
parents: 47731
diff changeset
3827
13434
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
3828 goto dflt;
19707
0181cc080316 Include limits.h and errno.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18508
diff changeset
3829
24479
3b2c3636bf0e (w32_wnd_proc): Handle WM_GETMINMAXINFO message.
Geoff Voelker <voelker@cs.washington.edu>
parents: 24412
diff changeset
3830 case WM_GETMINMAXINFO:
36080
743534626f73 (w32_wnd_proc) <WM_GETMINMAXINFO>: Allow resizing the
Andrew Innes <andrewi@gnu.org>
parents: 36000
diff changeset
3831 /* 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
3832 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
3833 ((LPMINMAXINFO) lParam)->ptMaxTrackSize.x = 32767;
743534626f73 (w32_wnd_proc) <WM_GETMINMAXINFO>: Allow resizing the
Andrew Innes <andrewi@gnu.org>
parents: 36000
diff changeset
3834 ((LPMINMAXINFO) lParam)->ptMaxTrackSize.y = 32767;
24479
3b2c3636bf0e (w32_wnd_proc): Handle WM_GETMINMAXINFO message.
Geoff Voelker <voelker@cs.washington.edu>
parents: 24412
diff changeset
3835 return 0;
3b2c3636bf0e (w32_wnd_proc): Handle WM_GETMINMAXINFO message.
Geoff Voelker <voelker@cs.washington.edu>
parents: 24412
diff changeset
3836
49369
5518e109ec3b 2003-01-21 Jason Rumney <jasonr@gnu.org>
Jason Rumney <jasonr@gnu.org>
parents: 49079
diff changeset
3837 case WM_SETCURSOR:
5518e109ec3b 2003-01-21 Jason Rumney <jasonr@gnu.org>
Jason Rumney <jasonr@gnu.org>
parents: 49079
diff changeset
3838 if (LOWORD (lParam) == HTCLIENT)
93075
66248fc5b523 * w32fns.c (hourglass_timer, hourglass_hwnd): New variables.
Jason Rumney <jasonr@gnu.org>
parents: 92940
diff changeset
3839 {
66248fc5b523 * w32fns.c (hourglass_timer, hourglass_hwnd): New variables.
Jason Rumney <jasonr@gnu.org>
parents: 92940
diff changeset
3840 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
3841 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
3842 && !current_popup_menu)
66248fc5b523 * w32fns.c (hourglass_timer, hourglass_hwnd): New variables.
Jason Rumney <jasonr@gnu.org>
parents: 92940
diff changeset
3843 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
3844 else
66248fc5b523 * w32fns.c (hourglass_timer, hourglass_hwnd): New variables.
Jason Rumney <jasonr@gnu.org>
parents: 92940
diff changeset
3845 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
3846 return 0;
66248fc5b523 * w32fns.c (hourglass_timer, hourglass_hwnd): New variables.
Jason Rumney <jasonr@gnu.org>
parents: 92940
diff changeset
3847 }
49369
5518e109ec3b 2003-01-21 Jason Rumney <jasonr@gnu.org>
Jason Rumney <jasonr@gnu.org>
parents: 49079
diff changeset
3848 goto dflt;
49494
07f0ea120d7d (init_external_image_libraries): Try alternate names for the jpeg dll.
Juanma Barranquero <lekktu@gmail.com>
parents: 49455
diff changeset
3849
49369
5518e109ec3b 2003-01-21 Jason Rumney <jasonr@gnu.org>
Jason Rumney <jasonr@gnu.org>
parents: 49079
diff changeset
3850 case WM_EMACS_SETCURSOR:
5518e109ec3b 2003-01-21 Jason Rumney <jasonr@gnu.org>
Jason Rumney <jasonr@gnu.org>
parents: 49079
diff changeset
3851 {
5518e109ec3b 2003-01-21 Jason Rumney <jasonr@gnu.org>
Jason Rumney <jasonr@gnu.org>
parents: 49079
diff changeset
3852 Cursor cursor = (Cursor) wParam;
93075
66248fc5b523 * w32fns.c (hourglass_timer, hourglass_hwnd): New variables.
Jason Rumney <jasonr@gnu.org>
parents: 92940
diff changeset
3853 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
3854 if (f && cursor)
66248fc5b523 * w32fns.c (hourglass_timer, hourglass_hwnd): New variables.
Jason Rumney <jasonr@gnu.org>
parents: 92940
diff changeset
3855 {
66248fc5b523 * w32fns.c (hourglass_timer, hourglass_hwnd): New variables.
Jason Rumney <jasonr@gnu.org>
parents: 92940
diff changeset
3856 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
3857 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
3858 SetCursor (cursor);
66248fc5b523 * w32fns.c (hourglass_timer, hourglass_hwnd): New variables.
Jason Rumney <jasonr@gnu.org>
parents: 92940
diff changeset
3859 }
49369
5518e109ec3b 2003-01-21 Jason Rumney <jasonr@gnu.org>
Jason Rumney <jasonr@gnu.org>
parents: 49079
diff changeset
3860 return 0;
5518e109ec3b 2003-01-21 Jason Rumney <jasonr@gnu.org>
Jason Rumney <jasonr@gnu.org>
parents: 49079
diff changeset
3861 }
49494
07f0ea120d7d (init_external_image_libraries): Try alternate names for the jpeg dll.
Juanma Barranquero <lekktu@gmail.com>
parents: 49455
diff changeset
3862
19707
0181cc080316 Include limits.h and errno.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18508
diff changeset
3863 case WM_EMACS_CREATESCROLLBAR:
0181cc080316 Include limits.h and errno.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18508
diff changeset
3864 return (LRESULT) w32_createscrollbar ((struct frame *) wParam,
0181cc080316 Include limits.h and errno.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18508
diff changeset
3865 (struct scroll_bar *) lParam);
0181cc080316 Include limits.h and errno.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18508
diff changeset
3866
15147
38c0ce06203f (quit_char, Vwin32_enable_italics, Vwin32_enable_palette):
Geoff Voelker <voelker@cs.washington.edu>
parents: 15034
diff changeset
3867 case WM_EMACS_SHOWWINDOW:
19707
0181cc080316 Include limits.h and errno.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18508
diff changeset
3868 return ShowWindow ((HWND) wParam, (WPARAM) lParam);
0181cc080316 Include limits.h and errno.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18508
diff changeset
3869
21608
d191a8737145 (w32_msg_pump): Handle WM_EMACS_SETLOCALE.
Geoff Voelker <voelker@cs.washington.edu>
parents: 19707
diff changeset
3870 case WM_EMACS_SETFOREGROUND:
24718
547f54dfbb94 (x_to_w32_charset): Reinstall VIETNAMESE_CHARSET
Andrew Innes <andrewi@gnu.org>
parents: 24695
diff changeset
3871 {
547f54dfbb94 (x_to_w32_charset): Reinstall VIETNAMESE_CHARSET
Andrew Innes <andrewi@gnu.org>
parents: 24695
diff changeset
3872 HWND foreground_window;
547f54dfbb94 (x_to_w32_charset): Reinstall VIETNAMESE_CHARSET
Andrew Innes <andrewi@gnu.org>
parents: 24695
diff changeset
3873 DWORD foreground_thread, retval;
547f54dfbb94 (x_to_w32_charset): Reinstall VIETNAMESE_CHARSET
Andrew Innes <andrewi@gnu.org>
parents: 24695
diff changeset
3874
547f54dfbb94 (x_to_w32_charset): Reinstall VIETNAMESE_CHARSET
Andrew Innes <andrewi@gnu.org>
parents: 24695
diff changeset
3875 /* 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
3876 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
3877 pull the focus away from it. */
547f54dfbb94 (x_to_w32_charset): Reinstall VIETNAMESE_CHARSET
Andrew Innes <andrewi@gnu.org>
parents: 24695
diff changeset
3878 foreground_window = GetForegroundWindow ();
547f54dfbb94 (x_to_w32_charset): Reinstall VIETNAMESE_CHARSET
Andrew Innes <andrewi@gnu.org>
parents: 24695
diff changeset
3879 foreground_thread = GetWindowThreadProcessId (foreground_window, NULL);
547f54dfbb94 (x_to_w32_charset): Reinstall VIETNAMESE_CHARSET
Andrew Innes <andrewi@gnu.org>
parents: 24695
diff changeset
3880 if (!foreground_window
547f54dfbb94 (x_to_w32_charset): Reinstall VIETNAMESE_CHARSET
Andrew Innes <andrewi@gnu.org>
parents: 24695
diff changeset
3881 || foreground_thread == GetCurrentThreadId ()
547f54dfbb94 (x_to_w32_charset): Reinstall VIETNAMESE_CHARSET
Andrew Innes <andrewi@gnu.org>
parents: 24695
diff changeset
3882 || !AttachThreadInput (GetCurrentThreadId (),
547f54dfbb94 (x_to_w32_charset): Reinstall VIETNAMESE_CHARSET
Andrew Innes <andrewi@gnu.org>
parents: 24695
diff changeset
3883 foreground_thread, TRUE))
547f54dfbb94 (x_to_w32_charset): Reinstall VIETNAMESE_CHARSET
Andrew Innes <andrewi@gnu.org>
parents: 24695
diff changeset
3884 foreground_thread = 0;
547f54dfbb94 (x_to_w32_charset): Reinstall VIETNAMESE_CHARSET
Andrew Innes <andrewi@gnu.org>
parents: 24695
diff changeset
3885
547f54dfbb94 (x_to_w32_charset): Reinstall VIETNAMESE_CHARSET
Andrew Innes <andrewi@gnu.org>
parents: 24695
diff changeset
3886 retval = SetForegroundWindow ((HWND) wParam);
547f54dfbb94 (x_to_w32_charset): Reinstall VIETNAMESE_CHARSET
Andrew Innes <andrewi@gnu.org>
parents: 24695
diff changeset
3887
547f54dfbb94 (x_to_w32_charset): Reinstall VIETNAMESE_CHARSET
Andrew Innes <andrewi@gnu.org>
parents: 24695
diff changeset
3888 /* Detach from the previous foreground thread. */
547f54dfbb94 (x_to_w32_charset): Reinstall VIETNAMESE_CHARSET
Andrew Innes <andrewi@gnu.org>
parents: 24695
diff changeset
3889 if (foreground_thread)
547f54dfbb94 (x_to_w32_charset): Reinstall VIETNAMESE_CHARSET
Andrew Innes <andrewi@gnu.org>
parents: 24695
diff changeset
3890 AttachThreadInput (GetCurrentThreadId (),
547f54dfbb94 (x_to_w32_charset): Reinstall VIETNAMESE_CHARSET
Andrew Innes <andrewi@gnu.org>
parents: 24695
diff changeset
3891 foreground_thread, FALSE);
547f54dfbb94 (x_to_w32_charset): Reinstall VIETNAMESE_CHARSET
Andrew Innes <andrewi@gnu.org>
parents: 24695
diff changeset
3892
547f54dfbb94 (x_to_w32_charset): Reinstall VIETNAMESE_CHARSET
Andrew Innes <andrewi@gnu.org>
parents: 24695
diff changeset
3893 return retval;
547f54dfbb94 (x_to_w32_charset): Reinstall VIETNAMESE_CHARSET
Andrew Innes <andrewi@gnu.org>
parents: 24695
diff changeset
3894 }
21608
d191a8737145 (w32_msg_pump): Handle WM_EMACS_SETLOCALE.
Geoff Voelker <voelker@cs.washington.edu>
parents: 19707
diff changeset
3895
15147
38c0ce06203f (quit_char, Vwin32_enable_italics, Vwin32_enable_palette):
Geoff Voelker <voelker@cs.washington.edu>
parents: 15034
diff changeset
3896 case WM_EMACS_SETWINDOWPOS:
38c0ce06203f (quit_char, Vwin32_enable_italics, Vwin32_enable_palette):
Geoff Voelker <voelker@cs.washington.edu>
parents: 15034
diff changeset
3897 {
19707
0181cc080316 Include limits.h and errno.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18508
diff changeset
3898 WINDOWPOS * pos = (WINDOWPOS *) wParam;
0181cc080316 Include limits.h and errno.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18508
diff changeset
3899 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
3900 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
3901 }
19707
0181cc080316 Include limits.h and errno.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18508
diff changeset
3902
13434
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
3903 case WM_EMACS_DESTROYWINDOW:
21884
bc4455bca454 Include shellapi.h.
Richard M. Stallman <rms@gnu.org>
parents: 21874
diff changeset
3904 DragAcceptFiles ((HWND) wParam, FALSE);
19707
0181cc080316 Include limits.h and errno.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18508
diff changeset
3905 return DestroyWindow ((HWND) wParam);
0181cc080316 Include limits.h and errno.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18508
diff changeset
3906
42865
40d08b8571ec (w32_visible_system_caret_hwnd): New static variable.
Jason Rumney <jasonr@gnu.org>
parents: 42845
diff changeset
3907 case WM_EMACS_HIDE_CARET:
40d08b8571ec (w32_visible_system_caret_hwnd): New static variable.
Jason Rumney <jasonr@gnu.org>
parents: 42845
diff changeset
3908 return HideCaret (hwnd);
40d08b8571ec (w32_visible_system_caret_hwnd): New static variable.
Jason Rumney <jasonr@gnu.org>
parents: 42845
diff changeset
3909
40d08b8571ec (w32_visible_system_caret_hwnd): New static variable.
Jason Rumney <jasonr@gnu.org>
parents: 42845
diff changeset
3910 case WM_EMACS_SHOW_CARET:
40d08b8571ec (w32_visible_system_caret_hwnd): New static variable.
Jason Rumney <jasonr@gnu.org>
parents: 42845
diff changeset
3911 return ShowCaret (hwnd);
40d08b8571ec (w32_visible_system_caret_hwnd): New static variable.
Jason Rumney <jasonr@gnu.org>
parents: 42845
diff changeset
3912
40385
b3dbd98f9b97 (w32_wnd_proc) <WM_KILLFOCUS>: Destroy the system caret.
Jason Rumney <jasonr@gnu.org>
parents: 40120
diff changeset
3913 case WM_EMACS_DESTROY_CARET:
b3dbd98f9b97 (w32_wnd_proc) <WM_KILLFOCUS>: Destroy the system caret.
Jason Rumney <jasonr@gnu.org>
parents: 40120
diff changeset
3914 w32_system_caret_hwnd = NULL;
42865
40d08b8571ec (w32_visible_system_caret_hwnd): New static variable.
Jason Rumney <jasonr@gnu.org>
parents: 42845
diff changeset
3915 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
3916 return DestroyCaret ();
b3dbd98f9b97 (w32_wnd_proc) <WM_KILLFOCUS>: Destroy the system caret.
Jason Rumney <jasonr@gnu.org>
parents: 40120
diff changeset
3917
b3dbd98f9b97 (w32_wnd_proc) <WM_KILLFOCUS>: Destroy the system caret.
Jason Rumney <jasonr@gnu.org>
parents: 40120
diff changeset
3918 case WM_EMACS_TRACK_CARET:
b3dbd98f9b97 (w32_wnd_proc) <WM_KILLFOCUS>: Destroy the system caret.
Jason Rumney <jasonr@gnu.org>
parents: 40120
diff changeset
3919 /* 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
3920 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
3921 {
42865
40d08b8571ec (w32_visible_system_caret_hwnd): New static variable.
Jason Rumney <jasonr@gnu.org>
parents: 42845
diff changeset
3922 /* 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
3923 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
3924 w32_system_caret_hwnd = hwnd;
42865
40d08b8571ec (w32_visible_system_caret_hwnd): New static variable.
Jason Rumney <jasonr@gnu.org>
parents: 42845
diff changeset
3925 CreateCaret (hwnd, NULL, 0,
40385
b3dbd98f9b97 (w32_wnd_proc) <WM_KILLFOCUS>: Destroy the system caret.
Jason Rumney <jasonr@gnu.org>
parents: 40120
diff changeset
3926 w32_system_caret_height);
b3dbd98f9b97 (w32_wnd_proc) <WM_KILLFOCUS>: Destroy the system caret.
Jason Rumney <jasonr@gnu.org>
parents: 40120
diff changeset
3927 }
47942
080b4586492b Fix typo in comment.
Juanma Barranquero <lekktu@gmail.com>
parents: 47731
diff changeset
3928
42865
40d08b8571ec (w32_visible_system_caret_hwnd): New static variable.
Jason Rumney <jasonr@gnu.org>
parents: 42845
diff changeset
3929 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
3930 return 0;
40d08b8571ec (w32_visible_system_caret_hwnd): New static variable.
Jason Rumney <jasonr@gnu.org>
parents: 42845
diff changeset
3931 /* 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
3932 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
3933 && w32_visible_system_caret_hwnd != hwnd)
40d08b8571ec (w32_visible_system_caret_hwnd): New static variable.
Jason Rumney <jasonr@gnu.org>
parents: 42845
diff changeset
3934 {
40d08b8571ec (w32_visible_system_caret_hwnd): New static variable.
Jason Rumney <jasonr@gnu.org>
parents: 42845
diff changeset
3935 w32_visible_system_caret_hwnd = hwnd;
40d08b8571ec (w32_visible_system_caret_hwnd): New static variable.
Jason Rumney <jasonr@gnu.org>
parents: 42845
diff changeset
3936 return ShowCaret (hwnd);
40d08b8571ec (w32_visible_system_caret_hwnd): New static variable.
Jason Rumney <jasonr@gnu.org>
parents: 42845
diff changeset
3937 }
40d08b8571ec (w32_visible_system_caret_hwnd): New static variable.
Jason Rumney <jasonr@gnu.org>
parents: 42845
diff changeset
3938 /* 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
3939 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
3940 && w32_visible_system_caret_hwnd)
40d08b8571ec (w32_visible_system_caret_hwnd): New static variable.
Jason Rumney <jasonr@gnu.org>
parents: 42845
diff changeset
3941 {
40d08b8571ec (w32_visible_system_caret_hwnd): New static variable.
Jason Rumney <jasonr@gnu.org>
parents: 42845
diff changeset
3942 w32_visible_system_caret_hwnd = NULL;
40d08b8571ec (w32_visible_system_caret_hwnd): New static variable.
Jason Rumney <jasonr@gnu.org>
parents: 42845
diff changeset
3943 return HideCaret (hwnd);
40d08b8571ec (w32_visible_system_caret_hwnd): New static variable.
Jason Rumney <jasonr@gnu.org>
parents: 42845
diff changeset
3944 }
40d08b8571ec (w32_visible_system_caret_hwnd): New static variable.
Jason Rumney <jasonr@gnu.org>
parents: 42845
diff changeset
3945 else
40d08b8571ec (w32_visible_system_caret_hwnd): New static variable.
Jason Rumney <jasonr@gnu.org>
parents: 42845
diff changeset
3946 return 1;
40385
b3dbd98f9b97 (w32_wnd_proc) <WM_KILLFOCUS>: Destroy the system caret.
Jason Rumney <jasonr@gnu.org>
parents: 40120
diff changeset
3947
19707
0181cc080316 Include limits.h and errno.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18508
diff changeset
3948 case WM_EMACS_TRACKPOPUPMENU:
0181cc080316 Include limits.h and errno.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18508
diff changeset
3949 {
0181cc080316 Include limits.h and errno.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18508
diff changeset
3950 UINT flags;
0181cc080316 Include limits.h and errno.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18508
diff changeset
3951 POINT *pos;
0181cc080316 Include limits.h and errno.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18508
diff changeset
3952 int retval;
0181cc080316 Include limits.h and errno.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18508
diff changeset
3953 pos = (POINT *)lParam;
0181cc080316 Include limits.h and errno.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18508
diff changeset
3954 flags = TPM_CENTERALIGN;
0181cc080316 Include limits.h and errno.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18508
diff changeset
3955 if (button_state & LMOUSE)
0181cc080316 Include limits.h and errno.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18508
diff changeset
3956 flags |= TPM_LEFTBUTTON;
0181cc080316 Include limits.h and errno.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18508
diff changeset
3957 else if (button_state & RMOUSE)
0181cc080316 Include limits.h and errno.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18508
diff changeset
3958 flags |= TPM_RIGHTBUTTON;
47942
080b4586492b Fix typo in comment.
Juanma Barranquero <lekktu@gmail.com>
parents: 47731
diff changeset
3959
21735
711a61942023 (x_set_vertical_scroll_bars): Put scroll bars on the
Geoff Voelker <voelker@cs.washington.edu>
parents: 21608
diff changeset
3960 /* 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
3961 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
3962 ReleaseCapture ();
23160
95a213639589 (w32_wnd_proc): Always zero button_state when releasing
Geoff Voelker <voelker@cs.washington.edu>
parents: 22625
diff changeset
3963 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
3964
19707
0181cc080316 Include limits.h and errno.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18508
diff changeset
3965 /* 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
3966 TrackPopupMenu below, and should be ignored. */
0181cc080316 Include limits.h and errno.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18508
diff changeset
3967 f = x_window_to_frame (dpyinfo, hwnd);
0181cc080316 Include limits.h and errno.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18508
diff changeset
3968 if (f)
0181cc080316 Include limits.h and errno.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18508
diff changeset
3969 f->output_data.w32->menubar_active = 1;
47942
080b4586492b Fix typo in comment.
Juanma Barranquero <lekktu@gmail.com>
parents: 47731
diff changeset
3970
080b4586492b Fix typo in comment.
Juanma Barranquero <lekktu@gmail.com>
parents: 47731
diff changeset
3971 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
3972 0, hwnd, NULL))
0181cc080316 Include limits.h and errno.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18508
diff changeset
3973 {
0181cc080316 Include limits.h and errno.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18508
diff changeset
3974 MSG amsg;
0181cc080316 Include limits.h and errno.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18508
diff changeset
3975 /* Eat any mouse messages during popupmenu */
0181cc080316 Include limits.h and errno.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18508
diff changeset
3976 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
3977 PM_REMOVE));
0181cc080316 Include limits.h and errno.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18508
diff changeset
3978 /* Get the menu selection, if any */
0181cc080316 Include limits.h and errno.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18508
diff changeset
3979 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
3980 {
0181cc080316 Include limits.h and errno.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18508
diff changeset
3981 retval = LOWORD (amsg.wParam);
0181cc080316 Include limits.h and errno.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18508
diff changeset
3982 }
0181cc080316 Include limits.h and errno.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18508
diff changeset
3983 else
0181cc080316 Include limits.h and errno.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18508
diff changeset
3984 {
0181cc080316 Include limits.h and errno.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18508
diff changeset
3985 retval = 0;
0181cc080316 Include limits.h and errno.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18508
diff changeset
3986 }
0181cc080316 Include limits.h and errno.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18508
diff changeset
3987 }
0181cc080316 Include limits.h and errno.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18508
diff changeset
3988 else
0181cc080316 Include limits.h and errno.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18508
diff changeset
3989 {
0181cc080316 Include limits.h and errno.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18508
diff changeset
3990 retval = -1;
0181cc080316 Include limits.h and errno.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18508
diff changeset
3991 }
0181cc080316 Include limits.h and errno.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18508
diff changeset
3992
0181cc080316 Include limits.h and errno.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18508
diff changeset
3993 return retval;
0181cc080316 Include limits.h and errno.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18508
diff changeset
3994 }
0181cc080316 Include limits.h and errno.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18508
diff changeset
3995
13434
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
3996 default:
21874
c0871d40073e (msh_mousewheel): New variable.
Geoff Voelker <voelker@cs.washington.edu>
parents: 21735
diff changeset
3997 /* Check for messages registered at runtime. */
c0871d40073e (msh_mousewheel): New variable.
Geoff Voelker <voelker@cs.washington.edu>
parents: 21735
diff changeset
3998 if (msg == msh_mousewheel)
c0871d40073e (msh_mousewheel): New variable.
Geoff Voelker <voelker@cs.washington.edu>
parents: 21735
diff changeset
3999 {
c0871d40073e (msh_mousewheel): New variable.
Geoff Voelker <voelker@cs.washington.edu>
parents: 21735
diff changeset
4000 wmsg.dwModifiers = w32_get_modifiers ();
c0871d40073e (msh_mousewheel): New variable.
Geoff Voelker <voelker@cs.washington.edu>
parents: 21735
diff changeset
4001 my_post_msg (&wmsg, hwnd, msg, wParam, lParam);
69426
46a8c3e0161d (signal_user_input): New function.
Jason Rumney <jasonr@gnu.org>
parents: 69406
diff changeset
4002 signal_user_input ();
21874
c0871d40073e (msh_mousewheel): New variable.
Geoff Voelker <voelker@cs.washington.edu>
parents: 21735
diff changeset
4003 return 0;
c0871d40073e (msh_mousewheel): New variable.
Geoff Voelker <voelker@cs.washington.edu>
parents: 21735
diff changeset
4004 }
47942
080b4586492b Fix typo in comment.
Juanma Barranquero <lekktu@gmail.com>
parents: 47731
diff changeset
4005
13434
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
4006 dflt:
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
4007 return DefWindowProc (hwnd, msg, wParam, lParam);
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
4008 }
47942
080b4586492b Fix typo in comment.
Juanma Barranquero <lekktu@gmail.com>
parents: 47731
diff changeset
4009
19707
0181cc080316 Include limits.h and errno.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18508
diff changeset
4010
0181cc080316 Include limits.h and errno.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18508
diff changeset
4011 /* 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
4012 return 0;
13434
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
4013 }
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
4014
64662
605f42af1c34 (my_set_window_pos, my_show_window): Don't declare.
Juanma Barranquero <lekktu@gmail.com>
parents: 64487
diff changeset
4015 static void
13434
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
4016 my_create_window (f)
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
4017 struct frame * f;
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
4018 {
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
4019 MSG msg;
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
4020
19707
0181cc080316 Include limits.h and errno.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18508
diff changeset
4021 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
4022 abort ();
13434
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
4023 GetMessage (&msg, NULL, WM_EMACS_DONE, WM_EMACS_DONE);
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
4024 }
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
4025
41380
aff1b15f295b (x_window_to_frame): Remove irrelevant TODO comment.
Jason Rumney <jasonr@gnu.org>
parents: 41322
diff changeset
4026
aff1b15f295b (x_window_to_frame): Remove irrelevant TODO comment.
Jason Rumney <jasonr@gnu.org>
parents: 41322
diff changeset
4027 /* 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
4028 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
4029 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
4030 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
4031 static void
41380
aff1b15f295b (x_window_to_frame): Remove irrelevant TODO comment.
Jason Rumney <jasonr@gnu.org>
parents: 41322
diff changeset
4032 my_create_tip_window (f)
aff1b15f295b (x_window_to_frame): Remove irrelevant TODO comment.
Jason Rumney <jasonr@gnu.org>
parents: 41322
diff changeset
4033 struct frame *f;
aff1b15f295b (x_window_to_frame): Remove irrelevant TODO comment.
Jason Rumney <jasonr@gnu.org>
parents: 41322
diff changeset
4034 {
41448
96beda35d0fa (w32_wnd_proc) <WM_MENUSELECT>: Revert last change.
Jason Rumney <jasonr@gnu.org>
parents: 41380
diff changeset
4035 RECT rect;
96beda35d0fa (w32_wnd_proc) <WM_MENUSELECT>: Revert last change.
Jason Rumney <jasonr@gnu.org>
parents: 41380
diff changeset
4036
96beda35d0fa (w32_wnd_proc) <WM_MENUSELECT>: Revert last change.
Jason Rumney <jasonr@gnu.org>
parents: 41380
diff changeset
4037 rect.left = rect.top = 0;
51211
28ea05de2dc5 Make (many) trivial substitutions for renamed and
Kim F. Storm <storm@cua.dk>
parents: 50377
diff changeset
4038 rect.right = FRAME_PIXEL_WIDTH (f);
28ea05de2dc5 Make (many) trivial substitutions for renamed and
Kim F. Storm <storm@cua.dk>
parents: 50377
diff changeset
4039 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
4040
96beda35d0fa (w32_wnd_proc) <WM_MENUSELECT>: Revert last change.
Jason Rumney <jasonr@gnu.org>
parents: 41380
diff changeset
4041 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
4042 FRAME_EXTERNAL_MENU_BAR (f));
96beda35d0fa (w32_wnd_proc) <WM_MENUSELECT>: Revert last change.
Jason Rumney <jasonr@gnu.org>
parents: 41380
diff changeset
4043
96beda35d0fa (w32_wnd_proc) <WM_MENUSELECT>: Revert last change.
Jason Rumney <jasonr@gnu.org>
parents: 41380
diff changeset
4044 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
4045 = CreateWindow (EMACS_CLASS,
aff1b15f295b (x_window_to_frame): Remove irrelevant TODO comment.
Jason Rumney <jasonr@gnu.org>
parents: 41322
diff changeset
4046 f->namebuf,
aff1b15f295b (x_window_to_frame): Remove irrelevant TODO comment.
Jason Rumney <jasonr@gnu.org>
parents: 41322
diff changeset
4047 f->output_data.w32->dwStyle,
51211
28ea05de2dc5 Make (many) trivial substitutions for renamed and
Kim F. Storm <storm@cua.dk>
parents: 50377
diff changeset
4048 f->left_pos,
28ea05de2dc5 Make (many) trivial substitutions for renamed and
Kim F. Storm <storm@cua.dk>
parents: 50377
diff changeset
4049 f->top_pos,
41448
96beda35d0fa (w32_wnd_proc) <WM_MENUSELECT>: Revert last change.
Jason Rumney <jasonr@gnu.org>
parents: 41380
diff changeset
4050 rect.right - rect.left,
96beda35d0fa (w32_wnd_proc) <WM_MENUSELECT>: Revert last change.
Jason Rumney <jasonr@gnu.org>
parents: 41380
diff changeset
4051 rect.bottom - rect.top,
41380
aff1b15f295b (x_window_to_frame): Remove irrelevant TODO comment.
Jason Rumney <jasonr@gnu.org>
parents: 41322
diff changeset
4052 FRAME_W32_WINDOW (SELECTED_FRAME ()), /* owner */
aff1b15f295b (x_window_to_frame): Remove irrelevant TODO comment.
Jason Rumney <jasonr@gnu.org>
parents: 41322
diff changeset
4053 NULL,
aff1b15f295b (x_window_to_frame): Remove irrelevant TODO comment.
Jason Rumney <jasonr@gnu.org>
parents: 41322
diff changeset
4054 hinst,
aff1b15f295b (x_window_to_frame): Remove irrelevant TODO comment.
Jason Rumney <jasonr@gnu.org>
parents: 41322
diff changeset
4055 NULL);
aff1b15f295b (x_window_to_frame): Remove irrelevant TODO comment.
Jason Rumney <jasonr@gnu.org>
parents: 41322
diff changeset
4056
41448
96beda35d0fa (w32_wnd_proc) <WM_MENUSELECT>: Revert last change.
Jason Rumney <jasonr@gnu.org>
parents: 41380
diff changeset
4057 if (tip_window)
96beda35d0fa (w32_wnd_proc) <WM_MENUSELECT>: Revert last change.
Jason Rumney <jasonr@gnu.org>
parents: 41380
diff changeset
4058 {
51211
28ea05de2dc5 Make (many) trivial substitutions for renamed and
Kim F. Storm <storm@cua.dk>
parents: 50377
diff changeset
4059 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
4060 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
4061 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
4062 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
4063
96beda35d0fa (w32_wnd_proc) <WM_MENUSELECT>: Revert last change.
Jason Rumney <jasonr@gnu.org>
parents: 41380
diff changeset
4064 /* Tip frames have no scrollbars. */
96beda35d0fa (w32_wnd_proc) <WM_MENUSELECT>: Revert last change.
Jason Rumney <jasonr@gnu.org>
parents: 41380
diff changeset
4065 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
4066
aff1b15f295b (x_window_to_frame): Remove irrelevant TODO comment.
Jason Rumney <jasonr@gnu.org>
parents: 41322
diff changeset
4067 /* 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
4068 ShowWindow (tip_window, SW_HIDE);
41380
aff1b15f295b (x_window_to_frame): Remove irrelevant TODO comment.
Jason Rumney <jasonr@gnu.org>
parents: 41322
diff changeset
4069 }
aff1b15f295b (x_window_to_frame): Remove irrelevant TODO comment.
Jason Rumney <jasonr@gnu.org>
parents: 41322
diff changeset
4070 }
aff1b15f295b (x_window_to_frame): Remove irrelevant TODO comment.
Jason Rumney <jasonr@gnu.org>
parents: 41322
diff changeset
4071
aff1b15f295b (x_window_to_frame): Remove irrelevant TODO comment.
Jason Rumney <jasonr@gnu.org>
parents: 41322
diff changeset
4072
16588
481b7874a1e9 Change identifiers of the form win32* to w32*.
Geoff Voelker <voelker@cs.washington.edu>
parents: 16259
diff changeset
4073 /* Create and set up the w32 window for frame F. */
13434
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
4074
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
4075 static void
16588
481b7874a1e9 Change identifiers of the form win32* to w32*.
Geoff Voelker <voelker@cs.washington.edu>
parents: 16259
diff changeset
4076 w32_window (f, window_prompting, minibuffer_only)
13434
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
4077 struct frame *f;
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
4078 long window_prompting;
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
4079 int minibuffer_only;
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
4080 {
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
4081 BLOCK_INPUT;
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
4082
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
4083 /* Use the resource name as the top-level window name
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
4084 for looking up resources. Make a non-Lisp copy
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
4085 for the window manager, so GC relocation won't bother it.
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
4086
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
4087 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
4088
13434
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
4089 {
46370
40db0673e6f0 Most uses of XSTRING combined with STRING_BYTES or indirection changed to
Ken Raeburn <raeburn@raeburn.org>
parents: 46293
diff changeset
4090 char *str = (char *) SDATA (Vx_resource_name);
13434
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
4091 f->namebuf = (char *) xmalloc (strlen (str) + 1);
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
4092 strcpy (f->namebuf, str);
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
4093 }
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
4094
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
4095 my_create_window (f);
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
4096
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
4097 validate_x_resource_name ();
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
4098
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
4099 /* x_set_name normally ignores requests to set the name if the
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
4100 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
4101 place where that assumption isn't correct; f->name is set, but
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
4102 the server hasn't been told. */
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
4103 {
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
4104 Lisp_Object name;
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
4105 int explicit = f->explicit_name;
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
4106
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
4107 f->explicit_name = 0;
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
4108 name = f->name;
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
4109 f->name = Qnil;
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
4110 x_set_name (f, name, explicit);
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
4111 }
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
4112
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
4113 UNBLOCK_INPUT;
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
4114
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
4115 if (!minibuffer_only && FRAME_EXTERNAL_MENU_BAR (f))
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
4116 initialize_frame_menubar (f);
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
4117
16588
481b7874a1e9 Change identifiers of the form win32* to w32*.
Geoff Voelker <voelker@cs.washington.edu>
parents: 16259
diff changeset
4118 if (FRAME_W32_WINDOW (f) == 0)
13434
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
4119 error ("Unable to create window");
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
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
4122 /* Handle the icon stuff for this window. Perhaps later we might
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
4123 want an x_set_icon_position which can be called interactively as
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
4124 well. */
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
4125
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
4126 static void
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
4127 x_icon (f, parms)
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
4128 struct frame *f;
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
4129 Lisp_Object parms;
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
4130 {
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
4131 Lisp_Object icon_x, icon_y;
96662
5418ff994d7c (w32_get_arg): Remove wrapper function.
Jason Rumney <jasonr@gnu.org>
parents: 96555
diff changeset
4132 struct w32_display_info *dpyinfo = &one_w32_display_info;
13434
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
4133
16884
36babc489b0c Change all uses of win95, winnt, and win32
Geoff Voelker <voelker@cs.washington.edu>
parents: 16602
diff changeset
4134 /* 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
4135 icons in the tray. */
96662
5418ff994d7c (w32_get_arg): Remove wrapper function.
Jason Rumney <jasonr@gnu.org>
parents: 96555
diff changeset
4136 icon_x = x_get_arg (dpyinfo, parms, Qicon_left, 0, 0, RES_TYPE_NUMBER);
5418ff994d7c (w32_get_arg): Remove wrapper function.
Jason Rumney <jasonr@gnu.org>
parents: 96555
diff changeset
4137 icon_y = x_get_arg (dpyinfo, parms, Qicon_top, 0, 0, RES_TYPE_NUMBER);
13434
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
4138 if (!EQ (icon_x, Qunbound) && !EQ (icon_y, Qunbound))
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
4139 {
40656
cdfd4d09b79a Update usage of CHECK_ macros (remove unused second argument).
Pavel Janík <Pavel@Janik.cz>
parents: 40528
diff changeset
4140 CHECK_NUMBER (icon_x);
cdfd4d09b79a Update usage of CHECK_ macros (remove unused second argument).
Pavel Janík <Pavel@Janik.cz>
parents: 40528
diff changeset
4141 CHECK_NUMBER (icon_y);
13434
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 else if (!EQ (icon_x, Qunbound) || !EQ (icon_y, Qunbound))
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
4144 error ("Both left and top icon corners of icon must be specified");
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
4145
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
4146 BLOCK_INPUT;
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
4147
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
4148 if (! EQ (icon_x, Qunbound))
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
4149 x_wm_set_icon_position (f, XINT (icon_x), XINT (icon_y));
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
4150
19707
0181cc080316 Include limits.h and errno.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18508
diff changeset
4151 #if 0 /* TODO */
0181cc080316 Include limits.h and errno.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18508
diff changeset
4152 /* Start up iconic or window? */
0181cc080316 Include limits.h and errno.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18508
diff changeset
4153 x_wm_set_window_state
96662
5418ff994d7c (w32_get_arg): Remove wrapper function.
Jason Rumney <jasonr@gnu.org>
parents: 96555
diff changeset
4154 (f, (EQ (x_get_arg (dpyinfo, 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
4155 ? IconicState
0181cc080316 Include limits.h and errno.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18508
diff changeset
4156 : NormalState));
0181cc080316 Include limits.h and errno.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18508
diff changeset
4157
46370
40db0673e6f0 Most uses of XSTRING combined with STRING_BYTES or indirection changed to
Ken Raeburn <raeburn@raeburn.org>
parents: 46293
diff changeset
4158 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
4159 ? 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
4160 : f->name)));
19707
0181cc080316 Include limits.h and errno.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18508
diff changeset
4161 #endif
0181cc080316 Include limits.h and errno.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18508
diff changeset
4162
13434
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
4163 UNBLOCK_INPUT;
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
4164 }
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
4165
27397
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
4166
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
4167 static void
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
4168 x_make_gc (f)
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
4169 struct frame *f;
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
4170 {
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
4171 XGCValues gc_values;
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
4172
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
4173 BLOCK_INPUT;
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
4174
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
4175 /* Create the GC's of this frame.
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
4176 Note that many default values are used. */
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
4177
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
4178 /* Normal video */
51211
28ea05de2dc5 Make (many) trivial substitutions for renamed and
Kim F. Storm <storm@cua.dk>
parents: 50377
diff changeset
4179 gc_values.font = FRAME_FONT (f);
27397
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
4180
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
4181 /* 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
4182 gc_values.foreground = FRAME_BACKGROUND_PIXEL (f);
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
4183 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
4184 f->output_data.w32->cursor_gc
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
4185 = XCreateGC (NULL, FRAME_W32_WINDOW (f),
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
4186 (GCFont | GCForeground | GCBackground),
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
4187 &gc_values);
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
4188
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
4189 /* Reliefs. */
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
4190 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
4191 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
4192
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
4193 UNBLOCK_INPUT;
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
4194 }
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
4195
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
4196
34546
51be06b616bf (Fx_hide_tip): Avoid unnecessary work when there's
Andrew Innes <andrewi@gnu.org>
parents: 34314
diff changeset
4197 /* 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
4198 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
4199 constructed. */
51be06b616bf (Fx_hide_tip): Avoid unnecessary work when there's
Andrew Innes <andrewi@gnu.org>
parents: 34314
diff changeset
4200
51be06b616bf (Fx_hide_tip): Avoid unnecessary work when there's
Andrew Innes <andrewi@gnu.org>
parents: 34314
diff changeset
4201 static Lisp_Object
51be06b616bf (Fx_hide_tip): Avoid unnecessary work when there's
Andrew Innes <andrewi@gnu.org>
parents: 34314
diff changeset
4202 unwind_create_frame (frame)
51be06b616bf (Fx_hide_tip): Avoid unnecessary work when there's
Andrew Innes <andrewi@gnu.org>
parents: 34314
diff changeset
4203 Lisp_Object frame;
51be06b616bf (Fx_hide_tip): Avoid unnecessary work when there's
Andrew Innes <andrewi@gnu.org>
parents: 34314
diff changeset
4204 {
51be06b616bf (Fx_hide_tip): Avoid unnecessary work when there's
Andrew Innes <andrewi@gnu.org>
parents: 34314
diff changeset
4205 struct frame *f = XFRAME (frame);
51be06b616bf (Fx_hide_tip): Avoid unnecessary work when there's
Andrew Innes <andrewi@gnu.org>
parents: 34314
diff changeset
4206
51be06b616bf (Fx_hide_tip): Avoid unnecessary work when there's
Andrew Innes <andrewi@gnu.org>
parents: 34314
diff changeset
4207 /* 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
4208 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
4209 {
51be06b616bf (Fx_hide_tip): Avoid unnecessary work when there's
Andrew Innes <andrewi@gnu.org>
parents: 34314
diff changeset
4210 #ifdef GLYPH_DEBUG
51be06b616bf (Fx_hide_tip): Avoid unnecessary work when there's
Andrew Innes <andrewi@gnu.org>
parents: 34314
diff changeset
4211 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
4212 #endif
47942
080b4586492b Fix typo in comment.
Juanma Barranquero <lekktu@gmail.com>
parents: 47731
diff changeset
4213
34546
51be06b616bf (Fx_hide_tip): Avoid unnecessary work when there's
Andrew Innes <andrewi@gnu.org>
parents: 34314
diff changeset
4214 x_free_frame_resources (f);
51be06b616bf (Fx_hide_tip): Avoid unnecessary work when there's
Andrew Innes <andrewi@gnu.org>
parents: 34314
diff changeset
4215
99024
06856faf917a * w32fns.c (unwind_create_frame) [!GLYPH_DEBUG]: Fix xassert.
Juanma Barranquero <lekktu@gmail.com>
parents: 98240
diff changeset
4216 #if GLYPH_DEBUG
34546
51be06b616bf (Fx_hide_tip): Avoid unnecessary work when there's
Andrew Innes <andrewi@gnu.org>
parents: 34314
diff changeset
4217 /* 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
4218 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
4219 xassert (dpyinfo->image_cache->refcount == image_cache_refcount);
99024
06856faf917a * w32fns.c (unwind_create_frame) [!GLYPH_DEBUG]: Fix xassert.
Juanma Barranquero <lekktu@gmail.com>
parents: 98240
diff changeset
4220 #endif
34638
abb4510a89f6 (unwind_create_frame): Return t if frame was deleted.
Gerd Moellmann <gerd@gnu.org>
parents: 34546
diff changeset
4221 return Qt;
34546
51be06b616bf (Fx_hide_tip): Avoid unnecessary work when there's
Andrew Innes <andrewi@gnu.org>
parents: 34314
diff changeset
4222 }
47942
080b4586492b Fix typo in comment.
Juanma Barranquero <lekktu@gmail.com>
parents: 47731
diff changeset
4223
34546
51be06b616bf (Fx_hide_tip): Avoid unnecessary work when there's
Andrew Innes <andrewi@gnu.org>
parents: 34314
diff changeset
4224 return Qnil;
51be06b616bf (Fx_hide_tip): Avoid unnecessary work when there's
Andrew Innes <andrewi@gnu.org>
parents: 34314
diff changeset
4225 }
51be06b616bf (Fx_hide_tip): Avoid unnecessary work when there's
Andrew Innes <andrewi@gnu.org>
parents: 34314
diff changeset
4226
90865
6d2559699bd0 [USE_FONT_BACKEND]: Port font backend changes from xfns.c.
Jason Rumney <jasonr@gnu.org>
parents: 90796
diff changeset
4227 static void
6d2559699bd0 [USE_FONT_BACKEND]: Port font backend changes from xfns.c.
Jason Rumney <jasonr@gnu.org>
parents: 90796
diff changeset
4228 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
4229 struct frame *f;
6d2559699bd0 [USE_FONT_BACKEND]: Port font backend changes from xfns.c.
Jason Rumney <jasonr@gnu.org>
parents: 90796
diff changeset
4230 Lisp_Object parms;
6d2559699bd0 [USE_FONT_BACKEND]: Port font backend changes from xfns.c.
Jason Rumney <jasonr@gnu.org>
parents: 90796
diff changeset
4231 {
6d2559699bd0 [USE_FONT_BACKEND]: Port font backend changes from xfns.c.
Jason Rumney <jasonr@gnu.org>
parents: 90796
diff changeset
4232 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
4233 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
4234 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
4235 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
4236 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
4237 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
4238 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
4239 : 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
4240
6d2559699bd0 [USE_FONT_BACKEND]: Port font backend changes from xfns.c.
Jason Rumney <jasonr@gnu.org>
parents: 90796
diff changeset
4241 if (!STRINGP (font))
6d2559699bd0 [USE_FONT_BACKEND]: Port font backend changes from xfns.c.
Jason Rumney <jasonr@gnu.org>
parents: 90796
diff changeset
4242 {
6d2559699bd0 [USE_FONT_BACKEND]: Port font backend changes from xfns.c.
Jason Rumney <jasonr@gnu.org>
parents: 90796
diff changeset
4243 int i;
6d2559699bd0 [USE_FONT_BACKEND]: Port font backend changes from xfns.c.
Jason Rumney <jasonr@gnu.org>
parents: 90796
diff changeset
4244 static char *names[]
90893
c36f1ca93a6e (x_default_font_parameter): Use new style font name.
Jason Rumney <jasonr@gnu.org>
parents: 90878
diff changeset
4245 = { "Courier New-10",
90865
6d2559699bd0 [USE_FONT_BACKEND]: Port font backend changes from xfns.c.
Jason Rumney <jasonr@gnu.org>
parents: 90796
diff changeset
4246 "-*-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
4247 "-*-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
4248 "Fixedsys",
6d2559699bd0 [USE_FONT_BACKEND]: Port font backend changes from xfns.c.
Jason Rumney <jasonr@gnu.org>
parents: 90796
diff changeset
4249 NULL };
6d2559699bd0 [USE_FONT_BACKEND]: Port font backend changes from xfns.c.
Jason Rumney <jasonr@gnu.org>
parents: 90796
diff changeset
4250
6d2559699bd0 [USE_FONT_BACKEND]: Port font backend changes from xfns.c.
Jason Rumney <jasonr@gnu.org>
parents: 90796
diff changeset
4251 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
4252 {
6d2559699bd0 [USE_FONT_BACKEND]: Port font backend changes from xfns.c.
Jason Rumney <jasonr@gnu.org>
parents: 90796
diff changeset
4253 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
4254 if (! NILP (font))
6d2559699bd0 [USE_FONT_BACKEND]: Port font backend changes from xfns.c.
Jason Rumney <jasonr@gnu.org>
parents: 90796
diff changeset
4255 break;
6d2559699bd0 [USE_FONT_BACKEND]: Port font backend changes from xfns.c.
Jason Rumney <jasonr@gnu.org>
parents: 90796
diff changeset
4256 }
6d2559699bd0 [USE_FONT_BACKEND]: Port font backend changes from xfns.c.
Jason Rumney <jasonr@gnu.org>
parents: 90796
diff changeset
4257 if (NILP (font))
6d2559699bd0 [USE_FONT_BACKEND]: Port font backend changes from xfns.c.
Jason Rumney <jasonr@gnu.org>
parents: 90796
diff changeset
4258 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
4259 }
96084
0623378cdbca * w32fns.c, xfnc.c (x_default_font_parameter): Only set `font-param'
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 96079
diff changeset
4260 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
4261 {
efbaf6995245 * w32fns.c, xfns.c (Qfont_param): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 95894
diff changeset
4262 /* 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
4263 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
4264 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
4265 }
90865
6d2559699bd0 [USE_FONT_BACKEND]: Port font backend changes from xfns.c.
Jason Rumney <jasonr@gnu.org>
parents: 90796
diff changeset
4266 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
4267 }
34546
51be06b616bf (Fx_hide_tip): Avoid unnecessary work when there's
Andrew Innes <andrewi@gnu.org>
parents: 34314
diff changeset
4268
13434
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
4269 DEFUN ("x-create-frame", Fx_create_frame, Sx_create_frame,
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
4270 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
4271 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
4272 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
4273 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
4274 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
4275 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
4276 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
4277 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
4278
fb970d0c56eb Change doc-string comments to `new style'. [w/`doc:' keyword]. Doc fixes.
Jason Rumney <jasonr@gnu.org>
parents: 40873
diff changeset
4279 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
4280 (parameters)
c12c7852c322 (Fx_display_grayscale_p, Fw32_send_sys_command, Vw32_color_map):
Juanma Barranquero <lekktu@gmail.com>
parents: 55673
diff changeset
4281 Lisp_Object parameters;
13434
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
4282 {
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
4283 struct frame *f;
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
4284 Lisp_Object frame, tem;
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
4285 Lisp_Object name;
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
4286 int minibuffer_only = 0;
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
4287 long window_prompting = 0;
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
4288 int width, height;
46285
3f111801efb4 Rename BINDING_STACK_SIZE to SPECPDL_INDEX.
Juanma Barranquero <lekktu@gmail.com>
parents: 46272
diff changeset
4289 int count = SPECPDL_INDEX ();
19707
0181cc080316 Include limits.h and errno.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18508
diff changeset
4290 struct gcpro gcpro1, gcpro2, gcpro3, gcpro4;
13434
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
4291 Lisp_Object display;
27397
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
4292 struct w32_display_info *dpyinfo = NULL;
13434
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
4293 Lisp_Object parent;
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
4294 struct kboard *kb;
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
4295
87478
585596662817 Make copy of frame parameters because the original parameters
Martin Rudalics <rudalics@gmx.at>
parents: 87453
diff changeset
4296 /* 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
4297 storage now. */
585596662817 Make copy of frame parameters because the original parameters
Martin Rudalics <rudalics@gmx.at>
parents: 87453
diff changeset
4298 parameters = Fcopy_alist (parameters);
585596662817 Make copy of frame parameters because the original parameters
Martin Rudalics <rudalics@gmx.at>
parents: 87453
diff changeset
4299
13434
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
4300 /* Use this general default value to start with
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
4301 until we know if this frame has a specified name. */
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
4302 Vx_resource_name = Vinvocation_name;
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
4303
96662
5418ff994d7c (w32_get_arg): Remove wrapper function.
Jason Rumney <jasonr@gnu.org>
parents: 96555
diff changeset
4304 display = x_get_arg (dpyinfo, parameters, Qterminal, 0, 0, RES_TYPE_NUMBER);
5418ff994d7c (w32_get_arg): Remove wrapper function.
Jason Rumney <jasonr@gnu.org>
parents: 96555
diff changeset
4305 if (EQ (display, Qunbound))
5418ff994d7c (w32_get_arg): Remove wrapper function.
Jason Rumney <jasonr@gnu.org>
parents: 96555
diff changeset
4306 display = x_get_arg (dpyinfo, parameters, Qdisplay, 0, 0, RES_TYPE_STRING);
13434
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
4307 if (EQ (display, Qunbound))
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
4308 display = Qnil;
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
4309 dpyinfo = check_x_display_info (display);
83619
5da6a46ddbd6 * s/darwin.h (SYSTEM_PURESIZE_EXTRA): Define here.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 83618
diff changeset
4310 kb = dpyinfo->terminal->kboard;
13434
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
4311
96662
5418ff994d7c (w32_get_arg): Remove wrapper function.
Jason Rumney <jasonr@gnu.org>
parents: 96555
diff changeset
4312 if (!dpyinfo->terminal->name)
5418ff994d7c (w32_get_arg): Remove wrapper function.
Jason Rumney <jasonr@gnu.org>
parents: 96555
diff changeset
4313 error ("Terminal is not live, can't create new frames on it");
5418ff994d7c (w32_get_arg): Remove wrapper function.
Jason Rumney <jasonr@gnu.org>
parents: 96555
diff changeset
4314
5418ff994d7c (w32_get_arg): Remove wrapper function.
Jason Rumney <jasonr@gnu.org>
parents: 96555
diff changeset
4315 name = x_get_arg (dpyinfo, parameters, Qname, "name", "Name", RES_TYPE_STRING);
13434
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
4316 if (!STRINGP (name)
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
4317 && ! EQ (name, Qunbound)
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
4318 && ! NILP (name))
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
4319 error ("Invalid frame name--not a string or nil");
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
4320
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
4321 if (STRINGP (name))
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
4322 Vx_resource_name = name;
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
4323
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
4324 /* See if parent window is specified. */
96662
5418ff994d7c (w32_get_arg): Remove wrapper function.
Jason Rumney <jasonr@gnu.org>
parents: 96555
diff changeset
4325 parent = x_get_arg (dpyinfo, parameters, Qparent_id, NULL, NULL, RES_TYPE_NUMBER);
13434
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
4326 if (EQ (parent, Qunbound))
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
4327 parent = Qnil;
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
4328 if (! NILP (parent))
40656
cdfd4d09b79a Update usage of CHECK_ macros (remove unused second argument).
Pavel Janík <Pavel@Janik.cz>
parents: 40528
diff changeset
4329 CHECK_NUMBER (parent);
13434
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
4330
19707
0181cc080316 Include limits.h and errno.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18508
diff changeset
4331 /* 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
4332 /* 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
4333 it to make_frame_without_minibuffer. */
0181cc080316 Include limits.h and errno.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18508
diff changeset
4334 frame = Qnil;
55892
c12c7852c322 (Fx_display_grayscale_p, Fw32_send_sys_command, Vw32_color_map):
Juanma Barranquero <lekktu@gmail.com>
parents: 55673
diff changeset
4335 GCPRO4 (parameters, parent, name, frame);
96662
5418ff994d7c (w32_get_arg): Remove wrapper function.
Jason Rumney <jasonr@gnu.org>
parents: 96555
diff changeset
4336 tem = x_get_arg (dpyinfo, parameters, Qminibuffer, "minibuffer", "Minibuffer",
32669
092d2df2a6c3 (Fx_create_frame): Don't bother calling
Jason Rumney <jasonr@gnu.org>
parents: 31110
diff changeset
4337 RES_TYPE_SYMBOL);
13434
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
4338 if (EQ (tem, Qnone) || NILP (tem))
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
4339 f = make_frame_without_minibuffer (Qnil, kb, display);
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
4340 else if (EQ (tem, Qonly))
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
4341 {
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
4342 f = make_minibuffer_frame ();
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
4343 minibuffer_only = 1;
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
4344 }
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
4345 else if (WINDOWP (tem))
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
4346 f = make_frame_without_minibuffer (tem, kb, display);
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
4347 else
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
4348 f = make_frame (1);
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
4349
19707
0181cc080316 Include limits.h and errno.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18508
diff changeset
4350 XSETFRAME (frame, f);
0181cc080316 Include limits.h and errno.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18508
diff changeset
4351
13434
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
4352 /* Note that Windows does support scroll bars. */
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
4353 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
4354
15147
38c0ce06203f (quit_char, Vwin32_enable_italics, Vwin32_enable_palette):
Geoff Voelker <voelker@cs.washington.edu>
parents: 15034
diff changeset
4355 /* 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
4356 FRAME_CONFIG_SCROLL_BAR_WIDTH (f) = GetSystemMetrics (SM_CXVSCROLL);
13434
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
4357
83571
ca1c27e2707e (x_set_tool_bar_lines): Don't use updating_frame.
Jason Rumney <jasonr@gnu.org>
parents: 76700
diff changeset
4358 f->terminal = dpyinfo->terminal;
ca1c27e2707e (x_set_tool_bar_lines): Don't use updating_frame.
Jason Rumney <jasonr@gnu.org>
parents: 76700
diff changeset
4359 f->terminal->reference_count++;
ca1c27e2707e (x_set_tool_bar_lines): Don't use updating_frame.
Jason Rumney <jasonr@gnu.org>
parents: 76700
diff changeset
4360
16588
481b7874a1e9 Change identifiers of the form win32* to w32*.
Geoff Voelker <voelker@cs.washington.edu>
parents: 16259
diff changeset
4361 f->output_method = output_w32;
27397
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
4362 f->output_data.w32 =
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
4363 (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
4364 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
4365 FRAME_FONTSET (f) = -1;
246a14f0622f (Vx_pixel_size_width): New global variable.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23407
diff changeset
4366
19707
0181cc080316 Include limits.h and errno.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18508
diff changeset
4367 f->icon_name
96662
5418ff994d7c (w32_get_arg): Remove wrapper function.
Jason Rumney <jasonr@gnu.org>
parents: 96555
diff changeset
4368 = x_get_arg (dpyinfo, parameters, Qicon_name, "iconName", "Title",
5418ff994d7c (w32_get_arg): Remove wrapper function.
Jason Rumney <jasonr@gnu.org>
parents: 96555
diff changeset
4369 RES_TYPE_STRING);
19707
0181cc080316 Include limits.h and errno.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18508
diff changeset
4370 if (! STRINGP (f->icon_name))
0181cc080316 Include limits.h and errno.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18508
diff changeset
4371 f->icon_name = Qnil;
0181cc080316 Include limits.h and errno.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18508
diff changeset
4372
16588
481b7874a1e9 Change identifiers of the form win32* to w32*.
Geoff Voelker <voelker@cs.washington.edu>
parents: 16259
diff changeset
4373 /* FRAME_W32_DISPLAY_INFO (f) = dpyinfo; */
96662
5418ff994d7c (w32_get_arg): Remove wrapper function.
Jason Rumney <jasonr@gnu.org>
parents: 96555
diff changeset
4374
5418ff994d7c (w32_get_arg): Remove wrapper function.
Jason Rumney <jasonr@gnu.org>
parents: 96555
diff changeset
4375 /* With FRAME_X_DISPLAY_INFO set up, this unwind-protect is safe. */
5418ff994d7c (w32_get_arg): Remove wrapper function.
Jason Rumney <jasonr@gnu.org>
parents: 96555
diff changeset
4376 record_unwind_protect (unwind_create_frame, frame);
5418ff994d7c (w32_get_arg): Remove wrapper function.
Jason Rumney <jasonr@gnu.org>
parents: 96555
diff changeset
4377 #if GLYPH_DEBUG
5418ff994d7c (w32_get_arg): Remove wrapper function.
Jason Rumney <jasonr@gnu.org>
parents: 96555
diff changeset
4378 image_cache_refcount = FRAME_IMAGE_CACHE (f)->refcount;
5418ff994d7c (w32_get_arg): Remove wrapper function.
Jason Rumney <jasonr@gnu.org>
parents: 96555
diff changeset
4379 dpyinfo_refcount = dpyinfo->reference_count;
5418ff994d7c (w32_get_arg): Remove wrapper function.
Jason Rumney <jasonr@gnu.org>
parents: 96555
diff changeset
4380 #endif /* GLYPH_DEBUG */
13434
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
4381
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
4382 /* Specify the parent under which to make this window. */
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
4383
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
4384 if (!NILP (parent))
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
4385 {
32669
092d2df2a6c3 (Fx_create_frame): Don't bother calling
Jason Rumney <jasonr@gnu.org>
parents: 31110
diff changeset
4386 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
4387 f->output_data.w32->explicit_parent = 1;
13434
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
4388 }
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
4389 else
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
4390 {
16588
481b7874a1e9 Change identifiers of the form win32* to w32*.
Geoff Voelker <voelker@cs.washington.edu>
parents: 16259
diff changeset
4391 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
4392 f->output_data.w32->explicit_parent = 0;
13434
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
4393 }
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
4394
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
4395 /* 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
4396 be set. */
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
4397 if (EQ (name, Qunbound) || NILP (name))
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
4398 {
16588
481b7874a1e9 Change identifiers of the form win32* to w32*.
Geoff Voelker <voelker@cs.washington.edu>
parents: 16259
diff changeset
4399 f->name = build_string (dpyinfo->w32_id_name);
13434
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
4400 f->explicit_name = 0;
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
4401 }
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
4402 else
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
4403 {
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
4404 f->name = name;
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
4405 f->explicit_name = 1;
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
4406 /* use the frame's title when getting resources for this frame. */
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
4407 specbind (Qx_resource_name, name);
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
4408 }
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
4409
90893
c36f1ca93a6e (x_default_font_parameter): Use new style font name.
Jason Rumney <jasonr@gnu.org>
parents: 90878
diff changeset
4410 f->resx = dpyinfo->resx;
c36f1ca93a6e (x_default_font_parameter): Use new style font name.
Jason Rumney <jasonr@gnu.org>
parents: 90878
diff changeset
4411 f->resy = dpyinfo->resy;
c36f1ca93a6e (x_default_font_parameter): Use new style font name.
Jason Rumney <jasonr@gnu.org>
parents: 90878
diff changeset
4412
94917
e61553aa7a73 Throughout the file, delete all USE_FONT_BACKEND
Kenichi Handa <handa@m17n.org>
parents: 94618
diff changeset
4413 if (uniscribe_available)
e61553aa7a73 Throughout the file, delete all USE_FONT_BACKEND
Kenichi Handa <handa@m17n.org>
parents: 94618
diff changeset
4414 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
4415 register_font_driver (&w32font_driver, f);
e61553aa7a73 Throughout the file, delete all USE_FONT_BACKEND
Kenichi Handa <handa@m17n.org>
parents: 94618
diff changeset
4416
e61553aa7a73 Throughout the file, delete all USE_FONT_BACKEND
Kenichi Handa <handa@m17n.org>
parents: 94618
diff changeset
4417 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
4418 "fontBackend", "FontBackend", RES_TYPE_STRING);
13434
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
4419 /* Extract the window parameters from the supplied values
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
4420 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
4421 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
4422 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
4423 "borderWidth", "BorderWidth", RES_TYPE_NUMBER);
96662
5418ff994d7c (w32_get_arg): Remove wrapper function.
Jason Rumney <jasonr@gnu.org>
parents: 96555
diff changeset
4424
99235
eccf5258acaf * w32fns.c (x_create_tip_frame): Prevent default foreground color for
Juanma Barranquero <lekktu@gmail.com>
parents: 99024
diff changeset
4425 /* We recognize either internalBorderWidth or internalBorder
96662
5418ff994d7c (w32_get_arg): Remove wrapper function.
Jason Rumney <jasonr@gnu.org>
parents: 96555
diff changeset
4426 (which is what xterm calls it). */
55892
c12c7852c322 (Fx_display_grayscale_p, Fw32_send_sys_command, Vw32_color_map):
Juanma Barranquero <lekktu@gmail.com>
parents: 55673
diff changeset
4427 if (NILP (Fassq (Qinternal_border_width, parameters)))
13434
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
4428 {
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
4429 Lisp_Object value;
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
4430
96662
5418ff994d7c (w32_get_arg): Remove wrapper function.
Jason Rumney <jasonr@gnu.org>
parents: 96555
diff changeset
4431 value = x_get_arg (dpyinfo, parameters, Qinternal_border_width,
55892
c12c7852c322 (Fx_display_grayscale_p, Fw32_send_sys_command, Vw32_color_map):
Juanma Barranquero <lekktu@gmail.com>
parents: 55673
diff changeset
4432 "internalBorder", "InternalBorder", RES_TYPE_NUMBER);
13434
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
4433 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
4434 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
4435 parameters);
13434
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
4436 }
19707
0181cc080316 Include limits.h and errno.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18508
diff changeset
4437 /* 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
4438 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
4439 "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
4440 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
4441 "verticalScrollBars", "ScrollBars", RES_TYPE_SYMBOL);
13434
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 /* 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
4444 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
4445 "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
4446 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
4447 "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
4448 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
4449 "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
4450 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
4451 "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
4452 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
4453 "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
4454 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
4455 "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
4456 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
4457 "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
4458 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
4459 "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
4460 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
4461 "rightFringe", "RightFringe", RES_TYPE_NUMBER);
27397
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
4462
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
4463
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
4464 /* 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
4465 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
4466 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
4467 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
4468 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
4469 happen. */
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
4470 init_frame_faces (f);
47942
080b4586492b Fix typo in comment.
Juanma Barranquero <lekktu@gmail.com>
parents: 47731
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 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
4473 "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
4474 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
4475 "toolBar", "ToolBar", RES_TYPE_NUMBER);
44109
b615e4daf825 [HAVE_IMAGES, HAVE_PBM]: Remove conditionals.
Jason Rumney <jasonr@gnu.org>
parents: 44097
diff changeset
4476
55892
c12c7852c322 (Fx_display_grayscale_p, Fw32_send_sys_command, Vw32_color_map):
Juanma Barranquero <lekktu@gmail.com>
parents: 55673
diff changeset
4477 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
4478 "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
4479 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
4480 "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
4481 x_default_parameter (f, parameters, Qfullscreen, Qnil,
43398
8782b8cfed62 *** empty log message ***
Jason Rumney <jasonr@gnu.org>
parents: 43210
diff changeset
4482 "fullscreen", "Fullscreen", RES_TYPE_SYMBOL);
13434
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
4483
16588
481b7874a1e9 Change identifiers of the form win32* to w32*.
Geoff Voelker <voelker@cs.washington.edu>
parents: 16259
diff changeset
4484 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
4485 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
4486
49369
5518e109ec3b 2003-01-21 Jason Rumney <jasonr@gnu.org>
Jason Rumney <jasonr@gnu.org>
parents: 49079
diff changeset
4487 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
4488 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
4489 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
4490 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
4491 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
4492 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
4493
93075
66248fc5b523 * w32fns.c (hourglass_timer, hourglass_hwnd): New variables.
Jason Rumney <jasonr@gnu.org>
parents: 92940
diff changeset
4494 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
4495
55892
c12c7852c322 (Fx_display_grayscale_p, Fw32_send_sys_command, Vw32_color_map):
Juanma Barranquero <lekktu@gmail.com>
parents: 55673
diff changeset
4496 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
4497
96662
5418ff994d7c (w32_get_arg): Remove wrapper function.
Jason Rumney <jasonr@gnu.org>
parents: 96555
diff changeset
4498 tem = x_get_arg (dpyinfo, 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
4499 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
4500
16588
481b7874a1e9 Change identifiers of the form win32* to w32*.
Geoff Voelker <voelker@cs.washington.edu>
parents: 16259
diff changeset
4501 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
4502 x_icon (f, parameters);
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 x_make_gc (f);
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
4505
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
4506 /* Now consider the frame official. */
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
4507 FRAME_W32_DISPLAY_INFO (f)->reference_count++;
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
4508 Vframe_list = Fcons (frame, Vframe_list);
13434
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
4509
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
4510 /* We need to do this after creating the window, so that the
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
4511 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
4512 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
4513 "bitmapIcon", "BitmapIcon", RES_TYPE_SYMBOL);
13434
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
4514
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, Qauto_raise, Qnil,
27397
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
4516 "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
4517 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
4518 "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
4519 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
4520 "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
4521 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
4522 "scrollBarWidth", "ScrollBarWidth", RES_TYPE_NUMBER);
96403
4b6d1b55f59c * w32term.c (pfnGetFontUnicodeRanges): Remove unused function pointer.
Jason Rumney <jasonr@gnu.org>
parents: 96385
diff changeset
4523 x_default_parameter (f, parameters, Qalpha, Qnil,
4b6d1b55f59c * w32term.c (pfnGetFontUnicodeRanges): Remove unused function pointer.
Jason Rumney <jasonr@gnu.org>
parents: 96385
diff changeset
4524 "alpha", "Alpha", RES_TYPE_NUMBER);
13434
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
4525
51211
28ea05de2dc5 Make (many) trivial substitutions for renamed and
Kim F. Storm <storm@cua.dk>
parents: 50377
diff changeset
4526 /* 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
4527 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
4528 FRAME_LINES (f). */
28ea05de2dc5 Make (many) trivial substitutions for renamed and
Kim F. Storm <storm@cua.dk>
parents: 50377
diff changeset
4529 width = FRAME_COLS (f);
28ea05de2dc5 Make (many) trivial substitutions for renamed and
Kim F. Storm <storm@cua.dk>
parents: 50377
diff changeset
4530 height = FRAME_LINES (f);
28ea05de2dc5 Make (many) trivial substitutions for renamed and
Kim F. Storm <storm@cua.dk>
parents: 50377
diff changeset
4531
28ea05de2dc5 Make (many) trivial substitutions for renamed and
Kim F. Storm <storm@cua.dk>
parents: 50377
diff changeset
4532 FRAME_LINES (f) = 0;
28ea05de2dc5 Make (many) trivial substitutions for renamed and
Kim F. Storm <storm@cua.dk>
parents: 50377
diff changeset
4533 SET_FRAME_COLS (f, 0);
27397
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
4534 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
4535
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
4536 /* 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
4537 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
4538 bar so that its size can be taken into account. */
13434
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
4539 BLOCK_INPUT;
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
4540 x_wm_set_size_hint (f, window_prompting, 0);
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
4541 UNBLOCK_INPUT;
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
4542
27397
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
4543 /* 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
4544 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
4545 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
4546 if (! f->output_data.w32->explicit_parent)
13434
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
4547 {
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
4548 Lisp_Object visibility;
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
4549
96662
5418ff994d7c (w32_get_arg): Remove wrapper function.
Jason Rumney <jasonr@gnu.org>
parents: 96555
diff changeset
4550 visibility = x_get_arg (dpyinfo, parameters, Qvisibility, 0, 0, RES_TYPE_SYMBOL);
13434
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
4551 if (EQ (visibility, Qunbound))
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
4552 visibility = Qt;
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
4553
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
4554 if (EQ (visibility, Qicon))
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
4555 x_iconify_frame (f);
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
4556 else if (! NILP (visibility))
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
4557 x_make_frame_visible (f);
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
4558 else
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
4559 /* Must have been Qnil. */
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
4560 ;
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
4561 }
83616
b78afd4acd43 * term.c (init_tty): Better initialize ttys in windows.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 83608
diff changeset
4562
b78afd4acd43 * term.c (init_tty): Better initialize ttys in windows.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 83608
diff changeset
4563 /* 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
4564 frame on this terminal. */
b78afd4acd43 * term.c (init_tty): Better initialize ttys in windows.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 83608
diff changeset
4565 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
4566 && (!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
4567 || !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
4568 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
4569
b78afd4acd43 * term.c (init_tty): Better initialize ttys in windows.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 83608
diff changeset
4570 /* 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
4571 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
4572 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
4573 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
4574 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
4575
27397
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
4576 UNGCPRO;
47942
080b4586492b Fix typo in comment.
Juanma Barranquero <lekktu@gmail.com>
parents: 47731
diff changeset
4577
36594
756c28377036 (Fx_create_frame): Clear Vwindow_list.
Gerd Moellmann <gerd@gnu.org>
parents: 36312
diff changeset
4578 /* 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
4579 and similar functions. */
756c28377036 (Fx_create_frame): Clear Vwindow_list.
Gerd Moellmann <gerd@gnu.org>
parents: 36312
diff changeset
4580 Vwindow_list = Qnil;
47942
080b4586492b Fix typo in comment.
Juanma Barranquero <lekktu@gmail.com>
parents: 47731
diff changeset
4581
13434
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
4582 return unbind_to (count, frame);
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
4583 }
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
4584
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
4585 /* 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
4586 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
4587 know about that structure. */
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
4588 Lisp_Object
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
4589 x_get_focus_frame (frame)
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
4590 struct frame *frame;
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
4591 {
16588
481b7874a1e9 Change identifiers of the form win32* to w32*.
Geoff Voelker <voelker@cs.washington.edu>
parents: 16259
diff changeset
4592 struct w32_display_info *dpyinfo = FRAME_W32_DISPLAY_INFO (frame);
13434
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
4593 Lisp_Object xfocus;
16588
481b7874a1e9 Change identifiers of the form win32* to w32*.
Geoff Voelker <voelker@cs.washington.edu>
parents: 16259
diff changeset
4594 if (! dpyinfo->w32_focus_frame)
13434
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
4595 return Qnil;
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
4596
16588
481b7874a1e9 Change identifiers of the form win32* to w32*.
Geoff Voelker <voelker@cs.washington.edu>
parents: 16259
diff changeset
4597 XSETFRAME (xfocus, dpyinfo->w32_focus_frame);
13434
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
4598 return xfocus;
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
4599 }
19707
0181cc080316 Include limits.h and errno.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18508
diff changeset
4600
84630
4197a953442f (Fx_focus_frame): Rename from Fw32_focus_frame.
Jason Rumney <jasonr@gnu.org>
parents: 83878
diff changeset
4601 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
4602 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
4603 (frame)
0181cc080316 Include limits.h and errno.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18508
diff changeset
4604 Lisp_Object frame;
0181cc080316 Include limits.h and errno.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18508
diff changeset
4605 {
0181cc080316 Include limits.h and errno.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18508
diff changeset
4606 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
4607 return Qnil;
0181cc080316 Include limits.h and errno.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18508
diff changeset
4608 }
0181cc080316 Include limits.h and errno.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18508
diff changeset
4609
13434
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
4610
26729
f5dded41adcc Changes for automatic remapping of X colors on terminal frames:
Eli Zaretskii <eliz@gnu.org>
parents: 25646
diff changeset
4611 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
4612 doc: /* Internal function called by `color-defined-p', which see. */)
13434
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
4613 (color, frame)
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
4614 Lisp_Object color, frame;
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
4615 {
27397
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
4616 XColor foo;
13434
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
4617 FRAME_PTR f = check_x_frame (frame);
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
4618
40656
cdfd4d09b79a Update usage of CHECK_ macros (remove unused second argument).
Pavel Janík <Pavel@Janik.cz>
parents: 40528
diff changeset
4619 CHECK_STRING (color);
13434
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
4620
46370
40db0673e6f0 Most uses of XSTRING combined with STRING_BYTES or indirection changed to
Ken Raeburn <raeburn@raeburn.org>
parents: 46293
diff changeset
4621 if (w32_defined_color (f, SDATA (color), &foo, 0))
13434
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
4622 return Qt;
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
4623 else
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
4624 return Qnil;
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
4625 }
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
4626
26729
f5dded41adcc Changes for automatic remapping of X colors on terminal frames:
Eli Zaretskii <eliz@gnu.org>
parents: 25646
diff changeset
4627 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
4628 doc: /* Internal function called by `color-values', which see. */)
13434
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
4629 (color, frame)
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
4630 Lisp_Object color, frame;
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
4631 {
27397
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
4632 XColor foo;
13434
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
4633 FRAME_PTR f = check_x_frame (frame);
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
4634
40656
cdfd4d09b79a Update usage of CHECK_ macros (remove unused second argument).
Pavel Janík <Pavel@Janik.cz>
parents: 40528
diff changeset
4635 CHECK_STRING (color);
13434
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
4636
46370
40db0673e6f0 Most uses of XSTRING combined with STRING_BYTES or indirection changed to
Ken Raeburn <raeburn@raeburn.org>
parents: 46293
diff changeset
4637 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
4638 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
4639 | GetRValue (foo.pixel)),
892ea79efee6 (Fxw_color_values): Simplify; use list3.
Kim F. Storm <storm@cua.dk>
parents: 72274
diff changeset
4640 make_number ((GetGValue (foo.pixel) << 8)
892ea79efee6 (Fxw_color_values): Simplify; use list3.
Kim F. Storm <storm@cua.dk>
parents: 72274
diff changeset
4641 | GetGValue (foo.pixel)),
892ea79efee6 (Fxw_color_values): Simplify; use list3.
Kim F. Storm <storm@cua.dk>
parents: 72274
diff changeset
4642 make_number ((GetBValue (foo.pixel) << 8)
892ea79efee6 (Fxw_color_values): Simplify; use list3.
Kim F. Storm <storm@cua.dk>
parents: 72274
diff changeset
4643 | GetBValue (foo.pixel)));
13434
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
4644 else
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
4645 return Qnil;
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
4646 }
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
4647
26729
f5dded41adcc Changes for automatic remapping of X colors on terminal frames:
Eli Zaretskii <eliz@gnu.org>
parents: 25646
diff changeset
4648 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
4649 doc: /* Internal function called by `display-color-p', which see. */)
13434
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
4650 (display)
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
4651 Lisp_Object display;
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
4652 {
16588
481b7874a1e9 Change identifiers of the form win32* to w32*.
Geoff Voelker <voelker@cs.washington.edu>
parents: 16259
diff changeset
4653 struct w32_display_info *dpyinfo = check_x_display_info (display);
13434
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
4654
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
4655 if ((dpyinfo->n_planes * dpyinfo->n_cbits) <= 2)
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
4656 return Qnil;
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
4657
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
4658 return Qt;
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
4659 }
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
4660
40964
fb970d0c56eb Change doc-string comments to `new style'. [w/`doc:' keyword]. Doc fixes.
Jason Rumney <jasonr@gnu.org>
parents: 40873
diff changeset
4661 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
4662 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
4663 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
4664 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
4665 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
4666 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
4667 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
4668 (display)
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
4669 Lisp_Object display;
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
4670 {
16588
481b7874a1e9 Change identifiers of the form win32* to w32*.
Geoff Voelker <voelker@cs.washington.edu>
parents: 16259
diff changeset
4671 struct w32_display_info *dpyinfo = check_x_display_info (display);
13434
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
4672
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
4673 if ((dpyinfo->n_planes * dpyinfo->n_cbits) <= 1)
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
4674 return Qnil;
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
4675
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
4676 return Qt;
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
4677 }
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
4678
40964
fb970d0c56eb Change doc-string comments to `new style'. [w/`doc:' keyword]. Doc fixes.
Jason Rumney <jasonr@gnu.org>
parents: 40873
diff changeset
4679 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
4680 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
4681 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
4682 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
4683 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
4684 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
4685 (display)
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
4686 Lisp_Object display;
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
4687 {
16588
481b7874a1e9 Change identifiers of the form win32* to w32*.
Geoff Voelker <voelker@cs.washington.edu>
parents: 16259
diff changeset
4688 struct w32_display_info *dpyinfo = check_x_display_info (display);
13434
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
4689
98240
5f73593cabcd * frame.c (x_fullscreen_adjust): Declare var as Display_Info.
Juanma Barranquero <lekktu@gmail.com>
parents: 97493
diff changeset
4690 return make_number (x_display_pixel_width (dpyinfo));
13434
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
4691 }
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
4692
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
4693 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
4694 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
4695 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
4696 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
4697 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
4698 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
4699 (display)
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
4700 Lisp_Object display;
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
4701 {
16588
481b7874a1e9 Change identifiers of the form win32* to w32*.
Geoff Voelker <voelker@cs.washington.edu>
parents: 16259
diff changeset
4702 struct w32_display_info *dpyinfo = check_x_display_info (display);
13434
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
4703
98240
5f73593cabcd * frame.c (x_fullscreen_adjust): Declare var as Display_Info.
Juanma Barranquero <lekktu@gmail.com>
parents: 97493
diff changeset
4704 return make_number (x_display_pixel_height (dpyinfo));
13434
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
4705 }
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
4706
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
4707 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
4708 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
4709 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
4710 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
4711 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
4712 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
4713 (display)
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
4714 Lisp_Object display;
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
4715 {
16588
481b7874a1e9 Change identifiers of the form win32* to w32*.
Geoff Voelker <voelker@cs.washington.edu>
parents: 16259
diff changeset
4716 struct w32_display_info *dpyinfo = check_x_display_info (display);
13434
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
4717
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
4718 return make_number (dpyinfo->n_planes * dpyinfo->n_cbits);
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
4719 }
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
4720
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
4721 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
4722 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
4723 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
4724 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
4725 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
4726 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
4727 (display)
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
4728 Lisp_Object display;
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
4729 {
16588
481b7874a1e9 Change identifiers of the form win32* to w32*.
Geoff Voelker <voelker@cs.washington.edu>
parents: 16259
diff changeset
4730 struct w32_display_info *dpyinfo = check_x_display_info (display);
13434
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
4731 HDC hdc;
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
4732 int cap;
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
4733
15147
38c0ce06203f (quit_char, Vwin32_enable_italics, Vwin32_enable_palette):
Geoff Voelker <voelker@cs.washington.edu>
parents: 15034
diff changeset
4734 hdc = GetDC (dpyinfo->root_window);
38c0ce06203f (quit_char, Vwin32_enable_italics, Vwin32_enable_palette):
Geoff Voelker <voelker@cs.washington.edu>
parents: 15034
diff changeset
4735 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
4736 cap = GetDeviceCaps (hdc, SIZEPALETTE);
15147
38c0ce06203f (quit_char, Vwin32_enable_italics, Vwin32_enable_palette):
Geoff Voelker <voelker@cs.washington.edu>
parents: 15034
diff changeset
4737 else
55892
c12c7852c322 (Fx_display_grayscale_p, Fw32_send_sys_command, Vw32_color_map):
Juanma Barranquero <lekktu@gmail.com>
parents: 55673
diff changeset
4738 cap = GetDeviceCaps (hdc, NUMCOLORS);
34998
5091928844df (Fx_display_color_cells): Determine correct value, when
Andrew Innes <andrewi@gnu.org>
parents: 34942
diff changeset
4739
43773
8d3931ead0df (Fx_display_color_cells): Force 24+ bit color depths to 24-bit.
Juanma Barranquero <lekktu@gmail.com>
parents: 43484
diff changeset
4740 /* 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
4741 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
4742 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
4743 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
4744
13434
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
4745 ReleaseDC (dpyinfo->root_window, hdc);
47942
080b4586492b Fix typo in comment.
Juanma Barranquero <lekktu@gmail.com>
parents: 47731
diff changeset
4746
13434
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
4747 return make_number (cap);
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
4748 }
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
4749
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
4750 DEFUN ("x-server-max-request-size", Fx_server_max_request_size,
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
4751 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
4752 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
4753 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
4754 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
4755 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
4756 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
4757 (display)
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
4758 Lisp_Object display;
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
4759 {
16588
481b7874a1e9 Change identifiers of the form win32* to w32*.
Geoff Voelker <voelker@cs.washington.edu>
parents: 16259
diff changeset
4760 struct w32_display_info *dpyinfo = check_x_display_info (display);
13434
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
4761
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
4762 return make_number (1);
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
4763 }
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
4764
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
4765 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
4766 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
4767 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
4768 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
4769 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
4770 (display)
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
4771 Lisp_Object display;
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
4772 {
29317
2d3d5bf49d4e Format and doc changes to bring closer to xfns.c.
Jason Rumney <jasonr@gnu.org>
parents: 29021
diff changeset
4773 return build_string ("Microsoft Corp.");
13434
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
4774 }
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
4775
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
4776 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
4777 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
4778 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
4779 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
4780 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
4781
fb970d0c56eb Change doc-string comments to `new style'. [w/`doc:' keyword]. Doc fixes.
Jason Rumney <jasonr@gnu.org>
parents: 40873
diff changeset
4782 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
4783 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
4784 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
4785 (display)
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
4786 Lisp_Object display;
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
4787 {
16588
481b7874a1e9 Change identifiers of the form win32* to w32*.
Geoff Voelker <voelker@cs.washington.edu>
parents: 16259
diff changeset
4788 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
4789 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
4790 Fcons (make_number (w32_build_number), Qnil)));
13434
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
4791 }
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
4792
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
4793 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
4794 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
4795 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
4796 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
4797 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
4798 (display)
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
4799 Lisp_Object display;
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
4800 {
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
4801 return make_number (1);
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
4802 }
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
4803
40964
fb970d0c56eb Change doc-string comments to `new style'. [w/`doc:' keyword]. Doc fixes.
Jason Rumney <jasonr@gnu.org>
parents: 40873
diff changeset
4804 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
4805 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
4806 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
4807 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
4808 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
4809 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
4810 (display)
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
4811 Lisp_Object display;
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
4812 {
16588
481b7874a1e9 Change identifiers of the form win32* to w32*.
Geoff Voelker <voelker@cs.washington.edu>
parents: 16259
diff changeset
4813 struct w32_display_info *dpyinfo = check_x_display_info (display);
13434
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
4814 HDC hdc;
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
4815 int cap;
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
4816
15147
38c0ce06203f (quit_char, Vwin32_enable_italics, Vwin32_enable_palette):
Geoff Voelker <voelker@cs.washington.edu>
parents: 15034
diff changeset
4817 hdc = GetDC (dpyinfo->root_window);
47942
080b4586492b Fix typo in comment.
Juanma Barranquero <lekktu@gmail.com>
parents: 47731
diff changeset
4818
13434
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
4819 cap = GetDeviceCaps (hdc, VERTSIZE);
47942
080b4586492b Fix typo in comment.
Juanma Barranquero <lekktu@gmail.com>
parents: 47731
diff changeset
4820
13434
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
4821 ReleaseDC (dpyinfo->root_window, hdc);
47942
080b4586492b Fix typo in comment.
Juanma Barranquero <lekktu@gmail.com>
parents: 47731
diff changeset
4822
13434
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
4823 return make_number (cap);
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
4824 }
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
4825
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
4826 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
4827 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
4828 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
4829 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
4830 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
4831 (display)
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
4832 Lisp_Object display;
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
4833 {
16588
481b7874a1e9 Change identifiers of the form win32* to w32*.
Geoff Voelker <voelker@cs.washington.edu>
parents: 16259
diff changeset
4834 struct w32_display_info *dpyinfo = check_x_display_info (display);
13434
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
4835
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
4836 HDC hdc;
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
4837 int cap;
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
4838
15147
38c0ce06203f (quit_char, Vwin32_enable_italics, Vwin32_enable_palette):
Geoff Voelker <voelker@cs.washington.edu>
parents: 15034
diff changeset
4839 hdc = GetDC (dpyinfo->root_window);
47942
080b4586492b Fix typo in comment.
Juanma Barranquero <lekktu@gmail.com>
parents: 47731
diff changeset
4840
13434
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
4841 cap = GetDeviceCaps (hdc, HORZSIZE);
47942
080b4586492b Fix typo in comment.
Juanma Barranquero <lekktu@gmail.com>
parents: 47731
diff changeset
4842
13434
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
4843 ReleaseDC (dpyinfo->root_window, hdc);
47942
080b4586492b Fix typo in comment.
Juanma Barranquero <lekktu@gmail.com>
parents: 47731
diff changeset
4844
13434
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
4845 return make_number (cap);
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
4846 }
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
4847
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
4848 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
4849 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
4850 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
4851 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
4852 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
4853 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
4854 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
4855 (display)
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
4856 Lisp_Object display;
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
4857 {
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
4858 return intern ("not-useful");
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
4859 }
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
4860
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
4861 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
4862 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
4863 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
4864 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
4865 `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
4866
fb970d0c56eb Change doc-string comments to `new style'. [w/`doc:' keyword]. Doc fixes.
Jason Rumney <jasonr@gnu.org>
parents: 40873
diff changeset
4867 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
4868 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
4869 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
4870 (display)
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
4871 Lisp_Object display;
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
4872 {
16588
481b7874a1e9 Change identifiers of the form win32* to w32*.
Geoff Voelker <voelker@cs.washington.edu>
parents: 16259
diff changeset
4873 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
4874 Lisp_Object result = Qnil;
5091928844df (Fx_display_color_cells): Determine correct value, when
Andrew Innes <andrewi@gnu.org>
parents: 34942
diff changeset
4875
5091928844df (Fx_display_color_cells): Determine correct value, when
Andrew Innes <andrewi@gnu.org>
parents: 34942
diff changeset
4876 if (dpyinfo->has_palette)
5091928844df (Fx_display_color_cells): Determine correct value, when
Andrew Innes <andrewi@gnu.org>
parents: 34942
diff changeset
4877 result = intern ("pseudo-color");
5091928844df (Fx_display_color_cells): Determine correct value, when
Andrew Innes <andrewi@gnu.org>
parents: 34942
diff changeset
4878 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
4879 result = intern ("static-grey");
5091928844df (Fx_display_color_cells): Determine correct value, when
Andrew Innes <andrewi@gnu.org>
parents: 34942
diff changeset
4880 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
4881 result = intern ("static-color");
5091928844df (Fx_display_color_cells): Determine correct value, when
Andrew Innes <andrewi@gnu.org>
parents: 34942
diff changeset
4882 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
4883 result = intern ("true-color");
5091928844df (Fx_display_color_cells): Determine correct value, when
Andrew Innes <andrewi@gnu.org>
parents: 34942
diff changeset
4884
5091928844df (Fx_display_color_cells): Determine correct value, when
Andrew Innes <andrewi@gnu.org>
parents: 34942
diff changeset
4885 return result;
13434
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
4886 }
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
4887
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
4888 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
4889 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
4890 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
4891 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
4892 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
4893 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
4894 (display)
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
4895 Lisp_Object display;
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
4896 {
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
4897 return Qnil;
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
4898 }
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
4899
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
4900 int
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
4901 x_pixel_width (f)
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
4902 register struct frame *f;
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
4903 {
51211
28ea05de2dc5 Make (many) trivial substitutions for renamed and
Kim F. Storm <storm@cua.dk>
parents: 50377
diff changeset
4904 return FRAME_PIXEL_WIDTH (f);
13434
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
4905 }
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
4906
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
4907 int
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
4908 x_pixel_height (f)
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
4909 register struct frame *f;
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
4910 {
51211
28ea05de2dc5 Make (many) trivial substitutions for renamed and
Kim F. Storm <storm@cua.dk>
parents: 50377
diff changeset
4911 return FRAME_PIXEL_HEIGHT (f);
13434
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
4912 }
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
4913
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
4914 int
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
4915 x_char_width (f)
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
4916 register struct frame *f;
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
4917 {
51211
28ea05de2dc5 Make (many) trivial substitutions for renamed and
Kim F. Storm <storm@cua.dk>
parents: 50377
diff changeset
4918 return FRAME_COLUMN_WIDTH (f);
13434
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
4919 }
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
4920
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
4921 int
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
4922 x_char_height (f)
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
4923 register struct frame *f;
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
4924 {
51211
28ea05de2dc5 Make (many) trivial substitutions for renamed and
Kim F. Storm <storm@cua.dk>
parents: 50377
diff changeset
4925 return FRAME_LINE_HEIGHT (f);
13434
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
4926 }
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
4927
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
4928 int
27397
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
4929 x_screen_planes (f)
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
4930 register struct frame *f;
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
4931 {
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
4932 return FRAME_W32_DISPLAY_INFO (f)->n_planes;
13434
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
4933 }
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
4934
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
4935 /* Return the display structure for the display named NAME.
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
4936 Open a new connection if necessary. */
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
4937
16588
481b7874a1e9 Change identifiers of the form win32* to w32*.
Geoff Voelker <voelker@cs.washington.edu>
parents: 16259
diff changeset
4938 struct w32_display_info *
13434
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
4939 x_display_info_for_name (name)
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
4940 Lisp_Object name;
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
4941 {
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
4942 Lisp_Object names;
16588
481b7874a1e9 Change identifiers of the form win32* to w32*.
Geoff Voelker <voelker@cs.washington.edu>
parents: 16259
diff changeset
4943 struct w32_display_info *dpyinfo;
13434
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
4944
40656
cdfd4d09b79a Update usage of CHECK_ macros (remove unused second argument).
Pavel Janík <Pavel@Janik.cz>
parents: 40528
diff changeset
4945 CHECK_STRING (name);
13434
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
4946
16588
481b7874a1e9 Change identifiers of the form win32* to w32*.
Geoff Voelker <voelker@cs.washington.edu>
parents: 16259
diff changeset
4947 for (dpyinfo = &one_w32_display_info, names = w32_display_name_list;
13434
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
4948 dpyinfo;
25646
9154af188477 Use XCAR and XCDR instead of explicit member references.
Ken Raeburn <raeburn@raeburn.org>
parents: 25289
diff changeset
4949 dpyinfo = dpyinfo->next, names = XCDR (names))
13434
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
4950 {
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
4951 Lisp_Object tem;
25646
9154af188477 Use XCAR and XCDR instead of explicit member references.
Ken Raeburn <raeburn@raeburn.org>
parents: 25289
diff changeset
4952 tem = Fstring_equal (XCAR (XCAR (names)), name);
13434
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
4953 if (!NILP (tem))
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
4954 return dpyinfo;
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
4955 }
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
4956
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
4957 /* Use this general default value to start with. */
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
4958 Vx_resource_name = Vinvocation_name;
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
4959
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
4960 validate_x_resource_name ();
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
4961
16588
481b7874a1e9 Change identifiers of the form win32* to w32*.
Geoff Voelker <voelker@cs.washington.edu>
parents: 16259
diff changeset
4962 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
4963 (char *) SDATA (Vx_resource_name));
13434
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
4964
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
4965 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
4966 error ("Cannot connect to server %s", SDATA (name));
13434
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
4967
19707
0181cc080316 Include limits.h and errno.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18508
diff changeset
4968 w32_in_use = 1;
100380
5111bebfbd1c (x_display_info_for_name, Fx_open_connection): Set
Jason Rumney <jasonr@gnu.org>
parents: 99235
diff changeset
4969 XSETFASTINT (Vwindow_system_version, w32_major_version);
13434
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
4970
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
4971 return dpyinfo;
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
4972 }
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
4973
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
4974 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
4975 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
4976 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
4977 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
4978 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
4979 terminate Emacs if we can't open the connection. */)
13434
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
4980 (display, xrm_string, must_succeed)
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
4981 Lisp_Object display, xrm_string, must_succeed;
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
4982 {
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
4983 unsigned char *xrm_option;
16588
481b7874a1e9 Change identifiers of the form win32* to w32*.
Geoff Voelker <voelker@cs.washington.edu>
parents: 16259
diff changeset
4984 struct w32_display_info *dpyinfo;
13434
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
4985
40964
fb970d0c56eb Change doc-string comments to `new style'. [w/`doc:' keyword]. Doc fixes.
Jason Rumney <jasonr@gnu.org>
parents: 40873
diff changeset
4986 /* 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
4987 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
4988 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
4989 return Qnil;
fb970d0c56eb Change doc-string comments to `new style'. [w/`doc:' keyword]. Doc fixes.
Jason Rumney <jasonr@gnu.org>
parents: 40873
diff changeset
4990
40656
cdfd4d09b79a Update usage of CHECK_ macros (remove unused second argument).
Pavel Janík <Pavel@Janik.cz>
parents: 40528
diff changeset
4991 CHECK_STRING (display);
13434
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
4992 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
4993 CHECK_STRING (xrm_string);
13434
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
4994
83571
ca1c27e2707e (x_set_tool_bar_lines): Don't use updating_frame.
Jason Rumney <jasonr@gnu.org>
parents: 76700
diff changeset
4995 #if 0
19707
0181cc080316 Include limits.h and errno.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18508
diff changeset
4996 if (! EQ (Vwindow_system, intern ("w32")))
0181cc080316 Include limits.h and errno.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18508
diff changeset
4997 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
4998 #endif
19707
0181cc080316 Include limits.h and errno.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18508
diff changeset
4999
15147
38c0ce06203f (quit_char, Vwin32_enable_italics, Vwin32_enable_palette):
Geoff Voelker <voelker@cs.washington.edu>
parents: 15034
diff changeset
5000 /* 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
5001 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
5002 {
38c0ce06203f (quit_char, Vwin32_enable_italics, Vwin32_enable_palette):
Geoff Voelker <voelker@cs.washington.edu>
parents: 15034
diff changeset
5003 Lisp_Object color_file;
38c0ce06203f (quit_char, Vwin32_enable_italics, Vwin32_enable_palette):
Geoff Voelker <voelker@cs.washington.edu>
parents: 15034
diff changeset
5004 struct gcpro gcpro1;
38c0ce06203f (quit_char, Vwin32_enable_italics, Vwin32_enable_palette):
Geoff Voelker <voelker@cs.washington.edu>
parents: 15034
diff changeset
5005
79387
0ca197abc593 (Fw32_registered_hot_keys): Don't return the nil values corresponding
Juanma Barranquero <lekktu@gmail.com>
parents: 79381
diff changeset
5006 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
5007
38c0ce06203f (quit_char, Vwin32_enable_italics, Vwin32_enable_palette):
Geoff Voelker <voelker@cs.washington.edu>
parents: 15034
diff changeset
5008 GCPRO1 (color_file);
38c0ce06203f (quit_char, Vwin32_enable_italics, Vwin32_enable_palette):
Geoff Voelker <voelker@cs.washington.edu>
parents: 15034
diff changeset
5009
38c0ce06203f (quit_char, Vwin32_enable_italics, Vwin32_enable_palette):
Geoff Voelker <voelker@cs.washington.edu>
parents: 15034
diff changeset
5010 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
5011 color_file =
38c0ce06203f (quit_char, Vwin32_enable_italics, Vwin32_enable_palette):
Geoff Voelker <voelker@cs.washington.edu>
parents: 15034
diff changeset
5012 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
5013 Fsymbol_value (intern ("data-directory")));
38c0ce06203f (quit_char, Vwin32_enable_italics, Vwin32_enable_palette):
Geoff Voelker <voelker@cs.washington.edu>
parents: 15034
diff changeset
5014
97194
d45e07b45d86 NS port now uses etc/rgb.txt instead of etc/Emacs.clr (now removed); function Fw32_load_color_file moved to xfaces x_load_color_file
Adrian Robert <Adrian.B.Robert@gmail.com>
parents: 97141
diff changeset
5015 Vw32_color_map = Fx_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
5016
38c0ce06203f (quit_char, Vwin32_enable_italics, Vwin32_enable_palette):
Geoff Voelker <voelker@cs.washington.edu>
parents: 15034
diff changeset
5017 UNGCPRO;
38c0ce06203f (quit_char, Vwin32_enable_italics, Vwin32_enable_palette):
Geoff Voelker <voelker@cs.washington.edu>
parents: 15034
diff changeset
5018 }
16588
481b7874a1e9 Change identifiers of the form win32* to w32*.
Geoff Voelker <voelker@cs.washington.edu>
parents: 16259
diff changeset
5019 if (NILP (Vw32_color_map))
481b7874a1e9 Change identifiers of the form win32* to w32*.
Geoff Voelker <voelker@cs.washington.edu>
parents: 16259
diff changeset
5020 Vw32_color_map = Fw32_default_color_map ();
13434
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
5021
51474
0dbfd1fe2e91 (add_system_logical_colors_to_map): New function.
Jason Rumney <jasonr@gnu.org>
parents: 51211
diff changeset
5022 /* Merge in system logical colors. */
0dbfd1fe2e91 (add_system_logical_colors_to_map): New function.
Jason Rumney <jasonr@gnu.org>
parents: 51211
diff changeset
5023 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
5024
13434
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
5025 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
5026 xrm_option = (unsigned char *) SDATA (xrm_string);
13434
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
5027 else
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
5028 xrm_option = (unsigned char *) 0;
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
5029
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
5030 /* 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
5031 /* 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
5032 {
38c0ce06203f (quit_char, Vwin32_enable_italics, Vwin32_enable_palette):
Geoff Voelker <voelker@cs.washington.edu>
parents: 15034
diff changeset
5033 char basename[ MAX_PATH ], *str;
38c0ce06203f (quit_char, Vwin32_enable_italics, Vwin32_enable_palette):
Geoff Voelker <voelker@cs.washington.edu>
parents: 15034
diff changeset
5034
46370
40db0673e6f0 Most uses of XSTRING combined with STRING_BYTES or indirection changed to
Ken Raeburn <raeburn@raeburn.org>
parents: 46293
diff changeset
5035 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
5036 str = strrchr (basename, '.');
38c0ce06203f (quit_char, Vwin32_enable_italics, Vwin32_enable_palette):
Geoff Voelker <voelker@cs.washington.edu>
parents: 15034
diff changeset
5037 if (str) *str = 0;
38c0ce06203f (quit_char, Vwin32_enable_italics, Vwin32_enable_palette):
Geoff Voelker <voelker@cs.washington.edu>
parents: 15034
diff changeset
5038 Vinvocation_name = build_string (basename);
38c0ce06203f (quit_char, Vwin32_enable_italics, Vwin32_enable_palette):
Geoff Voelker <voelker@cs.washington.edu>
parents: 15034
diff changeset
5039 }
13434
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
5040 Vx_resource_name = Vinvocation_name;
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
5041
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
5042 validate_x_resource_name ();
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
5043
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
5044 /* This is what opens the connection and sets x_current_display.
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
5045 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
5046 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
5047 (char *) SDATA (Vx_resource_name));
13434
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
5048
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
5049 if (dpyinfo == 0)
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
5050 {
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
5051 if (!NILP (must_succeed))
14353
d0d8d9d73f7f backout 1.3
Geoff Voelker <voelker@cs.washington.edu>
parents: 14243
diff changeset
5052 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
5053 SDATA (display));
13434
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
5054 else
46370
40db0673e6f0 Most uses of XSTRING combined with STRING_BYTES or indirection changed to
Ken Raeburn <raeburn@raeburn.org>
parents: 46293
diff changeset
5055 error ("Cannot connect to server %s", SDATA (display));
13434
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
5056 }
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
5057
19707
0181cc080316 Include limits.h and errno.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18508
diff changeset
5058 w32_in_use = 1;
0181cc080316 Include limits.h and errno.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18508
diff changeset
5059
100380
5111bebfbd1c (x_display_info_for_name, Fx_open_connection): Set
Jason Rumney <jasonr@gnu.org>
parents: 99235
diff changeset
5060 XSETFASTINT (Vwindow_system_version, w32_major_version);
13434
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
5061 return Qnil;
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
5062 }
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
5063
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
5064 DEFUN ("x-close-connection", Fx_close_connection,
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
5065 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
5066 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
5067 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
5068 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
5069 (display)
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
5070 Lisp_Object display;
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
5071 {
16588
481b7874a1e9 Change identifiers of the form win32* to w32*.
Geoff Voelker <voelker@cs.washington.edu>
parents: 16259
diff changeset
5072 struct w32_display_info *dpyinfo = check_x_display_info (display);
13434
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
5073 int i;
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
5074
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
5075 if (dpyinfo->reference_count > 0)
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
5076 error ("Display still has frames on it");
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
5077
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
5078 BLOCK_INPUT;
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
5079 x_destroy_all_bitmaps (dpyinfo);
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
5080
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
5081 x_delete_display (dpyinfo);
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
5082 UNBLOCK_INPUT;
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
5083
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
5084 return Qnil;
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
5085 }
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
5086
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
5087 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
5088 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
5089 ()
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
5090 {
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
5091 Lisp_Object tail, result;
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
5092
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
5093 result = Qnil;
85372
f7d19cfed7da * xselect.c (x_own_selection, x_handle_selection_clear)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 85311
diff changeset
5094 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
5095 result = Fcons (XCAR (XCAR (tail)), result);
13434
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
5096
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
5097 return result;
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
5098 }
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
5099
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
5100 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
5101 doc: /* This is a noop on W32 systems. */)
cf49091f9de9 (Fx_synchronize): Reindent.
Pavel Janík <Pavel@Janik.cz>
parents: 40964
diff changeset
5102 (on, display)
cf49091f9de9 (Fx_synchronize): Reindent.
Pavel Janík <Pavel@Janik.cz>
parents: 40964
diff changeset
5103 Lisp_Object display, on;
13434
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
5104 {
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
5105 return Qnil;
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
5106 }
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
5107
27397
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
5108
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
5109
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
5110 /***********************************************************************
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
5111 Window properties
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
5112 ***********************************************************************/
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
5113
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
5114 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
5115 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
5116 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
5117 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
5118 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
5119 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
5120 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
5121 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
5122 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
5123 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
5124 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
5125 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
5126 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
5127 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
5128 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
5129 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
5130
0093eae529e8 macfns.c, w32fns.c (Fx_change_window_property):
Jan Djärv <jan.h.d@swipnet.se>
parents: 53798
diff changeset
5131 Value is VALUE. */)
0093eae529e8 macfns.c, w32fns.c (Fx_change_window_property):
Jan Djärv <jan.h.d@swipnet.se>
parents: 53798
diff changeset
5132 (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
5133 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
5134 {
33387
01a10bc04233 (Qw32_charset_hangeul): Rename to match w32 headers.
Jason Rumney <jasonr@gnu.org>
parents: 33216
diff changeset
5135 #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
5136 struct frame *f = check_x_frame (frame);
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
5137 Atom prop_atom;
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
5138
40656
cdfd4d09b79a Update usage of CHECK_ macros (remove unused second argument).
Pavel Janík <Pavel@Janik.cz>
parents: 40528
diff changeset
5139 CHECK_STRING (prop);
cdfd4d09b79a Update usage of CHECK_ macros (remove unused second argument).
Pavel Janík <Pavel@Janik.cz>
parents: 40528
diff changeset
5140 CHECK_STRING (value);
27397
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
5141
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
5142 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
5143 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
5144 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
5145 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
5146 SDATA (value), SCHARS (value));
27397
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
5147
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
5148 /* 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
5149 XFlush (FRAME_W32_DISPLAY (f));
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
5150 UNBLOCK_INPUT;
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
5151
33387
01a10bc04233 (Qw32_charset_hangeul): Rename to match w32 headers.
Jason Rumney <jasonr@gnu.org>
parents: 33216
diff changeset
5152 #endif /* TODO */
27397
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
5153
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
5154 return value;
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
5155 }
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
5156
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
5157
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
5158 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
5159 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
5160 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
5161 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
5162 (prop, frame)
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
5163 Lisp_Object prop, frame;
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
5164 {
33387
01a10bc04233 (Qw32_charset_hangeul): Rename to match w32 headers.
Jason Rumney <jasonr@gnu.org>
parents: 33216
diff changeset
5165 #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
5166
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
5167 struct frame *f = check_x_frame (frame);
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
5168 Atom prop_atom;
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
5169
40656
cdfd4d09b79a Update usage of CHECK_ macros (remove unused second argument).
Pavel Janík <Pavel@Janik.cz>
parents: 40528
diff changeset
5170 CHECK_STRING (prop);
27397
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
5171 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
5172 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
5173 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
5174
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
5175 /* 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
5176 XFlush (FRAME_W32_DISPLAY (f));
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
5177 UNBLOCK_INPUT;
33387
01a10bc04233 (Qw32_charset_hangeul): Rename to match w32 headers.
Jason Rumney <jasonr@gnu.org>
parents: 33216
diff changeset
5178 #endif /* TODO */
27397
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
5179
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
5180 return prop;
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
5181 }
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
5182
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
5183
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
5184 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
5185 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
5186 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
5187 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
5188 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
5189 value. */)
27397
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
5190 (prop, frame)
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
5191 Lisp_Object prop, frame;
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
5192 {
33387
01a10bc04233 (Qw32_charset_hangeul): Rename to match w32 headers.
Jason Rumney <jasonr@gnu.org>
parents: 33216
diff changeset
5193 #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
5194
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
5195 struct frame *f = check_x_frame (frame);
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
5196 Atom prop_atom;
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
5197 int rc;
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
5198 Lisp_Object prop_value = Qnil;
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
5199 char *tmp_data = NULL;
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
5200 Atom actual_type;
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
5201 int actual_format;
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
5202 unsigned long actual_size, bytes_remaining;
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
5203
40656
cdfd4d09b79a Update usage of CHECK_ macros (remove unused second argument).
Pavel Janík <Pavel@Janik.cz>
parents: 40528
diff changeset
5204 CHECK_STRING (prop);
27397
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
5205 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
5206 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
5207 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
5208 prop_atom, 0, 0, False, XA_STRING,
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
5209 &actual_type, &actual_format, &actual_size,
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
5210 &bytes_remaining, (unsigned char **) &tmp_data);
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
5211 if (rc == Success)
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
5212 {
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
5213 int size = bytes_remaining;
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
5214
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
5215 XFree (tmp_data);
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
5216 tmp_data = NULL;
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
5217
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
5218 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
5219 prop_atom, 0, bytes_remaining,
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
5220 False, XA_STRING,
47942
080b4586492b Fix typo in comment.
Juanma Barranquero <lekktu@gmail.com>
parents: 47731
diff changeset
5221 &actual_type, &actual_format,
080b4586492b Fix typo in comment.
Juanma Barranquero <lekktu@gmail.com>
parents: 47731
diff changeset
5222 &actual_size, &bytes_remaining,
27397
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
5223 (unsigned char **) &tmp_data);
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
5224 if (rc == Success)
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
5225 prop_value = make_string (tmp_data, size);
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
5226
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
5227 XFree (tmp_data);
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
5228 }
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
5229
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
5230 UNBLOCK_INPUT;
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
5231
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
5232 return prop_value;
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
5233
33387
01a10bc04233 (Qw32_charset_hangeul): Rename to match w32 headers.
Jason Rumney <jasonr@gnu.org>
parents: 33216
diff changeset
5234 #endif /* TODO */
27397
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
5235 return Qnil;
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
5236 }
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
5237
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
5238
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
5239
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
5240 /***********************************************************************
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
5241 Busy cursor
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
5242 ***********************************************************************/
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
5243
96674
ff312a846b25 * w32fns.c (Fx_create_frame): Remove duplicate unwind_protect.
Jason Rumney <jasonr@gnu.org>
parents: 96664
diff changeset
5244 /* Default number of seconds to wait before displaying an hourglass
ff312a846b25 * w32fns.c (Fx_create_frame): Remove duplicate unwind_protect.
Jason Rumney <jasonr@gnu.org>
parents: 96664
diff changeset
5245 cursor. Duplicated from xdisp.c, but cannot use the version there
ff312a846b25 * w32fns.c (Fx_create_frame): Remove duplicate unwind_protect.
Jason Rumney <jasonr@gnu.org>
parents: 96664
diff changeset
5246 due to lack of atimers on w32. */
ff312a846b25 * w32fns.c (Fx_create_frame): Remove duplicate unwind_protect.
Jason Rumney <jasonr@gnu.org>
parents: 96664
diff changeset
5247 #define DEFAULT_HOURGLASS_DELAY 1
ff312a846b25 * w32fns.c (Fx_create_frame): Remove duplicate unwind_protect.
Jason Rumney <jasonr@gnu.org>
parents: 96664
diff changeset
5248 extern Lisp_Object Vhourglass_delay;
ff312a846b25 * w32fns.c (Fx_create_frame): Remove duplicate unwind_protect.
Jason Rumney <jasonr@gnu.org>
parents: 96664
diff changeset
5249
93075
66248fc5b523 * w32fns.c (hourglass_timer, hourglass_hwnd): New variables.
Jason Rumney <jasonr@gnu.org>
parents: 92940
diff changeset
5250 /* Return non-zero if houglass timer has been started or hourglass is shown. */
96664
b306a69b9d7f applying patch to consolidate non-GUI portion of hourglass implementation as posted at http://thread.gmane.org/gmane.emacs.devel/98341
Adrian Robert <Adrian.B.Robert@gmail.com>
parents: 96662
diff changeset
5251 /* PENDING: if W32 can use atimers (atimer.[hc]) then the common impl in
b306a69b9d7f applying patch to consolidate non-GUI portion of hourglass implementation as posted at http://thread.gmane.org/gmane.emacs.devel/98341
Adrian Robert <Adrian.B.Robert@gmail.com>
parents: 96662
diff changeset
5252 xdisp.c could be used. */
93075
66248fc5b523 * w32fns.c (hourglass_timer, hourglass_hwnd): New variables.
Jason Rumney <jasonr@gnu.org>
parents: 92940
diff changeset
5253
66248fc5b523 * w32fns.c (hourglass_timer, hourglass_hwnd): New variables.
Jason Rumney <jasonr@gnu.org>
parents: 92940
diff changeset
5254 int
66248fc5b523 * w32fns.c (hourglass_timer, hourglass_hwnd): New variables.
Jason Rumney <jasonr@gnu.org>
parents: 92940
diff changeset
5255 hourglass_started ()
66248fc5b523 * w32fns.c (hourglass_timer, hourglass_hwnd): New variables.
Jason Rumney <jasonr@gnu.org>
parents: 92940
diff changeset
5256 {
66248fc5b523 * w32fns.c (hourglass_timer, hourglass_hwnd): New variables.
Jason Rumney <jasonr@gnu.org>
parents: 92940
diff changeset
5257 return hourglass_shown_p || hourglass_timer;
66248fc5b523 * w32fns.c (hourglass_timer, hourglass_hwnd): New variables.
Jason Rumney <jasonr@gnu.org>
parents: 92940
diff changeset
5258 }
36252
a8630c63f7d5 Rename everything containing *busy_cursor* and similar
Gerd Moellmann <gerd@gnu.org>
parents: 36080
diff changeset
5259
a8630c63f7d5 Rename everything containing *busy_cursor* and similar
Gerd Moellmann <gerd@gnu.org>
parents: 36080
diff changeset
5260 /* 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
5261
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
5262 void
36252
a8630c63f7d5 Rename everything containing *busy_cursor* and similar
Gerd Moellmann <gerd@gnu.org>
parents: 36080
diff changeset
5263 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
5264 {
93075
66248fc5b523 * w32fns.c (hourglass_timer, hourglass_hwnd): New variables.
Jason Rumney <jasonr@gnu.org>
parents: 92940
diff changeset
5265 DWORD delay;
66248fc5b523 * w32fns.c (hourglass_timer, hourglass_hwnd): New variables.
Jason Rumney <jasonr@gnu.org>
parents: 92940
diff changeset
5266 int secs, msecs = 0;
66248fc5b523 * w32fns.c (hourglass_timer, hourglass_hwnd): New variables.
Jason Rumney <jasonr@gnu.org>
parents: 92940
diff changeset
5267 struct frame * f = SELECTED_FRAME ();
47942
080b4586492b Fix typo in comment.
Juanma Barranquero <lekktu@gmail.com>
parents: 47731
diff changeset
5268
93319
a461c5c16bd5 (start_hourglass): Suppress hourglass on tty frames.
Jason Rumney <jasonr@gnu.org>
parents: 93075
diff changeset
5269 /* No cursors on non GUI frames. */
a461c5c16bd5 (start_hourglass): Suppress hourglass on tty frames.
Jason Rumney <jasonr@gnu.org>
parents: 93075
diff changeset
5270 if (!FRAME_W32_P (f))
a461c5c16bd5 (start_hourglass): Suppress hourglass on tty frames.
Jason Rumney <jasonr@gnu.org>
parents: 93075
diff changeset
5271 return;
a461c5c16bd5 (start_hourglass): Suppress hourglass on tty frames.
Jason Rumney <jasonr@gnu.org>
parents: 93075
diff changeset
5272
36252
a8630c63f7d5 Rename everything containing *busy_cursor* and similar
Gerd Moellmann <gerd@gnu.org>
parents: 36080
diff changeset
5273 cancel_hourglass ();
a8630c63f7d5 Rename everything containing *busy_cursor* and similar
Gerd Moellmann <gerd@gnu.org>
parents: 36080
diff changeset
5274
a8630c63f7d5 Rename everything containing *busy_cursor* and similar
Gerd Moellmann <gerd@gnu.org>
parents: 36080
diff changeset
5275 if (INTEGERP (Vhourglass_delay)
a8630c63f7d5 Rename everything containing *busy_cursor* and similar
Gerd Moellmann <gerd@gnu.org>
parents: 36080
diff changeset
5276 && XINT (Vhourglass_delay) > 0)
a8630c63f7d5 Rename everything containing *busy_cursor* and similar
Gerd Moellmann <gerd@gnu.org>
parents: 36080
diff changeset
5277 secs = XFASTINT (Vhourglass_delay);
a8630c63f7d5 Rename everything containing *busy_cursor* and similar
Gerd Moellmann <gerd@gnu.org>
parents: 36080
diff changeset
5278 else if (FLOATP (Vhourglass_delay)
a8630c63f7d5 Rename everything containing *busy_cursor* and similar
Gerd Moellmann <gerd@gnu.org>
parents: 36080
diff changeset
5279 && 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
5280 {
2d3d5bf49d4e Format and doc changes to bring closer to xfns.c.
Jason Rumney <jasonr@gnu.org>
parents: 29021
diff changeset
5281 Lisp_Object tem;
36252
a8630c63f7d5 Rename everything containing *busy_cursor* and similar
Gerd Moellmann <gerd@gnu.org>
parents: 36080
diff changeset
5282 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
5283 secs = XFASTINT (tem);
93075
66248fc5b523 * w32fns.c (hourglass_timer, hourglass_hwnd): New variables.
Jason Rumney <jasonr@gnu.org>
parents: 92940
diff changeset
5284 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
5285 }
a8630c63f7d5 Rename everything containing *busy_cursor* and similar
Gerd Moellmann <gerd@gnu.org>
parents: 36080
diff changeset
5286 else
a8630c63f7d5 Rename everything containing *busy_cursor* and similar
Gerd Moellmann <gerd@gnu.org>
parents: 36080
diff changeset
5287 secs = DEFAULT_HOURGLASS_DELAY;
47942
080b4586492b Fix typo in comment.
Juanma Barranquero <lekktu@gmail.com>
parents: 47731
diff changeset
5288
93075
66248fc5b523 * w32fns.c (hourglass_timer, hourglass_hwnd): New variables.
Jason Rumney <jasonr@gnu.org>
parents: 92940
diff changeset
5289 delay = secs * 1000 + msecs;
66248fc5b523 * w32fns.c (hourglass_timer, hourglass_hwnd): New variables.
Jason Rumney <jasonr@gnu.org>
parents: 92940
diff changeset
5290 hourglass_hwnd = FRAME_W32_WINDOW (f);
66248fc5b523 * w32fns.c (hourglass_timer, hourglass_hwnd): New variables.
Jason Rumney <jasonr@gnu.org>
parents: 92940
diff changeset
5291 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
5292 }
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
5293
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
5294
36252
a8630c63f7d5 Rename everything containing *busy_cursor* and similar
Gerd Moellmann <gerd@gnu.org>
parents: 36080
diff changeset
5295 /* 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
5296 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
5297
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
5298 void
36252
a8630c63f7d5 Rename everything containing *busy_cursor* and similar
Gerd Moellmann <gerd@gnu.org>
parents: 36080
diff changeset
5299 cancel_hourglass ()
a8630c63f7d5 Rename everything containing *busy_cursor* and similar
Gerd Moellmann <gerd@gnu.org>
parents: 36080
diff changeset
5300 {
93075
66248fc5b523 * w32fns.c (hourglass_timer, hourglass_hwnd): New variables.
Jason Rumney <jasonr@gnu.org>
parents: 92940
diff changeset
5301 if (hourglass_timer)
66248fc5b523 * w32fns.c (hourglass_timer, hourglass_hwnd): New variables.
Jason Rumney <jasonr@gnu.org>
parents: 92940
diff changeset
5302 {
66248fc5b523 * w32fns.c (hourglass_timer, hourglass_hwnd): New variables.
Jason Rumney <jasonr@gnu.org>
parents: 92940
diff changeset
5303 KillTimer (hourglass_hwnd, hourglass_timer);
66248fc5b523 * w32fns.c (hourglass_timer, hourglass_hwnd): New variables.
Jason Rumney <jasonr@gnu.org>
parents: 92940
diff changeset
5304 hourglass_timer = 0;
36252
a8630c63f7d5 Rename everything containing *busy_cursor* and similar
Gerd Moellmann <gerd@gnu.org>
parents: 36080
diff changeset
5305 }
47942
080b4586492b Fix typo in comment.
Juanma Barranquero <lekktu@gmail.com>
parents: 47731
diff changeset
5306
36252
a8630c63f7d5 Rename everything containing *busy_cursor* and similar
Gerd Moellmann <gerd@gnu.org>
parents: 36080
diff changeset
5307 if (hourglass_shown_p)
96674
ff312a846b25 * w32fns.c (Fx_create_frame): Remove duplicate unwind_protect.
Jason Rumney <jasonr@gnu.org>
parents: 96664
diff changeset
5308 w32_hide_hourglass ();
36252
a8630c63f7d5 Rename everything containing *busy_cursor* and similar
Gerd Moellmann <gerd@gnu.org>
parents: 36080
diff changeset
5309 }
a8630c63f7d5 Rename everything containing *busy_cursor* and similar
Gerd Moellmann <gerd@gnu.org>
parents: 36080
diff changeset
5310
a8630c63f7d5 Rename everything containing *busy_cursor* and similar
Gerd Moellmann <gerd@gnu.org>
parents: 36080
diff changeset
5311
93075
66248fc5b523 * w32fns.c (hourglass_timer, hourglass_hwnd): New variables.
Jason Rumney <jasonr@gnu.org>
parents: 92940
diff changeset
5312 /* Timer function of hourglass_timer.
66248fc5b523 * w32fns.c (hourglass_timer, hourglass_hwnd): New variables.
Jason Rumney <jasonr@gnu.org>
parents: 92940
diff changeset
5313
66248fc5b523 * w32fns.c (hourglass_timer, hourglass_hwnd): New variables.
Jason Rumney <jasonr@gnu.org>
parents: 92940
diff changeset
5314 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
5315 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
5316
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
5317 static void
96674
ff312a846b25 * w32fns.c (Fx_create_frame): Remove duplicate unwind_protect.
Jason Rumney <jasonr@gnu.org>
parents: 96664
diff changeset
5318 w32_show_hourglass (f)
93075
66248fc5b523 * w32fns.c (hourglass_timer, hourglass_hwnd): New variables.
Jason Rumney <jasonr@gnu.org>
parents: 92940
diff changeset
5319 struct frame *f;
66248fc5b523 * w32fns.c (hourglass_timer, hourglass_hwnd): New variables.
Jason Rumney <jasonr@gnu.org>
parents: 92940
diff changeset
5320 {
36252
a8630c63f7d5 Rename everything containing *busy_cursor* and similar
Gerd Moellmann <gerd@gnu.org>
parents: 36080
diff changeset
5321 if (!hourglass_shown_p)
27397
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
5322 {
93075
66248fc5b523 * w32fns.c (hourglass_timer, hourglass_hwnd): New variables.
Jason Rumney <jasonr@gnu.org>
parents: 92940
diff changeset
5323 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
5324 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
5325 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
5326 hourglass_shown_p = 1;
93075
66248fc5b523 * w32fns.c (hourglass_timer, hourglass_hwnd): New variables.
Jason Rumney <jasonr@gnu.org>
parents: 92940
diff changeset
5327 }
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
5328 }
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
5329
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
5330
36252
a8630c63f7d5 Rename everything containing *busy_cursor* and similar
Gerd Moellmann <gerd@gnu.org>
parents: 36080
diff changeset
5331 /* 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
5332
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
5333 static void
96674
ff312a846b25 * w32fns.c (Fx_create_frame): Remove duplicate unwind_protect.
Jason Rumney <jasonr@gnu.org>
parents: 96664
diff changeset
5334 w32_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
5335 {
36252
a8630c63f7d5 Rename everything containing *busy_cursor* and similar
Gerd Moellmann <gerd@gnu.org>
parents: 36080
diff changeset
5336 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
5337 {
93075
66248fc5b523 * w32fns.c (hourglass_timer, hourglass_hwnd): New variables.
Jason Rumney <jasonr@gnu.org>
parents: 92940
diff changeset
5338 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
5339 hourglass_hwnd);
101901
3447d99a0529 (w32_hide_hourglass): Handle case where frame
Jason Rumney <jasonr@gnu.org>
parents: 101276
diff changeset
5340 if (f)
3447d99a0529 (w32_hide_hourglass): Handle case where frame
Jason Rumney <jasonr@gnu.org>
parents: 101276
diff changeset
5341 f->output_data.w32->hourglass_p = 0;
3447d99a0529 (w32_hide_hourglass): Handle case where frame
Jason Rumney <jasonr@gnu.org>
parents: 101276
diff changeset
5342 else
3447d99a0529 (w32_hide_hourglass): Handle case where frame
Jason Rumney <jasonr@gnu.org>
parents: 101276
diff changeset
5343 /* If frame was deleted, restore to selected frame's cursor. */
3447d99a0529 (w32_hide_hourglass): Handle case where frame
Jason Rumney <jasonr@gnu.org>
parents: 101276
diff changeset
5344 f = SELECTED_FRAME ();
3447d99a0529 (w32_hide_hourglass): Handle case where frame
Jason Rumney <jasonr@gnu.org>
parents: 101276
diff changeset
5345
3447d99a0529 (w32_hide_hourglass): Handle case where frame
Jason Rumney <jasonr@gnu.org>
parents: 101276
diff changeset
5346 if (FRAME_W32_P (f))
3447d99a0529 (w32_hide_hourglass): Handle case where frame
Jason Rumney <jasonr@gnu.org>
parents: 101276
diff changeset
5347 SetCursor (f->output_data.w32->current_cursor);
3447d99a0529 (w32_hide_hourglass): Handle case where frame
Jason Rumney <jasonr@gnu.org>
parents: 101276
diff changeset
5348 else
3447d99a0529 (w32_hide_hourglass): Handle case where frame
Jason Rumney <jasonr@gnu.org>
parents: 101276
diff changeset
5349 /* No cursors on non GUI frames - restore to stock arrow cursor. */
3447d99a0529 (w32_hide_hourglass): Handle case where frame
Jason Rumney <jasonr@gnu.org>
parents: 101276
diff changeset
5350 SetCursor (w32_load_cursor (IDC_ARROW));
3447d99a0529 (w32_hide_hourglass): Handle case where frame
Jason Rumney <jasonr@gnu.org>
parents: 101276
diff changeset
5351
36252
a8630c63f7d5 Rename everything containing *busy_cursor* and similar
Gerd Moellmann <gerd@gnu.org>
parents: 36080
diff changeset
5352 hourglass_shown_p = 0;
93075
66248fc5b523 * w32fns.c (hourglass_timer, hourglass_hwnd): New variables.
Jason Rumney <jasonr@gnu.org>
parents: 92940
diff changeset
5353 }
27397
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
5354 }
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
5355
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
5356
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
5357
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
5358 /***********************************************************************
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
5359 Tool tips
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
5360 ***********************************************************************/
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
5361
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
5362 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
5363 Lisp_Object, Lisp_Object));
03eb905a4d8e (Fx_file_dialog): Pass a filter to GetOpenFileName.
Jason Rumney <jasonr@gnu.org>
parents: 40009
diff changeset
5364 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
5365 Lisp_Object, int, int, int *, int *));
47942
080b4586492b Fix typo in comment.
Juanma Barranquero <lekktu@gmail.com>
parents: 47731
diff changeset
5366
40120
03eb905a4d8e (Fx_file_dialog): Pass a filter to GetOpenFileName.
Jason Rumney <jasonr@gnu.org>
parents: 40009
diff changeset
5367 /* 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
5368
34546
51be06b616bf (Fx_hide_tip): Avoid unnecessary work when there's
Andrew Innes <andrewi@gnu.org>
parents: 34314
diff changeset
5369 Lisp_Object tip_frame;
27397
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
5370
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
5371 /* 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
5372 fires. */
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
5373
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
5374 Lisp_Object tip_timer;
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
5375 Window tip_window;
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
5376
40120
03eb905a4d8e (Fx_file_dialog): Pass a filter to GetOpenFileName.
Jason Rumney <jasonr@gnu.org>
parents: 40009
diff changeset
5377 /* 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
5378 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
5379
03eb905a4d8e (Fx_file_dialog): Pass a filter to GetOpenFileName.
Jason Rumney <jasonr@gnu.org>
parents: 40009
diff changeset
5380 Lisp_Object last_show_tip_args;
03eb905a4d8e (Fx_file_dialog): Pass a filter to GetOpenFileName.
Jason Rumney <jasonr@gnu.org>
parents: 40009
diff changeset
5381
03eb905a4d8e (Fx_file_dialog): Pass a filter to GetOpenFileName.
Jason Rumney <jasonr@gnu.org>
parents: 40009
diff changeset
5382 /* 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
5383
03eb905a4d8e (Fx_file_dialog): Pass a filter to GetOpenFileName.
Jason Rumney <jasonr@gnu.org>
parents: 40009
diff changeset
5384 Lisp_Object Vx_max_tooltip_size;
03eb905a4d8e (Fx_file_dialog): Pass a filter to GetOpenFileName.
Jason Rumney <jasonr@gnu.org>
parents: 40009
diff changeset
5385
03eb905a4d8e (Fx_file_dialog): Pass a filter to GetOpenFileName.
Jason Rumney <jasonr@gnu.org>
parents: 40009
diff changeset
5386
34546
51be06b616bf (Fx_hide_tip): Avoid unnecessary work when there's
Andrew Innes <andrewi@gnu.org>
parents: 34314
diff changeset
5387 static Lisp_Object
51be06b616bf (Fx_hide_tip): Avoid unnecessary work when there's
Andrew Innes <andrewi@gnu.org>
parents: 34314
diff changeset
5388 unwind_create_tip_frame (frame)
51be06b616bf (Fx_hide_tip): Avoid unnecessary work when there's
Andrew Innes <andrewi@gnu.org>
parents: 34314
diff changeset
5389 Lisp_Object frame;
51be06b616bf (Fx_hide_tip): Avoid unnecessary work when there's
Andrew Innes <andrewi@gnu.org>
parents: 34314
diff changeset
5390 {
34638
abb4510a89f6 (unwind_create_frame): Return t if frame was deleted.
Gerd Moellmann <gerd@gnu.org>
parents: 34546
diff changeset
5391 Lisp_Object deleted;
abb4510a89f6 (unwind_create_frame): Return t if frame was deleted.
Gerd Moellmann <gerd@gnu.org>
parents: 34546
diff changeset
5392
abb4510a89f6 (unwind_create_frame): Return t if frame was deleted.
Gerd Moellmann <gerd@gnu.org>
parents: 34546
diff changeset
5393 deleted = unwind_create_frame (frame);
abb4510a89f6 (unwind_create_frame): Return t if frame was deleted.
Gerd Moellmann <gerd@gnu.org>
parents: 34546
diff changeset
5394 if (EQ (deleted, Qt))
abb4510a89f6 (unwind_create_frame): Return t if frame was deleted.
Gerd Moellmann <gerd@gnu.org>
parents: 34546
diff changeset
5395 {
abb4510a89f6 (unwind_create_frame): Return t if frame was deleted.
Gerd Moellmann <gerd@gnu.org>
parents: 34546
diff changeset
5396 tip_window = NULL;
abb4510a89f6 (unwind_create_frame): Return t if frame was deleted.
Gerd Moellmann <gerd@gnu.org>
parents: 34546
diff changeset
5397 tip_frame = Qnil;
abb4510a89f6 (unwind_create_frame): Return t if frame was deleted.
Gerd Moellmann <gerd@gnu.org>
parents: 34546
diff changeset
5398 }
47942
080b4586492b Fix typo in comment.
Juanma Barranquero <lekktu@gmail.com>
parents: 47731
diff changeset
5399
34638
abb4510a89f6 (unwind_create_frame): Return t if frame was deleted.
Gerd Moellmann <gerd@gnu.org>
parents: 34546
diff changeset
5400 return deleted;
34546
51be06b616bf (Fx_hide_tip): Avoid unnecessary work when there's
Andrew Innes <andrewi@gnu.org>
parents: 34314
diff changeset
5401 }
51be06b616bf (Fx_hide_tip): Avoid unnecessary work when there's
Andrew Innes <andrewi@gnu.org>
parents: 34314
diff changeset
5402
51be06b616bf (Fx_hide_tip): Avoid unnecessary work when there's
Andrew Innes <andrewi@gnu.org>
parents: 34314
diff changeset
5403
27397
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
5404 /* 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
5405 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
5406 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
5407
51be06b616bf (Fx_hide_tip): Avoid unnecessary work when there's
Andrew Innes <andrewi@gnu.org>
parents: 34314
diff changeset
5408 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
5409 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
5410 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
5411 when this happens. */
27397
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
5412
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
5413 static Lisp_Object
40120
03eb905a4d8e (Fx_file_dialog): Pass a filter to GetOpenFileName.
Jason Rumney <jasonr@gnu.org>
parents: 40009
diff changeset
5414 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
5415 struct w32_display_info *dpyinfo;
40120
03eb905a4d8e (Fx_file_dialog): Pass a filter to GetOpenFileName.
Jason Rumney <jasonr@gnu.org>
parents: 40009
diff changeset
5416 Lisp_Object parms, text;
27397
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
5417 {
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
5418 struct frame *f;
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
5419 Lisp_Object frame, tem;
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
5420 Lisp_Object name;
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
5421 long window_prompting = 0;
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
5422 int width, height;
46285
3f111801efb4 Rename BINDING_STACK_SIZE to SPECPDL_INDEX.
Juanma Barranquero <lekktu@gmail.com>
parents: 46272
diff changeset
5423 int count = SPECPDL_INDEX ();
27397
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
5424 struct gcpro gcpro1, gcpro2, gcpro3;
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
5425 struct kboard *kb;
40120
03eb905a4d8e (Fx_file_dialog): Pass a filter to GetOpenFileName.
Jason Rumney <jasonr@gnu.org>
parents: 40009
diff changeset
5426 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
5427 Lisp_Object buffer;
03eb905a4d8e (Fx_file_dialog): Pass a filter to GetOpenFileName.
Jason Rumney <jasonr@gnu.org>
parents: 40009
diff changeset
5428 struct buffer *old_buffer;
27397
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
5429
41380
aff1b15f295b (x_window_to_frame): Remove irrelevant TODO comment.
Jason Rumney <jasonr@gnu.org>
parents: 41322
diff changeset
5430 check_w32 ();
27397
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
5431
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
5432 /* 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
5433 this frame has a specified name. */
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
5434 Vx_resource_name = Vinvocation_name;
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
5435
83878
f65f55d787ec Horizontal mouse wheel support:
Jason Rumney <jasonr@gnu.org>
parents: 83648
diff changeset
5436 kb = dpyinfo->terminal->kboard;
27397
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
5437
107753
3153ca396956 Fix bug #5703.
Eli Zaretskii <eliz@gnu.org>
parents: 106815
diff changeset
5438 /* The calls to x_get_arg remove elements from PARMS, so copy it to
3153ca396956 Fix bug #5703.
Eli Zaretskii <eliz@gnu.org>
parents: 106815
diff changeset
5439 avoid destructive changes behind our caller's back. */
3153ca396956 Fix bug #5703.
Eli Zaretskii <eliz@gnu.org>
parents: 106815
diff changeset
5440 parms = Fcopy_alist (parms);
3153ca396956 Fix bug #5703.
Eli Zaretskii <eliz@gnu.org>
parents: 106815
diff changeset
5441
27397
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
5442 /* Get the name of the frame to use for resource lookup. */
96662
5418ff994d7c (w32_get_arg): Remove wrapper function.
Jason Rumney <jasonr@gnu.org>
parents: 96555
diff changeset
5443 name = x_get_arg (dpyinfo, parms, Qname, "name", "Name", RES_TYPE_STRING);
27397
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
5444 if (!STRINGP (name)
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
5445 && !EQ (name, Qunbound)
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
5446 && !NILP (name))
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
5447 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
5448 Vx_resource_name = name;
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
5449
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
5450 frame = Qnil;
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
5451 GCPRO3 (parms, name, frame);
41732
0d9b74cd27cd (trackmouse_window, track_mouse_event_fn): New vars.
Jason Rumney <jasonr@gnu.org>
parents: 41726
diff changeset
5452 /* 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
5453 f = make_frame (0);
0d9b74cd27cd (trackmouse_window, track_mouse_event_fn): New vars.
Jason Rumney <jasonr@gnu.org>
parents: 41726
diff changeset
5454 f->wants_modeline = 0;
27397
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
5455 XSETFRAME (frame, f);
40120
03eb905a4d8e (Fx_file_dialog): Pass a filter to GetOpenFileName.
Jason Rumney <jasonr@gnu.org>
parents: 40009
diff changeset
5456
03eb905a4d8e (Fx_file_dialog): Pass a filter to GetOpenFileName.
Jason Rumney <jasonr@gnu.org>
parents: 40009
diff changeset
5457 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
5458 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
5459 old_buffer = current_buffer;
03eb905a4d8e (Fx_file_dialog): Pass a filter to GetOpenFileName.
Jason Rumney <jasonr@gnu.org>
parents: 40009
diff changeset
5460 set_buffer_internal_1 (XBUFFER (buffer));
03eb905a4d8e (Fx_file_dialog): Pass a filter to GetOpenFileName.
Jason Rumney <jasonr@gnu.org>
parents: 40009
diff changeset
5461 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
5462 specbind (Qinhibit_read_only, Qt);
43663119f752 (x_create_tip_frame): Bind inhibit-read-only and
Kenichi Handa <handa@m17n.org>
parents: 55468
diff changeset
5463 specbind (Qinhibit_modification_hooks, Qt);
40120
03eb905a4d8e (Fx_file_dialog): Pass a filter to GetOpenFileName.
Jason Rumney <jasonr@gnu.org>
parents: 40009
diff changeset
5464 Ferase_buffer ();
03eb905a4d8e (Fx_file_dialog): Pass a filter to GetOpenFileName.
Jason Rumney <jasonr@gnu.org>
parents: 40009
diff changeset
5465 Finsert (1, &text);
03eb905a4d8e (Fx_file_dialog): Pass a filter to GetOpenFileName.
Jason Rumney <jasonr@gnu.org>
parents: 40009
diff changeset
5466 set_buffer_internal_1 (old_buffer);
47942
080b4586492b Fix typo in comment.
Juanma Barranquero <lekktu@gmail.com>
parents: 47731
diff changeset
5467
27397
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
5468 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
5469 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
5470
40120
03eb905a4d8e (Fx_file_dialog): Pass a filter to GetOpenFileName.
Jason Rumney <jasonr@gnu.org>
parents: 40009
diff changeset
5471 /* 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
5472 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
5473 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
5474 counts etc. */
83608
2ad761d6b244 (x_create_tip_frame): Set terminal and ref count.
Jason Rumney <jasonr@gnu.org>
parents: 83571
diff changeset
5475 f->terminal = dpyinfo->terminal;
2ad761d6b244 (x_create_tip_frame): Set terminal and ref count.
Jason Rumney <jasonr@gnu.org>
parents: 83571
diff changeset
5476 f->terminal->reference_count++;
27516
8001542eaee2 (w32_defined_color): Check for valid frame before
Jason Rumney <jasonr@gnu.org>
parents: 27407
diff changeset
5477 f->output_method = output_w32;
27397
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
5478 f->output_data.w32 =
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
5479 (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
5480 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
5481
aff1b15f295b (x_window_to_frame): Remove irrelevant TODO comment.
Jason Rumney <jasonr@gnu.org>
parents: 41322
diff changeset
5482 FRAME_FONTSET (f) = -1;
27397
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
5483 f->icon_name = Qnil;
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
5484
100982
7c89b12c3a26 (Vx_pointer_shape, Vx_nontext_pointer_shape)
Jason Rumney <jasonr@gnu.org>
parents: 100951
diff changeset
5485 #if GLYPH_DEBUG
92109
4d9fc08769fa Consolidate the image_cache to the terminal struct.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 91327
diff changeset
5486 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
5487 dpyinfo_refcount = dpyinfo->reference_count;
51be06b616bf (Fx_hide_tip): Avoid unnecessary work when there's
Andrew Innes <andrewi@gnu.org>
parents: 34314
diff changeset
5488 #endif /* GLYPH_DEBUG */
27397
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
5489 FRAME_KBOARD (f) = kb;
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
5490 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
5491 f->output_data.w32->explicit_parent = 0;
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
5492
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
5493 /* 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
5494 be set. */
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
5495 if (EQ (name, Qunbound) || NILP (name))
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
5496 {
41380
aff1b15f295b (x_window_to_frame): Remove irrelevant TODO comment.
Jason Rumney <jasonr@gnu.org>
parents: 41322
diff changeset
5497 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
5498 f->explicit_name = 0;
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
5499 }
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
5500 else
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
5501 {
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
5502 f->name = name;
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
5503 f->explicit_name = 1;
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
5504 /* 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
5505 specbind (Qx_resource_name, name);
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
5506 }
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
5507
90893
c36f1ca93a6e (x_default_font_parameter): Use new style font name.
Jason Rumney <jasonr@gnu.org>
parents: 90878
diff changeset
5508 f->resx = dpyinfo->resx;
c36f1ca93a6e (x_default_font_parameter): Use new style font name.
Jason Rumney <jasonr@gnu.org>
parents: 90878
diff changeset
5509 f->resy = dpyinfo->resy;
c36f1ca93a6e (x_default_font_parameter): Use new style font name.
Jason Rumney <jasonr@gnu.org>
parents: 90878
diff changeset
5510
103305
ba9d933971ca (x_create_tip_frame): Use the uniscribe font backend if
Jason Rumney <jasonr@gnu.org>
parents: 102584
diff changeset
5511 if (uniscribe_available)
ba9d933971ca (x_create_tip_frame): Use the uniscribe font backend if
Jason Rumney <jasonr@gnu.org>
parents: 102584
diff changeset
5512 register_font_driver (&uniscribe_font_driver, f);
94917
e61553aa7a73 Throughout the file, delete all USE_FONT_BACKEND
Kenichi Handa <handa@m17n.org>
parents: 94618
diff changeset
5513 register_font_driver (&w32font_driver, f);
e61553aa7a73 Throughout the file, delete all USE_FONT_BACKEND
Kenichi Handa <handa@m17n.org>
parents: 94618
diff changeset
5514
e61553aa7a73 Throughout the file, delete all USE_FONT_BACKEND
Kenichi Handa <handa@m17n.org>
parents: 94618
diff changeset
5515 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
5516 "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
5517
27397
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
5518 /* 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
5519 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
5520 x_default_font_parameter (f, parms);
27397
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
5521
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
5522 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
5523 "borderWidth", "BorderWidth", RES_TYPE_NUMBER);
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
5524 /* 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
5525 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
5526 it). */
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
5527 if (NILP (Fassq (Qinternal_border_width, parms)))
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
5528 {
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
5529 Lisp_Object value;
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
5530
96662
5418ff994d7c (w32_get_arg): Remove wrapper function.
Jason Rumney <jasonr@gnu.org>
parents: 96555
diff changeset
5531 value = x_get_arg (dpyinfo, parms, Qinternal_border_width,
27397
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
5532 "internalBorder", "internalBorder", RES_TYPE_NUMBER);
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
5533 if (! EQ (value, Qunbound))
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
5534 parms = Fcons (Fcons (Qinternal_border_width, value),
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
5535 parms);
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
5536 }
41448
96beda35d0fa (w32_wnd_proc) <WM_MENUSELECT>: Revert last change.
Jason Rumney <jasonr@gnu.org>
parents: 41380
diff changeset
5537 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
5538 "internalBorderWidth", "internalBorderWidth",
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
5539 RES_TYPE_NUMBER);
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
5540
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
5541 /* 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
5542 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
5543 "foreground", "Foreground", RES_TYPE_STRING);
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
5544 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
5545 "background", "Background", RES_TYPE_STRING);
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
5546 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
5547 "pointerColor", "Foreground", RES_TYPE_STRING);
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
5548 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
5549 "cursorColor", "Foreground", RES_TYPE_STRING);
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
5550 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
5551 "borderColor", "BorderColor", RES_TYPE_STRING);
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
5552
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
5553 /* 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
5554 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
5555 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
5556 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
5557 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
5558 happen. */
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
5559 init_frame_faces (f);
41380
aff1b15f295b (x_window_to_frame): Remove irrelevant TODO comment.
Jason Rumney <jasonr@gnu.org>
parents: 41322
diff changeset
5560
aff1b15f295b (x_window_to_frame): Remove irrelevant TODO comment.
Jason Rumney <jasonr@gnu.org>
parents: 41322
diff changeset
5561 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
5562 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
5563
50362
6d942c1d5f2d * w32fns.c (Qauto_raise, Qauto_lower, ...): Remove vars for frame
Kim F. Storm <storm@cua.dk>
parents: 50229
diff changeset
5564 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
5565
41732
0d9b74cd27cd (trackmouse_window, track_mouse_event_fn): New vars.
Jason Rumney <jasonr@gnu.org>
parents: 41726
diff changeset
5566 /* No fringes on tip frame. */
51211
28ea05de2dc5 Make (many) trivial substitutions for renamed and
Kim F. Storm <storm@cua.dk>
parents: 50377
diff changeset
5567 f->fringe_cols = 0;
28ea05de2dc5 Make (many) trivial substitutions for renamed and
Kim F. Storm <storm@cua.dk>
parents: 50377
diff changeset
5568 f->left_fringe_width = 0;
28ea05de2dc5 Make (many) trivial substitutions for renamed and
Kim F. Storm <storm@cua.dk>
parents: 50377
diff changeset
5569 f->right_fringe_width = 0;
41732
0d9b74cd27cd (trackmouse_window, track_mouse_event_fn): New vars.
Jason Rumney <jasonr@gnu.org>
parents: 41726
diff changeset
5570
41380
aff1b15f295b (x_window_to_frame): Remove irrelevant TODO comment.
Jason Rumney <jasonr@gnu.org>
parents: 41322
diff changeset
5571 BLOCK_INPUT;
aff1b15f295b (x_window_to_frame): Remove irrelevant TODO comment.
Jason Rumney <jasonr@gnu.org>
parents: 41322
diff changeset
5572 my_create_tip_window (f);
aff1b15f295b (x_window_to_frame): Remove irrelevant TODO comment.
Jason Rumney <jasonr@gnu.org>
parents: 41322
diff changeset
5573 UNBLOCK_INPUT;
27397
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
5574
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
5575 x_make_gc (f);
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
5576
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
5577 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
5578 "autoRaise", "AutoRaiseLower", RES_TYPE_BOOLEAN);
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
5579 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
5580 "autoLower", "AutoRaiseLower", RES_TYPE_BOOLEAN);
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
5581 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
5582 "cursorType", "CursorType", RES_TYPE_SYMBOL);
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
5583
51211
28ea05de2dc5 Make (many) trivial substitutions for renamed and
Kim F. Storm <storm@cua.dk>
parents: 50377
diff changeset
5584 /* 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
5585 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
5586 FRAME_LINES (f). */
28ea05de2dc5 Make (many) trivial substitutions for renamed and
Kim F. Storm <storm@cua.dk>
parents: 50377
diff changeset
5587 width = FRAME_COLS (f);
28ea05de2dc5 Make (many) trivial substitutions for renamed and
Kim F. Storm <storm@cua.dk>
parents: 50377
diff changeset
5588 height = FRAME_LINES (f);
28ea05de2dc5 Make (many) trivial substitutions for renamed and
Kim F. Storm <storm@cua.dk>
parents: 50377
diff changeset
5589 FRAME_LINES (f) = 0;
28ea05de2dc5 Make (many) trivial substitutions for renamed and
Kim F. Storm <storm@cua.dk>
parents: 50377
diff changeset
5590 SET_FRAME_COLS (f, 0);
27397
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
5591 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
5592
47731
755c4233cfba * frame.c (Vdelete_frame_functions): New variable.
John Paul Wallington <jpw@pobox.com>
parents: 47161
diff changeset
5593 /* Add `tooltip' frame parameter's default value. */
109290
1b5ca039f5f2 Fix faulty `if' statement in delete_frame.
Chong Yidong <cyd@stupidchicken.com>
parents: 108496
diff changeset
5594 if (NILP (Fframe_parameter (frame, Qtooltip)))
1b5ca039f5f2 Fix faulty `if' statement in delete_frame.
Chong Yidong <cyd@stupidchicken.com>
parents: 108496
diff changeset
5595 Fmodify_frame_parameters (frame, Fcons (Fcons (Qtooltip, Qt), Qnil));
47942
080b4586492b Fix typo in comment.
Juanma Barranquero <lekktu@gmail.com>
parents: 47731
diff changeset
5596
40120
03eb905a4d8e (Fx_file_dialog): Pass a filter to GetOpenFileName.
Jason Rumney <jasonr@gnu.org>
parents: 40009
diff changeset
5597 /* 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
5598 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
5599
03eb905a4d8e (Fx_file_dialog): Pass a filter to GetOpenFileName.
Jason Rumney <jasonr@gnu.org>
parents: 40009
diff changeset
5600 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
5601 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
5602 `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
5603 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
5604 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
5605 {
03eb905a4d8e (Fx_file_dialog): Pass a filter to GetOpenFileName.
Jason Rumney <jasonr@gnu.org>
parents: 40009
diff changeset
5606 Lisp_Object bg = Fframe_parameter (frame, Qbackground_color);
99235
eccf5258acaf * w32fns.c (x_create_tip_frame): Prevent default foreground color for
Juanma Barranquero <lekktu@gmail.com>
parents: 99024
diff changeset
5607 Lisp_Object fg = Fframe_parameter (frame, Qforeground_color);
eccf5258acaf * w32fns.c (x_create_tip_frame): Prevent default foreground color for
Juanma Barranquero <lekktu@gmail.com>
parents: 99024
diff changeset
5608 Lisp_Object colors = Qnil;
40120
03eb905a4d8e (Fx_file_dialog): Pass a filter to GetOpenFileName.
Jason Rumney <jasonr@gnu.org>
parents: 40009
diff changeset
5609
03eb905a4d8e (Fx_file_dialog): Pass a filter to GetOpenFileName.
Jason Rumney <jasonr@gnu.org>
parents: 40009
diff changeset
5610 /* Set tip_frame here, so that */
03eb905a4d8e (Fx_file_dialog): Pass a filter to GetOpenFileName.
Jason Rumney <jasonr@gnu.org>
parents: 40009
diff changeset
5611 tip_frame = frame;
96555
0813ecd85cb5 (x_create_tip_frame): Pass parameter argument to
Chong Yidong <cyd@stupidchicken.com>
parents: 96538
diff changeset
5612 call2 (Qface_set_after_frame_default, frame, Qnil);
47942
080b4586492b Fix typo in comment.
Juanma Barranquero <lekktu@gmail.com>
parents: 47731
diff changeset
5613
40120
03eb905a4d8e (Fx_file_dialog): Pass a filter to GetOpenFileName.
Jason Rumney <jasonr@gnu.org>
parents: 40009
diff changeset
5614 if (!EQ (bg, Fframe_parameter (frame, Qbackground_color)))
99235
eccf5258acaf * w32fns.c (x_create_tip_frame): Prevent default foreground color for
Juanma Barranquero <lekktu@gmail.com>
parents: 99024
diff changeset
5615 colors = Fcons (Fcons (Qbackground_color, bg), colors);
eccf5258acaf * w32fns.c (x_create_tip_frame): Prevent default foreground color for
Juanma Barranquero <lekktu@gmail.com>
parents: 99024
diff changeset
5616 if (!EQ (fg, Fframe_parameter (frame, Qforeground_color)))
eccf5258acaf * w32fns.c (x_create_tip_frame): Prevent default foreground color for
Juanma Barranquero <lekktu@gmail.com>
parents: 99024
diff changeset
5617 colors = Fcons (Fcons (Qforeground_color, fg), colors);
eccf5258acaf * w32fns.c (x_create_tip_frame): Prevent default foreground color for
Juanma Barranquero <lekktu@gmail.com>
parents: 99024
diff changeset
5618
eccf5258acaf * w32fns.c (x_create_tip_frame): Prevent default foreground color for
Juanma Barranquero <lekktu@gmail.com>
parents: 99024
diff changeset
5619 if (!NILP (colors))
eccf5258acaf * w32fns.c (x_create_tip_frame): Prevent default foreground color for
Juanma Barranquero <lekktu@gmail.com>
parents: 99024
diff changeset
5620 Fmodify_frame_parameters (frame, colors);
40120
03eb905a4d8e (Fx_file_dialog): Pass a filter to GetOpenFileName.
Jason Rumney <jasonr@gnu.org>
parents: 40009
diff changeset
5621 }
47942
080b4586492b Fix typo in comment.
Juanma Barranquero <lekktu@gmail.com>
parents: 47731
diff changeset
5622
27397
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
5623 f->no_split = 1;
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
5624
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
5625 UNGCPRO;
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
5626
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
5627 /* 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
5628 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
5629 visible won't work. */
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
5630 Vframe_list = Fcons (frame, Vframe_list);
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
5631
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
5632 /* 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
5633 its display. */
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
5634 FRAME_W32_DISPLAY_INFO (f)->reference_count++;
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
5635
40120
03eb905a4d8e (Fx_file_dialog): Pass a filter to GetOpenFileName.
Jason Rumney <jasonr@gnu.org>
parents: 40009
diff changeset
5636 /* 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
5637 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
5638 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
5639 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
5640 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
5641 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
5642
03eb905a4d8e (Fx_file_dialog): Pass a filter to GetOpenFileName.
Jason Rumney <jasonr@gnu.org>
parents: 40009
diff changeset
5643 /* Discard the unwind_protect. */
27397
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
5644 return unbind_to (count, frame);
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
5645 }
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
5646
40120
03eb905a4d8e (Fx_file_dialog): Pass a filter to GetOpenFileName.
Jason Rumney <jasonr@gnu.org>
parents: 40009
diff changeset
5647
03eb905a4d8e (Fx_file_dialog): Pass a filter to GetOpenFileName.
Jason Rumney <jasonr@gnu.org>
parents: 40009
diff changeset
5648 /* 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
5649 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
5650 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
5651 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
5652 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
5653
03eb905a4d8e (Fx_file_dialog): Pass a filter to GetOpenFileName.
Jason Rumney <jasonr@gnu.org>
parents: 40009
diff changeset
5654 static void
03eb905a4d8e (Fx_file_dialog): Pass a filter to GetOpenFileName.
Jason Rumney <jasonr@gnu.org>
parents: 40009
diff changeset
5655 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
5656 struct frame *f;
03eb905a4d8e (Fx_file_dialog): Pass a filter to GetOpenFileName.
Jason Rumney <jasonr@gnu.org>
parents: 40009
diff changeset
5657 Lisp_Object parms, dx, dy;
03eb905a4d8e (Fx_file_dialog): Pass a filter to GetOpenFileName.
Jason Rumney <jasonr@gnu.org>
parents: 40009
diff changeset
5658 int width, height;
03eb905a4d8e (Fx_file_dialog): Pass a filter to GetOpenFileName.
Jason Rumney <jasonr@gnu.org>
parents: 40009
diff changeset
5659 int *root_x, *root_y;
03eb905a4d8e (Fx_file_dialog): Pass a filter to GetOpenFileName.
Jason Rumney <jasonr@gnu.org>
parents: 40009
diff changeset
5660 {
03eb905a4d8e (Fx_file_dialog): Pass a filter to GetOpenFileName.
Jason Rumney <jasonr@gnu.org>
parents: 40009
diff changeset
5661 Lisp_Object left, top;
92935
c99b62a964c4 (MONITOR_DEFAULT_TO_NEAREST, struct MONITOR_INFO)
Jason Rumney <jasonr@gnu.org>
parents: 92362
diff changeset
5662 int min_x, min_y, max_x, max_y;
47942
080b4586492b Fix typo in comment.
Juanma Barranquero <lekktu@gmail.com>
parents: 47731
diff changeset
5663
40120
03eb905a4d8e (Fx_file_dialog): Pass a filter to GetOpenFileName.
Jason Rumney <jasonr@gnu.org>
parents: 40009
diff changeset
5664 /* User-specified position? */
03eb905a4d8e (Fx_file_dialog): Pass a filter to GetOpenFileName.
Jason Rumney <jasonr@gnu.org>
parents: 40009
diff changeset
5665 left = Fcdr (Fassq (Qleft, parms));
03eb905a4d8e (Fx_file_dialog): Pass a filter to GetOpenFileName.
Jason Rumney <jasonr@gnu.org>
parents: 40009
diff changeset
5666 top = Fcdr (Fassq (Qtop, parms));
47942
080b4586492b Fix typo in comment.
Juanma Barranquero <lekktu@gmail.com>
parents: 47731
diff changeset
5667
40120
03eb905a4d8e (Fx_file_dialog): Pass a filter to GetOpenFileName.
Jason Rumney <jasonr@gnu.org>
parents: 40009
diff changeset
5668 /* 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
5669 show it. */
41380
aff1b15f295b (x_window_to_frame): Remove irrelevant TODO comment.
Jason Rumney <jasonr@gnu.org>
parents: 41322
diff changeset
5670 if (!INTEGERP (left) || !INTEGERP (top))
aff1b15f295b (x_window_to_frame): Remove irrelevant TODO comment.
Jason Rumney <jasonr@gnu.org>
parents: 41322
diff changeset
5671 {
aff1b15f295b (x_window_to_frame): Remove irrelevant TODO comment.
Jason Rumney <jasonr@gnu.org>
parents: 41322
diff changeset
5672 POINT pt;
aff1b15f295b (x_window_to_frame): Remove irrelevant TODO comment.
Jason Rumney <jasonr@gnu.org>
parents: 41322
diff changeset
5673
92935
c99b62a964c4 (MONITOR_DEFAULT_TO_NEAREST, struct MONITOR_INFO)
Jason Rumney <jasonr@gnu.org>
parents: 92362
diff changeset
5674 /* Default min and max values. */
c99b62a964c4 (MONITOR_DEFAULT_TO_NEAREST, struct MONITOR_INFO)
Jason Rumney <jasonr@gnu.org>
parents: 92362
diff changeset
5675 min_x = 0;
c99b62a964c4 (MONITOR_DEFAULT_TO_NEAREST, struct MONITOR_INFO)
Jason Rumney <jasonr@gnu.org>
parents: 92362
diff changeset
5676 min_y = 0;
98240
5f73593cabcd * frame.c (x_fullscreen_adjust): Declare var as Display_Info.
Juanma Barranquero <lekktu@gmail.com>
parents: 97493
diff changeset
5677 max_x = x_display_pixel_width (FRAME_W32_DISPLAY_INFO (f));
5f73593cabcd * frame.c (x_fullscreen_adjust): Declare var as Display_Info.
Juanma Barranquero <lekktu@gmail.com>
parents: 97493
diff changeset
5678 max_y = x_display_pixel_height (FRAME_W32_DISPLAY_INFO (f));
92935
c99b62a964c4 (MONITOR_DEFAULT_TO_NEAREST, struct MONITOR_INFO)
Jason Rumney <jasonr@gnu.org>
parents: 92362
diff changeset
5679
40120
03eb905a4d8e (Fx_file_dialog): Pass a filter to GetOpenFileName.
Jason Rumney <jasonr@gnu.org>
parents: 40009
diff changeset
5680 BLOCK_INPUT;
41380
aff1b15f295b (x_window_to_frame): Remove irrelevant TODO comment.
Jason Rumney <jasonr@gnu.org>
parents: 41322
diff changeset
5681 GetCursorPos (&pt);
aff1b15f295b (x_window_to_frame): Remove irrelevant TODO comment.
Jason Rumney <jasonr@gnu.org>
parents: 41322
diff changeset
5682 *root_x = pt.x;
aff1b15f295b (x_window_to_frame): Remove irrelevant TODO comment.
Jason Rumney <jasonr@gnu.org>
parents: 41322
diff changeset
5683 *root_y = pt.y;
40120
03eb905a4d8e (Fx_file_dialog): Pass a filter to GetOpenFileName.
Jason Rumney <jasonr@gnu.org>
parents: 40009
diff changeset
5684 UNBLOCK_INPUT;
92935
c99b62a964c4 (MONITOR_DEFAULT_TO_NEAREST, struct MONITOR_INFO)
Jason Rumney <jasonr@gnu.org>
parents: 92362
diff changeset
5685
c99b62a964c4 (MONITOR_DEFAULT_TO_NEAREST, struct MONITOR_INFO)
Jason Rumney <jasonr@gnu.org>
parents: 92362
diff changeset
5686 /* 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
5687 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
5688 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
5689 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
5690 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
5691 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
5692 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
5693 {
c99b62a964c4 (MONITOR_DEFAULT_TO_NEAREST, struct MONITOR_INFO)
Jason Rumney <jasonr@gnu.org>
parents: 92362
diff changeset
5694 struct MONITOR_INFO info;
c99b62a964c4 (MONITOR_DEFAULT_TO_NEAREST, struct MONITOR_INFO)
Jason Rumney <jasonr@gnu.org>
parents: 92362
diff changeset
5695 HMONITOR monitor
c99b62a964c4 (MONITOR_DEFAULT_TO_NEAREST, struct MONITOR_INFO)
Jason Rumney <jasonr@gnu.org>
parents: 92362
diff changeset
5696 = 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
5697 info.cbSize = sizeof (info);
c99b62a964c4 (MONITOR_DEFAULT_TO_NEAREST, struct MONITOR_INFO)
Jason Rumney <jasonr@gnu.org>
parents: 92362
diff changeset
5698
c99b62a964c4 (MONITOR_DEFAULT_TO_NEAREST, struct MONITOR_INFO)
Jason Rumney <jasonr@gnu.org>
parents: 92362
diff changeset
5699 if (get_monitor_info_fn (monitor, &info))
c99b62a964c4 (MONITOR_DEFAULT_TO_NEAREST, struct MONITOR_INFO)
Jason Rumney <jasonr@gnu.org>
parents: 92362
diff changeset
5700 {
c99b62a964c4 (MONITOR_DEFAULT_TO_NEAREST, struct MONITOR_INFO)
Jason Rumney <jasonr@gnu.org>
parents: 92362
diff changeset
5701 min_x = info.rcWork.left;
c99b62a964c4 (MONITOR_DEFAULT_TO_NEAREST, struct MONITOR_INFO)
Jason Rumney <jasonr@gnu.org>
parents: 92362
diff changeset
5702 min_y = info.rcWork.top;
c99b62a964c4 (MONITOR_DEFAULT_TO_NEAREST, struct MONITOR_INFO)
Jason Rumney <jasonr@gnu.org>
parents: 92362
diff changeset
5703 max_x = info.rcWork.right;
c99b62a964c4 (MONITOR_DEFAULT_TO_NEAREST, struct MONITOR_INFO)
Jason Rumney <jasonr@gnu.org>
parents: 92362
diff changeset
5704 max_y = info.rcWork.bottom;
c99b62a964c4 (MONITOR_DEFAULT_TO_NEAREST, struct MONITOR_INFO)
Jason Rumney <jasonr@gnu.org>
parents: 92362
diff changeset
5705 }
c99b62a964c4 (MONITOR_DEFAULT_TO_NEAREST, struct MONITOR_INFO)
Jason Rumney <jasonr@gnu.org>
parents: 92362
diff changeset
5706 }
40120
03eb905a4d8e (Fx_file_dialog): Pass a filter to GetOpenFileName.
Jason Rumney <jasonr@gnu.org>
parents: 40009
diff changeset
5707 }
03eb905a4d8e (Fx_file_dialog): Pass a filter to GetOpenFileName.
Jason Rumney <jasonr@gnu.org>
parents: 40009
diff changeset
5708
03eb905a4d8e (Fx_file_dialog): Pass a filter to GetOpenFileName.
Jason Rumney <jasonr@gnu.org>
parents: 40009
diff changeset
5709 if (INTEGERP (top))
03eb905a4d8e (Fx_file_dialog): Pass a filter to GetOpenFileName.
Jason Rumney <jasonr@gnu.org>
parents: 40009
diff changeset
5710 *root_y = XINT (top);
92935
c99b62a964c4 (MONITOR_DEFAULT_TO_NEAREST, struct MONITOR_INFO)
Jason Rumney <jasonr@gnu.org>
parents: 92362
diff changeset
5711 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
5712 *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
5713 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
5714 /* 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
5715 *root_y += XINT (dy);
92935
c99b62a964c4 (MONITOR_DEFAULT_TO_NEAREST, struct MONITOR_INFO)
Jason Rumney <jasonr@gnu.org>
parents: 92362
diff changeset
5716 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
5717 /* 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
5718 *root_y -= height + XINT (dy);
40120
03eb905a4d8e (Fx_file_dialog): Pass a filter to GetOpenFileName.
Jason Rumney <jasonr@gnu.org>
parents: 40009
diff changeset
5719 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
5720 /* Put it on the top. */
92935
c99b62a964c4 (MONITOR_DEFAULT_TO_NEAREST, struct MONITOR_INFO)
Jason Rumney <jasonr@gnu.org>
parents: 92362
diff changeset
5721 *root_y = min_y;
40120
03eb905a4d8e (Fx_file_dialog): Pass a filter to GetOpenFileName.
Jason Rumney <jasonr@gnu.org>
parents: 40009
diff changeset
5722
03eb905a4d8e (Fx_file_dialog): Pass a filter to GetOpenFileName.
Jason Rumney <jasonr@gnu.org>
parents: 40009
diff changeset
5723 if (INTEGERP (left))
03eb905a4d8e (Fx_file_dialog): Pass a filter to GetOpenFileName.
Jason Rumney <jasonr@gnu.org>
parents: 40009
diff changeset
5724 *root_x = XINT (left);
92935
c99b62a964c4 (MONITOR_DEFAULT_TO_NEAREST, struct MONITOR_INFO)
Jason Rumney <jasonr@gnu.org>
parents: 92362
diff changeset
5725 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
5726 *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
5727 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
5728 /* 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
5729 *root_x += XINT (dx);
92935
c99b62a964c4 (MONITOR_DEFAULT_TO_NEAREST, struct MONITOR_INFO)
Jason Rumney <jasonr@gnu.org>
parents: 92362
diff changeset
5730 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
5731 /* 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
5732 *root_x -= width + XINT (dx);
03eb905a4d8e (Fx_file_dialog): Pass a filter to GetOpenFileName.
Jason Rumney <jasonr@gnu.org>
parents: 40009
diff changeset
5733 else
42537
f0e15bcba768 (compute_tip_xy): If tooltip won't fit on the screen
Jason Rumney <jasonr@gnu.org>
parents: 42007
diff changeset
5734 /* 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
5735 *root_x = min_x;
41380
aff1b15f295b (x_window_to_frame): Remove irrelevant TODO comment.
Jason Rumney <jasonr@gnu.org>
parents: 41322
diff changeset
5736 }
aff1b15f295b (x_window_to_frame): Remove irrelevant TODO comment.
Jason Rumney <jasonr@gnu.org>
parents: 41322
diff changeset
5737
aff1b15f295b (x_window_to_frame): Remove irrelevant TODO comment.
Jason Rumney <jasonr@gnu.org>
parents: 41322
diff changeset
5738
31110
9feda85db5d6 (max): Define macro.
Andrew Innes <andrewi@gnu.org>
parents: 30601
diff changeset
5739 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
5740 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
5741 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
5742
76700
742ee8b5b284 (Fx_show_tip): Doc fix.
Eli Zaretskii <eliz@gnu.org>
parents: 76083
diff changeset
5743 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
5744
40964
fb970d0c56eb Change doc-string comments to `new style'. [w/`doc:' keyword]. Doc fixes.
Jason Rumney <jasonr@gnu.org>
parents: 40873
diff changeset
5745 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
5746
fb970d0c56eb Change doc-string comments to `new style'. [w/`doc:' keyword]. Doc fixes.
Jason Rumney <jasonr@gnu.org>
parents: 40873
diff changeset
5747 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
5748 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
5749
41380
aff1b15f295b (x_window_to_frame): Remove irrelevant TODO comment.
Jason Rumney <jasonr@gnu.org>
parents: 41322
diff changeset
5750 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
5751 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
5752
55892
c12c7852c322 (Fx_display_grayscale_p, Fw32_send_sys_command, Vw32_color_map):
Juanma Barranquero <lekktu@gmail.com>
parents: 55673
diff changeset
5753 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
5754 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
5755 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
5756 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
5757 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
5758 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
5759 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
5760
fb970d0c56eb Change doc-string comments to `new style'. [w/`doc:' keyword]. Doc fixes.
Jason Rumney <jasonr@gnu.org>
parents: 40873
diff changeset
5761 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
5762 Text larger than the specified size is clipped. */)
31110
9feda85db5d6 (max): Define macro.
Andrew Innes <andrewi@gnu.org>
parents: 30601
diff changeset
5763 (string, frame, parms, timeout, dx, dy)
9feda85db5d6 (max): Define macro.
Andrew Innes <andrewi@gnu.org>
parents: 30601
diff changeset
5764 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
5765 {
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
5766 struct frame *f;
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
5767 struct window *w;
40120
03eb905a4d8e (Fx_file_dialog): Pass a filter to GetOpenFileName.
Jason Rumney <jasonr@gnu.org>
parents: 40009
diff changeset
5768 int root_x, root_y;
27397
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
5769 struct buffer *old_buffer;
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
5770 struct text_pos pos;
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
5771 int i, width, height;
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
5772 struct gcpro gcpro1, gcpro2, gcpro3, gcpro4;
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
5773 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
5774 int count = SPECPDL_INDEX ();
47942
080b4586492b Fix typo in comment.
Juanma Barranquero <lekktu@gmail.com>
parents: 47731
diff changeset
5775
27397
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
5776 specbind (Qinhibit_redisplay, Qt);
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
5777
29317
2d3d5bf49d4e Format and doc changes to bring closer to xfns.c.
Jason Rumney <jasonr@gnu.org>
parents: 29021
diff changeset
5778 GCPRO4 (string, parms, frame, timeout);
27397
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
5779
40656
cdfd4d09b79a Update usage of CHECK_ macros (remove unused second argument).
Pavel Janík <Pavel@Janik.cz>
parents: 40528
diff changeset
5780 CHECK_STRING (string);
27397
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
5781 f = check_x_frame (frame);
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
5782 if (NILP (timeout))
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
5783 timeout = make_number (5);
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
5784 else
40656
cdfd4d09b79a Update usage of CHECK_ macros (remove unused second argument).
Pavel Janík <Pavel@Janik.cz>
parents: 40528
diff changeset
5785 CHECK_NATNUM (timeout);
27397
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
5786
31110
9feda85db5d6 (max): Define macro.
Andrew Innes <andrewi@gnu.org>
parents: 30601
diff changeset
5787 if (NILP (dx))
9feda85db5d6 (max): Define macro.
Andrew Innes <andrewi@gnu.org>
parents: 30601
diff changeset
5788 dx = make_number (5);
9feda85db5d6 (max): Define macro.
Andrew Innes <andrewi@gnu.org>
parents: 30601
diff changeset
5789 else
40656
cdfd4d09b79a Update usage of CHECK_ macros (remove unused second argument).
Pavel Janík <Pavel@Janik.cz>
parents: 40528
diff changeset
5790 CHECK_NUMBER (dx);
47942
080b4586492b Fix typo in comment.
Juanma Barranquero <lekktu@gmail.com>
parents: 47731
diff changeset
5791
31110
9feda85db5d6 (max): Define macro.
Andrew Innes <andrewi@gnu.org>
parents: 30601
diff changeset
5792 if (NILP (dy))
36000
f4a0b086cc5d (Fx_show_tip): Fix calls to make_number.
Jason Rumney <jasonr@gnu.org>
parents: 35674
diff changeset
5793 dy = make_number (-10);
31110
9feda85db5d6 (max): Define macro.
Andrew Innes <andrewi@gnu.org>
parents: 30601
diff changeset
5794 else
40656
cdfd4d09b79a Update usage of CHECK_ macros (remove unused second argument).
Pavel Janík <Pavel@Janik.cz>
parents: 40528
diff changeset
5795 CHECK_NUMBER (dy);
31110
9feda85db5d6 (max): Define macro.
Andrew Innes <andrewi@gnu.org>
parents: 30601
diff changeset
5796
36000
f4a0b086cc5d (Fx_show_tip): Fix calls to make_number.
Jason Rumney <jasonr@gnu.org>
parents: 35674
diff changeset
5797 if (NILP (last_show_tip_args))
f4a0b086cc5d (Fx_show_tip): Fix calls to make_number.
Jason Rumney <jasonr@gnu.org>
parents: 35674
diff changeset
5798 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
5799
f4a0b086cc5d (Fx_show_tip): Fix calls to make_number.
Jason Rumney <jasonr@gnu.org>
parents: 35674
diff changeset
5800 if (!NILP (tip_frame))
f4a0b086cc5d (Fx_show_tip): Fix calls to make_number.
Jason Rumney <jasonr@gnu.org>
parents: 35674
diff changeset
5801 {
f4a0b086cc5d (Fx_show_tip): Fix calls to make_number.
Jason Rumney <jasonr@gnu.org>
parents: 35674
diff changeset
5802 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
5803 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
5804 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
5805
f4a0b086cc5d (Fx_show_tip): Fix calls to make_number.
Jason Rumney <jasonr@gnu.org>
parents: 35674
diff changeset
5806 if (EQ (frame, last_frame)
f4a0b086cc5d (Fx_show_tip): Fix calls to make_number.
Jason Rumney <jasonr@gnu.org>
parents: 35674
diff changeset
5807 && !NILP (Fequal (last_string, string))
f4a0b086cc5d (Fx_show_tip): Fix calls to make_number.
Jason Rumney <jasonr@gnu.org>
parents: 35674
diff changeset
5808 && !NILP (Fequal (last_parms, parms)))
f4a0b086cc5d (Fx_show_tip): Fix calls to make_number.
Jason Rumney <jasonr@gnu.org>
parents: 35674
diff changeset
5809 {
f4a0b086cc5d (Fx_show_tip): Fix calls to make_number.
Jason Rumney <jasonr@gnu.org>
parents: 35674
diff changeset
5810 struct frame *f = XFRAME (tip_frame);
47942
080b4586492b Fix typo in comment.
Juanma Barranquero <lekktu@gmail.com>
parents: 47731
diff changeset
5811
36000
f4a0b086cc5d (Fx_show_tip): Fix calls to make_number.
Jason Rumney <jasonr@gnu.org>
parents: 35674
diff changeset
5812 /* Only DX and DY have changed. */
f4a0b086cc5d (Fx_show_tip): Fix calls to make_number.
Jason Rumney <jasonr@gnu.org>
parents: 35674
diff changeset
5813 if (!NILP (tip_timer))
f4a0b086cc5d (Fx_show_tip): Fix calls to make_number.
Jason Rumney <jasonr@gnu.org>
parents: 35674
diff changeset
5814 {
f4a0b086cc5d (Fx_show_tip): Fix calls to make_number.
Jason Rumney <jasonr@gnu.org>
parents: 35674
diff changeset
5815 Lisp_Object timer = tip_timer;
f4a0b086cc5d (Fx_show_tip): Fix calls to make_number.
Jason Rumney <jasonr@gnu.org>
parents: 35674
diff changeset
5816 tip_timer = Qnil;
f4a0b086cc5d (Fx_show_tip): Fix calls to make_number.
Jason Rumney <jasonr@gnu.org>
parents: 35674
diff changeset
5817 call1 (Qcancel_timer, timer);
f4a0b086cc5d (Fx_show_tip): Fix calls to make_number.
Jason Rumney <jasonr@gnu.org>
parents: 35674
diff changeset
5818 }
f4a0b086cc5d (Fx_show_tip): Fix calls to make_number.
Jason Rumney <jasonr@gnu.org>
parents: 35674
diff changeset
5819
f4a0b086cc5d (Fx_show_tip): Fix calls to make_number.
Jason Rumney <jasonr@gnu.org>
parents: 35674
diff changeset
5820 BLOCK_INPUT;
51211
28ea05de2dc5 Make (many) trivial substitutions for renamed and
Kim F. Storm <storm@cua.dk>
parents: 50377
diff changeset
5821 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
5822 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
5823
3df71b933c36 (w32_load_system_font): Prevent Cleartype fonts from loading.
Jason Rumney <jasonr@gnu.org>
parents: 43207
diff changeset
5824 /* 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
5825 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
5826 root_x, root_y, 0, 0,
aff1b15f295b (x_window_to_frame): Remove irrelevant TODO comment.
Jason Rumney <jasonr@gnu.org>
parents: 41322
diff changeset
5827 SWP_NOSIZE | SWP_NOACTIVATE);
43210
3df71b933c36 (w32_load_system_font): Prevent Cleartype fonts from loading.
Jason Rumney <jasonr@gnu.org>
parents: 43207
diff changeset
5828
3df71b933c36 (w32_load_system_font): Prevent Cleartype fonts from loading.
Jason Rumney <jasonr@gnu.org>
parents: 43207
diff changeset
5829 /* 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
5830 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
5831 0, 0, 0, 0,
3df71b933c36 (w32_load_system_font): Prevent Cleartype fonts from loading.
Jason Rumney <jasonr@gnu.org>
parents: 43207
diff changeset
5832 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
5833
36000
f4a0b086cc5d (Fx_show_tip): Fix calls to make_number.
Jason Rumney <jasonr@gnu.org>
parents: 35674
diff changeset
5834 UNBLOCK_INPUT;
f4a0b086cc5d (Fx_show_tip): Fix calls to make_number.
Jason Rumney <jasonr@gnu.org>
parents: 35674
diff changeset
5835 goto start_timer;
f4a0b086cc5d (Fx_show_tip): Fix calls to make_number.
Jason Rumney <jasonr@gnu.org>
parents: 35674
diff changeset
5836 }
f4a0b086cc5d (Fx_show_tip): Fix calls to make_number.
Jason Rumney <jasonr@gnu.org>
parents: 35674
diff changeset
5837 }
f4a0b086cc5d (Fx_show_tip): Fix calls to make_number.
Jason Rumney <jasonr@gnu.org>
parents: 35674
diff changeset
5838
27397
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
5839 /* Hide a previous tip, if any. */
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
5840 Fx_hide_tip ();
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
5841
36000
f4a0b086cc5d (Fx_show_tip): Fix calls to make_number.
Jason Rumney <jasonr@gnu.org>
parents: 35674
diff changeset
5842 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
5843 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
5844 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
5845
27397
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
5846 /* Add default values to frame parameters. */
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
5847 if (NILP (Fassq (Qname, parms)))
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
5848 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
5849 if (NILP (Fassq (Qinternal_border_width, parms)))
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
5850 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
5851 if (NILP (Fassq (Qborder_width, parms)))
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
5852 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
5853 if (NILP (Fassq (Qborder_color, parms)))
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
5854 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
5855 if (NILP (Fassq (Qbackground_color, parms)))
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
5856 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
5857 parms);
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
5858
41480
2c71c672b3c7 (x_create_tip_frame): Set frame's fringes_extra to 0.
Jason Rumney <jasonr@gnu.org>
parents: 41448
diff changeset
5859 /* 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
5860 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
5861 BLOCK_INPUT;
2c71c672b3c7 (x_create_tip_frame): Set frame's fringes_extra to 0.
Jason Rumney <jasonr@gnu.org>
parents: 41448
diff changeset
5862
27397
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
5863 /* 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
5864 variable tip_frame. */
41380
aff1b15f295b (x_window_to_frame): Remove irrelevant TODO comment.
Jason Rumney <jasonr@gnu.org>
parents: 41322
diff changeset
5865 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
5866 f = XFRAME (frame);
27397
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
5867
40120
03eb905a4d8e (Fx_file_dialog): Pass a filter to GetOpenFileName.
Jason Rumney <jasonr@gnu.org>
parents: 40009
diff changeset
5868 /* 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
5869 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
5870 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
5871
03eb905a4d8e (Fx_file_dialog): Pass a filter to GetOpenFileName.
Jason Rumney <jasonr@gnu.org>
parents: 40009
diff changeset
5872 if (CONSP (Vx_max_tooltip_size)
03eb905a4d8e (Fx_file_dialog): Pass a filter to GetOpenFileName.
Jason Rumney <jasonr@gnu.org>
parents: 40009
diff changeset
5873 && INTEGERP (XCAR (Vx_max_tooltip_size))
03eb905a4d8e (Fx_file_dialog): Pass a filter to GetOpenFileName.
Jason Rumney <jasonr@gnu.org>
parents: 40009
diff changeset
5874 && 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
5875 && INTEGERP (XCDR (Vx_max_tooltip_size))
03eb905a4d8e (Fx_file_dialog): Pass a filter to GetOpenFileName.
Jason Rumney <jasonr@gnu.org>
parents: 40009
diff changeset
5876 && 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
5877 {
51211
28ea05de2dc5 Make (many) trivial substitutions for renamed and
Kim F. Storm <storm@cua.dk>
parents: 50377
diff changeset
5878 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
5879 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
5880 }
28ea05de2dc5 Make (many) trivial substitutions for renamed and
Kim F. Storm <storm@cua.dk>
parents: 50377
diff changeset
5881 else
28ea05de2dc5 Make (many) trivial substitutions for renamed and
Kim F. Storm <storm@cua.dk>
parents: 50377
diff changeset
5882 {
28ea05de2dc5 Make (many) trivial substitutions for renamed and
Kim F. Storm <storm@cua.dk>
parents: 50377
diff changeset
5883 w->total_cols = make_number (80);
28ea05de2dc5 Make (many) trivial substitutions for renamed and
Kim F. Storm <storm@cua.dk>
parents: 50377
diff changeset
5884 w->total_lines = make_number (40);
28ea05de2dc5 Make (many) trivial substitutions for renamed and
Kim F. Storm <storm@cua.dk>
parents: 50377
diff changeset
5885 }
28ea05de2dc5 Make (many) trivial substitutions for renamed and
Kim F. Storm <storm@cua.dk>
parents: 50377
diff changeset
5886
28ea05de2dc5 Make (many) trivial substitutions for renamed and
Kim F. Storm <storm@cua.dk>
parents: 50377
diff changeset
5887 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
5888 adjust_glyphs (f);
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
5889 w->pseudo_window_p = 1;
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
5890
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
5891 /* 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
5892 old_buffer = current_buffer;
40120
03eb905a4d8e (Fx_file_dialog): Pass a filter to GetOpenFileName.
Jason Rumney <jasonr@gnu.org>
parents: 40009
diff changeset
5893 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
5894 current_buffer->truncate_lines = Qnil;
27397
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
5895 clear_glyph_matrix (w->desired_matrix);
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
5896 clear_glyph_matrix (w->current_matrix);
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
5897 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
5898 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
5899
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
5900 /* Compute width and height of the tooltip. */
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
5901 width = height = 0;
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
5902 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
5903 {
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
5904 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
5905 struct glyph *last;
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
5906 int row_width;
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
5907
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
5908 /* 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
5909 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
5910 break;
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
5911
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
5912 /* 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
5913 row->full_width_p = 1;
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
5914
41638
aadcf676d5de (w32_wnd_proc) <WM_MENUSELECT>: Display help directly.
Jason Rumney <jasonr@gnu.org>
parents: 41480
diff changeset
5915 #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
5916 calculated for some tooltips. */
27397
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
5917 /* 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
5918 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
5919 if (row->used[TEXT_AREA])
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
5920 {
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
5921 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
5922 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
5923 }
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
5924 else
41638
aadcf676d5de (w32_wnd_proc) <WM_MENUSELECT>: Display help directly.
Jason Rumney <jasonr@gnu.org>
parents: 41480
diff changeset
5925 #endif
27397
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
5926 row_width = row->pixel_width;
47942
080b4586492b Fix typo in comment.
Juanma Barranquero <lekktu@gmail.com>
parents: 47731
diff changeset
5927
41380
aff1b15f295b (x_window_to_frame): Remove irrelevant TODO comment.
Jason Rumney <jasonr@gnu.org>
parents: 41322
diff changeset
5928 /* 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
5929 height += row->height;
27397
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
5930 width = max (width, row_width);
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
5931 }
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
5932
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
5933 /* 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
5934 window should have. */
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
5935 height += 2 * FRAME_INTERNAL_BORDER_WIDTH (f);
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
5936 width += 2 * FRAME_INTERNAL_BORDER_WIDTH (f);
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
5937
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
5938 /* 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
5939 show it. */
40120
03eb905a4d8e (Fx_file_dialog): Pass a filter to GetOpenFileName.
Jason Rumney <jasonr@gnu.org>
parents: 40009
diff changeset
5940 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
5941
41448
96beda35d0fa (w32_wnd_proc) <WM_MENUSELECT>: Revert last change.
Jason Rumney <jasonr@gnu.org>
parents: 41380
diff changeset
5942 {
96beda35d0fa (w32_wnd_proc) <WM_MENUSELECT>: Revert last change.
Jason Rumney <jasonr@gnu.org>
parents: 41380
diff changeset
5943 /* 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
5944 RECT rect;
96beda35d0fa (w32_wnd_proc) <WM_MENUSELECT>: Revert last change.
Jason Rumney <jasonr@gnu.org>
parents: 41380
diff changeset
5945 rect.left = rect.top = 0;
96beda35d0fa (w32_wnd_proc) <WM_MENUSELECT>: Revert last change.
Jason Rumney <jasonr@gnu.org>
parents: 41380
diff changeset
5946 rect.right = width;
96beda35d0fa (w32_wnd_proc) <WM_MENUSELECT>: Revert last change.
Jason Rumney <jasonr@gnu.org>
parents: 41380
diff changeset
5947 rect.bottom = height;
96beda35d0fa (w32_wnd_proc) <WM_MENUSELECT>: Revert last change.
Jason Rumney <jasonr@gnu.org>
parents: 41380
diff changeset
5948 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
5949 FRAME_EXTERNAL_MENU_BAR (f));
96beda35d0fa (w32_wnd_proc) <WM_MENUSELECT>: Revert last change.
Jason Rumney <jasonr@gnu.org>
parents: 41380
diff changeset
5950
69867
847d1fc86f9d (Fx_show_tip): Add 3 to the 5th arg of SetWindowPos.
Eli Zaretskii <eliz@gnu.org>
parents: 69547
diff changeset
5951 /* 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
5952 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
5953 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
5954 for some obscure reason. */
41448
96beda35d0fa (w32_wnd_proc) <WM_MENUSELECT>: Revert last change.
Jason Rumney <jasonr@gnu.org>
parents: 41380
diff changeset
5955 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
5956 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
5957 rect.bottom - rect.top, SWP_NOACTIVATE);
96beda35d0fa (w32_wnd_proc) <WM_MENUSELECT>: Revert last change.
Jason Rumney <jasonr@gnu.org>
parents: 41380
diff changeset
5958
43210
3df71b933c36 (w32_load_system_font): Prevent Cleartype fonts from loading.
Jason Rumney <jasonr@gnu.org>
parents: 43207
diff changeset
5959 /* 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
5960 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
5961 0, 0, 0, 0,
3df71b933c36 (w32_load_system_font): Prevent Cleartype fonts from loading.
Jason Rumney <jasonr@gnu.org>
parents: 43207
diff changeset
5962 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
5963
41448
96beda35d0fa (w32_wnd_proc) <WM_MENUSELECT>: Revert last change.
Jason Rumney <jasonr@gnu.org>
parents: 41380
diff changeset
5964 /* 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
5965 f->async_visible = 1;
96beda35d0fa (w32_wnd_proc) <WM_MENUSELECT>: Revert last change.
Jason Rumney <jasonr@gnu.org>
parents: 41380
diff changeset
5966
96beda35d0fa (w32_wnd_proc) <WM_MENUSELECT>: Revert last change.
Jason Rumney <jasonr@gnu.org>
parents: 41380
diff changeset
5967 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
5968 }
27397
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 /* Draw into the window. */
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
5971 w->must_be_updated_p = 1;
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
5972 update_single_window (w, 1);
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
5973
41480
2c71c672b3c7 (x_create_tip_frame): Set frame's fringes_extra to 0.
Jason Rumney <jasonr@gnu.org>
parents: 41448
diff changeset
5974 UNBLOCK_INPUT;
2c71c672b3c7 (x_create_tip_frame): Set frame's fringes_extra to 0.
Jason Rumney <jasonr@gnu.org>
parents: 41448
diff changeset
5975
27397
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
5976 /* Restore original current buffer. */
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
5977 set_buffer_internal_1 (old_buffer);
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
5978 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
5979
36000
f4a0b086cc5d (Fx_show_tip): Fix calls to make_number.
Jason Rumney <jasonr@gnu.org>
parents: 35674
diff changeset
5980 start_timer:
27397
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
5981 /* Let the tip disappear after timeout seconds. */
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
5982 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
5983 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
5984
27397
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
5985 UNGCPRO;
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
5986 return unbind_to (count, Qnil);
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
5987 }
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
5988
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
5989
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
5990 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
5991 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
5992 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
5993 ()
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
5994 {
34546
51be06b616bf (Fx_hide_tip): Avoid unnecessary work when there's
Andrew Innes <andrewi@gnu.org>
parents: 34314
diff changeset
5995 int count;
51be06b616bf (Fx_hide_tip): Avoid unnecessary work when there's
Andrew Innes <andrewi@gnu.org>
parents: 34314
diff changeset
5996 Lisp_Object deleted, frame, timer;
51be06b616bf (Fx_hide_tip): Avoid unnecessary work when there's
Andrew Innes <andrewi@gnu.org>
parents: 34314
diff changeset
5997 struct gcpro gcpro1, gcpro2;
51be06b616bf (Fx_hide_tip): Avoid unnecessary work when there's
Andrew Innes <andrewi@gnu.org>
parents: 34314
diff changeset
5998
51be06b616bf (Fx_hide_tip): Avoid unnecessary work when there's
Andrew Innes <andrewi@gnu.org>
parents: 34314
diff changeset
5999 /* 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
6000 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
6001 return Qnil;
47942
080b4586492b Fix typo in comment.
Juanma Barranquero <lekktu@gmail.com>
parents: 47731
diff changeset
6002
34546
51be06b616bf (Fx_hide_tip): Avoid unnecessary work when there's
Andrew Innes <andrewi@gnu.org>
parents: 34314
diff changeset
6003 frame = tip_frame;
51be06b616bf (Fx_hide_tip): Avoid unnecessary work when there's
Andrew Innes <andrewi@gnu.org>
parents: 34314
diff changeset
6004 timer = tip_timer;
51be06b616bf (Fx_hide_tip): Avoid unnecessary work when there's
Andrew Innes <andrewi@gnu.org>
parents: 34314
diff changeset
6005 GCPRO2 (frame, timer);
51be06b616bf (Fx_hide_tip): Avoid unnecessary work when there's
Andrew Innes <andrewi@gnu.org>
parents: 34314
diff changeset
6006 tip_frame = tip_timer = deleted = Qnil;
47942
080b4586492b Fix typo in comment.
Juanma Barranquero <lekktu@gmail.com>
parents: 47731
diff changeset
6007
46285
3f111801efb4 Rename BINDING_STACK_SIZE to SPECPDL_INDEX.
Juanma Barranquero <lekktu@gmail.com>
parents: 46272
diff changeset
6008 count = SPECPDL_INDEX ();
27397
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
6009 specbind (Qinhibit_redisplay, Qt);
34546
51be06b616bf (Fx_hide_tip): Avoid unnecessary work when there's
Andrew Innes <andrewi@gnu.org>
parents: 34314
diff changeset
6010 specbind (Qinhibit_quit, Qt);
47942
080b4586492b Fix typo in comment.
Juanma Barranquero <lekktu@gmail.com>
parents: 47731
diff changeset
6011
34546
51be06b616bf (Fx_hide_tip): Avoid unnecessary work when there's
Andrew Innes <andrewi@gnu.org>
parents: 34314
diff changeset
6012 if (!NILP (timer))
36000
f4a0b086cc5d (Fx_show_tip): Fix calls to make_number.
Jason Rumney <jasonr@gnu.org>
parents: 35674
diff changeset
6013 call1 (Qcancel_timer, timer);
34546
51be06b616bf (Fx_hide_tip): Avoid unnecessary work when there's
Andrew Innes <andrewi@gnu.org>
parents: 34314
diff changeset
6014
51be06b616bf (Fx_hide_tip): Avoid unnecessary work when there's
Andrew Innes <andrewi@gnu.org>
parents: 34314
diff changeset
6015 if (FRAMEP (frame))
51be06b616bf (Fx_hide_tip): Avoid unnecessary work when there's
Andrew Innes <andrewi@gnu.org>
parents: 34314
diff changeset
6016 {
100632
389db2f016a4 * frame.c (delete_frame): New function derived from
Martin Rudalics <rudalics@gmx.at>
parents: 100380
diff changeset
6017 delete_frame (frame, Qnil);
34546
51be06b616bf (Fx_hide_tip): Avoid unnecessary work when there's
Andrew Innes <andrewi@gnu.org>
parents: 34314
diff changeset
6018 deleted = Qt;
51be06b616bf (Fx_hide_tip): Avoid unnecessary work when there's
Andrew Innes <andrewi@gnu.org>
parents: 34314
diff changeset
6019 }
51be06b616bf (Fx_hide_tip): Avoid unnecessary work when there's
Andrew Innes <andrewi@gnu.org>
parents: 34314
diff changeset
6020
51be06b616bf (Fx_hide_tip): Avoid unnecessary work when there's
Andrew Innes <andrewi@gnu.org>
parents: 34314
diff changeset
6021 UNGCPRO;
51be06b616bf (Fx_hide_tip): Avoid unnecessary work when there's
Andrew Innes <andrewi@gnu.org>
parents: 34314
diff changeset
6022 return unbind_to (count, deleted);
27397
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
6023 }
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
6024
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
6025
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
6026
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
6027 /***********************************************************************
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
6028 File selection dialog
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
6029 ***********************************************************************/
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
6030 extern Lisp_Object Qfile_name_history;
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
6031
96376
c3309dba6542 American English spelling fix.
Glenn Morris <rgm@gnu.org>
parents: 96133
diff changeset
6032 /* Callback for altering the behavior of the Open File dialog.
45963
e4d2d8c8186f (file_dialog_callback): New function.
Jason Rumney <jasonr@gnu.org>
parents: 45465
diff changeset
6033 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
6034 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
6035 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
6036 dialog does not support directories. */
e4d2d8c8186f (file_dialog_callback): New function.
Jason Rumney <jasonr@gnu.org>
parents: 45465
diff changeset
6037 UINT CALLBACK
e4d2d8c8186f (file_dialog_callback): New function.
Jason Rumney <jasonr@gnu.org>
parents: 45465
diff changeset
6038 file_dialog_callback (hwnd, msg, wParam, lParam)
e4d2d8c8186f (file_dialog_callback): New function.
Jason Rumney <jasonr@gnu.org>
parents: 45465
diff changeset
6039 HWND hwnd;
e4d2d8c8186f (file_dialog_callback): New function.
Jason Rumney <jasonr@gnu.org>
parents: 45465
diff changeset
6040 UINT msg;
e4d2d8c8186f (file_dialog_callback): New function.
Jason Rumney <jasonr@gnu.org>
parents: 45465
diff changeset
6041 WPARAM wParam;
e4d2d8c8186f (file_dialog_callback): New function.
Jason Rumney <jasonr@gnu.org>
parents: 45465
diff changeset
6042 LPARAM lParam;
e4d2d8c8186f (file_dialog_callback): New function.
Jason Rumney <jasonr@gnu.org>
parents: 45465
diff changeset
6043 {
e4d2d8c8186f (file_dialog_callback): New function.
Jason Rumney <jasonr@gnu.org>
parents: 45465
diff changeset
6044 if (msg == WM_NOTIFY)
e4d2d8c8186f (file_dialog_callback): New function.
Jason Rumney <jasonr@gnu.org>
parents: 45465
diff changeset
6045 {
e4d2d8c8186f (file_dialog_callback): New function.
Jason Rumney <jasonr@gnu.org>
parents: 45465
diff changeset
6046 OFNOTIFY * notify = (OFNOTIFY *)lParam;
e4d2d8c8186f (file_dialog_callback): New function.
Jason Rumney <jasonr@gnu.org>
parents: 45465
diff changeset
6047 /* 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
6048 if (notify->hdr.code == CDN_TYPECHANGE
1b78563a75d6 (file_dialog_callback): Disable edit control if set
Jason Rumney <jasonr@gnu.org>
parents: 55892
diff changeset
6049 || notify->hdr.code == CDN_INITDONE)
45963
e4d2d8c8186f (file_dialog_callback): New function.
Jason Rumney <jasonr@gnu.org>
parents: 45465
diff changeset
6050 {
e4d2d8c8186f (file_dialog_callback): New function.
Jason Rumney <jasonr@gnu.org>
parents: 45465
diff changeset
6051 HWND dialog = GetParent (hwnd);
e4d2d8c8186f (file_dialog_callback): New function.
Jason Rumney <jasonr@gnu.org>
parents: 45465
diff changeset
6052 HWND edit_control = GetDlgItem (dialog, FILE_NAME_TEXT_FIELD);
e4d2d8c8186f (file_dialog_callback): New function.
Jason Rumney <jasonr@gnu.org>
parents: 45465
diff changeset
6053
e4d2d8c8186f (file_dialog_callback): New function.
Jason Rumney <jasonr@gnu.org>
parents: 45465
diff changeset
6054 /* Directories is in index 2. */
e4d2d8c8186f (file_dialog_callback): New function.
Jason Rumney <jasonr@gnu.org>
parents: 45465
diff changeset
6055 if (notify->lpOFN->nFilterIndex == 2)
e4d2d8c8186f (file_dialog_callback): New function.
Jason Rumney <jasonr@gnu.org>
parents: 45465
diff changeset
6056 {
e4d2d8c8186f (file_dialog_callback): New function.
Jason Rumney <jasonr@gnu.org>
parents: 45465
diff changeset
6057 CommDlg_OpenSave_SetControlText (dialog, FILE_NAME_TEXT_FIELD,
e4d2d8c8186f (file_dialog_callback): New function.
Jason Rumney <jasonr@gnu.org>
parents: 45465
diff changeset
6058 "Current Directory");
e4d2d8c8186f (file_dialog_callback): New function.
Jason Rumney <jasonr@gnu.org>
parents: 45465
diff changeset
6059 EnableWindow (edit_control, FALSE);
e4d2d8c8186f (file_dialog_callback): New function.
Jason Rumney <jasonr@gnu.org>
parents: 45465
diff changeset
6060 }
e4d2d8c8186f (file_dialog_callback): New function.
Jason Rumney <jasonr@gnu.org>
parents: 45465
diff changeset
6061 else
e4d2d8c8186f (file_dialog_callback): New function.
Jason Rumney <jasonr@gnu.org>
parents: 45465
diff changeset
6062 {
56263
1b78563a75d6 (file_dialog_callback): Disable edit control if set
Jason Rumney <jasonr@gnu.org>
parents: 55892
diff changeset
6063 /* 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
6064 if (notify->hdr.code == CDN_TYPECHANGE)
1b78563a75d6 (file_dialog_callback): Disable edit control if set
Jason Rumney <jasonr@gnu.org>
parents: 55892
diff changeset
6065 CommDlg_OpenSave_SetControlText (dialog,
1b78563a75d6 (file_dialog_callback): Disable edit control if set
Jason Rumney <jasonr@gnu.org>
parents: 55892
diff changeset
6066 FILE_NAME_TEXT_FIELD, "");
45963
e4d2d8c8186f (file_dialog_callback): New function.
Jason Rumney <jasonr@gnu.org>
parents: 45465
diff changeset
6067 EnableWindow (edit_control, TRUE);
e4d2d8c8186f (file_dialog_callback): New function.
Jason Rumney <jasonr@gnu.org>
parents: 45465
diff changeset
6068 }
e4d2d8c8186f (file_dialog_callback): New function.
Jason Rumney <jasonr@gnu.org>
parents: 45465
diff changeset
6069 }
e4d2d8c8186f (file_dialog_callback): New function.
Jason Rumney <jasonr@gnu.org>
parents: 45465
diff changeset
6070 }
e4d2d8c8186f (file_dialog_callback): New function.
Jason Rumney <jasonr@gnu.org>
parents: 45465
diff changeset
6071 return 0;
e4d2d8c8186f (file_dialog_callback): New function.
Jason Rumney <jasonr@gnu.org>
parents: 45465
diff changeset
6072 }
e4d2d8c8186f (file_dialog_callback): New function.
Jason Rumney <jasonr@gnu.org>
parents: 45465
diff changeset
6073
63348
abe4cbe0bdef (NEWOPENFILENAME): New struct.
Jason Rumney <jasonr@gnu.org>
parents: 63340
diff changeset
6074 /* 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
6075 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
6076 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
6077 Windows 2000 and XP. */
abe4cbe0bdef (NEWOPENFILENAME): New struct.
Jason Rumney <jasonr@gnu.org>
parents: 63340
diff changeset
6078 typedef struct
abe4cbe0bdef (NEWOPENFILENAME): New struct.
Jason Rumney <jasonr@gnu.org>
parents: 63340
diff changeset
6079 {
abe4cbe0bdef (NEWOPENFILENAME): New struct.
Jason Rumney <jasonr@gnu.org>
parents: 63340
diff changeset
6080 OPENFILENAME real_details;
abe4cbe0bdef (NEWOPENFILENAME): New struct.
Jason Rumney <jasonr@gnu.org>
parents: 63340
diff changeset
6081 void * pReserved;
abe4cbe0bdef (NEWOPENFILENAME): New struct.
Jason Rumney <jasonr@gnu.org>
parents: 63340
diff changeset
6082 DWORD dwReserved;
abe4cbe0bdef (NEWOPENFILENAME): New struct.
Jason Rumney <jasonr@gnu.org>
parents: 63340
diff changeset
6083 DWORD FlagsEx;
abe4cbe0bdef (NEWOPENFILENAME): New struct.
Jason Rumney <jasonr@gnu.org>
parents: 63340
diff changeset
6084 } NEWOPENFILENAME;
abe4cbe0bdef (NEWOPENFILENAME): New struct.
Jason Rumney <jasonr@gnu.org>
parents: 63340
diff changeset
6085
63704
426ba3ecedd7 (check_x_frame, check_x_display_info): Follow error conventions.
Juanma Barranquero <lekktu@gmail.com>
parents: 63348
diff changeset
6086
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
6087 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
6088 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
6089 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
6090 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
6091 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
6092 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
6093 (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
6094 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
6095 {
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
6096 struct frame *f = SELECTED_FRAME ();
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
6097 Lisp_Object file = Qnil;
46293
1fb8f75062c6 Use macro SPECPDL_INDEX.
Juanma Barranquero <lekktu@gmail.com>
parents: 46285
diff changeset
6098 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
6099 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
6100 char filename[MAX_PATH + 1];
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
6101 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
6102 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
6103
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
6104 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
6105 CHECK_STRING (prompt);
cdfd4d09b79a Update usage of CHECK_ macros (remove unused second argument).
Pavel Janík <Pavel@Janik.cz>
parents: 40528
diff changeset
6106 CHECK_STRING (dir);
27397
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
6107
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
6108 /* 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
6109 directory and using "*" as pattern. */
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
6110 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
6111 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
6112 init_dir[MAX_PATH] = '\0';
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
6113 unixtodos_filename (init_dir);
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
6114
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
6115 if (STRINGP (default_filename))
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
6116 {
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
6117 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
6118 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
6119
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
6120 unixtodos_filename (full_path_name);
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
6121
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
6122 file_name_only = strrchr (full_path_name, '\\');
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
6123 if (!file_name_only)
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
6124 file_name_only = full_path_name;
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
6125 else
56263
1b78563a75d6 (file_dialog_callback): Disable edit control if set
Jason Rumney <jasonr@gnu.org>
parents: 55892
diff changeset
6126 file_name_only++;
27397
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
6127
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
6128 strncpy (filename, file_name_only, MAX_PATH);
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
6129 filename[MAX_PATH] = '\0';
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
6130 }
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
6131 else
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
6132 filename[0] = '\0';
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
6133
45963
e4d2d8c8186f (file_dialog_callback): New function.
Jason Rumney <jasonr@gnu.org>
parents: 45465
diff changeset
6134 {
63348
abe4cbe0bdef (NEWOPENFILENAME): New struct.
Jason Rumney <jasonr@gnu.org>
parents: 63340
diff changeset
6135 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
6136 BOOL file_opened = FALSE;
63348
abe4cbe0bdef (NEWOPENFILENAME): New struct.
Jason Rumney <jasonr@gnu.org>
parents: 63340
diff changeset
6137 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
6138
45963
e4d2d8c8186f (file_dialog_callback): New function.
Jason Rumney <jasonr@gnu.org>
parents: 45465
diff changeset
6139 /* Prevent redisplay. */
e4d2d8c8186f (file_dialog_callback): New function.
Jason Rumney <jasonr@gnu.org>
parents: 45465
diff changeset
6140 specbind (Qinhibit_redisplay, Qt);
e4d2d8c8186f (file_dialog_callback): New function.
Jason Rumney <jasonr@gnu.org>
parents: 45465
diff changeset
6141 BLOCK_INPUT;
e4d2d8c8186f (file_dialog_callback): New function.
Jason Rumney <jasonr@gnu.org>
parents: 45465
diff changeset
6142
63348
abe4cbe0bdef (NEWOPENFILENAME): New struct.
Jason Rumney <jasonr@gnu.org>
parents: 63340
diff changeset
6143 bzero (&new_file_details, sizeof (new_file_details));
abe4cbe0bdef (NEWOPENFILENAME): New struct.
Jason Rumney <jasonr@gnu.org>
parents: 63340
diff changeset
6144 /* Apparently NT4 crashes if you give it an unexpected size.
abe4cbe0bdef (NEWOPENFILENAME): New struct.
Jason Rumney <jasonr@gnu.org>
parents: 63340
diff changeset
6145 I'm not sure about Windows 9x, so play it safe. */
abe4cbe0bdef (NEWOPENFILENAME): New struct.
Jason Rumney <jasonr@gnu.org>
parents: 63340
diff changeset
6146 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
6147 file_details->lStructSize = sizeof (NEWOPENFILENAME);
63348
abe4cbe0bdef (NEWOPENFILENAME): New struct.
Jason Rumney <jasonr@gnu.org>
parents: 63340
diff changeset
6148 else
77995
04fafc2fc785 (Fx_file_dialog): Take size from struct not pointer.
Jason Rumney <jasonr@gnu.org>
parents: 76700
diff changeset
6149 file_details->lStructSize = sizeof (OPENFILENAME);
63348
abe4cbe0bdef (NEWOPENFILENAME): New struct.
Jason Rumney <jasonr@gnu.org>
parents: 63340
diff changeset
6150
abe4cbe0bdef (NEWOPENFILENAME): New struct.
Jason Rumney <jasonr@gnu.org>
parents: 63340
diff changeset
6151 file_details->hwndOwner = FRAME_W32_WINDOW (f);
45963
e4d2d8c8186f (file_dialog_callback): New function.
Jason Rumney <jasonr@gnu.org>
parents: 45465
diff changeset
6152 /* Undocumented Bug in Common File Dialog:
e4d2d8c8186f (file_dialog_callback): New function.
Jason Rumney <jasonr@gnu.org>
parents: 45465
diff changeset
6153 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
6154 file_details->lpstrFilter = "All Files (*.*)\0*.*\0Directories\0*|*\0\0";
abe4cbe0bdef (NEWOPENFILENAME): New struct.
Jason Rumney <jasonr@gnu.org>
parents: 63340
diff changeset
6155 file_details->lpstrFile = filename;
abe4cbe0bdef (NEWOPENFILENAME): New struct.
Jason Rumney <jasonr@gnu.org>
parents: 63340
diff changeset
6156 file_details->nMaxFile = sizeof (filename);
abe4cbe0bdef (NEWOPENFILENAME): New struct.
Jason Rumney <jasonr@gnu.org>
parents: 63340
diff changeset
6157 file_details->lpstrInitialDir = init_dir;
abe4cbe0bdef (NEWOPENFILENAME): New struct.
Jason Rumney <jasonr@gnu.org>
parents: 63340
diff changeset
6158 file_details->lpstrTitle = SDATA (prompt);
56263
1b78563a75d6 (file_dialog_callback): Disable edit control if set
Jason Rumney <jasonr@gnu.org>
parents: 55892
diff changeset
6159
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
6160 if (! NILP (only_dir_p))
56263
1b78563a75d6 (file_dialog_callback): Disable edit control if set
Jason Rumney <jasonr@gnu.org>
parents: 55892
diff changeset
6161 default_filter_index = 2;
1b78563a75d6 (file_dialog_callback): Disable edit control if set
Jason Rumney <jasonr@gnu.org>
parents: 55892
diff changeset
6162
63348
abe4cbe0bdef (NEWOPENFILENAME): New struct.
Jason Rumney <jasonr@gnu.org>
parents: 63340
diff changeset
6163 file_details->nFilterIndex = default_filter_index;
abe4cbe0bdef (NEWOPENFILENAME): New struct.
Jason Rumney <jasonr@gnu.org>
parents: 63340
diff changeset
6164
abe4cbe0bdef (NEWOPENFILENAME): New struct.
Jason Rumney <jasonr@gnu.org>
parents: 63340
diff changeset
6165 file_details->Flags = (OFN_HIDEREADONLY | OFN_NOCHANGEDIR
45963
e4d2d8c8186f (file_dialog_callback): New function.
Jason Rumney <jasonr@gnu.org>
parents: 45465
diff changeset
6166 | OFN_EXPLORER | OFN_ENABLEHOOK);
e4d2d8c8186f (file_dialog_callback): New function.
Jason Rumney <jasonr@gnu.org>
parents: 45465
diff changeset
6167 if (!NILP (mustmatch))
63348
abe4cbe0bdef (NEWOPENFILENAME): New struct.
Jason Rumney <jasonr@gnu.org>
parents: 63340
diff changeset
6168 {
abe4cbe0bdef (NEWOPENFILENAME): New struct.
Jason Rumney <jasonr@gnu.org>
parents: 63340
diff changeset
6169 /* Require that the path to the parent directory exists. */
abe4cbe0bdef (NEWOPENFILENAME): New struct.
Jason Rumney <jasonr@gnu.org>
parents: 63340
diff changeset
6170 file_details->Flags |= OFN_PATHMUSTEXIST;
abe4cbe0bdef (NEWOPENFILENAME): New struct.
Jason Rumney <jasonr@gnu.org>
parents: 63340
diff changeset
6171 /* If we are looking for a file, require that it exists. */
abe4cbe0bdef (NEWOPENFILENAME): New struct.
Jason Rumney <jasonr@gnu.org>
parents: 63340
diff changeset
6172 if (NILP (only_dir_p))
abe4cbe0bdef (NEWOPENFILENAME): New struct.
Jason Rumney <jasonr@gnu.org>
parents: 63340
diff changeset
6173 file_details->Flags |= OFN_FILEMUSTEXIST;
abe4cbe0bdef (NEWOPENFILENAME): New struct.
Jason Rumney <jasonr@gnu.org>
parents: 63340
diff changeset
6174 }
abe4cbe0bdef (NEWOPENFILENAME): New struct.
Jason Rumney <jasonr@gnu.org>
parents: 63340
diff changeset
6175
abe4cbe0bdef (NEWOPENFILENAME): New struct.
Jason Rumney <jasonr@gnu.org>
parents: 63340
diff changeset
6176 file_details->lpfnHook = (LPOFNHOOKPROC) file_dialog_callback;
abe4cbe0bdef (NEWOPENFILENAME): New struct.
Jason Rumney <jasonr@gnu.org>
parents: 63340
diff changeset
6177
abe4cbe0bdef (NEWOPENFILENAME): New struct.
Jason Rumney <jasonr@gnu.org>
parents: 63340
diff changeset
6178 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
6179
431c88e4a3a2 (Fx_file_dialog): Unblock input before falling back to minibuffer.
Jason Rumney <jasonr@gnu.org>
parents: 63279
diff changeset
6180 UNBLOCK_INPUT;
431c88e4a3a2 (Fx_file_dialog): Unblock input before falling back to minibuffer.
Jason Rumney <jasonr@gnu.org>
parents: 63279
diff changeset
6181
431c88e4a3a2 (Fx_file_dialog): Unblock input before falling back to minibuffer.
Jason Rumney <jasonr@gnu.org>
parents: 63279
diff changeset
6182 if (file_opened)
45963
e4d2d8c8186f (file_dialog_callback): New function.
Jason Rumney <jasonr@gnu.org>
parents: 45465
diff changeset
6183 {
e4d2d8c8186f (file_dialog_callback): New function.
Jason Rumney <jasonr@gnu.org>
parents: 45465
diff changeset
6184 dostounix_filename (filename);
63348
abe4cbe0bdef (NEWOPENFILENAME): New struct.
Jason Rumney <jasonr@gnu.org>
parents: 63340
diff changeset
6185
abe4cbe0bdef (NEWOPENFILENAME): New struct.
Jason Rumney <jasonr@gnu.org>
parents: 63340
diff changeset
6186 if (file_details->nFilterIndex == 2)
45963
e4d2d8c8186f (file_dialog_callback): New function.
Jason Rumney <jasonr@gnu.org>
parents: 45465
diff changeset
6187 {
56263
1b78563a75d6 (file_dialog_callback): Disable edit control if set
Jason Rumney <jasonr@gnu.org>
parents: 55892
diff changeset
6188 /* "Directories" selected - strip dummy file name. */
45963
e4d2d8c8186f (file_dialog_callback): New function.
Jason Rumney <jasonr@gnu.org>
parents: 45465
diff changeset
6189 char * last = strrchr (filename, '/');
e4d2d8c8186f (file_dialog_callback): New function.
Jason Rumney <jasonr@gnu.org>
parents: 45465
diff changeset
6190 *last = '\0';
e4d2d8c8186f (file_dialog_callback): New function.
Jason Rumney <jasonr@gnu.org>
parents: 45465
diff changeset
6191 }
e4d2d8c8186f (file_dialog_callback): New function.
Jason Rumney <jasonr@gnu.org>
parents: 45465
diff changeset
6192
79387
0ca197abc593 (Fw32_registered_hot_keys): Don't return the nil values corresponding
Juanma Barranquero <lekktu@gmail.com>
parents: 79381
diff changeset
6193 file = DECODE_FILE (build_string (filename));
45963
e4d2d8c8186f (file_dialog_callback): New function.
Jason Rumney <jasonr@gnu.org>
parents: 45465
diff changeset
6194 }
e4d2d8c8186f (file_dialog_callback): New function.
Jason Rumney <jasonr@gnu.org>
parents: 45465
diff changeset
6195 /* User cancelled the dialog without making a selection. */
e4d2d8c8186f (file_dialog_callback): New function.
Jason Rumney <jasonr@gnu.org>
parents: 45465
diff changeset
6196 else if (!CommDlgExtendedError ())
e4d2d8c8186f (file_dialog_callback): New function.
Jason Rumney <jasonr@gnu.org>
parents: 45465
diff changeset
6197 file = Qnil;
e4d2d8c8186f (file_dialog_callback): New function.
Jason Rumney <jasonr@gnu.org>
parents: 45465
diff changeset
6198 /* 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
6199 else
e4d2d8c8186f (file_dialog_callback): New function.
Jason Rumney <jasonr@gnu.org>
parents: 45465
diff changeset
6200 file = Fcompleting_read (prompt, intern ("read-file-name-internal"),
e4d2d8c8186f (file_dialog_callback): New function.
Jason Rumney <jasonr@gnu.org>
parents: 45465
diff changeset
6201 dir, mustmatch, dir, Qfile_name_history,
e4d2d8c8186f (file_dialog_callback): New function.
Jason Rumney <jasonr@gnu.org>
parents: 45465
diff changeset
6202 default_filename, Qnil);
e4d2d8c8186f (file_dialog_callback): New function.
Jason Rumney <jasonr@gnu.org>
parents: 45465
diff changeset
6203
e4d2d8c8186f (file_dialog_callback): New function.
Jason Rumney <jasonr@gnu.org>
parents: 45465
diff changeset
6204 file = unbind_to (count, file);
e4d2d8c8186f (file_dialog_callback): New function.
Jason Rumney <jasonr@gnu.org>
parents: 45465
diff changeset
6205 }
27397
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
6206
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
6207 UNGCPRO;
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
6208
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
6209 /* Make "Cancel" equivalent to C-g. */
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
6210 if (NILP (file))
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
6211 Fsignal (Qquit, Qnil);
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
6212
29317
2d3d5bf49d4e Format and doc changes to bring closer to xfns.c.
Jason Rumney <jasonr@gnu.org>
parents: 29021
diff changeset
6213 return unbind_to (count, file);
27397
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
6214 }
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
6215
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
6216
96489
b76b9628d74f Changes from Toru Tsuneyoshi for using Trash can when deleting files.
Jason Rumney <jasonr@gnu.org>
parents: 96403
diff changeset
6217 /* Moving files to the system recycle bin.
b76b9628d74f Changes from Toru Tsuneyoshi for using Trash can when deleting files.
Jason Rumney <jasonr@gnu.org>
parents: 96403
diff changeset
6218 Used by `move-file-to-trash' instead of the default moving to ~/.Trash */
b76b9628d74f Changes from Toru Tsuneyoshi for using Trash can when deleting files.
Jason Rumney <jasonr@gnu.org>
parents: 96403
diff changeset
6219 DEFUN ("system-move-file-to-trash", Fsystem_move_file_to_trash,
b76b9628d74f Changes from Toru Tsuneyoshi for using Trash can when deleting files.
Jason Rumney <jasonr@gnu.org>
parents: 96403
diff changeset
6220 Ssystem_move_file_to_trash, 1, 1, 0,
b76b9628d74f Changes from Toru Tsuneyoshi for using Trash can when deleting files.
Jason Rumney <jasonr@gnu.org>
parents: 96403
diff changeset
6221 doc: /* Move file or directory named FILENAME to the recycle bin. */)
b76b9628d74f Changes from Toru Tsuneyoshi for using Trash can when deleting files.
Jason Rumney <jasonr@gnu.org>
parents: 96403
diff changeset
6222 (filename)
b76b9628d74f Changes from Toru Tsuneyoshi for using Trash can when deleting files.
Jason Rumney <jasonr@gnu.org>
parents: 96403
diff changeset
6223 Lisp_Object filename;
b76b9628d74f Changes from Toru Tsuneyoshi for using Trash can when deleting files.
Jason Rumney <jasonr@gnu.org>
parents: 96403
diff changeset
6224 {
b76b9628d74f Changes from Toru Tsuneyoshi for using Trash can when deleting files.
Jason Rumney <jasonr@gnu.org>
parents: 96403
diff changeset
6225 Lisp_Object handler;
b76b9628d74f Changes from Toru Tsuneyoshi for using Trash can when deleting files.
Jason Rumney <jasonr@gnu.org>
parents: 96403
diff changeset
6226 Lisp_Object encoded_file;
b76b9628d74f Changes from Toru Tsuneyoshi for using Trash can when deleting files.
Jason Rumney <jasonr@gnu.org>
parents: 96403
diff changeset
6227 Lisp_Object operation;
b76b9628d74f Changes from Toru Tsuneyoshi for using Trash can when deleting files.
Jason Rumney <jasonr@gnu.org>
parents: 96403
diff changeset
6228
b76b9628d74f Changes from Toru Tsuneyoshi for using Trash can when deleting files.
Jason Rumney <jasonr@gnu.org>
parents: 96403
diff changeset
6229 operation = Qdelete_file;
b76b9628d74f Changes from Toru Tsuneyoshi for using Trash can when deleting files.
Jason Rumney <jasonr@gnu.org>
parents: 96403
diff changeset
6230 if (!NILP (Ffile_directory_p (filename))
b76b9628d74f Changes from Toru Tsuneyoshi for using Trash can when deleting files.
Jason Rumney <jasonr@gnu.org>
parents: 96403
diff changeset
6231 && NILP (Ffile_symlink_p (filename)))
b76b9628d74f Changes from Toru Tsuneyoshi for using Trash can when deleting files.
Jason Rumney <jasonr@gnu.org>
parents: 96403
diff changeset
6232 {
105374
28c45fa22117 * w32fns.c (Fsystem_move_file_to_trash): Use delete-directory.
Michael Albinus <michael.albinus@gmx.de>
parents: 105367
diff changeset
6233 operation = intern ("delete-directory");
96489
b76b9628d74f Changes from Toru Tsuneyoshi for using Trash can when deleting files.
Jason Rumney <jasonr@gnu.org>
parents: 96403
diff changeset
6234 filename = Fdirectory_file_name (filename);
b76b9628d74f Changes from Toru Tsuneyoshi for using Trash can when deleting files.
Jason Rumney <jasonr@gnu.org>
parents: 96403
diff changeset
6235 }
b76b9628d74f Changes from Toru Tsuneyoshi for using Trash can when deleting files.
Jason Rumney <jasonr@gnu.org>
parents: 96403
diff changeset
6236 filename = Fexpand_file_name (filename, Qnil);
b76b9628d74f Changes from Toru Tsuneyoshi for using Trash can when deleting files.
Jason Rumney <jasonr@gnu.org>
parents: 96403
diff changeset
6237
b76b9628d74f Changes from Toru Tsuneyoshi for using Trash can when deleting files.
Jason Rumney <jasonr@gnu.org>
parents: 96403
diff changeset
6238 handler = Ffind_file_name_handler (filename, operation);
b76b9628d74f Changes from Toru Tsuneyoshi for using Trash can when deleting files.
Jason Rumney <jasonr@gnu.org>
parents: 96403
diff changeset
6239 if (!NILP (handler))
b76b9628d74f Changes from Toru Tsuneyoshi for using Trash can when deleting files.
Jason Rumney <jasonr@gnu.org>
parents: 96403
diff changeset
6240 return call2 (handler, operation, filename);
b76b9628d74f Changes from Toru Tsuneyoshi for using Trash can when deleting files.
Jason Rumney <jasonr@gnu.org>
parents: 96403
diff changeset
6241
b76b9628d74f Changes from Toru Tsuneyoshi for using Trash can when deleting files.
Jason Rumney <jasonr@gnu.org>
parents: 96403
diff changeset
6242 encoded_file = ENCODE_FILE (filename);
b76b9628d74f Changes from Toru Tsuneyoshi for using Trash can when deleting files.
Jason Rumney <jasonr@gnu.org>
parents: 96403
diff changeset
6243
b76b9628d74f Changes from Toru Tsuneyoshi for using Trash can when deleting files.
Jason Rumney <jasonr@gnu.org>
parents: 96403
diff changeset
6244 {
b76b9628d74f Changes from Toru Tsuneyoshi for using Trash can when deleting files.
Jason Rumney <jasonr@gnu.org>
parents: 96403
diff changeset
6245 const char * path;
b76b9628d74f Changes from Toru Tsuneyoshi for using Trash can when deleting files.
Jason Rumney <jasonr@gnu.org>
parents: 96403
diff changeset
6246 SHFILEOPSTRUCT file_op;
b76b9628d74f Changes from Toru Tsuneyoshi for using Trash can when deleting files.
Jason Rumney <jasonr@gnu.org>
parents: 96403
diff changeset
6247 char tmp_path[MAX_PATH + 1];
b76b9628d74f Changes from Toru Tsuneyoshi for using Trash can when deleting files.
Jason Rumney <jasonr@gnu.org>
parents: 96403
diff changeset
6248
b76b9628d74f Changes from Toru Tsuneyoshi for using Trash can when deleting files.
Jason Rumney <jasonr@gnu.org>
parents: 96403
diff changeset
6249 path = map_w32_filename (SDATA (encoded_file), NULL);
b76b9628d74f Changes from Toru Tsuneyoshi for using Trash can when deleting files.
Jason Rumney <jasonr@gnu.org>
parents: 96403
diff changeset
6250
b76b9628d74f Changes from Toru Tsuneyoshi for using Trash can when deleting files.
Jason Rumney <jasonr@gnu.org>
parents: 96403
diff changeset
6251 /* On Windows, write permission is required to delete/move files. */
b76b9628d74f Changes from Toru Tsuneyoshi for using Trash can when deleting files.
Jason Rumney <jasonr@gnu.org>
parents: 96403
diff changeset
6252 _chmod (path, 0666);
b76b9628d74f Changes from Toru Tsuneyoshi for using Trash can when deleting files.
Jason Rumney <jasonr@gnu.org>
parents: 96403
diff changeset
6253
b76b9628d74f Changes from Toru Tsuneyoshi for using Trash can when deleting files.
Jason Rumney <jasonr@gnu.org>
parents: 96403
diff changeset
6254 bzero (tmp_path, sizeof (tmp_path));
b76b9628d74f Changes from Toru Tsuneyoshi for using Trash can when deleting files.
Jason Rumney <jasonr@gnu.org>
parents: 96403
diff changeset
6255 strcpy (tmp_path, path);
b76b9628d74f Changes from Toru Tsuneyoshi for using Trash can when deleting files.
Jason Rumney <jasonr@gnu.org>
parents: 96403
diff changeset
6256
b76b9628d74f Changes from Toru Tsuneyoshi for using Trash can when deleting files.
Jason Rumney <jasonr@gnu.org>
parents: 96403
diff changeset
6257 bzero (&file_op, sizeof (file_op));
b76b9628d74f Changes from Toru Tsuneyoshi for using Trash can when deleting files.
Jason Rumney <jasonr@gnu.org>
parents: 96403
diff changeset
6258 file_op.hwnd = HWND_DESKTOP;
b76b9628d74f Changes from Toru Tsuneyoshi for using Trash can when deleting files.
Jason Rumney <jasonr@gnu.org>
parents: 96403
diff changeset
6259 file_op.wFunc = FO_DELETE;
b76b9628d74f Changes from Toru Tsuneyoshi for using Trash can when deleting files.
Jason Rumney <jasonr@gnu.org>
parents: 96403
diff changeset
6260 file_op.pFrom = tmp_path;
b76b9628d74f Changes from Toru Tsuneyoshi for using Trash can when deleting files.
Jason Rumney <jasonr@gnu.org>
parents: 96403
diff changeset
6261 file_op.fFlags = FOF_SILENT | FOF_NOCONFIRMATION | FOF_ALLOWUNDO
b76b9628d74f Changes from Toru Tsuneyoshi for using Trash can when deleting files.
Jason Rumney <jasonr@gnu.org>
parents: 96403
diff changeset
6262 | FOF_NOERRORUI | FOF_NO_CONNECTED_ELEMENTS;
b76b9628d74f Changes from Toru Tsuneyoshi for using Trash can when deleting files.
Jason Rumney <jasonr@gnu.org>
parents: 96403
diff changeset
6263 file_op.fAnyOperationsAborted = FALSE;
b76b9628d74f Changes from Toru Tsuneyoshi for using Trash can when deleting files.
Jason Rumney <jasonr@gnu.org>
parents: 96403
diff changeset
6264
b76b9628d74f Changes from Toru Tsuneyoshi for using Trash can when deleting files.
Jason Rumney <jasonr@gnu.org>
parents: 96403
diff changeset
6265 if (SHFileOperation (&file_op) != 0)
b76b9628d74f Changes from Toru Tsuneyoshi for using Trash can when deleting files.
Jason Rumney <jasonr@gnu.org>
parents: 96403
diff changeset
6266 report_file_error ("Removing old name", list1 (filename));
b76b9628d74f Changes from Toru Tsuneyoshi for using Trash can when deleting files.
Jason Rumney <jasonr@gnu.org>
parents: 96403
diff changeset
6267 }
b76b9628d74f Changes from Toru Tsuneyoshi for using Trash can when deleting files.
Jason Rumney <jasonr@gnu.org>
parents: 96403
diff changeset
6268 return Qnil;
b76b9628d74f Changes from Toru Tsuneyoshi for using Trash can when deleting files.
Jason Rumney <jasonr@gnu.org>
parents: 96403
diff changeset
6269 }
b76b9628d74f Changes from Toru Tsuneyoshi for using Trash can when deleting files.
Jason Rumney <jasonr@gnu.org>
parents: 96403
diff changeset
6270
27397
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
6271
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
6272 /***********************************************************************
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
6273 w32 specialized functions
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
6274 ***********************************************************************/
16588
481b7874a1e9 Change identifiers of the form win32* to w32*.
Geoff Voelker <voelker@cs.washington.edu>
parents: 16259
diff changeset
6275
40964
fb970d0c56eb Change doc-string comments to `new style'. [w/`doc:' keyword]. Doc fixes.
Jason Rumney <jasonr@gnu.org>
parents: 40873
diff changeset
6276 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
6277 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
6278 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
6279 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
6280 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
6281 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
6282 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
6283
fb970d0c56eb Change doc-string comments to `new style'. [w/`doc:' keyword]. Doc fixes.
Jason Rumney <jasonr@gnu.org>
parents: 40873
diff changeset
6284 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
6285 (command, frame)
0181cc080316 Include limits.h and errno.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18508
diff changeset
6286 Lisp_Object command, frame;
0181cc080316 Include limits.h and errno.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18508
diff changeset
6287 {
0181cc080316 Include limits.h and errno.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18508
diff changeset
6288 FRAME_PTR f = check_x_frame (frame);
0181cc080316 Include limits.h and errno.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18508
diff changeset
6289
40656
cdfd4d09b79a Update usage of CHECK_ macros (remove unused second argument).
Pavel Janík <Pavel@Janik.cz>
parents: 40528
diff changeset
6290 CHECK_NUMBER (command);
19707
0181cc080316 Include limits.h and errno.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18508
diff changeset
6291
24718
547f54dfbb94 (x_to_w32_charset): Reinstall VIETNAMESE_CHARSET
Andrew Innes <andrewi@gnu.org>
parents: 24695
diff changeset
6292 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
6293
0181cc080316 Include limits.h and errno.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18508
diff changeset
6294 return Qnil;
0181cc080316 Include limits.h and errno.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18508
diff changeset
6295 }
0181cc080316 Include limits.h and errno.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18508
diff changeset
6296
24670
045e247575d9 [andrewi]
Andrew Innes <andrewi@gnu.org>
parents: 24583
diff changeset
6297 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
6298 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
6299 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
6300 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
6301
501f287c0352 (Fw32_shell_execute): Doc fix.
Eli Zaretskii <eliz@gnu.org>
parents: 74221
diff changeset
6302 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
6303 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
6304 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
6305 operations:
501f287c0352 (Fw32_shell_execute): Doc fix.
Eli Zaretskii <eliz@gnu.org>
parents: 74221
diff changeset
6306
501f287c0352 (Fw32_shell_execute): Doc fix.
Eli Zaretskii <eliz@gnu.org>
parents: 74221
diff changeset
6307 \"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
6308 executable program. If it is an application, that
501f287c0352 (Fw32_shell_execute): Doc fix.
Eli Zaretskii <eliz@gnu.org>
parents: 74221
diff changeset
6309 application is launched in the current buffer's default
501f287c0352 (Fw32_shell_execute): Doc fix.
Eli Zaretskii <eliz@gnu.org>
parents: 74221
diff changeset
6310 directory. Otherwise, the application associated with
501f287c0352 (Fw32_shell_execute): Doc fix.
Eli Zaretskii <eliz@gnu.org>
parents: 74221
diff changeset
6311 DOCUMENT is launched in the buffer's default directory.
501f287c0352 (Fw32_shell_execute): Doc fix.
Eli Zaretskii <eliz@gnu.org>
parents: 74221
diff changeset
6312 \"print\" - print DOCUMENT, which must be a file
501f287c0352 (Fw32_shell_execute): Doc fix.
Eli Zaretskii <eliz@gnu.org>
parents: 74221
diff changeset
6313 \"explore\" - start the Windows Explorer on DOCUMENT
501f287c0352 (Fw32_shell_execute): Doc fix.
Eli Zaretskii <eliz@gnu.org>
parents: 74221
diff changeset
6314 \"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
6315 editor is launched depends on the association for the
501f287c0352 (Fw32_shell_execute): Doc fix.
Eli Zaretskii <eliz@gnu.org>
parents: 74221
diff changeset
6316 specified DOCUMENT
501f287c0352 (Fw32_shell_execute): Doc fix.
Eli Zaretskii <eliz@gnu.org>
parents: 74221
diff changeset
6317 \"find\" - initiate search starting from DOCUMENT which must specify
501f287c0352 (Fw32_shell_execute): Doc fix.
Eli Zaretskii <eliz@gnu.org>
parents: 74221
diff changeset
6318 a directory
501f287c0352 (Fw32_shell_execute): Doc fix.
Eli Zaretskii <eliz@gnu.org>
parents: 74221
diff changeset
6319 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
6320 not defined or unavailable
501f287c0352 (Fw32_shell_execute): Doc fix.
Eli Zaretskii <eliz@gnu.org>
parents: 74221
diff changeset
6321
501f287c0352 (Fw32_shell_execute): Doc fix.
Eli Zaretskii <eliz@gnu.org>
parents: 74221
diff changeset
6322 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
6323 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
6324 Windows Explorer.
501f287c0352 (Fw32_shell_execute): Doc fix.
Eli Zaretskii <eliz@gnu.org>
parents: 74221
diff changeset
6325
79387
0ca197abc593 (Fw32_registered_hot_keys): Don't return the nil values corresponding
Juanma Barranquero <lekktu@gmail.com>
parents: 79381
diff changeset
6326 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
6327 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
6328 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
6329
0ca197abc593 (Fw32_registered_hot_keys): Don't return the nil values corresponding
Juanma Barranquero <lekktu@gmail.com>
parents: 79381
diff changeset
6330 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
6331 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
6332 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
6333 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
6334
fb970d0c56eb Change doc-string comments to `new style'. [w/`doc:' keyword]. Doc fixes.
Jason Rumney <jasonr@gnu.org>
parents: 40873
diff changeset
6335 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
6336 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
6337 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
6338 6 - start minimized */)
24670
045e247575d9 [andrewi]
Andrew Innes <andrewi@gnu.org>
parents: 24583
diff changeset
6339 (operation, document, parameters, show_flag)
045e247575d9 [andrewi]
Andrew Innes <andrewi@gnu.org>
parents: 24583
diff changeset
6340 Lisp_Object operation, document, parameters, show_flag;
045e247575d9 [andrewi]
Andrew Innes <andrewi@gnu.org>
parents: 24583
diff changeset
6341 {
045e247575d9 [andrewi]
Andrew Innes <andrewi@gnu.org>
parents: 24583
diff changeset
6342 Lisp_Object current_dir;
108496
49f3d201fdd0 Backport from trunk: Fix bug #6126.
Eli Zaretskii <eliz@gnu.org>
parents: 107753
diff changeset
6343 char *errstr;
24670
045e247575d9 [andrewi]
Andrew Innes <andrewi@gnu.org>
parents: 24583
diff changeset
6344
40656
cdfd4d09b79a Update usage of CHECK_ macros (remove unused second argument).
Pavel Janík <Pavel@Janik.cz>
parents: 40528
diff changeset
6345 CHECK_STRING (document);
24670
045e247575d9 [andrewi]
Andrew Innes <andrewi@gnu.org>
parents: 24583
diff changeset
6346
80140
001f79563e5a (Fw32_shell_execute): Encode parameters.
Jason Rumney <jasonr@gnu.org>
parents: 79759
diff changeset
6347 /* Encode filename, current directory and parameters. */
24670
045e247575d9 [andrewi]
Andrew Innes <andrewi@gnu.org>
parents: 24583
diff changeset
6348 current_dir = ENCODE_FILE (current_buffer->directory);
045e247575d9 [andrewi]
Andrew Innes <andrewi@gnu.org>
parents: 24583
diff changeset
6349 document = ENCODE_FILE (document);
80140
001f79563e5a (Fw32_shell_execute): Encode parameters.
Jason Rumney <jasonr@gnu.org>
parents: 79759
diff changeset
6350 if (STRINGP (parameters))
001f79563e5a (Fw32_shell_execute): Encode parameters.
Jason Rumney <jasonr@gnu.org>
parents: 79759
diff changeset
6351 parameters = ENCODE_SYSTEM (parameters);
001f79563e5a (Fw32_shell_execute): Encode parameters.
Jason Rumney <jasonr@gnu.org>
parents: 79759
diff changeset
6352
24670
045e247575d9 [andrewi]
Andrew Innes <andrewi@gnu.org>
parents: 24583
diff changeset
6353 if ((int) ShellExecute (NULL,
27397
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
6354 (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
6355 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
6356 SDATA (document),
24670
045e247575d9 [andrewi]
Andrew Innes <andrewi@gnu.org>
parents: 24583
diff changeset
6357 (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
6358 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
6359 SDATA (current_dir),
24670
045e247575d9 [andrewi]
Andrew Innes <andrewi@gnu.org>
parents: 24583
diff changeset
6360 (INTEGERP (show_flag) ?
045e247575d9 [andrewi]
Andrew Innes <andrewi@gnu.org>
parents: 24583
diff changeset
6361 XINT (show_flag) : SW_SHOWDEFAULT))
045e247575d9 [andrewi]
Andrew Innes <andrewi@gnu.org>
parents: 24583
diff changeset
6362 > 32)
045e247575d9 [andrewi]
Andrew Innes <andrewi@gnu.org>
parents: 24583
diff changeset
6363 return Qt;
108496
49f3d201fdd0 Backport from trunk: Fix bug #6126.
Eli Zaretskii <eliz@gnu.org>
parents: 107753
diff changeset
6364 errstr = w32_strerror (0);
49f3d201fdd0 Backport from trunk: Fix bug #6126.
Eli Zaretskii <eliz@gnu.org>
parents: 107753
diff changeset
6365 /* The error string might be encoded in the locale's encoding. */
49f3d201fdd0 Backport from trunk: Fix bug #6126.
Eli Zaretskii <eliz@gnu.org>
parents: 107753
diff changeset
6366 if (!NILP (Vlocale_coding_system))
49f3d201fdd0 Backport from trunk: Fix bug #6126.
Eli Zaretskii <eliz@gnu.org>
parents: 107753
diff changeset
6367 {
49f3d201fdd0 Backport from trunk: Fix bug #6126.
Eli Zaretskii <eliz@gnu.org>
parents: 107753
diff changeset
6368 Lisp_Object decoded =
49f3d201fdd0 Backport from trunk: Fix bug #6126.
Eli Zaretskii <eliz@gnu.org>
parents: 107753
diff changeset
6369 code_convert_string_norecord (make_unibyte_string (errstr,
49f3d201fdd0 Backport from trunk: Fix bug #6126.
Eli Zaretskii <eliz@gnu.org>
parents: 107753
diff changeset
6370 strlen (errstr)),
49f3d201fdd0 Backport from trunk: Fix bug #6126.
Eli Zaretskii <eliz@gnu.org>
parents: 107753
diff changeset
6371 Vlocale_coding_system, 0);
49f3d201fdd0 Backport from trunk: Fix bug #6126.
Eli Zaretskii <eliz@gnu.org>
parents: 107753
diff changeset
6372 errstr = (char *)SDATA (decoded);
49f3d201fdd0 Backport from trunk: Fix bug #6126.
Eli Zaretskii <eliz@gnu.org>
parents: 107753
diff changeset
6373 }
49f3d201fdd0 Backport from trunk: Fix bug #6126.
Eli Zaretskii <eliz@gnu.org>
parents: 107753
diff changeset
6374 error ("ShellExecute failed: %s", errstr);
24670
045e247575d9 [andrewi]
Andrew Innes <andrewi@gnu.org>
parents: 24583
diff changeset
6375 }
045e247575d9 [andrewi]
Andrew Innes <andrewi@gnu.org>
parents: 24583
diff changeset
6376
23681
af0276da2059 (Vw32_pass_optional_keys_to_system): Variable removed.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23637
diff changeset
6377 /* 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
6378 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
6379 lispy_function_keys. */
af0276da2059 (Vw32_pass_optional_keys_to_system): Variable removed.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23637
diff changeset
6380 static int
af0276da2059 (Vw32_pass_optional_keys_to_system): Variable removed.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23637
diff changeset
6381 lookup_vk_code (char *key)
af0276da2059 (Vw32_pass_optional_keys_to_system): Variable removed.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23637
diff changeset
6382 {
af0276da2059 (Vw32_pass_optional_keys_to_system): Variable removed.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23637
diff changeset
6383 int i;
af0276da2059 (Vw32_pass_optional_keys_to_system): Variable removed.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23637
diff changeset
6384
af0276da2059 (Vw32_pass_optional_keys_to_system): Variable removed.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23637
diff changeset
6385 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
6386 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
6387 && 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
6388 return i;
af0276da2059 (Vw32_pass_optional_keys_to_system): Variable removed.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23637
diff changeset
6389
af0276da2059 (Vw32_pass_optional_keys_to_system): Variable removed.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23637
diff changeset
6390 return -1;
af0276da2059 (Vw32_pass_optional_keys_to_system): Variable removed.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23637
diff changeset
6391 }
af0276da2059 (Vw32_pass_optional_keys_to_system): Variable removed.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23637
diff changeset
6392
af0276da2059 (Vw32_pass_optional_keys_to_system): Variable removed.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23637
diff changeset
6393 /* 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
6394 definition. */
55656
29b250a07fe0 (Fw32_register_hot_key, Fw32_unregister_hot_key)
Jason Rumney <jasonr@gnu.org>
parents: 55592
diff changeset
6395 static Lisp_Object
23681
af0276da2059 (Vw32_pass_optional_keys_to_system): Variable removed.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23637
diff changeset
6396 w32_parse_hot_key (key)
af0276da2059 (Vw32_pass_optional_keys_to_system): Variable removed.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23637
diff changeset
6397 Lisp_Object key;
af0276da2059 (Vw32_pass_optional_keys_to_system): Variable removed.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23637
diff changeset
6398 {
af0276da2059 (Vw32_pass_optional_keys_to_system): Variable removed.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23637
diff changeset
6399 /* 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
6400 register Lisp_Object c;
af0276da2059 (Vw32_pass_optional_keys_to_system): Variable removed.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23637
diff changeset
6401 int vk_code;
af0276da2059 (Vw32_pass_optional_keys_to_system): Variable removed.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23637
diff changeset
6402 int lisp_modifiers;
af0276da2059 (Vw32_pass_optional_keys_to_system): Variable removed.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23637
diff changeset
6403 int w32_modifiers;
af0276da2059 (Vw32_pass_optional_keys_to_system): Variable removed.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23637
diff changeset
6404 struct gcpro gcpro1;
af0276da2059 (Vw32_pass_optional_keys_to_system): Variable removed.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23637
diff changeset
6405
40656
cdfd4d09b79a Update usage of CHECK_ macros (remove unused second argument).
Pavel Janík <Pavel@Janik.cz>
parents: 40528
diff changeset
6406 CHECK_VECTOR (key);
23681
af0276da2059 (Vw32_pass_optional_keys_to_system): Variable removed.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23637
diff changeset
6407
af0276da2059 (Vw32_pass_optional_keys_to_system): Variable removed.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23637
diff changeset
6408 if (XFASTINT (Flength (key)) != 1)
af0276da2059 (Vw32_pass_optional_keys_to_system): Variable removed.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23637
diff changeset
6409 return Qnil;
af0276da2059 (Vw32_pass_optional_keys_to_system): Variable removed.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23637
diff changeset
6410
af0276da2059 (Vw32_pass_optional_keys_to_system): Variable removed.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23637
diff changeset
6411 GCPRO1 (key);
af0276da2059 (Vw32_pass_optional_keys_to_system): Variable removed.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23637
diff changeset
6412
af0276da2059 (Vw32_pass_optional_keys_to_system): Variable removed.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23637
diff changeset
6413 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
6414
af0276da2059 (Vw32_pass_optional_keys_to_system): Variable removed.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23637
diff changeset
6415 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
6416 c = Fevent_convert_list (c);
af0276da2059 (Vw32_pass_optional_keys_to_system): Variable removed.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23637
diff changeset
6417
af0276da2059 (Vw32_pass_optional_keys_to_system): Variable removed.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23637
diff changeset
6418 UNGCPRO;
af0276da2059 (Vw32_pass_optional_keys_to_system): Variable removed.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23637
diff changeset
6419
af0276da2059 (Vw32_pass_optional_keys_to_system): Variable removed.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23637
diff changeset
6420 if (! INTEGERP (c) && ! SYMBOLP (c))
af0276da2059 (Vw32_pass_optional_keys_to_system): Variable removed.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23637
diff changeset
6421 error ("Key definition is invalid");
af0276da2059 (Vw32_pass_optional_keys_to_system): Variable removed.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23637
diff changeset
6422
af0276da2059 (Vw32_pass_optional_keys_to_system): Variable removed.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23637
diff changeset
6423 /* 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
6424 if (SYMBOLP (c))
af0276da2059 (Vw32_pass_optional_keys_to_system): Variable removed.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23637
diff changeset
6425 {
af0276da2059 (Vw32_pass_optional_keys_to_system): Variable removed.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23637
diff changeset
6426 c = parse_modifiers (c);
55656
29b250a07fe0 (Fw32_register_hot_key, Fw32_unregister_hot_key)
Jason Rumney <jasonr@gnu.org>
parents: 55592
diff changeset
6427 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
6428 c = Fcar (c);
af0276da2059 (Vw32_pass_optional_keys_to_system): Variable removed.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23637
diff changeset
6429 if (!SYMBOLP (c))
af0276da2059 (Vw32_pass_optional_keys_to_system): Variable removed.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23637
diff changeset
6430 abort ();
46370
40db0673e6f0 Most uses of XSTRING combined with STRING_BYTES or indirection changed to
Ken Raeburn <raeburn@raeburn.org>
parents: 46293
diff changeset
6431 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
6432 }
af0276da2059 (Vw32_pass_optional_keys_to_system): Variable removed.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23637
diff changeset
6433 else if (INTEGERP (c))
af0276da2059 (Vw32_pass_optional_keys_to_system): Variable removed.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23637
diff changeset
6434 {
af0276da2059 (Vw32_pass_optional_keys_to_system): Variable removed.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23637
diff changeset
6435 lisp_modifiers = XINT (c) & ~CHARACTERBITS;
af0276da2059 (Vw32_pass_optional_keys_to_system): Variable removed.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23637
diff changeset
6436 /* 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
6437 vk_code = XINT (c) & CHARACTERBITS;
af0276da2059 (Vw32_pass_optional_keys_to_system): Variable removed.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23637
diff changeset
6438 }
af0276da2059 (Vw32_pass_optional_keys_to_system): Variable removed.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23637
diff changeset
6439
af0276da2059 (Vw32_pass_optional_keys_to_system): Variable removed.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23637
diff changeset
6440 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
6441 return Qnil;
af0276da2059 (Vw32_pass_optional_keys_to_system): Variable removed.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23637
diff changeset
6442
af0276da2059 (Vw32_pass_optional_keys_to_system): Variable removed.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23637
diff changeset
6443 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
6444 && !NILP (Vw32_alt_is_meta))
af0276da2059 (Vw32_pass_optional_keys_to_system): Variable removed.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23637
diff changeset
6445 lisp_modifiers |= alt_modifier;
af0276da2059 (Vw32_pass_optional_keys_to_system): Variable removed.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23637
diff changeset
6446
31110
9feda85db5d6 (max): Define macro.
Andrew Innes <andrewi@gnu.org>
parents: 30601
diff changeset
6447 /* Supply defs missing from mingw32. */
9feda85db5d6 (max): Define macro.
Andrew Innes <andrewi@gnu.org>
parents: 30601
diff changeset
6448 #ifndef MOD_ALT
9feda85db5d6 (max): Define macro.
Andrew Innes <andrewi@gnu.org>
parents: 30601
diff changeset
6449 #define MOD_ALT 0x0001
9feda85db5d6 (max): Define macro.
Andrew Innes <andrewi@gnu.org>
parents: 30601
diff changeset
6450 #define MOD_CONTROL 0x0002
9feda85db5d6 (max): Define macro.
Andrew Innes <andrewi@gnu.org>
parents: 30601
diff changeset
6451 #define MOD_SHIFT 0x0004
9feda85db5d6 (max): Define macro.
Andrew Innes <andrewi@gnu.org>
parents: 30601
diff changeset
6452 #define MOD_WIN 0x0008
9feda85db5d6 (max): Define macro.
Andrew Innes <andrewi@gnu.org>
parents: 30601
diff changeset
6453 #endif
9feda85db5d6 (max): Define macro.
Andrew Innes <andrewi@gnu.org>
parents: 30601
diff changeset
6454
23681
af0276da2059 (Vw32_pass_optional_keys_to_system): Variable removed.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23637
diff changeset
6455 /* 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
6456 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
6457 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
6458 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
6459 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
6460
af0276da2059 (Vw32_pass_optional_keys_to_system): Variable removed.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23637
diff changeset
6461 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
6462 }
af0276da2059 (Vw32_pass_optional_keys_to_system): Variable removed.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23637
diff changeset
6463
40964
fb970d0c56eb Change doc-string comments to `new style'. [w/`doc:' keyword]. Doc fixes.
Jason Rumney <jasonr@gnu.org>
parents: 40873
diff changeset
6464 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
6465 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
6466 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
6467 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
6468 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
6469 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
6470 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
6471
fb970d0c56eb Change doc-string comments to `new style'. [w/`doc:' keyword]. Doc fixes.
Jason Rumney <jasonr@gnu.org>
parents: 40873
diff changeset
6472 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
6473 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
6474 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
6475 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
6476
fb970d0c56eb Change doc-string comments to `new style'. [w/`doc:' keyword]. Doc fixes.
Jason Rumney <jasonr@gnu.org>
parents: 40873
diff changeset
6477 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
6478 (key)
af0276da2059 (Vw32_pass_optional_keys_to_system): Variable removed.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23637
diff changeset
6479 Lisp_Object key;
af0276da2059 (Vw32_pass_optional_keys_to_system): Variable removed.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23637
diff changeset
6480 {
af0276da2059 (Vw32_pass_optional_keys_to_system): Variable removed.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23637
diff changeset
6481 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
6482
79381
c157297ae42e (Fw32_register_hot_key): Don't try to register
Juanma Barranquero <lekktu@gmail.com>
parents: 79213
diff changeset
6483 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
6484 {
af0276da2059 (Vw32_pass_optional_keys_to_system): Variable removed.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23637
diff changeset
6485 /* 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
6486 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
6487
af0276da2059 (Vw32_pass_optional_keys_to_system): Variable removed.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23637
diff changeset
6488 /* 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
6489 if (NILP (item))
af0276da2059 (Vw32_pass_optional_keys_to_system): Variable removed.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23637
diff changeset
6490 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
6491 else
39973
579177964efa Avoid (most) uses of XCAR/XCDR as lvalues, for flexibility in experimenting
Ken Raeburn <raeburn@raeburn.org>
parents: 39812
diff changeset
6492 XSETCAR (item, key);
23681
af0276da2059 (Vw32_pass_optional_keys_to_system): Variable removed.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23637
diff changeset
6493
af0276da2059 (Vw32_pass_optional_keys_to_system): Variable removed.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23637
diff changeset
6494 /* 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
6495 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
6496 #ifdef USE_LISP_UNION_TYPE
29b250a07fe0 (Fw32_register_hot_key, Fw32_unregister_hot_key)
Jason Rumney <jasonr@gnu.org>
parents: 55592
diff changeset
6497 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
6498 (WPARAM) key.i, 0);
29b250a07fe0 (Fw32_register_hot_key, Fw32_unregister_hot_key)
Jason Rumney <jasonr@gnu.org>
parents: 55592
diff changeset
6499 #else
23681
af0276da2059 (Vw32_pass_optional_keys_to_system): Variable removed.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23637
diff changeset
6500 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
6501 (WPARAM) key, 0);
55656
29b250a07fe0 (Fw32_register_hot_key, Fw32_unregister_hot_key)
Jason Rumney <jasonr@gnu.org>
parents: 55592
diff changeset
6502 #endif
23681
af0276da2059 (Vw32_pass_optional_keys_to_system): Variable removed.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23637
diff changeset
6503 }
af0276da2059 (Vw32_pass_optional_keys_to_system): Variable removed.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23637
diff changeset
6504
af0276da2059 (Vw32_pass_optional_keys_to_system): Variable removed.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23637
diff changeset
6505 return key;
af0276da2059 (Vw32_pass_optional_keys_to_system): Variable removed.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23637
diff changeset
6506 }
af0276da2059 (Vw32_pass_optional_keys_to_system): Variable removed.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23637
diff changeset
6507
40964
fb970d0c56eb Change doc-string comments to `new style'. [w/`doc:' keyword]. Doc fixes.
Jason Rumney <jasonr@gnu.org>
parents: 40873
diff changeset
6508 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
6509 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
6510 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
6511 (key)
af0276da2059 (Vw32_pass_optional_keys_to_system): Variable removed.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23637
diff changeset
6512 Lisp_Object key;
af0276da2059 (Vw32_pass_optional_keys_to_system): Variable removed.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23637
diff changeset
6513 {
af0276da2059 (Vw32_pass_optional_keys_to_system): Variable removed.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23637
diff changeset
6514 Lisp_Object item;
af0276da2059 (Vw32_pass_optional_keys_to_system): Variable removed.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23637
diff changeset
6515
af0276da2059 (Vw32_pass_optional_keys_to_system): Variable removed.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23637
diff changeset
6516 if (!INTEGERP (key))
af0276da2059 (Vw32_pass_optional_keys_to_system): Variable removed.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23637
diff changeset
6517 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
6518
af0276da2059 (Vw32_pass_optional_keys_to_system): Variable removed.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23637
diff changeset
6519 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
6520
af0276da2059 (Vw32_pass_optional_keys_to_system): Variable removed.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23637
diff changeset
6521 if (!NILP (item))
af0276da2059 (Vw32_pass_optional_keys_to_system): Variable removed.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23637
diff changeset
6522 {
af0276da2059 (Vw32_pass_optional_keys_to_system): Variable removed.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23637
diff changeset
6523 /* 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
6524 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
6525 #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
6526 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
6527 (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
6528 #else
29b250a07fe0 (Fw32_register_hot_key, Fw32_unregister_hot_key)
Jason Rumney <jasonr@gnu.org>
parents: 55592
diff changeset
6529 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
6530 (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
6531 #endif
23681
af0276da2059 (Vw32_pass_optional_keys_to_system): Variable removed.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23637
diff changeset
6532 {
af0276da2059 (Vw32_pass_optional_keys_to_system): Variable removed.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23637
diff changeset
6533 MSG msg;
af0276da2059 (Vw32_pass_optional_keys_to_system): Variable removed.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23637
diff changeset
6534 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
6535 }
af0276da2059 (Vw32_pass_optional_keys_to_system): Variable removed.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23637
diff changeset
6536 return Qt;
af0276da2059 (Vw32_pass_optional_keys_to_system): Variable removed.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23637
diff changeset
6537 }
af0276da2059 (Vw32_pass_optional_keys_to_system): Variable removed.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23637
diff changeset
6538 return Qnil;
af0276da2059 (Vw32_pass_optional_keys_to_system): Variable removed.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23637
diff changeset
6539 }
af0276da2059 (Vw32_pass_optional_keys_to_system): Variable removed.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23637
diff changeset
6540
40964
fb970d0c56eb Change doc-string comments to `new style'. [w/`doc:' keyword]. Doc fixes.
Jason Rumney <jasonr@gnu.org>
parents: 40873
diff changeset
6541 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
6542 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
6543 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
6544 ()
af0276da2059 (Vw32_pass_optional_keys_to_system): Variable removed.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23637
diff changeset
6545 {
79387
0ca197abc593 (Fw32_registered_hot_keys): Don't return the nil values corresponding
Juanma Barranquero <lekktu@gmail.com>
parents: 79381
diff changeset
6546 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
6547 }
af0276da2059 (Vw32_pass_optional_keys_to_system): Variable removed.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23637
diff changeset
6548
40964
fb970d0c56eb Change doc-string comments to `new style'. [w/`doc:' keyword]. Doc fixes.
Jason Rumney <jasonr@gnu.org>
parents: 40873
diff changeset
6549 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
6550 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
6551 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
6552 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
6553 (hotkeyid)
af0276da2059 (Vw32_pass_optional_keys_to_system): Variable removed.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23637
diff changeset
6554 Lisp_Object hotkeyid;
af0276da2059 (Vw32_pass_optional_keys_to_system): Variable removed.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23637
diff changeset
6555 {
af0276da2059 (Vw32_pass_optional_keys_to_system): Variable removed.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23637
diff changeset
6556 int vk_code, w32_modifiers;
af0276da2059 (Vw32_pass_optional_keys_to_system): Variable removed.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23637
diff changeset
6557 Lisp_Object key;
af0276da2059 (Vw32_pass_optional_keys_to_system): Variable removed.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23637
diff changeset
6558
40656
cdfd4d09b79a Update usage of CHECK_ macros (remove unused second argument).
Pavel Janík <Pavel@Janik.cz>
parents: 40528
diff changeset
6559 CHECK_NUMBER (hotkeyid);
23681
af0276da2059 (Vw32_pass_optional_keys_to_system): Variable removed.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23637
diff changeset
6560
af0276da2059 (Vw32_pass_optional_keys_to_system): Variable removed.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23637
diff changeset
6561 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
6562 w32_modifiers = HOTKEY_MODIFIERS (hotkeyid);
af0276da2059 (Vw32_pass_optional_keys_to_system): Variable removed.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23637
diff changeset
6563
79563
fb6105cb466b (w32_wnd_proc, Fw32_reconstruct_hot_key): Range check
Jason Rumney <jasonr@gnu.org>
parents: 79393
diff changeset
6564 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
6565 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
6566 else
af0276da2059 (Vw32_pass_optional_keys_to_system): Variable removed.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23637
diff changeset
6567 key = make_number (vk_code);
af0276da2059 (Vw32_pass_optional_keys_to_system): Variable removed.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23637
diff changeset
6568
af0276da2059 (Vw32_pass_optional_keys_to_system): Variable removed.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23637
diff changeset
6569 key = Fcons (key, Qnil);
af0276da2059 (Vw32_pass_optional_keys_to_system): Variable removed.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23637
diff changeset
6570 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
6571 key = Fcons (Qshift, key);
23681
af0276da2059 (Vw32_pass_optional_keys_to_system): Variable removed.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23637
diff changeset
6572 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
6573 key = Fcons (Qctrl, key);
23681
af0276da2059 (Vw32_pass_optional_keys_to_system): Variable removed.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23637
diff changeset
6574 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
6575 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
6576 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
6577 key = Fcons (Qhyper, key);
23681
af0276da2059 (Vw32_pass_optional_keys_to_system): Variable removed.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23637
diff changeset
6578
af0276da2059 (Vw32_pass_optional_keys_to_system): Variable removed.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23637
diff changeset
6579 return key;
af0276da2059 (Vw32_pass_optional_keys_to_system): Variable removed.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23637
diff changeset
6580 }
23803
f112aa8f8f5d (Vw32_phantom_key_code): New variable.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23801
diff changeset
6581
40964
fb970d0c56eb Change doc-string comments to `new style'. [w/`doc:' keyword]. Doc fixes.
Jason Rumney <jasonr@gnu.org>
parents: 40873
diff changeset
6582 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
6583 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
6584 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
6585 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
6586 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
6587 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
6588 (key, new_state)
f112aa8f8f5d (Vw32_phantom_key_code): New variable.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23801
diff changeset
6589 Lisp_Object key, new_state;
f112aa8f8f5d (Vw32_phantom_key_code): New variable.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23801
diff changeset
6590 {
f112aa8f8f5d (Vw32_phantom_key_code): New variable.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23801
diff changeset
6591 int vk_code;
f112aa8f8f5d (Vw32_phantom_key_code): New variable.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23801
diff changeset
6592
f112aa8f8f5d (Vw32_phantom_key_code): New variable.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23801
diff changeset
6593 if (EQ (key, intern ("capslock")))
f112aa8f8f5d (Vw32_phantom_key_code): New variable.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23801
diff changeset
6594 vk_code = VK_CAPITAL;
f112aa8f8f5d (Vw32_phantom_key_code): New variable.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23801
diff changeset
6595 else if (EQ (key, intern ("kp-numlock")))
f112aa8f8f5d (Vw32_phantom_key_code): New variable.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23801
diff changeset
6596 vk_code = VK_NUMLOCK;
f112aa8f8f5d (Vw32_phantom_key_code): New variable.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23801
diff changeset
6597 else if (EQ (key, intern ("scroll")))
f112aa8f8f5d (Vw32_phantom_key_code): New variable.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23801
diff changeset
6598 vk_code = VK_SCROLL;
f112aa8f8f5d (Vw32_phantom_key_code): New variable.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23801
diff changeset
6599 else
f112aa8f8f5d (Vw32_phantom_key_code): New variable.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23801
diff changeset
6600 return Qnil;
f112aa8f8f5d (Vw32_phantom_key_code): New variable.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23801
diff changeset
6601
f112aa8f8f5d (Vw32_phantom_key_code): New variable.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23801
diff changeset
6602 if (!dwWindowsThreadId)
f112aa8f8f5d (Vw32_phantom_key_code): New variable.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23801
diff changeset
6603 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
6604
55656
29b250a07fe0 (Fw32_register_hot_key, Fw32_unregister_hot_key)
Jason Rumney <jasonr@gnu.org>
parents: 55592
diff changeset
6605 #ifdef USE_LISP_UNION_TYPE
23803
f112aa8f8f5d (Vw32_phantom_key_code): New variable.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23801
diff changeset
6606 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
6607 (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
6608 #else
29b250a07fe0 (Fw32_register_hot_key, Fw32_unregister_hot_key)
Jason Rumney <jasonr@gnu.org>
parents: 55592
diff changeset
6609 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
6610 (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
6611 #endif
23803
f112aa8f8f5d (Vw32_phantom_key_code): New variable.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23801
diff changeset
6612 {
f112aa8f8f5d (Vw32_phantom_key_code): New variable.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23801
diff changeset
6613 MSG msg;
f112aa8f8f5d (Vw32_phantom_key_code): New variable.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23801
diff changeset
6614 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
6615 return make_number (msg.wParam);
f112aa8f8f5d (Vw32_phantom_key_code): New variable.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23801
diff changeset
6616 }
f112aa8f8f5d (Vw32_phantom_key_code): New variable.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23801
diff changeset
6617 return Qnil;
f112aa8f8f5d (Vw32_phantom_key_code): New variable.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23801
diff changeset
6618 }
74661
0b62ec4c4929 (w32-window-exists-p): New function.
Eli Zaretskii <eliz@gnu.org>
parents: 74618
diff changeset
6619
0b62ec4c4929 (w32-window-exists-p): New function.
Eli Zaretskii <eliz@gnu.org>
parents: 74618
diff changeset
6620 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
6621 2, 2, 0,
0b62ec4c4929 (w32-window-exists-p): New function.
Eli Zaretskii <eliz@gnu.org>
parents: 74618
diff changeset
6622 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
6623
0b62ec4c4929 (w32-window-exists-p): New function.
Eli Zaretskii <eliz@gnu.org>
parents: 74618
diff changeset
6624 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
6625 (class, name)
0b62ec4c4929 (w32-window-exists-p): New function.
Eli Zaretskii <eliz@gnu.org>
parents: 74618
diff changeset
6626 Lisp_Object class, name;
0b62ec4c4929 (w32-window-exists-p): New function.
Eli Zaretskii <eliz@gnu.org>
parents: 74618
diff changeset
6627 {
0b62ec4c4929 (w32-window-exists-p): New function.
Eli Zaretskii <eliz@gnu.org>
parents: 74618
diff changeset
6628 HWND hnd;
0b62ec4c4929 (w32-window-exists-p): New function.
Eli Zaretskii <eliz@gnu.org>
parents: 74618
diff changeset
6629
0b62ec4c4929 (w32-window-exists-p): New function.
Eli Zaretskii <eliz@gnu.org>
parents: 74618
diff changeset
6630 if (!NILP (class))
0b62ec4c4929 (w32-window-exists-p): New function.
Eli Zaretskii <eliz@gnu.org>
parents: 74618
diff changeset
6631 CHECK_STRING (class);
0b62ec4c4929 (w32-window-exists-p): New function.
Eli Zaretskii <eliz@gnu.org>
parents: 74618
diff changeset
6632 if (!NILP (name))
0b62ec4c4929 (w32-window-exists-p): New function.
Eli Zaretskii <eliz@gnu.org>
parents: 74618
diff changeset
6633 CHECK_STRING (name);
0b62ec4c4929 (w32-window-exists-p): New function.
Eli Zaretskii <eliz@gnu.org>
parents: 74618
diff changeset
6634
0b62ec4c4929 (w32-window-exists-p): New function.
Eli Zaretskii <eliz@gnu.org>
parents: 74618
diff changeset
6635 hnd = FindWindow (STRINGP (class) ? ((LPCTSTR) SDATA (class)) : NULL,
0b62ec4c4929 (w32-window-exists-p): New function.
Eli Zaretskii <eliz@gnu.org>
parents: 74618
diff changeset
6636 STRINGP (name) ? ((LPCTSTR) SDATA (name)) : NULL);
0b62ec4c4929 (w32-window-exists-p): New function.
Eli Zaretskii <eliz@gnu.org>
parents: 74618
diff changeset
6637 if (!hnd)
0b62ec4c4929 (w32-window-exists-p): New function.
Eli Zaretskii <eliz@gnu.org>
parents: 74618
diff changeset
6638 return Qnil;
0b62ec4c4929 (w32-window-exists-p): New function.
Eli Zaretskii <eliz@gnu.org>
parents: 74618
diff changeset
6639 return Qt;
0b62ec4c4929 (w32-window-exists-p): New function.
Eli Zaretskii <eliz@gnu.org>
parents: 74618
diff changeset
6640 }
0b62ec4c4929 (w32-window-exists-p): New function.
Eli Zaretskii <eliz@gnu.org>
parents: 74618
diff changeset
6641
94447
45acd5e62f88 (Fw32_battery_status): New defun.
Jason Rumney <jasonr@gnu.org>
parents: 94432
diff changeset
6642 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
6643 doc: /* Get power status information from Windows system.
45acd5e62f88 (Fw32_battery_status): New defun.
Jason Rumney <jasonr@gnu.org>
parents: 94432
diff changeset
6644
45acd5e62f88 (Fw32_battery_status): New defun.
Jason Rumney <jasonr@gnu.org>
parents: 94432
diff changeset
6645 The following %-sequences are provided:
45acd5e62f88 (Fw32_battery_status): New defun.
Jason Rumney <jasonr@gnu.org>
parents: 94432
diff changeset
6646 %L AC line status (verbose)
45acd5e62f88 (Fw32_battery_status): New defun.
Jason Rumney <jasonr@gnu.org>
parents: 94432
diff changeset
6647 %B Battery status (verbose)
45acd5e62f88 (Fw32_battery_status): New defun.
Jason Rumney <jasonr@gnu.org>
parents: 94432
diff changeset
6648 %b Battery status, empty means high, `-' means low,
45acd5e62f88 (Fw32_battery_status): New defun.
Jason Rumney <jasonr@gnu.org>
parents: 94432
diff changeset
6649 `!' means critical, and `+' means charging
45acd5e62f88 (Fw32_battery_status): New defun.
Jason Rumney <jasonr@gnu.org>
parents: 94432
diff changeset
6650 %p Battery load percentage
45acd5e62f88 (Fw32_battery_status): New defun.
Jason Rumney <jasonr@gnu.org>
parents: 94432
diff changeset
6651 %s Remaining time (to charge or discharge) in seconds
45acd5e62f88 (Fw32_battery_status): New defun.
Jason Rumney <jasonr@gnu.org>
parents: 94432
diff changeset
6652 %m Remaining time (to charge or discharge) in minutes
45acd5e62f88 (Fw32_battery_status): New defun.
Jason Rumney <jasonr@gnu.org>
parents: 94432
diff changeset
6653 %h Remaining time (to charge or discharge) in hours
45acd5e62f88 (Fw32_battery_status): New defun.
Jason Rumney <jasonr@gnu.org>
parents: 94432
diff changeset
6654 %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
6655 ()
45acd5e62f88 (Fw32_battery_status): New defun.
Jason Rumney <jasonr@gnu.org>
parents: 94432
diff changeset
6656 {
45acd5e62f88 (Fw32_battery_status): New defun.
Jason Rumney <jasonr@gnu.org>
parents: 94432
diff changeset
6657 Lisp_Object status = Qnil;
45acd5e62f88 (Fw32_battery_status): New defun.
Jason Rumney <jasonr@gnu.org>
parents: 94432
diff changeset
6658
45acd5e62f88 (Fw32_battery_status): New defun.
Jason Rumney <jasonr@gnu.org>
parents: 94432
diff changeset
6659 SYSTEM_POWER_STATUS system_status;
45acd5e62f88 (Fw32_battery_status): New defun.
Jason Rumney <jasonr@gnu.org>
parents: 94432
diff changeset
6660 if (GetSystemPowerStatus (&system_status))
45acd5e62f88 (Fw32_battery_status): New defun.
Jason Rumney <jasonr@gnu.org>
parents: 94432
diff changeset
6661 {
45acd5e62f88 (Fw32_battery_status): New defun.
Jason Rumney <jasonr@gnu.org>
parents: 94432
diff changeset
6662 Lisp_Object line_status, battery_status, battery_status_symbol;
45acd5e62f88 (Fw32_battery_status): New defun.
Jason Rumney <jasonr@gnu.org>
parents: 94432
diff changeset
6663 Lisp_Object load_percentage, seconds, minutes, hours, remain;
45acd5e62f88 (Fw32_battery_status): New defun.
Jason Rumney <jasonr@gnu.org>
parents: 94432
diff changeset
6664 Lisp_Object sequences[8];
45acd5e62f88 (Fw32_battery_status): New defun.
Jason Rumney <jasonr@gnu.org>
parents: 94432
diff changeset
6665
45acd5e62f88 (Fw32_battery_status): New defun.
Jason Rumney <jasonr@gnu.org>
parents: 94432
diff changeset
6666 long seconds_left = (long) system_status.BatteryLifeTime;
45acd5e62f88 (Fw32_battery_status): New defun.
Jason Rumney <jasonr@gnu.org>
parents: 94432
diff changeset
6667
45acd5e62f88 (Fw32_battery_status): New defun.
Jason Rumney <jasonr@gnu.org>
parents: 94432
diff changeset
6668 if (system_status.ACLineStatus == 0)
45acd5e62f88 (Fw32_battery_status): New defun.
Jason Rumney <jasonr@gnu.org>
parents: 94432
diff changeset
6669 line_status = build_string ("off-line");
45acd5e62f88 (Fw32_battery_status): New defun.
Jason Rumney <jasonr@gnu.org>
parents: 94432
diff changeset
6670 else if (system_status.ACLineStatus == 1)
45acd5e62f88 (Fw32_battery_status): New defun.
Jason Rumney <jasonr@gnu.org>
parents: 94432
diff changeset
6671 line_status = build_string ("on-line");
45acd5e62f88 (Fw32_battery_status): New defun.
Jason Rumney <jasonr@gnu.org>
parents: 94432
diff changeset
6672 else
45acd5e62f88 (Fw32_battery_status): New defun.
Jason Rumney <jasonr@gnu.org>
parents: 94432
diff changeset
6673 line_status = build_string ("N/A");
45acd5e62f88 (Fw32_battery_status): New defun.
Jason Rumney <jasonr@gnu.org>
parents: 94432
diff changeset
6674
45acd5e62f88 (Fw32_battery_status): New defun.
Jason Rumney <jasonr@gnu.org>
parents: 94432
diff changeset
6675 if (system_status.BatteryFlag & 128)
45acd5e62f88 (Fw32_battery_status): New defun.
Jason Rumney <jasonr@gnu.org>
parents: 94432
diff changeset
6676 {
45acd5e62f88 (Fw32_battery_status): New defun.
Jason Rumney <jasonr@gnu.org>
parents: 94432
diff changeset
6677 battery_status = build_string ("N/A");
101276
dd95cb42c0aa * dbusbind.c (Fdbus_register_signal):
Juanma Barranquero <lekktu@gmail.com>
parents: 100982
diff changeset
6678 battery_status_symbol = empty_unibyte_string;
94447
45acd5e62f88 (Fw32_battery_status): New defun.
Jason Rumney <jasonr@gnu.org>
parents: 94432
diff changeset
6679 }
45acd5e62f88 (Fw32_battery_status): New defun.
Jason Rumney <jasonr@gnu.org>
parents: 94432
diff changeset
6680 else if (system_status.BatteryFlag & 8)
45acd5e62f88 (Fw32_battery_status): New defun.
Jason Rumney <jasonr@gnu.org>
parents: 94432
diff changeset
6681 {
45acd5e62f88 (Fw32_battery_status): New defun.
Jason Rumney <jasonr@gnu.org>
parents: 94432
diff changeset
6682 battery_status = build_string ("charging");
45acd5e62f88 (Fw32_battery_status): New defun.
Jason Rumney <jasonr@gnu.org>
parents: 94432
diff changeset
6683 battery_status_symbol = build_string ("+");
45acd5e62f88 (Fw32_battery_status): New defun.
Jason Rumney <jasonr@gnu.org>
parents: 94432
diff changeset
6684 if (system_status.BatteryFullLifeTime != -1L)
45acd5e62f88 (Fw32_battery_status): New defun.
Jason Rumney <jasonr@gnu.org>
parents: 94432
diff changeset
6685 seconds_left = system_status.BatteryFullLifeTime - seconds_left;
45acd5e62f88 (Fw32_battery_status): New defun.
Jason Rumney <jasonr@gnu.org>
parents: 94432
diff changeset
6686 }
45acd5e62f88 (Fw32_battery_status): New defun.
Jason Rumney <jasonr@gnu.org>
parents: 94432
diff changeset
6687 else if (system_status.BatteryFlag & 4)
45acd5e62f88 (Fw32_battery_status): New defun.
Jason Rumney <jasonr@gnu.org>
parents: 94432
diff changeset
6688 {
45acd5e62f88 (Fw32_battery_status): New defun.
Jason Rumney <jasonr@gnu.org>
parents: 94432
diff changeset
6689 battery_status = build_string ("critical");
45acd5e62f88 (Fw32_battery_status): New defun.
Jason Rumney <jasonr@gnu.org>
parents: 94432
diff changeset
6690 battery_status_symbol = build_string ("!");
45acd5e62f88 (Fw32_battery_status): New defun.
Jason Rumney <jasonr@gnu.org>
parents: 94432
diff changeset
6691 }
45acd5e62f88 (Fw32_battery_status): New defun.
Jason Rumney <jasonr@gnu.org>
parents: 94432
diff changeset
6692 else if (system_status.BatteryFlag & 2)
45acd5e62f88 (Fw32_battery_status): New defun.
Jason Rumney <jasonr@gnu.org>
parents: 94432
diff changeset
6693 {
45acd5e62f88 (Fw32_battery_status): New defun.
Jason Rumney <jasonr@gnu.org>
parents: 94432
diff changeset
6694 battery_status = build_string ("low");
45acd5e62f88 (Fw32_battery_status): New defun.
Jason Rumney <jasonr@gnu.org>
parents: 94432
diff changeset
6695 battery_status_symbol = build_string ("-");
45acd5e62f88 (Fw32_battery_status): New defun.
Jason Rumney <jasonr@gnu.org>
parents: 94432
diff changeset
6696 }
45acd5e62f88 (Fw32_battery_status): New defun.
Jason Rumney <jasonr@gnu.org>
parents: 94432
diff changeset
6697 else if (system_status.BatteryFlag & 1)
45acd5e62f88 (Fw32_battery_status): New defun.
Jason Rumney <jasonr@gnu.org>
parents: 94432
diff changeset
6698 {
45acd5e62f88 (Fw32_battery_status): New defun.
Jason Rumney <jasonr@gnu.org>
parents: 94432
diff changeset
6699 battery_status = build_string ("high");
101276
dd95cb42c0aa * dbusbind.c (Fdbus_register_signal):
Juanma Barranquero <lekktu@gmail.com>
parents: 100982
diff changeset
6700 battery_status_symbol = empty_unibyte_string;
94447
45acd5e62f88 (Fw32_battery_status): New defun.
Jason Rumney <jasonr@gnu.org>
parents: 94432
diff changeset
6701 }
45acd5e62f88 (Fw32_battery_status): New defun.
Jason Rumney <jasonr@gnu.org>
parents: 94432
diff changeset
6702 else
45acd5e62f88 (Fw32_battery_status): New defun.
Jason Rumney <jasonr@gnu.org>
parents: 94432
diff changeset
6703 {
45acd5e62f88 (Fw32_battery_status): New defun.
Jason Rumney <jasonr@gnu.org>
parents: 94432
diff changeset
6704 battery_status = build_string ("medium");
101276
dd95cb42c0aa * dbusbind.c (Fdbus_register_signal):
Juanma Barranquero <lekktu@gmail.com>
parents: 100982
diff changeset
6705 battery_status_symbol = empty_unibyte_string;
94447
45acd5e62f88 (Fw32_battery_status): New defun.
Jason Rumney <jasonr@gnu.org>
parents: 94432
diff changeset
6706 }
45acd5e62f88 (Fw32_battery_status): New defun.
Jason Rumney <jasonr@gnu.org>
parents: 94432
diff changeset
6707
45acd5e62f88 (Fw32_battery_status): New defun.
Jason Rumney <jasonr@gnu.org>
parents: 94432
diff changeset
6708 if (system_status.BatteryLifePercent > 100)
45acd5e62f88 (Fw32_battery_status): New defun.
Jason Rumney <jasonr@gnu.org>
parents: 94432
diff changeset
6709 load_percentage = build_string ("N/A");
45acd5e62f88 (Fw32_battery_status): New defun.
Jason Rumney <jasonr@gnu.org>
parents: 94432
diff changeset
6710 else
45acd5e62f88 (Fw32_battery_status): New defun.
Jason Rumney <jasonr@gnu.org>
parents: 94432
diff changeset
6711 {
45acd5e62f88 (Fw32_battery_status): New defun.
Jason Rumney <jasonr@gnu.org>
parents: 94432
diff changeset
6712 char buffer[16];
45acd5e62f88 (Fw32_battery_status): New defun.
Jason Rumney <jasonr@gnu.org>
parents: 94432
diff changeset
6713 _snprintf (buffer, 16, "%d", system_status.BatteryLifePercent);
45acd5e62f88 (Fw32_battery_status): New defun.
Jason Rumney <jasonr@gnu.org>
parents: 94432
diff changeset
6714 load_percentage = build_string (buffer);
45acd5e62f88 (Fw32_battery_status): New defun.
Jason Rumney <jasonr@gnu.org>
parents: 94432
diff changeset
6715 }
45acd5e62f88 (Fw32_battery_status): New defun.
Jason Rumney <jasonr@gnu.org>
parents: 94432
diff changeset
6716
45acd5e62f88 (Fw32_battery_status): New defun.
Jason Rumney <jasonr@gnu.org>
parents: 94432
diff changeset
6717 if (seconds_left < 0)
45acd5e62f88 (Fw32_battery_status): New defun.
Jason Rumney <jasonr@gnu.org>
parents: 94432
diff changeset
6718 seconds = minutes = hours = remain = build_string ("N/A");
45acd5e62f88 (Fw32_battery_status): New defun.
Jason Rumney <jasonr@gnu.org>
parents: 94432
diff changeset
6719 else
45acd5e62f88 (Fw32_battery_status): New defun.
Jason Rumney <jasonr@gnu.org>
parents: 94432
diff changeset
6720 {
45acd5e62f88 (Fw32_battery_status): New defun.
Jason Rumney <jasonr@gnu.org>
parents: 94432
diff changeset
6721 long m;
45acd5e62f88 (Fw32_battery_status): New defun.
Jason Rumney <jasonr@gnu.org>
parents: 94432
diff changeset
6722 float h;
45acd5e62f88 (Fw32_battery_status): New defun.
Jason Rumney <jasonr@gnu.org>
parents: 94432
diff changeset
6723 char buffer[16];
45acd5e62f88 (Fw32_battery_status): New defun.
Jason Rumney <jasonr@gnu.org>
parents: 94432
diff changeset
6724 _snprintf (buffer, 16, "%ld", seconds_left);
45acd5e62f88 (Fw32_battery_status): New defun.
Jason Rumney <jasonr@gnu.org>
parents: 94432
diff changeset
6725 seconds = build_string (buffer);
45acd5e62f88 (Fw32_battery_status): New defun.
Jason Rumney <jasonr@gnu.org>
parents: 94432
diff changeset
6726
45acd5e62f88 (Fw32_battery_status): New defun.
Jason Rumney <jasonr@gnu.org>
parents: 94432
diff changeset
6727 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
6728 _snprintf (buffer, 16, "%ld", m);
94447
45acd5e62f88 (Fw32_battery_status): New defun.
Jason Rumney <jasonr@gnu.org>
parents: 94432
diff changeset
6729 minutes = build_string (buffer);
45acd5e62f88 (Fw32_battery_status): New defun.
Jason Rumney <jasonr@gnu.org>
parents: 94432
diff changeset
6730
45acd5e62f88 (Fw32_battery_status): New defun.
Jason Rumney <jasonr@gnu.org>
parents: 94432
diff changeset
6731 h = seconds_left / 3600.0;
45acd5e62f88 (Fw32_battery_status): New defun.
Jason Rumney <jasonr@gnu.org>
parents: 94432
diff changeset
6732 _snprintf (buffer, 16, "%3.1f", h);
45acd5e62f88 (Fw32_battery_status): New defun.
Jason Rumney <jasonr@gnu.org>
parents: 94432
diff changeset
6733 hours = build_string (buffer);
45acd5e62f88 (Fw32_battery_status): New defun.
Jason Rumney <jasonr@gnu.org>
parents: 94432
diff changeset
6734
94618
033cc6f89687 (Fw32_battery_status): Fix computation of %t (h:min) format.
Juanma Barranquero <lekktu@gmail.com>
parents: 94447
diff changeset
6735 _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
6736 remain = build_string (buffer);
45acd5e62f88 (Fw32_battery_status): New defun.
Jason Rumney <jasonr@gnu.org>
parents: 94432
diff changeset
6737 }
45acd5e62f88 (Fw32_battery_status): New defun.
Jason Rumney <jasonr@gnu.org>
parents: 94432
diff changeset
6738 sequences[0] = Fcons (make_number ('L'), line_status);
45acd5e62f88 (Fw32_battery_status): New defun.
Jason Rumney <jasonr@gnu.org>
parents: 94432
diff changeset
6739 sequences[1] = Fcons (make_number ('B'), battery_status);
45acd5e62f88 (Fw32_battery_status): New defun.
Jason Rumney <jasonr@gnu.org>
parents: 94432
diff changeset
6740 sequences[2] = Fcons (make_number ('b'), battery_status_symbol);
45acd5e62f88 (Fw32_battery_status): New defun.
Jason Rumney <jasonr@gnu.org>
parents: 94432
diff changeset
6741 sequences[3] = Fcons (make_number ('p'), load_percentage);
45acd5e62f88 (Fw32_battery_status): New defun.
Jason Rumney <jasonr@gnu.org>
parents: 94432
diff changeset
6742 sequences[4] = Fcons (make_number ('s'), seconds);
45acd5e62f88 (Fw32_battery_status): New defun.
Jason Rumney <jasonr@gnu.org>
parents: 94432
diff changeset
6743 sequences[5] = Fcons (make_number ('m'), minutes);
45acd5e62f88 (Fw32_battery_status): New defun.
Jason Rumney <jasonr@gnu.org>
parents: 94432
diff changeset
6744 sequences[6] = Fcons (make_number ('h'), hours);
45acd5e62f88 (Fw32_battery_status): New defun.
Jason Rumney <jasonr@gnu.org>
parents: 94432
diff changeset
6745 sequences[7] = Fcons (make_number ('t'), remain);
45acd5e62f88 (Fw32_battery_status): New defun.
Jason Rumney <jasonr@gnu.org>
parents: 94432
diff changeset
6746
45acd5e62f88 (Fw32_battery_status): New defun.
Jason Rumney <jasonr@gnu.org>
parents: 94432
diff changeset
6747 status = Flist (8, sequences);
45acd5e62f88 (Fw32_battery_status): New defun.
Jason Rumney <jasonr@gnu.org>
parents: 94432
diff changeset
6748 }
45acd5e62f88 (Fw32_battery_status): New defun.
Jason Rumney <jasonr@gnu.org>
parents: 94432
diff changeset
6749 return status;
45acd5e62f88 (Fw32_battery_status): New defun.
Jason Rumney <jasonr@gnu.org>
parents: 94432
diff changeset
6750 }
74661
0b62ec4c4929 (w32-window-exists-p): New function.
Eli Zaretskii <eliz@gnu.org>
parents: 74618
diff changeset
6751
13434
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
6752
34643
7108531c744b (Ffile_system_info): New function.
Andrew Innes <andrewi@gnu.org>
parents: 34638
diff changeset
6753 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
6754 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
6755 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
6756 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
6757 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
6758 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
6759 (filename)
7108531c744b (Ffile_system_info): New function.
Andrew Innes <andrewi@gnu.org>
parents: 34638
diff changeset
6760 Lisp_Object filename;
7108531c744b (Ffile_system_info): New function.
Andrew Innes <andrewi@gnu.org>
parents: 34638
diff changeset
6761 {
7108531c744b (Ffile_system_info): New function.
Andrew Innes <andrewi@gnu.org>
parents: 34638
diff changeset
6762 Lisp_Object encoded, value;
7108531c744b (Ffile_system_info): New function.
Andrew Innes <andrewi@gnu.org>
parents: 34638
diff changeset
6763
40656
cdfd4d09b79a Update usage of CHECK_ macros (remove unused second argument).
Pavel Janík <Pavel@Janik.cz>
parents: 40528
diff changeset
6764 CHECK_STRING (filename);
34643
7108531c744b (Ffile_system_info): New function.
Andrew Innes <andrewi@gnu.org>
parents: 34638
diff changeset
6765 filename = Fexpand_file_name (filename, Qnil);
7108531c744b (Ffile_system_info): New function.
Andrew Innes <andrewi@gnu.org>
parents: 34638
diff changeset
6766 encoded = ENCODE_FILE (filename);
7108531c744b (Ffile_system_info): New function.
Andrew Innes <andrewi@gnu.org>
parents: 34638
diff changeset
6767
7108531c744b (Ffile_system_info): New function.
Andrew Innes <andrewi@gnu.org>
parents: 34638
diff changeset
6768 value = Qnil;
7108531c744b (Ffile_system_info): New function.
Andrew Innes <andrewi@gnu.org>
parents: 34638
diff changeset
6769
7108531c744b (Ffile_system_info): New function.
Andrew Innes <andrewi@gnu.org>
parents: 34638
diff changeset
6770 /* Determining the required information on Windows turns out, sadly,
7108531c744b (Ffile_system_info): New function.
Andrew Innes <andrewi@gnu.org>
parents: 34638
diff changeset
6771 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
6772 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
6773 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
6774 added rather late on. */
7108531c744b (Ffile_system_info): New function.
Andrew Innes <andrewi@gnu.org>
parents: 34638
diff changeset
6775 {
7108531c744b (Ffile_system_info): New function.
Andrew Innes <andrewi@gnu.org>
parents: 34638
diff changeset
6776 HMODULE hKernel = GetModuleHandle ("kernel32");
7108531c744b (Ffile_system_info): New function.
Andrew Innes <andrewi@gnu.org>
parents: 34638
diff changeset
6777 BOOL (*pfn_GetDiskFreeSpaceEx)
7108531c744b (Ffile_system_info): New function.
Andrew Innes <andrewi@gnu.org>
parents: 34638
diff changeset
6778 (char *, PULARGE_INTEGER, PULARGE_INTEGER, PULARGE_INTEGER)
7108531c744b (Ffile_system_info): New function.
Andrew Innes <andrewi@gnu.org>
parents: 34638
diff changeset
6779 = (void *) GetProcAddress (hKernel, "GetDiskFreeSpaceEx");
7108531c744b (Ffile_system_info): New function.
Andrew Innes <andrewi@gnu.org>
parents: 34638
diff changeset
6780
7108531c744b (Ffile_system_info): New function.
Andrew Innes <andrewi@gnu.org>
parents: 34638
diff changeset
6781 /* 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
6782 volume holding FILENAME. */
7108531c744b (Ffile_system_info): New function.
Andrew Innes <andrewi@gnu.org>
parents: 34638
diff changeset
6783 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
6784 char *name = SDATA (encoded);
34643
7108531c744b (Ffile_system_info): New function.
Andrew Innes <andrewi@gnu.org>
parents: 34638
diff changeset
6785
7108531c744b (Ffile_system_info): New function.
Andrew Innes <andrewi@gnu.org>
parents: 34638
diff changeset
6786 /* find the root name of the volume if given */
7108531c744b (Ffile_system_info): New function.
Andrew Innes <andrewi@gnu.org>
parents: 34638
diff changeset
6787 if (isalpha (name[0]) && name[1] == ':')
7108531c744b (Ffile_system_info): New function.
Andrew Innes <andrewi@gnu.org>
parents: 34638
diff changeset
6788 {
7108531c744b (Ffile_system_info): New function.
Andrew Innes <andrewi@gnu.org>
parents: 34638
diff changeset
6789 rootname[0] = name[0];
7108531c744b (Ffile_system_info): New function.
Andrew Innes <andrewi@gnu.org>
parents: 34638
diff changeset
6790 rootname[1] = name[1];
7108531c744b (Ffile_system_info): New function.
Andrew Innes <andrewi@gnu.org>
parents: 34638
diff changeset
6791 rootname[2] = '\\';
7108531c744b (Ffile_system_info): New function.
Andrew Innes <andrewi@gnu.org>
parents: 34638
diff changeset
6792 rootname[3] = 0;
7108531c744b (Ffile_system_info): New function.
Andrew Innes <andrewi@gnu.org>
parents: 34638
diff changeset
6793 }
7108531c744b (Ffile_system_info): New function.
Andrew Innes <andrewi@gnu.org>
parents: 34638
diff changeset
6794 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
6795 {
7108531c744b (Ffile_system_info): New function.
Andrew Innes <andrewi@gnu.org>
parents: 34638
diff changeset
6796 char *str = rootname;
7108531c744b (Ffile_system_info): New function.
Andrew Innes <andrewi@gnu.org>
parents: 34638
diff changeset
6797 int slashes = 4;
7108531c744b (Ffile_system_info): New function.
Andrew Innes <andrewi@gnu.org>
parents: 34638
diff changeset
6798 do
7108531c744b (Ffile_system_info): New function.
Andrew Innes <andrewi@gnu.org>
parents: 34638
diff changeset
6799 {
7108531c744b (Ffile_system_info): New function.
Andrew Innes <andrewi@gnu.org>
parents: 34638
diff changeset
6800 if (IS_DIRECTORY_SEP (*name) && --slashes == 0)
7108531c744b (Ffile_system_info): New function.
Andrew Innes <andrewi@gnu.org>
parents: 34638
diff changeset
6801 break;
7108531c744b (Ffile_system_info): New function.
Andrew Innes <andrewi@gnu.org>
parents: 34638
diff changeset
6802 *str++ = *name++;
7108531c744b (Ffile_system_info): New function.
Andrew Innes <andrewi@gnu.org>
parents: 34638
diff changeset
6803 }
7108531c744b (Ffile_system_info): New function.
Andrew Innes <andrewi@gnu.org>
parents: 34638
diff changeset
6804 while ( *name );
7108531c744b (Ffile_system_info): New function.
Andrew Innes <andrewi@gnu.org>
parents: 34638
diff changeset
6805
7108531c744b (Ffile_system_info): New function.
Andrew Innes <andrewi@gnu.org>
parents: 34638
diff changeset
6806 *str++ = '\\';
7108531c744b (Ffile_system_info): New function.
Andrew Innes <andrewi@gnu.org>
parents: 34638
diff changeset
6807 *str = 0;
7108531c744b (Ffile_system_info): New function.
Andrew Innes <andrewi@gnu.org>
parents: 34638
diff changeset
6808 }
7108531c744b (Ffile_system_info): New function.
Andrew Innes <andrewi@gnu.org>
parents: 34638
diff changeset
6809
7108531c744b (Ffile_system_info): New function.
Andrew Innes <andrewi@gnu.org>
parents: 34638
diff changeset
6810 if (pfn_GetDiskFreeSpaceEx)
7108531c744b (Ffile_system_info): New function.
Andrew Innes <andrewi@gnu.org>
parents: 34638
diff changeset
6811 {
44047
73645cbc79a7 (x_set_cursor_color): Set foreground of cursor, not frame.
Jason Rumney <jasonr@gnu.org>
parents: 43963
diff changeset
6812 /* 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
6813 use signed ones instead. */
34643
7108531c744b (Ffile_system_info): New function.
Andrew Innes <andrewi@gnu.org>
parents: 34638
diff changeset
6814 LARGE_INTEGER availbytes;
7108531c744b (Ffile_system_info): New function.
Andrew Innes <andrewi@gnu.org>
parents: 34638
diff changeset
6815 LARGE_INTEGER freebytes;
7108531c744b (Ffile_system_info): New function.
Andrew Innes <andrewi@gnu.org>
parents: 34638
diff changeset
6816 LARGE_INTEGER totalbytes;
7108531c744b (Ffile_system_info): New function.
Andrew Innes <andrewi@gnu.org>
parents: 34638
diff changeset
6817
79387
0ca197abc593 (Fw32_registered_hot_keys): Don't return the nil values corresponding
Juanma Barranquero <lekktu@gmail.com>
parents: 79381
diff changeset
6818 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
6819 (ULARGE_INTEGER *)&availbytes,
0ca197abc593 (Fw32_registered_hot_keys): Don't return the nil values corresponding
Juanma Barranquero <lekktu@gmail.com>
parents: 79381
diff changeset
6820 (ULARGE_INTEGER *)&totalbytes,
0ca197abc593 (Fw32_registered_hot_keys): Don't return the nil values corresponding
Juanma Barranquero <lekktu@gmail.com>
parents: 79381
diff changeset
6821 (ULARGE_INTEGER *)&freebytes))
34643
7108531c744b (Ffile_system_info): New function.
Andrew Innes <andrewi@gnu.org>
parents: 34638
diff changeset
6822 value = list3 (make_float ((double) totalbytes.QuadPart),
7108531c744b (Ffile_system_info): New function.
Andrew Innes <andrewi@gnu.org>
parents: 34638
diff changeset
6823 make_float ((double) freebytes.QuadPart),
7108531c744b (Ffile_system_info): New function.
Andrew Innes <andrewi@gnu.org>
parents: 34638
diff changeset
6824 make_float ((double) availbytes.QuadPart));
7108531c744b (Ffile_system_info): New function.
Andrew Innes <andrewi@gnu.org>
parents: 34638
diff changeset
6825 }
7108531c744b (Ffile_system_info): New function.
Andrew Innes <andrewi@gnu.org>
parents: 34638
diff changeset
6826 else
7108531c744b (Ffile_system_info): New function.
Andrew Innes <andrewi@gnu.org>
parents: 34638
diff changeset
6827 {
7108531c744b (Ffile_system_info): New function.
Andrew Innes <andrewi@gnu.org>
parents: 34638
diff changeset
6828 DWORD sectors_per_cluster;
7108531c744b (Ffile_system_info): New function.
Andrew Innes <andrewi@gnu.org>
parents: 34638
diff changeset
6829 DWORD bytes_per_sector;
7108531c744b (Ffile_system_info): New function.
Andrew Innes <andrewi@gnu.org>
parents: 34638
diff changeset
6830 DWORD free_clusters;
7108531c744b (Ffile_system_info): New function.
Andrew Innes <andrewi@gnu.org>
parents: 34638
diff changeset
6831 DWORD total_clusters;
7108531c744b (Ffile_system_info): New function.
Andrew Innes <andrewi@gnu.org>
parents: 34638
diff changeset
6832
79387
0ca197abc593 (Fw32_registered_hot_keys): Don't return the nil values corresponding
Juanma Barranquero <lekktu@gmail.com>
parents: 79381
diff changeset
6833 if (GetDiskFreeSpace (rootname,
0ca197abc593 (Fw32_registered_hot_keys): Don't return the nil values corresponding
Juanma Barranquero <lekktu@gmail.com>
parents: 79381
diff changeset
6834 &sectors_per_cluster,
0ca197abc593 (Fw32_registered_hot_keys): Don't return the nil values corresponding
Juanma Barranquero <lekktu@gmail.com>
parents: 79381
diff changeset
6835 &bytes_per_sector,
0ca197abc593 (Fw32_registered_hot_keys): Don't return the nil values corresponding
Juanma Barranquero <lekktu@gmail.com>
parents: 79381
diff changeset
6836 &free_clusters,
0ca197abc593 (Fw32_registered_hot_keys): Don't return the nil values corresponding
Juanma Barranquero <lekktu@gmail.com>
parents: 79381
diff changeset
6837 &total_clusters))
34643
7108531c744b (Ffile_system_info): New function.
Andrew Innes <andrewi@gnu.org>
parents: 34638
diff changeset
6838 value = list3 (make_float ((double) total_clusters
7108531c744b (Ffile_system_info): New function.
Andrew Innes <andrewi@gnu.org>
parents: 34638
diff changeset
6839 * sectors_per_cluster * bytes_per_sector),
7108531c744b (Ffile_system_info): New function.
Andrew Innes <andrewi@gnu.org>
parents: 34638
diff changeset
6840 make_float ((double) free_clusters
7108531c744b (Ffile_system_info): New function.
Andrew Innes <andrewi@gnu.org>
parents: 34638
diff changeset
6841 * sectors_per_cluster * bytes_per_sector),
7108531c744b (Ffile_system_info): New function.
Andrew Innes <andrewi@gnu.org>
parents: 34638
diff changeset
6842 make_float ((double) free_clusters
7108531c744b (Ffile_system_info): New function.
Andrew Innes <andrewi@gnu.org>
parents: 34638
diff changeset
6843 * sectors_per_cluster * bytes_per_sector));
7108531c744b (Ffile_system_info): New function.
Andrew Innes <andrewi@gnu.org>
parents: 34638
diff changeset
6844 }
7108531c744b (Ffile_system_info): New function.
Andrew Innes <andrewi@gnu.org>
parents: 34638
diff changeset
6845 }
7108531c744b (Ffile_system_info): New function.
Andrew Innes <andrewi@gnu.org>
parents: 34638
diff changeset
6846
7108531c744b (Ffile_system_info): New function.
Andrew Innes <andrewi@gnu.org>
parents: 34638
diff changeset
6847 return value;
7108531c744b (Ffile_system_info): New function.
Andrew Innes <andrewi@gnu.org>
parents: 34638
diff changeset
6848 }
7108531c744b (Ffile_system_info): New function.
Andrew Innes <andrewi@gnu.org>
parents: 34638
diff changeset
6849
53739
5456cd83c404 * makefile.w32-in, w32fns.c: Add `default-printer-name' function.
Jason Rumney <jasonr@gnu.org>
parents: 53332
diff changeset
6850 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
6851 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
6852 ()
5456cd83c404 * makefile.w32-in, w32fns.c: Add `default-printer-name' function.
Jason Rumney <jasonr@gnu.org>
parents: 53332
diff changeset
6853 {
5456cd83c404 * makefile.w32-in, w32fns.c: Add `default-printer-name' function.
Jason Rumney <jasonr@gnu.org>
parents: 53332
diff changeset
6854 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
6855 int err;
5456cd83c404 * makefile.w32-in, w32fns.c: Add `default-printer-name' function.
Jason Rumney <jasonr@gnu.org>
parents: 53332
diff changeset
6856 HANDLE hPrn;
5456cd83c404 * makefile.w32-in, w32fns.c: Add `default-printer-name' function.
Jason Rumney <jasonr@gnu.org>
parents: 53332
diff changeset
6857 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
6858 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
6859
5456cd83c404 * makefile.w32-in, w32fns.c: Add `default-printer-name' function.
Jason Rumney <jasonr@gnu.org>
parents: 53332
diff changeset
6860 /* 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
6861 * 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
6862 * 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
6863 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
6864 return Qnil;
5456cd83c404 * makefile.w32-in, w32fns.c: Add `default-printer-name' function.
Jason Rumney <jasonr@gnu.org>
parents: 53332
diff changeset
6865 /* printername precedes first "," character */
5456cd83c404 * makefile.w32-in, w32fns.c: Add `default-printer-name' function.
Jason Rumney <jasonr@gnu.org>
parents: 53332
diff changeset
6866 strtok (pname_buf, ",");
5456cd83c404 * makefile.w32-in, w32fns.c: Add `default-printer-name' function.
Jason Rumney <jasonr@gnu.org>
parents: 53332
diff changeset
6867 /* 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
6868 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
6869 return Qnil;
5456cd83c404 * makefile.w32-in, w32fns.c: Add `default-printer-name' function.
Jason Rumney <jasonr@gnu.org>
parents: 53332
diff changeset
6870 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
6871 if (dwNeeded == 0)
5456cd83c404 * makefile.w32-in, w32fns.c: Add `default-printer-name' function.
Jason Rumney <jasonr@gnu.org>
parents: 53332
diff changeset
6872 {
5456cd83c404 * makefile.w32-in, w32fns.c: Add `default-printer-name' function.
Jason Rumney <jasonr@gnu.org>
parents: 53332
diff changeset
6873 ClosePrinter (hPrn);
5456cd83c404 * makefile.w32-in, w32fns.c: Add `default-printer-name' function.
Jason Rumney <jasonr@gnu.org>
parents: 53332
diff changeset
6874 return Qnil;
5456cd83c404 * makefile.w32-in, w32fns.c: Add `default-printer-name' function.
Jason Rumney <jasonr@gnu.org>
parents: 53332
diff changeset
6875 }
5456cd83c404 * makefile.w32-in, w32fns.c: Add `default-printer-name' function.
Jason Rumney <jasonr@gnu.org>
parents: 53332
diff changeset
6876 /* 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
6877 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
6878 if (!ppi2)
5456cd83c404 * makefile.w32-in, w32fns.c: Add `default-printer-name' function.
Jason Rumney <jasonr@gnu.org>
parents: 53332
diff changeset
6879 {
5456cd83c404 * makefile.w32-in, w32fns.c: Add `default-printer-name' function.
Jason Rumney <jasonr@gnu.org>
parents: 53332
diff changeset
6880 ClosePrinter (hPrn);
5456cd83c404 * makefile.w32-in, w32fns.c: Add `default-printer-name' function.
Jason Rumney <jasonr@gnu.org>
parents: 53332
diff changeset
6881 return Qnil;
5456cd83c404 * makefile.w32-in, w32fns.c: Add `default-printer-name' function.
Jason Rumney <jasonr@gnu.org>
parents: 53332
diff changeset
6882 }
79387
0ca197abc593 (Fw32_registered_hot_keys): Don't return the nil values corresponding
Juanma Barranquero <lekktu@gmail.com>
parents: 79381
diff changeset
6883 /* 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
6884 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
6885 ClosePrinter (hPrn);
5456cd83c404 * makefile.w32-in, w32fns.c: Add `default-printer-name' function.
Jason Rumney <jasonr@gnu.org>
parents: 53332
diff changeset
6886 if (!err)
5456cd83c404 * makefile.w32-in, w32fns.c: Add `default-printer-name' function.
Jason Rumney <jasonr@gnu.org>
parents: 53332
diff changeset
6887 {
79387
0ca197abc593 (Fw32_registered_hot_keys): Don't return the nil values corresponding
Juanma Barranquero <lekktu@gmail.com>
parents: 79381
diff changeset
6888 xfree (ppi2);
53739
5456cd83c404 * makefile.w32-in, w32fns.c: Add `default-printer-name' function.
Jason Rumney <jasonr@gnu.org>
parents: 53332
diff changeset
6889 return Qnil;
5456cd83c404 * makefile.w32-in, w32fns.c: Add `default-printer-name' function.
Jason Rumney <jasonr@gnu.org>
parents: 53332
diff changeset
6890 }
5456cd83c404 * makefile.w32-in, w32fns.c: Add `default-printer-name' function.
Jason Rumney <jasonr@gnu.org>
parents: 53332
diff changeset
6891
5456cd83c404 * makefile.w32-in, w32fns.c: Add `default-printer-name' function.
Jason Rumney <jasonr@gnu.org>
parents: 53332
diff changeset
6892 if (ppi2)
5456cd83c404 * makefile.w32-in, w32fns.c: Add `default-printer-name' function.
Jason Rumney <jasonr@gnu.org>
parents: 53332
diff changeset
6893 {
5456cd83c404 * makefile.w32-in, w32fns.c: Add `default-printer-name' function.
Jason Rumney <jasonr@gnu.org>
parents: 53332
diff changeset
6894 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
6895 {
5456cd83c404 * makefile.w32-in, w32fns.c: Add `default-printer-name' function.
Jason Rumney <jasonr@gnu.org>
parents: 53332
diff changeset
6896 /* a remote printer */
5456cd83c404 * makefile.w32-in, w32fns.c: Add `default-printer-name' function.
Jason Rumney <jasonr@gnu.org>
parents: 53332
diff changeset
6897 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
6898 _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
6899 ppi2->pShareName);
53739
5456cd83c404 * makefile.w32-in, w32fns.c: Add `default-printer-name' function.
Jason Rumney <jasonr@gnu.org>
parents: 53332
diff changeset
6900 else
79387
0ca197abc593 (Fw32_registered_hot_keys): Don't return the nil values corresponding
Juanma Barranquero <lekktu@gmail.com>
parents: 79381
diff changeset
6901 _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
6902 ppi2->pShareName);
53739
5456cd83c404 * makefile.w32-in, w32fns.c: Add `default-printer-name' function.
Jason Rumney <jasonr@gnu.org>
parents: 53332
diff changeset
6903 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
6904 }
5456cd83c404 * makefile.w32-in, w32fns.c: Add `default-printer-name' function.
Jason Rumney <jasonr@gnu.org>
parents: 53332
diff changeset
6905 else
5456cd83c404 * makefile.w32-in, w32fns.c: Add `default-printer-name' function.
Jason Rumney <jasonr@gnu.org>
parents: 53332
diff changeset
6906 {
5456cd83c404 * makefile.w32-in, w32fns.c: Add `default-printer-name' function.
Jason Rumney <jasonr@gnu.org>
parents: 53332
diff changeset
6907 /* 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
6908 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
6909 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
6910 /* `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
6911 * 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
6912 strtok (pname_buf, ",");
53739
5456cd83c404 * makefile.w32-in, w32fns.c: Add `default-printer-name' function.
Jason Rumney <jasonr@gnu.org>
parents: 53332
diff changeset
6913 }
79387
0ca197abc593 (Fw32_registered_hot_keys): Don't return the nil values corresponding
Juanma Barranquero <lekktu@gmail.com>
parents: 79381
diff changeset
6914 xfree (ppi2);
53739
5456cd83c404 * makefile.w32-in, w32fns.c: Add `default-printer-name' function.
Jason Rumney <jasonr@gnu.org>
parents: 53332
diff changeset
6915 }
5456cd83c404 * makefile.w32-in, w32fns.c: Add `default-printer-name' function.
Jason Rumney <jasonr@gnu.org>
parents: 53332
diff changeset
6916
5456cd83c404 * makefile.w32-in, w32fns.c: Add `default-printer-name' function.
Jason Rumney <jasonr@gnu.org>
parents: 53332
diff changeset
6917 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
6918 }
5456cd83c404 * makefile.w32-in, w32fns.c: Add `default-printer-name' function.
Jason Rumney <jasonr@gnu.org>
parents: 53332
diff changeset
6919
41480
2c71c672b3c7 (x_create_tip_frame): Set frame's fringes_extra to 0.
Jason Rumney <jasonr@gnu.org>
parents: 41448
diff changeset
6920 /***********************************************************************
2c71c672b3c7 (x_create_tip_frame): Set frame's fringes_extra to 0.
Jason Rumney <jasonr@gnu.org>
parents: 41448
diff changeset
6921 Initialization
2c71c672b3c7 (x_create_tip_frame): Set frame's fringes_extra to 0.
Jason Rumney <jasonr@gnu.org>
parents: 41448
diff changeset
6922 ***********************************************************************/
2c71c672b3c7 (x_create_tip_frame): Set frame's fringes_extra to 0.
Jason Rumney <jasonr@gnu.org>
parents: 41448
diff changeset
6923
55892
c12c7852c322 (Fx_display_grayscale_p, Fw32_send_sys_command, Vw32_color_map):
Juanma Barranquero <lekktu@gmail.com>
parents: 55673
diff changeset
6924 /* 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
6925 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
6926
6d942c1d5f2d * w32fns.c (Qauto_raise, Qauto_lower, ...): Remove vars for frame
Kim F. Storm <storm@cua.dk>
parents: 50229
diff changeset
6927 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
6928 {
6d942c1d5f2d * w32fns.c (Qauto_raise, Qauto_lower, ...): Remove vars for frame
Kim F. Storm <storm@cua.dk>
parents: 50229
diff changeset
6929 x_set_autoraise,
6d942c1d5f2d * w32fns.c (Qauto_raise, Qauto_lower, ...): Remove vars for frame
Kim F. Storm <storm@cua.dk>
parents: 50229
diff changeset
6930 x_set_autolower,
6d942c1d5f2d * w32fns.c (Qauto_raise, Qauto_lower, ...): Remove vars for frame
Kim F. Storm <storm@cua.dk>
parents: 50229
diff changeset
6931 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
6932 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
6933 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
6934 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
6935 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
6936 x_set_font,
6d942c1d5f2d * w32fns.c (Qauto_raise, Qauto_lower, ...): Remove vars for frame
Kim F. Storm <storm@cua.dk>
parents: 50229
diff changeset
6937 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
6938 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
6939 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
6940 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
6941 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
6942 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
6943 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
6944 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
6945 x_set_title,
6d942c1d5f2d * w32fns.c (Qauto_raise, Qauto_lower, ...): Remove vars for frame
Kim F. Storm <storm@cua.dk>
parents: 50229
diff changeset
6946 x_set_unsplittable,
6d942c1d5f2d * w32fns.c (Qauto_raise, Qauto_lower, ...): Remove vars for frame
Kim F. Storm <storm@cua.dk>
parents: 50229
diff changeset
6947 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
6948 x_set_visibility,
6d942c1d5f2d * w32fns.c (Qauto_raise, Qauto_lower, ...): Remove vars for frame
Kim F. Storm <storm@cua.dk>
parents: 50229
diff changeset
6949 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
6950 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
6951 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
6952 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
6953 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
6954 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
6955 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
6956 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
6957 x_set_fullscreen,
95162
4b6526b6c53a Seiji Zenitani <zenitani at mac.com>
Glenn Morris <rgm@gnu.org>
parents: 94963
diff changeset
6958 x_set_font_backend,
103674
1867be80e595 * w32fns.c (w32_frame_parm_handlers): Set 0 for sticky.
Jan Djärv <jan.h.d@swipnet.se>
parents: 103305
diff changeset
6959 x_set_alpha,
1867be80e595 * w32fns.c (w32_frame_parm_handlers): Set 0 for sticky.
Jan Djärv <jan.h.d@swipnet.se>
parents: 103305
diff changeset
6960 0, /* x_set_sticky */
50362
6d942c1d5f2d * w32fns.c (Qauto_raise, Qauto_lower, ...): Remove vars for frame
Kim F. Storm <storm@cua.dk>
parents: 50229
diff changeset
6961 };
6d942c1d5f2d * w32fns.c (Qauto_raise, Qauto_lower, ...): Remove vars for frame
Kim F. Storm <storm@cua.dk>
parents: 50229
diff changeset
6962
41480
2c71c672b3c7 (x_create_tip_frame): Set frame's fringes_extra to 0.
Jason Rumney <jasonr@gnu.org>
parents: 41448
diff changeset
6963 void
16588
481b7874a1e9 Change identifiers of the form win32* to w32*.
Geoff Voelker <voelker@cs.washington.edu>
parents: 16259
diff changeset
6964 syms_of_w32fns ()
13434
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
6965 {
49455
a6825c5c7ce7 (init_jpeg_functions, jpeg_resync_to_restart_wrapper):
Jason Rumney <jasonr@gnu.org>
parents: 49448
diff changeset
6966 globals_of_w32fns ();
a6825c5c7ce7 (init_jpeg_functions, jpeg_resync_to_restart_wrapper):
Jason Rumney <jasonr@gnu.org>
parents: 49448
diff changeset
6967 /* 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
6968 w32_in_use = 0;
41732
0d9b74cd27cd (trackmouse_window, track_mouse_event_fn): New vars.
Jason Rumney <jasonr@gnu.org>
parents: 41726
diff changeset
6969 track_mouse_window = NULL;
0d9b74cd27cd (trackmouse_window, track_mouse_event_fn): New vars.
Jason Rumney <jasonr@gnu.org>
parents: 41726
diff changeset
6970
42918
9b06036a8c5e (syms_of_w32fns): Initialize w32_visible_system_caret_hwnd.
Jason Rumney <jasonr@gnu.org>
parents: 42865
diff changeset
6971 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
6972
90919
2f257010ddd5 (syms_of_w32fns): Use DEFSYM macro.
Jason Rumney <jasonr@gnu.org>
parents: 90918
diff changeset
6973 DEFSYM (Qnone, "none");
2f257010ddd5 (syms_of_w32fns): Use DEFSYM macro.
Jason Rumney <jasonr@gnu.org>
parents: 90918
diff changeset
6974 DEFSYM (Qsuppress_icon, "suppress-icon");
2f257010ddd5 (syms_of_w32fns): Use DEFSYM macro.
Jason Rumney <jasonr@gnu.org>
parents: 90918
diff changeset
6975 DEFSYM (Qundefined_color, "undefined-color");
2f257010ddd5 (syms_of_w32fns): Use DEFSYM macro.
Jason Rumney <jasonr@gnu.org>
parents: 90918
diff changeset
6976 DEFSYM (Qcancel_timer, "cancel-timer");
2f257010ddd5 (syms_of_w32fns): Use DEFSYM macro.
Jason Rumney <jasonr@gnu.org>
parents: 90918
diff changeset
6977 DEFSYM (Qhyper, "hyper");
2f257010ddd5 (syms_of_w32fns): Use DEFSYM macro.
Jason Rumney <jasonr@gnu.org>
parents: 90918
diff changeset
6978 DEFSYM (Qsuper, "super");
2f257010ddd5 (syms_of_w32fns): Use DEFSYM macro.
Jason Rumney <jasonr@gnu.org>
parents: 90918
diff changeset
6979 DEFSYM (Qmeta, "meta");
2f257010ddd5 (syms_of_w32fns): Use DEFSYM macro.
Jason Rumney <jasonr@gnu.org>
parents: 90918
diff changeset
6980 DEFSYM (Qalt, "alt");
2f257010ddd5 (syms_of_w32fns): Use DEFSYM macro.
Jason Rumney <jasonr@gnu.org>
parents: 90918
diff changeset
6981 DEFSYM (Qctrl, "ctrl");
2f257010ddd5 (syms_of_w32fns): Use DEFSYM macro.
Jason Rumney <jasonr@gnu.org>
parents: 90918
diff changeset
6982 DEFSYM (Qcontrol, "control");
2f257010ddd5 (syms_of_w32fns): Use DEFSYM macro.
Jason Rumney <jasonr@gnu.org>
parents: 90918
diff changeset
6983 DEFSYM (Qshift, "shift");
96079
efbaf6995245 * w32fns.c, xfns.c (Qfont_param): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 95894
diff changeset
6984 DEFSYM (Qfont_param, "font-parameter");
43398
8782b8cfed62 *** empty log message ***
Jason Rumney <jasonr@gnu.org>
parents: 43210
diff changeset
6985 /* 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
6986
27397
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
6987 /* 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
6988 Vtext_property_default_nonsticky
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
6989 = 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
6990
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
6991
13434
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
6992 Fput (Qundefined_color, Qerror_conditions,
105877
21bdda3ded62 * xterm.c (syms_of_xterm):
Dan Nicolaescu <dann@ics.uci.edu>
parents: 105794
diff changeset
6993 pure_cons (Qundefined_color, pure_cons (Qerror, Qnil)));
13434
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
6994 Fput (Qundefined_color, Qerror_message,
105877
21bdda3ded62 * xterm.c (syms_of_xterm):
Dan Nicolaescu <dann@ics.uci.edu>
parents: 105794
diff changeset
6995 make_pure_c_string ("Undefined color"));
13434
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
6996
23681
af0276da2059 (Vw32_pass_optional_keys_to_system): Variable removed.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23637
diff changeset
6997 staticpro (&w32_grabbed_keys);
af0276da2059 (Vw32_pass_optional_keys_to_system): Variable removed.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23637
diff changeset
6998 w32_grabbed_keys = Qnil;
af0276da2059 (Vw32_pass_optional_keys_to_system): Variable removed.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23637
diff changeset
6999
16588
481b7874a1e9 Change identifiers of the form win32* to w32*.
Geoff Voelker <voelker@cs.washington.edu>
parents: 16259
diff changeset
7000 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
7001 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
7002 Vw32_color_map = Qnil;
481b7874a1e9 Change identifiers of the form win32* to w32*.
Geoff Voelker <voelker@cs.washington.edu>
parents: 16259
diff changeset
7003
481b7874a1e9 Change identifiers of the form win32* to w32*.
Geoff Voelker <voelker@cs.washington.edu>
parents: 16259
diff changeset
7004 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
7005 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
7006 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
7007 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
7008 then silently swallows them. */);
16588
481b7874a1e9 Change identifiers of the form win32* to w32*.
Geoff Voelker <voelker@cs.washington.edu>
parents: 16259
diff changeset
7009 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
7010
481b7874a1e9 Change identifiers of the form win32* to w32*.
Geoff Voelker <voelker@cs.washington.edu>
parents: 16259
diff changeset
7011 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
7012 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
7013 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
7014 Vw32_alt_is_meta = Qt;
481b7874a1e9 Change identifiers of the form win32* to w32*.
Geoff Voelker <voelker@cs.washington.edu>
parents: 16259
diff changeset
7015
55656
29b250a07fe0 (Fw32_register_hot_key, Fw32_unregister_hot_key)
Jason Rumney <jasonr@gnu.org>
parents: 55592
diff changeset
7016 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
7017 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
7018 w32_quit_key = 0;
24339
e8b73c2ac4ec (Vw32_quit_key): New variable.
Andrew Innes <andrewi@gnu.org>
parents: 24252
diff changeset
7019
47942
080b4586492b Fix typo in comment.
Juanma Barranquero <lekktu@gmail.com>
parents: 47731
diff changeset
7020 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
7021 &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
7022 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
7023
9ce57eb0c589 (w32-pass-alt-to-system, w32-alt-is-meta)
Eli Zaretskii <eliz@gnu.org>
parents: 72529
diff changeset
7024 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
7025 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
7026 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
7027
9ce57eb0c589 (w32-pass-alt-to-system, w32-alt-is-meta)
Eli Zaretskii <eliz@gnu.org>
parents: 72529
diff changeset
7028 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
7029 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
7030 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
7031 <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
7032 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
7033 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
7034
47942
080b4586492b Fix typo in comment.
Juanma Barranquero <lekktu@gmail.com>
parents: 47731
diff changeset
7035 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
7036 &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
7037 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
7038
9ce57eb0c589 (w32-pass-alt-to-system, w32-alt-is-meta)
Eli Zaretskii <eliz@gnu.org>
parents: 72529
diff changeset
7039 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
7040 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
7041 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
7042
9ce57eb0c589 (w32-pass-alt-to-system, w32-alt-is-meta)
Eli Zaretskii <eliz@gnu.org>
parents: 72529
diff changeset
7043 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
7044 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
7045 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
7046 <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
7047 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
7048 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
7049
55656
29b250a07fe0 (Fw32_register_hot_key, Fw32_unregister_hot_key)
Jason Rumney <jasonr@gnu.org>
parents: 55592
diff changeset
7050 DEFVAR_LISP ("w32-phantom-key-code",
23803
f112aa8f8f5d (Vw32_phantom_key_code): New variable.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23801
diff changeset
7051 &Vw32_phantom_key_code,
55656
29b250a07fe0 (Fw32_register_hot_key, Fw32_unregister_hot_key)
Jason Rumney <jasonr@gnu.org>
parents: 55592
diff changeset
7052 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
7053 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
7054
fb970d0c56eb Change doc-string comments to `new style'. [w/`doc:' keyword]. Doc fixes.
Jason Rumney <jasonr@gnu.org>
parents: 40873
diff changeset
7055 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
7056 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
7057 `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
7058 /* 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
7059 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
7060 XSETINT (Vw32_phantom_key_code, 255);
23803
f112aa8f8f5d (Vw32_phantom_key_code): New variable.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23801
diff changeset
7061
47942
080b4586492b Fix typo in comment.
Juanma Barranquero <lekktu@gmail.com>
parents: 47731
diff changeset
7062 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
7063 &Vw32_enable_num_lock,
73087
9ce57eb0c589 (w32-pass-alt-to-system, w32-alt-is-meta)
Eli Zaretskii <eliz@gnu.org>
parents: 72529
diff changeset
7064 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
7065 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
7066 Vw32_enable_num_lock = Qt;
af0276da2059 (Vw32_pass_optional_keys_to_system): Variable removed.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23637
diff changeset
7067
47942
080b4586492b Fix typo in comment.
Juanma Barranquero <lekktu@gmail.com>
parents: 47731
diff changeset
7068 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
7069 &Vw32_enable_caps_lock,
73087
9ce57eb0c589 (w32-pass-alt-to-system, w32-alt-is-meta)
Eli Zaretskii <eliz@gnu.org>
parents: 72529
diff changeset
7070 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
7071 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
7072 Vw32_enable_caps_lock = Qt;
af0276da2059 (Vw32_pass_optional_keys_to_system): Variable removed.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23637
diff changeset
7073
af0276da2059 (Vw32_pass_optional_keys_to_system): Variable removed.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23637
diff changeset
7074 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
7075 &Vw32_scroll_lock_modifier,
73087
9ce57eb0c589 (w32-pass-alt-to-system, w32-alt-is-meta)
Eli Zaretskii <eliz@gnu.org>
parents: 72529
diff changeset
7076 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
7077 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
7078 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
7079 Any other value will cause the Scroll Lock key to be ignored. */);
105794
26f423968392 (syms_of_w32fns): Change default value of
Jason Rumney <jasonr@gnu.org>
parents: 105669
diff changeset
7080 Vw32_scroll_lock_modifier = Qnil;
23681
af0276da2059 (Vw32_pass_optional_keys_to_system): Variable removed.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23637
diff changeset
7081
af0276da2059 (Vw32_pass_optional_keys_to_system): Variable removed.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23637
diff changeset
7082 DEFVAR_LISP ("w32-lwindow-modifier",
af0276da2059 (Vw32_pass_optional_keys_to_system): Variable removed.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23637
diff changeset
7083 &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
7084 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
7085 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
7086 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
7087 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
7088 Vw32_lwindow_modifier = Qnil;
af0276da2059 (Vw32_pass_optional_keys_to_system): Variable removed.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23637
diff changeset
7089
af0276da2059 (Vw32_pass_optional_keys_to_system): Variable removed.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23637
diff changeset
7090 DEFVAR_LISP ("w32-rwindow-modifier",
af0276da2059 (Vw32_pass_optional_keys_to_system): Variable removed.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23637
diff changeset
7091 &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
7092 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
7093 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
7094 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
7095 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
7096 Vw32_rwindow_modifier = Qnil;
af0276da2059 (Vw32_pass_optional_keys_to_system): Variable removed.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23637
diff changeset
7097
af0276da2059 (Vw32_pass_optional_keys_to_system): Variable removed.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23637
diff changeset
7098 DEFVAR_LISP ("w32-apps-modifier",
af0276da2059 (Vw32_pass_optional_keys_to_system): Variable removed.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23637
diff changeset
7099 &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
7100 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
7101 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
7102 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
7103 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
7104 Vw32_apps_modifier = Qnil;
16588
481b7874a1e9 Change identifiers of the form win32* to w32*.
Geoff Voelker <voelker@cs.washington.edu>
parents: 16259
diff changeset
7105
42845
ebb3a20bc357 (w32_load_system_font, w32_to_x_charset): Use strnicmp
Jason Rumney <jasonr@gnu.org>
parents: 42833
diff changeset
7106 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
7107 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
7108 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
7109
481b7874a1e9 Change identifiers of the form win32* to w32*.
Geoff Voelker <voelker@cs.washington.edu>
parents: 16259
diff changeset
7110 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
7111 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
7112 Vw32_enable_palette = Qt;
481b7874a1e9 Change identifiers of the form win32* to w32*.
Geoff Voelker <voelker@cs.washington.edu>
parents: 16259
diff changeset
7113
481b7874a1e9 Change identifiers of the form win32* to w32*.
Geoff Voelker <voelker@cs.washington.edu>
parents: 16259
diff changeset
7114 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
7115 &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
7116 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
7117 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
7118 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
7119 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
7120 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
7121 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
7122
481b7874a1e9 Change identifiers of the form win32* to w32*.
Geoff Voelker <voelker@cs.washington.edu>
parents: 16259
diff changeset
7123 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
7124 &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
7125 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
7126 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
7127 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
7128 reported as lisp events. */);
55656
29b250a07fe0 (Fw32_register_hot_key, Fw32_unregister_hot_key)
Jason Rumney <jasonr@gnu.org>
parents: 55592
diff changeset
7129 w32_mouse_move_interval = 0;
15290
da73440fdb5f (Vwin32_mouse_move_interval): New lisp variable.
Karl Heuer <kwzh@gnu.org>
parents: 15280
diff changeset
7130
42719
70f13c4f82c7 (w32_pass_extra_mouse_buttons_to_system): New user option.
Jason Rumney <jasonr@gnu.org>
parents: 42537
diff changeset
7131 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
7132 &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
7133 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
7134 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
7135 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
7136 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
7137 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
7138 system to handle them. */);
70f13c4f82c7 (w32_pass_extra_mouse_buttons_to_system): New user option.
Jason Rumney <jasonr@gnu.org>
parents: 42537
diff changeset
7139 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
7140
85979
bb1f44062552 (w32_pass_multimedia_buttons_to_system): New user option.
Jason Rumney <jasonr@gnu.org>
parents: 85614
diff changeset
7141 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
7142 &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
7143 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
7144 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
7145 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
7146 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
7147 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
7148 may be available are:
bb1f44062552 (w32_pass_multimedia_buttons_to_system): New user option.
Jason Rumney <jasonr@gnu.org>
parents: 85614
diff changeset
7149
bb1f44062552 (w32_pass_multimedia_buttons_to_system): New user option.
Jason Rumney <jasonr@gnu.org>
parents: 85614
diff changeset
7150 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
7151 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
7152 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
7153 app-1, app-2,
bb1f44062552 (w32_pass_multimedia_buttons_to_system): New user option.
Jason Rumney <jasonr@gnu.org>
parents: 85614
diff changeset
7154 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
7155 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
7156 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
7157 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
7158 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
7159 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
7160 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
7161 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
7162 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
7163
100982
7c89b12c3a26 (Vx_pointer_shape, Vx_nontext_pointer_shape)
Jason Rumney <jasonr@gnu.org>
parents: 100951
diff changeset
7164 #if 0 /* TODO: Mouse cursor customization. */
13434
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
7165 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
7166 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
7167 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
7168 unless you set the mouse color. */);
13434
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
7169 Vx_pointer_shape = Qnil;
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
7170
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
7171 Vx_nontext_pointer_shape = Qnil;
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
7172
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
7173 Vx_mode_pointer_shape = Qnil;
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
7174
36252
a8630c63f7d5 Rename everything containing *busy_cursor* and similar
Gerd Moellmann <gerd@gnu.org>
parents: 36080
diff changeset
7175 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
7176 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
7177 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
7178 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
7179 Vx_hourglass_pointer_shape = Qnil;
a8630c63f7d5 Rename everything containing *busy_cursor* and similar
Gerd Moellmann <gerd@gnu.org>
parents: 36080
diff changeset
7180
27397
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
7181 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
7182 &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
7183 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
7184 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
7185 or when you set the mouse color. */);
13434
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
7186 Vx_sensitive_text_pointer_shape = Qnil;
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
7187
34133
f1063cc498e4 (Fx_create_frame): Reintroduce the call to face-set-after-frame-defaults.
Jason Rumney <jasonr@gnu.org>
parents: 34089
diff changeset
7188 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
7189 &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
7190 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
7191 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
7192 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
7193 Vx_window_horizontal_drag_shape = Qnil;
100982
7c89b12c3a26 (Vx_pointer_shape, Vx_nontext_pointer_shape)
Jason Rumney <jasonr@gnu.org>
parents: 100951
diff changeset
7194 #endif
34133
f1063cc498e4 (Fx_create_frame): Reintroduce the call to face-set-after-frame-defaults.
Jason Rumney <jasonr@gnu.org>
parents: 34089
diff changeset
7195
13434
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
7196 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
7197 doc: /* A string indicating the foreground color of the cursor box. */);
13434
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
7198 Vx_cursor_fore_pixel = Qnil;
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
7199
40120
03eb905a4d8e (Fx_file_dialog): Pass a filter to GetOpenFileName.
Jason Rumney <jasonr@gnu.org>
parents: 40009
diff changeset
7200 DEFVAR_LISP ("x-max-tooltip-size", &Vx_max_tooltip_size,
41019
aa792c415dd6 Doc fixes.
Jason Rumney <jasonr@gnu.org>
parents: 41008
diff changeset
7201 doc: /* Maximum size for tooltips.
109701
2cf388f16cae * w32fns.c (syms_of_w32fns) <x-max-tooltip-size>: Fix typo in docstring.
Juanma Barranquero <lekktu@gmail.com>
parents: 109326
diff changeset
7202 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
7203 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
7204
13434
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
7205 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
7206 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
7207 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
7208 unless you set it to something else. */);
13434
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
7209 /* 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
7210 and maybe the user would like to set it to t. */
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
7211 Vx_no_window_manager = Qnil;
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
7212
23506
246a14f0622f (Vx_pixel_size_width): New global variable.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23407
diff changeset
7213 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
7214 &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
7215 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
7216
fb970d0c56eb Change doc-string comments to `new style'. [w/`doc:' keyword]. Doc fixes.
Jason Rumney <jasonr@gnu.org>
parents: 40873
diff changeset
7217 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
7218 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
7219 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
7220 Chinese, Japanese, and Korean. */);
23506
246a14f0622f (Vx_pixel_size_width): New global variable.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23407
diff changeset
7221 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
7222
24147
c83b0bc4e8b9 (Vw32_bdf_filename_alist): New variable.
Geoff Voelker <voelker@cs.washington.edu>
parents: 24130
diff changeset
7223 DEFVAR_LISP ("w32-bdf-filename-alist",
c83b0bc4e8b9 (Vw32_bdf_filename_alist): New variable.
Geoff Voelker <voelker@cs.washington.edu>
parents: 24130
diff changeset
7224 &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
7225 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
7226 Vw32_bdf_filename_alist = Qnil;
c83b0bc4e8b9 (Vw32_bdf_filename_alist): New variable.
Geoff Voelker <voelker@cs.washington.edu>
parents: 24130
diff changeset
7227
24481
f65692fe7dd5 (w32_strict_fontnames): New variable.
Geoff Voelker <voelker@cs.washington.edu>
parents: 24479
diff changeset
7228 DEFVAR_BOOL ("w32-strict-fontnames",
f65692fe7dd5 (w32_strict_fontnames): New variable.
Geoff Voelker <voelker@cs.washington.edu>
parents: 24479
diff changeset
7229 &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
7230 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
7231 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
7232 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
7233 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
7234 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
7235 fontsets are automatically created. */);
24481
f65692fe7dd5 (w32_strict_fontnames): New variable.
Geoff Voelker <voelker@cs.washington.edu>
parents: 24479
diff changeset
7236 w32_strict_fontnames = 0;
f65692fe7dd5 (w32_strict_fontnames): New variable.
Geoff Voelker <voelker@cs.washington.edu>
parents: 24479
diff changeset
7237
24695
2fe2c743ce68 (w32_strict_painting): New variable.
Andrew Innes <andrewi@gnu.org>
parents: 24692
diff changeset
7238 DEFVAR_BOOL ("w32-strict-painting",
2fe2c743ce68 (w32_strict_painting): New variable.
Andrew Innes <andrewi@gnu.org>
parents: 24692
diff changeset
7239 &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
7240 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
7241 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
7242 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
7243 w32_strict_painting = 1;
2fe2c743ce68 (w32_strict_painting): New variable.
Andrew Innes <andrewi@gnu.org>
parents: 24692
diff changeset
7244
33387
01a10bc04233 (Qw32_charset_hangeul): Rename to match w32 headers.
Jason Rumney <jasonr@gnu.org>
parents: 33216
diff changeset
7245 #if 0 /* TODO: Port to W32 */
27397
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
7246 defsubr (&Sx_change_window_property);
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
7247 defsubr (&Sx_delete_window_property);
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
7248 defsubr (&Sx_window_property);
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
7249 #endif
26729
f5dded41adcc Changes for automatic remapping of X colors on terminal frames:
Eli Zaretskii <eliz@gnu.org>
parents: 25646
diff changeset
7250 defsubr (&Sxw_display_color_p);
13434
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
7251 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
7252 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
7253 defsubr (&Sxw_color_values);
13434
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
7254 defsubr (&Sx_server_max_request_size);
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
7255 defsubr (&Sx_server_vendor);
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
7256 defsubr (&Sx_server_version);
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
7257 defsubr (&Sx_display_pixel_width);
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
7258 defsubr (&Sx_display_pixel_height);
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
7259 defsubr (&Sx_display_mm_width);
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
7260 defsubr (&Sx_display_mm_height);
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
7261 defsubr (&Sx_display_screens);
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
7262 defsubr (&Sx_display_planes);
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
7263 defsubr (&Sx_display_color_cells);
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
7264 defsubr (&Sx_display_visual_class);
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
7265 defsubr (&Sx_display_backing_store);
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
7266 defsubr (&Sx_display_save_under);
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
7267 defsubr (&Sx_create_frame);
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
7268 defsubr (&Sx_open_connection);
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
7269 defsubr (&Sx_close_connection);
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
7270 defsubr (&Sx_display_list);
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
7271 defsubr (&Sx_synchronize);
84630
4197a953442f (Fx_focus_frame): Rename from Fw32_focus_frame.
Jason Rumney <jasonr@gnu.org>
parents: 83878
diff changeset
7272 defsubr (&Sx_focus_frame);
13434
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
7273
16588
481b7874a1e9 Change identifiers of the form win32* to w32*.
Geoff Voelker <voelker@cs.washington.edu>
parents: 16259
diff changeset
7274 /* W32 specific functions */
481b7874a1e9 Change identifiers of the form win32* to w32*.
Geoff Voelker <voelker@cs.washington.edu>
parents: 16259
diff changeset
7275
481b7874a1e9 Change identifiers of the form win32* to w32*.
Geoff Voelker <voelker@cs.washington.edu>
parents: 16259
diff changeset
7276 defsubr (&Sw32_define_rgb_color);
481b7874a1e9 Change identifiers of the form win32* to w32*.
Geoff Voelker <voelker@cs.washington.edu>
parents: 16259
diff changeset
7277 defsubr (&Sw32_default_color_map);
19707
0181cc080316 Include limits.h and errno.h.
Geoff Voelker <voelker@cs.washington.edu>
parents: 18508
diff changeset
7278 defsubr (&Sw32_send_sys_command);
24670
045e247575d9 [andrewi]
Andrew Innes <andrewi@gnu.org>
parents: 24583
diff changeset
7279 defsubr (&Sw32_shell_execute);
23681
af0276da2059 (Vw32_pass_optional_keys_to_system): Variable removed.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23637
diff changeset
7280 defsubr (&Sw32_register_hot_key);
af0276da2059 (Vw32_pass_optional_keys_to_system): Variable removed.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23637
diff changeset
7281 defsubr (&Sw32_unregister_hot_key);
af0276da2059 (Vw32_pass_optional_keys_to_system): Variable removed.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23637
diff changeset
7282 defsubr (&Sw32_registered_hot_keys);
af0276da2059 (Vw32_pass_optional_keys_to_system): Variable removed.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23637
diff changeset
7283 defsubr (&Sw32_reconstruct_hot_key);
23803
f112aa8f8f5d (Vw32_phantom_key_code): New variable.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23801
diff changeset
7284 defsubr (&Sw32_toggle_lock_key);
74661
0b62ec4c4929 (w32-window-exists-p): New function.
Eli Zaretskii <eliz@gnu.org>
parents: 74618
diff changeset
7285 defsubr (&Sw32_window_exists_p);
94447
45acd5e62f88 (Fw32_battery_status): New defun.
Jason Rumney <jasonr@gnu.org>
parents: 94432
diff changeset
7286 defsubr (&Sw32_battery_status);
23506
246a14f0622f (Vx_pixel_size_width): New global variable.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23407
diff changeset
7287
34643
7108531c744b (Ffile_system_info): New function.
Andrew Innes <andrewi@gnu.org>
parents: 34638
diff changeset
7288 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
7289 defsubr (&Sdefault_printer_name);
34643
7108531c744b (Ffile_system_info): New function.
Andrew Innes <andrewi@gnu.org>
parents: 34638
diff changeset
7290
23506
246a14f0622f (Vx_pixel_size_width): New global variable.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23407
diff changeset
7291 check_window_system_func = check_w32;
27397
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
7292
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
7293
93075
66248fc5b523 * w32fns.c (hourglass_timer, hourglass_hwnd): New variables.
Jason Rumney <jasonr@gnu.org>
parents: 92940
diff changeset
7294 hourglass_timer = 0;
66248fc5b523 * w32fns.c (hourglass_timer, hourglass_hwnd): New variables.
Jason Rumney <jasonr@gnu.org>
parents: 92940
diff changeset
7295 hourglass_hwnd = NULL;
96664
b306a69b9d7f applying patch to consolidate non-GUI portion of hourglass implementation as posted at http://thread.gmane.org/gmane.emacs.devel/98341
Adrian Robert <Adrian.B.Robert@gmail.com>
parents: 96662
diff changeset
7296
27397
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
7297 defsubr (&Sx_show_tip);
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
7298 defsubr (&Sx_hide_tip);
34729
3dc60d80125f (syms_of_w32fns): Initialize and staticpro tip_frame.
Jason Rumney <jasonr@gnu.org>
parents: 34698
diff changeset
7299 tip_timer = Qnil;
27397
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
7300 staticpro (&tip_timer);
34729
3dc60d80125f (syms_of_w32fns): Initialize and staticpro tip_frame.
Jason Rumney <jasonr@gnu.org>
parents: 34698
diff changeset
7301 tip_frame = Qnil;
3dc60d80125f (syms_of_w32fns): Initialize and staticpro tip_frame.
Jason Rumney <jasonr@gnu.org>
parents: 34698
diff changeset
7302 staticpro (&tip_frame);
27397
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
7303
41380
aff1b15f295b (x_window_to_frame): Remove irrelevant TODO comment.
Jason Rumney <jasonr@gnu.org>
parents: 41322
diff changeset
7304 last_show_tip_args = Qnil;
aff1b15f295b (x_window_to_frame): Remove irrelevant TODO comment.
Jason Rumney <jasonr@gnu.org>
parents: 41322
diff changeset
7305 staticpro (&last_show_tip_args);
aff1b15f295b (x_window_to_frame): Remove irrelevant TODO comment.
Jason Rumney <jasonr@gnu.org>
parents: 41322
diff changeset
7306
27397
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
7307 defsubr (&Sx_file_dialog);
96489
b76b9628d74f Changes from Toru Tsuneyoshi for using Trash can when deleting files.
Jason Rumney <jasonr@gnu.org>
parents: 96403
diff changeset
7308 defsubr (&Ssystem_move_file_to_trash);
27397
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
7309 }
d98e84b468a2 Substantial rewrite for new redisplay. Major changes:
Jason Rumney <jasonr@gnu.org>
parents: 26729
diff changeset
7310
49494
07f0ea120d7d (init_external_image_libraries): Try alternate names for the jpeg dll.
Juanma Barranquero <lekktu@gmail.com>
parents: 49455
diff changeset
7311
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
7312 /*
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
7313 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
7314 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
7315 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
7316 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
7317 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
7318 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
7319 */
79387
0ca197abc593 (Fw32_registered_hot_keys): Don't return the nil values corresponding
Juanma Barranquero <lekktu@gmail.com>
parents: 79381
diff changeset
7320 void
0ca197abc593 (Fw32_registered_hot_keys): Don't return the nil values corresponding
Juanma Barranquero <lekktu@gmail.com>
parents: 79381
diff changeset
7321 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
7322 {
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
7323 HMODULE user32_lib = GetModuleHandle ("user32.dll");
51776
6a03280c654a (clipboard_sequence_fn): New variable.
Jason Rumney <jasonr@gnu.org>
parents: 51763
diff changeset
7324 /*
6a03280c654a (clipboard_sequence_fn): New variable.
Jason Rumney <jasonr@gnu.org>
parents: 51763
diff changeset
7325 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
7326 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
7327 */
51776
6a03280c654a (clipboard_sequence_fn): New variable.
Jason Rumney <jasonr@gnu.org>
parents: 51763
diff changeset
7328 track_mouse_event_fn = (TrackMouseEvent_Proc)
6a03280c654a (clipboard_sequence_fn): New variable.
Jason Rumney <jasonr@gnu.org>
parents: 51763
diff changeset
7329 GetProcAddress (user32_lib, "TrackMouseEvent");
6a03280c654a (clipboard_sequence_fn): New variable.
Jason Rumney <jasonr@gnu.org>
parents: 51763
diff changeset
7330 /* ditto for GetClipboardSequenceNumber. */
6a03280c654a (clipboard_sequence_fn): New variable.
Jason Rumney <jasonr@gnu.org>
parents: 51763
diff changeset
7331 clipboard_sequence_fn = (ClipboardSequence_Proc)
6a03280c654a (clipboard_sequence_fn): New variable.
Jason Rumney <jasonr@gnu.org>
parents: 51763
diff changeset
7332 GetProcAddress (user32_lib, "GetClipboardSequenceNumber");
92935
c99b62a964c4 (MONITOR_DEFAULT_TO_NEAREST, struct MONITOR_INFO)
Jason Rumney <jasonr@gnu.org>
parents: 92362
diff changeset
7333
c99b62a964c4 (MONITOR_DEFAULT_TO_NEAREST, struct MONITOR_INFO)
Jason Rumney <jasonr@gnu.org>
parents: 92362
diff changeset
7334 monitor_from_point_fn = (MonitorFromPoint_Proc)
c99b62a964c4 (MONITOR_DEFAULT_TO_NEAREST, struct MONITOR_INFO)
Jason Rumney <jasonr@gnu.org>
parents: 92362
diff changeset
7335 GetProcAddress (user32_lib, "MonitorFromPoint");
c99b62a964c4 (MONITOR_DEFAULT_TO_NEAREST, struct MONITOR_INFO)
Jason Rumney <jasonr@gnu.org>
parents: 92362
diff changeset
7336 get_monitor_info_fn = (GetMonitorInfo_Proc)
c99b62a964c4 (MONITOR_DEFAULT_TO_NEAREST, struct MONITOR_INFO)
Jason Rumney <jasonr@gnu.org>
parents: 92362
diff changeset
7337 GetProcAddress (user32_lib, "GetMonitorInfoA");
c99b62a964c4 (MONITOR_DEFAULT_TO_NEAREST, struct MONITOR_INFO)
Jason Rumney <jasonr@gnu.org>
parents: 92362
diff changeset
7338
91099
8bbec66c0718 Include imm.h.
Jason Rumney <jasonr@gnu.org>
parents: 91085
diff changeset
7339 {
8bbec66c0718 Include imm.h.
Jason Rumney <jasonr@gnu.org>
parents: 91085
diff changeset
7340 HMODULE imm32_lib = GetModuleHandle ("imm32.dll");
8bbec66c0718 Include imm.h.
Jason Rumney <jasonr@gnu.org>
parents: 91085
diff changeset
7341 get_composition_string_fn = (ImmGetCompositionString_Proc)
8bbec66c0718 Include imm.h.
Jason Rumney <jasonr@gnu.org>
parents: 91085
diff changeset
7342 GetProcAddress (imm32_lib, "ImmGetCompositionStringW");
8bbec66c0718 Include imm.h.
Jason Rumney <jasonr@gnu.org>
parents: 91085
diff changeset
7343 get_ime_context_fn = (ImmGetContext_Proc)
8bbec66c0718 Include imm.h.
Jason Rumney <jasonr@gnu.org>
parents: 91085
diff changeset
7344 GetProcAddress (imm32_lib, "ImmGetContext");
104030
91b945d54645 * w32fns.c (w32_wnd_proc) [WM_IME_STARTCOMPOSITION]: Position
Jason Rumney <jasonr@gnu.org>
parents: 103674
diff changeset
7345 release_ime_context_fn = (ImmReleaseContext_Proc)
91b945d54645 * w32fns.c (w32_wnd_proc) [WM_IME_STARTCOMPOSITION]: Position
Jason Rumney <jasonr@gnu.org>
parents: 103674
diff changeset
7346 GetProcAddress (imm32_lib, "ImmReleaseContext");
91b945d54645 * w32fns.c (w32_wnd_proc) [WM_IME_STARTCOMPOSITION]: Position
Jason Rumney <jasonr@gnu.org>
parents: 103674
diff changeset
7347 set_ime_composition_window_fn = (ImmSetCompositionWindow_Proc)
91b945d54645 * w32fns.c (w32_wnd_proc) [WM_IME_STARTCOMPOSITION]: Position
Jason Rumney <jasonr@gnu.org>
parents: 103674
diff changeset
7348 GetProcAddress (imm32_lib, "ImmSetCompositionWindow");
91099
8bbec66c0718 Include imm.h.
Jason Rumney <jasonr@gnu.org>
parents: 91085
diff changeset
7349 }
55468
f13a7f45ce0f (Vw32_ansi_code_page): New Lisp variable.
Jason Rumney <jasonr@gnu.org>
parents: 54336
diff changeset
7350 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
7351 &w32_ansi_code_page,
55468
f13a7f45ce0f (Vw32_ansi_code_page): New Lisp variable.
Jason Rumney <jasonr@gnu.org>
parents: 54336
diff changeset
7352 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
7353 w32_ansi_code_page = GetACP ();
78907
90bd4f87874a (globals_of_w32fns): Init common controls.
Jason Rumney <jasonr@gnu.org>
parents: 78260
diff changeset
7354
90bd4f87874a (globals_of_w32fns): Init common controls.
Jason Rumney <jasonr@gnu.org>
parents: 78260
diff changeset
7355 /* 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
7356 InitCommonControls ();
93599
a67af10a545c (uniscribe_font_driver) [WINDOWSNT]: Declare for w32fns.c.
Jason Rumney <jasonr@gnu.org>
parents: 93319
diff changeset
7357
a67af10a545c (uniscribe_font_driver) [WINDOWSNT]: Declare for w32fns.c.
Jason Rumney <jasonr@gnu.org>
parents: 93319
diff changeset
7358 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
7359 }
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
7360
13434
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
7361 #undef abort
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
7362
47942
080b4586492b Fix typo in comment.
Juanma Barranquero <lekktu@gmail.com>
parents: 47731
diff changeset
7363 void
79387
0ca197abc593 (Fw32_registered_hot_keys): Don't return the nil values corresponding
Juanma Barranquero <lekktu@gmail.com>
parents: 79381
diff changeset
7364 w32_abort ()
13434
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
7365 {
15147
38c0ce06203f (quit_char, Vwin32_enable_italics, Vwin32_enable_palette):
Geoff Voelker <voelker@cs.washington.edu>
parents: 15034
diff changeset
7366 int button;
38c0ce06203f (quit_char, Vwin32_enable_italics, Vwin32_enable_palette):
Geoff Voelker <voelker@cs.washington.edu>
parents: 15034
diff changeset
7367 button = MessageBox (NULL,
38c0ce06203f (quit_char, Vwin32_enable_italics, Vwin32_enable_palette):
Geoff Voelker <voelker@cs.washington.edu>
parents: 15034
diff changeset
7368 "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
7369 "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
7370 "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
7371 #if __GNUC__
2e919998931e (w32_abort) [__GNUC__]: Add instructions for attaching GDB to the abort dialog.
Eli Zaretskii <eliz@gnu.org>
parents: 67269
diff changeset
7372 "\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
7373 "\"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
7374 #endif
2e919998931e (w32_abort) [__GNUC__]: Add instructions for attaching GDB to the abort dialog.
Eli Zaretskii <eliz@gnu.org>
parents: 67269
diff changeset
7375 , "Emacs Abort Dialog",
15147
38c0ce06203f (quit_char, Vwin32_enable_italics, Vwin32_enable_palette):
Geoff Voelker <voelker@cs.washington.edu>
parents: 15034
diff changeset
7376 MB_ICONEXCLAMATION | MB_TASKMODAL
63340
1cd9a44aa129 (w32_abort): Use the MB_YESNO dialog instead of
Eli Zaretskii <eliz@gnu.org>
parents: 63297
diff changeset
7377 | MB_SETFOREGROUND | MB_YESNO);
15147
38c0ce06203f (quit_char, Vwin32_enable_italics, Vwin32_enable_palette):
Geoff Voelker <voelker@cs.washington.edu>
parents: 15034
diff changeset
7378 switch (button)
38c0ce06203f (quit_char, Vwin32_enable_italics, Vwin32_enable_palette):
Geoff Voelker <voelker@cs.washington.edu>
parents: 15034
diff changeset
7379 {
63340
1cd9a44aa129 (w32_abort): Use the MB_YESNO dialog instead of
Eli Zaretskii <eliz@gnu.org>
parents: 63297
diff changeset
7380 case IDYES:
15147
38c0ce06203f (quit_char, Vwin32_enable_italics, Vwin32_enable_palette):
Geoff Voelker <voelker@cs.washington.edu>
parents: 15034
diff changeset
7381 DebugBreak ();
63340
1cd9a44aa129 (w32_abort): Use the MB_YESNO dialog instead of
Eli Zaretskii <eliz@gnu.org>
parents: 63297
diff changeset
7382 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
7383 case IDNO:
15147
38c0ce06203f (quit_char, Vwin32_enable_italics, Vwin32_enable_palette):
Geoff Voelker <voelker@cs.washington.edu>
parents: 15034
diff changeset
7384 default:
38c0ce06203f (quit_char, Vwin32_enable_italics, Vwin32_enable_palette):
Geoff Voelker <voelker@cs.washington.edu>
parents: 15034
diff changeset
7385 abort ();
38c0ce06203f (quit_char, Vwin32_enable_italics, Vwin32_enable_palette):
Geoff Voelker <voelker@cs.washington.edu>
parents: 15034
diff changeset
7386 break;
38c0ce06203f (quit_char, Vwin32_enable_italics, Vwin32_enable_palette):
Geoff Voelker <voelker@cs.washington.edu>
parents: 15034
diff changeset
7387 }
13434
53ba95a88cf2 Initial revision
Geoff Voelker <voelker@cs.washington.edu>
parents:
diff changeset
7388 }
15148
220145cf7546 (continuation of previous checkin)
Geoff Voelker <voelker@cs.washington.edu>
parents: 15147
diff changeset
7389
23801
119fd94ae526 (w32_last_error): Fix cut+paste error.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23681
diff changeset
7390 /* For convenience when debugging. */
119fd94ae526 (w32_last_error): Fix cut+paste error.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23681
diff changeset
7391 int
79387
0ca197abc593 (Fw32_registered_hot_keys): Don't return the nil values corresponding
Juanma Barranquero <lekktu@gmail.com>
parents: 79381
diff changeset
7392 w32_last_error ()
23801
119fd94ae526 (w32_last_error): Fix cut+paste error.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23681
diff changeset
7393 {
119fd94ae526 (w32_last_error): Fix cut+paste error.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23681
diff changeset
7394 return GetLastError ();
119fd94ae526 (w32_last_error): Fix cut+paste error.
Geoff Voelker <voelker@cs.washington.edu>
parents: 23681
diff changeset
7395 }
52401
695cf19ef79e Add arch taglines
Miles Bader <miles@gnu.org>
parents: 52351
diff changeset
7396
695cf19ef79e Add arch taglines
Miles Bader <miles@gnu.org>
parents: 52351
diff changeset
7397 /* arch-tag: 707589ab-b9be-4638-8cdd-74629cc9b446
695cf19ef79e Add arch taglines
Miles Bader <miles@gnu.org>
parents: 52351
diff changeset
7398 (do not change this comment) */