Mercurial > emacs
annotate src/w32term.c @ 74405:8289a04178f1
*** empty log message ***
author | Kim F. Storm <storm@cua.dk> |
---|---|
date | Mon, 04 Dec 2006 12:26:35 +0000 |
parents | ae3e88b9ef1b |
children | e08f8d4c6dae c71725faff1a f1d13e615070 |
rev | line source |
---|---|
16884
36babc489b0c
Change all uses of win95, winnt, and win32
Geoff Voelker <voelker@cs.washington.edu>
parents:
16588
diff
changeset
|
1 /* Implementation of GUI terminal on the Microsoft W32 API. |
64770
a0d1312ede66
Update years in copyright notice; nfc.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents:
64661
diff
changeset
|
2 Copyright (C) 1989, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, |
68651
3bd95f4f2941
Update years in copyright notice; nfc.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents:
67669
diff
changeset
|
3 2002, 2003, 2004, 2005, 2006 Free Software Foundation, Inc. |
13434 | 4 |
5 This file is part of GNU Emacs. | |
6 | |
7 GNU Emacs is free software; you can redistribute it and/or modify | |
8 it under the terms of the GNU General Public License as published by | |
9 the Free Software Foundation; either version 2, or (at your option) | |
10 any later version. | |
11 | |
12 GNU Emacs is distributed in the hope that it will be useful, | |
13 but WITHOUT ANY WARRANTY; without even the implied warranty of | |
14 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |
15 GNU General Public License for more details. | |
16 | |
17 You should have received a copy of the GNU General Public License | |
29321
8e2be36bb1c6
Format and doc changes to bring closer to xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
28369
diff
changeset
|
18 along with GNU Emacs; see the file COPYING. If not, write to |
64084 | 19 the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, |
20 Boston, MA 02110-1301, USA. */ | |
13434 | 21 |
26088
b7aa6ac26872
Add support for large files, 64-bit Solaris, system locale codings.
Paul Eggert <eggert@twinsun.com>
parents:
25646
diff
changeset
|
22 #include <config.h> |
13434 | 23 #include <signal.h> |
24 #include <stdio.h> | |
27402
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
25 #include <stdlib.h> |
13434 | 26 #include "lisp.h" |
18507
be4c110cda51
Include charset.h.
Geoff Voelker <voelker@cs.washington.edu>
parents:
16884
diff
changeset
|
27 #include "charset.h" |
13434 | 28 #include "blockinput.h" |
29 | |
24674 | 30 #include "w32heap.h" |
19713
043ccce224fb
(SIF_*): Win95 macros defined for NT.
Geoff Voelker <voelker@cs.washington.edu>
parents:
18877
diff
changeset
|
31 #include "w32term.h" |
27402
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
32 #include "w32bdf.h" |
21885 | 33 #include <shellapi.h> |
13434 | 34 |
35 #include "systty.h" | |
36 #include "systime.h" | |
27889
51d0b4b8fc6a
(w32_display_info_for_display): Remove unused function.
Jason Rumney <jasonr@gnu.org>
parents:
27631
diff
changeset
|
37 #include "atimer.h" |
39697
0b986bb45526
Include keymap.h.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
39682
diff
changeset
|
38 #include "keymap.h" |
13434 | 39 |
40 #include <ctype.h> | |
41 #include <errno.h> | |
42 #include <setjmp.h> | |
43 #include <sys/stat.h> | |
44 | |
31116
bbd7763673b6
Include keyboard.h before frame.h.
Andrew Innes <andrewi@gnu.org>
parents:
31010
diff
changeset
|
45 #include "keyboard.h" |
13434 | 46 #include "frame.h" |
47 #include "dispextern.h" | |
28369
3fb90cd81d3b
(w32_read_socket): Handle WM_MENUSELECT message.
Jason Rumney <jasonr@gnu.org>
parents:
27937
diff
changeset
|
48 #include "fontset.h" |
13434 | 49 #include "termhooks.h" |
50 #include "termopts.h" | |
51 #include "termchar.h" | |
52 #include "gnu.h" | |
53 #include "disptab.h" | |
54 #include "buffer.h" | |
55 #include "window.h" | |
56 #include "intervals.h" | |
27402
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
57 #include "composite.h" |
21614
2624d8dcc73f
(Vw32_recognize_altgr): New variable.
Geoff Voelker <voelker@cs.washington.edu>
parents:
21456
diff
changeset
|
58 #include "coding.h" |
13434 | 59 |
27402
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
60 #define abs(x) ((x) < 0 ? -(x) : (x)) |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
61 |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
62 |
41125 | 63 /* Fringe bitmaps. */ |
64 | |
57278
4cec0243673a
(fringe_bmp): Change to pointer.
Kim F. Storm <storm@cua.dk>
parents:
56729
diff
changeset
|
65 static int max_fringe_bmp = 0; |
4cec0243673a
(fringe_bmp): Change to pointer.
Kim F. Storm <storm@cua.dk>
parents:
56729
diff
changeset
|
66 static HBITMAP *fringe_bmp = 0; |
27402
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
67 |
34869
1d671133e618
(syms_of_xterm): DEFVAR_LISP x-toolkit-scroll-bars
Gerd Moellmann <gerd@gnu.org>
parents:
34823
diff
changeset
|
68 /* Non-nil means Emacs uses toolkit scroll bars. */ |
1d671133e618
(syms_of_xterm): DEFVAR_LISP x-toolkit-scroll-bars
Gerd Moellmann <gerd@gnu.org>
parents:
34823
diff
changeset
|
69 |
1d671133e618
(syms_of_xterm): DEFVAR_LISP x-toolkit-scroll-bars
Gerd Moellmann <gerd@gnu.org>
parents:
34823
diff
changeset
|
70 Lisp_Object Vx_toolkit_scroll_bars; |
27402
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
71 |
48819
c7fb53597300
(last_mousemove_x, last_mousemove_y): New variables.
Jason Rumney <jasonr@gnu.org>
parents:
48360
diff
changeset
|
72 /* Temporary variables for w32_read_socket. */ |
27402
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
73 |
48819
c7fb53597300
(last_mousemove_x, last_mousemove_y): New variables.
Jason Rumney <jasonr@gnu.org>
parents:
48360
diff
changeset
|
74 static int last_mousemove_x = 0; |
c7fb53597300
(last_mousemove_x, last_mousemove_y): New variables.
Jason Rumney <jasonr@gnu.org>
parents:
48360
diff
changeset
|
75 static int last_mousemove_y = 0; |
27402
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
76 |
51269
0e4f36767c58
(GET_WHEEL_DELTA_WPARAM): New macro.
Jason Rumney <jasonr@gnu.org>
parents:
51258
diff
changeset
|
77 /* Define GET_WHEEL_DELTA_WPARAM macro if system headers don't. */ |
0e4f36767c58
(GET_WHEEL_DELTA_WPARAM): New macro.
Jason Rumney <jasonr@gnu.org>
parents:
51258
diff
changeset
|
78 #ifndef GET_WHEEL_DELTA_WPARAM |
0e4f36767c58
(GET_WHEEL_DELTA_WPARAM): New macro.
Jason Rumney <jasonr@gnu.org>
parents:
51258
diff
changeset
|
79 #define GET_WHEEL_DELTA_WPARAM(wparam) ((short)HIWORD (wparam)) |
0e4f36767c58
(GET_WHEEL_DELTA_WPARAM): New macro.
Jason Rumney <jasonr@gnu.org>
parents:
51258
diff
changeset
|
80 #endif |
0e4f36767c58
(GET_WHEEL_DELTA_WPARAM): New macro.
Jason Rumney <jasonr@gnu.org>
parents:
51258
diff
changeset
|
81 |
27402
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
82 /* Non-zero means that a HELP_EVENT has been generated since Emacs |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
83 start. */ |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
84 |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
85 static int any_help_event_p; |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
86 |
49393
85246e86a2cd
* w32term.c (x_draw_glyph_string_foreground)
Jason Rumney <jasonr@gnu.org>
parents:
49371
diff
changeset
|
87 /* Last window where we saw the mouse. Used by mouse-autoselect-window. */ |
85246e86a2cd
* w32term.c (x_draw_glyph_string_foreground)
Jason Rumney <jasonr@gnu.org>
parents:
49371
diff
changeset
|
88 static Lisp_Object last_window; |
85246e86a2cd
* w32term.c (x_draw_glyph_string_foreground)
Jason Rumney <jasonr@gnu.org>
parents:
49371
diff
changeset
|
89 |
63376
2a6bb16cad69
(x_use_underline_position_properties): New variable.
Eli Zaretskii <eliz@gnu.org>
parents:
60948
diff
changeset
|
90 /* Non-zero means make use of UNDERLINE_POSITION font properties. |
2a6bb16cad69
(x_use_underline_position_properties): New variable.
Eli Zaretskii <eliz@gnu.org>
parents:
60948
diff
changeset
|
91 (Not yet supported, see TODO in x_draw_glyph_string.) */ |
2a6bb16cad69
(x_use_underline_position_properties): New variable.
Eli Zaretskii <eliz@gnu.org>
parents:
60948
diff
changeset
|
92 int x_use_underline_position_properties; |
2a6bb16cad69
(x_use_underline_position_properties): New variable.
Eli Zaretskii <eliz@gnu.org>
parents:
60948
diff
changeset
|
93 |
72505
759e19ea81e5
(x_underline_at_descent_line): New variable.
Kim F. Storm <storm@cua.dk>
parents:
72470
diff
changeset
|
94 /* Non-zero means to draw the underline at the same place as the descent line. */ |
759e19ea81e5
(x_underline_at_descent_line): New variable.
Kim F. Storm <storm@cua.dk>
parents:
72470
diff
changeset
|
95 |
759e19ea81e5
(x_underline_at_descent_line): New variable.
Kim F. Storm <storm@cua.dk>
parents:
72470
diff
changeset
|
96 int x_underline_at_descent_line; |
759e19ea81e5
(x_underline_at_descent_line): New variable.
Kim F. Storm <storm@cua.dk>
parents:
72470
diff
changeset
|
97 |
21875
16414f4d07e7
(msh_mousewheel): Declare.
Geoff Voelker <voelker@cs.washington.edu>
parents:
21831
diff
changeset
|
98 extern unsigned int msh_mousewheel; |
16414f4d07e7
(msh_mousewheel): Declare.
Geoff Voelker <voelker@cs.washington.edu>
parents:
21831
diff
changeset
|
99 |
13434 | 100 extern void free_frame_menubar (); |
101 | |
29321
8e2be36bb1c6
Format and doc changes to bring closer to xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
28369
diff
changeset
|
102 extern int w32_codepage_for_font (char *fontname); |
49371
c73ce11bb264
2003-01-21 KOBAYASHI Yasuhiro <kobayays@otsukakj.co.jp>
Jason Rumney <jasonr@gnu.org>
parents:
48888
diff
changeset
|
103 extern Cursor w32_load_cursor (LPCTSTR name); |
29321
8e2be36bb1c6
Format and doc changes to bring closer to xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
28369
diff
changeset
|
104 |
32720
8530cd0a7455
(w32_per_char_metric): Remove HDC argument. Use
Andrew Innes <andrewi@gnu.org>
parents:
32670
diff
changeset
|
105 extern glyph_metric *w32_BDF_TextMetric(bdffont *fontp, |
8530cd0a7455
(w32_per_char_metric): Remove HDC argument. Use
Andrew Innes <andrewi@gnu.org>
parents:
32670
diff
changeset
|
106 unsigned char *text, int dim); |
15151
ed6ddfc0d954
(Vwindow_system): Declared.
Geoff Voelker <voelker@cs.washington.edu>
parents:
15035
diff
changeset
|
107 extern Lisp_Object Vwindow_system; |
ed6ddfc0d954
(Vwindow_system): Declared.
Geoff Voelker <voelker@cs.washington.edu>
parents:
15035
diff
changeset
|
108 |
13434 | 109 #define x_any_window_to_frame x_window_to_frame |
110 #define x_top_window_to_frame x_window_to_frame | |
111 | |
112 | |
16588
481b7874a1e9
Change identifiers of the form win32* to w32*.
Geoff Voelker <voelker@cs.washington.edu>
parents:
16326
diff
changeset
|
113 /* This is display since w32 does not support multiple ones. */ |
481b7874a1e9
Change identifiers of the form win32* to w32*.
Geoff Voelker <voelker@cs.washington.edu>
parents:
16326
diff
changeset
|
114 struct w32_display_info one_w32_display_info; |
38570
9606b955465e
(x_display_list): New variable.
Andrew Innes <andrewi@gnu.org>
parents:
36315
diff
changeset
|
115 struct w32_display_info *x_display_list; |
13434 | 116 |
117 /* This is a list of cons cells, each of the form (NAME . FONT-LIST-CACHE), | |
16588
481b7874a1e9
Change identifiers of the form win32* to w32*.
Geoff Voelker <voelker@cs.washington.edu>
parents:
16326
diff
changeset
|
118 one for each element of w32_display_list and in the same order. |
13434 | 119 NAME is the name of the frame. |
120 FONT-LIST-CACHE records previous values returned by x-list-fonts. */ | |
16588
481b7874a1e9
Change identifiers of the form win32* to w32*.
Geoff Voelker <voelker@cs.washington.edu>
parents:
16326
diff
changeset
|
121 Lisp_Object w32_display_name_list; |
13434 | 122 |
123 /* Frame being updated by update_frame. This is declared in term.c. | |
124 This is set by update_begin and looked at by all the | |
16588
481b7874a1e9
Change identifiers of the form win32* to w32*.
Geoff Voelker <voelker@cs.washington.edu>
parents:
16326
diff
changeset
|
125 w32 functions. It is zero while not inside an update. |
27402
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
126 In that case, the w32 functions assume that `SELECTED_FRAME ()' |
13434 | 127 is the frame to apply to. */ |
128 extern struct frame *updating_frame; | |
129 | |
130 /* This is a frame waiting to be autoraised, within w32_read_socket. */ | |
131 struct frame *pending_autoraise_frame; | |
132 | |
40384
25e6d4bb5f7f
(w32_system_caret_hwnd, w32_system_caret_width)
Jason Rumney <jasonr@gnu.org>
parents:
40245
diff
changeset
|
133 /* The handle of the frame that currently owns the system caret. */ |
25e6d4bb5f7f
(w32_system_caret_hwnd, w32_system_caret_width)
Jason Rumney <jasonr@gnu.org>
parents:
40245
diff
changeset
|
134 HWND w32_system_caret_hwnd; |
25e6d4bb5f7f
(w32_system_caret_hwnd, w32_system_caret_width)
Jason Rumney <jasonr@gnu.org>
parents:
40245
diff
changeset
|
135 int w32_system_caret_height; |
25e6d4bb5f7f
(w32_system_caret_hwnd, w32_system_caret_width)
Jason Rumney <jasonr@gnu.org>
parents:
40245
diff
changeset
|
136 int w32_system_caret_x; |
25e6d4bb5f7f
(w32_system_caret_hwnd, w32_system_caret_width)
Jason Rumney <jasonr@gnu.org>
parents:
40245
diff
changeset
|
137 int w32_system_caret_y; |
42864
c1af6a7f3dd4
(w32_system_caret_width): Remove.
Jason Rumney <jasonr@gnu.org>
parents:
42844
diff
changeset
|
138 int w32_use_visible_system_caret; |
40384
25e6d4bb5f7f
(w32_system_caret_hwnd, w32_system_caret_width)
Jason Rumney <jasonr@gnu.org>
parents:
40245
diff
changeset
|
139 |
23639
516fc58a7b7b
(w32_enable_unicode_output): Rename from
Geoff Voelker <voelker@cs.washington.edu>
parents:
23638
diff
changeset
|
140 /* Flag to enable Unicode output in case users wish to use programs |
23507
8a448630a9b5
Include fontset.h. Define codepage macros.
Geoff Voelker <voelker@cs.washington.edu>
parents:
22059
diff
changeset
|
141 like Twinbridge on '95 rather than installed system level support |
8a448630a9b5
Include fontset.h. Define codepage macros.
Geoff Voelker <voelker@cs.washington.edu>
parents:
22059
diff
changeset
|
142 for Far East languages. */ |
23639
516fc58a7b7b
(w32_enable_unicode_output): Rename from
Geoff Voelker <voelker@cs.washington.edu>
parents:
23638
diff
changeset
|
143 int w32_enable_unicode_output; |
23507
8a448630a9b5
Include fontset.h. Define codepage macros.
Geoff Voelker <voelker@cs.washington.edu>
parents:
22059
diff
changeset
|
144 |
63904
72c5011362ef
* w32term.c (cleartype_active): New flag for enabling sub-pixel
Jason Rumney <jasonr@gnu.org>
parents:
63376
diff
changeset
|
145 /* Flag to enable Cleartype hack for font metrics. */ |
72c5011362ef
* w32term.c (cleartype_active): New flag for enabling sub-pixel
Jason Rumney <jasonr@gnu.org>
parents:
63376
diff
changeset
|
146 static int cleartype_active; |
72c5011362ef
* w32term.c (cleartype_active): New flag for enabling sub-pixel
Jason Rumney <jasonr@gnu.org>
parents:
63376
diff
changeset
|
147 |
16884
36babc489b0c
Change all uses of win95, winnt, and win32
Geoff Voelker <voelker@cs.washington.edu>
parents:
16588
diff
changeset
|
148 DWORD dwWindowsThreadId = 0; |
36babc489b0c
Change all uses of win95, winnt, and win32
Geoff Voelker <voelker@cs.washington.edu>
parents:
16588
diff
changeset
|
149 HANDLE hWindowsThread = NULL; |
13434 | 150 DWORD dwMainThreadId = 0; |
151 HANDLE hMainThread = NULL; | |
152 | |
19713
043ccce224fb
(SIF_*): Win95 macros defined for NT.
Geoff Voelker <voelker@cs.washington.edu>
parents:
18877
diff
changeset
|
153 int vertical_scroll_bar_min_handle; |
043ccce224fb
(SIF_*): Win95 macros defined for NT.
Geoff Voelker <voelker@cs.washington.edu>
parents:
18877
diff
changeset
|
154 int vertical_scroll_bar_top_border; |
043ccce224fb
(SIF_*): Win95 macros defined for NT.
Geoff Voelker <voelker@cs.washington.edu>
parents:
18877
diff
changeset
|
155 int vertical_scroll_bar_bottom_border; |
043ccce224fb
(SIF_*): Win95 macros defined for NT.
Geoff Voelker <voelker@cs.washington.edu>
parents:
18877
diff
changeset
|
156 |
043ccce224fb
(SIF_*): Win95 macros defined for NT.
Geoff Voelker <voelker@cs.washington.edu>
parents:
18877
diff
changeset
|
157 int last_scroll_bar_drag_pos; |
043ccce224fb
(SIF_*): Win95 macros defined for NT.
Geoff Voelker <voelker@cs.washington.edu>
parents:
18877
diff
changeset
|
158 |
13434 | 159 /* Mouse movement. */ |
160 | |
161 /* Where the mouse was last time we reported a mouse event. */ | |
29321
8e2be36bb1c6
Format and doc changes to bring closer to xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
28369
diff
changeset
|
162 |
13434 | 163 static RECT last_mouse_glyph; |
69441
eb7a171cafae
Sync 2005-10-24 xterm.c changes.
Jason Rumney <jasonr@gnu.org>
parents:
69401
diff
changeset
|
164 static FRAME_PTR last_mouse_glyph_frame; |
27402
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
165 static Lisp_Object last_mouse_press_frame; |
13434 | 166 |
55646
358a5c0b4571
(w32_num_mouse_buttons): Rename from Vw32_num_mouse_buttons and make
Jason Rumney <jasonr@gnu.org>
parents:
55286
diff
changeset
|
167 int w32_num_mouse_buttons; |
16588
481b7874a1e9
Change identifiers of the form win32* to w32*.
Geoff Voelker <voelker@cs.washington.edu>
parents:
16326
diff
changeset
|
168 |
481b7874a1e9
Change identifiers of the form win32* to w32*.
Geoff Voelker <voelker@cs.washington.edu>
parents:
16326
diff
changeset
|
169 Lisp_Object Vw32_swap_mouse_buttons; |
15151
ed6ddfc0d954
(Vwindow_system): Declared.
Geoff Voelker <voelker@cs.washington.edu>
parents:
15035
diff
changeset
|
170 |
19713
043ccce224fb
(SIF_*): Win95 macros defined for NT.
Geoff Voelker <voelker@cs.washington.edu>
parents:
18877
diff
changeset
|
171 /* Control whether x_raise_frame also sets input focus. */ |
043ccce224fb
(SIF_*): Win95 macros defined for NT.
Geoff Voelker <voelker@cs.washington.edu>
parents:
18877
diff
changeset
|
172 Lisp_Object Vw32_grab_focus_on_raise; |
043ccce224fb
(SIF_*): Win95 macros defined for NT.
Geoff Voelker <voelker@cs.washington.edu>
parents:
18877
diff
changeset
|
173 |
043ccce224fb
(SIF_*): Win95 macros defined for NT.
Geoff Voelker <voelker@cs.washington.edu>
parents:
18877
diff
changeset
|
174 /* Control whether Caps Lock affects non-ascii characters. */ |
043ccce224fb
(SIF_*): Win95 macros defined for NT.
Geoff Voelker <voelker@cs.washington.edu>
parents:
18877
diff
changeset
|
175 Lisp_Object Vw32_capslock_is_shiftlock; |
043ccce224fb
(SIF_*): Win95 macros defined for NT.
Geoff Voelker <voelker@cs.washington.edu>
parents:
18877
diff
changeset
|
176 |
21614
2624d8dcc73f
(Vw32_recognize_altgr): New variable.
Geoff Voelker <voelker@cs.washington.edu>
parents:
21456
diff
changeset
|
177 /* Control whether right-alt and left-ctrl should be recognized as AltGr. */ |
2624d8dcc73f
(Vw32_recognize_altgr): New variable.
Geoff Voelker <voelker@cs.washington.edu>
parents:
21456
diff
changeset
|
178 Lisp_Object Vw32_recognize_altgr; |
2624d8dcc73f
(Vw32_recognize_altgr): New variable.
Geoff Voelker <voelker@cs.washington.edu>
parents:
21456
diff
changeset
|
179 |
13434 | 180 /* The scroll bar in which the last motion event occurred. |
181 | |
182 If the last motion event occurred in a scroll bar, we set this | |
16588
481b7874a1e9
Change identifiers of the form win32* to w32*.
Geoff Voelker <voelker@cs.washington.edu>
parents:
16326
diff
changeset
|
183 so w32_mouse_position can know whether to report a scroll bar motion or |
13434 | 184 an ordinary motion. |
185 | |
186 If the last motion event didn't occur in a scroll bar, we set this | |
16588
481b7874a1e9
Change identifiers of the form win32* to w32*.
Geoff Voelker <voelker@cs.washington.edu>
parents:
16326
diff
changeset
|
187 to Qnil, to tell w32_mouse_position to return an ordinary motion event. */ |
29321
8e2be36bb1c6
Format and doc changes to bring closer to xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
28369
diff
changeset
|
188 static Lisp_Object last_mouse_scroll_bar; |
8e2be36bb1c6
Format and doc changes to bring closer to xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
28369
diff
changeset
|
189 static int last_mouse_scroll_bar_pos; |
13434 | 190 |
16588
481b7874a1e9
Change identifiers of the form win32* to w32*.
Geoff Voelker <voelker@cs.washington.edu>
parents:
16326
diff
changeset
|
191 /* This is a hack. We would really prefer that w32_mouse_position would |
13434 | 192 return the time associated with the position it returns, but there |
29321
8e2be36bb1c6
Format and doc changes to bring closer to xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
28369
diff
changeset
|
193 doesn't seem to be any way to wrest the time-stamp from the server |
13434 | 194 along with the position query. So, we just keep track of the time |
195 of the last movement we received, and return that in hopes that | |
196 it's somewhat accurate. */ | |
29321
8e2be36bb1c6
Format and doc changes to bring closer to xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
28369
diff
changeset
|
197 |
8e2be36bb1c6
Format and doc changes to bring closer to xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
28369
diff
changeset
|
198 static Time last_mouse_movement_time; |
8e2be36bb1c6
Format and doc changes to bring closer to xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
28369
diff
changeset
|
199 |
8e2be36bb1c6
Format and doc changes to bring closer to xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
28369
diff
changeset
|
200 /* Incremented by w32_read_socket whenever it really tries to read |
8e2be36bb1c6
Format and doc changes to bring closer to xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
28369
diff
changeset
|
201 events. */ |
8e2be36bb1c6
Format and doc changes to bring closer to xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
28369
diff
changeset
|
202 |
13434 | 203 #ifdef __STDC__ |
204 static int volatile input_signal_count; | |
205 #else | |
206 static int input_signal_count; | |
207 #endif | |
208 | |
209 extern Lisp_Object Vcommand_line_args, Vsystem_name; | |
210 | |
31116
bbd7763673b6
Include keyboard.h before frame.h.
Andrew Innes <andrewi@gnu.org>
parents:
31010
diff
changeset
|
211 #ifndef USE_CRT_DLL |
13434 | 212 extern int errno; |
31116
bbd7763673b6
Include keyboard.h before frame.h.
Andrew Innes <andrewi@gnu.org>
parents:
31010
diff
changeset
|
213 #endif |
13434 | 214 |
215 /* A mask of extra modifier bits to put into every keyboard char. */ | |
29321
8e2be36bb1c6
Format and doc changes to bring closer to xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
28369
diff
changeset
|
216 |
43713
f92c4d87863a
Change defvar_int def and vars to use EMACS_INT instead of just int.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
43694
diff
changeset
|
217 extern EMACS_INT extra_keyboard_modifiers; |
13434 | 218 |
31116
bbd7763673b6
Include keyboard.h before frame.h.
Andrew Innes <andrewi@gnu.org>
parents:
31010
diff
changeset
|
219 static void x_update_window_end P_ ((struct window *, int, int)); |
27402
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
220 void w32_delete_display P_ ((struct w32_display_info *)); |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
221 static void w32_handle_tool_bar_click P_ ((struct frame *, |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
222 struct input_event *)); |
49371
c73ce11bb264
2003-01-21 KOBAYASHI Yasuhiro <kobayays@otsukakj.co.jp>
Jason Rumney <jasonr@gnu.org>
parents:
48888
diff
changeset
|
223 void w32_define_cursor P_ ((Window, Cursor)); |
27402
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
224 |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
225 void x_lower_frame P_ ((struct frame *)); |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
226 void x_scroll_bar_clear P_ ((struct frame *)); |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
227 void x_wm_set_size_hint P_ ((struct frame *, long, int)); |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
228 void x_raise_frame P_ ((struct frame *)); |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
229 void x_set_window_size P_ ((struct frame *, int, int, int)); |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
230 void x_wm_set_window_state P_ ((struct frame *, int)); |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
231 void x_wm_set_icon_pixmap P_ ((struct frame *, int)); |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
232 void w32_initialize P_ ((void)); |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
233 static void x_font_min_bounds P_ ((XFontStruct *, int *, int *)); |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
234 int x_compute_min_glyph_bounds P_ ((struct frame *)); |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
235 static void x_update_end P_ ((struct frame *)); |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
236 static void w32_frame_up_to_date P_ ((struct frame *)); |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
237 static void w32_set_terminal_modes P_ ((void)); |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
238 static void w32_reset_terminal_modes P_ ((void)); |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
239 static void x_clear_frame P_ ((void)); |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
240 static void frame_highlight P_ ((struct frame *)); |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
241 static void frame_unhighlight P_ ((struct frame *)); |
42844
38ae31587c80
(w32_native_per_char_metric): Don't trust the metrics
Jason Rumney <jasonr@gnu.org>
parents:
42794
diff
changeset
|
242 static void x_new_focus_frame P_ ((struct w32_display_info *, |
38ae31587c80
(w32_native_per_char_metric): Don't trust the metrics
Jason Rumney <jasonr@gnu.org>
parents:
42794
diff
changeset
|
243 struct frame *)); |
60948
03a8b8b9ebef
(x_focus_changed, w32_detect_focus_change): New functions.
Jason Rumney <jasonr@gnu.org>
parents:
59748
diff
changeset
|
244 static void x_focus_changed P_ ((int, int, struct w32_display_info *, |
03a8b8b9ebef
(x_focus_changed, w32_detect_focus_change): New functions.
Jason Rumney <jasonr@gnu.org>
parents:
59748
diff
changeset
|
245 struct frame *, struct input_event *)); |
03a8b8b9ebef
(x_focus_changed, w32_detect_focus_change): New functions.
Jason Rumney <jasonr@gnu.org>
parents:
59748
diff
changeset
|
246 static void w32_detect_focus_change P_ ((struct w32_display_info *, |
03a8b8b9ebef
(x_focus_changed, w32_detect_focus_change): New functions.
Jason Rumney <jasonr@gnu.org>
parents:
59748
diff
changeset
|
247 W32Msg *, struct input_event *)); |
27402
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
248 static void w32_frame_rehighlight P_ ((struct frame *)); |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
249 static void x_frame_rehighlight P_ ((struct w32_display_info *)); |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
250 static void x_draw_hollow_cursor P_ ((struct window *, struct glyph_row *)); |
45507
b69bbd1285d1
(x_draw_bar_cursor): Update parameter list in declaration.
Jason Rumney <jasonr@gnu.org>
parents:
45467
diff
changeset
|
251 static void x_draw_bar_cursor P_ ((struct window *, struct glyph_row *, int, |
b69bbd1285d1
(x_draw_bar_cursor): Update parameter list in declaration.
Jason Rumney <jasonr@gnu.org>
parents:
45467
diff
changeset
|
252 enum text_cursor_kinds)); |
58402
d1d4d5846215
(w32_clip_to_row): Add area arg. Callers changed.
Kim F. Storm <storm@cua.dk>
parents:
57837
diff
changeset
|
253 static void w32_clip_to_row P_ ((struct window *, struct glyph_row *, int, HDC)); |
64661
75130ff74ad2
(my_show_window, my_set_window_pos, my_set_focus, my_set_foreground_window,
Juanma Barranquero <lekktu@gmail.com>
parents:
64084
diff
changeset
|
254 static BOOL my_show_window P_ ((struct frame *, HWND, int)); |
75130ff74ad2
(my_show_window, my_set_window_pos, my_set_focus, my_set_foreground_window,
Juanma Barranquero <lekktu@gmail.com>
parents:
64084
diff
changeset
|
255 static void my_set_window_pos P_ ((HWND, HWND, int, int, int, int, UINT)); |
75130ff74ad2
(my_show_window, my_set_window_pos, my_set_focus, my_set_foreground_window,
Juanma Barranquero <lekktu@gmail.com>
parents:
64084
diff
changeset
|
256 static void my_set_focus P_ ((struct frame *, HWND)); |
75130ff74ad2
(my_show_window, my_set_window_pos, my_set_focus, my_set_foreground_window,
Juanma Barranquero <lekktu@gmail.com>
parents:
64084
diff
changeset
|
257 static void my_set_foreground_window P_ ((HWND)); |
75130ff74ad2
(my_show_window, my_set_window_pos, my_set_focus, my_set_foreground_window,
Juanma Barranquero <lekktu@gmail.com>
parents:
64084
diff
changeset
|
258 static void my_destroy_window P_ ((struct frame *, HWND)); |
27402
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
259 |
13434 | 260 static Lisp_Object Qvendor_specific_keysyms; |
261 | |
262 | |
29321
8e2be36bb1c6
Format and doc changes to bring closer to xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
28369
diff
changeset
|
263 /*********************************************************************** |
8e2be36bb1c6
Format and doc changes to bring closer to xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
28369
diff
changeset
|
264 Debugging |
8e2be36bb1c6
Format and doc changes to bring closer to xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
28369
diff
changeset
|
265 ***********************************************************************/ |
8e2be36bb1c6
Format and doc changes to bring closer to xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
28369
diff
changeset
|
266 |
13434 | 267 #if 0 |
29321
8e2be36bb1c6
Format and doc changes to bring closer to xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
28369
diff
changeset
|
268 |
8e2be36bb1c6
Format and doc changes to bring closer to xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
28369
diff
changeset
|
269 /* This is a function useful for recording debugging information about |
8e2be36bb1c6
Format and doc changes to bring closer to xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
28369
diff
changeset
|
270 the sequence of occurrences in this file. */ |
13434 | 271 |
48218
01e253345507
(w32_draw_fringe_bitmap): Remove unused local variable window.
Juanma Barranquero <lekktu@gmail.com>
parents:
48025
diff
changeset
|
272 struct record |
13434 | 273 { |
274 char *locus; | |
275 int type; | |
276 }; | |
277 | |
278 struct record event_record[100]; | |
279 | |
280 int event_record_index; | |
281 | |
282 record_event (locus, type) | |
283 char *locus; | |
284 int type; | |
285 { | |
286 if (event_record_index == sizeof (event_record) / sizeof (struct record)) | |
287 event_record_index = 0; | |
288 | |
289 event_record[event_record_index].locus = locus; | |
290 event_record[event_record_index].type = type; | |
291 event_record_index++; | |
292 } | |
293 | |
294 #endif /* 0 */ | |
295 | |
27402
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
296 |
50441
37738feb0204
Break the line after the return type in function definition.
Richard M. Stallman <rms@gnu.org>
parents:
50376
diff
changeset
|
297 void |
37738feb0204
Break the line after the return type in function definition.
Richard M. Stallman <rms@gnu.org>
parents:
50376
diff
changeset
|
298 XChangeGC (void * ignore, XGCValues* gc, unsigned long mask, |
37738feb0204
Break the line after the return type in function definition.
Richard M. Stallman <rms@gnu.org>
parents:
50376
diff
changeset
|
299 XGCValues *xgcv) |
27402
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
300 { |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
301 if (mask & GCForeground) |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
302 gc->foreground = xgcv->foreground; |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
303 if (mask & GCBackground) |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
304 gc->background = xgcv->background; |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
305 if (mask & GCFont) |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
306 gc->font = xgcv->font; |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
307 } |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
308 |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
309 XGCValues *XCreateGC (void * ignore, Window window, unsigned long mask, |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
310 XGCValues *xgcv) |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
311 { |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
312 XGCValues *gc = (XGCValues *) xmalloc (sizeof (XGCValues)); |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
313 bzero (gc, sizeof (XGCValues)); |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
314 |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
315 XChangeGC (ignore, gc, mask, xgcv); |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
316 |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
317 return gc; |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
318 } |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
319 |
50441
37738feb0204
Break the line after the return type in function definition.
Richard M. Stallman <rms@gnu.org>
parents:
50376
diff
changeset
|
320 void |
37738feb0204
Break the line after the return type in function definition.
Richard M. Stallman <rms@gnu.org>
parents:
50376
diff
changeset
|
321 XGetGCValues (void* ignore, XGCValues *gc, |
27402
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
322 unsigned long mask, XGCValues *xgcv) |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
323 { |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
324 XChangeGC (ignore, xgcv, mask, gc); |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
325 } |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
326 |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
327 static void |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
328 w32_set_clip_rectangle (HDC hdc, RECT *rect) |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
329 { |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
330 if (rect) |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
331 { |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
332 HRGN clip_region = CreateRectRgnIndirect (rect); |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
333 SelectClipRgn (hdc, clip_region); |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
334 DeleteObject (clip_region); |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
335 } |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
336 else |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
337 SelectClipRgn (hdc, NULL); |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
338 } |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
339 |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
340 |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
341 /* Draw a hollow rectangle at the specified position. */ |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
342 void |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
343 w32_draw_rectangle (HDC hdc, XGCValues *gc, int x, int y, |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
344 int width, int height) |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
345 { |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
346 HBRUSH hb, oldhb; |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
347 HPEN hp, oldhp; |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
348 |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
349 hb = CreateSolidBrush (gc->background); |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
350 hp = CreatePen (PS_SOLID, 0, gc->foreground); |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
351 oldhb = SelectObject (hdc, hb); |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
352 oldhp = SelectObject (hdc, hp); |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
353 |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
354 Rectangle (hdc, x, y, x + width, y + height); |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
355 |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
356 SelectObject (hdc, oldhb); |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
357 SelectObject (hdc, oldhp); |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
358 DeleteObject (hb); |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
359 DeleteObject (hp); |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
360 } |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
361 |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
362 /* Draw a filled rectangle at the specified position. */ |
48218
01e253345507
(w32_draw_fringe_bitmap): Remove unused local variable window.
Juanma Barranquero <lekktu@gmail.com>
parents:
48025
diff
changeset
|
363 void |
27406
fb36ccd8457c
(w32_fill_rect): Do not try to deal with NULL hdc
Jason Rumney <jasonr@gnu.org>
parents:
27402
diff
changeset
|
364 w32_fill_rect (f, hdc, pix, lprect) |
13434 | 365 FRAME_PTR f; |
27406
fb36ccd8457c
(w32_fill_rect): Do not try to deal with NULL hdc
Jason Rumney <jasonr@gnu.org>
parents:
27402
diff
changeset
|
366 HDC hdc; |
13434 | 367 COLORREF pix; |
368 RECT * lprect; | |
369 { | |
370 HBRUSH hb; | |
27402
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
371 |
13434 | 372 hb = CreateSolidBrush (pix); |
373 FillRect (hdc, lprect, hb); | |
374 DeleteObject (hb); | |
375 } | |
376 | |
48218
01e253345507
(w32_draw_fringe_bitmap): Remove unused local variable window.
Juanma Barranquero <lekktu@gmail.com>
parents:
48025
diff
changeset
|
377 void |
16588
481b7874a1e9
Change identifiers of the form win32* to w32*.
Geoff Voelker <voelker@cs.washington.edu>
parents:
16326
diff
changeset
|
378 w32_clear_window (f) |
13434 | 379 FRAME_PTR f; |
380 { | |
381 RECT rect; | |
27406
fb36ccd8457c
(w32_fill_rect): Do not try to deal with NULL hdc
Jason Rumney <jasonr@gnu.org>
parents:
27402
diff
changeset
|
382 HDC hdc = get_frame_dc (f); |
15151
ed6ddfc0d954
(Vwindow_system): Declared.
Geoff Voelker <voelker@cs.washington.edu>
parents:
15035
diff
changeset
|
383 |
34093
d554a3ac3039
(x_draw_vertical_border): Fix call to w32_fill_rect.
Jason Rumney <jasonr@gnu.org>
parents:
33766
diff
changeset
|
384 /* Under certain conditions, this can be called at startup with |
d554a3ac3039
(x_draw_vertical_border): Fix call to w32_fill_rect.
Jason Rumney <jasonr@gnu.org>
parents:
33766
diff
changeset
|
385 a console frame pointer before the GUI frame is created. An HDC |
d554a3ac3039
(x_draw_vertical_border): Fix call to w32_fill_rect.
Jason Rumney <jasonr@gnu.org>
parents:
33766
diff
changeset
|
386 of 0 indicates this. */ |
d554a3ac3039
(x_draw_vertical_border): Fix call to w32_fill_rect.
Jason Rumney <jasonr@gnu.org>
parents:
33766
diff
changeset
|
387 if (hdc) |
d554a3ac3039
(x_draw_vertical_border): Fix call to w32_fill_rect.
Jason Rumney <jasonr@gnu.org>
parents:
33766
diff
changeset
|
388 { |
d554a3ac3039
(x_draw_vertical_border): Fix call to w32_fill_rect.
Jason Rumney <jasonr@gnu.org>
parents:
33766
diff
changeset
|
389 GetClientRect (FRAME_W32_WINDOW (f), &rect); |
d554a3ac3039
(x_draw_vertical_border): Fix call to w32_fill_rect.
Jason Rumney <jasonr@gnu.org>
parents:
33766
diff
changeset
|
390 w32_clear_rect (f, hdc, &rect); |
d554a3ac3039
(x_draw_vertical_border): Fix call to w32_fill_rect.
Jason Rumney <jasonr@gnu.org>
parents:
33766
diff
changeset
|
391 } |
d554a3ac3039
(x_draw_vertical_border): Fix call to w32_fill_rect.
Jason Rumney <jasonr@gnu.org>
parents:
33766
diff
changeset
|
392 |
27406
fb36ccd8457c
(w32_fill_rect): Do not try to deal with NULL hdc
Jason Rumney <jasonr@gnu.org>
parents:
27402
diff
changeset
|
393 release_frame_dc (f, hdc); |
13434 | 394 } |
395 | |
396 | |
27402
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
397 /*********************************************************************** |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
398 Starting and ending an update |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
399 ***********************************************************************/ |
48218
01e253345507
(w32_draw_fringe_bitmap): Remove unused local variable window.
Juanma Barranquero <lekktu@gmail.com>
parents:
48025
diff
changeset
|
400 |
27402
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
401 /* Start an update of frame F. This function is installed as a hook |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
402 for update_begin, i.e. it is called when update_begin is called. |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
403 This function is called prior to calls to x_update_window_begin for |
34784
d140f5fb3307
(x_update_begin): Regenerate the palette here, rather
Andrew Innes <andrewi@gnu.org>
parents:
34779
diff
changeset
|
404 each window being updated. */ |
13434 | 405 |
21831
6b659713b90b
Forward declare hooks with full function prototypes.
Geoff Voelker <voelker@cs.washington.edu>
parents:
21740
diff
changeset
|
406 static void |
27402
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
407 x_update_begin (f) |
13434 | 408 struct frame *f; |
409 { | |
34784
d140f5fb3307
(x_update_begin): Regenerate the palette here, rather
Andrew Innes <andrewi@gnu.org>
parents:
34779
diff
changeset
|
410 struct w32_display_info *display_info = FRAME_W32_DISPLAY_INFO (f); |
d140f5fb3307
(x_update_begin): Regenerate the palette here, rather
Andrew Innes <andrewi@gnu.org>
parents:
34779
diff
changeset
|
411 |
35000 | 412 if (! FRAME_W32_P (f)) |
413 return; | |
414 | |
34784
d140f5fb3307
(x_update_begin): Regenerate the palette here, rather
Andrew Innes <andrewi@gnu.org>
parents:
34779
diff
changeset
|
415 /* Regenerate display palette before drawing if list of requested |
d140f5fb3307
(x_update_begin): Regenerate the palette here, rather
Andrew Innes <andrewi@gnu.org>
parents:
34779
diff
changeset
|
416 colors has changed. */ |
d140f5fb3307
(x_update_begin): Regenerate the palette here, rather
Andrew Innes <andrewi@gnu.org>
parents:
34779
diff
changeset
|
417 if (display_info->regen_palette) |
d140f5fb3307
(x_update_begin): Regenerate the palette here, rather
Andrew Innes <andrewi@gnu.org>
parents:
34779
diff
changeset
|
418 { |
d140f5fb3307
(x_update_begin): Regenerate the palette here, rather
Andrew Innes <andrewi@gnu.org>
parents:
34779
diff
changeset
|
419 w32_regenerate_palette (f); |
d140f5fb3307
(x_update_begin): Regenerate the palette here, rather
Andrew Innes <andrewi@gnu.org>
parents:
34779
diff
changeset
|
420 display_info->regen_palette = FALSE; |
d140f5fb3307
(x_update_begin): Regenerate the palette here, rather
Andrew Innes <andrewi@gnu.org>
parents:
34779
diff
changeset
|
421 } |
27402
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
422 } |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
423 |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
424 |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
425 /* Start update of window W. Set the global variable updated_window |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
426 to the window being updated and set output_cursor to the cursor |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
427 position of W. */ |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
428 |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
429 static void |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
430 x_update_window_begin (w) |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
431 struct window *w; |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
432 { |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
433 struct frame *f = XFRAME (WINDOW_FRAME (w)); |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
434 struct w32_display_info *display_info = FRAME_W32_DISPLAY_INFO (f); |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
435 |
42864
c1af6a7f3dd4
(w32_system_caret_width): Remove.
Jason Rumney <jasonr@gnu.org>
parents:
42844
diff
changeset
|
436 /* Hide the system caret during an update. */ |
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:
48819
diff
changeset
|
437 if (w32_use_visible_system_caret && w32_system_caret_hwnd) |
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:
48819
diff
changeset
|
438 { |
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:
48819
diff
changeset
|
439 SendMessage (w32_system_caret_hwnd, WM_EMACS_HIDE_CARET, 0, 0); |
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:
48819
diff
changeset
|
440 } |
42864
c1af6a7f3dd4
(w32_system_caret_width): Remove.
Jason Rumney <jasonr@gnu.org>
parents:
42844
diff
changeset
|
441 |
27402
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
442 updated_window = w; |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
443 set_output_cursor (&w->cursor); |
13434 | 444 |
445 BLOCK_INPUT; | |
446 | |
27402
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
447 if (f == display_info->mouse_face_mouse_frame) |
13434 | 448 { |
449 /* Don't do highlighting for mouse motion during the update. */ | |
27402
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
450 display_info->mouse_face_defer = 1; |
13434 | 451 |
29321
8e2be36bb1c6
Format and doc changes to bring closer to xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
28369
diff
changeset
|
452 /* If F needs to be redrawn, simply forget about any prior mouse |
8e2be36bb1c6
Format and doc changes to bring closer to xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
28369
diff
changeset
|
453 highlighting. */ |
13434 | 454 if (FRAME_GARBAGED_P (f)) |
27402
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
455 display_info->mouse_face_window = Qnil; |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
456 |
30240
2c2a7ebd2c15
(help_echo_object, help_echo_pos): New variables.
Jason Rumney <jasonr@gnu.org>
parents:
30199
diff
changeset
|
457 #if 0 /* Rows in a current matrix containing glyphs in mouse-face have |
2c2a7ebd2c15
(help_echo_object, help_echo_pos): New variables.
Jason Rumney <jasonr@gnu.org>
parents:
30199
diff
changeset
|
458 their mouse_face_p flag set, which means that they are always |
2c2a7ebd2c15
(help_echo_object, help_echo_pos): New variables.
Jason Rumney <jasonr@gnu.org>
parents:
30199
diff
changeset
|
459 unequal to rows in a desired matrix which never have that |
2c2a7ebd2c15
(help_echo_object, help_echo_pos): New variables.
Jason Rumney <jasonr@gnu.org>
parents:
30199
diff
changeset
|
460 flag set. So, rows containing mouse-face glyphs are never |
2c2a7ebd2c15
(help_echo_object, help_echo_pos): New variables.
Jason Rumney <jasonr@gnu.org>
parents:
30199
diff
changeset
|
461 scrolled, and we don't have to switch the mouse highlight off |
2c2a7ebd2c15
(help_echo_object, help_echo_pos): New variables.
Jason Rumney <jasonr@gnu.org>
parents:
30199
diff
changeset
|
462 here to prevent it from being scrolled. */ |
48218
01e253345507
(w32_draw_fringe_bitmap): Remove unused local variable window.
Juanma Barranquero <lekktu@gmail.com>
parents:
48025
diff
changeset
|
463 |
27402
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
464 /* Can we tell that this update does not affect the window |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
465 where the mouse highlight is? If so, no need to turn off. |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
466 Likewise, don't do anything if the frame is garbaged; |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
467 in that case, the frame's current matrix that we would use |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
468 is all wrong, and we will redisplay that line anyway. */ |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
469 if (!NILP (display_info->mouse_face_window) |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
470 && w == XWINDOW (display_info->mouse_face_window)) |
13434 | 471 { |
27402
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
472 int i; |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
473 |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
474 for (i = 0; i < w->desired_matrix->nrows; ++i) |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
475 if (MATRIX_ROW_ENABLED_P (w->desired_matrix, i)) |
13434 | 476 break; |
477 | |
27402
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
478 if (i < w->desired_matrix->nrows) |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
479 clear_mouse_face (display_info); |
13434 | 480 } |
30240
2c2a7ebd2c15
(help_echo_object, help_echo_pos): New variables.
Jason Rumney <jasonr@gnu.org>
parents:
30199
diff
changeset
|
481 #endif /* 0 */ |
13434 | 482 } |
483 | |
484 UNBLOCK_INPUT; | |
485 } | |
486 | |
50231
c8ea5e4b2129
* w32term.c: Remove consolidated defines and code.
Kim F. Storm <storm@cua.dk>
parents:
50163
diff
changeset
|
487 /* Draw a vertical window border from (x,y0) to (x,y1) */ |
27402
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
488 |
21831
6b659713b90b
Forward declare hooks with full function prototypes.
Geoff Voelker <voelker@cs.washington.edu>
parents:
21740
diff
changeset
|
489 static void |
50231
c8ea5e4b2129
* w32term.c: Remove consolidated defines and code.
Kim F. Storm <storm@cua.dk>
parents:
50163
diff
changeset
|
490 w32_draw_vertical_window_border (w, x, y0, y1) |
27402
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
491 struct window *w; |
50231
c8ea5e4b2129
* w32term.c: Remove consolidated defines and code.
Kim F. Storm <storm@cua.dk>
parents:
50163
diff
changeset
|
492 int x, y0, y1; |
27402
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
493 { |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
494 struct frame *f = XFRAME (WINDOW_FRAME (w)); |
50231
c8ea5e4b2129
* w32term.c: Remove consolidated defines and code.
Kim F. Storm <storm@cua.dk>
parents:
50163
diff
changeset
|
495 RECT r; |
c8ea5e4b2129
* w32term.c: Remove consolidated defines and code.
Kim F. Storm <storm@cua.dk>
parents:
50163
diff
changeset
|
496 HDC hdc; |
63912
12f374b6c866
(w32_draw_vertical_window_border): Use foreground of
Eli Zaretskii <eliz@gnu.org>
parents:
63904
diff
changeset
|
497 struct face *face; |
51258
a35e5665c742
(construct_mouse_wheel): Result is a MOUSE_CLICK_EVENT. Scrolling down/up the
Juanma Barranquero <lekktu@gmail.com>
parents:
51204
diff
changeset
|
498 |
50231
c8ea5e4b2129
* w32term.c: Remove consolidated defines and code.
Kim F. Storm <storm@cua.dk>
parents:
50163
diff
changeset
|
499 r.left = x; |
c8ea5e4b2129
* w32term.c: Remove consolidated defines and code.
Kim F. Storm <storm@cua.dk>
parents:
50163
diff
changeset
|
500 r.right = x + 1; |
c8ea5e4b2129
* w32term.c: Remove consolidated defines and code.
Kim F. Storm <storm@cua.dk>
parents:
50163
diff
changeset
|
501 r.top = y0; |
c8ea5e4b2129
* w32term.c: Remove consolidated defines and code.
Kim F. Storm <storm@cua.dk>
parents:
50163
diff
changeset
|
502 r.bottom = y1; |
c8ea5e4b2129
* w32term.c: Remove consolidated defines and code.
Kim F. Storm <storm@cua.dk>
parents:
50163
diff
changeset
|
503 |
c8ea5e4b2129
* w32term.c: Remove consolidated defines and code.
Kim F. Storm <storm@cua.dk>
parents:
50163
diff
changeset
|
504 hdc = get_frame_dc (f); |
63912
12f374b6c866
(w32_draw_vertical_window_border): Use foreground of
Eli Zaretskii <eliz@gnu.org>
parents:
63904
diff
changeset
|
505 face = FACE_FROM_ID (f, VERTICAL_BORDER_FACE_ID); |
12f374b6c866
(w32_draw_vertical_window_border): Use foreground of
Eli Zaretskii <eliz@gnu.org>
parents:
63904
diff
changeset
|
506 if (face) |
12f374b6c866
(w32_draw_vertical_window_border): Use foreground of
Eli Zaretskii <eliz@gnu.org>
parents:
63904
diff
changeset
|
507 w32_fill_rect (f, hdc, face->foreground, &r); |
12f374b6c866
(w32_draw_vertical_window_border): Use foreground of
Eli Zaretskii <eliz@gnu.org>
parents:
63904
diff
changeset
|
508 else |
12f374b6c866
(w32_draw_vertical_window_border): Use foreground of
Eli Zaretskii <eliz@gnu.org>
parents:
63904
diff
changeset
|
509 w32_fill_rect (f, hdc, FRAME_FOREGROUND_PIXEL (f), &r); |
12f374b6c866
(w32_draw_vertical_window_border): Use foreground of
Eli Zaretskii <eliz@gnu.org>
parents:
63904
diff
changeset
|
510 |
50231
c8ea5e4b2129
* w32term.c: Remove consolidated defines and code.
Kim F. Storm <storm@cua.dk>
parents:
50163
diff
changeset
|
511 release_frame_dc (f, hdc); |
27402
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
512 } |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
513 |
48218
01e253345507
(w32_draw_fringe_bitmap): Remove unused local variable window.
Juanma Barranquero <lekktu@gmail.com>
parents:
48025
diff
changeset
|
514 |
30240
2c2a7ebd2c15
(help_echo_object, help_echo_pos): New variables.
Jason Rumney <jasonr@gnu.org>
parents:
30199
diff
changeset
|
515 /* End update of window W (which is equal to updated_window). |
2c2a7ebd2c15
(help_echo_object, help_echo_pos): New variables.
Jason Rumney <jasonr@gnu.org>
parents:
30199
diff
changeset
|
516 |
2c2a7ebd2c15
(help_echo_object, help_echo_pos): New variables.
Jason Rumney <jasonr@gnu.org>
parents:
30199
diff
changeset
|
517 Draw vertical borders between horizontally adjacent windows, and |
2c2a7ebd2c15
(help_echo_object, help_echo_pos): New variables.
Jason Rumney <jasonr@gnu.org>
parents:
30199
diff
changeset
|
518 display W's cursor if CURSOR_ON_P is non-zero. |
2c2a7ebd2c15
(help_echo_object, help_echo_pos): New variables.
Jason Rumney <jasonr@gnu.org>
parents:
30199
diff
changeset
|
519 |
2c2a7ebd2c15
(help_echo_object, help_echo_pos): New variables.
Jason Rumney <jasonr@gnu.org>
parents:
30199
diff
changeset
|
520 MOUSE_FACE_OVERWRITTEN_P non-zero means that some row containing |
2c2a7ebd2c15
(help_echo_object, help_echo_pos): New variables.
Jason Rumney <jasonr@gnu.org>
parents:
30199
diff
changeset
|
521 glyphs in mouse-face were overwritten. In that case we have to |
2c2a7ebd2c15
(help_echo_object, help_echo_pos): New variables.
Jason Rumney <jasonr@gnu.org>
parents:
30199
diff
changeset
|
522 make sure that the mouse-highlight is properly redrawn. |
2c2a7ebd2c15
(help_echo_object, help_echo_pos): New variables.
Jason Rumney <jasonr@gnu.org>
parents:
30199
diff
changeset
|
523 |
2c2a7ebd2c15
(help_echo_object, help_echo_pos): New variables.
Jason Rumney <jasonr@gnu.org>
parents:
30199
diff
changeset
|
524 W may be a menu bar pseudo-window in case we don't have X toolkit |
2c2a7ebd2c15
(help_echo_object, help_echo_pos): New variables.
Jason Rumney <jasonr@gnu.org>
parents:
30199
diff
changeset
|
525 support. Such windows don't have a cursor, so don't display it |
2c2a7ebd2c15
(help_echo_object, help_echo_pos): New variables.
Jason Rumney <jasonr@gnu.org>
parents:
30199
diff
changeset
|
526 here. */ |
27402
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
527 |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
528 static void |
30240
2c2a7ebd2c15
(help_echo_object, help_echo_pos): New variables.
Jason Rumney <jasonr@gnu.org>
parents:
30199
diff
changeset
|
529 x_update_window_end (w, cursor_on_p, mouse_face_overwritten_p) |
27402
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
530 struct window *w; |
30240
2c2a7ebd2c15
(help_echo_object, help_echo_pos): New variables.
Jason Rumney <jasonr@gnu.org>
parents:
30199
diff
changeset
|
531 int cursor_on_p, mouse_face_overwritten_p; |
27402
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
532 { |
50231
c8ea5e4b2129
* w32term.c: Remove consolidated defines and code.
Kim F. Storm <storm@cua.dk>
parents:
50163
diff
changeset
|
533 struct w32_display_info *dpyinfo = FRAME_W32_DISPLAY_INFO (XFRAME (w->frame)); |
40137
5f0d7d58283b
(remember_mouse_glyph): New function.
Jason Rumney <jasonr@gnu.org>
parents:
40078
diff
changeset
|
534 |
27402
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
535 if (!w->pseudo_window_p) |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
536 { |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
537 BLOCK_INPUT; |
30240
2c2a7ebd2c15
(help_echo_object, help_echo_pos): New variables.
Jason Rumney <jasonr@gnu.org>
parents:
30199
diff
changeset
|
538 |
27402
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
539 if (cursor_on_p) |
50231
c8ea5e4b2129
* w32term.c: Remove consolidated defines and code.
Kim F. Storm <storm@cua.dk>
parents:
50163
diff
changeset
|
540 display_and_set_cursor (w, 1, output_cursor.hpos, |
c8ea5e4b2129
* w32term.c: Remove consolidated defines and code.
Kim F. Storm <storm@cua.dk>
parents:
50163
diff
changeset
|
541 output_cursor.vpos, |
c8ea5e4b2129
* w32term.c: Remove consolidated defines and code.
Kim F. Storm <storm@cua.dk>
parents:
50163
diff
changeset
|
542 output_cursor.x, output_cursor.y); |
48218
01e253345507
(w32_draw_fringe_bitmap): Remove unused local variable window.
Juanma Barranquero <lekktu@gmail.com>
parents:
48025
diff
changeset
|
543 |
57373
38e45bf0128a
(x_update_window_end): Fix flicker on vertical line between
Kim F. Storm <storm@cua.dk>
parents:
57278
diff
changeset
|
544 if (draw_window_fringes (w, 1)) |
38e45bf0128a
(x_update_window_end): Fix flicker on vertical line between
Kim F. Storm <storm@cua.dk>
parents:
57278
diff
changeset
|
545 x_draw_vertical_border (w); |
53607
4262a032b45b
(x_update_window_end): Call draw_window_fringes.
Kim F. Storm <storm@cua.dk>
parents:
53469
diff
changeset
|
546 |
27402
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
547 UNBLOCK_INPUT; |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
548 } |
40137
5f0d7d58283b
(remember_mouse_glyph): New function.
Jason Rumney <jasonr@gnu.org>
parents:
40078
diff
changeset
|
549 |
5f0d7d58283b
(remember_mouse_glyph): New function.
Jason Rumney <jasonr@gnu.org>
parents:
40078
diff
changeset
|
550 /* If a row with mouse-face was overwritten, arrange for |
5f0d7d58283b
(remember_mouse_glyph): New function.
Jason Rumney <jasonr@gnu.org>
parents:
40078
diff
changeset
|
551 XTframe_up_to_date to redisplay the mouse highlight. */ |
5f0d7d58283b
(remember_mouse_glyph): New function.
Jason Rumney <jasonr@gnu.org>
parents:
40078
diff
changeset
|
552 if (mouse_face_overwritten_p) |
5f0d7d58283b
(remember_mouse_glyph): New function.
Jason Rumney <jasonr@gnu.org>
parents:
40078
diff
changeset
|
553 { |
5f0d7d58283b
(remember_mouse_glyph): New function.
Jason Rumney <jasonr@gnu.org>
parents:
40078
diff
changeset
|
554 dpyinfo->mouse_face_beg_row = dpyinfo->mouse_face_beg_col = -1; |
5f0d7d58283b
(remember_mouse_glyph): New function.
Jason Rumney <jasonr@gnu.org>
parents:
40078
diff
changeset
|
555 dpyinfo->mouse_face_end_row = dpyinfo->mouse_face_end_col = -1; |
5f0d7d58283b
(remember_mouse_glyph): New function.
Jason Rumney <jasonr@gnu.org>
parents:
40078
diff
changeset
|
556 dpyinfo->mouse_face_window = Qnil; |
5f0d7d58283b
(remember_mouse_glyph): New function.
Jason Rumney <jasonr@gnu.org>
parents:
40078
diff
changeset
|
557 } |
5f0d7d58283b
(remember_mouse_glyph): New function.
Jason Rumney <jasonr@gnu.org>
parents:
40078
diff
changeset
|
558 |
42864
c1af6a7f3dd4
(w32_system_caret_width): Remove.
Jason Rumney <jasonr@gnu.org>
parents:
42844
diff
changeset
|
559 /* Unhide the caret. This won't actually show the cursor, unless it |
c1af6a7f3dd4
(w32_system_caret_width): Remove.
Jason Rumney <jasonr@gnu.org>
parents:
42844
diff
changeset
|
560 was visible before the corresponding call to HideCaret in |
c1af6a7f3dd4
(w32_system_caret_width): Remove.
Jason Rumney <jasonr@gnu.org>
parents:
42844
diff
changeset
|
561 x_update_window_begin. */ |
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:
48819
diff
changeset
|
562 if (w32_use_visible_system_caret && w32_system_caret_hwnd) |
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:
48819
diff
changeset
|
563 { |
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:
48819
diff
changeset
|
564 SendMessage (w32_system_caret_hwnd, WM_EMACS_SHOW_CARET, 0, 0); |
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:
48819
diff
changeset
|
565 } |
42864
c1af6a7f3dd4
(w32_system_caret_width): Remove.
Jason Rumney <jasonr@gnu.org>
parents:
42844
diff
changeset
|
566 |
27402
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
567 updated_window = NULL; |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
568 } |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
569 |
29321
8e2be36bb1c6
Format and doc changes to bring closer to xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
28369
diff
changeset
|
570 |
8e2be36bb1c6
Format and doc changes to bring closer to xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
28369
diff
changeset
|
571 /* End update of frame F. This function is installed as a hook in |
8e2be36bb1c6
Format and doc changes to bring closer to xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
28369
diff
changeset
|
572 update_end. */ |
8e2be36bb1c6
Format and doc changes to bring closer to xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
28369
diff
changeset
|
573 |
27402
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
574 static void |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
575 x_update_end (f) |
13434 | 576 struct frame *f; |
577 { | |
35000 | 578 if (! FRAME_W32_P (f)) |
579 return; | |
580 | |
27402
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
581 /* Mouse highlight may be displayed again. */ |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
582 FRAME_W32_DISPLAY_INFO (f)->mouse_face_defer = 0; |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
583 } |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
584 |
29321
8e2be36bb1c6
Format and doc changes to bring closer to xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
28369
diff
changeset
|
585 |
27402
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
586 /* This function is called from various places in xdisp.c whenever a |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
587 complete update has been performed. The global variable |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
588 updated_window is not available here. */ |
13434 | 589 |
21831
6b659713b90b
Forward declare hooks with full function prototypes.
Geoff Voelker <voelker@cs.washington.edu>
parents:
21740
diff
changeset
|
590 static void |
16588
481b7874a1e9
Change identifiers of the form win32* to w32*.
Geoff Voelker <voelker@cs.washington.edu>
parents:
16326
diff
changeset
|
591 w32_frame_up_to_date (f) |
27402
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
592 struct frame *f; |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
593 { |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
594 if (FRAME_W32_P (f)) |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
595 { |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
596 struct w32_display_info *dpyinfo = FRAME_W32_DISPLAY_INFO (f); |
50231
c8ea5e4b2129
* w32term.c: Remove consolidated defines and code.
Kim F. Storm <storm@cua.dk>
parents:
50163
diff
changeset
|
597 |
27402
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
598 if (dpyinfo->mouse_face_deferred_gc |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
599 || f == dpyinfo->mouse_face_mouse_frame) |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
600 { |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
601 BLOCK_INPUT; |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
602 if (dpyinfo->mouse_face_mouse_frame) |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
603 note_mouse_highlight (dpyinfo->mouse_face_mouse_frame, |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
604 dpyinfo->mouse_face_mouse_x, |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
605 dpyinfo->mouse_face_mouse_y); |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
606 dpyinfo->mouse_face_deferred_gc = 0; |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
607 UNBLOCK_INPUT; |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
608 } |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
609 } |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
610 } |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
611 |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
612 |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
613 /* Draw truncation mark bitmaps, continuation mark bitmaps, overlay |
41125 | 614 arrow bitmaps, or clear the fringes if no bitmaps are required |
27402
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
615 before DESIRED_ROW is made current. The window being updated is |
41447
783d21cc62b9
(x_after_update_window_line): Doc fix.
Jason Rumney <jasonr@gnu.org>
parents:
41249
diff
changeset
|
616 found in updated_window. This function is called from |
27402
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
617 update_window_line only if it is known that there are differences |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
618 between bitmaps to be drawn between current row and DESIRED_ROW. */ |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
619 |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
620 static void |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
621 x_after_update_window_line (desired_row) |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
622 struct glyph_row *desired_row; |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
623 { |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
624 struct window *w = updated_window; |
41249
2043af2d023f
(note_mouse_highlight): Fix type of variable `ignore'.
Jason Rumney <jasonr@gnu.org>
parents:
41125
diff
changeset
|
625 struct frame *f; |
2043af2d023f
(note_mouse_highlight): Fix type of variable `ignore'.
Jason Rumney <jasonr@gnu.org>
parents:
41125
diff
changeset
|
626 int width, height; |
2043af2d023f
(note_mouse_highlight): Fix type of variable `ignore'.
Jason Rumney <jasonr@gnu.org>
parents:
41125
diff
changeset
|
627 |
27402
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
628 xassert (w); |
48218
01e253345507
(w32_draw_fringe_bitmap): Remove unused local variable window.
Juanma Barranquero <lekktu@gmail.com>
parents:
48025
diff
changeset
|
629 |
27402
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
630 if (!desired_row->mode_line_p && !w->pseudo_window_p) |
53607
4262a032b45b
(x_update_window_end): Call draw_window_fringes.
Kim F. Storm <storm@cua.dk>
parents:
53469
diff
changeset
|
631 desired_row->redraw_fringe_bitmaps_p = 1; |
41249
2043af2d023f
(note_mouse_highlight): Fix type of variable `ignore'.
Jason Rumney <jasonr@gnu.org>
parents:
41125
diff
changeset
|
632 |
2043af2d023f
(note_mouse_highlight): Fix type of variable `ignore'.
Jason Rumney <jasonr@gnu.org>
parents:
41125
diff
changeset
|
633 /* When a window has disappeared, make sure that no rest of |
2043af2d023f
(note_mouse_highlight): Fix type of variable `ignore'.
Jason Rumney <jasonr@gnu.org>
parents:
41125
diff
changeset
|
634 full-width rows stays visible in the internal border. Could |
2043af2d023f
(note_mouse_highlight): Fix type of variable `ignore'.
Jason Rumney <jasonr@gnu.org>
parents:
41125
diff
changeset
|
635 check here if updated_window is the leftmost/rightmost window, |
2043af2d023f
(note_mouse_highlight): Fix type of variable `ignore'.
Jason Rumney <jasonr@gnu.org>
parents:
41125
diff
changeset
|
636 but I guess it's not worth doing since vertically split windows |
2043af2d023f
(note_mouse_highlight): Fix type of variable `ignore'.
Jason Rumney <jasonr@gnu.org>
parents:
41125
diff
changeset
|
637 are almost never used, internal border is rarely set, and the |
2043af2d023f
(note_mouse_highlight): Fix type of variable `ignore'.
Jason Rumney <jasonr@gnu.org>
parents:
41125
diff
changeset
|
638 overhead is very small. */ |
2043af2d023f
(note_mouse_highlight): Fix type of variable `ignore'.
Jason Rumney <jasonr@gnu.org>
parents:
41125
diff
changeset
|
639 if (windows_or_buffers_changed |
2043af2d023f
(note_mouse_highlight): Fix type of variable `ignore'.
Jason Rumney <jasonr@gnu.org>
parents:
41125
diff
changeset
|
640 && desired_row->full_width_p |
2043af2d023f
(note_mouse_highlight): Fix type of variable `ignore'.
Jason Rumney <jasonr@gnu.org>
parents:
41125
diff
changeset
|
641 && (f = XFRAME (w->frame), |
2043af2d023f
(note_mouse_highlight): Fix type of variable `ignore'.
Jason Rumney <jasonr@gnu.org>
parents:
41125
diff
changeset
|
642 width = FRAME_INTERNAL_BORDER_WIDTH (f), |
2043af2d023f
(note_mouse_highlight): Fix type of variable `ignore'.
Jason Rumney <jasonr@gnu.org>
parents:
41125
diff
changeset
|
643 width != 0) |
2043af2d023f
(note_mouse_highlight): Fix type of variable `ignore'.
Jason Rumney <jasonr@gnu.org>
parents:
41125
diff
changeset
|
644 && (height = desired_row->visible_height, |
2043af2d023f
(note_mouse_highlight): Fix type of variable `ignore'.
Jason Rumney <jasonr@gnu.org>
parents:
41125
diff
changeset
|
645 height > 0)) |
2043af2d023f
(note_mouse_highlight): Fix type of variable `ignore'.
Jason Rumney <jasonr@gnu.org>
parents:
41125
diff
changeset
|
646 { |
2043af2d023f
(note_mouse_highlight): Fix type of variable `ignore'.
Jason Rumney <jasonr@gnu.org>
parents:
41125
diff
changeset
|
647 int y = WINDOW_TO_FRAME_PIXEL_Y (w, max (0, desired_row->y)); |
50231
c8ea5e4b2129
* w32term.c: Remove consolidated defines and code.
Kim F. Storm <storm@cua.dk>
parents:
50163
diff
changeset
|
648 |
41249
2043af2d023f
(note_mouse_highlight): Fix type of variable `ignore'.
Jason Rumney <jasonr@gnu.org>
parents:
41125
diff
changeset
|
649 /* Internal border is drawn below the tool bar. */ |
2043af2d023f
(note_mouse_highlight): Fix type of variable `ignore'.
Jason Rumney <jasonr@gnu.org>
parents:
41125
diff
changeset
|
650 if (WINDOWP (f->tool_bar_window) |
2043af2d023f
(note_mouse_highlight): Fix type of variable `ignore'.
Jason Rumney <jasonr@gnu.org>
parents:
41125
diff
changeset
|
651 && w == XWINDOW (f->tool_bar_window)) |
2043af2d023f
(note_mouse_highlight): Fix type of variable `ignore'.
Jason Rumney <jasonr@gnu.org>
parents:
41125
diff
changeset
|
652 y -= width; |
2043af2d023f
(note_mouse_highlight): Fix type of variable `ignore'.
Jason Rumney <jasonr@gnu.org>
parents:
41125
diff
changeset
|
653 |
2043af2d023f
(note_mouse_highlight): Fix type of variable `ignore'.
Jason Rumney <jasonr@gnu.org>
parents:
41125
diff
changeset
|
654 BLOCK_INPUT; |
2043af2d023f
(note_mouse_highlight): Fix type of variable `ignore'.
Jason Rumney <jasonr@gnu.org>
parents:
41125
diff
changeset
|
655 { |
2043af2d023f
(note_mouse_highlight): Fix type of variable `ignore'.
Jason Rumney <jasonr@gnu.org>
parents:
41125
diff
changeset
|
656 HDC hdc = get_frame_dc (f); |
2043af2d023f
(note_mouse_highlight): Fix type of variable `ignore'.
Jason Rumney <jasonr@gnu.org>
parents:
41125
diff
changeset
|
657 w32_clear_area (f, hdc, 0, y, width, height); |
51204
082b768216a0
Make (several) trivial substitutions for renamed and
Kim F. Storm <storm@cua.dk>
parents:
50441
diff
changeset
|
658 w32_clear_area (f, hdc, FRAME_PIXEL_WIDTH (f) - width, |
41249
2043af2d023f
(note_mouse_highlight): Fix type of variable `ignore'.
Jason Rumney <jasonr@gnu.org>
parents:
41125
diff
changeset
|
659 y, width, height); |
2043af2d023f
(note_mouse_highlight): Fix type of variable `ignore'.
Jason Rumney <jasonr@gnu.org>
parents:
41125
diff
changeset
|
660 release_frame_dc (f, hdc); |
2043af2d023f
(note_mouse_highlight): Fix type of variable `ignore'.
Jason Rumney <jasonr@gnu.org>
parents:
41125
diff
changeset
|
661 } |
27402
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
662 UNBLOCK_INPUT; |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
663 } |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
664 } |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
665 |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
666 |
41125 | 667 /* Draw the bitmap WHICH in one of the left or right fringes of |
27402
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
668 window W. ROW is the glyph row for which to display the bitmap; it |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
669 determines the vertical position at which the bitmap has to be |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
670 drawn. */ |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
671 |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
672 static void |
50096 | 673 w32_draw_fringe_bitmap (w, row, p) |
27402
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
674 struct window *w; |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
675 struct glyph_row *row; |
50096 | 676 struct draw_fringe_bitmap_params *p; |
27402
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
677 { |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
678 struct frame *f = XFRAME (WINDOW_FRAME (w)); |
50096 | 679 HDC hdc; |
680 struct face *face = p->face; | |
53607
4262a032b45b
(x_update_window_end): Call draw_window_fringes.
Kim F. Storm <storm@cua.dk>
parents:
53469
diff
changeset
|
681 int rowY; |
50096 | 682 |
683 hdc = get_frame_dc (f); | |
27402
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
684 |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
685 /* Must clip because of partially visible lines. */ |
53607
4262a032b45b
(x_update_window_end): Call draw_window_fringes.
Kim F. Storm <storm@cua.dk>
parents:
53469
diff
changeset
|
686 rowY = WINDOW_TO_FRAME_PIXEL_Y (w, row->y); |
4262a032b45b
(x_update_window_end): Call draw_window_fringes.
Kim F. Storm <storm@cua.dk>
parents:
53469
diff
changeset
|
687 if (p->y < rowY) |
4262a032b45b
(x_update_window_end): Call draw_window_fringes.
Kim F. Storm <storm@cua.dk>
parents:
53469
diff
changeset
|
688 { |
4262a032b45b
(x_update_window_end): Call draw_window_fringes.
Kim F. Storm <storm@cua.dk>
parents:
53469
diff
changeset
|
689 /* Adjust position of "bottom aligned" bitmap on partially |
4262a032b45b
(x_update_window_end): Call draw_window_fringes.
Kim F. Storm <storm@cua.dk>
parents:
53469
diff
changeset
|
690 visible last row. */ |
4262a032b45b
(x_update_window_end): Call draw_window_fringes.
Kim F. Storm <storm@cua.dk>
parents:
53469
diff
changeset
|
691 int oldY = row->y; |
4262a032b45b
(x_update_window_end): Call draw_window_fringes.
Kim F. Storm <storm@cua.dk>
parents:
53469
diff
changeset
|
692 int oldVH = row->visible_height; |
4262a032b45b
(x_update_window_end): Call draw_window_fringes.
Kim F. Storm <storm@cua.dk>
parents:
53469
diff
changeset
|
693 row->visible_height = p->h; |
4262a032b45b
(x_update_window_end): Call draw_window_fringes.
Kim F. Storm <storm@cua.dk>
parents:
53469
diff
changeset
|
694 row->y -= rowY - p->y; |
58402
d1d4d5846215
(w32_clip_to_row): Add area arg. Callers changed.
Kim F. Storm <storm@cua.dk>
parents:
57837
diff
changeset
|
695 w32_clip_to_row (w, row, -1, hdc); |
53607
4262a032b45b
(x_update_window_end): Call draw_window_fringes.
Kim F. Storm <storm@cua.dk>
parents:
53469
diff
changeset
|
696 row->y = oldY; |
4262a032b45b
(x_update_window_end): Call draw_window_fringes.
Kim F. Storm <storm@cua.dk>
parents:
53469
diff
changeset
|
697 row->visible_height = oldVH; |
4262a032b45b
(x_update_window_end): Call draw_window_fringes.
Kim F. Storm <storm@cua.dk>
parents:
53469
diff
changeset
|
698 } |
4262a032b45b
(x_update_window_end): Call draw_window_fringes.
Kim F. Storm <storm@cua.dk>
parents:
53469
diff
changeset
|
699 else |
58402
d1d4d5846215
(w32_clip_to_row): Add area arg. Callers changed.
Kim F. Storm <storm@cua.dk>
parents:
57837
diff
changeset
|
700 w32_clip_to_row (w, row, -1, hdc); |
27402
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
701 |
53902
ff3a4c680347
(w32_draw_fringe_bitmap): Fixed a typo in the last patch.
Sam Steingold <sds@gnu.org>
parents:
53886
diff
changeset
|
702 if (p->bx >= 0 && !p->overlay_p) |
50096 | 703 { |
41727
d5baaa7df054
Merged fringe width related changes from xterm.c.
Kim F. Storm <storm@cua.dk>
parents:
41639
diff
changeset
|
704 w32_fill_area (f, hdc, face->background, |
50096 | 705 p->bx, p->by, p->nx, p->ny); |
706 } | |
707 | |
57278
4cec0243673a
(fringe_bmp): Change to pointer.
Kim F. Storm <storm@cua.dk>
parents:
56729
diff
changeset
|
708 if (p->which && p->which < max_fringe_bmp) |
50096 | 709 { |
710 HBITMAP pixmap = fringe_bmp[p->which]; | |
711 HDC compat_hdc; | |
712 HANDLE horig_obj; | |
713 | |
714 compat_hdc = CreateCompatibleDC (hdc); | |
53964
7add5c20b6f7
(w32_draw_fringe_bitmap): Handle overlay fringe bitmaps.
Jason Rumney <jasonr@gnu.org>
parents:
53934
diff
changeset
|
715 |
50096 | 716 SaveDC (hdc); |
717 | |
718 horig_obj = SelectObject (compat_hdc, pixmap); | |
53964
7add5c20b6f7
(w32_draw_fringe_bitmap): Handle overlay fringe bitmaps.
Jason Rumney <jasonr@gnu.org>
parents:
53934
diff
changeset
|
719 |
7add5c20b6f7
(w32_draw_fringe_bitmap): Handle overlay fringe bitmaps.
Jason Rumney <jasonr@gnu.org>
parents:
53934
diff
changeset
|
720 /* Paint overlays transparently. */ |
53886
e1b1c388f74d
(w32_draw_fringe_bitmap): Copy unadapted code from
Kim F. Storm <storm@cua.dk>
parents:
53607
diff
changeset
|
721 if (p->overlay_p) |
e1b1c388f74d
(w32_draw_fringe_bitmap): Copy unadapted code from
Kim F. Storm <storm@cua.dk>
parents:
53607
diff
changeset
|
722 { |
54126
8d0f80667054
(w32_draw_fringe_bitmap): Draw overlaid bitmaps
Jason Rumney <jasonr@gnu.org>
parents:
53964
diff
changeset
|
723 HBRUSH h_brush, h_orig_brush; |
8d0f80667054
(w32_draw_fringe_bitmap): Draw overlaid bitmaps
Jason Rumney <jasonr@gnu.org>
parents:
53964
diff
changeset
|
724 |
8d0f80667054
(w32_draw_fringe_bitmap): Draw overlaid bitmaps
Jason Rumney <jasonr@gnu.org>
parents:
53964
diff
changeset
|
725 SetTextColor (hdc, BLACK_PIX_DEFAULT (f)); |
8d0f80667054
(w32_draw_fringe_bitmap): Draw overlaid bitmaps
Jason Rumney <jasonr@gnu.org>
parents:
53964
diff
changeset
|
726 SetBkColor (hdc, WHITE_PIX_DEFAULT (f)); |
8d0f80667054
(w32_draw_fringe_bitmap): Draw overlaid bitmaps
Jason Rumney <jasonr@gnu.org>
parents:
53964
diff
changeset
|
727 h_brush = CreateSolidBrush (face->foreground); |
8d0f80667054
(w32_draw_fringe_bitmap): Draw overlaid bitmaps
Jason Rumney <jasonr@gnu.org>
parents:
53964
diff
changeset
|
728 h_orig_brush = SelectObject (hdc, h_brush); |
8d0f80667054
(w32_draw_fringe_bitmap): Draw overlaid bitmaps
Jason Rumney <jasonr@gnu.org>
parents:
53964
diff
changeset
|
729 |
8d0f80667054
(w32_draw_fringe_bitmap): Draw overlaid bitmaps
Jason Rumney <jasonr@gnu.org>
parents:
53964
diff
changeset
|
730 BitBlt (hdc, p->x, p->y, p->wd, p->h, |
8d0f80667054
(w32_draw_fringe_bitmap): Draw overlaid bitmaps
Jason Rumney <jasonr@gnu.org>
parents:
53964
diff
changeset
|
731 compat_hdc, 0, p->dh, |
8d0f80667054
(w32_draw_fringe_bitmap): Draw overlaid bitmaps
Jason Rumney <jasonr@gnu.org>
parents:
53964
diff
changeset
|
732 DSTINVERT); |
8d0f80667054
(w32_draw_fringe_bitmap): Draw overlaid bitmaps
Jason Rumney <jasonr@gnu.org>
parents:
53964
diff
changeset
|
733 BitBlt (hdc, p->x, p->y, p->wd, p->h, |
8d0f80667054
(w32_draw_fringe_bitmap): Draw overlaid bitmaps
Jason Rumney <jasonr@gnu.org>
parents:
53964
diff
changeset
|
734 compat_hdc, 0, p->dh, |
8d0f80667054
(w32_draw_fringe_bitmap): Draw overlaid bitmaps
Jason Rumney <jasonr@gnu.org>
parents:
53964
diff
changeset
|
735 0x2E064A); |
8d0f80667054
(w32_draw_fringe_bitmap): Draw overlaid bitmaps
Jason Rumney <jasonr@gnu.org>
parents:
53964
diff
changeset
|
736 BitBlt (hdc, p->x, p->y, p->wd, p->h, |
8d0f80667054
(w32_draw_fringe_bitmap): Draw overlaid bitmaps
Jason Rumney <jasonr@gnu.org>
parents:
53964
diff
changeset
|
737 compat_hdc, 0, p->dh, |
8d0f80667054
(w32_draw_fringe_bitmap): Draw overlaid bitmaps
Jason Rumney <jasonr@gnu.org>
parents:
53964
diff
changeset
|
738 DSTINVERT); |
8d0f80667054
(w32_draw_fringe_bitmap): Draw overlaid bitmaps
Jason Rumney <jasonr@gnu.org>
parents:
53964
diff
changeset
|
739 |
8d0f80667054
(w32_draw_fringe_bitmap): Draw overlaid bitmaps
Jason Rumney <jasonr@gnu.org>
parents:
53964
diff
changeset
|
740 SelectObject (hdc, h_orig_brush); |
8d0f80667054
(w32_draw_fringe_bitmap): Draw overlaid bitmaps
Jason Rumney <jasonr@gnu.org>
parents:
53964
diff
changeset
|
741 DeleteObject (h_brush); |
53886
e1b1c388f74d
(w32_draw_fringe_bitmap): Copy unadapted code from
Kim F. Storm <storm@cua.dk>
parents:
53607
diff
changeset
|
742 } |
53964
7add5c20b6f7
(w32_draw_fringe_bitmap): Handle overlay fringe bitmaps.
Jason Rumney <jasonr@gnu.org>
parents:
53934
diff
changeset
|
743 else |
54126
8d0f80667054
(w32_draw_fringe_bitmap): Draw overlaid bitmaps
Jason Rumney <jasonr@gnu.org>
parents:
53964
diff
changeset
|
744 { |
8d0f80667054
(w32_draw_fringe_bitmap): Draw overlaid bitmaps
Jason Rumney <jasonr@gnu.org>
parents:
53964
diff
changeset
|
745 SetTextColor (hdc, face->background); |
8d0f80667054
(w32_draw_fringe_bitmap): Draw overlaid bitmaps
Jason Rumney <jasonr@gnu.org>
parents:
53964
diff
changeset
|
746 SetBkColor (hdc, (p->cursor_p |
8d0f80667054
(w32_draw_fringe_bitmap): Draw overlaid bitmaps
Jason Rumney <jasonr@gnu.org>
parents:
53964
diff
changeset
|
747 ? f->output_data.w32->cursor_pixel |
8d0f80667054
(w32_draw_fringe_bitmap): Draw overlaid bitmaps
Jason Rumney <jasonr@gnu.org>
parents:
53964
diff
changeset
|
748 : face->foreground)); |
8d0f80667054
(w32_draw_fringe_bitmap): Draw overlaid bitmaps
Jason Rumney <jasonr@gnu.org>
parents:
53964
diff
changeset
|
749 |
8d0f80667054
(w32_draw_fringe_bitmap): Draw overlaid bitmaps
Jason Rumney <jasonr@gnu.org>
parents:
53964
diff
changeset
|
750 BitBlt (hdc, p->x, p->y, p->wd, p->h, |
8d0f80667054
(w32_draw_fringe_bitmap): Draw overlaid bitmaps
Jason Rumney <jasonr@gnu.org>
parents:
53964
diff
changeset
|
751 compat_hdc, 0, p->dh, |
8d0f80667054
(w32_draw_fringe_bitmap): Draw overlaid bitmaps
Jason Rumney <jasonr@gnu.org>
parents:
53964
diff
changeset
|
752 SRCCOPY); |
8d0f80667054
(w32_draw_fringe_bitmap): Draw overlaid bitmaps
Jason Rumney <jasonr@gnu.org>
parents:
53964
diff
changeset
|
753 } |
53886
e1b1c388f74d
(w32_draw_fringe_bitmap): Copy unadapted code from
Kim F. Storm <storm@cua.dk>
parents:
53607
diff
changeset
|
754 |
50096 | 755 SelectObject (compat_hdc, horig_obj); |
756 DeleteDC (compat_hdc); | |
757 RestoreDC (hdc, -1); | |
758 } | |
759 | |
760 w32_set_clip_rectangle (hdc, NULL); | |
27402
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
761 |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
762 release_frame_dc (f, hdc); |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
763 } |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
764 |
53886
e1b1c388f74d
(w32_draw_fringe_bitmap): Copy unadapted code from
Kim F. Storm <storm@cua.dk>
parents:
53607
diff
changeset
|
765 static void |
e1b1c388f74d
(w32_draw_fringe_bitmap): Copy unadapted code from
Kim F. Storm <storm@cua.dk>
parents:
53607
diff
changeset
|
766 w32_define_fringe_bitmap (which, bits, h, wd) |
e1b1c388f74d
(w32_draw_fringe_bitmap): Copy unadapted code from
Kim F. Storm <storm@cua.dk>
parents:
53607
diff
changeset
|
767 int which; |
53934
de8ab2bcee32
(w32_define_fringe_bitmap): Bitmaps are now 16 bits wide,
Kim F. Storm <storm@cua.dk>
parents:
53902
diff
changeset
|
768 unsigned short *bits; |
53886
e1b1c388f74d
(w32_draw_fringe_bitmap): Copy unadapted code from
Kim F. Storm <storm@cua.dk>
parents:
53607
diff
changeset
|
769 int h, wd; |
e1b1c388f74d
(w32_draw_fringe_bitmap): Copy unadapted code from
Kim F. Storm <storm@cua.dk>
parents:
53607
diff
changeset
|
770 { |
57278
4cec0243673a
(fringe_bmp): Change to pointer.
Kim F. Storm <storm@cua.dk>
parents:
56729
diff
changeset
|
771 if (which >= max_fringe_bmp) |
4cec0243673a
(fringe_bmp): Change to pointer.
Kim F. Storm <storm@cua.dk>
parents:
56729
diff
changeset
|
772 { |
4cec0243673a
(fringe_bmp): Change to pointer.
Kim F. Storm <storm@cua.dk>
parents:
56729
diff
changeset
|
773 int i = max_fringe_bmp; |
4cec0243673a
(fringe_bmp): Change to pointer.
Kim F. Storm <storm@cua.dk>
parents:
56729
diff
changeset
|
774 max_fringe_bmp = which + 20; |
4cec0243673a
(fringe_bmp): Change to pointer.
Kim F. Storm <storm@cua.dk>
parents:
56729
diff
changeset
|
775 fringe_bmp = (HBITMAP *) xrealloc (fringe_bmp, max_fringe_bmp * sizeof (HBITMAP)); |
4cec0243673a
(fringe_bmp): Change to pointer.
Kim F. Storm <storm@cua.dk>
parents:
56729
diff
changeset
|
776 while (i < max_fringe_bmp) |
4cec0243673a
(fringe_bmp): Change to pointer.
Kim F. Storm <storm@cua.dk>
parents:
56729
diff
changeset
|
777 fringe_bmp[i++] = 0; |
4cec0243673a
(fringe_bmp): Change to pointer.
Kim F. Storm <storm@cua.dk>
parents:
56729
diff
changeset
|
778 } |
4cec0243673a
(fringe_bmp): Change to pointer.
Kim F. Storm <storm@cua.dk>
parents:
56729
diff
changeset
|
779 |
53934
de8ab2bcee32
(w32_define_fringe_bitmap): Bitmaps are now 16 bits wide,
Kim F. Storm <storm@cua.dk>
parents:
53902
diff
changeset
|
780 fringe_bmp[which] = CreateBitmap (wd, h, 1, 1, bits); |
53886
e1b1c388f74d
(w32_draw_fringe_bitmap): Copy unadapted code from
Kim F. Storm <storm@cua.dk>
parents:
53607
diff
changeset
|
781 } |
e1b1c388f74d
(w32_draw_fringe_bitmap): Copy unadapted code from
Kim F. Storm <storm@cua.dk>
parents:
53607
diff
changeset
|
782 |
e1b1c388f74d
(w32_draw_fringe_bitmap): Copy unadapted code from
Kim F. Storm <storm@cua.dk>
parents:
53607
diff
changeset
|
783 static void |
e1b1c388f74d
(w32_draw_fringe_bitmap): Copy unadapted code from
Kim F. Storm <storm@cua.dk>
parents:
53607
diff
changeset
|
784 w32_destroy_fringe_bitmap (which) |
e1b1c388f74d
(w32_draw_fringe_bitmap): Copy unadapted code from
Kim F. Storm <storm@cua.dk>
parents:
53607
diff
changeset
|
785 int which; |
e1b1c388f74d
(w32_draw_fringe_bitmap): Copy unadapted code from
Kim F. Storm <storm@cua.dk>
parents:
53607
diff
changeset
|
786 { |
57278
4cec0243673a
(fringe_bmp): Change to pointer.
Kim F. Storm <storm@cua.dk>
parents:
56729
diff
changeset
|
787 if (which >= max_fringe_bmp) |
4cec0243673a
(fringe_bmp): Change to pointer.
Kim F. Storm <storm@cua.dk>
parents:
56729
diff
changeset
|
788 return; |
4cec0243673a
(fringe_bmp): Change to pointer.
Kim F. Storm <storm@cua.dk>
parents:
56729
diff
changeset
|
789 |
53886
e1b1c388f74d
(w32_draw_fringe_bitmap): Copy unadapted code from
Kim F. Storm <storm@cua.dk>
parents:
53607
diff
changeset
|
790 if (fringe_bmp[which]) |
e1b1c388f74d
(w32_draw_fringe_bitmap): Copy unadapted code from
Kim F. Storm <storm@cua.dk>
parents:
53607
diff
changeset
|
791 DeleteObject (fringe_bmp[which]); |
e1b1c388f74d
(w32_draw_fringe_bitmap): Copy unadapted code from
Kim F. Storm <storm@cua.dk>
parents:
53607
diff
changeset
|
792 fringe_bmp[which] = 0; |
e1b1c388f74d
(w32_draw_fringe_bitmap): Copy unadapted code from
Kim F. Storm <storm@cua.dk>
parents:
53607
diff
changeset
|
793 } |
e1b1c388f74d
(w32_draw_fringe_bitmap): Copy unadapted code from
Kim F. Storm <storm@cua.dk>
parents:
53607
diff
changeset
|
794 |
e1b1c388f74d
(w32_draw_fringe_bitmap): Copy unadapted code from
Kim F. Storm <storm@cua.dk>
parents:
53607
diff
changeset
|
795 |
13434 | 796 |
29321
8e2be36bb1c6
Format and doc changes to bring closer to xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
28369
diff
changeset
|
797 /* This is called when starting Emacs and when restarting after |
8e2be36bb1c6
Format and doc changes to bring closer to xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
28369
diff
changeset
|
798 suspend. When starting Emacs, no window is mapped. And nothing |
8e2be36bb1c6
Format and doc changes to bring closer to xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
28369
diff
changeset
|
799 must be done to Emacs's own window if it is suspended (though that |
8e2be36bb1c6
Format and doc changes to bring closer to xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
28369
diff
changeset
|
800 rarely happens). */ |
13434 | 801 |
21831
6b659713b90b
Forward declare hooks with full function prototypes.
Geoff Voelker <voelker@cs.washington.edu>
parents:
21740
diff
changeset
|
802 static void |
6b659713b90b
Forward declare hooks with full function prototypes.
Geoff Voelker <voelker@cs.washington.edu>
parents:
21740
diff
changeset
|
803 w32_set_terminal_modes (void) |
13434 | 804 { |
805 } | |
806 | |
29321
8e2be36bb1c6
Format and doc changes to bring closer to xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
28369
diff
changeset
|
807 /* This is called when exiting or suspending Emacs. Exiting will make |
8e2be36bb1c6
Format and doc changes to bring closer to xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
28369
diff
changeset
|
808 the W32 windows go away, and suspending requires no action. */ |
13434 | 809 |
21831
6b659713b90b
Forward declare hooks with full function prototypes.
Geoff Voelker <voelker@cs.washington.edu>
parents:
21740
diff
changeset
|
810 static void |
6b659713b90b
Forward declare hooks with full function prototypes.
Geoff Voelker <voelker@cs.washington.edu>
parents:
21740
diff
changeset
|
811 w32_reset_terminal_modes (void) |
13434 | 812 { |
813 } | |
27402
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
814 |
29321
8e2be36bb1c6
Format and doc changes to bring closer to xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
28369
diff
changeset
|
815 |
13434 | 816 |
27402
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
817 /*********************************************************************** |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
818 Display Iterator |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
819 ***********************************************************************/ |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
820 |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
821 /* Function prototypes of this page. */ |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
822 |
59332
15087a4cee39
(x_new_font): Set FRAME_COLUMN_WIDTH to fontp->average_width,
Jason Rumney <jasonr@gnu.org>
parents:
58894
diff
changeset
|
823 XCharStruct *w32_per_char_metric P_ ((XFontStruct *, wchar_t *, int)); |
50154
10038ae9db85
Remove consolidated defines and code.
Kim F. Storm <storm@cua.dk>
parents:
50096
diff
changeset
|
824 static int w32_encode_char P_ ((int, wchar_t *, struct font_info *, int *)); |
27402
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
825 |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
826 |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
827 /* Get metrics of character CHAR2B in FONT. Value is always non-null. |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
828 If CHAR2B is not contained in FONT, the font's default character |
29321
8e2be36bb1c6
Format and doc changes to bring closer to xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
28369
diff
changeset
|
829 metric is returned. */ |
8e2be36bb1c6
Format and doc changes to bring closer to xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
28369
diff
changeset
|
830 |
32720
8530cd0a7455
(w32_per_char_metric): Remove HDC argument. Use
Andrew Innes <andrewi@gnu.org>
parents:
32670
diff
changeset
|
831 static int |
8530cd0a7455
(w32_per_char_metric): Remove HDC argument. Use
Andrew Innes <andrewi@gnu.org>
parents:
32670
diff
changeset
|
832 w32_bdf_per_char_metric (font, char2b, dim, pcm) |
32022
1f26caa05cd7
(w32_char_font_type, w32_encode_char, x_produce_glyphs): Distinguish
Jason Rumney <jasonr@gnu.org>
parents:
31624
diff
changeset
|
833 XFontStruct *font; |
1f26caa05cd7
(w32_char_font_type, w32_encode_char, x_produce_glyphs): Distinguish
Jason Rumney <jasonr@gnu.org>
parents:
31624
diff
changeset
|
834 wchar_t *char2b; |
1f26caa05cd7
(w32_char_font_type, w32_encode_char, x_produce_glyphs): Distinguish
Jason Rumney <jasonr@gnu.org>
parents:
31624
diff
changeset
|
835 int dim; |
32720
8530cd0a7455
(w32_per_char_metric): Remove HDC argument. Use
Andrew Innes <andrewi@gnu.org>
parents:
32670
diff
changeset
|
836 XCharStruct * pcm; |
32022
1f26caa05cd7
(w32_char_font_type, w32_encode_char, x_produce_glyphs): Distinguish
Jason Rumney <jasonr@gnu.org>
parents:
31624
diff
changeset
|
837 { |
1f26caa05cd7
(w32_char_font_type, w32_encode_char, x_produce_glyphs): Distinguish
Jason Rumney <jasonr@gnu.org>
parents:
31624
diff
changeset
|
838 glyph_metric * bdf_metric; |
1f26caa05cd7
(w32_char_font_type, w32_encode_char, x_produce_glyphs): Distinguish
Jason Rumney <jasonr@gnu.org>
parents:
31624
diff
changeset
|
839 char buf[2]; |
1f26caa05cd7
(w32_char_font_type, w32_encode_char, x_produce_glyphs): Distinguish
Jason Rumney <jasonr@gnu.org>
parents:
31624
diff
changeset
|
840 |
1f26caa05cd7
(w32_char_font_type, w32_encode_char, x_produce_glyphs): Distinguish
Jason Rumney <jasonr@gnu.org>
parents:
31624
diff
changeset
|
841 if (dim == 1) |
34112
adfe753a8c4e
(w32_bdf_per_char_metric): Dereference pointer correctly for single
Jason Rumney <jasonr@gnu.org>
parents:
34093
diff
changeset
|
842 buf[0] = (char)(*char2b); |
32022
1f26caa05cd7
(w32_char_font_type, w32_encode_char, x_produce_glyphs): Distinguish
Jason Rumney <jasonr@gnu.org>
parents:
31624
diff
changeset
|
843 else |
1f26caa05cd7
(w32_char_font_type, w32_encode_char, x_produce_glyphs): Distinguish
Jason Rumney <jasonr@gnu.org>
parents:
31624
diff
changeset
|
844 { |
50154
10038ae9db85
Remove consolidated defines and code.
Kim F. Storm <storm@cua.dk>
parents:
50096
diff
changeset
|
845 buf[0] = XCHAR2B_BYTE1 (char2b); |
10038ae9db85
Remove consolidated defines and code.
Kim F. Storm <storm@cua.dk>
parents:
50096
diff
changeset
|
846 buf[1] = XCHAR2B_BYTE2 (char2b); |
32022
1f26caa05cd7
(w32_char_font_type, w32_encode_char, x_produce_glyphs): Distinguish
Jason Rumney <jasonr@gnu.org>
parents:
31624
diff
changeset
|
847 } |
1f26caa05cd7
(w32_char_font_type, w32_encode_char, x_produce_glyphs): Distinguish
Jason Rumney <jasonr@gnu.org>
parents:
31624
diff
changeset
|
848 |
1f26caa05cd7
(w32_char_font_type, w32_encode_char, x_produce_glyphs): Distinguish
Jason Rumney <jasonr@gnu.org>
parents:
31624
diff
changeset
|
849 bdf_metric = w32_BDF_TextMetric (font->bdf, buf, dim); |
1f26caa05cd7
(w32_char_font_type, w32_encode_char, x_produce_glyphs): Distinguish
Jason Rumney <jasonr@gnu.org>
parents:
31624
diff
changeset
|
850 |
1f26caa05cd7
(w32_char_font_type, w32_encode_char, x_produce_glyphs): Distinguish
Jason Rumney <jasonr@gnu.org>
parents:
31624
diff
changeset
|
851 if (bdf_metric) |
1f26caa05cd7
(w32_char_font_type, w32_encode_char, x_produce_glyphs): Distinguish
Jason Rumney <jasonr@gnu.org>
parents:
31624
diff
changeset
|
852 { |
1f26caa05cd7
(w32_char_font_type, w32_encode_char, x_produce_glyphs): Distinguish
Jason Rumney <jasonr@gnu.org>
parents:
31624
diff
changeset
|
853 pcm->width = bdf_metric->dwidth; |
1f26caa05cd7
(w32_char_font_type, w32_encode_char, x_produce_glyphs): Distinguish
Jason Rumney <jasonr@gnu.org>
parents:
31624
diff
changeset
|
854 pcm->lbearing = bdf_metric->bbox; |
1f26caa05cd7
(w32_char_font_type, w32_encode_char, x_produce_glyphs): Distinguish
Jason Rumney <jasonr@gnu.org>
parents:
31624
diff
changeset
|
855 pcm->rbearing = bdf_metric->dwidth |
1f26caa05cd7
(w32_char_font_type, w32_encode_char, x_produce_glyphs): Distinguish
Jason Rumney <jasonr@gnu.org>
parents:
31624
diff
changeset
|
856 - (bdf_metric->bbox + bdf_metric->bbw); |
1f26caa05cd7
(w32_char_font_type, w32_encode_char, x_produce_glyphs): Distinguish
Jason Rumney <jasonr@gnu.org>
parents:
31624
diff
changeset
|
857 pcm->ascent = bdf_metric->bboy + bdf_metric->bbh; |
33037
365605845e33
(w32_bdf_per_char_metric): Negate descent.
Jason Rumney <jasonr@gnu.org>
parents:
32988
diff
changeset
|
858 pcm->descent = -bdf_metric->bboy; |
32720
8530cd0a7455
(w32_per_char_metric): Remove HDC argument. Use
Andrew Innes <andrewi@gnu.org>
parents:
32670
diff
changeset
|
859 |
8530cd0a7455
(w32_per_char_metric): Remove HDC argument. Use
Andrew Innes <andrewi@gnu.org>
parents:
32670
diff
changeset
|
860 return 1; |
8530cd0a7455
(w32_per_char_metric): Remove HDC argument. Use
Andrew Innes <andrewi@gnu.org>
parents:
32670
diff
changeset
|
861 } |
8530cd0a7455
(w32_per_char_metric): Remove HDC argument. Use
Andrew Innes <andrewi@gnu.org>
parents:
32670
diff
changeset
|
862 return 0; |
8530cd0a7455
(w32_per_char_metric): Remove HDC argument. Use
Andrew Innes <andrewi@gnu.org>
parents:
32670
diff
changeset
|
863 } |
8530cd0a7455
(w32_per_char_metric): Remove HDC argument. Use
Andrew Innes <andrewi@gnu.org>
parents:
32670
diff
changeset
|
864 |
8530cd0a7455
(w32_per_char_metric): Remove HDC argument. Use
Andrew Innes <andrewi@gnu.org>
parents:
32670
diff
changeset
|
865 |
8530cd0a7455
(w32_per_char_metric): Remove HDC argument. Use
Andrew Innes <andrewi@gnu.org>
parents:
32670
diff
changeset
|
866 static int |
8530cd0a7455
(w32_per_char_metric): Remove HDC argument. Use
Andrew Innes <andrewi@gnu.org>
parents:
32670
diff
changeset
|
867 w32_native_per_char_metric (font, char2b, font_type, pcm) |
27402
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
868 XFontStruct *font; |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
869 wchar_t *char2b; |
29321
8e2be36bb1c6
Format and doc changes to bring closer to xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
28369
diff
changeset
|
870 enum w32_char_font_type font_type; |
32720
8530cd0a7455
(w32_per_char_metric): Remove HDC argument. Use
Andrew Innes <andrewi@gnu.org>
parents:
32670
diff
changeset
|
871 XCharStruct * pcm; |
27402
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
872 { |
32720
8530cd0a7455
(w32_per_char_metric): Remove HDC argument. Use
Andrew Innes <andrewi@gnu.org>
parents:
32670
diff
changeset
|
873 HDC hdc = GetDC (NULL); |
8530cd0a7455
(w32_per_char_metric): Remove HDC argument. Use
Andrew Innes <andrewi@gnu.org>
parents:
32670
diff
changeset
|
874 HFONT old_font; |
8530cd0a7455
(w32_per_char_metric): Remove HDC argument. Use
Andrew Innes <andrewi@gnu.org>
parents:
32670
diff
changeset
|
875 BOOL retval = FALSE; |
27402
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
876 |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
877 xassert (font && char2b); |
32720
8530cd0a7455
(w32_per_char_metric): Remove HDC argument. Use
Andrew Innes <andrewi@gnu.org>
parents:
32670
diff
changeset
|
878 xassert (font->hfont); |
8530cd0a7455
(w32_per_char_metric): Remove HDC argument. Use
Andrew Innes <andrewi@gnu.org>
parents:
32670
diff
changeset
|
879 xassert (font_type == UNICODE_FONT || font_type == ANSI_FONT); |
8530cd0a7455
(w32_per_char_metric): Remove HDC argument. Use
Andrew Innes <andrewi@gnu.org>
parents:
32670
diff
changeset
|
880 |
8530cd0a7455
(w32_per_char_metric): Remove HDC argument. Use
Andrew Innes <andrewi@gnu.org>
parents:
32670
diff
changeset
|
881 old_font = SelectObject (hdc, font->hfont); |
27402
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
882 |
31624
417b6743c5fa
(w32_per_char_metric): Handle non-TrueType fonts.
Andrew Innes <andrewi@gnu.org>
parents:
31116
diff
changeset
|
883 if ((font->tm.tmPitchAndFamily & TMPF_TRUETYPE) != 0) |
417b6743c5fa
(w32_per_char_metric): Handle non-TrueType fonts.
Andrew Innes <andrewi@gnu.org>
parents:
31116
diff
changeset
|
884 { |
417b6743c5fa
(w32_per_char_metric): Handle non-TrueType fonts.
Andrew Innes <andrewi@gnu.org>
parents:
31116
diff
changeset
|
885 ABC char_widths; |
417b6743c5fa
(w32_per_char_metric): Handle non-TrueType fonts.
Andrew Innes <andrewi@gnu.org>
parents:
31116
diff
changeset
|
886 |
417b6743c5fa
(w32_per_char_metric): Handle non-TrueType fonts.
Andrew Innes <andrewi@gnu.org>
parents:
31116
diff
changeset
|
887 if (font_type == UNICODE_FONT) |
417b6743c5fa
(w32_per_char_metric): Handle non-TrueType fonts.
Andrew Innes <andrewi@gnu.org>
parents:
31116
diff
changeset
|
888 retval = GetCharABCWidthsW (hdc, *char2b, *char2b, &char_widths); |
32720
8530cd0a7455
(w32_per_char_metric): Remove HDC argument. Use
Andrew Innes <andrewi@gnu.org>
parents:
32670
diff
changeset
|
889 else |
31624
417b6743c5fa
(w32_per_char_metric): Handle non-TrueType fonts.
Andrew Innes <andrewi@gnu.org>
parents:
31116
diff
changeset
|
890 retval = GetCharABCWidthsA (hdc, *char2b, *char2b, &char_widths); |
417b6743c5fa
(w32_per_char_metric): Handle non-TrueType fonts.
Andrew Innes <andrewi@gnu.org>
parents:
31116
diff
changeset
|
891 |
417b6743c5fa
(w32_per_char_metric): Handle non-TrueType fonts.
Andrew Innes <andrewi@gnu.org>
parents:
31116
diff
changeset
|
892 if (retval) |
417b6743c5fa
(w32_per_char_metric): Handle non-TrueType fonts.
Andrew Innes <andrewi@gnu.org>
parents:
31116
diff
changeset
|
893 { |
43146
49ffe8f5efb6
(w32_native_per_char_metric): Disable 2002-01-20 change.
Jason Rumney <jasonr@gnu.org>
parents:
42934
diff
changeset
|
894 #if 0 |
49ffe8f5efb6
(w32_native_per_char_metric): Disable 2002-01-20 change.
Jason Rumney <jasonr@gnu.org>
parents:
42934
diff
changeset
|
895 /* Disabled until we can find a way to get the right results |
49ffe8f5efb6
(w32_native_per_char_metric): Disable 2002-01-20 change.
Jason Rumney <jasonr@gnu.org>
parents:
42934
diff
changeset
|
896 on all versions of Windows. */ |
49ffe8f5efb6
(w32_native_per_char_metric): Disable 2002-01-20 change.
Jason Rumney <jasonr@gnu.org>
parents:
42934
diff
changeset
|
897 |
42844
38ae31587c80
(w32_native_per_char_metric): Don't trust the metrics
Jason Rumney <jasonr@gnu.org>
parents:
42794
diff
changeset
|
898 /* Don't trust the ABC widths. For synthesized fonts they are |
38ae31587c80
(w32_native_per_char_metric): Don't trust the metrics
Jason Rumney <jasonr@gnu.org>
parents:
42794
diff
changeset
|
899 wrong, and so is the result of GetCharWidth()! */ |
38ae31587c80
(w32_native_per_char_metric): Don't trust the metrics
Jason Rumney <jasonr@gnu.org>
parents:
42794
diff
changeset
|
900 int real_width; |
38ae31587c80
(w32_native_per_char_metric): Don't trust the metrics
Jason Rumney <jasonr@gnu.org>
parents:
42794
diff
changeset
|
901 GetCharWidth (hdc, *char2b, *char2b, &real_width); |
43146
49ffe8f5efb6
(w32_native_per_char_metric): Disable 2002-01-20 change.
Jason Rumney <jasonr@gnu.org>
parents:
42934
diff
changeset
|
902 #endif |
63904
72c5011362ef
* w32term.c (cleartype_active): New flag for enabling sub-pixel
Jason Rumney <jasonr@gnu.org>
parents:
63376
diff
changeset
|
903 if (cleartype_active) |
72c5011362ef
* w32term.c (cleartype_active): New flag for enabling sub-pixel
Jason Rumney <jasonr@gnu.org>
parents:
63376
diff
changeset
|
904 { |
72c5011362ef
* w32term.c (cleartype_active): New flag for enabling sub-pixel
Jason Rumney <jasonr@gnu.org>
parents:
63376
diff
changeset
|
905 /* Cleartype antialiasing causes characters to overhang |
72c5011362ef
* w32term.c (cleartype_active): New flag for enabling sub-pixel
Jason Rumney <jasonr@gnu.org>
parents:
63376
diff
changeset
|
906 by a pixel on each side compared with what GetCharABCWidths |
72c5011362ef
* w32term.c (cleartype_active): New flag for enabling sub-pixel
Jason Rumney <jasonr@gnu.org>
parents:
63376
diff
changeset
|
907 reports. */ |
72c5011362ef
* w32term.c (cleartype_active): New flag for enabling sub-pixel
Jason Rumney <jasonr@gnu.org>
parents:
63376
diff
changeset
|
908 char_widths.abcA -= 1; |
72c5011362ef
* w32term.c (cleartype_active): New flag for enabling sub-pixel
Jason Rumney <jasonr@gnu.org>
parents:
63376
diff
changeset
|
909 char_widths.abcC -= 1; |
72c5011362ef
* w32term.c (cleartype_active): New flag for enabling sub-pixel
Jason Rumney <jasonr@gnu.org>
parents:
63376
diff
changeset
|
910 char_widths.abcB += 2; |
72c5011362ef
* w32term.c (cleartype_active): New flag for enabling sub-pixel
Jason Rumney <jasonr@gnu.org>
parents:
63376
diff
changeset
|
911 } |
72c5011362ef
* w32term.c (cleartype_active): New flag for enabling sub-pixel
Jason Rumney <jasonr@gnu.org>
parents:
63376
diff
changeset
|
912 |
31624
417b6743c5fa
(w32_per_char_metric): Handle non-TrueType fonts.
Andrew Innes <andrewi@gnu.org>
parents:
31116
diff
changeset
|
913 pcm->width = char_widths.abcA + char_widths.abcB + char_widths.abcC; |
43146
49ffe8f5efb6
(w32_native_per_char_metric): Disable 2002-01-20 change.
Jason Rumney <jasonr@gnu.org>
parents:
42934
diff
changeset
|
914 #if 0 |
42844
38ae31587c80
(w32_native_per_char_metric): Don't trust the metrics
Jason Rumney <jasonr@gnu.org>
parents:
42794
diff
changeset
|
915 /* As far as I can tell, this is the best way to determine what |
38ae31587c80
(w32_native_per_char_metric): Don't trust the metrics
Jason Rumney <jasonr@gnu.org>
parents:
42794
diff
changeset
|
916 ExtTextOut will do with the broken font. */ |
38ae31587c80
(w32_native_per_char_metric): Don't trust the metrics
Jason Rumney <jasonr@gnu.org>
parents:
42794
diff
changeset
|
917 if (pcm->width != real_width) |
38ae31587c80
(w32_native_per_char_metric): Don't trust the metrics
Jason Rumney <jasonr@gnu.org>
parents:
42794
diff
changeset
|
918 pcm->width = (pcm->width + real_width) / 2; |
43146
49ffe8f5efb6
(w32_native_per_char_metric): Disable 2002-01-20 change.
Jason Rumney <jasonr@gnu.org>
parents:
42934
diff
changeset
|
919 #endif |
31624
417b6743c5fa
(w32_per_char_metric): Handle non-TrueType fonts.
Andrew Innes <andrewi@gnu.org>
parents:
31116
diff
changeset
|
920 pcm->lbearing = char_widths.abcA; |
42844
38ae31587c80
(w32_native_per_char_metric): Don't trust the metrics
Jason Rumney <jasonr@gnu.org>
parents:
42794
diff
changeset
|
921 pcm->rbearing = char_widths.abcA + char_widths.abcB; |
32720
8530cd0a7455
(w32_per_char_metric): Remove HDC argument. Use
Andrew Innes <andrewi@gnu.org>
parents:
32670
diff
changeset
|
922 pcm->ascent = FONT_BASE (font); |
8530cd0a7455
(w32_per_char_metric): Remove HDC argument. Use
Andrew Innes <andrewi@gnu.org>
parents:
32670
diff
changeset
|
923 pcm->descent = FONT_DESCENT (font); |
31624
417b6743c5fa
(w32_per_char_metric): Handle non-TrueType fonts.
Andrew Innes <andrewi@gnu.org>
parents:
31116
diff
changeset
|
924 } |
32720
8530cd0a7455
(w32_per_char_metric): Remove HDC argument. Use
Andrew Innes <andrewi@gnu.org>
parents:
32670
diff
changeset
|
925 } |
8530cd0a7455
(w32_per_char_metric): Remove HDC argument. Use
Andrew Innes <andrewi@gnu.org>
parents:
32670
diff
changeset
|
926 |
8530cd0a7455
(w32_per_char_metric): Remove HDC argument. Use
Andrew Innes <andrewi@gnu.org>
parents:
32670
diff
changeset
|
927 if (!retval) |
8530cd0a7455
(w32_per_char_metric): Remove HDC argument. Use
Andrew Innes <andrewi@gnu.org>
parents:
32670
diff
changeset
|
928 { |
8530cd0a7455
(w32_per_char_metric): Remove HDC argument. Use
Andrew Innes <andrewi@gnu.org>
parents:
32670
diff
changeset
|
929 /* Either font is not a True-type font, or GetCharABCWidthsW |
8530cd0a7455
(w32_per_char_metric): Remove HDC argument. Use
Andrew Innes <andrewi@gnu.org>
parents:
32670
diff
changeset
|
930 failed (it is not supported on Windows 9x for instance), so we |
8530cd0a7455
(w32_per_char_metric): Remove HDC argument. Use
Andrew Innes <andrewi@gnu.org>
parents:
32670
diff
changeset
|
931 can't determine the full info we would like. All is not lost |
8530cd0a7455
(w32_per_char_metric): Remove HDC argument. Use
Andrew Innes <andrewi@gnu.org>
parents:
32670
diff
changeset
|
932 though - we can call GetTextExtentPoint32 to get rbearing and |
8530cd0a7455
(w32_per_char_metric): Remove HDC argument. Use
Andrew Innes <andrewi@gnu.org>
parents:
32670
diff
changeset
|
933 deduce width based on the font's per-string overhang. lbearing |
8530cd0a7455
(w32_per_char_metric): Remove HDC argument. Use
Andrew Innes <andrewi@gnu.org>
parents:
32670
diff
changeset
|
934 is assumed to be zero. */ |
33097
84590a646acc
(x_produce_glyphs): Handle composite characters.
Jason Rumney <jasonr@gnu.org>
parents:
33037
diff
changeset
|
935 |
84590a646acc
(x_produce_glyphs): Handle composite characters.
Jason Rumney <jasonr@gnu.org>
parents:
33037
diff
changeset
|
936 /* TODO: Some Thai characters (and other composites if Windows |
84590a646acc
(x_produce_glyphs): Handle composite characters.
Jason Rumney <jasonr@gnu.org>
parents:
33037
diff
changeset
|
937 supports them) do have lbearing, and report their total width |
84590a646acc
(x_produce_glyphs): Handle composite characters.
Jason Rumney <jasonr@gnu.org>
parents:
33037
diff
changeset
|
938 as zero. Need some way of handling them when |
84590a646acc
(x_produce_glyphs): Handle composite characters.
Jason Rumney <jasonr@gnu.org>
parents:
33037
diff
changeset
|
939 GetCharABCWidthsW fails. */ |
32720
8530cd0a7455
(w32_per_char_metric): Remove HDC argument. Use
Andrew Innes <andrewi@gnu.org>
parents:
32670
diff
changeset
|
940 SIZE sz; |
8530cd0a7455
(w32_per_char_metric): Remove HDC argument. Use
Andrew Innes <andrewi@gnu.org>
parents:
32670
diff
changeset
|
941 |
8530cd0a7455
(w32_per_char_metric): Remove HDC argument. Use
Andrew Innes <andrewi@gnu.org>
parents:
32670
diff
changeset
|
942 if (font_type == UNICODE_FONT) |
8530cd0a7455
(w32_per_char_metric): Remove HDC argument. Use
Andrew Innes <andrewi@gnu.org>
parents:
32670
diff
changeset
|
943 retval = GetTextExtentPoint32W (hdc, char2b, 1, &sz); |
31624
417b6743c5fa
(w32_per_char_metric): Handle non-TrueType fonts.
Andrew Innes <andrewi@gnu.org>
parents:
31116
diff
changeset
|
944 else |
32720
8530cd0a7455
(w32_per_char_metric): Remove HDC argument. Use
Andrew Innes <andrewi@gnu.org>
parents:
32670
diff
changeset
|
945 retval = GetTextExtentPoint32A (hdc, (char*)char2b, 1, &sz); |
8530cd0a7455
(w32_per_char_metric): Remove HDC argument. Use
Andrew Innes <andrewi@gnu.org>
parents:
32670
diff
changeset
|
946 |
8530cd0a7455
(w32_per_char_metric): Remove HDC argument. Use
Andrew Innes <andrewi@gnu.org>
parents:
32670
diff
changeset
|
947 if (retval) |
31624
417b6743c5fa
(w32_per_char_metric): Handle non-TrueType fonts.
Andrew Innes <andrewi@gnu.org>
parents:
31116
diff
changeset
|
948 { |
32720
8530cd0a7455
(w32_per_char_metric): Remove HDC argument. Use
Andrew Innes <andrewi@gnu.org>
parents:
32670
diff
changeset
|
949 pcm->width = sz.cx - font->tm.tmOverhang; |
8530cd0a7455
(w32_per_char_metric): Remove HDC argument. Use
Andrew Innes <andrewi@gnu.org>
parents:
32670
diff
changeset
|
950 pcm->rbearing = sz.cx; |
8530cd0a7455
(w32_per_char_metric): Remove HDC argument. Use
Andrew Innes <andrewi@gnu.org>
parents:
32670
diff
changeset
|
951 pcm->lbearing = 0; |
8530cd0a7455
(w32_per_char_metric): Remove HDC argument. Use
Andrew Innes <andrewi@gnu.org>
parents:
32670
diff
changeset
|
952 pcm->ascent = FONT_BASE (font); |
8530cd0a7455
(w32_per_char_metric): Remove HDC argument. Use
Andrew Innes <andrewi@gnu.org>
parents:
32670
diff
changeset
|
953 pcm->descent = FONT_DESCENT (font); |
31624
417b6743c5fa
(w32_per_char_metric): Handle non-TrueType fonts.
Andrew Innes <andrewi@gnu.org>
parents:
31116
diff
changeset
|
954 } |
27402
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
955 } |
32720
8530cd0a7455
(w32_per_char_metric): Remove HDC argument. Use
Andrew Innes <andrewi@gnu.org>
parents:
32670
diff
changeset
|
956 |
8530cd0a7455
(w32_per_char_metric): Remove HDC argument. Use
Andrew Innes <andrewi@gnu.org>
parents:
32670
diff
changeset
|
957 |
8530cd0a7455
(w32_per_char_metric): Remove HDC argument. Use
Andrew Innes <andrewi@gnu.org>
parents:
32670
diff
changeset
|
958 if (pcm->width == 0 && (pcm->rbearing - pcm->lbearing) == 0) |
8530cd0a7455
(w32_per_char_metric): Remove HDC argument. Use
Andrew Innes <andrewi@gnu.org>
parents:
32670
diff
changeset
|
959 { |
8530cd0a7455
(w32_per_char_metric): Remove HDC argument. Use
Andrew Innes <andrewi@gnu.org>
parents:
32670
diff
changeset
|
960 retval = FALSE; |
8530cd0a7455
(w32_per_char_metric): Remove HDC argument. Use
Andrew Innes <andrewi@gnu.org>
parents:
32670
diff
changeset
|
961 } |
8530cd0a7455
(w32_per_char_metric): Remove HDC argument. Use
Andrew Innes <andrewi@gnu.org>
parents:
32670
diff
changeset
|
962 |
8530cd0a7455
(w32_per_char_metric): Remove HDC argument. Use
Andrew Innes <andrewi@gnu.org>
parents:
32670
diff
changeset
|
963 SelectObject (hdc, old_font); |
8530cd0a7455
(w32_per_char_metric): Remove HDC argument. Use
Andrew Innes <andrewi@gnu.org>
parents:
32670
diff
changeset
|
964 ReleaseDC (NULL, hdc); |
8530cd0a7455
(w32_per_char_metric): Remove HDC argument. Use
Andrew Innes <andrewi@gnu.org>
parents:
32670
diff
changeset
|
965 |
8530cd0a7455
(w32_per_char_metric): Remove HDC argument. Use
Andrew Innes <andrewi@gnu.org>
parents:
32670
diff
changeset
|
966 return retval; |
8530cd0a7455
(w32_per_char_metric): Remove HDC argument. Use
Andrew Innes <andrewi@gnu.org>
parents:
32670
diff
changeset
|
967 } |
8530cd0a7455
(w32_per_char_metric): Remove HDC argument. Use
Andrew Innes <andrewi@gnu.org>
parents:
32670
diff
changeset
|
968 |
8530cd0a7455
(w32_per_char_metric): Remove HDC argument. Use
Andrew Innes <andrewi@gnu.org>
parents:
32670
diff
changeset
|
969 |
59332
15087a4cee39
(x_new_font): Set FRAME_COLUMN_WIDTH to fontp->average_width,
Jason Rumney <jasonr@gnu.org>
parents:
58894
diff
changeset
|
970 XCharStruct * |
32720
8530cd0a7455
(w32_per_char_metric): Remove HDC argument. Use
Andrew Innes <andrewi@gnu.org>
parents:
32670
diff
changeset
|
971 w32_per_char_metric (font, char2b, font_type) |
8530cd0a7455
(w32_per_char_metric): Remove HDC argument. Use
Andrew Innes <andrewi@gnu.org>
parents:
32670
diff
changeset
|
972 XFontStruct *font; |
8530cd0a7455
(w32_per_char_metric): Remove HDC argument. Use
Andrew Innes <andrewi@gnu.org>
parents:
32670
diff
changeset
|
973 wchar_t *char2b; |
50154
10038ae9db85
Remove consolidated defines and code.
Kim F. Storm <storm@cua.dk>
parents:
50096
diff
changeset
|
974 int /* enum w32_char_font_type */ font_type; |
32720
8530cd0a7455
(w32_per_char_metric): Remove HDC argument. Use
Andrew Innes <andrewi@gnu.org>
parents:
32670
diff
changeset
|
975 { |
8530cd0a7455
(w32_per_char_metric): Remove HDC argument. Use
Andrew Innes <andrewi@gnu.org>
parents:
32670
diff
changeset
|
976 /* The result metric information. */ |
8530cd0a7455
(w32_per_char_metric): Remove HDC argument. Use
Andrew Innes <andrewi@gnu.org>
parents:
32670
diff
changeset
|
977 XCharStruct *pcm; |
8530cd0a7455
(w32_per_char_metric): Remove HDC argument. Use
Andrew Innes <andrewi@gnu.org>
parents:
32670
diff
changeset
|
978 BOOL retval; |
8530cd0a7455
(w32_per_char_metric): Remove HDC argument. Use
Andrew Innes <andrewi@gnu.org>
parents:
32670
diff
changeset
|
979 |
8530cd0a7455
(w32_per_char_metric): Remove HDC argument. Use
Andrew Innes <andrewi@gnu.org>
parents:
32670
diff
changeset
|
980 xassert (font && char2b); |
8530cd0a7455
(w32_per_char_metric): Remove HDC argument. Use
Andrew Innes <andrewi@gnu.org>
parents:
32670
diff
changeset
|
981 |
52393 | 982 /* TODO: This function is currently called through the RIF, and in |
983 some cases font_type is UNKNOWN_FONT. We currently allow the | |
984 cached metrics to be used, which seems to work, but in cases | |
985 where font_type is UNKNOWN_FONT, we probably haven't encoded | |
986 char2b appropriately. All callers need checking to see what they | |
987 are passing. This is most likely to affect variable width fonts | |
988 outside the Latin-1 range, particularly in languages like Thai | |
989 that rely on rbearing and lbearing to provide composition. I | |
990 don't think that is working currently anyway, but we don't seem | |
991 to have anyone testing such languages on Windows. */ | |
992 | |
32720
8530cd0a7455
(w32_per_char_metric): Remove HDC argument. Use
Andrew Innes <andrewi@gnu.org>
parents:
32670
diff
changeset
|
993 /* Handle the common cases quickly. */ |
34112
adfe753a8c4e
(w32_bdf_per_char_metric): Dereference pointer correctly for single
Jason Rumney <jasonr@gnu.org>
parents:
34093
diff
changeset
|
994 if (!font->bdf && font->per_char == NULL) |
32720
8530cd0a7455
(w32_per_char_metric): Remove HDC argument. Use
Andrew Innes <andrewi@gnu.org>
parents:
32670
diff
changeset
|
995 /* TODO: determine whether char2b exists in font? */ |
8530cd0a7455
(w32_per_char_metric): Remove HDC argument. Use
Andrew Innes <andrewi@gnu.org>
parents:
32670
diff
changeset
|
996 return &font->max_bounds; |
34112
adfe753a8c4e
(w32_bdf_per_char_metric): Dereference pointer correctly for single
Jason Rumney <jasonr@gnu.org>
parents:
34093
diff
changeset
|
997 else if (!font->bdf && *char2b < 128) |
32720
8530cd0a7455
(w32_per_char_metric): Remove HDC argument. Use
Andrew Innes <andrewi@gnu.org>
parents:
32670
diff
changeset
|
998 return &font->per_char[*char2b]; |
8530cd0a7455
(w32_per_char_metric): Remove HDC argument. Use
Andrew Innes <andrewi@gnu.org>
parents:
32670
diff
changeset
|
999 |
52392
ea78742dd7ca
(w32_per_char_metric): Allow cached metrics to be
Jason Rumney <jasonr@gnu.org>
parents:
52349
diff
changeset
|
1000 xassert (font_type != UNKNOWN_FONT); |
ea78742dd7ca
(w32_per_char_metric): Allow cached metrics to be
Jason Rumney <jasonr@gnu.org>
parents:
52349
diff
changeset
|
1001 |
32720
8530cd0a7455
(w32_per_char_metric): Remove HDC argument. Use
Andrew Innes <andrewi@gnu.org>
parents:
32670
diff
changeset
|
1002 pcm = &font->scratch; |
8530cd0a7455
(w32_per_char_metric): Remove HDC argument. Use
Andrew Innes <andrewi@gnu.org>
parents:
32670
diff
changeset
|
1003 |
8530cd0a7455
(w32_per_char_metric): Remove HDC argument. Use
Andrew Innes <andrewi@gnu.org>
parents:
32670
diff
changeset
|
1004 if (font_type == BDF_1D_FONT) |
8530cd0a7455
(w32_per_char_metric): Remove HDC argument. Use
Andrew Innes <andrewi@gnu.org>
parents:
32670
diff
changeset
|
1005 retval = w32_bdf_per_char_metric (font, char2b, 1, pcm); |
8530cd0a7455
(w32_per_char_metric): Remove HDC argument. Use
Andrew Innes <andrewi@gnu.org>
parents:
32670
diff
changeset
|
1006 else if (font_type == BDF_2D_FONT) |
8530cd0a7455
(w32_per_char_metric): Remove HDC argument. Use
Andrew Innes <andrewi@gnu.org>
parents:
32670
diff
changeset
|
1007 retval = w32_bdf_per_char_metric (font, char2b, 2, pcm); |
8530cd0a7455
(w32_per_char_metric): Remove HDC argument. Use
Andrew Innes <andrewi@gnu.org>
parents:
32670
diff
changeset
|
1008 else |
8530cd0a7455
(w32_per_char_metric): Remove HDC argument. Use
Andrew Innes <andrewi@gnu.org>
parents:
32670
diff
changeset
|
1009 retval = w32_native_per_char_metric (font, char2b, font_type, pcm); |
8530cd0a7455
(w32_per_char_metric): Remove HDC argument. Use
Andrew Innes <andrewi@gnu.org>
parents:
32670
diff
changeset
|
1010 |
8530cd0a7455
(w32_per_char_metric): Remove HDC argument. Use
Andrew Innes <andrewi@gnu.org>
parents:
32670
diff
changeset
|
1011 if (retval) |
8530cd0a7455
(w32_per_char_metric): Remove HDC argument. Use
Andrew Innes <andrewi@gnu.org>
parents:
32670
diff
changeset
|
1012 return pcm; |
8530cd0a7455
(w32_per_char_metric): Remove HDC argument. Use
Andrew Innes <andrewi@gnu.org>
parents:
32670
diff
changeset
|
1013 |
8530cd0a7455
(w32_per_char_metric): Remove HDC argument. Use
Andrew Innes <andrewi@gnu.org>
parents:
32670
diff
changeset
|
1014 return NULL; |
8530cd0a7455
(w32_per_char_metric): Remove HDC argument. Use
Andrew Innes <andrewi@gnu.org>
parents:
32670
diff
changeset
|
1015 } |
8530cd0a7455
(w32_per_char_metric): Remove HDC argument. Use
Andrew Innes <andrewi@gnu.org>
parents:
32670
diff
changeset
|
1016 |
8530cd0a7455
(w32_per_char_metric): Remove HDC argument. Use
Andrew Innes <andrewi@gnu.org>
parents:
32670
diff
changeset
|
1017 void |
8530cd0a7455
(w32_per_char_metric): Remove HDC argument. Use
Andrew Innes <andrewi@gnu.org>
parents:
32670
diff
changeset
|
1018 w32_cache_char_metrics (font) |
8530cd0a7455
(w32_per_char_metric): Remove HDC argument. Use
Andrew Innes <andrewi@gnu.org>
parents:
32670
diff
changeset
|
1019 XFontStruct *font; |
8530cd0a7455
(w32_per_char_metric): Remove HDC argument. Use
Andrew Innes <andrewi@gnu.org>
parents:
32670
diff
changeset
|
1020 { |
8530cd0a7455
(w32_per_char_metric): Remove HDC argument. Use
Andrew Innes <andrewi@gnu.org>
parents:
32670
diff
changeset
|
1021 wchar_t char2b = L'x'; |
8530cd0a7455
(w32_per_char_metric): Remove HDC argument. Use
Andrew Innes <andrewi@gnu.org>
parents:
32670
diff
changeset
|
1022 |
8530cd0a7455
(w32_per_char_metric): Remove HDC argument. Use
Andrew Innes <andrewi@gnu.org>
parents:
32670
diff
changeset
|
1023 /* Cache char metrics for the common cases. */ |
8530cd0a7455
(w32_per_char_metric): Remove HDC argument. Use
Andrew Innes <andrewi@gnu.org>
parents:
32670
diff
changeset
|
1024 if (font->bdf) |
8530cd0a7455
(w32_per_char_metric): Remove HDC argument. Use
Andrew Innes <andrewi@gnu.org>
parents:
32670
diff
changeset
|
1025 { |
8530cd0a7455
(w32_per_char_metric): Remove HDC argument. Use
Andrew Innes <andrewi@gnu.org>
parents:
32670
diff
changeset
|
1026 /* TODO: determine whether font is fixed-pitch. */ |
33037
365605845e33
(w32_bdf_per_char_metric): Negate descent.
Jason Rumney <jasonr@gnu.org>
parents:
32988
diff
changeset
|
1027 if (!w32_bdf_per_char_metric (font, &char2b, 1, &font->max_bounds)) |
365605845e33
(w32_bdf_per_char_metric): Negate descent.
Jason Rumney <jasonr@gnu.org>
parents:
32988
diff
changeset
|
1028 { |
365605845e33
(w32_bdf_per_char_metric): Negate descent.
Jason Rumney <jasonr@gnu.org>
parents:
32988
diff
changeset
|
1029 /* Use the font width and height as max bounds, as not all BDF |
365605845e33
(w32_bdf_per_char_metric): Negate descent.
Jason Rumney <jasonr@gnu.org>
parents:
32988
diff
changeset
|
1030 fonts contain the letter 'x'. */ |
365605845e33
(w32_bdf_per_char_metric): Negate descent.
Jason Rumney <jasonr@gnu.org>
parents:
32988
diff
changeset
|
1031 font->max_bounds.width = FONT_MAX_WIDTH (font); |
365605845e33
(w32_bdf_per_char_metric): Negate descent.
Jason Rumney <jasonr@gnu.org>
parents:
32988
diff
changeset
|
1032 font->max_bounds.lbearing = -font->bdf->llx; |
365605845e33
(w32_bdf_per_char_metric): Negate descent.
Jason Rumney <jasonr@gnu.org>
parents:
32988
diff
changeset
|
1033 font->max_bounds.rbearing = FONT_MAX_WIDTH (font) - font->bdf->urx; |
365605845e33
(w32_bdf_per_char_metric): Negate descent.
Jason Rumney <jasonr@gnu.org>
parents:
32988
diff
changeset
|
1034 font->max_bounds.ascent = FONT_BASE (font); |
365605845e33
(w32_bdf_per_char_metric): Negate descent.
Jason Rumney <jasonr@gnu.org>
parents:
32988
diff
changeset
|
1035 font->max_bounds.descent = FONT_DESCENT (font); |
365605845e33
(w32_bdf_per_char_metric): Negate descent.
Jason Rumney <jasonr@gnu.org>
parents:
32988
diff
changeset
|
1036 } |
32720
8530cd0a7455
(w32_per_char_metric): Remove HDC argument. Use
Andrew Innes <andrewi@gnu.org>
parents:
32670
diff
changeset
|
1037 } |
27402
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1038 else |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1039 { |
32727
3ecb42f00b85
(w32_cache_char_metrics): Double check that font is
Jason Rumney <jasonr@gnu.org>
parents:
32720
diff
changeset
|
1040 if (((font->tm.tmPitchAndFamily & TMPF_FIXED_PITCH) != 0) |
3ecb42f00b85
(w32_cache_char_metrics): Double check that font is
Jason Rumney <jasonr@gnu.org>
parents:
32720
diff
changeset
|
1041 /* Some fonts (eg DBCS fonts) are marked as fixed width even |
3ecb42f00b85
(w32_cache_char_metrics): Double check that font is
Jason Rumney <jasonr@gnu.org>
parents:
32720
diff
changeset
|
1042 though they contain characters of different widths. */ |
3ecb42f00b85
(w32_cache_char_metrics): Double check that font is
Jason Rumney <jasonr@gnu.org>
parents:
32720
diff
changeset
|
1043 || (font->tm.tmMaxCharWidth != font->tm.tmAveCharWidth)) |
31624
417b6743c5fa
(w32_per_char_metric): Handle non-TrueType fonts.
Andrew Innes <andrewi@gnu.org>
parents:
31116
diff
changeset
|
1044 { |
32720
8530cd0a7455
(w32_per_char_metric): Remove HDC argument. Use
Andrew Innes <andrewi@gnu.org>
parents:
32670
diff
changeset
|
1045 /* Font is not fixed pitch, so cache per_char info for the |
8530cd0a7455
(w32_per_char_metric): Remove HDC argument. Use
Andrew Innes <andrewi@gnu.org>
parents:
32670
diff
changeset
|
1046 ASCII characters. It would be much more work, and probably |
8530cd0a7455
(w32_per_char_metric): Remove HDC argument. Use
Andrew Innes <andrewi@gnu.org>
parents:
32670
diff
changeset
|
1047 not worth it, to cache other chars, since we may change |
8530cd0a7455
(w32_per_char_metric): Remove HDC argument. Use
Andrew Innes <andrewi@gnu.org>
parents:
32670
diff
changeset
|
1048 between using Unicode and ANSI text drawing functions at |
8530cd0a7455
(w32_per_char_metric): Remove HDC argument. Use
Andrew Innes <andrewi@gnu.org>
parents:
32670
diff
changeset
|
1049 run-time. */ |
8530cd0a7455
(w32_per_char_metric): Remove HDC argument. Use
Andrew Innes <andrewi@gnu.org>
parents:
32670
diff
changeset
|
1050 int i; |
8530cd0a7455
(w32_per_char_metric): Remove HDC argument. Use
Andrew Innes <andrewi@gnu.org>
parents:
32670
diff
changeset
|
1051 |
8530cd0a7455
(w32_per_char_metric): Remove HDC argument. Use
Andrew Innes <andrewi@gnu.org>
parents:
32670
diff
changeset
|
1052 font->per_char = xmalloc (128 * sizeof(XCharStruct)); |
8530cd0a7455
(w32_per_char_metric): Remove HDC argument. Use
Andrew Innes <andrewi@gnu.org>
parents:
32670
diff
changeset
|
1053 for (i = 0; i < 128; i++) |
8530cd0a7455
(w32_per_char_metric): Remove HDC argument. Use
Andrew Innes <andrewi@gnu.org>
parents:
32670
diff
changeset
|
1054 { |
8530cd0a7455
(w32_per_char_metric): Remove HDC argument. Use
Andrew Innes <andrewi@gnu.org>
parents:
32670
diff
changeset
|
1055 char2b = i; |
8530cd0a7455
(w32_per_char_metric): Remove HDC argument. Use
Andrew Innes <andrewi@gnu.org>
parents:
32670
diff
changeset
|
1056 w32_native_per_char_metric (font, &char2b, ANSI_FONT, |
8530cd0a7455
(w32_per_char_metric): Remove HDC argument. Use
Andrew Innes <andrewi@gnu.org>
parents:
32670
diff
changeset
|
1057 &font->per_char[i]); |
8530cd0a7455
(w32_per_char_metric): Remove HDC argument. Use
Andrew Innes <andrewi@gnu.org>
parents:
32670
diff
changeset
|
1058 } |
31624
417b6743c5fa
(w32_per_char_metric): Handle non-TrueType fonts.
Andrew Innes <andrewi@gnu.org>
parents:
31116
diff
changeset
|
1059 } |
27402
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1060 else |
32720
8530cd0a7455
(w32_per_char_metric): Remove HDC argument. Use
Andrew Innes <andrewi@gnu.org>
parents:
32670
diff
changeset
|
1061 w32_native_per_char_metric (font, &char2b, ANSI_FONT, |
8530cd0a7455
(w32_per_char_metric): Remove HDC argument. Use
Andrew Innes <andrewi@gnu.org>
parents:
32670
diff
changeset
|
1062 &font->max_bounds); |
8530cd0a7455
(w32_per_char_metric): Remove HDC argument. Use
Andrew Innes <andrewi@gnu.org>
parents:
32670
diff
changeset
|
1063 } |
27402
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1064 } |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1065 |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1066 |
29321
8e2be36bb1c6
Format and doc changes to bring closer to xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
28369
diff
changeset
|
1067 /* Determine if a font is double byte. */ |
8e2be36bb1c6
Format and doc changes to bring closer to xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
28369
diff
changeset
|
1068 int w32_font_is_double_byte (XFontStruct *font) |
8e2be36bb1c6
Format and doc changes to bring closer to xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
28369
diff
changeset
|
1069 { |
8e2be36bb1c6
Format and doc changes to bring closer to xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
28369
diff
changeset
|
1070 return font->double_byte_p; |
8e2be36bb1c6
Format and doc changes to bring closer to xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
28369
diff
changeset
|
1071 } |
8e2be36bb1c6
Format and doc changes to bring closer to xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
28369
diff
changeset
|
1072 |
8e2be36bb1c6
Format and doc changes to bring closer to xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
28369
diff
changeset
|
1073 |
48218
01e253345507
(w32_draw_fringe_bitmap): Remove unused local variable window.
Juanma Barranquero <lekktu@gmail.com>
parents:
48025
diff
changeset
|
1074 static BOOL |
35287
28e0cac22fbd
(x_produce_image_glyph, x_draw_image_foreground)
Jason Rumney <jasonr@gnu.org>
parents:
35000
diff
changeset
|
1075 w32_use_unicode_for_codepage (codepage) |
28e0cac22fbd
(x_produce_image_glyph, x_draw_image_foreground)
Jason Rumney <jasonr@gnu.org>
parents:
35000
diff
changeset
|
1076 int codepage; |
28e0cac22fbd
(x_produce_image_glyph, x_draw_image_foreground)
Jason Rumney <jasonr@gnu.org>
parents:
35000
diff
changeset
|
1077 { |
28e0cac22fbd
(x_produce_image_glyph, x_draw_image_foreground)
Jason Rumney <jasonr@gnu.org>
parents:
35000
diff
changeset
|
1078 /* If the current codepage is supported, use Unicode for output. */ |
28e0cac22fbd
(x_produce_image_glyph, x_draw_image_foreground)
Jason Rumney <jasonr@gnu.org>
parents:
35000
diff
changeset
|
1079 return (w32_enable_unicode_output |
28e0cac22fbd
(x_produce_image_glyph, x_draw_image_foreground)
Jason Rumney <jasonr@gnu.org>
parents:
35000
diff
changeset
|
1080 && codepage != CP_8BIT |
28e0cac22fbd
(x_produce_image_glyph, x_draw_image_foreground)
Jason Rumney <jasonr@gnu.org>
parents:
35000
diff
changeset
|
1081 && (codepage == CP_UNICODE || IsValidCodePage (codepage))); |
28e0cac22fbd
(x_produce_image_glyph, x_draw_image_foreground)
Jason Rumney <jasonr@gnu.org>
parents:
35000
diff
changeset
|
1082 } |
28e0cac22fbd
(x_produce_image_glyph, x_draw_image_foreground)
Jason Rumney <jasonr@gnu.org>
parents:
35000
diff
changeset
|
1083 |
27402
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1084 /* Encode CHAR2B using encoding information from FONT_INFO. CHAR2B is |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1085 the two-byte form of C. Encoding is returned in *CHAR2B. */ |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1086 |
50154
10038ae9db85
Remove consolidated defines and code.
Kim F. Storm <storm@cua.dk>
parents:
50096
diff
changeset
|
1087 static int /* enum w32_char_font_type */ |
29321
8e2be36bb1c6
Format and doc changes to bring closer to xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
28369
diff
changeset
|
1088 w32_encode_char (c, char2b, font_info, two_byte_p) |
27402
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1089 int c; |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1090 wchar_t *char2b; |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1091 struct font_info *font_info; |
29321
8e2be36bb1c6
Format and doc changes to bring closer to xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
28369
diff
changeset
|
1092 int * two_byte_p; |
27402
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1093 { |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1094 int charset = CHAR_CHARSET (c); |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1095 int codepage; |
29321
8e2be36bb1c6
Format and doc changes to bring closer to xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
28369
diff
changeset
|
1096 int unicode_p = 0; |
50163
6f30f0db5f30
(w32_encode_char): Prevent double-byte chars from crashing Emacs.
Jason Rumney <jasonr@gnu.org>
parents:
50154
diff
changeset
|
1097 int internal_two_byte_p = 0; |
29321
8e2be36bb1c6
Format and doc changes to bring closer to xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
28369
diff
changeset
|
1098 |
27402
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1099 XFontStruct *font = font_info->font; |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1100 |
50163
6f30f0db5f30
(w32_encode_char): Prevent double-byte chars from crashing Emacs.
Jason Rumney <jasonr@gnu.org>
parents:
50154
diff
changeset
|
1101 internal_two_byte_p = w32_font_is_double_byte (font); |
29321
8e2be36bb1c6
Format and doc changes to bring closer to xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
28369
diff
changeset
|
1102 |
27402
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1103 /* FONT_INFO may define a scheme by which to encode byte1 and byte2. |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1104 This may be either a program in a special encoder language or a |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1105 fixed encoding. */ |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1106 if (font_info->font_encoder) |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1107 { |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1108 /* It's a program. */ |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1109 struct ccl_program *ccl = font_info->font_encoder; |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1110 |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1111 if (CHARSET_DIMENSION (charset) == 1) |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1112 { |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1113 ccl->reg[0] = charset; |
50154
10038ae9db85
Remove consolidated defines and code.
Kim F. Storm <storm@cua.dk>
parents:
50096
diff
changeset
|
1114 ccl->reg[1] = XCHAR2B_BYTE2 (char2b); |
49371
c73ce11bb264
2003-01-21 KOBAYASHI Yasuhiro <kobayays@otsukakj.co.jp>
Jason Rumney <jasonr@gnu.org>
parents:
48888
diff
changeset
|
1115 ccl->reg[2] = -1; |
27402
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1116 } |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1117 else |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1118 { |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1119 ccl->reg[0] = charset; |
50154
10038ae9db85
Remove consolidated defines and code.
Kim F. Storm <storm@cua.dk>
parents:
50096
diff
changeset
|
1120 ccl->reg[1] = XCHAR2B_BYTE1 (char2b); |
10038ae9db85
Remove consolidated defines and code.
Kim F. Storm <storm@cua.dk>
parents:
50096
diff
changeset
|
1121 ccl->reg[2] = XCHAR2B_BYTE2 (char2b); |
27402
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1122 } |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1123 |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1124 ccl_driver (ccl, NULL, NULL, 0, 0, NULL); |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1125 |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1126 /* We assume that MSBs are appropriately set/reset by CCL |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1127 program. */ |
50163
6f30f0db5f30
(w32_encode_char): Prevent double-byte chars from crashing Emacs.
Jason Rumney <jasonr@gnu.org>
parents:
50154
diff
changeset
|
1128 if (!internal_two_byte_p) /* 1-byte font */ |
50154
10038ae9db85
Remove consolidated defines and code.
Kim F. Storm <storm@cua.dk>
parents:
50096
diff
changeset
|
1129 STORE_XCHAR2B (char2b, 0, ccl->reg[1]); |
27402
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1130 else |
50154
10038ae9db85
Remove consolidated defines and code.
Kim F. Storm <storm@cua.dk>
parents:
50096
diff
changeset
|
1131 STORE_XCHAR2B (char2b, ccl->reg[1], ccl->reg[2]); |
27402
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1132 } |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1133 else if (font_info->encoding[charset]) |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1134 { |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1135 /* Fixed encoding scheme. See fontset.h for the meaning of the |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1136 encoding numbers. */ |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1137 int enc = font_info->encoding[charset]; |
48218
01e253345507
(w32_draw_fringe_bitmap): Remove unused local variable window.
Juanma Barranquero <lekktu@gmail.com>
parents:
48025
diff
changeset
|
1138 |
27402
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1139 if ((enc == 1 || enc == 2) |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1140 && CHARSET_DIMENSION (charset) == 2) |
50154
10038ae9db85
Remove consolidated defines and code.
Kim F. Storm <storm@cua.dk>
parents:
50096
diff
changeset
|
1141 STORE_XCHAR2B (char2b, XCHAR2B_BYTE1 (char2b) | 0x80, XCHAR2B_BYTE2 (char2b)); |
48218
01e253345507
(w32_draw_fringe_bitmap): Remove unused local variable window.
Juanma Barranquero <lekktu@gmail.com>
parents:
48025
diff
changeset
|
1142 |
27402
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1143 if (enc == 1 || enc == 3 |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1144 || (enc == 4 && CHARSET_DIMENSION (charset) == 1)) |
50154
10038ae9db85
Remove consolidated defines and code.
Kim F. Storm <storm@cua.dk>
parents:
50096
diff
changeset
|
1145 STORE_XCHAR2B (char2b, XCHAR2B_BYTE1 (char2b), XCHAR2B_BYTE2 (char2b) | 0x80); |
27402
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1146 else if (enc == 4) |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1147 { |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1148 int sjis1, sjis2; |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1149 |
50154
10038ae9db85
Remove consolidated defines and code.
Kim F. Storm <storm@cua.dk>
parents:
50096
diff
changeset
|
1150 ENCODE_SJIS (XCHAR2B_BYTE1 (char2b), XCHAR2B_BYTE2 (char2b), |
27402
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1151 sjis1, sjis2); |
50154
10038ae9db85
Remove consolidated defines and code.
Kim F. Storm <storm@cua.dk>
parents:
50096
diff
changeset
|
1152 STORE_XCHAR2B (char2b, sjis1, sjis2); |
27402
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1153 } |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1154 } |
40010
1a8e549e2f40
(w32_encode_char): Get cached codepage from font_info,
Andrew Innes <andrewi@gnu.org>
parents:
40005
diff
changeset
|
1155 codepage = font_info->codepage; |
27402
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1156 |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1157 /* If charset is not ASCII or Latin-1, may need to move it into |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1158 Unicode space. */ |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1159 if ( font && !font->bdf && w32_use_unicode_for_codepage (codepage) |
36002
205727d5d63c
(w32_encode_char): Treat eight bit graphic and control
Jason Rumney <jasonr@gnu.org>
parents:
35984
diff
changeset
|
1160 && charset != CHARSET_ASCII && charset != charset_latin_iso8859_1 |
205727d5d63c
(w32_encode_char): Treat eight bit graphic and control
Jason Rumney <jasonr@gnu.org>
parents:
35984
diff
changeset
|
1161 && charset != CHARSET_8_BIT_CONTROL && charset != CHARSET_8_BIT_GRAPHIC) |
27402
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1162 { |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1163 char temp[3]; |
50154
10038ae9db85
Remove consolidated defines and code.
Kim F. Storm <storm@cua.dk>
parents:
50096
diff
changeset
|
1164 temp[0] = XCHAR2B_BYTE1 (char2b); |
10038ae9db85
Remove consolidated defines and code.
Kim F. Storm <storm@cua.dk>
parents:
50096
diff
changeset
|
1165 temp[1] = XCHAR2B_BYTE2 (char2b); |
27402
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1166 temp[2] = '\0'; |
33386
e0f1d0f3a59d
(w32_encode_char): Handle CP_UNICODE specially.
Jason Rumney <jasonr@gnu.org>
parents:
33289
diff
changeset
|
1167 if (codepage != CP_UNICODE) |
e0f1d0f3a59d
(w32_encode_char): Handle CP_UNICODE specially.
Jason Rumney <jasonr@gnu.org>
parents:
33289
diff
changeset
|
1168 { |
e0f1d0f3a59d
(w32_encode_char): Handle CP_UNICODE specially.
Jason Rumney <jasonr@gnu.org>
parents:
33289
diff
changeset
|
1169 if (temp[0]) |
e0f1d0f3a59d
(w32_encode_char): Handle CP_UNICODE specially.
Jason Rumney <jasonr@gnu.org>
parents:
33289
diff
changeset
|
1170 MultiByteToWideChar (codepage, 0, temp, 2, char2b, 1); |
e0f1d0f3a59d
(w32_encode_char): Handle CP_UNICODE specially.
Jason Rumney <jasonr@gnu.org>
parents:
33289
diff
changeset
|
1171 else |
e0f1d0f3a59d
(w32_encode_char): Handle CP_UNICODE specially.
Jason Rumney <jasonr@gnu.org>
parents:
33289
diff
changeset
|
1172 MultiByteToWideChar (codepage, 0, temp+1, 1, char2b, 1); |
e0f1d0f3a59d
(w32_encode_char): Handle CP_UNICODE specially.
Jason Rumney <jasonr@gnu.org>
parents:
33289
diff
changeset
|
1173 } |
29321
8e2be36bb1c6
Format and doc changes to bring closer to xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
28369
diff
changeset
|
1174 unicode_p = 1; |
50163
6f30f0db5f30
(w32_encode_char): Prevent double-byte chars from crashing Emacs.
Jason Rumney <jasonr@gnu.org>
parents:
50154
diff
changeset
|
1175 internal_two_byte_p = 1; |
6f30f0db5f30
(w32_encode_char): Prevent double-byte chars from crashing Emacs.
Jason Rumney <jasonr@gnu.org>
parents:
50154
diff
changeset
|
1176 } |
6f30f0db5f30
(w32_encode_char): Prevent double-byte chars from crashing Emacs.
Jason Rumney <jasonr@gnu.org>
parents:
50154
diff
changeset
|
1177 |
6f30f0db5f30
(w32_encode_char): Prevent double-byte chars from crashing Emacs.
Jason Rumney <jasonr@gnu.org>
parents:
50154
diff
changeset
|
1178 if (two_byte_p) |
6f30f0db5f30
(w32_encode_char): Prevent double-byte chars from crashing Emacs.
Jason Rumney <jasonr@gnu.org>
parents:
50154
diff
changeset
|
1179 *two_byte_p = internal_two_byte_p; |
6f30f0db5f30
(w32_encode_char): Prevent double-byte chars from crashing Emacs.
Jason Rumney <jasonr@gnu.org>
parents:
50154
diff
changeset
|
1180 |
29321
8e2be36bb1c6
Format and doc changes to bring closer to xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
28369
diff
changeset
|
1181 if (!font) |
8e2be36bb1c6
Format and doc changes to bring closer to xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
28369
diff
changeset
|
1182 return UNKNOWN_FONT; |
32022
1f26caa05cd7
(w32_char_font_type, w32_encode_char, x_produce_glyphs): Distinguish
Jason Rumney <jasonr@gnu.org>
parents:
31624
diff
changeset
|
1183 else if (font->bdf && CHARSET_DIMENSION (charset) == 1) |
1f26caa05cd7
(w32_char_font_type, w32_encode_char, x_produce_glyphs): Distinguish
Jason Rumney <jasonr@gnu.org>
parents:
31624
diff
changeset
|
1184 return BDF_1D_FONT; |
29321
8e2be36bb1c6
Format and doc changes to bring closer to xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
28369
diff
changeset
|
1185 else if (font->bdf) |
32022
1f26caa05cd7
(w32_char_font_type, w32_encode_char, x_produce_glyphs): Distinguish
Jason Rumney <jasonr@gnu.org>
parents:
31624
diff
changeset
|
1186 return BDF_2D_FONT; |
29321
8e2be36bb1c6
Format and doc changes to bring closer to xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
28369
diff
changeset
|
1187 else if (unicode_p) |
8e2be36bb1c6
Format and doc changes to bring closer to xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
28369
diff
changeset
|
1188 return UNICODE_FONT; |
8e2be36bb1c6
Format and doc changes to bring closer to xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
28369
diff
changeset
|
1189 else |
8e2be36bb1c6
Format and doc changes to bring closer to xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
28369
diff
changeset
|
1190 return ANSI_FONT; |
27402
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1191 } |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1192 |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1193 |
13434 | 1194 |
27402
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1195 /*********************************************************************** |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1196 Glyph display |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1197 ***********************************************************************/ |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1198 |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1199 |
29321
8e2be36bb1c6
Format and doc changes to bring closer to xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
28369
diff
changeset
|
1200 /* Encapsulate the different ways of displaying text under W32. */ |
27402
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1201 |
43470
842910bb2fc0
(w32_text_out): Renamed from W32_TEXTOUT.
Jason Rumney <jasonr@gnu.org>
parents:
43408
diff
changeset
|
1202 static void |
842910bb2fc0
(w32_text_out): Renamed from W32_TEXTOUT.
Jason Rumney <jasonr@gnu.org>
parents:
43408
diff
changeset
|
1203 w32_text_out (s, x, y,chars,nchars) |
27402
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1204 struct glyph_string * s; |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1205 int x, y; |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1206 wchar_t * chars; |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1207 int nchars; |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1208 { |
53469
112be2022ce0
(w32_text_out): Use s->font, for consistency with callers.
Jason Rumney <jasonr@gnu.org>
parents:
53327
diff
changeset
|
1209 int charset_dim = w32_font_is_double_byte (s->font) ? 2 : 1; |
112be2022ce0
(w32_text_out): Use s->font, for consistency with callers.
Jason Rumney <jasonr@gnu.org>
parents:
53327
diff
changeset
|
1210 if (s->font->bdf) |
112be2022ce0
(w32_text_out): Use s->font, for consistency with callers.
Jason Rumney <jasonr@gnu.org>
parents:
53327
diff
changeset
|
1211 w32_BDF_TextOut (s->font->bdf, s->hdc, |
33037
365605845e33
(w32_bdf_per_char_metric): Negate descent.
Jason Rumney <jasonr@gnu.org>
parents:
32988
diff
changeset
|
1212 x, y, (char *) chars, charset_dim, |
365605845e33
(w32_bdf_per_char_metric): Negate descent.
Jason Rumney <jasonr@gnu.org>
parents:
32988
diff
changeset
|
1213 nchars * charset_dim, 0); |
50154
10038ae9db85
Remove consolidated defines and code.
Kim F. Storm <storm@cua.dk>
parents:
50096
diff
changeset
|
1214 else if (s->first_glyph->font_type == UNICODE_FONT) |
27402
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1215 ExtTextOutW (s->hdc, x, y, 0, NULL, chars, nchars, NULL); |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1216 else |
43470
842910bb2fc0
(w32_text_out): Renamed from W32_TEXTOUT.
Jason Rumney <jasonr@gnu.org>
parents:
43408
diff
changeset
|
1217 ExtTextOutA (s->hdc, x, y, 0, NULL, (char *) chars, |
842910bb2fc0
(w32_text_out): Renamed from W32_TEXTOUT.
Jason Rumney <jasonr@gnu.org>
parents:
43408
diff
changeset
|
1218 nchars * charset_dim, NULL); |
27402
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1219 } |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1220 |
50154
10038ae9db85
Remove consolidated defines and code.
Kim F. Storm <storm@cua.dk>
parents:
50096
diff
changeset
|
1221 |
27402
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1222 static void x_set_glyph_string_clipping P_ ((struct glyph_string *)); |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1223 static void x_set_glyph_string_gc P_ ((struct glyph_string *)); |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1224 static void x_draw_glyph_string_background P_ ((struct glyph_string *, |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1225 int)); |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1226 static void x_draw_glyph_string_foreground P_ ((struct glyph_string *)); |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1227 static void x_draw_composite_glyph_string_foreground P_ ((struct glyph_string *)); |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1228 static void x_draw_glyph_string_box P_ ((struct glyph_string *)); |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1229 static void x_draw_glyph_string P_ ((struct glyph_string *)); |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1230 static void x_set_cursor_gc P_ ((struct glyph_string *)); |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1231 static void x_set_mode_line_face_gc P_ ((struct glyph_string *)); |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1232 static void x_set_mouse_face_gc P_ ((struct glyph_string *)); |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1233 static int w32_alloc_lighter_color (struct frame *, COLORREF *, double, int); |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1234 static void w32_setup_relief_color P_ ((struct frame *, struct relief *, |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1235 double, int, COLORREF)); |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1236 static void x_setup_relief_colors P_ ((struct glyph_string *)); |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1237 static void x_draw_image_glyph_string P_ ((struct glyph_string *)); |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1238 static void x_draw_image_relief P_ ((struct glyph_string *)); |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1239 static void x_draw_image_foreground P_ ((struct glyph_string *)); |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1240 static void w32_draw_image_foreground_1 P_ ((struct glyph_string *, HBITMAP)); |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1241 static void x_clear_glyph_string_rect P_ ((struct glyph_string *, int, |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1242 int, int, int)); |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1243 static void w32_draw_relief_rect P_ ((struct frame *, int, int, int, int, |
55026
08e4e7c06ffc
(w32_draw_relief_rect): Add top_p and bot_p args.
Kim F. Storm <storm@cua.dk>
parents:
54731
diff
changeset
|
1244 int, int, int, int, int, int, |
08e4e7c06ffc
(w32_draw_relief_rect): Add top_p and bot_p args.
Kim F. Storm <storm@cua.dk>
parents:
54731
diff
changeset
|
1245 RECT *)); |
27402
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1246 static void w32_draw_box_rect P_ ((struct glyph_string *, int, int, int, int, |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1247 int, int, int, RECT *)); |
35384
e50a7f9ce65e
(x_produce_stretch_glyph): Only use Qspace when GLYPH_DEBUG is defined.
Jason Rumney <jasonr@gnu.org>
parents:
35287
diff
changeset
|
1248 |
e50a7f9ce65e
(x_produce_stretch_glyph): Only use Qspace when GLYPH_DEBUG is defined.
Jason Rumney <jasonr@gnu.org>
parents:
35287
diff
changeset
|
1249 #if GLYPH_DEBUG |
e50a7f9ce65e
(x_produce_stretch_glyph): Only use Qspace when GLYPH_DEBUG is defined.
Jason Rumney <jasonr@gnu.org>
parents:
35287
diff
changeset
|
1250 static void x_check_font P_ ((struct frame *, XFontStruct *)); |
e50a7f9ce65e
(x_produce_stretch_glyph): Only use Qspace when GLYPH_DEBUG is defined.
Jason Rumney <jasonr@gnu.org>
parents:
35287
diff
changeset
|
1251 #endif |
27402
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1252 |
48218
01e253345507
(w32_draw_fringe_bitmap): Remove unused local variable window.
Juanma Barranquero <lekktu@gmail.com>
parents:
48025
diff
changeset
|
1253 |
27402
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1254 /* Set S->gc to a suitable GC for drawing glyph string S in cursor |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1255 face. */ |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1256 |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1257 static void |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1258 x_set_cursor_gc (s) |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1259 struct glyph_string *s; |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1260 { |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1261 if (s->font == FRAME_FONT (s->f) |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1262 && s->face->background == FRAME_BACKGROUND_PIXEL (s->f) |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1263 && s->face->foreground == FRAME_FOREGROUND_PIXEL (s->f) |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1264 && !s->cmp) |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1265 s->gc = s->f->output_data.w32->cursor_gc; |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1266 else |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1267 { |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1268 /* Cursor on non-default face: must merge. */ |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1269 XGCValues xgcv; |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1270 unsigned long mask; |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1271 |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1272 xgcv.background = s->f->output_data.w32->cursor_pixel; |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1273 xgcv.foreground = s->face->background; |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1274 |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1275 /* If the glyph would be invisible, try a different foreground. */ |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1276 if (xgcv.foreground == xgcv.background) |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1277 xgcv.foreground = s->face->foreground; |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1278 if (xgcv.foreground == xgcv.background) |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1279 xgcv.foreground = s->f->output_data.w32->cursor_foreground_pixel; |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1280 if (xgcv.foreground == xgcv.background) |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1281 xgcv.foreground = s->face->foreground; |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1282 |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1283 /* Make sure the cursor is distinct from text in this face. */ |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1284 if (xgcv.background == s->face->background |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1285 && xgcv.foreground == s->face->foreground) |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1286 { |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1287 xgcv.background = s->face->foreground; |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1288 xgcv.foreground = s->face->background; |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1289 } |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1290 |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1291 IF_DEBUG (x_check_font (s->f, s->font)); |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1292 xgcv.font = s->font; |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1293 mask = GCForeground | GCBackground | GCFont; |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1294 |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1295 if (FRAME_W32_DISPLAY_INFO (s->f)->scratch_cursor_gc) |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1296 XChangeGC (NULL, FRAME_W32_DISPLAY_INFO (s->f)->scratch_cursor_gc, |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1297 mask, &xgcv); |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1298 else |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1299 FRAME_W32_DISPLAY_INFO (s->f)->scratch_cursor_gc |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1300 = XCreateGC (NULL, s->window, mask, &xgcv); |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1301 |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1302 s->gc = FRAME_W32_DISPLAY_INFO (s->f)->scratch_cursor_gc; |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1303 } |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1304 } |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1305 |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1306 |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1307 /* Set up S->gc of glyph string S for drawing text in mouse face. */ |
48218
01e253345507
(w32_draw_fringe_bitmap): Remove unused local variable window.
Juanma Barranquero <lekktu@gmail.com>
parents:
48025
diff
changeset
|
1308 |
27402
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1309 static void |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1310 x_set_mouse_face_gc (s) |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1311 struct glyph_string *s; |
48218
01e253345507
(w32_draw_fringe_bitmap): Remove unused local variable window.
Juanma Barranquero <lekktu@gmail.com>
parents:
48025
diff
changeset
|
1312 { |
27402
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1313 int face_id; |
28369
3fb90cd81d3b
(w32_read_socket): Handle WM_MENUSELECT message.
Jason Rumney <jasonr@gnu.org>
parents:
27937
diff
changeset
|
1314 struct face *face; |
27402
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1315 |
35384
e50a7f9ce65e
(x_produce_stretch_glyph): Only use Qspace when GLYPH_DEBUG is defined.
Jason Rumney <jasonr@gnu.org>
parents:
35287
diff
changeset
|
1316 /* What face has to be used last for the mouse face? */ |
27402
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1317 face_id = FRAME_W32_DISPLAY_INFO (s->f)->mouse_face_face_id; |
28369
3fb90cd81d3b
(w32_read_socket): Handle WM_MENUSELECT message.
Jason Rumney <jasonr@gnu.org>
parents:
27937
diff
changeset
|
1318 face = FACE_FROM_ID (s->f, face_id); |
35384
e50a7f9ce65e
(x_produce_stretch_glyph): Only use Qspace when GLYPH_DEBUG is defined.
Jason Rumney <jasonr@gnu.org>
parents:
35287
diff
changeset
|
1319 if (face == NULL) |
e50a7f9ce65e
(x_produce_stretch_glyph): Only use Qspace when GLYPH_DEBUG is defined.
Jason Rumney <jasonr@gnu.org>
parents:
35287
diff
changeset
|
1320 face = FACE_FROM_ID (s->f, MOUSE_FACE_ID); |
48218
01e253345507
(w32_draw_fringe_bitmap): Remove unused local variable window.
Juanma Barranquero <lekktu@gmail.com>
parents:
48025
diff
changeset
|
1321 |
35384
e50a7f9ce65e
(x_produce_stretch_glyph): Only use Qspace when GLYPH_DEBUG is defined.
Jason Rumney <jasonr@gnu.org>
parents:
35287
diff
changeset
|
1322 if (s->first_glyph->type == CHAR_GLYPH) |
e50a7f9ce65e
(x_produce_stretch_glyph): Only use Qspace when GLYPH_DEBUG is defined.
Jason Rumney <jasonr@gnu.org>
parents:
35287
diff
changeset
|
1323 face_id = FACE_FOR_CHAR (s->f, face, s->first_glyph->u.ch); |
e50a7f9ce65e
(x_produce_stretch_glyph): Only use Qspace when GLYPH_DEBUG is defined.
Jason Rumney <jasonr@gnu.org>
parents:
35287
diff
changeset
|
1324 else |
e50a7f9ce65e
(x_produce_stretch_glyph): Only use Qspace when GLYPH_DEBUG is defined.
Jason Rumney <jasonr@gnu.org>
parents:
35287
diff
changeset
|
1325 face_id = FACE_FOR_CHAR (s->f, face, 0); |
27402
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1326 s->face = FACE_FROM_ID (s->f, face_id); |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1327 PREPARE_FACE_FOR_DISPLAY (s->f, s->face); |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1328 |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1329 /* If font in this face is same as S->font, use it. */ |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1330 if (s->font == s->face->font) |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1331 s->gc = s->face->gc; |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1332 else |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1333 { |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1334 /* Otherwise construct scratch_cursor_gc with values from FACE |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1335 but font FONT. */ |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1336 XGCValues xgcv; |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1337 unsigned long mask; |
48218
01e253345507
(w32_draw_fringe_bitmap): Remove unused local variable window.
Juanma Barranquero <lekktu@gmail.com>
parents:
48025
diff
changeset
|
1338 |
27402
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1339 xgcv.background = s->face->background; |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1340 xgcv.foreground = s->face->foreground; |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1341 IF_DEBUG (x_check_font (s->f, s->font)); |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1342 xgcv.font = s->font; |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1343 mask = GCForeground | GCBackground | GCFont; |
48218
01e253345507
(w32_draw_fringe_bitmap): Remove unused local variable window.
Juanma Barranquero <lekktu@gmail.com>
parents:
48025
diff
changeset
|
1344 |
27402
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1345 if (FRAME_W32_DISPLAY_INFO (s->f)->scratch_cursor_gc) |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1346 XChangeGC (NULL, FRAME_W32_DISPLAY_INFO (s->f)->scratch_cursor_gc, |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1347 mask, &xgcv); |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1348 else |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1349 FRAME_W32_DISPLAY_INFO (s->f)->scratch_cursor_gc |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1350 = XCreateGC (NULL, s->window, mask, &xgcv); |
48218
01e253345507
(w32_draw_fringe_bitmap): Remove unused local variable window.
Juanma Barranquero <lekktu@gmail.com>
parents:
48025
diff
changeset
|
1351 |
27402
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1352 s->gc = FRAME_W32_DISPLAY_INFO (s->f)->scratch_cursor_gc; |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1353 } |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1354 |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1355 xassert (s->gc != 0); |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1356 } |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1357 |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1358 |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1359 /* Set S->gc of glyph string S to a GC suitable for drawing a mode line. |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1360 Faces to use in the mode line have already been computed when the |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1361 matrix was built, so there isn't much to do, here. */ |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1362 |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1363 static INLINE void |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1364 x_set_mode_line_face_gc (s) |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1365 struct glyph_string *s; |
48218
01e253345507
(w32_draw_fringe_bitmap): Remove unused local variable window.
Juanma Barranquero <lekktu@gmail.com>
parents:
48025
diff
changeset
|
1366 { |
27402
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1367 s->gc = s->face->gc; |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1368 } |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1369 |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1370 |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1371 /* Set S->gc of glyph string S for drawing that glyph string. Set |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1372 S->stippled_p to a non-zero value if the face of S has a stipple |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1373 pattern. */ |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1374 |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1375 static INLINE void |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1376 x_set_glyph_string_gc (s) |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1377 struct glyph_string *s; |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1378 { |
30240
2c2a7ebd2c15
(help_echo_object, help_echo_pos): New variables.
Jason Rumney <jasonr@gnu.org>
parents:
30199
diff
changeset
|
1379 PREPARE_FACE_FOR_DISPLAY (s->f, s->face); |
48218
01e253345507
(w32_draw_fringe_bitmap): Remove unused local variable window.
Juanma Barranquero <lekktu@gmail.com>
parents:
48025
diff
changeset
|
1380 |
27402
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1381 if (s->hl == DRAW_NORMAL_TEXT) |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1382 { |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1383 s->gc = s->face->gc; |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1384 s->stippled_p = s->face->stipple != 0; |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1385 } |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1386 else if (s->hl == DRAW_INVERSE_VIDEO) |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1387 { |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1388 x_set_mode_line_face_gc (s); |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1389 s->stippled_p = s->face->stipple != 0; |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1390 } |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1391 else if (s->hl == DRAW_CURSOR) |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1392 { |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1393 x_set_cursor_gc (s); |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1394 s->stippled_p = 0; |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1395 } |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1396 else if (s->hl == DRAW_MOUSE_FACE) |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1397 { |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1398 x_set_mouse_face_gc (s); |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1399 s->stippled_p = s->face->stipple != 0; |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1400 } |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1401 else if (s->hl == DRAW_IMAGE_RAISED |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1402 || s->hl == DRAW_IMAGE_SUNKEN) |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1403 { |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1404 s->gc = s->face->gc; |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1405 s->stippled_p = s->face->stipple != 0; |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1406 } |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1407 else |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1408 { |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1409 s->gc = s->face->gc; |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1410 s->stippled_p = s->face->stipple != 0; |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1411 } |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1412 |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1413 /* GC must have been set. */ |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1414 xassert (s->gc != 0); |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1415 } |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1416 |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1417 |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1418 /* Set clipping for output of glyph string S. S may be part of a mode |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1419 line or menu if we don't have X toolkit support. */ |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1420 |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1421 static INLINE void |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1422 x_set_glyph_string_clipping (s) |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1423 struct glyph_string *s; |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1424 { |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1425 RECT r; |
50231
c8ea5e4b2129
* w32term.c: Remove consolidated defines and code.
Kim F. Storm <storm@cua.dk>
parents:
50163
diff
changeset
|
1426 get_glyph_string_clip_rect (s, &r); |
27402
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1427 w32_set_clip_rectangle (s->hdc, &r); |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1428 } |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1429 |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1430 |
50154
10038ae9db85
Remove consolidated defines and code.
Kim F. Storm <storm@cua.dk>
parents:
50096
diff
changeset
|
1431 /* RIF: |
10038ae9db85
Remove consolidated defines and code.
Kim F. Storm <storm@cua.dk>
parents:
50096
diff
changeset
|
1432 Compute left and right overhang of glyph string S. If S is a glyph |
27402
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1433 string for a composition, assume overhangs don't exist. */ |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1434 |
50154
10038ae9db85
Remove consolidated defines and code.
Kim F. Storm <storm@cua.dk>
parents:
50096
diff
changeset
|
1435 static void |
10038ae9db85
Remove consolidated defines and code.
Kim F. Storm <storm@cua.dk>
parents:
50096
diff
changeset
|
1436 w32_compute_glyph_string_overhangs (s) |
27402
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1437 struct glyph_string *s; |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1438 { |
33097
84590a646acc
(x_produce_glyphs): Handle composite characters.
Jason Rumney <jasonr@gnu.org>
parents:
33037
diff
changeset
|
1439 /* TODO: Windows does not appear to have a method for |
30988
a69a2ac4345b
(help_echo_window): New variable.
Jason Rumney <jasonr@gnu.org>
parents:
30730
diff
changeset
|
1440 getting this info without getting the ABC widths for each |
a69a2ac4345b
(help_echo_window): New variable.
Jason Rumney <jasonr@gnu.org>
parents:
30730
diff
changeset
|
1441 individual character and working it out manually. */ |
27402
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1442 } |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1443 |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1444 |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1445 static void |
50154
10038ae9db85
Remove consolidated defines and code.
Kim F. Storm <storm@cua.dk>
parents:
50096
diff
changeset
|
1446 w32_get_glyph_overhangs (glyph, f, left, right) |
27402
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1447 struct glyph *glyph; |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1448 struct frame *f; |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1449 int *left, *right; |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1450 { |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1451 HDC hdc = get_frame_dc (f); |
29321
8e2be36bb1c6
Format and doc changes to bring closer to xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
28369
diff
changeset
|
1452 /* Convert to unicode! */ |
50154
10038ae9db85
Remove consolidated defines and code.
Kim F. Storm <storm@cua.dk>
parents:
50096
diff
changeset
|
1453 x_get_glyph_overhangs (glyph, f, left, right); |
27402
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1454 release_frame_dc (f, hdc); |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1455 } |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1456 |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1457 |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1458 /* Fill rectangle X, Y, W, H with background color of glyph string S. */ |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1459 |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1460 static INLINE void |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1461 x_clear_glyph_string_rect (s, x, y, w, h) |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1462 struct glyph_string *s; |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1463 int x, y, w, h; |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1464 { |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1465 int real_x = x; |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1466 int real_y = y; |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1467 int real_w = w; |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1468 int real_h = h; |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1469 #if 0 |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1470 /* Take clipping into account. */ |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1471 if (s->gc->clip_mask == Rect) |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1472 { |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1473 real_x = max (real_x, s->gc->clip_rectangle.left); |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1474 real_y = max (real_y, s->gc->clip_rectangle.top); |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1475 real_w = min (real_w, s->gc->clip_rectangle.right |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1476 - s->gc->clip_rectangle.left); |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1477 real_h = min (real_h, s->gc->clip_rectangle.bottom |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1478 - s->gc->clip_rectangle.top); |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1479 } |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1480 #endif |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1481 w32_fill_area (s->f, s->hdc, s->gc->background, real_x, real_y, |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1482 real_w, real_h); |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1483 } |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1484 |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1485 |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1486 /* Draw the background of glyph_string S. If S->background_filled_p |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1487 is non-zero don't draw it. FORCE_P non-zero means draw the |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1488 background even if it wouldn't be drawn normally. This is used |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1489 when a string preceding S draws into the background of S, or S |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1490 contains the first component of a composition. */ |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1491 |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1492 static void |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1493 x_draw_glyph_string_background (s, force_p) |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1494 struct glyph_string *s; |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1495 int force_p; |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1496 { |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1497 /* Nothing to do if background has already been drawn or if it |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1498 shouldn't be drawn in the first place. */ |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1499 if (!s->background_filled_p) |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1500 { |
36045
8be6a1c85409
(x_produce_image_glyph): Pay attention to the case that
Andrew Innes <andrewi@gnu.org>
parents:
36002
diff
changeset
|
1501 int box_line_width = max (s->face->box_line_width, 0); |
8be6a1c85409
(x_produce_image_glyph): Pay attention to the case that
Andrew Innes <andrewi@gnu.org>
parents:
36002
diff
changeset
|
1502 |
33097
84590a646acc
(x_produce_glyphs): Handle composite characters.
Jason Rumney <jasonr@gnu.org>
parents:
33037
diff
changeset
|
1503 #if 0 /* TODO: stipple */ |
27402
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1504 if (s->stippled_p) |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1505 { |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1506 /* Fill background with a stipple pattern. */ |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1507 XSetFillStyle (s->display, s->gc, FillOpaqueStippled); |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1508 XFillRectangle (s->display, s->window, s->gc, s->x, |
36045
8be6a1c85409
(x_produce_image_glyph): Pay attention to the case that
Andrew Innes <andrewi@gnu.org>
parents:
36002
diff
changeset
|
1509 s->y + box_line_width, |
27402
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1510 s->background_width, |
36045
8be6a1c85409
(x_produce_image_glyph): Pay attention to the case that
Andrew Innes <andrewi@gnu.org>
parents:
36002
diff
changeset
|
1511 s->height - 2 * box_line_width); |
27402
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1512 XSetFillStyle (s->display, s->gc, FillSolid); |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1513 s->background_filled_p = 1; |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1514 } |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1515 else |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1516 #endif |
36045
8be6a1c85409
(x_produce_image_glyph): Pay attention to the case that
Andrew Innes <andrewi@gnu.org>
parents:
36002
diff
changeset
|
1517 if (FONT_HEIGHT (s->font) < s->height - 2 * box_line_width |
27402
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1518 || s->font_not_found_p |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1519 || s->extends_to_end_of_line_p |
32022
1f26caa05cd7
(w32_char_font_type, w32_encode_char, x_produce_glyphs): Distinguish
Jason Rumney <jasonr@gnu.org>
parents:
31624
diff
changeset
|
1520 || s->font->bdf |
27402
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1521 || force_p) |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1522 { |
36045
8be6a1c85409
(x_produce_image_glyph): Pay attention to the case that
Andrew Innes <andrewi@gnu.org>
parents:
36002
diff
changeset
|
1523 x_clear_glyph_string_rect (s, s->x, s->y + box_line_width, |
27402
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1524 s->background_width, |
36045
8be6a1c85409
(x_produce_image_glyph): Pay attention to the case that
Andrew Innes <andrewi@gnu.org>
parents:
36002
diff
changeset
|
1525 s->height - 2 * box_line_width); |
27402
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1526 s->background_filled_p = 1; |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1527 } |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1528 } |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1529 } |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1530 |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1531 |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1532 /* Draw the foreground of glyph string S. */ |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1533 |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1534 static void |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1535 x_draw_glyph_string_foreground (s) |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1536 struct glyph_string *s; |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1537 { |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1538 int i, x; |
33097
84590a646acc
(x_produce_glyphs): Handle composite characters.
Jason Rumney <jasonr@gnu.org>
parents:
33037
diff
changeset
|
1539 HFONT old_font; |
27402
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1540 |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1541 /* If first glyph of S has a left box line, start drawing the text |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1542 of S to the right of that box line. */ |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1543 if (s->face->box != FACE_NO_BOX |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1544 && s->first_glyph->left_box_line_p) |
36045
8be6a1c85409
(x_produce_image_glyph): Pay attention to the case that
Andrew Innes <andrewi@gnu.org>
parents:
36002
diff
changeset
|
1545 x = s->x + abs (s->face->box_line_width); |
27402
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1546 else |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1547 x = s->x; |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1548 |
65892
41fc0bf568be
Rename member for_overlaps_p in struct glyph_string to for_overlaps.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
65444
diff
changeset
|
1549 if (s->for_overlaps || (s->background_filled_p && s->hl != DRAW_CURSOR)) |
27402
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1550 SetBkMode (s->hdc, TRANSPARENT); |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1551 else |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1552 SetBkMode (s->hdc, OPAQUE); |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1553 |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1554 SetTextColor (s->hdc, s->gc->foreground); |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1555 SetBkColor (s->hdc, s->gc->background); |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1556 SetTextAlign (s->hdc, TA_BASELINE | TA_LEFT); |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1557 |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1558 if (s->font && s->font->hfont) |
33097
84590a646acc
(x_produce_glyphs): Handle composite characters.
Jason Rumney <jasonr@gnu.org>
parents:
33037
diff
changeset
|
1559 old_font = SelectObject (s->hdc, s->font->hfont); |
27402
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1560 |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1561 /* Draw characters of S as rectangles if S's font could not be |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1562 loaded. */ |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1563 if (s->font_not_found_p) |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1564 { |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1565 for (i = 0; i < s->nchars; ++i) |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1566 { |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1567 struct glyph *g = s->first_glyph + i; |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1568 |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1569 w32_draw_rectangle (s->hdc, s->gc, x, s->y, g->pixel_width - 1, |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1570 s->height - 1); |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1571 x += g->pixel_width; |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1572 } |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1573 } |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1574 else |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1575 { |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1576 char *char1b = (char *) s->char2b; |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1577 int boff = s->font_info->baseline_offset; |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1578 |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1579 if (s->font_info->vertical_centering) |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1580 boff = VCENTER_BASELINE_OFFSET (s->font, s->f) - boff; |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1581 |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1582 /* If we can use 8-bit functions, condense S->char2b. */ |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1583 if (!s->two_byte_p) |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1584 for (i = 0; i < s->nchars; ++i) |
50154
10038ae9db85
Remove consolidated defines and code.
Kim F. Storm <storm@cua.dk>
parents:
50096
diff
changeset
|
1585 char1b[i] = XCHAR2B_BYTE2 (&s->char2b[i]); |
27402
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1586 |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1587 /* Draw text with TextOut and friends. */ |
43470
842910bb2fc0
(w32_text_out): Renamed from W32_TEXTOUT.
Jason Rumney <jasonr@gnu.org>
parents:
43408
diff
changeset
|
1588 w32_text_out (s, x, s->ybase - boff, s->char2b, s->nchars); |
49393
85246e86a2cd
* w32term.c (x_draw_glyph_string_foreground)
Jason Rumney <jasonr@gnu.org>
parents:
49371
diff
changeset
|
1589 |
85246e86a2cd
* w32term.c (x_draw_glyph_string_foreground)
Jason Rumney <jasonr@gnu.org>
parents:
49371
diff
changeset
|
1590 if (s->face->overstrike) |
85246e86a2cd
* w32term.c (x_draw_glyph_string_foreground)
Jason Rumney <jasonr@gnu.org>
parents:
49371
diff
changeset
|
1591 { |
85246e86a2cd
* w32term.c (x_draw_glyph_string_foreground)
Jason Rumney <jasonr@gnu.org>
parents:
49371
diff
changeset
|
1592 /* For overstriking (to simulate bold-face), draw the |
85246e86a2cd
* w32term.c (x_draw_glyph_string_foreground)
Jason Rumney <jasonr@gnu.org>
parents:
49371
diff
changeset
|
1593 characters again shifted to the right by one pixel. */ |
73510
2c1760046d15
(x_draw_glyph_string_foreground): Set background mode to TRANSPARENT before
Juanma Barranquero <lekktu@gmail.com>
parents:
72736
diff
changeset
|
1594 int old_BkMode = SetBkMode (s->hdc, TRANSPARENT); |
49393
85246e86a2cd
* w32term.c (x_draw_glyph_string_foreground)
Jason Rumney <jasonr@gnu.org>
parents:
49371
diff
changeset
|
1595 w32_text_out (s, x + 1, s->ybase - boff, s->char2b, s->nchars); |
73510
2c1760046d15
(x_draw_glyph_string_foreground): Set background mode to TRANSPARENT before
Juanma Barranquero <lekktu@gmail.com>
parents:
72736
diff
changeset
|
1596 if (old_BkMode && old_BkMode != TRANSPARENT) |
2c1760046d15
(x_draw_glyph_string_foreground): Set background mode to TRANSPARENT before
Juanma Barranquero <lekktu@gmail.com>
parents:
72736
diff
changeset
|
1597 SetBkMode (s->hdc, old_BkMode); |
49393
85246e86a2cd
* w32term.c (x_draw_glyph_string_foreground)
Jason Rumney <jasonr@gnu.org>
parents:
49371
diff
changeset
|
1598 } |
27402
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1599 } |
33097
84590a646acc
(x_produce_glyphs): Handle composite characters.
Jason Rumney <jasonr@gnu.org>
parents:
33037
diff
changeset
|
1600 if (s->font && s->font->hfont) |
84590a646acc
(x_produce_glyphs): Handle composite characters.
Jason Rumney <jasonr@gnu.org>
parents:
33037
diff
changeset
|
1601 SelectObject (s->hdc, old_font); |
27402
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1602 } |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1603 |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1604 /* Draw the foreground of composite glyph string S. */ |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1605 |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1606 static void |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1607 x_draw_composite_glyph_string_foreground (s) |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1608 struct glyph_string *s; |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1609 { |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1610 int i, x; |
33097
84590a646acc
(x_produce_glyphs): Handle composite characters.
Jason Rumney <jasonr@gnu.org>
parents:
33037
diff
changeset
|
1611 HFONT old_font; |
27402
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1612 |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1613 /* If first glyph of S has a left box line, start drawing the text |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1614 of S to the right of that box line. */ |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1615 if (s->face->box != FACE_NO_BOX |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1616 && s->first_glyph->left_box_line_p) |
36045
8be6a1c85409
(x_produce_image_glyph): Pay attention to the case that
Andrew Innes <andrewi@gnu.org>
parents:
36002
diff
changeset
|
1617 x = s->x + abs (s->face->box_line_width); |
27402
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1618 else |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1619 x = s->x; |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1620 |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1621 /* S is a glyph string for a composition. S->gidx is the index of |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1622 the first character drawn for glyphs of this composition. |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1623 S->gidx == 0 means we are drawing the very first character of |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1624 this composition. */ |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1625 |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1626 SetTextColor (s->hdc, s->gc->foreground); |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1627 SetBkColor (s->hdc, s->gc->background); |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1628 SetBkMode (s->hdc, TRANSPARENT); |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1629 SetTextAlign (s->hdc, TA_BASELINE | TA_LEFT); |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1630 |
33097
84590a646acc
(x_produce_glyphs): Handle composite characters.
Jason Rumney <jasonr@gnu.org>
parents:
33037
diff
changeset
|
1631 if (s->font && s->font->hfont) |
84590a646acc
(x_produce_glyphs): Handle composite characters.
Jason Rumney <jasonr@gnu.org>
parents:
33037
diff
changeset
|
1632 old_font = SelectObject (s->hdc, s->font->hfont); |
84590a646acc
(x_produce_glyphs): Handle composite characters.
Jason Rumney <jasonr@gnu.org>
parents:
33037
diff
changeset
|
1633 |
27402
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1634 /* Draw a rectangle for the composition if the font for the very |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1635 first character of the composition could not be loaded. */ |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1636 if (s->font_not_found_p) |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1637 { |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1638 if (s->gidx == 0) |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1639 w32_draw_rectangle (s->hdc, s->gc, x, s->y, s->width - 1, |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1640 s->height - 1); |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1641 } |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1642 else |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1643 { |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1644 for (i = 0; i < s->nchars; i++, ++s->gidx) |
49393
85246e86a2cd
* w32term.c (x_draw_glyph_string_foreground)
Jason Rumney <jasonr@gnu.org>
parents:
49371
diff
changeset
|
1645 { |
85246e86a2cd
* w32term.c (x_draw_glyph_string_foreground)
Jason Rumney <jasonr@gnu.org>
parents:
49371
diff
changeset
|
1646 w32_text_out (s, x + s->cmp->offsets[s->gidx * 2], |
85246e86a2cd
* w32term.c (x_draw_glyph_string_foreground)
Jason Rumney <jasonr@gnu.org>
parents:
49371
diff
changeset
|
1647 s->ybase - s->cmp->offsets[s->gidx * 2 + 1], |
85246e86a2cd
* w32term.c (x_draw_glyph_string_foreground)
Jason Rumney <jasonr@gnu.org>
parents:
49371
diff
changeset
|
1648 s->char2b + i, 1); |
85246e86a2cd
* w32term.c (x_draw_glyph_string_foreground)
Jason Rumney <jasonr@gnu.org>
parents:
49371
diff
changeset
|
1649 if (s->face->overstrike) |
85246e86a2cd
* w32term.c (x_draw_glyph_string_foreground)
Jason Rumney <jasonr@gnu.org>
parents:
49371
diff
changeset
|
1650 w32_text_out (s, x + s->cmp->offsets[s->gidx * 2] + 1, |
85246e86a2cd
* w32term.c (x_draw_glyph_string_foreground)
Jason Rumney <jasonr@gnu.org>
parents:
49371
diff
changeset
|
1651 s->ybase - s->cmp->offsets[s->gidx * 2 + 1], |
85246e86a2cd
* w32term.c (x_draw_glyph_string_foreground)
Jason Rumney <jasonr@gnu.org>
parents:
49371
diff
changeset
|
1652 s->char2b + i, 1); |
85246e86a2cd
* w32term.c (x_draw_glyph_string_foreground)
Jason Rumney <jasonr@gnu.org>
parents:
49371
diff
changeset
|
1653 } |
85246e86a2cd
* w32term.c (x_draw_glyph_string_foreground)
Jason Rumney <jasonr@gnu.org>
parents:
49371
diff
changeset
|
1654 } |
85246e86a2cd
* w32term.c (x_draw_glyph_string_foreground)
Jason Rumney <jasonr@gnu.org>
parents:
49371
diff
changeset
|
1655 |
33097
84590a646acc
(x_produce_glyphs): Handle composite characters.
Jason Rumney <jasonr@gnu.org>
parents:
33037
diff
changeset
|
1656 if (s->font && s->font->hfont) |
84590a646acc
(x_produce_glyphs): Handle composite characters.
Jason Rumney <jasonr@gnu.org>
parents:
33037
diff
changeset
|
1657 SelectObject (s->hdc, old_font); |
27402
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1658 } |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1659 |
33524
cf8e03cd4985
(HIGHLIGHT_COLOR_DARK_BOOST_LIMIT): New constant.
Jason Rumney <jasonr@gnu.org>
parents:
33386
diff
changeset
|
1660 |
cf8e03cd4985
(HIGHLIGHT_COLOR_DARK_BOOST_LIMIT): New constant.
Jason Rumney <jasonr@gnu.org>
parents:
33386
diff
changeset
|
1661 /* Brightness beyond which a color won't have its highlight brightness |
cf8e03cd4985
(HIGHLIGHT_COLOR_DARK_BOOST_LIMIT): New constant.
Jason Rumney <jasonr@gnu.org>
parents:
33386
diff
changeset
|
1662 boosted. |
cf8e03cd4985
(HIGHLIGHT_COLOR_DARK_BOOST_LIMIT): New constant.
Jason Rumney <jasonr@gnu.org>
parents:
33386
diff
changeset
|
1663 |
cf8e03cd4985
(HIGHLIGHT_COLOR_DARK_BOOST_LIMIT): New constant.
Jason Rumney <jasonr@gnu.org>
parents:
33386
diff
changeset
|
1664 Nominally, highlight colors for `3d' faces are calculated by |
cf8e03cd4985
(HIGHLIGHT_COLOR_DARK_BOOST_LIMIT): New constant.
Jason Rumney <jasonr@gnu.org>
parents:
33386
diff
changeset
|
1665 brightening an object's color by a constant scale factor, but this |
cf8e03cd4985
(HIGHLIGHT_COLOR_DARK_BOOST_LIMIT): New constant.
Jason Rumney <jasonr@gnu.org>
parents:
33386
diff
changeset
|
1666 doesn't yield good results for dark colors, so for colors who's |
cf8e03cd4985
(HIGHLIGHT_COLOR_DARK_BOOST_LIMIT): New constant.
Jason Rumney <jasonr@gnu.org>
parents:
33386
diff
changeset
|
1667 brightness is less than this value (on a scale of 0-255) have to |
cf8e03cd4985
(HIGHLIGHT_COLOR_DARK_BOOST_LIMIT): New constant.
Jason Rumney <jasonr@gnu.org>
parents:
33386
diff
changeset
|
1668 use an additional additive factor. |
cf8e03cd4985
(HIGHLIGHT_COLOR_DARK_BOOST_LIMIT): New constant.
Jason Rumney <jasonr@gnu.org>
parents:
33386
diff
changeset
|
1669 |
cf8e03cd4985
(HIGHLIGHT_COLOR_DARK_BOOST_LIMIT): New constant.
Jason Rumney <jasonr@gnu.org>
parents:
33386
diff
changeset
|
1670 The value here is set so that the default menu-bar/mode-line color |
cf8e03cd4985
(HIGHLIGHT_COLOR_DARK_BOOST_LIMIT): New constant.
Jason Rumney <jasonr@gnu.org>
parents:
33386
diff
changeset
|
1671 (grey75) will not have its highlights changed at all. */ |
cf8e03cd4985
(HIGHLIGHT_COLOR_DARK_BOOST_LIMIT): New constant.
Jason Rumney <jasonr@gnu.org>
parents:
33386
diff
changeset
|
1672 #define HIGHLIGHT_COLOR_DARK_BOOST_LIMIT 187 |
cf8e03cd4985
(HIGHLIGHT_COLOR_DARK_BOOST_LIMIT): New constant.
Jason Rumney <jasonr@gnu.org>
parents:
33386
diff
changeset
|
1673 |
cf8e03cd4985
(HIGHLIGHT_COLOR_DARK_BOOST_LIMIT): New constant.
Jason Rumney <jasonr@gnu.org>
parents:
33386
diff
changeset
|
1674 |
27402
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1675 /* Allocate a color which is lighter or darker than *COLOR by FACTOR |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1676 or DELTA. Try a color with RGB values multiplied by FACTOR first. |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1677 If this produces the same color as COLOR, try a color where all RGB |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1678 values have DELTA added. Return the allocated color in *COLOR. |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1679 DISPLAY is the X display, CMAP is the colormap to operate on. |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1680 Value is non-zero if successful. */ |
13434 | 1681 |
23507
8a448630a9b5
Include fontset.h. Define codepage macros.
Geoff Voelker <voelker@cs.washington.edu>
parents:
22059
diff
changeset
|
1682 static int |
27402
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1683 w32_alloc_lighter_color (f, color, factor, delta) |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1684 struct frame *f; |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1685 COLORREF *color; |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1686 double factor; |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1687 int delta; |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1688 { |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1689 COLORREF new; |
33524
cf8e03cd4985
(HIGHLIGHT_COLOR_DARK_BOOST_LIMIT): New constant.
Jason Rumney <jasonr@gnu.org>
parents:
33386
diff
changeset
|
1690 long bright; |
cf8e03cd4985
(HIGHLIGHT_COLOR_DARK_BOOST_LIMIT): New constant.
Jason Rumney <jasonr@gnu.org>
parents:
33386
diff
changeset
|
1691 |
cf8e03cd4985
(HIGHLIGHT_COLOR_DARK_BOOST_LIMIT): New constant.
Jason Rumney <jasonr@gnu.org>
parents:
33386
diff
changeset
|
1692 /* On Windows, RGB values are 0-255, not 0-65535, so scale delta. */ |
cf8e03cd4985
(HIGHLIGHT_COLOR_DARK_BOOST_LIMIT): New constant.
Jason Rumney <jasonr@gnu.org>
parents:
33386
diff
changeset
|
1693 delta /= 256; |
27402
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1694 |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1695 /* Change RGB values by specified FACTOR. Avoid overflow! */ |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1696 xassert (factor >= 0); |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1697 new = PALETTERGB (min (0xff, factor * GetRValue (*color)), |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1698 min (0xff, factor * GetGValue (*color)), |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1699 min (0xff, factor * GetBValue (*color))); |
33524
cf8e03cd4985
(HIGHLIGHT_COLOR_DARK_BOOST_LIMIT): New constant.
Jason Rumney <jasonr@gnu.org>
parents:
33386
diff
changeset
|
1700 |
cf8e03cd4985
(HIGHLIGHT_COLOR_DARK_BOOST_LIMIT): New constant.
Jason Rumney <jasonr@gnu.org>
parents:
33386
diff
changeset
|
1701 /* Calculate brightness of COLOR. */ |
cf8e03cd4985
(HIGHLIGHT_COLOR_DARK_BOOST_LIMIT): New constant.
Jason Rumney <jasonr@gnu.org>
parents:
33386
diff
changeset
|
1702 bright = (2 * GetRValue (*color) + 3 * GetGValue (*color) |
cf8e03cd4985
(HIGHLIGHT_COLOR_DARK_BOOST_LIMIT): New constant.
Jason Rumney <jasonr@gnu.org>
parents:
33386
diff
changeset
|
1703 + GetBValue (*color)) / 6; |
cf8e03cd4985
(HIGHLIGHT_COLOR_DARK_BOOST_LIMIT): New constant.
Jason Rumney <jasonr@gnu.org>
parents:
33386
diff
changeset
|
1704 |
cf8e03cd4985
(HIGHLIGHT_COLOR_DARK_BOOST_LIMIT): New constant.
Jason Rumney <jasonr@gnu.org>
parents:
33386
diff
changeset
|
1705 /* We only boost colors that are darker than |
cf8e03cd4985
(HIGHLIGHT_COLOR_DARK_BOOST_LIMIT): New constant.
Jason Rumney <jasonr@gnu.org>
parents:
33386
diff
changeset
|
1706 HIGHLIGHT_COLOR_DARK_BOOST_LIMIT. */ |
cf8e03cd4985
(HIGHLIGHT_COLOR_DARK_BOOST_LIMIT): New constant.
Jason Rumney <jasonr@gnu.org>
parents:
33386
diff
changeset
|
1707 if (bright < HIGHLIGHT_COLOR_DARK_BOOST_LIMIT) |
cf8e03cd4985
(HIGHLIGHT_COLOR_DARK_BOOST_LIMIT): New constant.
Jason Rumney <jasonr@gnu.org>
parents:
33386
diff
changeset
|
1708 /* Make an additive adjustment to NEW, because it's dark enough so |
cf8e03cd4985
(HIGHLIGHT_COLOR_DARK_BOOST_LIMIT): New constant.
Jason Rumney <jasonr@gnu.org>
parents:
33386
diff
changeset
|
1709 that scaling by FACTOR alone isn't enough. */ |
cf8e03cd4985
(HIGHLIGHT_COLOR_DARK_BOOST_LIMIT): New constant.
Jason Rumney <jasonr@gnu.org>
parents:
33386
diff
changeset
|
1710 { |
cf8e03cd4985
(HIGHLIGHT_COLOR_DARK_BOOST_LIMIT): New constant.
Jason Rumney <jasonr@gnu.org>
parents:
33386
diff
changeset
|
1711 /* How far below the limit this color is (0 - 1, 1 being darker). */ |
cf8e03cd4985
(HIGHLIGHT_COLOR_DARK_BOOST_LIMIT): New constant.
Jason Rumney <jasonr@gnu.org>
parents:
33386
diff
changeset
|
1712 double dimness = 1 - (double)bright / HIGHLIGHT_COLOR_DARK_BOOST_LIMIT; |
cf8e03cd4985
(HIGHLIGHT_COLOR_DARK_BOOST_LIMIT): New constant.
Jason Rumney <jasonr@gnu.org>
parents:
33386
diff
changeset
|
1713 /* The additive adjustment. */ |
cf8e03cd4985
(HIGHLIGHT_COLOR_DARK_BOOST_LIMIT): New constant.
Jason Rumney <jasonr@gnu.org>
parents:
33386
diff
changeset
|
1714 int min_delta = delta * dimness * factor / 2; |
48218
01e253345507
(w32_draw_fringe_bitmap): Remove unused local variable window.
Juanma Barranquero <lekktu@gmail.com>
parents:
48025
diff
changeset
|
1715 |
33524
cf8e03cd4985
(HIGHLIGHT_COLOR_DARK_BOOST_LIMIT): New constant.
Jason Rumney <jasonr@gnu.org>
parents:
33386
diff
changeset
|
1716 if (factor < 1) |
cf8e03cd4985
(HIGHLIGHT_COLOR_DARK_BOOST_LIMIT): New constant.
Jason Rumney <jasonr@gnu.org>
parents:
33386
diff
changeset
|
1717 new = PALETTERGB (max (0, min (0xff, min_delta - GetRValue (*color))), |
cf8e03cd4985
(HIGHLIGHT_COLOR_DARK_BOOST_LIMIT): New constant.
Jason Rumney <jasonr@gnu.org>
parents:
33386
diff
changeset
|
1718 max (0, min (0xff, min_delta - GetGValue (*color))), |
cf8e03cd4985
(HIGHLIGHT_COLOR_DARK_BOOST_LIMIT): New constant.
Jason Rumney <jasonr@gnu.org>
parents:
33386
diff
changeset
|
1719 max (0, min (0xff, min_delta - GetBValue (*color)))); |
cf8e03cd4985
(HIGHLIGHT_COLOR_DARK_BOOST_LIMIT): New constant.
Jason Rumney <jasonr@gnu.org>
parents:
33386
diff
changeset
|
1720 else |
cf8e03cd4985
(HIGHLIGHT_COLOR_DARK_BOOST_LIMIT): New constant.
Jason Rumney <jasonr@gnu.org>
parents:
33386
diff
changeset
|
1721 new = PALETTERGB (max (0, min (0xff, min_delta + GetRValue (*color))), |
cf8e03cd4985
(HIGHLIGHT_COLOR_DARK_BOOST_LIMIT): New constant.
Jason Rumney <jasonr@gnu.org>
parents:
33386
diff
changeset
|
1722 max (0, min (0xff, min_delta + GetGValue (*color))), |
cf8e03cd4985
(HIGHLIGHT_COLOR_DARK_BOOST_LIMIT): New constant.
Jason Rumney <jasonr@gnu.org>
parents:
33386
diff
changeset
|
1723 max (0, min (0xff, min_delta + GetBValue (*color)))); |
cf8e03cd4985
(HIGHLIGHT_COLOR_DARK_BOOST_LIMIT): New constant.
Jason Rumney <jasonr@gnu.org>
parents:
33386
diff
changeset
|
1724 } |
48218
01e253345507
(w32_draw_fringe_bitmap): Remove unused local variable window.
Juanma Barranquero <lekktu@gmail.com>
parents:
48025
diff
changeset
|
1725 |
27402
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1726 if (new == *color) |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1727 new = PALETTERGB (max (0, min (0xff, delta + GetRValue (*color))), |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1728 max (0, min (0xff, delta + GetGValue (*color))), |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1729 max (0, min (0xff, delta + GetBValue (*color)))); |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1730 |
33097
84590a646acc
(x_produce_glyphs): Handle composite characters.
Jason Rumney <jasonr@gnu.org>
parents:
33037
diff
changeset
|
1731 /* TODO: Map to palette and retry with delta if same? */ |
84590a646acc
(x_produce_glyphs): Handle composite characters.
Jason Rumney <jasonr@gnu.org>
parents:
33037
diff
changeset
|
1732 /* TODO: Free colors (if using palette)? */ |
28369
3fb90cd81d3b
(w32_read_socket): Handle WM_MENUSELECT message.
Jason Rumney <jasonr@gnu.org>
parents:
27937
diff
changeset
|
1733 |
27402
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1734 if (new == *color) |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1735 return 0; |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1736 |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1737 *color = new; |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1738 |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1739 return 1; |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1740 } |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1741 |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1742 |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1743 /* Set up the foreground color for drawing relief lines of glyph |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1744 string S. RELIEF is a pointer to a struct relief containing the GC |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1745 with which lines will be drawn. Use a color that is FACTOR or |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1746 DELTA lighter or darker than the relief's background which is found |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1747 in S->f->output_data.x->relief_background. If such a color cannot |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1748 be allocated, use DEFAULT_PIXEL, instead. */ |
48218
01e253345507
(w32_draw_fringe_bitmap): Remove unused local variable window.
Juanma Barranquero <lekktu@gmail.com>
parents:
48025
diff
changeset
|
1749 |
27402
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1750 static void |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1751 w32_setup_relief_color (f, relief, factor, delta, default_pixel) |
13434 | 1752 struct frame *f; |
27402
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1753 struct relief *relief; |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1754 double factor; |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1755 int delta; |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1756 COLORREF default_pixel; |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1757 { |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1758 XGCValues xgcv; |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1759 struct w32_output *di = f->output_data.w32; |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1760 unsigned long mask = GCForeground; |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1761 COLORREF pixel; |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1762 COLORREF background = di->relief_background; |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1763 struct w32_display_info *dpyinfo = FRAME_W32_DISPLAY_INFO (f); |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1764 |
33097
84590a646acc
(x_produce_glyphs): Handle composite characters.
Jason Rumney <jasonr@gnu.org>
parents:
33037
diff
changeset
|
1765 /* TODO: Free colors (if using palette)? */ |
28369
3fb90cd81d3b
(w32_read_socket): Handle WM_MENUSELECT message.
Jason Rumney <jasonr@gnu.org>
parents:
27937
diff
changeset
|
1766 |
27402
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1767 /* Allocate new color. */ |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1768 xgcv.foreground = default_pixel; |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1769 pixel = background; |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1770 if (w32_alloc_lighter_color (f, &pixel, factor, delta)) |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1771 { |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1772 relief->allocated_p = 1; |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1773 xgcv.foreground = relief->pixel = pixel; |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1774 } |
48218
01e253345507
(w32_draw_fringe_bitmap): Remove unused local variable window.
Juanma Barranquero <lekktu@gmail.com>
parents:
48025
diff
changeset
|
1775 |
27402
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1776 if (relief->gc == 0) |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1777 { |
33097
84590a646acc
(x_produce_glyphs): Handle composite characters.
Jason Rumney <jasonr@gnu.org>
parents:
33037
diff
changeset
|
1778 #if 0 /* TODO: stipple */ |
27402
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1779 xgcv.stipple = dpyinfo->gray; |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1780 mask |= GCStipple; |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1781 #endif |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1782 relief->gc = XCreateGC (NULL, FRAME_W32_WINDOW (f), mask, &xgcv); |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1783 } |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1784 else |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1785 XChangeGC (NULL, relief->gc, mask, &xgcv); |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1786 } |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1787 |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1788 |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1789 /* Set up colors for the relief lines around glyph string S. */ |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1790 |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1791 static void |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1792 x_setup_relief_colors (s) |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1793 struct glyph_string *s; |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1794 { |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1795 struct w32_output *di = s->f->output_data.w32; |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1796 COLORREF color; |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1797 |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1798 if (s->face->use_box_color_for_shadows_p) |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1799 color = s->face->box_color; |
41249
2043af2d023f
(note_mouse_highlight): Fix type of variable `ignore'.
Jason Rumney <jasonr@gnu.org>
parents:
41125
diff
changeset
|
1800 else if (s->first_glyph->type == IMAGE_GLYPH |
42538
2b4179d13ed7
(x_setup_relief_colors): Don't compute an image's
Jason Rumney <jasonr@gnu.org>
parents:
42206
diff
changeset
|
1801 && s->img->pixmap |
41249
2043af2d023f
(note_mouse_highlight): Fix type of variable `ignore'.
Jason Rumney <jasonr@gnu.org>
parents:
41125
diff
changeset
|
1802 && !IMAGE_BACKGROUND_TRANSPARENT (s->img, s->f, 0)) |
2043af2d023f
(note_mouse_highlight): Fix type of variable `ignore'.
Jason Rumney <jasonr@gnu.org>
parents:
41125
diff
changeset
|
1803 color = IMAGE_BACKGROUND (s->img, s->f, 0); |
27402
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1804 else |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1805 color = s->gc->background; |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1806 |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1807 if (di->white_relief.gc == 0 |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1808 || color != di->relief_background) |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1809 { |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1810 di->relief_background = color; |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1811 w32_setup_relief_color (s->f, &di->white_relief, 1.2, 0x8000, |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1812 WHITE_PIX_DEFAULT (s->f)); |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1813 w32_setup_relief_color (s->f, &di->black_relief, 0.6, 0x4000, |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1814 BLACK_PIX_DEFAULT (s->f)); |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1815 } |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1816 } |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1817 |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1818 |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1819 /* Draw a relief on frame F inside the rectangle given by LEFT_X, |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1820 TOP_Y, RIGHT_X, and BOTTOM_Y. WIDTH is the thickness of the relief |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1821 to draw, it must be >= 0. RAISED_P non-zero means draw a raised |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1822 relief. LEFT_P non-zero means draw a relief on the left side of |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1823 the rectangle. RIGHT_P non-zero means draw a relief on the right |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1824 side of the rectangle. CLIP_RECT is the clipping rectangle to use |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1825 when drawing. */ |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1826 |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1827 static void |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1828 w32_draw_relief_rect (f, left_x, top_y, right_x, bottom_y, width, |
55026
08e4e7c06ffc
(w32_draw_relief_rect): Add top_p and bot_p args.
Kim F. Storm <storm@cua.dk>
parents:
54731
diff
changeset
|
1829 raised_p, top_p, bot_p, left_p, right_p, clip_rect) |
27402
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1830 struct frame *f; |
55026
08e4e7c06ffc
(w32_draw_relief_rect): Add top_p and bot_p args.
Kim F. Storm <storm@cua.dk>
parents:
54731
diff
changeset
|
1831 int left_x, top_y, right_x, bottom_y, width; |
08e4e7c06ffc
(w32_draw_relief_rect): Add top_p and bot_p args.
Kim F. Storm <storm@cua.dk>
parents:
54731
diff
changeset
|
1832 int top_p, bot_p, left_p, right_p, raised_p; |
27402
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1833 RECT *clip_rect; |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1834 { |
23507
8a448630a9b5
Include fontset.h. Define codepage macros.
Geoff Voelker <voelker@cs.washington.edu>
parents:
22059
diff
changeset
|
1835 int i; |
27402
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1836 XGCValues gc; |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1837 HDC hdc = get_frame_dc (f); |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1838 |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1839 if (raised_p) |
33524
cf8e03cd4985
(HIGHLIGHT_COLOR_DARK_BOOST_LIMIT): New constant.
Jason Rumney <jasonr@gnu.org>
parents:
33386
diff
changeset
|
1840 gc.foreground = f->output_data.w32->white_relief.gc->foreground; |
27402
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1841 else |
33524
cf8e03cd4985
(HIGHLIGHT_COLOR_DARK_BOOST_LIMIT): New constant.
Jason Rumney <jasonr@gnu.org>
parents:
33386
diff
changeset
|
1842 gc.foreground = f->output_data.w32->black_relief.gc->foreground; |
27402
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1843 |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1844 w32_set_clip_rectangle (hdc, clip_rect); |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1845 |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1846 /* Top. */ |
55026
08e4e7c06ffc
(w32_draw_relief_rect): Add top_p and bot_p args.
Kim F. Storm <storm@cua.dk>
parents:
54731
diff
changeset
|
1847 if (top_p) |
08e4e7c06ffc
(w32_draw_relief_rect): Add top_p and bot_p args.
Kim F. Storm <storm@cua.dk>
parents:
54731
diff
changeset
|
1848 for (i = 0; i < width; ++i) |
08e4e7c06ffc
(w32_draw_relief_rect): Add top_p and bot_p args.
Kim F. Storm <storm@cua.dk>
parents:
54731
diff
changeset
|
1849 w32_fill_area (f, hdc, gc.foreground, |
08e4e7c06ffc
(w32_draw_relief_rect): Add top_p and bot_p args.
Kim F. Storm <storm@cua.dk>
parents:
54731
diff
changeset
|
1850 left_x + i * left_p, top_y + i, |
08e4e7c06ffc
(w32_draw_relief_rect): Add top_p and bot_p args.
Kim F. Storm <storm@cua.dk>
parents:
54731
diff
changeset
|
1851 right_x - left_x - i * (left_p + right_p ) + 1, 1); |
27402
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1852 |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1853 /* Left. */ |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1854 if (left_p) |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1855 for (i = 0; i < width; ++i) |
40137
5f0d7d58283b
(remember_mouse_glyph): New function.
Jason Rumney <jasonr@gnu.org>
parents:
40078
diff
changeset
|
1856 w32_fill_area (f, hdc, gc.foreground, |
5f0d7d58283b
(remember_mouse_glyph): New function.
Jason Rumney <jasonr@gnu.org>
parents:
40078
diff
changeset
|
1857 left_x + i, top_y + i, 1, |
44238
ed87203c48f5
(w32_draw_relief_rect): Fix calculations of line lengths.
Jason Rumney <jasonr@gnu.org>
parents:
44108
diff
changeset
|
1858 bottom_y - top_y - 2 * i + 1); |
27402
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1859 |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1860 if (raised_p) |
33524
cf8e03cd4985
(HIGHLIGHT_COLOR_DARK_BOOST_LIMIT): New constant.
Jason Rumney <jasonr@gnu.org>
parents:
33386
diff
changeset
|
1861 gc.foreground = f->output_data.w32->black_relief.gc->foreground; |
27402
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1862 else |
33524
cf8e03cd4985
(HIGHLIGHT_COLOR_DARK_BOOST_LIMIT): New constant.
Jason Rumney <jasonr@gnu.org>
parents:
33386
diff
changeset
|
1863 gc.foreground = f->output_data.w32->white_relief.gc->foreground; |
48218
01e253345507
(w32_draw_fringe_bitmap): Remove unused local variable window.
Juanma Barranquero <lekktu@gmail.com>
parents:
48025
diff
changeset
|
1864 |
27402
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1865 /* Bottom. */ |
55026
08e4e7c06ffc
(w32_draw_relief_rect): Add top_p and bot_p args.
Kim F. Storm <storm@cua.dk>
parents:
54731
diff
changeset
|
1866 if (bot_p) |
08e4e7c06ffc
(w32_draw_relief_rect): Add top_p and bot_p args.
Kim F. Storm <storm@cua.dk>
parents:
54731
diff
changeset
|
1867 for (i = 0; i < width; ++i) |
08e4e7c06ffc
(w32_draw_relief_rect): Add top_p and bot_p args.
Kim F. Storm <storm@cua.dk>
parents:
54731
diff
changeset
|
1868 w32_fill_area (f, hdc, gc.foreground, |
08e4e7c06ffc
(w32_draw_relief_rect): Add top_p and bot_p args.
Kim F. Storm <storm@cua.dk>
parents:
54731
diff
changeset
|
1869 left_x + i * left_p, bottom_y - i, |
08e4e7c06ffc
(w32_draw_relief_rect): Add top_p and bot_p args.
Kim F. Storm <storm@cua.dk>
parents:
54731
diff
changeset
|
1870 right_x - left_x - i * (left_p + right_p) + 1, 1); |
27402
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1871 |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1872 /* Right. */ |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1873 if (right_p) |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1874 for (i = 0; i < width; ++i) |
40137
5f0d7d58283b
(remember_mouse_glyph): New function.
Jason Rumney <jasonr@gnu.org>
parents:
40078
diff
changeset
|
1875 w32_fill_area (f, hdc, gc.foreground, |
5f0d7d58283b
(remember_mouse_glyph): New function.
Jason Rumney <jasonr@gnu.org>
parents:
40078
diff
changeset
|
1876 right_x - i, top_y + i + 1, 1, |
44238
ed87203c48f5
(w32_draw_relief_rect): Fix calculations of line lengths.
Jason Rumney <jasonr@gnu.org>
parents:
44108
diff
changeset
|
1877 bottom_y - top_y - 2 * i - 1); |
27402
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1878 |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1879 w32_set_clip_rectangle (hdc, NULL); |
48218
01e253345507
(w32_draw_fringe_bitmap): Remove unused local variable window.
Juanma Barranquero <lekktu@gmail.com>
parents:
48025
diff
changeset
|
1880 |
27402
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1881 release_frame_dc (f, hdc); |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1882 } |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1883 |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1884 |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1885 /* Draw a box on frame F inside the rectangle given by LEFT_X, TOP_Y, |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1886 RIGHT_X, and BOTTOM_Y. WIDTH is the thickness of the lines to |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1887 draw, it must be >= 0. LEFT_P non-zero means draw a line on the |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1888 left side of the rectangle. RIGHT_P non-zero means draw a line |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1889 on the right side of the rectangle. CLIP_RECT is the clipping |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1890 rectangle to use when drawing. */ |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1891 |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1892 static void |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1893 w32_draw_box_rect (s, left_x, top_y, right_x, bottom_y, width, |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1894 left_p, right_p, clip_rect) |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1895 struct glyph_string *s; |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1896 int left_x, top_y, right_x, bottom_y, width, left_p, right_p; |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1897 RECT *clip_rect; |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1898 { |
27406
fb36ccd8457c
(w32_fill_rect): Do not try to deal with NULL hdc
Jason Rumney <jasonr@gnu.org>
parents:
27402
diff
changeset
|
1899 w32_set_clip_rectangle (s->hdc, clip_rect); |
48218
01e253345507
(w32_draw_fringe_bitmap): Remove unused local variable window.
Juanma Barranquero <lekktu@gmail.com>
parents:
48025
diff
changeset
|
1900 |
27402
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1901 /* Top. */ |
27406
fb36ccd8457c
(w32_fill_rect): Do not try to deal with NULL hdc
Jason Rumney <jasonr@gnu.org>
parents:
27402
diff
changeset
|
1902 w32_fill_area (s->f, s->hdc, s->face->box_color, |
32670
342abe2141e8
(x_produce_glyphs): Handle unibyte_display_via_language_environment correctly.
Jason Rumney <jasonr@gnu.org>
parents:
32022
diff
changeset
|
1903 left_x, top_y, right_x - left_x + 1, width); |
27402
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1904 |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1905 /* Left. */ |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1906 if (left_p) |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1907 { |
27406
fb36ccd8457c
(w32_fill_rect): Do not try to deal with NULL hdc
Jason Rumney <jasonr@gnu.org>
parents:
27402
diff
changeset
|
1908 w32_fill_area (s->f, s->hdc, s->face->box_color, |
32670
342abe2141e8
(x_produce_glyphs): Handle unibyte_display_via_language_environment correctly.
Jason Rumney <jasonr@gnu.org>
parents:
32022
diff
changeset
|
1909 left_x, top_y, width, bottom_y - top_y + 1); |
27402
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1910 } |
48218
01e253345507
(w32_draw_fringe_bitmap): Remove unused local variable window.
Juanma Barranquero <lekktu@gmail.com>
parents:
48025
diff
changeset
|
1911 |
27402
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1912 /* Bottom. */ |
27406
fb36ccd8457c
(w32_fill_rect): Do not try to deal with NULL hdc
Jason Rumney <jasonr@gnu.org>
parents:
27402
diff
changeset
|
1913 w32_fill_area (s->f, s->hdc, s->face->box_color, |
32670
342abe2141e8
(x_produce_glyphs): Handle unibyte_display_via_language_environment correctly.
Jason Rumney <jasonr@gnu.org>
parents:
32022
diff
changeset
|
1914 left_x, bottom_y - width + 1, right_x - left_x + 1, width); |
48218
01e253345507
(w32_draw_fringe_bitmap): Remove unused local variable window.
Juanma Barranquero <lekktu@gmail.com>
parents:
48025
diff
changeset
|
1915 |
27402
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1916 /* Right. */ |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1917 if (right_p) |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1918 { |
27406
fb36ccd8457c
(w32_fill_rect): Do not try to deal with NULL hdc
Jason Rumney <jasonr@gnu.org>
parents:
27402
diff
changeset
|
1919 w32_fill_area (s->f, s->hdc, s->face->box_color, |
32670
342abe2141e8
(x_produce_glyphs): Handle unibyte_display_via_language_environment correctly.
Jason Rumney <jasonr@gnu.org>
parents:
32022
diff
changeset
|
1920 right_x - width + 1, top_y, width, bottom_y - top_y + 1); |
27402
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1921 } |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1922 |
27406
fb36ccd8457c
(w32_fill_rect): Do not try to deal with NULL hdc
Jason Rumney <jasonr@gnu.org>
parents:
27402
diff
changeset
|
1923 w32_set_clip_rectangle (s->hdc, NULL); |
27402
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1924 } |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1925 |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1926 |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1927 /* Draw a box around glyph string S. */ |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1928 |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1929 static void |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1930 x_draw_glyph_string_box (s) |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1931 struct glyph_string *s; |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1932 { |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1933 int width, left_x, right_x, top_y, bottom_y, last_x, raised_p; |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1934 int left_p, right_p; |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1935 struct glyph *last_glyph; |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1936 RECT clip_rect; |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1937 |
59655
369714ad80ed
(x_draw_glyph_string_box): Fix last_x for full width rows.
Kim F. Storm <storm@cua.dk>
parents:
59332
diff
changeset
|
1938 last_x = ((s->row->full_width_p && !s->w->pseudo_window_p) |
369714ad80ed
(x_draw_glyph_string_box): Fix last_x for full width rows.
Kim F. Storm <storm@cua.dk>
parents:
59332
diff
changeset
|
1939 ? WINDOW_RIGHT_EDGE_X (s->w) |
369714ad80ed
(x_draw_glyph_string_box): Fix last_x for full width rows.
Kim F. Storm <storm@cua.dk>
parents:
59332
diff
changeset
|
1940 : window_box_right (s->w, s->area)); |
48218
01e253345507
(w32_draw_fringe_bitmap): Remove unused local variable window.
Juanma Barranquero <lekktu@gmail.com>
parents:
48025
diff
changeset
|
1941 |
27402
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1942 /* The glyph that may have a right box line. */ |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1943 last_glyph = (s->cmp || s->img |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1944 ? s->first_glyph |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1945 : s->first_glyph + s->nchars - 1); |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1946 |
36045
8be6a1c85409
(x_produce_image_glyph): Pay attention to the case that
Andrew Innes <andrewi@gnu.org>
parents:
36002
diff
changeset
|
1947 width = abs (s->face->box_line_width); |
27402
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1948 raised_p = s->face->box == FACE_RAISED_BOX; |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1949 left_x = s->x; |
40137
5f0d7d58283b
(remember_mouse_glyph): New function.
Jason Rumney <jasonr@gnu.org>
parents:
40078
diff
changeset
|
1950 right_x = ((s->row->full_width_p && s->extends_to_end_of_line_p |
27402
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1951 ? last_x - 1 |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1952 : min (last_x, s->x + s->background_width) - 1)); |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1953 top_y = s->y; |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1954 bottom_y = top_y + s->height - 1; |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1955 |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1956 left_p = (s->first_glyph->left_box_line_p |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1957 || (s->hl == DRAW_MOUSE_FACE |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1958 && (s->prev == NULL |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1959 || s->prev->hl != s->hl))); |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1960 right_p = (last_glyph->right_box_line_p |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1961 || (s->hl == DRAW_MOUSE_FACE |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1962 && (s->next == NULL |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1963 || s->next->hl != s->hl))); |
48218
01e253345507
(w32_draw_fringe_bitmap): Remove unused local variable window.
Juanma Barranquero <lekktu@gmail.com>
parents:
48025
diff
changeset
|
1964 |
50231
c8ea5e4b2129
* w32term.c: Remove consolidated defines and code.
Kim F. Storm <storm@cua.dk>
parents:
50163
diff
changeset
|
1965 get_glyph_string_clip_rect (s, &clip_rect); |
27402
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1966 |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1967 if (s->face->box == FACE_SIMPLE_BOX) |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1968 w32_draw_box_rect (s, left_x, top_y, right_x, bottom_y, width, |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1969 left_p, right_p, &clip_rect); |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1970 else |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1971 { |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1972 x_setup_relief_colors (s); |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1973 w32_draw_relief_rect (s->f, left_x, top_y, right_x, bottom_y, |
55026
08e4e7c06ffc
(w32_draw_relief_rect): Add top_p and bot_p args.
Kim F. Storm <storm@cua.dk>
parents:
54731
diff
changeset
|
1974 width, raised_p, 1, 1, left_p, right_p, &clip_rect); |
27402
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1975 } |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1976 } |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1977 |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1978 |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1979 /* Draw foreground of image glyph string S. */ |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1980 |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1981 static void |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1982 x_draw_image_foreground (s) |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1983 struct glyph_string *s; |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1984 { |
55026
08e4e7c06ffc
(w32_draw_relief_rect): Add top_p and bot_p args.
Kim F. Storm <storm@cua.dk>
parents:
54731
diff
changeset
|
1985 int x = s->x; |
08e4e7c06ffc
(w32_draw_relief_rect): Add top_p and bot_p args.
Kim F. Storm <storm@cua.dk>
parents:
54731
diff
changeset
|
1986 int y = s->ybase - image_ascent (s->img, s->face, &s->slice); |
27402
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1987 |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1988 /* If first glyph of S has a left box line, start drawing it to the |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1989 right of that line. */ |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1990 if (s->face->box != FACE_NO_BOX |
55026
08e4e7c06ffc
(w32_draw_relief_rect): Add top_p and bot_p args.
Kim F. Storm <storm@cua.dk>
parents:
54731
diff
changeset
|
1991 && s->first_glyph->left_box_line_p |
08e4e7c06ffc
(w32_draw_relief_rect): Add top_p and bot_p args.
Kim F. Storm <storm@cua.dk>
parents:
54731
diff
changeset
|
1992 && s->slice.x == 0) |
08e4e7c06ffc
(w32_draw_relief_rect): Add top_p and bot_p args.
Kim F. Storm <storm@cua.dk>
parents:
54731
diff
changeset
|
1993 x += abs (s->face->box_line_width); |
27402
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1994 |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1995 /* If there is a margin around the image, adjust x- and y-position |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1996 by that margin. */ |
55026
08e4e7c06ffc
(w32_draw_relief_rect): Add top_p and bot_p args.
Kim F. Storm <storm@cua.dk>
parents:
54731
diff
changeset
|
1997 if (s->slice.x == 0) |
08e4e7c06ffc
(w32_draw_relief_rect): Add top_p and bot_p args.
Kim F. Storm <storm@cua.dk>
parents:
54731
diff
changeset
|
1998 x += s->img->hmargin; |
08e4e7c06ffc
(w32_draw_relief_rect): Add top_p and bot_p args.
Kim F. Storm <storm@cua.dk>
parents:
54731
diff
changeset
|
1999 if (s->slice.y == 0) |
08e4e7c06ffc
(w32_draw_relief_rect): Add top_p and bot_p args.
Kim F. Storm <storm@cua.dk>
parents:
54731
diff
changeset
|
2000 y += s->img->vmargin; |
27402
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2001 |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2002 SaveDC (s->hdc); |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2003 |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2004 if (s->img->pixmap) |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2005 { |
48345
44c0f878e8b9
(x_draw_image_foreground, x_draw_image_glyph_string)
Jason Rumney <jasonr@gnu.org>
parents:
48218
diff
changeset
|
2006 HDC compat_hdc = CreateCompatibleDC (s->hdc); |
44c0f878e8b9
(x_draw_image_foreground, x_draw_image_glyph_string)
Jason Rumney <jasonr@gnu.org>
parents:
48218
diff
changeset
|
2007 HBRUSH fg_brush = CreateSolidBrush (s->gc->foreground); |
44c0f878e8b9
(x_draw_image_foreground, x_draw_image_glyph_string)
Jason Rumney <jasonr@gnu.org>
parents:
48218
diff
changeset
|
2008 HBRUSH orig_brush = SelectObject (s->hdc, fg_brush); |
44c0f878e8b9
(x_draw_image_foreground, x_draw_image_glyph_string)
Jason Rumney <jasonr@gnu.org>
parents:
48218
diff
changeset
|
2009 HGDIOBJ orig_obj = SelectObject (compat_hdc, s->img->pixmap); |
44c0f878e8b9
(x_draw_image_foreground, x_draw_image_glyph_string)
Jason Rumney <jasonr@gnu.org>
parents:
48218
diff
changeset
|
2010 SetBkColor (compat_hdc, RGB (255, 255, 255)); |
44c0f878e8b9
(x_draw_image_foreground, x_draw_image_glyph_string)
Jason Rumney <jasonr@gnu.org>
parents:
48218
diff
changeset
|
2011 SetTextColor (s->hdc, RGB (0, 0, 0)); |
44c0f878e8b9
(x_draw_image_foreground, x_draw_image_glyph_string)
Jason Rumney <jasonr@gnu.org>
parents:
48218
diff
changeset
|
2012 x_set_glyph_string_clipping (s); |
44c0f878e8b9
(x_draw_image_foreground, x_draw_image_glyph_string)
Jason Rumney <jasonr@gnu.org>
parents:
48218
diff
changeset
|
2013 |
27402
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2014 if (s->img->mask) |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2015 { |
48345
44c0f878e8b9
(x_draw_image_foreground, x_draw_image_glyph_string)
Jason Rumney <jasonr@gnu.org>
parents:
48218
diff
changeset
|
2016 HDC mask_dc = CreateCompatibleDC (s->hdc); |
44c0f878e8b9
(x_draw_image_foreground, x_draw_image_glyph_string)
Jason Rumney <jasonr@gnu.org>
parents:
48218
diff
changeset
|
2017 HGDIOBJ mask_orig_obj = SelectObject (mask_dc, s->img->mask); |
44c0f878e8b9
(x_draw_image_foreground, x_draw_image_glyph_string)
Jason Rumney <jasonr@gnu.org>
parents:
48218
diff
changeset
|
2018 |
44c0f878e8b9
(x_draw_image_foreground, x_draw_image_glyph_string)
Jason Rumney <jasonr@gnu.org>
parents:
48218
diff
changeset
|
2019 SetTextColor (s->hdc, RGB (255, 255, 255)); |
44c0f878e8b9
(x_draw_image_foreground, x_draw_image_glyph_string)
Jason Rumney <jasonr@gnu.org>
parents:
48218
diff
changeset
|
2020 SetBkColor (s->hdc, RGB (0, 0, 0)); |
44c0f878e8b9
(x_draw_image_foreground, x_draw_image_glyph_string)
Jason Rumney <jasonr@gnu.org>
parents:
48218
diff
changeset
|
2021 |
55026
08e4e7c06ffc
(w32_draw_relief_rect): Add top_p and bot_p args.
Kim F. Storm <storm@cua.dk>
parents:
54731
diff
changeset
|
2022 BitBlt (s->hdc, x, y, s->slice.width, s->slice.height, |
08e4e7c06ffc
(w32_draw_relief_rect): Add top_p and bot_p args.
Kim F. Storm <storm@cua.dk>
parents:
54731
diff
changeset
|
2023 compat_hdc, s->slice.x, s->slice.y, SRCINVERT); |
08e4e7c06ffc
(w32_draw_relief_rect): Add top_p and bot_p args.
Kim F. Storm <storm@cua.dk>
parents:
54731
diff
changeset
|
2024 BitBlt (s->hdc, x, y, s->slice.width, s->slice.height, |
08e4e7c06ffc
(w32_draw_relief_rect): Add top_p and bot_p args.
Kim F. Storm <storm@cua.dk>
parents:
54731
diff
changeset
|
2025 mask_dc, s->slice.x, s->slice.y, SRCAND); |
08e4e7c06ffc
(w32_draw_relief_rect): Add top_p and bot_p args.
Kim F. Storm <storm@cua.dk>
parents:
54731
diff
changeset
|
2026 BitBlt (s->hdc, x, y, s->slice.width, s->slice.height, |
08e4e7c06ffc
(w32_draw_relief_rect): Add top_p and bot_p args.
Kim F. Storm <storm@cua.dk>
parents:
54731
diff
changeset
|
2027 compat_hdc, s->slice.x, s->slice.y, SRCINVERT); |
48345
44c0f878e8b9
(x_draw_image_foreground, x_draw_image_glyph_string)
Jason Rumney <jasonr@gnu.org>
parents:
48218
diff
changeset
|
2028 |
44c0f878e8b9
(x_draw_image_foreground, x_draw_image_glyph_string)
Jason Rumney <jasonr@gnu.org>
parents:
48218
diff
changeset
|
2029 SelectObject (mask_dc, mask_orig_obj); |
44c0f878e8b9
(x_draw_image_foreground, x_draw_image_glyph_string)
Jason Rumney <jasonr@gnu.org>
parents:
48218
diff
changeset
|
2030 DeleteDC (mask_dc); |
27402
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2031 } |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2032 else |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2033 { |
48345
44c0f878e8b9
(x_draw_image_foreground, x_draw_image_glyph_string)
Jason Rumney <jasonr@gnu.org>
parents:
48218
diff
changeset
|
2034 SetTextColor (s->hdc, s->gc->foreground); |
44c0f878e8b9
(x_draw_image_foreground, x_draw_image_glyph_string)
Jason Rumney <jasonr@gnu.org>
parents:
48218
diff
changeset
|
2035 SetBkColor (s->hdc, s->gc->background); |
44c0f878e8b9
(x_draw_image_foreground, x_draw_image_glyph_string)
Jason Rumney <jasonr@gnu.org>
parents:
48218
diff
changeset
|
2036 |
55026
08e4e7c06ffc
(w32_draw_relief_rect): Add top_p and bot_p args.
Kim F. Storm <storm@cua.dk>
parents:
54731
diff
changeset
|
2037 BitBlt (s->hdc, x, y, s->slice.width, s->slice.height, |
08e4e7c06ffc
(w32_draw_relief_rect): Add top_p and bot_p args.
Kim F. Storm <storm@cua.dk>
parents:
54731
diff
changeset
|
2038 compat_hdc, s->slice.x, s->slice.y, SRCCOPY); |
27402
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2039 |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2040 /* When the image has a mask, we can expect that at |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2041 least part of a mouse highlight or a block cursor will |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2042 be visible. If the image doesn't have a mask, make |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2043 a block cursor visible by drawing a rectangle around |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2044 the image. I believe it's looking better if we do |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2045 nothing here for mouse-face. */ |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2046 if (s->hl == DRAW_CURSOR) |
45196
fb8359237a78
(x_draw_image_foreground, w32_draw_image_foreground_1):
Kim F. Storm <storm@cua.dk>
parents:
44641
diff
changeset
|
2047 { |
fb8359237a78
(x_draw_image_foreground, w32_draw_image_foreground_1):
Kim F. Storm <storm@cua.dk>
parents:
44641
diff
changeset
|
2048 int r = s->img->relief; |
fb8359237a78
(x_draw_image_foreground, w32_draw_image_foreground_1):
Kim F. Storm <storm@cua.dk>
parents:
44641
diff
changeset
|
2049 if (r < 0) r = -r; |
fb8359237a78
(x_draw_image_foreground, w32_draw_image_foreground_1):
Kim F. Storm <storm@cua.dk>
parents:
44641
diff
changeset
|
2050 w32_draw_rectangle (s->hdc, s->gc, x - r, y - r , |
55026
08e4e7c06ffc
(w32_draw_relief_rect): Add top_p and bot_p args.
Kim F. Storm <storm@cua.dk>
parents:
54731
diff
changeset
|
2051 s->slice.width + r*2 - 1, |
08e4e7c06ffc
(w32_draw_relief_rect): Add top_p and bot_p args.
Kim F. Storm <storm@cua.dk>
parents:
54731
diff
changeset
|
2052 s->slice.height + r*2 - 1); |
45196
fb8359237a78
(x_draw_image_foreground, w32_draw_image_foreground_1):
Kim F. Storm <storm@cua.dk>
parents:
44641
diff
changeset
|
2053 } |
27402
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2054 } |
48345
44c0f878e8b9
(x_draw_image_foreground, x_draw_image_glyph_string)
Jason Rumney <jasonr@gnu.org>
parents:
48218
diff
changeset
|
2055 |
44c0f878e8b9
(x_draw_image_foreground, x_draw_image_glyph_string)
Jason Rumney <jasonr@gnu.org>
parents:
48218
diff
changeset
|
2056 w32_set_clip_rectangle (s->hdc, NULL); |
44c0f878e8b9
(x_draw_image_foreground, x_draw_image_glyph_string)
Jason Rumney <jasonr@gnu.org>
parents:
48218
diff
changeset
|
2057 SelectObject (s->hdc, orig_brush); |
44c0f878e8b9
(x_draw_image_foreground, x_draw_image_glyph_string)
Jason Rumney <jasonr@gnu.org>
parents:
48218
diff
changeset
|
2058 DeleteObject (fg_brush); |
44c0f878e8b9
(x_draw_image_foreground, x_draw_image_glyph_string)
Jason Rumney <jasonr@gnu.org>
parents:
48218
diff
changeset
|
2059 SelectObject (compat_hdc, orig_obj); |
44c0f878e8b9
(x_draw_image_foreground, x_draw_image_glyph_string)
Jason Rumney <jasonr@gnu.org>
parents:
48218
diff
changeset
|
2060 DeleteDC (compat_hdc); |
27402
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2061 } |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2062 else |
55026
08e4e7c06ffc
(w32_draw_relief_rect): Add top_p and bot_p args.
Kim F. Storm <storm@cua.dk>
parents:
54731
diff
changeset
|
2063 w32_draw_rectangle (s->hdc, s->gc, x, y, |
08e4e7c06ffc
(w32_draw_relief_rect): Add top_p and bot_p args.
Kim F. Storm <storm@cua.dk>
parents:
54731
diff
changeset
|
2064 s->slice.width - 1, s->slice.height - 1); |
27402
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2065 |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2066 RestoreDC (s->hdc ,-1); |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2067 } |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2068 |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2069 |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2070 /* Draw a relief around the image glyph string S. */ |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2071 |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2072 static void |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2073 x_draw_image_relief (s) |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2074 struct glyph_string *s; |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2075 { |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2076 int x0, y0, x1, y1, thick, raised_p; |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2077 RECT r; |
55026
08e4e7c06ffc
(w32_draw_relief_rect): Add top_p and bot_p args.
Kim F. Storm <storm@cua.dk>
parents:
54731
diff
changeset
|
2078 int x = s->x; |
08e4e7c06ffc
(w32_draw_relief_rect): Add top_p and bot_p args.
Kim F. Storm <storm@cua.dk>
parents:
54731
diff
changeset
|
2079 int y = s->ybase - image_ascent (s->img, s->face, &s->slice); |
48218
01e253345507
(w32_draw_fringe_bitmap): Remove unused local variable window.
Juanma Barranquero <lekktu@gmail.com>
parents:
48025
diff
changeset
|
2080 |
27402
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2081 /* If first glyph of S has a left box line, start drawing it to the |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2082 right of that line. */ |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2083 if (s->face->box != FACE_NO_BOX |
55026
08e4e7c06ffc
(w32_draw_relief_rect): Add top_p and bot_p args.
Kim F. Storm <storm@cua.dk>
parents:
54731
diff
changeset
|
2084 && s->first_glyph->left_box_line_p |
08e4e7c06ffc
(w32_draw_relief_rect): Add top_p and bot_p args.
Kim F. Storm <storm@cua.dk>
parents:
54731
diff
changeset
|
2085 && s->slice.x == 0) |
08e4e7c06ffc
(w32_draw_relief_rect): Add top_p and bot_p args.
Kim F. Storm <storm@cua.dk>
parents:
54731
diff
changeset
|
2086 x += abs (s->face->box_line_width); |
48218
01e253345507
(w32_draw_fringe_bitmap): Remove unused local variable window.
Juanma Barranquero <lekktu@gmail.com>
parents:
48025
diff
changeset
|
2087 |
27402
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2088 /* If there is a margin around the image, adjust x- and y-position |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2089 by that margin. */ |
55026
08e4e7c06ffc
(w32_draw_relief_rect): Add top_p and bot_p args.
Kim F. Storm <storm@cua.dk>
parents:
54731
diff
changeset
|
2090 if (s->slice.x == 0) |
08e4e7c06ffc
(w32_draw_relief_rect): Add top_p and bot_p args.
Kim F. Storm <storm@cua.dk>
parents:
54731
diff
changeset
|
2091 x += s->img->hmargin; |
08e4e7c06ffc
(w32_draw_relief_rect): Add top_p and bot_p args.
Kim F. Storm <storm@cua.dk>
parents:
54731
diff
changeset
|
2092 if (s->slice.y == 0) |
08e4e7c06ffc
(w32_draw_relief_rect): Add top_p and bot_p args.
Kim F. Storm <storm@cua.dk>
parents:
54731
diff
changeset
|
2093 y += s->img->vmargin; |
48218
01e253345507
(w32_draw_fringe_bitmap): Remove unused local variable window.
Juanma Barranquero <lekktu@gmail.com>
parents:
48025
diff
changeset
|
2094 |
27402
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2095 if (s->hl == DRAW_IMAGE_SUNKEN |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2096 || s->hl == DRAW_IMAGE_RAISED) |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2097 { |
42538
2b4179d13ed7
(x_setup_relief_colors): Don't compute an image's
Jason Rumney <jasonr@gnu.org>
parents:
42206
diff
changeset
|
2098 thick = tool_bar_button_relief >= 0 ? tool_bar_button_relief : DEFAULT_TOOL_BAR_BUTTON_RELIEF; |
27402
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2099 raised_p = s->hl == DRAW_IMAGE_RAISED; |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2100 } |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2101 else |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2102 { |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2103 thick = abs (s->img->relief); |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2104 raised_p = s->img->relief > 0; |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2105 } |
48218
01e253345507
(w32_draw_fringe_bitmap): Remove unused local variable window.
Juanma Barranquero <lekktu@gmail.com>
parents:
48025
diff
changeset
|
2106 |
27402
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2107 x0 = x - thick; |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2108 y0 = y - thick; |
55026
08e4e7c06ffc
(w32_draw_relief_rect): Add top_p and bot_p args.
Kim F. Storm <storm@cua.dk>
parents:
54731
diff
changeset
|
2109 x1 = x + s->slice.width + thick - 1; |
08e4e7c06ffc
(w32_draw_relief_rect): Add top_p and bot_p args.
Kim F. Storm <storm@cua.dk>
parents:
54731
diff
changeset
|
2110 y1 = y + s->slice.height + thick - 1; |
48218
01e253345507
(w32_draw_fringe_bitmap): Remove unused local variable window.
Juanma Barranquero <lekktu@gmail.com>
parents:
48025
diff
changeset
|
2111 |
27402
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2112 x_setup_relief_colors (s); |
50231
c8ea5e4b2129
* w32term.c: Remove consolidated defines and code.
Kim F. Storm <storm@cua.dk>
parents:
50163
diff
changeset
|
2113 get_glyph_string_clip_rect (s, &r); |
55026
08e4e7c06ffc
(w32_draw_relief_rect): Add top_p and bot_p args.
Kim F. Storm <storm@cua.dk>
parents:
54731
diff
changeset
|
2114 w32_draw_relief_rect (s->f, x0, y0, x1, y1, thick, raised_p, |
08e4e7c06ffc
(w32_draw_relief_rect): Add top_p and bot_p args.
Kim F. Storm <storm@cua.dk>
parents:
54731
diff
changeset
|
2115 s->slice.y == 0, |
08e4e7c06ffc
(w32_draw_relief_rect): Add top_p and bot_p args.
Kim F. Storm <storm@cua.dk>
parents:
54731
diff
changeset
|
2116 s->slice.y + s->slice.height == s->img->height, |
08e4e7c06ffc
(w32_draw_relief_rect): Add top_p and bot_p args.
Kim F. Storm <storm@cua.dk>
parents:
54731
diff
changeset
|
2117 s->slice.x == 0, |
08e4e7c06ffc
(w32_draw_relief_rect): Add top_p and bot_p args.
Kim F. Storm <storm@cua.dk>
parents:
54731
diff
changeset
|
2118 s->slice.x + s->slice.width == s->img->width, |
08e4e7c06ffc
(w32_draw_relief_rect): Add top_p and bot_p args.
Kim F. Storm <storm@cua.dk>
parents:
54731
diff
changeset
|
2119 &r); |
27402
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2120 } |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2121 |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2122 |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2123 /* Draw the foreground of image glyph string S to PIXMAP. */ |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2124 |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2125 static void |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2126 w32_draw_image_foreground_1 (s, pixmap) |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2127 struct glyph_string *s; |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2128 HBITMAP pixmap; |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2129 { |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2130 HDC hdc = CreateCompatibleDC (s->hdc); |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2131 HGDIOBJ orig_hdc_obj = SelectObject (hdc, pixmap); |
55026
08e4e7c06ffc
(w32_draw_relief_rect): Add top_p and bot_p args.
Kim F. Storm <storm@cua.dk>
parents:
54731
diff
changeset
|
2132 int x = 0; |
08e4e7c06ffc
(w32_draw_relief_rect): Add top_p and bot_p args.
Kim F. Storm <storm@cua.dk>
parents:
54731
diff
changeset
|
2133 int y = s->ybase - s->y - image_ascent (s->img, s->face, &s->slice); |
27402
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2134 |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2135 /* If first glyph of S has a left box line, start drawing it to the |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2136 right of that line. */ |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2137 if (s->face->box != FACE_NO_BOX |
55026
08e4e7c06ffc
(w32_draw_relief_rect): Add top_p and bot_p args.
Kim F. Storm <storm@cua.dk>
parents:
54731
diff
changeset
|
2138 && s->first_glyph->left_box_line_p |
08e4e7c06ffc
(w32_draw_relief_rect): Add top_p and bot_p args.
Kim F. Storm <storm@cua.dk>
parents:
54731
diff
changeset
|
2139 && s->slice.x == 0) |
08e4e7c06ffc
(w32_draw_relief_rect): Add top_p and bot_p args.
Kim F. Storm <storm@cua.dk>
parents:
54731
diff
changeset
|
2140 x += abs (s->face->box_line_width); |
27402
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2141 |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2142 /* If there is a margin around the image, adjust x- and y-position |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2143 by that margin. */ |
55026
08e4e7c06ffc
(w32_draw_relief_rect): Add top_p and bot_p args.
Kim F. Storm <storm@cua.dk>
parents:
54731
diff
changeset
|
2144 if (s->slice.x == 0) |
08e4e7c06ffc
(w32_draw_relief_rect): Add top_p and bot_p args.
Kim F. Storm <storm@cua.dk>
parents:
54731
diff
changeset
|
2145 x += s->img->hmargin; |
08e4e7c06ffc
(w32_draw_relief_rect): Add top_p and bot_p args.
Kim F. Storm <storm@cua.dk>
parents:
54731
diff
changeset
|
2146 if (s->slice.y == 0) |
08e4e7c06ffc
(w32_draw_relief_rect): Add top_p and bot_p args.
Kim F. Storm <storm@cua.dk>
parents:
54731
diff
changeset
|
2147 y += s->img->vmargin; |
27402
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2148 |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2149 if (s->img->pixmap) |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2150 { |
48345
44c0f878e8b9
(x_draw_image_foreground, x_draw_image_glyph_string)
Jason Rumney <jasonr@gnu.org>
parents:
48218
diff
changeset
|
2151 HDC compat_hdc = CreateCompatibleDC (hdc); |
44c0f878e8b9
(x_draw_image_foreground, x_draw_image_glyph_string)
Jason Rumney <jasonr@gnu.org>
parents:
48218
diff
changeset
|
2152 HBRUSH fg_brush = CreateSolidBrush (s->gc->foreground); |
44c0f878e8b9
(x_draw_image_foreground, x_draw_image_glyph_string)
Jason Rumney <jasonr@gnu.org>
parents:
48218
diff
changeset
|
2153 HBRUSH orig_brush = SelectObject (hdc, fg_brush); |
44c0f878e8b9
(x_draw_image_foreground, x_draw_image_glyph_string)
Jason Rumney <jasonr@gnu.org>
parents:
48218
diff
changeset
|
2154 HGDIOBJ orig_obj = SelectObject (compat_hdc, s->img->pixmap); |
44c0f878e8b9
(x_draw_image_foreground, x_draw_image_glyph_string)
Jason Rumney <jasonr@gnu.org>
parents:
48218
diff
changeset
|
2155 |
27402
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2156 if (s->img->mask) |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2157 { |
48345
44c0f878e8b9
(x_draw_image_foreground, x_draw_image_glyph_string)
Jason Rumney <jasonr@gnu.org>
parents:
48218
diff
changeset
|
2158 HDC mask_dc = CreateCompatibleDC (hdc); |
44c0f878e8b9
(x_draw_image_foreground, x_draw_image_glyph_string)
Jason Rumney <jasonr@gnu.org>
parents:
48218
diff
changeset
|
2159 HGDIOBJ mask_orig_obj = SelectObject (mask_dc, s->img->mask); |
44c0f878e8b9
(x_draw_image_foreground, x_draw_image_glyph_string)
Jason Rumney <jasonr@gnu.org>
parents:
48218
diff
changeset
|
2160 |
44c0f878e8b9
(x_draw_image_foreground, x_draw_image_glyph_string)
Jason Rumney <jasonr@gnu.org>
parents:
48218
diff
changeset
|
2161 SetTextColor (hdc, RGB (0, 0, 0)); |
44c0f878e8b9
(x_draw_image_foreground, x_draw_image_glyph_string)
Jason Rumney <jasonr@gnu.org>
parents:
48218
diff
changeset
|
2162 SetBkColor (hdc, RGB (255, 255, 255)); |
55026
08e4e7c06ffc
(w32_draw_relief_rect): Add top_p and bot_p args.
Kim F. Storm <storm@cua.dk>
parents:
54731
diff
changeset
|
2163 BitBlt (hdc, x, y, s->slice.width, s->slice.height, |
08e4e7c06ffc
(w32_draw_relief_rect): Add top_p and bot_p args.
Kim F. Storm <storm@cua.dk>
parents:
54731
diff
changeset
|
2164 compat_hdc, s->slice.x, s->slice.y, SRCINVERT); |
08e4e7c06ffc
(w32_draw_relief_rect): Add top_p and bot_p args.
Kim F. Storm <storm@cua.dk>
parents:
54731
diff
changeset
|
2165 BitBlt (hdc, x, y, s->slice.width, s->slice.height, |
08e4e7c06ffc
(w32_draw_relief_rect): Add top_p and bot_p args.
Kim F. Storm <storm@cua.dk>
parents:
54731
diff
changeset
|
2166 mask_dc, s->slice.x, s->slice.y, SRCAND); |
08e4e7c06ffc
(w32_draw_relief_rect): Add top_p and bot_p args.
Kim F. Storm <storm@cua.dk>
parents:
54731
diff
changeset
|
2167 BitBlt (hdc, x, y, s->slice.width, s->slice.height, |
08e4e7c06ffc
(w32_draw_relief_rect): Add top_p and bot_p args.
Kim F. Storm <storm@cua.dk>
parents:
54731
diff
changeset
|
2168 compat_hdc, s->slice.x, s->slice.y, SRCINVERT); |
48345
44c0f878e8b9
(x_draw_image_foreground, x_draw_image_glyph_string)
Jason Rumney <jasonr@gnu.org>
parents:
48218
diff
changeset
|
2169 |
44c0f878e8b9
(x_draw_image_foreground, x_draw_image_glyph_string)
Jason Rumney <jasonr@gnu.org>
parents:
48218
diff
changeset
|
2170 SelectObject (mask_dc, mask_orig_obj); |
44c0f878e8b9
(x_draw_image_foreground, x_draw_image_glyph_string)
Jason Rumney <jasonr@gnu.org>
parents:
48218
diff
changeset
|
2171 DeleteDC (mask_dc); |
27402
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2172 } |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2173 else |
13434 | 2174 { |
48345
44c0f878e8b9
(x_draw_image_foreground, x_draw_image_glyph_string)
Jason Rumney <jasonr@gnu.org>
parents:
48218
diff
changeset
|
2175 SetTextColor (hdc, s->gc->foreground); |
44c0f878e8b9
(x_draw_image_foreground, x_draw_image_glyph_string)
Jason Rumney <jasonr@gnu.org>
parents:
48218
diff
changeset
|
2176 SetBkColor (hdc, s->gc->background); |
44c0f878e8b9
(x_draw_image_foreground, x_draw_image_glyph_string)
Jason Rumney <jasonr@gnu.org>
parents:
48218
diff
changeset
|
2177 |
55026
08e4e7c06ffc
(w32_draw_relief_rect): Add top_p and bot_p args.
Kim F. Storm <storm@cua.dk>
parents:
54731
diff
changeset
|
2178 BitBlt (hdc, x, y, s->slice.width, s->slice.height, |
08e4e7c06ffc
(w32_draw_relief_rect): Add top_p and bot_p args.
Kim F. Storm <storm@cua.dk>
parents:
54731
diff
changeset
|
2179 compat_hdc, s->slice.x, s->slice.y, SRCCOPY); |
27402
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2180 |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2181 /* When the image has a mask, we can expect that at |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2182 least part of a mouse highlight or a block cursor will |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2183 be visible. If the image doesn't have a mask, make |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2184 a block cursor visible by drawing a rectangle around |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2185 the image. I believe it's looking better if we do |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2186 nothing here for mouse-face. */ |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2187 if (s->hl == DRAW_CURSOR) |
45196
fb8359237a78
(x_draw_image_foreground, w32_draw_image_foreground_1):
Kim F. Storm <storm@cua.dk>
parents:
44641
diff
changeset
|
2188 { |
fb8359237a78
(x_draw_image_foreground, w32_draw_image_foreground_1):
Kim F. Storm <storm@cua.dk>
parents:
44641
diff
changeset
|
2189 int r = s->img->relief; |
fb8359237a78
(x_draw_image_foreground, w32_draw_image_foreground_1):
Kim F. Storm <storm@cua.dk>
parents:
44641
diff
changeset
|
2190 if (r < 0) r = -r; |
55026
08e4e7c06ffc
(w32_draw_relief_rect): Add top_p and bot_p args.
Kim F. Storm <storm@cua.dk>
parents:
54731
diff
changeset
|
2191 w32_draw_rectangle (hdc, s->gc, x - r, y - r, |
08e4e7c06ffc
(w32_draw_relief_rect): Add top_p and bot_p args.
Kim F. Storm <storm@cua.dk>
parents:
54731
diff
changeset
|
2192 s->slice.width + r*2 - 1, |
08e4e7c06ffc
(w32_draw_relief_rect): Add top_p and bot_p args.
Kim F. Storm <storm@cua.dk>
parents:
54731
diff
changeset
|
2193 s->slice.height + r*2 - 1); |
45196
fb8359237a78
(x_draw_image_foreground, w32_draw_image_foreground_1):
Kim F. Storm <storm@cua.dk>
parents:
44641
diff
changeset
|
2194 } |
13434 | 2195 } |
48345
44c0f878e8b9
(x_draw_image_foreground, x_draw_image_glyph_string)
Jason Rumney <jasonr@gnu.org>
parents:
48218
diff
changeset
|
2196 |
44c0f878e8b9
(x_draw_image_foreground, x_draw_image_glyph_string)
Jason Rumney <jasonr@gnu.org>
parents:
48218
diff
changeset
|
2197 SelectObject (hdc, orig_brush); |
44c0f878e8b9
(x_draw_image_foreground, x_draw_image_glyph_string)
Jason Rumney <jasonr@gnu.org>
parents:
48218
diff
changeset
|
2198 DeleteObject (fg_brush); |
44c0f878e8b9
(x_draw_image_foreground, x_draw_image_glyph_string)
Jason Rumney <jasonr@gnu.org>
parents:
48218
diff
changeset
|
2199 SelectObject (compat_hdc, orig_obj); |
44c0f878e8b9
(x_draw_image_foreground, x_draw_image_glyph_string)
Jason Rumney <jasonr@gnu.org>
parents:
48218
diff
changeset
|
2200 DeleteDC (compat_hdc); |
27402
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2201 } |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2202 else |
55026
08e4e7c06ffc
(w32_draw_relief_rect): Add top_p and bot_p args.
Kim F. Storm <storm@cua.dk>
parents:
54731
diff
changeset
|
2203 w32_draw_rectangle (hdc, s->gc, x, y, |
08e4e7c06ffc
(w32_draw_relief_rect): Add top_p and bot_p args.
Kim F. Storm <storm@cua.dk>
parents:
54731
diff
changeset
|
2204 s->slice.width - 1, s->slice.height - 1); |
27402
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2205 |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2206 SelectObject (hdc, orig_hdc_obj); |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2207 DeleteDC (hdc); |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2208 } |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2209 |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2210 |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2211 /* Draw part of the background of glyph string S. X, Y, W, and H |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2212 give the rectangle to draw. */ |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2213 |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2214 static void |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2215 x_draw_glyph_string_bg_rect (s, x, y, w, h) |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2216 struct glyph_string *s; |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2217 int x, y, w, h; |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2218 { |
33097
84590a646acc
(x_produce_glyphs): Handle composite characters.
Jason Rumney <jasonr@gnu.org>
parents:
33037
diff
changeset
|
2219 #if 0 /* TODO: stipple */ |
27402
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2220 if (s->stippled_p) |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2221 { |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2222 /* Fill background with a stipple pattern. */ |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2223 XSetFillStyle (s->display, s->gc, FillOpaqueStippled); |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2224 XFillRectangle (s->display, s->window, s->gc, x, y, w, h); |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2225 XSetFillStyle (s->display, s->gc, FillSolid); |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2226 } |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2227 else |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2228 #endif |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2229 x_clear_glyph_string_rect (s, x, y, w, h); |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2230 } |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2231 |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2232 |
48218
01e253345507
(w32_draw_fringe_bitmap): Remove unused local variable window.
Juanma Barranquero <lekktu@gmail.com>
parents:
48025
diff
changeset
|
2233 /* Draw image glyph string S. |
27402
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2234 |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2235 s->y |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2236 s->x +------------------------- |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2237 | s->face->box |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2238 | |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2239 | +------------------------- |
35287
28e0cac22fbd
(x_produce_image_glyph, x_draw_image_foreground)
Jason Rumney <jasonr@gnu.org>
parents:
35000
diff
changeset
|
2240 | | s->img->vmargin |
27402
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2241 | | |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2242 | | +------------------- |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2243 | | | the image |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2244 |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2245 */ |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2246 |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2247 static void |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2248 x_draw_image_glyph_string (s) |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2249 struct glyph_string *s; |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2250 { |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2251 int x, y; |
36045
8be6a1c85409
(x_produce_image_glyph): Pay attention to the case that
Andrew Innes <andrewi@gnu.org>
parents:
36002
diff
changeset
|
2252 int box_line_hwidth = abs (s->face->box_line_width); |
8be6a1c85409
(x_produce_image_glyph): Pay attention to the case that
Andrew Innes <andrewi@gnu.org>
parents:
36002
diff
changeset
|
2253 int box_line_vwidth = max (s->face->box_line_width, 0); |
27402
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2254 int height; |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2255 HBITMAP pixmap = 0; |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2256 |
36045
8be6a1c85409
(x_produce_image_glyph): Pay attention to the case that
Andrew Innes <andrewi@gnu.org>
parents:
36002
diff
changeset
|
2257 height = s->height - 2 * box_line_vwidth; |
27402
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2258 |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2259 /* Fill background with face under the image. Do it only if row is |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2260 taller than image or if image has a clip mask to reduce |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2261 flickering. */ |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2262 s->stippled_p = s->face->stipple != 0; |
55026
08e4e7c06ffc
(w32_draw_relief_rect): Add top_p and bot_p args.
Kim F. Storm <storm@cua.dk>
parents:
54731
diff
changeset
|
2263 if (height > s->slice.height |
35384
e50a7f9ce65e
(x_produce_stretch_glyph): Only use Qspace when GLYPH_DEBUG is defined.
Jason Rumney <jasonr@gnu.org>
parents:
35287
diff
changeset
|
2264 || s->img->hmargin |
35287
28e0cac22fbd
(x_produce_image_glyph, x_draw_image_foreground)
Jason Rumney <jasonr@gnu.org>
parents:
35000
diff
changeset
|
2265 || s->img->vmargin |
27402
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2266 || s->img->mask |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2267 || s->img->pixmap == 0 |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2268 || s->width != s->background_width) |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2269 { |
55026
08e4e7c06ffc
(w32_draw_relief_rect): Add top_p and bot_p args.
Kim F. Storm <storm@cua.dk>
parents:
54731
diff
changeset
|
2270 x = s->x; |
08e4e7c06ffc
(w32_draw_relief_rect): Add top_p and bot_p args.
Kim F. Storm <storm@cua.dk>
parents:
54731
diff
changeset
|
2271 if (s->first_glyph->left_box_line_p |
08e4e7c06ffc
(w32_draw_relief_rect): Add top_p and bot_p args.
Kim F. Storm <storm@cua.dk>
parents:
54731
diff
changeset
|
2272 && s->slice.x == 0) |
08e4e7c06ffc
(w32_draw_relief_rect): Add top_p and bot_p args.
Kim F. Storm <storm@cua.dk>
parents:
54731
diff
changeset
|
2273 x += box_line_hwidth; |
08e4e7c06ffc
(w32_draw_relief_rect): Add top_p and bot_p args.
Kim F. Storm <storm@cua.dk>
parents:
54731
diff
changeset
|
2274 |
08e4e7c06ffc
(w32_draw_relief_rect): Add top_p and bot_p args.
Kim F. Storm <storm@cua.dk>
parents:
54731
diff
changeset
|
2275 y = s->y; |
08e4e7c06ffc
(w32_draw_relief_rect): Add top_p and bot_p args.
Kim F. Storm <storm@cua.dk>
parents:
54731
diff
changeset
|
2276 if (s->slice.y == 0) |
08e4e7c06ffc
(w32_draw_relief_rect): Add top_p and bot_p args.
Kim F. Storm <storm@cua.dk>
parents:
54731
diff
changeset
|
2277 y += box_line_vwidth; |
08e4e7c06ffc
(w32_draw_relief_rect): Add top_p and bot_p args.
Kim F. Storm <storm@cua.dk>
parents:
54731
diff
changeset
|
2278 |
48345
44c0f878e8b9
(x_draw_image_foreground, x_draw_image_glyph_string)
Jason Rumney <jasonr@gnu.org>
parents:
48218
diff
changeset
|
2279 #if 0 /* TODO: figure out if we need to do this on Windows. */ |
27402
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2280 if (s->img->mask) |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2281 { |
35384
e50a7f9ce65e
(x_produce_stretch_glyph): Only use Qspace when GLYPH_DEBUG is defined.
Jason Rumney <jasonr@gnu.org>
parents:
35287
diff
changeset
|
2282 /* Create a pixmap as large as the glyph string. Fill it |
e50a7f9ce65e
(x_produce_stretch_glyph): Only use Qspace when GLYPH_DEBUG is defined.
Jason Rumney <jasonr@gnu.org>
parents:
35287
diff
changeset
|
2283 with the background color. Copy the image to it, using |
e50a7f9ce65e
(x_produce_stretch_glyph): Only use Qspace when GLYPH_DEBUG is defined.
Jason Rumney <jasonr@gnu.org>
parents:
35287
diff
changeset
|
2284 its mask. Copy the temporary pixmap to the display. */ |
27402
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2285 Screen *screen = FRAME_X_SCREEN (s->f); |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2286 int depth = DefaultDepthOfScreen (screen); |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2287 |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2288 /* Create a pixmap as large as the glyph string. */ |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2289 pixmap = XCreatePixmap (s->display, s->window, |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2290 s->background_width, |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2291 s->height, depth); |
48218
01e253345507
(w32_draw_fringe_bitmap): Remove unused local variable window.
Juanma Barranquero <lekktu@gmail.com>
parents:
48025
diff
changeset
|
2292 |
27402
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2293 /* Don't clip in the following because we're working on the |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2294 pixmap. */ |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2295 XSetClipMask (s->display, s->gc, None); |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2296 |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2297 /* Fill the pixmap with the background color/stipple. */ |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2298 if (s->stippled_p) |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2299 { |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2300 /* Fill background with a stipple pattern. */ |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2301 XSetFillStyle (s->display, s->gc, FillOpaqueStippled); |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2302 XFillRectangle (s->display, pixmap, s->gc, |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2303 0, 0, s->background_width, s->height); |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2304 XSetFillStyle (s->display, s->gc, FillSolid); |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2305 } |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2306 else |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2307 { |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2308 XGCValues xgcv; |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2309 XGetGCValues (s->display, s->gc, GCForeground | GCBackground, |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2310 &xgcv); |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2311 XSetForeground (s->display, s->gc, xgcv.background); |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2312 XFillRectangle (s->display, pixmap, s->gc, |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2313 0, 0, s->background_width, s->height); |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2314 XSetForeground (s->display, s->gc, xgcv.foreground); |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2315 } |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2316 } |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2317 else |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2318 #endif |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2319 x_draw_glyph_string_bg_rect (s, x, y, s->background_width, height); |
48218
01e253345507
(w32_draw_fringe_bitmap): Remove unused local variable window.
Juanma Barranquero <lekktu@gmail.com>
parents:
48025
diff
changeset
|
2320 |
27402
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2321 s->background_filled_p = 1; |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2322 } |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2323 |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2324 /* Draw the foreground. */ |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2325 if (pixmap != 0) |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2326 { |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2327 w32_draw_image_foreground_1 (s, pixmap); |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2328 x_set_glyph_string_clipping (s); |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2329 { |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2330 HDC compat_hdc = CreateCompatibleDC (s->hdc); |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2331 HBRUSH fg_brush = CreateSolidBrush (s->gc->foreground); |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2332 HBRUSH orig_brush = SelectObject (s->hdc, fg_brush); |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2333 HGDIOBJ orig_obj = SelectObject (compat_hdc, pixmap); |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2334 |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2335 SetTextColor (s->hdc, s->gc->foreground); |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2336 SetBkColor (s->hdc, s->gc->background); |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2337 BitBlt (s->hdc, s->x, s->y, s->background_width, s->height, |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2338 compat_hdc, 0, 0, SRCCOPY); |
48345
44c0f878e8b9
(x_draw_image_foreground, x_draw_image_glyph_string)
Jason Rumney <jasonr@gnu.org>
parents:
48218
diff
changeset
|
2339 |
27402
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2340 SelectObject (s->hdc, orig_brush); |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2341 DeleteObject (fg_brush); |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2342 SelectObject (compat_hdc, orig_obj); |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2343 DeleteDC (compat_hdc); |
13434 | 2344 } |
27402
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2345 DeleteObject (pixmap); |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2346 pixmap = 0; |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2347 } |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2348 else |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2349 x_draw_image_foreground (s); |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2350 |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2351 /* If we must draw a relief around the image, do it. */ |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2352 if (s->img->relief |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2353 || s->hl == DRAW_IMAGE_RAISED |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2354 || s->hl == DRAW_IMAGE_SUNKEN) |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2355 x_draw_image_relief (s); |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2356 } |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2357 |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2358 |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2359 /* Draw stretch glyph string S. */ |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2360 |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2361 static void |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2362 x_draw_stretch_glyph_string (s) |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2363 struct glyph_string *s; |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2364 { |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2365 xassert (s->first_glyph->type == STRETCH_GLYPH); |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2366 s->stippled_p = s->face->stipple != 0; |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2367 |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2368 if (s->hl == DRAW_CURSOR |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2369 && !x_stretch_cursor_p) |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2370 { |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2371 /* If `x-stretch-block-cursor' is nil, don't draw a block cursor |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2372 as wide as the stretch glyph. */ |
71021
a86a3503e350
(x_draw_stretch_glyph_string): Fix problems with invisible
Kim F. Storm <storm@cua.dk>
parents:
70234
diff
changeset
|
2373 int width, background_width = s->background_width; |
a86a3503e350
(x_draw_stretch_glyph_string): Fix problems with invisible
Kim F. Storm <storm@cua.dk>
parents:
70234
diff
changeset
|
2374 int x = s->x, left_x = window_box_left_offset (s->w, TEXT_AREA); |
a86a3503e350
(x_draw_stretch_glyph_string): Fix problems with invisible
Kim F. Storm <storm@cua.dk>
parents:
70234
diff
changeset
|
2375 |
a86a3503e350
(x_draw_stretch_glyph_string): Fix problems with invisible
Kim F. Storm <storm@cua.dk>
parents:
70234
diff
changeset
|
2376 if (x < left_x) |
a86a3503e350
(x_draw_stretch_glyph_string): Fix problems with invisible
Kim F. Storm <storm@cua.dk>
parents:
70234
diff
changeset
|
2377 { |
a86a3503e350
(x_draw_stretch_glyph_string): Fix problems with invisible
Kim F. Storm <storm@cua.dk>
parents:
70234
diff
changeset
|
2378 background_width -= left_x - x; |
a86a3503e350
(x_draw_stretch_glyph_string): Fix problems with invisible
Kim F. Storm <storm@cua.dk>
parents:
70234
diff
changeset
|
2379 x = left_x; |
a86a3503e350
(x_draw_stretch_glyph_string): Fix problems with invisible
Kim F. Storm <storm@cua.dk>
parents:
70234
diff
changeset
|
2380 } |
a86a3503e350
(x_draw_stretch_glyph_string): Fix problems with invisible
Kim F. Storm <storm@cua.dk>
parents:
70234
diff
changeset
|
2381 width = min (FRAME_COLUMN_WIDTH (s->f), background_width); |
27402
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2382 |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2383 /* Draw cursor. */ |
71021
a86a3503e350
(x_draw_stretch_glyph_string): Fix problems with invisible
Kim F. Storm <storm@cua.dk>
parents:
70234
diff
changeset
|
2384 x_draw_glyph_string_bg_rect (s, x, s->y, width, s->height); |
27402
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2385 |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2386 /* Clear rest using the GC of the original non-cursor face. */ |
71021
a86a3503e350
(x_draw_stretch_glyph_string): Fix problems with invisible
Kim F. Storm <storm@cua.dk>
parents:
70234
diff
changeset
|
2387 if (width < background_width) |
27402
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2388 { |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2389 XGCValues *gc = s->face->gc; |
71021
a86a3503e350
(x_draw_stretch_glyph_string): Fix problems with invisible
Kim F. Storm <storm@cua.dk>
parents:
70234
diff
changeset
|
2390 int y = s->y; |
a86a3503e350
(x_draw_stretch_glyph_string): Fix problems with invisible
Kim F. Storm <storm@cua.dk>
parents:
70234
diff
changeset
|
2391 int w = background_width - width, h = s->height; |
27402
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2392 RECT r; |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2393 HDC hdc = s->hdc; |
40137
5f0d7d58283b
(remember_mouse_glyph): New function.
Jason Rumney <jasonr@gnu.org>
parents:
40078
diff
changeset
|
2394 |
71021
a86a3503e350
(x_draw_stretch_glyph_string): Fix problems with invisible
Kim F. Storm <storm@cua.dk>
parents:
70234
diff
changeset
|
2395 x += width; |
40137
5f0d7d58283b
(remember_mouse_glyph): New function.
Jason Rumney <jasonr@gnu.org>
parents:
40078
diff
changeset
|
2396 if (s->row->mouse_face_p |
5f0d7d58283b
(remember_mouse_glyph): New function.
Jason Rumney <jasonr@gnu.org>
parents:
40078
diff
changeset
|
2397 && cursor_in_mouse_face_p (s->w)) |
5f0d7d58283b
(remember_mouse_glyph): New function.
Jason Rumney <jasonr@gnu.org>
parents:
40078
diff
changeset
|
2398 { |
5f0d7d58283b
(remember_mouse_glyph): New function.
Jason Rumney <jasonr@gnu.org>
parents:
40078
diff
changeset
|
2399 x_set_mouse_face_gc (s); |
5f0d7d58283b
(remember_mouse_glyph): New function.
Jason Rumney <jasonr@gnu.org>
parents:
40078
diff
changeset
|
2400 gc = s->gc; |
5f0d7d58283b
(remember_mouse_glyph): New function.
Jason Rumney <jasonr@gnu.org>
parents:
40078
diff
changeset
|
2401 } |
5f0d7d58283b
(remember_mouse_glyph): New function.
Jason Rumney <jasonr@gnu.org>
parents:
40078
diff
changeset
|
2402 else |
5f0d7d58283b
(remember_mouse_glyph): New function.
Jason Rumney <jasonr@gnu.org>
parents:
40078
diff
changeset
|
2403 gc = s->face->gc; |
48218
01e253345507
(w32_draw_fringe_bitmap): Remove unused local variable window.
Juanma Barranquero <lekktu@gmail.com>
parents:
48025
diff
changeset
|
2404 |
50231
c8ea5e4b2129
* w32term.c: Remove consolidated defines and code.
Kim F. Storm <storm@cua.dk>
parents:
50163
diff
changeset
|
2405 get_glyph_string_clip_rect (s, &r); |
27402
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2406 w32_set_clip_rectangle (hdc, &r); |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2407 |
33097
84590a646acc
(x_produce_glyphs): Handle composite characters.
Jason Rumney <jasonr@gnu.org>
parents:
33037
diff
changeset
|
2408 #if 0 /* TODO: stipple */ |
27402
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2409 if (s->face->stipple) |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2410 { |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2411 /* Fill background with a stipple pattern. */ |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2412 XSetFillStyle (s->display, gc, FillOpaqueStippled); |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2413 XFillRectangle (s->display, s->window, gc, x, y, w, h); |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2414 XSetFillStyle (s->display, gc, FillSolid); |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2415 } |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2416 else |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2417 #endif |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2418 { |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2419 w32_fill_area (s->f, s->hdc, gc->background, x, y, w, h); |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2420 } |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2421 } |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2422 } |
40137
5f0d7d58283b
(remember_mouse_glyph): New function.
Jason Rumney <jasonr@gnu.org>
parents:
40078
diff
changeset
|
2423 else if (!s->background_filled_p) |
71021
a86a3503e350
(x_draw_stretch_glyph_string): Fix problems with invisible
Kim F. Storm <storm@cua.dk>
parents:
70234
diff
changeset
|
2424 { |
a86a3503e350
(x_draw_stretch_glyph_string): Fix problems with invisible
Kim F. Storm <storm@cua.dk>
parents:
70234
diff
changeset
|
2425 int background_width = s->background_width; |
a86a3503e350
(x_draw_stretch_glyph_string): Fix problems with invisible
Kim F. Storm <storm@cua.dk>
parents:
70234
diff
changeset
|
2426 int x = s->x, left_x = window_box_left_offset (s->w, TEXT_AREA); |
a86a3503e350
(x_draw_stretch_glyph_string): Fix problems with invisible
Kim F. Storm <storm@cua.dk>
parents:
70234
diff
changeset
|
2427 |
72470
3b82c004bf25
(x_draw_stretch_glyph_string): It is ok to draw a
Kim F. Storm <storm@cua.dk>
parents:
72008
diff
changeset
|
2428 /* Don't draw into left margin, fringe or scrollbar area |
3b82c004bf25
(x_draw_stretch_glyph_string): It is ok to draw a
Kim F. Storm <storm@cua.dk>
parents:
72008
diff
changeset
|
2429 except for header line and mode line. */ |
3b82c004bf25
(x_draw_stretch_glyph_string): It is ok to draw a
Kim F. Storm <storm@cua.dk>
parents:
72008
diff
changeset
|
2430 if (x < left_x && !s->row->mode_line_p) |
71021
a86a3503e350
(x_draw_stretch_glyph_string): Fix problems with invisible
Kim F. Storm <storm@cua.dk>
parents:
70234
diff
changeset
|
2431 { |
a86a3503e350
(x_draw_stretch_glyph_string): Fix problems with invisible
Kim F. Storm <storm@cua.dk>
parents:
70234
diff
changeset
|
2432 background_width -= left_x - x; |
a86a3503e350
(x_draw_stretch_glyph_string): Fix problems with invisible
Kim F. Storm <storm@cua.dk>
parents:
70234
diff
changeset
|
2433 x = left_x; |
a86a3503e350
(x_draw_stretch_glyph_string): Fix problems with invisible
Kim F. Storm <storm@cua.dk>
parents:
70234
diff
changeset
|
2434 } |
a86a3503e350
(x_draw_stretch_glyph_string): Fix problems with invisible
Kim F. Storm <storm@cua.dk>
parents:
70234
diff
changeset
|
2435 if (background_width > 0) |
a86a3503e350
(x_draw_stretch_glyph_string): Fix problems with invisible
Kim F. Storm <storm@cua.dk>
parents:
70234
diff
changeset
|
2436 x_draw_glyph_string_bg_rect (s, x, s->y, background_width, s->height); |
71073
3aec67200140
(x_draw_stretch_glyph_string): Fix last change.
Kim F. Storm <storm@cua.dk>
parents:
71021
diff
changeset
|
2437 } |
48218
01e253345507
(w32_draw_fringe_bitmap): Remove unused local variable window.
Juanma Barranquero <lekktu@gmail.com>
parents:
48025
diff
changeset
|
2438 |
27402
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2439 s->background_filled_p = 1; |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2440 } |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2441 |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2442 |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2443 /* Draw glyph string S. */ |
13434 | 2444 |
21831
6b659713b90b
Forward declare hooks with full function prototypes.
Geoff Voelker <voelker@cs.washington.edu>
parents:
21740
diff
changeset
|
2445 static void |
27402
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2446 x_draw_glyph_string (s) |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2447 struct glyph_string *s; |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2448 { |
38807
a59ac9807c9d
Draw relief (if any) before
Andrew Innes <andrewi@gnu.org>
parents:
38570
diff
changeset
|
2449 int relief_drawn_p = 0; |
a59ac9807c9d
Draw relief (if any) before
Andrew Innes <andrewi@gnu.org>
parents:
38570
diff
changeset
|
2450 |
27402
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2451 /* If S draws into the background of its successor, draw the |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2452 background of the successor first so that S can draw into it. |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2453 This makes S->next use XDrawString instead of XDrawImageString. */ |
65892
41fc0bf568be
Rename member for_overlaps_p in struct glyph_string to for_overlaps.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
65444
diff
changeset
|
2454 if (s->next && s->right_overhang && !s->for_overlaps) |
27402
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2455 { |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2456 xassert (s->next->img == NULL); |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2457 x_set_glyph_string_gc (s->next); |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2458 x_set_glyph_string_clipping (s->next); |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2459 x_draw_glyph_string_background (s->next, 1); |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2460 } |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2461 |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2462 /* Set up S->gc, set clipping and draw S. */ |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2463 x_set_glyph_string_gc (s); |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2464 |
38807
a59ac9807c9d
Draw relief (if any) before
Andrew Innes <andrewi@gnu.org>
parents:
38570
diff
changeset
|
2465 /* Draw relief (if any) in advance for char/composition so that the |
a59ac9807c9d
Draw relief (if any) before
Andrew Innes <andrewi@gnu.org>
parents:
38570
diff
changeset
|
2466 glyph string can be drawn over it. */ |
65892
41fc0bf568be
Rename member for_overlaps_p in struct glyph_string to for_overlaps.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
65444
diff
changeset
|
2467 if (!s->for_overlaps |
38807
a59ac9807c9d
Draw relief (if any) before
Andrew Innes <andrewi@gnu.org>
parents:
38570
diff
changeset
|
2468 && s->face->box != FACE_NO_BOX |
a59ac9807c9d
Draw relief (if any) before
Andrew Innes <andrewi@gnu.org>
parents:
38570
diff
changeset
|
2469 && (s->first_glyph->type == CHAR_GLYPH |
a59ac9807c9d
Draw relief (if any) before
Andrew Innes <andrewi@gnu.org>
parents:
38570
diff
changeset
|
2470 || s->first_glyph->type == COMPOSITE_GLYPH)) |
a59ac9807c9d
Draw relief (if any) before
Andrew Innes <andrewi@gnu.org>
parents:
38570
diff
changeset
|
2471 |
a59ac9807c9d
Draw relief (if any) before
Andrew Innes <andrewi@gnu.org>
parents:
38570
diff
changeset
|
2472 { |
40137
5f0d7d58283b
(remember_mouse_glyph): New function.
Jason Rumney <jasonr@gnu.org>
parents:
40078
diff
changeset
|
2473 x_set_glyph_string_clipping (s); |
38807
a59ac9807c9d
Draw relief (if any) before
Andrew Innes <andrewi@gnu.org>
parents:
38570
diff
changeset
|
2474 x_draw_glyph_string_background (s, 1); |
a59ac9807c9d
Draw relief (if any) before
Andrew Innes <andrewi@gnu.org>
parents:
38570
diff
changeset
|
2475 x_draw_glyph_string_box (s); |
40137
5f0d7d58283b
(remember_mouse_glyph): New function.
Jason Rumney <jasonr@gnu.org>
parents:
40078
diff
changeset
|
2476 x_set_glyph_string_clipping (s); |
38807
a59ac9807c9d
Draw relief (if any) before
Andrew Innes <andrewi@gnu.org>
parents:
38570
diff
changeset
|
2477 relief_drawn_p = 1; |
a59ac9807c9d
Draw relief (if any) before
Andrew Innes <andrewi@gnu.org>
parents:
38570
diff
changeset
|
2478 } |
40137
5f0d7d58283b
(remember_mouse_glyph): New function.
Jason Rumney <jasonr@gnu.org>
parents:
40078
diff
changeset
|
2479 else |
5f0d7d58283b
(remember_mouse_glyph): New function.
Jason Rumney <jasonr@gnu.org>
parents:
40078
diff
changeset
|
2480 x_set_glyph_string_clipping (s); |
38807
a59ac9807c9d
Draw relief (if any) before
Andrew Innes <andrewi@gnu.org>
parents:
38570
diff
changeset
|
2481 |
27402
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2482 switch (s->first_glyph->type) |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2483 { |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2484 case IMAGE_GLYPH: |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2485 x_draw_image_glyph_string (s); |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2486 break; |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2487 |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2488 case STRETCH_GLYPH: |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2489 x_draw_stretch_glyph_string (s); |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2490 break; |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2491 |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2492 case CHAR_GLYPH: |
65892
41fc0bf568be
Rename member for_overlaps_p in struct glyph_string to for_overlaps.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
65444
diff
changeset
|
2493 if (s->for_overlaps) |
27402
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2494 s->background_filled_p = 1; |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2495 else |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2496 x_draw_glyph_string_background (s, 0); |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2497 x_draw_glyph_string_foreground (s); |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2498 break; |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2499 |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2500 case COMPOSITE_GLYPH: |
65892
41fc0bf568be
Rename member for_overlaps_p in struct glyph_string to for_overlaps.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
65444
diff
changeset
|
2501 if (s->for_overlaps || s->gidx > 0) |
27402
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2502 s->background_filled_p = 1; |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2503 else |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2504 x_draw_glyph_string_background (s, 1); |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2505 x_draw_composite_glyph_string_foreground (s); |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2506 break; |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2507 |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2508 default: |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2509 abort (); |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2510 } |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2511 |
65892
41fc0bf568be
Rename member for_overlaps_p in struct glyph_string to for_overlaps.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
65444
diff
changeset
|
2512 if (!s->for_overlaps) |
27402
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2513 { |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2514 /* Draw underline. */ |
29321
8e2be36bb1c6
Format and doc changes to bring closer to xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
28369
diff
changeset
|
2515 if (s->face->underline_p |
8e2be36bb1c6
Format and doc changes to bring closer to xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
28369
diff
changeset
|
2516 && (s->font->bdf || !s->font->tm.tmUnderlined)) |
27402
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2517 { |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2518 unsigned long h = 1; |
72505
759e19ea81e5
(x_underline_at_descent_line): New variable.
Kim F. Storm <storm@cua.dk>
parents:
72470
diff
changeset
|
2519 unsigned long dy = 0; |
759e19ea81e5
(x_underline_at_descent_line): New variable.
Kim F. Storm <storm@cua.dk>
parents:
72470
diff
changeset
|
2520 |
759e19ea81e5
(x_underline_at_descent_line): New variable.
Kim F. Storm <storm@cua.dk>
parents:
72470
diff
changeset
|
2521 if (x_underline_at_descent_line) |
759e19ea81e5
(x_underline_at_descent_line): New variable.
Kim F. Storm <storm@cua.dk>
parents:
72470
diff
changeset
|
2522 dy = s->height - h; |
759e19ea81e5
(x_underline_at_descent_line): New variable.
Kim F. Storm <storm@cua.dk>
parents:
72470
diff
changeset
|
2523 else |
759e19ea81e5
(x_underline_at_descent_line): New variable.
Kim F. Storm <storm@cua.dk>
parents:
72470
diff
changeset
|
2524 { |
759e19ea81e5
(x_underline_at_descent_line): New variable.
Kim F. Storm <storm@cua.dk>
parents:
72470
diff
changeset
|
2525 /* TODO: Use font information for positioning and thickness of |
759e19ea81e5
(x_underline_at_descent_line): New variable.
Kim F. Storm <storm@cua.dk>
parents:
72470
diff
changeset
|
2526 underline. See OUTLINETEXTMETRIC, and xterm.c. Note: If |
759e19ea81e5
(x_underline_at_descent_line): New variable.
Kim F. Storm <storm@cua.dk>
parents:
72470
diff
changeset
|
2527 you make this work, don't forget to change the doc string of |
759e19ea81e5
(x_underline_at_descent_line): New variable.
Kim F. Storm <storm@cua.dk>
parents:
72470
diff
changeset
|
2528 x-use-underline-position-properties below. */ |
759e19ea81e5
(x_underline_at_descent_line): New variable.
Kim F. Storm <storm@cua.dk>
parents:
72470
diff
changeset
|
2529 dy = s->height - h; |
759e19ea81e5
(x_underline_at_descent_line): New variable.
Kim F. Storm <storm@cua.dk>
parents:
72470
diff
changeset
|
2530 } |
27402
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2531 if (s->face->underline_defaulted_p) |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2532 { |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2533 w32_fill_area (s->f, s->hdc, s->gc->foreground, s->x, |
72505
759e19ea81e5
(x_underline_at_descent_line): New variable.
Kim F. Storm <storm@cua.dk>
parents:
72470
diff
changeset
|
2534 s->y + dy, s->background_width, 1); |
27402
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2535 } |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2536 else |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2537 { |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2538 w32_fill_area (s->f, s->hdc, s->face->underline_color, s->x, |
72505
759e19ea81e5
(x_underline_at_descent_line): New variable.
Kim F. Storm <storm@cua.dk>
parents:
72470
diff
changeset
|
2539 s->y + dy, s->background_width, 1); |
27402
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2540 } |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2541 } |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2542 |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2543 /* Draw overline. */ |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2544 if (s->face->overline_p) |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2545 { |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2546 unsigned long dy = 0, h = 1; |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2547 |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2548 if (s->face->overline_color_defaulted_p) |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2549 { |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2550 w32_fill_area (s->f, s->hdc, s->gc->foreground, s->x, |
72505
759e19ea81e5
(x_underline_at_descent_line): New variable.
Kim F. Storm <storm@cua.dk>
parents:
72470
diff
changeset
|
2551 s->y + dy, s->background_width, h); |
27402
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2552 } |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2553 else |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2554 { |
57626
d208db2b5db2
(x_draw_glyph_string): Use overline_color for overlines.
Jason Rumney <jasonr@gnu.org>
parents:
57560
diff
changeset
|
2555 w32_fill_area (s->f, s->hdc, s->face->overline_color, s->x, |
72505
759e19ea81e5
(x_underline_at_descent_line): New variable.
Kim F. Storm <storm@cua.dk>
parents:
72470
diff
changeset
|
2556 s->y + dy, s->background_width, h); |
27402
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2557 } |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2558 } |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2559 |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2560 /* Draw strike-through. */ |
29321
8e2be36bb1c6
Format and doc changes to bring closer to xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
28369
diff
changeset
|
2561 if (s->face->strike_through_p |
8e2be36bb1c6
Format and doc changes to bring closer to xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
28369
diff
changeset
|
2562 && (s->font->bdf || !s->font->tm.tmStruckOut)) |
27402
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2563 { |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2564 unsigned long h = 1; |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2565 unsigned long dy = (s->height - h) / 2; |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2566 |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2567 if (s->face->strike_through_color_defaulted_p) |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2568 { |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2569 w32_fill_area (s->f, s->hdc, s->gc->foreground, s->x, s->y + dy, |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2570 s->width, h); |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2571 } |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2572 else |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2573 { |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2574 w32_fill_area (s->f, s->hdc, s->face->underline_color, s->x, |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2575 s->y + dy, s->width, h); |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2576 } |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2577 } |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2578 |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2579 /* Draw relief. */ |
38807
a59ac9807c9d
Draw relief (if any) before
Andrew Innes <andrewi@gnu.org>
parents:
38570
diff
changeset
|
2580 if (!relief_drawn_p && s->face->box != FACE_NO_BOX) |
27402
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2581 x_draw_glyph_string_box (s); |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2582 } |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2583 |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2584 /* Reset clipping. */ |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2585 w32_set_clip_rectangle (s->hdc, NULL); |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2586 } |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2587 |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2588 |
50231
c8ea5e4b2129
* w32term.c: Remove consolidated defines and code.
Kim F. Storm <storm@cua.dk>
parents:
50163
diff
changeset
|
2589 /* Shift display to make room for inserted glyphs. */ |
c8ea5e4b2129
* w32term.c: Remove consolidated defines and code.
Kim F. Storm <storm@cua.dk>
parents:
50163
diff
changeset
|
2590 |
c8ea5e4b2129
* w32term.c: Remove consolidated defines and code.
Kim F. Storm <storm@cua.dk>
parents:
50163
diff
changeset
|
2591 void |
c8ea5e4b2129
* w32term.c: Remove consolidated defines and code.
Kim F. Storm <storm@cua.dk>
parents:
50163
diff
changeset
|
2592 w32_shift_glyphs_for_insert (f, x, y, width, height, shift_by) |
c8ea5e4b2129
* w32term.c: Remove consolidated defines and code.
Kim F. Storm <storm@cua.dk>
parents:
50163
diff
changeset
|
2593 struct frame *f; |
c8ea5e4b2129
* w32term.c: Remove consolidated defines and code.
Kim F. Storm <storm@cua.dk>
parents:
50163
diff
changeset
|
2594 int x, y, width, height, shift_by; |
27402
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2595 { |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2596 HDC hdc; |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2597 |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2598 hdc = get_frame_dc (f); |
50231
c8ea5e4b2129
* w32term.c: Remove consolidated defines and code.
Kim F. Storm <storm@cua.dk>
parents:
50163
diff
changeset
|
2599 BitBlt (hdc, x + shift_by, y, width, height, |
c8ea5e4b2129
* w32term.c: Remove consolidated defines and code.
Kim F. Storm <storm@cua.dk>
parents:
50163
diff
changeset
|
2600 hdc, x, y, SRCCOPY); |
c8ea5e4b2129
* w32term.c: Remove consolidated defines and code.
Kim F. Storm <storm@cua.dk>
parents:
50163
diff
changeset
|
2601 |
27402
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2602 release_frame_dc (f, hdc); |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2603 } |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2604 |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2605 |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2606 /* Delete N glyphs at the nominal cursor position. Not implemented |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2607 for X frames. */ |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2608 |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2609 static void |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2610 x_delete_glyphs (n) |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2611 register int n; |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2612 { |
35000 | 2613 struct frame *f; |
2614 | |
2615 if (updating_frame) | |
2616 f = updating_frame; | |
2617 else | |
2618 f = SELECTED_FRAME (); | |
2619 | |
2620 if (! FRAME_W32_P (f)) | |
2621 return; | |
2622 | |
27402
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2623 abort (); |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2624 } |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2625 |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2626 |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2627 /* Clear entire frame. If updating_frame is non-null, clear that |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2628 frame. Otherwise clear the selected frame. */ |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2629 |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2630 static void |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2631 x_clear_frame () |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2632 { |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2633 struct frame *f; |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2634 |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2635 if (updating_frame) |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2636 f = updating_frame; |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2637 else |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2638 f = SELECTED_FRAME (); |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2639 |
35000 | 2640 if (! FRAME_W32_P (f)) |
2641 return; | |
2642 | |
27402
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2643 /* Clearing the frame will erase any cursor, so mark them all as no |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2644 longer visible. */ |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2645 mark_window_cursors_off (XWINDOW (FRAME_ROOT_WINDOW (f))); |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2646 output_cursor.hpos = output_cursor.vpos = 0; |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2647 output_cursor.x = -1; |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2648 |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2649 /* We don't set the output cursor here because there will always |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2650 follow an explicit cursor_to. */ |
13434 | 2651 BLOCK_INPUT; |
2652 | |
16588
481b7874a1e9
Change identifiers of the form win32* to w32*.
Geoff Voelker <voelker@cs.washington.edu>
parents:
16326
diff
changeset
|
2653 w32_clear_window (f); |
13434 | 2654 |
2655 /* We have to clear the scroll bars, too. If we have changed | |
2656 colors or something like that, then they should be notified. */ | |
2657 x_scroll_bar_clear (f); | |
2658 | |
2659 UNBLOCK_INPUT; | |
2660 } | |
27402
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2661 |
13434 | 2662 |
2663 /* Make audible bell. */ | |
2664 | |
21831
6b659713b90b
Forward declare hooks with full function prototypes.
Geoff Voelker <voelker@cs.washington.edu>
parents:
21740
diff
changeset
|
2665 static void |
6b659713b90b
Forward declare hooks with full function prototypes.
Geoff Voelker <voelker@cs.washington.edu>
parents:
21740
diff
changeset
|
2666 w32_ring_bell (void) |
13434 | 2667 { |
35000 | 2668 struct frame *f; |
2669 | |
2670 f = SELECTED_FRAME (); | |
2671 | |
13434 | 2672 BLOCK_INPUT; |
2673 | |
35449
98d65e364070
(w32_ring_bell): Only support visible bell on w32
Andrew Innes <andrewi@gnu.org>
parents:
35384
diff
changeset
|
2674 if (FRAME_W32_P (f) && visible_bell) |
22059
23fda104cd36
(w32_ring_bell): Flash window correctly.
Geoff Voelker <voelker@cs.washington.edu>
parents:
21885
diff
changeset
|
2675 { |
23fda104cd36
(w32_ring_bell): Flash window correctly.
Geoff Voelker <voelker@cs.washington.edu>
parents:
21885
diff
changeset
|
2676 int i; |
27402
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2677 HWND hwnd = FRAME_W32_WINDOW (SELECTED_FRAME ()); |
22059
23fda104cd36
(w32_ring_bell): Flash window correctly.
Geoff Voelker <voelker@cs.washington.edu>
parents:
21885
diff
changeset
|
2678 |
48218
01e253345507
(w32_draw_fringe_bitmap): Remove unused local variable window.
Juanma Barranquero <lekktu@gmail.com>
parents:
48025
diff
changeset
|
2679 for (i = 0; i < 5; i++) |
22059
23fda104cd36
(w32_ring_bell): Flash window correctly.
Geoff Voelker <voelker@cs.washington.edu>
parents:
21885
diff
changeset
|
2680 { |
23fda104cd36
(w32_ring_bell): Flash window correctly.
Geoff Voelker <voelker@cs.washington.edu>
parents:
21885
diff
changeset
|
2681 FlashWindow (hwnd, TRUE); |
23fda104cd36
(w32_ring_bell): Flash window correctly.
Geoff Voelker <voelker@cs.washington.edu>
parents:
21885
diff
changeset
|
2682 Sleep (10); |
23fda104cd36
(w32_ring_bell): Flash window correctly.
Geoff Voelker <voelker@cs.washington.edu>
parents:
21885
diff
changeset
|
2683 } |
23fda104cd36
(w32_ring_bell): Flash window correctly.
Geoff Voelker <voelker@cs.washington.edu>
parents:
21885
diff
changeset
|
2684 FlashWindow (hwnd, FALSE); |
23fda104cd36
(w32_ring_bell): Flash window correctly.
Geoff Voelker <voelker@cs.washington.edu>
parents:
21885
diff
changeset
|
2685 } |
13434 | 2686 else |
16588
481b7874a1e9
Change identifiers of the form win32* to w32*.
Geoff Voelker <voelker@cs.washington.edu>
parents:
16326
diff
changeset
|
2687 w32_sys_ring_bell (); |
13434 | 2688 |
2689 UNBLOCK_INPUT; | |
2690 } | |
27402
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2691 |
13434 | 2692 |
2693 /* Specify how many text lines, from the top of the window, | |
2694 should be affected by insert-lines and delete-lines operations. | |
2695 This, and those operations, are used only within an update | |
27402
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2696 that is bounded by calls to x_update_begin and x_update_end. */ |
13434 | 2697 |
21831
6b659713b90b
Forward declare hooks with full function prototypes.
Geoff Voelker <voelker@cs.washington.edu>
parents:
21740
diff
changeset
|
2698 static void |
16588
481b7874a1e9
Change identifiers of the form win32* to w32*.
Geoff Voelker <voelker@cs.washington.edu>
parents:
16326
diff
changeset
|
2699 w32_set_terminal_window (n) |
13434 | 2700 register int n; |
2701 { | |
27402
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2702 /* This function intentionally left blank. */ |
13434 | 2703 } |
27402
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2704 |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2705 |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2706 /*********************************************************************** |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2707 Line Dance |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2708 ***********************************************************************/ |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2709 |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2710 /* Perform an insert-lines or delete-lines operation, inserting N |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2711 lines or deleting -N lines at vertical position VPOS. */ |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2712 |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2713 static void |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2714 x_ins_del_lines (vpos, n) |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2715 int vpos, n; |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2716 { |
35000 | 2717 struct frame *f; |
2718 | |
2719 if (updating_frame) | |
2720 f = updating_frame; | |
2721 else | |
2722 f = SELECTED_FRAME (); | |
2723 | |
2724 if (! FRAME_W32_P (f)) | |
2725 return; | |
2726 | |
27402
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2727 abort (); |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2728 } |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2729 |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2730 |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2731 /* Scroll part of the display as described by RUN. */ |
21831
6b659713b90b
Forward declare hooks with full function prototypes.
Geoff Voelker <voelker@cs.washington.edu>
parents:
21740
diff
changeset
|
2732 |
6b659713b90b
Forward declare hooks with full function prototypes.
Geoff Voelker <voelker@cs.washington.edu>
parents:
21740
diff
changeset
|
2733 static void |
27402
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2734 x_scroll_run (w, run) |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2735 struct window *w; |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2736 struct run *run; |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2737 { |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2738 struct frame *f = XFRAME (w->frame); |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2739 int x, y, width, height, from_y, to_y, bottom_y; |
42934
b3ee5e92548a
(x_scroll_run): Use ScrollWindowEx in place of BitBlt.
Jason Rumney <jasonr@gnu.org>
parents:
42919
diff
changeset
|
2740 HWND hwnd = FRAME_W32_WINDOW (f); |
b3ee5e92548a
(x_scroll_run): Use ScrollWindowEx in place of BitBlt.
Jason Rumney <jasonr@gnu.org>
parents:
42919
diff
changeset
|
2741 HRGN expect_dirty; |
27402
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2742 |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2743 /* Get frame-relative bounding box of the text display area of W, |
41125 | 2744 without mode lines. Include in this box the left and right |
2745 fringes of W. */ | |
27402
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2746 window_box (w, -1, &x, &y, &width, &height); |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2747 |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2748 from_y = WINDOW_TO_FRAME_PIXEL_Y (w, run->current_y); |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2749 to_y = WINDOW_TO_FRAME_PIXEL_Y (w, run->desired_y); |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2750 bottom_y = y + height; |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2751 |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2752 if (to_y < from_y) |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2753 { |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2754 /* Scrolling up. Make sure we don't copy part of the mode |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2755 line at the bottom. */ |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2756 if (from_y + run->height > bottom_y) |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2757 height = bottom_y - from_y; |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2758 else |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2759 height = run->height; |
42934
b3ee5e92548a
(x_scroll_run): Use ScrollWindowEx in place of BitBlt.
Jason Rumney <jasonr@gnu.org>
parents:
42919
diff
changeset
|
2760 expect_dirty = CreateRectRgn (x, y + height, x + width, bottom_y); |
27402
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2761 } |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2762 else |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2763 { |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2764 /* Scolling down. Make sure we don't copy over the mode line. |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2765 at the bottom. */ |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2766 if (to_y + run->height > bottom_y) |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2767 height = bottom_y - to_y; |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2768 else |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2769 height = run->height; |
42934
b3ee5e92548a
(x_scroll_run): Use ScrollWindowEx in place of BitBlt.
Jason Rumney <jasonr@gnu.org>
parents:
42919
diff
changeset
|
2770 expect_dirty = CreateRectRgn (x, y, x + width, to_y); |
27402
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2771 } |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2772 |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2773 BLOCK_INPUT; |
48218
01e253345507
(w32_draw_fringe_bitmap): Remove unused local variable window.
Juanma Barranquero <lekktu@gmail.com>
parents:
48025
diff
changeset
|
2774 |
27402
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2775 /* Cursor off. Will be switched on again in x_update_window_end. */ |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2776 updated_window = w; |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2777 x_clear_cursor (w); |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2778 |
42934
b3ee5e92548a
(x_scroll_run): Use ScrollWindowEx in place of BitBlt.
Jason Rumney <jasonr@gnu.org>
parents:
42919
diff
changeset
|
2779 { |
b3ee5e92548a
(x_scroll_run): Use ScrollWindowEx in place of BitBlt.
Jason Rumney <jasonr@gnu.org>
parents:
42919
diff
changeset
|
2780 RECT from; |
b3ee5e92548a
(x_scroll_run): Use ScrollWindowEx in place of BitBlt.
Jason Rumney <jasonr@gnu.org>
parents:
42919
diff
changeset
|
2781 RECT to; |
b3ee5e92548a
(x_scroll_run): Use ScrollWindowEx in place of BitBlt.
Jason Rumney <jasonr@gnu.org>
parents:
42919
diff
changeset
|
2782 HRGN dirty = CreateRectRgn (0, 0, 0, 0); |
b3ee5e92548a
(x_scroll_run): Use ScrollWindowEx in place of BitBlt.
Jason Rumney <jasonr@gnu.org>
parents:
42919
diff
changeset
|
2783 HRGN combined = CreateRectRgn (0, 0, 0, 0); |
b3ee5e92548a
(x_scroll_run): Use ScrollWindowEx in place of BitBlt.
Jason Rumney <jasonr@gnu.org>
parents:
42919
diff
changeset
|
2784 |
b3ee5e92548a
(x_scroll_run): Use ScrollWindowEx in place of BitBlt.
Jason Rumney <jasonr@gnu.org>
parents:
42919
diff
changeset
|
2785 from.left = to.left = x; |
b3ee5e92548a
(x_scroll_run): Use ScrollWindowEx in place of BitBlt.
Jason Rumney <jasonr@gnu.org>
parents:
42919
diff
changeset
|
2786 from.right = to.right = x + width; |
b3ee5e92548a
(x_scroll_run): Use ScrollWindowEx in place of BitBlt.
Jason Rumney <jasonr@gnu.org>
parents:
42919
diff
changeset
|
2787 from.top = from_y; |
b3ee5e92548a
(x_scroll_run): Use ScrollWindowEx in place of BitBlt.
Jason Rumney <jasonr@gnu.org>
parents:
42919
diff
changeset
|
2788 from.bottom = from_y + height; |
b3ee5e92548a
(x_scroll_run): Use ScrollWindowEx in place of BitBlt.
Jason Rumney <jasonr@gnu.org>
parents:
42919
diff
changeset
|
2789 to.top = y; |
b3ee5e92548a
(x_scroll_run): Use ScrollWindowEx in place of BitBlt.
Jason Rumney <jasonr@gnu.org>
parents:
42919
diff
changeset
|
2790 to.bottom = bottom_y; |
b3ee5e92548a
(x_scroll_run): Use ScrollWindowEx in place of BitBlt.
Jason Rumney <jasonr@gnu.org>
parents:
42919
diff
changeset
|
2791 |
b3ee5e92548a
(x_scroll_run): Use ScrollWindowEx in place of BitBlt.
Jason Rumney <jasonr@gnu.org>
parents:
42919
diff
changeset
|
2792 ScrollWindowEx (hwnd, 0, to_y - from_y, &from, &to, dirty, |
b3ee5e92548a
(x_scroll_run): Use ScrollWindowEx in place of BitBlt.
Jason Rumney <jasonr@gnu.org>
parents:
42919
diff
changeset
|
2793 NULL, SW_INVALIDATE); |
b3ee5e92548a
(x_scroll_run): Use ScrollWindowEx in place of BitBlt.
Jason Rumney <jasonr@gnu.org>
parents:
42919
diff
changeset
|
2794 |
b3ee5e92548a
(x_scroll_run): Use ScrollWindowEx in place of BitBlt.
Jason Rumney <jasonr@gnu.org>
parents:
42919
diff
changeset
|
2795 /* Combine this with what we expect to be dirty. This covers the |
b3ee5e92548a
(x_scroll_run): Use ScrollWindowEx in place of BitBlt.
Jason Rumney <jasonr@gnu.org>
parents:
42919
diff
changeset
|
2796 case where not all of the region we expect is actually dirty. */ |
b3ee5e92548a
(x_scroll_run): Use ScrollWindowEx in place of BitBlt.
Jason Rumney <jasonr@gnu.org>
parents:
42919
diff
changeset
|
2797 CombineRgn (combined, dirty, expect_dirty, RGN_OR); |
b3ee5e92548a
(x_scroll_run): Use ScrollWindowEx in place of BitBlt.
Jason Rumney <jasonr@gnu.org>
parents:
42919
diff
changeset
|
2798 |
b3ee5e92548a
(x_scroll_run): Use ScrollWindowEx in place of BitBlt.
Jason Rumney <jasonr@gnu.org>
parents:
42919
diff
changeset
|
2799 /* If the dirty region is not what we expected, redraw the entire frame. */ |
b3ee5e92548a
(x_scroll_run): Use ScrollWindowEx in place of BitBlt.
Jason Rumney <jasonr@gnu.org>
parents:
42919
diff
changeset
|
2800 if (!EqualRgn (combined, expect_dirty)) |
b3ee5e92548a
(x_scroll_run): Use ScrollWindowEx in place of BitBlt.
Jason Rumney <jasonr@gnu.org>
parents:
42919
diff
changeset
|
2801 SET_FRAME_GARBAGED (f); |
57837
d2354c6afd6d
Delete region objects after use.
Jason Rumney <jasonr@gnu.org>
parents:
57626
diff
changeset
|
2802 |
d2354c6afd6d
Delete region objects after use.
Jason Rumney <jasonr@gnu.org>
parents:
57626
diff
changeset
|
2803 DeleteObject (dirty); |
d2354c6afd6d
Delete region objects after use.
Jason Rumney <jasonr@gnu.org>
parents:
57626
diff
changeset
|
2804 DeleteObject (combined); |
42934
b3ee5e92548a
(x_scroll_run): Use ScrollWindowEx in place of BitBlt.
Jason Rumney <jasonr@gnu.org>
parents:
42919
diff
changeset
|
2805 } |
b3ee5e92548a
(x_scroll_run): Use ScrollWindowEx in place of BitBlt.
Jason Rumney <jasonr@gnu.org>
parents:
42919
diff
changeset
|
2806 |
27402
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2807 UNBLOCK_INPUT; |
57837
d2354c6afd6d
Delete region objects after use.
Jason Rumney <jasonr@gnu.org>
parents:
57626
diff
changeset
|
2808 DeleteObject (expect_dirty); |
27402
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2809 } |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2810 |
29321
8e2be36bb1c6
Format and doc changes to bring closer to xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
28369
diff
changeset
|
2811 |
27402
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2812 |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2813 /*********************************************************************** |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2814 Exposure Events |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2815 ***********************************************************************/ |
48218
01e253345507
(w32_draw_fringe_bitmap): Remove unused local variable window.
Juanma Barranquero <lekktu@gmail.com>
parents:
48025
diff
changeset
|
2816 |
13434 | 2817 static void |
2818 frame_highlight (f) | |
2819 struct frame *f; | |
2820 { | |
27402
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2821 x_update_cursor (f, 1); |
13434 | 2822 } |
2823 | |
2824 static void | |
2825 frame_unhighlight (f) | |
2826 struct frame *f; | |
2827 { | |
27402
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2828 x_update_cursor (f, 1); |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2829 } |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2830 |
13434 | 2831 /* The focus has changed. Update the frames as necessary to reflect |
2832 the new situation. Note that we can't change the selected frame | |
2833 here, because the Lisp code we are interrupting might become confused. | |
2834 Each event gets marked with the frame in which it occurred, so the | |
2835 Lisp code can tell when the switch took place by examining the events. */ | |
2836 | |
29321
8e2be36bb1c6
Format and doc changes to bring closer to xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
28369
diff
changeset
|
2837 static void |
13434 | 2838 x_new_focus_frame (dpyinfo, frame) |
16588
481b7874a1e9
Change identifiers of the form win32* to w32*.
Geoff Voelker <voelker@cs.washington.edu>
parents:
16326
diff
changeset
|
2839 struct w32_display_info *dpyinfo; |
13434 | 2840 struct frame *frame; |
2841 { | |
16588
481b7874a1e9
Change identifiers of the form win32* to w32*.
Geoff Voelker <voelker@cs.washington.edu>
parents:
16326
diff
changeset
|
2842 struct frame *old_focus = dpyinfo->w32_focus_frame; |
13434 | 2843 |
16588
481b7874a1e9
Change identifiers of the form win32* to w32*.
Geoff Voelker <voelker@cs.washington.edu>
parents:
16326
diff
changeset
|
2844 if (frame != dpyinfo->w32_focus_frame) |
13434 | 2845 { |
2846 /* Set this before calling other routines, so that they see | |
16588
481b7874a1e9
Change identifiers of the form win32* to w32*.
Geoff Voelker <voelker@cs.washington.edu>
parents:
16326
diff
changeset
|
2847 the correct value of w32_focus_frame. */ |
481b7874a1e9
Change identifiers of the form win32* to w32*.
Geoff Voelker <voelker@cs.washington.edu>
parents:
16326
diff
changeset
|
2848 dpyinfo->w32_focus_frame = frame; |
13434 | 2849 |
2850 if (old_focus && old_focus->auto_lower) | |
2851 x_lower_frame (old_focus); | |
2852 | |
16588
481b7874a1e9
Change identifiers of the form win32* to w32*.
Geoff Voelker <voelker@cs.washington.edu>
parents:
16326
diff
changeset
|
2853 if (dpyinfo->w32_focus_frame && dpyinfo->w32_focus_frame->auto_raise) |
481b7874a1e9
Change identifiers of the form win32* to w32*.
Geoff Voelker <voelker@cs.washington.edu>
parents:
16326
diff
changeset
|
2854 pending_autoraise_frame = dpyinfo->w32_focus_frame; |
13434 | 2855 else |
2856 pending_autoraise_frame = 0; | |
2857 } | |
2858 | |
2859 x_frame_rehighlight (dpyinfo); | |
2860 } | |
2861 | |
60948
03a8b8b9ebef
(x_focus_changed, w32_detect_focus_change): New functions.
Jason Rumney <jasonr@gnu.org>
parents:
59748
diff
changeset
|
2862 |
03a8b8b9ebef
(x_focus_changed, w32_detect_focus_change): New functions.
Jason Rumney <jasonr@gnu.org>
parents:
59748
diff
changeset
|
2863 /* Handle FocusIn and FocusOut state changes for FRAME. |
03a8b8b9ebef
(x_focus_changed, w32_detect_focus_change): New functions.
Jason Rumney <jasonr@gnu.org>
parents:
59748
diff
changeset
|
2864 If FRAME has focus and there exists more than one frame, puts |
03a8b8b9ebef
(x_focus_changed, w32_detect_focus_change): New functions.
Jason Rumney <jasonr@gnu.org>
parents:
59748
diff
changeset
|
2865 a FOCUS_IN_EVENT into *BUFP. */ |
03a8b8b9ebef
(x_focus_changed, w32_detect_focus_change): New functions.
Jason Rumney <jasonr@gnu.org>
parents:
59748
diff
changeset
|
2866 |
03a8b8b9ebef
(x_focus_changed, w32_detect_focus_change): New functions.
Jason Rumney <jasonr@gnu.org>
parents:
59748
diff
changeset
|
2867 static void |
03a8b8b9ebef
(x_focus_changed, w32_detect_focus_change): New functions.
Jason Rumney <jasonr@gnu.org>
parents:
59748
diff
changeset
|
2868 x_focus_changed (type, state, dpyinfo, frame, bufp) |
03a8b8b9ebef
(x_focus_changed, w32_detect_focus_change): New functions.
Jason Rumney <jasonr@gnu.org>
parents:
59748
diff
changeset
|
2869 int type; |
03a8b8b9ebef
(x_focus_changed, w32_detect_focus_change): New functions.
Jason Rumney <jasonr@gnu.org>
parents:
59748
diff
changeset
|
2870 int state; |
03a8b8b9ebef
(x_focus_changed, w32_detect_focus_change): New functions.
Jason Rumney <jasonr@gnu.org>
parents:
59748
diff
changeset
|
2871 struct w32_display_info *dpyinfo; |
03a8b8b9ebef
(x_focus_changed, w32_detect_focus_change): New functions.
Jason Rumney <jasonr@gnu.org>
parents:
59748
diff
changeset
|
2872 struct frame *frame; |
03a8b8b9ebef
(x_focus_changed, w32_detect_focus_change): New functions.
Jason Rumney <jasonr@gnu.org>
parents:
59748
diff
changeset
|
2873 struct input_event *bufp; |
03a8b8b9ebef
(x_focus_changed, w32_detect_focus_change): New functions.
Jason Rumney <jasonr@gnu.org>
parents:
59748
diff
changeset
|
2874 { |
03a8b8b9ebef
(x_focus_changed, w32_detect_focus_change): New functions.
Jason Rumney <jasonr@gnu.org>
parents:
59748
diff
changeset
|
2875 if (type == WM_SETFOCUS) |
03a8b8b9ebef
(x_focus_changed, w32_detect_focus_change): New functions.
Jason Rumney <jasonr@gnu.org>
parents:
59748
diff
changeset
|
2876 { |
03a8b8b9ebef
(x_focus_changed, w32_detect_focus_change): New functions.
Jason Rumney <jasonr@gnu.org>
parents:
59748
diff
changeset
|
2877 if (dpyinfo->w32_focus_event_frame != frame) |
03a8b8b9ebef
(x_focus_changed, w32_detect_focus_change): New functions.
Jason Rumney <jasonr@gnu.org>
parents:
59748
diff
changeset
|
2878 { |
03a8b8b9ebef
(x_focus_changed, w32_detect_focus_change): New functions.
Jason Rumney <jasonr@gnu.org>
parents:
59748
diff
changeset
|
2879 x_new_focus_frame (dpyinfo, frame); |
03a8b8b9ebef
(x_focus_changed, w32_detect_focus_change): New functions.
Jason Rumney <jasonr@gnu.org>
parents:
59748
diff
changeset
|
2880 dpyinfo->w32_focus_event_frame = frame; |
03a8b8b9ebef
(x_focus_changed, w32_detect_focus_change): New functions.
Jason Rumney <jasonr@gnu.org>
parents:
59748
diff
changeset
|
2881 |
03a8b8b9ebef
(x_focus_changed, w32_detect_focus_change): New functions.
Jason Rumney <jasonr@gnu.org>
parents:
59748
diff
changeset
|
2882 /* Don't stop displaying the initial startup message |
03a8b8b9ebef
(x_focus_changed, w32_detect_focus_change): New functions.
Jason Rumney <jasonr@gnu.org>
parents:
59748
diff
changeset
|
2883 for a switch-frame event we don't need. */ |
03a8b8b9ebef
(x_focus_changed, w32_detect_focus_change): New functions.
Jason Rumney <jasonr@gnu.org>
parents:
59748
diff
changeset
|
2884 if (GC_NILP (Vterminal_frame) |
03a8b8b9ebef
(x_focus_changed, w32_detect_focus_change): New functions.
Jason Rumney <jasonr@gnu.org>
parents:
59748
diff
changeset
|
2885 && GC_CONSP (Vframe_list) |
03a8b8b9ebef
(x_focus_changed, w32_detect_focus_change): New functions.
Jason Rumney <jasonr@gnu.org>
parents:
59748
diff
changeset
|
2886 && !GC_NILP (XCDR (Vframe_list))) |
03a8b8b9ebef
(x_focus_changed, w32_detect_focus_change): New functions.
Jason Rumney <jasonr@gnu.org>
parents:
59748
diff
changeset
|
2887 { |
03a8b8b9ebef
(x_focus_changed, w32_detect_focus_change): New functions.
Jason Rumney <jasonr@gnu.org>
parents:
59748
diff
changeset
|
2888 bufp->kind = FOCUS_IN_EVENT; |
03a8b8b9ebef
(x_focus_changed, w32_detect_focus_change): New functions.
Jason Rumney <jasonr@gnu.org>
parents:
59748
diff
changeset
|
2889 XSETFRAME (bufp->frame_or_window, frame); |
03a8b8b9ebef
(x_focus_changed, w32_detect_focus_change): New functions.
Jason Rumney <jasonr@gnu.org>
parents:
59748
diff
changeset
|
2890 } |
03a8b8b9ebef
(x_focus_changed, w32_detect_focus_change): New functions.
Jason Rumney <jasonr@gnu.org>
parents:
59748
diff
changeset
|
2891 } |
03a8b8b9ebef
(x_focus_changed, w32_detect_focus_change): New functions.
Jason Rumney <jasonr@gnu.org>
parents:
59748
diff
changeset
|
2892 |
03a8b8b9ebef
(x_focus_changed, w32_detect_focus_change): New functions.
Jason Rumney <jasonr@gnu.org>
parents:
59748
diff
changeset
|
2893 frame->output_data.x->focus_state |= state; |
03a8b8b9ebef
(x_focus_changed, w32_detect_focus_change): New functions.
Jason Rumney <jasonr@gnu.org>
parents:
59748
diff
changeset
|
2894 |
03a8b8b9ebef
(x_focus_changed, w32_detect_focus_change): New functions.
Jason Rumney <jasonr@gnu.org>
parents:
59748
diff
changeset
|
2895 /* TODO: IME focus? */ |
03a8b8b9ebef
(x_focus_changed, w32_detect_focus_change): New functions.
Jason Rumney <jasonr@gnu.org>
parents:
59748
diff
changeset
|
2896 } |
03a8b8b9ebef
(x_focus_changed, w32_detect_focus_change): New functions.
Jason Rumney <jasonr@gnu.org>
parents:
59748
diff
changeset
|
2897 else if (type == WM_KILLFOCUS) |
03a8b8b9ebef
(x_focus_changed, w32_detect_focus_change): New functions.
Jason Rumney <jasonr@gnu.org>
parents:
59748
diff
changeset
|
2898 { |
03a8b8b9ebef
(x_focus_changed, w32_detect_focus_change): New functions.
Jason Rumney <jasonr@gnu.org>
parents:
59748
diff
changeset
|
2899 frame->output_data.x->focus_state &= ~state; |
03a8b8b9ebef
(x_focus_changed, w32_detect_focus_change): New functions.
Jason Rumney <jasonr@gnu.org>
parents:
59748
diff
changeset
|
2900 |
03a8b8b9ebef
(x_focus_changed, w32_detect_focus_change): New functions.
Jason Rumney <jasonr@gnu.org>
parents:
59748
diff
changeset
|
2901 if (dpyinfo->w32_focus_event_frame == frame) |
03a8b8b9ebef
(x_focus_changed, w32_detect_focus_change): New functions.
Jason Rumney <jasonr@gnu.org>
parents:
59748
diff
changeset
|
2902 { |
03a8b8b9ebef
(x_focus_changed, w32_detect_focus_change): New functions.
Jason Rumney <jasonr@gnu.org>
parents:
59748
diff
changeset
|
2903 dpyinfo->w32_focus_event_frame = 0; |
03a8b8b9ebef
(x_focus_changed, w32_detect_focus_change): New functions.
Jason Rumney <jasonr@gnu.org>
parents:
59748
diff
changeset
|
2904 x_new_focus_frame (dpyinfo, 0); |
03a8b8b9ebef
(x_focus_changed, w32_detect_focus_change): New functions.
Jason Rumney <jasonr@gnu.org>
parents:
59748
diff
changeset
|
2905 } |
03a8b8b9ebef
(x_focus_changed, w32_detect_focus_change): New functions.
Jason Rumney <jasonr@gnu.org>
parents:
59748
diff
changeset
|
2906 |
03a8b8b9ebef
(x_focus_changed, w32_detect_focus_change): New functions.
Jason Rumney <jasonr@gnu.org>
parents:
59748
diff
changeset
|
2907 /* TODO: IME focus? */ |
03a8b8b9ebef
(x_focus_changed, w32_detect_focus_change): New functions.
Jason Rumney <jasonr@gnu.org>
parents:
59748
diff
changeset
|
2908 } |
03a8b8b9ebef
(x_focus_changed, w32_detect_focus_change): New functions.
Jason Rumney <jasonr@gnu.org>
parents:
59748
diff
changeset
|
2909 } |
03a8b8b9ebef
(x_focus_changed, w32_detect_focus_change): New functions.
Jason Rumney <jasonr@gnu.org>
parents:
59748
diff
changeset
|
2910 |
03a8b8b9ebef
(x_focus_changed, w32_detect_focus_change): New functions.
Jason Rumney <jasonr@gnu.org>
parents:
59748
diff
changeset
|
2911 |
03a8b8b9ebef
(x_focus_changed, w32_detect_focus_change): New functions.
Jason Rumney <jasonr@gnu.org>
parents:
59748
diff
changeset
|
2912 /* The focus may have changed. Figure out if it is a real focus change, |
03a8b8b9ebef
(x_focus_changed, w32_detect_focus_change): New functions.
Jason Rumney <jasonr@gnu.org>
parents:
59748
diff
changeset
|
2913 by checking both FocusIn/Out and Enter/LeaveNotify events. |
03a8b8b9ebef
(x_focus_changed, w32_detect_focus_change): New functions.
Jason Rumney <jasonr@gnu.org>
parents:
59748
diff
changeset
|
2914 |
03a8b8b9ebef
(x_focus_changed, w32_detect_focus_change): New functions.
Jason Rumney <jasonr@gnu.org>
parents:
59748
diff
changeset
|
2915 Returns FOCUS_IN_EVENT event in *BUFP. */ |
03a8b8b9ebef
(x_focus_changed, w32_detect_focus_change): New functions.
Jason Rumney <jasonr@gnu.org>
parents:
59748
diff
changeset
|
2916 |
03a8b8b9ebef
(x_focus_changed, w32_detect_focus_change): New functions.
Jason Rumney <jasonr@gnu.org>
parents:
59748
diff
changeset
|
2917 static void |
03a8b8b9ebef
(x_focus_changed, w32_detect_focus_change): New functions.
Jason Rumney <jasonr@gnu.org>
parents:
59748
diff
changeset
|
2918 w32_detect_focus_change (dpyinfo, event, bufp) |
03a8b8b9ebef
(x_focus_changed, w32_detect_focus_change): New functions.
Jason Rumney <jasonr@gnu.org>
parents:
59748
diff
changeset
|
2919 struct w32_display_info *dpyinfo; |
03a8b8b9ebef
(x_focus_changed, w32_detect_focus_change): New functions.
Jason Rumney <jasonr@gnu.org>
parents:
59748
diff
changeset
|
2920 W32Msg *event; |
03a8b8b9ebef
(x_focus_changed, w32_detect_focus_change): New functions.
Jason Rumney <jasonr@gnu.org>
parents:
59748
diff
changeset
|
2921 struct input_event *bufp; |
03a8b8b9ebef
(x_focus_changed, w32_detect_focus_change): New functions.
Jason Rumney <jasonr@gnu.org>
parents:
59748
diff
changeset
|
2922 { |
03a8b8b9ebef
(x_focus_changed, w32_detect_focus_change): New functions.
Jason Rumney <jasonr@gnu.org>
parents:
59748
diff
changeset
|
2923 struct frame *frame; |
03a8b8b9ebef
(x_focus_changed, w32_detect_focus_change): New functions.
Jason Rumney <jasonr@gnu.org>
parents:
59748
diff
changeset
|
2924 |
03a8b8b9ebef
(x_focus_changed, w32_detect_focus_change): New functions.
Jason Rumney <jasonr@gnu.org>
parents:
59748
diff
changeset
|
2925 frame = x_any_window_to_frame (dpyinfo, event->msg.hwnd); |
03a8b8b9ebef
(x_focus_changed, w32_detect_focus_change): New functions.
Jason Rumney <jasonr@gnu.org>
parents:
59748
diff
changeset
|
2926 if (! frame) |
03a8b8b9ebef
(x_focus_changed, w32_detect_focus_change): New functions.
Jason Rumney <jasonr@gnu.org>
parents:
59748
diff
changeset
|
2927 return; |
03a8b8b9ebef
(x_focus_changed, w32_detect_focus_change): New functions.
Jason Rumney <jasonr@gnu.org>
parents:
59748
diff
changeset
|
2928 |
03a8b8b9ebef
(x_focus_changed, w32_detect_focus_change): New functions.
Jason Rumney <jasonr@gnu.org>
parents:
59748
diff
changeset
|
2929 /* On w32, this is only called from focus events, so no switch needed. */ |
03a8b8b9ebef
(x_focus_changed, w32_detect_focus_change): New functions.
Jason Rumney <jasonr@gnu.org>
parents:
59748
diff
changeset
|
2930 x_focus_changed (event->msg.message, |
03a8b8b9ebef
(x_focus_changed, w32_detect_focus_change): New functions.
Jason Rumney <jasonr@gnu.org>
parents:
59748
diff
changeset
|
2931 (event->msg.message == WM_KILLFOCUS ? |
03a8b8b9ebef
(x_focus_changed, w32_detect_focus_change): New functions.
Jason Rumney <jasonr@gnu.org>
parents:
59748
diff
changeset
|
2932 FOCUS_IMPLICIT : FOCUS_EXPLICIT), |
03a8b8b9ebef
(x_focus_changed, w32_detect_focus_change): New functions.
Jason Rumney <jasonr@gnu.org>
parents:
59748
diff
changeset
|
2933 dpyinfo, frame, bufp); |
03a8b8b9ebef
(x_focus_changed, w32_detect_focus_change): New functions.
Jason Rumney <jasonr@gnu.org>
parents:
59748
diff
changeset
|
2934 } |
03a8b8b9ebef
(x_focus_changed, w32_detect_focus_change): New functions.
Jason Rumney <jasonr@gnu.org>
parents:
59748
diff
changeset
|
2935 |
03a8b8b9ebef
(x_focus_changed, w32_detect_focus_change): New functions.
Jason Rumney <jasonr@gnu.org>
parents:
59748
diff
changeset
|
2936 |
13434 | 2937 /* Handle an event saying the mouse has moved out of an Emacs frame. */ |
2938 | |
2939 void | |
2940 x_mouse_leave (dpyinfo) | |
16588
481b7874a1e9
Change identifiers of the form win32* to w32*.
Geoff Voelker <voelker@cs.washington.edu>
parents:
16326
diff
changeset
|
2941 struct w32_display_info *dpyinfo; |
13434 | 2942 { |
16588
481b7874a1e9
Change identifiers of the form win32* to w32*.
Geoff Voelker <voelker@cs.washington.edu>
parents:
16326
diff
changeset
|
2943 x_new_focus_frame (dpyinfo, dpyinfo->w32_focus_event_frame); |
13434 | 2944 } |
2945 | |
2946 /* The focus has changed, or we have redirected a frame's focus to | |
2947 another frame (this happens when a frame uses a surrogate | |
29321
8e2be36bb1c6
Format and doc changes to bring closer to xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
28369
diff
changeset
|
2948 mini-buffer frame). Shift the highlight as appropriate. |
13434 | 2949 |
2950 The FRAME argument doesn't necessarily have anything to do with which | |
29321
8e2be36bb1c6
Format and doc changes to bring closer to xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
28369
diff
changeset
|
2951 frame is being highlighted or un-highlighted; we only use it to find |
8e2be36bb1c6
Format and doc changes to bring closer to xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
28369
diff
changeset
|
2952 the appropriate X display info. */ |
8e2be36bb1c6
Format and doc changes to bring closer to xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
28369
diff
changeset
|
2953 |
13434 | 2954 static void |
16588
481b7874a1e9
Change identifiers of the form win32* to w32*.
Geoff Voelker <voelker@cs.washington.edu>
parents:
16326
diff
changeset
|
2955 w32_frame_rehighlight (frame) |
13434 | 2956 struct frame *frame; |
2957 { | |
35000 | 2958 if (! FRAME_W32_P (frame)) |
2959 return; | |
16588
481b7874a1e9
Change identifiers of the form win32* to w32*.
Geoff Voelker <voelker@cs.washington.edu>
parents:
16326
diff
changeset
|
2960 x_frame_rehighlight (FRAME_W32_DISPLAY_INFO (frame)); |
13434 | 2961 } |
2962 | |
2963 static void | |
2964 x_frame_rehighlight (dpyinfo) | |
16588
481b7874a1e9
Change identifiers of the form win32* to w32*.
Geoff Voelker <voelker@cs.washington.edu>
parents:
16326
diff
changeset
|
2965 struct w32_display_info *dpyinfo; |
13434 | 2966 { |
47148
be0335657440
Changed all occurrences of w32_highlight_frame with x_highlight_frame.
Kim F. Storm <storm@cua.dk>
parents:
47143
diff
changeset
|
2967 struct frame *old_highlight = dpyinfo->x_highlight_frame; |
16588
481b7874a1e9
Change identifiers of the form win32* to w32*.
Geoff Voelker <voelker@cs.washington.edu>
parents:
16326
diff
changeset
|
2968 |
481b7874a1e9
Change identifiers of the form win32* to w32*.
Geoff Voelker <voelker@cs.washington.edu>
parents:
16326
diff
changeset
|
2969 if (dpyinfo->w32_focus_frame) |
13434 | 2970 { |
47148
be0335657440
Changed all occurrences of w32_highlight_frame with x_highlight_frame.
Kim F. Storm <storm@cua.dk>
parents:
47143
diff
changeset
|
2971 dpyinfo->x_highlight_frame |
16588
481b7874a1e9
Change identifiers of the form win32* to w32*.
Geoff Voelker <voelker@cs.washington.edu>
parents:
16326
diff
changeset
|
2972 = ((GC_FRAMEP (FRAME_FOCUS_FRAME (dpyinfo->w32_focus_frame))) |
481b7874a1e9
Change identifiers of the form win32* to w32*.
Geoff Voelker <voelker@cs.washington.edu>
parents:
16326
diff
changeset
|
2973 ? XFRAME (FRAME_FOCUS_FRAME (dpyinfo->w32_focus_frame)) |
481b7874a1e9
Change identifiers of the form win32* to w32*.
Geoff Voelker <voelker@cs.washington.edu>
parents:
16326
diff
changeset
|
2974 : dpyinfo->w32_focus_frame); |
47148
be0335657440
Changed all occurrences of w32_highlight_frame with x_highlight_frame.
Kim F. Storm <storm@cua.dk>
parents:
47143
diff
changeset
|
2975 if (! FRAME_LIVE_P (dpyinfo->x_highlight_frame)) |
13434 | 2976 { |
16588
481b7874a1e9
Change identifiers of the form win32* to w32*.
Geoff Voelker <voelker@cs.washington.edu>
parents:
16326
diff
changeset
|
2977 FRAME_FOCUS_FRAME (dpyinfo->w32_focus_frame) = Qnil; |
47148
be0335657440
Changed all occurrences of w32_highlight_frame with x_highlight_frame.
Kim F. Storm <storm@cua.dk>
parents:
47143
diff
changeset
|
2978 dpyinfo->x_highlight_frame = dpyinfo->w32_focus_frame; |
13434 | 2979 } |
2980 } | |
2981 else | |
47148
be0335657440
Changed all occurrences of w32_highlight_frame with x_highlight_frame.
Kim F. Storm <storm@cua.dk>
parents:
47143
diff
changeset
|
2982 dpyinfo->x_highlight_frame = 0; |
be0335657440
Changed all occurrences of w32_highlight_frame with x_highlight_frame.
Kim F. Storm <storm@cua.dk>
parents:
47143
diff
changeset
|
2983 |
be0335657440
Changed all occurrences of w32_highlight_frame with x_highlight_frame.
Kim F. Storm <storm@cua.dk>
parents:
47143
diff
changeset
|
2984 if (dpyinfo->x_highlight_frame != old_highlight) |
13434 | 2985 { |
2986 if (old_highlight) | |
2987 frame_unhighlight (old_highlight); | |
47148
be0335657440
Changed all occurrences of w32_highlight_frame with x_highlight_frame.
Kim F. Storm <storm@cua.dk>
parents:
47143
diff
changeset
|
2988 if (dpyinfo->x_highlight_frame) |
be0335657440
Changed all occurrences of w32_highlight_frame with x_highlight_frame.
Kim F. Storm <storm@cua.dk>
parents:
47143
diff
changeset
|
2989 frame_highlight (dpyinfo->x_highlight_frame); |
13434 | 2990 } |
2991 } | |
2992 | |
2993 /* Keyboard processing - modifier keys, etc. */ | |
2994 | |
2995 /* Convert a keysym to its name. */ | |
2996 | |
2997 char * | |
2998 x_get_keysym_name (keysym) | |
2999 int keysym; | |
3000 { | |
3001 /* Make static so we can always return it */ | |
3002 static char value[100]; | |
3003 | |
3004 BLOCK_INPUT; | |
32022
1f26caa05cd7
(w32_char_font_type, w32_encode_char, x_produce_glyphs): Distinguish
Jason Rumney <jasonr@gnu.org>
parents:
31624
diff
changeset
|
3005 GetKeyNameText (keysym, value, 100); |
13434 | 3006 UNBLOCK_INPUT; |
3007 | |
3008 return value; | |
3009 } | |
29321
8e2be36bb1c6
Format and doc changes to bring closer to xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
28369
diff
changeset
|
3010 |
8e2be36bb1c6
Format and doc changes to bring closer to xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
28369
diff
changeset
|
3011 |
13434 | 3012 |
3013 /* Mouse clicks and mouse movement. Rah. */ | |
3014 | |
42720
1217a83a82e4
(parse_button): New parameter xbutton. Callers changed.
Jason Rumney <jasonr@gnu.org>
parents:
42675
diff
changeset
|
3015 /* Parse a button MESSAGE. The button index is returned in PBUTTON, and |
1217a83a82e4
(parse_button): New parameter xbutton. Callers changed.
Jason Rumney <jasonr@gnu.org>
parents:
42675
diff
changeset
|
3016 the state in PUP. XBUTTON provides extra information for extended mouse |
1217a83a82e4
(parse_button): New parameter xbutton. Callers changed.
Jason Rumney <jasonr@gnu.org>
parents:
42675
diff
changeset
|
3017 button messages. Returns FALSE if unable to parse the message. */ |
48218
01e253345507
(w32_draw_fringe_bitmap): Remove unused local variable window.
Juanma Barranquero <lekktu@gmail.com>
parents:
48025
diff
changeset
|
3018 BOOL |
42720
1217a83a82e4
(parse_button): New parameter xbutton. Callers changed.
Jason Rumney <jasonr@gnu.org>
parents:
42675
diff
changeset
|
3019 parse_button (message, xbutton, pbutton, pup) |
13434 | 3020 int message; |
42720
1217a83a82e4
(parse_button): New parameter xbutton. Callers changed.
Jason Rumney <jasonr@gnu.org>
parents:
42675
diff
changeset
|
3021 int xbutton; |
13434 | 3022 int * pbutton; |
3023 int * pup; | |
3024 { | |
3025 int button = 0; | |
3026 int up = 0; | |
48218
01e253345507
(w32_draw_fringe_bitmap): Remove unused local variable window.
Juanma Barranquero <lekktu@gmail.com>
parents:
48025
diff
changeset
|
3027 |
13434 | 3028 switch (message) |
3029 { | |
3030 case WM_LBUTTONDOWN: | |
3031 button = 0; | |
3032 up = 0; | |
3033 break; | |
3034 case WM_LBUTTONUP: | |
3035 button = 0; | |
3036 up = 1; | |
3037 break; | |
3038 case WM_MBUTTONDOWN: | |
16588
481b7874a1e9
Change identifiers of the form win32* to w32*.
Geoff Voelker <voelker@cs.washington.edu>
parents:
16326
diff
changeset
|
3039 if (NILP (Vw32_swap_mouse_buttons)) |
15151
ed6ddfc0d954
(Vwindow_system): Declared.
Geoff Voelker <voelker@cs.washington.edu>
parents:
15035
diff
changeset
|
3040 button = 1; |
ed6ddfc0d954
(Vwindow_system): Declared.
Geoff Voelker <voelker@cs.washington.edu>
parents:
15035
diff
changeset
|
3041 else |
ed6ddfc0d954
(Vwindow_system): Declared.
Geoff Voelker <voelker@cs.washington.edu>
parents:
15035
diff
changeset
|
3042 button = 2; |
13434 | 3043 up = 0; |
3044 break; | |
3045 case WM_MBUTTONUP: | |
16588
481b7874a1e9
Change identifiers of the form win32* to w32*.
Geoff Voelker <voelker@cs.washington.edu>
parents:
16326
diff
changeset
|
3046 if (NILP (Vw32_swap_mouse_buttons)) |
15151
ed6ddfc0d954
(Vwindow_system): Declared.
Geoff Voelker <voelker@cs.washington.edu>
parents:
15035
diff
changeset
|
3047 button = 1; |
ed6ddfc0d954
(Vwindow_system): Declared.
Geoff Voelker <voelker@cs.washington.edu>
parents:
15035
diff
changeset
|
3048 else |
ed6ddfc0d954
(Vwindow_system): Declared.
Geoff Voelker <voelker@cs.washington.edu>
parents:
15035
diff
changeset
|
3049 button = 2; |
13434 | 3050 up = 1; |
3051 break; | |
3052 case WM_RBUTTONDOWN: | |
16588
481b7874a1e9
Change identifiers of the form win32* to w32*.
Geoff Voelker <voelker@cs.washington.edu>
parents:
16326
diff
changeset
|
3053 if (NILP (Vw32_swap_mouse_buttons)) |
15151
ed6ddfc0d954
(Vwindow_system): Declared.
Geoff Voelker <voelker@cs.washington.edu>
parents:
15035
diff
changeset
|
3054 button = 2; |
ed6ddfc0d954
(Vwindow_system): Declared.
Geoff Voelker <voelker@cs.washington.edu>
parents:
15035
diff
changeset
|
3055 else |
ed6ddfc0d954
(Vwindow_system): Declared.
Geoff Voelker <voelker@cs.washington.edu>
parents:
15035
diff
changeset
|
3056 button = 1; |
13434 | 3057 up = 0; |
3058 break; | |
3059 case WM_RBUTTONUP: | |
16588
481b7874a1e9
Change identifiers of the form win32* to w32*.
Geoff Voelker <voelker@cs.washington.edu>
parents:
16326
diff
changeset
|
3060 if (NILP (Vw32_swap_mouse_buttons)) |
15151
ed6ddfc0d954
(Vwindow_system): Declared.
Geoff Voelker <voelker@cs.washington.edu>
parents:
15035
diff
changeset
|
3061 button = 2; |
ed6ddfc0d954
(Vwindow_system): Declared.
Geoff Voelker <voelker@cs.washington.edu>
parents:
15035
diff
changeset
|
3062 else |
ed6ddfc0d954
(Vwindow_system): Declared.
Geoff Voelker <voelker@cs.washington.edu>
parents:
15035
diff
changeset
|
3063 button = 1; |
13434 | 3064 up = 1; |
3065 break; | |
42720
1217a83a82e4
(parse_button): New parameter xbutton. Callers changed.
Jason Rumney <jasonr@gnu.org>
parents:
42675
diff
changeset
|
3066 case WM_XBUTTONDOWN: |
1217a83a82e4
(parse_button): New parameter xbutton. Callers changed.
Jason Rumney <jasonr@gnu.org>
parents:
42675
diff
changeset
|
3067 button = xbutton + 2; |
1217a83a82e4
(parse_button): New parameter xbutton. Callers changed.
Jason Rumney <jasonr@gnu.org>
parents:
42675
diff
changeset
|
3068 up = 0; |
1217a83a82e4
(parse_button): New parameter xbutton. Callers changed.
Jason Rumney <jasonr@gnu.org>
parents:
42675
diff
changeset
|
3069 break; |
1217a83a82e4
(parse_button): New parameter xbutton. Callers changed.
Jason Rumney <jasonr@gnu.org>
parents:
42675
diff
changeset
|
3070 case WM_XBUTTONUP: |
1217a83a82e4
(parse_button): New parameter xbutton. Callers changed.
Jason Rumney <jasonr@gnu.org>
parents:
42675
diff
changeset
|
3071 button = xbutton + 2; |
1217a83a82e4
(parse_button): New parameter xbutton. Callers changed.
Jason Rumney <jasonr@gnu.org>
parents:
42675
diff
changeset
|
3072 up = 1; |
1217a83a82e4
(parse_button): New parameter xbutton. Callers changed.
Jason Rumney <jasonr@gnu.org>
parents:
42675
diff
changeset
|
3073 break; |
13434 | 3074 default: |
3075 return (FALSE); | |
3076 } | |
48218
01e253345507
(w32_draw_fringe_bitmap): Remove unused local variable window.
Juanma Barranquero <lekktu@gmail.com>
parents:
48025
diff
changeset
|
3077 |
13434 | 3078 if (pup) *pup = up; |
3079 if (pbutton) *pbutton = button; | |
48218
01e253345507
(w32_draw_fringe_bitmap): Remove unused local variable window.
Juanma Barranquero <lekktu@gmail.com>
parents:
48025
diff
changeset
|
3080 |
13434 | 3081 return (TRUE); |
3082 } | |
3083 | |
3084 | |
3085 /* Prepare a mouse-event in *RESULT for placement in the input queue. | |
3086 | |
3087 If the event is a button press, then note that we have grabbed | |
3088 the mouse. */ | |
3089 | |
30240
2c2a7ebd2c15
(help_echo_object, help_echo_pos): New variables.
Jason Rumney <jasonr@gnu.org>
parents:
30199
diff
changeset
|
3090 static Lisp_Object |
13434 | 3091 construct_mouse_click (result, msg, f) |
3092 struct input_event *result; | |
16588
481b7874a1e9
Change identifiers of the form win32* to w32*.
Geoff Voelker <voelker@cs.washington.edu>
parents:
16326
diff
changeset
|
3093 W32Msg *msg; |
13434 | 3094 struct frame *f; |
3095 { | |
3096 int button; | |
3097 int up; | |
3098 | |
42720
1217a83a82e4
(parse_button): New parameter xbutton. Callers changed.
Jason Rumney <jasonr@gnu.org>
parents:
42675
diff
changeset
|
3099 parse_button (msg->msg.message, HIWORD (msg->msg.wParam), |
1217a83a82e4
(parse_button): New parameter xbutton. Callers changed.
Jason Rumney <jasonr@gnu.org>
parents:
42675
diff
changeset
|
3100 &button, &up); |
13434 | 3101 |
45803
9484de301252
Rename enum event_kind items.
Pavel Janík <Pavel@Janik.cz>
parents:
45507
diff
changeset
|
3102 /* Make the event type NO_EVENT; we'll change that when we decide |
13434 | 3103 otherwise. */ |
45803
9484de301252
Rename enum event_kind items.
Pavel Janík <Pavel@Janik.cz>
parents:
45507
diff
changeset
|
3104 result->kind = MOUSE_CLICK_EVENT; |
13434 | 3105 result->code = button; |
3106 result->timestamp = msg->msg.time; | |
3107 result->modifiers = (msg->dwModifiers | |
3108 | (up | |
3109 ? up_modifier | |
3110 : down_modifier)); | |
3111 | |
30240
2c2a7ebd2c15
(help_echo_object, help_echo_pos): New variables.
Jason Rumney <jasonr@gnu.org>
parents:
30199
diff
changeset
|
3112 XSETINT (result->x, LOWORD (msg->msg.lParam)); |
2c2a7ebd2c15
(help_echo_object, help_echo_pos): New variables.
Jason Rumney <jasonr@gnu.org>
parents:
30199
diff
changeset
|
3113 XSETINT (result->y, HIWORD (msg->msg.lParam)); |
2c2a7ebd2c15
(help_echo_object, help_echo_pos): New variables.
Jason Rumney <jasonr@gnu.org>
parents:
30199
diff
changeset
|
3114 XSETFRAME (result->frame_or_window, f); |
2c2a7ebd2c15
(help_echo_object, help_echo_pos): New variables.
Jason Rumney <jasonr@gnu.org>
parents:
30199
diff
changeset
|
3115 result->arg = Qnil; |
2c2a7ebd2c15
(help_echo_object, help_echo_pos): New variables.
Jason Rumney <jasonr@gnu.org>
parents:
30199
diff
changeset
|
3116 return Qnil; |
2c2a7ebd2c15
(help_echo_object, help_echo_pos): New variables.
Jason Rumney <jasonr@gnu.org>
parents:
30199
diff
changeset
|
3117 } |
2c2a7ebd2c15
(help_echo_object, help_echo_pos): New variables.
Jason Rumney <jasonr@gnu.org>
parents:
30199
diff
changeset
|
3118 |
2c2a7ebd2c15
(help_echo_object, help_echo_pos): New variables.
Jason Rumney <jasonr@gnu.org>
parents:
30199
diff
changeset
|
3119 static Lisp_Object |
19713
043ccce224fb
(SIF_*): Win95 macros defined for NT.
Geoff Voelker <voelker@cs.washington.edu>
parents:
18877
diff
changeset
|
3120 construct_mouse_wheel (result, msg, f) |
043ccce224fb
(SIF_*): Win95 macros defined for NT.
Geoff Voelker <voelker@cs.washington.edu>
parents:
18877
diff
changeset
|
3121 struct input_event *result; |
043ccce224fb
(SIF_*): Win95 macros defined for NT.
Geoff Voelker <voelker@cs.washington.edu>
parents:
18877
diff
changeset
|
3122 W32Msg *msg; |
043ccce224fb
(SIF_*): Win95 macros defined for NT.
Geoff Voelker <voelker@cs.washington.edu>
parents:
18877
diff
changeset
|
3123 struct frame *f; |
043ccce224fb
(SIF_*): Win95 macros defined for NT.
Geoff Voelker <voelker@cs.washington.edu>
parents:
18877
diff
changeset
|
3124 { |
043ccce224fb
(SIF_*): Win95 macros defined for NT.
Geoff Voelker <voelker@cs.washington.edu>
parents:
18877
diff
changeset
|
3125 POINT p; |
51382
e099ac71bd76
(construct_mouse_wheel): Construct WHEEL_EVENT.
Jason Rumney <jasonr@gnu.org>
parents:
51270
diff
changeset
|
3126 int delta; |
e099ac71bd76
(construct_mouse_wheel): Construct WHEEL_EVENT.
Jason Rumney <jasonr@gnu.org>
parents:
51270
diff
changeset
|
3127 |
e099ac71bd76
(construct_mouse_wheel): Construct WHEEL_EVENT.
Jason Rumney <jasonr@gnu.org>
parents:
51270
diff
changeset
|
3128 result->kind = WHEEL_EVENT; |
e099ac71bd76
(construct_mouse_wheel): Construct WHEEL_EVENT.
Jason Rumney <jasonr@gnu.org>
parents:
51270
diff
changeset
|
3129 result->code = 0; |
19713
043ccce224fb
(SIF_*): Win95 macros defined for NT.
Geoff Voelker <voelker@cs.washington.edu>
parents:
18877
diff
changeset
|
3130 result->timestamp = msg->msg.time; |
51382
e099ac71bd76
(construct_mouse_wheel): Construct WHEEL_EVENT.
Jason Rumney <jasonr@gnu.org>
parents:
51270
diff
changeset
|
3131 |
e099ac71bd76
(construct_mouse_wheel): Construct WHEEL_EVENT.
Jason Rumney <jasonr@gnu.org>
parents:
51270
diff
changeset
|
3132 /* A WHEEL_DELTA positive value indicates that the wheel was rotated |
e099ac71bd76
(construct_mouse_wheel): Construct WHEEL_EVENT.
Jason Rumney <jasonr@gnu.org>
parents:
51270
diff
changeset
|
3133 forward, away from the user (up); a negative value indicates that |
e099ac71bd76
(construct_mouse_wheel): Construct WHEEL_EVENT.
Jason Rumney <jasonr@gnu.org>
parents:
51270
diff
changeset
|
3134 the wheel was rotated backward, toward the user (down). */ |
e099ac71bd76
(construct_mouse_wheel): Construct WHEEL_EVENT.
Jason Rumney <jasonr@gnu.org>
parents:
51270
diff
changeset
|
3135 delta = GET_WHEEL_DELTA_WPARAM (msg->msg.wParam); |
e099ac71bd76
(construct_mouse_wheel): Construct WHEEL_EVENT.
Jason Rumney <jasonr@gnu.org>
parents:
51270
diff
changeset
|
3136 |
e099ac71bd76
(construct_mouse_wheel): Construct WHEEL_EVENT.
Jason Rumney <jasonr@gnu.org>
parents:
51270
diff
changeset
|
3137 /* The up and down modifiers indicate if the wheel was rotated up or |
e099ac71bd76
(construct_mouse_wheel): Construct WHEEL_EVENT.
Jason Rumney <jasonr@gnu.org>
parents:
51270
diff
changeset
|
3138 down based on WHEEL_DELTA value. */ |
e099ac71bd76
(construct_mouse_wheel): Construct WHEEL_EVENT.
Jason Rumney <jasonr@gnu.org>
parents:
51270
diff
changeset
|
3139 result->modifiers = (msg->dwModifiers |
e099ac71bd76
(construct_mouse_wheel): Construct WHEEL_EVENT.
Jason Rumney <jasonr@gnu.org>
parents:
51270
diff
changeset
|
3140 | ((delta < 0 ) ? down_modifier : up_modifier)); |
e099ac71bd76
(construct_mouse_wheel): Construct WHEEL_EVENT.
Jason Rumney <jasonr@gnu.org>
parents:
51270
diff
changeset
|
3141 |
70234
4282b2a1849b
(construct_mouse_wheel): Handle negative coordinates.
Jason Rumney <jasonr@gnu.org>
parents:
69662
diff
changeset
|
3142 /* With multiple monitors, we can legitimately get negative |
4282b2a1849b
(construct_mouse_wheel): Handle negative coordinates.
Jason Rumney <jasonr@gnu.org>
parents:
69662
diff
changeset
|
3143 coordinates, so cast to short to interpret them correctly. */ |
4282b2a1849b
(construct_mouse_wheel): Handle negative coordinates.
Jason Rumney <jasonr@gnu.org>
parents:
69662
diff
changeset
|
3144 p.x = (short) LOWORD (msg->msg.lParam); |
4282b2a1849b
(construct_mouse_wheel): Handle negative coordinates.
Jason Rumney <jasonr@gnu.org>
parents:
69662
diff
changeset
|
3145 p.y = (short) HIWORD (msg->msg.lParam); |
32022
1f26caa05cd7
(w32_char_font_type, w32_encode_char, x_produce_glyphs): Distinguish
Jason Rumney <jasonr@gnu.org>
parents:
31624
diff
changeset
|
3146 ScreenToClient (msg->msg.hwnd, &p); |
19713
043ccce224fb
(SIF_*): Win95 macros defined for NT.
Geoff Voelker <voelker@cs.washington.edu>
parents:
18877
diff
changeset
|
3147 XSETINT (result->x, p.x); |
043ccce224fb
(SIF_*): Win95 macros defined for NT.
Geoff Voelker <voelker@cs.washington.edu>
parents:
18877
diff
changeset
|
3148 XSETINT (result->y, p.y); |
043ccce224fb
(SIF_*): Win95 macros defined for NT.
Geoff Voelker <voelker@cs.washington.edu>
parents:
18877
diff
changeset
|
3149 XSETFRAME (result->frame_or_window, f); |
30199
298f10cd4ba5
(construct_mouse_click, construct_mouse_wheel)
Gerd Moellmann <gerd@gnu.org>
parents:
30179
diff
changeset
|
3150 result->arg = Qnil; |
30240
2c2a7ebd2c15
(help_echo_object, help_echo_pos): New variables.
Jason Rumney <jasonr@gnu.org>
parents:
30199
diff
changeset
|
3151 return Qnil; |
2c2a7ebd2c15
(help_echo_object, help_echo_pos): New variables.
Jason Rumney <jasonr@gnu.org>
parents:
30199
diff
changeset
|
3152 } |
2c2a7ebd2c15
(help_echo_object, help_echo_pos): New variables.
Jason Rumney <jasonr@gnu.org>
parents:
30199
diff
changeset
|
3153 |
2c2a7ebd2c15
(help_echo_object, help_echo_pos): New variables.
Jason Rumney <jasonr@gnu.org>
parents:
30199
diff
changeset
|
3154 static Lisp_Object |
21885 | 3155 construct_drag_n_drop (result, msg, f) |
3156 struct input_event *result; | |
3157 W32Msg *msg; | |
3158 struct frame *f; | |
3159 { | |
3160 Lisp_Object files; | |
3161 Lisp_Object frame; | |
3162 HDROP hdrop; | |
3163 POINT p; | |
3164 WORD num_files; | |
3165 char *name; | |
3166 int i, len; | |
3167 | |
45803
9484de301252
Rename enum event_kind items.
Pavel Janík <Pavel@Janik.cz>
parents:
45507
diff
changeset
|
3168 result->kind = DRAG_N_DROP_EVENT; |
21885 | 3169 result->code = 0; |
3170 result->timestamp = msg->msg.time; | |
3171 result->modifiers = msg->dwModifiers; | |
3172 | |
24265
c5f1a1deffbb
(construct_drag_n_drop): Call DraqQueryPoint before
Andrew Innes <andrewi@gnu.org>
parents:
24146
diff
changeset
|
3173 hdrop = (HDROP) msg->msg.wParam; |
c5f1a1deffbb
(construct_drag_n_drop): Call DraqQueryPoint before
Andrew Innes <andrewi@gnu.org>
parents:
24146
diff
changeset
|
3174 DragQueryPoint (hdrop, &p); |
c5f1a1deffbb
(construct_drag_n_drop): Call DraqQueryPoint before
Andrew Innes <andrewi@gnu.org>
parents:
24146
diff
changeset
|
3175 |
24674 | 3176 #if 0 |
21885 | 3177 p.x = LOWORD (msg->msg.lParam); |
3178 p.y = HIWORD (msg->msg.lParam); | |
3179 ScreenToClient (msg->msg.hwnd, &p); | |
24674 | 3180 #endif |
3181 | |
21885 | 3182 XSETINT (result->x, p.x); |
3183 XSETINT (result->y, p.y); | |
3184 | |
3185 num_files = DragQueryFile (hdrop, 0xFFFFFFFF, NULL, 0); | |
3186 files = Qnil; | |
3187 | |
3188 for (i = 0; i < num_files; i++) | |
3189 { | |
3190 len = DragQueryFile (hdrop, i, NULL, 0); | |
3191 if (len <= 0) | |
3192 continue; | |
3193 name = alloca (len + 1); | |
3194 DragQueryFile (hdrop, i, name, len + 1); | |
44641
3afb0684cbc2
(construct_drag_n_drop): Likewise.
Jason Rumney <jasonr@gnu.org>
parents:
44359
diff
changeset
|
3195 files = Fcons (DECODE_FILE (build_string (name)), files); |
21885 | 3196 } |
3197 | |
3198 DragFinish (hdrop); | |
3199 | |
3200 XSETFRAME (frame, f); | |
67669
31fb537a065c
(construct_drag_n_drop): Drag-and-drop items are now
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
66081
diff
changeset
|
3201 result->frame_or_window = frame; |
31fb537a065c
(construct_drag_n_drop): Drag-and-drop items are now
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
66081
diff
changeset
|
3202 result->arg = files; |
30240
2c2a7ebd2c15
(help_echo_object, help_echo_pos): New variables.
Jason Rumney <jasonr@gnu.org>
parents:
30199
diff
changeset
|
3203 return Qnil; |
21885 | 3204 } |
3205 | |
13434 | 3206 |
3207 /* Function to report a mouse movement to the mainstream Emacs code. | |
3208 The input handler calls this. | |
3209 | |
3210 We have received a mouse movement event, which is given in *event. | |
3211 If the mouse is over a different glyph than it was last time, tell | |
3212 the mainstream emacs code by setting mouse_moved. If not, ask for | |
3213 another motion event, so we can check again the next time it moves. */ | |
3214 | |
27402
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
3215 static MSG last_mouse_motion_event; |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
3216 static Lisp_Object last_mouse_motion_frame; |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
3217 |
66081
824b4c76ae12
(note_mouse_movement, w32_read_socket): Apply 2005-10-14 changes for
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
66049
diff
changeset
|
3218 static int |
13434 | 3219 note_mouse_movement (frame, msg) |
3220 FRAME_PTR frame; | |
3221 MSG *msg; | |
3222 { | |
40137
5f0d7d58283b
(remember_mouse_glyph): New function.
Jason Rumney <jasonr@gnu.org>
parents:
40078
diff
changeset
|
3223 int mouse_x = LOWORD (msg->lParam); |
5f0d7d58283b
(remember_mouse_glyph): New function.
Jason Rumney <jasonr@gnu.org>
parents:
40078
diff
changeset
|
3224 int mouse_y = HIWORD (msg->lParam); |
5f0d7d58283b
(remember_mouse_glyph): New function.
Jason Rumney <jasonr@gnu.org>
parents:
40078
diff
changeset
|
3225 |
13434 | 3226 last_mouse_movement_time = msg->time; |
27402
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
3227 memcpy (&last_mouse_motion_event, msg, sizeof (last_mouse_motion_event)); |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
3228 XSETFRAME (last_mouse_motion_frame, frame); |
13434 | 3229 |
16588
481b7874a1e9
Change identifiers of the form win32* to w32*.
Geoff Voelker <voelker@cs.washington.edu>
parents:
16326
diff
changeset
|
3230 if (msg->hwnd != FRAME_W32_WINDOW (frame)) |
13434 | 3231 { |
3232 frame->mouse_moved = 1; | |
3233 last_mouse_scroll_bar = Qnil; | |
3234 note_mouse_highlight (frame, -1, -1); | |
69441
eb7a171cafae
Sync 2005-10-24 xterm.c changes.
Jason Rumney <jasonr@gnu.org>
parents:
69401
diff
changeset
|
3235 last_mouse_glyph_frame = 0; |
66081
824b4c76ae12
(note_mouse_movement, w32_read_socket): Apply 2005-10-14 changes for
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
66049
diff
changeset
|
3236 return 1; |
13434 | 3237 } |
3238 | |
3239 /* Has the mouse moved off the glyph it was on at the last sighting? */ | |
69441
eb7a171cafae
Sync 2005-10-24 xterm.c changes.
Jason Rumney <jasonr@gnu.org>
parents:
69401
diff
changeset
|
3240 if (frame != last_mouse_glyph_frame |
eb7a171cafae
Sync 2005-10-24 xterm.c changes.
Jason Rumney <jasonr@gnu.org>
parents:
69401
diff
changeset
|
3241 || mouse_x < last_mouse_glyph.left |
66081
824b4c76ae12
(note_mouse_movement, w32_read_socket): Apply 2005-10-14 changes for
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
66049
diff
changeset
|
3242 || mouse_x >= last_mouse_glyph.right |
824b4c76ae12
(note_mouse_movement, w32_read_socket): Apply 2005-10-14 changes for
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
66049
diff
changeset
|
3243 || mouse_y < last_mouse_glyph.top |
824b4c76ae12
(note_mouse_movement, w32_read_socket): Apply 2005-10-14 changes for
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
66049
diff
changeset
|
3244 || mouse_y >= last_mouse_glyph.bottom) |
13434 | 3245 { |
3246 frame->mouse_moved = 1; | |
3247 last_mouse_scroll_bar = Qnil; | |
40137
5f0d7d58283b
(remember_mouse_glyph): New function.
Jason Rumney <jasonr@gnu.org>
parents:
40078
diff
changeset
|
3248 note_mouse_highlight (frame, mouse_x, mouse_y); |
5f0d7d58283b
(remember_mouse_glyph): New function.
Jason Rumney <jasonr@gnu.org>
parents:
40078
diff
changeset
|
3249 /* Remember the mouse position here, as w32_mouse_position only |
5f0d7d58283b
(remember_mouse_glyph): New function.
Jason Rumney <jasonr@gnu.org>
parents:
40078
diff
changeset
|
3250 gets called when mouse tracking is enabled but we also need |
5f0d7d58283b
(remember_mouse_glyph): New function.
Jason Rumney <jasonr@gnu.org>
parents:
40078
diff
changeset
|
3251 to keep track of the mouse for help_echo and highlighting at |
5f0d7d58283b
(remember_mouse_glyph): New function.
Jason Rumney <jasonr@gnu.org>
parents:
40078
diff
changeset
|
3252 other times. */ |
66034
d1a8711a8c3a
(note_mouse_movement): Fix last_mouse_glyph check.
Kim F. Storm <storm@cua.dk>
parents:
65892
diff
changeset
|
3253 remember_mouse_glyph (frame, mouse_x, mouse_y, &last_mouse_glyph); |
69441
eb7a171cafae
Sync 2005-10-24 xterm.c changes.
Jason Rumney <jasonr@gnu.org>
parents:
69401
diff
changeset
|
3254 last_mouse_glyph_frame = frame; |
66081
824b4c76ae12
(note_mouse_movement, w32_read_socket): Apply 2005-10-14 changes for
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
66049
diff
changeset
|
3255 return 1; |
13434 | 3256 } |
66081
824b4c76ae12
(note_mouse_movement, w32_read_socket): Apply 2005-10-14 changes for
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
66049
diff
changeset
|
3257 |
824b4c76ae12
(note_mouse_movement, w32_read_socket): Apply 2005-10-14 changes for
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
66049
diff
changeset
|
3258 return 0; |
13434 | 3259 } |
3260 | |
27402
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
3261 |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
3262 /************************************************************************ |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
3263 Mouse Face |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
3264 ************************************************************************/ |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
3265 |
50231
c8ea5e4b2129
* w32term.c: Remove consolidated defines and code.
Kim F. Storm <storm@cua.dk>
parents:
50163
diff
changeset
|
3266 static struct scroll_bar *x_window_to_scroll_bar (); |
c8ea5e4b2129
* w32term.c: Remove consolidated defines and code.
Kim F. Storm <storm@cua.dk>
parents:
50163
diff
changeset
|
3267 static void x_scroll_bar_report_motion (); |
c8ea5e4b2129
* w32term.c: Remove consolidated defines and code.
Kim F. Storm <storm@cua.dk>
parents:
50163
diff
changeset
|
3268 static void x_check_fullscreen P_ ((struct frame *)); |
27402
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
3269 |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
3270 static void |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
3271 redo_mouse_highlight () |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
3272 { |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
3273 if (!NILP (last_mouse_motion_frame) |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
3274 && FRAME_LIVE_P (XFRAME (last_mouse_motion_frame))) |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
3275 note_mouse_highlight (XFRAME (last_mouse_motion_frame), |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
3276 LOWORD (last_mouse_motion_event.lParam), |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
3277 HIWORD (last_mouse_motion_event.lParam)); |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
3278 } |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
3279 |
49371
c73ce11bb264
2003-01-21 KOBAYASHI Yasuhiro <kobayays@otsukakj.co.jp>
Jason Rumney <jasonr@gnu.org>
parents:
48888
diff
changeset
|
3280 void |
c73ce11bb264
2003-01-21 KOBAYASHI Yasuhiro <kobayays@otsukakj.co.jp>
Jason Rumney <jasonr@gnu.org>
parents:
48888
diff
changeset
|
3281 w32_define_cursor (window, cursor) |
c73ce11bb264
2003-01-21 KOBAYASHI Yasuhiro <kobayays@otsukakj.co.jp>
Jason Rumney <jasonr@gnu.org>
parents:
48888
diff
changeset
|
3282 Window window; |
c73ce11bb264
2003-01-21 KOBAYASHI Yasuhiro <kobayays@otsukakj.co.jp>
Jason Rumney <jasonr@gnu.org>
parents:
48888
diff
changeset
|
3283 Cursor cursor; |
c73ce11bb264
2003-01-21 KOBAYASHI Yasuhiro <kobayays@otsukakj.co.jp>
Jason Rumney <jasonr@gnu.org>
parents:
48888
diff
changeset
|
3284 { |
c73ce11bb264
2003-01-21 KOBAYASHI Yasuhiro <kobayays@otsukakj.co.jp>
Jason Rumney <jasonr@gnu.org>
parents:
48888
diff
changeset
|
3285 PostMessage (window, WM_EMACS_SETCURSOR, (WPARAM) cursor, 0); |
c73ce11bb264
2003-01-21 KOBAYASHI Yasuhiro <kobayays@otsukakj.co.jp>
Jason Rumney <jasonr@gnu.org>
parents:
48888
diff
changeset
|
3286 } |
13434 | 3287 /* Return the current position of the mouse. |
3288 *fp should be a frame which indicates which display to ask about. | |
3289 | |
3290 If the mouse movement started in a scroll bar, set *fp, *bar_window, | |
3291 and *part to the frame, window, and scroll bar part that the mouse | |
3292 is over. Set *x and *y to the portion and whole of the mouse's | |
3293 position on the scroll bar. | |
3294 | |
3295 If the mouse movement started elsewhere, set *fp to the frame the | |
3296 mouse is on, *bar_window to nil, and *x and *y to the character cell | |
3297 the mouse is over. | |
3298 | |
29321
8e2be36bb1c6
Format and doc changes to bring closer to xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
28369
diff
changeset
|
3299 Set *time to the server time-stamp for the time at which the mouse |
13434 | 3300 was at this position. |
3301 | |
3302 Don't store anything if we don't have a valid set of values to report. | |
3303 | |
3304 This clears the mouse_moved flag, so we can wait for the next mouse | |
29321
8e2be36bb1c6
Format and doc changes to bring closer to xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
28369
diff
changeset
|
3305 movement. */ |
13434 | 3306 |
3307 static void | |
16588
481b7874a1e9
Change identifiers of the form win32* to w32*.
Geoff Voelker <voelker@cs.washington.edu>
parents:
16326
diff
changeset
|
3308 w32_mouse_position (fp, insist, bar_window, part, x, y, time) |
13434 | 3309 FRAME_PTR *fp; |
3310 int insist; | |
3311 Lisp_Object *bar_window; | |
3312 enum scroll_bar_part *part; | |
3313 Lisp_Object *x, *y; | |
3314 unsigned long *time; | |
3315 { | |
3316 FRAME_PTR f1; | |
3317 | |
3318 BLOCK_INPUT; | |
3319 | |
20179
b4fe0e8ac819
(w32_mouse_position): Handle INSIST < 0.
Karl Heuer <kwzh@gnu.org>
parents:
19713
diff
changeset
|
3320 if (! NILP (last_mouse_scroll_bar) && insist == 0) |
13434 | 3321 x_scroll_bar_report_motion (fp, bar_window, part, x, y, time); |
3322 else | |
3323 { | |
3324 POINT pt; | |
3325 | |
3326 Lisp_Object frame, tail; | |
3327 | |
3328 /* Clear the mouse-moved flag for every frame on this display. */ | |
3329 FOR_EACH_FRAME (tail, frame) | |
3330 XFRAME (frame)->mouse_moved = 0; | |
3331 | |
3332 last_mouse_scroll_bar = Qnil; | |
48218
01e253345507
(w32_draw_fringe_bitmap): Remove unused local variable window.
Juanma Barranquero <lekktu@gmail.com>
parents:
48025
diff
changeset
|
3333 |
13434 | 3334 GetCursorPos (&pt); |
3335 | |
3336 /* Now we have a position on the root; find the innermost window | |
3337 containing the pointer. */ | |
3338 { | |
16588
481b7874a1e9
Change identifiers of the form win32* to w32*.
Geoff Voelker <voelker@cs.washington.edu>
parents:
16326
diff
changeset
|
3339 if (FRAME_W32_DISPLAY_INFO (*fp)->grabbed && last_mouse_frame |
13434 | 3340 && FRAME_LIVE_P (last_mouse_frame)) |
3341 { | |
24752
80c46fd667da
(w32_read_socket): Reset the grabbed flag when a frame gains or
Andrew Innes <andrewi@gnu.org>
parents:
24733
diff
changeset
|
3342 /* If mouse was grabbed on a frame, give coords for that frame |
80c46fd667da
(w32_read_socket): Reset the grabbed flag when a frame gains or
Andrew Innes <andrewi@gnu.org>
parents:
24733
diff
changeset
|
3343 even if the mouse is now outside it. */ |
13434 | 3344 f1 = last_mouse_frame; |
3345 } | |
3346 else | |
3347 { | |
24752
80c46fd667da
(w32_read_socket): Reset the grabbed flag when a frame gains or
Andrew Innes <andrewi@gnu.org>
parents:
24733
diff
changeset
|
3348 /* Is window under mouse one of our frames? */ |
40137
5f0d7d58283b
(remember_mouse_glyph): New function.
Jason Rumney <jasonr@gnu.org>
parents:
40078
diff
changeset
|
3349 f1 = x_any_window_to_frame (FRAME_W32_DISPLAY_INFO (*fp), |
32022
1f26caa05cd7
(w32_char_font_type, w32_encode_char, x_produce_glyphs): Distinguish
Jason Rumney <jasonr@gnu.org>
parents:
31624
diff
changeset
|
3350 WindowFromPoint (pt)); |
13434 | 3351 } |
3352 | |
3353 /* If not, is it one of our scroll bars? */ | |
3354 if (! f1) | |
3355 { | |
32022
1f26caa05cd7
(w32_char_font_type, w32_encode_char, x_produce_glyphs): Distinguish
Jason Rumney <jasonr@gnu.org>
parents:
31624
diff
changeset
|
3356 struct scroll_bar *bar |
1f26caa05cd7
(w32_char_font_type, w32_encode_char, x_produce_glyphs): Distinguish
Jason Rumney <jasonr@gnu.org>
parents:
31624
diff
changeset
|
3357 = x_window_to_scroll_bar (WindowFromPoint (pt)); |
13434 | 3358 |
3359 if (bar) | |
3360 { | |
3361 f1 = XFRAME (WINDOW_FRAME (XWINDOW (bar->window))); | |
3362 } | |
3363 } | |
3364 | |
20179
b4fe0e8ac819
(w32_mouse_position): Handle INSIST < 0.
Karl Heuer <kwzh@gnu.org>
parents:
19713
diff
changeset
|
3365 if (f1 == 0 && insist > 0) |
27402
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
3366 f1 = SELECTED_FRAME (); |
13434 | 3367 |
3368 if (f1) | |
3369 { | |
27402
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
3370 /* Ok, we found a frame. Store all the values. |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
3371 last_mouse_glyph is a rectangle used to reduce the |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
3372 generation of mouse events. To not miss any motion |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
3373 events, we must divide the frame into rectangles of the |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
3374 size of the smallest character that could be displayed |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
3375 on it, i.e. into the same rectangles that matrices on |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
3376 the frame are divided into. */ |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
3377 |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
3378 ScreenToClient (FRAME_W32_WINDOW (f1), &pt); |
66034
d1a8711a8c3a
(note_mouse_movement): Fix last_mouse_glyph check.
Kim F. Storm <storm@cua.dk>
parents:
65892
diff
changeset
|
3379 remember_mouse_glyph (f1, pt.x, pt.y, &last_mouse_glyph); |
69441
eb7a171cafae
Sync 2005-10-24 xterm.c changes.
Jason Rumney <jasonr@gnu.org>
parents:
69401
diff
changeset
|
3380 last_mouse_glyph_frame = f1; |
13434 | 3381 |
3382 *bar_window = Qnil; | |
3383 *part = 0; | |
3384 *fp = f1; | |
3385 XSETINT (*x, pt.x); | |
3386 XSETINT (*y, pt.y); | |
3387 *time = last_mouse_movement_time; | |
3388 } | |
3389 } | |
3390 } | |
3391 | |
3392 UNBLOCK_INPUT; | |
3393 } | |
27402
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
3394 |
13434 | 3395 |
50231
c8ea5e4b2129
* w32term.c: Remove consolidated defines and code.
Kim F. Storm <storm@cua.dk>
parents:
50163
diff
changeset
|
3396 /*********************************************************************** |
c8ea5e4b2129
* w32term.c: Remove consolidated defines and code.
Kim F. Storm <storm@cua.dk>
parents:
50163
diff
changeset
|
3397 Tool-bars |
c8ea5e4b2129
* w32term.c: Remove consolidated defines and code.
Kim F. Storm <storm@cua.dk>
parents:
50163
diff
changeset
|
3398 ***********************************************************************/ |
c8ea5e4b2129
* w32term.c: Remove consolidated defines and code.
Kim F. Storm <storm@cua.dk>
parents:
50163
diff
changeset
|
3399 |
c8ea5e4b2129
* w32term.c: Remove consolidated defines and code.
Kim F. Storm <storm@cua.dk>
parents:
50163
diff
changeset
|
3400 /* Handle mouse button event on the tool-bar of frame F, at |
c8ea5e4b2129
* w32term.c: Remove consolidated defines and code.
Kim F. Storm <storm@cua.dk>
parents:
50163
diff
changeset
|
3401 frame-relative coordinates X/Y. EVENT_TYPE is either ButtionPress |
c8ea5e4b2129
* w32term.c: Remove consolidated defines and code.
Kim F. Storm <storm@cua.dk>
parents:
50163
diff
changeset
|
3402 or ButtonRelase. */ |
c8ea5e4b2129
* w32term.c: Remove consolidated defines and code.
Kim F. Storm <storm@cua.dk>
parents:
50163
diff
changeset
|
3403 |
c8ea5e4b2129
* w32term.c: Remove consolidated defines and code.
Kim F. Storm <storm@cua.dk>
parents:
50163
diff
changeset
|
3404 static void |
c8ea5e4b2129
* w32term.c: Remove consolidated defines and code.
Kim F. Storm <storm@cua.dk>
parents:
50163
diff
changeset
|
3405 w32_handle_tool_bar_click (f, button_event) |
c8ea5e4b2129
* w32term.c: Remove consolidated defines and code.
Kim F. Storm <storm@cua.dk>
parents:
50163
diff
changeset
|
3406 struct frame *f; |
c8ea5e4b2129
* w32term.c: Remove consolidated defines and code.
Kim F. Storm <storm@cua.dk>
parents:
50163
diff
changeset
|
3407 struct input_event *button_event; |
c8ea5e4b2129
* w32term.c: Remove consolidated defines and code.
Kim F. Storm <storm@cua.dk>
parents:
50163
diff
changeset
|
3408 { |
c8ea5e4b2129
* w32term.c: Remove consolidated defines and code.
Kim F. Storm <storm@cua.dk>
parents:
50163
diff
changeset
|
3409 int x = XFASTINT (button_event->x); |
c8ea5e4b2129
* w32term.c: Remove consolidated defines and code.
Kim F. Storm <storm@cua.dk>
parents:
50163
diff
changeset
|
3410 int y = XFASTINT (button_event->y); |
c8ea5e4b2129
* w32term.c: Remove consolidated defines and code.
Kim F. Storm <storm@cua.dk>
parents:
50163
diff
changeset
|
3411 |
c8ea5e4b2129
* w32term.c: Remove consolidated defines and code.
Kim F. Storm <storm@cua.dk>
parents:
50163
diff
changeset
|
3412 if (button_event->modifiers & down_modifier) |
c8ea5e4b2129
* w32term.c: Remove consolidated defines and code.
Kim F. Storm <storm@cua.dk>
parents:
50163
diff
changeset
|
3413 handle_tool_bar_click (f, x, y, 1, 0); |
c8ea5e4b2129
* w32term.c: Remove consolidated defines and code.
Kim F. Storm <storm@cua.dk>
parents:
50163
diff
changeset
|
3414 else |
c8ea5e4b2129
* w32term.c: Remove consolidated defines and code.
Kim F. Storm <storm@cua.dk>
parents:
50163
diff
changeset
|
3415 handle_tool_bar_click (f, x, y, 0, |
c8ea5e4b2129
* w32term.c: Remove consolidated defines and code.
Kim F. Storm <storm@cua.dk>
parents:
50163
diff
changeset
|
3416 button_event->modifiers & ~up_modifier); |
c8ea5e4b2129
* w32term.c: Remove consolidated defines and code.
Kim F. Storm <storm@cua.dk>
parents:
50163
diff
changeset
|
3417 } |
c8ea5e4b2129
* w32term.c: Remove consolidated defines and code.
Kim F. Storm <storm@cua.dk>
parents:
50163
diff
changeset
|
3418 |
c8ea5e4b2129
* w32term.c: Remove consolidated defines and code.
Kim F. Storm <storm@cua.dk>
parents:
50163
diff
changeset
|
3419 |
c8ea5e4b2129
* w32term.c: Remove consolidated defines and code.
Kim F. Storm <storm@cua.dk>
parents:
50163
diff
changeset
|
3420 |
c8ea5e4b2129
* w32term.c: Remove consolidated defines and code.
Kim F. Storm <storm@cua.dk>
parents:
50163
diff
changeset
|
3421 /*********************************************************************** |
c8ea5e4b2129
* w32term.c: Remove consolidated defines and code.
Kim F. Storm <storm@cua.dk>
parents:
50163
diff
changeset
|
3422 Scroll bars |
c8ea5e4b2129
* w32term.c: Remove consolidated defines and code.
Kim F. Storm <storm@cua.dk>
parents:
50163
diff
changeset
|
3423 ***********************************************************************/ |
c8ea5e4b2129
* w32term.c: Remove consolidated defines and code.
Kim F. Storm <storm@cua.dk>
parents:
50163
diff
changeset
|
3424 |
13434 | 3425 /* Scroll bar support. */ |
3426 | |
30240
2c2a7ebd2c15
(help_echo_object, help_echo_pos): New variables.
Jason Rumney <jasonr@gnu.org>
parents:
30199
diff
changeset
|
3427 /* Given a window ID, find the struct scroll_bar which manages it. |
13434 | 3428 This can be called in GC, so we have to make sure to strip off mark |
3429 bits. */ | |
29321
8e2be36bb1c6
Format and doc changes to bring closer to xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
28369
diff
changeset
|
3430 |
8e2be36bb1c6
Format and doc changes to bring closer to xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
28369
diff
changeset
|
3431 static struct scroll_bar * |
13434 | 3432 x_window_to_scroll_bar (window_id) |
3433 Window window_id; | |
3434 { | |
27402
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
3435 Lisp_Object tail; |
13434 | 3436 |
3437 for (tail = Vframe_list; | |
3438 XGCTYPE (tail) == Lisp_Cons; | |
25646
9154af188477
Use XCAR and XCDR instead of explicit member references.
Ken Raeburn <raeburn@raeburn.org>
parents:
25236
diff
changeset
|
3439 tail = XCDR (tail)) |
13434 | 3440 { |
3441 Lisp_Object frame, bar, condemned; | |
3442 | |
25646
9154af188477
Use XCAR and XCDR instead of explicit member references.
Ken Raeburn <raeburn@raeburn.org>
parents:
25236
diff
changeset
|
3443 frame = XCAR (tail); |
13434 | 3444 /* All elements of Vframe_list should be frames. */ |
3445 if (! GC_FRAMEP (frame)) | |
3446 abort (); | |
3447 | |
3448 /* Scan this frame's scroll bar list for a scroll bar with the | |
3449 right window ID. */ | |
3450 condemned = FRAME_CONDEMNED_SCROLL_BARS (XFRAME (frame)); | |
3451 for (bar = FRAME_SCROLL_BARS (XFRAME (frame)); | |
3452 /* This trick allows us to search both the ordinary and | |
3453 condemned scroll bar lists with one loop. */ | |
3454 ! GC_NILP (bar) || (bar = condemned, | |
3455 condemned = Qnil, | |
3456 ! GC_NILP (bar)); | |
3457 bar = XSCROLL_BAR (bar)->next) | |
16588
481b7874a1e9
Change identifiers of the form win32* to w32*.
Geoff Voelker <voelker@cs.washington.edu>
parents:
16326
diff
changeset
|
3458 if (SCROLL_BAR_W32_WINDOW (XSCROLL_BAR (bar)) == window_id) |
13434 | 3459 return XSCROLL_BAR (bar); |
3460 } | |
3461 | |
3462 return 0; | |
3463 } | |
3464 | |
27402
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
3465 |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
3466 |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
3467 /* Set the thumb size and position of scroll bar BAR. We are currently |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
3468 displaying PORTION out of a whole WHOLE, and our position POSITION. */ |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
3469 |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
3470 static void |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
3471 w32_set_scroll_bar_thumb (bar, portion, position, whole) |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
3472 struct scroll_bar *bar; |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
3473 int portion, position, whole; |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
3474 { |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
3475 Window w = SCROLL_BAR_W32_WINDOW (bar); |
35984
0080b799e901
(w32_set_scroll_bar_thumb): Use `double' for `range' to avoid overflow.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
35678
diff
changeset
|
3476 double range = VERTICAL_SCROLL_BAR_TOP_RANGE (f, XINT (bar->height)); |
27402
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
3477 int sb_page, sb_pos; |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
3478 BOOL draggingp = !NILP (bar->dragging) ? TRUE : FALSE; |
71236
4a38eb2f741d
(w32_set_scroll_bar_thumb, x_scroll_bar_create)
Jason Rumney <jasonr@gnu.org>
parents:
71074
diff
changeset
|
3479 SCROLLINFO si; |
27402
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
3480 |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
3481 if (whole) |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
3482 { |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
3483 /* Position scroll bar at rock bottom if the bottom of the |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
3484 buffer is visible. This avoids shinking the thumb away |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
3485 to nothing if it is held at the bottom of the buffer. */ |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
3486 if (position + portion >= whole) |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
3487 { |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
3488 sb_page = range * (whole - position) / whole |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
3489 + VERTICAL_SCROLL_BAR_MIN_HANDLE; |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
3490 sb_pos = range; |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
3491 } |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
3492 |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
3493 sb_page = portion * range / whole + VERTICAL_SCROLL_BAR_MIN_HANDLE; |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
3494 sb_pos = position * range / whole; |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
3495 } |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
3496 else |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
3497 { |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
3498 sb_page = range; |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
3499 sb_pos = 0; |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
3500 } |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
3501 |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
3502 BLOCK_INPUT; |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
3503 |
71236
4a38eb2f741d
(w32_set_scroll_bar_thumb, x_scroll_bar_create)
Jason Rumney <jasonr@gnu.org>
parents:
71074
diff
changeset
|
3504 si.cbSize = sizeof (si); |
4a38eb2f741d
(w32_set_scroll_bar_thumb, x_scroll_bar_create)
Jason Rumney <jasonr@gnu.org>
parents:
71074
diff
changeset
|
3505 /* Only update page size if currently dragging, to reduce |
4a38eb2f741d
(w32_set_scroll_bar_thumb, x_scroll_bar_create)
Jason Rumney <jasonr@gnu.org>
parents:
71074
diff
changeset
|
3506 flicker effects. */ |
4a38eb2f741d
(w32_set_scroll_bar_thumb, x_scroll_bar_create)
Jason Rumney <jasonr@gnu.org>
parents:
71074
diff
changeset
|
3507 if (draggingp) |
4a38eb2f741d
(w32_set_scroll_bar_thumb, x_scroll_bar_create)
Jason Rumney <jasonr@gnu.org>
parents:
71074
diff
changeset
|
3508 si.fMask = SIF_PAGE; |
27402
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
3509 else |
71236
4a38eb2f741d
(w32_set_scroll_bar_thumb, x_scroll_bar_create)
Jason Rumney <jasonr@gnu.org>
parents:
71074
diff
changeset
|
3510 si.fMask = SIF_PAGE | SIF_POS; |
4a38eb2f741d
(w32_set_scroll_bar_thumb, x_scroll_bar_create)
Jason Rumney <jasonr@gnu.org>
parents:
71074
diff
changeset
|
3511 si.nPage = sb_page; |
4a38eb2f741d
(w32_set_scroll_bar_thumb, x_scroll_bar_create)
Jason Rumney <jasonr@gnu.org>
parents:
71074
diff
changeset
|
3512 si.nPos = sb_pos; |
4a38eb2f741d
(w32_set_scroll_bar_thumb, x_scroll_bar_create)
Jason Rumney <jasonr@gnu.org>
parents:
71074
diff
changeset
|
3513 |
4a38eb2f741d
(w32_set_scroll_bar_thumb, x_scroll_bar_create)
Jason Rumney <jasonr@gnu.org>
parents:
71074
diff
changeset
|
3514 SetScrollInfo (w, SB_CTL, &si, !draggingp); |
27402
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
3515 |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
3516 UNBLOCK_INPUT; |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
3517 } |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
3518 |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
3519 |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
3520 /************************************************************************ |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
3521 Scroll bars, general |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
3522 ************************************************************************/ |
48218
01e253345507
(w32_draw_fringe_bitmap): Remove unused local variable window.
Juanma Barranquero <lekktu@gmail.com>
parents:
48025
diff
changeset
|
3523 |
01e253345507
(w32_draw_fringe_bitmap): Remove unused local variable window.
Juanma Barranquero <lekktu@gmail.com>
parents:
48025
diff
changeset
|
3524 HWND |
13434 | 3525 my_create_scrollbar (f, bar) |
3526 struct frame * f; | |
3527 struct scroll_bar * bar; | |
3528 { | |
19713
043ccce224fb
(SIF_*): Win95 macros defined for NT.
Geoff Voelker <voelker@cs.washington.edu>
parents:
18877
diff
changeset
|
3529 return (HWND) SendMessage (FRAME_W32_WINDOW (f), |
48218
01e253345507
(w32_draw_fringe_bitmap): Remove unused local variable window.
Juanma Barranquero <lekktu@gmail.com>
parents:
48025
diff
changeset
|
3530 WM_EMACS_CREATESCROLLBAR, (WPARAM) f, |
19713
043ccce224fb
(SIF_*): Win95 macros defined for NT.
Geoff Voelker <voelker@cs.washington.edu>
parents:
18877
diff
changeset
|
3531 (LPARAM) bar); |
13434 | 3532 } |
3533 | |
42919
2a546583564f
(x_update_window_begin): Only hide caret if
Jason Rumney <jasonr@gnu.org>
parents:
42864
diff
changeset
|
3534 /*#define ATTACH_THREADS*/ |
15151
ed6ddfc0d954
(Vwindow_system): Declared.
Geoff Voelker <voelker@cs.washington.edu>
parents:
15035
diff
changeset
|
3535 |
64661
75130ff74ad2
(my_show_window, my_set_window_pos, my_set_focus, my_set_foreground_window,
Juanma Barranquero <lekktu@gmail.com>
parents:
64084
diff
changeset
|
3536 static BOOL |
19713
043ccce224fb
(SIF_*): Win95 macros defined for NT.
Geoff Voelker <voelker@cs.washington.edu>
parents:
18877
diff
changeset
|
3537 my_show_window (FRAME_PTR f, HWND hwnd, int how) |
15151
ed6ddfc0d954
(Vwindow_system): Declared.
Geoff Voelker <voelker@cs.washington.edu>
parents:
15035
diff
changeset
|
3538 { |
ed6ddfc0d954
(Vwindow_system): Declared.
Geoff Voelker <voelker@cs.washington.edu>
parents:
15035
diff
changeset
|
3539 #ifndef ATTACH_THREADS |
19713
043ccce224fb
(SIF_*): Win95 macros defined for NT.
Geoff Voelker <voelker@cs.washington.edu>
parents:
18877
diff
changeset
|
3540 return SendMessage (FRAME_W32_WINDOW (f), WM_EMACS_SHOWWINDOW, |
043ccce224fb
(SIF_*): Win95 macros defined for NT.
Geoff Voelker <voelker@cs.washington.edu>
parents:
18877
diff
changeset
|
3541 (WPARAM) hwnd, (LPARAM) how); |
15151
ed6ddfc0d954
(Vwindow_system): Declared.
Geoff Voelker <voelker@cs.washington.edu>
parents:
15035
diff
changeset
|
3542 #else |
19713
043ccce224fb
(SIF_*): Win95 macros defined for NT.
Geoff Voelker <voelker@cs.washington.edu>
parents:
18877
diff
changeset
|
3543 return ShowWindow (hwnd, how); |
15151
ed6ddfc0d954
(Vwindow_system): Declared.
Geoff Voelker <voelker@cs.washington.edu>
parents:
15035
diff
changeset
|
3544 #endif |
ed6ddfc0d954
(Vwindow_system): Declared.
Geoff Voelker <voelker@cs.washington.edu>
parents:
15035
diff
changeset
|
3545 } |
ed6ddfc0d954
(Vwindow_system): Declared.
Geoff Voelker <voelker@cs.washington.edu>
parents:
15035
diff
changeset
|
3546 |
64661
75130ff74ad2
(my_show_window, my_set_window_pos, my_set_focus, my_set_foreground_window,
Juanma Barranquero <lekktu@gmail.com>
parents:
64084
diff
changeset
|
3547 static void |
15151
ed6ddfc0d954
(Vwindow_system): Declared.
Geoff Voelker <voelker@cs.washington.edu>
parents:
15035
diff
changeset
|
3548 my_set_window_pos (HWND hwnd, HWND hwndAfter, |
19713
043ccce224fb
(SIF_*): Win95 macros defined for NT.
Geoff Voelker <voelker@cs.washington.edu>
parents:
18877
diff
changeset
|
3549 int x, int y, int cx, int cy, UINT flags) |
15151
ed6ddfc0d954
(Vwindow_system): Declared.
Geoff Voelker <voelker@cs.washington.edu>
parents:
15035
diff
changeset
|
3550 { |
ed6ddfc0d954
(Vwindow_system): Declared.
Geoff Voelker <voelker@cs.washington.edu>
parents:
15035
diff
changeset
|
3551 #ifndef ATTACH_THREADS |
19713
043ccce224fb
(SIF_*): Win95 macros defined for NT.
Geoff Voelker <voelker@cs.washington.edu>
parents:
18877
diff
changeset
|
3552 WINDOWPOS pos; |
043ccce224fb
(SIF_*): Win95 macros defined for NT.
Geoff Voelker <voelker@cs.washington.edu>
parents:
18877
diff
changeset
|
3553 pos.hwndInsertAfter = hwndAfter; |
15151
ed6ddfc0d954
(Vwindow_system): Declared.
Geoff Voelker <voelker@cs.washington.edu>
parents:
15035
diff
changeset
|
3554 pos.x = x; |
ed6ddfc0d954
(Vwindow_system): Declared.
Geoff Voelker <voelker@cs.washington.edu>
parents:
15035
diff
changeset
|
3555 pos.y = y; |
ed6ddfc0d954
(Vwindow_system): Declared.
Geoff Voelker <voelker@cs.washington.edu>
parents:
15035
diff
changeset
|
3556 pos.cx = cx; |
ed6ddfc0d954
(Vwindow_system): Declared.
Geoff Voelker <voelker@cs.washington.edu>
parents:
15035
diff
changeset
|
3557 pos.cy = cy; |
ed6ddfc0d954
(Vwindow_system): Declared.
Geoff Voelker <voelker@cs.washington.edu>
parents:
15035
diff
changeset
|
3558 pos.flags = flags; |
ed6ddfc0d954
(Vwindow_system): Declared.
Geoff Voelker <voelker@cs.washington.edu>
parents:
15035
diff
changeset
|
3559 SendMessage (hwnd, WM_EMACS_SETWINDOWPOS, (WPARAM) &pos, 0); |
ed6ddfc0d954
(Vwindow_system): Declared.
Geoff Voelker <voelker@cs.washington.edu>
parents:
15035
diff
changeset
|
3560 #else |
ed6ddfc0d954
(Vwindow_system): Declared.
Geoff Voelker <voelker@cs.washington.edu>
parents:
15035
diff
changeset
|
3561 SetWindowPos (hwnd, hwndAfter, x, y, cx, cy, flags); |
ed6ddfc0d954
(Vwindow_system): Declared.
Geoff Voelker <voelker@cs.washington.edu>
parents:
15035
diff
changeset
|
3562 #endif |
ed6ddfc0d954
(Vwindow_system): Declared.
Geoff Voelker <voelker@cs.washington.edu>
parents:
15035
diff
changeset
|
3563 } |
ed6ddfc0d954
(Vwindow_system): Declared.
Geoff Voelker <voelker@cs.washington.edu>
parents:
15035
diff
changeset
|
3564 |
64661
75130ff74ad2
(my_show_window, my_set_window_pos, my_set_focus, my_set_foreground_window,
Juanma Barranquero <lekktu@gmail.com>
parents:
64084
diff
changeset
|
3565 static void |
19713
043ccce224fb
(SIF_*): Win95 macros defined for NT.
Geoff Voelker <voelker@cs.washington.edu>
parents:
18877
diff
changeset
|
3566 my_set_focus (f, hwnd) |
043ccce224fb
(SIF_*): Win95 macros defined for NT.
Geoff Voelker <voelker@cs.washington.edu>
parents:
18877
diff
changeset
|
3567 struct frame * f; |
043ccce224fb
(SIF_*): Win95 macros defined for NT.
Geoff Voelker <voelker@cs.washington.edu>
parents:
18877
diff
changeset
|
3568 HWND hwnd; |
043ccce224fb
(SIF_*): Win95 macros defined for NT.
Geoff Voelker <voelker@cs.washington.edu>
parents:
18877
diff
changeset
|
3569 { |
48218
01e253345507
(w32_draw_fringe_bitmap): Remove unused local variable window.
Juanma Barranquero <lekktu@gmail.com>
parents:
48025
diff
changeset
|
3570 SendMessage (FRAME_W32_WINDOW (f), WM_EMACS_SETFOCUS, |
19713
043ccce224fb
(SIF_*): Win95 macros defined for NT.
Geoff Voelker <voelker@cs.washington.edu>
parents:
18877
diff
changeset
|
3571 (WPARAM) hwnd, 0); |
043ccce224fb
(SIF_*): Win95 macros defined for NT.
Geoff Voelker <voelker@cs.washington.edu>
parents:
18877
diff
changeset
|
3572 } |
043ccce224fb
(SIF_*): Win95 macros defined for NT.
Geoff Voelker <voelker@cs.washington.edu>
parents:
18877
diff
changeset
|
3573 |
64661
75130ff74ad2
(my_show_window, my_set_window_pos, my_set_focus, my_set_foreground_window,
Juanma Barranquero <lekktu@gmail.com>
parents:
64084
diff
changeset
|
3574 static void |
21614
2624d8dcc73f
(Vw32_recognize_altgr): New variable.
Geoff Voelker <voelker@cs.washington.edu>
parents:
21456
diff
changeset
|
3575 my_set_foreground_window (hwnd) |
2624d8dcc73f
(Vw32_recognize_altgr): New variable.
Geoff Voelker <voelker@cs.washington.edu>
parents:
21456
diff
changeset
|
3576 HWND hwnd; |
2624d8dcc73f
(Vw32_recognize_altgr): New variable.
Geoff Voelker <voelker@cs.washington.edu>
parents:
21456
diff
changeset
|
3577 { |
2624d8dcc73f
(Vw32_recognize_altgr): New variable.
Geoff Voelker <voelker@cs.washington.edu>
parents:
21456
diff
changeset
|
3578 SendMessage (hwnd, WM_EMACS_SETFOREGROUND, (WPARAM) hwnd, 0); |
2624d8dcc73f
(Vw32_recognize_altgr): New variable.
Geoff Voelker <voelker@cs.washington.edu>
parents:
21456
diff
changeset
|
3579 } |
2624d8dcc73f
(Vw32_recognize_altgr): New variable.
Geoff Voelker <voelker@cs.washington.edu>
parents:
21456
diff
changeset
|
3580 |
64661
75130ff74ad2
(my_show_window, my_set_window_pos, my_set_focus, my_set_foreground_window,
Juanma Barranquero <lekktu@gmail.com>
parents:
64084
diff
changeset
|
3581 |
75130ff74ad2
(my_show_window, my_set_window_pos, my_set_focus, my_set_foreground_window,
Juanma Barranquero <lekktu@gmail.com>
parents:
64084
diff
changeset
|
3582 static void |
13434 | 3583 my_destroy_window (f, hwnd) |
3584 struct frame * f; | |
3585 HWND hwnd; | |
3586 { | |
48218
01e253345507
(w32_draw_fringe_bitmap): Remove unused local variable window.
Juanma Barranquero <lekktu@gmail.com>
parents:
48025
diff
changeset
|
3587 SendMessage (FRAME_W32_WINDOW (f), WM_EMACS_DESTROYWINDOW, |
13434 | 3588 (WPARAM) hwnd, 0); |
3589 } | |
3590 | |
27402
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
3591 /* Create a scroll bar and return the scroll bar vector for it. W is |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
3592 the Emacs window on which to create the scroll bar. TOP, LEFT, |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
3593 WIDTH and HEIGHT are.the pixel coordinates and dimensions of the |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
3594 scroll bar. */ |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
3595 |
13434 | 3596 static struct scroll_bar * |
27402
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
3597 x_scroll_bar_create (w, top, left, width, height) |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
3598 struct window *w; |
13434 | 3599 int top, left, width, height; |
3600 { | |
27402
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
3601 struct frame *f = XFRAME (WINDOW_FRAME (w)); |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
3602 HWND hwnd; |
71236
4a38eb2f741d
(w32_set_scroll_bar_thumb, x_scroll_bar_create)
Jason Rumney <jasonr@gnu.org>
parents:
71074
diff
changeset
|
3603 SCROLLINFO si; |
13434 | 3604 struct scroll_bar *bar |
3605 = XSCROLL_BAR (Fmake_vector (make_number (SCROLL_BAR_VEC_SIZE), Qnil)); | |
3606 | |
3607 BLOCK_INPUT; | |
3608 | |
27402
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
3609 XSETWINDOW (bar->window, w); |
13434 | 3610 XSETINT (bar->top, top); |
3611 XSETINT (bar->left, left); | |
3612 XSETINT (bar->width, width); | |
3613 XSETINT (bar->height, height); | |
3614 XSETINT (bar->start, 0); | |
3615 XSETINT (bar->end, 0); | |
3616 bar->dragging = Qnil; | |
3617 | |
3618 /* Requires geometry to be set before call to create the real window */ | |
3619 | |
3620 hwnd = my_create_scrollbar (f, bar); | |
3621 | |
71236
4a38eb2f741d
(w32_set_scroll_bar_thumb, x_scroll_bar_create)
Jason Rumney <jasonr@gnu.org>
parents:
71074
diff
changeset
|
3622 si.cbSize = sizeof (si); |
4a38eb2f741d
(w32_set_scroll_bar_thumb, x_scroll_bar_create)
Jason Rumney <jasonr@gnu.org>
parents:
71074
diff
changeset
|
3623 si.fMask = SIF_ALL; |
4a38eb2f741d
(w32_set_scroll_bar_thumb, x_scroll_bar_create)
Jason Rumney <jasonr@gnu.org>
parents:
71074
diff
changeset
|
3624 si.nMin = 0; |
4a38eb2f741d
(w32_set_scroll_bar_thumb, x_scroll_bar_create)
Jason Rumney <jasonr@gnu.org>
parents:
71074
diff
changeset
|
3625 si.nMax = VERTICAL_SCROLL_BAR_TOP_RANGE (f, height) |
4a38eb2f741d
(w32_set_scroll_bar_thumb, x_scroll_bar_create)
Jason Rumney <jasonr@gnu.org>
parents:
71074
diff
changeset
|
3626 + VERTICAL_SCROLL_BAR_MIN_HANDLE; |
4a38eb2f741d
(w32_set_scroll_bar_thumb, x_scroll_bar_create)
Jason Rumney <jasonr@gnu.org>
parents:
71074
diff
changeset
|
3627 si.nPage = si.nMax; |
4a38eb2f741d
(w32_set_scroll_bar_thumb, x_scroll_bar_create)
Jason Rumney <jasonr@gnu.org>
parents:
71074
diff
changeset
|
3628 si.nPos = 0; |
4a38eb2f741d
(w32_set_scroll_bar_thumb, x_scroll_bar_create)
Jason Rumney <jasonr@gnu.org>
parents:
71074
diff
changeset
|
3629 |
4a38eb2f741d
(w32_set_scroll_bar_thumb, x_scroll_bar_create)
Jason Rumney <jasonr@gnu.org>
parents:
71074
diff
changeset
|
3630 SetScrollInfo (hwnd, SB_CTL, &si, FALSE); |
13434 | 3631 |
16588
481b7874a1e9
Change identifiers of the form win32* to w32*.
Geoff Voelker <voelker@cs.washington.edu>
parents:
16326
diff
changeset
|
3632 SET_SCROLL_BAR_W32_WINDOW (bar, hwnd); |
13434 | 3633 |
3634 /* Add bar to its frame's list of scroll bars. */ | |
3635 bar->next = FRAME_SCROLL_BARS (f); | |
3636 bar->prev = Qnil; | |
3637 XSETVECTOR (FRAME_SCROLL_BARS (f), bar); | |
3638 if (! NILP (bar->next)) | |
3639 XSETVECTOR (XSCROLL_BAR (bar->next)->prev, bar); | |
3640 | |
3641 UNBLOCK_INPUT; | |
3642 | |
3643 return bar; | |
3644 } | |
3645 | |
27402
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
3646 |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
3647 /* Destroy scroll bar BAR, and set its Emacs window's scroll bar to |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
3648 nil. */ |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
3649 |
13434 | 3650 static void |
3651 x_scroll_bar_remove (bar) | |
3652 struct scroll_bar *bar; | |
3653 { | |
3654 FRAME_PTR f = XFRAME (WINDOW_FRAME (XWINDOW (bar->window))); | |
3655 | |
3656 BLOCK_INPUT; | |
3657 | |
3658 /* Destroy the window. */ | |
16588
481b7874a1e9
Change identifiers of the form win32* to w32*.
Geoff Voelker <voelker@cs.washington.edu>
parents:
16326
diff
changeset
|
3659 my_destroy_window (f, SCROLL_BAR_W32_WINDOW (bar)); |
13434 | 3660 |
3661 /* Disassociate this scroll bar from its window. */ | |
3662 XWINDOW (bar->window)->vertical_scroll_bar = Qnil; | |
3663 | |
3664 UNBLOCK_INPUT; | |
3665 } | |
3666 | |
3667 /* Set the handle of the vertical scroll bar for WINDOW to indicate | |
3668 that we are displaying PORTION characters out of a total of WHOLE | |
3669 characters, starting at POSITION. If WINDOW has no scroll bar, | |
3670 create one. */ | |
3671 static void | |
27402
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
3672 w32_set_vertical_scroll_bar (w, portion, whole, position) |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
3673 struct window *w; |
13434 | 3674 int portion, whole, position; |
3675 { | |
27402
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
3676 struct frame *f = XFRAME (w->frame); |
13434 | 3677 struct scroll_bar *bar; |
29321
8e2be36bb1c6
Format and doc changes to bring closer to xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
28369
diff
changeset
|
3678 int top, height, left, sb_left, width, sb_width; |
51204
082b768216a0
Make (several) trivial substitutions for renamed and
Kim F. Storm <storm@cua.dk>
parents:
50441
diff
changeset
|
3679 int window_y, window_height; |
27402
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
3680 |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
3681 /* Get window dimensions. */ |
51204
082b768216a0
Make (several) trivial substitutions for renamed and
Kim F. Storm <storm@cua.dk>
parents:
50441
diff
changeset
|
3682 window_box (w, -1, 0, &window_y, 0, &window_height); |
27402
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
3683 top = window_y; |
51204
082b768216a0
Make (several) trivial substitutions for renamed and
Kim F. Storm <storm@cua.dk>
parents:
50441
diff
changeset
|
3684 width = WINDOW_CONFIG_SCROLL_BAR_COLS (w) * FRAME_COLUMN_WIDTH (f); |
27402
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
3685 height = window_height; |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
3686 |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
3687 /* Compute the left edge of the scroll bar area. */ |
51204
082b768216a0
Make (several) trivial substitutions for renamed and
Kim F. Storm <storm@cua.dk>
parents:
50441
diff
changeset
|
3688 left = WINDOW_SCROLL_BAR_AREA_X (w); |
27402
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
3689 |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
3690 /* Compute the width of the scroll bar which might be less than |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
3691 the width of the area reserved for the scroll bar. */ |
51204
082b768216a0
Make (several) trivial substitutions for renamed and
Kim F. Storm <storm@cua.dk>
parents:
50441
diff
changeset
|
3692 if (WINDOW_CONFIG_SCROLL_BAR_WIDTH (w) > 0) |
082b768216a0
Make (several) trivial substitutions for renamed and
Kim F. Storm <storm@cua.dk>
parents:
50441
diff
changeset
|
3693 sb_width = WINDOW_CONFIG_SCROLL_BAR_WIDTH (w); |
27402
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
3694 else |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
3695 sb_width = width; |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
3696 |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
3697 /* Compute the left edge of the scroll bar. */ |
51204
082b768216a0
Make (several) trivial substitutions for renamed and
Kim F. Storm <storm@cua.dk>
parents:
50441
diff
changeset
|
3698 if (WINDOW_HAS_VERTICAL_SCROLL_BAR_ON_RIGHT (w)) |
48218
01e253345507
(w32_draw_fringe_bitmap): Remove unused local variable window.
Juanma Barranquero <lekktu@gmail.com>
parents:
48025
diff
changeset
|
3699 sb_left = left + width - sb_width - (width - sb_width) / 2; |
27402
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
3700 else |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
3701 sb_left = left + (width - sb_width) / 2; |
13434 | 3702 |
3703 /* Does the scroll bar exist yet? */ | |
27402
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
3704 if (NILP (w->vertical_scroll_bar)) |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
3705 { |
27406
fb36ccd8457c
(w32_fill_rect): Do not try to deal with NULL hdc
Jason Rumney <jasonr@gnu.org>
parents:
27402
diff
changeset
|
3706 HDC hdc; |
27402
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
3707 BLOCK_INPUT; |
41249
2043af2d023f
(note_mouse_highlight): Fix type of variable `ignore'.
Jason Rumney <jasonr@gnu.org>
parents:
41125
diff
changeset
|
3708 if (width > 0 && height > 0) |
40137
5f0d7d58283b
(remember_mouse_glyph): New function.
Jason Rumney <jasonr@gnu.org>
parents:
40078
diff
changeset
|
3709 { |
5f0d7d58283b
(remember_mouse_glyph): New function.
Jason Rumney <jasonr@gnu.org>
parents:
40078
diff
changeset
|
3710 hdc = get_frame_dc (f); |
5f0d7d58283b
(remember_mouse_glyph): New function.
Jason Rumney <jasonr@gnu.org>
parents:
40078
diff
changeset
|
3711 w32_clear_area (f, hdc, left, top, width, height); |
5f0d7d58283b
(remember_mouse_glyph): New function.
Jason Rumney <jasonr@gnu.org>
parents:
40078
diff
changeset
|
3712 release_frame_dc (f, hdc); |
5f0d7d58283b
(remember_mouse_glyph): New function.
Jason Rumney <jasonr@gnu.org>
parents:
40078
diff
changeset
|
3713 } |
27402
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
3714 UNBLOCK_INPUT; |
27406
fb36ccd8457c
(w32_fill_rect): Do not try to deal with NULL hdc
Jason Rumney <jasonr@gnu.org>
parents:
27402
diff
changeset
|
3715 |
27402
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
3716 bar = x_scroll_bar_create (w, top, sb_left, sb_width, height); |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
3717 } |
13434 | 3718 else |
3719 { | |
48218
01e253345507
(w32_draw_fringe_bitmap): Remove unused local variable window.
Juanma Barranquero <lekktu@gmail.com>
parents:
48025
diff
changeset
|
3720 /* It may just need to be moved and resized. */ |
27402
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
3721 HWND hwnd; |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
3722 |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
3723 bar = XSCROLL_BAR (w->vertical_scroll_bar); |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
3724 hwnd = SCROLL_BAR_W32_WINDOW (bar); |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
3725 |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
3726 /* If already correctly positioned, do nothing. */ |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
3727 if ( XINT (bar->left) == sb_left |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
3728 && XINT (bar->top) == top |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
3729 && XINT (bar->width) == sb_width |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
3730 && XINT (bar->height) == height ) |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
3731 { |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
3732 /* Redraw after clear_frame. */ |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
3733 if (!my_show_window (f, hwnd, SW_NORMAL)) |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
3734 InvalidateRect (hwnd, NULL, FALSE); |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
3735 } |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
3736 else |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
3737 { |
27406
fb36ccd8457c
(w32_fill_rect): Do not try to deal with NULL hdc
Jason Rumney <jasonr@gnu.org>
parents:
27402
diff
changeset
|
3738 HDC hdc; |
71236
4a38eb2f741d
(w32_set_scroll_bar_thumb, x_scroll_bar_create)
Jason Rumney <jasonr@gnu.org>
parents:
71074
diff
changeset
|
3739 SCROLLINFO si; |
4a38eb2f741d
(w32_set_scroll_bar_thumb, x_scroll_bar_create)
Jason Rumney <jasonr@gnu.org>
parents:
71074
diff
changeset
|
3740 |
27402
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
3741 BLOCK_INPUT; |
40137
5f0d7d58283b
(remember_mouse_glyph): New function.
Jason Rumney <jasonr@gnu.org>
parents:
40078
diff
changeset
|
3742 if (width && height) |
5f0d7d58283b
(remember_mouse_glyph): New function.
Jason Rumney <jasonr@gnu.org>
parents:
40078
diff
changeset
|
3743 { |
5f0d7d58283b
(remember_mouse_glyph): New function.
Jason Rumney <jasonr@gnu.org>
parents:
40078
diff
changeset
|
3744 hdc = get_frame_dc (f); |
5f0d7d58283b
(remember_mouse_glyph): New function.
Jason Rumney <jasonr@gnu.org>
parents:
40078
diff
changeset
|
3745 /* Since Windows scroll bars are smaller than the space reserved |
5f0d7d58283b
(remember_mouse_glyph): New function.
Jason Rumney <jasonr@gnu.org>
parents:
40078
diff
changeset
|
3746 for them on the frame, we have to clear "under" them. */ |
5f0d7d58283b
(remember_mouse_glyph): New function.
Jason Rumney <jasonr@gnu.org>
parents:
40078
diff
changeset
|
3747 w32_clear_area (f, hdc, |
5f0d7d58283b
(remember_mouse_glyph): New function.
Jason Rumney <jasonr@gnu.org>
parents:
40078
diff
changeset
|
3748 left, |
5f0d7d58283b
(remember_mouse_glyph): New function.
Jason Rumney <jasonr@gnu.org>
parents:
40078
diff
changeset
|
3749 top, |
5f0d7d58283b
(remember_mouse_glyph): New function.
Jason Rumney <jasonr@gnu.org>
parents:
40078
diff
changeset
|
3750 width, |
5f0d7d58283b
(remember_mouse_glyph): New function.
Jason Rumney <jasonr@gnu.org>
parents:
40078
diff
changeset
|
3751 height); |
5f0d7d58283b
(remember_mouse_glyph): New function.
Jason Rumney <jasonr@gnu.org>
parents:
40078
diff
changeset
|
3752 release_frame_dc (f, hdc); |
5f0d7d58283b
(remember_mouse_glyph): New function.
Jason Rumney <jasonr@gnu.org>
parents:
40078
diff
changeset
|
3753 } |
27402
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
3754 /* Make sure scroll bar is "visible" before moving, to ensure the |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
3755 area of the parent window now exposed will be refreshed. */ |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
3756 my_show_window (f, hwnd, SW_HIDE); |
40137
5f0d7d58283b
(remember_mouse_glyph): New function.
Jason Rumney <jasonr@gnu.org>
parents:
40078
diff
changeset
|
3757 MoveWindow (hwnd, sb_left + VERTICAL_SCROLL_BAR_WIDTH_TRIM, |
5f0d7d58283b
(remember_mouse_glyph): New function.
Jason Rumney <jasonr@gnu.org>
parents:
40078
diff
changeset
|
3758 top, sb_width - VERTICAL_SCROLL_BAR_WIDTH_TRIM * 2, |
5f0d7d58283b
(remember_mouse_glyph): New function.
Jason Rumney <jasonr@gnu.org>
parents:
40078
diff
changeset
|
3759 max (height, 1), TRUE); |
71236
4a38eb2f741d
(w32_set_scroll_bar_thumb, x_scroll_bar_create)
Jason Rumney <jasonr@gnu.org>
parents:
71074
diff
changeset
|
3760 |
4a38eb2f741d
(w32_set_scroll_bar_thumb, x_scroll_bar_create)
Jason Rumney <jasonr@gnu.org>
parents:
71074
diff
changeset
|
3761 si.cbSize = sizeof (si); |
4a38eb2f741d
(w32_set_scroll_bar_thumb, x_scroll_bar_create)
Jason Rumney <jasonr@gnu.org>
parents:
71074
diff
changeset
|
3762 si.fMask = SIF_RANGE; |
4a38eb2f741d
(w32_set_scroll_bar_thumb, x_scroll_bar_create)
Jason Rumney <jasonr@gnu.org>
parents:
71074
diff
changeset
|
3763 si.nMin = 0; |
4a38eb2f741d
(w32_set_scroll_bar_thumb, x_scroll_bar_create)
Jason Rumney <jasonr@gnu.org>
parents:
71074
diff
changeset
|
3764 si.nMax = VERTICAL_SCROLL_BAR_TOP_RANGE (f, height) |
4a38eb2f741d
(w32_set_scroll_bar_thumb, x_scroll_bar_create)
Jason Rumney <jasonr@gnu.org>
parents:
71074
diff
changeset
|
3765 + VERTICAL_SCROLL_BAR_MIN_HANDLE; |
4a38eb2f741d
(w32_set_scroll_bar_thumb, x_scroll_bar_create)
Jason Rumney <jasonr@gnu.org>
parents:
71074
diff
changeset
|
3766 |
4a38eb2f741d
(w32_set_scroll_bar_thumb, x_scroll_bar_create)
Jason Rumney <jasonr@gnu.org>
parents:
71074
diff
changeset
|
3767 SetScrollInfo (hwnd, SB_CTL, &si, FALSE); |
4a38eb2f741d
(w32_set_scroll_bar_thumb, x_scroll_bar_create)
Jason Rumney <jasonr@gnu.org>
parents:
71074
diff
changeset
|
3768 |
27402
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
3769 my_show_window (f, hwnd, SW_NORMAL); |
42919
2a546583564f
(x_update_window_begin): Only hide caret if
Jason Rumney <jasonr@gnu.org>
parents:
42864
diff
changeset
|
3770 /* InvalidateRect (w, NULL, FALSE); */ |
27402
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
3771 |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
3772 /* Remember new settings. */ |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
3773 XSETINT (bar->left, sb_left); |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
3774 XSETINT (bar->top, top); |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
3775 XSETINT (bar->width, sb_width); |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
3776 XSETINT (bar->height, height); |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
3777 |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
3778 UNBLOCK_INPUT; |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
3779 } |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
3780 } |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
3781 w32_set_scroll_bar_thumb (bar, portion, position, whole); |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
3782 |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
3783 XSETVECTOR (w->vertical_scroll_bar, bar); |
13434 | 3784 } |
3785 | |
3786 | |
3787 /* The following three hooks are used when we're doing a thorough | |
3788 redisplay of the frame. We don't explicitly know which scroll bars | |
3789 are going to be deleted, because keeping track of when windows go | |
3790 away is a real pain - "Can you say set-window-configuration, boys | |
3791 and girls?" Instead, we just assert at the beginning of redisplay | |
3792 that *all* scroll bars are to be removed, and then save a scroll bar | |
3793 from the fiery pit when we actually redisplay its window. */ | |
3794 | |
3795 /* Arrange for all scroll bars on FRAME to be removed at the next call | |
3796 to `*judge_scroll_bars_hook'. A scroll bar may be spared if | |
29321
8e2be36bb1c6
Format and doc changes to bring closer to xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
28369
diff
changeset
|
3797 `*redeem_scroll_bar_hook' is applied to its window before the judgment. */ |
8e2be36bb1c6
Format and doc changes to bring closer to xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
28369
diff
changeset
|
3798 |
13434 | 3799 static void |
16588
481b7874a1e9
Change identifiers of the form win32* to w32*.
Geoff Voelker <voelker@cs.washington.edu>
parents:
16326
diff
changeset
|
3800 w32_condemn_scroll_bars (frame) |
13434 | 3801 FRAME_PTR frame; |
3802 { | |
21614
2624d8dcc73f
(Vw32_recognize_altgr): New variable.
Geoff Voelker <voelker@cs.washington.edu>
parents:
21456
diff
changeset
|
3803 /* Transfer all the scroll bars to FRAME_CONDEMNED_SCROLL_BARS. */ |
2624d8dcc73f
(Vw32_recognize_altgr): New variable.
Geoff Voelker <voelker@cs.washington.edu>
parents:
21456
diff
changeset
|
3804 while (! NILP (FRAME_SCROLL_BARS (frame))) |
2624d8dcc73f
(Vw32_recognize_altgr): New variable.
Geoff Voelker <voelker@cs.washington.edu>
parents:
21456
diff
changeset
|
3805 { |
2624d8dcc73f
(Vw32_recognize_altgr): New variable.
Geoff Voelker <voelker@cs.washington.edu>
parents:
21456
diff
changeset
|
3806 Lisp_Object bar; |
2624d8dcc73f
(Vw32_recognize_altgr): New variable.
Geoff Voelker <voelker@cs.washington.edu>
parents:
21456
diff
changeset
|
3807 bar = FRAME_SCROLL_BARS (frame); |
2624d8dcc73f
(Vw32_recognize_altgr): New variable.
Geoff Voelker <voelker@cs.washington.edu>
parents:
21456
diff
changeset
|
3808 FRAME_SCROLL_BARS (frame) = XSCROLL_BAR (bar)->next; |
2624d8dcc73f
(Vw32_recognize_altgr): New variable.
Geoff Voelker <voelker@cs.washington.edu>
parents:
21456
diff
changeset
|
3809 XSCROLL_BAR (bar)->next = FRAME_CONDEMNED_SCROLL_BARS (frame); |
2624d8dcc73f
(Vw32_recognize_altgr): New variable.
Geoff Voelker <voelker@cs.washington.edu>
parents:
21456
diff
changeset
|
3810 XSCROLL_BAR (bar)->prev = Qnil; |
2624d8dcc73f
(Vw32_recognize_altgr): New variable.
Geoff Voelker <voelker@cs.washington.edu>
parents:
21456
diff
changeset
|
3811 if (! NILP (FRAME_CONDEMNED_SCROLL_BARS (frame))) |
2624d8dcc73f
(Vw32_recognize_altgr): New variable.
Geoff Voelker <voelker@cs.washington.edu>
parents:
21456
diff
changeset
|
3812 XSCROLL_BAR (FRAME_CONDEMNED_SCROLL_BARS (frame))->prev = bar; |
2624d8dcc73f
(Vw32_recognize_altgr): New variable.
Geoff Voelker <voelker@cs.washington.edu>
parents:
21456
diff
changeset
|
3813 FRAME_CONDEMNED_SCROLL_BARS (frame) = bar; |
2624d8dcc73f
(Vw32_recognize_altgr): New variable.
Geoff Voelker <voelker@cs.washington.edu>
parents:
21456
diff
changeset
|
3814 } |
13434 | 3815 } |
3816 | |
35384
e50a7f9ce65e
(x_produce_stretch_glyph): Only use Qspace when GLYPH_DEBUG is defined.
Jason Rumney <jasonr@gnu.org>
parents:
35287
diff
changeset
|
3817 |
29321
8e2be36bb1c6
Format and doc changes to bring closer to xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
28369
diff
changeset
|
3818 /* Un-mark WINDOW's scroll bar for deletion in this judgment cycle. |
13434 | 3819 Note that WINDOW isn't necessarily condemned at all. */ |
35384
e50a7f9ce65e
(x_produce_stretch_glyph): Only use Qspace when GLYPH_DEBUG is defined.
Jason Rumney <jasonr@gnu.org>
parents:
35287
diff
changeset
|
3820 |
13434 | 3821 static void |
16588
481b7874a1e9
Change identifiers of the form win32* to w32*.
Geoff Voelker <voelker@cs.washington.edu>
parents:
16326
diff
changeset
|
3822 w32_redeem_scroll_bar (window) |
13434 | 3823 struct window *window; |
3824 { | |
3825 struct scroll_bar *bar; | |
35384
e50a7f9ce65e
(x_produce_stretch_glyph): Only use Qspace when GLYPH_DEBUG is defined.
Jason Rumney <jasonr@gnu.org>
parents:
35287
diff
changeset
|
3826 struct frame *f; |
13434 | 3827 |
3828 /* We can't redeem this window's scroll bar if it doesn't have one. */ | |
3829 if (NILP (window->vertical_scroll_bar)) | |
3830 abort (); | |
3831 | |
3832 bar = XSCROLL_BAR (window->vertical_scroll_bar); | |
3833 | |
3834 /* Unlink it from the condemned list. */ | |
35384
e50a7f9ce65e
(x_produce_stretch_glyph): Only use Qspace when GLYPH_DEBUG is defined.
Jason Rumney <jasonr@gnu.org>
parents:
35287
diff
changeset
|
3835 f = XFRAME (WINDOW_FRAME (window)); |
e50a7f9ce65e
(x_produce_stretch_glyph): Only use Qspace when GLYPH_DEBUG is defined.
Jason Rumney <jasonr@gnu.org>
parents:
35287
diff
changeset
|
3836 if (NILP (bar->prev)) |
e50a7f9ce65e
(x_produce_stretch_glyph): Only use Qspace when GLYPH_DEBUG is defined.
Jason Rumney <jasonr@gnu.org>
parents:
35287
diff
changeset
|
3837 { |
e50a7f9ce65e
(x_produce_stretch_glyph): Only use Qspace when GLYPH_DEBUG is defined.
Jason Rumney <jasonr@gnu.org>
parents:
35287
diff
changeset
|
3838 /* If the prev pointer is nil, it must be the first in one of |
e50a7f9ce65e
(x_produce_stretch_glyph): Only use Qspace when GLYPH_DEBUG is defined.
Jason Rumney <jasonr@gnu.org>
parents:
35287
diff
changeset
|
3839 the lists. */ |
e50a7f9ce65e
(x_produce_stretch_glyph): Only use Qspace when GLYPH_DEBUG is defined.
Jason Rumney <jasonr@gnu.org>
parents:
35287
diff
changeset
|
3840 if (EQ (FRAME_SCROLL_BARS (f), window->vertical_scroll_bar)) |
e50a7f9ce65e
(x_produce_stretch_glyph): Only use Qspace when GLYPH_DEBUG is defined.
Jason Rumney <jasonr@gnu.org>
parents:
35287
diff
changeset
|
3841 /* It's not condemned. Everything's fine. */ |
e50a7f9ce65e
(x_produce_stretch_glyph): Only use Qspace when GLYPH_DEBUG is defined.
Jason Rumney <jasonr@gnu.org>
parents:
35287
diff
changeset
|
3842 return; |
e50a7f9ce65e
(x_produce_stretch_glyph): Only use Qspace when GLYPH_DEBUG is defined.
Jason Rumney <jasonr@gnu.org>
parents:
35287
diff
changeset
|
3843 else if (EQ (FRAME_CONDEMNED_SCROLL_BARS (f), |
e50a7f9ce65e
(x_produce_stretch_glyph): Only use Qspace when GLYPH_DEBUG is defined.
Jason Rumney <jasonr@gnu.org>
parents:
35287
diff
changeset
|
3844 window->vertical_scroll_bar)) |
e50a7f9ce65e
(x_produce_stretch_glyph): Only use Qspace when GLYPH_DEBUG is defined.
Jason Rumney <jasonr@gnu.org>
parents:
35287
diff
changeset
|
3845 FRAME_CONDEMNED_SCROLL_BARS (f) = bar->next; |
e50a7f9ce65e
(x_produce_stretch_glyph): Only use Qspace when GLYPH_DEBUG is defined.
Jason Rumney <jasonr@gnu.org>
parents:
35287
diff
changeset
|
3846 else |
e50a7f9ce65e
(x_produce_stretch_glyph): Only use Qspace when GLYPH_DEBUG is defined.
Jason Rumney <jasonr@gnu.org>
parents:
35287
diff
changeset
|
3847 /* If its prev pointer is nil, it must be at the front of |
e50a7f9ce65e
(x_produce_stretch_glyph): Only use Qspace when GLYPH_DEBUG is defined.
Jason Rumney <jasonr@gnu.org>
parents:
35287
diff
changeset
|
3848 one or the other! */ |
e50a7f9ce65e
(x_produce_stretch_glyph): Only use Qspace when GLYPH_DEBUG is defined.
Jason Rumney <jasonr@gnu.org>
parents:
35287
diff
changeset
|
3849 abort (); |
e50a7f9ce65e
(x_produce_stretch_glyph): Only use Qspace when GLYPH_DEBUG is defined.
Jason Rumney <jasonr@gnu.org>
parents:
35287
diff
changeset
|
3850 } |
e50a7f9ce65e
(x_produce_stretch_glyph): Only use Qspace when GLYPH_DEBUG is defined.
Jason Rumney <jasonr@gnu.org>
parents:
35287
diff
changeset
|
3851 else |
e50a7f9ce65e
(x_produce_stretch_glyph): Only use Qspace when GLYPH_DEBUG is defined.
Jason Rumney <jasonr@gnu.org>
parents:
35287
diff
changeset
|
3852 XSCROLL_BAR (bar->prev)->next = bar->next; |
e50a7f9ce65e
(x_produce_stretch_glyph): Only use Qspace when GLYPH_DEBUG is defined.
Jason Rumney <jasonr@gnu.org>
parents:
35287
diff
changeset
|
3853 |
e50a7f9ce65e
(x_produce_stretch_glyph): Only use Qspace when GLYPH_DEBUG is defined.
Jason Rumney <jasonr@gnu.org>
parents:
35287
diff
changeset
|
3854 if (! NILP (bar->next)) |
e50a7f9ce65e
(x_produce_stretch_glyph): Only use Qspace when GLYPH_DEBUG is defined.
Jason Rumney <jasonr@gnu.org>
parents:
35287
diff
changeset
|
3855 XSCROLL_BAR (bar->next)->prev = bar->prev; |
e50a7f9ce65e
(x_produce_stretch_glyph): Only use Qspace when GLYPH_DEBUG is defined.
Jason Rumney <jasonr@gnu.org>
parents:
35287
diff
changeset
|
3856 |
e50a7f9ce65e
(x_produce_stretch_glyph): Only use Qspace when GLYPH_DEBUG is defined.
Jason Rumney <jasonr@gnu.org>
parents:
35287
diff
changeset
|
3857 bar->next = FRAME_SCROLL_BARS (f); |
e50a7f9ce65e
(x_produce_stretch_glyph): Only use Qspace when GLYPH_DEBUG is defined.
Jason Rumney <jasonr@gnu.org>
parents:
35287
diff
changeset
|
3858 bar->prev = Qnil; |
e50a7f9ce65e
(x_produce_stretch_glyph): Only use Qspace when GLYPH_DEBUG is defined.
Jason Rumney <jasonr@gnu.org>
parents:
35287
diff
changeset
|
3859 XSETVECTOR (FRAME_SCROLL_BARS (f), bar); |
e50a7f9ce65e
(x_produce_stretch_glyph): Only use Qspace when GLYPH_DEBUG is defined.
Jason Rumney <jasonr@gnu.org>
parents:
35287
diff
changeset
|
3860 if (! NILP (bar->next)) |
e50a7f9ce65e
(x_produce_stretch_glyph): Only use Qspace when GLYPH_DEBUG is defined.
Jason Rumney <jasonr@gnu.org>
parents:
35287
diff
changeset
|
3861 XSETVECTOR (XSCROLL_BAR (bar->next)->prev, bar); |
13434 | 3862 } |
3863 | |
3864 /* Remove all scroll bars on FRAME that haven't been saved since the | |
3865 last call to `*condemn_scroll_bars_hook'. */ | |
29321
8e2be36bb1c6
Format and doc changes to bring closer to xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
28369
diff
changeset
|
3866 |
13434 | 3867 static void |
16588
481b7874a1e9
Change identifiers of the form win32* to w32*.
Geoff Voelker <voelker@cs.washington.edu>
parents:
16326
diff
changeset
|
3868 w32_judge_scroll_bars (f) |
13434 | 3869 FRAME_PTR f; |
3870 { | |
3871 Lisp_Object bar, next; | |
3872 | |
3873 bar = FRAME_CONDEMNED_SCROLL_BARS (f); | |
3874 | |
3875 /* Clear out the condemned list now so we won't try to process any | |
3876 more events on the hapless scroll bars. */ | |
3877 FRAME_CONDEMNED_SCROLL_BARS (f) = Qnil; | |
3878 | |
3879 for (; ! NILP (bar); bar = next) | |
3880 { | |
3881 struct scroll_bar *b = XSCROLL_BAR (bar); | |
3882 | |
3883 x_scroll_bar_remove (b); | |
3884 | |
3885 next = b->next; | |
3886 b->next = b->prev = Qnil; | |
3887 } | |
3888 | |
3889 /* Now there should be no references to the condemned scroll bars, | |
3890 and they should get garbage-collected. */ | |
3891 } | |
3892 | |
3893 /* Handle a mouse click on the scroll bar BAR. If *EMACS_EVENT's kind | |
45803
9484de301252
Rename enum event_kind items.
Pavel Janík <Pavel@Janik.cz>
parents:
45507
diff
changeset
|
3894 is set to something other than NO_EVENT, it is enqueued. |
13434 | 3895 |
3896 This may be called from a signal handler, so we have to ignore GC | |
3897 mark bits. */ | |
15216
f639c5d732a3
(x_scroll_bar_set_handle): Always use start in calling SetScrollPos.
Richard M. Stallman <rms@gnu.org>
parents:
15204
diff
changeset
|
3898 |
15151
ed6ddfc0d954
(Vwindow_system): Declared.
Geoff Voelker <voelker@cs.washington.edu>
parents:
15035
diff
changeset
|
3899 static int |
35384
e50a7f9ce65e
(x_produce_stretch_glyph): Only use Qspace when GLYPH_DEBUG is defined.
Jason Rumney <jasonr@gnu.org>
parents:
35287
diff
changeset
|
3900 w32_scroll_bar_handle_click (bar, msg, emacs_event) |
13434 | 3901 struct scroll_bar *bar; |
16588
481b7874a1e9
Change identifiers of the form win32* to w32*.
Geoff Voelker <voelker@cs.washington.edu>
parents:
16326
diff
changeset
|
3902 W32Msg *msg; |
13434 | 3903 struct input_event *emacs_event; |
3904 { | |
3905 if (! GC_WINDOWP (bar->window)) | |
3906 abort (); | |
3907 | |
45803
9484de301252
Rename enum event_kind items.
Pavel Janík <Pavel@Janik.cz>
parents:
45507
diff
changeset
|
3908 emacs_event->kind = W32_SCROLL_BAR_CLICK_EVENT; |
13434 | 3909 emacs_event->code = 0; |
15151
ed6ddfc0d954
(Vwindow_system): Declared.
Geoff Voelker <voelker@cs.washington.edu>
parents:
15035
diff
changeset
|
3910 /* not really meaningful to distinguish up/down */ |
ed6ddfc0d954
(Vwindow_system): Declared.
Geoff Voelker <voelker@cs.washington.edu>
parents:
15035
diff
changeset
|
3911 emacs_event->modifiers = msg->dwModifiers; |
13434 | 3912 emacs_event->frame_or_window = bar->window; |
30199
298f10cd4ba5
(construct_mouse_click, construct_mouse_wheel)
Gerd Moellmann <gerd@gnu.org>
parents:
30179
diff
changeset
|
3913 emacs_event->arg = Qnil; |
13434 | 3914 emacs_event->timestamp = msg->msg.time; |
3915 | |
3916 { | |
27402
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
3917 int top_range = VERTICAL_SCROLL_BAR_TOP_RANGE (f, XINT (bar->height)); |
19713
043ccce224fb
(SIF_*): Win95 macros defined for NT.
Geoff Voelker <voelker@cs.washington.edu>
parents:
18877
diff
changeset
|
3918 int y; |
043ccce224fb
(SIF_*): Win95 macros defined for NT.
Geoff Voelker <voelker@cs.washington.edu>
parents:
18877
diff
changeset
|
3919 int dragging = !NILP (bar->dragging); |
71236
4a38eb2f741d
(w32_set_scroll_bar_thumb, x_scroll_bar_create)
Jason Rumney <jasonr@gnu.org>
parents:
71074
diff
changeset
|
3920 SCROLLINFO si; |
4a38eb2f741d
(w32_set_scroll_bar_thumb, x_scroll_bar_create)
Jason Rumney <jasonr@gnu.org>
parents:
71074
diff
changeset
|
3921 |
4a38eb2f741d
(w32_set_scroll_bar_thumb, x_scroll_bar_create)
Jason Rumney <jasonr@gnu.org>
parents:
71074
diff
changeset
|
3922 si.cbSize = sizeof (si); |
4a38eb2f741d
(w32_set_scroll_bar_thumb, x_scroll_bar_create)
Jason Rumney <jasonr@gnu.org>
parents:
71074
diff
changeset
|
3923 si.fMask = SIF_POS; |
4a38eb2f741d
(w32_set_scroll_bar_thumb, x_scroll_bar_create)
Jason Rumney <jasonr@gnu.org>
parents:
71074
diff
changeset
|
3924 |
4a38eb2f741d
(w32_set_scroll_bar_thumb, x_scroll_bar_create)
Jason Rumney <jasonr@gnu.org>
parents:
71074
diff
changeset
|
3925 GetScrollInfo ((HWND) msg->msg.lParam, SB_CTL, &si); |
4a38eb2f741d
(w32_set_scroll_bar_thumb, x_scroll_bar_create)
Jason Rumney <jasonr@gnu.org>
parents:
71074
diff
changeset
|
3926 y = si.nPos; |
19713
043ccce224fb
(SIF_*): Win95 macros defined for NT.
Geoff Voelker <voelker@cs.washington.edu>
parents:
18877
diff
changeset
|
3927 |
043ccce224fb
(SIF_*): Win95 macros defined for NT.
Geoff Voelker <voelker@cs.washington.edu>
parents:
18877
diff
changeset
|
3928 bar->dragging = Qnil; |
13434 | 3929 |
29321
8e2be36bb1c6
Format and doc changes to bring closer to xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
28369
diff
changeset
|
3930 |
8e2be36bb1c6
Format and doc changes to bring closer to xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
28369
diff
changeset
|
3931 last_mouse_scroll_bar_pos = msg->msg.wParam; |
48218
01e253345507
(w32_draw_fringe_bitmap): Remove unused local variable window.
Juanma Barranquero <lekktu@gmail.com>
parents:
48025
diff
changeset
|
3932 |
13434 | 3933 switch (LOWORD (msg->msg.wParam)) |
15216
f639c5d732a3
(x_scroll_bar_set_handle): Always use start in calling SetScrollPos.
Richard M. Stallman <rms@gnu.org>
parents:
15204
diff
changeset
|
3934 { |
f639c5d732a3
(x_scroll_bar_set_handle): Always use start in calling SetScrollPos.
Richard M. Stallman <rms@gnu.org>
parents:
15204
diff
changeset
|
3935 case SB_LINEDOWN: |
15151
ed6ddfc0d954
(Vwindow_system): Declared.
Geoff Voelker <voelker@cs.washington.edu>
parents:
15035
diff
changeset
|
3936 emacs_event->part = scroll_bar_down_arrow; |
13434 | 3937 break; |
15216
f639c5d732a3
(x_scroll_bar_set_handle): Always use start in calling SetScrollPos.
Richard M. Stallman <rms@gnu.org>
parents:
15204
diff
changeset
|
3938 case SB_LINEUP: |
15151
ed6ddfc0d954
(Vwindow_system): Declared.
Geoff Voelker <voelker@cs.washington.edu>
parents:
15035
diff
changeset
|
3939 emacs_event->part = scroll_bar_up_arrow; |
13434 | 3940 break; |
15216
f639c5d732a3
(x_scroll_bar_set_handle): Always use start in calling SetScrollPos.
Richard M. Stallman <rms@gnu.org>
parents:
15204
diff
changeset
|
3941 case SB_PAGEUP: |
13434 | 3942 emacs_event->part = scroll_bar_above_handle; |
3943 break; | |
15216
f639c5d732a3
(x_scroll_bar_set_handle): Always use start in calling SetScrollPos.
Richard M. Stallman <rms@gnu.org>
parents:
15204
diff
changeset
|
3944 case SB_PAGEDOWN: |
13434 | 3945 emacs_event->part = scroll_bar_below_handle; |
3946 break; | |
15216
f639c5d732a3
(x_scroll_bar_set_handle): Always use start in calling SetScrollPos.
Richard M. Stallman <rms@gnu.org>
parents:
15204
diff
changeset
|
3947 case SB_TOP: |
13434 | 3948 emacs_event->part = scroll_bar_handle; |
3949 y = 0; | |
3950 break; | |
15216
f639c5d732a3
(x_scroll_bar_set_handle): Always use start in calling SetScrollPos.
Richard M. Stallman <rms@gnu.org>
parents:
15204
diff
changeset
|
3951 case SB_BOTTOM: |
13434 | 3952 emacs_event->part = scroll_bar_handle; |
3953 y = top_range; | |
3954 break; | |
19713
043ccce224fb
(SIF_*): Win95 macros defined for NT.
Geoff Voelker <voelker@cs.washington.edu>
parents:
18877
diff
changeset
|
3955 case SB_THUMBTRACK: |
15216
f639c5d732a3
(x_scroll_bar_set_handle): Always use start in calling SetScrollPos.
Richard M. Stallman <rms@gnu.org>
parents:
15204
diff
changeset
|
3956 case SB_THUMBPOSITION: |
27402
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
3957 if (VERTICAL_SCROLL_BAR_TOP_RANGE (f, XINT (bar->height)) <= 0xffff) |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
3958 y = HIWORD (msg->msg.wParam); |
19713
043ccce224fb
(SIF_*): Win95 macros defined for NT.
Geoff Voelker <voelker@cs.washington.edu>
parents:
18877
diff
changeset
|
3959 bar->dragging = Qt; |
13434 | 3960 emacs_event->part = scroll_bar_handle; |
19713
043ccce224fb
(SIF_*): Win95 macros defined for NT.
Geoff Voelker <voelker@cs.washington.edu>
parents:
18877
diff
changeset
|
3961 |
043ccce224fb
(SIF_*): Win95 macros defined for NT.
Geoff Voelker <voelker@cs.washington.edu>
parents:
18877
diff
changeset
|
3962 /* "Silently" update current position. */ |
71236
4a38eb2f741d
(w32_set_scroll_bar_thumb, x_scroll_bar_create)
Jason Rumney <jasonr@gnu.org>
parents:
71074
diff
changeset
|
3963 { |
4a38eb2f741d
(w32_set_scroll_bar_thumb, x_scroll_bar_create)
Jason Rumney <jasonr@gnu.org>
parents:
71074
diff
changeset
|
3964 SCROLLINFO si; |
4a38eb2f741d
(w32_set_scroll_bar_thumb, x_scroll_bar_create)
Jason Rumney <jasonr@gnu.org>
parents:
71074
diff
changeset
|
3965 |
4a38eb2f741d
(w32_set_scroll_bar_thumb, x_scroll_bar_create)
Jason Rumney <jasonr@gnu.org>
parents:
71074
diff
changeset
|
3966 si.cbSize = sizeof (si); |
4a38eb2f741d
(w32_set_scroll_bar_thumb, x_scroll_bar_create)
Jason Rumney <jasonr@gnu.org>
parents:
71074
diff
changeset
|
3967 si.fMask = SIF_POS; |
4a38eb2f741d
(w32_set_scroll_bar_thumb, x_scroll_bar_create)
Jason Rumney <jasonr@gnu.org>
parents:
71074
diff
changeset
|
3968 si.nPos = y; |
4a38eb2f741d
(w32_set_scroll_bar_thumb, x_scroll_bar_create)
Jason Rumney <jasonr@gnu.org>
parents:
71074
diff
changeset
|
3969 /* Remember apparent position (we actually lag behind the real |
4a38eb2f741d
(w32_set_scroll_bar_thumb, x_scroll_bar_create)
Jason Rumney <jasonr@gnu.org>
parents:
71074
diff
changeset
|
3970 position, so don't set that directly. */ |
4a38eb2f741d
(w32_set_scroll_bar_thumb, x_scroll_bar_create)
Jason Rumney <jasonr@gnu.org>
parents:
71074
diff
changeset
|
3971 last_scroll_bar_drag_pos = y; |
4a38eb2f741d
(w32_set_scroll_bar_thumb, x_scroll_bar_create)
Jason Rumney <jasonr@gnu.org>
parents:
71074
diff
changeset
|
3972 |
4a38eb2f741d
(w32_set_scroll_bar_thumb, x_scroll_bar_create)
Jason Rumney <jasonr@gnu.org>
parents:
71074
diff
changeset
|
3973 SetScrollInfo (SCROLL_BAR_W32_WINDOW (bar), SB_CTL, &si, FALSE); |
4a38eb2f741d
(w32_set_scroll_bar_thumb, x_scroll_bar_create)
Jason Rumney <jasonr@gnu.org>
parents:
71074
diff
changeset
|
3974 } |
13434 | 3975 break; |
15216
f639c5d732a3
(x_scroll_bar_set_handle): Always use start in calling SetScrollPos.
Richard M. Stallman <rms@gnu.org>
parents:
15204
diff
changeset
|
3976 case SB_ENDSCROLL: |
19713
043ccce224fb
(SIF_*): Win95 macros defined for NT.
Geoff Voelker <voelker@cs.washington.edu>
parents:
18877
diff
changeset
|
3977 /* If this is the end of a drag sequence, then reset the scroll |
043ccce224fb
(SIF_*): Win95 macros defined for NT.
Geoff Voelker <voelker@cs.washington.edu>
parents:
18877
diff
changeset
|
3978 handle size to normal and do a final redraw. Otherwise do |
043ccce224fb
(SIF_*): Win95 macros defined for NT.
Geoff Voelker <voelker@cs.washington.edu>
parents:
18877
diff
changeset
|
3979 nothing. */ |
043ccce224fb
(SIF_*): Win95 macros defined for NT.
Geoff Voelker <voelker@cs.washington.edu>
parents:
18877
diff
changeset
|
3980 if (dragging) |
043ccce224fb
(SIF_*): Win95 macros defined for NT.
Geoff Voelker <voelker@cs.washington.edu>
parents:
18877
diff
changeset
|
3981 { |
71236
4a38eb2f741d
(w32_set_scroll_bar_thumb, x_scroll_bar_create)
Jason Rumney <jasonr@gnu.org>
parents:
71074
diff
changeset
|
3982 SCROLLINFO si; |
4a38eb2f741d
(w32_set_scroll_bar_thumb, x_scroll_bar_create)
Jason Rumney <jasonr@gnu.org>
parents:
71074
diff
changeset
|
3983 int start = XINT (bar->start); |
4a38eb2f741d
(w32_set_scroll_bar_thumb, x_scroll_bar_create)
Jason Rumney <jasonr@gnu.org>
parents:
71074
diff
changeset
|
3984 int end = XINT (bar->end); |
4a38eb2f741d
(w32_set_scroll_bar_thumb, x_scroll_bar_create)
Jason Rumney <jasonr@gnu.org>
parents:
71074
diff
changeset
|
3985 |
4a38eb2f741d
(w32_set_scroll_bar_thumb, x_scroll_bar_create)
Jason Rumney <jasonr@gnu.org>
parents:
71074
diff
changeset
|
3986 si.cbSize = sizeof (si); |
4a38eb2f741d
(w32_set_scroll_bar_thumb, x_scroll_bar_create)
Jason Rumney <jasonr@gnu.org>
parents:
71074
diff
changeset
|
3987 si.fMask = SIF_PAGE | SIF_POS; |
4a38eb2f741d
(w32_set_scroll_bar_thumb, x_scroll_bar_create)
Jason Rumney <jasonr@gnu.org>
parents:
71074
diff
changeset
|
3988 si.nPage = end - start + VERTICAL_SCROLL_BAR_MIN_HANDLE; |
4a38eb2f741d
(w32_set_scroll_bar_thumb, x_scroll_bar_create)
Jason Rumney <jasonr@gnu.org>
parents:
71074
diff
changeset
|
3989 si.nPos = last_scroll_bar_drag_pos; |
4a38eb2f741d
(w32_set_scroll_bar_thumb, x_scroll_bar_create)
Jason Rumney <jasonr@gnu.org>
parents:
71074
diff
changeset
|
3990 SetScrollInfo (SCROLL_BAR_W32_WINDOW (bar), SB_CTL, &si, TRUE); |
19713
043ccce224fb
(SIF_*): Win95 macros defined for NT.
Geoff Voelker <voelker@cs.washington.edu>
parents:
18877
diff
changeset
|
3991 } |
043ccce224fb
(SIF_*): Win95 macros defined for NT.
Geoff Voelker <voelker@cs.washington.edu>
parents:
18877
diff
changeset
|
3992 /* fall through */ |
15216
f639c5d732a3
(x_scroll_bar_set_handle): Always use start in calling SetScrollPos.
Richard M. Stallman <rms@gnu.org>
parents:
15204
diff
changeset
|
3993 default: |
45803
9484de301252
Rename enum event_kind items.
Pavel Janík <Pavel@Janik.cz>
parents:
45507
diff
changeset
|
3994 emacs_event->kind = NO_EVENT; |
15151
ed6ddfc0d954
(Vwindow_system): Declared.
Geoff Voelker <voelker@cs.washington.edu>
parents:
15035
diff
changeset
|
3995 return FALSE; |
15216
f639c5d732a3
(x_scroll_bar_set_handle): Always use start in calling SetScrollPos.
Richard M. Stallman <rms@gnu.org>
parents:
15204
diff
changeset
|
3996 } |
15151
ed6ddfc0d954
(Vwindow_system): Declared.
Geoff Voelker <voelker@cs.washington.edu>
parents:
15035
diff
changeset
|
3997 |
13434 | 3998 XSETINT (emacs_event->x, y); |
3999 XSETINT (emacs_event->y, top_range); | |
15151
ed6ddfc0d954
(Vwindow_system): Declared.
Geoff Voelker <voelker@cs.washington.edu>
parents:
15035
diff
changeset
|
4000 |
ed6ddfc0d954
(Vwindow_system): Declared.
Geoff Voelker <voelker@cs.washington.edu>
parents:
15035
diff
changeset
|
4001 return TRUE; |
13434 | 4002 } |
4003 } | |
4004 | |
4005 /* Return information to the user about the current position of the mouse | |
4006 on the scroll bar. */ | |
29321
8e2be36bb1c6
Format and doc changes to bring closer to xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
28369
diff
changeset
|
4007 |
13434 | 4008 static void |
4009 x_scroll_bar_report_motion (fp, bar_window, part, x, y, time) | |
4010 FRAME_PTR *fp; | |
4011 Lisp_Object *bar_window; | |
4012 enum scroll_bar_part *part; | |
4013 Lisp_Object *x, *y; | |
4014 unsigned long *time; | |
4015 { | |
4016 struct scroll_bar *bar = XSCROLL_BAR (last_mouse_scroll_bar); | |
16588
481b7874a1e9
Change identifiers of the form win32* to w32*.
Geoff Voelker <voelker@cs.washington.edu>
parents:
16326
diff
changeset
|
4017 Window w = SCROLL_BAR_W32_WINDOW (bar); |
13434 | 4018 FRAME_PTR f = XFRAME (WINDOW_FRAME (XWINDOW (bar->window))); |
4019 int pos; | |
27402
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
4020 int top_range = VERTICAL_SCROLL_BAR_TOP_RANGE (f, XINT (bar->height)); |
71236
4a38eb2f741d
(w32_set_scroll_bar_thumb, x_scroll_bar_create)
Jason Rumney <jasonr@gnu.org>
parents:
71074
diff
changeset
|
4021 SCROLLINFO si; |
13434 | 4022 |
4023 BLOCK_INPUT; | |
4024 | |
4025 *fp = f; | |
4026 *bar_window = bar->window; | |
4027 | |
71236
4a38eb2f741d
(w32_set_scroll_bar_thumb, x_scroll_bar_create)
Jason Rumney <jasonr@gnu.org>
parents:
71074
diff
changeset
|
4028 si.cbSize = sizeof (si); |
4a38eb2f741d
(w32_set_scroll_bar_thumb, x_scroll_bar_create)
Jason Rumney <jasonr@gnu.org>
parents:
71074
diff
changeset
|
4029 si.fMask = SIF_POS | SIF_PAGE | SIF_RANGE; |
4a38eb2f741d
(w32_set_scroll_bar_thumb, x_scroll_bar_create)
Jason Rumney <jasonr@gnu.org>
parents:
71074
diff
changeset
|
4030 |
4a38eb2f741d
(w32_set_scroll_bar_thumb, x_scroll_bar_create)
Jason Rumney <jasonr@gnu.org>
parents:
71074
diff
changeset
|
4031 GetScrollInfo (w, SB_CTL, &si); |
4a38eb2f741d
(w32_set_scroll_bar_thumb, x_scroll_bar_create)
Jason Rumney <jasonr@gnu.org>
parents:
71074
diff
changeset
|
4032 pos = si.nPos; |
4a38eb2f741d
(w32_set_scroll_bar_thumb, x_scroll_bar_create)
Jason Rumney <jasonr@gnu.org>
parents:
71074
diff
changeset
|
4033 top_range = si.nMax - si.nPage + 1; |
13434 | 4034 |
4035 switch (LOWORD (last_mouse_scroll_bar_pos)) | |
4036 { | |
4037 case SB_THUMBPOSITION: | |
4038 case SB_THUMBTRACK: | |
4039 *part = scroll_bar_handle; | |
27402
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
4040 if (VERTICAL_SCROLL_BAR_TOP_RANGE (f, XINT (bar->height)) <= 0xffff) |
13434 | 4041 pos = HIWORD (last_mouse_scroll_bar_pos); |
4042 break; | |
4043 case SB_LINEDOWN: | |
4044 *part = scroll_bar_handle; | |
4045 pos++; | |
4046 break; | |
4047 default: | |
4048 *part = scroll_bar_handle; | |
4049 break; | |
4050 } | |
4051 | |
32022
1f26caa05cd7
(w32_char_font_type, w32_encode_char, x_produce_glyphs): Distinguish
Jason Rumney <jasonr@gnu.org>
parents:
31624
diff
changeset
|
4052 XSETINT (*x, pos); |
1f26caa05cd7
(w32_char_font_type, w32_encode_char, x_produce_glyphs): Distinguish
Jason Rumney <jasonr@gnu.org>
parents:
31624
diff
changeset
|
4053 XSETINT (*y, top_range); |
13434 | 4054 |
4055 f->mouse_moved = 0; | |
4056 last_mouse_scroll_bar = Qnil; | |
4057 | |
4058 *time = last_mouse_movement_time; | |
4059 | |
4060 UNBLOCK_INPUT; | |
4061 } | |
4062 | |
29321
8e2be36bb1c6
Format and doc changes to bring closer to xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
28369
diff
changeset
|
4063 |
13434 | 4064 /* The screen has been cleared so we may have changed foreground or |
4065 background colors, and the scroll bars may need to be redrawn. | |
4066 Clear out the scroll bars, and ask for expose events, so we can | |
4067 redraw them. */ | |
29321
8e2be36bb1c6
Format and doc changes to bring closer to xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
28369
diff
changeset
|
4068 |
27402
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
4069 void |
13434 | 4070 x_scroll_bar_clear (f) |
29321
8e2be36bb1c6
Format and doc changes to bring closer to xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
28369
diff
changeset
|
4071 FRAME_PTR f; |
13434 | 4072 { |
4073 Lisp_Object bar; | |
4074 | |
29321
8e2be36bb1c6
Format and doc changes to bring closer to xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
28369
diff
changeset
|
4075 /* We can have scroll bars even if this is 0, |
8e2be36bb1c6
Format and doc changes to bring closer to xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
28369
diff
changeset
|
4076 if we just turned off scroll bar mode. |
8e2be36bb1c6
Format and doc changes to bring closer to xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
28369
diff
changeset
|
4077 But in that case we should not clear them. */ |
8e2be36bb1c6
Format and doc changes to bring closer to xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
28369
diff
changeset
|
4078 if (FRAME_HAS_VERTICAL_SCROLL_BARS (f)) |
8e2be36bb1c6
Format and doc changes to bring closer to xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
28369
diff
changeset
|
4079 for (bar = FRAME_SCROLL_BARS (f); VECTORP (bar); |
8e2be36bb1c6
Format and doc changes to bring closer to xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
28369
diff
changeset
|
4080 bar = XSCROLL_BAR (bar)->next) |
8e2be36bb1c6
Format and doc changes to bring closer to xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
28369
diff
changeset
|
4081 { |
8e2be36bb1c6
Format and doc changes to bring closer to xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
28369
diff
changeset
|
4082 HWND window = SCROLL_BAR_W32_WINDOW (XSCROLL_BAR (bar)); |
8e2be36bb1c6
Format and doc changes to bring closer to xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
28369
diff
changeset
|
4083 HDC hdc = GetDC (window); |
8e2be36bb1c6
Format and doc changes to bring closer to xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
28369
diff
changeset
|
4084 RECT rect; |
8e2be36bb1c6
Format and doc changes to bring closer to xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
28369
diff
changeset
|
4085 |
8e2be36bb1c6
Format and doc changes to bring closer to xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
28369
diff
changeset
|
4086 /* Hide scroll bar until ready to repaint. x_scroll_bar_move |
8e2be36bb1c6
Format and doc changes to bring closer to xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
28369
diff
changeset
|
4087 arranges to refresh the scroll bar if hidden. */ |
8e2be36bb1c6
Format and doc changes to bring closer to xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
28369
diff
changeset
|
4088 my_show_window (f, window, SW_HIDE); |
8e2be36bb1c6
Format and doc changes to bring closer to xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
28369
diff
changeset
|
4089 |
8e2be36bb1c6
Format and doc changes to bring closer to xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
28369
diff
changeset
|
4090 GetClientRect (window, &rect); |
8e2be36bb1c6
Format and doc changes to bring closer to xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
28369
diff
changeset
|
4091 select_palette (f, hdc); |
8e2be36bb1c6
Format and doc changes to bring closer to xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
28369
diff
changeset
|
4092 w32_clear_rect (f, hdc, &rect); |
8e2be36bb1c6
Format and doc changes to bring closer to xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
28369
diff
changeset
|
4093 deselect_palette (f, hdc); |
8e2be36bb1c6
Format and doc changes to bring closer to xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
28369
diff
changeset
|
4094 |
8e2be36bb1c6
Format and doc changes to bring closer to xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
28369
diff
changeset
|
4095 ReleaseDC (window, hdc); |
8e2be36bb1c6
Format and doc changes to bring closer to xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
28369
diff
changeset
|
4096 } |
15151
ed6ddfc0d954
(Vwindow_system): Declared.
Geoff Voelker <voelker@cs.washington.edu>
parents:
15035
diff
changeset
|
4097 } |
ed6ddfc0d954
(Vwindow_system): Declared.
Geoff Voelker <voelker@cs.washington.edu>
parents:
15035
diff
changeset
|
4098 |
13434 | 4099 |
16588
481b7874a1e9
Change identifiers of the form win32* to w32*.
Geoff Voelker <voelker@cs.washington.edu>
parents:
16326
diff
changeset
|
4100 /* The main W32 event-reading loop - w32_read_socket. */ |
13434 | 4101 |
4102 /* Record the last 100 characters stored | |
4103 to help debug the loss-of-chars-during-GC problem. */ | |
29321
8e2be36bb1c6
Format and doc changes to bring closer to xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
28369
diff
changeset
|
4104 |
8e2be36bb1c6
Format and doc changes to bring closer to xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
28369
diff
changeset
|
4105 static int temp_index; |
8e2be36bb1c6
Format and doc changes to bring closer to xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
28369
diff
changeset
|
4106 static short temp_buffer[100]; |
13434 | 4107 |
14462
599a3ae1e8ea
(convert_to_key_event, is_dead_key): New functions.
Geoff Voelker <voelker@cs.washington.edu>
parents:
14351
diff
changeset
|
4108 |
16588
481b7874a1e9
Change identifiers of the form win32* to w32*.
Geoff Voelker <voelker@cs.washington.edu>
parents:
16326
diff
changeset
|
4109 /* Read events coming from the W32 shell. |
13434 | 4110 This routine is called by the SIGIO handler. |
4111 We return as soon as there are no more events to be read. | |
4112 | |
4113 We return the number of characters stored into the buffer, | |
4114 thus pretending to be `read'. | |
4115 | |
48218
01e253345507
(w32_draw_fringe_bitmap): Remove unused local variable window.
Juanma Barranquero <lekktu@gmail.com>
parents:
48025
diff
changeset
|
4116 EXPECTED is nonzero if the caller knows input is available. |
13434 | 4117 |
4118 Some of these messages are reposted back to the message queue since the | |
48218
01e253345507
(w32_draw_fringe_bitmap): Remove unused local variable window.
Juanma Barranquero <lekktu@gmail.com>
parents:
48025
diff
changeset
|
4119 system calls the windows proc directly in a context where we cannot return |
16884
36babc489b0c
Change all uses of win95, winnt, and win32
Geoff Voelker <voelker@cs.washington.edu>
parents:
16588
diff
changeset
|
4120 the data nor can we guarantee the state we are in. So if we dispatch them |
13434 | 4121 we will get into an infinite loop. To prevent this from ever happening we |
4122 will set a variable to indicate we are in the read_socket call and indicate | |
48218
01e253345507
(w32_draw_fringe_bitmap): Remove unused local variable window.
Juanma Barranquero <lekktu@gmail.com>
parents:
48025
diff
changeset
|
4123 which message we are processing since the windows proc gets called |
16884
36babc489b0c
Change all uses of win95, winnt, and win32
Geoff Voelker <voelker@cs.washington.edu>
parents:
16588
diff
changeset
|
4124 recursively with different messages by the system. |
13434 | 4125 */ |
4126 | |
4127 int | |
54171
f6909a416c3f
(w32_read_socket): Remove bufp_r and numcharsp args.
Kim F. Storm <storm@cua.dk>
parents:
54126
diff
changeset
|
4128 w32_read_socket (sd, expected, hold_quit) |
13434 | 4129 register int sd; |
4130 int expected; | |
54171
f6909a416c3f
(w32_read_socket): Remove bufp_r and numcharsp args.
Kim F. Storm <storm@cua.dk>
parents:
54126
diff
changeset
|
4131 struct input_event *hold_quit; |
13434 | 4132 { |
4133 int count = 0; | |
19713
043ccce224fb
(SIF_*): Win95 macros defined for NT.
Geoff Voelker <voelker@cs.washington.edu>
parents:
18877
diff
changeset
|
4134 int check_visibility = 0; |
16588
481b7874a1e9
Change identifiers of the form win32* to w32*.
Geoff Voelker <voelker@cs.washington.edu>
parents:
16326
diff
changeset
|
4135 W32Msg msg; |
13434 | 4136 struct frame *f; |
16588
481b7874a1e9
Change identifiers of the form win32* to w32*.
Geoff Voelker <voelker@cs.washington.edu>
parents:
16326
diff
changeset
|
4137 struct w32_display_info *dpyinfo = &one_w32_display_info; |
13434 | 4138 |
4139 if (interrupt_input_blocked) | |
4140 { | |
4141 interrupt_input_pending = 1; | |
4142 return -1; | |
4143 } | |
4144 | |
4145 interrupt_input_pending = 0; | |
4146 BLOCK_INPUT; | |
4147 | |
4148 /* So people can tell when we have read the available input. */ | |
4149 input_signal_count++; | |
4150 | |
55286
b4bf3dd67827
(x_draw_hollow_cursor): Sync with xterm.c
Jason Rumney <jasonr@gnu.org>
parents:
55026
diff
changeset
|
4151 /* TODO: ghostscript integration. */ |
15151
ed6ddfc0d954
(Vwindow_system): Declared.
Geoff Voelker <voelker@cs.washington.edu>
parents:
15035
diff
changeset
|
4152 while (get_next_msg (&msg, FALSE)) |
13434 | 4153 { |
54171
f6909a416c3f
(w32_read_socket): Remove bufp_r and numcharsp args.
Kim F. Storm <storm@cua.dk>
parents:
54126
diff
changeset
|
4154 struct input_event inev; |
f6909a416c3f
(w32_read_socket): Remove bufp_r and numcharsp args.
Kim F. Storm <storm@cua.dk>
parents:
54126
diff
changeset
|
4155 int do_help = 0; |
f6909a416c3f
(w32_read_socket): Remove bufp_r and numcharsp args.
Kim F. Storm <storm@cua.dk>
parents:
54126
diff
changeset
|
4156 |
f6909a416c3f
(w32_read_socket): Remove bufp_r and numcharsp args.
Kim F. Storm <storm@cua.dk>
parents:
54126
diff
changeset
|
4157 EVENT_INIT (inev); |
f6909a416c3f
(w32_read_socket): Remove bufp_r and numcharsp args.
Kim F. Storm <storm@cua.dk>
parents:
54126
diff
changeset
|
4158 inev.kind = NO_EVENT; |
f6909a416c3f
(w32_read_socket): Remove bufp_r and numcharsp args.
Kim F. Storm <storm@cua.dk>
parents:
54126
diff
changeset
|
4159 inev.arg = Qnil; |
f6909a416c3f
(w32_read_socket): Remove bufp_r and numcharsp args.
Kim F. Storm <storm@cua.dk>
parents:
54126
diff
changeset
|
4160 |
13434 | 4161 switch (msg.msg.message) |
4162 { | |
4163 case WM_PAINT: | |
40137
5f0d7d58283b
(remember_mouse_glyph): New function.
Jason Rumney <jasonr@gnu.org>
parents:
40078
diff
changeset
|
4164 f = x_window_to_frame (dpyinfo, msg.msg.hwnd); |
5f0d7d58283b
(remember_mouse_glyph): New function.
Jason Rumney <jasonr@gnu.org>
parents:
40078
diff
changeset
|
4165 |
48218
01e253345507
(w32_draw_fringe_bitmap): Remove unused local variable window.
Juanma Barranquero <lekktu@gmail.com>
parents:
48025
diff
changeset
|
4166 if (f) |
40137
5f0d7d58283b
(remember_mouse_glyph): New function.
Jason Rumney <jasonr@gnu.org>
parents:
40078
diff
changeset
|
4167 { |
5f0d7d58283b
(remember_mouse_glyph): New function.
Jason Rumney <jasonr@gnu.org>
parents:
40078
diff
changeset
|
4168 if (msg.rect.right == msg.rect.left || |
5f0d7d58283b
(remember_mouse_glyph): New function.
Jason Rumney <jasonr@gnu.org>
parents:
40078
diff
changeset
|
4169 msg.rect.bottom == msg.rect.top) |
5f0d7d58283b
(remember_mouse_glyph): New function.
Jason Rumney <jasonr@gnu.org>
parents:
40078
diff
changeset
|
4170 { |
5f0d7d58283b
(remember_mouse_glyph): New function.
Jason Rumney <jasonr@gnu.org>
parents:
40078
diff
changeset
|
4171 /* We may get paint messages even though the client |
5f0d7d58283b
(remember_mouse_glyph): New function.
Jason Rumney <jasonr@gnu.org>
parents:
40078
diff
changeset
|
4172 area is clipped - these are not expose events. */ |
5f0d7d58283b
(remember_mouse_glyph): New function.
Jason Rumney <jasonr@gnu.org>
parents:
40078
diff
changeset
|
4173 DebPrint (("clipped frame %p (%s) got WM_PAINT - ignored\n", f, |
46370
40db0673e6f0
Most uses of XSTRING combined with STRING_BYTES or indirection changed to
Ken Raeburn <raeburn@raeburn.org>
parents:
45803
diff
changeset
|
4174 SDATA (f->name))); |
40137
5f0d7d58283b
(remember_mouse_glyph): New function.
Jason Rumney <jasonr@gnu.org>
parents:
40078
diff
changeset
|
4175 } |
5f0d7d58283b
(remember_mouse_glyph): New function.
Jason Rumney <jasonr@gnu.org>
parents:
40078
diff
changeset
|
4176 else if (f->async_visible != 1) |
5f0d7d58283b
(remember_mouse_glyph): New function.
Jason Rumney <jasonr@gnu.org>
parents:
40078
diff
changeset
|
4177 { |
5f0d7d58283b
(remember_mouse_glyph): New function.
Jason Rumney <jasonr@gnu.org>
parents:
40078
diff
changeset
|
4178 /* Definitely not obscured, so mark as visible. */ |
5f0d7d58283b
(remember_mouse_glyph): New function.
Jason Rumney <jasonr@gnu.org>
parents:
40078
diff
changeset
|
4179 f->async_visible = 1; |
5f0d7d58283b
(remember_mouse_glyph): New function.
Jason Rumney <jasonr@gnu.org>
parents:
40078
diff
changeset
|
4180 f->async_iconified = 0; |
5f0d7d58283b
(remember_mouse_glyph): New function.
Jason Rumney <jasonr@gnu.org>
parents:
40078
diff
changeset
|
4181 SET_FRAME_GARBAGED (f); |
5f0d7d58283b
(remember_mouse_glyph): New function.
Jason Rumney <jasonr@gnu.org>
parents:
40078
diff
changeset
|
4182 DebPrint (("frame %p (%s) reexposed by WM_PAINT\n", f, |
46370
40db0673e6f0
Most uses of XSTRING combined with STRING_BYTES or indirection changed to
Ken Raeburn <raeburn@raeburn.org>
parents:
45803
diff
changeset
|
4183 SDATA (f->name))); |
40137
5f0d7d58283b
(remember_mouse_glyph): New function.
Jason Rumney <jasonr@gnu.org>
parents:
40078
diff
changeset
|
4184 |
5f0d7d58283b
(remember_mouse_glyph): New function.
Jason Rumney <jasonr@gnu.org>
parents:
40078
diff
changeset
|
4185 /* WM_PAINT serves as MapNotify as well, so report |
5f0d7d58283b
(remember_mouse_glyph): New function.
Jason Rumney <jasonr@gnu.org>
parents:
40078
diff
changeset
|
4186 visibility changes properly. */ |
5f0d7d58283b
(remember_mouse_glyph): New function.
Jason Rumney <jasonr@gnu.org>
parents:
40078
diff
changeset
|
4187 if (f->iconified) |
5f0d7d58283b
(remember_mouse_glyph): New function.
Jason Rumney <jasonr@gnu.org>
parents:
40078
diff
changeset
|
4188 { |
54171
f6909a416c3f
(w32_read_socket): Remove bufp_r and numcharsp args.
Kim F. Storm <storm@cua.dk>
parents:
54126
diff
changeset
|
4189 inev.kind = DEICONIFY_EVENT; |
f6909a416c3f
(w32_read_socket): Remove bufp_r and numcharsp args.
Kim F. Storm <storm@cua.dk>
parents:
54126
diff
changeset
|
4190 XSETFRAME (inev.frame_or_window, f); |
40137
5f0d7d58283b
(remember_mouse_glyph): New function.
Jason Rumney <jasonr@gnu.org>
parents:
40078
diff
changeset
|
4191 } |
5f0d7d58283b
(remember_mouse_glyph): New function.
Jason Rumney <jasonr@gnu.org>
parents:
40078
diff
changeset
|
4192 else if (! NILP (Vframe_list) |
5f0d7d58283b
(remember_mouse_glyph): New function.
Jason Rumney <jasonr@gnu.org>
parents:
40078
diff
changeset
|
4193 && ! NILP (XCDR (Vframe_list))) |
5f0d7d58283b
(remember_mouse_glyph): New function.
Jason Rumney <jasonr@gnu.org>
parents:
40078
diff
changeset
|
4194 /* Force a redisplay sooner or later to update the |
5f0d7d58283b
(remember_mouse_glyph): New function.
Jason Rumney <jasonr@gnu.org>
parents:
40078
diff
changeset
|
4195 frame titles in case this is the second frame. */ |
5f0d7d58283b
(remember_mouse_glyph): New function.
Jason Rumney <jasonr@gnu.org>
parents:
40078
diff
changeset
|
4196 record_asynch_buffer_change (); |
5f0d7d58283b
(remember_mouse_glyph): New function.
Jason Rumney <jasonr@gnu.org>
parents:
40078
diff
changeset
|
4197 } |
5f0d7d58283b
(remember_mouse_glyph): New function.
Jason Rumney <jasonr@gnu.org>
parents:
40078
diff
changeset
|
4198 else |
5f0d7d58283b
(remember_mouse_glyph): New function.
Jason Rumney <jasonr@gnu.org>
parents:
40078
diff
changeset
|
4199 { |
5f0d7d58283b
(remember_mouse_glyph): New function.
Jason Rumney <jasonr@gnu.org>
parents:
40078
diff
changeset
|
4200 HDC hdc = get_frame_dc (f); |
5f0d7d58283b
(remember_mouse_glyph): New function.
Jason Rumney <jasonr@gnu.org>
parents:
40078
diff
changeset
|
4201 |
5f0d7d58283b
(remember_mouse_glyph): New function.
Jason Rumney <jasonr@gnu.org>
parents:
40078
diff
changeset
|
4202 /* Erase background again for safety. */ |
5f0d7d58283b
(remember_mouse_glyph): New function.
Jason Rumney <jasonr@gnu.org>
parents:
40078
diff
changeset
|
4203 w32_clear_rect (f, hdc, &msg.rect); |
5f0d7d58283b
(remember_mouse_glyph): New function.
Jason Rumney <jasonr@gnu.org>
parents:
40078
diff
changeset
|
4204 release_frame_dc (f, hdc); |
5f0d7d58283b
(remember_mouse_glyph): New function.
Jason Rumney <jasonr@gnu.org>
parents:
40078
diff
changeset
|
4205 expose_frame (f, |
5f0d7d58283b
(remember_mouse_glyph): New function.
Jason Rumney <jasonr@gnu.org>
parents:
40078
diff
changeset
|
4206 msg.rect.left, |
5f0d7d58283b
(remember_mouse_glyph): New function.
Jason Rumney <jasonr@gnu.org>
parents:
40078
diff
changeset
|
4207 msg.rect.top, |
5f0d7d58283b
(remember_mouse_glyph): New function.
Jason Rumney <jasonr@gnu.org>
parents:
40078
diff
changeset
|
4208 msg.rect.right - msg.rect.left, |
5f0d7d58283b
(remember_mouse_glyph): New function.
Jason Rumney <jasonr@gnu.org>
parents:
40078
diff
changeset
|
4209 msg.rect.bottom - msg.rect.top); |
5f0d7d58283b
(remember_mouse_glyph): New function.
Jason Rumney <jasonr@gnu.org>
parents:
40078
diff
changeset
|
4210 } |
5f0d7d58283b
(remember_mouse_glyph): New function.
Jason Rumney <jasonr@gnu.org>
parents:
40078
diff
changeset
|
4211 } |
15151
ed6ddfc0d954
(Vwindow_system): Declared.
Geoff Voelker <voelker@cs.washington.edu>
parents:
15035
diff
changeset
|
4212 break; |
19713
043ccce224fb
(SIF_*): Win95 macros defined for NT.
Geoff Voelker <voelker@cs.washington.edu>
parents:
18877
diff
changeset
|
4213 |
23677
70999481c915
(convert_to_key_event): Removed.
Geoff Voelker <voelker@cs.washington.edu>
parents:
23639
diff
changeset
|
4214 case WM_INPUTLANGCHANGE: |
70999481c915
(convert_to_key_event): Removed.
Geoff Voelker <voelker@cs.washington.edu>
parents:
23639
diff
changeset
|
4215 /* Generate a language change event. */ |
70999481c915
(convert_to_key_event): Removed.
Geoff Voelker <voelker@cs.washington.edu>
parents:
23639
diff
changeset
|
4216 f = x_window_to_frame (dpyinfo, msg.msg.hwnd); |
70999481c915
(convert_to_key_event): Removed.
Geoff Voelker <voelker@cs.washington.edu>
parents:
23639
diff
changeset
|
4217 |
70999481c915
(convert_to_key_event): Removed.
Geoff Voelker <voelker@cs.washington.edu>
parents:
23639
diff
changeset
|
4218 if (f) |
70999481c915
(convert_to_key_event): Removed.
Geoff Voelker <voelker@cs.washington.edu>
parents:
23639
diff
changeset
|
4219 { |
54171
f6909a416c3f
(w32_read_socket): Remove bufp_r and numcharsp args.
Kim F. Storm <storm@cua.dk>
parents:
54126
diff
changeset
|
4220 inev.kind = LANGUAGE_CHANGE_EVENT; |
f6909a416c3f
(w32_read_socket): Remove bufp_r and numcharsp args.
Kim F. Storm <storm@cua.dk>
parents:
54126
diff
changeset
|
4221 XSETFRAME (inev.frame_or_window, f); |
f6909a416c3f
(w32_read_socket): Remove bufp_r and numcharsp args.
Kim F. Storm <storm@cua.dk>
parents:
54126
diff
changeset
|
4222 inev.code = msg.msg.wParam; |
f6909a416c3f
(w32_read_socket): Remove bufp_r and numcharsp args.
Kim F. Storm <storm@cua.dk>
parents:
54126
diff
changeset
|
4223 inev.modifiers = msg.msg.lParam & 0xffff; |
23677
70999481c915
(convert_to_key_event): Removed.
Geoff Voelker <voelker@cs.washington.edu>
parents:
23639
diff
changeset
|
4224 } |
70999481c915
(convert_to_key_event): Removed.
Geoff Voelker <voelker@cs.washington.edu>
parents:
23639
diff
changeset
|
4225 break; |
70999481c915
(convert_to_key_event): Removed.
Geoff Voelker <voelker@cs.washington.edu>
parents:
23639
diff
changeset
|
4226 |
13434 | 4227 case WM_KEYDOWN: |
4228 case WM_SYSKEYDOWN: | |
4229 f = x_window_to_frame (dpyinfo, msg.msg.hwnd); | |
48218
01e253345507
(w32_draw_fringe_bitmap): Remove unused local variable window.
Juanma Barranquero <lekktu@gmail.com>
parents:
48025
diff
changeset
|
4230 |
13434 | 4231 if (f && !f->iconified) |
4232 { | |
69662
646410df27a7
(w32_read_socket): Don't let key-press clear mouse face
Kim F. Storm <storm@cua.dk>
parents:
69441
diff
changeset
|
4233 if (!dpyinfo->mouse_face_hidden && INTEGERP (Vmouse_highlight) |
646410df27a7
(w32_read_socket): Don't let key-press clear mouse face
Kim F. Storm <storm@cua.dk>
parents:
69441
diff
changeset
|
4234 && !EQ (f->tool_bar_window, dpyinfo->mouse_face_window)) |
43373
44e2e2c9154f
(disable_mouse_highlight): Removed variable.
Kim F. Storm <storm@cua.dk>
parents:
43146
diff
changeset
|
4235 { |
54731
4031909001d5
(w32_read_socket): Set mouse_face_hidden after clearing highlight.
Kim F. Storm <storm@cua.dk>
parents:
54225
diff
changeset
|
4236 clear_mouse_face (dpyinfo); |
43373
44e2e2c9154f
(disable_mouse_highlight): Removed variable.
Kim F. Storm <storm@cua.dk>
parents:
43146
diff
changeset
|
4237 dpyinfo->mouse_face_hidden = 1; |
44e2e2c9154f
(disable_mouse_highlight): Removed variable.
Kim F. Storm <storm@cua.dk>
parents:
43146
diff
changeset
|
4238 } |
44e2e2c9154f
(disable_mouse_highlight): Removed variable.
Kim F. Storm <storm@cua.dk>
parents:
43146
diff
changeset
|
4239 |
13434 | 4240 if (temp_index == sizeof temp_buffer / sizeof (short)) |
4241 temp_index = 0; | |
4242 temp_buffer[temp_index++] = msg.msg.wParam; | |
54171
f6909a416c3f
(w32_read_socket): Remove bufp_r and numcharsp args.
Kim F. Storm <storm@cua.dk>
parents:
54126
diff
changeset
|
4243 inev.kind = NON_ASCII_KEYSTROKE_EVENT; |
f6909a416c3f
(w32_read_socket): Remove bufp_r and numcharsp args.
Kim F. Storm <storm@cua.dk>
parents:
54126
diff
changeset
|
4244 inev.code = msg.msg.wParam; |
f6909a416c3f
(w32_read_socket): Remove bufp_r and numcharsp args.
Kim F. Storm <storm@cua.dk>
parents:
54126
diff
changeset
|
4245 inev.modifiers = msg.dwModifiers; |
f6909a416c3f
(w32_read_socket): Remove bufp_r and numcharsp args.
Kim F. Storm <storm@cua.dk>
parents:
54126
diff
changeset
|
4246 XSETFRAME (inev.frame_or_window, f); |
f6909a416c3f
(w32_read_socket): Remove bufp_r and numcharsp args.
Kim F. Storm <storm@cua.dk>
parents:
54126
diff
changeset
|
4247 inev.timestamp = msg.msg.time; |
13434 | 4248 } |
4249 break; | |
19713
043ccce224fb
(SIF_*): Win95 macros defined for NT.
Geoff Voelker <voelker@cs.washington.edu>
parents:
18877
diff
changeset
|
4250 |
13434 | 4251 case WM_SYSCHAR: |
4252 case WM_CHAR: | |
4253 f = x_window_to_frame (dpyinfo, msg.msg.hwnd); | |
48218
01e253345507
(w32_draw_fringe_bitmap): Remove unused local variable window.
Juanma Barranquero <lekktu@gmail.com>
parents:
48025
diff
changeset
|
4254 |
13434 | 4255 if (f && !f->iconified) |
4256 { | |
69662
646410df27a7
(w32_read_socket): Don't let key-press clear mouse face
Kim F. Storm <storm@cua.dk>
parents:
69441
diff
changeset
|
4257 if (!dpyinfo->mouse_face_hidden && INTEGERP (Vmouse_highlight) |
646410df27a7
(w32_read_socket): Don't let key-press clear mouse face
Kim F. Storm <storm@cua.dk>
parents:
69441
diff
changeset
|
4258 && !EQ (f->tool_bar_window, dpyinfo->mouse_face_window)) |
43373
44e2e2c9154f
(disable_mouse_highlight): Removed variable.
Kim F. Storm <storm@cua.dk>
parents:
43146
diff
changeset
|
4259 { |
54731
4031909001d5
(w32_read_socket): Set mouse_face_hidden after clearing highlight.
Kim F. Storm <storm@cua.dk>
parents:
54225
diff
changeset
|
4260 clear_mouse_face (dpyinfo); |
43373
44e2e2c9154f
(disable_mouse_highlight): Removed variable.
Kim F. Storm <storm@cua.dk>
parents:
43146
diff
changeset
|
4261 dpyinfo->mouse_face_hidden = 1; |
44e2e2c9154f
(disable_mouse_highlight): Removed variable.
Kim F. Storm <storm@cua.dk>
parents:
43146
diff
changeset
|
4262 } |
44e2e2c9154f
(disable_mouse_highlight): Removed variable.
Kim F. Storm <storm@cua.dk>
parents:
43146
diff
changeset
|
4263 |
23677
70999481c915
(convert_to_key_event): Removed.
Geoff Voelker <voelker@cs.washington.edu>
parents:
23639
diff
changeset
|
4264 if (temp_index == sizeof temp_buffer / sizeof (short)) |
70999481c915
(convert_to_key_event): Removed.
Geoff Voelker <voelker@cs.washington.edu>
parents:
23639
diff
changeset
|
4265 temp_index = 0; |
70999481c915
(convert_to_key_event): Removed.
Geoff Voelker <voelker@cs.washington.edu>
parents:
23639
diff
changeset
|
4266 temp_buffer[temp_index++] = msg.msg.wParam; |
54171
f6909a416c3f
(w32_read_socket): Remove bufp_r and numcharsp args.
Kim F. Storm <storm@cua.dk>
parents:
54126
diff
changeset
|
4267 inev.kind = ASCII_KEYSTROKE_EVENT; |
f6909a416c3f
(w32_read_socket): Remove bufp_r and numcharsp args.
Kim F. Storm <storm@cua.dk>
parents:
54126
diff
changeset
|
4268 inev.code = msg.msg.wParam; |
f6909a416c3f
(w32_read_socket): Remove bufp_r and numcharsp args.
Kim F. Storm <storm@cua.dk>
parents:
54126
diff
changeset
|
4269 inev.modifiers = msg.dwModifiers; |
f6909a416c3f
(w32_read_socket): Remove bufp_r and numcharsp args.
Kim F. Storm <storm@cua.dk>
parents:
54126
diff
changeset
|
4270 XSETFRAME (inev.frame_or_window, f); |
f6909a416c3f
(w32_read_socket): Remove bufp_r and numcharsp args.
Kim F. Storm <storm@cua.dk>
parents:
54126
diff
changeset
|
4271 inev.timestamp = msg.msg.time; |
13434 | 4272 } |
4273 break; | |
19713
043ccce224fb
(SIF_*): Win95 macros defined for NT.
Geoff Voelker <voelker@cs.washington.edu>
parents:
18877
diff
changeset
|
4274 |
13434 | 4275 case WM_MOUSEMOVE: |
48819
c7fb53597300
(last_mousemove_x, last_mousemove_y): New variables.
Jason Rumney <jasonr@gnu.org>
parents:
48360
diff
changeset
|
4276 /* Ignore non-movement. */ |
c7fb53597300
(last_mousemove_x, last_mousemove_y): New variables.
Jason Rumney <jasonr@gnu.org>
parents:
48360
diff
changeset
|
4277 { |
c7fb53597300
(last_mousemove_x, last_mousemove_y): New variables.
Jason Rumney <jasonr@gnu.org>
parents:
48360
diff
changeset
|
4278 int x = LOWORD (msg.msg.lParam); |
c7fb53597300
(last_mousemove_x, last_mousemove_y): New variables.
Jason Rumney <jasonr@gnu.org>
parents:
48360
diff
changeset
|
4279 int y = HIWORD (msg.msg.lParam); |
c7fb53597300
(last_mousemove_x, last_mousemove_y): New variables.
Jason Rumney <jasonr@gnu.org>
parents:
48360
diff
changeset
|
4280 if (x == last_mousemove_x && y == last_mousemove_y) |
c7fb53597300
(last_mousemove_x, last_mousemove_y): New variables.
Jason Rumney <jasonr@gnu.org>
parents:
48360
diff
changeset
|
4281 break; |
c7fb53597300
(last_mousemove_x, last_mousemove_y): New variables.
Jason Rumney <jasonr@gnu.org>
parents:
48360
diff
changeset
|
4282 last_mousemove_x = x; |
c7fb53597300
(last_mousemove_x, last_mousemove_y): New variables.
Jason Rumney <jasonr@gnu.org>
parents:
48360
diff
changeset
|
4283 last_mousemove_y = y; |
c7fb53597300
(last_mousemove_x, last_mousemove_y): New variables.
Jason Rumney <jasonr@gnu.org>
parents:
48360
diff
changeset
|
4284 } |
c7fb53597300
(last_mousemove_x, last_mousemove_y): New variables.
Jason Rumney <jasonr@gnu.org>
parents:
48360
diff
changeset
|
4285 |
50231
c8ea5e4b2129
* w32term.c: Remove consolidated defines and code.
Kim F. Storm <storm@cua.dk>
parents:
50163
diff
changeset
|
4286 previous_help_echo_string = help_echo_string; |
66081
824b4c76ae12
(note_mouse_movement, w32_read_socket): Apply 2005-10-14 changes for
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
66049
diff
changeset
|
4287 help_echo_string = Qnil; |
27402
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
4288 |
13434 | 4289 if (dpyinfo->grabbed && last_mouse_frame |
4290 && FRAME_LIVE_P (last_mouse_frame)) | |
4291 f = last_mouse_frame; | |
4292 else | |
4293 f = x_window_to_frame (dpyinfo, msg.msg.hwnd); | |
48218
01e253345507
(w32_draw_fringe_bitmap): Remove unused local variable window.
Juanma Barranquero <lekktu@gmail.com>
parents:
48025
diff
changeset
|
4294 |
43373
44e2e2c9154f
(disable_mouse_highlight): Removed variable.
Kim F. Storm <storm@cua.dk>
parents:
43146
diff
changeset
|
4295 if (dpyinfo->mouse_face_hidden) |
44e2e2c9154f
(disable_mouse_highlight): Removed variable.
Kim F. Storm <storm@cua.dk>
parents:
43146
diff
changeset
|
4296 { |
44e2e2c9154f
(disable_mouse_highlight): Removed variable.
Kim F. Storm <storm@cua.dk>
parents:
43146
diff
changeset
|
4297 dpyinfo->mouse_face_hidden = 0; |
44e2e2c9154f
(disable_mouse_highlight): Removed variable.
Kim F. Storm <storm@cua.dk>
parents:
43146
diff
changeset
|
4298 clear_mouse_face (dpyinfo); |
44e2e2c9154f
(disable_mouse_highlight): Removed variable.
Kim F. Storm <storm@cua.dk>
parents:
43146
diff
changeset
|
4299 } |
44e2e2c9154f
(disable_mouse_highlight): Removed variable.
Kim F. Storm <storm@cua.dk>
parents:
43146
diff
changeset
|
4300 |
13434 | 4301 if (f) |
49393
85246e86a2cd
* w32term.c (x_draw_glyph_string_foreground)
Jason Rumney <jasonr@gnu.org>
parents:
49371
diff
changeset
|
4302 { |
85246e86a2cd
* w32term.c (x_draw_glyph_string_foreground)
Jason Rumney <jasonr@gnu.org>
parents:
49371
diff
changeset
|
4303 /* Generate SELECT_WINDOW_EVENTs when needed. */ |
72736
f6b18b9949d1
* xdisp.c (mouse_autoselect_window): Removed.
Chong Yidong <cyd@stupidchicken.com>
parents:
72505
diff
changeset
|
4304 if (!NILP (Vmouse_autoselect_window)) |
49393
85246e86a2cd
* w32term.c (x_draw_glyph_string_foreground)
Jason Rumney <jasonr@gnu.org>
parents:
49371
diff
changeset
|
4305 { |
85246e86a2cd
* w32term.c (x_draw_glyph_string_foreground)
Jason Rumney <jasonr@gnu.org>
parents:
49371
diff
changeset
|
4306 Lisp_Object window; |
85246e86a2cd
* w32term.c (x_draw_glyph_string_foreground)
Jason Rumney <jasonr@gnu.org>
parents:
49371
diff
changeset
|
4307 int x = LOWORD (msg.msg.lParam); |
85246e86a2cd
* w32term.c (x_draw_glyph_string_foreground)
Jason Rumney <jasonr@gnu.org>
parents:
49371
diff
changeset
|
4308 int y = HIWORD (msg.msg.lParam); |
85246e86a2cd
* w32term.c (x_draw_glyph_string_foreground)
Jason Rumney <jasonr@gnu.org>
parents:
49371
diff
changeset
|
4309 |
51204
082b768216a0
Make (several) trivial substitutions for renamed and
Kim F. Storm <storm@cua.dk>
parents:
50441
diff
changeset
|
4310 window = window_from_coordinates (f, x, y, 0, 0, 0, 0); |
49393
85246e86a2cd
* w32term.c (x_draw_glyph_string_foreground)
Jason Rumney <jasonr@gnu.org>
parents:
49371
diff
changeset
|
4311 |
85246e86a2cd
* w32term.c (x_draw_glyph_string_foreground)
Jason Rumney <jasonr@gnu.org>
parents:
49371
diff
changeset
|
4312 /* Window will be selected only when it is not |
85246e86a2cd
* w32term.c (x_draw_glyph_string_foreground)
Jason Rumney <jasonr@gnu.org>
parents:
49371
diff
changeset
|
4313 selected now and last mouse movement event was |
85246e86a2cd
* w32term.c (x_draw_glyph_string_foreground)
Jason Rumney <jasonr@gnu.org>
parents:
49371
diff
changeset
|
4314 not in it. Minibuffer window will be selected |
85246e86a2cd
* w32term.c (x_draw_glyph_string_foreground)
Jason Rumney <jasonr@gnu.org>
parents:
49371
diff
changeset
|
4315 iff it is active. */ |
85246e86a2cd
* w32term.c (x_draw_glyph_string_foreground)
Jason Rumney <jasonr@gnu.org>
parents:
49371
diff
changeset
|
4316 if (WINDOWP(window) |
85246e86a2cd
* w32term.c (x_draw_glyph_string_foreground)
Jason Rumney <jasonr@gnu.org>
parents:
49371
diff
changeset
|
4317 && !EQ (window, last_window) |
54171
f6909a416c3f
(w32_read_socket): Remove bufp_r and numcharsp args.
Kim F. Storm <storm@cua.dk>
parents:
54126
diff
changeset
|
4318 && !EQ (window, selected_window)) |
49393
85246e86a2cd
* w32term.c (x_draw_glyph_string_foreground)
Jason Rumney <jasonr@gnu.org>
parents:
49371
diff
changeset
|
4319 { |
54171
f6909a416c3f
(w32_read_socket): Remove bufp_r and numcharsp args.
Kim F. Storm <storm@cua.dk>
parents:
54126
diff
changeset
|
4320 inev.kind = SELECT_WINDOW_EVENT; |
f6909a416c3f
(w32_read_socket): Remove bufp_r and numcharsp args.
Kim F. Storm <storm@cua.dk>
parents:
54126
diff
changeset
|
4321 inev.frame_or_window = window; |
49393
85246e86a2cd
* w32term.c (x_draw_glyph_string_foreground)
Jason Rumney <jasonr@gnu.org>
parents:
49371
diff
changeset
|
4322 } |
85246e86a2cd
* w32term.c (x_draw_glyph_string_foreground)
Jason Rumney <jasonr@gnu.org>
parents:
49371
diff
changeset
|
4323 |
85246e86a2cd
* w32term.c (x_draw_glyph_string_foreground)
Jason Rumney <jasonr@gnu.org>
parents:
49371
diff
changeset
|
4324 last_window=window; |
85246e86a2cd
* w32term.c (x_draw_glyph_string_foreground)
Jason Rumney <jasonr@gnu.org>
parents:
49371
diff
changeset
|
4325 } |
66081
824b4c76ae12
(note_mouse_movement, w32_read_socket): Apply 2005-10-14 changes for
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
66049
diff
changeset
|
4326 if (!note_mouse_movement (f, &msg.msg)) |
824b4c76ae12
(note_mouse_movement, w32_read_socket): Apply 2005-10-14 changes for
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
66049
diff
changeset
|
4327 help_echo_string = previous_help_echo_string; |
49393
85246e86a2cd
* w32term.c (x_draw_glyph_string_foreground)
Jason Rumney <jasonr@gnu.org>
parents:
49371
diff
changeset
|
4328 } |
13434 | 4329 else |
27402
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
4330 { |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
4331 /* If we move outside the frame, then we're |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
4332 certainly no longer on any text in the frame. */ |
36315
b72dddbb65b2
* w32term.c (x_set_glyph_string_background_width): Extend the
Jason Rumney <jasonr@gnu.org>
parents:
36045
diff
changeset
|
4333 clear_mouse_face (dpyinfo); |
27402
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
4334 } |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
4335 |
50231
c8ea5e4b2129
* w32term.c: Remove consolidated defines and code.
Kim F. Storm <storm@cua.dk>
parents:
50163
diff
changeset
|
4336 /* If the contents of the global variable help_echo_string |
27402
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
4337 has changed, generate a HELP_EVENT. */ |
55646
358a5c0b4571
(w32_num_mouse_buttons): Rename from Vw32_num_mouse_buttons and make
Jason Rumney <jasonr@gnu.org>
parents:
55286
diff
changeset
|
4338 #if 0 /* The below is an invalid comparison when USE_LISP_UNION_TYPE. |
358a5c0b4571
(w32_num_mouse_buttons): Rename from Vw32_num_mouse_buttons and make
Jason Rumney <jasonr@gnu.org>
parents:
55286
diff
changeset
|
4339 But it was originally changed to this to fix a bug, so I have |
358a5c0b4571
(w32_num_mouse_buttons): Rename from Vw32_num_mouse_buttons and make
Jason Rumney <jasonr@gnu.org>
parents:
55286
diff
changeset
|
4340 not removed it completely in case the bug is still there. */ |
50231
c8ea5e4b2129
* w32term.c: Remove consolidated defines and code.
Kim F. Storm <storm@cua.dk>
parents:
50163
diff
changeset
|
4341 if (help_echo_string != previous_help_echo_string || |
c8ea5e4b2129
* w32term.c: Remove consolidated defines and code.
Kim F. Storm <storm@cua.dk>
parents:
50163
diff
changeset
|
4342 (!NILP (help_echo_string) && !STRINGP (help_echo_string) && f->mouse_moved)) |
55646
358a5c0b4571
(w32_num_mouse_buttons): Rename from Vw32_num_mouse_buttons and make
Jason Rumney <jasonr@gnu.org>
parents:
55286
diff
changeset
|
4343 #else /* This is what xterm.c does. */ |
358a5c0b4571
(w32_num_mouse_buttons): Rename from Vw32_num_mouse_buttons and make
Jason Rumney <jasonr@gnu.org>
parents:
55286
diff
changeset
|
4344 if (!NILP (help_echo_string) |
358a5c0b4571
(w32_num_mouse_buttons): Rename from Vw32_num_mouse_buttons and make
Jason Rumney <jasonr@gnu.org>
parents:
55286
diff
changeset
|
4345 || !NILP (previous_help_echo_string)) |
54171
f6909a416c3f
(w32_read_socket): Remove bufp_r and numcharsp args.
Kim F. Storm <storm@cua.dk>
parents:
54126
diff
changeset
|
4346 do_help = 1; |
55646
358a5c0b4571
(w32_num_mouse_buttons): Rename from Vw32_num_mouse_buttons and make
Jason Rumney <jasonr@gnu.org>
parents:
55286
diff
changeset
|
4347 #endif |
27402
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
4348 break; |
19713
043ccce224fb
(SIF_*): Win95 macros defined for NT.
Geoff Voelker <voelker@cs.washington.edu>
parents:
18877
diff
changeset
|
4349 |
13434 | 4350 case WM_LBUTTONDOWN: |
4351 case WM_LBUTTONUP: | |
4352 case WM_MBUTTONDOWN: | |
4353 case WM_MBUTTONUP: | |
4354 case WM_RBUTTONDOWN: | |
4355 case WM_RBUTTONUP: | |
42720
1217a83a82e4
(parse_button): New parameter xbutton. Callers changed.
Jason Rumney <jasonr@gnu.org>
parents:
42675
diff
changeset
|
4356 case WM_XBUTTONDOWN: |
1217a83a82e4
(parse_button): New parameter xbutton. Callers changed.
Jason Rumney <jasonr@gnu.org>
parents:
42675
diff
changeset
|
4357 case WM_XBUTTONUP: |
13434 | 4358 { |
27402
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
4359 /* If we decide we want to generate an event to be seen |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
4360 by the rest of Emacs, we put it here. */ |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
4361 int tool_bar_p = 0; |
13434 | 4362 int button; |
4363 int up; | |
27402
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
4364 |
13434 | 4365 if (dpyinfo->grabbed && last_mouse_frame |
4366 && FRAME_LIVE_P (last_mouse_frame)) | |
4367 f = last_mouse_frame; | |
4368 else | |
4369 f = x_window_to_frame (dpyinfo, msg.msg.hwnd); | |
48218
01e253345507
(w32_draw_fringe_bitmap): Remove unused local variable window.
Juanma Barranquero <lekktu@gmail.com>
parents:
48025
diff
changeset
|
4370 |
13434 | 4371 if (f) |
4372 { | |
54171
f6909a416c3f
(w32_read_socket): Remove bufp_r and numcharsp args.
Kim F. Storm <storm@cua.dk>
parents:
54126
diff
changeset
|
4373 construct_mouse_click (&inev, &msg, f); |
48218
01e253345507
(w32_draw_fringe_bitmap): Remove unused local variable window.
Juanma Barranquero <lekktu@gmail.com>
parents:
48025
diff
changeset
|
4374 |
27402
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
4375 /* Is this in the tool-bar? */ |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
4376 if (WINDOWP (f->tool_bar_window) |
51204
082b768216a0
Make (several) trivial substitutions for renamed and
Kim F. Storm <storm@cua.dk>
parents:
50441
diff
changeset
|
4377 && WINDOW_TOTAL_LINES (XWINDOW (f->tool_bar_window))) |
27402
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
4378 { |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
4379 Lisp_Object window; |
54171
f6909a416c3f
(w32_read_socket): Remove bufp_r and numcharsp args.
Kim F. Storm <storm@cua.dk>
parents:
54126
diff
changeset
|
4380 int x = XFASTINT (inev.x); |
f6909a416c3f
(w32_read_socket): Remove bufp_r and numcharsp args.
Kim F. Storm <storm@cua.dk>
parents:
54126
diff
changeset
|
4381 int y = XFASTINT (inev.y); |
50231
c8ea5e4b2129
* w32term.c: Remove consolidated defines and code.
Kim F. Storm <storm@cua.dk>
parents:
50163
diff
changeset
|
4382 |
51204
082b768216a0
Make (several) trivial substitutions for renamed and
Kim F. Storm <storm@cua.dk>
parents:
50441
diff
changeset
|
4383 window = window_from_coordinates (f, x, y, 0, 0, 0, 1); |
44095
cdcab7b110f6
(zv_bits): Declare as short, for word alignment.
Jason Rumney <jasonr@gnu.org>
parents:
44045
diff
changeset
|
4384 |
27402
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
4385 if (EQ (window, f->tool_bar_window)) |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
4386 { |
54171
f6909a416c3f
(w32_read_socket): Remove bufp_r and numcharsp args.
Kim F. Storm <storm@cua.dk>
parents:
54126
diff
changeset
|
4387 w32_handle_tool_bar_click (f, &inev); |
27402
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
4388 tool_bar_p = 1; |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
4389 } |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
4390 } |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
4391 |
54171
f6909a416c3f
(w32_read_socket): Remove bufp_r and numcharsp args.
Kim F. Storm <storm@cua.dk>
parents:
54126
diff
changeset
|
4392 if (tool_bar_p |
f6909a416c3f
(w32_read_socket): Remove bufp_r and numcharsp args.
Kim F. Storm <storm@cua.dk>
parents:
54126
diff
changeset
|
4393 || (dpyinfo->w32_focus_frame |
54225
61ba665b1e90
(w32_read_socket): Fix last change to ButtonPress handling.
Jason Rumney <jasonr@gnu.org>
parents:
54171
diff
changeset
|
4394 && f != dpyinfo->w32_focus_frame)) |
54171
f6909a416c3f
(w32_read_socket): Remove bufp_r and numcharsp args.
Kim F. Storm <storm@cua.dk>
parents:
54126
diff
changeset
|
4395 inev.kind = NO_EVENT; |
13434 | 4396 } |
48218
01e253345507
(w32_draw_fringe_bitmap): Remove unused local variable window.
Juanma Barranquero <lekktu@gmail.com>
parents:
48025
diff
changeset
|
4397 |
42720
1217a83a82e4
(parse_button): New parameter xbutton. Callers changed.
Jason Rumney <jasonr@gnu.org>
parents:
42675
diff
changeset
|
4398 parse_button (msg.msg.message, HIWORD (msg.msg.wParam), |
1217a83a82e4
(parse_button): New parameter xbutton. Callers changed.
Jason Rumney <jasonr@gnu.org>
parents:
42675
diff
changeset
|
4399 &button, &up); |
1217a83a82e4
(parse_button): New parameter xbutton. Callers changed.
Jason Rumney <jasonr@gnu.org>
parents:
42675
diff
changeset
|
4400 |
13434 | 4401 if (up) |
4402 { | |
4403 dpyinfo->grabbed &= ~ (1 << button); | |
4404 } | |
4405 else | |
4406 { | |
4407 dpyinfo->grabbed |= (1 << button); | |
4408 last_mouse_frame = f; | |
27402
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
4409 /* Ignore any mouse motion that happened |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
4410 before this event; any subsequent mouse-movement |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
4411 Emacs events should reflect only motion after |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
4412 the ButtonPress. */ |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
4413 if (f != 0) |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
4414 f->mouse_moved = 0; |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
4415 |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
4416 if (!tool_bar_p) |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
4417 last_tool_bar_item = -1; |
13434 | 4418 } |
19713
043ccce224fb
(SIF_*): Win95 macros defined for NT.
Geoff Voelker <voelker@cs.washington.edu>
parents:
18877
diff
changeset
|
4419 break; |
13434 | 4420 } |
48218
01e253345507
(w32_draw_fringe_bitmap): Remove unused local variable window.
Juanma Barranquero <lekktu@gmail.com>
parents:
48025
diff
changeset
|
4421 |
51258
a35e5665c742
(construct_mouse_wheel): Result is a MOUSE_CLICK_EVENT. Scrolling down/up the
Juanma Barranquero <lekktu@gmail.com>
parents:
51204
diff
changeset
|
4422 case WM_MOUSEWHEEL: |
a35e5665c742
(construct_mouse_wheel): Result is a MOUSE_CLICK_EVENT. Scrolling down/up the
Juanma Barranquero <lekktu@gmail.com>
parents:
51204
diff
changeset
|
4423 { |
a35e5665c742
(construct_mouse_wheel): Result is a MOUSE_CLICK_EVENT. Scrolling down/up the
Juanma Barranquero <lekktu@gmail.com>
parents:
51204
diff
changeset
|
4424 if (dpyinfo->grabbed && last_mouse_frame |
a35e5665c742
(construct_mouse_wheel): Result is a MOUSE_CLICK_EVENT. Scrolling down/up the
Juanma Barranquero <lekktu@gmail.com>
parents:
51204
diff
changeset
|
4425 && FRAME_LIVE_P (last_mouse_frame)) |
a35e5665c742
(construct_mouse_wheel): Result is a MOUSE_CLICK_EVENT. Scrolling down/up the
Juanma Barranquero <lekktu@gmail.com>
parents:
51204
diff
changeset
|
4426 f = last_mouse_frame; |
a35e5665c742
(construct_mouse_wheel): Result is a MOUSE_CLICK_EVENT. Scrolling down/up the
Juanma Barranquero <lekktu@gmail.com>
parents:
51204
diff
changeset
|
4427 else |
a35e5665c742
(construct_mouse_wheel): Result is a MOUSE_CLICK_EVENT. Scrolling down/up the
Juanma Barranquero <lekktu@gmail.com>
parents:
51204
diff
changeset
|
4428 f = x_window_to_frame (dpyinfo, msg.msg.hwnd); |
a35e5665c742
(construct_mouse_wheel): Result is a MOUSE_CLICK_EVENT. Scrolling down/up the
Juanma Barranquero <lekktu@gmail.com>
parents:
51204
diff
changeset
|
4429 |
a35e5665c742
(construct_mouse_wheel): Result is a MOUSE_CLICK_EVENT. Scrolling down/up the
Juanma Barranquero <lekktu@gmail.com>
parents:
51204
diff
changeset
|
4430 if (f) |
a35e5665c742
(construct_mouse_wheel): Result is a MOUSE_CLICK_EVENT. Scrolling down/up the
Juanma Barranquero <lekktu@gmail.com>
parents:
51204
diff
changeset
|
4431 { |
a35e5665c742
(construct_mouse_wheel): Result is a MOUSE_CLICK_EVENT. Scrolling down/up the
Juanma Barranquero <lekktu@gmail.com>
parents:
51204
diff
changeset
|
4432 |
54171
f6909a416c3f
(w32_read_socket): Remove bufp_r and numcharsp args.
Kim F. Storm <storm@cua.dk>
parents:
54126
diff
changeset
|
4433 if (!dpyinfo->w32_focus_frame |
f6909a416c3f
(w32_read_socket): Remove bufp_r and numcharsp args.
Kim F. Storm <storm@cua.dk>
parents:
54126
diff
changeset
|
4434 || f == dpyinfo->w32_focus_frame) |
51258
a35e5665c742
(construct_mouse_wheel): Result is a MOUSE_CLICK_EVENT. Scrolling down/up the
Juanma Barranquero <lekktu@gmail.com>
parents:
51204
diff
changeset
|
4435 { |
51382
e099ac71bd76
(construct_mouse_wheel): Construct WHEEL_EVENT.
Jason Rumney <jasonr@gnu.org>
parents:
51270
diff
changeset
|
4436 /* Emit an Emacs wheel-up/down event. */ |
54171
f6909a416c3f
(w32_read_socket): Remove bufp_r and numcharsp args.
Kim F. Storm <storm@cua.dk>
parents:
54126
diff
changeset
|
4437 construct_mouse_wheel (&inev, &msg, f); |
51258
a35e5665c742
(construct_mouse_wheel): Result is a MOUSE_CLICK_EVENT. Scrolling down/up the
Juanma Barranquero <lekktu@gmail.com>
parents:
51204
diff
changeset
|
4438 } |
51382
e099ac71bd76
(construct_mouse_wheel): Construct WHEEL_EVENT.
Jason Rumney <jasonr@gnu.org>
parents:
51270
diff
changeset
|
4439 /* Ignore any mouse motion that happened before this |
e099ac71bd76
(construct_mouse_wheel): Construct WHEEL_EVENT.
Jason Rumney <jasonr@gnu.org>
parents:
51270
diff
changeset
|
4440 event; any subsequent mouse-movement Emacs events |
e099ac71bd76
(construct_mouse_wheel): Construct WHEEL_EVENT.
Jason Rumney <jasonr@gnu.org>
parents:
51270
diff
changeset
|
4441 should reflect only motion after the |
74145 | 4442 ButtonPress. */ |
51382
e099ac71bd76
(construct_mouse_wheel): Construct WHEEL_EVENT.
Jason Rumney <jasonr@gnu.org>
parents:
51270
diff
changeset
|
4443 f->mouse_moved = 0; |
51258
a35e5665c742
(construct_mouse_wheel): Result is a MOUSE_CLICK_EVENT. Scrolling down/up the
Juanma Barranquero <lekktu@gmail.com>
parents:
51204
diff
changeset
|
4444 } |
51382
e099ac71bd76
(construct_mouse_wheel): Construct WHEEL_EVENT.
Jason Rumney <jasonr@gnu.org>
parents:
51270
diff
changeset
|
4445 last_mouse_frame = f; |
e099ac71bd76
(construct_mouse_wheel): Construct WHEEL_EVENT.
Jason Rumney <jasonr@gnu.org>
parents:
51270
diff
changeset
|
4446 last_tool_bar_item = -1; |
51258
a35e5665c742
(construct_mouse_wheel): Result is a MOUSE_CLICK_EVENT. Scrolling down/up the
Juanma Barranquero <lekktu@gmail.com>
parents:
51204
diff
changeset
|
4447 } |
13434 | 4448 break; |
19713
043ccce224fb
(SIF_*): Win95 macros defined for NT.
Geoff Voelker <voelker@cs.washington.edu>
parents:
18877
diff
changeset
|
4449 |
21885 | 4450 case WM_DROPFILES: |
4451 f = x_window_to_frame (dpyinfo, msg.msg.hwnd); | |
4452 | |
4453 if (f) | |
54171
f6909a416c3f
(w32_read_socket): Remove bufp_r and numcharsp args.
Kim F. Storm <storm@cua.dk>
parents:
54126
diff
changeset
|
4454 construct_drag_n_drop (&inev, &msg, f); |
21885 | 4455 break; |
4456 | |
13434 | 4457 case WM_VSCROLL: |
4458 { | |
19713
043ccce224fb
(SIF_*): Win95 macros defined for NT.
Geoff Voelker <voelker@cs.washington.edu>
parents:
18877
diff
changeset
|
4459 struct scroll_bar *bar = |
043ccce224fb
(SIF_*): Win95 macros defined for NT.
Geoff Voelker <voelker@cs.washington.edu>
parents:
18877
diff
changeset
|
4460 x_window_to_scroll_bar ((HWND)msg.msg.lParam); |
48218
01e253345507
(w32_draw_fringe_bitmap): Remove unused local variable window.
Juanma Barranquero <lekktu@gmail.com>
parents:
48025
diff
changeset
|
4461 |
54171
f6909a416c3f
(w32_read_socket): Remove bufp_r and numcharsp args.
Kim F. Storm <storm@cua.dk>
parents:
54126
diff
changeset
|
4462 if (bar) |
f6909a416c3f
(w32_read_socket): Remove bufp_r and numcharsp args.
Kim F. Storm <storm@cua.dk>
parents:
54126
diff
changeset
|
4463 w32_scroll_bar_handle_click (bar, &msg, &inev); |
19713
043ccce224fb
(SIF_*): Win95 macros defined for NT.
Geoff Voelker <voelker@cs.washington.edu>
parents:
18877
diff
changeset
|
4464 break; |
13434 | 4465 } |
48218
01e253345507
(w32_draw_fringe_bitmap): Remove unused local variable window.
Juanma Barranquero <lekktu@gmail.com>
parents:
48025
diff
changeset
|
4466 |
19713
043ccce224fb
(SIF_*): Win95 macros defined for NT.
Geoff Voelker <voelker@cs.washington.edu>
parents:
18877
diff
changeset
|
4467 case WM_WINDOWPOSCHANGED: |
43396
9b50c09298f6
* w32term.c (x_autoselect_window_p): New variable.
Jason Rumney <jasonr@gnu.org>
parents:
43373
diff
changeset
|
4468 f = x_window_to_frame (dpyinfo, msg.msg.hwnd); |
9b50c09298f6
* w32term.c (x_autoselect_window_p): New variable.
Jason Rumney <jasonr@gnu.org>
parents:
43373
diff
changeset
|
4469 if (f) |
9b50c09298f6
* w32term.c (x_autoselect_window_p): New variable.
Jason Rumney <jasonr@gnu.org>
parents:
43373
diff
changeset
|
4470 { |
51204
082b768216a0
Make (several) trivial substitutions for renamed and
Kim F. Storm <storm@cua.dk>
parents:
50441
diff
changeset
|
4471 if (f->want_fullscreen & FULLSCREEN_WAIT) |
082b768216a0
Make (several) trivial substitutions for renamed and
Kim F. Storm <storm@cua.dk>
parents:
50441
diff
changeset
|
4472 f->want_fullscreen &= ~(FULLSCREEN_WAIT|FULLSCREEN_BOTH); |
43396
9b50c09298f6
* w32term.c (x_autoselect_window_p): New variable.
Jason Rumney <jasonr@gnu.org>
parents:
43373
diff
changeset
|
4473 } |
9b50c09298f6
* w32term.c (x_autoselect_window_p): New variable.
Jason Rumney <jasonr@gnu.org>
parents:
43373
diff
changeset
|
4474 check_visibility = 1; |
9b50c09298f6
* w32term.c (x_autoselect_window_p): New variable.
Jason Rumney <jasonr@gnu.org>
parents:
43373
diff
changeset
|
4475 break; |
9b50c09298f6
* w32term.c (x_autoselect_window_p): New variable.
Jason Rumney <jasonr@gnu.org>
parents:
43373
diff
changeset
|
4476 |
19713
043ccce224fb
(SIF_*): Win95 macros defined for NT.
Geoff Voelker <voelker@cs.washington.edu>
parents:
18877
diff
changeset
|
4477 case WM_ACTIVATE: |
043ccce224fb
(SIF_*): Win95 macros defined for NT.
Geoff Voelker <voelker@cs.washington.edu>
parents:
18877
diff
changeset
|
4478 case WM_ACTIVATEAPP: |
43396
9b50c09298f6
* w32term.c (x_autoselect_window_p): New variable.
Jason Rumney <jasonr@gnu.org>
parents:
43373
diff
changeset
|
4479 f = x_window_to_frame (dpyinfo, msg.msg.hwnd); |
9b50c09298f6
* w32term.c (x_autoselect_window_p): New variable.
Jason Rumney <jasonr@gnu.org>
parents:
43373
diff
changeset
|
4480 if (f) |
9b50c09298f6
* w32term.c (x_autoselect_window_p): New variable.
Jason Rumney <jasonr@gnu.org>
parents:
43373
diff
changeset
|
4481 x_check_fullscreen (f); |
19713
043ccce224fb
(SIF_*): Win95 macros defined for NT.
Geoff Voelker <voelker@cs.washington.edu>
parents:
18877
diff
changeset
|
4482 check_visibility = 1; |
13434 | 4483 break; |
19713
043ccce224fb
(SIF_*): Win95 macros defined for NT.
Geoff Voelker <voelker@cs.washington.edu>
parents:
18877
diff
changeset
|
4484 |
13434 | 4485 case WM_MOVE: |
4486 f = x_window_to_frame (dpyinfo, msg.msg.hwnd); | |
48218
01e253345507
(w32_draw_fringe_bitmap): Remove unused local variable window.
Juanma Barranquero <lekktu@gmail.com>
parents:
48025
diff
changeset
|
4487 |
13434 | 4488 if (f && !f->async_iconified) |
4489 { | |
19713
043ccce224fb
(SIF_*): Win95 macros defined for NT.
Geoff Voelker <voelker@cs.washington.edu>
parents:
18877
diff
changeset
|
4490 int x, y; |
043ccce224fb
(SIF_*): Win95 macros defined for NT.
Geoff Voelker <voelker@cs.washington.edu>
parents:
18877
diff
changeset
|
4491 |
043ccce224fb
(SIF_*): Win95 macros defined for NT.
Geoff Voelker <voelker@cs.washington.edu>
parents:
18877
diff
changeset
|
4492 x_real_positions (f, &x, &y); |
51204
082b768216a0
Make (several) trivial substitutions for renamed and
Kim F. Storm <storm@cua.dk>
parents:
50441
diff
changeset
|
4493 f->left_pos = x; |
082b768216a0
Make (several) trivial substitutions for renamed and
Kim F. Storm <storm@cua.dk>
parents:
50441
diff
changeset
|
4494 f->top_pos = y; |
13434 | 4495 } |
19713
043ccce224fb
(SIF_*): Win95 macros defined for NT.
Geoff Voelker <voelker@cs.washington.edu>
parents:
18877
diff
changeset
|
4496 |
043ccce224fb
(SIF_*): Win95 macros defined for NT.
Geoff Voelker <voelker@cs.washington.edu>
parents:
18877
diff
changeset
|
4497 check_visibility = 1; |
13434 | 4498 break; |
19713
043ccce224fb
(SIF_*): Win95 macros defined for NT.
Geoff Voelker <voelker@cs.washington.edu>
parents:
18877
diff
changeset
|
4499 |
043ccce224fb
(SIF_*): Win95 macros defined for NT.
Geoff Voelker <voelker@cs.washington.edu>
parents:
18877
diff
changeset
|
4500 case WM_SHOWWINDOW: |
41447
783d21cc62b9
(x_after_update_window_line): Doc fix.
Jason Rumney <jasonr@gnu.org>
parents:
41249
diff
changeset
|
4501 /* wParam non-zero means Window is about to be shown, 0 means |
783d21cc62b9
(x_after_update_window_line): Doc fix.
Jason Rumney <jasonr@gnu.org>
parents:
41249
diff
changeset
|
4502 about to be hidden. */ |
783d21cc62b9
(x_after_update_window_line): Doc fix.
Jason Rumney <jasonr@gnu.org>
parents:
41249
diff
changeset
|
4503 /* Redo the mouse-highlight after the tooltip has gone. */ |
783d21cc62b9
(x_after_update_window_line): Doc fix.
Jason Rumney <jasonr@gnu.org>
parents:
41249
diff
changeset
|
4504 if (!msg.msg.wParam && msg.msg.hwnd == tip_window) |
783d21cc62b9
(x_after_update_window_line): Doc fix.
Jason Rumney <jasonr@gnu.org>
parents:
41249
diff
changeset
|
4505 { |
783d21cc62b9
(x_after_update_window_line): Doc fix.
Jason Rumney <jasonr@gnu.org>
parents:
41249
diff
changeset
|
4506 tip_window = NULL; |
783d21cc62b9
(x_after_update_window_line): Doc fix.
Jason Rumney <jasonr@gnu.org>
parents:
41249
diff
changeset
|
4507 redo_mouse_highlight (); |
783d21cc62b9
(x_after_update_window_line): Doc fix.
Jason Rumney <jasonr@gnu.org>
parents:
41249
diff
changeset
|
4508 } |
783d21cc62b9
(x_after_update_window_line): Doc fix.
Jason Rumney <jasonr@gnu.org>
parents:
41249
diff
changeset
|
4509 |
19713
043ccce224fb
(SIF_*): Win95 macros defined for NT.
Geoff Voelker <voelker@cs.washington.edu>
parents:
18877
diff
changeset
|
4510 /* If window has been obscured or exposed by another window |
043ccce224fb
(SIF_*): Win95 macros defined for NT.
Geoff Voelker <voelker@cs.washington.edu>
parents:
18877
diff
changeset
|
4511 being maximised or minimised/restored, then recheck |
043ccce224fb
(SIF_*): Win95 macros defined for NT.
Geoff Voelker <voelker@cs.washington.edu>
parents:
18877
diff
changeset
|
4512 visibility of all frames. Direct changes to our own |
043ccce224fb
(SIF_*): Win95 macros defined for NT.
Geoff Voelker <voelker@cs.washington.edu>
parents:
18877
diff
changeset
|
4513 windows get handled by WM_SIZE. */ |
043ccce224fb
(SIF_*): Win95 macros defined for NT.
Geoff Voelker <voelker@cs.washington.edu>
parents:
18877
diff
changeset
|
4514 #if 0 |
043ccce224fb
(SIF_*): Win95 macros defined for NT.
Geoff Voelker <voelker@cs.washington.edu>
parents:
18877
diff
changeset
|
4515 if (msg.msg.lParam != 0) |
043ccce224fb
(SIF_*): Win95 macros defined for NT.
Geoff Voelker <voelker@cs.washington.edu>
parents:
18877
diff
changeset
|
4516 check_visibility = 1; |
043ccce224fb
(SIF_*): Win95 macros defined for NT.
Geoff Voelker <voelker@cs.washington.edu>
parents:
18877
diff
changeset
|
4517 else |
043ccce224fb
(SIF_*): Win95 macros defined for NT.
Geoff Voelker <voelker@cs.washington.edu>
parents:
18877
diff
changeset
|
4518 { |
043ccce224fb
(SIF_*): Win95 macros defined for NT.
Geoff Voelker <voelker@cs.washington.edu>
parents:
18877
diff
changeset
|
4519 f = x_window_to_frame (dpyinfo, msg.msg.hwnd); |
043ccce224fb
(SIF_*): Win95 macros defined for NT.
Geoff Voelker <voelker@cs.washington.edu>
parents:
18877
diff
changeset
|
4520 f->async_visible = msg.msg.wParam; |
043ccce224fb
(SIF_*): Win95 macros defined for NT.
Geoff Voelker <voelker@cs.washington.edu>
parents:
18877
diff
changeset
|
4521 } |
043ccce224fb
(SIF_*): Win95 macros defined for NT.
Geoff Voelker <voelker@cs.washington.edu>
parents:
18877
diff
changeset
|
4522 #endif |
043ccce224fb
(SIF_*): Win95 macros defined for NT.
Geoff Voelker <voelker@cs.washington.edu>
parents:
18877
diff
changeset
|
4523 |
043ccce224fb
(SIF_*): Win95 macros defined for NT.
Geoff Voelker <voelker@cs.washington.edu>
parents:
18877
diff
changeset
|
4524 check_visibility = 1; |
043ccce224fb
(SIF_*): Win95 macros defined for NT.
Geoff Voelker <voelker@cs.washington.edu>
parents:
18877
diff
changeset
|
4525 break; |
043ccce224fb
(SIF_*): Win95 macros defined for NT.
Geoff Voelker <voelker@cs.washington.edu>
parents:
18877
diff
changeset
|
4526 |
13434 | 4527 case WM_SIZE: |
4528 f = x_window_to_frame (dpyinfo, msg.msg.hwnd); | |
48218
01e253345507
(w32_draw_fringe_bitmap): Remove unused local variable window.
Juanma Barranquero <lekktu@gmail.com>
parents:
48025
diff
changeset
|
4529 |
19713
043ccce224fb
(SIF_*): Win95 macros defined for NT.
Geoff Voelker <voelker@cs.washington.edu>
parents:
18877
diff
changeset
|
4530 /* Inform lisp of whether frame has been iconified etc. */ |
043ccce224fb
(SIF_*): Win95 macros defined for NT.
Geoff Voelker <voelker@cs.washington.edu>
parents:
18877
diff
changeset
|
4531 if (f) |
13434 | 4532 { |
19713
043ccce224fb
(SIF_*): Win95 macros defined for NT.
Geoff Voelker <voelker@cs.washington.edu>
parents:
18877
diff
changeset
|
4533 switch (msg.msg.wParam) |
13434 | 4534 { |
19713
043ccce224fb
(SIF_*): Win95 macros defined for NT.
Geoff Voelker <voelker@cs.washington.edu>
parents:
18877
diff
changeset
|
4535 case SIZE_MINIMIZED: |
043ccce224fb
(SIF_*): Win95 macros defined for NT.
Geoff Voelker <voelker@cs.washington.edu>
parents:
18877
diff
changeset
|
4536 f->async_visible = 0; |
13434 | 4537 f->async_iconified = 1; |
48218
01e253345507
(w32_draw_fringe_bitmap): Remove unused local variable window.
Juanma Barranquero <lekktu@gmail.com>
parents:
48025
diff
changeset
|
4538 |
54171
f6909a416c3f
(w32_read_socket): Remove bufp_r and numcharsp args.
Kim F. Storm <storm@cua.dk>
parents:
54126
diff
changeset
|
4539 inev.kind = ICONIFY_EVENT; |
f6909a416c3f
(w32_read_socket): Remove bufp_r and numcharsp args.
Kim F. Storm <storm@cua.dk>
parents:
54126
diff
changeset
|
4540 XSETFRAME (inev.frame_or_window, f); |
19713
043ccce224fb
(SIF_*): Win95 macros defined for NT.
Geoff Voelker <voelker@cs.washington.edu>
parents:
18877
diff
changeset
|
4541 break; |
043ccce224fb
(SIF_*): Win95 macros defined for NT.
Geoff Voelker <voelker@cs.washington.edu>
parents:
18877
diff
changeset
|
4542 |
043ccce224fb
(SIF_*): Win95 macros defined for NT.
Geoff Voelker <voelker@cs.washington.edu>
parents:
18877
diff
changeset
|
4543 case SIZE_MAXIMIZED: |
043ccce224fb
(SIF_*): Win95 macros defined for NT.
Geoff Voelker <voelker@cs.washington.edu>
parents:
18877
diff
changeset
|
4544 case SIZE_RESTORED: |
13434 | 4545 f->async_visible = 1; |
4546 f->async_iconified = 0; | |
48218
01e253345507
(w32_draw_fringe_bitmap): Remove unused local variable window.
Juanma Barranquero <lekktu@gmail.com>
parents:
48025
diff
changeset
|
4547 |
56729
e6e0caa7ec87
Rename wait_reading_process_input to wait_reading_process_output.
Kim F. Storm <storm@cua.dk>
parents:
55646
diff
changeset
|
4548 /* wait_reading_process_output will notice this and update |
13434 | 4549 the frame's display structures. */ |
4550 SET_FRAME_GARBAGED (f); | |
48218
01e253345507
(w32_draw_fringe_bitmap): Remove unused local variable window.
Juanma Barranquero <lekktu@gmail.com>
parents:
48025
diff
changeset
|
4551 |
13434 | 4552 if (f->iconified) |
4553 { | |
24827
487fdbc8de0f
(cancel_mouse_face): new function. See equiv
Karl Heuer <kwzh@gnu.org>
parents:
24752
diff
changeset
|
4554 int x, y; |
487fdbc8de0f
(cancel_mouse_face): new function. See equiv
Karl Heuer <kwzh@gnu.org>
parents:
24752
diff
changeset
|
4555 |
487fdbc8de0f
(cancel_mouse_face): new function. See equiv
Karl Heuer <kwzh@gnu.org>
parents:
24752
diff
changeset
|
4556 /* Reset top and left positions of the Window |
487fdbc8de0f
(cancel_mouse_face): new function. See equiv
Karl Heuer <kwzh@gnu.org>
parents:
24752
diff
changeset
|
4557 here since Windows sends a WM_MOVE message |
487fdbc8de0f
(cancel_mouse_face): new function. See equiv
Karl Heuer <kwzh@gnu.org>
parents:
24752
diff
changeset
|
4558 BEFORE telling us the Window is minimized |
487fdbc8de0f
(cancel_mouse_face): new function. See equiv
Karl Heuer <kwzh@gnu.org>
parents:
24752
diff
changeset
|
4559 when the Window is iconified, with 3000,3000 |
487fdbc8de0f
(cancel_mouse_face): new function. See equiv
Karl Heuer <kwzh@gnu.org>
parents:
24752
diff
changeset
|
4560 as the co-ords. */ |
487fdbc8de0f
(cancel_mouse_face): new function. See equiv
Karl Heuer <kwzh@gnu.org>
parents:
24752
diff
changeset
|
4561 x_real_positions (f, &x, &y); |
51204
082b768216a0
Make (several) trivial substitutions for renamed and
Kim F. Storm <storm@cua.dk>
parents:
50441
diff
changeset
|
4562 f->left_pos = x; |
082b768216a0
Make (several) trivial substitutions for renamed and
Kim F. Storm <storm@cua.dk>
parents:
50441
diff
changeset
|
4563 f->top_pos = y; |
24827
487fdbc8de0f
(cancel_mouse_face): new function. See equiv
Karl Heuer <kwzh@gnu.org>
parents:
24752
diff
changeset
|
4564 |
54171
f6909a416c3f
(w32_read_socket): Remove bufp_r and numcharsp args.
Kim F. Storm <storm@cua.dk>
parents:
54126
diff
changeset
|
4565 inev.kind = DEICONIFY_EVENT; |
f6909a416c3f
(w32_read_socket): Remove bufp_r and numcharsp args.
Kim F. Storm <storm@cua.dk>
parents:
54126
diff
changeset
|
4566 XSETFRAME (inev.frame_or_window, f); |
13434 | 4567 } |
29321
8e2be36bb1c6
Format and doc changes to bring closer to xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
28369
diff
changeset
|
4568 else if (! NILP (Vframe_list) |
8e2be36bb1c6
Format and doc changes to bring closer to xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
28369
diff
changeset
|
4569 && ! NILP (XCDR (Vframe_list))) |
13434 | 4570 /* Force a redisplay sooner or later |
4571 to update the frame titles | |
4572 in case this is the second frame. */ | |
4573 record_asynch_buffer_change (); | |
19713
043ccce224fb
(SIF_*): Win95 macros defined for NT.
Geoff Voelker <voelker@cs.washington.edu>
parents:
18877
diff
changeset
|
4574 break; |
13434 | 4575 } |
4576 } | |
19713
043ccce224fb
(SIF_*): Win95 macros defined for NT.
Geoff Voelker <voelker@cs.washington.edu>
parents:
18877
diff
changeset
|
4577 |
21614
2624d8dcc73f
(Vw32_recognize_altgr): New variable.
Geoff Voelker <voelker@cs.washington.edu>
parents:
21456
diff
changeset
|
4578 if (f && !f->async_iconified && msg.msg.wParam != SIZE_MINIMIZED) |
2624d8dcc73f
(Vw32_recognize_altgr): New variable.
Geoff Voelker <voelker@cs.washington.edu>
parents:
21456
diff
changeset
|
4579 { |
2624d8dcc73f
(Vw32_recognize_altgr): New variable.
Geoff Voelker <voelker@cs.washington.edu>
parents:
21456
diff
changeset
|
4580 RECT rect; |
2624d8dcc73f
(Vw32_recognize_altgr): New variable.
Geoff Voelker <voelker@cs.washington.edu>
parents:
21456
diff
changeset
|
4581 int rows; |
2624d8dcc73f
(Vw32_recognize_altgr): New variable.
Geoff Voelker <voelker@cs.washington.edu>
parents:
21456
diff
changeset
|
4582 int columns; |
2624d8dcc73f
(Vw32_recognize_altgr): New variable.
Geoff Voelker <voelker@cs.washington.edu>
parents:
21456
diff
changeset
|
4583 int width; |
2624d8dcc73f
(Vw32_recognize_altgr): New variable.
Geoff Voelker <voelker@cs.washington.edu>
parents:
21456
diff
changeset
|
4584 int height; |
48218
01e253345507
(w32_draw_fringe_bitmap): Remove unused local variable window.
Juanma Barranquero <lekktu@gmail.com>
parents:
48025
diff
changeset
|
4585 |
32022
1f26caa05cd7
(w32_char_font_type, w32_encode_char, x_produce_glyphs): Distinguish
Jason Rumney <jasonr@gnu.org>
parents:
31624
diff
changeset
|
4586 GetClientRect (msg.msg.hwnd, &rect); |
48218
01e253345507
(w32_draw_fringe_bitmap): Remove unused local variable window.
Juanma Barranquero <lekktu@gmail.com>
parents:
48025
diff
changeset
|
4587 |
21614
2624d8dcc73f
(Vw32_recognize_altgr): New variable.
Geoff Voelker <voelker@cs.washington.edu>
parents:
21456
diff
changeset
|
4588 height = rect.bottom - rect.top; |
2624d8dcc73f
(Vw32_recognize_altgr): New variable.
Geoff Voelker <voelker@cs.washington.edu>
parents:
21456
diff
changeset
|
4589 width = rect.right - rect.left; |
48218
01e253345507
(w32_draw_fringe_bitmap): Remove unused local variable window.
Juanma Barranquero <lekktu@gmail.com>
parents:
48025
diff
changeset
|
4590 |
51204
082b768216a0
Make (several) trivial substitutions for renamed and
Kim F. Storm <storm@cua.dk>
parents:
50441
diff
changeset
|
4591 rows = FRAME_PIXEL_HEIGHT_TO_TEXT_LINES (f, height); |
082b768216a0
Make (several) trivial substitutions for renamed and
Kim F. Storm <storm@cua.dk>
parents:
50441
diff
changeset
|
4592 columns = FRAME_PIXEL_WIDTH_TO_TEXT_COLS (f, width); |
48218
01e253345507
(w32_draw_fringe_bitmap): Remove unused local variable window.
Juanma Barranquero <lekktu@gmail.com>
parents:
48025
diff
changeset
|
4593 |
21614
2624d8dcc73f
(Vw32_recognize_altgr): New variable.
Geoff Voelker <voelker@cs.washington.edu>
parents:
21456
diff
changeset
|
4594 /* TODO: Clip size to the screen dimensions. */ |
48218
01e253345507
(w32_draw_fringe_bitmap): Remove unused local variable window.
Juanma Barranquero <lekktu@gmail.com>
parents:
48025
diff
changeset
|
4595 |
21614
2624d8dcc73f
(Vw32_recognize_altgr): New variable.
Geoff Voelker <voelker@cs.washington.edu>
parents:
21456
diff
changeset
|
4596 /* Even if the number of character rows and columns has |
2624d8dcc73f
(Vw32_recognize_altgr): New variable.
Geoff Voelker <voelker@cs.washington.edu>
parents:
21456
diff
changeset
|
4597 not changed, the font size may have changed, so we need |
2624d8dcc73f
(Vw32_recognize_altgr): New variable.
Geoff Voelker <voelker@cs.washington.edu>
parents:
21456
diff
changeset
|
4598 to check the pixel dimensions as well. */ |
48218
01e253345507
(w32_draw_fringe_bitmap): Remove unused local variable window.
Juanma Barranquero <lekktu@gmail.com>
parents:
48025
diff
changeset
|
4599 |
51204
082b768216a0
Make (several) trivial substitutions for renamed and
Kim F. Storm <storm@cua.dk>
parents:
50441
diff
changeset
|
4600 if (columns != FRAME_COLS (f) |
082b768216a0
Make (several) trivial substitutions for renamed and
Kim F. Storm <storm@cua.dk>
parents:
50441
diff
changeset
|
4601 || rows != FRAME_LINES (f) |
082b768216a0
Make (several) trivial substitutions for renamed and
Kim F. Storm <storm@cua.dk>
parents:
50441
diff
changeset
|
4602 || width != FRAME_PIXEL_WIDTH (f) |
082b768216a0
Make (several) trivial substitutions for renamed and
Kim F. Storm <storm@cua.dk>
parents:
50441
diff
changeset
|
4603 || height != FRAME_PIXEL_HEIGHT (f)) |
21614
2624d8dcc73f
(Vw32_recognize_altgr): New variable.
Geoff Voelker <voelker@cs.washington.edu>
parents:
21456
diff
changeset
|
4604 { |
27402
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
4605 change_frame_size (f, rows, columns, 0, 1, 0); |
21614
2624d8dcc73f
(Vw32_recognize_altgr): New variable.
Geoff Voelker <voelker@cs.washington.edu>
parents:
21456
diff
changeset
|
4606 SET_FRAME_GARBAGED (f); |
24827
487fdbc8de0f
(cancel_mouse_face): new function. See equiv
Karl Heuer <kwzh@gnu.org>
parents:
24752
diff
changeset
|
4607 cancel_mouse_face (f); |
51204
082b768216a0
Make (several) trivial substitutions for renamed and
Kim F. Storm <storm@cua.dk>
parents:
50441
diff
changeset
|
4608 FRAME_PIXEL_WIDTH (f) = width; |
082b768216a0
Make (several) trivial substitutions for renamed and
Kim F. Storm <storm@cua.dk>
parents:
50441
diff
changeset
|
4609 FRAME_PIXEL_HEIGHT (f) = height; |
082b768216a0
Make (several) trivial substitutions for renamed and
Kim F. Storm <storm@cua.dk>
parents:
50441
diff
changeset
|
4610 f->win_gravity = NorthWestGravity; |
21614
2624d8dcc73f
(Vw32_recognize_altgr): New variable.
Geoff Voelker <voelker@cs.washington.edu>
parents:
21456
diff
changeset
|
4611 } |
2624d8dcc73f
(Vw32_recognize_altgr): New variable.
Geoff Voelker <voelker@cs.washington.edu>
parents:
21456
diff
changeset
|
4612 } |
2624d8dcc73f
(Vw32_recognize_altgr): New variable.
Geoff Voelker <voelker@cs.washington.edu>
parents:
21456
diff
changeset
|
4613 |
19713
043ccce224fb
(SIF_*): Win95 macros defined for NT.
Geoff Voelker <voelker@cs.washington.edu>
parents:
18877
diff
changeset
|
4614 check_visibility = 1; |
043ccce224fb
(SIF_*): Win95 macros defined for NT.
Geoff Voelker <voelker@cs.washington.edu>
parents:
18877
diff
changeset
|
4615 break; |
043ccce224fb
(SIF_*): Win95 macros defined for NT.
Geoff Voelker <voelker@cs.washington.edu>
parents:
18877
diff
changeset
|
4616 |
41731
33ba14e9c09a
(w32_read_socket) <WM_MOUSELEAVE>: Cancel help echo
Jason Rumney <jasonr@gnu.org>
parents:
41727
diff
changeset
|
4617 case WM_MOUSELEAVE: |
33ba14e9c09a
(w32_read_socket) <WM_MOUSELEAVE>: Cancel help echo
Jason Rumney <jasonr@gnu.org>
parents:
41727
diff
changeset
|
4618 f = x_any_window_to_frame (dpyinfo, msg.msg.hwnd); |
33ba14e9c09a
(w32_read_socket) <WM_MOUSELEAVE>: Cancel help echo
Jason Rumney <jasonr@gnu.org>
parents:
41727
diff
changeset
|
4619 if (f) |
33ba14e9c09a
(w32_read_socket) <WM_MOUSELEAVE>: Cancel help echo
Jason Rumney <jasonr@gnu.org>
parents:
41727
diff
changeset
|
4620 { |
33ba14e9c09a
(w32_read_socket) <WM_MOUSELEAVE>: Cancel help echo
Jason Rumney <jasonr@gnu.org>
parents:
41727
diff
changeset
|
4621 if (f == dpyinfo->mouse_face_mouse_frame) |
33ba14e9c09a
(w32_read_socket) <WM_MOUSELEAVE>: Cancel help echo
Jason Rumney <jasonr@gnu.org>
parents:
41727
diff
changeset
|
4622 { |
33ba14e9c09a
(w32_read_socket) <WM_MOUSELEAVE>: Cancel help echo
Jason Rumney <jasonr@gnu.org>
parents:
41727
diff
changeset
|
4623 /* If we move outside the frame, then we're |
33ba14e9c09a
(w32_read_socket) <WM_MOUSELEAVE>: Cancel help echo
Jason Rumney <jasonr@gnu.org>
parents:
41727
diff
changeset
|
4624 certainly no longer on any text in the frame. */ |
33ba14e9c09a
(w32_read_socket) <WM_MOUSELEAVE>: Cancel help echo
Jason Rumney <jasonr@gnu.org>
parents:
41727
diff
changeset
|
4625 clear_mouse_face (dpyinfo); |
33ba14e9c09a
(w32_read_socket) <WM_MOUSELEAVE>: Cancel help echo
Jason Rumney <jasonr@gnu.org>
parents:
41727
diff
changeset
|
4626 dpyinfo->mouse_face_mouse_frame = 0; |
33ba14e9c09a
(w32_read_socket) <WM_MOUSELEAVE>: Cancel help echo
Jason Rumney <jasonr@gnu.org>
parents:
41727
diff
changeset
|
4627 } |
33ba14e9c09a
(w32_read_socket) <WM_MOUSELEAVE>: Cancel help echo
Jason Rumney <jasonr@gnu.org>
parents:
41727
diff
changeset
|
4628 |
33ba14e9c09a
(w32_read_socket) <WM_MOUSELEAVE>: Cancel help echo
Jason Rumney <jasonr@gnu.org>
parents:
41727
diff
changeset
|
4629 /* Generate a nil HELP_EVENT to cancel a help-echo. |
33ba14e9c09a
(w32_read_socket) <WM_MOUSELEAVE>: Cancel help echo
Jason Rumney <jasonr@gnu.org>
parents:
41727
diff
changeset
|
4630 Do it only if there's something to cancel. |
33ba14e9c09a
(w32_read_socket) <WM_MOUSELEAVE>: Cancel help echo
Jason Rumney <jasonr@gnu.org>
parents:
41727
diff
changeset
|
4631 Otherwise, the startup message is cleared when |
33ba14e9c09a
(w32_read_socket) <WM_MOUSELEAVE>: Cancel help echo
Jason Rumney <jasonr@gnu.org>
parents:
41727
diff
changeset
|
4632 the mouse leaves the frame. */ |
33ba14e9c09a
(w32_read_socket) <WM_MOUSELEAVE>: Cancel help echo
Jason Rumney <jasonr@gnu.org>
parents:
41727
diff
changeset
|
4633 if (any_help_event_p) |
54171
f6909a416c3f
(w32_read_socket): Remove bufp_r and numcharsp args.
Kim F. Storm <storm@cua.dk>
parents:
54126
diff
changeset
|
4634 do_help = -1; |
41731
33ba14e9c09a
(w32_read_socket) <WM_MOUSELEAVE>: Cancel help echo
Jason Rumney <jasonr@gnu.org>
parents:
41727
diff
changeset
|
4635 } |
33ba14e9c09a
(w32_read_socket) <WM_MOUSELEAVE>: Cancel help echo
Jason Rumney <jasonr@gnu.org>
parents:
41727
diff
changeset
|
4636 break; |
48218
01e253345507
(w32_draw_fringe_bitmap): Remove unused local variable window.
Juanma Barranquero <lekktu@gmail.com>
parents:
48025
diff
changeset
|
4637 |
19713
043ccce224fb
(SIF_*): Win95 macros defined for NT.
Geoff Voelker <voelker@cs.washington.edu>
parents:
18877
diff
changeset
|
4638 case WM_SETFOCUS: |
60948
03a8b8b9ebef
(x_focus_changed, w32_detect_focus_change): New functions.
Jason Rumney <jasonr@gnu.org>
parents:
59748
diff
changeset
|
4639 w32_detect_focus_change (dpyinfo, &msg, &inev); |
27402
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
4640 |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
4641 dpyinfo->grabbed = 0; |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
4642 check_visibility = 1; |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
4643 break; |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
4644 |
19713
043ccce224fb
(SIF_*): Win95 macros defined for NT.
Geoff Voelker <voelker@cs.washington.edu>
parents:
18877
diff
changeset
|
4645 case WM_KILLFOCUS: |
27402
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
4646 f = x_top_window_to_frame (dpyinfo, msg.msg.hwnd); |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
4647 |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
4648 if (f) |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
4649 { |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
4650 if (f == dpyinfo->w32_focus_event_frame) |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
4651 dpyinfo->w32_focus_event_frame = 0; |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
4652 |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
4653 if (f == dpyinfo->w32_focus_frame) |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
4654 x_new_focus_frame (dpyinfo, 0); |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
4655 |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
4656 if (f == dpyinfo->mouse_face_mouse_frame) |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
4657 { |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
4658 /* If we move outside the frame, then we're |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
4659 certainly no longer on any text in the frame. */ |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
4660 clear_mouse_face (dpyinfo); |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
4661 dpyinfo->mouse_face_mouse_frame = 0; |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
4662 } |
29321
8e2be36bb1c6
Format and doc changes to bring closer to xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
28369
diff
changeset
|
4663 |
27402
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
4664 /* Generate a nil HELP_EVENT to cancel a help-echo. |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
4665 Do it only if there's something to cancel. |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
4666 Otherwise, the startup message is cleared when |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
4667 the mouse leaves the frame. */ |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
4668 if (any_help_event_p) |
54171
f6909a416c3f
(w32_read_socket): Remove bufp_r and numcharsp args.
Kim F. Storm <storm@cua.dk>
parents:
54126
diff
changeset
|
4669 do_help = -1; |
27402
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
4670 } |
19713
043ccce224fb
(SIF_*): Win95 macros defined for NT.
Geoff Voelker <voelker@cs.washington.edu>
parents:
18877
diff
changeset
|
4671 |
24752
80c46fd667da
(w32_read_socket): Reset the grabbed flag when a frame gains or
Andrew Innes <andrewi@gnu.org>
parents:
24733
diff
changeset
|
4672 dpyinfo->grabbed = 0; |
19713
043ccce224fb
(SIF_*): Win95 macros defined for NT.
Geoff Voelker <voelker@cs.washington.edu>
parents:
18877
diff
changeset
|
4673 check_visibility = 1; |
13434 | 4674 break; |
19713
043ccce224fb
(SIF_*): Win95 macros defined for NT.
Geoff Voelker <voelker@cs.washington.edu>
parents:
18877
diff
changeset
|
4675 |
13434 | 4676 case WM_CLOSE: |
4677 f = x_window_to_frame (dpyinfo, msg.msg.hwnd); | |
48218
01e253345507
(w32_draw_fringe_bitmap): Remove unused local variable window.
Juanma Barranquero <lekktu@gmail.com>
parents:
48025
diff
changeset
|
4678 |
13434 | 4679 if (f) |
4680 { | |
54171
f6909a416c3f
(w32_read_socket): Remove bufp_r and numcharsp args.
Kim F. Storm <storm@cua.dk>
parents:
54126
diff
changeset
|
4681 inev.kind = DELETE_WINDOW_EVENT; |
f6909a416c3f
(w32_read_socket): Remove bufp_r and numcharsp args.
Kim F. Storm <storm@cua.dk>
parents:
54126
diff
changeset
|
4682 XSETFRAME (inev.frame_or_window, f); |
13434 | 4683 } |
19713
043ccce224fb
(SIF_*): Win95 macros defined for NT.
Geoff Voelker <voelker@cs.washington.edu>
parents:
18877
diff
changeset
|
4684 break; |
043ccce224fb
(SIF_*): Win95 macros defined for NT.
Geoff Voelker <voelker@cs.washington.edu>
parents:
18877
diff
changeset
|
4685 |
043ccce224fb
(SIF_*): Win95 macros defined for NT.
Geoff Voelker <voelker@cs.washington.edu>
parents:
18877
diff
changeset
|
4686 case WM_INITMENU: |
043ccce224fb
(SIF_*): Win95 macros defined for NT.
Geoff Voelker <voelker@cs.washington.edu>
parents:
18877
diff
changeset
|
4687 f = x_window_to_frame (dpyinfo, msg.msg.hwnd); |
48218
01e253345507
(w32_draw_fringe_bitmap): Remove unused local variable window.
Juanma Barranquero <lekktu@gmail.com>
parents:
48025
diff
changeset
|
4688 |
19713
043ccce224fb
(SIF_*): Win95 macros defined for NT.
Geoff Voelker <voelker@cs.washington.edu>
parents:
18877
diff
changeset
|
4689 if (f) |
043ccce224fb
(SIF_*): Win95 macros defined for NT.
Geoff Voelker <voelker@cs.washington.edu>
parents:
18877
diff
changeset
|
4690 { |
54171
f6909a416c3f
(w32_read_socket): Remove bufp_r and numcharsp args.
Kim F. Storm <storm@cua.dk>
parents:
54126
diff
changeset
|
4691 inev.kind = MENU_BAR_ACTIVATE_EVENT; |
f6909a416c3f
(w32_read_socket): Remove bufp_r and numcharsp args.
Kim F. Storm <storm@cua.dk>
parents:
54126
diff
changeset
|
4692 XSETFRAME (inev.frame_or_window, f); |
19713
043ccce224fb
(SIF_*): Win95 macros defined for NT.
Geoff Voelker <voelker@cs.washington.edu>
parents:
18877
diff
changeset
|
4693 } |
13434 | 4694 break; |
19713
043ccce224fb
(SIF_*): Win95 macros defined for NT.
Geoff Voelker <voelker@cs.washington.edu>
parents:
18877
diff
changeset
|
4695 |
13434 | 4696 case WM_COMMAND: |
4697 f = x_window_to_frame (dpyinfo, msg.msg.hwnd); | |
21740
92c501ecca49
(w32_read_socket): Don't misinterpret WM_PAINT message
Geoff Voelker <voelker@cs.washington.edu>
parents:
21614
diff
changeset
|
4698 |
13434 | 4699 if (f) |
4700 { | |
23677
70999481c915
(convert_to_key_event): Removed.
Geoff Voelker <voelker@cs.washington.edu>
parents:
23639
diff
changeset
|
4701 extern void menubar_selection_callback |
70999481c915
(convert_to_key_event): Removed.
Geoff Voelker <voelker@cs.washington.edu>
parents:
23639
diff
changeset
|
4702 (FRAME_PTR f, void * client_data); |
21740
92c501ecca49
(w32_read_socket): Don't misinterpret WM_PAINT message
Geoff Voelker <voelker@cs.washington.edu>
parents:
21614
diff
changeset
|
4703 menubar_selection_callback (f, (void *)msg.msg.wParam); |
13434 | 4704 } |
19713
043ccce224fb
(SIF_*): Win95 macros defined for NT.
Geoff Voelker <voelker@cs.washington.edu>
parents:
18877
diff
changeset
|
4705 |
043ccce224fb
(SIF_*): Win95 macros defined for NT.
Geoff Voelker <voelker@cs.washington.edu>
parents:
18877
diff
changeset
|
4706 check_visibility = 1; |
043ccce224fb
(SIF_*): Win95 macros defined for NT.
Geoff Voelker <voelker@cs.washington.edu>
parents:
18877
diff
changeset
|
4707 break; |
043ccce224fb
(SIF_*): Win95 macros defined for NT.
Geoff Voelker <voelker@cs.washington.edu>
parents:
18877
diff
changeset
|
4708 |
043ccce224fb
(SIF_*): Win95 macros defined for NT.
Geoff Voelker <voelker@cs.washington.edu>
parents:
18877
diff
changeset
|
4709 case WM_DISPLAYCHANGE: |
043ccce224fb
(SIF_*): Win95 macros defined for NT.
Geoff Voelker <voelker@cs.washington.edu>
parents:
18877
diff
changeset
|
4710 f = x_window_to_frame (dpyinfo, msg.msg.hwnd); |
043ccce224fb
(SIF_*): Win95 macros defined for NT.
Geoff Voelker <voelker@cs.washington.edu>
parents:
18877
diff
changeset
|
4711 |
48218
01e253345507
(w32_draw_fringe_bitmap): Remove unused local variable window.
Juanma Barranquero <lekktu@gmail.com>
parents:
48025
diff
changeset
|
4712 if (f) |
19713
043ccce224fb
(SIF_*): Win95 macros defined for NT.
Geoff Voelker <voelker@cs.washington.edu>
parents:
18877
diff
changeset
|
4713 { |
043ccce224fb
(SIF_*): Win95 macros defined for NT.
Geoff Voelker <voelker@cs.washington.edu>
parents:
18877
diff
changeset
|
4714 dpyinfo->width = (short) LOWORD (msg.msg.lParam); |
043ccce224fb
(SIF_*): Win95 macros defined for NT.
Geoff Voelker <voelker@cs.washington.edu>
parents:
18877
diff
changeset
|
4715 dpyinfo->height = (short) HIWORD (msg.msg.lParam); |
043ccce224fb
(SIF_*): Win95 macros defined for NT.
Geoff Voelker <voelker@cs.washington.edu>
parents:
18877
diff
changeset
|
4716 dpyinfo->n_cbits = msg.msg.wParam; |
043ccce224fb
(SIF_*): Win95 macros defined for NT.
Geoff Voelker <voelker@cs.washington.edu>
parents:
18877
diff
changeset
|
4717 DebPrint (("display change: %d %d\n", dpyinfo->width, |
043ccce224fb
(SIF_*): Win95 macros defined for NT.
Geoff Voelker <voelker@cs.washington.edu>
parents:
18877
diff
changeset
|
4718 dpyinfo->height)); |
043ccce224fb
(SIF_*): Win95 macros defined for NT.
Geoff Voelker <voelker@cs.washington.edu>
parents:
18877
diff
changeset
|
4719 } |
48218
01e253345507
(w32_draw_fringe_bitmap): Remove unused local variable window.
Juanma Barranquero <lekktu@gmail.com>
parents:
48025
diff
changeset
|
4720 |
19713
043ccce224fb
(SIF_*): Win95 macros defined for NT.
Geoff Voelker <voelker@cs.washington.edu>
parents:
18877
diff
changeset
|
4721 check_visibility = 1; |
13434 | 4722 break; |
21875
16414f4d07e7
(msh_mousewheel): Declare.
Geoff Voelker <voelker@cs.washington.edu>
parents:
21831
diff
changeset
|
4723 |
16414f4d07e7
(msh_mousewheel): Declare.
Geoff Voelker <voelker@cs.washington.edu>
parents:
21831
diff
changeset
|
4724 default: |
51270
827c306f0515
Add missing code from previous patch by David Ponce.
Juanma Barranquero <lekktu@gmail.com>
parents:
51269
diff
changeset
|
4725 /* Check for messages registered at runtime. */ |
21875
16414f4d07e7
(msh_mousewheel): Declare.
Geoff Voelker <voelker@cs.washington.edu>
parents:
21831
diff
changeset
|
4726 if (msg.msg.message == msh_mousewheel) |
16414f4d07e7
(msh_mousewheel): Declare.
Geoff Voelker <voelker@cs.washington.edu>
parents:
21831
diff
changeset
|
4727 { |
51270
827c306f0515
Add missing code from previous patch by David Ponce.
Juanma Barranquero <lekktu@gmail.com>
parents:
51269
diff
changeset
|
4728 /* Forward MSH_MOUSEWHEEL as WM_MOUSEWHEEL. */ |
52349
c631ebcc0df9
(w32_read_socket): Fix WM_MOUSEWHEEL assignment.
Jason Rumney <jasonr@gnu.org>
parents:
51382
diff
changeset
|
4729 msg.msg.message = WM_MOUSEWHEEL; |
51270
827c306f0515
Add missing code from previous patch by David Ponce.
Juanma Barranquero <lekktu@gmail.com>
parents:
51269
diff
changeset
|
4730 prepend_msg (&msg); |
21875
16414f4d07e7
(msh_mousewheel): Declare.
Geoff Voelker <voelker@cs.washington.edu>
parents:
21831
diff
changeset
|
4731 } |
16414f4d07e7
(msh_mousewheel): Declare.
Geoff Voelker <voelker@cs.washington.edu>
parents:
21831
diff
changeset
|
4732 break; |
13434 | 4733 } |
54171
f6909a416c3f
(w32_read_socket): Remove bufp_r and numcharsp args.
Kim F. Storm <storm@cua.dk>
parents:
54126
diff
changeset
|
4734 |
f6909a416c3f
(w32_read_socket): Remove bufp_r and numcharsp args.
Kim F. Storm <storm@cua.dk>
parents:
54126
diff
changeset
|
4735 if (inev.kind != NO_EVENT) |
f6909a416c3f
(w32_read_socket): Remove bufp_r and numcharsp args.
Kim F. Storm <storm@cua.dk>
parents:
54126
diff
changeset
|
4736 { |
f6909a416c3f
(w32_read_socket): Remove bufp_r and numcharsp args.
Kim F. Storm <storm@cua.dk>
parents:
54126
diff
changeset
|
4737 kbd_buffer_store_event_hold (&inev, hold_quit); |
f6909a416c3f
(w32_read_socket): Remove bufp_r and numcharsp args.
Kim F. Storm <storm@cua.dk>
parents:
54126
diff
changeset
|
4738 count++; |
f6909a416c3f
(w32_read_socket): Remove bufp_r and numcharsp args.
Kim F. Storm <storm@cua.dk>
parents:
54126
diff
changeset
|
4739 } |
f6909a416c3f
(w32_read_socket): Remove bufp_r and numcharsp args.
Kim F. Storm <storm@cua.dk>
parents:
54126
diff
changeset
|
4740 |
f6909a416c3f
(w32_read_socket): Remove bufp_r and numcharsp args.
Kim F. Storm <storm@cua.dk>
parents:
54126
diff
changeset
|
4741 if (do_help |
f6909a416c3f
(w32_read_socket): Remove bufp_r and numcharsp args.
Kim F. Storm <storm@cua.dk>
parents:
54126
diff
changeset
|
4742 && !(hold_quit && hold_quit->kind != NO_EVENT)) |
f6909a416c3f
(w32_read_socket): Remove bufp_r and numcharsp args.
Kim F. Storm <storm@cua.dk>
parents:
54126
diff
changeset
|
4743 { |
f6909a416c3f
(w32_read_socket): Remove bufp_r and numcharsp args.
Kim F. Storm <storm@cua.dk>
parents:
54126
diff
changeset
|
4744 Lisp_Object frame; |
f6909a416c3f
(w32_read_socket): Remove bufp_r and numcharsp args.
Kim F. Storm <storm@cua.dk>
parents:
54126
diff
changeset
|
4745 |
f6909a416c3f
(w32_read_socket): Remove bufp_r and numcharsp args.
Kim F. Storm <storm@cua.dk>
parents:
54126
diff
changeset
|
4746 if (f) |
f6909a416c3f
(w32_read_socket): Remove bufp_r and numcharsp args.
Kim F. Storm <storm@cua.dk>
parents:
54126
diff
changeset
|
4747 XSETFRAME (frame, f); |
f6909a416c3f
(w32_read_socket): Remove bufp_r and numcharsp args.
Kim F. Storm <storm@cua.dk>
parents:
54126
diff
changeset
|
4748 else |
f6909a416c3f
(w32_read_socket): Remove bufp_r and numcharsp args.
Kim F. Storm <storm@cua.dk>
parents:
54126
diff
changeset
|
4749 frame = Qnil; |
f6909a416c3f
(w32_read_socket): Remove bufp_r and numcharsp args.
Kim F. Storm <storm@cua.dk>
parents:
54126
diff
changeset
|
4750 |
f6909a416c3f
(w32_read_socket): Remove bufp_r and numcharsp args.
Kim F. Storm <storm@cua.dk>
parents:
54126
diff
changeset
|
4751 if (do_help > 0) |
f6909a416c3f
(w32_read_socket): Remove bufp_r and numcharsp args.
Kim F. Storm <storm@cua.dk>
parents:
54126
diff
changeset
|
4752 { |
55646
358a5c0b4571
(w32_num_mouse_buttons): Rename from Vw32_num_mouse_buttons and make
Jason Rumney <jasonr@gnu.org>
parents:
55286
diff
changeset
|
4753 if (NILP (help_echo_string)) |
54171
f6909a416c3f
(w32_read_socket): Remove bufp_r and numcharsp args.
Kim F. Storm <storm@cua.dk>
parents:
54126
diff
changeset
|
4754 { |
f6909a416c3f
(w32_read_socket): Remove bufp_r and numcharsp args.
Kim F. Storm <storm@cua.dk>
parents:
54126
diff
changeset
|
4755 help_echo_object = help_echo_window = Qnil; |
f6909a416c3f
(w32_read_socket): Remove bufp_r and numcharsp args.
Kim F. Storm <storm@cua.dk>
parents:
54126
diff
changeset
|
4756 help_echo_pos = -1; |
f6909a416c3f
(w32_read_socket): Remove bufp_r and numcharsp args.
Kim F. Storm <storm@cua.dk>
parents:
54126
diff
changeset
|
4757 } |
54731
4031909001d5
(w32_read_socket): Set mouse_face_hidden after clearing highlight.
Kim F. Storm <storm@cua.dk>
parents:
54225
diff
changeset
|
4758 |
54171
f6909a416c3f
(w32_read_socket): Remove bufp_r and numcharsp args.
Kim F. Storm <storm@cua.dk>
parents:
54126
diff
changeset
|
4759 any_help_event_p = 1; |
f6909a416c3f
(w32_read_socket): Remove bufp_r and numcharsp args.
Kim F. Storm <storm@cua.dk>
parents:
54126
diff
changeset
|
4760 gen_help_event (help_echo_string, frame, help_echo_window, |
f6909a416c3f
(w32_read_socket): Remove bufp_r and numcharsp args.
Kim F. Storm <storm@cua.dk>
parents:
54126
diff
changeset
|
4761 help_echo_object, help_echo_pos); |
f6909a416c3f
(w32_read_socket): Remove bufp_r and numcharsp args.
Kim F. Storm <storm@cua.dk>
parents:
54126
diff
changeset
|
4762 } |
f6909a416c3f
(w32_read_socket): Remove bufp_r and numcharsp args.
Kim F. Storm <storm@cua.dk>
parents:
54126
diff
changeset
|
4763 else |
f6909a416c3f
(w32_read_socket): Remove bufp_r and numcharsp args.
Kim F. Storm <storm@cua.dk>
parents:
54126
diff
changeset
|
4764 { |
f6909a416c3f
(w32_read_socket): Remove bufp_r and numcharsp args.
Kim F. Storm <storm@cua.dk>
parents:
54126
diff
changeset
|
4765 help_echo_string = Qnil; |
f6909a416c3f
(w32_read_socket): Remove bufp_r and numcharsp args.
Kim F. Storm <storm@cua.dk>
parents:
54126
diff
changeset
|
4766 gen_help_event (Qnil, frame, Qnil, Qnil, 0); |
f6909a416c3f
(w32_read_socket): Remove bufp_r and numcharsp args.
Kim F. Storm <storm@cua.dk>
parents:
54126
diff
changeset
|
4767 } |
f6909a416c3f
(w32_read_socket): Remove bufp_r and numcharsp args.
Kim F. Storm <storm@cua.dk>
parents:
54126
diff
changeset
|
4768 count++; |
f6909a416c3f
(w32_read_socket): Remove bufp_r and numcharsp args.
Kim F. Storm <storm@cua.dk>
parents:
54126
diff
changeset
|
4769 } |
13434 | 4770 } |
4771 | |
4772 /* If the focus was just given to an autoraising frame, | |
4773 raise it now. */ | |
4774 /* ??? This ought to be able to handle more than one such frame. */ | |
4775 if (pending_autoraise_frame) | |
4776 { | |
4777 x_raise_frame (pending_autoraise_frame); | |
4778 pending_autoraise_frame = 0; | |
4779 } | |
4780 | |
19713
043ccce224fb
(SIF_*): Win95 macros defined for NT.
Geoff Voelker <voelker@cs.washington.edu>
parents:
18877
diff
changeset
|
4781 /* Check which frames are still visisble, if we have enqueued any user |
043ccce224fb
(SIF_*): Win95 macros defined for NT.
Geoff Voelker <voelker@cs.washington.edu>
parents:
18877
diff
changeset
|
4782 events or been notified of events that may affect visibility. We |
043ccce224fb
(SIF_*): Win95 macros defined for NT.
Geoff Voelker <voelker@cs.washington.edu>
parents:
18877
diff
changeset
|
4783 do this here because there doesn't seem to be any direct |
043ccce224fb
(SIF_*): Win95 macros defined for NT.
Geoff Voelker <voelker@cs.washington.edu>
parents:
18877
diff
changeset
|
4784 notification from Windows that the visibility of a window has |
043ccce224fb
(SIF_*): Win95 macros defined for NT.
Geoff Voelker <voelker@cs.washington.edu>
parents:
18877
diff
changeset
|
4785 changed (at least, not in all cases). */ |
043ccce224fb
(SIF_*): Win95 macros defined for NT.
Geoff Voelker <voelker@cs.washington.edu>
parents:
18877
diff
changeset
|
4786 if (count > 0 || check_visibility) |
043ccce224fb
(SIF_*): Win95 macros defined for NT.
Geoff Voelker <voelker@cs.washington.edu>
parents:
18877
diff
changeset
|
4787 { |
043ccce224fb
(SIF_*): Win95 macros defined for NT.
Geoff Voelker <voelker@cs.washington.edu>
parents:
18877
diff
changeset
|
4788 Lisp_Object tail, frame; |
043ccce224fb
(SIF_*): Win95 macros defined for NT.
Geoff Voelker <voelker@cs.washington.edu>
parents:
18877
diff
changeset
|
4789 |
043ccce224fb
(SIF_*): Win95 macros defined for NT.
Geoff Voelker <voelker@cs.washington.edu>
parents:
18877
diff
changeset
|
4790 FOR_EACH_FRAME (tail, frame) |
51258
a35e5665c742
(construct_mouse_wheel): Result is a MOUSE_CLICK_EVENT. Scrolling down/up the
Juanma Barranquero <lekktu@gmail.com>
parents:
51204
diff
changeset
|
4791 { |
a35e5665c742
(construct_mouse_wheel): Result is a MOUSE_CLICK_EVENT. Scrolling down/up the
Juanma Barranquero <lekktu@gmail.com>
parents:
51204
diff
changeset
|
4792 FRAME_PTR f = XFRAME (frame); |
a35e5665c742
(construct_mouse_wheel): Result is a MOUSE_CLICK_EVENT. Scrolling down/up the
Juanma Barranquero <lekktu@gmail.com>
parents:
51204
diff
changeset
|
4793 /* The tooltip has been drawn already. Avoid the |
a35e5665c742
(construct_mouse_wheel): Result is a MOUSE_CLICK_EVENT. Scrolling down/up the
Juanma Barranquero <lekktu@gmail.com>
parents:
51204
diff
changeset
|
4794 SET_FRAME_GARBAGED below. */ |
a35e5665c742
(construct_mouse_wheel): Result is a MOUSE_CLICK_EVENT. Scrolling down/up the
Juanma Barranquero <lekktu@gmail.com>
parents:
51204
diff
changeset
|
4795 if (EQ (frame, tip_frame)) |
a35e5665c742
(construct_mouse_wheel): Result is a MOUSE_CLICK_EVENT. Scrolling down/up the
Juanma Barranquero <lekktu@gmail.com>
parents:
51204
diff
changeset
|
4796 continue; |
a35e5665c742
(construct_mouse_wheel): Result is a MOUSE_CLICK_EVENT. Scrolling down/up the
Juanma Barranquero <lekktu@gmail.com>
parents:
51204
diff
changeset
|
4797 |
a35e5665c742
(construct_mouse_wheel): Result is a MOUSE_CLICK_EVENT. Scrolling down/up the
Juanma Barranquero <lekktu@gmail.com>
parents:
51204
diff
changeset
|
4798 /* Check "visible" frames and mark each as obscured or not. |
a35e5665c742
(construct_mouse_wheel): Result is a MOUSE_CLICK_EVENT. Scrolling down/up the
Juanma Barranquero <lekktu@gmail.com>
parents:
51204
diff
changeset
|
4799 Note that async_visible is nonzero for unobscured and |
a35e5665c742
(construct_mouse_wheel): Result is a MOUSE_CLICK_EVENT. Scrolling down/up the
Juanma Barranquero <lekktu@gmail.com>
parents:
51204
diff
changeset
|
4800 obscured frames, but zero for hidden and iconified frames. */ |
a35e5665c742
(construct_mouse_wheel): Result is a MOUSE_CLICK_EVENT. Scrolling down/up the
Juanma Barranquero <lekktu@gmail.com>
parents:
51204
diff
changeset
|
4801 if (FRAME_W32_P (f) && f->async_visible) |
a35e5665c742
(construct_mouse_wheel): Result is a MOUSE_CLICK_EVENT. Scrolling down/up the
Juanma Barranquero <lekktu@gmail.com>
parents:
51204
diff
changeset
|
4802 { |
a35e5665c742
(construct_mouse_wheel): Result is a MOUSE_CLICK_EVENT. Scrolling down/up the
Juanma Barranquero <lekktu@gmail.com>
parents:
51204
diff
changeset
|
4803 RECT clipbox; |
a35e5665c742
(construct_mouse_wheel): Result is a MOUSE_CLICK_EVENT. Scrolling down/up the
Juanma Barranquero <lekktu@gmail.com>
parents:
51204
diff
changeset
|
4804 HDC hdc; |
a35e5665c742
(construct_mouse_wheel): Result is a MOUSE_CLICK_EVENT. Scrolling down/up the
Juanma Barranquero <lekktu@gmail.com>
parents:
51204
diff
changeset
|
4805 |
a35e5665c742
(construct_mouse_wheel): Result is a MOUSE_CLICK_EVENT. Scrolling down/up the
Juanma Barranquero <lekktu@gmail.com>
parents:
51204
diff
changeset
|
4806 enter_crit (); |
a35e5665c742
(construct_mouse_wheel): Result is a MOUSE_CLICK_EVENT. Scrolling down/up the
Juanma Barranquero <lekktu@gmail.com>
parents:
51204
diff
changeset
|
4807 /* Query clipping rectangle for the entire window area |
a35e5665c742
(construct_mouse_wheel): Result is a MOUSE_CLICK_EVENT. Scrolling down/up the
Juanma Barranquero <lekktu@gmail.com>
parents:
51204
diff
changeset
|
4808 (GetWindowDC), not just the client portion (GetDC). |
a35e5665c742
(construct_mouse_wheel): Result is a MOUSE_CLICK_EVENT. Scrolling down/up the
Juanma Barranquero <lekktu@gmail.com>
parents:
51204
diff
changeset
|
4809 Otherwise, the scrollbars and menubar aren't counted as |
a35e5665c742
(construct_mouse_wheel): Result is a MOUSE_CLICK_EVENT. Scrolling down/up the
Juanma Barranquero <lekktu@gmail.com>
parents:
51204
diff
changeset
|
4810 part of the visible area of the frame, and we may think |
a35e5665c742
(construct_mouse_wheel): Result is a MOUSE_CLICK_EVENT. Scrolling down/up the
Juanma Barranquero <lekktu@gmail.com>
parents:
51204
diff
changeset
|
4811 the frame is obscured when really a scrollbar is still |
a35e5665c742
(construct_mouse_wheel): Result is a MOUSE_CLICK_EVENT. Scrolling down/up the
Juanma Barranquero <lekktu@gmail.com>
parents:
51204
diff
changeset
|
4812 visible and gets WM_PAINT messages above. */ |
a35e5665c742
(construct_mouse_wheel): Result is a MOUSE_CLICK_EVENT. Scrolling down/up the
Juanma Barranquero <lekktu@gmail.com>
parents:
51204
diff
changeset
|
4813 hdc = GetWindowDC (FRAME_W32_WINDOW (f)); |
a35e5665c742
(construct_mouse_wheel): Result is a MOUSE_CLICK_EVENT. Scrolling down/up the
Juanma Barranquero <lekktu@gmail.com>
parents:
51204
diff
changeset
|
4814 GetClipBox (hdc, &clipbox); |
a35e5665c742
(construct_mouse_wheel): Result is a MOUSE_CLICK_EVENT. Scrolling down/up the
Juanma Barranquero <lekktu@gmail.com>
parents:
51204
diff
changeset
|
4815 ReleaseDC (FRAME_W32_WINDOW (f), hdc); |
a35e5665c742
(construct_mouse_wheel): Result is a MOUSE_CLICK_EVENT. Scrolling down/up the
Juanma Barranquero <lekktu@gmail.com>
parents:
51204
diff
changeset
|
4816 leave_crit (); |
a35e5665c742
(construct_mouse_wheel): Result is a MOUSE_CLICK_EVENT. Scrolling down/up the
Juanma Barranquero <lekktu@gmail.com>
parents:
51204
diff
changeset
|
4817 |
a35e5665c742
(construct_mouse_wheel): Result is a MOUSE_CLICK_EVENT. Scrolling down/up the
Juanma Barranquero <lekktu@gmail.com>
parents:
51204
diff
changeset
|
4818 if (clipbox.right == clipbox.left |
a35e5665c742
(construct_mouse_wheel): Result is a MOUSE_CLICK_EVENT. Scrolling down/up the
Juanma Barranquero <lekktu@gmail.com>
parents:
51204
diff
changeset
|
4819 || clipbox.bottom == clipbox.top) |
a35e5665c742
(construct_mouse_wheel): Result is a MOUSE_CLICK_EVENT. Scrolling down/up the
Juanma Barranquero <lekktu@gmail.com>
parents:
51204
diff
changeset
|
4820 { |
a35e5665c742
(construct_mouse_wheel): Result is a MOUSE_CLICK_EVENT. Scrolling down/up the
Juanma Barranquero <lekktu@gmail.com>
parents:
51204
diff
changeset
|
4821 /* Frame has become completely obscured so mark as |
a35e5665c742
(construct_mouse_wheel): Result is a MOUSE_CLICK_EVENT. Scrolling down/up the
Juanma Barranquero <lekktu@gmail.com>
parents:
51204
diff
changeset
|
4822 such (we do this by setting async_visible to 2 so |
a35e5665c742
(construct_mouse_wheel): Result is a MOUSE_CLICK_EVENT. Scrolling down/up the
Juanma Barranquero <lekktu@gmail.com>
parents:
51204
diff
changeset
|
4823 that FRAME_VISIBLE_P is still true, but redisplay |
a35e5665c742
(construct_mouse_wheel): Result is a MOUSE_CLICK_EVENT. Scrolling down/up the
Juanma Barranquero <lekktu@gmail.com>
parents:
51204
diff
changeset
|
4824 will skip it). */ |
a35e5665c742
(construct_mouse_wheel): Result is a MOUSE_CLICK_EVENT. Scrolling down/up the
Juanma Barranquero <lekktu@gmail.com>
parents:
51204
diff
changeset
|
4825 f->async_visible = 2; |
a35e5665c742
(construct_mouse_wheel): Result is a MOUSE_CLICK_EVENT. Scrolling down/up the
Juanma Barranquero <lekktu@gmail.com>
parents:
51204
diff
changeset
|
4826 |
a35e5665c742
(construct_mouse_wheel): Result is a MOUSE_CLICK_EVENT. Scrolling down/up the
Juanma Barranquero <lekktu@gmail.com>
parents:
51204
diff
changeset
|
4827 if (!FRAME_OBSCURED_P (f)) |
a35e5665c742
(construct_mouse_wheel): Result is a MOUSE_CLICK_EVENT. Scrolling down/up the
Juanma Barranquero <lekktu@gmail.com>
parents:
51204
diff
changeset
|
4828 { |
a35e5665c742
(construct_mouse_wheel): Result is a MOUSE_CLICK_EVENT. Scrolling down/up the
Juanma Barranquero <lekktu@gmail.com>
parents:
51204
diff
changeset
|
4829 DebPrint (("frame %p (%s) obscured\n", f, |
a35e5665c742
(construct_mouse_wheel): Result is a MOUSE_CLICK_EVENT. Scrolling down/up the
Juanma Barranquero <lekktu@gmail.com>
parents:
51204
diff
changeset
|
4830 SDATA (f->name))); |
a35e5665c742
(construct_mouse_wheel): Result is a MOUSE_CLICK_EVENT. Scrolling down/up the
Juanma Barranquero <lekktu@gmail.com>
parents:
51204
diff
changeset
|
4831 } |
a35e5665c742
(construct_mouse_wheel): Result is a MOUSE_CLICK_EVENT. Scrolling down/up the
Juanma Barranquero <lekktu@gmail.com>
parents:
51204
diff
changeset
|
4832 } |
a35e5665c742
(construct_mouse_wheel): Result is a MOUSE_CLICK_EVENT. Scrolling down/up the
Juanma Barranquero <lekktu@gmail.com>
parents:
51204
diff
changeset
|
4833 else |
a35e5665c742
(construct_mouse_wheel): Result is a MOUSE_CLICK_EVENT. Scrolling down/up the
Juanma Barranquero <lekktu@gmail.com>
parents:
51204
diff
changeset
|
4834 { |
a35e5665c742
(construct_mouse_wheel): Result is a MOUSE_CLICK_EVENT. Scrolling down/up the
Juanma Barranquero <lekktu@gmail.com>
parents:
51204
diff
changeset
|
4835 /* Frame is not obscured, so mark it as such. */ |
a35e5665c742
(construct_mouse_wheel): Result is a MOUSE_CLICK_EVENT. Scrolling down/up the
Juanma Barranquero <lekktu@gmail.com>
parents:
51204
diff
changeset
|
4836 f->async_visible = 1; |
a35e5665c742
(construct_mouse_wheel): Result is a MOUSE_CLICK_EVENT. Scrolling down/up the
Juanma Barranquero <lekktu@gmail.com>
parents:
51204
diff
changeset
|
4837 |
a35e5665c742
(construct_mouse_wheel): Result is a MOUSE_CLICK_EVENT. Scrolling down/up the
Juanma Barranquero <lekktu@gmail.com>
parents:
51204
diff
changeset
|
4838 if (FRAME_OBSCURED_P (f)) |
a35e5665c742
(construct_mouse_wheel): Result is a MOUSE_CLICK_EVENT. Scrolling down/up the
Juanma Barranquero <lekktu@gmail.com>
parents:
51204
diff
changeset
|
4839 { |
a35e5665c742
(construct_mouse_wheel): Result is a MOUSE_CLICK_EVENT. Scrolling down/up the
Juanma Barranquero <lekktu@gmail.com>
parents:
51204
diff
changeset
|
4840 SET_FRAME_GARBAGED (f); |
a35e5665c742
(construct_mouse_wheel): Result is a MOUSE_CLICK_EVENT. Scrolling down/up the
Juanma Barranquero <lekktu@gmail.com>
parents:
51204
diff
changeset
|
4841 DebPrint (("obscured frame %p (%s) found to be visible\n", f, |
a35e5665c742
(construct_mouse_wheel): Result is a MOUSE_CLICK_EVENT. Scrolling down/up the
Juanma Barranquero <lekktu@gmail.com>
parents:
51204
diff
changeset
|
4842 SDATA (f->name))); |
a35e5665c742
(construct_mouse_wheel): Result is a MOUSE_CLICK_EVENT. Scrolling down/up the
Juanma Barranquero <lekktu@gmail.com>
parents:
51204
diff
changeset
|
4843 |
a35e5665c742
(construct_mouse_wheel): Result is a MOUSE_CLICK_EVENT. Scrolling down/up the
Juanma Barranquero <lekktu@gmail.com>
parents:
51204
diff
changeset
|
4844 /* Force a redisplay sooner or later. */ |
a35e5665c742
(construct_mouse_wheel): Result is a MOUSE_CLICK_EVENT. Scrolling down/up the
Juanma Barranquero <lekktu@gmail.com>
parents:
51204
diff
changeset
|
4845 record_asynch_buffer_change (); |
a35e5665c742
(construct_mouse_wheel): Result is a MOUSE_CLICK_EVENT. Scrolling down/up the
Juanma Barranquero <lekktu@gmail.com>
parents:
51204
diff
changeset
|
4846 } |
a35e5665c742
(construct_mouse_wheel): Result is a MOUSE_CLICK_EVENT. Scrolling down/up the
Juanma Barranquero <lekktu@gmail.com>
parents:
51204
diff
changeset
|
4847 } |
a35e5665c742
(construct_mouse_wheel): Result is a MOUSE_CLICK_EVENT. Scrolling down/up the
Juanma Barranquero <lekktu@gmail.com>
parents:
51204
diff
changeset
|
4848 } |
a35e5665c742
(construct_mouse_wheel): Result is a MOUSE_CLICK_EVENT. Scrolling down/up the
Juanma Barranquero <lekktu@gmail.com>
parents:
51204
diff
changeset
|
4849 } |
19713
043ccce224fb
(SIF_*): Win95 macros defined for NT.
Geoff Voelker <voelker@cs.washington.edu>
parents:
18877
diff
changeset
|
4850 } |
043ccce224fb
(SIF_*): Win95 macros defined for NT.
Geoff Voelker <voelker@cs.washington.edu>
parents:
18877
diff
changeset
|
4851 |
13434 | 4852 UNBLOCK_INPUT; |
4853 return count; | |
4854 } | |
27402
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
4855 |
29321
8e2be36bb1c6
Format and doc changes to bring closer to xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
28369
diff
changeset
|
4856 |
13434 | 4857 |
27402
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
4858 /*********************************************************************** |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
4859 Text Cursor |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
4860 ***********************************************************************/ |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
4861 |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
4862 /* Set clipping for output in glyph row ROW. W is the window in which |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
4863 we operate. GC is the graphics context to set clipping in. |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
4864 |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
4865 ROW may be a text row or, e.g., a mode line. Text rows must be |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
4866 clipped to the interior of the window dedicated to text display, |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
4867 mode lines must be clipped to the whole window. */ |
13434 | 4868 |
4869 static void | |
58402
d1d4d5846215
(w32_clip_to_row): Add area arg. Callers changed.
Kim F. Storm <storm@cua.dk>
parents:
57837
diff
changeset
|
4870 w32_clip_to_row (w, row, area, hdc) |
27402
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
4871 struct window *w; |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
4872 struct glyph_row *row; |
58402
d1d4d5846215
(w32_clip_to_row): Add area arg. Callers changed.
Kim F. Storm <storm@cua.dk>
parents:
57837
diff
changeset
|
4873 int area; |
27402
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
4874 HDC hdc; |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
4875 { |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
4876 struct frame *f = XFRAME (WINDOW_FRAME (w)); |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
4877 RECT clip_rect; |
58402
d1d4d5846215
(w32_clip_to_row): Add area arg. Callers changed.
Kim F. Storm <storm@cua.dk>
parents:
57837
diff
changeset
|
4878 int window_x, window_y, window_width; |
d1d4d5846215
(w32_clip_to_row): Add area arg. Callers changed.
Kim F. Storm <storm@cua.dk>
parents:
57837
diff
changeset
|
4879 |
d1d4d5846215
(w32_clip_to_row): Add area arg. Callers changed.
Kim F. Storm <storm@cua.dk>
parents:
57837
diff
changeset
|
4880 window_box (w, area, &window_x, &window_y, &window_width, 0); |
d1d4d5846215
(w32_clip_to_row): Add area arg. Callers changed.
Kim F. Storm <storm@cua.dk>
parents:
57837
diff
changeset
|
4881 |
d1d4d5846215
(w32_clip_to_row): Add area arg. Callers changed.
Kim F. Storm <storm@cua.dk>
parents:
57837
diff
changeset
|
4882 clip_rect.left = window_x; |
27402
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
4883 clip_rect.top = WINDOW_TO_FRAME_PIXEL_Y (w, row->y); |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
4884 clip_rect.top = max (clip_rect.top, window_y); |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
4885 clip_rect.right = clip_rect.left + window_width; |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
4886 clip_rect.bottom = clip_rect.top + row->visible_height; |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
4887 |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
4888 w32_set_clip_rectangle (hdc, &clip_rect); |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
4889 } |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
4890 |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
4891 |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
4892 /* Draw a hollow box cursor on window W in glyph row ROW. */ |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
4893 |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
4894 static void |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
4895 x_draw_hollow_cursor (w, row) |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
4896 struct window *w; |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
4897 struct glyph_row *row; |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
4898 { |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
4899 struct frame *f = XFRAME (WINDOW_FRAME (w)); |
34779
94c3431a7fe2
(x_draw_hollow_cursor): Delay obtaining the frame's DC to avoid
Jason Rumney <jasonr@gnu.org>
parents:
34545
diff
changeset
|
4900 HDC hdc; |
13434 | 4901 RECT rect; |
71074
67dc3a0454b2
(x_draw_hollow_cursor): Fix last change.
Eli Zaretskii <eliz@gnu.org>
parents:
71073
diff
changeset
|
4902 int left, top, h; |
27402
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
4903 struct glyph *cursor_glyph; |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
4904 HBRUSH hb = CreateSolidBrush (f->output_data.w32->cursor_pixel); |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
4905 |
55286
b4bf3dd67827
(x_draw_hollow_cursor): Sync with xterm.c
Jason Rumney <jasonr@gnu.org>
parents:
55026
diff
changeset
|
4906 /* Get the glyph the cursor is on. If we can't tell because |
b4bf3dd67827
(x_draw_hollow_cursor): Sync with xterm.c
Jason Rumney <jasonr@gnu.org>
parents:
55026
diff
changeset
|
4907 the current matrix is invalid or such, give up. */ |
b4bf3dd67827
(x_draw_hollow_cursor): Sync with xterm.c
Jason Rumney <jasonr@gnu.org>
parents:
55026
diff
changeset
|
4908 cursor_glyph = get_phys_cursor_glyph (w); |
b4bf3dd67827
(x_draw_hollow_cursor): Sync with xterm.c
Jason Rumney <jasonr@gnu.org>
parents:
55026
diff
changeset
|
4909 if (cursor_glyph == NULL) |
b4bf3dd67827
(x_draw_hollow_cursor): Sync with xterm.c
Jason Rumney <jasonr@gnu.org>
parents:
55026
diff
changeset
|
4910 return; |
b4bf3dd67827
(x_draw_hollow_cursor): Sync with xterm.c
Jason Rumney <jasonr@gnu.org>
parents:
55026
diff
changeset
|
4911 |
59748
1df465faf1df
(x_draw_hollow_cursor): Use get_phys_cursor_geometry.
Kim F. Storm <storm@cua.dk>
parents:
59655
diff
changeset
|
4912 /* Compute frame-relative coordinates for phys cursor. */ |
71074
67dc3a0454b2
(x_draw_hollow_cursor): Fix last change.
Eli Zaretskii <eliz@gnu.org>
parents:
71073
diff
changeset
|
4913 get_phys_cursor_geometry (w, row, cursor_glyph, &left, &top, &h); |
67dc3a0454b2
(x_draw_hollow_cursor): Fix last change.
Eli Zaretskii <eliz@gnu.org>
parents:
71073
diff
changeset
|
4914 rect.left = left; |
67dc3a0454b2
(x_draw_hollow_cursor): Fix last change.
Eli Zaretskii <eliz@gnu.org>
parents:
71073
diff
changeset
|
4915 rect.top = top; |
55286
b4bf3dd67827
(x_draw_hollow_cursor): Sync with xterm.c
Jason Rumney <jasonr@gnu.org>
parents:
55026
diff
changeset
|
4916 rect.bottom = rect.top + h; |
59748
1df465faf1df
(x_draw_hollow_cursor): Use get_phys_cursor_geometry.
Kim F. Storm <storm@cua.dk>
parents:
59655
diff
changeset
|
4917 rect.right = rect.left + w->phys_cursor_width; |
1df465faf1df
(x_draw_hollow_cursor): Use get_phys_cursor_geometry.
Kim F. Storm <storm@cua.dk>
parents:
59655
diff
changeset
|
4918 |
34779
94c3431a7fe2
(x_draw_hollow_cursor): Delay obtaining the frame's DC to avoid
Jason Rumney <jasonr@gnu.org>
parents:
34545
diff
changeset
|
4919 hdc = get_frame_dc (f); |
49393
85246e86a2cd
* w32term.c (x_draw_glyph_string_foreground)
Jason Rumney <jasonr@gnu.org>
parents:
49371
diff
changeset
|
4920 /* Set clipping, draw the rectangle, and reset clipping again. */ |
58402
d1d4d5846215
(w32_clip_to_row): Add area arg. Callers changed.
Kim F. Storm <storm@cua.dk>
parents:
57837
diff
changeset
|
4921 w32_clip_to_row (w, row, TEXT_AREA, hdc); |
13434 | 4922 FrameRect (hdc, &rect, hb); |
4923 DeleteObject (hb); | |
49393
85246e86a2cd
* w32term.c (x_draw_glyph_string_foreground)
Jason Rumney <jasonr@gnu.org>
parents:
49371
diff
changeset
|
4924 w32_set_clip_rectangle (hdc, NULL); |
15151
ed6ddfc0d954
(Vwindow_system): Declared.
Geoff Voelker <voelker@cs.washington.edu>
parents:
15035
diff
changeset
|
4925 release_frame_dc (f, hdc); |
13434 | 4926 } |
4927 | |
27402
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
4928 |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
4929 /* Draw a bar cursor on window W in glyph row ROW. |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
4930 |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
4931 Implementation note: One would like to draw a bar cursor with an |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
4932 angle equal to the one given by the font property XA_ITALIC_ANGLE. |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
4933 Unfortunately, I didn't find a font yet that has this property set. |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
4934 --gerd. */ |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
4935 |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
4936 static void |
45467
583ed47de245
(x_draw_bar_cursor): New argument KIND; callers changed.
Jason Rumney <jasonr@gnu.org>
parents:
45196
diff
changeset
|
4937 x_draw_bar_cursor (w, row, width, kind) |
27402
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
4938 struct window *w; |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
4939 struct glyph_row *row; |
29321
8e2be36bb1c6
Format and doc changes to bring closer to xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
28369
diff
changeset
|
4940 int width; |
45467
583ed47de245
(x_draw_bar_cursor): New argument KIND; callers changed.
Jason Rumney <jasonr@gnu.org>
parents:
45196
diff
changeset
|
4941 enum text_cursor_kinds kind; |
27402
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
4942 { |
35384
e50a7f9ce65e
(x_produce_stretch_glyph): Only use Qspace when GLYPH_DEBUG is defined.
Jason Rumney <jasonr@gnu.org>
parents:
35287
diff
changeset
|
4943 struct frame *f = XFRAME (w->frame); |
e50a7f9ce65e
(x_produce_stretch_glyph): Only use Qspace when GLYPH_DEBUG is defined.
Jason Rumney <jasonr@gnu.org>
parents:
35287
diff
changeset
|
4944 struct glyph *cursor_glyph; |
e50a7f9ce65e
(x_produce_stretch_glyph): Only use Qspace when GLYPH_DEBUG is defined.
Jason Rumney <jasonr@gnu.org>
parents:
35287
diff
changeset
|
4945 int x; |
e50a7f9ce65e
(x_produce_stretch_glyph): Only use Qspace when GLYPH_DEBUG is defined.
Jason Rumney <jasonr@gnu.org>
parents:
35287
diff
changeset
|
4946 HDC hdc; |
e50a7f9ce65e
(x_produce_stretch_glyph): Only use Qspace when GLYPH_DEBUG is defined.
Jason Rumney <jasonr@gnu.org>
parents:
35287
diff
changeset
|
4947 |
e50a7f9ce65e
(x_produce_stretch_glyph): Only use Qspace when GLYPH_DEBUG is defined.
Jason Rumney <jasonr@gnu.org>
parents:
35287
diff
changeset
|
4948 /* If cursor is out of bounds, don't draw garbage. This can happen |
e50a7f9ce65e
(x_produce_stretch_glyph): Only use Qspace when GLYPH_DEBUG is defined.
Jason Rumney <jasonr@gnu.org>
parents:
35287
diff
changeset
|
4949 in mini-buffer windows when switching between echo area glyphs |
e50a7f9ce65e
(x_produce_stretch_glyph): Only use Qspace when GLYPH_DEBUG is defined.
Jason Rumney <jasonr@gnu.org>
parents:
35287
diff
changeset
|
4950 and mini-buffer. */ |
e50a7f9ce65e
(x_produce_stretch_glyph): Only use Qspace when GLYPH_DEBUG is defined.
Jason Rumney <jasonr@gnu.org>
parents:
35287
diff
changeset
|
4951 cursor_glyph = get_phys_cursor_glyph (w); |
e50a7f9ce65e
(x_produce_stretch_glyph): Only use Qspace when GLYPH_DEBUG is defined.
Jason Rumney <jasonr@gnu.org>
parents:
35287
diff
changeset
|
4952 if (cursor_glyph == NULL) |
e50a7f9ce65e
(x_produce_stretch_glyph): Only use Qspace when GLYPH_DEBUG is defined.
Jason Rumney <jasonr@gnu.org>
parents:
35287
diff
changeset
|
4953 return; |
e50a7f9ce65e
(x_produce_stretch_glyph): Only use Qspace when GLYPH_DEBUG is defined.
Jason Rumney <jasonr@gnu.org>
parents:
35287
diff
changeset
|
4954 |
e50a7f9ce65e
(x_produce_stretch_glyph): Only use Qspace when GLYPH_DEBUG is defined.
Jason Rumney <jasonr@gnu.org>
parents:
35287
diff
changeset
|
4955 /* If on an image, draw like a normal cursor. That's usually better |
e50a7f9ce65e
(x_produce_stretch_glyph): Only use Qspace when GLYPH_DEBUG is defined.
Jason Rumney <jasonr@gnu.org>
parents:
35287
diff
changeset
|
4956 visible than drawing a bar, esp. if the image is large so that |
e50a7f9ce65e
(x_produce_stretch_glyph): Only use Qspace when GLYPH_DEBUG is defined.
Jason Rumney <jasonr@gnu.org>
parents:
35287
diff
changeset
|
4957 the bar might not be in the window. */ |
e50a7f9ce65e
(x_produce_stretch_glyph): Only use Qspace when GLYPH_DEBUG is defined.
Jason Rumney <jasonr@gnu.org>
parents:
35287
diff
changeset
|
4958 if (cursor_glyph->type == IMAGE_GLYPH) |
e50a7f9ce65e
(x_produce_stretch_glyph): Only use Qspace when GLYPH_DEBUG is defined.
Jason Rumney <jasonr@gnu.org>
parents:
35287
diff
changeset
|
4959 { |
e50a7f9ce65e
(x_produce_stretch_glyph): Only use Qspace when GLYPH_DEBUG is defined.
Jason Rumney <jasonr@gnu.org>
parents:
35287
diff
changeset
|
4960 struct glyph_row *row; |
e50a7f9ce65e
(x_produce_stretch_glyph): Only use Qspace when GLYPH_DEBUG is defined.
Jason Rumney <jasonr@gnu.org>
parents:
35287
diff
changeset
|
4961 row = MATRIX_ROW (w->current_matrix, w->phys_cursor.vpos); |
50231
c8ea5e4b2129
* w32term.c: Remove consolidated defines and code.
Kim F. Storm <storm@cua.dk>
parents:
50163
diff
changeset
|
4962 draw_phys_cursor_glyph (w, row, DRAW_CURSOR); |
35384
e50a7f9ce65e
(x_produce_stretch_glyph): Only use Qspace when GLYPH_DEBUG is defined.
Jason Rumney <jasonr@gnu.org>
parents:
35287
diff
changeset
|
4963 } |
e50a7f9ce65e
(x_produce_stretch_glyph): Only use Qspace when GLYPH_DEBUG is defined.
Jason Rumney <jasonr@gnu.org>
parents:
35287
diff
changeset
|
4964 else |
e50a7f9ce65e
(x_produce_stretch_glyph): Only use Qspace when GLYPH_DEBUG is defined.
Jason Rumney <jasonr@gnu.org>
parents:
35287
diff
changeset
|
4965 { |
41249
2043af2d023f
(note_mouse_highlight): Fix type of variable `ignore'.
Jason Rumney <jasonr@gnu.org>
parents:
41125
diff
changeset
|
4966 COLORREF cursor_color = f->output_data.w32->cursor_pixel; |
2043af2d023f
(note_mouse_highlight): Fix type of variable `ignore'.
Jason Rumney <jasonr@gnu.org>
parents:
41125
diff
changeset
|
4967 struct face *face = FACE_FROM_ID (f, cursor_glyph->face_id); |
2043af2d023f
(note_mouse_highlight): Fix type of variable `ignore'.
Jason Rumney <jasonr@gnu.org>
parents:
41125
diff
changeset
|
4968 |
2043af2d023f
(note_mouse_highlight): Fix type of variable `ignore'.
Jason Rumney <jasonr@gnu.org>
parents:
41125
diff
changeset
|
4969 /* If the glyph's background equals the color we normally draw |
2043af2d023f
(note_mouse_highlight): Fix type of variable `ignore'.
Jason Rumney <jasonr@gnu.org>
parents:
41125
diff
changeset
|
4970 the bar cursor in, the bar cursor in its normal color is |
2043af2d023f
(note_mouse_highlight): Fix type of variable `ignore'.
Jason Rumney <jasonr@gnu.org>
parents:
41125
diff
changeset
|
4971 invisible. Use the glyph's foreground color instead in this |
2043af2d023f
(note_mouse_highlight): Fix type of variable `ignore'.
Jason Rumney <jasonr@gnu.org>
parents:
41125
diff
changeset
|
4972 case, on the assumption that the glyph's colors are chosen so |
2043af2d023f
(note_mouse_highlight): Fix type of variable `ignore'.
Jason Rumney <jasonr@gnu.org>
parents:
41125
diff
changeset
|
4973 that the glyph is legible. */ |
2043af2d023f
(note_mouse_highlight): Fix type of variable `ignore'.
Jason Rumney <jasonr@gnu.org>
parents:
41125
diff
changeset
|
4974 if (face->background == cursor_color) |
2043af2d023f
(note_mouse_highlight): Fix type of variable `ignore'.
Jason Rumney <jasonr@gnu.org>
parents:
41125
diff
changeset
|
4975 cursor_color = face->foreground; |
2043af2d023f
(note_mouse_highlight): Fix type of variable `ignore'.
Jason Rumney <jasonr@gnu.org>
parents:
41125
diff
changeset
|
4976 |
35384
e50a7f9ce65e
(x_produce_stretch_glyph): Only use Qspace when GLYPH_DEBUG is defined.
Jason Rumney <jasonr@gnu.org>
parents:
35287
diff
changeset
|
4977 x = WINDOW_TEXT_TO_FRAME_PIXEL_X (w, w->phys_cursor.x); |
49393
85246e86a2cd
* w32term.c (x_draw_glyph_string_foreground)
Jason Rumney <jasonr@gnu.org>
parents:
49371
diff
changeset
|
4978 |
85246e86a2cd
* w32term.c (x_draw_glyph_string_foreground)
Jason Rumney <jasonr@gnu.org>
parents:
49371
diff
changeset
|
4979 if (width < 0) |
85246e86a2cd
* w32term.c (x_draw_glyph_string_foreground)
Jason Rumney <jasonr@gnu.org>
parents:
49371
diff
changeset
|
4980 width = FRAME_CURSOR_WIDTH (f); |
85246e86a2cd
* w32term.c (x_draw_glyph_string_foreground)
Jason Rumney <jasonr@gnu.org>
parents:
49371
diff
changeset
|
4981 width = min (cursor_glyph->pixel_width, width); |
85246e86a2cd
* w32term.c (x_draw_glyph_string_foreground)
Jason Rumney <jasonr@gnu.org>
parents:
49371
diff
changeset
|
4982 |
85246e86a2cd
* w32term.c (x_draw_glyph_string_foreground)
Jason Rumney <jasonr@gnu.org>
parents:
49371
diff
changeset
|
4983 w->phys_cursor_width = width; |
85246e86a2cd
* w32term.c (x_draw_glyph_string_foreground)
Jason Rumney <jasonr@gnu.org>
parents:
49371
diff
changeset
|
4984 |
85246e86a2cd
* w32term.c (x_draw_glyph_string_foreground)
Jason Rumney <jasonr@gnu.org>
parents:
49371
diff
changeset
|
4985 |
35384
e50a7f9ce65e
(x_produce_stretch_glyph): Only use Qspace when GLYPH_DEBUG is defined.
Jason Rumney <jasonr@gnu.org>
parents:
35287
diff
changeset
|
4986 hdc = get_frame_dc (f); |
58402
d1d4d5846215
(w32_clip_to_row): Add area arg. Callers changed.
Kim F. Storm <storm@cua.dk>
parents:
57837
diff
changeset
|
4987 w32_clip_to_row (w, row, TEXT_AREA, hdc); |
45467
583ed47de245
(x_draw_bar_cursor): New argument KIND; callers changed.
Jason Rumney <jasonr@gnu.org>
parents:
45196
diff
changeset
|
4988 |
583ed47de245
(x_draw_bar_cursor): New argument KIND; callers changed.
Jason Rumney <jasonr@gnu.org>
parents:
45196
diff
changeset
|
4989 if (kind == BAR_CURSOR) |
583ed47de245
(x_draw_bar_cursor): New argument KIND; callers changed.
Jason Rumney <jasonr@gnu.org>
parents:
45196
diff
changeset
|
4990 { |
583ed47de245
(x_draw_bar_cursor): New argument KIND; callers changed.
Jason Rumney <jasonr@gnu.org>
parents:
45196
diff
changeset
|
4991 w32_fill_area (f, hdc, cursor_color, x, |
583ed47de245
(x_draw_bar_cursor): New argument KIND; callers changed.
Jason Rumney <jasonr@gnu.org>
parents:
45196
diff
changeset
|
4992 WINDOW_TO_FRAME_PIXEL_Y (w, w->phys_cursor.y), |
583ed47de245
(x_draw_bar_cursor): New argument KIND; callers changed.
Jason Rumney <jasonr@gnu.org>
parents:
45196
diff
changeset
|
4993 width, row->height); |
583ed47de245
(x_draw_bar_cursor): New argument KIND; callers changed.
Jason Rumney <jasonr@gnu.org>
parents:
45196
diff
changeset
|
4994 } |
583ed47de245
(x_draw_bar_cursor): New argument KIND; callers changed.
Jason Rumney <jasonr@gnu.org>
parents:
45196
diff
changeset
|
4995 else |
583ed47de245
(x_draw_bar_cursor): New argument KIND; callers changed.
Jason Rumney <jasonr@gnu.org>
parents:
45196
diff
changeset
|
4996 { |
583ed47de245
(x_draw_bar_cursor): New argument KIND; callers changed.
Jason Rumney <jasonr@gnu.org>
parents:
45196
diff
changeset
|
4997 w32_fill_area (f, hdc, cursor_color, x, |
583ed47de245
(x_draw_bar_cursor): New argument KIND; callers changed.
Jason Rumney <jasonr@gnu.org>
parents:
45196
diff
changeset
|
4998 WINDOW_TO_FRAME_PIXEL_Y (w, w->phys_cursor.y + |
583ed47de245
(x_draw_bar_cursor): New argument KIND; callers changed.
Jason Rumney <jasonr@gnu.org>
parents:
45196
diff
changeset
|
4999 row->height - width), |
583ed47de245
(x_draw_bar_cursor): New argument KIND; callers changed.
Jason Rumney <jasonr@gnu.org>
parents:
45196
diff
changeset
|
5000 cursor_glyph->pixel_width, width); |
583ed47de245
(x_draw_bar_cursor): New argument KIND; callers changed.
Jason Rumney <jasonr@gnu.org>
parents:
45196
diff
changeset
|
5001 } |
49393
85246e86a2cd
* w32term.c (x_draw_glyph_string_foreground)
Jason Rumney <jasonr@gnu.org>
parents:
49371
diff
changeset
|
5002 |
85246e86a2cd
* w32term.c (x_draw_glyph_string_foreground)
Jason Rumney <jasonr@gnu.org>
parents:
49371
diff
changeset
|
5003 w32_set_clip_rectangle (hdc, NULL); |
35384
e50a7f9ce65e
(x_produce_stretch_glyph): Only use Qspace when GLYPH_DEBUG is defined.
Jason Rumney <jasonr@gnu.org>
parents:
35287
diff
changeset
|
5004 release_frame_dc (f, hdc); |
27402
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
5005 } |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
5006 } |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
5007 |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
5008 |
50231
c8ea5e4b2129
* w32term.c: Remove consolidated defines and code.
Kim F. Storm <storm@cua.dk>
parents:
50163
diff
changeset
|
5009 /* RIF: Define cursor CURSOR on frame F. */ |
27402
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
5010 |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
5011 static void |
50231
c8ea5e4b2129
* w32term.c: Remove consolidated defines and code.
Kim F. Storm <storm@cua.dk>
parents:
50163
diff
changeset
|
5012 w32_define_frame_cursor (f, cursor) |
c8ea5e4b2129
* w32term.c: Remove consolidated defines and code.
Kim F. Storm <storm@cua.dk>
parents:
50163
diff
changeset
|
5013 struct frame *f; |
c8ea5e4b2129
* w32term.c: Remove consolidated defines and code.
Kim F. Storm <storm@cua.dk>
parents:
50163
diff
changeset
|
5014 Cursor cursor; |
27402
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
5015 { |
50231
c8ea5e4b2129
* w32term.c: Remove consolidated defines and code.
Kim F. Storm <storm@cua.dk>
parents:
50163
diff
changeset
|
5016 w32_define_cursor (FRAME_W32_WINDOW (f), cursor); |
27402
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
5017 } |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
5018 |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
5019 |
50231
c8ea5e4b2129
* w32term.c: Remove consolidated defines and code.
Kim F. Storm <storm@cua.dk>
parents:
50163
diff
changeset
|
5020 /* RIF: Clear area on frame F. */ |
13434 | 5021 |
5022 static void | |
50231
c8ea5e4b2129
* w32term.c: Remove consolidated defines and code.
Kim F. Storm <storm@cua.dk>
parents:
50163
diff
changeset
|
5023 w32_clear_frame_area (f, x, y, width, height) |
c8ea5e4b2129
* w32term.c: Remove consolidated defines and code.
Kim F. Storm <storm@cua.dk>
parents:
50163
diff
changeset
|
5024 struct frame *f; |
c8ea5e4b2129
* w32term.c: Remove consolidated defines and code.
Kim F. Storm <storm@cua.dk>
parents:
50163
diff
changeset
|
5025 int x, y, width, height; |
27402
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
5026 { |
50231
c8ea5e4b2129
* w32term.c: Remove consolidated defines and code.
Kim F. Storm <storm@cua.dk>
parents:
50163
diff
changeset
|
5027 HDC hdc; |
c8ea5e4b2129
* w32term.c: Remove consolidated defines and code.
Kim F. Storm <storm@cua.dk>
parents:
50163
diff
changeset
|
5028 |
c8ea5e4b2129
* w32term.c: Remove consolidated defines and code.
Kim F. Storm <storm@cua.dk>
parents:
50163
diff
changeset
|
5029 hdc = get_frame_dc (f); |
c8ea5e4b2129
* w32term.c: Remove consolidated defines and code.
Kim F. Storm <storm@cua.dk>
parents:
50163
diff
changeset
|
5030 w32_clear_area (f, hdc, x, y, width, height); |
c8ea5e4b2129
* w32term.c: Remove consolidated defines and code.
Kim F. Storm <storm@cua.dk>
parents:
50163
diff
changeset
|
5031 release_frame_dc (f, hdc); |
27402
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
5032 } |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
5033 |
50231
c8ea5e4b2129
* w32term.c: Remove consolidated defines and code.
Kim F. Storm <storm@cua.dk>
parents:
50163
diff
changeset
|
5034 /* RIF: Draw or clear cursor on window W. */ |
c8ea5e4b2129
* w32term.c: Remove consolidated defines and code.
Kim F. Storm <storm@cua.dk>
parents:
50163
diff
changeset
|
5035 |
c8ea5e4b2129
* w32term.c: Remove consolidated defines and code.
Kim F. Storm <storm@cua.dk>
parents:
50163
diff
changeset
|
5036 static void |
50243
3fb54e5a7201
(struct redisplay_interface): Add active_p argument to
Kim F. Storm <storm@cua.dk>
parents:
50231
diff
changeset
|
5037 w32_draw_window_cursor (w, glyph_row, x, y, cursor_type, cursor_width, on_p, active_p) |
40137
5f0d7d58283b
(remember_mouse_glyph): New function.
Jason Rumney <jasonr@gnu.org>
parents:
40078
diff
changeset
|
5038 struct window *w; |
50231
c8ea5e4b2129
* w32term.c: Remove consolidated defines and code.
Kim F. Storm <storm@cua.dk>
parents:
50163
diff
changeset
|
5039 struct glyph_row *glyph_row; |
50243
3fb54e5a7201
(struct redisplay_interface): Add active_p argument to
Kim F. Storm <storm@cua.dk>
parents:
50231
diff
changeset
|
5040 int x, y; |
3fb54e5a7201
(struct redisplay_interface): Add active_p argument to
Kim F. Storm <storm@cua.dk>
parents:
50231
diff
changeset
|
5041 int cursor_type, cursor_width; |
3fb54e5a7201
(struct redisplay_interface): Add active_p argument to
Kim F. Storm <storm@cua.dk>
parents:
50231
diff
changeset
|
5042 int on_p, active_p; |
27402
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
5043 { |
50243
3fb54e5a7201
(struct redisplay_interface): Add active_p argument to
Kim F. Storm <storm@cua.dk>
parents:
50231
diff
changeset
|
5044 if (on_p) |
27402
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
5045 { |
42864
c1af6a7f3dd4
(w32_system_caret_width): Remove.
Jason Rumney <jasonr@gnu.org>
parents:
42844
diff
changeset
|
5046 /* If the user wants to use the system caret, make sure our own |
c1af6a7f3dd4
(w32_system_caret_width): Remove.
Jason Rumney <jasonr@gnu.org>
parents:
42844
diff
changeset
|
5047 cursor remains invisible. */ |
c1af6a7f3dd4
(w32_system_caret_width): Remove.
Jason Rumney <jasonr@gnu.org>
parents:
42844
diff
changeset
|
5048 if (w32_use_visible_system_caret) |
c1af6a7f3dd4
(w32_system_caret_width): Remove.
Jason Rumney <jasonr@gnu.org>
parents:
42844
diff
changeset
|
5049 { |
54171
f6909a416c3f
(w32_read_socket): Remove bufp_r and numcharsp args.
Kim F. Storm <storm@cua.dk>
parents:
54126
diff
changeset
|
5050 /* Call to erase_phys_cursor here seems to use the |
f6909a416c3f
(w32_read_socket): Remove bufp_r and numcharsp args.
Kim F. Storm <storm@cua.dk>
parents:
54126
diff
changeset
|
5051 wrong values of w->phys_cursor, as they have been |
f6909a416c3f
(w32_read_socket): Remove bufp_r and numcharsp args.
Kim F. Storm <storm@cua.dk>
parents:
54126
diff
changeset
|
5052 overwritten before this function was called. */ |
42864
c1af6a7f3dd4
(w32_system_caret_width): Remove.
Jason Rumney <jasonr@gnu.org>
parents:
42844
diff
changeset
|
5053 if (w->phys_cursor_type != NO_CURSOR) |
50231
c8ea5e4b2129
* w32term.c: Remove consolidated defines and code.
Kim F. Storm <storm@cua.dk>
parents:
50163
diff
changeset
|
5054 erase_phys_cursor (w); |
42864
c1af6a7f3dd4
(w32_system_caret_width): Remove.
Jason Rumney <jasonr@gnu.org>
parents:
42844
diff
changeset
|
5055 |
50243
3fb54e5a7201
(struct redisplay_interface): Add active_p argument to
Kim F. Storm <storm@cua.dk>
parents:
50231
diff
changeset
|
5056 cursor_type = w->phys_cursor_type = NO_CURSOR; |
43621
7755c5d1d8b4
(x_display_and_set_cursor): Blink box cursor using
Kim F. Storm <storm@cua.dk>
parents:
43478
diff
changeset
|
5057 w->phys_cursor_width = -1; |
42864
c1af6a7f3dd4
(w32_system_caret_width): Remove.
Jason Rumney <jasonr@gnu.org>
parents:
42844
diff
changeset
|
5058 } |
c1af6a7f3dd4
(w32_system_caret_width): Remove.
Jason Rumney <jasonr@gnu.org>
parents:
42844
diff
changeset
|
5059 else |
43621
7755c5d1d8b4
(x_display_and_set_cursor): Blink box cursor using
Kim F. Storm <storm@cua.dk>
parents:
43478
diff
changeset
|
5060 { |
50243
3fb54e5a7201
(struct redisplay_interface): Add active_p argument to
Kim F. Storm <storm@cua.dk>
parents:
50231
diff
changeset
|
5061 w->phys_cursor_type = cursor_type; |
43621
7755c5d1d8b4
(x_display_and_set_cursor): Blink box cursor using
Kim F. Storm <storm@cua.dk>
parents:
43478
diff
changeset
|
5062 } |
42864
c1af6a7f3dd4
(w32_system_caret_width): Remove.
Jason Rumney <jasonr@gnu.org>
parents:
42844
diff
changeset
|
5063 |
27402
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
5064 w->phys_cursor_on_p = 1; |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
5065 |
40384
25e6d4bb5f7f
(w32_system_caret_hwnd, w32_system_caret_width)
Jason Rumney <jasonr@gnu.org>
parents:
40245
diff
changeset
|
5066 /* If this is the active cursor, we need to track it with the |
25e6d4bb5f7f
(w32_system_caret_hwnd, w32_system_caret_width)
Jason Rumney <jasonr@gnu.org>
parents:
40245
diff
changeset
|
5067 system caret, so third party software like screen magnifiers |
25e6d4bb5f7f
(w32_system_caret_hwnd, w32_system_caret_width)
Jason Rumney <jasonr@gnu.org>
parents:
40245
diff
changeset
|
5068 and speech synthesizers can follow the cursor. */ |
50243
3fb54e5a7201
(struct redisplay_interface): Add active_p argument to
Kim F. Storm <storm@cua.dk>
parents:
50231
diff
changeset
|
5069 if (active_p) |
40384
25e6d4bb5f7f
(w32_system_caret_hwnd, w32_system_caret_width)
Jason Rumney <jasonr@gnu.org>
parents:
40245
diff
changeset
|
5070 { |
50280
1a5341fe785b
(w32_draw_window_cursor): Fix last change.
Kim F. Storm <storm@cua.dk>
parents:
50247
diff
changeset
|
5071 struct frame *f = XFRAME (WINDOW_FRAME (w)); |
42864
c1af6a7f3dd4
(w32_system_caret_width): Remove.
Jason Rumney <jasonr@gnu.org>
parents:
42844
diff
changeset
|
5072 HWND hwnd = FRAME_W32_WINDOW (f); |
c1af6a7f3dd4
(w32_system_caret_width): Remove.
Jason Rumney <jasonr@gnu.org>
parents:
42844
diff
changeset
|
5073 |
c1af6a7f3dd4
(w32_system_caret_width): Remove.
Jason Rumney <jasonr@gnu.org>
parents:
42844
diff
changeset
|
5074 w32_system_caret_x |
c1af6a7f3dd4
(w32_system_caret_width): Remove.
Jason Rumney <jasonr@gnu.org>
parents:
42844
diff
changeset
|
5075 = WINDOW_TEXT_TO_FRAME_PIXEL_X (w, w->phys_cursor.x); |
c1af6a7f3dd4
(w32_system_caret_width): Remove.
Jason Rumney <jasonr@gnu.org>
parents:
42844
diff
changeset
|
5076 w32_system_caret_y |
c1af6a7f3dd4
(w32_system_caret_width): Remove.
Jason Rumney <jasonr@gnu.org>
parents:
42844
diff
changeset
|
5077 = (WINDOW_TO_FRAME_PIXEL_Y (w, w->phys_cursor.y) |
c1af6a7f3dd4
(w32_system_caret_width): Remove.
Jason Rumney <jasonr@gnu.org>
parents:
42844
diff
changeset
|
5078 + glyph_row->ascent - w->phys_cursor_ascent); |
c1af6a7f3dd4
(w32_system_caret_width): Remove.
Jason Rumney <jasonr@gnu.org>
parents:
42844
diff
changeset
|
5079 |
c1af6a7f3dd4
(w32_system_caret_width): Remove.
Jason Rumney <jasonr@gnu.org>
parents:
42844
diff
changeset
|
5080 /* If the size of the active cursor changed, destroy the old |
c1af6a7f3dd4
(w32_system_caret_width): Remove.
Jason Rumney <jasonr@gnu.org>
parents:
42844
diff
changeset
|
5081 system caret. */ |
c1af6a7f3dd4
(w32_system_caret_width): Remove.
Jason Rumney <jasonr@gnu.org>
parents:
42844
diff
changeset
|
5082 if (w32_system_caret_hwnd |
c1af6a7f3dd4
(w32_system_caret_width): Remove.
Jason Rumney <jasonr@gnu.org>
parents:
42844
diff
changeset
|
5083 && (w32_system_caret_height != w->phys_cursor_height)) |
c1af6a7f3dd4
(w32_system_caret_width): Remove.
Jason Rumney <jasonr@gnu.org>
parents:
42844
diff
changeset
|
5084 PostMessage (hwnd, WM_EMACS_DESTROY_CARET, 0, 0); |
c1af6a7f3dd4
(w32_system_caret_width): Remove.
Jason Rumney <jasonr@gnu.org>
parents:
42844
diff
changeset
|
5085 |
c1af6a7f3dd4
(w32_system_caret_width): Remove.
Jason Rumney <jasonr@gnu.org>
parents:
42844
diff
changeset
|
5086 w32_system_caret_height = w->phys_cursor_height; |
c1af6a7f3dd4
(w32_system_caret_width): Remove.
Jason Rumney <jasonr@gnu.org>
parents:
42844
diff
changeset
|
5087 |
c1af6a7f3dd4
(w32_system_caret_width): Remove.
Jason Rumney <jasonr@gnu.org>
parents:
42844
diff
changeset
|
5088 /* Move the system caret. */ |
c1af6a7f3dd4
(w32_system_caret_width): Remove.
Jason Rumney <jasonr@gnu.org>
parents:
42844
diff
changeset
|
5089 PostMessage (hwnd, WM_EMACS_TRACK_CARET, 0, 0); |
40384
25e6d4bb5f7f
(w32_system_caret_hwnd, w32_system_caret_width)
Jason Rumney <jasonr@gnu.org>
parents:
40245
diff
changeset
|
5090 } |
25e6d4bb5f7f
(w32_system_caret_hwnd, w32_system_caret_width)
Jason Rumney <jasonr@gnu.org>
parents:
40245
diff
changeset
|
5091 |
53607
4262a032b45b
(x_update_window_end): Call draw_window_fringes.
Kim F. Storm <storm@cua.dk>
parents:
53469
diff
changeset
|
5092 if (glyph_row->exact_window_width_line_p |
4262a032b45b
(x_update_window_end): Call draw_window_fringes.
Kim F. Storm <storm@cua.dk>
parents:
53469
diff
changeset
|
5093 && w->phys_cursor.hpos >= glyph_row->used[TEXT_AREA]) |
4262a032b45b
(x_update_window_end): Call draw_window_fringes.
Kim F. Storm <storm@cua.dk>
parents:
53469
diff
changeset
|
5094 { |
4262a032b45b
(x_update_window_end): Call draw_window_fringes.
Kim F. Storm <storm@cua.dk>
parents:
53469
diff
changeset
|
5095 glyph_row->cursor_in_fringe_p = 1; |
4262a032b45b
(x_update_window_end): Call draw_window_fringes.
Kim F. Storm <storm@cua.dk>
parents:
53469
diff
changeset
|
5096 draw_fringe_bitmap (w, glyph_row, 0); |
4262a032b45b
(x_update_window_end): Call draw_window_fringes.
Kim F. Storm <storm@cua.dk>
parents:
53469
diff
changeset
|
5097 return; |
4262a032b45b
(x_update_window_end): Call draw_window_fringes.
Kim F. Storm <storm@cua.dk>
parents:
53469
diff
changeset
|
5098 } |
4262a032b45b
(x_update_window_end): Call draw_window_fringes.
Kim F. Storm <storm@cua.dk>
parents:
53469
diff
changeset
|
5099 |
50243
3fb54e5a7201
(struct redisplay_interface): Add active_p argument to
Kim F. Storm <storm@cua.dk>
parents:
50231
diff
changeset
|
5100 switch (cursor_type) |
13434 | 5101 { |
27402
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
5102 case HOLLOW_BOX_CURSOR: |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
5103 x_draw_hollow_cursor (w, glyph_row); |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
5104 break; |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
5105 |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
5106 case FILLED_BOX_CURSOR: |
50231
c8ea5e4b2129
* w32term.c: Remove consolidated defines and code.
Kim F. Storm <storm@cua.dk>
parents:
50163
diff
changeset
|
5107 draw_phys_cursor_glyph (w, glyph_row, DRAW_CURSOR); |
27402
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
5108 break; |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
5109 |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
5110 case BAR_CURSOR: |
50243
3fb54e5a7201
(struct redisplay_interface): Add active_p argument to
Kim F. Storm <storm@cua.dk>
parents:
50231
diff
changeset
|
5111 x_draw_bar_cursor (w, glyph_row, cursor_width, BAR_CURSOR); |
45467
583ed47de245
(x_draw_bar_cursor): New argument KIND; callers changed.
Jason Rumney <jasonr@gnu.org>
parents:
45196
diff
changeset
|
5112 break; |
583ed47de245
(x_draw_bar_cursor): New argument KIND; callers changed.
Jason Rumney <jasonr@gnu.org>
parents:
45196
diff
changeset
|
5113 |
583ed47de245
(x_draw_bar_cursor): New argument KIND; callers changed.
Jason Rumney <jasonr@gnu.org>
parents:
45196
diff
changeset
|
5114 case HBAR_CURSOR: |
50243
3fb54e5a7201
(struct redisplay_interface): Add active_p argument to
Kim F. Storm <storm@cua.dk>
parents:
50231
diff
changeset
|
5115 x_draw_bar_cursor (w, glyph_row, cursor_width, HBAR_CURSOR); |
27402
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
5116 break; |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
5117 |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
5118 case NO_CURSOR: |
49393
85246e86a2cd
* w32term.c (x_draw_glyph_string_foreground)
Jason Rumney <jasonr@gnu.org>
parents:
49371
diff
changeset
|
5119 w->phys_cursor_width = 0; |
27402
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
5120 break; |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
5121 |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
5122 default: |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
5123 abort (); |
13434 | 5124 } |
27402
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
5125 } |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
5126 } |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
5127 |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
5128 |
13434 | 5129 |
25236
ea748fe6dee4
(x_bitmap_icon): New function.
Geoff Voelker <voelker@cs.washington.edu>
parents:
24863
diff
changeset
|
5130 /* Icons. */ |
ea748fe6dee4
(x_bitmap_icon): New function.
Geoff Voelker <voelker@cs.washington.edu>
parents:
24863
diff
changeset
|
5131 |
ea748fe6dee4
(x_bitmap_icon): New function.
Geoff Voelker <voelker@cs.washington.edu>
parents:
24863
diff
changeset
|
5132 int |
ea748fe6dee4
(x_bitmap_icon): New function.
Geoff Voelker <voelker@cs.washington.edu>
parents:
24863
diff
changeset
|
5133 x_bitmap_icon (f, icon) |
ea748fe6dee4
(x_bitmap_icon): New function.
Geoff Voelker <voelker@cs.washington.edu>
parents:
24863
diff
changeset
|
5134 struct frame *f; |
ea748fe6dee4
(x_bitmap_icon): New function.
Geoff Voelker <voelker@cs.washington.edu>
parents:
24863
diff
changeset
|
5135 Lisp_Object icon; |
ea748fe6dee4
(x_bitmap_icon): New function.
Geoff Voelker <voelker@cs.washington.edu>
parents:
24863
diff
changeset
|
5136 { |
65444
14dd537e7ba9
2005-09-11 Chris Prince <cprince@gmail.com> (tiny change)
Jason Rumney <jasonr@gnu.org>
parents:
64770
diff
changeset
|
5137 HANDLE main_icon; |
14dd537e7ba9
2005-09-11 Chris Prince <cprince@gmail.com> (tiny change)
Jason Rumney <jasonr@gnu.org>
parents:
64770
diff
changeset
|
5138 HANDLE small_icon = NULL; |
25236
ea748fe6dee4
(x_bitmap_icon): New function.
Geoff Voelker <voelker@cs.washington.edu>
parents:
24863
diff
changeset
|
5139 |
ea748fe6dee4
(x_bitmap_icon): New function.
Geoff Voelker <voelker@cs.washington.edu>
parents:
24863
diff
changeset
|
5140 if (FRAME_W32_WINDOW (f) == 0) |
ea748fe6dee4
(x_bitmap_icon): New function.
Geoff Voelker <voelker@cs.washington.edu>
parents:
24863
diff
changeset
|
5141 return 1; |
ea748fe6dee4
(x_bitmap_icon): New function.
Geoff Voelker <voelker@cs.washington.edu>
parents:
24863
diff
changeset
|
5142 |
ea748fe6dee4
(x_bitmap_icon): New function.
Geoff Voelker <voelker@cs.washington.edu>
parents:
24863
diff
changeset
|
5143 if (NILP (icon)) |
65444
14dd537e7ba9
2005-09-11 Chris Prince <cprince@gmail.com> (tiny change)
Jason Rumney <jasonr@gnu.org>
parents:
64770
diff
changeset
|
5144 main_icon = LoadIcon (hinst, EMACS_CLASS); |
25236
ea748fe6dee4
(x_bitmap_icon): New function.
Geoff Voelker <voelker@cs.washington.edu>
parents:
24863
diff
changeset
|
5145 else if (STRINGP (icon)) |
65444
14dd537e7ba9
2005-09-11 Chris Prince <cprince@gmail.com> (tiny change)
Jason Rumney <jasonr@gnu.org>
parents:
64770
diff
changeset
|
5146 { |
14dd537e7ba9
2005-09-11 Chris Prince <cprince@gmail.com> (tiny change)
Jason Rumney <jasonr@gnu.org>
parents:
64770
diff
changeset
|
5147 /* Load the main icon from the named file. */ |
14dd537e7ba9
2005-09-11 Chris Prince <cprince@gmail.com> (tiny change)
Jason Rumney <jasonr@gnu.org>
parents:
64770
diff
changeset
|
5148 main_icon = LoadImage (NULL, (LPCTSTR) SDATA (icon), IMAGE_ICON, 0, 0, |
14dd537e7ba9
2005-09-11 Chris Prince <cprince@gmail.com> (tiny change)
Jason Rumney <jasonr@gnu.org>
parents:
64770
diff
changeset
|
5149 LR_DEFAULTSIZE | LR_LOADFROMFILE); |
14dd537e7ba9
2005-09-11 Chris Prince <cprince@gmail.com> (tiny change)
Jason Rumney <jasonr@gnu.org>
parents:
64770
diff
changeset
|
5150 /* Try to load a small icon to go with it. */ |
14dd537e7ba9
2005-09-11 Chris Prince <cprince@gmail.com> (tiny change)
Jason Rumney <jasonr@gnu.org>
parents:
64770
diff
changeset
|
5151 small_icon = LoadImage (NULL, (LPCSTR) SDATA (icon), IMAGE_ICON, |
14dd537e7ba9
2005-09-11 Chris Prince <cprince@gmail.com> (tiny change)
Jason Rumney <jasonr@gnu.org>
parents:
64770
diff
changeset
|
5152 GetSystemMetrics (SM_CXSMICON), |
14dd537e7ba9
2005-09-11 Chris Prince <cprince@gmail.com> (tiny change)
Jason Rumney <jasonr@gnu.org>
parents:
64770
diff
changeset
|
5153 GetSystemMetrics (SM_CYSMICON), |
14dd537e7ba9
2005-09-11 Chris Prince <cprince@gmail.com> (tiny change)
Jason Rumney <jasonr@gnu.org>
parents:
64770
diff
changeset
|
5154 LR_LOADFROMFILE); |
14dd537e7ba9
2005-09-11 Chris Prince <cprince@gmail.com> (tiny change)
Jason Rumney <jasonr@gnu.org>
parents:
64770
diff
changeset
|
5155 } |
25236
ea748fe6dee4
(x_bitmap_icon): New function.
Geoff Voelker <voelker@cs.washington.edu>
parents:
24863
diff
changeset
|
5156 else if (SYMBOLP (icon)) |
ea748fe6dee4
(x_bitmap_icon): New function.
Geoff Voelker <voelker@cs.washington.edu>
parents:
24863
diff
changeset
|
5157 { |
ea748fe6dee4
(x_bitmap_icon): New function.
Geoff Voelker <voelker@cs.washington.edu>
parents:
24863
diff
changeset
|
5158 LPCTSTR name; |
ea748fe6dee4
(x_bitmap_icon): New function.
Geoff Voelker <voelker@cs.washington.edu>
parents:
24863
diff
changeset
|
5159 |
ea748fe6dee4
(x_bitmap_icon): New function.
Geoff Voelker <voelker@cs.washington.edu>
parents:
24863
diff
changeset
|
5160 if (EQ (icon, intern ("application"))) |
ea748fe6dee4
(x_bitmap_icon): New function.
Geoff Voelker <voelker@cs.washington.edu>
parents:
24863
diff
changeset
|
5161 name = (LPCTSTR) IDI_APPLICATION; |
ea748fe6dee4
(x_bitmap_icon): New function.
Geoff Voelker <voelker@cs.washington.edu>
parents:
24863
diff
changeset
|
5162 else if (EQ (icon, intern ("hand"))) |
ea748fe6dee4
(x_bitmap_icon): New function.
Geoff Voelker <voelker@cs.washington.edu>
parents:
24863
diff
changeset
|
5163 name = (LPCTSTR) IDI_HAND; |
ea748fe6dee4
(x_bitmap_icon): New function.
Geoff Voelker <voelker@cs.washington.edu>
parents:
24863
diff
changeset
|
5164 else if (EQ (icon, intern ("question"))) |
ea748fe6dee4
(x_bitmap_icon): New function.
Geoff Voelker <voelker@cs.washington.edu>
parents:
24863
diff
changeset
|
5165 name = (LPCTSTR) IDI_QUESTION; |
ea748fe6dee4
(x_bitmap_icon): New function.
Geoff Voelker <voelker@cs.washington.edu>
parents:
24863
diff
changeset
|
5166 else if (EQ (icon, intern ("exclamation"))) |
ea748fe6dee4
(x_bitmap_icon): New function.
Geoff Voelker <voelker@cs.washington.edu>
parents:
24863
diff
changeset
|
5167 name = (LPCTSTR) IDI_EXCLAMATION; |
ea748fe6dee4
(x_bitmap_icon): New function.
Geoff Voelker <voelker@cs.washington.edu>
parents:
24863
diff
changeset
|
5168 else if (EQ (icon, intern ("asterisk"))) |
ea748fe6dee4
(x_bitmap_icon): New function.
Geoff Voelker <voelker@cs.washington.edu>
parents:
24863
diff
changeset
|
5169 name = (LPCTSTR) IDI_ASTERISK; |
ea748fe6dee4
(x_bitmap_icon): New function.
Geoff Voelker <voelker@cs.washington.edu>
parents:
24863
diff
changeset
|
5170 else if (EQ (icon, intern ("winlogo"))) |
ea748fe6dee4
(x_bitmap_icon): New function.
Geoff Voelker <voelker@cs.washington.edu>
parents:
24863
diff
changeset
|
5171 name = (LPCTSTR) IDI_WINLOGO; |
ea748fe6dee4
(x_bitmap_icon): New function.
Geoff Voelker <voelker@cs.washington.edu>
parents:
24863
diff
changeset
|
5172 else |
ea748fe6dee4
(x_bitmap_icon): New function.
Geoff Voelker <voelker@cs.washington.edu>
parents:
24863
diff
changeset
|
5173 return 1; |
ea748fe6dee4
(x_bitmap_icon): New function.
Geoff Voelker <voelker@cs.washington.edu>
parents:
24863
diff
changeset
|
5174 |
65444
14dd537e7ba9
2005-09-11 Chris Prince <cprince@gmail.com> (tiny change)
Jason Rumney <jasonr@gnu.org>
parents:
64770
diff
changeset
|
5175 main_icon = LoadIcon (NULL, name); |
25236
ea748fe6dee4
(x_bitmap_icon): New function.
Geoff Voelker <voelker@cs.washington.edu>
parents:
24863
diff
changeset
|
5176 } |
ea748fe6dee4
(x_bitmap_icon): New function.
Geoff Voelker <voelker@cs.washington.edu>
parents:
24863
diff
changeset
|
5177 else |
ea748fe6dee4
(x_bitmap_icon): New function.
Geoff Voelker <voelker@cs.washington.edu>
parents:
24863
diff
changeset
|
5178 return 1; |
ea748fe6dee4
(x_bitmap_icon): New function.
Geoff Voelker <voelker@cs.washington.edu>
parents:
24863
diff
changeset
|
5179 |
65444
14dd537e7ba9
2005-09-11 Chris Prince <cprince@gmail.com> (tiny change)
Jason Rumney <jasonr@gnu.org>
parents:
64770
diff
changeset
|
5180 if (main_icon == NULL) |
25236
ea748fe6dee4
(x_bitmap_icon): New function.
Geoff Voelker <voelker@cs.washington.edu>
parents:
24863
diff
changeset
|
5181 return 1; |
ea748fe6dee4
(x_bitmap_icon): New function.
Geoff Voelker <voelker@cs.washington.edu>
parents:
24863
diff
changeset
|
5182 |
27402
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
5183 PostMessage (FRAME_W32_WINDOW (f), WM_SETICON, (WPARAM) ICON_BIG, |
65444
14dd537e7ba9
2005-09-11 Chris Prince <cprince@gmail.com> (tiny change)
Jason Rumney <jasonr@gnu.org>
parents:
64770
diff
changeset
|
5184 (LPARAM) main_icon); |
14dd537e7ba9
2005-09-11 Chris Prince <cprince@gmail.com> (tiny change)
Jason Rumney <jasonr@gnu.org>
parents:
64770
diff
changeset
|
5185 |
14dd537e7ba9
2005-09-11 Chris Prince <cprince@gmail.com> (tiny change)
Jason Rumney <jasonr@gnu.org>
parents:
64770
diff
changeset
|
5186 /* If there is a small icon that goes with it, set that too. */ |
14dd537e7ba9
2005-09-11 Chris Prince <cprince@gmail.com> (tiny change)
Jason Rumney <jasonr@gnu.org>
parents:
64770
diff
changeset
|
5187 if (small_icon) |
14dd537e7ba9
2005-09-11 Chris Prince <cprince@gmail.com> (tiny change)
Jason Rumney <jasonr@gnu.org>
parents:
64770
diff
changeset
|
5188 PostMessage (FRAME_W32_WINDOW (f), WM_SETICON, (WPARAM) ICON_SMALL, |
14dd537e7ba9
2005-09-11 Chris Prince <cprince@gmail.com> (tiny change)
Jason Rumney <jasonr@gnu.org>
parents:
64770
diff
changeset
|
5189 (LPARAM) small_icon); |
25236
ea748fe6dee4
(x_bitmap_icon): New function.
Geoff Voelker <voelker@cs.washington.edu>
parents:
24863
diff
changeset
|
5190 |
ea748fe6dee4
(x_bitmap_icon): New function.
Geoff Voelker <voelker@cs.washington.edu>
parents:
24863
diff
changeset
|
5191 return 0; |
ea748fe6dee4
(x_bitmap_icon): New function.
Geoff Voelker <voelker@cs.washington.edu>
parents:
24863
diff
changeset
|
5192 } |
ea748fe6dee4
(x_bitmap_icon): New function.
Geoff Voelker <voelker@cs.washington.edu>
parents:
24863
diff
changeset
|
5193 |
ea748fe6dee4
(x_bitmap_icon): New function.
Geoff Voelker <voelker@cs.washington.edu>
parents:
24863
diff
changeset
|
5194 |
35384
e50a7f9ce65e
(x_produce_stretch_glyph): Only use Qspace when GLYPH_DEBUG is defined.
Jason Rumney <jasonr@gnu.org>
parents:
35287
diff
changeset
|
5195 /************************************************************************ |
e50a7f9ce65e
(x_produce_stretch_glyph): Only use Qspace when GLYPH_DEBUG is defined.
Jason Rumney <jasonr@gnu.org>
parents:
35287
diff
changeset
|
5196 Handling X errors |
e50a7f9ce65e
(x_produce_stretch_glyph): Only use Qspace when GLYPH_DEBUG is defined.
Jason Rumney <jasonr@gnu.org>
parents:
35287
diff
changeset
|
5197 ************************************************************************/ |
e50a7f9ce65e
(x_produce_stretch_glyph): Only use Qspace when GLYPH_DEBUG is defined.
Jason Rumney <jasonr@gnu.org>
parents:
35287
diff
changeset
|
5198 |
e50a7f9ce65e
(x_produce_stretch_glyph): Only use Qspace when GLYPH_DEBUG is defined.
Jason Rumney <jasonr@gnu.org>
parents:
35287
diff
changeset
|
5199 /* Display Error Handling functions not used on W32. Listing them here |
e50a7f9ce65e
(x_produce_stretch_glyph): Only use Qspace when GLYPH_DEBUG is defined.
Jason Rumney <jasonr@gnu.org>
parents:
35287
diff
changeset
|
5200 helps diff stay in step when comparing w32term.c with xterm.c. |
e50a7f9ce65e
(x_produce_stretch_glyph): Only use Qspace when GLYPH_DEBUG is defined.
Jason Rumney <jasonr@gnu.org>
parents:
35287
diff
changeset
|
5201 |
e50a7f9ce65e
(x_produce_stretch_glyph): Only use Qspace when GLYPH_DEBUG is defined.
Jason Rumney <jasonr@gnu.org>
parents:
35287
diff
changeset
|
5202 x_error_catcher (display, error) |
e50a7f9ce65e
(x_produce_stretch_glyph): Only use Qspace when GLYPH_DEBUG is defined.
Jason Rumney <jasonr@gnu.org>
parents:
35287
diff
changeset
|
5203 x_catch_errors (dpy) |
e50a7f9ce65e
(x_produce_stretch_glyph): Only use Qspace when GLYPH_DEBUG is defined.
Jason Rumney <jasonr@gnu.org>
parents:
35287
diff
changeset
|
5204 x_catch_errors_unwind (old_val) |
e50a7f9ce65e
(x_produce_stretch_glyph): Only use Qspace when GLYPH_DEBUG is defined.
Jason Rumney <jasonr@gnu.org>
parents:
35287
diff
changeset
|
5205 x_check_errors (dpy, format) |
69401
259ab035a718
Add x_fully_uncatch_errors and x_catching_errors to
Eli Zaretskii <eliz@gnu.org>
parents:
68651
diff
changeset
|
5206 x_fully_uncatch_errors () |
259ab035a718
Add x_fully_uncatch_errors and x_catching_errors to
Eli Zaretskii <eliz@gnu.org>
parents:
68651
diff
changeset
|
5207 x_catching_errors () |
35384
e50a7f9ce65e
(x_produce_stretch_glyph): Only use Qspace when GLYPH_DEBUG is defined.
Jason Rumney <jasonr@gnu.org>
parents:
35287
diff
changeset
|
5208 x_had_errors_p (dpy) |
e50a7f9ce65e
(x_produce_stretch_glyph): Only use Qspace when GLYPH_DEBUG is defined.
Jason Rumney <jasonr@gnu.org>
parents:
35287
diff
changeset
|
5209 x_clear_errors (dpy) |
e50a7f9ce65e
(x_produce_stretch_glyph): Only use Qspace when GLYPH_DEBUG is defined.
Jason Rumney <jasonr@gnu.org>
parents:
35287
diff
changeset
|
5210 x_uncatch_errors (dpy, count) |
e50a7f9ce65e
(x_produce_stretch_glyph): Only use Qspace when GLYPH_DEBUG is defined.
Jason Rumney <jasonr@gnu.org>
parents:
35287
diff
changeset
|
5211 x_trace_wire () |
e50a7f9ce65e
(x_produce_stretch_glyph): Only use Qspace when GLYPH_DEBUG is defined.
Jason Rumney <jasonr@gnu.org>
parents:
35287
diff
changeset
|
5212 x_connection_signal (signalnum) |
e50a7f9ce65e
(x_produce_stretch_glyph): Only use Qspace when GLYPH_DEBUG is defined.
Jason Rumney <jasonr@gnu.org>
parents:
35287
diff
changeset
|
5213 x_connection_closed (dpy, error_message) |
e50a7f9ce65e
(x_produce_stretch_glyph): Only use Qspace when GLYPH_DEBUG is defined.
Jason Rumney <jasonr@gnu.org>
parents:
35287
diff
changeset
|
5214 x_error_quitter (display, error) |
e50a7f9ce65e
(x_produce_stretch_glyph): Only use Qspace when GLYPH_DEBUG is defined.
Jason Rumney <jasonr@gnu.org>
parents:
35287
diff
changeset
|
5215 x_error_handler (display, error) |
e50a7f9ce65e
(x_produce_stretch_glyph): Only use Qspace when GLYPH_DEBUG is defined.
Jason Rumney <jasonr@gnu.org>
parents:
35287
diff
changeset
|
5216 x_io_error_quitter (display) |
e50a7f9ce65e
(x_produce_stretch_glyph): Only use Qspace when GLYPH_DEBUG is defined.
Jason Rumney <jasonr@gnu.org>
parents:
35287
diff
changeset
|
5217 |
e50a7f9ce65e
(x_produce_stretch_glyph): Only use Qspace when GLYPH_DEBUG is defined.
Jason Rumney <jasonr@gnu.org>
parents:
35287
diff
changeset
|
5218 */ |
e50a7f9ce65e
(x_produce_stretch_glyph): Only use Qspace when GLYPH_DEBUG is defined.
Jason Rumney <jasonr@gnu.org>
parents:
35287
diff
changeset
|
5219 |
e50a7f9ce65e
(x_produce_stretch_glyph): Only use Qspace when GLYPH_DEBUG is defined.
Jason Rumney <jasonr@gnu.org>
parents:
35287
diff
changeset
|
5220 |
13434 | 5221 /* Changing the font of the frame. */ |
5222 | |
5223 /* Give frame F the font named FONTNAME as its default font, and | |
5224 return the full name of that font. FONTNAME may be a wildcard | |
5225 pattern; in that case, we choose some font that fits the pattern. | |
5226 The return value shows which font we chose. */ | |
5227 | |
5228 Lisp_Object | |
5229 x_new_font (f, fontname) | |
5230 struct frame *f; | |
5231 register char *fontname; | |
5232 { | |
23507
8a448630a9b5
Include fontset.h. Define codepage macros.
Geoff Voelker <voelker@cs.washington.edu>
parents:
22059
diff
changeset
|
5233 struct font_info *fontp |
28369
3fb90cd81d3b
(w32_read_socket): Handle WM_MENUSELECT message.
Jason Rumney <jasonr@gnu.org>
parents:
27937
diff
changeset
|
5234 = FS_LOAD_FONT (f, 0, fontname, -1); |
23507
8a448630a9b5
Include fontset.h. Define codepage macros.
Geoff Voelker <voelker@cs.washington.edu>
parents:
22059
diff
changeset
|
5235 |
8a448630a9b5
Include fontset.h. Define codepage macros.
Geoff Voelker <voelker@cs.washington.edu>
parents:
22059
diff
changeset
|
5236 if (!fontp) |
27402
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
5237 return Qnil; |
23507
8a448630a9b5
Include fontset.h. Define codepage macros.
Geoff Voelker <voelker@cs.washington.edu>
parents:
22059
diff
changeset
|
5238 |
8a448630a9b5
Include fontset.h. Define codepage macros.
Geoff Voelker <voelker@cs.washington.edu>
parents:
22059
diff
changeset
|
5239 FRAME_FONT (f) = (XFontStruct *) (fontp->font); |
27402
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
5240 FRAME_BASELINE_OFFSET (f) = fontp->baseline_offset; |
23507
8a448630a9b5
Include fontset.h. Define codepage macros.
Geoff Voelker <voelker@cs.washington.edu>
parents:
22059
diff
changeset
|
5241 FRAME_FONTSET (f) = -1; |
13434 | 5242 |
59332
15087a4cee39
(x_new_font): Set FRAME_COLUMN_WIDTH to fontp->average_width,
Jason Rumney <jasonr@gnu.org>
parents:
58894
diff
changeset
|
5243 FRAME_COLUMN_WIDTH (f) = fontp->average_width; |
15087a4cee39
(x_new_font): Set FRAME_COLUMN_WIDTH to fontp->average_width,
Jason Rumney <jasonr@gnu.org>
parents:
58894
diff
changeset
|
5244 FRAME_SPACE_WIDTH (f) = fontp->space_width; |
51204
082b768216a0
Make (several) trivial substitutions for renamed and
Kim F. Storm <storm@cua.dk>
parents:
50441
diff
changeset
|
5245 FRAME_LINE_HEIGHT (f) = FONT_HEIGHT (FRAME_FONT (f)); |
082b768216a0
Make (several) trivial substitutions for renamed and
Kim F. Storm <storm@cua.dk>
parents:
50441
diff
changeset
|
5246 |
082b768216a0
Make (several) trivial substitutions for renamed and
Kim F. Storm <storm@cua.dk>
parents:
50441
diff
changeset
|
5247 compute_fringe_widths (f, 1); |
082b768216a0
Make (several) trivial substitutions for renamed and
Kim F. Storm <storm@cua.dk>
parents:
50441
diff
changeset
|
5248 |
13434 | 5249 /* Compute the scroll bar width in character columns. */ |
51204
082b768216a0
Make (several) trivial substitutions for renamed and
Kim F. Storm <storm@cua.dk>
parents:
50441
diff
changeset
|
5250 if (FRAME_CONFIG_SCROLL_BAR_WIDTH (f) > 0) |
13434 | 5251 { |
51204
082b768216a0
Make (several) trivial substitutions for renamed and
Kim F. Storm <storm@cua.dk>
parents:
50441
diff
changeset
|
5252 int wid = FRAME_COLUMN_WIDTH (f); |
082b768216a0
Make (several) trivial substitutions for renamed and
Kim F. Storm <storm@cua.dk>
parents:
50441
diff
changeset
|
5253 FRAME_CONFIG_SCROLL_BAR_COLS (f) |
082b768216a0
Make (several) trivial substitutions for renamed and
Kim F. Storm <storm@cua.dk>
parents:
50441
diff
changeset
|
5254 = (FRAME_CONFIG_SCROLL_BAR_WIDTH (f) + wid-1) / wid; |
13434 | 5255 } |
5256 else | |
30240
2c2a7ebd2c15
(help_echo_object, help_echo_pos): New variables.
Jason Rumney <jasonr@gnu.org>
parents:
30199
diff
changeset
|
5257 { |
51204
082b768216a0
Make (several) trivial substitutions for renamed and
Kim F. Storm <storm@cua.dk>
parents:
50441
diff
changeset
|
5258 int wid = FRAME_COLUMN_WIDTH (f); |
082b768216a0
Make (several) trivial substitutions for renamed and
Kim F. Storm <storm@cua.dk>
parents:
50441
diff
changeset
|
5259 FRAME_CONFIG_SCROLL_BAR_COLS (f) = (14 + wid - 1) / wid; |
30240
2c2a7ebd2c15
(help_echo_object, help_echo_pos): New variables.
Jason Rumney <jasonr@gnu.org>
parents:
30199
diff
changeset
|
5260 } |
13434 | 5261 |
5262 /* Now make the frame display the given font. */ | |
16588
481b7874a1e9
Change identifiers of the form win32* to w32*.
Geoff Voelker <voelker@cs.washington.edu>
parents:
16326
diff
changeset
|
5263 if (FRAME_W32_WINDOW (f) != 0) |
13434 | 5264 { |
36002
205727d5d63c
(w32_encode_char): Treat eight bit graphic and control
Jason Rumney <jasonr@gnu.org>
parents:
35984
diff
changeset
|
5265 if (NILP (tip_frame) || XFRAME (tip_frame) != f) |
51204
082b768216a0
Make (several) trivial substitutions for renamed and
Kim F. Storm <storm@cua.dk>
parents:
50441
diff
changeset
|
5266 x_set_window_size (f, 0, FRAME_COLS (f), FRAME_LINES (f)); |
13434 | 5267 } |
5268 | |
27402
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
5269 return build_string (fontp->full_name); |
13434 | 5270 } |
5271 | |
23507
8a448630a9b5
Include fontset.h. Define codepage macros.
Geoff Voelker <voelker@cs.washington.edu>
parents:
22059
diff
changeset
|
5272 /* Give frame F the fontset named FONTSETNAME as its default font, and |
8a448630a9b5
Include fontset.h. Define codepage macros.
Geoff Voelker <voelker@cs.washington.edu>
parents:
22059
diff
changeset
|
5273 return the full name of that fontset. FONTSETNAME may be a wildcard |
8a448630a9b5
Include fontset.h. Define codepage macros.
Geoff Voelker <voelker@cs.washington.edu>
parents:
22059
diff
changeset
|
5274 pattern; in that case, we choose some fontset that fits the pattern. |
8a448630a9b5
Include fontset.h. Define codepage macros.
Geoff Voelker <voelker@cs.washington.edu>
parents:
22059
diff
changeset
|
5275 The return value shows which fontset we chose. */ |
8a448630a9b5
Include fontset.h. Define codepage macros.
Geoff Voelker <voelker@cs.washington.edu>
parents:
22059
diff
changeset
|
5276 |
8a448630a9b5
Include fontset.h. Define codepage macros.
Geoff Voelker <voelker@cs.washington.edu>
parents:
22059
diff
changeset
|
5277 Lisp_Object |
8a448630a9b5
Include fontset.h. Define codepage macros.
Geoff Voelker <voelker@cs.washington.edu>
parents:
22059
diff
changeset
|
5278 x_new_fontset (f, fontsetname) |
8a448630a9b5
Include fontset.h. Define codepage macros.
Geoff Voelker <voelker@cs.washington.edu>
parents:
22059
diff
changeset
|
5279 struct frame *f; |
8a448630a9b5
Include fontset.h. Define codepage macros.
Geoff Voelker <voelker@cs.washington.edu>
parents:
22059
diff
changeset
|
5280 char *fontsetname; |
8a448630a9b5
Include fontset.h. Define codepage macros.
Geoff Voelker <voelker@cs.washington.edu>
parents:
22059
diff
changeset
|
5281 { |
28369
3fb90cd81d3b
(w32_read_socket): Handle WM_MENUSELECT message.
Jason Rumney <jasonr@gnu.org>
parents:
27937
diff
changeset
|
5282 int fontset = fs_query_fontset (build_string (fontsetname), 0); |
23507
8a448630a9b5
Include fontset.h. Define codepage macros.
Geoff Voelker <voelker@cs.washington.edu>
parents:
22059
diff
changeset
|
5283 Lisp_Object result; |
8a448630a9b5
Include fontset.h. Define codepage macros.
Geoff Voelker <voelker@cs.washington.edu>
parents:
22059
diff
changeset
|
5284 |
8a448630a9b5
Include fontset.h. Define codepage macros.
Geoff Voelker <voelker@cs.washington.edu>
parents:
22059
diff
changeset
|
5285 if (fontset < 0) |
8a448630a9b5
Include fontset.h. Define codepage macros.
Geoff Voelker <voelker@cs.washington.edu>
parents:
22059
diff
changeset
|
5286 return Qnil; |
8a448630a9b5
Include fontset.h. Define codepage macros.
Geoff Voelker <voelker@cs.washington.edu>
parents:
22059
diff
changeset
|
5287 |
8a448630a9b5
Include fontset.h. Define codepage macros.
Geoff Voelker <voelker@cs.washington.edu>
parents:
22059
diff
changeset
|
5288 if (FRAME_FONTSET (f) == fontset) |
8a448630a9b5
Include fontset.h. Define codepage macros.
Geoff Voelker <voelker@cs.washington.edu>
parents:
22059
diff
changeset
|
5289 /* This fontset is already set in frame F. There's nothing more |
8a448630a9b5
Include fontset.h. Define codepage macros.
Geoff Voelker <voelker@cs.washington.edu>
parents:
22059
diff
changeset
|
5290 to do. */ |
28369
3fb90cd81d3b
(w32_read_socket): Handle WM_MENUSELECT message.
Jason Rumney <jasonr@gnu.org>
parents:
27937
diff
changeset
|
5291 return fontset_name (fontset); |
3fb90cd81d3b
(w32_read_socket): Handle WM_MENUSELECT message.
Jason Rumney <jasonr@gnu.org>
parents:
27937
diff
changeset
|
5292 |
46370
40db0673e6f0
Most uses of XSTRING combined with STRING_BYTES or indirection changed to
Ken Raeburn <raeburn@raeburn.org>
parents:
45803
diff
changeset
|
5293 result = x_new_font (f, (SDATA (fontset_ascii (fontset)))); |
23507
8a448630a9b5
Include fontset.h. Define codepage macros.
Geoff Voelker <voelker@cs.washington.edu>
parents:
22059
diff
changeset
|
5294 |
8a448630a9b5
Include fontset.h. Define codepage macros.
Geoff Voelker <voelker@cs.washington.edu>
parents:
22059
diff
changeset
|
5295 if (!STRINGP (result)) |
8a448630a9b5
Include fontset.h. Define codepage macros.
Geoff Voelker <voelker@cs.washington.edu>
parents:
22059
diff
changeset
|
5296 /* Can't load ASCII font. */ |
8a448630a9b5
Include fontset.h. Define codepage macros.
Geoff Voelker <voelker@cs.washington.edu>
parents:
22059
diff
changeset
|
5297 return Qnil; |
8a448630a9b5
Include fontset.h. Define codepage macros.
Geoff Voelker <voelker@cs.washington.edu>
parents:
22059
diff
changeset
|
5298 |
8a448630a9b5
Include fontset.h. Define codepage macros.
Geoff Voelker <voelker@cs.washington.edu>
parents:
22059
diff
changeset
|
5299 /* Since x_new_font doesn't update any fontset information, do it now. */ |
8a448630a9b5
Include fontset.h. Define codepage macros.
Geoff Voelker <voelker@cs.washington.edu>
parents:
22059
diff
changeset
|
5300 FRAME_FONTSET(f) = fontset; |
8a448630a9b5
Include fontset.h. Define codepage macros.
Geoff Voelker <voelker@cs.washington.edu>
parents:
22059
diff
changeset
|
5301 |
8a448630a9b5
Include fontset.h. Define codepage macros.
Geoff Voelker <voelker@cs.washington.edu>
parents:
22059
diff
changeset
|
5302 return build_string (fontsetname); |
8a448630a9b5
Include fontset.h. Define codepage macros.
Geoff Voelker <voelker@cs.washington.edu>
parents:
22059
diff
changeset
|
5303 } |
27402
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
5304 |
35384
e50a7f9ce65e
(x_produce_stretch_glyph): Only use Qspace when GLYPH_DEBUG is defined.
Jason Rumney <jasonr@gnu.org>
parents:
35287
diff
changeset
|
5305 |
e50a7f9ce65e
(x_produce_stretch_glyph): Only use Qspace when GLYPH_DEBUG is defined.
Jason Rumney <jasonr@gnu.org>
parents:
35287
diff
changeset
|
5306 /*********************************************************************** |
e50a7f9ce65e
(x_produce_stretch_glyph): Only use Qspace when GLYPH_DEBUG is defined.
Jason Rumney <jasonr@gnu.org>
parents:
35287
diff
changeset
|
5307 TODO: W32 Input Methods |
e50a7f9ce65e
(x_produce_stretch_glyph): Only use Qspace when GLYPH_DEBUG is defined.
Jason Rumney <jasonr@gnu.org>
parents:
35287
diff
changeset
|
5308 ***********************************************************************/ |
e50a7f9ce65e
(x_produce_stretch_glyph): Only use Qspace when GLYPH_DEBUG is defined.
Jason Rumney <jasonr@gnu.org>
parents:
35287
diff
changeset
|
5309 /* Listing missing functions from xterm.c helps diff stay in step. |
e50a7f9ce65e
(x_produce_stretch_glyph): Only use Qspace when GLYPH_DEBUG is defined.
Jason Rumney <jasonr@gnu.org>
parents:
35287
diff
changeset
|
5310 |
e50a7f9ce65e
(x_produce_stretch_glyph): Only use Qspace when GLYPH_DEBUG is defined.
Jason Rumney <jasonr@gnu.org>
parents:
35287
diff
changeset
|
5311 xim_destroy_callback (xim, client_data, call_data) |
e50a7f9ce65e
(x_produce_stretch_glyph): Only use Qspace when GLYPH_DEBUG is defined.
Jason Rumney <jasonr@gnu.org>
parents:
35287
diff
changeset
|
5312 xim_open_dpy (dpyinfo, resource_name) |
e50a7f9ce65e
(x_produce_stretch_glyph): Only use Qspace when GLYPH_DEBUG is defined.
Jason Rumney <jasonr@gnu.org>
parents:
35287
diff
changeset
|
5313 struct xim_inst_t |
e50a7f9ce65e
(x_produce_stretch_glyph): Only use Qspace when GLYPH_DEBUG is defined.
Jason Rumney <jasonr@gnu.org>
parents:
35287
diff
changeset
|
5314 xim_instantiate_callback (display, client_data, call_data) |
e50a7f9ce65e
(x_produce_stretch_glyph): Only use Qspace when GLYPH_DEBUG is defined.
Jason Rumney <jasonr@gnu.org>
parents:
35287
diff
changeset
|
5315 xim_initialize (dpyinfo, resource_name) |
e50a7f9ce65e
(x_produce_stretch_glyph): Only use Qspace when GLYPH_DEBUG is defined.
Jason Rumney <jasonr@gnu.org>
parents:
35287
diff
changeset
|
5316 xim_close_dpy (dpyinfo) |
e50a7f9ce65e
(x_produce_stretch_glyph): Only use Qspace when GLYPH_DEBUG is defined.
Jason Rumney <jasonr@gnu.org>
parents:
35287
diff
changeset
|
5317 |
e50a7f9ce65e
(x_produce_stretch_glyph): Only use Qspace when GLYPH_DEBUG is defined.
Jason Rumney <jasonr@gnu.org>
parents:
35287
diff
changeset
|
5318 */ |
27402
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
5319 |
23507
8a448630a9b5
Include fontset.h. Define codepage macros.
Geoff Voelker <voelker@cs.washington.edu>
parents:
22059
diff
changeset
|
5320 |
19713
043ccce224fb
(SIF_*): Win95 macros defined for NT.
Geoff Voelker <voelker@cs.washington.edu>
parents:
18877
diff
changeset
|
5321 /* Calculate the absolute position in frame F |
043ccce224fb
(SIF_*): Win95 macros defined for NT.
Geoff Voelker <voelker@cs.washington.edu>
parents:
18877
diff
changeset
|
5322 from its current recorded position values and gravity. */ |
043ccce224fb
(SIF_*): Win95 macros defined for NT.
Geoff Voelker <voelker@cs.washington.edu>
parents:
18877
diff
changeset
|
5323 |
29321
8e2be36bb1c6
Format and doc changes to bring closer to xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
28369
diff
changeset
|
5324 void |
13434 | 5325 x_calc_absolute_position (f) |
5326 struct frame *f; | |
5327 { | |
51204
082b768216a0
Make (several) trivial substitutions for renamed and
Kim F. Storm <storm@cua.dk>
parents:
50441
diff
changeset
|
5328 int flags = f->size_hint_flags; |
13434 | 5329 |
72008
99cff808ae1e
(x_calc_absolute_position): Fix frame positioning
Kim F. Storm <storm@cua.dk>
parents:
71546
diff
changeset
|
5330 /* The sum of the widths of the frame's left and right borders, and |
99cff808ae1e
(x_calc_absolute_position): Fix frame positioning
Kim F. Storm <storm@cua.dk>
parents:
71546
diff
changeset
|
5331 the sum of the heights of the frame's top and bottom borders (in |
99cff808ae1e
(x_calc_absolute_position): Fix frame positioning
Kim F. Storm <storm@cua.dk>
parents:
71546
diff
changeset
|
5332 pixels) drawn by Windows. */ |
99cff808ae1e
(x_calc_absolute_position): Fix frame positioning
Kim F. Storm <storm@cua.dk>
parents:
71546
diff
changeset
|
5333 unsigned int left_right_borders_width, top_bottom_borders_height; |
99cff808ae1e
(x_calc_absolute_position): Fix frame positioning
Kim F. Storm <storm@cua.dk>
parents:
71546
diff
changeset
|
5334 |
99cff808ae1e
(x_calc_absolute_position): Fix frame positioning
Kim F. Storm <storm@cua.dk>
parents:
71546
diff
changeset
|
5335 /* Try to get the actual values of these two variables. We compute |
99cff808ae1e
(x_calc_absolute_position): Fix frame positioning
Kim F. Storm <storm@cua.dk>
parents:
71546
diff
changeset
|
5336 the border width (height) by subtracting the width (height) of |
99cff808ae1e
(x_calc_absolute_position): Fix frame positioning
Kim F. Storm <storm@cua.dk>
parents:
71546
diff
changeset
|
5337 the frame's client area from the width (height) of the frame's |
99cff808ae1e
(x_calc_absolute_position): Fix frame positioning
Kim F. Storm <storm@cua.dk>
parents:
71546
diff
changeset
|
5338 entire window. */ |
99cff808ae1e
(x_calc_absolute_position): Fix frame positioning
Kim F. Storm <storm@cua.dk>
parents:
71546
diff
changeset
|
5339 WINDOWPLACEMENT wp = { 0 }; |
99cff808ae1e
(x_calc_absolute_position): Fix frame positioning
Kim F. Storm <storm@cua.dk>
parents:
71546
diff
changeset
|
5340 RECT client_rect = { 0 }; |
99cff808ae1e
(x_calc_absolute_position): Fix frame positioning
Kim F. Storm <storm@cua.dk>
parents:
71546
diff
changeset
|
5341 |
99cff808ae1e
(x_calc_absolute_position): Fix frame positioning
Kim F. Storm <storm@cua.dk>
parents:
71546
diff
changeset
|
5342 if (GetWindowPlacement (FRAME_W32_WINDOW (f), &wp) |
99cff808ae1e
(x_calc_absolute_position): Fix frame positioning
Kim F. Storm <storm@cua.dk>
parents:
71546
diff
changeset
|
5343 && GetClientRect (FRAME_W32_WINDOW (f), &client_rect)) |
99cff808ae1e
(x_calc_absolute_position): Fix frame positioning
Kim F. Storm <storm@cua.dk>
parents:
71546
diff
changeset
|
5344 { |
99cff808ae1e
(x_calc_absolute_position): Fix frame positioning
Kim F. Storm <storm@cua.dk>
parents:
71546
diff
changeset
|
5345 left_right_borders_width = |
99cff808ae1e
(x_calc_absolute_position): Fix frame positioning
Kim F. Storm <storm@cua.dk>
parents:
71546
diff
changeset
|
5346 (wp.rcNormalPosition.right - wp.rcNormalPosition.left) - |
99cff808ae1e
(x_calc_absolute_position): Fix frame positioning
Kim F. Storm <storm@cua.dk>
parents:
71546
diff
changeset
|
5347 (client_rect.right - client_rect.left); |
99cff808ae1e
(x_calc_absolute_position): Fix frame positioning
Kim F. Storm <storm@cua.dk>
parents:
71546
diff
changeset
|
5348 |
99cff808ae1e
(x_calc_absolute_position): Fix frame positioning
Kim F. Storm <storm@cua.dk>
parents:
71546
diff
changeset
|
5349 top_bottom_borders_height = |
99cff808ae1e
(x_calc_absolute_position): Fix frame positioning
Kim F. Storm <storm@cua.dk>
parents:
71546
diff
changeset
|
5350 (wp.rcNormalPosition.bottom - wp.rcNormalPosition.top) - |
99cff808ae1e
(x_calc_absolute_position): Fix frame positioning
Kim F. Storm <storm@cua.dk>
parents:
71546
diff
changeset
|
5351 (client_rect.bottom - client_rect.top); |
99cff808ae1e
(x_calc_absolute_position): Fix frame positioning
Kim F. Storm <storm@cua.dk>
parents:
71546
diff
changeset
|
5352 } |
99cff808ae1e
(x_calc_absolute_position): Fix frame positioning
Kim F. Storm <storm@cua.dk>
parents:
71546
diff
changeset
|
5353 else |
99cff808ae1e
(x_calc_absolute_position): Fix frame positioning
Kim F. Storm <storm@cua.dk>
parents:
71546
diff
changeset
|
5354 { |
99cff808ae1e
(x_calc_absolute_position): Fix frame positioning
Kim F. Storm <storm@cua.dk>
parents:
71546
diff
changeset
|
5355 /* Use sensible default values. */ |
99cff808ae1e
(x_calc_absolute_position): Fix frame positioning
Kim F. Storm <storm@cua.dk>
parents:
71546
diff
changeset
|
5356 left_right_borders_width = 8; |
99cff808ae1e
(x_calc_absolute_position): Fix frame positioning
Kim F. Storm <storm@cua.dk>
parents:
71546
diff
changeset
|
5357 top_bottom_borders_height = 32; |
99cff808ae1e
(x_calc_absolute_position): Fix frame positioning
Kim F. Storm <storm@cua.dk>
parents:
71546
diff
changeset
|
5358 } |
99cff808ae1e
(x_calc_absolute_position): Fix frame positioning
Kim F. Storm <storm@cua.dk>
parents:
71546
diff
changeset
|
5359 |
99cff808ae1e
(x_calc_absolute_position): Fix frame positioning
Kim F. Storm <storm@cua.dk>
parents:
71546
diff
changeset
|
5360 /* Treat negative positions as relative to the rightmost bottommost |
13434 | 5361 position that fits on the screen. */ |
5362 if (flags & XNegative) | |
51204
082b768216a0
Make (several) trivial substitutions for renamed and
Kim F. Storm <storm@cua.dk>
parents:
50441
diff
changeset
|
5363 f->left_pos = (FRAME_W32_DISPLAY_INFO (f)->width |
082b768216a0
Make (several) trivial substitutions for renamed and
Kim F. Storm <storm@cua.dk>
parents:
50441
diff
changeset
|
5364 - FRAME_PIXEL_WIDTH (f) |
72008
99cff808ae1e
(x_calc_absolute_position): Fix frame positioning
Kim F. Storm <storm@cua.dk>
parents:
71546
diff
changeset
|
5365 + f->left_pos |
99cff808ae1e
(x_calc_absolute_position): Fix frame positioning
Kim F. Storm <storm@cua.dk>
parents:
71546
diff
changeset
|
5366 - (left_right_borders_width - 1)); |
30988
a69a2ac4345b
(help_echo_window): New variable.
Jason Rumney <jasonr@gnu.org>
parents:
30730
diff
changeset
|
5367 |
13434 | 5368 if (flags & YNegative) |
51204
082b768216a0
Make (several) trivial substitutions for renamed and
Kim F. Storm <storm@cua.dk>
parents:
50441
diff
changeset
|
5369 f->top_pos = (FRAME_W32_DISPLAY_INFO (f)->height |
082b768216a0
Make (several) trivial substitutions for renamed and
Kim F. Storm <storm@cua.dk>
parents:
50441
diff
changeset
|
5370 - FRAME_PIXEL_HEIGHT (f) |
72008
99cff808ae1e
(x_calc_absolute_position): Fix frame positioning
Kim F. Storm <storm@cua.dk>
parents:
71546
diff
changeset
|
5371 + f->top_pos |
99cff808ae1e
(x_calc_absolute_position): Fix frame positioning
Kim F. Storm <storm@cua.dk>
parents:
71546
diff
changeset
|
5372 - (top_bottom_borders_height - 1)); |
99cff808ae1e
(x_calc_absolute_position): Fix frame positioning
Kim F. Storm <storm@cua.dk>
parents:
71546
diff
changeset
|
5373 |
99cff808ae1e
(x_calc_absolute_position): Fix frame positioning
Kim F. Storm <storm@cua.dk>
parents:
71546
diff
changeset
|
5374 /* The left_pos and top_pos are now relative to the top and left |
99cff808ae1e
(x_calc_absolute_position): Fix frame positioning
Kim F. Storm <storm@cua.dk>
parents:
71546
diff
changeset
|
5375 screen edges, so the flags should correspond. */ |
51204
082b768216a0
Make (several) trivial substitutions for renamed and
Kim F. Storm <storm@cua.dk>
parents:
50441
diff
changeset
|
5376 f->size_hint_flags &= ~ (XNegative | YNegative); |
13434 | 5377 } |
5378 | |
5379 /* CHANGE_GRAVITY is 1 when calling from Fset_frame_position, | |
5380 to really change the position, and 0 when calling from | |
5381 x_make_frame_visible (in that case, XOFF and YOFF are the current | |
5382 position values). It is -1 when calling from x_set_frame_parameters, | |
5383 which means, do adjust for borders but don't change the gravity. */ | |
5384 | |
29321
8e2be36bb1c6
Format and doc changes to bring closer to xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
28369
diff
changeset
|
5385 void |
13434 | 5386 x_set_offset (f, xoff, yoff, change_gravity) |
5387 struct frame *f; | |
5388 register int xoff, yoff; | |
5389 int change_gravity; | |
5390 { | |
5391 int modified_top, modified_left; | |
5392 | |
5393 if (change_gravity > 0) | |
5394 { | |
51204
082b768216a0
Make (several) trivial substitutions for renamed and
Kim F. Storm <storm@cua.dk>
parents:
50441
diff
changeset
|
5395 f->top_pos = yoff; |
082b768216a0
Make (several) trivial substitutions for renamed and
Kim F. Storm <storm@cua.dk>
parents:
50441
diff
changeset
|
5396 f->left_pos = xoff; |
082b768216a0
Make (several) trivial substitutions for renamed and
Kim F. Storm <storm@cua.dk>
parents:
50441
diff
changeset
|
5397 f->size_hint_flags &= ~ (XNegative | YNegative); |
13434 | 5398 if (xoff < 0) |
51204
082b768216a0
Make (several) trivial substitutions for renamed and
Kim F. Storm <storm@cua.dk>
parents:
50441
diff
changeset
|
5399 f->size_hint_flags |= XNegative; |
13434 | 5400 if (yoff < 0) |
51204
082b768216a0
Make (several) trivial substitutions for renamed and
Kim F. Storm <storm@cua.dk>
parents:
50441
diff
changeset
|
5401 f->size_hint_flags |= YNegative; |
082b768216a0
Make (several) trivial substitutions for renamed and
Kim F. Storm <storm@cua.dk>
parents:
50441
diff
changeset
|
5402 f->win_gravity = NorthWestGravity; |
13434 | 5403 } |
5404 x_calc_absolute_position (f); | |
5405 | |
5406 BLOCK_INPUT; | |
5407 x_wm_set_size_hint (f, (long) 0, 0); | |
5408 | |
51204
082b768216a0
Make (several) trivial substitutions for renamed and
Kim F. Storm <storm@cua.dk>
parents:
50441
diff
changeset
|
5409 modified_left = f->left_pos; |
082b768216a0
Make (several) trivial substitutions for renamed and
Kim F. Storm <storm@cua.dk>
parents:
50441
diff
changeset
|
5410 modified_top = f->top_pos; |
13434 | 5411 |
16588
481b7874a1e9
Change identifiers of the form win32* to w32*.
Geoff Voelker <voelker@cs.washington.edu>
parents:
16326
diff
changeset
|
5412 my_set_window_pos (FRAME_W32_WINDOW (f), |
15151
ed6ddfc0d954
(Vwindow_system): Declared.
Geoff Voelker <voelker@cs.washington.edu>
parents:
15035
diff
changeset
|
5413 NULL, |
ed6ddfc0d954
(Vwindow_system): Declared.
Geoff Voelker <voelker@cs.washington.edu>
parents:
15035
diff
changeset
|
5414 modified_left, modified_top, |
23507
8a448630a9b5
Include fontset.h. Define codepage macros.
Geoff Voelker <voelker@cs.washington.edu>
parents:
22059
diff
changeset
|
5415 0, 0, |
19713
043ccce224fb
(SIF_*): Win95 macros defined for NT.
Geoff Voelker <voelker@cs.washington.edu>
parents:
18877
diff
changeset
|
5416 SWP_NOZORDER | SWP_NOSIZE | SWP_NOACTIVATE); |
13434 | 5417 UNBLOCK_INPUT; |
5418 } | |
5419 | |
43396
9b50c09298f6
* w32term.c (x_autoselect_window_p): New variable.
Jason Rumney <jasonr@gnu.org>
parents:
43373
diff
changeset
|
5420 |
9b50c09298f6
* w32term.c (x_autoselect_window_p): New variable.
Jason Rumney <jasonr@gnu.org>
parents:
43373
diff
changeset
|
5421 /* Check if we need to resize the frame due to a fullscreen request. |
9b50c09298f6
* w32term.c (x_autoselect_window_p): New variable.
Jason Rumney <jasonr@gnu.org>
parents:
43373
diff
changeset
|
5422 If so needed, resize the frame. */ |
9b50c09298f6
* w32term.c (x_autoselect_window_p): New variable.
Jason Rumney <jasonr@gnu.org>
parents:
43373
diff
changeset
|
5423 static void |
9b50c09298f6
* w32term.c (x_autoselect_window_p): New variable.
Jason Rumney <jasonr@gnu.org>
parents:
43373
diff
changeset
|
5424 x_check_fullscreen (f) |
9b50c09298f6
* w32term.c (x_autoselect_window_p): New variable.
Jason Rumney <jasonr@gnu.org>
parents:
43373
diff
changeset
|
5425 struct frame *f; |
9b50c09298f6
* w32term.c (x_autoselect_window_p): New variable.
Jason Rumney <jasonr@gnu.org>
parents:
43373
diff
changeset
|
5426 { |
51204
082b768216a0
Make (several) trivial substitutions for renamed and
Kim F. Storm <storm@cua.dk>
parents:
50441
diff
changeset
|
5427 if (f->want_fullscreen & FULLSCREEN_BOTH) |
43396
9b50c09298f6
* w32term.c (x_autoselect_window_p): New variable.
Jason Rumney <jasonr@gnu.org>
parents:
43373
diff
changeset
|
5428 { |
9b50c09298f6
* w32term.c (x_autoselect_window_p): New variable.
Jason Rumney <jasonr@gnu.org>
parents:
43373
diff
changeset
|
5429 int width, height, ign; |
48218
01e253345507
(w32_draw_fringe_bitmap): Remove unused local variable window.
Juanma Barranquero <lekktu@gmail.com>
parents:
48025
diff
changeset
|
5430 |
51204
082b768216a0
Make (several) trivial substitutions for renamed and
Kim F. Storm <storm@cua.dk>
parents:
50441
diff
changeset
|
5431 x_real_positions (f, &f->left_pos, &f->top_pos); |
43396
9b50c09298f6
* w32term.c (x_autoselect_window_p): New variable.
Jason Rumney <jasonr@gnu.org>
parents:
43373
diff
changeset
|
5432 |
9b50c09298f6
* w32term.c (x_autoselect_window_p): New variable.
Jason Rumney <jasonr@gnu.org>
parents:
43373
diff
changeset
|
5433 x_fullscreen_adjust (f, &width, &height, &ign, &ign); |
48218
01e253345507
(w32_draw_fringe_bitmap): Remove unused local variable window.
Juanma Barranquero <lekktu@gmail.com>
parents:
48025
diff
changeset
|
5434 |
43396
9b50c09298f6
* w32term.c (x_autoselect_window_p): New variable.
Jason Rumney <jasonr@gnu.org>
parents:
43373
diff
changeset
|
5435 /* We do not need to move the window, it shall be taken care of |
52754
d08832a11cfd
* w32term.c (w32_read_socket): Remove call to x_check_fullscreen_move,
Jan Djärv <jan.h.d@swipnet.se>
parents:
52401
diff
changeset
|
5436 when setting WM manager hints. */ |
51204
082b768216a0
Make (several) trivial substitutions for renamed and
Kim F. Storm <storm@cua.dk>
parents:
50441
diff
changeset
|
5437 if (FRAME_COLS (f) != width || FRAME_LINES (f) != height) |
43396
9b50c09298f6
* w32term.c (x_autoselect_window_p): New variable.
Jason Rumney <jasonr@gnu.org>
parents:
43373
diff
changeset
|
5438 { |
9b50c09298f6
* w32term.c (x_autoselect_window_p): New variable.
Jason Rumney <jasonr@gnu.org>
parents:
43373
diff
changeset
|
5439 change_frame_size (f, height, width, 0, 1, 0); |
9b50c09298f6
* w32term.c (x_autoselect_window_p): New variable.
Jason Rumney <jasonr@gnu.org>
parents:
43373
diff
changeset
|
5440 SET_FRAME_GARBAGED (f); |
9b50c09298f6
* w32term.c (x_autoselect_window_p): New variable.
Jason Rumney <jasonr@gnu.org>
parents:
43373
diff
changeset
|
5441 cancel_mouse_face (f); |
9b50c09298f6
* w32term.c (x_autoselect_window_p): New variable.
Jason Rumney <jasonr@gnu.org>
parents:
43373
diff
changeset
|
5442 |
9b50c09298f6
* w32term.c (x_autoselect_window_p): New variable.
Jason Rumney <jasonr@gnu.org>
parents:
43373
diff
changeset
|
5443 /* Wait for the change of frame size to occur */ |
51204
082b768216a0
Make (several) trivial substitutions for renamed and
Kim F. Storm <storm@cua.dk>
parents:
50441
diff
changeset
|
5444 f->want_fullscreen |= FULLSCREEN_WAIT; |
43396
9b50c09298f6
* w32term.c (x_autoselect_window_p): New variable.
Jason Rumney <jasonr@gnu.org>
parents:
43373
diff
changeset
|
5445 } |
9b50c09298f6
* w32term.c (x_autoselect_window_p): New variable.
Jason Rumney <jasonr@gnu.org>
parents:
43373
diff
changeset
|
5446 } |
9b50c09298f6
* w32term.c (x_autoselect_window_p): New variable.
Jason Rumney <jasonr@gnu.org>
parents:
43373
diff
changeset
|
5447 } |
9b50c09298f6
* w32term.c (x_autoselect_window_p): New variable.
Jason Rumney <jasonr@gnu.org>
parents:
43373
diff
changeset
|
5448 |
13434 | 5449 /* Call this to change the size of frame F's x-window. |
5450 If CHANGE_GRAVITY is 1, we change to top-left-corner window gravity | |
5451 for this size change and subsequent size changes. | |
5452 Otherwise we leave the window gravity unchanged. */ | |
35384
e50a7f9ce65e
(x_produce_stretch_glyph): Only use Qspace when GLYPH_DEBUG is defined.
Jason Rumney <jasonr@gnu.org>
parents:
35287
diff
changeset
|
5453 |
27402
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
5454 void |
13434 | 5455 x_set_window_size (f, change_gravity, cols, rows) |
5456 struct frame *f; | |
5457 int change_gravity; | |
5458 int cols, rows; | |
5459 { | |
5460 int pixelwidth, pixelheight; | |
48218
01e253345507
(w32_draw_fringe_bitmap): Remove unused local variable window.
Juanma Barranquero <lekktu@gmail.com>
parents:
48025
diff
changeset
|
5461 |
13434 | 5462 BLOCK_INPUT; |
48218
01e253345507
(w32_draw_fringe_bitmap): Remove unused local variable window.
Juanma Barranquero <lekktu@gmail.com>
parents:
48025
diff
changeset
|
5463 |
13434 | 5464 check_frame_size (f, &rows, &cols); |
51204
082b768216a0
Make (several) trivial substitutions for renamed and
Kim F. Storm <storm@cua.dk>
parents:
50441
diff
changeset
|
5465 f->scroll_bar_actual_width |
082b768216a0
Make (several) trivial substitutions for renamed and
Kim F. Storm <storm@cua.dk>
parents:
50441
diff
changeset
|
5466 = FRAME_SCROLL_BAR_COLS (f) * FRAME_COLUMN_WIDTH (f); |
41727
d5baaa7df054
Merged fringe width related changes from xterm.c.
Kim F. Storm <storm@cua.dk>
parents:
41639
diff
changeset
|
5467 |
50096 | 5468 compute_fringe_widths (f, 0); |
41727
d5baaa7df054
Merged fringe width related changes from xterm.c.
Kim F. Storm <storm@cua.dk>
parents:
41639
diff
changeset
|
5469 |
51204
082b768216a0
Make (several) trivial substitutions for renamed and
Kim F. Storm <storm@cua.dk>
parents:
50441
diff
changeset
|
5470 pixelwidth = FRAME_TEXT_COLS_TO_PIXEL_WIDTH (f, cols); |
082b768216a0
Make (several) trivial substitutions for renamed and
Kim F. Storm <storm@cua.dk>
parents:
50441
diff
changeset
|
5471 pixelheight = FRAME_TEXT_LINES_TO_PIXEL_HEIGHT (f, rows); |
082b768216a0
Make (several) trivial substitutions for renamed and
Kim F. Storm <storm@cua.dk>
parents:
50441
diff
changeset
|
5472 |
082b768216a0
Make (several) trivial substitutions for renamed and
Kim F. Storm <storm@cua.dk>
parents:
50441
diff
changeset
|
5473 f->win_gravity = NorthWestGravity; |
13434 | 5474 x_wm_set_size_hint (f, (long) 0, 0); |
48218
01e253345507
(w32_draw_fringe_bitmap): Remove unused local variable window.
Juanma Barranquero <lekktu@gmail.com>
parents:
48025
diff
changeset
|
5475 |
13434 | 5476 { |
5477 RECT rect; | |
5478 | |
5479 rect.left = rect.top = 0; | |
5480 rect.right = pixelwidth; | |
5481 rect.bottom = pixelheight; | |
48218
01e253345507
(w32_draw_fringe_bitmap): Remove unused local variable window.
Juanma Barranquero <lekktu@gmail.com>
parents:
48025
diff
changeset
|
5482 |
16588
481b7874a1e9
Change identifiers of the form win32* to w32*.
Geoff Voelker <voelker@cs.washington.edu>
parents:
16326
diff
changeset
|
5483 AdjustWindowRect(&rect, f->output_data.w32->dwStyle, |
14351
fb2ce4ebc871
ubackout 1.3 and 1.4
Geoff Voelker <voelker@cs.washington.edu>
parents:
14248
diff
changeset
|
5484 FRAME_EXTERNAL_MENU_BAR (f)); |
48218
01e253345507
(w32_draw_fringe_bitmap): Remove unused local variable window.
Juanma Barranquero <lekktu@gmail.com>
parents:
48025
diff
changeset
|
5485 |
16588
481b7874a1e9
Change identifiers of the form win32* to w32*.
Geoff Voelker <voelker@cs.washington.edu>
parents:
16326
diff
changeset
|
5486 my_set_window_pos (FRAME_W32_WINDOW (f), |
48218
01e253345507
(w32_draw_fringe_bitmap): Remove unused local variable window.
Juanma Barranquero <lekktu@gmail.com>
parents:
48025
diff
changeset
|
5487 NULL, |
15151
ed6ddfc0d954
(Vwindow_system): Declared.
Geoff Voelker <voelker@cs.washington.edu>
parents:
15035
diff
changeset
|
5488 0, 0, |
19713
043ccce224fb
(SIF_*): Win95 macros defined for NT.
Geoff Voelker <voelker@cs.washington.edu>
parents:
18877
diff
changeset
|
5489 rect.right - rect.left, |
043ccce224fb
(SIF_*): Win95 macros defined for NT.
Geoff Voelker <voelker@cs.washington.edu>
parents:
18877
diff
changeset
|
5490 rect.bottom - rect.top, |
043ccce224fb
(SIF_*): Win95 macros defined for NT.
Geoff Voelker <voelker@cs.washington.edu>
parents:
18877
diff
changeset
|
5491 SWP_NOZORDER | SWP_NOMOVE | SWP_NOACTIVATE); |
13434 | 5492 } |
48218
01e253345507
(w32_draw_fringe_bitmap): Remove unused local variable window.
Juanma Barranquero <lekktu@gmail.com>
parents:
48025
diff
changeset
|
5493 |
13434 | 5494 /* Now, strictly speaking, we can't be sure that this is accurate, |
5495 but the window manager will get around to dealing with the size | |
5496 change request eventually, and we'll hear how it went when the | |
5497 ConfigureNotify event gets here. | |
48218
01e253345507
(w32_draw_fringe_bitmap): Remove unused local variable window.
Juanma Barranquero <lekktu@gmail.com>
parents:
48025
diff
changeset
|
5498 |
13434 | 5499 We could just not bother storing any of this information here, |
5500 and let the ConfigureNotify event set everything up, but that | |
30240
2c2a7ebd2c15
(help_echo_object, help_echo_pos): New variables.
Jason Rumney <jasonr@gnu.org>
parents:
30199
diff
changeset
|
5501 might be kind of confusing to the Lisp code, since size changes |
13434 | 5502 wouldn't be reported in the frame parameters until some random |
27402
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
5503 point in the future when the ConfigureNotify event arrives. |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
5504 |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
5505 We pass 1 for DELAY since we can't run Lisp code inside of |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
5506 a BLOCK_INPUT. */ |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
5507 change_frame_size (f, rows, cols, 0, 1, 0); |
51204
082b768216a0
Make (several) trivial substitutions for renamed and
Kim F. Storm <storm@cua.dk>
parents:
50441
diff
changeset
|
5508 FRAME_PIXEL_WIDTH (f) = pixelwidth; |
082b768216a0
Make (several) trivial substitutions for renamed and
Kim F. Storm <storm@cua.dk>
parents:
50441
diff
changeset
|
5509 FRAME_PIXEL_HEIGHT (f) = pixelheight; |
13434 | 5510 |
19713
043ccce224fb
(SIF_*): Win95 macros defined for NT.
Geoff Voelker <voelker@cs.washington.edu>
parents:
18877
diff
changeset
|
5511 /* We've set {FRAME,PIXEL}_{WIDTH,HEIGHT} to the values we hope to |
043ccce224fb
(SIF_*): Win95 macros defined for NT.
Geoff Voelker <voelker@cs.washington.edu>
parents:
18877
diff
changeset
|
5512 receive in the ConfigureNotify event; if we get what we asked |
043ccce224fb
(SIF_*): Win95 macros defined for NT.
Geoff Voelker <voelker@cs.washington.edu>
parents:
18877
diff
changeset
|
5513 for, then the event won't cause the screen to become garbaged, so |
043ccce224fb
(SIF_*): Win95 macros defined for NT.
Geoff Voelker <voelker@cs.washington.edu>
parents:
18877
diff
changeset
|
5514 we have to make sure to do it here. */ |
043ccce224fb
(SIF_*): Win95 macros defined for NT.
Geoff Voelker <voelker@cs.washington.edu>
parents:
18877
diff
changeset
|
5515 SET_FRAME_GARBAGED (f); |
043ccce224fb
(SIF_*): Win95 macros defined for NT.
Geoff Voelker <voelker@cs.washington.edu>
parents:
18877
diff
changeset
|
5516 |
13434 | 5517 /* If cursor was outside the new size, mark it as off. */ |
27402
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
5518 mark_window_cursors_off (XWINDOW (f->root_window)); |
13434 | 5519 |
19713
043ccce224fb
(SIF_*): Win95 macros defined for NT.
Geoff Voelker <voelker@cs.washington.edu>
parents:
18877
diff
changeset
|
5520 /* Clear out any recollection of where the mouse highlighting was, |
48218
01e253345507
(w32_draw_fringe_bitmap): Remove unused local variable window.
Juanma Barranquero <lekktu@gmail.com>
parents:
48025
diff
changeset
|
5521 since it might be in a place that's outside the new frame size. |
19713
043ccce224fb
(SIF_*): Win95 macros defined for NT.
Geoff Voelker <voelker@cs.washington.edu>
parents:
18877
diff
changeset
|
5522 Actually checking whether it is outside is a pain in the neck, |
043ccce224fb
(SIF_*): Win95 macros defined for NT.
Geoff Voelker <voelker@cs.washington.edu>
parents:
18877
diff
changeset
|
5523 so don't try--just let the highlighting be done afresh with new size. */ |
24827
487fdbc8de0f
(cancel_mouse_face): new function. See equiv
Karl Heuer <kwzh@gnu.org>
parents:
24752
diff
changeset
|
5524 cancel_mouse_face (f); |
487fdbc8de0f
(cancel_mouse_face): new function. See equiv
Karl Heuer <kwzh@gnu.org>
parents:
24752
diff
changeset
|
5525 |
13434 | 5526 UNBLOCK_INPUT; |
5527 } | |
5528 | |
5529 /* Mouse warping. */ | |
5530 | |
30240
2c2a7ebd2c15
(help_echo_object, help_echo_pos): New variables.
Jason Rumney <jasonr@gnu.org>
parents:
30199
diff
changeset
|
5531 void x_set_mouse_pixel_position (struct frame *f, int pix_x, int pix_y); |
2c2a7ebd2c15
(help_echo_object, help_echo_pos): New variables.
Jason Rumney <jasonr@gnu.org>
parents:
30199
diff
changeset
|
5532 |
2c2a7ebd2c15
(help_echo_object, help_echo_pos): New variables.
Jason Rumney <jasonr@gnu.org>
parents:
30199
diff
changeset
|
5533 void |
2c2a7ebd2c15
(help_echo_object, help_echo_pos): New variables.
Jason Rumney <jasonr@gnu.org>
parents:
30199
diff
changeset
|
5534 x_set_mouse_position (f, x, y) |
2c2a7ebd2c15
(help_echo_object, help_echo_pos): New variables.
Jason Rumney <jasonr@gnu.org>
parents:
30199
diff
changeset
|
5535 struct frame *f; |
2c2a7ebd2c15
(help_echo_object, help_echo_pos): New variables.
Jason Rumney <jasonr@gnu.org>
parents:
30199
diff
changeset
|
5536 int x, y; |
2c2a7ebd2c15
(help_echo_object, help_echo_pos): New variables.
Jason Rumney <jasonr@gnu.org>
parents:
30199
diff
changeset
|
5537 { |
2c2a7ebd2c15
(help_echo_object, help_echo_pos): New variables.
Jason Rumney <jasonr@gnu.org>
parents:
30199
diff
changeset
|
5538 int pix_x, pix_y; |
2c2a7ebd2c15
(help_echo_object, help_echo_pos): New variables.
Jason Rumney <jasonr@gnu.org>
parents:
30199
diff
changeset
|
5539 |
51204
082b768216a0
Make (several) trivial substitutions for renamed and
Kim F. Storm <storm@cua.dk>
parents:
50441
diff
changeset
|
5540 pix_x = FRAME_COL_TO_PIXEL_X (f, x) + FRAME_COLUMN_WIDTH (f) / 2; |
082b768216a0
Make (several) trivial substitutions for renamed and
Kim F. Storm <storm@cua.dk>
parents:
50441
diff
changeset
|
5541 pix_y = FRAME_LINE_TO_PIXEL_Y (f, y) + FRAME_LINE_HEIGHT (f) / 2; |
30240
2c2a7ebd2c15
(help_echo_object, help_echo_pos): New variables.
Jason Rumney <jasonr@gnu.org>
parents:
30199
diff
changeset
|
5542 |
2c2a7ebd2c15
(help_echo_object, help_echo_pos): New variables.
Jason Rumney <jasonr@gnu.org>
parents:
30199
diff
changeset
|
5543 if (pix_x < 0) pix_x = 0; |
51204
082b768216a0
Make (several) trivial substitutions for renamed and
Kim F. Storm <storm@cua.dk>
parents:
50441
diff
changeset
|
5544 if (pix_x > FRAME_PIXEL_WIDTH (f)) pix_x = FRAME_PIXEL_WIDTH (f); |
30240
2c2a7ebd2c15
(help_echo_object, help_echo_pos): New variables.
Jason Rumney <jasonr@gnu.org>
parents:
30199
diff
changeset
|
5545 |
2c2a7ebd2c15
(help_echo_object, help_echo_pos): New variables.
Jason Rumney <jasonr@gnu.org>
parents:
30199
diff
changeset
|
5546 if (pix_y < 0) pix_y = 0; |
51204
082b768216a0
Make (several) trivial substitutions for renamed and
Kim F. Storm <storm@cua.dk>
parents:
50441
diff
changeset
|
5547 if (pix_y > FRAME_PIXEL_HEIGHT (f)) pix_y = FRAME_PIXEL_HEIGHT (f); |
30240
2c2a7ebd2c15
(help_echo_object, help_echo_pos): New variables.
Jason Rumney <jasonr@gnu.org>
parents:
30199
diff
changeset
|
5548 |
2c2a7ebd2c15
(help_echo_object, help_echo_pos): New variables.
Jason Rumney <jasonr@gnu.org>
parents:
30199
diff
changeset
|
5549 x_set_mouse_pixel_position (f, pix_x, pix_y); |
2c2a7ebd2c15
(help_echo_object, help_echo_pos): New variables.
Jason Rumney <jasonr@gnu.org>
parents:
30199
diff
changeset
|
5550 } |
2c2a7ebd2c15
(help_echo_object, help_echo_pos): New variables.
Jason Rumney <jasonr@gnu.org>
parents:
30199
diff
changeset
|
5551 |
13434 | 5552 void |
15616
a73836346910
(x_set_mouse_pixel_position): Adjust coords by frame position.
Miles Bader <miles@gnu.org>
parents:
15435
diff
changeset
|
5553 x_set_mouse_pixel_position (f, pix_x, pix_y) |
a73836346910
(x_set_mouse_pixel_position): Adjust coords by frame position.
Miles Bader <miles@gnu.org>
parents:
15435
diff
changeset
|
5554 struct frame *f; |
a73836346910
(x_set_mouse_pixel_position): Adjust coords by frame position.
Miles Bader <miles@gnu.org>
parents:
15435
diff
changeset
|
5555 int pix_x, pix_y; |
a73836346910
(x_set_mouse_pixel_position): Adjust coords by frame position.
Miles Bader <miles@gnu.org>
parents:
15435
diff
changeset
|
5556 { |
19713
043ccce224fb
(SIF_*): Win95 macros defined for NT.
Geoff Voelker <voelker@cs.washington.edu>
parents:
18877
diff
changeset
|
5557 RECT rect; |
043ccce224fb
(SIF_*): Win95 macros defined for NT.
Geoff Voelker <voelker@cs.washington.edu>
parents:
18877
diff
changeset
|
5558 POINT pt; |
043ccce224fb
(SIF_*): Win95 macros defined for NT.
Geoff Voelker <voelker@cs.washington.edu>
parents:
18877
diff
changeset
|
5559 |
15616
a73836346910
(x_set_mouse_pixel_position): Adjust coords by frame position.
Miles Bader <miles@gnu.org>
parents:
15435
diff
changeset
|
5560 BLOCK_INPUT; |
a73836346910
(x_set_mouse_pixel_position): Adjust coords by frame position.
Miles Bader <miles@gnu.org>
parents:
15435
diff
changeset
|
5561 |
19713
043ccce224fb
(SIF_*): Win95 macros defined for NT.
Geoff Voelker <voelker@cs.washington.edu>
parents:
18877
diff
changeset
|
5562 GetClientRect (FRAME_W32_WINDOW (f), &rect); |
043ccce224fb
(SIF_*): Win95 macros defined for NT.
Geoff Voelker <voelker@cs.washington.edu>
parents:
18877
diff
changeset
|
5563 pt.x = rect.left + pix_x; |
043ccce224fb
(SIF_*): Win95 macros defined for NT.
Geoff Voelker <voelker@cs.washington.edu>
parents:
18877
diff
changeset
|
5564 pt.y = rect.top + pix_y; |
043ccce224fb
(SIF_*): Win95 macros defined for NT.
Geoff Voelker <voelker@cs.washington.edu>
parents:
18877
diff
changeset
|
5565 ClientToScreen (FRAME_W32_WINDOW (f), &pt); |
043ccce224fb
(SIF_*): Win95 macros defined for NT.
Geoff Voelker <voelker@cs.washington.edu>
parents:
18877
diff
changeset
|
5566 |
043ccce224fb
(SIF_*): Win95 macros defined for NT.
Geoff Voelker <voelker@cs.washington.edu>
parents:
18877
diff
changeset
|
5567 SetCursorPos (pt.x, pt.y); |
15616
a73836346910
(x_set_mouse_pixel_position): Adjust coords by frame position.
Miles Bader <miles@gnu.org>
parents:
15435
diff
changeset
|
5568 |
a73836346910
(x_set_mouse_pixel_position): Adjust coords by frame position.
Miles Bader <miles@gnu.org>
parents:
15435
diff
changeset
|
5569 UNBLOCK_INPUT; |
a73836346910
(x_set_mouse_pixel_position): Adjust coords by frame position.
Miles Bader <miles@gnu.org>
parents:
15435
diff
changeset
|
5570 } |
a73836346910
(x_set_mouse_pixel_position): Adjust coords by frame position.
Miles Bader <miles@gnu.org>
parents:
15435
diff
changeset
|
5571 |
13434 | 5572 |
5573 /* focus shifting, raising and lowering. */ | |
5574 | |
30240
2c2a7ebd2c15
(help_echo_object, help_echo_pos): New variables.
Jason Rumney <jasonr@gnu.org>
parents:
30199
diff
changeset
|
5575 void |
13434 | 5576 x_focus_on_frame (f) |
5577 struct frame *f; | |
5578 { | |
19713
043ccce224fb
(SIF_*): Win95 macros defined for NT.
Geoff Voelker <voelker@cs.washington.edu>
parents:
18877
diff
changeset
|
5579 struct w32_display_info *dpyinfo = &one_w32_display_info; |
043ccce224fb
(SIF_*): Win95 macros defined for NT.
Geoff Voelker <voelker@cs.washington.edu>
parents:
18877
diff
changeset
|
5580 |
043ccce224fb
(SIF_*): Win95 macros defined for NT.
Geoff Voelker <voelker@cs.washington.edu>
parents:
18877
diff
changeset
|
5581 /* Give input focus to frame. */ |
043ccce224fb
(SIF_*): Win95 macros defined for NT.
Geoff Voelker <voelker@cs.washington.edu>
parents:
18877
diff
changeset
|
5582 BLOCK_INPUT; |
043ccce224fb
(SIF_*): Win95 macros defined for NT.
Geoff Voelker <voelker@cs.washington.edu>
parents:
18877
diff
changeset
|
5583 #if 0 |
043ccce224fb
(SIF_*): Win95 macros defined for NT.
Geoff Voelker <voelker@cs.washington.edu>
parents:
18877
diff
changeset
|
5584 /* Try not to change its Z-order if possible. */ |
043ccce224fb
(SIF_*): Win95 macros defined for NT.
Geoff Voelker <voelker@cs.washington.edu>
parents:
18877
diff
changeset
|
5585 if (x_window_to_frame (dpyinfo, GetForegroundWindow ())) |
043ccce224fb
(SIF_*): Win95 macros defined for NT.
Geoff Voelker <voelker@cs.washington.edu>
parents:
18877
diff
changeset
|
5586 my_set_focus (f, FRAME_W32_WINDOW (f)); |
043ccce224fb
(SIF_*): Win95 macros defined for NT.
Geoff Voelker <voelker@cs.washington.edu>
parents:
18877
diff
changeset
|
5587 else |
043ccce224fb
(SIF_*): Win95 macros defined for NT.
Geoff Voelker <voelker@cs.washington.edu>
parents:
18877
diff
changeset
|
5588 #endif |
21614
2624d8dcc73f
(Vw32_recognize_altgr): New variable.
Geoff Voelker <voelker@cs.washington.edu>
parents:
21456
diff
changeset
|
5589 my_set_foreground_window (FRAME_W32_WINDOW (f)); |
19713
043ccce224fb
(SIF_*): Win95 macros defined for NT.
Geoff Voelker <voelker@cs.washington.edu>
parents:
18877
diff
changeset
|
5590 UNBLOCK_INPUT; |
13434 | 5591 } |
5592 | |
30240
2c2a7ebd2c15
(help_echo_object, help_echo_pos): New variables.
Jason Rumney <jasonr@gnu.org>
parents:
30199
diff
changeset
|
5593 void |
13434 | 5594 x_unfocus_frame (f) |
5595 struct frame *f; | |
5596 { | |
5597 } | |
5598 | |
5599 /* Raise frame F. */ | |
27402
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
5600 void |
13434 | 5601 x_raise_frame (f) |
5602 struct frame *f; | |
5603 { | |
19713
043ccce224fb
(SIF_*): Win95 macros defined for NT.
Geoff Voelker <voelker@cs.washington.edu>
parents:
18877
diff
changeset
|
5604 BLOCK_INPUT; |
043ccce224fb
(SIF_*): Win95 macros defined for NT.
Geoff Voelker <voelker@cs.washington.edu>
parents:
18877
diff
changeset
|
5605 |
043ccce224fb
(SIF_*): Win95 macros defined for NT.
Geoff Voelker <voelker@cs.washington.edu>
parents:
18877
diff
changeset
|
5606 /* Strictly speaking, raise-frame should only change the frame's Z |
043ccce224fb
(SIF_*): Win95 macros defined for NT.
Geoff Voelker <voelker@cs.washington.edu>
parents:
18877
diff
changeset
|
5607 order, leaving input focus unchanged. This is reasonable behaviour |
043ccce224fb
(SIF_*): Win95 macros defined for NT.
Geoff Voelker <voelker@cs.washington.edu>
parents:
18877
diff
changeset
|
5608 on X where the usual policy is point-to-focus. However, this |
043ccce224fb
(SIF_*): Win95 macros defined for NT.
Geoff Voelker <voelker@cs.washington.edu>
parents:
18877
diff
changeset
|
5609 behaviour would be very odd on Windows where the usual policy is |
043ccce224fb
(SIF_*): Win95 macros defined for NT.
Geoff Voelker <voelker@cs.washington.edu>
parents:
18877
diff
changeset
|
5610 click-to-focus. |
043ccce224fb
(SIF_*): Win95 macros defined for NT.
Geoff Voelker <voelker@cs.washington.edu>
parents:
18877
diff
changeset
|
5611 |
043ccce224fb
(SIF_*): Win95 macros defined for NT.
Geoff Voelker <voelker@cs.washington.edu>
parents:
18877
diff
changeset
|
5612 On X, if the mouse happens to be over the raised frame, it gets |
043ccce224fb
(SIF_*): Win95 macros defined for NT.
Geoff Voelker <voelker@cs.washington.edu>
parents:
18877
diff
changeset
|
5613 input focus anyway (so the window with focus will never be |
043ccce224fb
(SIF_*): Win95 macros defined for NT.
Geoff Voelker <voelker@cs.washington.edu>
parents:
18877
diff
changeset
|
5614 completely obscured) - if not, then just moving the mouse over it |
043ccce224fb
(SIF_*): Win95 macros defined for NT.
Geoff Voelker <voelker@cs.washington.edu>
parents:
18877
diff
changeset
|
5615 is sufficient to give it focus. On Windows, the user must actually |
043ccce224fb
(SIF_*): Win95 macros defined for NT.
Geoff Voelker <voelker@cs.washington.edu>
parents:
18877
diff
changeset
|
5616 click on the frame (preferrably the title bar so as not to move |
043ccce224fb
(SIF_*): Win95 macros defined for NT.
Geoff Voelker <voelker@cs.washington.edu>
parents:
18877
diff
changeset
|
5617 point), which is more awkward. Also, no other Windows program |
043ccce224fb
(SIF_*): Win95 macros defined for NT.
Geoff Voelker <voelker@cs.washington.edu>
parents:
18877
diff
changeset
|
5618 raises a window to the top but leaves another window (possibly now |
043ccce224fb
(SIF_*): Win95 macros defined for NT.
Geoff Voelker <voelker@cs.washington.edu>
parents:
18877
diff
changeset
|
5619 completely obscured) with input focus. |
043ccce224fb
(SIF_*): Win95 macros defined for NT.
Geoff Voelker <voelker@cs.washington.edu>
parents:
18877
diff
changeset
|
5620 |
043ccce224fb
(SIF_*): Win95 macros defined for NT.
Geoff Voelker <voelker@cs.washington.edu>
parents:
18877
diff
changeset
|
5621 Because there is a system setting on Windows that allows the user |
043ccce224fb
(SIF_*): Win95 macros defined for NT.
Geoff Voelker <voelker@cs.washington.edu>
parents:
18877
diff
changeset
|
5622 to choose the point to focus policy, we make the strict semantics |
043ccce224fb
(SIF_*): Win95 macros defined for NT.
Geoff Voelker <voelker@cs.washington.edu>
parents:
18877
diff
changeset
|
5623 optional, but by default we grab focus when raising. */ |
043ccce224fb
(SIF_*): Win95 macros defined for NT.
Geoff Voelker <voelker@cs.washington.edu>
parents:
18877
diff
changeset
|
5624 |
043ccce224fb
(SIF_*): Win95 macros defined for NT.
Geoff Voelker <voelker@cs.washington.edu>
parents:
18877
diff
changeset
|
5625 if (NILP (Vw32_grab_focus_on_raise)) |
13434 | 5626 { |
19713
043ccce224fb
(SIF_*): Win95 macros defined for NT.
Geoff Voelker <voelker@cs.washington.edu>
parents:
18877
diff
changeset
|
5627 /* The obvious call to my_set_window_pos doesn't work if Emacs is |
043ccce224fb
(SIF_*): Win95 macros defined for NT.
Geoff Voelker <voelker@cs.washington.edu>
parents:
18877
diff
changeset
|
5628 not already the foreground application: the frame is raised |
043ccce224fb
(SIF_*): Win95 macros defined for NT.
Geoff Voelker <voelker@cs.washington.edu>
parents:
18877
diff
changeset
|
5629 above all other frames belonging to us, but not above the |
043ccce224fb
(SIF_*): Win95 macros defined for NT.
Geoff Voelker <voelker@cs.washington.edu>
parents:
18877
diff
changeset
|
5630 current top window. To achieve that, we have to resort to this |
043ccce224fb
(SIF_*): Win95 macros defined for NT.
Geoff Voelker <voelker@cs.washington.edu>
parents:
18877
diff
changeset
|
5631 more cumbersome method. */ |
043ccce224fb
(SIF_*): Win95 macros defined for NT.
Geoff Voelker <voelker@cs.washington.edu>
parents:
18877
diff
changeset
|
5632 |
043ccce224fb
(SIF_*): Win95 macros defined for NT.
Geoff Voelker <voelker@cs.washington.edu>
parents:
18877
diff
changeset
|
5633 HDWP handle = BeginDeferWindowPos (2); |
043ccce224fb
(SIF_*): Win95 macros defined for NT.
Geoff Voelker <voelker@cs.washington.edu>
parents:
18877
diff
changeset
|
5634 if (handle) |
043ccce224fb
(SIF_*): Win95 macros defined for NT.
Geoff Voelker <voelker@cs.washington.edu>
parents:
18877
diff
changeset
|
5635 { |
043ccce224fb
(SIF_*): Win95 macros defined for NT.
Geoff Voelker <voelker@cs.washington.edu>
parents:
18877
diff
changeset
|
5636 DeferWindowPos (handle, |
043ccce224fb
(SIF_*): Win95 macros defined for NT.
Geoff Voelker <voelker@cs.washington.edu>
parents:
18877
diff
changeset
|
5637 FRAME_W32_WINDOW (f), |
043ccce224fb
(SIF_*): Win95 macros defined for NT.
Geoff Voelker <voelker@cs.washington.edu>
parents:
18877
diff
changeset
|
5638 HWND_TOP, |
043ccce224fb
(SIF_*): Win95 macros defined for NT.
Geoff Voelker <voelker@cs.washington.edu>
parents:
18877
diff
changeset
|
5639 0, 0, 0, 0, |
043ccce224fb
(SIF_*): Win95 macros defined for NT.
Geoff Voelker <voelker@cs.washington.edu>
parents:
18877
diff
changeset
|
5640 SWP_NOSIZE | SWP_NOMOVE | SWP_NOACTIVATE); |
043ccce224fb
(SIF_*): Win95 macros defined for NT.
Geoff Voelker <voelker@cs.washington.edu>
parents:
18877
diff
changeset
|
5641 |
043ccce224fb
(SIF_*): Win95 macros defined for NT.
Geoff Voelker <voelker@cs.washington.edu>
parents:
18877
diff
changeset
|
5642 DeferWindowPos (handle, |
043ccce224fb
(SIF_*): Win95 macros defined for NT.
Geoff Voelker <voelker@cs.washington.edu>
parents:
18877
diff
changeset
|
5643 GetForegroundWindow (), |
043ccce224fb
(SIF_*): Win95 macros defined for NT.
Geoff Voelker <voelker@cs.washington.edu>
parents:
18877
diff
changeset
|
5644 FRAME_W32_WINDOW (f), |
043ccce224fb
(SIF_*): Win95 macros defined for NT.
Geoff Voelker <voelker@cs.washington.edu>
parents:
18877
diff
changeset
|
5645 0, 0, 0, 0, |
043ccce224fb
(SIF_*): Win95 macros defined for NT.
Geoff Voelker <voelker@cs.washington.edu>
parents:
18877
diff
changeset
|
5646 SWP_NOSIZE | SWP_NOMOVE | SWP_NOACTIVATE); |
043ccce224fb
(SIF_*): Win95 macros defined for NT.
Geoff Voelker <voelker@cs.washington.edu>
parents:
18877
diff
changeset
|
5647 |
043ccce224fb
(SIF_*): Win95 macros defined for NT.
Geoff Voelker <voelker@cs.washington.edu>
parents:
18877
diff
changeset
|
5648 EndDeferWindowPos (handle); |
043ccce224fb
(SIF_*): Win95 macros defined for NT.
Geoff Voelker <voelker@cs.washington.edu>
parents:
18877
diff
changeset
|
5649 } |
13434 | 5650 } |
19713
043ccce224fb
(SIF_*): Win95 macros defined for NT.
Geoff Voelker <voelker@cs.washington.edu>
parents:
18877
diff
changeset
|
5651 else |
043ccce224fb
(SIF_*): Win95 macros defined for NT.
Geoff Voelker <voelker@cs.washington.edu>
parents:
18877
diff
changeset
|
5652 { |
21614
2624d8dcc73f
(Vw32_recognize_altgr): New variable.
Geoff Voelker <voelker@cs.washington.edu>
parents:
21456
diff
changeset
|
5653 my_set_foreground_window (FRAME_W32_WINDOW (f)); |
19713
043ccce224fb
(SIF_*): Win95 macros defined for NT.
Geoff Voelker <voelker@cs.washington.edu>
parents:
18877
diff
changeset
|
5654 } |
043ccce224fb
(SIF_*): Win95 macros defined for NT.
Geoff Voelker <voelker@cs.washington.edu>
parents:
18877
diff
changeset
|
5655 |
043ccce224fb
(SIF_*): Win95 macros defined for NT.
Geoff Voelker <voelker@cs.washington.edu>
parents:
18877
diff
changeset
|
5656 UNBLOCK_INPUT; |
13434 | 5657 } |
5658 | |
5659 /* Lower frame F. */ | |
27402
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
5660 void |
13434 | 5661 x_lower_frame (f) |
5662 struct frame *f; | |
5663 { | |
19713
043ccce224fb
(SIF_*): Win95 macros defined for NT.
Geoff Voelker <voelker@cs.washington.edu>
parents:
18877
diff
changeset
|
5664 BLOCK_INPUT; |
043ccce224fb
(SIF_*): Win95 macros defined for NT.
Geoff Voelker <voelker@cs.washington.edu>
parents:
18877
diff
changeset
|
5665 my_set_window_pos (FRAME_W32_WINDOW (f), |
043ccce224fb
(SIF_*): Win95 macros defined for NT.
Geoff Voelker <voelker@cs.washington.edu>
parents:
18877
diff
changeset
|
5666 HWND_BOTTOM, |
043ccce224fb
(SIF_*): Win95 macros defined for NT.
Geoff Voelker <voelker@cs.washington.edu>
parents:
18877
diff
changeset
|
5667 0, 0, 0, 0, |
043ccce224fb
(SIF_*): Win95 macros defined for NT.
Geoff Voelker <voelker@cs.washington.edu>
parents:
18877
diff
changeset
|
5668 SWP_NOSIZE | SWP_NOMOVE | SWP_NOACTIVATE); |
043ccce224fb
(SIF_*): Win95 macros defined for NT.
Geoff Voelker <voelker@cs.washington.edu>
parents:
18877
diff
changeset
|
5669 UNBLOCK_INPUT; |
13434 | 5670 } |
5671 | |
5672 static void | |
30240
2c2a7ebd2c15
(help_echo_object, help_echo_pos): New variables.
Jason Rumney <jasonr@gnu.org>
parents:
30199
diff
changeset
|
5673 w32_frame_raise_lower (f, raise_flag) |
13434 | 5674 FRAME_PTR f; |
30240
2c2a7ebd2c15
(help_echo_object, help_echo_pos): New variables.
Jason Rumney <jasonr@gnu.org>
parents:
30199
diff
changeset
|
5675 int raise_flag; |
2c2a7ebd2c15
(help_echo_object, help_echo_pos): New variables.
Jason Rumney <jasonr@gnu.org>
parents:
30199
diff
changeset
|
5676 { |
35000 | 5677 if (! FRAME_W32_P (f)) |
5678 return; | |
5679 | |
30240
2c2a7ebd2c15
(help_echo_object, help_echo_pos): New variables.
Jason Rumney <jasonr@gnu.org>
parents:
30199
diff
changeset
|
5680 if (raise_flag) |
13434 | 5681 x_raise_frame (f); |
5682 else | |
5683 x_lower_frame (f); | |
5684 } | |
5685 | |
5686 /* Change of visibility. */ | |
5687 | |
5688 /* This tries to wait until the frame is really visible. | |
5689 However, if the window manager asks the user where to position | |
5690 the frame, this will return before the user finishes doing that. | |
5691 The frame will not actually be visible at that time, | |
5692 but it will become visible later when the window manager | |
5693 finishes with it. */ | |
5694 | |
30240
2c2a7ebd2c15
(help_echo_object, help_echo_pos): New variables.
Jason Rumney <jasonr@gnu.org>
parents:
30199
diff
changeset
|
5695 void |
13434 | 5696 x_make_frame_visible (f) |
5697 struct frame *f; | |
5698 { | |
25236
ea748fe6dee4
(x_bitmap_icon): New function.
Geoff Voelker <voelker@cs.washington.edu>
parents:
24863
diff
changeset
|
5699 Lisp_Object type; |
ea748fe6dee4
(x_bitmap_icon): New function.
Geoff Voelker <voelker@cs.washington.edu>
parents:
24863
diff
changeset
|
5700 |
13434 | 5701 BLOCK_INPUT; |
5702 | |
25236
ea748fe6dee4
(x_bitmap_icon): New function.
Geoff Voelker <voelker@cs.washington.edu>
parents:
24863
diff
changeset
|
5703 type = x_icon_type (f); |
ea748fe6dee4
(x_bitmap_icon): New function.
Geoff Voelker <voelker@cs.washington.edu>
parents:
24863
diff
changeset
|
5704 if (!NILP (type)) |
ea748fe6dee4
(x_bitmap_icon): New function.
Geoff Voelker <voelker@cs.washington.edu>
parents:
24863
diff
changeset
|
5705 x_bitmap_icon (f, type); |
ea748fe6dee4
(x_bitmap_icon): New function.
Geoff Voelker <voelker@cs.washington.edu>
parents:
24863
diff
changeset
|
5706 |
13434 | 5707 if (! FRAME_VISIBLE_P (f)) |
5708 { | |
5709 /* We test FRAME_GARBAGED_P here to make sure we don't | |
5710 call x_set_offset a second time | |
5711 if we get to x_make_frame_visible a second time | |
5712 before the window gets really visible. */ | |
5713 if (! FRAME_ICONIFIED_P (f) | |
16588
481b7874a1e9
Change identifiers of the form win32* to w32*.
Geoff Voelker <voelker@cs.washington.edu>
parents:
16326
diff
changeset
|
5714 && ! f->output_data.w32->asked_for_visible) |
71546
d1eb48dbd3e6
(x_make_frame_visible): Use SystemParametersInfo with SPI_GETWORKAREA to find
Eli Zaretskii <eliz@gnu.org>
parents:
71236
diff
changeset
|
5715 { |
d1eb48dbd3e6
(x_make_frame_visible): Use SystemParametersInfo with SPI_GETWORKAREA to find
Eli Zaretskii <eliz@gnu.org>
parents:
71236
diff
changeset
|
5716 RECT workarea_rect; |
d1eb48dbd3e6
(x_make_frame_visible): Use SystemParametersInfo with SPI_GETWORKAREA to find
Eli Zaretskii <eliz@gnu.org>
parents:
71236
diff
changeset
|
5717 RECT window_rect; |
d1eb48dbd3e6
(x_make_frame_visible): Use SystemParametersInfo with SPI_GETWORKAREA to find
Eli Zaretskii <eliz@gnu.org>
parents:
71236
diff
changeset
|
5718 |
d1eb48dbd3e6
(x_make_frame_visible): Use SystemParametersInfo with SPI_GETWORKAREA to find
Eli Zaretskii <eliz@gnu.org>
parents:
71236
diff
changeset
|
5719 /* Adjust vertical window position in order to avoid being |
d1eb48dbd3e6
(x_make_frame_visible): Use SystemParametersInfo with SPI_GETWORKAREA to find
Eli Zaretskii <eliz@gnu.org>
parents:
71236
diff
changeset
|
5720 covered by a task bar placed at the bottom of the desktop. */ |
d1eb48dbd3e6
(x_make_frame_visible): Use SystemParametersInfo with SPI_GETWORKAREA to find
Eli Zaretskii <eliz@gnu.org>
parents:
71236
diff
changeset
|
5721 SystemParametersInfo(SPI_GETWORKAREA, 0, &workarea_rect, 0); |
d1eb48dbd3e6
(x_make_frame_visible): Use SystemParametersInfo with SPI_GETWORKAREA to find
Eli Zaretskii <eliz@gnu.org>
parents:
71236
diff
changeset
|
5722 GetWindowRect(FRAME_W32_WINDOW(f), &window_rect); |
d1eb48dbd3e6
(x_make_frame_visible): Use SystemParametersInfo with SPI_GETWORKAREA to find
Eli Zaretskii <eliz@gnu.org>
parents:
71236
diff
changeset
|
5723 if (window_rect.bottom > workarea_rect.bottom |
d1eb48dbd3e6
(x_make_frame_visible): Use SystemParametersInfo with SPI_GETWORKAREA to find
Eli Zaretskii <eliz@gnu.org>
parents:
71236
diff
changeset
|
5724 && window_rect.top > workarea_rect.top) |
d1eb48dbd3e6
(x_make_frame_visible): Use SystemParametersInfo with SPI_GETWORKAREA to find
Eli Zaretskii <eliz@gnu.org>
parents:
71236
diff
changeset
|
5725 f->top_pos = max (window_rect.top |
d1eb48dbd3e6
(x_make_frame_visible): Use SystemParametersInfo with SPI_GETWORKAREA to find
Eli Zaretskii <eliz@gnu.org>
parents:
71236
diff
changeset
|
5726 - window_rect.bottom + workarea_rect.bottom, |
d1eb48dbd3e6
(x_make_frame_visible): Use SystemParametersInfo with SPI_GETWORKAREA to find
Eli Zaretskii <eliz@gnu.org>
parents:
71236
diff
changeset
|
5727 workarea_rect.top); |
d1eb48dbd3e6
(x_make_frame_visible): Use SystemParametersInfo with SPI_GETWORKAREA to find
Eli Zaretskii <eliz@gnu.org>
parents:
71236
diff
changeset
|
5728 |
d1eb48dbd3e6
(x_make_frame_visible): Use SystemParametersInfo with SPI_GETWORKAREA to find
Eli Zaretskii <eliz@gnu.org>
parents:
71236
diff
changeset
|
5729 x_set_offset (f, f->left_pos, f->top_pos, 0); |
d1eb48dbd3e6
(x_make_frame_visible): Use SystemParametersInfo with SPI_GETWORKAREA to find
Eli Zaretskii <eliz@gnu.org>
parents:
71236
diff
changeset
|
5730 } |
13434 | 5731 |
16588
481b7874a1e9
Change identifiers of the form win32* to w32*.
Geoff Voelker <voelker@cs.washington.edu>
parents:
16326
diff
changeset
|
5732 f->output_data.w32->asked_for_visible = 1; |
481b7874a1e9
Change identifiers of the form win32* to w32*.
Geoff Voelker <voelker@cs.washington.edu>
parents:
16326
diff
changeset
|
5733 |
42934
b3ee5e92548a
(x_scroll_run): Use ScrollWindowEx in place of BitBlt.
Jason Rumney <jasonr@gnu.org>
parents:
42919
diff
changeset
|
5734 /* my_show_window (f, FRAME_W32_WINDOW (f), f->async_iconified ? SW_RESTORE : SW_SHOW); */ |
19713
043ccce224fb
(SIF_*): Win95 macros defined for NT.
Geoff Voelker <voelker@cs.washington.edu>
parents:
18877
diff
changeset
|
5735 my_show_window (f, FRAME_W32_WINDOW (f), SW_SHOWNORMAL); |
13434 | 5736 } |
5737 | |
5738 /* Synchronize to ensure Emacs knows the frame is visible | |
5739 before we do anything else. We do this loop with input not blocked | |
5740 so that incoming events are handled. */ | |
5741 { | |
5742 Lisp_Object frame; | |
27402
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
5743 int count; |
13434 | 5744 |
5745 /* This must come after we set COUNT. */ | |
5746 UNBLOCK_INPUT; | |
5747 | |
5748 XSETFRAME (frame, f); | |
5749 | |
27402
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
5750 /* Wait until the frame is visible. Process X events until a |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
5751 MapNotify event has been seen, or until we think we won't get a |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
5752 MapNotify at all.. */ |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
5753 for (count = input_signal_count + 10; |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
5754 input_signal_count < count && !FRAME_VISIBLE_P (f);) |
13434 | 5755 { |
27402
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
5756 /* Force processing of queued events. */ |
33097
84590a646acc
(x_produce_glyphs): Handle composite characters.
Jason Rumney <jasonr@gnu.org>
parents:
33037
diff
changeset
|
5757 /* TODO: x_sync equivalent? */ |
27402
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
5758 |
13434 | 5759 /* Machines that do polling rather than SIGIO have been observed |
5760 to go into a busy-wait here. So we'll fake an alarm signal | |
5761 to let the handler know that there's something to be read. | |
5762 We used to raise a real alarm, but it seems that the handler | |
5763 isn't always enabled here. This is probably a bug. */ | |
5764 if (input_polling_used ()) | |
5765 { | |
5766 /* It could be confusing if a real alarm arrives while processing | |
5767 the fake one. Turn it off and let the handler reset it. */ | |
27631
5fe002cf4b37
(x_make_frame_visible): Replace call to
Andrew Innes <andrewi@gnu.org>
parents:
27514
diff
changeset
|
5768 int old_poll_suppress_count = poll_suppress_count; |
5fe002cf4b37
(x_make_frame_visible): Replace call to
Andrew Innes <andrewi@gnu.org>
parents:
27514
diff
changeset
|
5769 poll_suppress_count = 1; |
5fe002cf4b37
(x_make_frame_visible): Replace call to
Andrew Innes <andrewi@gnu.org>
parents:
27514
diff
changeset
|
5770 poll_for_input_1 (); |
5fe002cf4b37
(x_make_frame_visible): Replace call to
Andrew Innes <andrewi@gnu.org>
parents:
27514
diff
changeset
|
5771 poll_suppress_count = old_poll_suppress_count; |
13434 | 5772 } |
5773 } | |
5774 FRAME_SAMPLE_VISIBILITY (f); | |
5775 } | |
5776 } | |
5777 | |
5778 /* Change from mapped state to withdrawn state. */ | |
5779 | |
5780 /* Make the frame visible (mapped and not iconified). */ | |
5781 | |
5782 x_make_frame_invisible (f) | |
5783 struct frame *f; | |
5784 { | |
5785 /* Don't keep the highlight on an invisible frame. */ | |
47148
be0335657440
Changed all occurrences of w32_highlight_frame with x_highlight_frame.
Kim F. Storm <storm@cua.dk>
parents:
47143
diff
changeset
|
5786 if (FRAME_W32_DISPLAY_INFO (f)->x_highlight_frame == f) |
be0335657440
Changed all occurrences of w32_highlight_frame with x_highlight_frame.
Kim F. Storm <storm@cua.dk>
parents:
47143
diff
changeset
|
5787 FRAME_W32_DISPLAY_INFO (f)->x_highlight_frame = 0; |
48218
01e253345507
(w32_draw_fringe_bitmap): Remove unused local variable window.
Juanma Barranquero <lekktu@gmail.com>
parents:
48025
diff
changeset
|
5788 |
13434 | 5789 BLOCK_INPUT; |
48218
01e253345507
(w32_draw_fringe_bitmap): Remove unused local variable window.
Juanma Barranquero <lekktu@gmail.com>
parents:
48025
diff
changeset
|
5790 |
19713
043ccce224fb
(SIF_*): Win95 macros defined for NT.
Geoff Voelker <voelker@cs.washington.edu>
parents:
18877
diff
changeset
|
5791 my_show_window (f, FRAME_W32_WINDOW (f), SW_HIDE); |
48218
01e253345507
(w32_draw_fringe_bitmap): Remove unused local variable window.
Juanma Barranquero <lekktu@gmail.com>
parents:
48025
diff
changeset
|
5792 |
13434 | 5793 /* We can't distinguish this from iconification |
5794 just by the event that we get from the server. | |
5795 So we can't win using the usual strategy of letting | |
5796 FRAME_SAMPLE_VISIBILITY set this. So do it by hand, | |
5797 and synchronize with the server to make sure we agree. */ | |
5798 f->visible = 0; | |
5799 FRAME_ICONIFIED_P (f) = 0; | |
5800 f->async_visible = 0; | |
5801 f->async_iconified = 0; | |
48218
01e253345507
(w32_draw_fringe_bitmap): Remove unused local variable window.
Juanma Barranquero <lekktu@gmail.com>
parents:
48025
diff
changeset
|
5802 |
13434 | 5803 UNBLOCK_INPUT; |
5804 } | |
5805 | |
5806 /* Change window state from mapped to iconified. */ | |
5807 | |
15151
ed6ddfc0d954
(Vwindow_system): Declared.
Geoff Voelker <voelker@cs.washington.edu>
parents:
15035
diff
changeset
|
5808 void |
ed6ddfc0d954
(Vwindow_system): Declared.
Geoff Voelker <voelker@cs.washington.edu>
parents:
15035
diff
changeset
|
5809 x_iconify_frame (f) |
13434 | 5810 struct frame *f; |
5811 { | |
25236
ea748fe6dee4
(x_bitmap_icon): New function.
Geoff Voelker <voelker@cs.washington.edu>
parents:
24863
diff
changeset
|
5812 Lisp_Object type; |
13434 | 5813 |
5814 /* Don't keep the highlight on an invisible frame. */ | |
47148
be0335657440
Changed all occurrences of w32_highlight_frame with x_highlight_frame.
Kim F. Storm <storm@cua.dk>
parents:
47143
diff
changeset
|
5815 if (FRAME_W32_DISPLAY_INFO (f)->x_highlight_frame == f) |
be0335657440
Changed all occurrences of w32_highlight_frame with x_highlight_frame.
Kim F. Storm <storm@cua.dk>
parents:
47143
diff
changeset
|
5816 FRAME_W32_DISPLAY_INFO (f)->x_highlight_frame = 0; |
13434 | 5817 |
5818 if (f->async_iconified) | |
5819 return; | |
5820 | |
5821 BLOCK_INPUT; | |
5822 | |
25236
ea748fe6dee4
(x_bitmap_icon): New function.
Geoff Voelker <voelker@cs.washington.edu>
parents:
24863
diff
changeset
|
5823 type = x_icon_type (f); |
ea748fe6dee4
(x_bitmap_icon): New function.
Geoff Voelker <voelker@cs.washington.edu>
parents:
24863
diff
changeset
|
5824 if (!NILP (type)) |
ea748fe6dee4
(x_bitmap_icon): New function.
Geoff Voelker <voelker@cs.washington.edu>
parents:
24863
diff
changeset
|
5825 x_bitmap_icon (f, type); |
ea748fe6dee4
(x_bitmap_icon): New function.
Geoff Voelker <voelker@cs.washington.edu>
parents:
24863
diff
changeset
|
5826 |
19713
043ccce224fb
(SIF_*): Win95 macros defined for NT.
Geoff Voelker <voelker@cs.washington.edu>
parents:
18877
diff
changeset
|
5827 /* Simulate the user minimizing the frame. */ |
23951
ef1cba882819
(x_iconify_frame): Wait for frame to be iconified; do
Andrew Innes <andrewi@gnu.org>
parents:
23806
diff
changeset
|
5828 SendMessage (FRAME_W32_WINDOW (f), WM_SYSCOMMAND, SC_MINIMIZE, 0); |
13434 | 5829 |
5830 UNBLOCK_INPUT; | |
5831 } | |
35384
e50a7f9ce65e
(x_produce_stretch_glyph): Only use Qspace when GLYPH_DEBUG is defined.
Jason Rumney <jasonr@gnu.org>
parents:
35287
diff
changeset
|
5832 |
13434 | 5833 |
34545
0322014fcf27
(clear_mouse_face): Treat tip_frame as a Lisp_Object.
Andrew Innes <andrewi@gnu.org>
parents:
34229
diff
changeset
|
5834 /* Free X resources of frame F. */ |
0322014fcf27
(clear_mouse_face): Treat tip_frame as a Lisp_Object.
Andrew Innes <andrewi@gnu.org>
parents:
34229
diff
changeset
|
5835 |
0322014fcf27
(clear_mouse_face): Treat tip_frame as a Lisp_Object.
Andrew Innes <andrewi@gnu.org>
parents:
34229
diff
changeset
|
5836 void |
0322014fcf27
(clear_mouse_face): Treat tip_frame as a Lisp_Object.
Andrew Innes <andrewi@gnu.org>
parents:
34229
diff
changeset
|
5837 x_free_frame_resources (f) |
13434 | 5838 struct frame *f; |
5839 { | |
16588
481b7874a1e9
Change identifiers of the form win32* to w32*.
Geoff Voelker <voelker@cs.washington.edu>
parents:
16326
diff
changeset
|
5840 struct w32_display_info *dpyinfo = FRAME_W32_DISPLAY_INFO (f); |
13434 | 5841 |
5842 BLOCK_INPUT; | |
5843 | |
34545
0322014fcf27
(clear_mouse_face): Treat tip_frame as a Lisp_Object.
Andrew Innes <andrewi@gnu.org>
parents:
34229
diff
changeset
|
5844 if (FRAME_W32_WINDOW (f)) |
0322014fcf27
(clear_mouse_face): Treat tip_frame as a Lisp_Object.
Andrew Innes <andrewi@gnu.org>
parents:
34229
diff
changeset
|
5845 my_destroy_window (f, FRAME_W32_WINDOW (f)); |
48218
01e253345507
(w32_draw_fringe_bitmap): Remove unused local variable window.
Juanma Barranquero <lekktu@gmail.com>
parents:
48025
diff
changeset
|
5846 |
13434 | 5847 free_frame_menubar (f); |
34545
0322014fcf27
(clear_mouse_face): Treat tip_frame as a Lisp_Object.
Andrew Innes <andrewi@gnu.org>
parents:
34229
diff
changeset
|
5848 |
0322014fcf27
(clear_mouse_face): Treat tip_frame as a Lisp_Object.
Andrew Innes <andrewi@gnu.org>
parents:
34229
diff
changeset
|
5849 unload_color (f, f->output_data.x->foreground_pixel); |
0322014fcf27
(clear_mouse_face): Treat tip_frame as a Lisp_Object.
Andrew Innes <andrewi@gnu.org>
parents:
34229
diff
changeset
|
5850 unload_color (f, f->output_data.x->background_pixel); |
0322014fcf27
(clear_mouse_face): Treat tip_frame as a Lisp_Object.
Andrew Innes <andrewi@gnu.org>
parents:
34229
diff
changeset
|
5851 unload_color (f, f->output_data.w32->cursor_pixel); |
0322014fcf27
(clear_mouse_face): Treat tip_frame as a Lisp_Object.
Andrew Innes <andrewi@gnu.org>
parents:
34229
diff
changeset
|
5852 unload_color (f, f->output_data.w32->cursor_foreground_pixel); |
0322014fcf27
(clear_mouse_face): Treat tip_frame as a Lisp_Object.
Andrew Innes <andrewi@gnu.org>
parents:
34229
diff
changeset
|
5853 unload_color (f, f->output_data.w32->border_pixel); |
0322014fcf27
(clear_mouse_face): Treat tip_frame as a Lisp_Object.
Andrew Innes <andrewi@gnu.org>
parents:
34229
diff
changeset
|
5854 unload_color (f, f->output_data.w32->mouse_pixel); |
35384
e50a7f9ce65e
(x_produce_stretch_glyph): Only use Qspace when GLYPH_DEBUG is defined.
Jason Rumney <jasonr@gnu.org>
parents:
35287
diff
changeset
|
5855 if (f->output_data.w32->white_relief.allocated_p) |
e50a7f9ce65e
(x_produce_stretch_glyph): Only use Qspace when GLYPH_DEBUG is defined.
Jason Rumney <jasonr@gnu.org>
parents:
35287
diff
changeset
|
5856 unload_color (f, f->output_data.w32->white_relief.pixel); |
e50a7f9ce65e
(x_produce_stretch_glyph): Only use Qspace when GLYPH_DEBUG is defined.
Jason Rumney <jasonr@gnu.org>
parents:
35287
diff
changeset
|
5857 if (f->output_data.w32->black_relief.allocated_p) |
e50a7f9ce65e
(x_produce_stretch_glyph): Only use Qspace when GLYPH_DEBUG is defined.
Jason Rumney <jasonr@gnu.org>
parents:
35287
diff
changeset
|
5858 unload_color (f, f->output_data.w32->black_relief.pixel); |
e50a7f9ce65e
(x_produce_stretch_glyph): Only use Qspace when GLYPH_DEBUG is defined.
Jason Rumney <jasonr@gnu.org>
parents:
35287
diff
changeset
|
5859 |
34545
0322014fcf27
(clear_mouse_face): Treat tip_frame as a Lisp_Object.
Andrew Innes <andrewi@gnu.org>
parents:
34229
diff
changeset
|
5860 if (FRAME_FACE_CACHE (f)) |
0322014fcf27
(clear_mouse_face): Treat tip_frame as a Lisp_Object.
Andrew Innes <andrewi@gnu.org>
parents:
34229
diff
changeset
|
5861 free_frame_faces (f); |
48218
01e253345507
(w32_draw_fringe_bitmap): Remove unused local variable window.
Juanma Barranquero <lekktu@gmail.com>
parents:
48025
diff
changeset
|
5862 |
16588
481b7874a1e9
Change identifiers of the form win32* to w32*.
Geoff Voelker <voelker@cs.washington.edu>
parents:
16326
diff
changeset
|
5863 xfree (f->output_data.w32); |
34545
0322014fcf27
(clear_mouse_face): Treat tip_frame as a Lisp_Object.
Andrew Innes <andrewi@gnu.org>
parents:
34229
diff
changeset
|
5864 f->output_data.w32 = NULL; |
48218
01e253345507
(w32_draw_fringe_bitmap): Remove unused local variable window.
Juanma Barranquero <lekktu@gmail.com>
parents:
48025
diff
changeset
|
5865 |
16588
481b7874a1e9
Change identifiers of the form win32* to w32*.
Geoff Voelker <voelker@cs.washington.edu>
parents:
16326
diff
changeset
|
5866 if (f == dpyinfo->w32_focus_frame) |
481b7874a1e9
Change identifiers of the form win32* to w32*.
Geoff Voelker <voelker@cs.washington.edu>
parents:
16326
diff
changeset
|
5867 dpyinfo->w32_focus_frame = 0; |
481b7874a1e9
Change identifiers of the form win32* to w32*.
Geoff Voelker <voelker@cs.washington.edu>
parents:
16326
diff
changeset
|
5868 if (f == dpyinfo->w32_focus_event_frame) |
481b7874a1e9
Change identifiers of the form win32* to w32*.
Geoff Voelker <voelker@cs.washington.edu>
parents:
16326
diff
changeset
|
5869 dpyinfo->w32_focus_event_frame = 0; |
47148
be0335657440
Changed all occurrences of w32_highlight_frame with x_highlight_frame.
Kim F. Storm <storm@cua.dk>
parents:
47143
diff
changeset
|
5870 if (f == dpyinfo->x_highlight_frame) |
be0335657440
Changed all occurrences of w32_highlight_frame with x_highlight_frame.
Kim F. Storm <storm@cua.dk>
parents:
47143
diff
changeset
|
5871 dpyinfo->x_highlight_frame = 0; |
13434 | 5872 |
5873 if (f == dpyinfo->mouse_face_mouse_frame) | |
5874 { | |
5875 dpyinfo->mouse_face_beg_row | |
5876 = dpyinfo->mouse_face_beg_col = -1; | |
5877 dpyinfo->mouse_face_end_row | |
5878 = dpyinfo->mouse_face_end_col = -1; | |
5879 dpyinfo->mouse_face_window = Qnil; | |
34545
0322014fcf27
(clear_mouse_face): Treat tip_frame as a Lisp_Object.
Andrew Innes <andrewi@gnu.org>
parents:
34229
diff
changeset
|
5880 dpyinfo->mouse_face_deferred_gc = 0; |
0322014fcf27
(clear_mouse_face): Treat tip_frame as a Lisp_Object.
Andrew Innes <andrewi@gnu.org>
parents:
34229
diff
changeset
|
5881 dpyinfo->mouse_face_mouse_frame = 0; |
13434 | 5882 } |
5883 | |
5884 UNBLOCK_INPUT; | |
5885 } | |
34545
0322014fcf27
(clear_mouse_face): Treat tip_frame as a Lisp_Object.
Andrew Innes <andrewi@gnu.org>
parents:
34229
diff
changeset
|
5886 |
0322014fcf27
(clear_mouse_face): Treat tip_frame as a Lisp_Object.
Andrew Innes <andrewi@gnu.org>
parents:
34229
diff
changeset
|
5887 |
0322014fcf27
(clear_mouse_face): Treat tip_frame as a Lisp_Object.
Andrew Innes <andrewi@gnu.org>
parents:
34229
diff
changeset
|
5888 /* Destroy the window of frame F. */ |
0322014fcf27
(clear_mouse_face): Treat tip_frame as a Lisp_Object.
Andrew Innes <andrewi@gnu.org>
parents:
34229
diff
changeset
|
5889 |
0322014fcf27
(clear_mouse_face): Treat tip_frame as a Lisp_Object.
Andrew Innes <andrewi@gnu.org>
parents:
34229
diff
changeset
|
5890 x_destroy_window (f) |
0322014fcf27
(clear_mouse_face): Treat tip_frame as a Lisp_Object.
Andrew Innes <andrewi@gnu.org>
parents:
34229
diff
changeset
|
5891 struct frame *f; |
0322014fcf27
(clear_mouse_face): Treat tip_frame as a Lisp_Object.
Andrew Innes <andrewi@gnu.org>
parents:
34229
diff
changeset
|
5892 { |
0322014fcf27
(clear_mouse_face): Treat tip_frame as a Lisp_Object.
Andrew Innes <andrewi@gnu.org>
parents:
34229
diff
changeset
|
5893 struct w32_display_info *dpyinfo = FRAME_W32_DISPLAY_INFO (f); |
0322014fcf27
(clear_mouse_face): Treat tip_frame as a Lisp_Object.
Andrew Innes <andrewi@gnu.org>
parents:
34229
diff
changeset
|
5894 |
0322014fcf27
(clear_mouse_face): Treat tip_frame as a Lisp_Object.
Andrew Innes <andrewi@gnu.org>
parents:
34229
diff
changeset
|
5895 x_free_frame_resources (f); |
0322014fcf27
(clear_mouse_face): Treat tip_frame as a Lisp_Object.
Andrew Innes <andrewi@gnu.org>
parents:
34229
diff
changeset
|
5896 |
0322014fcf27
(clear_mouse_face): Treat tip_frame as a Lisp_Object.
Andrew Innes <andrewi@gnu.org>
parents:
34229
diff
changeset
|
5897 dpyinfo->reference_count--; |
0322014fcf27
(clear_mouse_face): Treat tip_frame as a Lisp_Object.
Andrew Innes <andrewi@gnu.org>
parents:
34229
diff
changeset
|
5898 } |
35384
e50a7f9ce65e
(x_produce_stretch_glyph): Only use Qspace when GLYPH_DEBUG is defined.
Jason Rumney <jasonr@gnu.org>
parents:
35287
diff
changeset
|
5899 |
13434 | 5900 |
5901 /* Setting window manager hints. */ | |
5902 | |
5903 /* Set the normal size hints for the window manager, for frame F. | |
5904 FLAGS is the flags word to use--or 0 meaning preserve the flags | |
5905 that the window now has. | |
5906 If USER_POSITION is nonzero, we set the USPosition | |
5907 flag (this is useful when FLAGS is 0). */ | |
27402
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
5908 void |
13434 | 5909 x_wm_set_size_hint (f, flags, user_position) |
5910 struct frame *f; | |
5911 long flags; | |
5912 int user_position; | |
5913 { | |
16588
481b7874a1e9
Change identifiers of the form win32* to w32*.
Geoff Voelker <voelker@cs.washington.edu>
parents:
16326
diff
changeset
|
5914 Window window = FRAME_W32_WINDOW (f); |
13434 | 5915 |
14351
fb2ce4ebc871
ubackout 1.3 and 1.4
Geoff Voelker <voelker@cs.washington.edu>
parents:
14248
diff
changeset
|
5916 enter_crit (); |
13434 | 5917 |
51204
082b768216a0
Make (several) trivial substitutions for renamed and
Kim F. Storm <storm@cua.dk>
parents:
50441
diff
changeset
|
5918 SetWindowLong (window, WND_FONTWIDTH_INDEX, FRAME_COLUMN_WIDTH (f)); |
082b768216a0
Make (several) trivial substitutions for renamed and
Kim F. Storm <storm@cua.dk>
parents:
50441
diff
changeset
|
5919 SetWindowLong (window, WND_LINEHEIGHT_INDEX, FRAME_LINE_HEIGHT (f)); |
082b768216a0
Make (several) trivial substitutions for renamed and
Kim F. Storm <storm@cua.dk>
parents:
50441
diff
changeset
|
5920 SetWindowLong (window, WND_BORDER_INDEX, FRAME_INTERNAL_BORDER_WIDTH (f)); |
082b768216a0
Make (several) trivial substitutions for renamed and
Kim F. Storm <storm@cua.dk>
parents:
50441
diff
changeset
|
5921 SetWindowLong (window, WND_SCROLLBAR_INDEX, f->scroll_bar_actual_width); |
13434 | 5922 |
14351
fb2ce4ebc871
ubackout 1.3 and 1.4
Geoff Voelker <voelker@cs.washington.edu>
parents:
14248
diff
changeset
|
5923 leave_crit (); |
13434 | 5924 } |
5925 | |
5926 /* Window manager things */ | |
50441
37738feb0204
Break the line after the return type in function definition.
Richard M. Stallman <rms@gnu.org>
parents:
50376
diff
changeset
|
5927 void |
37738feb0204
Break the line after the return type in function definition.
Richard M. Stallman <rms@gnu.org>
parents:
50376
diff
changeset
|
5928 x_wm_set_icon_position (f, icon_x, icon_y) |
13434 | 5929 struct frame *f; |
5930 int icon_x, icon_y; | |
5931 { | |
5932 #if 0 | |
16588
481b7874a1e9
Change identifiers of the form win32* to w32*.
Geoff Voelker <voelker@cs.washington.edu>
parents:
16326
diff
changeset
|
5933 Window window = FRAME_W32_WINDOW (f); |
13434 | 5934 |
5935 f->display.x->wm_hints.flags |= IconPositionHint; | |
5936 f->display.x->wm_hints.icon_x = icon_x; | |
5937 f->display.x->wm_hints.icon_y = icon_y; | |
5938 | |
5939 XSetWMHints (FRAME_X_DISPLAY (f), window, &f->display.x->wm_hints); | |
5940 #endif | |
5941 } | |
5942 | |
35384
e50a7f9ce65e
(x_produce_stretch_glyph): Only use Qspace when GLYPH_DEBUG is defined.
Jason Rumney <jasonr@gnu.org>
parents:
35287
diff
changeset
|
5943 |
e50a7f9ce65e
(x_produce_stretch_glyph): Only use Qspace when GLYPH_DEBUG is defined.
Jason Rumney <jasonr@gnu.org>
parents:
35287
diff
changeset
|
5944 /*********************************************************************** |
e50a7f9ce65e
(x_produce_stretch_glyph): Only use Qspace when GLYPH_DEBUG is defined.
Jason Rumney <jasonr@gnu.org>
parents:
35287
diff
changeset
|
5945 Fonts |
e50a7f9ce65e
(x_produce_stretch_glyph): Only use Qspace when GLYPH_DEBUG is defined.
Jason Rumney <jasonr@gnu.org>
parents:
35287
diff
changeset
|
5946 ***********************************************************************/ |
e50a7f9ce65e
(x_produce_stretch_glyph): Only use Qspace when GLYPH_DEBUG is defined.
Jason Rumney <jasonr@gnu.org>
parents:
35287
diff
changeset
|
5947 |
e50a7f9ce65e
(x_produce_stretch_glyph): Only use Qspace when GLYPH_DEBUG is defined.
Jason Rumney <jasonr@gnu.org>
parents:
35287
diff
changeset
|
5948 /* The following functions are listed here to help diff stay in step |
e50a7f9ce65e
(x_produce_stretch_glyph): Only use Qspace when GLYPH_DEBUG is defined.
Jason Rumney <jasonr@gnu.org>
parents:
35287
diff
changeset
|
5949 with xterm.c. See w32fns.c for definitions. |
e50a7f9ce65e
(x_produce_stretch_glyph): Only use Qspace when GLYPH_DEBUG is defined.
Jason Rumney <jasonr@gnu.org>
parents:
35287
diff
changeset
|
5950 |
e50a7f9ce65e
(x_produce_stretch_glyph): Only use Qspace when GLYPH_DEBUG is defined.
Jason Rumney <jasonr@gnu.org>
parents:
35287
diff
changeset
|
5951 x_get_font_info (f, font_idx) |
e50a7f9ce65e
(x_produce_stretch_glyph): Only use Qspace when GLYPH_DEBUG is defined.
Jason Rumney <jasonr@gnu.org>
parents:
35287
diff
changeset
|
5952 x_list_fonts (f, pattern, size, maxnames) |
e50a7f9ce65e
(x_produce_stretch_glyph): Only use Qspace when GLYPH_DEBUG is defined.
Jason Rumney <jasonr@gnu.org>
parents:
35287
diff
changeset
|
5953 |
e50a7f9ce65e
(x_produce_stretch_glyph): Only use Qspace when GLYPH_DEBUG is defined.
Jason Rumney <jasonr@gnu.org>
parents:
35287
diff
changeset
|
5954 */ |
e50a7f9ce65e
(x_produce_stretch_glyph): Only use Qspace when GLYPH_DEBUG is defined.
Jason Rumney <jasonr@gnu.org>
parents:
35287
diff
changeset
|
5955 |
e50a7f9ce65e
(x_produce_stretch_glyph): Only use Qspace when GLYPH_DEBUG is defined.
Jason Rumney <jasonr@gnu.org>
parents:
35287
diff
changeset
|
5956 #if GLYPH_DEBUG |
e50a7f9ce65e
(x_produce_stretch_glyph): Only use Qspace when GLYPH_DEBUG is defined.
Jason Rumney <jasonr@gnu.org>
parents:
35287
diff
changeset
|
5957 |
e50a7f9ce65e
(x_produce_stretch_glyph): Only use Qspace when GLYPH_DEBUG is defined.
Jason Rumney <jasonr@gnu.org>
parents:
35287
diff
changeset
|
5958 /* Check that FONT is valid on frame F. It is if it can be found in F's |
e50a7f9ce65e
(x_produce_stretch_glyph): Only use Qspace when GLYPH_DEBUG is defined.
Jason Rumney <jasonr@gnu.org>
parents:
35287
diff
changeset
|
5959 font table. */ |
e50a7f9ce65e
(x_produce_stretch_glyph): Only use Qspace when GLYPH_DEBUG is defined.
Jason Rumney <jasonr@gnu.org>
parents:
35287
diff
changeset
|
5960 |
e50a7f9ce65e
(x_produce_stretch_glyph): Only use Qspace when GLYPH_DEBUG is defined.
Jason Rumney <jasonr@gnu.org>
parents:
35287
diff
changeset
|
5961 static void |
e50a7f9ce65e
(x_produce_stretch_glyph): Only use Qspace when GLYPH_DEBUG is defined.
Jason Rumney <jasonr@gnu.org>
parents:
35287
diff
changeset
|
5962 x_check_font (f, font) |
e50a7f9ce65e
(x_produce_stretch_glyph): Only use Qspace when GLYPH_DEBUG is defined.
Jason Rumney <jasonr@gnu.org>
parents:
35287
diff
changeset
|
5963 struct frame *f; |
e50a7f9ce65e
(x_produce_stretch_glyph): Only use Qspace when GLYPH_DEBUG is defined.
Jason Rumney <jasonr@gnu.org>
parents:
35287
diff
changeset
|
5964 XFontStruct *font; |
e50a7f9ce65e
(x_produce_stretch_glyph): Only use Qspace when GLYPH_DEBUG is defined.
Jason Rumney <jasonr@gnu.org>
parents:
35287
diff
changeset
|
5965 { |
e50a7f9ce65e
(x_produce_stretch_glyph): Only use Qspace when GLYPH_DEBUG is defined.
Jason Rumney <jasonr@gnu.org>
parents:
35287
diff
changeset
|
5966 int i; |
e50a7f9ce65e
(x_produce_stretch_glyph): Only use Qspace when GLYPH_DEBUG is defined.
Jason Rumney <jasonr@gnu.org>
parents:
35287
diff
changeset
|
5967 struct w32_display_info *dpyinfo = FRAME_W32_DISPLAY_INFO (f); |
e50a7f9ce65e
(x_produce_stretch_glyph): Only use Qspace when GLYPH_DEBUG is defined.
Jason Rumney <jasonr@gnu.org>
parents:
35287
diff
changeset
|
5968 |
e50a7f9ce65e
(x_produce_stretch_glyph): Only use Qspace when GLYPH_DEBUG is defined.
Jason Rumney <jasonr@gnu.org>
parents:
35287
diff
changeset
|
5969 xassert (font != NULL); |
e50a7f9ce65e
(x_produce_stretch_glyph): Only use Qspace when GLYPH_DEBUG is defined.
Jason Rumney <jasonr@gnu.org>
parents:
35287
diff
changeset
|
5970 |
e50a7f9ce65e
(x_produce_stretch_glyph): Only use Qspace when GLYPH_DEBUG is defined.
Jason Rumney <jasonr@gnu.org>
parents:
35287
diff
changeset
|
5971 for (i = 0; i < dpyinfo->n_fonts; i++) |
48218
01e253345507
(w32_draw_fringe_bitmap): Remove unused local variable window.
Juanma Barranquero <lekktu@gmail.com>
parents:
48025
diff
changeset
|
5972 if (dpyinfo->font_table[i].name |
35384
e50a7f9ce65e
(x_produce_stretch_glyph): Only use Qspace when GLYPH_DEBUG is defined.
Jason Rumney <jasonr@gnu.org>
parents:
35287
diff
changeset
|
5973 && font == dpyinfo->font_table[i].font) |
e50a7f9ce65e
(x_produce_stretch_glyph): Only use Qspace when GLYPH_DEBUG is defined.
Jason Rumney <jasonr@gnu.org>
parents:
35287
diff
changeset
|
5974 break; |
e50a7f9ce65e
(x_produce_stretch_glyph): Only use Qspace when GLYPH_DEBUG is defined.
Jason Rumney <jasonr@gnu.org>
parents:
35287
diff
changeset
|
5975 |
e50a7f9ce65e
(x_produce_stretch_glyph): Only use Qspace when GLYPH_DEBUG is defined.
Jason Rumney <jasonr@gnu.org>
parents:
35287
diff
changeset
|
5976 xassert (i < dpyinfo->n_fonts); |
e50a7f9ce65e
(x_produce_stretch_glyph): Only use Qspace when GLYPH_DEBUG is defined.
Jason Rumney <jasonr@gnu.org>
parents:
35287
diff
changeset
|
5977 } |
e50a7f9ce65e
(x_produce_stretch_glyph): Only use Qspace when GLYPH_DEBUG is defined.
Jason Rumney <jasonr@gnu.org>
parents:
35287
diff
changeset
|
5978 |
e50a7f9ce65e
(x_produce_stretch_glyph): Only use Qspace when GLYPH_DEBUG is defined.
Jason Rumney <jasonr@gnu.org>
parents:
35287
diff
changeset
|
5979 #endif /* GLYPH_DEBUG != 0 */ |
e50a7f9ce65e
(x_produce_stretch_glyph): Only use Qspace when GLYPH_DEBUG is defined.
Jason Rumney <jasonr@gnu.org>
parents:
35287
diff
changeset
|
5980 |
e50a7f9ce65e
(x_produce_stretch_glyph): Only use Qspace when GLYPH_DEBUG is defined.
Jason Rumney <jasonr@gnu.org>
parents:
35287
diff
changeset
|
5981 /* Set *W to the minimum width, *H to the minimum font height of FONT. |
e50a7f9ce65e
(x_produce_stretch_glyph): Only use Qspace when GLYPH_DEBUG is defined.
Jason Rumney <jasonr@gnu.org>
parents:
35287
diff
changeset
|
5982 Note: There are (broken) X fonts out there with invalid XFontStruct |
e50a7f9ce65e
(x_produce_stretch_glyph): Only use Qspace when GLYPH_DEBUG is defined.
Jason Rumney <jasonr@gnu.org>
parents:
35287
diff
changeset
|
5983 min_bounds contents. For example, handa@etl.go.jp reports that |
e50a7f9ce65e
(x_produce_stretch_glyph): Only use Qspace when GLYPH_DEBUG is defined.
Jason Rumney <jasonr@gnu.org>
parents:
35287
diff
changeset
|
5984 "-adobe-courier-medium-r-normal--*-180-*-*-m-*-iso8859-1" fonts |
e50a7f9ce65e
(x_produce_stretch_glyph): Only use Qspace when GLYPH_DEBUG is defined.
Jason Rumney <jasonr@gnu.org>
parents:
35287
diff
changeset
|
5985 have font->min_bounds.width == 0. */ |
e50a7f9ce65e
(x_produce_stretch_glyph): Only use Qspace when GLYPH_DEBUG is defined.
Jason Rumney <jasonr@gnu.org>
parents:
35287
diff
changeset
|
5986 |
e50a7f9ce65e
(x_produce_stretch_glyph): Only use Qspace when GLYPH_DEBUG is defined.
Jason Rumney <jasonr@gnu.org>
parents:
35287
diff
changeset
|
5987 static INLINE void |
e50a7f9ce65e
(x_produce_stretch_glyph): Only use Qspace when GLYPH_DEBUG is defined.
Jason Rumney <jasonr@gnu.org>
parents:
35287
diff
changeset
|
5988 x_font_min_bounds (font, w, h) |
e50a7f9ce65e
(x_produce_stretch_glyph): Only use Qspace when GLYPH_DEBUG is defined.
Jason Rumney <jasonr@gnu.org>
parents:
35287
diff
changeset
|
5989 XFontStruct *font; |
e50a7f9ce65e
(x_produce_stretch_glyph): Only use Qspace when GLYPH_DEBUG is defined.
Jason Rumney <jasonr@gnu.org>
parents:
35287
diff
changeset
|
5990 int *w, *h; |
e50a7f9ce65e
(x_produce_stretch_glyph): Only use Qspace when GLYPH_DEBUG is defined.
Jason Rumney <jasonr@gnu.org>
parents:
35287
diff
changeset
|
5991 { |
e50a7f9ce65e
(x_produce_stretch_glyph): Only use Qspace when GLYPH_DEBUG is defined.
Jason Rumney <jasonr@gnu.org>
parents:
35287
diff
changeset
|
5992 /* |
e50a7f9ce65e
(x_produce_stretch_glyph): Only use Qspace when GLYPH_DEBUG is defined.
Jason Rumney <jasonr@gnu.org>
parents:
35287
diff
changeset
|
5993 * TODO: Windows does not appear to offer min bound, only |
e50a7f9ce65e
(x_produce_stretch_glyph): Only use Qspace when GLYPH_DEBUG is defined.
Jason Rumney <jasonr@gnu.org>
parents:
35287
diff
changeset
|
5994 * average and maximum width, and maximum height. |
e50a7f9ce65e
(x_produce_stretch_glyph): Only use Qspace when GLYPH_DEBUG is defined.
Jason Rumney <jasonr@gnu.org>
parents:
35287
diff
changeset
|
5995 */ |
e50a7f9ce65e
(x_produce_stretch_glyph): Only use Qspace when GLYPH_DEBUG is defined.
Jason Rumney <jasonr@gnu.org>
parents:
35287
diff
changeset
|
5996 *h = FONT_HEIGHT (font); |
e50a7f9ce65e
(x_produce_stretch_glyph): Only use Qspace when GLYPH_DEBUG is defined.
Jason Rumney <jasonr@gnu.org>
parents:
35287
diff
changeset
|
5997 *w = FONT_WIDTH (font); |
e50a7f9ce65e
(x_produce_stretch_glyph): Only use Qspace when GLYPH_DEBUG is defined.
Jason Rumney <jasonr@gnu.org>
parents:
35287
diff
changeset
|
5998 } |
e50a7f9ce65e
(x_produce_stretch_glyph): Only use Qspace when GLYPH_DEBUG is defined.
Jason Rumney <jasonr@gnu.org>
parents:
35287
diff
changeset
|
5999 |
e50a7f9ce65e
(x_produce_stretch_glyph): Only use Qspace when GLYPH_DEBUG is defined.
Jason Rumney <jasonr@gnu.org>
parents:
35287
diff
changeset
|
6000 |
e50a7f9ce65e
(x_produce_stretch_glyph): Only use Qspace when GLYPH_DEBUG is defined.
Jason Rumney <jasonr@gnu.org>
parents:
35287
diff
changeset
|
6001 /* Compute the smallest character width and smallest font height over |
e50a7f9ce65e
(x_produce_stretch_glyph): Only use Qspace when GLYPH_DEBUG is defined.
Jason Rumney <jasonr@gnu.org>
parents:
35287
diff
changeset
|
6002 all fonts available on frame F. Set the members smallest_char_width |
e50a7f9ce65e
(x_produce_stretch_glyph): Only use Qspace when GLYPH_DEBUG is defined.
Jason Rumney <jasonr@gnu.org>
parents:
35287
diff
changeset
|
6003 and smallest_font_height in F's x_display_info structure to |
e50a7f9ce65e
(x_produce_stretch_glyph): Only use Qspace when GLYPH_DEBUG is defined.
Jason Rumney <jasonr@gnu.org>
parents:
35287
diff
changeset
|
6004 the values computed. Value is non-zero if smallest_font_height or |
e50a7f9ce65e
(x_produce_stretch_glyph): Only use Qspace when GLYPH_DEBUG is defined.
Jason Rumney <jasonr@gnu.org>
parents:
35287
diff
changeset
|
6005 smallest_char_width become smaller than they were before. */ |
e50a7f9ce65e
(x_produce_stretch_glyph): Only use Qspace when GLYPH_DEBUG is defined.
Jason Rumney <jasonr@gnu.org>
parents:
35287
diff
changeset
|
6006 |
e50a7f9ce65e
(x_produce_stretch_glyph): Only use Qspace when GLYPH_DEBUG is defined.
Jason Rumney <jasonr@gnu.org>
parents:
35287
diff
changeset
|
6007 int |
e50a7f9ce65e
(x_produce_stretch_glyph): Only use Qspace when GLYPH_DEBUG is defined.
Jason Rumney <jasonr@gnu.org>
parents:
35287
diff
changeset
|
6008 x_compute_min_glyph_bounds (f) |
e50a7f9ce65e
(x_produce_stretch_glyph): Only use Qspace when GLYPH_DEBUG is defined.
Jason Rumney <jasonr@gnu.org>
parents:
35287
diff
changeset
|
6009 struct frame *f; |
e50a7f9ce65e
(x_produce_stretch_glyph): Only use Qspace when GLYPH_DEBUG is defined.
Jason Rumney <jasonr@gnu.org>
parents:
35287
diff
changeset
|
6010 { |
e50a7f9ce65e
(x_produce_stretch_glyph): Only use Qspace when GLYPH_DEBUG is defined.
Jason Rumney <jasonr@gnu.org>
parents:
35287
diff
changeset
|
6011 int i; |
e50a7f9ce65e
(x_produce_stretch_glyph): Only use Qspace when GLYPH_DEBUG is defined.
Jason Rumney <jasonr@gnu.org>
parents:
35287
diff
changeset
|
6012 struct w32_display_info *dpyinfo = FRAME_W32_DISPLAY_INFO (f); |
e50a7f9ce65e
(x_produce_stretch_glyph): Only use Qspace when GLYPH_DEBUG is defined.
Jason Rumney <jasonr@gnu.org>
parents:
35287
diff
changeset
|
6013 XFontStruct *font; |
e50a7f9ce65e
(x_produce_stretch_glyph): Only use Qspace when GLYPH_DEBUG is defined.
Jason Rumney <jasonr@gnu.org>
parents:
35287
diff
changeset
|
6014 int old_width = dpyinfo->smallest_char_width; |
e50a7f9ce65e
(x_produce_stretch_glyph): Only use Qspace when GLYPH_DEBUG is defined.
Jason Rumney <jasonr@gnu.org>
parents:
35287
diff
changeset
|
6015 int old_height = dpyinfo->smallest_font_height; |
48218
01e253345507
(w32_draw_fringe_bitmap): Remove unused local variable window.
Juanma Barranquero <lekktu@gmail.com>
parents:
48025
diff
changeset
|
6016 |
35384
e50a7f9ce65e
(x_produce_stretch_glyph): Only use Qspace when GLYPH_DEBUG is defined.
Jason Rumney <jasonr@gnu.org>
parents:
35287
diff
changeset
|
6017 dpyinfo->smallest_font_height = 100000; |
e50a7f9ce65e
(x_produce_stretch_glyph): Only use Qspace when GLYPH_DEBUG is defined.
Jason Rumney <jasonr@gnu.org>
parents:
35287
diff
changeset
|
6018 dpyinfo->smallest_char_width = 100000; |
48218
01e253345507
(w32_draw_fringe_bitmap): Remove unused local variable window.
Juanma Barranquero <lekktu@gmail.com>
parents:
48025
diff
changeset
|
6019 |
35384
e50a7f9ce65e
(x_produce_stretch_glyph): Only use Qspace when GLYPH_DEBUG is defined.
Jason Rumney <jasonr@gnu.org>
parents:
35287
diff
changeset
|
6020 for (i = 0; i < dpyinfo->n_fonts; ++i) |
e50a7f9ce65e
(x_produce_stretch_glyph): Only use Qspace when GLYPH_DEBUG is defined.
Jason Rumney <jasonr@gnu.org>
parents:
35287
diff
changeset
|
6021 if (dpyinfo->font_table[i].name) |
e50a7f9ce65e
(x_produce_stretch_glyph): Only use Qspace when GLYPH_DEBUG is defined.
Jason Rumney <jasonr@gnu.org>
parents:
35287
diff
changeset
|
6022 { |
e50a7f9ce65e
(x_produce_stretch_glyph): Only use Qspace when GLYPH_DEBUG is defined.
Jason Rumney <jasonr@gnu.org>
parents:
35287
diff
changeset
|
6023 struct font_info *fontp = dpyinfo->font_table + i; |
e50a7f9ce65e
(x_produce_stretch_glyph): Only use Qspace when GLYPH_DEBUG is defined.
Jason Rumney <jasonr@gnu.org>
parents:
35287
diff
changeset
|
6024 int w, h; |
48218
01e253345507
(w32_draw_fringe_bitmap): Remove unused local variable window.
Juanma Barranquero <lekktu@gmail.com>
parents:
48025
diff
changeset
|
6025 |
35384
e50a7f9ce65e
(x_produce_stretch_glyph): Only use Qspace when GLYPH_DEBUG is defined.
Jason Rumney <jasonr@gnu.org>
parents:
35287
diff
changeset
|
6026 font = (XFontStruct *) fontp->font; |
e50a7f9ce65e
(x_produce_stretch_glyph): Only use Qspace when GLYPH_DEBUG is defined.
Jason Rumney <jasonr@gnu.org>
parents:
35287
diff
changeset
|
6027 xassert (font != (XFontStruct *) ~0); |
e50a7f9ce65e
(x_produce_stretch_glyph): Only use Qspace when GLYPH_DEBUG is defined.
Jason Rumney <jasonr@gnu.org>
parents:
35287
diff
changeset
|
6028 x_font_min_bounds (font, &w, &h); |
48218
01e253345507
(w32_draw_fringe_bitmap): Remove unused local variable window.
Juanma Barranquero <lekktu@gmail.com>
parents:
48025
diff
changeset
|
6029 |
35384
e50a7f9ce65e
(x_produce_stretch_glyph): Only use Qspace when GLYPH_DEBUG is defined.
Jason Rumney <jasonr@gnu.org>
parents:
35287
diff
changeset
|
6030 dpyinfo->smallest_font_height = min (dpyinfo->smallest_font_height, h); |
e50a7f9ce65e
(x_produce_stretch_glyph): Only use Qspace when GLYPH_DEBUG is defined.
Jason Rumney <jasonr@gnu.org>
parents:
35287
diff
changeset
|
6031 dpyinfo->smallest_char_width = min (dpyinfo->smallest_char_width, w); |
e50a7f9ce65e
(x_produce_stretch_glyph): Only use Qspace when GLYPH_DEBUG is defined.
Jason Rumney <jasonr@gnu.org>
parents:
35287
diff
changeset
|
6032 } |
e50a7f9ce65e
(x_produce_stretch_glyph): Only use Qspace when GLYPH_DEBUG is defined.
Jason Rumney <jasonr@gnu.org>
parents:
35287
diff
changeset
|
6033 |
e50a7f9ce65e
(x_produce_stretch_glyph): Only use Qspace when GLYPH_DEBUG is defined.
Jason Rumney <jasonr@gnu.org>
parents:
35287
diff
changeset
|
6034 xassert (dpyinfo->smallest_char_width > 0 |
e50a7f9ce65e
(x_produce_stretch_glyph): Only use Qspace when GLYPH_DEBUG is defined.
Jason Rumney <jasonr@gnu.org>
parents:
35287
diff
changeset
|
6035 && dpyinfo->smallest_font_height > 0); |
e50a7f9ce65e
(x_produce_stretch_glyph): Only use Qspace when GLYPH_DEBUG is defined.
Jason Rumney <jasonr@gnu.org>
parents:
35287
diff
changeset
|
6036 |
e50a7f9ce65e
(x_produce_stretch_glyph): Only use Qspace when GLYPH_DEBUG is defined.
Jason Rumney <jasonr@gnu.org>
parents:
35287
diff
changeset
|
6037 return (dpyinfo->n_fonts == 1 |
e50a7f9ce65e
(x_produce_stretch_glyph): Only use Qspace when GLYPH_DEBUG is defined.
Jason Rumney <jasonr@gnu.org>
parents:
35287
diff
changeset
|
6038 || dpyinfo->smallest_char_width < old_width |
e50a7f9ce65e
(x_produce_stretch_glyph): Only use Qspace when GLYPH_DEBUG is defined.
Jason Rumney <jasonr@gnu.org>
parents:
35287
diff
changeset
|
6039 || dpyinfo->smallest_font_height < old_height); |
e50a7f9ce65e
(x_produce_stretch_glyph): Only use Qspace when GLYPH_DEBUG is defined.
Jason Rumney <jasonr@gnu.org>
parents:
35287
diff
changeset
|
6040 } |
e50a7f9ce65e
(x_produce_stretch_glyph): Only use Qspace when GLYPH_DEBUG is defined.
Jason Rumney <jasonr@gnu.org>
parents:
35287
diff
changeset
|
6041 |
e50a7f9ce65e
(x_produce_stretch_glyph): Only use Qspace when GLYPH_DEBUG is defined.
Jason Rumney <jasonr@gnu.org>
parents:
35287
diff
changeset
|
6042 /* The following functions are listed here to help diff stay in step |
e50a7f9ce65e
(x_produce_stretch_glyph): Only use Qspace when GLYPH_DEBUG is defined.
Jason Rumney <jasonr@gnu.org>
parents:
35287
diff
changeset
|
6043 with xterm.c. See w32fns.c for definitions. |
e50a7f9ce65e
(x_produce_stretch_glyph): Only use Qspace when GLYPH_DEBUG is defined.
Jason Rumney <jasonr@gnu.org>
parents:
35287
diff
changeset
|
6044 |
e50a7f9ce65e
(x_produce_stretch_glyph): Only use Qspace when GLYPH_DEBUG is defined.
Jason Rumney <jasonr@gnu.org>
parents:
35287
diff
changeset
|
6045 x_load_font (f, fontname, size) |
e50a7f9ce65e
(x_produce_stretch_glyph): Only use Qspace when GLYPH_DEBUG is defined.
Jason Rumney <jasonr@gnu.org>
parents:
35287
diff
changeset
|
6046 x_query_font (f, fontname) |
e50a7f9ce65e
(x_produce_stretch_glyph): Only use Qspace when GLYPH_DEBUG is defined.
Jason Rumney <jasonr@gnu.org>
parents:
35287
diff
changeset
|
6047 x_find_ccl_program (fontp) |
e50a7f9ce65e
(x_produce_stretch_glyph): Only use Qspace when GLYPH_DEBUG is defined.
Jason Rumney <jasonr@gnu.org>
parents:
35287
diff
changeset
|
6048 |
e50a7f9ce65e
(x_produce_stretch_glyph): Only use Qspace when GLYPH_DEBUG is defined.
Jason Rumney <jasonr@gnu.org>
parents:
35287
diff
changeset
|
6049 */ |
13434 | 6050 |
27402
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
6051 /*********************************************************************** |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
6052 Initialization |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
6053 ***********************************************************************/ |
13434 | 6054 |
16588
481b7874a1e9
Change identifiers of the form win32* to w32*.
Geoff Voelker <voelker@cs.washington.edu>
parents:
16326
diff
changeset
|
6055 static int w32_initialized = 0; |
481b7874a1e9
Change identifiers of the form win32* to w32*.
Geoff Voelker <voelker@cs.washington.edu>
parents:
16326
diff
changeset
|
6056 |
27889
51d0b4b8fc6a
(w32_display_info_for_display): Remove unused function.
Jason Rumney <jasonr@gnu.org>
parents:
27631
diff
changeset
|
6057 void |
51d0b4b8fc6a
(w32_display_info_for_display): Remove unused function.
Jason Rumney <jasonr@gnu.org>
parents:
27631
diff
changeset
|
6058 w32_initialize_display_info (display_name) |
51d0b4b8fc6a
(w32_display_info_for_display): Remove unused function.
Jason Rumney <jasonr@gnu.org>
parents:
27631
diff
changeset
|
6059 Lisp_Object display_name; |
51d0b4b8fc6a
(w32_display_info_for_display): Remove unused function.
Jason Rumney <jasonr@gnu.org>
parents:
27631
diff
changeset
|
6060 { |
51d0b4b8fc6a
(w32_display_info_for_display): Remove unused function.
Jason Rumney <jasonr@gnu.org>
parents:
27631
diff
changeset
|
6061 struct w32_display_info *dpyinfo = &one_w32_display_info; |
51d0b4b8fc6a
(w32_display_info_for_display): Remove unused function.
Jason Rumney <jasonr@gnu.org>
parents:
27631
diff
changeset
|
6062 |
51d0b4b8fc6a
(w32_display_info_for_display): Remove unused function.
Jason Rumney <jasonr@gnu.org>
parents:
27631
diff
changeset
|
6063 bzero (dpyinfo, sizeof (*dpyinfo)); |
51d0b4b8fc6a
(w32_display_info_for_display): Remove unused function.
Jason Rumney <jasonr@gnu.org>
parents:
27631
diff
changeset
|
6064 |
51d0b4b8fc6a
(w32_display_info_for_display): Remove unused function.
Jason Rumney <jasonr@gnu.org>
parents:
27631
diff
changeset
|
6065 /* Put it on w32_display_name_list. */ |
51d0b4b8fc6a
(w32_display_info_for_display): Remove unused function.
Jason Rumney <jasonr@gnu.org>
parents:
27631
diff
changeset
|
6066 w32_display_name_list = Fcons (Fcons (display_name, Qnil), |
51d0b4b8fc6a
(w32_display_info_for_display): Remove unused function.
Jason Rumney <jasonr@gnu.org>
parents:
27631
diff
changeset
|
6067 w32_display_name_list); |
51d0b4b8fc6a
(w32_display_info_for_display): Remove unused function.
Jason Rumney <jasonr@gnu.org>
parents:
27631
diff
changeset
|
6068 dpyinfo->name_list_element = XCAR (w32_display_name_list); |
48218
01e253345507
(w32_draw_fringe_bitmap): Remove unused local variable window.
Juanma Barranquero <lekktu@gmail.com>
parents:
48025
diff
changeset
|
6069 |
27889
51d0b4b8fc6a
(w32_display_info_for_display): Remove unused function.
Jason Rumney <jasonr@gnu.org>
parents:
27631
diff
changeset
|
6070 dpyinfo->w32_id_name |
46370
40db0673e6f0
Most uses of XSTRING combined with STRING_BYTES or indirection changed to
Ken Raeburn <raeburn@raeburn.org>
parents:
45803
diff
changeset
|
6071 = (char *) xmalloc (SCHARS (Vinvocation_name) |
40db0673e6f0
Most uses of XSTRING combined with STRING_BYTES or indirection changed to
Ken Raeburn <raeburn@raeburn.org>
parents:
45803
diff
changeset
|
6072 + SCHARS (Vsystem_name) |
27889
51d0b4b8fc6a
(w32_display_info_for_display): Remove unused function.
Jason Rumney <jasonr@gnu.org>
parents:
27631
diff
changeset
|
6073 + 2); |
51d0b4b8fc6a
(w32_display_info_for_display): Remove unused function.
Jason Rumney <jasonr@gnu.org>
parents:
27631
diff
changeset
|
6074 sprintf (dpyinfo->w32_id_name, "%s@%s", |
46370
40db0673e6f0
Most uses of XSTRING combined with STRING_BYTES or indirection changed to
Ken Raeburn <raeburn@raeburn.org>
parents:
45803
diff
changeset
|
6075 SDATA (Vinvocation_name), SDATA (Vsystem_name)); |
27889
51d0b4b8fc6a
(w32_display_info_for_display): Remove unused function.
Jason Rumney <jasonr@gnu.org>
parents:
27631
diff
changeset
|
6076 |
51d0b4b8fc6a
(w32_display_info_for_display): Remove unused function.
Jason Rumney <jasonr@gnu.org>
parents:
27631
diff
changeset
|
6077 /* Default Console mode values - overridden when running in GUI mode |
51d0b4b8fc6a
(w32_display_info_for_display): Remove unused function.
Jason Rumney <jasonr@gnu.org>
parents:
27631
diff
changeset
|
6078 with values obtained from system metrics. */ |
51d0b4b8fc6a
(w32_display_info_for_display): Remove unused function.
Jason Rumney <jasonr@gnu.org>
parents:
27631
diff
changeset
|
6079 dpyinfo->resx = 1; |
51d0b4b8fc6a
(w32_display_info_for_display): Remove unused function.
Jason Rumney <jasonr@gnu.org>
parents:
27631
diff
changeset
|
6080 dpyinfo->resy = 1; |
51d0b4b8fc6a
(w32_display_info_for_display): Remove unused function.
Jason Rumney <jasonr@gnu.org>
parents:
27631
diff
changeset
|
6081 dpyinfo->height_in = 1; |
51d0b4b8fc6a
(w32_display_info_for_display): Remove unused function.
Jason Rumney <jasonr@gnu.org>
parents:
27631
diff
changeset
|
6082 dpyinfo->width_in = 1; |
51d0b4b8fc6a
(w32_display_info_for_display): Remove unused function.
Jason Rumney <jasonr@gnu.org>
parents:
27631
diff
changeset
|
6083 dpyinfo->n_planes = 1; |
51d0b4b8fc6a
(w32_display_info_for_display): Remove unused function.
Jason Rumney <jasonr@gnu.org>
parents:
27631
diff
changeset
|
6084 dpyinfo->n_cbits = 4; |
51d0b4b8fc6a
(w32_display_info_for_display): Remove unused function.
Jason Rumney <jasonr@gnu.org>
parents:
27631
diff
changeset
|
6085 dpyinfo->n_fonts = 0; |
51d0b4b8fc6a
(w32_display_info_for_display): Remove unused function.
Jason Rumney <jasonr@gnu.org>
parents:
27631
diff
changeset
|
6086 dpyinfo->smallest_font_height = 1; |
51d0b4b8fc6a
(w32_display_info_for_display): Remove unused function.
Jason Rumney <jasonr@gnu.org>
parents:
27631
diff
changeset
|
6087 dpyinfo->smallest_char_width = 1; |
51d0b4b8fc6a
(w32_display_info_for_display): Remove unused function.
Jason Rumney <jasonr@gnu.org>
parents:
27631
diff
changeset
|
6088 |
51d0b4b8fc6a
(w32_display_info_for_display): Remove unused function.
Jason Rumney <jasonr@gnu.org>
parents:
27631
diff
changeset
|
6089 dpyinfo->mouse_face_beg_row = dpyinfo->mouse_face_beg_col = -1; |
51d0b4b8fc6a
(w32_display_info_for_display): Remove unused function.
Jason Rumney <jasonr@gnu.org>
parents:
27631
diff
changeset
|
6090 dpyinfo->mouse_face_end_row = dpyinfo->mouse_face_end_col = -1; |
51d0b4b8fc6a
(w32_display_info_for_display): Remove unused function.
Jason Rumney <jasonr@gnu.org>
parents:
27631
diff
changeset
|
6091 dpyinfo->mouse_face_face_id = DEFAULT_FACE_ID; |
51d0b4b8fc6a
(w32_display_info_for_display): Remove unused function.
Jason Rumney <jasonr@gnu.org>
parents:
27631
diff
changeset
|
6092 dpyinfo->mouse_face_window = Qnil; |
40137
5f0d7d58283b
(remember_mouse_glyph): New function.
Jason Rumney <jasonr@gnu.org>
parents:
40078
diff
changeset
|
6093 dpyinfo->mouse_face_overlay = Qnil; |
43373
44e2e2c9154f
(disable_mouse_highlight): Removed variable.
Kim F. Storm <storm@cua.dk>
parents:
43146
diff
changeset
|
6094 dpyinfo->mouse_face_hidden = 0; |
49371
c73ce11bb264
2003-01-21 KOBAYASHI Yasuhiro <kobayays@otsukakj.co.jp>
Jason Rumney <jasonr@gnu.org>
parents:
48888
diff
changeset
|
6095 |
c73ce11bb264
2003-01-21 KOBAYASHI Yasuhiro <kobayays@otsukakj.co.jp>
Jason Rumney <jasonr@gnu.org>
parents:
48888
diff
changeset
|
6096 dpyinfo->vertical_scroll_bar_cursor = w32_load_cursor (IDC_ARROW); |
33097
84590a646acc
(x_produce_glyphs): Handle composite characters.
Jason Rumney <jasonr@gnu.org>
parents:
33037
diff
changeset
|
6097 /* TODO: dpyinfo->gray */ |
27889
51d0b4b8fc6a
(w32_display_info_for_display): Remove unused function.
Jason Rumney <jasonr@gnu.org>
parents:
27631
diff
changeset
|
6098 |
51d0b4b8fc6a
(w32_display_info_for_display): Remove unused function.
Jason Rumney <jasonr@gnu.org>
parents:
27631
diff
changeset
|
6099 } |
51d0b4b8fc6a
(w32_display_info_for_display): Remove unused function.
Jason Rumney <jasonr@gnu.org>
parents:
27631
diff
changeset
|
6100 |
50038
8054c23b6726
(w32_make_rdb): New function.
Juanma Barranquero <lekktu@gmail.com>
parents:
49393
diff
changeset
|
6101 /* Create an xrdb-style database of resources to supercede registry settings. |
8054c23b6726
(w32_make_rdb): New function.
Juanma Barranquero <lekktu@gmail.com>
parents:
49393
diff
changeset
|
6102 The database is just a concatenation of C strings, finished by an additional |
8054c23b6726
(w32_make_rdb): New function.
Juanma Barranquero <lekktu@gmail.com>
parents:
49393
diff
changeset
|
6103 \0. The string are submitted to some basic normalization, so |
8054c23b6726
(w32_make_rdb): New function.
Juanma Barranquero <lekktu@gmail.com>
parents:
49393
diff
changeset
|
6104 |
8054c23b6726
(w32_make_rdb): New function.
Juanma Barranquero <lekktu@gmail.com>
parents:
49393
diff
changeset
|
6105 [ *]option[ *]:[ *]value... |
8054c23b6726
(w32_make_rdb): New function.
Juanma Barranquero <lekktu@gmail.com>
parents:
49393
diff
changeset
|
6106 |
8054c23b6726
(w32_make_rdb): New function.
Juanma Barranquero <lekktu@gmail.com>
parents:
49393
diff
changeset
|
6107 becomes |
8054c23b6726
(w32_make_rdb): New function.
Juanma Barranquero <lekktu@gmail.com>
parents:
49393
diff
changeset
|
6108 |
8054c23b6726
(w32_make_rdb): New function.
Juanma Barranquero <lekktu@gmail.com>
parents:
49393
diff
changeset
|
6109 option:value... |
8054c23b6726
(w32_make_rdb): New function.
Juanma Barranquero <lekktu@gmail.com>
parents:
49393
diff
changeset
|
6110 |
8054c23b6726
(w32_make_rdb): New function.
Juanma Barranquero <lekktu@gmail.com>
parents:
49393
diff
changeset
|
6111 but any whitespace following value is not removed. */ |
8054c23b6726
(w32_make_rdb): New function.
Juanma Barranquero <lekktu@gmail.com>
parents:
49393
diff
changeset
|
6112 |
8054c23b6726
(w32_make_rdb): New function.
Juanma Barranquero <lekktu@gmail.com>
parents:
49393
diff
changeset
|
6113 static char * |
8054c23b6726
(w32_make_rdb): New function.
Juanma Barranquero <lekktu@gmail.com>
parents:
49393
diff
changeset
|
6114 w32_make_rdb (xrm_option) |
8054c23b6726
(w32_make_rdb): New function.
Juanma Barranquero <lekktu@gmail.com>
parents:
49393
diff
changeset
|
6115 char *xrm_option; |
8054c23b6726
(w32_make_rdb): New function.
Juanma Barranquero <lekktu@gmail.com>
parents:
49393
diff
changeset
|
6116 { |
8054c23b6726
(w32_make_rdb): New function.
Juanma Barranquero <lekktu@gmail.com>
parents:
49393
diff
changeset
|
6117 char *buffer = xmalloc (strlen (xrm_option) + 2); |
8054c23b6726
(w32_make_rdb): New function.
Juanma Barranquero <lekktu@gmail.com>
parents:
49393
diff
changeset
|
6118 char *current = buffer; |
8054c23b6726
(w32_make_rdb): New function.
Juanma Barranquero <lekktu@gmail.com>
parents:
49393
diff
changeset
|
6119 char ch; |
8054c23b6726
(w32_make_rdb): New function.
Juanma Barranquero <lekktu@gmail.com>
parents:
49393
diff
changeset
|
6120 int in_option = 1; |
8054c23b6726
(w32_make_rdb): New function.
Juanma Barranquero <lekktu@gmail.com>
parents:
49393
diff
changeset
|
6121 int before_value = 0; |
8054c23b6726
(w32_make_rdb): New function.
Juanma Barranquero <lekktu@gmail.com>
parents:
49393
diff
changeset
|
6122 |
8054c23b6726
(w32_make_rdb): New function.
Juanma Barranquero <lekktu@gmail.com>
parents:
49393
diff
changeset
|
6123 do { |
8054c23b6726
(w32_make_rdb): New function.
Juanma Barranquero <lekktu@gmail.com>
parents:
49393
diff
changeset
|
6124 ch = *xrm_option++; |
8054c23b6726
(w32_make_rdb): New function.
Juanma Barranquero <lekktu@gmail.com>
parents:
49393
diff
changeset
|
6125 |
8054c23b6726
(w32_make_rdb): New function.
Juanma Barranquero <lekktu@gmail.com>
parents:
49393
diff
changeset
|
6126 if (ch == '\n') |
8054c23b6726
(w32_make_rdb): New function.
Juanma Barranquero <lekktu@gmail.com>
parents:
49393
diff
changeset
|
6127 { |
8054c23b6726
(w32_make_rdb): New function.
Juanma Barranquero <lekktu@gmail.com>
parents:
49393
diff
changeset
|
6128 *current++ = '\0'; |
8054c23b6726
(w32_make_rdb): New function.
Juanma Barranquero <lekktu@gmail.com>
parents:
49393
diff
changeset
|
6129 in_option = 1; |
8054c23b6726
(w32_make_rdb): New function.
Juanma Barranquero <lekktu@gmail.com>
parents:
49393
diff
changeset
|
6130 before_value = 0; |
8054c23b6726
(w32_make_rdb): New function.
Juanma Barranquero <lekktu@gmail.com>
parents:
49393
diff
changeset
|
6131 } |
8054c23b6726
(w32_make_rdb): New function.
Juanma Barranquero <lekktu@gmail.com>
parents:
49393
diff
changeset
|
6132 else if (ch != ' ') |
8054c23b6726
(w32_make_rdb): New function.
Juanma Barranquero <lekktu@gmail.com>
parents:
49393
diff
changeset
|
6133 { |
8054c23b6726
(w32_make_rdb): New function.
Juanma Barranquero <lekktu@gmail.com>
parents:
49393
diff
changeset
|
6134 *current++ = ch; |
8054c23b6726
(w32_make_rdb): New function.
Juanma Barranquero <lekktu@gmail.com>
parents:
49393
diff
changeset
|
6135 if (in_option && (ch == ':')) |
8054c23b6726
(w32_make_rdb): New function.
Juanma Barranquero <lekktu@gmail.com>
parents:
49393
diff
changeset
|
6136 { |
8054c23b6726
(w32_make_rdb): New function.
Juanma Barranquero <lekktu@gmail.com>
parents:
49393
diff
changeset
|
6137 in_option = 0; |
8054c23b6726
(w32_make_rdb): New function.
Juanma Barranquero <lekktu@gmail.com>
parents:
49393
diff
changeset
|
6138 before_value = 1; |
8054c23b6726
(w32_make_rdb): New function.
Juanma Barranquero <lekktu@gmail.com>
parents:
49393
diff
changeset
|
6139 } |
8054c23b6726
(w32_make_rdb): New function.
Juanma Barranquero <lekktu@gmail.com>
parents:
49393
diff
changeset
|
6140 else if (before_value) |
8054c23b6726
(w32_make_rdb): New function.
Juanma Barranquero <lekktu@gmail.com>
parents:
49393
diff
changeset
|
6141 { |
8054c23b6726
(w32_make_rdb): New function.
Juanma Barranquero <lekktu@gmail.com>
parents:
49393
diff
changeset
|
6142 before_value = 0; |
8054c23b6726
(w32_make_rdb): New function.
Juanma Barranquero <lekktu@gmail.com>
parents:
49393
diff
changeset
|
6143 } |
8054c23b6726
(w32_make_rdb): New function.
Juanma Barranquero <lekktu@gmail.com>
parents:
49393
diff
changeset
|
6144 } |
8054c23b6726
(w32_make_rdb): New function.
Juanma Barranquero <lekktu@gmail.com>
parents:
49393
diff
changeset
|
6145 else if (!(in_option || before_value)) |
8054c23b6726
(w32_make_rdb): New function.
Juanma Barranquero <lekktu@gmail.com>
parents:
49393
diff
changeset
|
6146 { |
8054c23b6726
(w32_make_rdb): New function.
Juanma Barranquero <lekktu@gmail.com>
parents:
49393
diff
changeset
|
6147 *current++ = ch; |
8054c23b6726
(w32_make_rdb): New function.
Juanma Barranquero <lekktu@gmail.com>
parents:
49393
diff
changeset
|
6148 } |
8054c23b6726
(w32_make_rdb): New function.
Juanma Barranquero <lekktu@gmail.com>
parents:
49393
diff
changeset
|
6149 } while (ch); |
8054c23b6726
(w32_make_rdb): New function.
Juanma Barranquero <lekktu@gmail.com>
parents:
49393
diff
changeset
|
6150 |
8054c23b6726
(w32_make_rdb): New function.
Juanma Barranquero <lekktu@gmail.com>
parents:
49393
diff
changeset
|
6151 *current = '\0'; |
8054c23b6726
(w32_make_rdb): New function.
Juanma Barranquero <lekktu@gmail.com>
parents:
49393
diff
changeset
|
6152 |
8054c23b6726
(w32_make_rdb): New function.
Juanma Barranquero <lekktu@gmail.com>
parents:
49393
diff
changeset
|
6153 return buffer; |
8054c23b6726
(w32_make_rdb): New function.
Juanma Barranquero <lekktu@gmail.com>
parents:
49393
diff
changeset
|
6154 } |
8054c23b6726
(w32_make_rdb): New function.
Juanma Barranquero <lekktu@gmail.com>
parents:
49393
diff
changeset
|
6155 |
16588
481b7874a1e9
Change identifiers of the form win32* to w32*.
Geoff Voelker <voelker@cs.washington.edu>
parents:
16326
diff
changeset
|
6156 struct w32_display_info * |
481b7874a1e9
Change identifiers of the form win32* to w32*.
Geoff Voelker <voelker@cs.washington.edu>
parents:
16326
diff
changeset
|
6157 w32_term_init (display_name, xrm_option, resource_name) |
13434 | 6158 Lisp_Object display_name; |
6159 char *xrm_option; | |
6160 char *resource_name; | |
6161 { | |
16588
481b7874a1e9
Change identifiers of the form win32* to w32*.
Geoff Voelker <voelker@cs.washington.edu>
parents:
16326
diff
changeset
|
6162 struct w32_display_info *dpyinfo; |
13434 | 6163 HDC hdc; |
48218
01e253345507
(w32_draw_fringe_bitmap): Remove unused local variable window.
Juanma Barranquero <lekktu@gmail.com>
parents:
48025
diff
changeset
|
6164 |
13434 | 6165 BLOCK_INPUT; |
48218
01e253345507
(w32_draw_fringe_bitmap): Remove unused local variable window.
Juanma Barranquero <lekktu@gmail.com>
parents:
48025
diff
changeset
|
6166 |
16588
481b7874a1e9
Change identifiers of the form win32* to w32*.
Geoff Voelker <voelker@cs.washington.edu>
parents:
16326
diff
changeset
|
6167 if (!w32_initialized) |
13434 | 6168 { |
16588
481b7874a1e9
Change identifiers of the form win32* to w32*.
Geoff Voelker <voelker@cs.washington.edu>
parents:
16326
diff
changeset
|
6169 w32_initialize (); |
481b7874a1e9
Change identifiers of the form win32* to w32*.
Geoff Voelker <voelker@cs.washington.edu>
parents:
16326
diff
changeset
|
6170 w32_initialized = 1; |
13434 | 6171 } |
48218
01e253345507
(w32_draw_fringe_bitmap): Remove unused local variable window.
Juanma Barranquero <lekktu@gmail.com>
parents:
48025
diff
changeset
|
6172 |
27889
51d0b4b8fc6a
(w32_display_info_for_display): Remove unused function.
Jason Rumney <jasonr@gnu.org>
parents:
27631
diff
changeset
|
6173 w32_initialize_display_info (display_name); |
51d0b4b8fc6a
(w32_display_info_for_display): Remove unused function.
Jason Rumney <jasonr@gnu.org>
parents:
27631
diff
changeset
|
6174 |
16588
481b7874a1e9
Change identifiers of the form win32* to w32*.
Geoff Voelker <voelker@cs.washington.edu>
parents:
16326
diff
changeset
|
6175 dpyinfo = &one_w32_display_info; |
38570
9606b955465e
(x_display_list): New variable.
Andrew Innes <andrewi@gnu.org>
parents:
36315
diff
changeset
|
6176 |
50038
8054c23b6726
(w32_make_rdb): New function.
Juanma Barranquero <lekktu@gmail.com>
parents:
49393
diff
changeset
|
6177 dpyinfo->xrdb = xrm_option ? w32_make_rdb (xrm_option) : NULL; |
8054c23b6726
(w32_make_rdb): New function.
Juanma Barranquero <lekktu@gmail.com>
parents:
49393
diff
changeset
|
6178 |
38570
9606b955465e
(x_display_list): New variable.
Andrew Innes <andrewi@gnu.org>
parents:
36315
diff
changeset
|
6179 /* Put this display on the chain. */ |
9606b955465e
(x_display_list): New variable.
Andrew Innes <andrewi@gnu.org>
parents:
36315
diff
changeset
|
6180 dpyinfo->next = x_display_list; |
9606b955465e
(x_display_list): New variable.
Andrew Innes <andrewi@gnu.org>
parents:
36315
diff
changeset
|
6181 x_display_list = dpyinfo; |
48218
01e253345507
(w32_draw_fringe_bitmap): Remove unused local variable window.
Juanma Barranquero <lekktu@gmail.com>
parents:
48025
diff
changeset
|
6182 |
15151
ed6ddfc0d954
(Vwindow_system): Declared.
Geoff Voelker <voelker@cs.washington.edu>
parents:
15035
diff
changeset
|
6183 hdc = GetDC (GetDesktopWindow ()); |
27402
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
6184 |
13434 | 6185 dpyinfo->height = GetDeviceCaps (hdc, VERTRES); |
6186 dpyinfo->width = GetDeviceCaps (hdc, HORZRES); | |
6187 dpyinfo->root_window = GetDesktopWindow (); | |
6188 dpyinfo->n_planes = GetDeviceCaps (hdc, PLANES); | |
6189 dpyinfo->n_cbits = GetDeviceCaps (hdc, BITSPIXEL); | |
27514
9625ad0c0f52
(w32_term_init): Swap resx and height_in, resy and
Jason Rumney <jasonr@gnu.org>
parents:
27406
diff
changeset
|
6190 dpyinfo->resx = GetDeviceCaps (hdc, LOGPIXELSX); |
9625ad0c0f52
(w32_term_init): Swap resx and height_in, resy and
Jason Rumney <jasonr@gnu.org>
parents:
27406
diff
changeset
|
6191 dpyinfo->resy = GetDeviceCaps (hdc, LOGPIXELSY); |
15151
ed6ddfc0d954
(Vwindow_system): Declared.
Geoff Voelker <voelker@cs.washington.edu>
parents:
15035
diff
changeset
|
6192 dpyinfo->has_palette = GetDeviceCaps (hdc, RASTERCAPS) & RC_PALETTE; |
27402
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
6193 dpyinfo->image_cache = make_image_cache (); |
27514
9625ad0c0f52
(w32_term_init): Swap resx and height_in, resy and
Jason Rumney <jasonr@gnu.org>
parents:
27406
diff
changeset
|
6194 dpyinfo->height_in = dpyinfo->height / dpyinfo->resx; |
9625ad0c0f52
(w32_term_init): Swap resx and height_in, resy and
Jason Rumney <jasonr@gnu.org>
parents:
27406
diff
changeset
|
6195 dpyinfo->width_in = dpyinfo->width / dpyinfo->resy; |
13434 | 6196 ReleaseDC (GetDesktopWindow (), hdc); |
15151
ed6ddfc0d954
(Vwindow_system): Declared.
Geoff Voelker <voelker@cs.washington.edu>
parents:
15035
diff
changeset
|
6197 |
ed6ddfc0d954
(Vwindow_system): Declared.
Geoff Voelker <voelker@cs.washington.edu>
parents:
15035
diff
changeset
|
6198 /* initialise palette with white and black */ |
ed6ddfc0d954
(Vwindow_system): Declared.
Geoff Voelker <voelker@cs.washington.edu>
parents:
15035
diff
changeset
|
6199 { |
47981
74b52651467d
(w32_term_init): Pass XColor to w32_define_color, not COLORREF.
Juanma Barranquero <lekktu@gmail.com>
parents:
47148
diff
changeset
|
6200 XColor color; |
27514
9625ad0c0f52
(w32_term_init): Swap resx and height_in, resy and
Jason Rumney <jasonr@gnu.org>
parents:
27406
diff
changeset
|
6201 w32_defined_color (0, "white", &color, 1); |
9625ad0c0f52
(w32_term_init): Swap resx and height_in, resy and
Jason Rumney <jasonr@gnu.org>
parents:
27406
diff
changeset
|
6202 w32_defined_color (0, "black", &color, 1); |
15151
ed6ddfc0d954
(Vwindow_system): Declared.
Geoff Voelker <voelker@cs.washington.edu>
parents:
15035
diff
changeset
|
6203 } |
ed6ddfc0d954
(Vwindow_system): Declared.
Geoff Voelker <voelker@cs.washington.edu>
parents:
15035
diff
changeset
|
6204 |
50096 | 6205 /* Create Fringe Bitmaps and store them for later use. |
6206 | |
6207 On W32, bitmaps are all unsigned short, as Windows requires | |
6208 bitmap data to be Word aligned. For some reason they are | |
6209 horizontally reflected compared to how they appear on X, so we | |
6210 need to bitswap and convert to unsigned shorts before creating | |
6211 the bitmaps. */ | |
53886
e1b1c388f74d
(w32_draw_fringe_bitmap): Copy unadapted code from
Kim F. Storm <storm@cua.dk>
parents:
53607
diff
changeset
|
6212 w32_init_fringe (); |
27889
51d0b4b8fc6a
(w32_display_info_for_display): Remove unused function.
Jason Rumney <jasonr@gnu.org>
parents:
27631
diff
changeset
|
6213 |
13434 | 6214 #ifndef F_SETOWN_BUG |
6215 #ifdef F_SETOWN | |
6216 #ifdef F_SETOWN_SOCK_NEG | |
6217 /* stdin is a socket here */ | |
6218 fcntl (connection, F_SETOWN, -getpid ()); | |
6219 #else /* ! defined (F_SETOWN_SOCK_NEG) */ | |
6220 fcntl (connection, F_SETOWN, getpid ()); | |
6221 #endif /* ! defined (F_SETOWN_SOCK_NEG) */ | |
6222 #endif /* ! defined (F_SETOWN) */ | |
6223 #endif /* F_SETOWN_BUG */ | |
6224 | |
6225 #ifdef SIGIO | |
6226 if (interrupt_input) | |
6227 init_sigio (connection); | |
6228 #endif /* ! defined (SIGIO) */ | |
6229 | |
6230 UNBLOCK_INPUT; | |
6231 | |
6232 return dpyinfo; | |
6233 } | |
6234 | |
6235 /* Get rid of display DPYINFO, assuming all frames are already gone. */ | |
6236 | |
6237 void | |
6238 x_delete_display (dpyinfo) | |
16588
481b7874a1e9
Change identifiers of the form win32* to w32*.
Geoff Voelker <voelker@cs.washington.edu>
parents:
16326
diff
changeset
|
6239 struct w32_display_info *dpyinfo; |
13434 | 6240 { |
16588
481b7874a1e9
Change identifiers of the form win32* to w32*.
Geoff Voelker <voelker@cs.washington.edu>
parents:
16326
diff
changeset
|
6241 /* Discard this display from w32_display_name_list and w32_display_list. |
13434 | 6242 We can't use Fdelq because that can quit. */ |
16588
481b7874a1e9
Change identifiers of the form win32* to w32*.
Geoff Voelker <voelker@cs.washington.edu>
parents:
16326
diff
changeset
|
6243 if (! NILP (w32_display_name_list) |
25646
9154af188477
Use XCAR and XCDR instead of explicit member references.
Ken Raeburn <raeburn@raeburn.org>
parents:
25236
diff
changeset
|
6244 && EQ (XCAR (w32_display_name_list), dpyinfo->name_list_element)) |
9154af188477
Use XCAR and XCDR instead of explicit member references.
Ken Raeburn <raeburn@raeburn.org>
parents:
25236
diff
changeset
|
6245 w32_display_name_list = XCDR (w32_display_name_list); |
13434 | 6246 else |
6247 { | |
6248 Lisp_Object tail; | |
6249 | |
16588
481b7874a1e9
Change identifiers of the form win32* to w32*.
Geoff Voelker <voelker@cs.washington.edu>
parents:
16326
diff
changeset
|
6250 tail = w32_display_name_list; |
25646
9154af188477
Use XCAR and XCDR instead of explicit member references.
Ken Raeburn <raeburn@raeburn.org>
parents:
25236
diff
changeset
|
6251 while (CONSP (tail) && CONSP (XCDR (tail))) |
13434 | 6252 { |
27889
51d0b4b8fc6a
(w32_display_info_for_display): Remove unused function.
Jason Rumney <jasonr@gnu.org>
parents:
27631
diff
changeset
|
6253 if (EQ (XCAR (XCDR (tail)), dpyinfo->name_list_element)) |
13434 | 6254 { |
39973
579177964efa
Avoid (most) uses of XCAR/XCDR as lvalues, for flexibility in experimenting
Ken Raeburn <raeburn@raeburn.org>
parents:
39697
diff
changeset
|
6255 XSETCDR (tail, XCDR (XCDR (tail))); |
13434 | 6256 break; |
6257 } | |
25646
9154af188477
Use XCAR and XCDR instead of explicit member references.
Ken Raeburn <raeburn@raeburn.org>
parents:
25236
diff
changeset
|
6258 tail = XCDR (tail); |
13434 | 6259 } |
6260 } | |
6261 | |
15151
ed6ddfc0d954
(Vwindow_system): Declared.
Geoff Voelker <voelker@cs.washington.edu>
parents:
15035
diff
changeset
|
6262 /* free palette table */ |
ed6ddfc0d954
(Vwindow_system): Declared.
Geoff Voelker <voelker@cs.washington.edu>
parents:
15035
diff
changeset
|
6263 { |
16588
481b7874a1e9
Change identifiers of the form win32* to w32*.
Geoff Voelker <voelker@cs.washington.edu>
parents:
16326
diff
changeset
|
6264 struct w32_palette_entry * plist; |
15151
ed6ddfc0d954
(Vwindow_system): Declared.
Geoff Voelker <voelker@cs.washington.edu>
parents:
15035
diff
changeset
|
6265 |
ed6ddfc0d954
(Vwindow_system): Declared.
Geoff Voelker <voelker@cs.washington.edu>
parents:
15035
diff
changeset
|
6266 plist = dpyinfo->color_list; |
ed6ddfc0d954
(Vwindow_system): Declared.
Geoff Voelker <voelker@cs.washington.edu>
parents:
15035
diff
changeset
|
6267 while (plist) |
ed6ddfc0d954
(Vwindow_system): Declared.
Geoff Voelker <voelker@cs.washington.edu>
parents:
15035
diff
changeset
|
6268 { |
16588
481b7874a1e9
Change identifiers of the form win32* to w32*.
Geoff Voelker <voelker@cs.washington.edu>
parents:
16326
diff
changeset
|
6269 struct w32_palette_entry * pentry = plist; |
15151
ed6ddfc0d954
(Vwindow_system): Declared.
Geoff Voelker <voelker@cs.washington.edu>
parents:
15035
diff
changeset
|
6270 plist = plist->next; |
32022
1f26caa05cd7
(w32_char_font_type, w32_encode_char, x_produce_glyphs): Distinguish
Jason Rumney <jasonr@gnu.org>
parents:
31624
diff
changeset
|
6271 xfree (pentry); |
15151
ed6ddfc0d954
(Vwindow_system): Declared.
Geoff Voelker <voelker@cs.washington.edu>
parents:
15035
diff
changeset
|
6272 } |
ed6ddfc0d954
(Vwindow_system): Declared.
Geoff Voelker <voelker@cs.washington.edu>
parents:
15035
diff
changeset
|
6273 dpyinfo->color_list = NULL; |
ed6ddfc0d954
(Vwindow_system): Declared.
Geoff Voelker <voelker@cs.washington.edu>
parents:
15035
diff
changeset
|
6274 if (dpyinfo->palette) |
ed6ddfc0d954
(Vwindow_system): Declared.
Geoff Voelker <voelker@cs.washington.edu>
parents:
15035
diff
changeset
|
6275 DeleteObject(dpyinfo->palette); |
ed6ddfc0d954
(Vwindow_system): Declared.
Geoff Voelker <voelker@cs.washington.edu>
parents:
15035
diff
changeset
|
6276 } |
13434 | 6277 xfree (dpyinfo->font_table); |
16588
481b7874a1e9
Change identifiers of the form win32* to w32*.
Geoff Voelker <voelker@cs.washington.edu>
parents:
16326
diff
changeset
|
6278 xfree (dpyinfo->w32_id_name); |
27889
51d0b4b8fc6a
(w32_display_info_for_display): Remove unused function.
Jason Rumney <jasonr@gnu.org>
parents:
27631
diff
changeset
|
6279 |
53886
e1b1c388f74d
(w32_draw_fringe_bitmap): Copy unadapted code from
Kim F. Storm <storm@cua.dk>
parents:
53607
diff
changeset
|
6280 w32_reset_fringes (); |
13434 | 6281 } |
6282 | |
16588
481b7874a1e9
Change identifiers of the form win32* to w32*.
Geoff Voelker <voelker@cs.washington.edu>
parents:
16326
diff
changeset
|
6283 /* Set up use of W32. */ |
13434 | 6284 |
74220
ae3e88b9ef1b
(w32_msg_worker): Declare correctly.
Jason Rumney <jasonr@gnu.org>
parents:
74145
diff
changeset
|
6285 DWORD WINAPI w32_msg_worker (void * arg); |
13434 | 6286 |
27402
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
6287 void |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
6288 x_flush (struct frame * f) |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
6289 { /* Nothing to do */ } |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
6290 |
50365
c0153b8fc41f
Remove unnecessary extern declarations.
Kim F. Storm <storm@cua.dk>
parents:
50280
diff
changeset
|
6291 extern frame_parm_handler w32_frame_parm_handlers[]; |
c0153b8fc41f
Remove unnecessary extern declarations.
Kim F. Storm <storm@cua.dk>
parents:
50280
diff
changeset
|
6292 |
27402
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
6293 static struct redisplay_interface w32_redisplay_interface = |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
6294 { |
50365
c0153b8fc41f
Remove unnecessary extern declarations.
Kim F. Storm <storm@cua.dk>
parents:
50280
diff
changeset
|
6295 w32_frame_parm_handlers, |
27402
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
6296 x_produce_glyphs, |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
6297 x_write_glyphs, |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
6298 x_insert_glyphs, |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
6299 x_clear_end_of_line, |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
6300 x_scroll_run, |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
6301 x_after_update_window_line, |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
6302 x_update_window_begin, |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
6303 x_update_window_end, |
50231
c8ea5e4b2129
* w32term.c: Remove consolidated defines and code.
Kim F. Storm <storm@cua.dk>
parents:
50163
diff
changeset
|
6304 x_cursor_to, |
27402
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
6305 x_flush, |
50231
c8ea5e4b2129
* w32term.c: Remove consolidated defines and code.
Kim F. Storm <storm@cua.dk>
parents:
50163
diff
changeset
|
6306 0, /* flush_display_optional */ |
c8ea5e4b2129
* w32term.c: Remove consolidated defines and code.
Kim F. Storm <storm@cua.dk>
parents:
50163
diff
changeset
|
6307 x_clear_window_mouse_face, |
50154
10038ae9db85
Remove consolidated defines and code.
Kim F. Storm <storm@cua.dk>
parents:
50096
diff
changeset
|
6308 w32_get_glyph_overhangs, |
50096 | 6309 x_fix_overlapping_area, |
50154
10038ae9db85
Remove consolidated defines and code.
Kim F. Storm <storm@cua.dk>
parents:
50096
diff
changeset
|
6310 w32_draw_fringe_bitmap, |
53886
e1b1c388f74d
(w32_draw_fringe_bitmap): Copy unadapted code from
Kim F. Storm <storm@cua.dk>
parents:
53607
diff
changeset
|
6311 w32_define_fringe_bitmap, |
e1b1c388f74d
(w32_draw_fringe_bitmap): Copy unadapted code from
Kim F. Storm <storm@cua.dk>
parents:
53607
diff
changeset
|
6312 w32_destroy_fringe_bitmap, |
50154
10038ae9db85
Remove consolidated defines and code.
Kim F. Storm <storm@cua.dk>
parents:
50096
diff
changeset
|
6313 w32_per_char_metric, |
10038ae9db85
Remove consolidated defines and code.
Kim F. Storm <storm@cua.dk>
parents:
50096
diff
changeset
|
6314 w32_encode_char, |
10038ae9db85
Remove consolidated defines and code.
Kim F. Storm <storm@cua.dk>
parents:
50096
diff
changeset
|
6315 NULL, /* w32_compute_glyph_string_overhangs */ |
50231
c8ea5e4b2129
* w32term.c: Remove consolidated defines and code.
Kim F. Storm <storm@cua.dk>
parents:
50163
diff
changeset
|
6316 x_draw_glyph_string, |
c8ea5e4b2129
* w32term.c: Remove consolidated defines and code.
Kim F. Storm <storm@cua.dk>
parents:
50163
diff
changeset
|
6317 w32_define_frame_cursor, |
c8ea5e4b2129
* w32term.c: Remove consolidated defines and code.
Kim F. Storm <storm@cua.dk>
parents:
50163
diff
changeset
|
6318 w32_clear_frame_area, |
c8ea5e4b2129
* w32term.c: Remove consolidated defines and code.
Kim F. Storm <storm@cua.dk>
parents:
50163
diff
changeset
|
6319 w32_draw_window_cursor, |
c8ea5e4b2129
* w32term.c: Remove consolidated defines and code.
Kim F. Storm <storm@cua.dk>
parents:
50163
diff
changeset
|
6320 w32_draw_vertical_window_border, |
c8ea5e4b2129
* w32term.c: Remove consolidated defines and code.
Kim F. Storm <storm@cua.dk>
parents:
50163
diff
changeset
|
6321 w32_shift_glyphs_for_insert |
27402
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
6322 }; |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
6323 |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
6324 void |
16588
481b7874a1e9
Change identifiers of the form win32* to w32*.
Geoff Voelker <voelker@cs.washington.edu>
parents:
16326
diff
changeset
|
6325 w32_initialize () |
13434 | 6326 { |
27402
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
6327 rif = &w32_redisplay_interface; |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
6328 |
21831
6b659713b90b
Forward declare hooks with full function prototypes.
Geoff Voelker <voelker@cs.washington.edu>
parents:
21740
diff
changeset
|
6329 /* MSVC does not type K&R functions with no arguments correctly, and |
6b659713b90b
Forward declare hooks with full function prototypes.
Geoff Voelker <voelker@cs.washington.edu>
parents:
21740
diff
changeset
|
6330 so we must explicitly cast them. */ |
27402
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
6331 clear_frame_hook = (void (*)(void)) x_clear_frame; |
21831
6b659713b90b
Forward declare hooks with full function prototypes.
Geoff Voelker <voelker@cs.washington.edu>
parents:
21740
diff
changeset
|
6332 ring_bell_hook = (void (*)(void)) w32_ring_bell; |
27402
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
6333 update_begin_hook = x_update_begin; |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
6334 update_end_hook = x_update_end; |
35449
98d65e364070
(w32_ring_bell): Only support visible bell on w32
Andrew Innes <andrewi@gnu.org>
parents:
35384
diff
changeset
|
6335 |
13434 | 6336 read_socket_hook = w32_read_socket; |
35449
98d65e364070
(w32_ring_bell): Only support visible bell on w32
Andrew Innes <andrewi@gnu.org>
parents:
35384
diff
changeset
|
6337 |
16588
481b7874a1e9
Change identifiers of the form win32* to w32*.
Geoff Voelker <voelker@cs.washington.edu>
parents:
16326
diff
changeset
|
6338 frame_up_to_date_hook = w32_frame_up_to_date; |
35449
98d65e364070
(w32_ring_bell): Only support visible bell on w32
Andrew Innes <andrewi@gnu.org>
parents:
35384
diff
changeset
|
6339 |
16588
481b7874a1e9
Change identifiers of the form win32* to w32*.
Geoff Voelker <voelker@cs.washington.edu>
parents:
16326
diff
changeset
|
6340 mouse_position_hook = w32_mouse_position; |
481b7874a1e9
Change identifiers of the form win32* to w32*.
Geoff Voelker <voelker@cs.washington.edu>
parents:
16326
diff
changeset
|
6341 frame_rehighlight_hook = w32_frame_rehighlight; |
481b7874a1e9
Change identifiers of the form win32* to w32*.
Geoff Voelker <voelker@cs.washington.edu>
parents:
16326
diff
changeset
|
6342 frame_raise_lower_hook = w32_frame_raise_lower; |
481b7874a1e9
Change identifiers of the form win32* to w32*.
Geoff Voelker <voelker@cs.washington.edu>
parents:
16326
diff
changeset
|
6343 set_vertical_scroll_bar_hook = w32_set_vertical_scroll_bar; |
481b7874a1e9
Change identifiers of the form win32* to w32*.
Geoff Voelker <voelker@cs.washington.edu>
parents:
16326
diff
changeset
|
6344 condemn_scroll_bars_hook = w32_condemn_scroll_bars; |
481b7874a1e9
Change identifiers of the form win32* to w32*.
Geoff Voelker <voelker@cs.washington.edu>
parents:
16326
diff
changeset
|
6345 redeem_scroll_bar_hook = w32_redeem_scroll_bar; |
481b7874a1e9
Change identifiers of the form win32* to w32*.
Geoff Voelker <voelker@cs.washington.edu>
parents:
16326
diff
changeset
|
6346 judge_scroll_bars_hook = w32_judge_scroll_bars; |
13434 | 6347 |
6348 scroll_region_ok = 1; /* we'll scroll partial frames */ | |
36002
205727d5d63c
(w32_encode_char): Treat eight bit graphic and control
Jason Rumney <jasonr@gnu.org>
parents:
35984
diff
changeset
|
6349 char_ins_del_ok = 1; |
13434 | 6350 line_ins_del_ok = 1; /* we'll just blt 'em */ |
6351 fast_clear_end_of_line = 1; /* X does this well */ | |
6352 memory_below_frame = 0; /* we don't remember what scrolls | |
6353 off the bottom */ | |
6354 baud_rate = 19200; | |
6355 | |
40384
25e6d4bb5f7f
(w32_system_caret_hwnd, w32_system_caret_width)
Jason Rumney <jasonr@gnu.org>
parents:
40245
diff
changeset
|
6356 w32_system_caret_hwnd = NULL; |
25e6d4bb5f7f
(w32_system_caret_hwnd, w32_system_caret_width)
Jason Rumney <jasonr@gnu.org>
parents:
40245
diff
changeset
|
6357 w32_system_caret_height = 0; |
25e6d4bb5f7f
(w32_system_caret_hwnd, w32_system_caret_width)
Jason Rumney <jasonr@gnu.org>
parents:
40245
diff
changeset
|
6358 w32_system_caret_x = 0; |
25e6d4bb5f7f
(w32_system_caret_hwnd, w32_system_caret_width)
Jason Rumney <jasonr@gnu.org>
parents:
40245
diff
changeset
|
6359 w32_system_caret_y = 0; |
25e6d4bb5f7f
(w32_system_caret_hwnd, w32_system_caret_width)
Jason Rumney <jasonr@gnu.org>
parents:
40245
diff
changeset
|
6360 |
63904
72c5011362ef
* w32term.c (cleartype_active): New flag for enabling sub-pixel
Jason Rumney <jasonr@gnu.org>
parents:
63376
diff
changeset
|
6361 /* Initialize w32_use_visible_system_caret based on whether a screen |
72c5011362ef
* w32term.c (cleartype_active): New flag for enabling sub-pixel
Jason Rumney <jasonr@gnu.org>
parents:
63376
diff
changeset
|
6362 reader is in use. */ |
72c5011362ef
* w32term.c (cleartype_active): New flag for enabling sub-pixel
Jason Rumney <jasonr@gnu.org>
parents:
63376
diff
changeset
|
6363 if (!SystemParametersInfo (SPI_GETSCREENREADER, 0, |
72c5011362ef
* w32term.c (cleartype_active): New flag for enabling sub-pixel
Jason Rumney <jasonr@gnu.org>
parents:
63376
diff
changeset
|
6364 &w32_use_visible_system_caret, 0)) |
72c5011362ef
* w32term.c (cleartype_active): New flag for enabling sub-pixel
Jason Rumney <jasonr@gnu.org>
parents:
63376
diff
changeset
|
6365 w32_use_visible_system_caret = 0; |
72c5011362ef
* w32term.c (cleartype_active): New flag for enabling sub-pixel
Jason Rumney <jasonr@gnu.org>
parents:
63376
diff
changeset
|
6366 |
27402
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
6367 last_tool_bar_item = -1; |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
6368 any_help_event_p = 0; |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
6369 |
19713
043ccce224fb
(SIF_*): Win95 macros defined for NT.
Geoff Voelker <voelker@cs.washington.edu>
parents:
18877
diff
changeset
|
6370 /* Initialize input mode: interrupt_input off, no flow control, allow |
043ccce224fb
(SIF_*): Win95 macros defined for NT.
Geoff Voelker <voelker@cs.washington.edu>
parents:
18877
diff
changeset
|
6371 8 bit character input, standard quit char. */ |
043ccce224fb
(SIF_*): Win95 macros defined for NT.
Geoff Voelker <voelker@cs.washington.edu>
parents:
18877
diff
changeset
|
6372 Fset_input_mode (Qnil, Qnil, make_number (2), Qnil); |
13434 | 6373 |
6374 /* Create the window thread - it will terminate itself or when the app terminates */ | |
6375 | |
6376 init_crit (); | |
6377 | |
6378 dwMainThreadId = GetCurrentThreadId (); | |
48218
01e253345507
(w32_draw_fringe_bitmap): Remove unused local variable window.
Juanma Barranquero <lekktu@gmail.com>
parents:
48025
diff
changeset
|
6379 DuplicateHandle (GetCurrentProcess (), GetCurrentThread (), |
13434 | 6380 GetCurrentProcess (), &hMainThread, 0, TRUE, DUPLICATE_SAME_ACCESS); |
6381 | |
6382 /* Wait for thread to start */ | |
6383 | |
6384 { | |
6385 MSG msg; | |
6386 | |
6387 PeekMessage (&msg, NULL, 0, 0, PM_NOREMOVE); | |
6388 | |
48218
01e253345507
(w32_draw_fringe_bitmap): Remove unused local variable window.
Juanma Barranquero <lekktu@gmail.com>
parents:
48025
diff
changeset
|
6389 hWindowsThread = CreateThread (NULL, 0, |
74220
ae3e88b9ef1b
(w32_msg_worker): Declare correctly.
Jason Rumney <jasonr@gnu.org>
parents:
74145
diff
changeset
|
6390 w32_msg_worker, |
ae3e88b9ef1b
(w32_msg_worker): Declare correctly.
Jason Rumney <jasonr@gnu.org>
parents:
74145
diff
changeset
|
6391 0, 0, &dwWindowsThreadId); |
13434 | 6392 |
6393 GetMessage (&msg, NULL, WM_EMACS_DONE, WM_EMACS_DONE); | |
6394 } | |
48218
01e253345507
(w32_draw_fringe_bitmap): Remove unused local variable window.
Juanma Barranquero <lekktu@gmail.com>
parents:
48025
diff
changeset
|
6395 |
15151
ed6ddfc0d954
(Vwindow_system): Declared.
Geoff Voelker <voelker@cs.washington.edu>
parents:
15035
diff
changeset
|
6396 /* It is desirable that mainThread should have the same notion of |
16884
36babc489b0c
Change all uses of win95, winnt, and win32
Geoff Voelker <voelker@cs.washington.edu>
parents:
16588
diff
changeset
|
6397 focus window and active window as windowsThread. Unfortunately, the |
15151
ed6ddfc0d954
(Vwindow_system): Declared.
Geoff Voelker <voelker@cs.washington.edu>
parents:
15035
diff
changeset
|
6398 following call to AttachThreadInput, which should do precisely what |
ed6ddfc0d954
(Vwindow_system): Declared.
Geoff Voelker <voelker@cs.washington.edu>
parents:
15035
diff
changeset
|
6399 we need, causes major problems when Emacs is linked as a console |
ed6ddfc0d954
(Vwindow_system): Declared.
Geoff Voelker <voelker@cs.washington.edu>
parents:
15035
diff
changeset
|
6400 program. Unfortunately, we have good reasons for doing that, so |
16884
36babc489b0c
Change all uses of win95, winnt, and win32
Geoff Voelker <voelker@cs.washington.edu>
parents:
16588
diff
changeset
|
6401 instead we need to send messages to windowsThread to make some API |
15151
ed6ddfc0d954
(Vwindow_system): Declared.
Geoff Voelker <voelker@cs.washington.edu>
parents:
15035
diff
changeset
|
6402 calls for us (ones that affect, or depend on, the active/focus |
ed6ddfc0d954
(Vwindow_system): Declared.
Geoff Voelker <voelker@cs.washington.edu>
parents:
15035
diff
changeset
|
6403 window state. */ |
ed6ddfc0d954
(Vwindow_system): Declared.
Geoff Voelker <voelker@cs.washington.edu>
parents:
15035
diff
changeset
|
6404 #ifdef ATTACH_THREADS |
16884
36babc489b0c
Change all uses of win95, winnt, and win32
Geoff Voelker <voelker@cs.washington.edu>
parents:
16588
diff
changeset
|
6405 AttachThreadInput (dwMainThreadId, dwWindowsThreadId, TRUE); |
15151
ed6ddfc0d954
(Vwindow_system): Declared.
Geoff Voelker <voelker@cs.washington.edu>
parents:
15035
diff
changeset
|
6406 #endif |
19713
043ccce224fb
(SIF_*): Win95 macros defined for NT.
Geoff Voelker <voelker@cs.washington.edu>
parents:
18877
diff
changeset
|
6407 |
71236
4a38eb2f741d
(w32_set_scroll_bar_thumb, x_scroll_bar_create)
Jason Rumney <jasonr@gnu.org>
parents:
71074
diff
changeset
|
6408 /* Load system settings. */ |
19713
043ccce224fb
(SIF_*): Win95 macros defined for NT.
Geoff Voelker <voelker@cs.washington.edu>
parents:
18877
diff
changeset
|
6409 { |
63904
72c5011362ef
* w32term.c (cleartype_active): New flag for enabling sub-pixel
Jason Rumney <jasonr@gnu.org>
parents:
63376
diff
changeset
|
6410 UINT smoothing_type; |
72c5011362ef
* w32term.c (cleartype_active): New flag for enabling sub-pixel
Jason Rumney <jasonr@gnu.org>
parents:
63376
diff
changeset
|
6411 BOOL smoothing_enabled; |
19713
043ccce224fb
(SIF_*): Win95 macros defined for NT.
Geoff Voelker <voelker@cs.washington.edu>
parents:
18877
diff
changeset
|
6412 |
043ccce224fb
(SIF_*): Win95 macros defined for NT.
Geoff Voelker <voelker@cs.washington.edu>
parents:
18877
diff
changeset
|
6413 /* If using proportional scroll bars, ensure handle is at least 5 pixels; |
043ccce224fb
(SIF_*): Win95 macros defined for NT.
Geoff Voelker <voelker@cs.washington.edu>
parents:
18877
diff
changeset
|
6414 otherwise use the fixed height. */ |
71236
4a38eb2f741d
(w32_set_scroll_bar_thumb, x_scroll_bar_create)
Jason Rumney <jasonr@gnu.org>
parents:
71074
diff
changeset
|
6415 vertical_scroll_bar_min_handle = 5; |
19713
043ccce224fb
(SIF_*): Win95 macros defined for NT.
Geoff Voelker <voelker@cs.washington.edu>
parents:
18877
diff
changeset
|
6416 |
043ccce224fb
(SIF_*): Win95 macros defined for NT.
Geoff Voelker <voelker@cs.washington.edu>
parents:
18877
diff
changeset
|
6417 /* For either kind of scroll bar, take account of the arrows; these |
043ccce224fb
(SIF_*): Win95 macros defined for NT.
Geoff Voelker <voelker@cs.washington.edu>
parents:
18877
diff
changeset
|
6418 effectively form the border of the main scroll bar range. */ |
043ccce224fb
(SIF_*): Win95 macros defined for NT.
Geoff Voelker <voelker@cs.washington.edu>
parents:
18877
diff
changeset
|
6419 vertical_scroll_bar_top_border = vertical_scroll_bar_bottom_border |
043ccce224fb
(SIF_*): Win95 macros defined for NT.
Geoff Voelker <voelker@cs.washington.edu>
parents:
18877
diff
changeset
|
6420 = GetSystemMetrics (SM_CYVSCROLL); |
63904
72c5011362ef
* w32term.c (cleartype_active): New flag for enabling sub-pixel
Jason Rumney <jasonr@gnu.org>
parents:
63376
diff
changeset
|
6421 |
72c5011362ef
* w32term.c (cleartype_active): New flag for enabling sub-pixel
Jason Rumney <jasonr@gnu.org>
parents:
63376
diff
changeset
|
6422 /* Constants that are not always defined by the system headers |
72c5011362ef
* w32term.c (cleartype_active): New flag for enabling sub-pixel
Jason Rumney <jasonr@gnu.org>
parents:
63376
diff
changeset
|
6423 since they only exist on certain versions of Windows. */ |
72c5011362ef
* w32term.c (cleartype_active): New flag for enabling sub-pixel
Jason Rumney <jasonr@gnu.org>
parents:
63376
diff
changeset
|
6424 #ifndef SPI_GETFONTSMOOTHING |
72c5011362ef
* w32term.c (cleartype_active): New flag for enabling sub-pixel
Jason Rumney <jasonr@gnu.org>
parents:
63376
diff
changeset
|
6425 #define SPI_GETFONTSMOOTHING 0x4A |
72c5011362ef
* w32term.c (cleartype_active): New flag for enabling sub-pixel
Jason Rumney <jasonr@gnu.org>
parents:
63376
diff
changeset
|
6426 #endif |
72c5011362ef
* w32term.c (cleartype_active): New flag for enabling sub-pixel
Jason Rumney <jasonr@gnu.org>
parents:
63376
diff
changeset
|
6427 #ifndef SPI_GETFONTSMOOTHINGTYPE |
72c5011362ef
* w32term.c (cleartype_active): New flag for enabling sub-pixel
Jason Rumney <jasonr@gnu.org>
parents:
63376
diff
changeset
|
6428 #define SPI_GETFONTSMOOTHINGTYPE 0x0200A |
72c5011362ef
* w32term.c (cleartype_active): New flag for enabling sub-pixel
Jason Rumney <jasonr@gnu.org>
parents:
63376
diff
changeset
|
6429 #endif |
72c5011362ef
* w32term.c (cleartype_active): New flag for enabling sub-pixel
Jason Rumney <jasonr@gnu.org>
parents:
63376
diff
changeset
|
6430 #ifndef FE_FONTSMOOTHINGCLEARTYPE |
72c5011362ef
* w32term.c (cleartype_active): New flag for enabling sub-pixel
Jason Rumney <jasonr@gnu.org>
parents:
63376
diff
changeset
|
6431 #define FE_FONTSMOOTHINGCLEARTYPE 0x2 |
72c5011362ef
* w32term.c (cleartype_active): New flag for enabling sub-pixel
Jason Rumney <jasonr@gnu.org>
parents:
63376
diff
changeset
|
6432 #endif |
72c5011362ef
* w32term.c (cleartype_active): New flag for enabling sub-pixel
Jason Rumney <jasonr@gnu.org>
parents:
63376
diff
changeset
|
6433 |
72c5011362ef
* w32term.c (cleartype_active): New flag for enabling sub-pixel
Jason Rumney <jasonr@gnu.org>
parents:
63376
diff
changeset
|
6434 /* Determine if Cleartype is in use. Used to enable a hack in |
72c5011362ef
* w32term.c (cleartype_active): New flag for enabling sub-pixel
Jason Rumney <jasonr@gnu.org>
parents:
63376
diff
changeset
|
6435 the char metric calculations which adds extra pixels to |
72c5011362ef
* w32term.c (cleartype_active): New flag for enabling sub-pixel
Jason Rumney <jasonr@gnu.org>
parents:
63376
diff
changeset
|
6436 compensate for the "sub-pixels" that are not counted by the |
72c5011362ef
* w32term.c (cleartype_active): New flag for enabling sub-pixel
Jason Rumney <jasonr@gnu.org>
parents:
63376
diff
changeset
|
6437 system APIs. */ |
72c5011362ef
* w32term.c (cleartype_active): New flag for enabling sub-pixel
Jason Rumney <jasonr@gnu.org>
parents:
63376
diff
changeset
|
6438 cleartype_active = |
72c5011362ef
* w32term.c (cleartype_active): New flag for enabling sub-pixel
Jason Rumney <jasonr@gnu.org>
parents:
63376
diff
changeset
|
6439 SystemParametersInfo (SPI_GETFONTSMOOTHING, 0, &smoothing_enabled, 0) |
72c5011362ef
* w32term.c (cleartype_active): New flag for enabling sub-pixel
Jason Rumney <jasonr@gnu.org>
parents:
63376
diff
changeset
|
6440 && smoothing_enabled |
72c5011362ef
* w32term.c (cleartype_active): New flag for enabling sub-pixel
Jason Rumney <jasonr@gnu.org>
parents:
63376
diff
changeset
|
6441 && SystemParametersInfo (SPI_GETFONTSMOOTHINGTYPE, 0, &smoothing_type, 0) |
72c5011362ef
* w32term.c (cleartype_active): New flag for enabling sub-pixel
Jason Rumney <jasonr@gnu.org>
parents:
63376
diff
changeset
|
6442 && smoothing_type == FE_FONTSMOOTHINGCLEARTYPE; |
19713
043ccce224fb
(SIF_*): Win95 macros defined for NT.
Geoff Voelker <voelker@cs.washington.edu>
parents:
18877
diff
changeset
|
6443 } |
13434 | 6444 } |
6445 | |
6446 void | |
16588
481b7874a1e9
Change identifiers of the form win32* to w32*.
Geoff Voelker <voelker@cs.washington.edu>
parents:
16326
diff
changeset
|
6447 syms_of_w32term () |
13434 | 6448 { |
16588
481b7874a1e9
Change identifiers of the form win32* to w32*.
Geoff Voelker <voelker@cs.washington.edu>
parents:
16326
diff
changeset
|
6449 staticpro (&w32_display_name_list); |
481b7874a1e9
Change identifiers of the form win32* to w32*.
Geoff Voelker <voelker@cs.washington.edu>
parents:
16326
diff
changeset
|
6450 w32_display_name_list = Qnil; |
13434 | 6451 |
6452 staticpro (&last_mouse_scroll_bar); | |
6453 last_mouse_scroll_bar = Qnil; | |
6454 | |
6455 staticpro (&Qvendor_specific_keysyms); | |
6456 Qvendor_specific_keysyms = intern ("vendor-specific-keysyms"); | |
15151
ed6ddfc0d954
(Vwindow_system): Declared.
Geoff Voelker <voelker@cs.washington.edu>
parents:
15035
diff
changeset
|
6457 |
16588
481b7874a1e9
Change identifiers of the form win32* to w32*.
Geoff Voelker <voelker@cs.washington.edu>
parents:
16326
diff
changeset
|
6458 DEFVAR_INT ("w32-num-mouse-buttons", |
55646
358a5c0b4571
(w32_num_mouse_buttons): Rename from Vw32_num_mouse_buttons and make
Jason Rumney <jasonr@gnu.org>
parents:
55286
diff
changeset
|
6459 &w32_num_mouse_buttons, |
40962
f66d09d1bb2f
Change doc-string comments to `new style'. [w/`doc:' keyword]. Doc fixes.
Jason Rumney <jasonr@gnu.org>
parents:
40816
diff
changeset
|
6460 doc: /* Number of physical mouse buttons. */); |
55646
358a5c0b4571
(w32_num_mouse_buttons): Rename from Vw32_num_mouse_buttons and make
Jason Rumney <jasonr@gnu.org>
parents:
55286
diff
changeset
|
6461 w32_num_mouse_buttons = 2; |
16588
481b7874a1e9
Change identifiers of the form win32* to w32*.
Geoff Voelker <voelker@cs.washington.edu>
parents:
16326
diff
changeset
|
6462 |
481b7874a1e9
Change identifiers of the form win32* to w32*.
Geoff Voelker <voelker@cs.washington.edu>
parents:
16326
diff
changeset
|
6463 DEFVAR_LISP ("w32-swap-mouse-buttons", |
481b7874a1e9
Change identifiers of the form win32* to w32*.
Geoff Voelker <voelker@cs.washington.edu>
parents:
16326
diff
changeset
|
6464 &Vw32_swap_mouse_buttons, |
40962
f66d09d1bb2f
Change doc-string comments to `new style'. [w/`doc:' keyword]. Doc fixes.
Jason Rumney <jasonr@gnu.org>
parents:
40816
diff
changeset
|
6465 doc: /* Swap the mapping of middle and right mouse buttons. |
f66d09d1bb2f
Change doc-string comments to `new style'. [w/`doc:' keyword]. Doc fixes.
Jason Rumney <jasonr@gnu.org>
parents:
40816
diff
changeset
|
6466 When nil, middle button is mouse-2 and right button is mouse-3. */); |
16588
481b7874a1e9
Change identifiers of the form win32* to w32*.
Geoff Voelker <voelker@cs.washington.edu>
parents:
16326
diff
changeset
|
6467 Vw32_swap_mouse_buttons = Qnil; |
19713
043ccce224fb
(SIF_*): Win95 macros defined for NT.
Geoff Voelker <voelker@cs.washington.edu>
parents:
18877
diff
changeset
|
6468 |
043ccce224fb
(SIF_*): Win95 macros defined for NT.
Geoff Voelker <voelker@cs.washington.edu>
parents:
18877
diff
changeset
|
6469 DEFVAR_LISP ("w32-grab-focus-on-raise", |
043ccce224fb
(SIF_*): Win95 macros defined for NT.
Geoff Voelker <voelker@cs.washington.edu>
parents:
18877
diff
changeset
|
6470 &Vw32_grab_focus_on_raise, |
40962
f66d09d1bb2f
Change doc-string comments to `new style'. [w/`doc:' keyword]. Doc fixes.
Jason Rumney <jasonr@gnu.org>
parents:
40816
diff
changeset
|
6471 doc: /* Raised frame grabs input focus. |
f66d09d1bb2f
Change doc-string comments to `new style'. [w/`doc:' keyword]. Doc fixes.
Jason Rumney <jasonr@gnu.org>
parents:
40816
diff
changeset
|
6472 When t, `raise-frame' grabs input focus as well. This fits well |
f66d09d1bb2f
Change doc-string comments to `new style'. [w/`doc:' keyword]. Doc fixes.
Jason Rumney <jasonr@gnu.org>
parents:
40816
diff
changeset
|
6473 with the normal Windows click-to-focus policy, but might not be |
f66d09d1bb2f
Change doc-string comments to `new style'. [w/`doc:' keyword]. Doc fixes.
Jason Rumney <jasonr@gnu.org>
parents:
40816
diff
changeset
|
6474 desirable when using a point-to-focus policy. */); |
19713
043ccce224fb
(SIF_*): Win95 macros defined for NT.
Geoff Voelker <voelker@cs.washington.edu>
parents:
18877
diff
changeset
|
6475 Vw32_grab_focus_on_raise = Qt; |
043ccce224fb
(SIF_*): Win95 macros defined for NT.
Geoff Voelker <voelker@cs.washington.edu>
parents:
18877
diff
changeset
|
6476 |
043ccce224fb
(SIF_*): Win95 macros defined for NT.
Geoff Voelker <voelker@cs.washington.edu>
parents:
18877
diff
changeset
|
6477 DEFVAR_LISP ("w32-capslock-is-shiftlock", |
043ccce224fb
(SIF_*): Win95 macros defined for NT.
Geoff Voelker <voelker@cs.washington.edu>
parents:
18877
diff
changeset
|
6478 &Vw32_capslock_is_shiftlock, |
40962
f66d09d1bb2f
Change doc-string comments to `new style'. [w/`doc:' keyword]. Doc fixes.
Jason Rumney <jasonr@gnu.org>
parents:
40816
diff
changeset
|
6479 doc: /* Apply CapsLock state to non character input keys. |
f66d09d1bb2f
Change doc-string comments to `new style'. [w/`doc:' keyword]. Doc fixes.
Jason Rumney <jasonr@gnu.org>
parents:
40816
diff
changeset
|
6480 When nil, CapsLock only affects normal character input keys. */); |
19713
043ccce224fb
(SIF_*): Win95 macros defined for NT.
Geoff Voelker <voelker@cs.washington.edu>
parents:
18877
diff
changeset
|
6481 Vw32_capslock_is_shiftlock = Qnil; |
21614
2624d8dcc73f
(Vw32_recognize_altgr): New variable.
Geoff Voelker <voelker@cs.washington.edu>
parents:
21456
diff
changeset
|
6482 |
2624d8dcc73f
(Vw32_recognize_altgr): New variable.
Geoff Voelker <voelker@cs.washington.edu>
parents:
21456
diff
changeset
|
6483 DEFVAR_LISP ("w32-recognize-altgr", |
2624d8dcc73f
(Vw32_recognize_altgr): New variable.
Geoff Voelker <voelker@cs.washington.edu>
parents:
21456
diff
changeset
|
6484 &Vw32_recognize_altgr, |
40962
f66d09d1bb2f
Change doc-string comments to `new style'. [w/`doc:' keyword]. Doc fixes.
Jason Rumney <jasonr@gnu.org>
parents:
40816
diff
changeset
|
6485 doc: /* Recognize right-alt and left-ctrl as AltGr. |
f66d09d1bb2f
Change doc-string comments to `new style'. [w/`doc:' keyword]. Doc fixes.
Jason Rumney <jasonr@gnu.org>
parents:
40816
diff
changeset
|
6486 When nil, the right-alt and left-ctrl key combination is |
48218
01e253345507
(w32_draw_fringe_bitmap): Remove unused local variable window.
Juanma Barranquero <lekktu@gmail.com>
parents:
48025
diff
changeset
|
6487 interpreted normally. */); |
21614
2624d8dcc73f
(Vw32_recognize_altgr): New variable.
Geoff Voelker <voelker@cs.washington.edu>
parents:
21456
diff
changeset
|
6488 Vw32_recognize_altgr = Qt; |
23638
e6fb9ffee4f4
(dumpglyphs): Use FRAME_FONT for w32_fill_area.
Geoff Voelker <voelker@cs.washington.edu>
parents:
23510
diff
changeset
|
6489 |
23639
516fc58a7b7b
(w32_enable_unicode_output): Rename from
Geoff Voelker <voelker@cs.washington.edu>
parents:
23638
diff
changeset
|
6490 DEFVAR_BOOL ("w32-enable-unicode-output", |
516fc58a7b7b
(w32_enable_unicode_output): Rename from
Geoff Voelker <voelker@cs.washington.edu>
parents:
23638
diff
changeset
|
6491 &w32_enable_unicode_output, |
40962
f66d09d1bb2f
Change doc-string comments to `new style'. [w/`doc:' keyword]. Doc fixes.
Jason Rumney <jasonr@gnu.org>
parents:
40816
diff
changeset
|
6492 doc: /* Enable the use of Unicode for text output if non-nil. |
f66d09d1bb2f
Change doc-string comments to `new style'. [w/`doc:' keyword]. Doc fixes.
Jason Rumney <jasonr@gnu.org>
parents:
40816
diff
changeset
|
6493 Unicode output may prevent some third party applications for displaying |
f66d09d1bb2f
Change doc-string comments to `new style'. [w/`doc:' keyword]. Doc fixes.
Jason Rumney <jasonr@gnu.org>
parents:
40816
diff
changeset
|
6494 Far-East Languages on Windows 95/98 from working properly. |
f66d09d1bb2f
Change doc-string comments to `new style'. [w/`doc:' keyword]. Doc fixes.
Jason Rumney <jasonr@gnu.org>
parents:
40816
diff
changeset
|
6495 NT uses Unicode internally anyway, so this flag will probably have no |
f66d09d1bb2f
Change doc-string comments to `new style'. [w/`doc:' keyword]. Doc fixes.
Jason Rumney <jasonr@gnu.org>
parents:
40816
diff
changeset
|
6496 affect on NT machines. */); |
23639
516fc58a7b7b
(w32_enable_unicode_output): Rename from
Geoff Voelker <voelker@cs.washington.edu>
parents:
23638
diff
changeset
|
6497 w32_enable_unicode_output = 1; |
24131
34f6ec762e5e
Remove codepage macros. Remove redundant BIG5 macros.
Geoff Voelker <voelker@cs.washington.edu>
parents:
23951
diff
changeset
|
6498 |
42864
c1af6a7f3dd4
(w32_system_caret_width): Remove.
Jason Rumney <jasonr@gnu.org>
parents:
42844
diff
changeset
|
6499 DEFVAR_BOOL ("w32-use-visible-system-caret", |
c1af6a7f3dd4
(w32_system_caret_width): Remove.
Jason Rumney <jasonr@gnu.org>
parents:
42844
diff
changeset
|
6500 &w32_use_visible_system_caret, |
c1af6a7f3dd4
(w32_system_caret_width): Remove.
Jason Rumney <jasonr@gnu.org>
parents:
42844
diff
changeset
|
6501 doc: /* Flag to make the system caret visible. |
c1af6a7f3dd4
(w32_system_caret_width): Remove.
Jason Rumney <jasonr@gnu.org>
parents:
42844
diff
changeset
|
6502 When this is non-nil, Emacs will indicate the position of point by |
c1af6a7f3dd4
(w32_system_caret_width): Remove.
Jason Rumney <jasonr@gnu.org>
parents:
42844
diff
changeset
|
6503 using the system caret instead of drawing its own cursor. Some screen |
c1af6a7f3dd4
(w32_system_caret_width): Remove.
Jason Rumney <jasonr@gnu.org>
parents:
42844
diff
changeset
|
6504 reader software does not track the system cursor properly when it is |
c1af6a7f3dd4
(w32_system_caret_width): Remove.
Jason Rumney <jasonr@gnu.org>
parents:
42844
diff
changeset
|
6505 invisible, and gets confused by Emacs drawing its own cursor, so this |
48218
01e253345507
(w32_draw_fringe_bitmap): Remove unused local variable window.
Juanma Barranquero <lekktu@gmail.com>
parents:
48025
diff
changeset
|
6506 variable is initialized to t when Emacs detects that screen reader |
42864
c1af6a7f3dd4
(w32_system_caret_width): Remove.
Jason Rumney <jasonr@gnu.org>
parents:
42844
diff
changeset
|
6507 software is running as it starts up. |
c1af6a7f3dd4
(w32_system_caret_width): Remove.
Jason Rumney <jasonr@gnu.org>
parents:
42844
diff
changeset
|
6508 |
c1af6a7f3dd4
(w32_system_caret_width): Remove.
Jason Rumney <jasonr@gnu.org>
parents:
42844
diff
changeset
|
6509 When this variable is set, other variables affecting the appearance of |
c1af6a7f3dd4
(w32_system_caret_width): Remove.
Jason Rumney <jasonr@gnu.org>
parents:
42844
diff
changeset
|
6510 the cursor have no effect. */); |
c1af6a7f3dd4
(w32_system_caret_width): Remove.
Jason Rumney <jasonr@gnu.org>
parents:
42844
diff
changeset
|
6511 |
63904
72c5011362ef
* w32term.c (cleartype_active): New flag for enabling sub-pixel
Jason Rumney <jasonr@gnu.org>
parents:
63376
diff
changeset
|
6512 w32_use_visible_system_caret = 0; |
42864
c1af6a7f3dd4
(w32_system_caret_width): Remove.
Jason Rumney <jasonr@gnu.org>
parents:
42844
diff
changeset
|
6513 |
63376
2a6bb16cad69
(x_use_underline_position_properties): New variable.
Eli Zaretskii <eliz@gnu.org>
parents:
60948
diff
changeset
|
6514 /* We don't yet support this, but defining this here avoids whining |
2a6bb16cad69
(x_use_underline_position_properties): New variable.
Eli Zaretskii <eliz@gnu.org>
parents:
60948
diff
changeset
|
6515 from cus-start.el and other places, like "M-x set-variable". */ |
2a6bb16cad69
(x_use_underline_position_properties): New variable.
Eli Zaretskii <eliz@gnu.org>
parents:
60948
diff
changeset
|
6516 DEFVAR_BOOL ("x-use-underline-position-properties", |
2a6bb16cad69
(x_use_underline_position_properties): New variable.
Eli Zaretskii <eliz@gnu.org>
parents:
60948
diff
changeset
|
6517 &x_use_underline_position_properties, |
2a6bb16cad69
(x_use_underline_position_properties): New variable.
Eli Zaretskii <eliz@gnu.org>
parents:
60948
diff
changeset
|
6518 doc: /* *Non-nil means make use of UNDERLINE_POSITION font properties. |
2a6bb16cad69
(x_use_underline_position_properties): New variable.
Eli Zaretskii <eliz@gnu.org>
parents:
60948
diff
changeset
|
6519 nil means ignore them. If you encounter fonts with bogus |
2a6bb16cad69
(x_use_underline_position_properties): New variable.
Eli Zaretskii <eliz@gnu.org>
parents:
60948
diff
changeset
|
6520 UNDERLINE_POSITION font properties, for example 7x13 on XFree prior |
2a6bb16cad69
(x_use_underline_position_properties): New variable.
Eli Zaretskii <eliz@gnu.org>
parents:
60948
diff
changeset
|
6521 to 4.1, set this to nil. |
2a6bb16cad69
(x_use_underline_position_properties): New variable.
Eli Zaretskii <eliz@gnu.org>
parents:
60948
diff
changeset
|
6522 |
2a6bb16cad69
(x_use_underline_position_properties): New variable.
Eli Zaretskii <eliz@gnu.org>
parents:
60948
diff
changeset
|
6523 NOTE: Not supported on MS-Windows yet. */); |
2a6bb16cad69
(x_use_underline_position_properties): New variable.
Eli Zaretskii <eliz@gnu.org>
parents:
60948
diff
changeset
|
6524 x_use_underline_position_properties = 0; |
2a6bb16cad69
(x_use_underline_position_properties): New variable.
Eli Zaretskii <eliz@gnu.org>
parents:
60948
diff
changeset
|
6525 |
72505
759e19ea81e5
(x_underline_at_descent_line): New variable.
Kim F. Storm <storm@cua.dk>
parents:
72470
diff
changeset
|
6526 DEFVAR_BOOL ("x-underline-at-descent-line", |
759e19ea81e5
(x_underline_at_descent_line): New variable.
Kim F. Storm <storm@cua.dk>
parents:
72470
diff
changeset
|
6527 &x_underline_at_descent_line, |
759e19ea81e5
(x_underline_at_descent_line): New variable.
Kim F. Storm <storm@cua.dk>
parents:
72470
diff
changeset
|
6528 doc: /* *Non-nil means to draw the underline at the same place as the descent line. |
759e19ea81e5
(x_underline_at_descent_line): New variable.
Kim F. Storm <storm@cua.dk>
parents:
72470
diff
changeset
|
6529 nil means to draw the underline according to the value of the variable |
759e19ea81e5
(x_underline_at_descent_line): New variable.
Kim F. Storm <storm@cua.dk>
parents:
72470
diff
changeset
|
6530 `x-use-underline-position-properties', which is usually at the baseline |
759e19ea81e5
(x_underline_at_descent_line): New variable.
Kim F. Storm <storm@cua.dk>
parents:
72470
diff
changeset
|
6531 level. The default value is nil. */); |
759e19ea81e5
(x_underline_at_descent_line): New variable.
Kim F. Storm <storm@cua.dk>
parents:
72470
diff
changeset
|
6532 x_underline_at_descent_line = 0; |
759e19ea81e5
(x_underline_at_descent_line): New variable.
Kim F. Storm <storm@cua.dk>
parents:
72470
diff
changeset
|
6533 |
34869
1d671133e618
(syms_of_xterm): DEFVAR_LISP x-toolkit-scroll-bars
Gerd Moellmann <gerd@gnu.org>
parents:
34823
diff
changeset
|
6534 DEFVAR_LISP ("x-toolkit-scroll-bars", &Vx_toolkit_scroll_bars, |
40962
f66d09d1bb2f
Change doc-string comments to `new style'. [w/`doc:' keyword]. Doc fixes.
Jason Rumney <jasonr@gnu.org>
parents:
40816
diff
changeset
|
6535 doc: /* If not nil, Emacs uses toolkit scroll bars. */); |
34869
1d671133e618
(syms_of_xterm): DEFVAR_LISP x-toolkit-scroll-bars
Gerd Moellmann <gerd@gnu.org>
parents:
34823
diff
changeset
|
6536 Vx_toolkit_scroll_bars = Qt; |
27402
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
6537 |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
6538 staticpro (&last_mouse_motion_frame); |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
6539 last_mouse_motion_frame = Qnil; |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
6540 } |
52401 | 6541 |
6542 /* arch-tag: 5fa70624-ab86-499c-8a85-473958ee4646 | |
6543 (do not change this comment) */ |