Mercurial > emacs
annotate src/w32term.c @ 108871:d268237e3481
Remove NO_SOCK_SIGIO references.
* src/m/template.h (NO_SOCK_SIGIO): Remove, no longer used.
* nextstep/DEV-NOTES: Remove out-of-date information.
author | Glenn Morris <rgm@gnu.org> |
---|---|
date | Wed, 02 Jun 2010 22:50:48 -0700 |
parents | 74557d25410e |
children | 2bc9a0c04c87 |
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. |
76022
e892213b9815
(w32_set_scroll_bar_thumb): Don't resize scroll-bar
Kim F. Storm <storm@cua.dk>
parents:
76019
diff
changeset
|
2 Copyright (C) 1989, 1993, 1994, 1995, 1996, 1997, 1998, |
e892213b9815
(w32_set_scroll_bar_thumb): Don't resize scroll-bar
Kim F. Storm <storm@cua.dk>
parents:
76019
diff
changeset
|
3 1999, 2000, 2001, 2002, 2003, 2004, 2005, |
106815 | 4 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc. |
13434 | 5 |
6 This file is part of GNU Emacs. | |
7 | |
94963
8971ddf55736
Switch to recommended form of GPLv3 permissions notice.
Glenn Morris <rgm@gnu.org>
parents:
94912
diff
changeset
|
8 GNU Emacs is free software: you can redistribute it and/or modify |
13434 | 9 it under the terms of the GNU General Public License as published by |
94963
8971ddf55736
Switch to recommended form of GPLv3 permissions notice.
Glenn Morris <rgm@gnu.org>
parents:
94912
diff
changeset
|
10 the Free Software Foundation, either version 3 of the License, or |
8971ddf55736
Switch to recommended form of GPLv3 permissions notice.
Glenn Morris <rgm@gnu.org>
parents:
94912
diff
changeset
|
11 (at your option) any later version. |
13434 | 12 |
13 GNU Emacs is distributed in the hope that it will be useful, | |
14 but WITHOUT ANY WARRANTY; without even the implied warranty of | |
15 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |
16 GNU General Public License for more details. | |
17 | |
18 You should have received a copy of the GNU General Public License | |
94963
8971ddf55736
Switch to recommended form of GPLv3 permissions notice.
Glenn Morris <rgm@gnu.org>
parents:
94912
diff
changeset
|
19 along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>. */ |
13434 | 20 |
26088
b7aa6ac26872
Add support for large files, 64-bit Solaris, system locale codings.
Paul Eggert <eggert@twinsun.com>
parents:
25646
diff
changeset
|
21 #include <config.h> |
13434 | 22 #include <signal.h> |
23 #include <stdio.h> | |
27402
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
24 #include <stdlib.h> |
105669
68dd71358159
* alloc.c: Do not define struct catchtag.
Dan Nicolaescu <dann@ics.uci.edu>
parents:
104030
diff
changeset
|
25 #include <setjmp.h> |
13434 | 26 #include "lisp.h" |
27 #include "blockinput.h" | |
19713
043ccce224fb
(SIF_*): Win95 macros defined for NT.
Geoff Voelker <voelker@cs.washington.edu>
parents:
18877
diff
changeset
|
28 #include "w32term.h" |
13434 | 29 |
30 #include "systty.h" | |
31 #include "systime.h" | |
32 | |
33 #include <ctype.h> | |
34 #include <errno.h> | |
35 #include <sys/stat.h> | |
104030
91b945d54645
* w32fns.c (w32_wnd_proc) [WM_IME_STARTCOMPOSITION]: Position
Jason Rumney <jasonr@gnu.org>
parents:
103716
diff
changeset
|
36 #include <imm.h> |
13434 | 37 |
89588
3a34407a4019
(w32_encode_char): New charset parameter. font_info.encoding becomes
Jason Rumney <jasonr@gnu.org>
parents:
89483
diff
changeset
|
38 #include "charset.h" |
3a34407a4019
(w32_encode_char): New charset parameter. font_info.encoding becomes
Jason Rumney <jasonr@gnu.org>
parents:
89483
diff
changeset
|
39 #include "character.h" |
3a34407a4019
(w32_encode_char): New charset parameter. font_info.encoding becomes
Jason Rumney <jasonr@gnu.org>
parents:
89483
diff
changeset
|
40 #include "coding.h" |
3a34407a4019
(w32_encode_char): New charset parameter. font_info.encoding becomes
Jason Rumney <jasonr@gnu.org>
parents:
89483
diff
changeset
|
41 #include "ccl.h" |
13434 | 42 #include "frame.h" |
43 #include "dispextern.h" | |
28369
3fb90cd81d3b
(w32_read_socket): Handle WM_MENUSELECT message.
Jason Rumney <jasonr@gnu.org>
parents:
27937
diff
changeset
|
44 #include "fontset.h" |
13434 | 45 #include "termhooks.h" |
46 #include "termopts.h" | |
47 #include "termchar.h" | |
48 #include "disptab.h" | |
49 #include "buffer.h" | |
50 #include "window.h" | |
89588
3a34407a4019
(w32_encode_char): New charset parameter. font_info.encoding becomes
Jason Rumney <jasonr@gnu.org>
parents:
89483
diff
changeset
|
51 #include "keyboard.h" |
13434 | 52 #include "intervals.h" |
89588
3a34407a4019
(w32_encode_char): New charset parameter. font_info.encoding becomes
Jason Rumney <jasonr@gnu.org>
parents:
89483
diff
changeset
|
53 #include "process.h" |
3a34407a4019
(w32_encode_char): New charset parameter. font_info.encoding becomes
Jason Rumney <jasonr@gnu.org>
parents:
89483
diff
changeset
|
54 #include "atimer.h" |
3a34407a4019
(w32_encode_char): New charset parameter. font_info.encoding becomes
Jason Rumney <jasonr@gnu.org>
parents:
89483
diff
changeset
|
55 #include "keymap.h" |
3a34407a4019
(w32_encode_char): New charset parameter. font_info.encoding becomes
Jason Rumney <jasonr@gnu.org>
parents:
89483
diff
changeset
|
56 |
3a34407a4019
(w32_encode_char): New charset parameter. font_info.encoding becomes
Jason Rumney <jasonr@gnu.org>
parents:
89483
diff
changeset
|
57 #include "w32heap.h" |
3a34407a4019
(w32_encode_char): New charset parameter. font_info.encoding becomes
Jason Rumney <jasonr@gnu.org>
parents:
89483
diff
changeset
|
58 #include <shellapi.h> |
13434 | 59 |
90834 | 60 #include "font.h" |
94912
5b153bea483d
: Throughout the file, delete all USE_FONT_BACKEND
Kenichi Handa <handa@m17n.org>
parents:
93913
diff
changeset
|
61 #include "w32font.h" |
27402
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 |
97065
e4d0521fc1d0
(w32_enable_unicode_output, cleartype_active): Remove
Jason Rumney <jasonr@gnu.org>
parents:
96536
diff
changeset
|
90 /* Non-zero means make use of UNDERLINE_POSITION font properties. */ |
63376
2a6bb16cad69
(x_use_underline_position_properties): New variable.
Eli Zaretskii <eliz@gnu.org>
parents:
60948
diff
changeset
|
91 int x_use_underline_position_properties; |
2a6bb16cad69
(x_use_underline_position_properties): New variable.
Eli Zaretskii <eliz@gnu.org>
parents:
60948
diff
changeset
|
92 |
72505
759e19ea81e5
(x_underline_at_descent_line): New variable.
Kim F. Storm <storm@cua.dk>
parents:
72470
diff
changeset
|
93 /* 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
|
94 |
759e19ea81e5
(x_underline_at_descent_line): New variable.
Kim F. Storm <storm@cua.dk>
parents:
72470
diff
changeset
|
95 int x_underline_at_descent_line; |
759e19ea81e5
(x_underline_at_descent_line): New variable.
Kim F. Storm <storm@cua.dk>
parents:
72470
diff
changeset
|
96 |
21875
16414f4d07e7
(msh_mousewheel): Declare.
Geoff Voelker <voelker@cs.washington.edu>
parents:
21831
diff
changeset
|
97 extern unsigned int msh_mousewheel; |
16414f4d07e7
(msh_mousewheel): Declare.
Geoff Voelker <voelker@cs.washington.edu>
parents:
21831
diff
changeset
|
98 |
13434 | 99 extern void free_frame_menubar (); |
100 | |
29321
8e2be36bb1c6
Format and doc changes to bring closer to xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
28369
diff
changeset
|
101 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
|
102 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
|
103 |
15151
ed6ddfc0d954
(Vwindow_system): Declared.
Geoff Voelker <voelker@cs.washington.edu>
parents:
15035
diff
changeset
|
104 extern Lisp_Object Vwindow_system; |
ed6ddfc0d954
(Vwindow_system): Declared.
Geoff Voelker <voelker@cs.washington.edu>
parents:
15035
diff
changeset
|
105 |
13434 | 106 #define x_any_window_to_frame x_window_to_frame |
107 #define x_top_window_to_frame x_window_to_frame | |
108 | |
109 | |
16588
481b7874a1e9
Change identifiers of the form win32* to w32*.
Geoff Voelker <voelker@cs.washington.edu>
parents:
16326
diff
changeset
|
110 /* 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
|
111 struct w32_display_info one_w32_display_info; |
38570
9606b955465e
(x_display_list): New variable.
Andrew Innes <andrewi@gnu.org>
parents:
36315
diff
changeset
|
112 struct w32_display_info *x_display_list; |
13434 | 113 |
114 /* 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
|
115 one for each element of w32_display_list and in the same order. |
13434 | 116 NAME is the name of the frame. |
117 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
|
118 Lisp_Object w32_display_name_list; |
13434 | 119 |
89595
804abd486fd1
(GLYPHSET, WCRANGE): Define if system headers don't.
Jason Rumney <jasonr@gnu.org>
parents:
89588
diff
changeset
|
120 |
804abd486fd1
(GLYPHSET, WCRANGE): Define if system headers don't.
Jason Rumney <jasonr@gnu.org>
parents:
89588
diff
changeset
|
121 #ifndef GLYPHSET |
804abd486fd1
(GLYPHSET, WCRANGE): Define if system headers don't.
Jason Rumney <jasonr@gnu.org>
parents:
89588
diff
changeset
|
122 /* Pre Windows 2000, this was not available, but define it here so |
804abd486fd1
(GLYPHSET, WCRANGE): Define if system headers don't.
Jason Rumney <jasonr@gnu.org>
parents:
89588
diff
changeset
|
123 that Emacs compiled on such a platform will run on newer versions. */ |
804abd486fd1
(GLYPHSET, WCRANGE): Define if system headers don't.
Jason Rumney <jasonr@gnu.org>
parents:
89588
diff
changeset
|
124 |
804abd486fd1
(GLYPHSET, WCRANGE): Define if system headers don't.
Jason Rumney <jasonr@gnu.org>
parents:
89588
diff
changeset
|
125 typedef struct tagWCRANGE |
804abd486fd1
(GLYPHSET, WCRANGE): Define if system headers don't.
Jason Rumney <jasonr@gnu.org>
parents:
89588
diff
changeset
|
126 { |
804abd486fd1
(GLYPHSET, WCRANGE): Define if system headers don't.
Jason Rumney <jasonr@gnu.org>
parents:
89588
diff
changeset
|
127 WCHAR wcLow; |
804abd486fd1
(GLYPHSET, WCRANGE): Define if system headers don't.
Jason Rumney <jasonr@gnu.org>
parents:
89588
diff
changeset
|
128 USHORT cGlyphs; |
804abd486fd1
(GLYPHSET, WCRANGE): Define if system headers don't.
Jason Rumney <jasonr@gnu.org>
parents:
89588
diff
changeset
|
129 } WCRANGE; |
804abd486fd1
(GLYPHSET, WCRANGE): Define if system headers don't.
Jason Rumney <jasonr@gnu.org>
parents:
89588
diff
changeset
|
130 |
95170
194ed5c5c97e
Fix typo in comment.
Juanma Barranquero <lekktu@gmail.com>
parents:
94970
diff
changeset
|
131 typedef struct tagGLYPHSET |
89595
804abd486fd1
(GLYPHSET, WCRANGE): Define if system headers don't.
Jason Rumney <jasonr@gnu.org>
parents:
89588
diff
changeset
|
132 { |
804abd486fd1
(GLYPHSET, WCRANGE): Define if system headers don't.
Jason Rumney <jasonr@gnu.org>
parents:
89588
diff
changeset
|
133 DWORD cbThis; |
804abd486fd1
(GLYPHSET, WCRANGE): Define if system headers don't.
Jason Rumney <jasonr@gnu.org>
parents:
89588
diff
changeset
|
134 DWORD flAccel; |
804abd486fd1
(GLYPHSET, WCRANGE): Define if system headers don't.
Jason Rumney <jasonr@gnu.org>
parents:
89588
diff
changeset
|
135 DWORD cGlyphsSupported; |
804abd486fd1
(GLYPHSET, WCRANGE): Define if system headers don't.
Jason Rumney <jasonr@gnu.org>
parents:
89588
diff
changeset
|
136 DWORD cRanges; |
804abd486fd1
(GLYPHSET, WCRANGE): Define if system headers don't.
Jason Rumney <jasonr@gnu.org>
parents:
89588
diff
changeset
|
137 WCRANGE ranges[1]; |
95170
194ed5c5c97e
Fix typo in comment.
Juanma Barranquero <lekktu@gmail.com>
parents:
94970
diff
changeset
|
138 } GLYPHSET; |
89595
804abd486fd1
(GLYPHSET, WCRANGE): Define if system headers don't.
Jason Rumney <jasonr@gnu.org>
parents:
89588
diff
changeset
|
139 |
804abd486fd1
(GLYPHSET, WCRANGE): Define if system headers don't.
Jason Rumney <jasonr@gnu.org>
parents:
89588
diff
changeset
|
140 #endif |
804abd486fd1
(GLYPHSET, WCRANGE): Define if system headers don't.
Jason Rumney <jasonr@gnu.org>
parents:
89588
diff
changeset
|
141 |
96403
4b6d1b55f59c
* w32term.c (pfnGetFontUnicodeRanges): Remove unused function pointer.
Jason Rumney <jasonr@gnu.org>
parents:
96376
diff
changeset
|
142 /* Dynamic linking to SetLayeredWindowAttribute (only since 2000). */ |
103641
48d529d3a5a4
bug#1849 - Windows 7 Taskbar Support
Jason Rumney <jasonr@gnu.org>
parents:
103509
diff
changeset
|
143 BOOL (WINAPI *pfnSetLayeredWindowAttributes) (HWND, COLORREF, BYTE, DWORD); |
96403
4b6d1b55f59c
* w32term.c (pfnGetFontUnicodeRanges): Remove unused function pointer.
Jason Rumney <jasonr@gnu.org>
parents:
96376
diff
changeset
|
144 |
4b6d1b55f59c
* w32term.c (pfnGetFontUnicodeRanges): Remove unused function pointer.
Jason Rumney <jasonr@gnu.org>
parents:
96376
diff
changeset
|
145 #ifndef LWA_ALPHA |
4b6d1b55f59c
* w32term.c (pfnGetFontUnicodeRanges): Remove unused function pointer.
Jason Rumney <jasonr@gnu.org>
parents:
96376
diff
changeset
|
146 #define LWA_ALPHA 0x02 |
4b6d1b55f59c
* w32term.c (pfnGetFontUnicodeRanges): Remove unused function pointer.
Jason Rumney <jasonr@gnu.org>
parents:
96376
diff
changeset
|
147 #endif |
96536
3855b66380c9
(WS_EX_LAYERED): Define if not already.
Jason Rumney <jasonr@gnu.org>
parents:
96423
diff
changeset
|
148 /* WS_EX_LAYERED is defined unconditionally by MingW, but only for W2K and |
3855b66380c9
(WS_EX_LAYERED): Define if not already.
Jason Rumney <jasonr@gnu.org>
parents:
96423
diff
changeset
|
149 later targets by MSVC headers. */ |
3855b66380c9
(WS_EX_LAYERED): Define if not already.
Jason Rumney <jasonr@gnu.org>
parents:
96423
diff
changeset
|
150 #ifndef WS_EX_LAYERED |
3855b66380c9
(WS_EX_LAYERED): Define if not already.
Jason Rumney <jasonr@gnu.org>
parents:
96423
diff
changeset
|
151 #define WS_EX_LAYERED 0x80000 |
3855b66380c9
(WS_EX_LAYERED): Define if not already.
Jason Rumney <jasonr@gnu.org>
parents:
96423
diff
changeset
|
152 #endif |
89595
804abd486fd1
(GLYPHSET, WCRANGE): Define if system headers don't.
Jason Rumney <jasonr@gnu.org>
parents:
89588
diff
changeset
|
153 |
13434 | 154 /* Frame being updated by update_frame. This is declared in term.c. |
155 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
|
156 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
|
157 In that case, the w32 functions assume that `SELECTED_FRAME ()' |
13434 | 158 is the frame to apply to. */ |
159 extern struct frame *updating_frame; | |
160 | |
161 /* This is a frame waiting to be autoraised, within w32_read_socket. */ | |
162 struct frame *pending_autoraise_frame; | |
163 | |
40384
25e6d4bb5f7f
(w32_system_caret_hwnd, w32_system_caret_width)
Jason Rumney <jasonr@gnu.org>
parents:
40245
diff
changeset
|
164 /* 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
|
165 HWND w32_system_caret_hwnd; |
25e6d4bb5f7f
(w32_system_caret_hwnd, w32_system_caret_width)
Jason Rumney <jasonr@gnu.org>
parents:
40245
diff
changeset
|
166 int w32_system_caret_height; |
25e6d4bb5f7f
(w32_system_caret_hwnd, w32_system_caret_width)
Jason Rumney <jasonr@gnu.org>
parents:
40245
diff
changeset
|
167 int w32_system_caret_x; |
25e6d4bb5f7f
(w32_system_caret_hwnd, w32_system_caret_width)
Jason Rumney <jasonr@gnu.org>
parents:
40245
diff
changeset
|
168 int w32_system_caret_y; |
42864
c1af6a7f3dd4
(w32_system_caret_width): Remove.
Jason Rumney <jasonr@gnu.org>
parents:
42844
diff
changeset
|
169 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
|
170 |
16884
36babc489b0c
Change all uses of win95, winnt, and win32
Geoff Voelker <voelker@cs.washington.edu>
parents:
16588
diff
changeset
|
171 DWORD dwWindowsThreadId = 0; |
36babc489b0c
Change all uses of win95, winnt, and win32
Geoff Voelker <voelker@cs.washington.edu>
parents:
16588
diff
changeset
|
172 HANDLE hWindowsThread = NULL; |
13434 | 173 DWORD dwMainThreadId = 0; |
174 HANDLE hMainThread = NULL; | |
175 | |
19713
043ccce224fb
(SIF_*): Win95 macros defined for NT.
Geoff Voelker <voelker@cs.washington.edu>
parents:
18877
diff
changeset
|
176 int vertical_scroll_bar_min_handle; |
043ccce224fb
(SIF_*): Win95 macros defined for NT.
Geoff Voelker <voelker@cs.washington.edu>
parents:
18877
diff
changeset
|
177 int vertical_scroll_bar_top_border; |
043ccce224fb
(SIF_*): Win95 macros defined for NT.
Geoff Voelker <voelker@cs.washington.edu>
parents:
18877
diff
changeset
|
178 int vertical_scroll_bar_bottom_border; |
043ccce224fb
(SIF_*): Win95 macros defined for NT.
Geoff Voelker <voelker@cs.washington.edu>
parents:
18877
diff
changeset
|
179 |
043ccce224fb
(SIF_*): Win95 macros defined for NT.
Geoff Voelker <voelker@cs.washington.edu>
parents:
18877
diff
changeset
|
180 int last_scroll_bar_drag_pos; |
043ccce224fb
(SIF_*): Win95 macros defined for NT.
Geoff Voelker <voelker@cs.washington.edu>
parents:
18877
diff
changeset
|
181 |
13434 | 182 /* Mouse movement. */ |
183 | |
184 /* Where the mouse was last time we reported a mouse event. */ | |
185 static RECT last_mouse_glyph; | |
69441
eb7a171cafae
Sync 2005-10-24 xterm.c changes.
Jason Rumney <jasonr@gnu.org>
parents:
69401
diff
changeset
|
186 static FRAME_PTR last_mouse_glyph_frame; |
27402
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
187 static Lisp_Object last_mouse_press_frame; |
13434 | 188 |
55646
358a5c0b4571
(w32_num_mouse_buttons): Rename from Vw32_num_mouse_buttons and make
Jason Rumney <jasonr@gnu.org>
parents:
55286
diff
changeset
|
189 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
|
190 |
481b7874a1e9
Change identifiers of the form win32* to w32*.
Geoff Voelker <voelker@cs.washington.edu>
parents:
16326
diff
changeset
|
191 Lisp_Object Vw32_swap_mouse_buttons; |
15151
ed6ddfc0d954
(Vwindow_system): Declared.
Geoff Voelker <voelker@cs.washington.edu>
parents:
15035
diff
changeset
|
192 |
19713
043ccce224fb
(SIF_*): Win95 macros defined for NT.
Geoff Voelker <voelker@cs.washington.edu>
parents:
18877
diff
changeset
|
193 /* 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
|
194 Lisp_Object Vw32_grab_focus_on_raise; |
043ccce224fb
(SIF_*): Win95 macros defined for NT.
Geoff Voelker <voelker@cs.washington.edu>
parents:
18877
diff
changeset
|
195 |
043ccce224fb
(SIF_*): Win95 macros defined for NT.
Geoff Voelker <voelker@cs.washington.edu>
parents:
18877
diff
changeset
|
196 /* 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
|
197 Lisp_Object Vw32_capslock_is_shiftlock; |
043ccce224fb
(SIF_*): Win95 macros defined for NT.
Geoff Voelker <voelker@cs.washington.edu>
parents:
18877
diff
changeset
|
198 |
21614
2624d8dcc73f
(Vw32_recognize_altgr): New variable.
Geoff Voelker <voelker@cs.washington.edu>
parents:
21456
diff
changeset
|
199 /* 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
|
200 Lisp_Object Vw32_recognize_altgr; |
2624d8dcc73f
(Vw32_recognize_altgr): New variable.
Geoff Voelker <voelker@cs.washington.edu>
parents:
21456
diff
changeset
|
201 |
13434 | 202 /* The scroll bar in which the last motion event occurred. |
203 | |
204 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
|
205 so w32_mouse_position can know whether to report a scroll bar motion or |
13434 | 206 an ordinary motion. |
207 | |
208 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
|
209 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
|
210 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
|
211 static int last_mouse_scroll_bar_pos; |
13434 | 212 |
16588
481b7874a1e9
Change identifiers of the form win32* to w32*.
Geoff Voelker <voelker@cs.washington.edu>
parents:
16326
diff
changeset
|
213 /* This is a hack. We would really prefer that w32_mouse_position would |
13434 | 214 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
|
215 doesn't seem to be any way to wrest the time-stamp from the server |
13434 | 216 along with the position query. So, we just keep track of the time |
217 of the last movement we received, and return that in hopes that | |
218 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
|
219 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
|
220 |
8e2be36bb1c6
Format and doc changes to bring closer to xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
28369
diff
changeset
|
221 /* 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
|
222 events. */ |
13434 | 223 #ifdef __STDC__ |
224 static int volatile input_signal_count; | |
225 #else | |
226 static int input_signal_count; | |
227 #endif | |
228 | |
229 extern Lisp_Object Vcommand_line_args, Vsystem_name; | |
230 | |
231 /* A mask of extra modifier bits to put into every keyboard char. */ | |
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
|
232 extern EMACS_INT extra_keyboard_modifiers; |
13434 | 233 |
103500
d0e3ea40717c
(keyboard_codepage): New static variable.
Jason Rumney <jasonr@gnu.org>
parents:
103023
diff
changeset
|
234 /* Keyboard code page - may be changed by language-change events. */ |
d0e3ea40717c
(keyboard_codepage): New static variable.
Jason Rumney <jasonr@gnu.org>
parents:
103023
diff
changeset
|
235 static int keyboard_codepage; |
d0e3ea40717c
(keyboard_codepage): New static variable.
Jason Rumney <jasonr@gnu.org>
parents:
103023
diff
changeset
|
236 |
31116
bbd7763673b6
Include keyboard.h before frame.h.
Andrew Innes <andrewi@gnu.org>
parents:
31010
diff
changeset
|
237 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
|
238 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
|
239 struct input_event *)); |
81493
e7dfb7cb2088
(w32_delete_display): Remove leftover declaration.
Juanma Barranquero <lekktu@gmail.com>
parents:
76022
diff
changeset
|
240 static void w32_define_cursor P_ ((Window, Cursor)); |
27402
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
241 |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
242 void x_lower_frame P_ ((struct frame *)); |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
243 void x_scroll_bar_clear P_ ((struct frame *)); |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
244 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
|
245 void x_raise_frame P_ ((struct frame *)); |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
246 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
|
247 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
|
248 void x_wm_set_icon_pixmap P_ ((struct frame *, int)); |
81493
e7dfb7cb2088
(w32_delete_display): Remove leftover declaration.
Juanma Barranquero <lekktu@gmail.com>
parents:
76022
diff
changeset
|
249 static void w32_initialize P_ ((void)); |
27402
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
250 static void x_update_end P_ ((struct frame *)); |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
251 static void w32_frame_up_to_date P_ ((struct frame *)); |
83569
86395c339701
(w32_set_terminal_modes, w32_reset_terminal_modes):
Jason Rumney <jasonr@gnu.org>
parents:
83556
diff
changeset
|
252 static void w32_set_terminal_modes P_ ((struct terminal *)); |
86395c339701
(w32_set_terminal_modes, w32_reset_terminal_modes):
Jason Rumney <jasonr@gnu.org>
parents:
83556
diff
changeset
|
253 static void w32_reset_terminal_modes P_ ((struct terminal *)); |
86395c339701
(w32_set_terminal_modes, w32_reset_terminal_modes):
Jason Rumney <jasonr@gnu.org>
parents:
83556
diff
changeset
|
254 static void x_clear_frame P_ ((struct frame *)); |
27402
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
255 static void frame_highlight P_ ((struct frame *)); |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
256 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
|
257 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
|
258 struct frame *)); |
60948
03a8b8b9ebef
(x_focus_changed, w32_detect_focus_change): New functions.
Jason Rumney <jasonr@gnu.org>
parents:
59748
diff
changeset
|
259 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
|
260 struct frame *, struct input_event *)); |
03a8b8b9ebef
(x_focus_changed, w32_detect_focus_change): New functions.
Jason Rumney <jasonr@gnu.org>
parents:
59748
diff
changeset
|
261 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
|
262 W32Msg *, struct input_event *)); |
27402
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
263 static void w32_frame_rehighlight P_ ((struct frame *)); |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
264 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
|
265 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
|
266 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
|
267 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
|
268 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
|
269 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
|
270 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
|
271 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
|
272 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
|
273 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
|
274 |
13434 | 275 static Lisp_Object Qvendor_specific_keysyms; |
276 | |
277 | |
29321
8e2be36bb1c6
Format and doc changes to bring closer to xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
28369
diff
changeset
|
278 /*********************************************************************** |
8e2be36bb1c6
Format and doc changes to bring closer to xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
28369
diff
changeset
|
279 Debugging |
8e2be36bb1c6
Format and doc changes to bring closer to xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
28369
diff
changeset
|
280 ***********************************************************************/ |
8e2be36bb1c6
Format and doc changes to bring closer to xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
28369
diff
changeset
|
281 |
13434 | 282 #if 0 |
29321
8e2be36bb1c6
Format and doc changes to bring closer to xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
28369
diff
changeset
|
283 |
8e2be36bb1c6
Format and doc changes to bring closer to xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
28369
diff
changeset
|
284 /* 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
|
285 the sequence of occurrences in this file. */ |
13434 | 286 |
48218
01e253345507
(w32_draw_fringe_bitmap): Remove unused local variable window.
Juanma Barranquero <lekktu@gmail.com>
parents:
48025
diff
changeset
|
287 struct record |
13434 | 288 { |
289 char *locus; | |
290 int type; | |
291 }; | |
292 | |
293 struct record event_record[100]; | |
294 | |
295 int event_record_index; | |
296 | |
297 record_event (locus, type) | |
298 char *locus; | |
299 int type; | |
300 { | |
301 if (event_record_index == sizeof (event_record) / sizeof (struct record)) | |
302 event_record_index = 0; | |
303 | |
304 event_record[event_record_index].locus = locus; | |
305 event_record[event_record_index].type = type; | |
306 event_record_index++; | |
307 } | |
308 | |
309 #endif /* 0 */ | |
310 | |
27402
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
311 |
50441
37738feb0204
Break the line after the return type in function definition.
Richard M. Stallman <rms@gnu.org>
parents:
50376
diff
changeset
|
312 void |
37738feb0204
Break the line after the return type in function definition.
Richard M. Stallman <rms@gnu.org>
parents:
50376
diff
changeset
|
313 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
|
314 XGCValues *xgcv) |
27402
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
315 { |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
316 if (mask & GCForeground) |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
317 gc->foreground = xgcv->foreground; |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
318 if (mask & GCBackground) |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
319 gc->background = xgcv->background; |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
320 if (mask & GCFont) |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
321 gc->font = xgcv->font; |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
322 } |
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 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
|
325 XGCValues *xgcv) |
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 XGCValues *gc = (XGCValues *) xmalloc (sizeof (XGCValues)); |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
328 bzero (gc, sizeof (XGCValues)); |
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 XChangeGC (ignore, gc, mask, xgcv); |
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 return gc; |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
333 } |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
334 |
50441
37738feb0204
Break the line after the return type in function definition.
Richard M. Stallman <rms@gnu.org>
parents:
50376
diff
changeset
|
335 void |
37738feb0204
Break the line after the return type in function definition.
Richard M. Stallman <rms@gnu.org>
parents:
50376
diff
changeset
|
336 XGetGCValues (void* ignore, XGCValues *gc, |
27402
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
337 unsigned long mask, XGCValues *xgcv) |
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 XChangeGC (ignore, xgcv, mask, gc); |
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 |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
342 static void |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
343 w32_set_clip_rectangle (HDC hdc, RECT *rect) |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
344 { |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
345 if (rect) |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
346 { |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
347 HRGN clip_region = CreateRectRgnIndirect (rect); |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
348 SelectClipRgn (hdc, clip_region); |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
349 DeleteObject (clip_region); |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
350 } |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
351 else |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
352 SelectClipRgn (hdc, NULL); |
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 |
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 /* Draw a hollow rectangle at the specified position. */ |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
357 void |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
358 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
|
359 int width, int height) |
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 HBRUSH hb, oldhb; |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
362 HPEN hp, oldhp; |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
363 |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
364 hb = CreateSolidBrush (gc->background); |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
365 hp = CreatePen (PS_SOLID, 0, gc->foreground); |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
366 oldhb = SelectObject (hdc, hb); |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
367 oldhp = SelectObject (hdc, hp); |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
368 |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
369 Rectangle (hdc, x, y, x + width, y + height); |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
370 |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
371 SelectObject (hdc, oldhb); |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
372 SelectObject (hdc, oldhp); |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
373 DeleteObject (hb); |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
374 DeleteObject (hp); |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
375 } |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
376 |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
377 /* 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
|
378 void |
27406
fb36ccd8457c
(w32_fill_rect): Do not try to deal with NULL hdc
Jason Rumney <jasonr@gnu.org>
parents:
27402
diff
changeset
|
379 w32_fill_rect (f, hdc, pix, lprect) |
13434 | 380 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
|
381 HDC hdc; |
13434 | 382 COLORREF pix; |
383 RECT * lprect; | |
384 { | |
385 HBRUSH hb; | |
27402
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
386 |
13434 | 387 hb = CreateSolidBrush (pix); |
388 FillRect (hdc, lprect, hb); | |
389 DeleteObject (hb); | |
390 } | |
391 | |
48218
01e253345507
(w32_draw_fringe_bitmap): Remove unused local variable window.
Juanma Barranquero <lekktu@gmail.com>
parents:
48025
diff
changeset
|
392 void |
16588
481b7874a1e9
Change identifiers of the form win32* to w32*.
Geoff Voelker <voelker@cs.washington.edu>
parents:
16326
diff
changeset
|
393 w32_clear_window (f) |
13434 | 394 FRAME_PTR f; |
395 { | |
396 RECT rect; | |
27406
fb36ccd8457c
(w32_fill_rect): Do not try to deal with NULL hdc
Jason Rumney <jasonr@gnu.org>
parents:
27402
diff
changeset
|
397 HDC hdc = get_frame_dc (f); |
15151
ed6ddfc0d954
(Vwindow_system): Declared.
Geoff Voelker <voelker@cs.washington.edu>
parents:
15035
diff
changeset
|
398 |
34093
d554a3ac3039
(x_draw_vertical_border): Fix call to w32_fill_rect.
Jason Rumney <jasonr@gnu.org>
parents:
33766
diff
changeset
|
399 /* 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
|
400 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
|
401 of 0 indicates this. */ |
d554a3ac3039
(x_draw_vertical_border): Fix call to w32_fill_rect.
Jason Rumney <jasonr@gnu.org>
parents:
33766
diff
changeset
|
402 if (hdc) |
d554a3ac3039
(x_draw_vertical_border): Fix call to w32_fill_rect.
Jason Rumney <jasonr@gnu.org>
parents:
33766
diff
changeset
|
403 { |
d554a3ac3039
(x_draw_vertical_border): Fix call to w32_fill_rect.
Jason Rumney <jasonr@gnu.org>
parents:
33766
diff
changeset
|
404 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
|
405 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
|
406 } |
d554a3ac3039
(x_draw_vertical_border): Fix call to w32_fill_rect.
Jason Rumney <jasonr@gnu.org>
parents:
33766
diff
changeset
|
407 |
27406
fb36ccd8457c
(w32_fill_rect): Do not try to deal with NULL hdc
Jason Rumney <jasonr@gnu.org>
parents:
27402
diff
changeset
|
408 release_frame_dc (f, hdc); |
13434 | 409 } |
410 | |
96403
4b6d1b55f59c
* w32term.c (pfnGetFontUnicodeRanges): Remove unused function pointer.
Jason Rumney <jasonr@gnu.org>
parents:
96376
diff
changeset
|
411 #define OPAQUE_FRAME 255 |
4b6d1b55f59c
* w32term.c (pfnGetFontUnicodeRanges): Remove unused function pointer.
Jason Rumney <jasonr@gnu.org>
parents:
96376
diff
changeset
|
412 |
4b6d1b55f59c
* w32term.c (pfnGetFontUnicodeRanges): Remove unused function pointer.
Jason Rumney <jasonr@gnu.org>
parents:
96376
diff
changeset
|
413 void |
4b6d1b55f59c
* w32term.c (pfnGetFontUnicodeRanges): Remove unused function pointer.
Jason Rumney <jasonr@gnu.org>
parents:
96376
diff
changeset
|
414 x_set_frame_alpha (f) |
4b6d1b55f59c
* w32term.c (pfnGetFontUnicodeRanges): Remove unused function pointer.
Jason Rumney <jasonr@gnu.org>
parents:
96376
diff
changeset
|
415 struct frame *f; |
4b6d1b55f59c
* w32term.c (pfnGetFontUnicodeRanges): Remove unused function pointer.
Jason Rumney <jasonr@gnu.org>
parents:
96376
diff
changeset
|
416 { |
4b6d1b55f59c
* w32term.c (pfnGetFontUnicodeRanges): Remove unused function pointer.
Jason Rumney <jasonr@gnu.org>
parents:
96376
diff
changeset
|
417 struct w32_display_info *dpyinfo = FRAME_W32_DISPLAY_INFO (f); |
4b6d1b55f59c
* w32term.c (pfnGetFontUnicodeRanges): Remove unused function pointer.
Jason Rumney <jasonr@gnu.org>
parents:
96376
diff
changeset
|
418 double alpha = 1.0; |
4b6d1b55f59c
* w32term.c (pfnGetFontUnicodeRanges): Remove unused function pointer.
Jason Rumney <jasonr@gnu.org>
parents:
96376
diff
changeset
|
419 double alpha_min = 1.0; |
4b6d1b55f59c
* w32term.c (pfnGetFontUnicodeRanges): Remove unused function pointer.
Jason Rumney <jasonr@gnu.org>
parents:
96376
diff
changeset
|
420 BYTE opac; |
4b6d1b55f59c
* w32term.c (pfnGetFontUnicodeRanges): Remove unused function pointer.
Jason Rumney <jasonr@gnu.org>
parents:
96376
diff
changeset
|
421 LONG ex_style; |
4b6d1b55f59c
* w32term.c (pfnGetFontUnicodeRanges): Remove unused function pointer.
Jason Rumney <jasonr@gnu.org>
parents:
96376
diff
changeset
|
422 HWND window = FRAME_W32_WINDOW (f); |
4b6d1b55f59c
* w32term.c (pfnGetFontUnicodeRanges): Remove unused function pointer.
Jason Rumney <jasonr@gnu.org>
parents:
96376
diff
changeset
|
423 |
4b6d1b55f59c
* w32term.c (pfnGetFontUnicodeRanges): Remove unused function pointer.
Jason Rumney <jasonr@gnu.org>
parents:
96376
diff
changeset
|
424 /* Older versions of Windows do not support transparency. */ |
4b6d1b55f59c
* w32term.c (pfnGetFontUnicodeRanges): Remove unused function pointer.
Jason Rumney <jasonr@gnu.org>
parents:
96376
diff
changeset
|
425 if (!pfnSetLayeredWindowAttributes) |
4b6d1b55f59c
* w32term.c (pfnGetFontUnicodeRanges): Remove unused function pointer.
Jason Rumney <jasonr@gnu.org>
parents:
96376
diff
changeset
|
426 return; |
4b6d1b55f59c
* w32term.c (pfnGetFontUnicodeRanges): Remove unused function pointer.
Jason Rumney <jasonr@gnu.org>
parents:
96376
diff
changeset
|
427 |
4b6d1b55f59c
* w32term.c (pfnGetFontUnicodeRanges): Remove unused function pointer.
Jason Rumney <jasonr@gnu.org>
parents:
96376
diff
changeset
|
428 if (dpyinfo->x_highlight_frame == f) |
4b6d1b55f59c
* w32term.c (pfnGetFontUnicodeRanges): Remove unused function pointer.
Jason Rumney <jasonr@gnu.org>
parents:
96376
diff
changeset
|
429 alpha = f->alpha[0]; |
4b6d1b55f59c
* w32term.c (pfnGetFontUnicodeRanges): Remove unused function pointer.
Jason Rumney <jasonr@gnu.org>
parents:
96376
diff
changeset
|
430 else |
4b6d1b55f59c
* w32term.c (pfnGetFontUnicodeRanges): Remove unused function pointer.
Jason Rumney <jasonr@gnu.org>
parents:
96376
diff
changeset
|
431 alpha = f->alpha[1]; |
4b6d1b55f59c
* w32term.c (pfnGetFontUnicodeRanges): Remove unused function pointer.
Jason Rumney <jasonr@gnu.org>
parents:
96376
diff
changeset
|
432 |
4b6d1b55f59c
* w32term.c (pfnGetFontUnicodeRanges): Remove unused function pointer.
Jason Rumney <jasonr@gnu.org>
parents:
96376
diff
changeset
|
433 if (FLOATP (Vframe_alpha_lower_limit)) |
4b6d1b55f59c
* w32term.c (pfnGetFontUnicodeRanges): Remove unused function pointer.
Jason Rumney <jasonr@gnu.org>
parents:
96376
diff
changeset
|
434 alpha_min = XFLOAT_DATA (Vframe_alpha_lower_limit); |
4b6d1b55f59c
* w32term.c (pfnGetFontUnicodeRanges): Remove unused function pointer.
Jason Rumney <jasonr@gnu.org>
parents:
96376
diff
changeset
|
435 else if (INTEGERP (Vframe_alpha_lower_limit)) |
4b6d1b55f59c
* w32term.c (pfnGetFontUnicodeRanges): Remove unused function pointer.
Jason Rumney <jasonr@gnu.org>
parents:
96376
diff
changeset
|
436 alpha_min = (XINT (Vframe_alpha_lower_limit)) / 100.0; |
4b6d1b55f59c
* w32term.c (pfnGetFontUnicodeRanges): Remove unused function pointer.
Jason Rumney <jasonr@gnu.org>
parents:
96376
diff
changeset
|
437 |
99509
386d8aa805a2
(x_set_frame_alpha): Do nothing if alpha is negative.
Chong Yidong <cyd@stupidchicken.com>
parents:
99169
diff
changeset
|
438 if (alpha < 0.0) |
386d8aa805a2
(x_set_frame_alpha): Do nothing if alpha is negative.
Chong Yidong <cyd@stupidchicken.com>
parents:
99169
diff
changeset
|
439 return; |
386d8aa805a2
(x_set_frame_alpha): Do nothing if alpha is negative.
Chong Yidong <cyd@stupidchicken.com>
parents:
99169
diff
changeset
|
440 else if (alpha > 1.0) |
96403
4b6d1b55f59c
* w32term.c (pfnGetFontUnicodeRanges): Remove unused function pointer.
Jason Rumney <jasonr@gnu.org>
parents:
96376
diff
changeset
|
441 alpha = 1.0; |
4b6d1b55f59c
* w32term.c (pfnGetFontUnicodeRanges): Remove unused function pointer.
Jason Rumney <jasonr@gnu.org>
parents:
96376
diff
changeset
|
442 else if (alpha < alpha_min && alpha_min <= 1.0) |
4b6d1b55f59c
* w32term.c (pfnGetFontUnicodeRanges): Remove unused function pointer.
Jason Rumney <jasonr@gnu.org>
parents:
96376
diff
changeset
|
443 alpha = alpha_min; |
4b6d1b55f59c
* w32term.c (pfnGetFontUnicodeRanges): Remove unused function pointer.
Jason Rumney <jasonr@gnu.org>
parents:
96376
diff
changeset
|
444 |
4b6d1b55f59c
* w32term.c (pfnGetFontUnicodeRanges): Remove unused function pointer.
Jason Rumney <jasonr@gnu.org>
parents:
96376
diff
changeset
|
445 opac = alpha * OPAQUE_FRAME; |
4b6d1b55f59c
* w32term.c (pfnGetFontUnicodeRanges): Remove unused function pointer.
Jason Rumney <jasonr@gnu.org>
parents:
96376
diff
changeset
|
446 |
4b6d1b55f59c
* w32term.c (pfnGetFontUnicodeRanges): Remove unused function pointer.
Jason Rumney <jasonr@gnu.org>
parents:
96376
diff
changeset
|
447 ex_style = GetWindowLong (window, GWL_EXSTYLE); |
4b6d1b55f59c
* w32term.c (pfnGetFontUnicodeRanges): Remove unused function pointer.
Jason Rumney <jasonr@gnu.org>
parents:
96376
diff
changeset
|
448 |
4b6d1b55f59c
* w32term.c (pfnGetFontUnicodeRanges): Remove unused function pointer.
Jason Rumney <jasonr@gnu.org>
parents:
96376
diff
changeset
|
449 if (opac == OPAQUE_FRAME) |
96423
0b2f64a1ff6e
(x_set_frame_alpha): Fix logic.
Jason Rumney <jasonr@gnu.org>
parents:
96403
diff
changeset
|
450 ex_style &= ~WS_EX_LAYERED; |
96403
4b6d1b55f59c
* w32term.c (pfnGetFontUnicodeRanges): Remove unused function pointer.
Jason Rumney <jasonr@gnu.org>
parents:
96376
diff
changeset
|
451 else |
4b6d1b55f59c
* w32term.c (pfnGetFontUnicodeRanges): Remove unused function pointer.
Jason Rumney <jasonr@gnu.org>
parents:
96376
diff
changeset
|
452 ex_style |= WS_EX_LAYERED; |
4b6d1b55f59c
* w32term.c (pfnGetFontUnicodeRanges): Remove unused function pointer.
Jason Rumney <jasonr@gnu.org>
parents:
96376
diff
changeset
|
453 |
4b6d1b55f59c
* w32term.c (pfnGetFontUnicodeRanges): Remove unused function pointer.
Jason Rumney <jasonr@gnu.org>
parents:
96376
diff
changeset
|
454 SetWindowLong (window, GWL_EXSTYLE, ex_style); |
4b6d1b55f59c
* w32term.c (pfnGetFontUnicodeRanges): Remove unused function pointer.
Jason Rumney <jasonr@gnu.org>
parents:
96376
diff
changeset
|
455 |
4b6d1b55f59c
* w32term.c (pfnGetFontUnicodeRanges): Remove unused function pointer.
Jason Rumney <jasonr@gnu.org>
parents:
96376
diff
changeset
|
456 if (opac != OPAQUE_FRAME) |
4b6d1b55f59c
* w32term.c (pfnGetFontUnicodeRanges): Remove unused function pointer.
Jason Rumney <jasonr@gnu.org>
parents:
96376
diff
changeset
|
457 pfnSetLayeredWindowAttributes (window, 0, opac, LWA_ALPHA); |
4b6d1b55f59c
* w32term.c (pfnGetFontUnicodeRanges): Remove unused function pointer.
Jason Rumney <jasonr@gnu.org>
parents:
96376
diff
changeset
|
458 } |
4b6d1b55f59c
* w32term.c (pfnGetFontUnicodeRanges): Remove unused function pointer.
Jason Rumney <jasonr@gnu.org>
parents:
96376
diff
changeset
|
459 |
98227
166909ca8be2
(x_display_pixel_height, x_display_pixel_width): New functions.
Chong Yidong <cyd@stupidchicken.com>
parents:
97831
diff
changeset
|
460 int |
166909ca8be2
(x_display_pixel_height, x_display_pixel_width): New functions.
Chong Yidong <cyd@stupidchicken.com>
parents:
97831
diff
changeset
|
461 x_display_pixel_height (dpyinfo) |
166909ca8be2
(x_display_pixel_height, x_display_pixel_width): New functions.
Chong Yidong <cyd@stupidchicken.com>
parents:
97831
diff
changeset
|
462 struct w32_display_info *dpyinfo; |
166909ca8be2
(x_display_pixel_height, x_display_pixel_width): New functions.
Chong Yidong <cyd@stupidchicken.com>
parents:
97831
diff
changeset
|
463 { |
101977
9a5d93661ee4
(x_display_pixel_height, x_display_pixel_width):
Jason Rumney <jasonr@gnu.org>
parents:
101682
diff
changeset
|
464 HDC dc = GetDC (NULL); |
9a5d93661ee4
(x_display_pixel_height, x_display_pixel_width):
Jason Rumney <jasonr@gnu.org>
parents:
101682
diff
changeset
|
465 int pixels = GetDeviceCaps (dc, VERTRES); |
9a5d93661ee4
(x_display_pixel_height, x_display_pixel_width):
Jason Rumney <jasonr@gnu.org>
parents:
101682
diff
changeset
|
466 ReleaseDC (NULL, dc); |
9a5d93661ee4
(x_display_pixel_height, x_display_pixel_width):
Jason Rumney <jasonr@gnu.org>
parents:
101682
diff
changeset
|
467 return pixels; |
98227
166909ca8be2
(x_display_pixel_height, x_display_pixel_width): New functions.
Chong Yidong <cyd@stupidchicken.com>
parents:
97831
diff
changeset
|
468 } |
166909ca8be2
(x_display_pixel_height, x_display_pixel_width): New functions.
Chong Yidong <cyd@stupidchicken.com>
parents:
97831
diff
changeset
|
469 |
166909ca8be2
(x_display_pixel_height, x_display_pixel_width): New functions.
Chong Yidong <cyd@stupidchicken.com>
parents:
97831
diff
changeset
|
470 int |
166909ca8be2
(x_display_pixel_height, x_display_pixel_width): New functions.
Chong Yidong <cyd@stupidchicken.com>
parents:
97831
diff
changeset
|
471 x_display_pixel_width (dpyinfo) |
166909ca8be2
(x_display_pixel_height, x_display_pixel_width): New functions.
Chong Yidong <cyd@stupidchicken.com>
parents:
97831
diff
changeset
|
472 struct w32_display_info *dpyinfo; |
166909ca8be2
(x_display_pixel_height, x_display_pixel_width): New functions.
Chong Yidong <cyd@stupidchicken.com>
parents:
97831
diff
changeset
|
473 { |
101977
9a5d93661ee4
(x_display_pixel_height, x_display_pixel_width):
Jason Rumney <jasonr@gnu.org>
parents:
101682
diff
changeset
|
474 HDC dc = GetDC (NULL); |
9a5d93661ee4
(x_display_pixel_height, x_display_pixel_width):
Jason Rumney <jasonr@gnu.org>
parents:
101682
diff
changeset
|
475 int pixels = GetDeviceCaps (dc, HORZRES); |
9a5d93661ee4
(x_display_pixel_height, x_display_pixel_width):
Jason Rumney <jasonr@gnu.org>
parents:
101682
diff
changeset
|
476 ReleaseDC (NULL, dc); |
9a5d93661ee4
(x_display_pixel_height, x_display_pixel_width):
Jason Rumney <jasonr@gnu.org>
parents:
101682
diff
changeset
|
477 return pixels; |
98227
166909ca8be2
(x_display_pixel_height, x_display_pixel_width): New functions.
Chong Yidong <cyd@stupidchicken.com>
parents:
97831
diff
changeset
|
478 } |
166909ca8be2
(x_display_pixel_height, x_display_pixel_width): New functions.
Chong Yidong <cyd@stupidchicken.com>
parents:
97831
diff
changeset
|
479 |
13434 | 480 |
27402
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
481 /*********************************************************************** |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
482 Starting and ending an update |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
483 ***********************************************************************/ |
48218
01e253345507
(w32_draw_fringe_bitmap): Remove unused local variable window.
Juanma Barranquero <lekktu@gmail.com>
parents:
48025
diff
changeset
|
484 |
27402
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
485 /* 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
|
486 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
|
487 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
|
488 each window being updated. */ |
13434 | 489 |
21831
6b659713b90b
Forward declare hooks with full function prototypes.
Geoff Voelker <voelker@cs.washington.edu>
parents:
21740
diff
changeset
|
490 static void |
27402
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
491 x_update_begin (f) |
13434 | 492 struct frame *f; |
493 { | |
34784
d140f5fb3307
(x_update_begin): Regenerate the palette here, rather
Andrew Innes <andrewi@gnu.org>
parents:
34779
diff
changeset
|
494 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
|
495 |
35000 | 496 if (! FRAME_W32_P (f)) |
497 return; | |
498 | |
34784
d140f5fb3307
(x_update_begin): Regenerate the palette here, rather
Andrew Innes <andrewi@gnu.org>
parents:
34779
diff
changeset
|
499 /* 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
|
500 colors has changed. */ |
d140f5fb3307
(x_update_begin): Regenerate the palette here, rather
Andrew Innes <andrewi@gnu.org>
parents:
34779
diff
changeset
|
501 if (display_info->regen_palette) |
d140f5fb3307
(x_update_begin): Regenerate the palette here, rather
Andrew Innes <andrewi@gnu.org>
parents:
34779
diff
changeset
|
502 { |
d140f5fb3307
(x_update_begin): Regenerate the palette here, rather
Andrew Innes <andrewi@gnu.org>
parents:
34779
diff
changeset
|
503 w32_regenerate_palette (f); |
d140f5fb3307
(x_update_begin): Regenerate the palette here, rather
Andrew Innes <andrewi@gnu.org>
parents:
34779
diff
changeset
|
504 display_info->regen_palette = FALSE; |
d140f5fb3307
(x_update_begin): Regenerate the palette here, rather
Andrew Innes <andrewi@gnu.org>
parents:
34779
diff
changeset
|
505 } |
27402
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
506 } |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
507 |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
508 |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
509 /* 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
|
510 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
|
511 position of W. */ |
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 static void |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
514 x_update_window_begin (w) |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
515 struct window *w; |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
516 { |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
517 struct frame *f = XFRAME (WINDOW_FRAME (w)); |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
518 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
|
519 |
42864
c1af6a7f3dd4
(w32_system_caret_width): Remove.
Jason Rumney <jasonr@gnu.org>
parents:
42844
diff
changeset
|
520 /* 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
|
521 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
|
522 { |
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
|
523 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
|
524 } |
42864
c1af6a7f3dd4
(w32_system_caret_width): Remove.
Jason Rumney <jasonr@gnu.org>
parents:
42844
diff
changeset
|
525 |
27402
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
526 updated_window = w; |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
527 set_output_cursor (&w->cursor); |
13434 | 528 |
529 BLOCK_INPUT; | |
530 | |
27402
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
531 if (f == display_info->mouse_face_mouse_frame) |
13434 | 532 { |
533 /* 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
|
534 display_info->mouse_face_defer = 1; |
13434 | 535 |
29321
8e2be36bb1c6
Format and doc changes to bring closer to xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
28369
diff
changeset
|
536 /* 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
|
537 highlighting. */ |
13434 | 538 if (FRAME_GARBAGED_P (f)) |
27402
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
539 display_info->mouse_face_window = Qnil; |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
540 |
30240
2c2a7ebd2c15
(help_echo_object, help_echo_pos): New variables.
Jason Rumney <jasonr@gnu.org>
parents:
30199
diff
changeset
|
541 #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
|
542 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
|
543 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
|
544 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
|
545 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
|
546 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
|
547 |
27402
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
548 /* 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
|
549 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
|
550 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
|
551 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
|
552 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
|
553 if (!NILP (display_info->mouse_face_window) |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
554 && w == XWINDOW (display_info->mouse_face_window)) |
13434 | 555 { |
27402
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
556 int i; |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
557 |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
558 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
|
559 if (MATRIX_ROW_ENABLED_P (w->desired_matrix, i)) |
13434 | 560 break; |
561 | |
27402
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
562 if (i < w->desired_matrix->nrows) |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
563 clear_mouse_face (display_info); |
13434 | 564 } |
30240
2c2a7ebd2c15
(help_echo_object, help_echo_pos): New variables.
Jason Rumney <jasonr@gnu.org>
parents:
30199
diff
changeset
|
565 #endif /* 0 */ |
13434 | 566 } |
567 | |
568 UNBLOCK_INPUT; | |
569 } | |
570 | |
50231
c8ea5e4b2129
* w32term.c: Remove consolidated defines and code.
Kim F. Storm <storm@cua.dk>
parents:
50163
diff
changeset
|
571 /* 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
|
572 |
21831
6b659713b90b
Forward declare hooks with full function prototypes.
Geoff Voelker <voelker@cs.washington.edu>
parents:
21740
diff
changeset
|
573 static void |
50231
c8ea5e4b2129
* w32term.c: Remove consolidated defines and code.
Kim F. Storm <storm@cua.dk>
parents:
50163
diff
changeset
|
574 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
|
575 struct window *w; |
50231
c8ea5e4b2129
* w32term.c: Remove consolidated defines and code.
Kim F. Storm <storm@cua.dk>
parents:
50163
diff
changeset
|
576 int x, y0, y1; |
27402
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
577 { |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
578 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
|
579 RECT r; |
c8ea5e4b2129
* w32term.c: Remove consolidated defines and code.
Kim F. Storm <storm@cua.dk>
parents:
50163
diff
changeset
|
580 HDC hdc; |
63912
12f374b6c866
(w32_draw_vertical_window_border): Use foreground of
Eli Zaretskii <eliz@gnu.org>
parents:
63904
diff
changeset
|
581 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
|
582 |
50231
c8ea5e4b2129
* w32term.c: Remove consolidated defines and code.
Kim F. Storm <storm@cua.dk>
parents:
50163
diff
changeset
|
583 r.left = x; |
c8ea5e4b2129
* w32term.c: Remove consolidated defines and code.
Kim F. Storm <storm@cua.dk>
parents:
50163
diff
changeset
|
584 r.right = x + 1; |
c8ea5e4b2129
* w32term.c: Remove consolidated defines and code.
Kim F. Storm <storm@cua.dk>
parents:
50163
diff
changeset
|
585 r.top = y0; |
c8ea5e4b2129
* w32term.c: Remove consolidated defines and code.
Kim F. Storm <storm@cua.dk>
parents:
50163
diff
changeset
|
586 r.bottom = y1; |
c8ea5e4b2129
* w32term.c: Remove consolidated defines and code.
Kim F. Storm <storm@cua.dk>
parents:
50163
diff
changeset
|
587 |
c8ea5e4b2129
* w32term.c: Remove consolidated defines and code.
Kim F. Storm <storm@cua.dk>
parents:
50163
diff
changeset
|
588 hdc = get_frame_dc (f); |
63912
12f374b6c866
(w32_draw_vertical_window_border): Use foreground of
Eli Zaretskii <eliz@gnu.org>
parents:
63904
diff
changeset
|
589 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
|
590 if (face) |
12f374b6c866
(w32_draw_vertical_window_border): Use foreground of
Eli Zaretskii <eliz@gnu.org>
parents:
63904
diff
changeset
|
591 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
|
592 else |
12f374b6c866
(w32_draw_vertical_window_border): Use foreground of
Eli Zaretskii <eliz@gnu.org>
parents:
63904
diff
changeset
|
593 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
|
594 |
50231
c8ea5e4b2129
* w32term.c: Remove consolidated defines and code.
Kim F. Storm <storm@cua.dk>
parents:
50163
diff
changeset
|
595 release_frame_dc (f, hdc); |
27402
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
596 } |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
597 |
48218
01e253345507
(w32_draw_fringe_bitmap): Remove unused local variable window.
Juanma Barranquero <lekktu@gmail.com>
parents:
48025
diff
changeset
|
598 |
30240
2c2a7ebd2c15
(help_echo_object, help_echo_pos): New variables.
Jason Rumney <jasonr@gnu.org>
parents:
30199
diff
changeset
|
599 /* 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
|
600 |
2c2a7ebd2c15
(help_echo_object, help_echo_pos): New variables.
Jason Rumney <jasonr@gnu.org>
parents:
30199
diff
changeset
|
601 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
|
602 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
|
603 |
2c2a7ebd2c15
(help_echo_object, help_echo_pos): New variables.
Jason Rumney <jasonr@gnu.org>
parents:
30199
diff
changeset
|
604 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
|
605 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
|
606 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
|
607 |
2c2a7ebd2c15
(help_echo_object, help_echo_pos): New variables.
Jason Rumney <jasonr@gnu.org>
parents:
30199
diff
changeset
|
608 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
|
609 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
|
610 here. */ |
27402
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 static void |
30240
2c2a7ebd2c15
(help_echo_object, help_echo_pos): New variables.
Jason Rumney <jasonr@gnu.org>
parents:
30199
diff
changeset
|
613 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
|
614 struct window *w; |
30240
2c2a7ebd2c15
(help_echo_object, help_echo_pos): New variables.
Jason Rumney <jasonr@gnu.org>
parents:
30199
diff
changeset
|
615 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
|
616 { |
50231
c8ea5e4b2129
* w32term.c: Remove consolidated defines and code.
Kim F. Storm <storm@cua.dk>
parents:
50163
diff
changeset
|
617 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
|
618 |
27402
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
619 if (!w->pseudo_window_p) |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
620 { |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
621 BLOCK_INPUT; |
30240
2c2a7ebd2c15
(help_echo_object, help_echo_pos): New variables.
Jason Rumney <jasonr@gnu.org>
parents:
30199
diff
changeset
|
622 |
27402
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
623 if (cursor_on_p) |
50231
c8ea5e4b2129
* w32term.c: Remove consolidated defines and code.
Kim F. Storm <storm@cua.dk>
parents:
50163
diff
changeset
|
624 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
|
625 output_cursor.vpos, |
c8ea5e4b2129
* w32term.c: Remove consolidated defines and code.
Kim F. Storm <storm@cua.dk>
parents:
50163
diff
changeset
|
626 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
|
627 |
57373
38e45bf0128a
(x_update_window_end): Fix flicker on vertical line between
Kim F. Storm <storm@cua.dk>
parents:
57278
diff
changeset
|
628 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
|
629 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
|
630 |
27402
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
631 UNBLOCK_INPUT; |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
632 } |
40137
5f0d7d58283b
(remember_mouse_glyph): New function.
Jason Rumney <jasonr@gnu.org>
parents:
40078
diff
changeset
|
633 |
5f0d7d58283b
(remember_mouse_glyph): New function.
Jason Rumney <jasonr@gnu.org>
parents:
40078
diff
changeset
|
634 /* 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
|
635 XTframe_up_to_date to redisplay the mouse highlight. */ |
5f0d7d58283b
(remember_mouse_glyph): New function.
Jason Rumney <jasonr@gnu.org>
parents:
40078
diff
changeset
|
636 if (mouse_face_overwritten_p) |
5f0d7d58283b
(remember_mouse_glyph): New function.
Jason Rumney <jasonr@gnu.org>
parents:
40078
diff
changeset
|
637 { |
5f0d7d58283b
(remember_mouse_glyph): New function.
Jason Rumney <jasonr@gnu.org>
parents:
40078
diff
changeset
|
638 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
|
639 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
|
640 dpyinfo->mouse_face_window = Qnil; |
5f0d7d58283b
(remember_mouse_glyph): New function.
Jason Rumney <jasonr@gnu.org>
parents:
40078
diff
changeset
|
641 } |
5f0d7d58283b
(remember_mouse_glyph): New function.
Jason Rumney <jasonr@gnu.org>
parents:
40078
diff
changeset
|
642 |
42864
c1af6a7f3dd4
(w32_system_caret_width): Remove.
Jason Rumney <jasonr@gnu.org>
parents:
42844
diff
changeset
|
643 /* 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
|
644 was visible before the corresponding call to HideCaret in |
c1af6a7f3dd4
(w32_system_caret_width): Remove.
Jason Rumney <jasonr@gnu.org>
parents:
42844
diff
changeset
|
645 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
|
646 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
|
647 { |
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
|
648 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
|
649 } |
42864
c1af6a7f3dd4
(w32_system_caret_width): Remove.
Jason Rumney <jasonr@gnu.org>
parents:
42844
diff
changeset
|
650 |
27402
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
651 updated_window = NULL; |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
652 } |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
653 |
29321
8e2be36bb1c6
Format and doc changes to bring closer to xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
28369
diff
changeset
|
654 |
8e2be36bb1c6
Format and doc changes to bring closer to xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
28369
diff
changeset
|
655 /* 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
|
656 update_end. */ |
8e2be36bb1c6
Format and doc changes to bring closer to xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
28369
diff
changeset
|
657 |
27402
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
658 static void |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
659 x_update_end (f) |
13434 | 660 struct frame *f; |
661 { | |
35000 | 662 if (! FRAME_W32_P (f)) |
663 return; | |
664 | |
27402
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
665 /* Mouse highlight may be displayed again. */ |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
666 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
|
667 } |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
668 |
29321
8e2be36bb1c6
Format and doc changes to bring closer to xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
28369
diff
changeset
|
669 |
27402
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
670 /* 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
|
671 complete update has been performed. The global variable |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
672 updated_window is not available here. */ |
13434 | 673 |
21831
6b659713b90b
Forward declare hooks with full function prototypes.
Geoff Voelker <voelker@cs.washington.edu>
parents:
21740
diff
changeset
|
674 static void |
16588
481b7874a1e9
Change identifiers of the form win32* to w32*.
Geoff Voelker <voelker@cs.washington.edu>
parents:
16326
diff
changeset
|
675 w32_frame_up_to_date (f) |
27402
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
676 struct frame *f; |
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 if (FRAME_W32_P (f)) |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
679 { |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
680 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
|
681 |
27402
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
682 if (dpyinfo->mouse_face_deferred_gc |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
683 || f == dpyinfo->mouse_face_mouse_frame) |
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 BLOCK_INPUT; |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
686 if (dpyinfo->mouse_face_mouse_frame) |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
687 note_mouse_highlight (dpyinfo->mouse_face_mouse_frame, |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
688 dpyinfo->mouse_face_mouse_x, |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
689 dpyinfo->mouse_face_mouse_y); |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
690 dpyinfo->mouse_face_deferred_gc = 0; |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
691 UNBLOCK_INPUT; |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
692 } |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
693 } |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
694 } |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
695 |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
696 |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
697 /* Draw truncation mark bitmaps, continuation mark bitmaps, overlay |
41125 | 698 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
|
699 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
|
700 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
|
701 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
|
702 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
|
703 |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
704 static void |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
705 x_after_update_window_line (desired_row) |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
706 struct glyph_row *desired_row; |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
707 { |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
708 struct window *w = updated_window; |
41249
2043af2d023f
(note_mouse_highlight): Fix type of variable `ignore'.
Jason Rumney <jasonr@gnu.org>
parents:
41125
diff
changeset
|
709 struct frame *f; |
2043af2d023f
(note_mouse_highlight): Fix type of variable `ignore'.
Jason Rumney <jasonr@gnu.org>
parents:
41125
diff
changeset
|
710 int width, height; |
2043af2d023f
(note_mouse_highlight): Fix type of variable `ignore'.
Jason Rumney <jasonr@gnu.org>
parents:
41125
diff
changeset
|
711 |
27402
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
712 xassert (w); |
48218
01e253345507
(w32_draw_fringe_bitmap): Remove unused local variable window.
Juanma Barranquero <lekktu@gmail.com>
parents:
48025
diff
changeset
|
713 |
27402
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
714 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
|
715 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
|
716 |
2043af2d023f
(note_mouse_highlight): Fix type of variable `ignore'.
Jason Rumney <jasonr@gnu.org>
parents:
41125
diff
changeset
|
717 /* 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
|
718 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
|
719 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
|
720 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
|
721 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
|
722 overhead is very small. */ |
2043af2d023f
(note_mouse_highlight): Fix type of variable `ignore'.
Jason Rumney <jasonr@gnu.org>
parents:
41125
diff
changeset
|
723 if (windows_or_buffers_changed |
2043af2d023f
(note_mouse_highlight): Fix type of variable `ignore'.
Jason Rumney <jasonr@gnu.org>
parents:
41125
diff
changeset
|
724 && desired_row->full_width_p |
2043af2d023f
(note_mouse_highlight): Fix type of variable `ignore'.
Jason Rumney <jasonr@gnu.org>
parents:
41125
diff
changeset
|
725 && (f = XFRAME (w->frame), |
2043af2d023f
(note_mouse_highlight): Fix type of variable `ignore'.
Jason Rumney <jasonr@gnu.org>
parents:
41125
diff
changeset
|
726 width = FRAME_INTERNAL_BORDER_WIDTH (f), |
2043af2d023f
(note_mouse_highlight): Fix type of variable `ignore'.
Jason Rumney <jasonr@gnu.org>
parents:
41125
diff
changeset
|
727 width != 0) |
2043af2d023f
(note_mouse_highlight): Fix type of variable `ignore'.
Jason Rumney <jasonr@gnu.org>
parents:
41125
diff
changeset
|
728 && (height = desired_row->visible_height, |
2043af2d023f
(note_mouse_highlight): Fix type of variable `ignore'.
Jason Rumney <jasonr@gnu.org>
parents:
41125
diff
changeset
|
729 height > 0)) |
2043af2d023f
(note_mouse_highlight): Fix type of variable `ignore'.
Jason Rumney <jasonr@gnu.org>
parents:
41125
diff
changeset
|
730 { |
2043af2d023f
(note_mouse_highlight): Fix type of variable `ignore'.
Jason Rumney <jasonr@gnu.org>
parents:
41125
diff
changeset
|
731 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
|
732 |
41249
2043af2d023f
(note_mouse_highlight): Fix type of variable `ignore'.
Jason Rumney <jasonr@gnu.org>
parents:
41125
diff
changeset
|
733 BLOCK_INPUT; |
2043af2d023f
(note_mouse_highlight): Fix type of variable `ignore'.
Jason Rumney <jasonr@gnu.org>
parents:
41125
diff
changeset
|
734 { |
2043af2d023f
(note_mouse_highlight): Fix type of variable `ignore'.
Jason Rumney <jasonr@gnu.org>
parents:
41125
diff
changeset
|
735 HDC hdc = get_frame_dc (f); |
2043af2d023f
(note_mouse_highlight): Fix type of variable `ignore'.
Jason Rumney <jasonr@gnu.org>
parents:
41125
diff
changeset
|
736 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
|
737 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
|
738 y, width, height); |
2043af2d023f
(note_mouse_highlight): Fix type of variable `ignore'.
Jason Rumney <jasonr@gnu.org>
parents:
41125
diff
changeset
|
739 release_frame_dc (f, hdc); |
2043af2d023f
(note_mouse_highlight): Fix type of variable `ignore'.
Jason Rumney <jasonr@gnu.org>
parents:
41125
diff
changeset
|
740 } |
27402
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
741 UNBLOCK_INPUT; |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
742 } |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
743 } |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
744 |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
745 |
41125 | 746 /* 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
|
747 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
|
748 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
|
749 drawn. */ |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
750 |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
751 static void |
50096 | 752 w32_draw_fringe_bitmap (w, row, p) |
27402
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
753 struct window *w; |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
754 struct glyph_row *row; |
50096 | 755 struct draw_fringe_bitmap_params *p; |
27402
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
756 { |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
757 struct frame *f = XFRAME (WINDOW_FRAME (w)); |
50096 | 758 HDC hdc; |
759 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
|
760 int rowY; |
50096 | 761 |
762 hdc = get_frame_dc (f); | |
27402
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
763 |
82170
e0ebebf01b6d
(w32_draw_fringe_bitmap): Extend fringe background to
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
82140
diff
changeset
|
764 if (!p->overlay_p) |
e0ebebf01b6d
(w32_draw_fringe_bitmap): Extend fringe background to
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
82140
diff
changeset
|
765 { |
e0ebebf01b6d
(w32_draw_fringe_bitmap): Extend fringe background to
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
82140
diff
changeset
|
766 int bx = p->bx, by = p->by, nx = p->nx, ny = p->ny; |
e0ebebf01b6d
(w32_draw_fringe_bitmap): Extend fringe background to
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
82140
diff
changeset
|
767 |
e0ebebf01b6d
(w32_draw_fringe_bitmap): Extend fringe background to
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
82140
diff
changeset
|
768 /* If the fringe is adjacent to the left (right) scroll bar of a |
e0ebebf01b6d
(w32_draw_fringe_bitmap): Extend fringe background to
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
82140
diff
changeset
|
769 leftmost (rightmost, respectively) window, then extend its |
e0ebebf01b6d
(w32_draw_fringe_bitmap): Extend fringe background to
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
82140
diff
changeset
|
770 background to the gap between the fringe and the bar. */ |
e0ebebf01b6d
(w32_draw_fringe_bitmap): Extend fringe background to
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
82140
diff
changeset
|
771 if ((WINDOW_LEFTMOST_P (w) |
e0ebebf01b6d
(w32_draw_fringe_bitmap): Extend fringe background to
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
82140
diff
changeset
|
772 && WINDOW_HAS_VERTICAL_SCROLL_BAR_ON_LEFT (w)) |
e0ebebf01b6d
(w32_draw_fringe_bitmap): Extend fringe background to
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
82140
diff
changeset
|
773 || (WINDOW_RIGHTMOST_P (w) |
e0ebebf01b6d
(w32_draw_fringe_bitmap): Extend fringe background to
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
82140
diff
changeset
|
774 && WINDOW_HAS_VERTICAL_SCROLL_BAR_ON_RIGHT (w))) |
e0ebebf01b6d
(w32_draw_fringe_bitmap): Extend fringe background to
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
82140
diff
changeset
|
775 { |
e0ebebf01b6d
(w32_draw_fringe_bitmap): Extend fringe background to
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
82140
diff
changeset
|
776 int sb_width = WINDOW_CONFIG_SCROLL_BAR_WIDTH (w); |
e0ebebf01b6d
(w32_draw_fringe_bitmap): Extend fringe background to
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
82140
diff
changeset
|
777 |
e0ebebf01b6d
(w32_draw_fringe_bitmap): Extend fringe background to
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
82140
diff
changeset
|
778 if (sb_width > 0) |
e0ebebf01b6d
(w32_draw_fringe_bitmap): Extend fringe background to
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
82140
diff
changeset
|
779 { |
e0ebebf01b6d
(w32_draw_fringe_bitmap): Extend fringe background to
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
82140
diff
changeset
|
780 int left = WINDOW_SCROLL_BAR_AREA_X (w); |
e0ebebf01b6d
(w32_draw_fringe_bitmap): Extend fringe background to
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
82140
diff
changeset
|
781 int width = (WINDOW_CONFIG_SCROLL_BAR_COLS (w) |
e0ebebf01b6d
(w32_draw_fringe_bitmap): Extend fringe background to
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
82140
diff
changeset
|
782 * FRAME_COLUMN_WIDTH (f)); |
e0ebebf01b6d
(w32_draw_fringe_bitmap): Extend fringe background to
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
82140
diff
changeset
|
783 |
e0ebebf01b6d
(w32_draw_fringe_bitmap): Extend fringe background to
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
82140
diff
changeset
|
784 if (bx < 0) |
e0ebebf01b6d
(w32_draw_fringe_bitmap): Extend fringe background to
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
82140
diff
changeset
|
785 { |
e0ebebf01b6d
(w32_draw_fringe_bitmap): Extend fringe background to
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
82140
diff
changeset
|
786 /* Bitmap fills the fringe. */ |
e0ebebf01b6d
(w32_draw_fringe_bitmap): Extend fringe background to
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
82140
diff
changeset
|
787 if (left + width == p->x) |
e0ebebf01b6d
(w32_draw_fringe_bitmap): Extend fringe background to
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
82140
diff
changeset
|
788 bx = left + sb_width; |
e0ebebf01b6d
(w32_draw_fringe_bitmap): Extend fringe background to
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
82140
diff
changeset
|
789 else if (p->x + p->wd == left) |
e0ebebf01b6d
(w32_draw_fringe_bitmap): Extend fringe background to
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
82140
diff
changeset
|
790 bx = left; |
e0ebebf01b6d
(w32_draw_fringe_bitmap): Extend fringe background to
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
82140
diff
changeset
|
791 if (bx >= 0) |
e0ebebf01b6d
(w32_draw_fringe_bitmap): Extend fringe background to
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
82140
diff
changeset
|
792 { |
e0ebebf01b6d
(w32_draw_fringe_bitmap): Extend fringe background to
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
82140
diff
changeset
|
793 int header_line_height = WINDOW_HEADER_LINE_HEIGHT (w); |
e0ebebf01b6d
(w32_draw_fringe_bitmap): Extend fringe background to
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
82140
diff
changeset
|
794 |
e0ebebf01b6d
(w32_draw_fringe_bitmap): Extend fringe background to
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
82140
diff
changeset
|
795 nx = width - sb_width; |
e0ebebf01b6d
(w32_draw_fringe_bitmap): Extend fringe background to
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
82140
diff
changeset
|
796 by = WINDOW_TO_FRAME_PIXEL_Y (w, max (header_line_height, |
e0ebebf01b6d
(w32_draw_fringe_bitmap): Extend fringe background to
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
82140
diff
changeset
|
797 row->y)); |
e0ebebf01b6d
(w32_draw_fringe_bitmap): Extend fringe background to
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
82140
diff
changeset
|
798 ny = row->visible_height; |
e0ebebf01b6d
(w32_draw_fringe_bitmap): Extend fringe background to
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
82140
diff
changeset
|
799 } |
e0ebebf01b6d
(w32_draw_fringe_bitmap): Extend fringe background to
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
82140
diff
changeset
|
800 } |
e0ebebf01b6d
(w32_draw_fringe_bitmap): Extend fringe background to
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
82140
diff
changeset
|
801 else |
e0ebebf01b6d
(w32_draw_fringe_bitmap): Extend fringe background to
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
82140
diff
changeset
|
802 { |
e0ebebf01b6d
(w32_draw_fringe_bitmap): Extend fringe background to
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
82140
diff
changeset
|
803 if (left + width == bx) |
e0ebebf01b6d
(w32_draw_fringe_bitmap): Extend fringe background to
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
82140
diff
changeset
|
804 { |
e0ebebf01b6d
(w32_draw_fringe_bitmap): Extend fringe background to
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
82140
diff
changeset
|
805 bx = left + sb_width; |
e0ebebf01b6d
(w32_draw_fringe_bitmap): Extend fringe background to
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
82140
diff
changeset
|
806 nx += width - sb_width; |
e0ebebf01b6d
(w32_draw_fringe_bitmap): Extend fringe background to
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
82140
diff
changeset
|
807 } |
e0ebebf01b6d
(w32_draw_fringe_bitmap): Extend fringe background to
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
82140
diff
changeset
|
808 else if (bx + nx == left) |
e0ebebf01b6d
(w32_draw_fringe_bitmap): Extend fringe background to
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
82140
diff
changeset
|
809 nx += width - sb_width; |
e0ebebf01b6d
(w32_draw_fringe_bitmap): Extend fringe background to
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
82140
diff
changeset
|
810 } |
e0ebebf01b6d
(w32_draw_fringe_bitmap): Extend fringe background to
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
82140
diff
changeset
|
811 } |
e0ebebf01b6d
(w32_draw_fringe_bitmap): Extend fringe background to
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
82140
diff
changeset
|
812 } |
e0ebebf01b6d
(w32_draw_fringe_bitmap): Extend fringe background to
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
82140
diff
changeset
|
813 |
e0ebebf01b6d
(w32_draw_fringe_bitmap): Extend fringe background to
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
82140
diff
changeset
|
814 if (bx >= 0 && nx > 0) |
e0ebebf01b6d
(w32_draw_fringe_bitmap): Extend fringe background to
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
82140
diff
changeset
|
815 w32_fill_area (f, hdc, face->background, bx, by, nx, ny); |
e0ebebf01b6d
(w32_draw_fringe_bitmap): Extend fringe background to
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
82140
diff
changeset
|
816 } |
e0ebebf01b6d
(w32_draw_fringe_bitmap): Extend fringe background to
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
82140
diff
changeset
|
817 |
27402
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
818 /* 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
|
819 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
|
820 if (p->y < rowY) |
4262a032b45b
(x_update_window_end): Call draw_window_fringes.
Kim F. Storm <storm@cua.dk>
parents:
53469
diff
changeset
|
821 { |
4262a032b45b
(x_update_window_end): Call draw_window_fringes.
Kim F. Storm <storm@cua.dk>
parents:
53469
diff
changeset
|
822 /* 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
|
823 visible last row. */ |
4262a032b45b
(x_update_window_end): Call draw_window_fringes.
Kim F. Storm <storm@cua.dk>
parents:
53469
diff
changeset
|
824 int oldY = row->y; |
4262a032b45b
(x_update_window_end): Call draw_window_fringes.
Kim F. Storm <storm@cua.dk>
parents:
53469
diff
changeset
|
825 int oldVH = row->visible_height; |
4262a032b45b
(x_update_window_end): Call draw_window_fringes.
Kim F. Storm <storm@cua.dk>
parents:
53469
diff
changeset
|
826 row->visible_height = p->h; |
4262a032b45b
(x_update_window_end): Call draw_window_fringes.
Kim F. Storm <storm@cua.dk>
parents:
53469
diff
changeset
|
827 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
|
828 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
|
829 row->y = oldY; |
4262a032b45b
(x_update_window_end): Call draw_window_fringes.
Kim F. Storm <storm@cua.dk>
parents:
53469
diff
changeset
|
830 row->visible_height = oldVH; |
4262a032b45b
(x_update_window_end): Call draw_window_fringes.
Kim F. Storm <storm@cua.dk>
parents:
53469
diff
changeset
|
831 } |
4262a032b45b
(x_update_window_end): Call draw_window_fringes.
Kim F. Storm <storm@cua.dk>
parents:
53469
diff
changeset
|
832 else |
58402
d1d4d5846215
(w32_clip_to_row): Add area arg. Callers changed.
Kim F. Storm <storm@cua.dk>
parents:
57837
diff
changeset
|
833 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
|
834 |
57278
4cec0243673a
(fringe_bmp): Change to pointer.
Kim F. Storm <storm@cua.dk>
parents:
56729
diff
changeset
|
835 if (p->which && p->which < max_fringe_bmp) |
50096 | 836 { |
837 HBITMAP pixmap = fringe_bmp[p->which]; | |
838 HDC compat_hdc; | |
839 HANDLE horig_obj; | |
840 | |
841 compat_hdc = CreateCompatibleDC (hdc); | |
53964
7add5c20b6f7
(w32_draw_fringe_bitmap): Handle overlay fringe bitmaps.
Jason Rumney <jasonr@gnu.org>
parents:
53934
diff
changeset
|
842 |
50096 | 843 SaveDC (hdc); |
844 | |
845 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
|
846 |
7add5c20b6f7
(w32_draw_fringe_bitmap): Handle overlay fringe bitmaps.
Jason Rumney <jasonr@gnu.org>
parents:
53934
diff
changeset
|
847 /* Paint overlays transparently. */ |
53886
e1b1c388f74d
(w32_draw_fringe_bitmap): Copy unadapted code from
Kim F. Storm <storm@cua.dk>
parents:
53607
diff
changeset
|
848 if (p->overlay_p) |
e1b1c388f74d
(w32_draw_fringe_bitmap): Copy unadapted code from
Kim F. Storm <storm@cua.dk>
parents:
53607
diff
changeset
|
849 { |
54126
8d0f80667054
(w32_draw_fringe_bitmap): Draw overlaid bitmaps
Jason Rumney <jasonr@gnu.org>
parents:
53964
diff
changeset
|
850 HBRUSH h_brush, h_orig_brush; |
8d0f80667054
(w32_draw_fringe_bitmap): Draw overlaid bitmaps
Jason Rumney <jasonr@gnu.org>
parents:
53964
diff
changeset
|
851 |
8d0f80667054
(w32_draw_fringe_bitmap): Draw overlaid bitmaps
Jason Rumney <jasonr@gnu.org>
parents:
53964
diff
changeset
|
852 SetTextColor (hdc, BLACK_PIX_DEFAULT (f)); |
8d0f80667054
(w32_draw_fringe_bitmap): Draw overlaid bitmaps
Jason Rumney <jasonr@gnu.org>
parents:
53964
diff
changeset
|
853 SetBkColor (hdc, WHITE_PIX_DEFAULT (f)); |
8d0f80667054
(w32_draw_fringe_bitmap): Draw overlaid bitmaps
Jason Rumney <jasonr@gnu.org>
parents:
53964
diff
changeset
|
854 h_brush = CreateSolidBrush (face->foreground); |
8d0f80667054
(w32_draw_fringe_bitmap): Draw overlaid bitmaps
Jason Rumney <jasonr@gnu.org>
parents:
53964
diff
changeset
|
855 h_orig_brush = SelectObject (hdc, h_brush); |
8d0f80667054
(w32_draw_fringe_bitmap): Draw overlaid bitmaps
Jason Rumney <jasonr@gnu.org>
parents:
53964
diff
changeset
|
856 |
8d0f80667054
(w32_draw_fringe_bitmap): Draw overlaid bitmaps
Jason Rumney <jasonr@gnu.org>
parents:
53964
diff
changeset
|
857 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
|
858 compat_hdc, 0, p->dh, |
8d0f80667054
(w32_draw_fringe_bitmap): Draw overlaid bitmaps
Jason Rumney <jasonr@gnu.org>
parents:
53964
diff
changeset
|
859 DSTINVERT); |
8d0f80667054
(w32_draw_fringe_bitmap): Draw overlaid bitmaps
Jason Rumney <jasonr@gnu.org>
parents:
53964
diff
changeset
|
860 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
|
861 compat_hdc, 0, p->dh, |
8d0f80667054
(w32_draw_fringe_bitmap): Draw overlaid bitmaps
Jason Rumney <jasonr@gnu.org>
parents:
53964
diff
changeset
|
862 0x2E064A); |
8d0f80667054
(w32_draw_fringe_bitmap): Draw overlaid bitmaps
Jason Rumney <jasonr@gnu.org>
parents:
53964
diff
changeset
|
863 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
|
864 compat_hdc, 0, p->dh, |
8d0f80667054
(w32_draw_fringe_bitmap): Draw overlaid bitmaps
Jason Rumney <jasonr@gnu.org>
parents:
53964
diff
changeset
|
865 DSTINVERT); |
8d0f80667054
(w32_draw_fringe_bitmap): Draw overlaid bitmaps
Jason Rumney <jasonr@gnu.org>
parents:
53964
diff
changeset
|
866 |
8d0f80667054
(w32_draw_fringe_bitmap): Draw overlaid bitmaps
Jason Rumney <jasonr@gnu.org>
parents:
53964
diff
changeset
|
867 SelectObject (hdc, h_orig_brush); |
8d0f80667054
(w32_draw_fringe_bitmap): Draw overlaid bitmaps
Jason Rumney <jasonr@gnu.org>
parents:
53964
diff
changeset
|
868 DeleteObject (h_brush); |
53886
e1b1c388f74d
(w32_draw_fringe_bitmap): Copy unadapted code from
Kim F. Storm <storm@cua.dk>
parents:
53607
diff
changeset
|
869 } |
53964
7add5c20b6f7
(w32_draw_fringe_bitmap): Handle overlay fringe bitmaps.
Jason Rumney <jasonr@gnu.org>
parents:
53934
diff
changeset
|
870 else |
54126
8d0f80667054
(w32_draw_fringe_bitmap): Draw overlaid bitmaps
Jason Rumney <jasonr@gnu.org>
parents:
53964
diff
changeset
|
871 { |
8d0f80667054
(w32_draw_fringe_bitmap): Draw overlaid bitmaps
Jason Rumney <jasonr@gnu.org>
parents:
53964
diff
changeset
|
872 SetTextColor (hdc, face->background); |
8d0f80667054
(w32_draw_fringe_bitmap): Draw overlaid bitmaps
Jason Rumney <jasonr@gnu.org>
parents:
53964
diff
changeset
|
873 SetBkColor (hdc, (p->cursor_p |
8d0f80667054
(w32_draw_fringe_bitmap): Draw overlaid bitmaps
Jason Rumney <jasonr@gnu.org>
parents:
53964
diff
changeset
|
874 ? f->output_data.w32->cursor_pixel |
8d0f80667054
(w32_draw_fringe_bitmap): Draw overlaid bitmaps
Jason Rumney <jasonr@gnu.org>
parents:
53964
diff
changeset
|
875 : face->foreground)); |
8d0f80667054
(w32_draw_fringe_bitmap): Draw overlaid bitmaps
Jason Rumney <jasonr@gnu.org>
parents:
53964
diff
changeset
|
876 |
8d0f80667054
(w32_draw_fringe_bitmap): Draw overlaid bitmaps
Jason Rumney <jasonr@gnu.org>
parents:
53964
diff
changeset
|
877 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
|
878 compat_hdc, 0, p->dh, |
8d0f80667054
(w32_draw_fringe_bitmap): Draw overlaid bitmaps
Jason Rumney <jasonr@gnu.org>
parents:
53964
diff
changeset
|
879 SRCCOPY); |
8d0f80667054
(w32_draw_fringe_bitmap): Draw overlaid bitmaps
Jason Rumney <jasonr@gnu.org>
parents:
53964
diff
changeset
|
880 } |
53886
e1b1c388f74d
(w32_draw_fringe_bitmap): Copy unadapted code from
Kim F. Storm <storm@cua.dk>
parents:
53607
diff
changeset
|
881 |
50096 | 882 SelectObject (compat_hdc, horig_obj); |
883 DeleteDC (compat_hdc); | |
884 RestoreDC (hdc, -1); | |
885 } | |
886 | |
887 w32_set_clip_rectangle (hdc, NULL); | |
27402
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
888 |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
889 release_frame_dc (f, hdc); |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
890 } |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
891 |
53886
e1b1c388f74d
(w32_draw_fringe_bitmap): Copy unadapted code from
Kim F. Storm <storm@cua.dk>
parents:
53607
diff
changeset
|
892 static void |
e1b1c388f74d
(w32_draw_fringe_bitmap): Copy unadapted code from
Kim F. Storm <storm@cua.dk>
parents:
53607
diff
changeset
|
893 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
|
894 int which; |
53934
de8ab2bcee32
(w32_define_fringe_bitmap): Bitmaps are now 16 bits wide,
Kim F. Storm <storm@cua.dk>
parents:
53902
diff
changeset
|
895 unsigned short *bits; |
53886
e1b1c388f74d
(w32_draw_fringe_bitmap): Copy unadapted code from
Kim F. Storm <storm@cua.dk>
parents:
53607
diff
changeset
|
896 int h, wd; |
e1b1c388f74d
(w32_draw_fringe_bitmap): Copy unadapted code from
Kim F. Storm <storm@cua.dk>
parents:
53607
diff
changeset
|
897 { |
57278
4cec0243673a
(fringe_bmp): Change to pointer.
Kim F. Storm <storm@cua.dk>
parents:
56729
diff
changeset
|
898 if (which >= max_fringe_bmp) |
4cec0243673a
(fringe_bmp): Change to pointer.
Kim F. Storm <storm@cua.dk>
parents:
56729
diff
changeset
|
899 { |
4cec0243673a
(fringe_bmp): Change to pointer.
Kim F. Storm <storm@cua.dk>
parents:
56729
diff
changeset
|
900 int i = max_fringe_bmp; |
4cec0243673a
(fringe_bmp): Change to pointer.
Kim F. Storm <storm@cua.dk>
parents:
56729
diff
changeset
|
901 max_fringe_bmp = which + 20; |
4cec0243673a
(fringe_bmp): Change to pointer.
Kim F. Storm <storm@cua.dk>
parents:
56729
diff
changeset
|
902 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
|
903 while (i < max_fringe_bmp) |
4cec0243673a
(fringe_bmp): Change to pointer.
Kim F. Storm <storm@cua.dk>
parents:
56729
diff
changeset
|
904 fringe_bmp[i++] = 0; |
4cec0243673a
(fringe_bmp): Change to pointer.
Kim F. Storm <storm@cua.dk>
parents:
56729
diff
changeset
|
905 } |
4cec0243673a
(fringe_bmp): Change to pointer.
Kim F. Storm <storm@cua.dk>
parents:
56729
diff
changeset
|
906 |
53934
de8ab2bcee32
(w32_define_fringe_bitmap): Bitmaps are now 16 bits wide,
Kim F. Storm <storm@cua.dk>
parents:
53902
diff
changeset
|
907 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
|
908 } |
e1b1c388f74d
(w32_draw_fringe_bitmap): Copy unadapted code from
Kim F. Storm <storm@cua.dk>
parents:
53607
diff
changeset
|
909 |
e1b1c388f74d
(w32_draw_fringe_bitmap): Copy unadapted code from
Kim F. Storm <storm@cua.dk>
parents:
53607
diff
changeset
|
910 static void |
e1b1c388f74d
(w32_draw_fringe_bitmap): Copy unadapted code from
Kim F. Storm <storm@cua.dk>
parents:
53607
diff
changeset
|
911 w32_destroy_fringe_bitmap (which) |
e1b1c388f74d
(w32_draw_fringe_bitmap): Copy unadapted code from
Kim F. Storm <storm@cua.dk>
parents:
53607
diff
changeset
|
912 int which; |
e1b1c388f74d
(w32_draw_fringe_bitmap): Copy unadapted code from
Kim F. Storm <storm@cua.dk>
parents:
53607
diff
changeset
|
913 { |
57278
4cec0243673a
(fringe_bmp): Change to pointer.
Kim F. Storm <storm@cua.dk>
parents:
56729
diff
changeset
|
914 if (which >= max_fringe_bmp) |
4cec0243673a
(fringe_bmp): Change to pointer.
Kim F. Storm <storm@cua.dk>
parents:
56729
diff
changeset
|
915 return; |
4cec0243673a
(fringe_bmp): Change to pointer.
Kim F. Storm <storm@cua.dk>
parents:
56729
diff
changeset
|
916 |
53886
e1b1c388f74d
(w32_draw_fringe_bitmap): Copy unadapted code from
Kim F. Storm <storm@cua.dk>
parents:
53607
diff
changeset
|
917 if (fringe_bmp[which]) |
e1b1c388f74d
(w32_draw_fringe_bitmap): Copy unadapted code from
Kim F. Storm <storm@cua.dk>
parents:
53607
diff
changeset
|
918 DeleteObject (fringe_bmp[which]); |
e1b1c388f74d
(w32_draw_fringe_bitmap): Copy unadapted code from
Kim F. Storm <storm@cua.dk>
parents:
53607
diff
changeset
|
919 fringe_bmp[which] = 0; |
e1b1c388f74d
(w32_draw_fringe_bitmap): Copy unadapted code from
Kim F. Storm <storm@cua.dk>
parents:
53607
diff
changeset
|
920 } |
e1b1c388f74d
(w32_draw_fringe_bitmap): Copy unadapted code from
Kim F. Storm <storm@cua.dk>
parents:
53607
diff
changeset
|
921 |
e1b1c388f74d
(w32_draw_fringe_bitmap): Copy unadapted code from
Kim F. Storm <storm@cua.dk>
parents:
53607
diff
changeset
|
922 |
13434 | 923 |
29321
8e2be36bb1c6
Format and doc changes to bring closer to xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
28369
diff
changeset
|
924 /* 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
|
925 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
|
926 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
|
927 rarely happens). */ |
13434 | 928 |
21831
6b659713b90b
Forward declare hooks with full function prototypes.
Geoff Voelker <voelker@cs.washington.edu>
parents:
21740
diff
changeset
|
929 static void |
83569
86395c339701
(w32_set_terminal_modes, w32_reset_terminal_modes):
Jason Rumney <jasonr@gnu.org>
parents:
83556
diff
changeset
|
930 w32_set_terminal_modes (struct terminal *term) |
13434 | 931 { |
932 } | |
933 | |
29321
8e2be36bb1c6
Format and doc changes to bring closer to xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
28369
diff
changeset
|
934 /* 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
|
935 the W32 windows go away, and suspending requires no action. */ |
13434 | 936 |
21831
6b659713b90b
Forward declare hooks with full function prototypes.
Geoff Voelker <voelker@cs.washington.edu>
parents:
21740
diff
changeset
|
937 static void |
83569
86395c339701
(w32_set_terminal_modes, w32_reset_terminal_modes):
Jason Rumney <jasonr@gnu.org>
parents:
83556
diff
changeset
|
938 w32_reset_terminal_modes (struct terminal *term) |
13434 | 939 { |
940 } | |
27402
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
941 |
29321
8e2be36bb1c6
Format and doc changes to bring closer to xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
28369
diff
changeset
|
942 |
13434 | 943 |
27402
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
944 /*********************************************************************** |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
945 Display Iterator |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
946 ***********************************************************************/ |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
947 |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
948 /* Function prototypes of this page. */ |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
949 |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
950 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
|
951 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
|
952 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
|
953 int)); |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
954 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
|
955 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
|
956 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
|
957 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
|
958 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
|
959 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
|
960 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
|
961 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
|
962 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
|
963 double, int, COLORREF)); |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
964 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
|
965 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
|
966 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
|
967 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
|
968 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
|
969 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
|
970 int, int, int)); |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
971 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
|
972 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
|
973 RECT *)); |
27402
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
974 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
|
975 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
|
976 |
48218
01e253345507
(w32_draw_fringe_bitmap): Remove unused local variable window.
Juanma Barranquero <lekktu@gmail.com>
parents:
48025
diff
changeset
|
977 |
27402
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
978 /* 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
|
979 face. */ |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
980 |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
981 static void |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
982 x_set_cursor_gc (s) |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
983 struct glyph_string *s; |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
984 { |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
985 if (s->font == FRAME_FONT (s->f) |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
986 && s->face->background == FRAME_BACKGROUND_PIXEL (s->f) |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
987 && s->face->foreground == FRAME_FOREGROUND_PIXEL (s->f) |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
988 && !s->cmp) |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
989 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
|
990 else |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
991 { |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
992 /* Cursor on non-default face: must merge. */ |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
993 XGCValues xgcv; |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
994 unsigned long mask; |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
995 |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
996 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
|
997 xgcv.foreground = s->face->background; |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
998 |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
999 /* 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
|
1000 if (xgcv.foreground == xgcv.background) |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1001 xgcv.foreground = s->face->foreground; |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1002 if (xgcv.foreground == xgcv.background) |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1003 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
|
1004 if (xgcv.foreground == xgcv.background) |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1005 xgcv.foreground = s->face->foreground; |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1006 |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1007 /* 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
|
1008 if (xgcv.background == s->face->background |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1009 && xgcv.foreground == s->face->foreground) |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1010 { |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1011 xgcv.background = s->face->foreground; |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1012 xgcv.foreground = s->face->background; |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1013 } |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1014 |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1015 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
|
1016 xgcv.font = s->font; |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1017 mask = GCForeground | GCBackground | GCFont; |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1018 |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1019 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
|
1020 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
|
1021 mask, &xgcv); |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1022 else |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1023 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
|
1024 = XCreateGC (NULL, s->window, mask, &xgcv); |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1025 |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1026 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
|
1027 } |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1028 } |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1029 |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1030 |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1031 /* 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
|
1032 |
27402
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1033 static void |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1034 x_set_mouse_face_gc (s) |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1035 struct glyph_string *s; |
48218
01e253345507
(w32_draw_fringe_bitmap): Remove unused local variable window.
Juanma Barranquero <lekktu@gmail.com>
parents:
48025
diff
changeset
|
1036 { |
27402
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1037 int face_id; |
28369
3fb90cd81d3b
(w32_read_socket): Handle WM_MENUSELECT message.
Jason Rumney <jasonr@gnu.org>
parents:
27937
diff
changeset
|
1038 struct face *face; |
27402
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1039 |
35384
e50a7f9ce65e
(x_produce_stretch_glyph): Only use Qspace when GLYPH_DEBUG is defined.
Jason Rumney <jasonr@gnu.org>
parents:
35287
diff
changeset
|
1040 /* 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
|
1041 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
|
1042 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
|
1043 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
|
1044 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
|
1045 |
35384
e50a7f9ce65e
(x_produce_stretch_glyph): Only use Qspace when GLYPH_DEBUG is defined.
Jason Rumney <jasonr@gnu.org>
parents:
35287
diff
changeset
|
1046 if (s->first_glyph->type == CHAR_GLYPH) |
89708
b66b529d5f33
(x_set_mouse_face_gc): Call FACE_FOR_CHAR with POS and OBJECT args.
Kenichi Handa <handa@m17n.org>
parents:
89595
diff
changeset
|
1047 face_id = FACE_FOR_CHAR (s->f, face, s->first_glyph->u.ch, -1, Qnil); |
35384
e50a7f9ce65e
(x_produce_stretch_glyph): Only use Qspace when GLYPH_DEBUG is defined.
Jason Rumney <jasonr@gnu.org>
parents:
35287
diff
changeset
|
1048 else |
89708
b66b529d5f33
(x_set_mouse_face_gc): Call FACE_FOR_CHAR with POS and OBJECT args.
Kenichi Handa <handa@m17n.org>
parents:
89595
diff
changeset
|
1049 face_id = FACE_FOR_CHAR (s->f, face, 0, -1, Qnil); |
27402
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1050 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
|
1051 PREPARE_FACE_FOR_DISPLAY (s->f, s->face); |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1052 |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1053 /* 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
|
1054 if (s->font == s->face->font) |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1055 s->gc = s->face->gc; |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1056 else |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1057 { |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1058 /* 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
|
1059 but font FONT. */ |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1060 XGCValues xgcv; |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1061 unsigned long mask; |
48218
01e253345507
(w32_draw_fringe_bitmap): Remove unused local variable window.
Juanma Barranquero <lekktu@gmail.com>
parents:
48025
diff
changeset
|
1062 |
27402
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1063 xgcv.background = s->face->background; |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1064 xgcv.foreground = s->face->foreground; |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1065 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
|
1066 xgcv.font = s->font; |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1067 mask = GCForeground | GCBackground | GCFont; |
48218
01e253345507
(w32_draw_fringe_bitmap): Remove unused local variable window.
Juanma Barranquero <lekktu@gmail.com>
parents:
48025
diff
changeset
|
1068 |
27402
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1069 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
|
1070 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
|
1071 mask, &xgcv); |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1072 else |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1073 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
|
1074 = 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
|
1075 |
27402
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1076 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
|
1077 } |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1078 |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1079 xassert (s->gc != 0); |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1080 } |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1081 |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1082 |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1083 /* 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
|
1084 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
|
1085 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
|
1086 |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1087 static INLINE void |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1088 x_set_mode_line_face_gc (s) |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1089 struct glyph_string *s; |
48218
01e253345507
(w32_draw_fringe_bitmap): Remove unused local variable window.
Juanma Barranquero <lekktu@gmail.com>
parents:
48025
diff
changeset
|
1090 { |
27402
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1091 s->gc = s->face->gc; |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1092 } |
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 |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1095 /* 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
|
1096 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
|
1097 pattern. */ |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1098 |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1099 static INLINE void |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1100 x_set_glyph_string_gc (s) |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1101 struct glyph_string *s; |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1102 { |
30240
2c2a7ebd2c15
(help_echo_object, help_echo_pos): New variables.
Jason Rumney <jasonr@gnu.org>
parents:
30199
diff
changeset
|
1103 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
|
1104 |
27402
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1105 if (s->hl == DRAW_NORMAL_TEXT) |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1106 { |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1107 s->gc = s->face->gc; |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1108 s->stippled_p = s->face->stipple != 0; |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1109 } |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1110 else if (s->hl == DRAW_INVERSE_VIDEO) |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1111 { |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1112 x_set_mode_line_face_gc (s); |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1113 s->stippled_p = s->face->stipple != 0; |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1114 } |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1115 else if (s->hl == DRAW_CURSOR) |
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 x_set_cursor_gc (s); |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1118 s->stippled_p = 0; |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1119 } |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1120 else if (s->hl == DRAW_MOUSE_FACE) |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1121 { |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1122 x_set_mouse_face_gc (s); |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1123 s->stippled_p = s->face->stipple != 0; |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1124 } |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1125 else if (s->hl == DRAW_IMAGE_RAISED |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1126 || s->hl == DRAW_IMAGE_SUNKEN) |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1127 { |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1128 s->gc = s->face->gc; |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1129 s->stippled_p = s->face->stipple != 0; |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1130 } |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1131 else |
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 s->gc = s->face->gc; |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1134 s->stippled_p = s->face->stipple != 0; |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1135 } |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1136 |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1137 /* GC must have been set. */ |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1138 xassert (s->gc != 0); |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1139 } |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1140 |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1141 |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1142 /* 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
|
1143 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
|
1144 |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1145 static INLINE void |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1146 x_set_glyph_string_clipping (s) |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1147 struct glyph_string *s; |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1148 { |
91028
d41ffb650865
(x_set_glyph_string_clipping): Use
Jason Rumney <jasonr@gnu.org>
parents:
91005
diff
changeset
|
1149 RECT *r = s->clip; |
d41ffb650865
(x_set_glyph_string_clipping): Use
Jason Rumney <jasonr@gnu.org>
parents:
91005
diff
changeset
|
1150 int n = get_glyph_string_clip_rects (s, r, 2); |
d41ffb650865
(x_set_glyph_string_clipping): Use
Jason Rumney <jasonr@gnu.org>
parents:
91005
diff
changeset
|
1151 |
d41ffb650865
(x_set_glyph_string_clipping): Use
Jason Rumney <jasonr@gnu.org>
parents:
91005
diff
changeset
|
1152 if (n == 1) |
d41ffb650865
(x_set_glyph_string_clipping): Use
Jason Rumney <jasonr@gnu.org>
parents:
91005
diff
changeset
|
1153 w32_set_clip_rectangle (s->hdc, r); |
d41ffb650865
(x_set_glyph_string_clipping): Use
Jason Rumney <jasonr@gnu.org>
parents:
91005
diff
changeset
|
1154 else if (n > 1) |
d41ffb650865
(x_set_glyph_string_clipping): Use
Jason Rumney <jasonr@gnu.org>
parents:
91005
diff
changeset
|
1155 { |
d41ffb650865
(x_set_glyph_string_clipping): Use
Jason Rumney <jasonr@gnu.org>
parents:
91005
diff
changeset
|
1156 HRGN full_clip, clip1, clip2; |
d41ffb650865
(x_set_glyph_string_clipping): Use
Jason Rumney <jasonr@gnu.org>
parents:
91005
diff
changeset
|
1157 clip1 = CreateRectRgnIndirect (r); |
d41ffb650865
(x_set_glyph_string_clipping): Use
Jason Rumney <jasonr@gnu.org>
parents:
91005
diff
changeset
|
1158 clip2 = CreateRectRgnIndirect (r + 1); |
d41ffb650865
(x_set_glyph_string_clipping): Use
Jason Rumney <jasonr@gnu.org>
parents:
91005
diff
changeset
|
1159 if (CombineRgn (full_clip, clip1, clip2, RGN_OR) != ERROR) |
d41ffb650865
(x_set_glyph_string_clipping): Use
Jason Rumney <jasonr@gnu.org>
parents:
91005
diff
changeset
|
1160 { |
d41ffb650865
(x_set_glyph_string_clipping): Use
Jason Rumney <jasonr@gnu.org>
parents:
91005
diff
changeset
|
1161 SelectClipRgn (s->hdc, full_clip); |
d41ffb650865
(x_set_glyph_string_clipping): Use
Jason Rumney <jasonr@gnu.org>
parents:
91005
diff
changeset
|
1162 } |
d41ffb650865
(x_set_glyph_string_clipping): Use
Jason Rumney <jasonr@gnu.org>
parents:
91005
diff
changeset
|
1163 DeleteObject (clip1); |
d41ffb650865
(x_set_glyph_string_clipping): Use
Jason Rumney <jasonr@gnu.org>
parents:
91005
diff
changeset
|
1164 DeleteObject (clip2); |
d41ffb650865
(x_set_glyph_string_clipping): Use
Jason Rumney <jasonr@gnu.org>
parents:
91005
diff
changeset
|
1165 DeleteObject (full_clip); |
d41ffb650865
(x_set_glyph_string_clipping): Use
Jason Rumney <jasonr@gnu.org>
parents:
91005
diff
changeset
|
1166 } |
d41ffb650865
(x_set_glyph_string_clipping): Use
Jason Rumney <jasonr@gnu.org>
parents:
91005
diff
changeset
|
1167 s->num_clips = n; |
27402
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1168 } |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1169 |
90834 | 1170 /* Set SRC's clipping for output of glyph string DST. This is called |
1171 when we are drawing DST's left_overhang or right_overhang only in | |
1172 the area of SRC. */ | |
1173 | |
1174 static void | |
1175 x_set_glyph_string_clipping_exactly (src, dst) | |
1176 struct glyph_string *src, *dst; | |
1177 { | |
27402
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1178 RECT r; |
90834 | 1179 |
94912
5b153bea483d
: Throughout the file, delete all USE_FONT_BACKEND
Kenichi Handa <handa@m17n.org>
parents:
93913
diff
changeset
|
1180 r.left = src->x; |
5b153bea483d
: Throughout the file, delete all USE_FONT_BACKEND
Kenichi Handa <handa@m17n.org>
parents:
93913
diff
changeset
|
1181 r.right = r.left + src->width; |
5b153bea483d
: Throughout the file, delete all USE_FONT_BACKEND
Kenichi Handa <handa@m17n.org>
parents:
93913
diff
changeset
|
1182 r.top = src->y; |
5b153bea483d
: Throughout the file, delete all USE_FONT_BACKEND
Kenichi Handa <handa@m17n.org>
parents:
93913
diff
changeset
|
1183 r.bottom = r.top + src->height; |
5b153bea483d
: Throughout the file, delete all USE_FONT_BACKEND
Kenichi Handa <handa@m17n.org>
parents:
93913
diff
changeset
|
1184 dst->clip[0] = r; |
5b153bea483d
: Throughout the file, delete all USE_FONT_BACKEND
Kenichi Handa <handa@m17n.org>
parents:
93913
diff
changeset
|
1185 dst->num_clips = 1; |
90834 | 1186 w32_set_clip_rectangle (dst->hdc, &r); |
27402
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1187 } |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1188 |
50154
10038ae9db85
Remove consolidated defines and code.
Kim F. Storm <storm@cua.dk>
parents:
50096
diff
changeset
|
1189 /* RIF: |
94912
5b153bea483d
: Throughout the file, delete all USE_FONT_BACKEND
Kenichi Handa <handa@m17n.org>
parents:
93913
diff
changeset
|
1190 Compute left and right overhang of glyph string S. */ |
27402
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1191 |
50154
10038ae9db85
Remove consolidated defines and code.
Kim F. Storm <storm@cua.dk>
parents:
50096
diff
changeset
|
1192 static void |
10038ae9db85
Remove consolidated defines and code.
Kim F. Storm <storm@cua.dk>
parents:
50096
diff
changeset
|
1193 w32_compute_glyph_string_overhangs (s) |
27402
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1194 struct glyph_string *s; |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1195 { |
93913
7e2e9d86af3b
(w32_compute_glyph_string_overhangs): Compute overhangs
Jason Rumney <jasonr@gnu.org>
parents:
92433
diff
changeset
|
1196 if (s->cmp == NULL |
94912
5b153bea483d
: Throughout the file, delete all USE_FONT_BACKEND
Kenichi Handa <handa@m17n.org>
parents:
93913
diff
changeset
|
1197 && s->first_glyph->type == CHAR_GLYPH |
5b153bea483d
: Throughout the file, delete all USE_FONT_BACKEND
Kenichi Handa <handa@m17n.org>
parents:
93913
diff
changeset
|
1198 && !s->font_not_found_p) |
93913
7e2e9d86af3b
(w32_compute_glyph_string_overhangs): Compute overhangs
Jason Rumney <jasonr@gnu.org>
parents:
92433
diff
changeset
|
1199 { |
94912
5b153bea483d
: Throughout the file, delete all USE_FONT_BACKEND
Kenichi Handa <handa@m17n.org>
parents:
93913
diff
changeset
|
1200 unsigned *code = alloca (sizeof (unsigned) * s->nchars); |
5b153bea483d
: Throughout the file, delete all USE_FONT_BACKEND
Kenichi Handa <handa@m17n.org>
parents:
93913
diff
changeset
|
1201 struct font *font = s->font; |
5b153bea483d
: Throughout the file, delete all USE_FONT_BACKEND
Kenichi Handa <handa@m17n.org>
parents:
93913
diff
changeset
|
1202 struct font_metrics metrics; |
5b153bea483d
: Throughout the file, delete all USE_FONT_BACKEND
Kenichi Handa <handa@m17n.org>
parents:
93913
diff
changeset
|
1203 int i; |
5b153bea483d
: Throughout the file, delete all USE_FONT_BACKEND
Kenichi Handa <handa@m17n.org>
parents:
93913
diff
changeset
|
1204 |
5b153bea483d
: Throughout the file, delete all USE_FONT_BACKEND
Kenichi Handa <handa@m17n.org>
parents:
93913
diff
changeset
|
1205 for (i = 0; i < s->nchars; i++) |
5b153bea483d
: Throughout the file, delete all USE_FONT_BACKEND
Kenichi Handa <handa@m17n.org>
parents:
93913
diff
changeset
|
1206 code[i] = s->char2b[i]; |
5b153bea483d
: Throughout the file, delete all USE_FONT_BACKEND
Kenichi Handa <handa@m17n.org>
parents:
93913
diff
changeset
|
1207 font->driver->text_extents (font, code, s->nchars, &metrics); |
5b153bea483d
: Throughout the file, delete all USE_FONT_BACKEND
Kenichi Handa <handa@m17n.org>
parents:
93913
diff
changeset
|
1208 s->right_overhang = (metrics.rbearing > metrics.width |
5b153bea483d
: Throughout the file, delete all USE_FONT_BACKEND
Kenichi Handa <handa@m17n.org>
parents:
93913
diff
changeset
|
1209 ? metrics.rbearing - metrics.width : 0); |
5b153bea483d
: Throughout the file, delete all USE_FONT_BACKEND
Kenichi Handa <handa@m17n.org>
parents:
93913
diff
changeset
|
1210 s->left_overhang = metrics.lbearing < 0 ? -metrics.lbearing : 0; |
93913
7e2e9d86af3b
(w32_compute_glyph_string_overhangs): Compute overhangs
Jason Rumney <jasonr@gnu.org>
parents:
92433
diff
changeset
|
1211 } |
7e2e9d86af3b
(w32_compute_glyph_string_overhangs): Compute overhangs
Jason Rumney <jasonr@gnu.org>
parents:
92433
diff
changeset
|
1212 else if (s->cmp) |
7e2e9d86af3b
(w32_compute_glyph_string_overhangs): Compute overhangs
Jason Rumney <jasonr@gnu.org>
parents:
92433
diff
changeset
|
1213 { |
7e2e9d86af3b
(w32_compute_glyph_string_overhangs): Compute overhangs
Jason Rumney <jasonr@gnu.org>
parents:
92433
diff
changeset
|
1214 s->right_overhang = s->cmp->rbearing - s->cmp->pixel_width; |
7e2e9d86af3b
(w32_compute_glyph_string_overhangs): Compute overhangs
Jason Rumney <jasonr@gnu.org>
parents:
92433
diff
changeset
|
1215 s->left_overhang = -s->cmp->lbearing; |
7e2e9d86af3b
(w32_compute_glyph_string_overhangs): Compute overhangs
Jason Rumney <jasonr@gnu.org>
parents:
92433
diff
changeset
|
1216 } |
27402
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1217 } |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1218 |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1219 /* 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
|
1220 |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1221 static INLINE void |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1222 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
|
1223 struct glyph_string *s; |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1224 int x, y, w, h; |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1225 { |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1226 int real_x = x; |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1227 int real_y = y; |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1228 int real_w = w; |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1229 int real_h = h; |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1230 #if 0 |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1231 /* Take clipping into account. */ |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1232 if (s->gc->clip_mask == Rect) |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1233 { |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1234 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
|
1235 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
|
1236 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
|
1237 - s->gc->clip_rectangle.left); |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1238 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
|
1239 - s->gc->clip_rectangle.top); |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1240 } |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1241 #endif |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1242 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
|
1243 real_w, real_h); |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1244 } |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1245 |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1246 |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1247 /* 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
|
1248 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
|
1249 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
|
1250 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
|
1251 contains the first component of a composition. */ |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1252 |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1253 static void |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1254 x_draw_glyph_string_background (s, force_p) |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1255 struct glyph_string *s; |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1256 int force_p; |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1257 { |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1258 /* 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
|
1259 shouldn't be drawn in the first place. */ |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1260 if (!s->background_filled_p) |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1261 { |
36045
8be6a1c85409
(x_produce_image_glyph): Pay attention to the case that
Andrew Innes <andrewi@gnu.org>
parents:
36002
diff
changeset
|
1262 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
|
1263 |
33097
84590a646acc
(x_produce_glyphs): Handle composite characters.
Jason Rumney <jasonr@gnu.org>
parents:
33037
diff
changeset
|
1264 #if 0 /* TODO: stipple */ |
27402
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1265 if (s->stippled_p) |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1266 { |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1267 /* Fill background with a stipple pattern. */ |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1268 XSetFillStyle (s->display, s->gc, FillOpaqueStippled); |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1269 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
|
1270 s->y + box_line_width, |
27402
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1271 s->background_width, |
36045
8be6a1c85409
(x_produce_image_glyph): Pay attention to the case that
Andrew Innes <andrewi@gnu.org>
parents:
36002
diff
changeset
|
1272 s->height - 2 * box_line_width); |
27402
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1273 XSetFillStyle (s->display, s->gc, FillSolid); |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1274 s->background_filled_p = 1; |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1275 } |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1276 else |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1277 #endif |
36045
8be6a1c85409
(x_produce_image_glyph): Pay attention to the case that
Andrew Innes <andrewi@gnu.org>
parents:
36002
diff
changeset
|
1278 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
|
1279 || s->font_not_found_p |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1280 || s->extends_to_end_of_line_p |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1281 || force_p) |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1282 { |
36045
8be6a1c85409
(x_produce_image_glyph): Pay attention to the case that
Andrew Innes <andrewi@gnu.org>
parents:
36002
diff
changeset
|
1283 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
|
1284 s->background_width, |
36045
8be6a1c85409
(x_produce_image_glyph): Pay attention to the case that
Andrew Innes <andrewi@gnu.org>
parents:
36002
diff
changeset
|
1285 s->height - 2 * box_line_width); |
27402
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1286 s->background_filled_p = 1; |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1287 } |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1288 } |
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 |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1292 /* Draw the foreground of glyph string S. */ |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1293 |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1294 static void |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1295 x_draw_glyph_string_foreground (s) |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1296 struct glyph_string *s; |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1297 { |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1298 int i, x; |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1299 |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1300 /* 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
|
1301 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
|
1302 if (s->face->box != FACE_NO_BOX |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1303 && s->first_glyph->left_box_line_p) |
85258 | 1304 x = s->x + eabs (s->face->box_line_width); |
27402
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1305 else |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1306 x = s->x; |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1307 |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1308 SetTextColor (s->hdc, s->gc->foreground); |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1309 SetBkColor (s->hdc, s->gc->background); |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1310 SetTextAlign (s->hdc, TA_BASELINE | TA_LEFT); |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1311 |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1312 /* 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
|
1313 loaded. */ |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1314 if (s->font_not_found_p) |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1315 { |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1316 for (i = 0; i < s->nchars; ++i) |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1317 { |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1318 struct glyph *g = s->first_glyph + i; |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1319 |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1320 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
|
1321 s->height - 1); |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1322 x += g->pixel_width; |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1323 } |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1324 } |
94912
5b153bea483d
: Throughout the file, delete all USE_FONT_BACKEND
Kenichi Handa <handa@m17n.org>
parents:
93913
diff
changeset
|
1325 else |
90834 | 1326 { |
96343
5c8f2b7d28ae
* w32font.h (FONT_HANDLE, FONT_TEXTMETRIC): New macros.
Jason Rumney <jasonr@gnu.org>
parents:
96327
diff
changeset
|
1327 struct font *font = s->font; |
5c8f2b7d28ae
* w32font.h (FONT_HANDLE, FONT_TEXTMETRIC): New macros.
Jason Rumney <jasonr@gnu.org>
parents:
96327
diff
changeset
|
1328 int boff = font->baseline_offset; |
90834 | 1329 int y; |
96343
5c8f2b7d28ae
* w32font.h (FONT_HANDLE, FONT_TEXTMETRIC): New macros.
Jason Rumney <jasonr@gnu.org>
parents:
96327
diff
changeset
|
1330 HFONT old_font; |
5c8f2b7d28ae
* w32font.h (FONT_HANDLE, FONT_TEXTMETRIC): New macros.
Jason Rumney <jasonr@gnu.org>
parents:
96327
diff
changeset
|
1331 |
5c8f2b7d28ae
* w32font.h (FONT_HANDLE, FONT_TEXTMETRIC): New macros.
Jason Rumney <jasonr@gnu.org>
parents:
96327
diff
changeset
|
1332 old_font = SelectObject (s->hdc, FONT_HANDLE (font)); |
5c8f2b7d28ae
* w32font.h (FONT_HANDLE, FONT_TEXTMETRIC): New macros.
Jason Rumney <jasonr@gnu.org>
parents:
96327
diff
changeset
|
1333 |
5c8f2b7d28ae
* w32font.h (FONT_HANDLE, FONT_TEXTMETRIC): New macros.
Jason Rumney <jasonr@gnu.org>
parents:
96327
diff
changeset
|
1334 if (font->vertical_centering) |
5c8f2b7d28ae
* w32font.h (FONT_HANDLE, FONT_TEXTMETRIC): New macros.
Jason Rumney <jasonr@gnu.org>
parents:
96327
diff
changeset
|
1335 boff = VCENTER_BASELINE_OFFSET (font, s->f) - boff; |
90834 | 1336 |
1337 y = s->ybase - boff; | |
1338 if (s->for_overlaps | |
1339 || (s->background_filled_p && s->hl != DRAW_CURSOR)) | |
96343
5c8f2b7d28ae
* w32font.h (FONT_HANDLE, FONT_TEXTMETRIC): New macros.
Jason Rumney <jasonr@gnu.org>
parents:
96327
diff
changeset
|
1340 font->driver->draw (s, 0, s->nchars, x, y, 0); |
90834 | 1341 else |
96343
5c8f2b7d28ae
* w32font.h (FONT_HANDLE, FONT_TEXTMETRIC): New macros.
Jason Rumney <jasonr@gnu.org>
parents:
96327
diff
changeset
|
1342 font->driver->draw (s, 0, s->nchars, x, y, 1); |
90834 | 1343 if (s->face->overstrike) |
96343
5c8f2b7d28ae
* w32font.h (FONT_HANDLE, FONT_TEXTMETRIC): New macros.
Jason Rumney <jasonr@gnu.org>
parents:
96327
diff
changeset
|
1344 font->driver->draw (s, 0, s->nchars, x + 1, y, 0); |
5c8f2b7d28ae
* w32font.h (FONT_HANDLE, FONT_TEXTMETRIC): New macros.
Jason Rumney <jasonr@gnu.org>
parents:
96327
diff
changeset
|
1345 |
5c8f2b7d28ae
* w32font.h (FONT_HANDLE, FONT_TEXTMETRIC): New macros.
Jason Rumney <jasonr@gnu.org>
parents:
96327
diff
changeset
|
1346 SelectObject (s->hdc, old_font); |
90834 | 1347 } |
27402
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1348 } |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1349 |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1350 /* Draw the foreground of composite glyph string S. */ |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1351 |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1352 static void |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1353 x_draw_composite_glyph_string_foreground (s) |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1354 struct glyph_string *s; |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1355 { |
90834 | 1356 int i, j, x; |
97831
cdeb60ce9393
(x_draw_composite_glyph_string_foreground): Adjusted
Kenichi Handa <handa@m17n.org>
parents:
97141
diff
changeset
|
1357 struct font *font = s->font; |
27402
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 /* 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
|
1360 of S to the right of that box line. */ |
90834 | 1361 if (s->face && s->face->box != FACE_NO_BOX |
27402
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1362 && s->first_glyph->left_box_line_p) |
85258 | 1363 x = s->x + eabs (s->face->box_line_width); |
27402
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1364 else |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1365 x = s->x; |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1366 |
97831
cdeb60ce9393
(x_draw_composite_glyph_string_foreground): Adjusted
Kenichi Handa <handa@m17n.org>
parents:
97141
diff
changeset
|
1367 /* S is a glyph string for a composition. S->cmp_from is the index |
cdeb60ce9393
(x_draw_composite_glyph_string_foreground): Adjusted
Kenichi Handa <handa@m17n.org>
parents:
97141
diff
changeset
|
1368 of the first character drawn for glyphs of this composition. |
cdeb60ce9393
(x_draw_composite_glyph_string_foreground): Adjusted
Kenichi Handa <handa@m17n.org>
parents:
97141
diff
changeset
|
1369 S->cmp_from == 0 means we are drawing the very first character of |
27402
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1370 this composition. */ |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1371 |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1372 SetTextColor (s->hdc, s->gc->foreground); |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1373 SetBkColor (s->hdc, s->gc->background); |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1374 SetTextAlign (s->hdc, TA_BASELINE | TA_LEFT); |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1375 |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1376 /* 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
|
1377 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
|
1378 if (s->font_not_found_p) |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1379 { |
97831
cdeb60ce9393
(x_draw_composite_glyph_string_foreground): Adjusted
Kenichi Handa <handa@m17n.org>
parents:
97141
diff
changeset
|
1380 if (s->cmp_from == 0) |
27402
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1381 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
|
1382 s->height - 1); |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1383 } |
97831
cdeb60ce9393
(x_draw_composite_glyph_string_foreground): Adjusted
Kenichi Handa <handa@m17n.org>
parents:
97141
diff
changeset
|
1384 else if (! s->first_glyph->u.cmp.automatic) |
90834 | 1385 { |
1386 int y = s->ybase; | |
1387 int width = 0; | |
96343
5c8f2b7d28ae
* w32font.h (FONT_HANDLE, FONT_TEXTMETRIC): New macros.
Jason Rumney <jasonr@gnu.org>
parents:
96327
diff
changeset
|
1388 HFONT old_font; |
5c8f2b7d28ae
* w32font.h (FONT_HANDLE, FONT_TEXTMETRIC): New macros.
Jason Rumney <jasonr@gnu.org>
parents:
96327
diff
changeset
|
1389 |
5c8f2b7d28ae
* w32font.h (FONT_HANDLE, FONT_TEXTMETRIC): New macros.
Jason Rumney <jasonr@gnu.org>
parents:
96327
diff
changeset
|
1390 old_font = SelectObject (s->hdc, FONT_HANDLE (font)); |
90834 | 1391 |
97831
cdeb60ce9393
(x_draw_composite_glyph_string_foreground): Adjusted
Kenichi Handa <handa@m17n.org>
parents:
97141
diff
changeset
|
1392 for (i = 0, j = s->cmp_from; i < s->nchars; i++, j++) |
cdeb60ce9393
(x_draw_composite_glyph_string_foreground): Adjusted
Kenichi Handa <handa@m17n.org>
parents:
97141
diff
changeset
|
1393 if (COMPOSITION_GLYPH (s->cmp, j) != '\t') |
cdeb60ce9393
(x_draw_composite_glyph_string_foreground): Adjusted
Kenichi Handa <handa@m17n.org>
parents:
97141
diff
changeset
|
1394 { |
cdeb60ce9393
(x_draw_composite_glyph_string_foreground): Adjusted
Kenichi Handa <handa@m17n.org>
parents:
97141
diff
changeset
|
1395 int xx = x + s->cmp->offsets[j * 2]; |
cdeb60ce9393
(x_draw_composite_glyph_string_foreground): Adjusted
Kenichi Handa <handa@m17n.org>
parents:
97141
diff
changeset
|
1396 int yy = y - s->cmp->offsets[j * 2 + 1]; |
cdeb60ce9393
(x_draw_composite_glyph_string_foreground): Adjusted
Kenichi Handa <handa@m17n.org>
parents:
97141
diff
changeset
|
1397 |
cdeb60ce9393
(x_draw_composite_glyph_string_foreground): Adjusted
Kenichi Handa <handa@m17n.org>
parents:
97141
diff
changeset
|
1398 font->driver->draw (s, j, j + 1, xx, yy, 0); |
cdeb60ce9393
(x_draw_composite_glyph_string_foreground): Adjusted
Kenichi Handa <handa@m17n.org>
parents:
97141
diff
changeset
|
1399 if (s->face->overstrike) |
cdeb60ce9393
(x_draw_composite_glyph_string_foreground): Adjusted
Kenichi Handa <handa@m17n.org>
parents:
97141
diff
changeset
|
1400 font->driver->draw (s, j, j + 1, xx + 1, yy, 0); |
cdeb60ce9393
(x_draw_composite_glyph_string_foreground): Adjusted
Kenichi Handa <handa@m17n.org>
parents:
97141
diff
changeset
|
1401 } |
cdeb60ce9393
(x_draw_composite_glyph_string_foreground): Adjusted
Kenichi Handa <handa@m17n.org>
parents:
97141
diff
changeset
|
1402 SelectObject (s->hdc, old_font); |
cdeb60ce9393
(x_draw_composite_glyph_string_foreground): Adjusted
Kenichi Handa <handa@m17n.org>
parents:
97141
diff
changeset
|
1403 } |
cdeb60ce9393
(x_draw_composite_glyph_string_foreground): Adjusted
Kenichi Handa <handa@m17n.org>
parents:
97141
diff
changeset
|
1404 else |
cdeb60ce9393
(x_draw_composite_glyph_string_foreground): Adjusted
Kenichi Handa <handa@m17n.org>
parents:
97141
diff
changeset
|
1405 { |
cdeb60ce9393
(x_draw_composite_glyph_string_foreground): Adjusted
Kenichi Handa <handa@m17n.org>
parents:
97141
diff
changeset
|
1406 Lisp_Object gstring = composition_gstring_from_id (s->cmp_id); |
cdeb60ce9393
(x_draw_composite_glyph_string_foreground): Adjusted
Kenichi Handa <handa@m17n.org>
parents:
97141
diff
changeset
|
1407 Lisp_Object glyph; |
cdeb60ce9393
(x_draw_composite_glyph_string_foreground): Adjusted
Kenichi Handa <handa@m17n.org>
parents:
97141
diff
changeset
|
1408 int y = s->ybase; |
cdeb60ce9393
(x_draw_composite_glyph_string_foreground): Adjusted
Kenichi Handa <handa@m17n.org>
parents:
97141
diff
changeset
|
1409 int width = 0; |
cdeb60ce9393
(x_draw_composite_glyph_string_foreground): Adjusted
Kenichi Handa <handa@m17n.org>
parents:
97141
diff
changeset
|
1410 HFONT old_font; |
cdeb60ce9393
(x_draw_composite_glyph_string_foreground): Adjusted
Kenichi Handa <handa@m17n.org>
parents:
97141
diff
changeset
|
1411 |
cdeb60ce9393
(x_draw_composite_glyph_string_foreground): Adjusted
Kenichi Handa <handa@m17n.org>
parents:
97141
diff
changeset
|
1412 old_font = SelectObject (s->hdc, FONT_HANDLE (font)); |
cdeb60ce9393
(x_draw_composite_glyph_string_foreground): Adjusted
Kenichi Handa <handa@m17n.org>
parents:
97141
diff
changeset
|
1413 |
cdeb60ce9393
(x_draw_composite_glyph_string_foreground): Adjusted
Kenichi Handa <handa@m17n.org>
parents:
97141
diff
changeset
|
1414 for (i = j = s->cmp_from; i < s->cmp_to; i++) |
90834 | 1415 { |
97831
cdeb60ce9393
(x_draw_composite_glyph_string_foreground): Adjusted
Kenichi Handa <handa@m17n.org>
parents:
97141
diff
changeset
|
1416 glyph = LGSTRING_GLYPH (gstring, i); |
cdeb60ce9393
(x_draw_composite_glyph_string_foreground): Adjusted
Kenichi Handa <handa@m17n.org>
parents:
97141
diff
changeset
|
1417 if (NILP (LGLYPH_ADJUSTMENT (glyph))) |
cdeb60ce9393
(x_draw_composite_glyph_string_foreground): Adjusted
Kenichi Handa <handa@m17n.org>
parents:
97141
diff
changeset
|
1418 width += LGLYPH_WIDTH (glyph); |
cdeb60ce9393
(x_draw_composite_glyph_string_foreground): Adjusted
Kenichi Handa <handa@m17n.org>
parents:
97141
diff
changeset
|
1419 else |
90834 | 1420 { |
1421 int xoff, yoff, wadjust; | |
1422 | |
97831
cdeb60ce9393
(x_draw_composite_glyph_string_foreground): Adjusted
Kenichi Handa <handa@m17n.org>
parents:
97141
diff
changeset
|
1423 if (j < i) |
90834 | 1424 { |
97831
cdeb60ce9393
(x_draw_composite_glyph_string_foreground): Adjusted
Kenichi Handa <handa@m17n.org>
parents:
97141
diff
changeset
|
1425 font->driver->draw (s, j, i, x, y, 0); |
90834 | 1426 x += width; |
1427 } | |
97831
cdeb60ce9393
(x_draw_composite_glyph_string_foreground): Adjusted
Kenichi Handa <handa@m17n.org>
parents:
97141
diff
changeset
|
1428 xoff = LGLYPH_XOFF (glyph); |
cdeb60ce9393
(x_draw_composite_glyph_string_foreground): Adjusted
Kenichi Handa <handa@m17n.org>
parents:
97141
diff
changeset
|
1429 yoff = LGLYPH_YOFF (glyph); |
cdeb60ce9393
(x_draw_composite_glyph_string_foreground): Adjusted
Kenichi Handa <handa@m17n.org>
parents:
97141
diff
changeset
|
1430 wadjust = LGLYPH_WADJUST (glyph); |
90834 | 1431 font->driver->draw (s, i, i + 1, x + xoff, y + yoff, 0); |
91139
3b9ed57b1424
(x_draw_composite_glyph_string_foreground): Adjusted
Kenichi Handa <handa@m17n.org>
parents:
91098
diff
changeset
|
1432 x += wadjust; |
97831
cdeb60ce9393
(x_draw_composite_glyph_string_foreground): Adjusted
Kenichi Handa <handa@m17n.org>
parents:
97141
diff
changeset
|
1433 j = i + 1; |
90834 | 1434 width = 0; |
1435 } | |
1436 } | |
97831
cdeb60ce9393
(x_draw_composite_glyph_string_foreground): Adjusted
Kenichi Handa <handa@m17n.org>
parents:
97141
diff
changeset
|
1437 if (j < i) |
cdeb60ce9393
(x_draw_composite_glyph_string_foreground): Adjusted
Kenichi Handa <handa@m17n.org>
parents:
97141
diff
changeset
|
1438 font->driver->draw (s, j, i, x, y, 0); |
cdeb60ce9393
(x_draw_composite_glyph_string_foreground): Adjusted
Kenichi Handa <handa@m17n.org>
parents:
97141
diff
changeset
|
1439 |
96343
5c8f2b7d28ae
* w32font.h (FONT_HANDLE, FONT_TEXTMETRIC): New macros.
Jason Rumney <jasonr@gnu.org>
parents:
96327
diff
changeset
|
1440 SelectObject (s->hdc, old_font); |
90834 | 1441 } |
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 |
33524
cf8e03cd4985
(HIGHLIGHT_COLOR_DARK_BOOST_LIMIT): New constant.
Jason Rumney <jasonr@gnu.org>
parents:
33386
diff
changeset
|
1444 |
cf8e03cd4985
(HIGHLIGHT_COLOR_DARK_BOOST_LIMIT): New constant.
Jason Rumney <jasonr@gnu.org>
parents:
33386
diff
changeset
|
1445 /* 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
|
1446 boosted. |
cf8e03cd4985
(HIGHLIGHT_COLOR_DARK_BOOST_LIMIT): New constant.
Jason Rumney <jasonr@gnu.org>
parents:
33386
diff
changeset
|
1447 |
cf8e03cd4985
(HIGHLIGHT_COLOR_DARK_BOOST_LIMIT): New constant.
Jason Rumney <jasonr@gnu.org>
parents:
33386
diff
changeset
|
1448 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
|
1449 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
|
1450 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
|
1451 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
|
1452 use an additional additive factor. |
cf8e03cd4985
(HIGHLIGHT_COLOR_DARK_BOOST_LIMIT): New constant.
Jason Rumney <jasonr@gnu.org>
parents:
33386
diff
changeset
|
1453 |
cf8e03cd4985
(HIGHLIGHT_COLOR_DARK_BOOST_LIMIT): New constant.
Jason Rumney <jasonr@gnu.org>
parents:
33386
diff
changeset
|
1454 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
|
1455 (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
|
1456 #define HIGHLIGHT_COLOR_DARK_BOOST_LIMIT 187 |
cf8e03cd4985
(HIGHLIGHT_COLOR_DARK_BOOST_LIMIT): New constant.
Jason Rumney <jasonr@gnu.org>
parents:
33386
diff
changeset
|
1457 |
cf8e03cd4985
(HIGHLIGHT_COLOR_DARK_BOOST_LIMIT): New constant.
Jason Rumney <jasonr@gnu.org>
parents:
33386
diff
changeset
|
1458 |
27402
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1459 /* 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
|
1460 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
|
1461 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
|
1462 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
|
1463 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
|
1464 Value is non-zero if successful. */ |
13434 | 1465 |
23507
8a448630a9b5
Include fontset.h. Define codepage macros.
Geoff Voelker <voelker@cs.washington.edu>
parents:
22059
diff
changeset
|
1466 static int |
27402
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1467 w32_alloc_lighter_color (f, color, factor, delta) |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1468 struct frame *f; |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1469 COLORREF *color; |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1470 double factor; |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1471 int delta; |
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 COLORREF new; |
33524
cf8e03cd4985
(HIGHLIGHT_COLOR_DARK_BOOST_LIMIT): New constant.
Jason Rumney <jasonr@gnu.org>
parents:
33386
diff
changeset
|
1474 long bright; |
cf8e03cd4985
(HIGHLIGHT_COLOR_DARK_BOOST_LIMIT): New constant.
Jason Rumney <jasonr@gnu.org>
parents:
33386
diff
changeset
|
1475 |
cf8e03cd4985
(HIGHLIGHT_COLOR_DARK_BOOST_LIMIT): New constant.
Jason Rumney <jasonr@gnu.org>
parents:
33386
diff
changeset
|
1476 /* 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
|
1477 delta /= 256; |
27402
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1478 |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1479 /* Change RGB values by specified FACTOR. Avoid overflow! */ |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1480 xassert (factor >= 0); |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1481 new = PALETTERGB (min (0xff, factor * GetRValue (*color)), |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1482 min (0xff, factor * GetGValue (*color)), |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1483 min (0xff, factor * GetBValue (*color))); |
33524
cf8e03cd4985
(HIGHLIGHT_COLOR_DARK_BOOST_LIMIT): New constant.
Jason Rumney <jasonr@gnu.org>
parents:
33386
diff
changeset
|
1484 |
cf8e03cd4985
(HIGHLIGHT_COLOR_DARK_BOOST_LIMIT): New constant.
Jason Rumney <jasonr@gnu.org>
parents:
33386
diff
changeset
|
1485 /* Calculate brightness of COLOR. */ |
cf8e03cd4985
(HIGHLIGHT_COLOR_DARK_BOOST_LIMIT): New constant.
Jason Rumney <jasonr@gnu.org>
parents:
33386
diff
changeset
|
1486 bright = (2 * GetRValue (*color) + 3 * GetGValue (*color) |
cf8e03cd4985
(HIGHLIGHT_COLOR_DARK_BOOST_LIMIT): New constant.
Jason Rumney <jasonr@gnu.org>
parents:
33386
diff
changeset
|
1487 + GetBValue (*color)) / 6; |
cf8e03cd4985
(HIGHLIGHT_COLOR_DARK_BOOST_LIMIT): New constant.
Jason Rumney <jasonr@gnu.org>
parents:
33386
diff
changeset
|
1488 |
cf8e03cd4985
(HIGHLIGHT_COLOR_DARK_BOOST_LIMIT): New constant.
Jason Rumney <jasonr@gnu.org>
parents:
33386
diff
changeset
|
1489 /* 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
|
1490 HIGHLIGHT_COLOR_DARK_BOOST_LIMIT. */ |
cf8e03cd4985
(HIGHLIGHT_COLOR_DARK_BOOST_LIMIT): New constant.
Jason Rumney <jasonr@gnu.org>
parents:
33386
diff
changeset
|
1491 if (bright < HIGHLIGHT_COLOR_DARK_BOOST_LIMIT) |
cf8e03cd4985
(HIGHLIGHT_COLOR_DARK_BOOST_LIMIT): New constant.
Jason Rumney <jasonr@gnu.org>
parents:
33386
diff
changeset
|
1492 /* 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
|
1493 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
|
1494 { |
cf8e03cd4985
(HIGHLIGHT_COLOR_DARK_BOOST_LIMIT): New constant.
Jason Rumney <jasonr@gnu.org>
parents:
33386
diff
changeset
|
1495 /* 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
|
1496 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
|
1497 /* The additive adjustment. */ |
cf8e03cd4985
(HIGHLIGHT_COLOR_DARK_BOOST_LIMIT): New constant.
Jason Rumney <jasonr@gnu.org>
parents:
33386
diff
changeset
|
1498 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
|
1499 |
33524
cf8e03cd4985
(HIGHLIGHT_COLOR_DARK_BOOST_LIMIT): New constant.
Jason Rumney <jasonr@gnu.org>
parents:
33386
diff
changeset
|
1500 if (factor < 1) |
cf8e03cd4985
(HIGHLIGHT_COLOR_DARK_BOOST_LIMIT): New constant.
Jason Rumney <jasonr@gnu.org>
parents:
33386
diff
changeset
|
1501 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
|
1502 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
|
1503 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
|
1504 else |
cf8e03cd4985
(HIGHLIGHT_COLOR_DARK_BOOST_LIMIT): New constant.
Jason Rumney <jasonr@gnu.org>
parents:
33386
diff
changeset
|
1505 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
|
1506 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
|
1507 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
|
1508 } |
48218
01e253345507
(w32_draw_fringe_bitmap): Remove unused local variable window.
Juanma Barranquero <lekktu@gmail.com>
parents:
48025
diff
changeset
|
1509 |
27402
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1510 if (new == *color) |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1511 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
|
1512 max (0, min (0xff, delta + GetGValue (*color))), |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1513 max (0, min (0xff, delta + GetBValue (*color)))); |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1514 |
33097
84590a646acc
(x_produce_glyphs): Handle composite characters.
Jason Rumney <jasonr@gnu.org>
parents:
33037
diff
changeset
|
1515 /* 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
|
1516 /* TODO: Free colors (if using palette)? */ |
28369
3fb90cd81d3b
(w32_read_socket): Handle WM_MENUSELECT message.
Jason Rumney <jasonr@gnu.org>
parents:
27937
diff
changeset
|
1517 |
27402
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1518 if (new == *color) |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1519 return 0; |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1520 |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1521 *color = new; |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1522 |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1523 return 1; |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1524 } |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1525 |
100845
58017ff34d94
* w32term.c (x_query_colors, x_query_color): New functions.
Jason Rumney <jasonr@gnu.org>
parents:
100805
diff
changeset
|
1526 /* On frame F, translate pixel colors to RGB values for the NCOLORS |
58017ff34d94
* w32term.c (x_query_colors, x_query_color): New functions.
Jason Rumney <jasonr@gnu.org>
parents:
100805
diff
changeset
|
1527 colors in COLORS. On W32, we no longer try to map colors to |
58017ff34d94
* w32term.c (x_query_colors, x_query_color): New functions.
Jason Rumney <jasonr@gnu.org>
parents:
100805
diff
changeset
|
1528 a palette. */ |
58017ff34d94
* w32term.c (x_query_colors, x_query_color): New functions.
Jason Rumney <jasonr@gnu.org>
parents:
100805
diff
changeset
|
1529 void |
58017ff34d94
* w32term.c (x_query_colors, x_query_color): New functions.
Jason Rumney <jasonr@gnu.org>
parents:
100805
diff
changeset
|
1530 x_query_colors (f, colors, ncolors) |
58017ff34d94
* w32term.c (x_query_colors, x_query_color): New functions.
Jason Rumney <jasonr@gnu.org>
parents:
100805
diff
changeset
|
1531 struct frame *f; |
58017ff34d94
* w32term.c (x_query_colors, x_query_color): New functions.
Jason Rumney <jasonr@gnu.org>
parents:
100805
diff
changeset
|
1532 XColor *colors; |
58017ff34d94
* w32term.c (x_query_colors, x_query_color): New functions.
Jason Rumney <jasonr@gnu.org>
parents:
100805
diff
changeset
|
1533 int ncolors; |
58017ff34d94
* w32term.c (x_query_colors, x_query_color): New functions.
Jason Rumney <jasonr@gnu.org>
parents:
100805
diff
changeset
|
1534 { |
58017ff34d94
* w32term.c (x_query_colors, x_query_color): New functions.
Jason Rumney <jasonr@gnu.org>
parents:
100805
diff
changeset
|
1535 int i; |
58017ff34d94
* w32term.c (x_query_colors, x_query_color): New functions.
Jason Rumney <jasonr@gnu.org>
parents:
100805
diff
changeset
|
1536 |
58017ff34d94
* w32term.c (x_query_colors, x_query_color): New functions.
Jason Rumney <jasonr@gnu.org>
parents:
100805
diff
changeset
|
1537 for (i = 0; i < ncolors; i++) |
58017ff34d94
* w32term.c (x_query_colors, x_query_color): New functions.
Jason Rumney <jasonr@gnu.org>
parents:
100805
diff
changeset
|
1538 { |
58017ff34d94
* w32term.c (x_query_colors, x_query_color): New functions.
Jason Rumney <jasonr@gnu.org>
parents:
100805
diff
changeset
|
1539 DWORD pixel = colors[i].pixel; |
58017ff34d94
* w32term.c (x_query_colors, x_query_color): New functions.
Jason Rumney <jasonr@gnu.org>
parents:
100805
diff
changeset
|
1540 /* Convert to a 16 bit value in range 0 - 0xffff. */ |
58017ff34d94
* w32term.c (x_query_colors, x_query_color): New functions.
Jason Rumney <jasonr@gnu.org>
parents:
100805
diff
changeset
|
1541 colors[i].red = GetRValue (pixel) * 257; |
58017ff34d94
* w32term.c (x_query_colors, x_query_color): New functions.
Jason Rumney <jasonr@gnu.org>
parents:
100805
diff
changeset
|
1542 colors[i].green = GetGValue (pixel) * 257; |
58017ff34d94
* w32term.c (x_query_colors, x_query_color): New functions.
Jason Rumney <jasonr@gnu.org>
parents:
100805
diff
changeset
|
1543 colors[i].blue = GetBValue (pixel) * 257; |
58017ff34d94
* w32term.c (x_query_colors, x_query_color): New functions.
Jason Rumney <jasonr@gnu.org>
parents:
100805
diff
changeset
|
1544 } |
58017ff34d94
* w32term.c (x_query_colors, x_query_color): New functions.
Jason Rumney <jasonr@gnu.org>
parents:
100805
diff
changeset
|
1545 } |
58017ff34d94
* w32term.c (x_query_colors, x_query_color): New functions.
Jason Rumney <jasonr@gnu.org>
parents:
100805
diff
changeset
|
1546 |
58017ff34d94
* w32term.c (x_query_colors, x_query_color): New functions.
Jason Rumney <jasonr@gnu.org>
parents:
100805
diff
changeset
|
1547 void |
58017ff34d94
* w32term.c (x_query_colors, x_query_color): New functions.
Jason Rumney <jasonr@gnu.org>
parents:
100805
diff
changeset
|
1548 x_query_color (f, color) |
58017ff34d94
* w32term.c (x_query_colors, x_query_color): New functions.
Jason Rumney <jasonr@gnu.org>
parents:
100805
diff
changeset
|
1549 struct frame *f; |
58017ff34d94
* w32term.c (x_query_colors, x_query_color): New functions.
Jason Rumney <jasonr@gnu.org>
parents:
100805
diff
changeset
|
1550 XColor *color; |
58017ff34d94
* w32term.c (x_query_colors, x_query_color): New functions.
Jason Rumney <jasonr@gnu.org>
parents:
100805
diff
changeset
|
1551 { |
58017ff34d94
* w32term.c (x_query_colors, x_query_color): New functions.
Jason Rumney <jasonr@gnu.org>
parents:
100805
diff
changeset
|
1552 x_query_colors (f, color, 1); |
58017ff34d94
* w32term.c (x_query_colors, x_query_color): New functions.
Jason Rumney <jasonr@gnu.org>
parents:
100805
diff
changeset
|
1553 } |
58017ff34d94
* w32term.c (x_query_colors, x_query_color): New functions.
Jason Rumney <jasonr@gnu.org>
parents:
100805
diff
changeset
|
1554 |
27402
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1555 |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1556 /* 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
|
1557 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
|
1558 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
|
1559 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
|
1560 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
|
1561 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
|
1562 |
27402
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1563 static void |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1564 w32_setup_relief_color (f, relief, factor, delta, default_pixel) |
13434 | 1565 struct frame *f; |
27402
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1566 struct relief *relief; |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1567 double factor; |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1568 int delta; |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1569 COLORREF default_pixel; |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1570 { |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1571 XGCValues xgcv; |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1572 struct w32_output *di = f->output_data.w32; |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1573 unsigned long mask = GCForeground; |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1574 COLORREF pixel; |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1575 COLORREF background = di->relief_background; |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1576 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
|
1577 |
33097
84590a646acc
(x_produce_glyphs): Handle composite characters.
Jason Rumney <jasonr@gnu.org>
parents:
33037
diff
changeset
|
1578 /* TODO: Free colors (if using palette)? */ |
28369
3fb90cd81d3b
(w32_read_socket): Handle WM_MENUSELECT message.
Jason Rumney <jasonr@gnu.org>
parents:
27937
diff
changeset
|
1579 |
27402
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1580 /* Allocate new color. */ |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1581 xgcv.foreground = default_pixel; |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1582 pixel = background; |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1583 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
|
1584 { |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1585 relief->allocated_p = 1; |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1586 xgcv.foreground = relief->pixel = pixel; |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1587 } |
48218
01e253345507
(w32_draw_fringe_bitmap): Remove unused local variable window.
Juanma Barranquero <lekktu@gmail.com>
parents:
48025
diff
changeset
|
1588 |
27402
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1589 if (relief->gc == 0) |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1590 { |
33097
84590a646acc
(x_produce_glyphs): Handle composite characters.
Jason Rumney <jasonr@gnu.org>
parents:
33037
diff
changeset
|
1591 #if 0 /* TODO: stipple */ |
27402
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1592 xgcv.stipple = dpyinfo->gray; |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1593 mask |= GCStipple; |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1594 #endif |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1595 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
|
1596 } |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1597 else |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1598 XChangeGC (NULL, relief->gc, mask, &xgcv); |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1599 } |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1600 |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1601 |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1602 /* 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
|
1603 |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1604 static void |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1605 x_setup_relief_colors (s) |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1606 struct glyph_string *s; |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1607 { |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1608 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
|
1609 COLORREF color; |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1610 |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1611 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
|
1612 color = s->face->box_color; |
41249
2043af2d023f
(note_mouse_highlight): Fix type of variable `ignore'.
Jason Rumney <jasonr@gnu.org>
parents:
41125
diff
changeset
|
1613 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
|
1614 && s->img->pixmap |
41249
2043af2d023f
(note_mouse_highlight): Fix type of variable `ignore'.
Jason Rumney <jasonr@gnu.org>
parents:
41125
diff
changeset
|
1615 && !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
|
1616 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
|
1617 else |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1618 color = s->gc->background; |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1619 |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1620 if (di->white_relief.gc == 0 |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1621 || color != di->relief_background) |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1622 { |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1623 di->relief_background = color; |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1624 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
|
1625 WHITE_PIX_DEFAULT (s->f)); |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1626 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
|
1627 BLACK_PIX_DEFAULT (s->f)); |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1628 } |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1629 } |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1630 |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1631 |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1632 /* 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
|
1633 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
|
1634 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
|
1635 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
|
1636 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
|
1637 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
|
1638 when drawing. */ |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1639 |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1640 static void |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1641 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
|
1642 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
|
1643 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
|
1644 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
|
1645 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
|
1646 RECT *clip_rect; |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1647 { |
23507
8a448630a9b5
Include fontset.h. Define codepage macros.
Geoff Voelker <voelker@cs.washington.edu>
parents:
22059
diff
changeset
|
1648 int i; |
27402
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1649 XGCValues gc; |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1650 HDC hdc = get_frame_dc (f); |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1651 |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1652 if (raised_p) |
33524
cf8e03cd4985
(HIGHLIGHT_COLOR_DARK_BOOST_LIMIT): New constant.
Jason Rumney <jasonr@gnu.org>
parents:
33386
diff
changeset
|
1653 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
|
1654 else |
33524
cf8e03cd4985
(HIGHLIGHT_COLOR_DARK_BOOST_LIMIT): New constant.
Jason Rumney <jasonr@gnu.org>
parents:
33386
diff
changeset
|
1655 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
|
1656 |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1657 w32_set_clip_rectangle (hdc, clip_rect); |
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 /* Top. */ |
55026
08e4e7c06ffc
(w32_draw_relief_rect): Add top_p and bot_p args.
Kim F. Storm <storm@cua.dk>
parents:
54731
diff
changeset
|
1660 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
|
1661 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
|
1662 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
|
1663 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
|
1664 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
|
1665 |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1666 /* Left. */ |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1667 if (left_p) |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1668 for (i = 0; i < width; ++i) |
40137
5f0d7d58283b
(remember_mouse_glyph): New function.
Jason Rumney <jasonr@gnu.org>
parents:
40078
diff
changeset
|
1669 w32_fill_area (f, hdc, gc.foreground, |
5f0d7d58283b
(remember_mouse_glyph): New function.
Jason Rumney <jasonr@gnu.org>
parents:
40078
diff
changeset
|
1670 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
|
1671 bottom_y - top_y - 2 * i + 1); |
27402
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1672 |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1673 if (raised_p) |
33524
cf8e03cd4985
(HIGHLIGHT_COLOR_DARK_BOOST_LIMIT): New constant.
Jason Rumney <jasonr@gnu.org>
parents:
33386
diff
changeset
|
1674 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
|
1675 else |
33524
cf8e03cd4985
(HIGHLIGHT_COLOR_DARK_BOOST_LIMIT): New constant.
Jason Rumney <jasonr@gnu.org>
parents:
33386
diff
changeset
|
1676 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
|
1677 |
27402
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1678 /* Bottom. */ |
55026
08e4e7c06ffc
(w32_draw_relief_rect): Add top_p and bot_p args.
Kim F. Storm <storm@cua.dk>
parents:
54731
diff
changeset
|
1679 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
|
1680 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
|
1681 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
|
1682 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
|
1683 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
|
1684 |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1685 /* Right. */ |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1686 if (right_p) |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1687 for (i = 0; i < width; ++i) |
40137
5f0d7d58283b
(remember_mouse_glyph): New function.
Jason Rumney <jasonr@gnu.org>
parents:
40078
diff
changeset
|
1688 w32_fill_area (f, hdc, gc.foreground, |
5f0d7d58283b
(remember_mouse_glyph): New function.
Jason Rumney <jasonr@gnu.org>
parents:
40078
diff
changeset
|
1689 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
|
1690 bottom_y - top_y - 2 * i - 1); |
27402
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1691 |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1692 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
|
1693 |
27402
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1694 release_frame_dc (f, hdc); |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1695 } |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1696 |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1697 |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1698 /* 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
|
1699 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
|
1700 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
|
1701 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
|
1702 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
|
1703 rectangle to use when drawing. */ |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1704 |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1705 static void |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1706 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
|
1707 left_p, right_p, clip_rect) |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1708 struct glyph_string *s; |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1709 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
|
1710 RECT *clip_rect; |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1711 { |
27406
fb36ccd8457c
(w32_fill_rect): Do not try to deal with NULL hdc
Jason Rumney <jasonr@gnu.org>
parents:
27402
diff
changeset
|
1712 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
|
1713 |
27402
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1714 /* Top. */ |
27406
fb36ccd8457c
(w32_fill_rect): Do not try to deal with NULL hdc
Jason Rumney <jasonr@gnu.org>
parents:
27402
diff
changeset
|
1715 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
|
1716 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
|
1717 |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1718 /* Left. */ |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1719 if (left_p) |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1720 { |
27406
fb36ccd8457c
(w32_fill_rect): Do not try to deal with NULL hdc
Jason Rumney <jasonr@gnu.org>
parents:
27402
diff
changeset
|
1721 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
|
1722 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
|
1723 } |
48218
01e253345507
(w32_draw_fringe_bitmap): Remove unused local variable window.
Juanma Barranquero <lekktu@gmail.com>
parents:
48025
diff
changeset
|
1724 |
27402
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1725 /* Bottom. */ |
27406
fb36ccd8457c
(w32_fill_rect): Do not try to deal with NULL hdc
Jason Rumney <jasonr@gnu.org>
parents:
27402
diff
changeset
|
1726 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
|
1727 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
|
1728 |
27402
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1729 /* Right. */ |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1730 if (right_p) |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1731 { |
27406
fb36ccd8457c
(w32_fill_rect): Do not try to deal with NULL hdc
Jason Rumney <jasonr@gnu.org>
parents:
27402
diff
changeset
|
1732 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
|
1733 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
|
1734 } |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1735 |
27406
fb36ccd8457c
(w32_fill_rect): Do not try to deal with NULL hdc
Jason Rumney <jasonr@gnu.org>
parents:
27402
diff
changeset
|
1736 w32_set_clip_rectangle (s->hdc, NULL); |
27402
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1737 } |
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 |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1740 /* Draw a box around glyph string S. */ |
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 static void |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1743 x_draw_glyph_string_box (s) |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1744 struct glyph_string *s; |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1745 { |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1746 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
|
1747 int left_p, right_p; |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1748 struct glyph *last_glyph; |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1749 RECT clip_rect; |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1750 |
59655
369714ad80ed
(x_draw_glyph_string_box): Fix last_x for full width rows.
Kim F. Storm <storm@cua.dk>
parents:
59332
diff
changeset
|
1751 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
|
1752 ? 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
|
1753 : 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
|
1754 |
27402
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1755 /* 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
|
1756 last_glyph = (s->cmp || s->img |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1757 ? s->first_glyph |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1758 : s->first_glyph + s->nchars - 1); |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1759 |
85258 | 1760 width = eabs (s->face->box_line_width); |
27402
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1761 raised_p = s->face->box == FACE_RAISED_BOX; |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1762 left_x = s->x; |
40137
5f0d7d58283b
(remember_mouse_glyph): New function.
Jason Rumney <jasonr@gnu.org>
parents:
40078
diff
changeset
|
1763 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
|
1764 ? last_x - 1 |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1765 : 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
|
1766 top_y = s->y; |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1767 bottom_y = top_y + s->height - 1; |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1768 |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1769 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
|
1770 || (s->hl == DRAW_MOUSE_FACE |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1771 && (s->prev == NULL |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1772 || s->prev->hl != s->hl))); |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1773 right_p = (last_glyph->right_box_line_p |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1774 || (s->hl == DRAW_MOUSE_FACE |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1775 && (s->next == NULL |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1776 || 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
|
1777 |
50231
c8ea5e4b2129
* w32term.c: Remove consolidated defines and code.
Kim F. Storm <storm@cua.dk>
parents:
50163
diff
changeset
|
1778 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
|
1779 |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1780 if (s->face->box == FACE_SIMPLE_BOX) |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1781 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
|
1782 left_p, right_p, &clip_rect); |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1783 else |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1784 { |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1785 x_setup_relief_colors (s); |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1786 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
|
1787 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
|
1788 } |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1789 } |
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 |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1792 /* Draw foreground of image glyph string S. */ |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1793 |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1794 static void |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1795 x_draw_image_foreground (s) |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1796 struct glyph_string *s; |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1797 { |
55026
08e4e7c06ffc
(w32_draw_relief_rect): Add top_p and bot_p args.
Kim F. Storm <storm@cua.dk>
parents:
54731
diff
changeset
|
1798 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
|
1799 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
|
1800 |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1801 /* 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
|
1802 right of that line. */ |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1803 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
|
1804 && 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
|
1805 && s->slice.x == 0) |
85258 | 1806 x += eabs (s->face->box_line_width); |
27402
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1807 |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1808 /* 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
|
1809 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
|
1810 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
|
1811 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
|
1812 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
|
1813 y += s->img->vmargin; |
27402
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1814 |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1815 SaveDC (s->hdc); |
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 if (s->img->pixmap) |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1818 { |
48345
44c0f878e8b9
(x_draw_image_foreground, x_draw_image_glyph_string)
Jason Rumney <jasonr@gnu.org>
parents:
48218
diff
changeset
|
1819 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
|
1820 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
|
1821 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
|
1822 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
|
1823 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
|
1824 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
|
1825 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
|
1826 |
27402
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1827 if (s->img->mask) |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1828 { |
48345
44c0f878e8b9
(x_draw_image_foreground, x_draw_image_glyph_string)
Jason Rumney <jasonr@gnu.org>
parents:
48218
diff
changeset
|
1829 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
|
1830 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
|
1831 |
44c0f878e8b9
(x_draw_image_foreground, x_draw_image_glyph_string)
Jason Rumney <jasonr@gnu.org>
parents:
48218
diff
changeset
|
1832 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
|
1833 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
|
1834 |
55026
08e4e7c06ffc
(w32_draw_relief_rect): Add top_p and bot_p args.
Kim F. Storm <storm@cua.dk>
parents:
54731
diff
changeset
|
1835 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
|
1836 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
|
1837 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
|
1838 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
|
1839 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
|
1840 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
|
1841 |
44c0f878e8b9
(x_draw_image_foreground, x_draw_image_glyph_string)
Jason Rumney <jasonr@gnu.org>
parents:
48218
diff
changeset
|
1842 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
|
1843 DeleteDC (mask_dc); |
27402
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1844 } |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1845 else |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1846 { |
48345
44c0f878e8b9
(x_draw_image_foreground, x_draw_image_glyph_string)
Jason Rumney <jasonr@gnu.org>
parents:
48218
diff
changeset
|
1847 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
|
1848 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
|
1849 |
55026
08e4e7c06ffc
(w32_draw_relief_rect): Add top_p and bot_p args.
Kim F. Storm <storm@cua.dk>
parents:
54731
diff
changeset
|
1850 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
|
1851 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
|
1852 |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1853 /* 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
|
1854 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
|
1855 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
|
1856 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
|
1857 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
|
1858 nothing here for mouse-face. */ |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1859 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
|
1860 { |
fb8359237a78
(x_draw_image_foreground, w32_draw_image_foreground_1):
Kim F. Storm <storm@cua.dk>
parents:
44641
diff
changeset
|
1861 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
|
1862 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
|
1863 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
|
1864 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
|
1865 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
|
1866 } |
27402
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1867 } |
48345
44c0f878e8b9
(x_draw_image_foreground, x_draw_image_glyph_string)
Jason Rumney <jasonr@gnu.org>
parents:
48218
diff
changeset
|
1868 |
44c0f878e8b9
(x_draw_image_foreground, x_draw_image_glyph_string)
Jason Rumney <jasonr@gnu.org>
parents:
48218
diff
changeset
|
1869 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
|
1870 SelectObject (s->hdc, orig_brush); |
44c0f878e8b9
(x_draw_image_foreground, x_draw_image_glyph_string)
Jason Rumney <jasonr@gnu.org>
parents:
48218
diff
changeset
|
1871 DeleteObject (fg_brush); |
44c0f878e8b9
(x_draw_image_foreground, x_draw_image_glyph_string)
Jason Rumney <jasonr@gnu.org>
parents:
48218
diff
changeset
|
1872 SelectObject (compat_hdc, orig_obj); |
44c0f878e8b9
(x_draw_image_foreground, x_draw_image_glyph_string)
Jason Rumney <jasonr@gnu.org>
parents:
48218
diff
changeset
|
1873 DeleteDC (compat_hdc); |
27402
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1874 } |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1875 else |
55026
08e4e7c06ffc
(w32_draw_relief_rect): Add top_p and bot_p args.
Kim F. Storm <storm@cua.dk>
parents:
54731
diff
changeset
|
1876 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
|
1877 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
|
1878 |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1879 RestoreDC (s->hdc ,-1); |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1880 } |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1881 |
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 /* 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
|
1884 |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1885 static void |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1886 x_draw_image_relief (s) |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1887 struct glyph_string *s; |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1888 { |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1889 int x0, y0, x1, y1, thick, raised_p; |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1890 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
|
1891 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
|
1892 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
|
1893 |
27402
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1894 /* 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
|
1895 right of that line. */ |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1896 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
|
1897 && 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
|
1898 && s->slice.x == 0) |
85258 | 1899 x += eabs (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
|
1900 |
27402
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1901 /* 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
|
1902 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
|
1903 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
|
1904 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
|
1905 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
|
1906 y += s->img->vmargin; |
48218
01e253345507
(w32_draw_fringe_bitmap): Remove unused local variable window.
Juanma Barranquero <lekktu@gmail.com>
parents:
48025
diff
changeset
|
1907 |
27402
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1908 if (s->hl == DRAW_IMAGE_SUNKEN |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1909 || s->hl == DRAW_IMAGE_RAISED) |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1910 { |
42538
2b4179d13ed7
(x_setup_relief_colors): Don't compute an image's
Jason Rumney <jasonr@gnu.org>
parents:
42206
diff
changeset
|
1911 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
|
1912 raised_p = s->hl == DRAW_IMAGE_RAISED; |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1913 } |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1914 else |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1915 { |
85258 | 1916 thick = eabs (s->img->relief); |
27402
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1917 raised_p = s->img->relief > 0; |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1918 } |
48218
01e253345507
(w32_draw_fringe_bitmap): Remove unused local variable window.
Juanma Barranquero <lekktu@gmail.com>
parents:
48025
diff
changeset
|
1919 |
27402
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1920 x0 = x - thick; |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1921 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
|
1922 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
|
1923 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
|
1924 |
27402
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1925 x_setup_relief_colors (s); |
50231
c8ea5e4b2129
* w32term.c: Remove consolidated defines and code.
Kim F. Storm <storm@cua.dk>
parents:
50163
diff
changeset
|
1926 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
|
1927 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
|
1928 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
|
1929 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
|
1930 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
|
1931 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
|
1932 &r); |
27402
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1933 } |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1934 |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1935 |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1936 /* 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
|
1937 |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1938 static void |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1939 w32_draw_image_foreground_1 (s, pixmap) |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1940 struct glyph_string *s; |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1941 HBITMAP pixmap; |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1942 { |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1943 HDC hdc = CreateCompatibleDC (s->hdc); |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1944 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
|
1945 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
|
1946 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
|
1947 |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1948 /* 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
|
1949 right of that line. */ |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1950 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
|
1951 && 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
|
1952 && s->slice.x == 0) |
85258 | 1953 x += eabs (s->face->box_line_width); |
27402
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1954 |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1955 /* 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
|
1956 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
|
1957 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
|
1958 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
|
1959 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
|
1960 y += s->img->vmargin; |
27402
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1961 |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1962 if (s->img->pixmap) |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1963 { |
48345
44c0f878e8b9
(x_draw_image_foreground, x_draw_image_glyph_string)
Jason Rumney <jasonr@gnu.org>
parents:
48218
diff
changeset
|
1964 HDC compat_hdc = CreateCompatibleDC (hdc); |
44c0f878e8b9
(x_draw_image_foreground, x_draw_image_glyph_string)
Jason Rumney <jasonr@gnu.org>
parents:
48218
diff
changeset
|
1965 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
|
1966 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
|
1967 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
|
1968 |
27402
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1969 if (s->img->mask) |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1970 { |
48345
44c0f878e8b9
(x_draw_image_foreground, x_draw_image_glyph_string)
Jason Rumney <jasonr@gnu.org>
parents:
48218
diff
changeset
|
1971 HDC mask_dc = CreateCompatibleDC (hdc); |
44c0f878e8b9
(x_draw_image_foreground, x_draw_image_glyph_string)
Jason Rumney <jasonr@gnu.org>
parents:
48218
diff
changeset
|
1972 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
|
1973 |
44c0f878e8b9
(x_draw_image_foreground, x_draw_image_glyph_string)
Jason Rumney <jasonr@gnu.org>
parents:
48218
diff
changeset
|
1974 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
|
1975 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
|
1976 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
|
1977 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
|
1978 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
|
1979 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
|
1980 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
|
1981 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
|
1982 |
44c0f878e8b9
(x_draw_image_foreground, x_draw_image_glyph_string)
Jason Rumney <jasonr@gnu.org>
parents:
48218
diff
changeset
|
1983 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
|
1984 DeleteDC (mask_dc); |
27402
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1985 } |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1986 else |
13434 | 1987 { |
48345
44c0f878e8b9
(x_draw_image_foreground, x_draw_image_glyph_string)
Jason Rumney <jasonr@gnu.org>
parents:
48218
diff
changeset
|
1988 SetTextColor (hdc, s->gc->foreground); |
44c0f878e8b9
(x_draw_image_foreground, x_draw_image_glyph_string)
Jason Rumney <jasonr@gnu.org>
parents:
48218
diff
changeset
|
1989 SetBkColor (hdc, s->gc->background); |
44c0f878e8b9
(x_draw_image_foreground, x_draw_image_glyph_string)
Jason Rumney <jasonr@gnu.org>
parents:
48218
diff
changeset
|
1990 |
55026
08e4e7c06ffc
(w32_draw_relief_rect): Add top_p and bot_p args.
Kim F. Storm <storm@cua.dk>
parents:
54731
diff
changeset
|
1991 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
|
1992 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
|
1993 |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1994 /* 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
|
1995 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
|
1996 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
|
1997 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
|
1998 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
|
1999 nothing here for mouse-face. */ |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2000 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
|
2001 { |
fb8359237a78
(x_draw_image_foreground, w32_draw_image_foreground_1):
Kim F. Storm <storm@cua.dk>
parents:
44641
diff
changeset
|
2002 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
|
2003 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
|
2004 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
|
2005 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
|
2006 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
|
2007 } |
13434 | 2008 } |
48345
44c0f878e8b9
(x_draw_image_foreground, x_draw_image_glyph_string)
Jason Rumney <jasonr@gnu.org>
parents:
48218
diff
changeset
|
2009 |
44c0f878e8b9
(x_draw_image_foreground, x_draw_image_glyph_string)
Jason Rumney <jasonr@gnu.org>
parents:
48218
diff
changeset
|
2010 SelectObject (hdc, orig_brush); |
44c0f878e8b9
(x_draw_image_foreground, x_draw_image_glyph_string)
Jason Rumney <jasonr@gnu.org>
parents:
48218
diff
changeset
|
2011 DeleteObject (fg_brush); |
44c0f878e8b9
(x_draw_image_foreground, x_draw_image_glyph_string)
Jason Rumney <jasonr@gnu.org>
parents:
48218
diff
changeset
|
2012 SelectObject (compat_hdc, orig_obj); |
44c0f878e8b9
(x_draw_image_foreground, x_draw_image_glyph_string)
Jason Rumney <jasonr@gnu.org>
parents:
48218
diff
changeset
|
2013 DeleteDC (compat_hdc); |
27402
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2014 } |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2015 else |
55026
08e4e7c06ffc
(w32_draw_relief_rect): Add top_p and bot_p args.
Kim F. Storm <storm@cua.dk>
parents:
54731
diff
changeset
|
2016 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
|
2017 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
|
2018 |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2019 SelectObject (hdc, orig_hdc_obj); |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2020 DeleteDC (hdc); |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2021 } |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2022 |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2023 |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2024 /* 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
|
2025 give the rectangle to draw. */ |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2026 |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2027 static void |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2028 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
|
2029 struct glyph_string *s; |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2030 int x, y, w, h; |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2031 { |
33097
84590a646acc
(x_produce_glyphs): Handle composite characters.
Jason Rumney <jasonr@gnu.org>
parents:
33037
diff
changeset
|
2032 #if 0 /* TODO: stipple */ |
27402
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2033 if (s->stippled_p) |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2034 { |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2035 /* Fill background with a stipple pattern. */ |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2036 XSetFillStyle (s->display, s->gc, FillOpaqueStippled); |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2037 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
|
2038 XSetFillStyle (s->display, s->gc, FillSolid); |
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 else |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2041 #endif |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2042 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
|
2043 } |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2044 |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2045 |
48218
01e253345507
(w32_draw_fringe_bitmap): Remove unused local variable window.
Juanma Barranquero <lekktu@gmail.com>
parents:
48025
diff
changeset
|
2046 /* Draw image glyph string S. |
27402
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2047 |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2048 s->y |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2049 s->x +------------------------- |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2050 | s->face->box |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2051 | |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2052 | +------------------------- |
35287
28e0cac22fbd
(x_produce_image_glyph, x_draw_image_foreground)
Jason Rumney <jasonr@gnu.org>
parents:
35000
diff
changeset
|
2053 | | s->img->vmargin |
27402
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2054 | | |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2055 | | +------------------- |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2056 | | | the image |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2057 |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2058 */ |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2059 |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2060 static void |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2061 x_draw_image_glyph_string (s) |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2062 struct glyph_string *s; |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2063 { |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2064 int x, y; |
85258 | 2065 int box_line_hwidth = eabs (s->face->box_line_width); |
36045
8be6a1c85409
(x_produce_image_glyph): Pay attention to the case that
Andrew Innes <andrewi@gnu.org>
parents:
36002
diff
changeset
|
2066 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
|
2067 int height; |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2068 HBITMAP pixmap = 0; |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2069 |
36045
8be6a1c85409
(x_produce_image_glyph): Pay attention to the case that
Andrew Innes <andrewi@gnu.org>
parents:
36002
diff
changeset
|
2070 height = s->height - 2 * box_line_vwidth; |
27402
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 /* 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
|
2073 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
|
2074 flickering. */ |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2075 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
|
2076 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
|
2077 || s->img->hmargin |
35287
28e0cac22fbd
(x_produce_image_glyph, x_draw_image_foreground)
Jason Rumney <jasonr@gnu.org>
parents:
35000
diff
changeset
|
2078 || s->img->vmargin |
27402
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2079 || s->img->mask |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2080 || s->img->pixmap == 0 |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2081 || s->width != s->background_width) |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2082 { |
55026
08e4e7c06ffc
(w32_draw_relief_rect): Add top_p and bot_p args.
Kim F. Storm <storm@cua.dk>
parents:
54731
diff
changeset
|
2083 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
|
2084 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
|
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 += 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
|
2087 |
08e4e7c06ffc
(w32_draw_relief_rect): Add top_p and bot_p args.
Kim F. Storm <storm@cua.dk>
parents:
54731
diff
changeset
|
2088 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
|
2089 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
|
2090 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
|
2091 |
48345
44c0f878e8b9
(x_draw_image_foreground, x_draw_image_glyph_string)
Jason Rumney <jasonr@gnu.org>
parents:
48218
diff
changeset
|
2092 #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
|
2093 if (s->img->mask) |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2094 { |
35384
e50a7f9ce65e
(x_produce_stretch_glyph): Only use Qspace when GLYPH_DEBUG is defined.
Jason Rumney <jasonr@gnu.org>
parents:
35287
diff
changeset
|
2095 /* 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
|
2096 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
|
2097 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
|
2098 Screen *screen = FRAME_X_SCREEN (s->f); |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2099 int depth = DefaultDepthOfScreen (screen); |
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 /* 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
|
2102 pixmap = XCreatePixmap (s->display, s->window, |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2103 s->background_width, |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2104 s->height, depth); |
48218
01e253345507
(w32_draw_fringe_bitmap): Remove unused local variable window.
Juanma Barranquero <lekktu@gmail.com>
parents:
48025
diff
changeset
|
2105 |
27402
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2106 /* 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
|
2107 pixmap. */ |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2108 XSetClipMask (s->display, s->gc, None); |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2109 |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2110 /* Fill the pixmap with the background color/stipple. */ |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2111 if (s->stippled_p) |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2112 { |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2113 /* Fill background with a stipple pattern. */ |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2114 XSetFillStyle (s->display, s->gc, FillOpaqueStippled); |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2115 XFillRectangle (s->display, pixmap, s->gc, |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2116 0, 0, s->background_width, s->height); |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2117 XSetFillStyle (s->display, s->gc, FillSolid); |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2118 } |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2119 else |
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 XGCValues xgcv; |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2122 XGetGCValues (s->display, s->gc, GCForeground | GCBackground, |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2123 &xgcv); |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2124 XSetForeground (s->display, s->gc, xgcv.background); |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2125 XFillRectangle (s->display, pixmap, s->gc, |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2126 0, 0, s->background_width, s->height); |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2127 XSetForeground (s->display, s->gc, xgcv.foreground); |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2128 } |
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 else |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2131 #endif |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2132 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
|
2133 |
27402
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2134 s->background_filled_p = 1; |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2135 } |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2136 |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2137 /* Draw the foreground. */ |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2138 if (pixmap != 0) |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2139 { |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2140 w32_draw_image_foreground_1 (s, pixmap); |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2141 x_set_glyph_string_clipping (s); |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2142 { |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2143 HDC compat_hdc = CreateCompatibleDC (s->hdc); |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2144 HBRUSH fg_brush = CreateSolidBrush (s->gc->foreground); |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2145 HBRUSH orig_brush = SelectObject (s->hdc, fg_brush); |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2146 HGDIOBJ orig_obj = SelectObject (compat_hdc, pixmap); |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2147 |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2148 SetTextColor (s->hdc, s->gc->foreground); |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2149 SetBkColor (s->hdc, s->gc->background); |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2150 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
|
2151 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
|
2152 |
27402
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2153 SelectObject (s->hdc, orig_brush); |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2154 DeleteObject (fg_brush); |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2155 SelectObject (compat_hdc, orig_obj); |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2156 DeleteDC (compat_hdc); |
13434 | 2157 } |
27402
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2158 DeleteObject (pixmap); |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2159 pixmap = 0; |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2160 } |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2161 else |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2162 x_draw_image_foreground (s); |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2163 |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2164 /* 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
|
2165 if (s->img->relief |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2166 || s->hl == DRAW_IMAGE_RAISED |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2167 || s->hl == DRAW_IMAGE_SUNKEN) |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2168 x_draw_image_relief (s); |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2169 } |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2170 |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2171 |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2172 /* Draw stretch glyph string S. */ |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2173 |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2174 static void |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2175 x_draw_stretch_glyph_string (s) |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2176 struct glyph_string *s; |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2177 { |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2178 xassert (s->first_glyph->type == STRETCH_GLYPH); |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2179 |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2180 if (s->hl == DRAW_CURSOR |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2181 && !x_stretch_cursor_p) |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2182 { |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2183 /* 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
|
2184 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
|
2185 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
|
2186 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
|
2187 |
a86a3503e350
(x_draw_stretch_glyph_string): Fix problems with invisible
Kim F. Storm <storm@cua.dk>
parents:
70234
diff
changeset
|
2188 if (x < left_x) |
a86a3503e350
(x_draw_stretch_glyph_string): Fix problems with invisible
Kim F. Storm <storm@cua.dk>
parents:
70234
diff
changeset
|
2189 { |
a86a3503e350
(x_draw_stretch_glyph_string): Fix problems with invisible
Kim F. Storm <storm@cua.dk>
parents:
70234
diff
changeset
|
2190 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
|
2191 x = left_x; |
a86a3503e350
(x_draw_stretch_glyph_string): Fix problems with invisible
Kim F. Storm <storm@cua.dk>
parents:
70234
diff
changeset
|
2192 } |
a86a3503e350
(x_draw_stretch_glyph_string): Fix problems with invisible
Kim F. Storm <storm@cua.dk>
parents:
70234
diff
changeset
|
2193 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
|
2194 |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2195 /* Draw cursor. */ |
71021
a86a3503e350
(x_draw_stretch_glyph_string): Fix problems with invisible
Kim F. Storm <storm@cua.dk>
parents:
70234
diff
changeset
|
2196 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
|
2197 |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2198 /* 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
|
2199 if (width < background_width) |
27402
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2200 { |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2201 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
|
2202 int y = s->y; |
a86a3503e350
(x_draw_stretch_glyph_string): Fix problems with invisible
Kim F. Storm <storm@cua.dk>
parents:
70234
diff
changeset
|
2203 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
|
2204 RECT r; |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2205 HDC hdc = s->hdc; |
40137
5f0d7d58283b
(remember_mouse_glyph): New function.
Jason Rumney <jasonr@gnu.org>
parents:
40078
diff
changeset
|
2206 |
71021
a86a3503e350
(x_draw_stretch_glyph_string): Fix problems with invisible
Kim F. Storm <storm@cua.dk>
parents:
70234
diff
changeset
|
2207 x += width; |
40137
5f0d7d58283b
(remember_mouse_glyph): New function.
Jason Rumney <jasonr@gnu.org>
parents:
40078
diff
changeset
|
2208 if (s->row->mouse_face_p |
5f0d7d58283b
(remember_mouse_glyph): New function.
Jason Rumney <jasonr@gnu.org>
parents:
40078
diff
changeset
|
2209 && cursor_in_mouse_face_p (s->w)) |
5f0d7d58283b
(remember_mouse_glyph): New function.
Jason Rumney <jasonr@gnu.org>
parents:
40078
diff
changeset
|
2210 { |
5f0d7d58283b
(remember_mouse_glyph): New function.
Jason Rumney <jasonr@gnu.org>
parents:
40078
diff
changeset
|
2211 x_set_mouse_face_gc (s); |
5f0d7d58283b
(remember_mouse_glyph): New function.
Jason Rumney <jasonr@gnu.org>
parents:
40078
diff
changeset
|
2212 gc = s->gc; |
5f0d7d58283b
(remember_mouse_glyph): New function.
Jason Rumney <jasonr@gnu.org>
parents:
40078
diff
changeset
|
2213 } |
5f0d7d58283b
(remember_mouse_glyph): New function.
Jason Rumney <jasonr@gnu.org>
parents:
40078
diff
changeset
|
2214 else |
5f0d7d58283b
(remember_mouse_glyph): New function.
Jason Rumney <jasonr@gnu.org>
parents:
40078
diff
changeset
|
2215 gc = s->face->gc; |
48218
01e253345507
(w32_draw_fringe_bitmap): Remove unused local variable window.
Juanma Barranquero <lekktu@gmail.com>
parents:
48025
diff
changeset
|
2216 |
50231
c8ea5e4b2129
* w32term.c: Remove consolidated defines and code.
Kim F. Storm <storm@cua.dk>
parents:
50163
diff
changeset
|
2217 get_glyph_string_clip_rect (s, &r); |
27402
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2218 w32_set_clip_rectangle (hdc, &r); |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2219 |
33097
84590a646acc
(x_produce_glyphs): Handle composite characters.
Jason Rumney <jasonr@gnu.org>
parents:
33037
diff
changeset
|
2220 #if 0 /* TODO: stipple */ |
27402
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2221 if (s->face->stipple) |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2222 { |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2223 /* Fill background with a stipple pattern. */ |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2224 XSetFillStyle (s->display, gc, FillOpaqueStippled); |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2225 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
|
2226 XSetFillStyle (s->display, gc, FillSolid); |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2227 } |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2228 else |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2229 #endif |
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 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
|
2232 } |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2233 } |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2234 } |
40137
5f0d7d58283b
(remember_mouse_glyph): New function.
Jason Rumney <jasonr@gnu.org>
parents:
40078
diff
changeset
|
2235 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
|
2236 { |
a86a3503e350
(x_draw_stretch_glyph_string): Fix problems with invisible
Kim F. Storm <storm@cua.dk>
parents:
70234
diff
changeset
|
2237 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
|
2238 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
|
2239 |
72470
3b82c004bf25
(x_draw_stretch_glyph_string): It is ok to draw a
Kim F. Storm <storm@cua.dk>
parents:
72008
diff
changeset
|
2240 /* 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
|
2241 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
|
2242 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
|
2243 { |
a86a3503e350
(x_draw_stretch_glyph_string): Fix problems with invisible
Kim F. Storm <storm@cua.dk>
parents:
70234
diff
changeset
|
2244 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
|
2245 x = left_x; |
a86a3503e350
(x_draw_stretch_glyph_string): Fix problems with invisible
Kim F. Storm <storm@cua.dk>
parents:
70234
diff
changeset
|
2246 } |
a86a3503e350
(x_draw_stretch_glyph_string): Fix problems with invisible
Kim F. Storm <storm@cua.dk>
parents:
70234
diff
changeset
|
2247 if (background_width > 0) |
a86a3503e350
(x_draw_stretch_glyph_string): Fix problems with invisible
Kim F. Storm <storm@cua.dk>
parents:
70234
diff
changeset
|
2248 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
|
2249 } |
48218
01e253345507
(w32_draw_fringe_bitmap): Remove unused local variable window.
Juanma Barranquero <lekktu@gmail.com>
parents:
48025
diff
changeset
|
2250 |
27402
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2251 s->background_filled_p = 1; |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2252 } |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2253 |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2254 |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2255 /* Draw glyph string S. */ |
13434 | 2256 |
21831
6b659713b90b
Forward declare hooks with full function prototypes.
Geoff Voelker <voelker@cs.washington.edu>
parents:
21740
diff
changeset
|
2257 static void |
27402
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2258 x_draw_glyph_string (s) |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2259 struct glyph_string *s; |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2260 { |
38807
a59ac9807c9d
Draw relief (if any) before
Andrew Innes <andrewi@gnu.org>
parents:
38570
diff
changeset
|
2261 int relief_drawn_p = 0; |
a59ac9807c9d
Draw relief (if any) before
Andrew Innes <andrewi@gnu.org>
parents:
38570
diff
changeset
|
2262 |
27402
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2263 /* 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
|
2264 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
|
2265 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
|
2266 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
|
2267 { |
90834 | 2268 int width; |
2269 struct glyph_string *next; | |
99557
5cf4a15cedab
(x_draw_glyph_string): Stop drawing the background of the next glyph
Chong Yidong <cyd@stupidchicken.com>
parents:
99509
diff
changeset
|
2270 for (width = 0, next = s->next; |
5cf4a15cedab
(x_draw_glyph_string): Stop drawing the background of the next glyph
Chong Yidong <cyd@stupidchicken.com>
parents:
99509
diff
changeset
|
2271 next && width < s->right_overhang; |
90834 | 2272 width += next->width, next = next->next) |
2273 if (next->first_glyph->type != IMAGE_GLYPH) | |
2274 { | |
2275 x_set_glyph_string_gc (next); | |
2276 x_set_glyph_string_clipping (next); | |
99561
3ff54631d8b3
(x_draw_glyph_string): For stretch glyphs, don't call
Chong Yidong <cyd@stupidchicken.com>
parents:
99557
diff
changeset
|
2277 if (next->first_glyph->type == STRETCH_GLYPH) |
3ff54631d8b3
(x_draw_glyph_string): For stretch glyphs, don't call
Chong Yidong <cyd@stupidchicken.com>
parents:
99557
diff
changeset
|
2278 x_draw_stretch_glyph_string (next); |
3ff54631d8b3
(x_draw_glyph_string): For stretch glyphs, don't call
Chong Yidong <cyd@stupidchicken.com>
parents:
99557
diff
changeset
|
2279 else |
3ff54631d8b3
(x_draw_glyph_string): For stretch glyphs, don't call
Chong Yidong <cyd@stupidchicken.com>
parents:
99557
diff
changeset
|
2280 x_draw_glyph_string_background (next, 1); |
91028
d41ffb650865
(x_set_glyph_string_clipping): Use
Jason Rumney <jasonr@gnu.org>
parents:
91005
diff
changeset
|
2281 next->num_clips = 0; |
90834 | 2282 } |
27402
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2283 } |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2284 |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2285 /* 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
|
2286 x_set_glyph_string_gc (s); |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2287 |
38807
a59ac9807c9d
Draw relief (if any) before
Andrew Innes <andrewi@gnu.org>
parents:
38570
diff
changeset
|
2288 /* 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
|
2289 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
|
2290 if (!s->for_overlaps |
38807
a59ac9807c9d
Draw relief (if any) before
Andrew Innes <andrewi@gnu.org>
parents:
38570
diff
changeset
|
2291 && s->face->box != FACE_NO_BOX |
a59ac9807c9d
Draw relief (if any) before
Andrew Innes <andrewi@gnu.org>
parents:
38570
diff
changeset
|
2292 && (s->first_glyph->type == CHAR_GLYPH |
a59ac9807c9d
Draw relief (if any) before
Andrew Innes <andrewi@gnu.org>
parents:
38570
diff
changeset
|
2293 || s->first_glyph->type == COMPOSITE_GLYPH)) |
a59ac9807c9d
Draw relief (if any) before
Andrew Innes <andrewi@gnu.org>
parents:
38570
diff
changeset
|
2294 |
a59ac9807c9d
Draw relief (if any) before
Andrew Innes <andrewi@gnu.org>
parents:
38570
diff
changeset
|
2295 { |
40137
5f0d7d58283b
(remember_mouse_glyph): New function.
Jason Rumney <jasonr@gnu.org>
parents:
40078
diff
changeset
|
2296 x_set_glyph_string_clipping (s); |
38807
a59ac9807c9d
Draw relief (if any) before
Andrew Innes <andrewi@gnu.org>
parents:
38570
diff
changeset
|
2297 x_draw_glyph_string_background (s, 1); |
a59ac9807c9d
Draw relief (if any) before
Andrew Innes <andrewi@gnu.org>
parents:
38570
diff
changeset
|
2298 x_draw_glyph_string_box (s); |
40137
5f0d7d58283b
(remember_mouse_glyph): New function.
Jason Rumney <jasonr@gnu.org>
parents:
40078
diff
changeset
|
2299 x_set_glyph_string_clipping (s); |
38807
a59ac9807c9d
Draw relief (if any) before
Andrew Innes <andrewi@gnu.org>
parents:
38570
diff
changeset
|
2300 relief_drawn_p = 1; |
a59ac9807c9d
Draw relief (if any) before
Andrew Innes <andrewi@gnu.org>
parents:
38570
diff
changeset
|
2301 } |
95364
03298b3ef01c
(x_draw_glyph_string): Use clipmask if specified.
Jason Rumney <jasonr@gnu.org>
parents:
95296
diff
changeset
|
2302 else if (!s->clip_head /* draw_glyphs didn't specify a clip mask. */ |
03298b3ef01c
(x_draw_glyph_string): Use clipmask if specified.
Jason Rumney <jasonr@gnu.org>
parents:
95296
diff
changeset
|
2303 && !s->clip_tail |
03298b3ef01c
(x_draw_glyph_string): Use clipmask if specified.
Jason Rumney <jasonr@gnu.org>
parents:
95296
diff
changeset
|
2304 && ((s->prev && s->prev->hl != s->hl && s->left_overhang) |
03298b3ef01c
(x_draw_glyph_string): Use clipmask if specified.
Jason Rumney <jasonr@gnu.org>
parents:
95296
diff
changeset
|
2305 || (s->next && s->next->hl != s->hl && s->right_overhang))) |
90834 | 2306 /* We must clip just this glyph. left_overhang part has already |
2307 drawn when s->prev was drawn, and right_overhang part will be | |
2308 drawn later when s->next is drawn. */ | |
2309 x_set_glyph_string_clipping_exactly (s, s); | |
40137
5f0d7d58283b
(remember_mouse_glyph): New function.
Jason Rumney <jasonr@gnu.org>
parents:
40078
diff
changeset
|
2310 else |
5f0d7d58283b
(remember_mouse_glyph): New function.
Jason Rumney <jasonr@gnu.org>
parents:
40078
diff
changeset
|
2311 x_set_glyph_string_clipping (s); |
38807
a59ac9807c9d
Draw relief (if any) before
Andrew Innes <andrewi@gnu.org>
parents:
38570
diff
changeset
|
2312 |
27402
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2313 switch (s->first_glyph->type) |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2314 { |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2315 case IMAGE_GLYPH: |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2316 x_draw_image_glyph_string (s); |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2317 break; |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2318 |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2319 case STRETCH_GLYPH: |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2320 x_draw_stretch_glyph_string (s); |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2321 break; |
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 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
|
2324 if (s->for_overlaps) |
27402
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2325 s->background_filled_p = 1; |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2326 else |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2327 x_draw_glyph_string_background (s, 0); |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2328 x_draw_glyph_string_foreground (s); |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2329 break; |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2330 |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2331 case COMPOSITE_GLYPH: |
97831
cdeb60ce9393
(x_draw_composite_glyph_string_foreground): Adjusted
Kenichi Handa <handa@m17n.org>
parents:
97141
diff
changeset
|
2332 if (s->for_overlaps || (s->cmp_from > 0 |
cdeb60ce9393
(x_draw_composite_glyph_string_foreground): Adjusted
Kenichi Handa <handa@m17n.org>
parents:
97141
diff
changeset
|
2333 && ! s->first_glyph->u.cmp.automatic)) |
27402
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2334 s->background_filled_p = 1; |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2335 else |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2336 x_draw_glyph_string_background (s, 1); |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2337 x_draw_composite_glyph_string_foreground (s); |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2338 break; |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2339 |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2340 default: |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2341 abort (); |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2342 } |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2343 |
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
|
2344 if (!s->for_overlaps) |
27402
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2345 { |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2346 /* Draw underline. */ |
94912
5b153bea483d
: Throughout the file, delete all USE_FONT_BACKEND
Kenichi Handa <handa@m17n.org>
parents:
93913
diff
changeset
|
2347 if (s->face->underline_p) |
27402
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2348 { |
94912
5b153bea483d
: Throughout the file, delete all USE_FONT_BACKEND
Kenichi Handa <handa@m17n.org>
parents:
93913
diff
changeset
|
2349 unsigned long thickness, position; |
90867
129b35b0274f
(w32_native_per_char_metric): Swap width and rbearing
Jason Rumney <jasonr@gnu.org>
parents:
90834
diff
changeset
|
2350 int y; |
94912
5b153bea483d
: Throughout the file, delete all USE_FONT_BACKEND
Kenichi Handa <handa@m17n.org>
parents:
93913
diff
changeset
|
2351 |
5b153bea483d
: Throughout the file, delete all USE_FONT_BACKEND
Kenichi Handa <handa@m17n.org>
parents:
93913
diff
changeset
|
2352 if (s->prev && s->prev->face->underline_p) |
5b153bea483d
: Throughout the file, delete all USE_FONT_BACKEND
Kenichi Handa <handa@m17n.org>
parents:
93913
diff
changeset
|
2353 { |
5b153bea483d
: Throughout the file, delete all USE_FONT_BACKEND
Kenichi Handa <handa@m17n.org>
parents:
93913
diff
changeset
|
2354 /* We use the same underline style as the previous one. */ |
5b153bea483d
: Throughout the file, delete all USE_FONT_BACKEND
Kenichi Handa <handa@m17n.org>
parents:
93913
diff
changeset
|
2355 thickness = s->prev->underline_thickness; |
5b153bea483d
: Throughout the file, delete all USE_FONT_BACKEND
Kenichi Handa <handa@m17n.org>
parents:
93913
diff
changeset
|
2356 position = s->prev->underline_position; |
5b153bea483d
: Throughout the file, delete all USE_FONT_BACKEND
Kenichi Handa <handa@m17n.org>
parents:
93913
diff
changeset
|
2357 } |
5b153bea483d
: Throughout the file, delete all USE_FONT_BACKEND
Kenichi Handa <handa@m17n.org>
parents:
93913
diff
changeset
|
2358 else |
72505
759e19ea81e5
(x_underline_at_descent_line): New variable.
Kim F. Storm <storm@cua.dk>
parents:
72470
diff
changeset
|
2359 { |
94912
5b153bea483d
: Throughout the file, delete all USE_FONT_BACKEND
Kenichi Handa <handa@m17n.org>
parents:
93913
diff
changeset
|
2360 /* Get the underline thickness. Default is 1 pixel. */ |
5b153bea483d
: Throughout the file, delete all USE_FONT_BACKEND
Kenichi Handa <handa@m17n.org>
parents:
93913
diff
changeset
|
2361 if (s->font && s->font->underline_thickness > 0) |
5b153bea483d
: Throughout the file, delete all USE_FONT_BACKEND
Kenichi Handa <handa@m17n.org>
parents:
93913
diff
changeset
|
2362 thickness = s->font->underline_thickness; |
5b153bea483d
: Throughout the file, delete all USE_FONT_BACKEND
Kenichi Handa <handa@m17n.org>
parents:
93913
diff
changeset
|
2363 else |
5b153bea483d
: Throughout the file, delete all USE_FONT_BACKEND
Kenichi Handa <handa@m17n.org>
parents:
93913
diff
changeset
|
2364 thickness = 1; |
5b153bea483d
: Throughout the file, delete all USE_FONT_BACKEND
Kenichi Handa <handa@m17n.org>
parents:
93913
diff
changeset
|
2365 if (x_underline_at_descent_line) |
95296
e76b055e122c
(x_draw_glyph_string): Fix calculation of underline
Kenichi Handa <handa@m17n.org>
parents:
95247
diff
changeset
|
2366 position = (s->height - thickness) - (s->ybase - s->y); |
94912
5b153bea483d
: Throughout the file, delete all USE_FONT_BACKEND
Kenichi Handa <handa@m17n.org>
parents:
93913
diff
changeset
|
2367 else |
90834 | 2368 { |
94912
5b153bea483d
: Throughout the file, delete all USE_FONT_BACKEND
Kenichi Handa <handa@m17n.org>
parents:
93913
diff
changeset
|
2369 /* Get the underline position. This is the recommended |
5b153bea483d
: Throughout the file, delete all USE_FONT_BACKEND
Kenichi Handa <handa@m17n.org>
parents:
93913
diff
changeset
|
2370 vertical offset in pixels from the baseline to the top of |
5b153bea483d
: Throughout the file, delete all USE_FONT_BACKEND
Kenichi Handa <handa@m17n.org>
parents:
93913
diff
changeset
|
2371 the underline. This is a signed value according to the |
5b153bea483d
: Throughout the file, delete all USE_FONT_BACKEND
Kenichi Handa <handa@m17n.org>
parents:
93913
diff
changeset
|
2372 specs, and its default is |
5b153bea483d
: Throughout the file, delete all USE_FONT_BACKEND
Kenichi Handa <handa@m17n.org>
parents:
93913
diff
changeset
|
2373 |
5b153bea483d
: Throughout the file, delete all USE_FONT_BACKEND
Kenichi Handa <handa@m17n.org>
parents:
93913
diff
changeset
|
2374 ROUND ((maximum_descent) / 2), with |
5b153bea483d
: Throughout the file, delete all USE_FONT_BACKEND
Kenichi Handa <handa@m17n.org>
parents:
93913
diff
changeset
|
2375 ROUND (x) = floor (x + 0.5) */ |
5b153bea483d
: Throughout the file, delete all USE_FONT_BACKEND
Kenichi Handa <handa@m17n.org>
parents:
93913
diff
changeset
|
2376 |
5b153bea483d
: Throughout the file, delete all USE_FONT_BACKEND
Kenichi Handa <handa@m17n.org>
parents:
93913
diff
changeset
|
2377 if (x_use_underline_position_properties |
5b153bea483d
: Throughout the file, delete all USE_FONT_BACKEND
Kenichi Handa <handa@m17n.org>
parents:
93913
diff
changeset
|
2378 && s->font && s->font->underline_position >= 0) |
5b153bea483d
: Throughout the file, delete all USE_FONT_BACKEND
Kenichi Handa <handa@m17n.org>
parents:
93913
diff
changeset
|
2379 position = s->font->underline_position; |
5b153bea483d
: Throughout the file, delete all USE_FONT_BACKEND
Kenichi Handa <handa@m17n.org>
parents:
93913
diff
changeset
|
2380 else if (s->font) |
5b153bea483d
: Throughout the file, delete all USE_FONT_BACKEND
Kenichi Handa <handa@m17n.org>
parents:
93913
diff
changeset
|
2381 position = (s->font->descent + 1) / 2; |
90834 | 2382 } |
95792
953225ddde83
* xdisp.c (underline_minimum_offset): Rename from xterm.c's
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
95733
diff
changeset
|
2383 position = max (position, underline_minimum_offset); |
72505
759e19ea81e5
(x_underline_at_descent_line): New variable.
Kim F. Storm <storm@cua.dk>
parents:
72470
diff
changeset
|
2384 } |
95247
32b09637961a
(x_draw_glyph_string): Be sure to draw underline within the current
Kenichi Handa <handa@m17n.org>
parents:
95240
diff
changeset
|
2385 /* Check the sanity of thickness and position. We should |
32b09637961a
(x_draw_glyph_string): Be sure to draw underline within the current
Kenichi Handa <handa@m17n.org>
parents:
95240
diff
changeset
|
2386 avoid drawing underline out of the current line area. */ |
32b09637961a
(x_draw_glyph_string): Be sure to draw underline within the current
Kenichi Handa <handa@m17n.org>
parents:
95240
diff
changeset
|
2387 if (s->y + s->height <= s->ybase + position) |
95296
e76b055e122c
(x_draw_glyph_string): Fix calculation of underline
Kenichi Handa <handa@m17n.org>
parents:
95247
diff
changeset
|
2388 position = (s->height - 1) - (s->ybase - s->y); |
95247
32b09637961a
(x_draw_glyph_string): Be sure to draw underline within the current
Kenichi Handa <handa@m17n.org>
parents:
95240
diff
changeset
|
2389 if (s->y + s->height < s->ybase + position + thickness) |
32b09637961a
(x_draw_glyph_string): Be sure to draw underline within the current
Kenichi Handa <handa@m17n.org>
parents:
95240
diff
changeset
|
2390 thickness = (s->y + s->height) - (s->ybase + position); |
95240
b4799755ba3d
(x_draw_glyph_string): Be sure to update
Kenichi Handa <handa@m17n.org>
parents:
95170
diff
changeset
|
2391 s->underline_thickness = thickness; |
b4799755ba3d
(x_draw_glyph_string): Be sure to update
Kenichi Handa <handa@m17n.org>
parents:
95170
diff
changeset
|
2392 s->underline_position =position; |
94912
5b153bea483d
: Throughout the file, delete all USE_FONT_BACKEND
Kenichi Handa <handa@m17n.org>
parents:
93913
diff
changeset
|
2393 y = s->ybase + position; |
27402
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2394 if (s->face->underline_defaulted_p) |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2395 { |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2396 w32_fill_area (s->f, s->hdc, s->gc->foreground, s->x, |
103509
9c0aa5262fc9
* w32term.c (x_draw_glyph_string): Use the glyph string's width
Chong Yidong <cyd@stupidchicken.com>
parents:
103505
diff
changeset
|
2397 y, s->width, 1); |
27402
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2398 } |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2399 else |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2400 { |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2401 w32_fill_area (s->f, s->hdc, s->face->underline_color, s->x, |
103509
9c0aa5262fc9
* w32term.c (x_draw_glyph_string): Use the glyph string's width
Chong Yidong <cyd@stupidchicken.com>
parents:
103505
diff
changeset
|
2402 y, s->width, 1); |
27402
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2403 } |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2404 } |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2405 /* Draw overline. */ |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2406 if (s->face->overline_p) |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2407 { |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2408 unsigned long dy = 0, h = 1; |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2409 |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2410 if (s->face->overline_color_defaulted_p) |
90834 | 2411 { |
2412 w32_fill_area (s->f, s->hdc, s->gc->foreground, s->x, | |
103509
9c0aa5262fc9
* w32term.c (x_draw_glyph_string): Use the glyph string's width
Chong Yidong <cyd@stupidchicken.com>
parents:
103505
diff
changeset
|
2413 s->y + dy, s->width, h); |
90834 | 2414 } |
27402
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2415 else |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2416 { |
57626
d208db2b5db2
(x_draw_glyph_string): Use overline_color for overlines.
Jason Rumney <jasonr@gnu.org>
parents:
57560
diff
changeset
|
2417 w32_fill_area (s->f, s->hdc, s->face->overline_color, s->x, |
103509
9c0aa5262fc9
* w32term.c (x_draw_glyph_string): Use the glyph string's width
Chong Yidong <cyd@stupidchicken.com>
parents:
103505
diff
changeset
|
2418 s->y + dy, s->width, h); |
27402
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2419 } |
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 /* Draw strike-through. */ |
29321
8e2be36bb1c6
Format and doc changes to bring closer to xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
28369
diff
changeset
|
2423 if (s->face->strike_through_p |
96343
5c8f2b7d28ae
* w32font.h (FONT_HANDLE, FONT_TEXTMETRIC): New macros.
Jason Rumney <jasonr@gnu.org>
parents:
96327
diff
changeset
|
2424 && !FONT_TEXTMETRIC(s->font).tmStruckOut) |
27402
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2425 { |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2426 unsigned long h = 1; |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2427 unsigned long dy = (s->height - h) / 2; |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2428 |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2429 if (s->face->strike_through_color_defaulted_p) |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2430 { |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2431 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
|
2432 s->width, h); |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2433 } |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2434 else |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2435 { |
78858
266d9baa6dec
(x_draw_glyph_string): Use strike_through_color, not underline_color,
Juanma Barranquero <lekktu@gmail.com>
parents:
78501
diff
changeset
|
2436 w32_fill_area (s->f, s->hdc, s->face->strike_through_color, s->x, |
27402
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2437 s->y + dy, s->width, h); |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2438 } |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2439 } |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2440 |
90834 | 2441 /* Draw relief if not yet drawn. */ |
38807
a59ac9807c9d
Draw relief (if any) before
Andrew Innes <andrewi@gnu.org>
parents:
38570
diff
changeset
|
2442 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
|
2443 x_draw_glyph_string_box (s); |
90834 | 2444 |
2445 if (s->prev) | |
2446 { | |
2447 struct glyph_string *prev; | |
2448 | |
2449 for (prev = s->prev; prev; prev = prev->prev) | |
2450 if (prev->hl != s->hl | |
2451 && prev->x + prev->width + prev->right_overhang > s->x) | |
2452 { | |
2453 /* As prev was drawn while clipped to its own area, we | |
2454 must draw the right_overhang part using s->hl now. */ | |
2455 enum draw_glyphs_face save = prev->hl; | |
2456 | |
2457 prev->hl = s->hl; | |
2458 x_set_glyph_string_gc (prev); | |
2459 x_set_glyph_string_clipping_exactly (s, prev); | |
2460 if (prev->first_glyph->type == CHAR_GLYPH) | |
2461 x_draw_glyph_string_foreground (prev); | |
2462 else | |
2463 x_draw_composite_glyph_string_foreground (prev); | |
2464 w32_set_clip_rectangle (prev->hdc, NULL); | |
2465 prev->hl = save; | |
91028
d41ffb650865
(x_set_glyph_string_clipping): Use
Jason Rumney <jasonr@gnu.org>
parents:
91005
diff
changeset
|
2466 prev->num_clips = 0; |
90834 | 2467 } |
2468 } | |
2469 | |
2470 if (s->next) | |
2471 { | |
2472 struct glyph_string *next; | |
2473 | |
2474 for (next = s->next; next; next = next->next) | |
2475 if (next->hl != s->hl | |
2476 && next->x - next->left_overhang < s->x + s->width) | |
2477 { | |
2478 /* As next will be drawn while clipped to its own area, | |
2479 we must draw the left_overhang part using s->hl now. */ | |
2480 enum draw_glyphs_face save = next->hl; | |
2481 | |
2482 next->hl = s->hl; | |
2483 x_set_glyph_string_gc (next); | |
2484 x_set_glyph_string_clipping_exactly (s, next); | |
2485 if (next->first_glyph->type == CHAR_GLYPH) | |
2486 x_draw_glyph_string_foreground (next); | |
2487 else | |
2488 x_draw_composite_glyph_string_foreground (next); | |
2489 w32_set_clip_rectangle (next->hdc, NULL); | |
2490 next->hl = save; | |
91028
d41ffb650865
(x_set_glyph_string_clipping): Use
Jason Rumney <jasonr@gnu.org>
parents:
91005
diff
changeset
|
2491 next->num_clips = 0; |
90834 | 2492 } |
2493 } | |
27402
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2494 } |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2495 |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2496 /* Reset clipping. */ |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2497 w32_set_clip_rectangle (s->hdc, NULL); |
91028
d41ffb650865
(x_set_glyph_string_clipping): Use
Jason Rumney <jasonr@gnu.org>
parents:
91005
diff
changeset
|
2498 s->num_clips = 0; |
27402
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 |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2501 |
50231
c8ea5e4b2129
* w32term.c: Remove consolidated defines and code.
Kim F. Storm <storm@cua.dk>
parents:
50163
diff
changeset
|
2502 /* 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
|
2503 |
c8ea5e4b2129
* w32term.c: Remove consolidated defines and code.
Kim F. Storm <storm@cua.dk>
parents:
50163
diff
changeset
|
2504 void |
c8ea5e4b2129
* w32term.c: Remove consolidated defines and code.
Kim F. Storm <storm@cua.dk>
parents:
50163
diff
changeset
|
2505 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
|
2506 struct frame *f; |
c8ea5e4b2129
* w32term.c: Remove consolidated defines and code.
Kim F. Storm <storm@cua.dk>
parents:
50163
diff
changeset
|
2507 int x, y, width, height, shift_by; |
27402
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2508 { |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2509 HDC hdc; |
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 hdc = get_frame_dc (f); |
50231
c8ea5e4b2129
* w32term.c: Remove consolidated defines and code.
Kim F. Storm <storm@cua.dk>
parents:
50163
diff
changeset
|
2512 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
|
2513 hdc, x, y, SRCCOPY); |
c8ea5e4b2129
* w32term.c: Remove consolidated defines and code.
Kim F. Storm <storm@cua.dk>
parents:
50163
diff
changeset
|
2514 |
27402
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2515 release_frame_dc (f, hdc); |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2516 } |
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 |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2519 /* 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
|
2520 for X frames. */ |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2521 |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2522 static void |
83569
86395c339701
(w32_set_terminal_modes, w32_reset_terminal_modes):
Jason Rumney <jasonr@gnu.org>
parents:
83556
diff
changeset
|
2523 x_delete_glyphs (f, n) |
86395c339701
(w32_set_terminal_modes, w32_reset_terminal_modes):
Jason Rumney <jasonr@gnu.org>
parents:
83556
diff
changeset
|
2524 struct frame *f; |
27402
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2525 register int n; |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2526 { |
35000 | 2527 if (! FRAME_W32_P (f)) |
2528 return; | |
2529 | |
27402
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2530 abort (); |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2531 } |
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 |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2534 /* 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
|
2535 frame. Otherwise clear the selected frame. */ |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2536 |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2537 static void |
83569
86395c339701
(w32_set_terminal_modes, w32_reset_terminal_modes):
Jason Rumney <jasonr@gnu.org>
parents:
83556
diff
changeset
|
2538 x_clear_frame (struct frame *f) |
27402
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2539 { |
35000 | 2540 if (! FRAME_W32_P (f)) |
2541 return; | |
2542 | |
27402
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2543 /* 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
|
2544 longer visible. */ |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2545 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
|
2546 output_cursor.hpos = output_cursor.vpos = 0; |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2547 output_cursor.x = -1; |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2548 |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2549 /* 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
|
2550 follow an explicit cursor_to. */ |
13434 | 2551 BLOCK_INPUT; |
2552 | |
16588
481b7874a1e9
Change identifiers of the form win32* to w32*.
Geoff Voelker <voelker@cs.washington.edu>
parents:
16326
diff
changeset
|
2553 w32_clear_window (f); |
13434 | 2554 |
2555 /* We have to clear the scroll bars, too. If we have changed | |
2556 colors or something like that, then they should be notified. */ | |
2557 x_scroll_bar_clear (f); | |
2558 | |
2559 UNBLOCK_INPUT; | |
2560 } | |
27402
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2561 |
13434 | 2562 |
2563 /* Make audible bell. */ | |
2564 | |
21831
6b659713b90b
Forward declare hooks with full function prototypes.
Geoff Voelker <voelker@cs.washington.edu>
parents:
21740
diff
changeset
|
2565 static void |
83569
86395c339701
(w32_set_terminal_modes, w32_reset_terminal_modes):
Jason Rumney <jasonr@gnu.org>
parents:
83556
diff
changeset
|
2566 w32_ring_bell (struct frame *f) |
13434 | 2567 { |
2568 BLOCK_INPUT; | |
2569 | |
35449
98d65e364070
(w32_ring_bell): Only support visible bell on w32
Andrew Innes <andrewi@gnu.org>
parents:
35384
diff
changeset
|
2570 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
|
2571 { |
23fda104cd36
(w32_ring_bell): Flash window correctly.
Geoff Voelker <voelker@cs.washington.edu>
parents:
21885
diff
changeset
|
2572 int i; |
83569
86395c339701
(w32_set_terminal_modes, w32_reset_terminal_modes):
Jason Rumney <jasonr@gnu.org>
parents:
83556
diff
changeset
|
2573 HWND hwnd = FRAME_W32_WINDOW (f); |
22059
23fda104cd36
(w32_ring_bell): Flash window correctly.
Geoff Voelker <voelker@cs.washington.edu>
parents:
21885
diff
changeset
|
2574 |
48218
01e253345507
(w32_draw_fringe_bitmap): Remove unused local variable window.
Juanma Barranquero <lekktu@gmail.com>
parents:
48025
diff
changeset
|
2575 for (i = 0; i < 5; i++) |
22059
23fda104cd36
(w32_ring_bell): Flash window correctly.
Geoff Voelker <voelker@cs.washington.edu>
parents:
21885
diff
changeset
|
2576 { |
23fda104cd36
(w32_ring_bell): Flash window correctly.
Geoff Voelker <voelker@cs.washington.edu>
parents:
21885
diff
changeset
|
2577 FlashWindow (hwnd, TRUE); |
23fda104cd36
(w32_ring_bell): Flash window correctly.
Geoff Voelker <voelker@cs.washington.edu>
parents:
21885
diff
changeset
|
2578 Sleep (10); |
23fda104cd36
(w32_ring_bell): Flash window correctly.
Geoff Voelker <voelker@cs.washington.edu>
parents:
21885
diff
changeset
|
2579 } |
23fda104cd36
(w32_ring_bell): Flash window correctly.
Geoff Voelker <voelker@cs.washington.edu>
parents:
21885
diff
changeset
|
2580 FlashWindow (hwnd, FALSE); |
23fda104cd36
(w32_ring_bell): Flash window correctly.
Geoff Voelker <voelker@cs.washington.edu>
parents:
21885
diff
changeset
|
2581 } |
13434 | 2582 else |
83569
86395c339701
(w32_set_terminal_modes, w32_reset_terminal_modes):
Jason Rumney <jasonr@gnu.org>
parents:
83556
diff
changeset
|
2583 w32_sys_ring_bell (f); |
13434 | 2584 |
2585 UNBLOCK_INPUT; | |
2586 } | |
27402
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2587 |
13434 | 2588 |
2589 /* Specify how many text lines, from the top of the window, | |
2590 should be affected by insert-lines and delete-lines operations. | |
2591 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
|
2592 that is bounded by calls to x_update_begin and x_update_end. */ |
13434 | 2593 |
21831
6b659713b90b
Forward declare hooks with full function prototypes.
Geoff Voelker <voelker@cs.washington.edu>
parents:
21740
diff
changeset
|
2594 static void |
16588
481b7874a1e9
Change identifiers of the form win32* to w32*.
Geoff Voelker <voelker@cs.washington.edu>
parents:
16326
diff
changeset
|
2595 w32_set_terminal_window (n) |
13434 | 2596 register int n; |
2597 { | |
27402
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2598 /* This function intentionally left blank. */ |
13434 | 2599 } |
27402
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2600 |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2601 |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2602 /*********************************************************************** |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2603 Line Dance |
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 /* 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
|
2607 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
|
2608 |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2609 static void |
83569
86395c339701
(w32_set_terminal_modes, w32_reset_terminal_modes):
Jason Rumney <jasonr@gnu.org>
parents:
83556
diff
changeset
|
2610 x_ins_del_lines (f, vpos, n) |
86395c339701
(w32_set_terminal_modes, w32_reset_terminal_modes):
Jason Rumney <jasonr@gnu.org>
parents:
83556
diff
changeset
|
2611 struct frame *f; |
27402
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2612 int vpos, n; |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2613 { |
35000 | 2614 if (! FRAME_W32_P (f)) |
2615 return; | |
2616 | |
27402
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2617 abort (); |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2618 } |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2619 |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2620 |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2621 /* 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
|
2622 |
6b659713b90b
Forward declare hooks with full function prototypes.
Geoff Voelker <voelker@cs.washington.edu>
parents:
21740
diff
changeset
|
2623 static void |
27402
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2624 x_scroll_run (w, run) |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2625 struct window *w; |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2626 struct run *run; |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2627 { |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2628 struct frame *f = XFRAME (w->frame); |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2629 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
|
2630 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
|
2631 HRGN expect_dirty; |
27402
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 /* Get frame-relative bounding box of the text display area of W, |
41125 | 2634 without mode lines. Include in this box the left and right |
2635 fringes of W. */ | |
27402
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2636 window_box (w, -1, &x, &y, &width, &height); |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2637 |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2638 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
|
2639 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
|
2640 bottom_y = y + height; |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2641 |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2642 if (to_y < from_y) |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2643 { |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2644 /* 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
|
2645 line at the bottom. */ |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2646 if (from_y + run->height > bottom_y) |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2647 height = bottom_y - from_y; |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2648 else |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2649 height = run->height; |
42934
b3ee5e92548a
(x_scroll_run): Use ScrollWindowEx in place of BitBlt.
Jason Rumney <jasonr@gnu.org>
parents:
42919
diff
changeset
|
2650 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
|
2651 } |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2652 else |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2653 { |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2654 /* 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
|
2655 at the bottom. */ |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2656 if (to_y + run->height > bottom_y) |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2657 height = bottom_y - to_y; |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2658 else |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2659 height = run->height; |
42934
b3ee5e92548a
(x_scroll_run): Use ScrollWindowEx in place of BitBlt.
Jason Rumney <jasonr@gnu.org>
parents:
42919
diff
changeset
|
2660 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
|
2661 } |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2662 |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2663 BLOCK_INPUT; |
48218
01e253345507
(w32_draw_fringe_bitmap): Remove unused local variable window.
Juanma Barranquero <lekktu@gmail.com>
parents:
48025
diff
changeset
|
2664 |
27402
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2665 /* 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
|
2666 updated_window = w; |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2667 x_clear_cursor (w); |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2668 |
42934
b3ee5e92548a
(x_scroll_run): Use ScrollWindowEx in place of BitBlt.
Jason Rumney <jasonr@gnu.org>
parents:
42919
diff
changeset
|
2669 { |
b3ee5e92548a
(x_scroll_run): Use ScrollWindowEx in place of BitBlt.
Jason Rumney <jasonr@gnu.org>
parents:
42919
diff
changeset
|
2670 RECT from; |
b3ee5e92548a
(x_scroll_run): Use ScrollWindowEx in place of BitBlt.
Jason Rumney <jasonr@gnu.org>
parents:
42919
diff
changeset
|
2671 RECT to; |
b3ee5e92548a
(x_scroll_run): Use ScrollWindowEx in place of BitBlt.
Jason Rumney <jasonr@gnu.org>
parents:
42919
diff
changeset
|
2672 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
|
2673 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
|
2674 |
b3ee5e92548a
(x_scroll_run): Use ScrollWindowEx in place of BitBlt.
Jason Rumney <jasonr@gnu.org>
parents:
42919
diff
changeset
|
2675 from.left = to.left = x; |
b3ee5e92548a
(x_scroll_run): Use ScrollWindowEx in place of BitBlt.
Jason Rumney <jasonr@gnu.org>
parents:
42919
diff
changeset
|
2676 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
|
2677 from.top = from_y; |
b3ee5e92548a
(x_scroll_run): Use ScrollWindowEx in place of BitBlt.
Jason Rumney <jasonr@gnu.org>
parents:
42919
diff
changeset
|
2678 from.bottom = from_y + height; |
b3ee5e92548a
(x_scroll_run): Use ScrollWindowEx in place of BitBlt.
Jason Rumney <jasonr@gnu.org>
parents:
42919
diff
changeset
|
2679 to.top = y; |
b3ee5e92548a
(x_scroll_run): Use ScrollWindowEx in place of BitBlt.
Jason Rumney <jasonr@gnu.org>
parents:
42919
diff
changeset
|
2680 to.bottom = bottom_y; |
b3ee5e92548a
(x_scroll_run): Use ScrollWindowEx in place of BitBlt.
Jason Rumney <jasonr@gnu.org>
parents:
42919
diff
changeset
|
2681 |
b3ee5e92548a
(x_scroll_run): Use ScrollWindowEx in place of BitBlt.
Jason Rumney <jasonr@gnu.org>
parents:
42919
diff
changeset
|
2682 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
|
2683 NULL, SW_INVALIDATE); |
b3ee5e92548a
(x_scroll_run): Use ScrollWindowEx in place of BitBlt.
Jason Rumney <jasonr@gnu.org>
parents:
42919
diff
changeset
|
2684 |
b3ee5e92548a
(x_scroll_run): Use ScrollWindowEx in place of BitBlt.
Jason Rumney <jasonr@gnu.org>
parents:
42919
diff
changeset
|
2685 /* 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
|
2686 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
|
2687 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
|
2688 |
b3ee5e92548a
(x_scroll_run): Use ScrollWindowEx in place of BitBlt.
Jason Rumney <jasonr@gnu.org>
parents:
42919
diff
changeset
|
2689 /* 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
|
2690 if (!EqualRgn (combined, expect_dirty)) |
b3ee5e92548a
(x_scroll_run): Use ScrollWindowEx in place of BitBlt.
Jason Rumney <jasonr@gnu.org>
parents:
42919
diff
changeset
|
2691 SET_FRAME_GARBAGED (f); |
57837
d2354c6afd6d
Delete region objects after use.
Jason Rumney <jasonr@gnu.org>
parents:
57626
diff
changeset
|
2692 |
d2354c6afd6d
Delete region objects after use.
Jason Rumney <jasonr@gnu.org>
parents:
57626
diff
changeset
|
2693 DeleteObject (dirty); |
d2354c6afd6d
Delete region objects after use.
Jason Rumney <jasonr@gnu.org>
parents:
57626
diff
changeset
|
2694 DeleteObject (combined); |
42934
b3ee5e92548a
(x_scroll_run): Use ScrollWindowEx in place of BitBlt.
Jason Rumney <jasonr@gnu.org>
parents:
42919
diff
changeset
|
2695 } |
b3ee5e92548a
(x_scroll_run): Use ScrollWindowEx in place of BitBlt.
Jason Rumney <jasonr@gnu.org>
parents:
42919
diff
changeset
|
2696 |
27402
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2697 UNBLOCK_INPUT; |
57837
d2354c6afd6d
Delete region objects after use.
Jason Rumney <jasonr@gnu.org>
parents:
57626
diff
changeset
|
2698 DeleteObject (expect_dirty); |
27402
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2699 } |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2700 |
29321
8e2be36bb1c6
Format and doc changes to bring closer to xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
28369
diff
changeset
|
2701 |
27402
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2702 |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2703 /*********************************************************************** |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2704 Exposure Events |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2705 ***********************************************************************/ |
48218
01e253345507
(w32_draw_fringe_bitmap): Remove unused local variable window.
Juanma Barranquero <lekktu@gmail.com>
parents:
48025
diff
changeset
|
2706 |
13434 | 2707 static void |
2708 frame_highlight (f) | |
2709 struct frame *f; | |
2710 { | |
27402
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2711 x_update_cursor (f, 1); |
96403
4b6d1b55f59c
* w32term.c (pfnGetFontUnicodeRanges): Remove unused function pointer.
Jason Rumney <jasonr@gnu.org>
parents:
96376
diff
changeset
|
2712 x_set_frame_alpha (f); |
13434 | 2713 } |
2714 | |
2715 static void | |
2716 frame_unhighlight (f) | |
2717 struct frame *f; | |
2718 { | |
27402
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2719 x_update_cursor (f, 1); |
96403
4b6d1b55f59c
* w32term.c (pfnGetFontUnicodeRanges): Remove unused function pointer.
Jason Rumney <jasonr@gnu.org>
parents:
96376
diff
changeset
|
2720 x_set_frame_alpha (f); |
27402
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2721 } |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2722 |
13434 | 2723 /* The focus has changed. Update the frames as necessary to reflect |
2724 the new situation. Note that we can't change the selected frame | |
2725 here, because the Lisp code we are interrupting might become confused. | |
2726 Each event gets marked with the frame in which it occurred, so the | |
2727 Lisp code can tell when the switch took place by examining the events. */ | |
2728 | |
29321
8e2be36bb1c6
Format and doc changes to bring closer to xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
28369
diff
changeset
|
2729 static void |
13434 | 2730 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
|
2731 struct w32_display_info *dpyinfo; |
13434 | 2732 struct frame *frame; |
2733 { | |
16588
481b7874a1e9
Change identifiers of the form win32* to w32*.
Geoff Voelker <voelker@cs.washington.edu>
parents:
16326
diff
changeset
|
2734 struct frame *old_focus = dpyinfo->w32_focus_frame; |
13434 | 2735 |
16588
481b7874a1e9
Change identifiers of the form win32* to w32*.
Geoff Voelker <voelker@cs.washington.edu>
parents:
16326
diff
changeset
|
2736 if (frame != dpyinfo->w32_focus_frame) |
13434 | 2737 { |
2738 /* 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
|
2739 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
|
2740 dpyinfo->w32_focus_frame = frame; |
13434 | 2741 |
2742 if (old_focus && old_focus->auto_lower) | |
2743 x_lower_frame (old_focus); | |
2744 | |
16588
481b7874a1e9
Change identifiers of the form win32* to w32*.
Geoff Voelker <voelker@cs.washington.edu>
parents:
16326
diff
changeset
|
2745 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
|
2746 pending_autoraise_frame = dpyinfo->w32_focus_frame; |
13434 | 2747 else |
2748 pending_autoraise_frame = 0; | |
2749 } | |
2750 | |
2751 x_frame_rehighlight (dpyinfo); | |
2752 } | |
2753 | |
60948
03a8b8b9ebef
(x_focus_changed, w32_detect_focus_change): New functions.
Jason Rumney <jasonr@gnu.org>
parents:
59748
diff
changeset
|
2754 |
03a8b8b9ebef
(x_focus_changed, w32_detect_focus_change): New functions.
Jason Rumney <jasonr@gnu.org>
parents:
59748
diff
changeset
|
2755 /* 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
|
2756 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
|
2757 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
|
2758 |
03a8b8b9ebef
(x_focus_changed, w32_detect_focus_change): New functions.
Jason Rumney <jasonr@gnu.org>
parents:
59748
diff
changeset
|
2759 static void |
03a8b8b9ebef
(x_focus_changed, w32_detect_focus_change): New functions.
Jason Rumney <jasonr@gnu.org>
parents:
59748
diff
changeset
|
2760 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
|
2761 int type; |
03a8b8b9ebef
(x_focus_changed, w32_detect_focus_change): New functions.
Jason Rumney <jasonr@gnu.org>
parents:
59748
diff
changeset
|
2762 int state; |
03a8b8b9ebef
(x_focus_changed, w32_detect_focus_change): New functions.
Jason Rumney <jasonr@gnu.org>
parents:
59748
diff
changeset
|
2763 struct w32_display_info *dpyinfo; |
03a8b8b9ebef
(x_focus_changed, w32_detect_focus_change): New functions.
Jason Rumney <jasonr@gnu.org>
parents:
59748
diff
changeset
|
2764 struct frame *frame; |
03a8b8b9ebef
(x_focus_changed, w32_detect_focus_change): New functions.
Jason Rumney <jasonr@gnu.org>
parents:
59748
diff
changeset
|
2765 struct input_event *bufp; |
03a8b8b9ebef
(x_focus_changed, w32_detect_focus_change): New functions.
Jason Rumney <jasonr@gnu.org>
parents:
59748
diff
changeset
|
2766 { |
03a8b8b9ebef
(x_focus_changed, w32_detect_focus_change): New functions.
Jason Rumney <jasonr@gnu.org>
parents:
59748
diff
changeset
|
2767 if (type == WM_SETFOCUS) |
03a8b8b9ebef
(x_focus_changed, w32_detect_focus_change): New functions.
Jason Rumney <jasonr@gnu.org>
parents:
59748
diff
changeset
|
2768 { |
03a8b8b9ebef
(x_focus_changed, w32_detect_focus_change): New functions.
Jason Rumney <jasonr@gnu.org>
parents:
59748
diff
changeset
|
2769 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
|
2770 { |
03a8b8b9ebef
(x_focus_changed, w32_detect_focus_change): New functions.
Jason Rumney <jasonr@gnu.org>
parents:
59748
diff
changeset
|
2771 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
|
2772 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
|
2773 |
03a8b8b9ebef
(x_focus_changed, w32_detect_focus_change): New functions.
Jason Rumney <jasonr@gnu.org>
parents:
59748
diff
changeset
|
2774 /* 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
|
2775 for a switch-frame event we don't need. */ |
90970
3371fc48749b
Replace uses of GC_* macros with the non-GC_ versions.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
90923
diff
changeset
|
2776 if (NILP (Vterminal_frame) |
3371fc48749b
Replace uses of GC_* macros with the non-GC_ versions.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
90923
diff
changeset
|
2777 && CONSP (Vframe_list) |
3371fc48749b
Replace uses of GC_* macros with the non-GC_ versions.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
90923
diff
changeset
|
2778 && !NILP (XCDR (Vframe_list))) |
60948
03a8b8b9ebef
(x_focus_changed, w32_detect_focus_change): New functions.
Jason Rumney <jasonr@gnu.org>
parents:
59748
diff
changeset
|
2779 { |
03a8b8b9ebef
(x_focus_changed, w32_detect_focus_change): New functions.
Jason Rumney <jasonr@gnu.org>
parents:
59748
diff
changeset
|
2780 bufp->kind = FOCUS_IN_EVENT; |
03a8b8b9ebef
(x_focus_changed, w32_detect_focus_change): New functions.
Jason Rumney <jasonr@gnu.org>
parents:
59748
diff
changeset
|
2781 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
|
2782 } |
03a8b8b9ebef
(x_focus_changed, w32_detect_focus_change): New functions.
Jason Rumney <jasonr@gnu.org>
parents:
59748
diff
changeset
|
2783 } |
03a8b8b9ebef
(x_focus_changed, w32_detect_focus_change): New functions.
Jason Rumney <jasonr@gnu.org>
parents:
59748
diff
changeset
|
2784 |
03a8b8b9ebef
(x_focus_changed, w32_detect_focus_change): New functions.
Jason Rumney <jasonr@gnu.org>
parents:
59748
diff
changeset
|
2785 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
|
2786 |
03a8b8b9ebef
(x_focus_changed, w32_detect_focus_change): New functions.
Jason Rumney <jasonr@gnu.org>
parents:
59748
diff
changeset
|
2787 /* TODO: IME focus? */ |
03a8b8b9ebef
(x_focus_changed, w32_detect_focus_change): New functions.
Jason Rumney <jasonr@gnu.org>
parents:
59748
diff
changeset
|
2788 } |
03a8b8b9ebef
(x_focus_changed, w32_detect_focus_change): New functions.
Jason Rumney <jasonr@gnu.org>
parents:
59748
diff
changeset
|
2789 else if (type == WM_KILLFOCUS) |
03a8b8b9ebef
(x_focus_changed, w32_detect_focus_change): New functions.
Jason Rumney <jasonr@gnu.org>
parents:
59748
diff
changeset
|
2790 { |
03a8b8b9ebef
(x_focus_changed, w32_detect_focus_change): New functions.
Jason Rumney <jasonr@gnu.org>
parents:
59748
diff
changeset
|
2791 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
|
2792 |
03a8b8b9ebef
(x_focus_changed, w32_detect_focus_change): New functions.
Jason Rumney <jasonr@gnu.org>
parents:
59748
diff
changeset
|
2793 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
|
2794 { |
03a8b8b9ebef
(x_focus_changed, w32_detect_focus_change): New functions.
Jason Rumney <jasonr@gnu.org>
parents:
59748
diff
changeset
|
2795 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
|
2796 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
|
2797 } |
03a8b8b9ebef
(x_focus_changed, w32_detect_focus_change): New functions.
Jason Rumney <jasonr@gnu.org>
parents:
59748
diff
changeset
|
2798 |
03a8b8b9ebef
(x_focus_changed, w32_detect_focus_change): New functions.
Jason Rumney <jasonr@gnu.org>
parents:
59748
diff
changeset
|
2799 /* TODO: IME focus? */ |
03a8b8b9ebef
(x_focus_changed, w32_detect_focus_change): New functions.
Jason Rumney <jasonr@gnu.org>
parents:
59748
diff
changeset
|
2800 } |
03a8b8b9ebef
(x_focus_changed, w32_detect_focus_change): New functions.
Jason Rumney <jasonr@gnu.org>
parents:
59748
diff
changeset
|
2801 } |
03a8b8b9ebef
(x_focus_changed, w32_detect_focus_change): New functions.
Jason Rumney <jasonr@gnu.org>
parents:
59748
diff
changeset
|
2802 |
03a8b8b9ebef
(x_focus_changed, w32_detect_focus_change): New functions.
Jason Rumney <jasonr@gnu.org>
parents:
59748
diff
changeset
|
2803 |
03a8b8b9ebef
(x_focus_changed, w32_detect_focus_change): New functions.
Jason Rumney <jasonr@gnu.org>
parents:
59748
diff
changeset
|
2804 /* 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
|
2805 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
|
2806 |
03a8b8b9ebef
(x_focus_changed, w32_detect_focus_change): New functions.
Jason Rumney <jasonr@gnu.org>
parents:
59748
diff
changeset
|
2807 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
|
2808 |
03a8b8b9ebef
(x_focus_changed, w32_detect_focus_change): New functions.
Jason Rumney <jasonr@gnu.org>
parents:
59748
diff
changeset
|
2809 static void |
03a8b8b9ebef
(x_focus_changed, w32_detect_focus_change): New functions.
Jason Rumney <jasonr@gnu.org>
parents:
59748
diff
changeset
|
2810 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
|
2811 struct w32_display_info *dpyinfo; |
03a8b8b9ebef
(x_focus_changed, w32_detect_focus_change): New functions.
Jason Rumney <jasonr@gnu.org>
parents:
59748
diff
changeset
|
2812 W32Msg *event; |
03a8b8b9ebef
(x_focus_changed, w32_detect_focus_change): New functions.
Jason Rumney <jasonr@gnu.org>
parents:
59748
diff
changeset
|
2813 struct input_event *bufp; |
03a8b8b9ebef
(x_focus_changed, w32_detect_focus_change): New functions.
Jason Rumney <jasonr@gnu.org>
parents:
59748
diff
changeset
|
2814 { |
03a8b8b9ebef
(x_focus_changed, w32_detect_focus_change): New functions.
Jason Rumney <jasonr@gnu.org>
parents:
59748
diff
changeset
|
2815 struct frame *frame; |
03a8b8b9ebef
(x_focus_changed, w32_detect_focus_change): New functions.
Jason Rumney <jasonr@gnu.org>
parents:
59748
diff
changeset
|
2816 |
03a8b8b9ebef
(x_focus_changed, w32_detect_focus_change): New functions.
Jason Rumney <jasonr@gnu.org>
parents:
59748
diff
changeset
|
2817 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
|
2818 if (! frame) |
03a8b8b9ebef
(x_focus_changed, w32_detect_focus_change): New functions.
Jason Rumney <jasonr@gnu.org>
parents:
59748
diff
changeset
|
2819 return; |
03a8b8b9ebef
(x_focus_changed, w32_detect_focus_change): New functions.
Jason Rumney <jasonr@gnu.org>
parents:
59748
diff
changeset
|
2820 |
03a8b8b9ebef
(x_focus_changed, w32_detect_focus_change): New functions.
Jason Rumney <jasonr@gnu.org>
parents:
59748
diff
changeset
|
2821 /* 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
|
2822 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
|
2823 (event->msg.message == WM_KILLFOCUS ? |
03a8b8b9ebef
(x_focus_changed, w32_detect_focus_change): New functions.
Jason Rumney <jasonr@gnu.org>
parents:
59748
diff
changeset
|
2824 FOCUS_IMPLICIT : FOCUS_EXPLICIT), |
03a8b8b9ebef
(x_focus_changed, w32_detect_focus_change): New functions.
Jason Rumney <jasonr@gnu.org>
parents:
59748
diff
changeset
|
2825 dpyinfo, frame, bufp); |
03a8b8b9ebef
(x_focus_changed, w32_detect_focus_change): New functions.
Jason Rumney <jasonr@gnu.org>
parents:
59748
diff
changeset
|
2826 } |
03a8b8b9ebef
(x_focus_changed, w32_detect_focus_change): New functions.
Jason Rumney <jasonr@gnu.org>
parents:
59748
diff
changeset
|
2827 |
03a8b8b9ebef
(x_focus_changed, w32_detect_focus_change): New functions.
Jason Rumney <jasonr@gnu.org>
parents:
59748
diff
changeset
|
2828 |
13434 | 2829 /* Handle an event saying the mouse has moved out of an Emacs frame. */ |
2830 | |
2831 void | |
2832 x_mouse_leave (dpyinfo) | |
16588
481b7874a1e9
Change identifiers of the form win32* to w32*.
Geoff Voelker <voelker@cs.washington.edu>
parents:
16326
diff
changeset
|
2833 struct w32_display_info *dpyinfo; |
13434 | 2834 { |
16588
481b7874a1e9
Change identifiers of the form win32* to w32*.
Geoff Voelker <voelker@cs.washington.edu>
parents:
16326
diff
changeset
|
2835 x_new_focus_frame (dpyinfo, dpyinfo->w32_focus_event_frame); |
13434 | 2836 } |
2837 | |
2838 /* The focus has changed, or we have redirected a frame's focus to | |
2839 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
|
2840 mini-buffer frame). Shift the highlight as appropriate. |
13434 | 2841 |
2842 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
|
2843 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
|
2844 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
|
2845 |
13434 | 2846 static void |
16588
481b7874a1e9
Change identifiers of the form win32* to w32*.
Geoff Voelker <voelker@cs.washington.edu>
parents:
16326
diff
changeset
|
2847 w32_frame_rehighlight (frame) |
13434 | 2848 struct frame *frame; |
2849 { | |
35000 | 2850 if (! FRAME_W32_P (frame)) |
2851 return; | |
16588
481b7874a1e9
Change identifiers of the form win32* to w32*.
Geoff Voelker <voelker@cs.washington.edu>
parents:
16326
diff
changeset
|
2852 x_frame_rehighlight (FRAME_W32_DISPLAY_INFO (frame)); |
13434 | 2853 } |
2854 | |
2855 static void | |
2856 x_frame_rehighlight (dpyinfo) | |
16588
481b7874a1e9
Change identifiers of the form win32* to w32*.
Geoff Voelker <voelker@cs.washington.edu>
parents:
16326
diff
changeset
|
2857 struct w32_display_info *dpyinfo; |
13434 | 2858 { |
47148
be0335657440
Changed all occurrences of w32_highlight_frame with x_highlight_frame.
Kim F. Storm <storm@cua.dk>
parents:
47143
diff
changeset
|
2859 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
|
2860 |
481b7874a1e9
Change identifiers of the form win32* to w32*.
Geoff Voelker <voelker@cs.washington.edu>
parents:
16326
diff
changeset
|
2861 if (dpyinfo->w32_focus_frame) |
13434 | 2862 { |
47148
be0335657440
Changed all occurrences of w32_highlight_frame with x_highlight_frame.
Kim F. Storm <storm@cua.dk>
parents:
47143
diff
changeset
|
2863 dpyinfo->x_highlight_frame |
90970
3371fc48749b
Replace uses of GC_* macros with the non-GC_ versions.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
90923
diff
changeset
|
2864 = ((FRAMEP (FRAME_FOCUS_FRAME (dpyinfo->w32_focus_frame))) |
16588
481b7874a1e9
Change identifiers of the form win32* to w32*.
Geoff Voelker <voelker@cs.washington.edu>
parents:
16326
diff
changeset
|
2865 ? 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
|
2866 : 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
|
2867 if (! FRAME_LIVE_P (dpyinfo->x_highlight_frame)) |
13434 | 2868 { |
16588
481b7874a1e9
Change identifiers of the form win32* to w32*.
Geoff Voelker <voelker@cs.washington.edu>
parents:
16326
diff
changeset
|
2869 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
|
2870 dpyinfo->x_highlight_frame = dpyinfo->w32_focus_frame; |
13434 | 2871 } |
2872 } | |
2873 else | |
47148
be0335657440
Changed all occurrences of w32_highlight_frame with x_highlight_frame.
Kim F. Storm <storm@cua.dk>
parents:
47143
diff
changeset
|
2874 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
|
2875 |
be0335657440
Changed all occurrences of w32_highlight_frame with x_highlight_frame.
Kim F. Storm <storm@cua.dk>
parents:
47143
diff
changeset
|
2876 if (dpyinfo->x_highlight_frame != old_highlight) |
13434 | 2877 { |
2878 if (old_highlight) | |
2879 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
|
2880 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
|
2881 frame_highlight (dpyinfo->x_highlight_frame); |
13434 | 2882 } |
2883 } | |
2884 | |
2885 /* Keyboard processing - modifier keys, etc. */ | |
2886 | |
2887 /* Convert a keysym to its name. */ | |
2888 | |
2889 char * | |
2890 x_get_keysym_name (keysym) | |
2891 int keysym; | |
2892 { | |
2893 /* Make static so we can always return it */ | |
2894 static char value[100]; | |
2895 | |
2896 BLOCK_INPUT; | |
32022
1f26caa05cd7
(w32_char_font_type, w32_encode_char, x_produce_glyphs): Distinguish
Jason Rumney <jasonr@gnu.org>
parents:
31624
diff
changeset
|
2897 GetKeyNameText (keysym, value, 100); |
13434 | 2898 UNBLOCK_INPUT; |
2899 | |
2900 return value; | |
2901 } | |
29321
8e2be36bb1c6
Format and doc changes to bring closer to xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
28369
diff
changeset
|
2902 |
103500
d0e3ea40717c
(keyboard_codepage): New static variable.
Jason Rumney <jasonr@gnu.org>
parents:
103023
diff
changeset
|
2903 static int codepage_for_locale(LCID locale) |
d0e3ea40717c
(keyboard_codepage): New static variable.
Jason Rumney <jasonr@gnu.org>
parents:
103023
diff
changeset
|
2904 { |
d0e3ea40717c
(keyboard_codepage): New static variable.
Jason Rumney <jasonr@gnu.org>
parents:
103023
diff
changeset
|
2905 char cp[20]; |
d0e3ea40717c
(keyboard_codepage): New static variable.
Jason Rumney <jasonr@gnu.org>
parents:
103023
diff
changeset
|
2906 |
d0e3ea40717c
(keyboard_codepage): New static variable.
Jason Rumney <jasonr@gnu.org>
parents:
103023
diff
changeset
|
2907 if (GetLocaleInfo (locale, LOCALE_IDEFAULTANSICODEPAGE, cp, 20) > 0) |
d0e3ea40717c
(keyboard_codepage): New static variable.
Jason Rumney <jasonr@gnu.org>
parents:
103023
diff
changeset
|
2908 return atoi (cp); |
d0e3ea40717c
(keyboard_codepage): New static variable.
Jason Rumney <jasonr@gnu.org>
parents:
103023
diff
changeset
|
2909 else |
d0e3ea40717c
(keyboard_codepage): New static variable.
Jason Rumney <jasonr@gnu.org>
parents:
103023
diff
changeset
|
2910 return CP_ACP; |
d0e3ea40717c
(keyboard_codepage): New static variable.
Jason Rumney <jasonr@gnu.org>
parents:
103023
diff
changeset
|
2911 } |
29321
8e2be36bb1c6
Format and doc changes to bring closer to xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
28369
diff
changeset
|
2912 |
13434 | 2913 |
2914 /* Mouse clicks and mouse movement. Rah. */ | |
2915 | |
42720
1217a83a82e4
(parse_button): New parameter xbutton. Callers changed.
Jason Rumney <jasonr@gnu.org>
parents:
42675
diff
changeset
|
2916 /* 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
|
2917 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
|
2918 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
|
2919 BOOL |
42720
1217a83a82e4
(parse_button): New parameter xbutton. Callers changed.
Jason Rumney <jasonr@gnu.org>
parents:
42675
diff
changeset
|
2920 parse_button (message, xbutton, pbutton, pup) |
13434 | 2921 int message; |
42720
1217a83a82e4
(parse_button): New parameter xbutton. Callers changed.
Jason Rumney <jasonr@gnu.org>
parents:
42675
diff
changeset
|
2922 int xbutton; |
13434 | 2923 int * pbutton; |
2924 int * pup; | |
2925 { | |
2926 int button = 0; | |
2927 int up = 0; | |
48218
01e253345507
(w32_draw_fringe_bitmap): Remove unused local variable window.
Juanma Barranquero <lekktu@gmail.com>
parents:
48025
diff
changeset
|
2928 |
13434 | 2929 switch (message) |
2930 { | |
2931 case WM_LBUTTONDOWN: | |
2932 button = 0; | |
2933 up = 0; | |
2934 break; | |
2935 case WM_LBUTTONUP: | |
2936 button = 0; | |
2937 up = 1; | |
2938 break; | |
2939 case WM_MBUTTONDOWN: | |
16588
481b7874a1e9
Change identifiers of the form win32* to w32*.
Geoff Voelker <voelker@cs.washington.edu>
parents:
16326
diff
changeset
|
2940 if (NILP (Vw32_swap_mouse_buttons)) |
15151
ed6ddfc0d954
(Vwindow_system): Declared.
Geoff Voelker <voelker@cs.washington.edu>
parents:
15035
diff
changeset
|
2941 button = 1; |
ed6ddfc0d954
(Vwindow_system): Declared.
Geoff Voelker <voelker@cs.washington.edu>
parents:
15035
diff
changeset
|
2942 else |
ed6ddfc0d954
(Vwindow_system): Declared.
Geoff Voelker <voelker@cs.washington.edu>
parents:
15035
diff
changeset
|
2943 button = 2; |
13434 | 2944 up = 0; |
2945 break; | |
2946 case WM_MBUTTONUP: | |
16588
481b7874a1e9
Change identifiers of the form win32* to w32*.
Geoff Voelker <voelker@cs.washington.edu>
parents:
16326
diff
changeset
|
2947 if (NILP (Vw32_swap_mouse_buttons)) |
15151
ed6ddfc0d954
(Vwindow_system): Declared.
Geoff Voelker <voelker@cs.washington.edu>
parents:
15035
diff
changeset
|
2948 button = 1; |
ed6ddfc0d954
(Vwindow_system): Declared.
Geoff Voelker <voelker@cs.washington.edu>
parents:
15035
diff
changeset
|
2949 else |
ed6ddfc0d954
(Vwindow_system): Declared.
Geoff Voelker <voelker@cs.washington.edu>
parents:
15035
diff
changeset
|
2950 button = 2; |
13434 | 2951 up = 1; |
2952 break; | |
2953 case WM_RBUTTONDOWN: | |
16588
481b7874a1e9
Change identifiers of the form win32* to w32*.
Geoff Voelker <voelker@cs.washington.edu>
parents:
16326
diff
changeset
|
2954 if (NILP (Vw32_swap_mouse_buttons)) |
15151
ed6ddfc0d954
(Vwindow_system): Declared.
Geoff Voelker <voelker@cs.washington.edu>
parents:
15035
diff
changeset
|
2955 button = 2; |
ed6ddfc0d954
(Vwindow_system): Declared.
Geoff Voelker <voelker@cs.washington.edu>
parents:
15035
diff
changeset
|
2956 else |
ed6ddfc0d954
(Vwindow_system): Declared.
Geoff Voelker <voelker@cs.washington.edu>
parents:
15035
diff
changeset
|
2957 button = 1; |
13434 | 2958 up = 0; |
2959 break; | |
2960 case WM_RBUTTONUP: | |
16588
481b7874a1e9
Change identifiers of the form win32* to w32*.
Geoff Voelker <voelker@cs.washington.edu>
parents:
16326
diff
changeset
|
2961 if (NILP (Vw32_swap_mouse_buttons)) |
15151
ed6ddfc0d954
(Vwindow_system): Declared.
Geoff Voelker <voelker@cs.washington.edu>
parents:
15035
diff
changeset
|
2962 button = 2; |
ed6ddfc0d954
(Vwindow_system): Declared.
Geoff Voelker <voelker@cs.washington.edu>
parents:
15035
diff
changeset
|
2963 else |
ed6ddfc0d954
(Vwindow_system): Declared.
Geoff Voelker <voelker@cs.washington.edu>
parents:
15035
diff
changeset
|
2964 button = 1; |
13434 | 2965 up = 1; |
2966 break; | |
42720
1217a83a82e4
(parse_button): New parameter xbutton. Callers changed.
Jason Rumney <jasonr@gnu.org>
parents:
42675
diff
changeset
|
2967 case WM_XBUTTONDOWN: |
1217a83a82e4
(parse_button): New parameter xbutton. Callers changed.
Jason Rumney <jasonr@gnu.org>
parents:
42675
diff
changeset
|
2968 button = xbutton + 2; |
1217a83a82e4
(parse_button): New parameter xbutton. Callers changed.
Jason Rumney <jasonr@gnu.org>
parents:
42675
diff
changeset
|
2969 up = 0; |
1217a83a82e4
(parse_button): New parameter xbutton. Callers changed.
Jason Rumney <jasonr@gnu.org>
parents:
42675
diff
changeset
|
2970 break; |
1217a83a82e4
(parse_button): New parameter xbutton. Callers changed.
Jason Rumney <jasonr@gnu.org>
parents:
42675
diff
changeset
|
2971 case WM_XBUTTONUP: |
1217a83a82e4
(parse_button): New parameter xbutton. Callers changed.
Jason Rumney <jasonr@gnu.org>
parents:
42675
diff
changeset
|
2972 button = xbutton + 2; |
1217a83a82e4
(parse_button): New parameter xbutton. Callers changed.
Jason Rumney <jasonr@gnu.org>
parents:
42675
diff
changeset
|
2973 up = 1; |
1217a83a82e4
(parse_button): New parameter xbutton. Callers changed.
Jason Rumney <jasonr@gnu.org>
parents:
42675
diff
changeset
|
2974 break; |
13434 | 2975 default: |
2976 return (FALSE); | |
2977 } | |
48218
01e253345507
(w32_draw_fringe_bitmap): Remove unused local variable window.
Juanma Barranquero <lekktu@gmail.com>
parents:
48025
diff
changeset
|
2978 |
13434 | 2979 if (pup) *pup = up; |
2980 if (pbutton) *pbutton = button; | |
48218
01e253345507
(w32_draw_fringe_bitmap): Remove unused local variable window.
Juanma Barranquero <lekktu@gmail.com>
parents:
48025
diff
changeset
|
2981 |
13434 | 2982 return (TRUE); |
2983 } | |
2984 | |
2985 | |
2986 /* Prepare a mouse-event in *RESULT for placement in the input queue. | |
2987 | |
2988 If the event is a button press, then note that we have grabbed | |
2989 the mouse. */ | |
2990 | |
30240
2c2a7ebd2c15
(help_echo_object, help_echo_pos): New variables.
Jason Rumney <jasonr@gnu.org>
parents:
30199
diff
changeset
|
2991 static Lisp_Object |
13434 | 2992 construct_mouse_click (result, msg, f) |
2993 struct input_event *result; | |
16588
481b7874a1e9
Change identifiers of the form win32* to w32*.
Geoff Voelker <voelker@cs.washington.edu>
parents:
16326
diff
changeset
|
2994 W32Msg *msg; |
13434 | 2995 struct frame *f; |
2996 { | |
2997 int button; | |
2998 int up; | |
2999 | |
42720
1217a83a82e4
(parse_button): New parameter xbutton. Callers changed.
Jason Rumney <jasonr@gnu.org>
parents:
42675
diff
changeset
|
3000 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
|
3001 &button, &up); |
13434 | 3002 |
45803
9484de301252
Rename enum event_kind items.
Pavel Janík <Pavel@Janik.cz>
parents:
45507
diff
changeset
|
3003 /* Make the event type NO_EVENT; we'll change that when we decide |
13434 | 3004 otherwise. */ |
45803
9484de301252
Rename enum event_kind items.
Pavel Janík <Pavel@Janik.cz>
parents:
45507
diff
changeset
|
3005 result->kind = MOUSE_CLICK_EVENT; |
13434 | 3006 result->code = button; |
3007 result->timestamp = msg->msg.time; | |
3008 result->modifiers = (msg->dwModifiers | |
3009 | (up | |
3010 ? up_modifier | |
3011 : down_modifier)); | |
3012 | |
30240
2c2a7ebd2c15
(help_echo_object, help_echo_pos): New variables.
Jason Rumney <jasonr@gnu.org>
parents:
30199
diff
changeset
|
3013 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
|
3014 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
|
3015 XSETFRAME (result->frame_or_window, f); |
2c2a7ebd2c15
(help_echo_object, help_echo_pos): New variables.
Jason Rumney <jasonr@gnu.org>
parents:
30199
diff
changeset
|
3016 result->arg = Qnil; |
2c2a7ebd2c15
(help_echo_object, help_echo_pos): New variables.
Jason Rumney <jasonr@gnu.org>
parents:
30199
diff
changeset
|
3017 return Qnil; |
2c2a7ebd2c15
(help_echo_object, help_echo_pos): New variables.
Jason Rumney <jasonr@gnu.org>
parents:
30199
diff
changeset
|
3018 } |
2c2a7ebd2c15
(help_echo_object, help_echo_pos): New variables.
Jason Rumney <jasonr@gnu.org>
parents:
30199
diff
changeset
|
3019 |
2c2a7ebd2c15
(help_echo_object, help_echo_pos): New variables.
Jason Rumney <jasonr@gnu.org>
parents:
30199
diff
changeset
|
3020 static Lisp_Object |
19713
043ccce224fb
(SIF_*): Win95 macros defined for NT.
Geoff Voelker <voelker@cs.washington.edu>
parents:
18877
diff
changeset
|
3021 construct_mouse_wheel (result, msg, f) |
043ccce224fb
(SIF_*): Win95 macros defined for NT.
Geoff Voelker <voelker@cs.washington.edu>
parents:
18877
diff
changeset
|
3022 struct input_event *result; |
043ccce224fb
(SIF_*): Win95 macros defined for NT.
Geoff Voelker <voelker@cs.washington.edu>
parents:
18877
diff
changeset
|
3023 W32Msg *msg; |
043ccce224fb
(SIF_*): Win95 macros defined for NT.
Geoff Voelker <voelker@cs.washington.edu>
parents:
18877
diff
changeset
|
3024 struct frame *f; |
043ccce224fb
(SIF_*): Win95 macros defined for NT.
Geoff Voelker <voelker@cs.washington.edu>
parents:
18877
diff
changeset
|
3025 { |
043ccce224fb
(SIF_*): Win95 macros defined for NT.
Geoff Voelker <voelker@cs.washington.edu>
parents:
18877
diff
changeset
|
3026 POINT p; |
51382
e099ac71bd76
(construct_mouse_wheel): Construct WHEEL_EVENT.
Jason Rumney <jasonr@gnu.org>
parents:
51270
diff
changeset
|
3027 int delta; |
e099ac71bd76
(construct_mouse_wheel): Construct WHEEL_EVENT.
Jason Rumney <jasonr@gnu.org>
parents:
51270
diff
changeset
|
3028 |
83876
37f582a71062
Support for horizontal scroll wheels on some mice:
Jason Rumney <jasonr@gnu.org>
parents:
83652
diff
changeset
|
3029 result->kind = msg->msg.message == WM_MOUSEHWHEEL ? HORIZ_WHEEL_EVENT |
37f582a71062
Support for horizontal scroll wheels on some mice:
Jason Rumney <jasonr@gnu.org>
parents:
83652
diff
changeset
|
3030 : WHEEL_EVENT; |
51382
e099ac71bd76
(construct_mouse_wheel): Construct WHEEL_EVENT.
Jason Rumney <jasonr@gnu.org>
parents:
51270
diff
changeset
|
3031 result->code = 0; |
19713
043ccce224fb
(SIF_*): Win95 macros defined for NT.
Geoff Voelker <voelker@cs.washington.edu>
parents:
18877
diff
changeset
|
3032 result->timestamp = msg->msg.time; |
51382
e099ac71bd76
(construct_mouse_wheel): Construct WHEEL_EVENT.
Jason Rumney <jasonr@gnu.org>
parents:
51270
diff
changeset
|
3033 |
e099ac71bd76
(construct_mouse_wheel): Construct WHEEL_EVENT.
Jason Rumney <jasonr@gnu.org>
parents:
51270
diff
changeset
|
3034 /* 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
|
3035 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
|
3036 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
|
3037 delta = GET_WHEEL_DELTA_WPARAM (msg->msg.wParam); |
e099ac71bd76
(construct_mouse_wheel): Construct WHEEL_EVENT.
Jason Rumney <jasonr@gnu.org>
parents:
51270
diff
changeset
|
3038 |
e099ac71bd76
(construct_mouse_wheel): Construct WHEEL_EVENT.
Jason Rumney <jasonr@gnu.org>
parents:
51270
diff
changeset
|
3039 /* 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
|
3040 down based on WHEEL_DELTA value. */ |
e099ac71bd76
(construct_mouse_wheel): Construct WHEEL_EVENT.
Jason Rumney <jasonr@gnu.org>
parents:
51270
diff
changeset
|
3041 result->modifiers = (msg->dwModifiers |
e099ac71bd76
(construct_mouse_wheel): Construct WHEEL_EVENT.
Jason Rumney <jasonr@gnu.org>
parents:
51270
diff
changeset
|
3042 | ((delta < 0 ) ? down_modifier : up_modifier)); |
e099ac71bd76
(construct_mouse_wheel): Construct WHEEL_EVENT.
Jason Rumney <jasonr@gnu.org>
parents:
51270
diff
changeset
|
3043 |
70234
4282b2a1849b
(construct_mouse_wheel): Handle negative coordinates.
Jason Rumney <jasonr@gnu.org>
parents:
69662
diff
changeset
|
3044 /* With multiple monitors, we can legitimately get negative |
4282b2a1849b
(construct_mouse_wheel): Handle negative coordinates.
Jason Rumney <jasonr@gnu.org>
parents:
69662
diff
changeset
|
3045 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
|
3046 p.x = (short) LOWORD (msg->msg.lParam); |
4282b2a1849b
(construct_mouse_wheel): Handle negative coordinates.
Jason Rumney <jasonr@gnu.org>
parents:
69662
diff
changeset
|
3047 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
|
3048 ScreenToClient (msg->msg.hwnd, &p); |
19713
043ccce224fb
(SIF_*): Win95 macros defined for NT.
Geoff Voelker <voelker@cs.washington.edu>
parents:
18877
diff
changeset
|
3049 XSETINT (result->x, p.x); |
043ccce224fb
(SIF_*): Win95 macros defined for NT.
Geoff Voelker <voelker@cs.washington.edu>
parents:
18877
diff
changeset
|
3050 XSETINT (result->y, p.y); |
043ccce224fb
(SIF_*): Win95 macros defined for NT.
Geoff Voelker <voelker@cs.washington.edu>
parents:
18877
diff
changeset
|
3051 XSETFRAME (result->frame_or_window, f); |
30199
298f10cd4ba5
(construct_mouse_click, construct_mouse_wheel)
Gerd Moellmann <gerd@gnu.org>
parents:
30179
diff
changeset
|
3052 result->arg = Qnil; |
30240
2c2a7ebd2c15
(help_echo_object, help_echo_pos): New variables.
Jason Rumney <jasonr@gnu.org>
parents:
30199
diff
changeset
|
3053 return Qnil; |
2c2a7ebd2c15
(help_echo_object, help_echo_pos): New variables.
Jason Rumney <jasonr@gnu.org>
parents:
30199
diff
changeset
|
3054 } |
2c2a7ebd2c15
(help_echo_object, help_echo_pos): New variables.
Jason Rumney <jasonr@gnu.org>
parents:
30199
diff
changeset
|
3055 |
2c2a7ebd2c15
(help_echo_object, help_echo_pos): New variables.
Jason Rumney <jasonr@gnu.org>
parents:
30199
diff
changeset
|
3056 static Lisp_Object |
21885 | 3057 construct_drag_n_drop (result, msg, f) |
3058 struct input_event *result; | |
3059 W32Msg *msg; | |
3060 struct frame *f; | |
3061 { | |
3062 Lisp_Object files; | |
3063 Lisp_Object frame; | |
3064 HDROP hdrop; | |
3065 POINT p; | |
3066 WORD num_files; | |
3067 char *name; | |
3068 int i, len; | |
3069 | |
45803
9484de301252
Rename enum event_kind items.
Pavel Janík <Pavel@Janik.cz>
parents:
45507
diff
changeset
|
3070 result->kind = DRAG_N_DROP_EVENT; |
21885 | 3071 result->code = 0; |
3072 result->timestamp = msg->msg.time; | |
3073 result->modifiers = msg->dwModifiers; | |
3074 | |
24265
c5f1a1deffbb
(construct_drag_n_drop): Call DraqQueryPoint before
Andrew Innes <andrewi@gnu.org>
parents:
24146
diff
changeset
|
3075 hdrop = (HDROP) msg->msg.wParam; |
c5f1a1deffbb
(construct_drag_n_drop): Call DraqQueryPoint before
Andrew Innes <andrewi@gnu.org>
parents:
24146
diff
changeset
|
3076 DragQueryPoint (hdrop, &p); |
c5f1a1deffbb
(construct_drag_n_drop): Call DraqQueryPoint before
Andrew Innes <andrewi@gnu.org>
parents:
24146
diff
changeset
|
3077 |
24674 | 3078 #if 0 |
21885 | 3079 p.x = LOWORD (msg->msg.lParam); |
3080 p.y = HIWORD (msg->msg.lParam); | |
3081 ScreenToClient (msg->msg.hwnd, &p); | |
24674 | 3082 #endif |
3083 | |
21885 | 3084 XSETINT (result->x, p.x); |
3085 XSETINT (result->y, p.y); | |
3086 | |
3087 num_files = DragQueryFile (hdrop, 0xFFFFFFFF, NULL, 0); | |
3088 files = Qnil; | |
3089 | |
3090 for (i = 0; i < num_files; i++) | |
3091 { | |
3092 len = DragQueryFile (hdrop, i, NULL, 0); | |
3093 if (len <= 0) | |
3094 continue; | |
3095 name = alloca (len + 1); | |
3096 DragQueryFile (hdrop, i, name, len + 1); | |
44641
3afb0684cbc2
(construct_drag_n_drop): Likewise.
Jason Rumney <jasonr@gnu.org>
parents:
44359
diff
changeset
|
3097 files = Fcons (DECODE_FILE (build_string (name)), files); |
21885 | 3098 } |
3099 | |
3100 DragFinish (hdrop); | |
3101 | |
3102 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
|
3103 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
|
3104 result->arg = files; |
30240
2c2a7ebd2c15
(help_echo_object, help_echo_pos): New variables.
Jason Rumney <jasonr@gnu.org>
parents:
30199
diff
changeset
|
3105 return Qnil; |
21885 | 3106 } |
3107 | |
13434 | 3108 |
3109 /* Function to report a mouse movement to the mainstream Emacs code. | |
3110 The input handler calls this. | |
3111 | |
3112 We have received a mouse movement event, which is given in *event. | |
3113 If the mouse is over a different glyph than it was last time, tell | |
3114 the mainstream emacs code by setting mouse_moved. If not, ask for | |
3115 another motion event, so we can check again the next time it moves. */ | |
3116 | |
27402
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
3117 static MSG last_mouse_motion_event; |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
3118 static Lisp_Object last_mouse_motion_frame; |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
3119 |
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
|
3120 static int |
13434 | 3121 note_mouse_movement (frame, msg) |
3122 FRAME_PTR frame; | |
3123 MSG *msg; | |
3124 { | |
40137
5f0d7d58283b
(remember_mouse_glyph): New function.
Jason Rumney <jasonr@gnu.org>
parents:
40078
diff
changeset
|
3125 int mouse_x = LOWORD (msg->lParam); |
5f0d7d58283b
(remember_mouse_glyph): New function.
Jason Rumney <jasonr@gnu.org>
parents:
40078
diff
changeset
|
3126 int mouse_y = HIWORD (msg->lParam); |
5f0d7d58283b
(remember_mouse_glyph): New function.
Jason Rumney <jasonr@gnu.org>
parents:
40078
diff
changeset
|
3127 |
13434 | 3128 last_mouse_movement_time = msg->time; |
27402
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
3129 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
|
3130 XSETFRAME (last_mouse_motion_frame, frame); |
13434 | 3131 |
90834 | 3132 if (!FRAME_X_OUTPUT (frame)) |
3133 return 0; | |
3134 | |
16588
481b7874a1e9
Change identifiers of the form win32* to w32*.
Geoff Voelker <voelker@cs.washington.edu>
parents:
16326
diff
changeset
|
3135 if (msg->hwnd != FRAME_W32_WINDOW (frame)) |
13434 | 3136 { |
3137 frame->mouse_moved = 1; | |
3138 last_mouse_scroll_bar = Qnil; | |
3139 note_mouse_highlight (frame, -1, -1); | |
69441
eb7a171cafae
Sync 2005-10-24 xterm.c changes.
Jason Rumney <jasonr@gnu.org>
parents:
69401
diff
changeset
|
3140 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
|
3141 return 1; |
13434 | 3142 } |
3143 | |
3144 /* 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
|
3145 if (frame != last_mouse_glyph_frame |
eb7a171cafae
Sync 2005-10-24 xterm.c changes.
Jason Rumney <jasonr@gnu.org>
parents:
69401
diff
changeset
|
3146 || 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
|
3147 || 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
|
3148 || 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
|
3149 || mouse_y >= last_mouse_glyph.bottom) |
13434 | 3150 { |
3151 frame->mouse_moved = 1; | |
3152 last_mouse_scroll_bar = Qnil; | |
40137
5f0d7d58283b
(remember_mouse_glyph): New function.
Jason Rumney <jasonr@gnu.org>
parents:
40078
diff
changeset
|
3153 note_mouse_highlight (frame, mouse_x, mouse_y); |
5f0d7d58283b
(remember_mouse_glyph): New function.
Jason Rumney <jasonr@gnu.org>
parents:
40078
diff
changeset
|
3154 /* 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
|
3155 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
|
3156 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
|
3157 other times. */ |
66034
d1a8711a8c3a
(note_mouse_movement): Fix last_mouse_glyph check.
Kim F. Storm <storm@cua.dk>
parents:
65892
diff
changeset
|
3158 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
|
3159 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
|
3160 return 1; |
13434 | 3161 } |
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
|
3162 |
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
|
3163 return 0; |
13434 | 3164 } |
3165 | |
27402
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
3166 |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
3167 /************************************************************************ |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
3168 Mouse Face |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
3169 ************************************************************************/ |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
3170 |
50231
c8ea5e4b2129
* w32term.c: Remove consolidated defines and code.
Kim F. Storm <storm@cua.dk>
parents:
50163
diff
changeset
|
3171 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
|
3172 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
|
3173 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
|
3174 |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
3175 static void |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
3176 redo_mouse_highlight () |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
3177 { |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
3178 if (!NILP (last_mouse_motion_frame) |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
3179 && FRAME_LIVE_P (XFRAME (last_mouse_motion_frame))) |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
3180 note_mouse_highlight (XFRAME (last_mouse_motion_frame), |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
3181 LOWORD (last_mouse_motion_event.lParam), |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
3182 HIWORD (last_mouse_motion_event.lParam)); |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
3183 } |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
3184 |
81493
e7dfb7cb2088
(w32_delete_display): Remove leftover declaration.
Juanma Barranquero <lekktu@gmail.com>
parents:
76022
diff
changeset
|
3185 static void |
49371
c73ce11bb264
2003-01-21 KOBAYASHI Yasuhiro <kobayays@otsukakj.co.jp>
Jason Rumney <jasonr@gnu.org>
parents:
48888
diff
changeset
|
3186 w32_define_cursor (window, cursor) |
c73ce11bb264
2003-01-21 KOBAYASHI Yasuhiro <kobayays@otsukakj.co.jp>
Jason Rumney <jasonr@gnu.org>
parents:
48888
diff
changeset
|
3187 Window window; |
c73ce11bb264
2003-01-21 KOBAYASHI Yasuhiro <kobayays@otsukakj.co.jp>
Jason Rumney <jasonr@gnu.org>
parents:
48888
diff
changeset
|
3188 Cursor cursor; |
c73ce11bb264
2003-01-21 KOBAYASHI Yasuhiro <kobayays@otsukakj.co.jp>
Jason Rumney <jasonr@gnu.org>
parents:
48888
diff
changeset
|
3189 { |
c73ce11bb264
2003-01-21 KOBAYASHI Yasuhiro <kobayays@otsukakj.co.jp>
Jason Rumney <jasonr@gnu.org>
parents:
48888
diff
changeset
|
3190 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
|
3191 } |
13434 | 3192 /* Return the current position of the mouse. |
3193 *fp should be a frame which indicates which display to ask about. | |
3194 | |
3195 If the mouse movement started in a scroll bar, set *fp, *bar_window, | |
3196 and *part to the frame, window, and scroll bar part that the mouse | |
3197 is over. Set *x and *y to the portion and whole of the mouse's | |
3198 position on the scroll bar. | |
3199 | |
3200 If the mouse movement started elsewhere, set *fp to the frame the | |
3201 mouse is on, *bar_window to nil, and *x and *y to the character cell | |
3202 the mouse is over. | |
3203 | |
29321
8e2be36bb1c6
Format and doc changes to bring closer to xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
28369
diff
changeset
|
3204 Set *time to the server time-stamp for the time at which the mouse |
13434 | 3205 was at this position. |
3206 | |
3207 Don't store anything if we don't have a valid set of values to report. | |
3208 | |
3209 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
|
3210 movement. */ |
13434 | 3211 |
3212 static void | |
16588
481b7874a1e9
Change identifiers of the form win32* to w32*.
Geoff Voelker <voelker@cs.washington.edu>
parents:
16326
diff
changeset
|
3213 w32_mouse_position (fp, insist, bar_window, part, x, y, time) |
13434 | 3214 FRAME_PTR *fp; |
3215 int insist; | |
3216 Lisp_Object *bar_window; | |
3217 enum scroll_bar_part *part; | |
3218 Lisp_Object *x, *y; | |
3219 unsigned long *time; | |
3220 { | |
3221 FRAME_PTR f1; | |
3222 | |
3223 BLOCK_INPUT; | |
3224 | |
20179
b4fe0e8ac819
(w32_mouse_position): Handle INSIST < 0.
Karl Heuer <kwzh@gnu.org>
parents:
19713
diff
changeset
|
3225 if (! NILP (last_mouse_scroll_bar) && insist == 0) |
13434 | 3226 x_scroll_bar_report_motion (fp, bar_window, part, x, y, time); |
3227 else | |
3228 { | |
3229 POINT pt; | |
3230 | |
3231 Lisp_Object frame, tail; | |
3232 | |
3233 /* Clear the mouse-moved flag for every frame on this display. */ | |
3234 FOR_EACH_FRAME (tail, frame) | |
3235 XFRAME (frame)->mouse_moved = 0; | |
3236 | |
3237 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
|
3238 |
13434 | 3239 GetCursorPos (&pt); |
3240 | |
3241 /* Now we have a position on the root; find the innermost window | |
3242 containing the pointer. */ | |
3243 { | |
16588
481b7874a1e9
Change identifiers of the form win32* to w32*.
Geoff Voelker <voelker@cs.washington.edu>
parents:
16326
diff
changeset
|
3244 if (FRAME_W32_DISPLAY_INFO (*fp)->grabbed && last_mouse_frame |
13434 | 3245 && FRAME_LIVE_P (last_mouse_frame)) |
3246 { | |
24752
80c46fd667da
(w32_read_socket): Reset the grabbed flag when a frame gains or
Andrew Innes <andrewi@gnu.org>
parents:
24733
diff
changeset
|
3247 /* 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
|
3248 even if the mouse is now outside it. */ |
13434 | 3249 f1 = last_mouse_frame; |
3250 } | |
3251 else | |
3252 { | |
24752
80c46fd667da
(w32_read_socket): Reset the grabbed flag when a frame gains or
Andrew Innes <andrewi@gnu.org>
parents:
24733
diff
changeset
|
3253 /* Is window under mouse one of our frames? */ |
40137
5f0d7d58283b
(remember_mouse_glyph): New function.
Jason Rumney <jasonr@gnu.org>
parents:
40078
diff
changeset
|
3254 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
|
3255 WindowFromPoint (pt)); |
13434 | 3256 } |
3257 | |
3258 /* If not, is it one of our scroll bars? */ | |
3259 if (! f1) | |
3260 { | |
32022
1f26caa05cd7
(w32_char_font_type, w32_encode_char, x_produce_glyphs): Distinguish
Jason Rumney <jasonr@gnu.org>
parents:
31624
diff
changeset
|
3261 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
|
3262 = x_window_to_scroll_bar (WindowFromPoint (pt)); |
13434 | 3263 |
3264 if (bar) | |
3265 { | |
3266 f1 = XFRAME (WINDOW_FRAME (XWINDOW (bar->window))); | |
3267 } | |
3268 } | |
3269 | |
20179
b4fe0e8ac819
(w32_mouse_position): Handle INSIST < 0.
Karl Heuer <kwzh@gnu.org>
parents:
19713
diff
changeset
|
3270 if (f1 == 0 && insist > 0) |
27402
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
3271 f1 = SELECTED_FRAME (); |
13434 | 3272 |
3273 if (f1) | |
3274 { | |
27402
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
3275 /* 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
|
3276 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
|
3277 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
|
3278 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
|
3279 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
|
3280 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
|
3281 the frame are divided into. */ |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
3282 |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
3283 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
|
3284 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
|
3285 last_mouse_glyph_frame = f1; |
13434 | 3286 |
3287 *bar_window = Qnil; | |
3288 *part = 0; | |
3289 *fp = f1; | |
3290 XSETINT (*x, pt.x); | |
3291 XSETINT (*y, pt.y); | |
3292 *time = last_mouse_movement_time; | |
3293 } | |
3294 } | |
3295 } | |
3296 | |
3297 UNBLOCK_INPUT; | |
3298 } | |
27402
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
3299 |
13434 | 3300 |
50231
c8ea5e4b2129
* w32term.c: Remove consolidated defines and code.
Kim F. Storm <storm@cua.dk>
parents:
50163
diff
changeset
|
3301 /*********************************************************************** |
c8ea5e4b2129
* w32term.c: Remove consolidated defines and code.
Kim F. Storm <storm@cua.dk>
parents:
50163
diff
changeset
|
3302 Tool-bars |
c8ea5e4b2129
* w32term.c: Remove consolidated defines and code.
Kim F. Storm <storm@cua.dk>
parents:
50163
diff
changeset
|
3303 ***********************************************************************/ |
c8ea5e4b2129
* w32term.c: Remove consolidated defines and code.
Kim F. Storm <storm@cua.dk>
parents:
50163
diff
changeset
|
3304 |
c8ea5e4b2129
* w32term.c: Remove consolidated defines and code.
Kim F. Storm <storm@cua.dk>
parents:
50163
diff
changeset
|
3305 /* 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
|
3306 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
|
3307 or ButtonRelase. */ |
c8ea5e4b2129
* w32term.c: Remove consolidated defines and code.
Kim F. Storm <storm@cua.dk>
parents:
50163
diff
changeset
|
3308 |
c8ea5e4b2129
* w32term.c: Remove consolidated defines and code.
Kim F. Storm <storm@cua.dk>
parents:
50163
diff
changeset
|
3309 static void |
c8ea5e4b2129
* w32term.c: Remove consolidated defines and code.
Kim F. Storm <storm@cua.dk>
parents:
50163
diff
changeset
|
3310 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
|
3311 struct frame *f; |
c8ea5e4b2129
* w32term.c: Remove consolidated defines and code.
Kim F. Storm <storm@cua.dk>
parents:
50163
diff
changeset
|
3312 struct input_event *button_event; |
c8ea5e4b2129
* w32term.c: Remove consolidated defines and code.
Kim F. Storm <storm@cua.dk>
parents:
50163
diff
changeset
|
3313 { |
c8ea5e4b2129
* w32term.c: Remove consolidated defines and code.
Kim F. Storm <storm@cua.dk>
parents:
50163
diff
changeset
|
3314 int x = XFASTINT (button_event->x); |
c8ea5e4b2129
* w32term.c: Remove consolidated defines and code.
Kim F. Storm <storm@cua.dk>
parents:
50163
diff
changeset
|
3315 int y = XFASTINT (button_event->y); |
c8ea5e4b2129
* w32term.c: Remove consolidated defines and code.
Kim F. Storm <storm@cua.dk>
parents:
50163
diff
changeset
|
3316 |
c8ea5e4b2129
* w32term.c: Remove consolidated defines and code.
Kim F. Storm <storm@cua.dk>
parents:
50163
diff
changeset
|
3317 if (button_event->modifiers & down_modifier) |
c8ea5e4b2129
* w32term.c: Remove consolidated defines and code.
Kim F. Storm <storm@cua.dk>
parents:
50163
diff
changeset
|
3318 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
|
3319 else |
c8ea5e4b2129
* w32term.c: Remove consolidated defines and code.
Kim F. Storm <storm@cua.dk>
parents:
50163
diff
changeset
|
3320 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
|
3321 button_event->modifiers & ~up_modifier); |
c8ea5e4b2129
* w32term.c: Remove consolidated defines and code.
Kim F. Storm <storm@cua.dk>
parents:
50163
diff
changeset
|
3322 } |
c8ea5e4b2129
* w32term.c: Remove consolidated defines and code.
Kim F. Storm <storm@cua.dk>
parents:
50163
diff
changeset
|
3323 |
c8ea5e4b2129
* w32term.c: Remove consolidated defines and code.
Kim F. Storm <storm@cua.dk>
parents:
50163
diff
changeset
|
3324 |
c8ea5e4b2129
* w32term.c: Remove consolidated defines and code.
Kim F. Storm <storm@cua.dk>
parents:
50163
diff
changeset
|
3325 |
c8ea5e4b2129
* w32term.c: Remove consolidated defines and code.
Kim F. Storm <storm@cua.dk>
parents:
50163
diff
changeset
|
3326 /*********************************************************************** |
c8ea5e4b2129
* w32term.c: Remove consolidated defines and code.
Kim F. Storm <storm@cua.dk>
parents:
50163
diff
changeset
|
3327 Scroll bars |
c8ea5e4b2129
* w32term.c: Remove consolidated defines and code.
Kim F. Storm <storm@cua.dk>
parents:
50163
diff
changeset
|
3328 ***********************************************************************/ |
c8ea5e4b2129
* w32term.c: Remove consolidated defines and code.
Kim F. Storm <storm@cua.dk>
parents:
50163
diff
changeset
|
3329 |
13434 | 3330 /* Scroll bar support. */ |
3331 | |
30240
2c2a7ebd2c15
(help_echo_object, help_echo_pos): New variables.
Jason Rumney <jasonr@gnu.org>
parents:
30199
diff
changeset
|
3332 /* Given a window ID, find the struct scroll_bar which manages it. |
13434 | 3333 This can be called in GC, so we have to make sure to strip off mark |
3334 bits. */ | |
29321
8e2be36bb1c6
Format and doc changes to bring closer to xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
28369
diff
changeset
|
3335 |
8e2be36bb1c6
Format and doc changes to bring closer to xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
28369
diff
changeset
|
3336 static struct scroll_bar * |
13434 | 3337 x_window_to_scroll_bar (window_id) |
3338 Window window_id; | |
3339 { | |
27402
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
3340 Lisp_Object tail; |
13434 | 3341 |
90970
3371fc48749b
Replace uses of GC_* macros with the non-GC_ versions.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
90923
diff
changeset
|
3342 for (tail = Vframe_list; CONSP (tail); tail = XCDR (tail)) |
13434 | 3343 { |
3344 Lisp_Object frame, bar, condemned; | |
3345 | |
25646
9154af188477
Use XCAR and XCDR instead of explicit member references.
Ken Raeburn <raeburn@raeburn.org>
parents:
25236
diff
changeset
|
3346 frame = XCAR (tail); |
13434 | 3347 /* All elements of Vframe_list should be frames. */ |
90970
3371fc48749b
Replace uses of GC_* macros with the non-GC_ versions.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
90923
diff
changeset
|
3348 if (! FRAMEP (frame)) |
13434 | 3349 abort (); |
3350 | |
3351 /* Scan this frame's scroll bar list for a scroll bar with the | |
3352 right window ID. */ | |
3353 condemned = FRAME_CONDEMNED_SCROLL_BARS (XFRAME (frame)); | |
3354 for (bar = FRAME_SCROLL_BARS (XFRAME (frame)); | |
3355 /* This trick allows us to search both the ordinary and | |
3356 condemned scroll bar lists with one loop. */ | |
90970
3371fc48749b
Replace uses of GC_* macros with the non-GC_ versions.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
90923
diff
changeset
|
3357 ! NILP (bar) || (bar = condemned, |
13434 | 3358 condemned = Qnil, |
90970
3371fc48749b
Replace uses of GC_* macros with the non-GC_ versions.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
90923
diff
changeset
|
3359 ! NILP (bar)); |
13434 | 3360 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
|
3361 if (SCROLL_BAR_W32_WINDOW (XSCROLL_BAR (bar)) == window_id) |
13434 | 3362 return XSCROLL_BAR (bar); |
3363 } | |
3364 | |
3365 return 0; | |
3366 } | |
3367 | |
27402
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
3368 |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
3369 |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
3370 /* 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
|
3371 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
|
3372 |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
3373 static void |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
3374 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
|
3375 struct scroll_bar *bar; |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
3376 int portion, position, whole; |
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 Window w = SCROLL_BAR_W32_WINDOW (bar); |
76022
e892213b9815
(w32_set_scroll_bar_thumb): Don't resize scroll-bar
Kim F. Storm <storm@cua.dk>
parents:
76019
diff
changeset
|
3379 /* We use the whole scroll-bar height in the calculations below, to |
e892213b9815
(w32_set_scroll_bar_thumb): Don't resize scroll-bar
Kim F. Storm <storm@cua.dk>
parents:
76019
diff
changeset
|
3380 avoid strange effects like scrolling backwards when just clicking |
e892213b9815
(w32_set_scroll_bar_thumb): Don't resize scroll-bar
Kim F. Storm <storm@cua.dk>
parents:
76019
diff
changeset
|
3381 on the handle (without moving it). */ |
e892213b9815
(w32_set_scroll_bar_thumb): Don't resize scroll-bar
Kim F. Storm <storm@cua.dk>
parents:
76019
diff
changeset
|
3382 double range = VERTICAL_SCROLL_BAR_TOP_RANGE (f, XINT (bar->height)) |
e892213b9815
(w32_set_scroll_bar_thumb): Don't resize scroll-bar
Kim F. Storm <storm@cua.dk>
parents:
76019
diff
changeset
|
3383 + VERTICAL_SCROLL_BAR_MIN_HANDLE; |
27402
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
3384 int sb_page, sb_pos; |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
3385 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
|
3386 SCROLLINFO si; |
27402
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
3387 |
76022
e892213b9815
(w32_set_scroll_bar_thumb): Don't resize scroll-bar
Kim F. Storm <storm@cua.dk>
parents:
76019
diff
changeset
|
3388 /* We used to change the nPage setting while dragging the handle, |
e892213b9815
(w32_set_scroll_bar_thumb): Don't resize scroll-bar
Kim F. Storm <storm@cua.dk>
parents:
76019
diff
changeset
|
3389 but that had very strange effects (such as scrolling backwards |
e892213b9815
(w32_set_scroll_bar_thumb): Don't resize scroll-bar
Kim F. Storm <storm@cua.dk>
parents:
76019
diff
changeset
|
3390 while dragging downwards). |
e892213b9815
(w32_set_scroll_bar_thumb): Don't resize scroll-bar
Kim F. Storm <storm@cua.dk>
parents:
76019
diff
changeset
|
3391 |
e892213b9815
(w32_set_scroll_bar_thumb): Don't resize scroll-bar
Kim F. Storm <storm@cua.dk>
parents:
76019
diff
changeset
|
3392 Now, we don't change the nPage setting while dragging unless we |
e892213b9815
(w32_set_scroll_bar_thumb): Don't resize scroll-bar
Kim F. Storm <storm@cua.dk>
parents:
76019
diff
changeset
|
3393 get near to the end of the buffer, in which case we often have to |
e892213b9815
(w32_set_scroll_bar_thumb): Don't resize scroll-bar
Kim F. Storm <storm@cua.dk>
parents:
76019
diff
changeset
|
3394 resize the handle to "go all the way". */ |
e892213b9815
(w32_set_scroll_bar_thumb): Don't resize scroll-bar
Kim F. Storm <storm@cua.dk>
parents:
76019
diff
changeset
|
3395 |
e892213b9815
(w32_set_scroll_bar_thumb): Don't resize scroll-bar
Kim F. Storm <storm@cua.dk>
parents:
76019
diff
changeset
|
3396 if (draggingp) |
e892213b9815
(w32_set_scroll_bar_thumb): Don't resize scroll-bar
Kim F. Storm <storm@cua.dk>
parents:
76019
diff
changeset
|
3397 { |
e892213b9815
(w32_set_scroll_bar_thumb): Don't resize scroll-bar
Kim F. Storm <storm@cua.dk>
parents:
76019
diff
changeset
|
3398 int near_bottom_p; |
e892213b9815
(w32_set_scroll_bar_thumb): Don't resize scroll-bar
Kim F. Storm <storm@cua.dk>
parents:
76019
diff
changeset
|
3399 BLOCK_INPUT; |
e892213b9815
(w32_set_scroll_bar_thumb): Don't resize scroll-bar
Kim F. Storm <storm@cua.dk>
parents:
76019
diff
changeset
|
3400 si.cbSize = sizeof (si); |
e892213b9815
(w32_set_scroll_bar_thumb): Don't resize scroll-bar
Kim F. Storm <storm@cua.dk>
parents:
76019
diff
changeset
|
3401 si.fMask = SIF_POS | SIF_PAGE; |
e892213b9815
(w32_set_scroll_bar_thumb): Don't resize scroll-bar
Kim F. Storm <storm@cua.dk>
parents:
76019
diff
changeset
|
3402 GetScrollInfo(w, SB_CTL, &si); |
e892213b9815
(w32_set_scroll_bar_thumb): Don't resize scroll-bar
Kim F. Storm <storm@cua.dk>
parents:
76019
diff
changeset
|
3403 near_bottom_p = si.nPos + si.nPage >= range; |
e892213b9815
(w32_set_scroll_bar_thumb): Don't resize scroll-bar
Kim F. Storm <storm@cua.dk>
parents:
76019
diff
changeset
|
3404 UNBLOCK_INPUT; |
e892213b9815
(w32_set_scroll_bar_thumb): Don't resize scroll-bar
Kim F. Storm <storm@cua.dk>
parents:
76019
diff
changeset
|
3405 if (!near_bottom_p) |
e892213b9815
(w32_set_scroll_bar_thumb): Don't resize scroll-bar
Kim F. Storm <storm@cua.dk>
parents:
76019
diff
changeset
|
3406 return; |
e892213b9815
(w32_set_scroll_bar_thumb): Don't resize scroll-bar
Kim F. Storm <storm@cua.dk>
parents:
76019
diff
changeset
|
3407 } |
e892213b9815
(w32_set_scroll_bar_thumb): Don't resize scroll-bar
Kim F. Storm <storm@cua.dk>
parents:
76019
diff
changeset
|
3408 |
27402
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
3409 if (whole) |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
3410 { |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
3411 /* 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
|
3412 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
|
3413 to nothing if it is held at the bottom of the buffer. */ |
76022
e892213b9815
(w32_set_scroll_bar_thumb): Don't resize scroll-bar
Kim F. Storm <storm@cua.dk>
parents:
76019
diff
changeset
|
3414 if (position + portion >= whole && !draggingp) |
e892213b9815
(w32_set_scroll_bar_thumb): Don't resize scroll-bar
Kim F. Storm <storm@cua.dk>
parents:
76019
diff
changeset
|
3415 { |
e892213b9815
(w32_set_scroll_bar_thumb): Don't resize scroll-bar
Kim F. Storm <storm@cua.dk>
parents:
76019
diff
changeset
|
3416 sb_page = range * (whole - position) / whole; |
e892213b9815
(w32_set_scroll_bar_thumb): Don't resize scroll-bar
Kim F. Storm <storm@cua.dk>
parents:
76019
diff
changeset
|
3417 sb_pos = range; |
e892213b9815
(w32_set_scroll_bar_thumb): Don't resize scroll-bar
Kim F. Storm <storm@cua.dk>
parents:
76019
diff
changeset
|
3418 } |
e892213b9815
(w32_set_scroll_bar_thumb): Don't resize scroll-bar
Kim F. Storm <storm@cua.dk>
parents:
76019
diff
changeset
|
3419 else |
e892213b9815
(w32_set_scroll_bar_thumb): Don't resize scroll-bar
Kim F. Storm <storm@cua.dk>
parents:
76019
diff
changeset
|
3420 { |
e892213b9815
(w32_set_scroll_bar_thumb): Don't resize scroll-bar
Kim F. Storm <storm@cua.dk>
parents:
76019
diff
changeset
|
3421 sb_pos = position * range / whole; |
e892213b9815
(w32_set_scroll_bar_thumb): Don't resize scroll-bar
Kim F. Storm <storm@cua.dk>
parents:
76019
diff
changeset
|
3422 sb_page = (min (portion, (whole - position)) * range) / whole; |
e892213b9815
(w32_set_scroll_bar_thumb): Don't resize scroll-bar
Kim F. Storm <storm@cua.dk>
parents:
76019
diff
changeset
|
3423 } |
27402
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
3424 } |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
3425 else |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
3426 { |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
3427 sb_page = range; |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
3428 sb_pos = 0; |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
3429 } |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
3430 |
76022
e892213b9815
(w32_set_scroll_bar_thumb): Don't resize scroll-bar
Kim F. Storm <storm@cua.dk>
parents:
76019
diff
changeset
|
3431 sb_page = max (sb_page, VERTICAL_SCROLL_BAR_MIN_HANDLE); |
e892213b9815
(w32_set_scroll_bar_thumb): Don't resize scroll-bar
Kim F. Storm <storm@cua.dk>
parents:
76019
diff
changeset
|
3432 |
27402
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
3433 BLOCK_INPUT; |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
3434 |
71236
4a38eb2f741d
(w32_set_scroll_bar_thumb, x_scroll_bar_create)
Jason Rumney <jasonr@gnu.org>
parents:
71074
diff
changeset
|
3435 si.cbSize = sizeof (si); |
76022
e892213b9815
(w32_set_scroll_bar_thumb): Don't resize scroll-bar
Kim F. Storm <storm@cua.dk>
parents:
76019
diff
changeset
|
3436 si.fMask = SIF_PAGE | SIF_POS; |
71236
4a38eb2f741d
(w32_set_scroll_bar_thumb, x_scroll_bar_create)
Jason Rumney <jasonr@gnu.org>
parents:
71074
diff
changeset
|
3437 si.nPage = sb_page; |
4a38eb2f741d
(w32_set_scroll_bar_thumb, x_scroll_bar_create)
Jason Rumney <jasonr@gnu.org>
parents:
71074
diff
changeset
|
3438 si.nPos = sb_pos; |
4a38eb2f741d
(w32_set_scroll_bar_thumb, x_scroll_bar_create)
Jason Rumney <jasonr@gnu.org>
parents:
71074
diff
changeset
|
3439 |
76022
e892213b9815
(w32_set_scroll_bar_thumb): Don't resize scroll-bar
Kim F. Storm <storm@cua.dk>
parents:
76019
diff
changeset
|
3440 SetScrollInfo (w, SB_CTL, &si, TRUE); |
27402
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
3441 |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
3442 UNBLOCK_INPUT; |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
3443 } |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
3444 |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
3445 |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
3446 /************************************************************************ |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
3447 Scroll bars, general |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
3448 ************************************************************************/ |
48218
01e253345507
(w32_draw_fringe_bitmap): Remove unused local variable window.
Juanma Barranquero <lekktu@gmail.com>
parents:
48025
diff
changeset
|
3449 |
85309
3224d6c172a6
(w32_font_is_double_byte, my_create_scrollbar): Make static.
Juanma Barranquero <lekktu@gmail.com>
parents:
85258
diff
changeset
|
3450 static HWND |
13434 | 3451 my_create_scrollbar (f, bar) |
3452 struct frame * f; | |
3453 struct scroll_bar * bar; | |
3454 { | |
19713
043ccce224fb
(SIF_*): Win95 macros defined for NT.
Geoff Voelker <voelker@cs.washington.edu>
parents:
18877
diff
changeset
|
3455 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
|
3456 WM_EMACS_CREATESCROLLBAR, (WPARAM) f, |
19713
043ccce224fb
(SIF_*): Win95 macros defined for NT.
Geoff Voelker <voelker@cs.washington.edu>
parents:
18877
diff
changeset
|
3457 (LPARAM) bar); |
13434 | 3458 } |
3459 | |
42919
2a546583564f
(x_update_window_begin): Only hide caret if
Jason Rumney <jasonr@gnu.org>
parents:
42864
diff
changeset
|
3460 /*#define ATTACH_THREADS*/ |
15151
ed6ddfc0d954
(Vwindow_system): Declared.
Geoff Voelker <voelker@cs.washington.edu>
parents:
15035
diff
changeset
|
3461 |
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
|
3462 static BOOL |
19713
043ccce224fb
(SIF_*): Win95 macros defined for NT.
Geoff Voelker <voelker@cs.washington.edu>
parents:
18877
diff
changeset
|
3463 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
|
3464 { |
ed6ddfc0d954
(Vwindow_system): Declared.
Geoff Voelker <voelker@cs.washington.edu>
parents:
15035
diff
changeset
|
3465 #ifndef ATTACH_THREADS |
19713
043ccce224fb
(SIF_*): Win95 macros defined for NT.
Geoff Voelker <voelker@cs.washington.edu>
parents:
18877
diff
changeset
|
3466 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
|
3467 (WPARAM) hwnd, (LPARAM) how); |
15151
ed6ddfc0d954
(Vwindow_system): Declared.
Geoff Voelker <voelker@cs.washington.edu>
parents:
15035
diff
changeset
|
3468 #else |
19713
043ccce224fb
(SIF_*): Win95 macros defined for NT.
Geoff Voelker <voelker@cs.washington.edu>
parents:
18877
diff
changeset
|
3469 return ShowWindow (hwnd, how); |
15151
ed6ddfc0d954
(Vwindow_system): Declared.
Geoff Voelker <voelker@cs.washington.edu>
parents:
15035
diff
changeset
|
3470 #endif |
ed6ddfc0d954
(Vwindow_system): Declared.
Geoff Voelker <voelker@cs.washington.edu>
parents:
15035
diff
changeset
|
3471 } |
ed6ddfc0d954
(Vwindow_system): Declared.
Geoff Voelker <voelker@cs.washington.edu>
parents:
15035
diff
changeset
|
3472 |
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
|
3473 static void |
15151
ed6ddfc0d954
(Vwindow_system): Declared.
Geoff Voelker <voelker@cs.washington.edu>
parents:
15035
diff
changeset
|
3474 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
|
3475 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
|
3476 { |
ed6ddfc0d954
(Vwindow_system): Declared.
Geoff Voelker <voelker@cs.washington.edu>
parents:
15035
diff
changeset
|
3477 #ifndef ATTACH_THREADS |
19713
043ccce224fb
(SIF_*): Win95 macros defined for NT.
Geoff Voelker <voelker@cs.washington.edu>
parents:
18877
diff
changeset
|
3478 WINDOWPOS pos; |
043ccce224fb
(SIF_*): Win95 macros defined for NT.
Geoff Voelker <voelker@cs.washington.edu>
parents:
18877
diff
changeset
|
3479 pos.hwndInsertAfter = hwndAfter; |
15151
ed6ddfc0d954
(Vwindow_system): Declared.
Geoff Voelker <voelker@cs.washington.edu>
parents:
15035
diff
changeset
|
3480 pos.x = x; |
ed6ddfc0d954
(Vwindow_system): Declared.
Geoff Voelker <voelker@cs.washington.edu>
parents:
15035
diff
changeset
|
3481 pos.y = y; |
ed6ddfc0d954
(Vwindow_system): Declared.
Geoff Voelker <voelker@cs.washington.edu>
parents:
15035
diff
changeset
|
3482 pos.cx = cx; |
ed6ddfc0d954
(Vwindow_system): Declared.
Geoff Voelker <voelker@cs.washington.edu>
parents:
15035
diff
changeset
|
3483 pos.cy = cy; |
ed6ddfc0d954
(Vwindow_system): Declared.
Geoff Voelker <voelker@cs.washington.edu>
parents:
15035
diff
changeset
|
3484 pos.flags = flags; |
ed6ddfc0d954
(Vwindow_system): Declared.
Geoff Voelker <voelker@cs.washington.edu>
parents:
15035
diff
changeset
|
3485 SendMessage (hwnd, WM_EMACS_SETWINDOWPOS, (WPARAM) &pos, 0); |
ed6ddfc0d954
(Vwindow_system): Declared.
Geoff Voelker <voelker@cs.washington.edu>
parents:
15035
diff
changeset
|
3486 #else |
ed6ddfc0d954
(Vwindow_system): Declared.
Geoff Voelker <voelker@cs.washington.edu>
parents:
15035
diff
changeset
|
3487 SetWindowPos (hwnd, hwndAfter, x, y, cx, cy, flags); |
ed6ddfc0d954
(Vwindow_system): Declared.
Geoff Voelker <voelker@cs.washington.edu>
parents:
15035
diff
changeset
|
3488 #endif |
ed6ddfc0d954
(Vwindow_system): Declared.
Geoff Voelker <voelker@cs.washington.edu>
parents:
15035
diff
changeset
|
3489 } |
ed6ddfc0d954
(Vwindow_system): Declared.
Geoff Voelker <voelker@cs.washington.edu>
parents:
15035
diff
changeset
|
3490 |
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
|
3491 static void |
19713
043ccce224fb
(SIF_*): Win95 macros defined for NT.
Geoff Voelker <voelker@cs.washington.edu>
parents:
18877
diff
changeset
|
3492 my_set_focus (f, hwnd) |
043ccce224fb
(SIF_*): Win95 macros defined for NT.
Geoff Voelker <voelker@cs.washington.edu>
parents:
18877
diff
changeset
|
3493 struct frame * f; |
043ccce224fb
(SIF_*): Win95 macros defined for NT.
Geoff Voelker <voelker@cs.washington.edu>
parents:
18877
diff
changeset
|
3494 HWND hwnd; |
043ccce224fb
(SIF_*): Win95 macros defined for NT.
Geoff Voelker <voelker@cs.washington.edu>
parents:
18877
diff
changeset
|
3495 { |
48218
01e253345507
(w32_draw_fringe_bitmap): Remove unused local variable window.
Juanma Barranquero <lekktu@gmail.com>
parents:
48025
diff
changeset
|
3496 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
|
3497 (WPARAM) hwnd, 0); |
043ccce224fb
(SIF_*): Win95 macros defined for NT.
Geoff Voelker <voelker@cs.washington.edu>
parents:
18877
diff
changeset
|
3498 } |
043ccce224fb
(SIF_*): Win95 macros defined for NT.
Geoff Voelker <voelker@cs.washington.edu>
parents:
18877
diff
changeset
|
3499 |
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
|
3500 static void |
21614
2624d8dcc73f
(Vw32_recognize_altgr): New variable.
Geoff Voelker <voelker@cs.washington.edu>
parents:
21456
diff
changeset
|
3501 my_set_foreground_window (hwnd) |
2624d8dcc73f
(Vw32_recognize_altgr): New variable.
Geoff Voelker <voelker@cs.washington.edu>
parents:
21456
diff
changeset
|
3502 HWND hwnd; |
2624d8dcc73f
(Vw32_recognize_altgr): New variable.
Geoff Voelker <voelker@cs.washington.edu>
parents:
21456
diff
changeset
|
3503 { |
2624d8dcc73f
(Vw32_recognize_altgr): New variable.
Geoff Voelker <voelker@cs.washington.edu>
parents:
21456
diff
changeset
|
3504 SendMessage (hwnd, WM_EMACS_SETFOREGROUND, (WPARAM) hwnd, 0); |
2624d8dcc73f
(Vw32_recognize_altgr): New variable.
Geoff Voelker <voelker@cs.washington.edu>
parents:
21456
diff
changeset
|
3505 } |
2624d8dcc73f
(Vw32_recognize_altgr): New variable.
Geoff Voelker <voelker@cs.washington.edu>
parents:
21456
diff
changeset
|
3506 |
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
|
3507 |
75130ff74ad2
(my_show_window, my_set_window_pos, my_set_focus, my_set_foreground_window,
Juanma Barranquero <lekktu@gmail.com>
parents:
64084
diff
changeset
|
3508 static void |
13434 | 3509 my_destroy_window (f, hwnd) |
3510 struct frame * f; | |
3511 HWND hwnd; | |
3512 { | |
48218
01e253345507
(w32_draw_fringe_bitmap): Remove unused local variable window.
Juanma Barranquero <lekktu@gmail.com>
parents:
48025
diff
changeset
|
3513 SendMessage (FRAME_W32_WINDOW (f), WM_EMACS_DESTROYWINDOW, |
13434 | 3514 (WPARAM) hwnd, 0); |
3515 } | |
3516 | |
27402
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
3517 /* 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
|
3518 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
|
3519 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
|
3520 scroll bar. */ |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
3521 |
13434 | 3522 static struct scroll_bar * |
27402
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
3523 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
|
3524 struct window *w; |
13434 | 3525 int top, left, width, height; |
3526 { | |
27402
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
3527 struct frame *f = XFRAME (WINDOW_FRAME (w)); |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
3528 HWND hwnd; |
71236
4a38eb2f741d
(w32_set_scroll_bar_thumb, x_scroll_bar_create)
Jason Rumney <jasonr@gnu.org>
parents:
71074
diff
changeset
|
3529 SCROLLINFO si; |
13434 | 3530 struct scroll_bar *bar |
3531 = XSCROLL_BAR (Fmake_vector (make_number (SCROLL_BAR_VEC_SIZE), Qnil)); | |
3532 | |
3533 BLOCK_INPUT; | |
3534 | |
27402
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
3535 XSETWINDOW (bar->window, w); |
13434 | 3536 XSETINT (bar->top, top); |
3537 XSETINT (bar->left, left); | |
3538 XSETINT (bar->width, width); | |
3539 XSETINT (bar->height, height); | |
3540 XSETINT (bar->start, 0); | |
3541 XSETINT (bar->end, 0); | |
3542 bar->dragging = Qnil; | |
82170
e0ebebf01b6d
(w32_draw_fringe_bitmap): Extend fringe background to
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
82140
diff
changeset
|
3543 bar->fringe_extended_p = Qnil; |
13434 | 3544 |
3545 /* Requires geometry to be set before call to create the real window */ | |
3546 | |
3547 hwnd = my_create_scrollbar (f, bar); | |
3548 | |
71236
4a38eb2f741d
(w32_set_scroll_bar_thumb, x_scroll_bar_create)
Jason Rumney <jasonr@gnu.org>
parents:
71074
diff
changeset
|
3549 si.cbSize = sizeof (si); |
4a38eb2f741d
(w32_set_scroll_bar_thumb, x_scroll_bar_create)
Jason Rumney <jasonr@gnu.org>
parents:
71074
diff
changeset
|
3550 si.fMask = SIF_ALL; |
4a38eb2f741d
(w32_set_scroll_bar_thumb, x_scroll_bar_create)
Jason Rumney <jasonr@gnu.org>
parents:
71074
diff
changeset
|
3551 si.nMin = 0; |
4a38eb2f741d
(w32_set_scroll_bar_thumb, x_scroll_bar_create)
Jason Rumney <jasonr@gnu.org>
parents:
71074
diff
changeset
|
3552 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
|
3553 + VERTICAL_SCROLL_BAR_MIN_HANDLE; |
4a38eb2f741d
(w32_set_scroll_bar_thumb, x_scroll_bar_create)
Jason Rumney <jasonr@gnu.org>
parents:
71074
diff
changeset
|
3554 si.nPage = si.nMax; |
4a38eb2f741d
(w32_set_scroll_bar_thumb, x_scroll_bar_create)
Jason Rumney <jasonr@gnu.org>
parents:
71074
diff
changeset
|
3555 si.nPos = 0; |
4a38eb2f741d
(w32_set_scroll_bar_thumb, x_scroll_bar_create)
Jason Rumney <jasonr@gnu.org>
parents:
71074
diff
changeset
|
3556 |
4a38eb2f741d
(w32_set_scroll_bar_thumb, x_scroll_bar_create)
Jason Rumney <jasonr@gnu.org>
parents:
71074
diff
changeset
|
3557 SetScrollInfo (hwnd, SB_CTL, &si, FALSE); |
13434 | 3558 |
16588
481b7874a1e9
Change identifiers of the form win32* to w32*.
Geoff Voelker <voelker@cs.washington.edu>
parents:
16326
diff
changeset
|
3559 SET_SCROLL_BAR_W32_WINDOW (bar, hwnd); |
13434 | 3560 |
3561 /* Add bar to its frame's list of scroll bars. */ | |
3562 bar->next = FRAME_SCROLL_BARS (f); | |
3563 bar->prev = Qnil; | |
3564 XSETVECTOR (FRAME_SCROLL_BARS (f), bar); | |
3565 if (! NILP (bar->next)) | |
3566 XSETVECTOR (XSCROLL_BAR (bar->next)->prev, bar); | |
3567 | |
3568 UNBLOCK_INPUT; | |
3569 | |
3570 return bar; | |
3571 } | |
3572 | |
27402
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
3573 |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
3574 /* 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
|
3575 nil. */ |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
3576 |
13434 | 3577 static void |
3578 x_scroll_bar_remove (bar) | |
3579 struct scroll_bar *bar; | |
3580 { | |
3581 FRAME_PTR f = XFRAME (WINDOW_FRAME (XWINDOW (bar->window))); | |
3582 | |
3583 BLOCK_INPUT; | |
3584 | |
3585 /* Destroy the window. */ | |
16588
481b7874a1e9
Change identifiers of the form win32* to w32*.
Geoff Voelker <voelker@cs.washington.edu>
parents:
16326
diff
changeset
|
3586 my_destroy_window (f, SCROLL_BAR_W32_WINDOW (bar)); |
13434 | 3587 |
3588 /* Disassociate this scroll bar from its window. */ | |
3589 XWINDOW (bar->window)->vertical_scroll_bar = Qnil; | |
3590 | |
3591 UNBLOCK_INPUT; | |
3592 } | |
3593 | |
3594 /* Set the handle of the vertical scroll bar for WINDOW to indicate | |
3595 that we are displaying PORTION characters out of a total of WHOLE | |
3596 characters, starting at POSITION. If WINDOW has no scroll bar, | |
3597 create one. */ | |
3598 static void | |
27402
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
3599 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
|
3600 struct window *w; |
13434 | 3601 int portion, whole, position; |
3602 { | |
27402
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
3603 struct frame *f = XFRAME (w->frame); |
13434 | 3604 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
|
3605 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
|
3606 int window_y, window_height; |
82170
e0ebebf01b6d
(w32_draw_fringe_bitmap): Extend fringe background to
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
82140
diff
changeset
|
3607 int fringe_extended_p; |
27402
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
3608 |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
3609 /* Get window dimensions. */ |
51204
082b768216a0
Make (several) trivial substitutions for renamed and
Kim F. Storm <storm@cua.dk>
parents:
50441
diff
changeset
|
3610 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
|
3611 top = window_y; |
51204
082b768216a0
Make (several) trivial substitutions for renamed and
Kim F. Storm <storm@cua.dk>
parents:
50441
diff
changeset
|
3612 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
|
3613 height = window_height; |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
3614 |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
3615 /* 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
|
3616 left = WINDOW_SCROLL_BAR_AREA_X (w); |
27402
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
3617 |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
3618 /* 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
|
3619 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
|
3620 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
|
3621 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
|
3622 else |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
3623 sb_width = width; |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
3624 |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
3625 /* 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
|
3626 if (WINDOW_HAS_VERTICAL_SCROLL_BAR_ON_RIGHT (w)) |
82170
e0ebebf01b6d
(w32_draw_fringe_bitmap): Extend fringe background to
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
82140
diff
changeset
|
3627 sb_left = left + (WINDOW_RIGHTMOST_P (w) ? width - sb_width : 0); |
27402
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
3628 else |
82170
e0ebebf01b6d
(w32_draw_fringe_bitmap): Extend fringe background to
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
82140
diff
changeset
|
3629 sb_left = left + (WINDOW_LEFTMOST_P (w) ? 0 : width - sb_width); |
e0ebebf01b6d
(w32_draw_fringe_bitmap): Extend fringe background to
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
82140
diff
changeset
|
3630 |
e0ebebf01b6d
(w32_draw_fringe_bitmap): Extend fringe background to
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
82140
diff
changeset
|
3631 if (WINDOW_HAS_VERTICAL_SCROLL_BAR_ON_LEFT (w)) |
e0ebebf01b6d
(w32_draw_fringe_bitmap): Extend fringe background to
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
82140
diff
changeset
|
3632 fringe_extended_p = (WINDOW_LEFTMOST_P (w) |
e0ebebf01b6d
(w32_draw_fringe_bitmap): Extend fringe background to
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
82140
diff
changeset
|
3633 && WINDOW_LEFT_FRINGE_WIDTH (w) |
e0ebebf01b6d
(w32_draw_fringe_bitmap): Extend fringe background to
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
82140
diff
changeset
|
3634 && (WINDOW_HAS_FRINGES_OUTSIDE_MARGINS (w) |
e0ebebf01b6d
(w32_draw_fringe_bitmap): Extend fringe background to
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
82140
diff
changeset
|
3635 || WINDOW_LEFT_MARGIN_COLS (w) == 0)); |
e0ebebf01b6d
(w32_draw_fringe_bitmap): Extend fringe background to
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
82140
diff
changeset
|
3636 else |
e0ebebf01b6d
(w32_draw_fringe_bitmap): Extend fringe background to
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
82140
diff
changeset
|
3637 fringe_extended_p = (WINDOW_RIGHTMOST_P (w) |
e0ebebf01b6d
(w32_draw_fringe_bitmap): Extend fringe background to
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
82140
diff
changeset
|
3638 && WINDOW_RIGHT_FRINGE_WIDTH (w) |
e0ebebf01b6d
(w32_draw_fringe_bitmap): Extend fringe background to
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
82140
diff
changeset
|
3639 && (WINDOW_HAS_FRINGES_OUTSIDE_MARGINS (w) |
e0ebebf01b6d
(w32_draw_fringe_bitmap): Extend fringe background to
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
82140
diff
changeset
|
3640 || WINDOW_RIGHT_MARGIN_COLS (w) == 0)); |
13434 | 3641 |
3642 /* Does the scroll bar exist yet? */ | |
27402
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
3643 if (NILP (w->vertical_scroll_bar)) |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
3644 { |
27406
fb36ccd8457c
(w32_fill_rect): Do not try to deal with NULL hdc
Jason Rumney <jasonr@gnu.org>
parents:
27402
diff
changeset
|
3645 HDC hdc; |
27402
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
3646 BLOCK_INPUT; |
41249
2043af2d023f
(note_mouse_highlight): Fix type of variable `ignore'.
Jason Rumney <jasonr@gnu.org>
parents:
41125
diff
changeset
|
3647 if (width > 0 && height > 0) |
40137
5f0d7d58283b
(remember_mouse_glyph): New function.
Jason Rumney <jasonr@gnu.org>
parents:
40078
diff
changeset
|
3648 { |
5f0d7d58283b
(remember_mouse_glyph): New function.
Jason Rumney <jasonr@gnu.org>
parents:
40078
diff
changeset
|
3649 hdc = get_frame_dc (f); |
82170
e0ebebf01b6d
(w32_draw_fringe_bitmap): Extend fringe background to
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
82140
diff
changeset
|
3650 if (fringe_extended_p) |
e0ebebf01b6d
(w32_draw_fringe_bitmap): Extend fringe background to
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
82140
diff
changeset
|
3651 w32_clear_area (f, hdc, sb_left, top, sb_width, height); |
e0ebebf01b6d
(w32_draw_fringe_bitmap): Extend fringe background to
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
82140
diff
changeset
|
3652 else |
e0ebebf01b6d
(w32_draw_fringe_bitmap): Extend fringe background to
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
82140
diff
changeset
|
3653 w32_clear_area (f, hdc, left, top, width, height); |
40137
5f0d7d58283b
(remember_mouse_glyph): New function.
Jason Rumney <jasonr@gnu.org>
parents:
40078
diff
changeset
|
3654 release_frame_dc (f, hdc); |
5f0d7d58283b
(remember_mouse_glyph): New function.
Jason Rumney <jasonr@gnu.org>
parents:
40078
diff
changeset
|
3655 } |
27402
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
3656 UNBLOCK_INPUT; |
27406
fb36ccd8457c
(w32_fill_rect): Do not try to deal with NULL hdc
Jason Rumney <jasonr@gnu.org>
parents:
27402
diff
changeset
|
3657 |
27402
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
3658 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
|
3659 } |
13434 | 3660 else |
3661 { | |
48218
01e253345507
(w32_draw_fringe_bitmap): Remove unused local variable window.
Juanma Barranquero <lekktu@gmail.com>
parents:
48025
diff
changeset
|
3662 /* 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
|
3663 HWND hwnd; |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
3664 |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
3665 bar = XSCROLL_BAR (w->vertical_scroll_bar); |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
3666 hwnd = SCROLL_BAR_W32_WINDOW (bar); |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
3667 |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
3668 /* If already correctly positioned, do nothing. */ |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
3669 if ( XINT (bar->left) == sb_left |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
3670 && XINT (bar->top) == top |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
3671 && XINT (bar->width) == sb_width |
82170
e0ebebf01b6d
(w32_draw_fringe_bitmap): Extend fringe background to
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
82140
diff
changeset
|
3672 && XINT (bar->height) == height |
e0ebebf01b6d
(w32_draw_fringe_bitmap): Extend fringe background to
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
82140
diff
changeset
|
3673 && !NILP (bar->fringe_extended_p) == fringe_extended_p ) |
27402
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
3674 { |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
3675 /* Redraw after clear_frame. */ |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
3676 if (!my_show_window (f, hwnd, SW_NORMAL)) |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
3677 InvalidateRect (hwnd, NULL, FALSE); |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
3678 } |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
3679 else |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
3680 { |
27406
fb36ccd8457c
(w32_fill_rect): Do not try to deal with NULL hdc
Jason Rumney <jasonr@gnu.org>
parents:
27402
diff
changeset
|
3681 HDC hdc; |
71236
4a38eb2f741d
(w32_set_scroll_bar_thumb, x_scroll_bar_create)
Jason Rumney <jasonr@gnu.org>
parents:
71074
diff
changeset
|
3682 SCROLLINFO si; |
4a38eb2f741d
(w32_set_scroll_bar_thumb, x_scroll_bar_create)
Jason Rumney <jasonr@gnu.org>
parents:
71074
diff
changeset
|
3683 |
27402
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
3684 BLOCK_INPUT; |
40137
5f0d7d58283b
(remember_mouse_glyph): New function.
Jason Rumney <jasonr@gnu.org>
parents:
40078
diff
changeset
|
3685 if (width && height) |
5f0d7d58283b
(remember_mouse_glyph): New function.
Jason Rumney <jasonr@gnu.org>
parents:
40078
diff
changeset
|
3686 { |
5f0d7d58283b
(remember_mouse_glyph): New function.
Jason Rumney <jasonr@gnu.org>
parents:
40078
diff
changeset
|
3687 hdc = get_frame_dc (f); |
5f0d7d58283b
(remember_mouse_glyph): New function.
Jason Rumney <jasonr@gnu.org>
parents:
40078
diff
changeset
|
3688 /* 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
|
3689 for them on the frame, we have to clear "under" them. */ |
82170
e0ebebf01b6d
(w32_draw_fringe_bitmap): Extend fringe background to
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
82140
diff
changeset
|
3690 if (fringe_extended_p) |
e0ebebf01b6d
(w32_draw_fringe_bitmap): Extend fringe background to
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
82140
diff
changeset
|
3691 w32_clear_area (f, hdc, sb_left, top, sb_width, height); |
e0ebebf01b6d
(w32_draw_fringe_bitmap): Extend fringe background to
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
82140
diff
changeset
|
3692 else |
e0ebebf01b6d
(w32_draw_fringe_bitmap): Extend fringe background to
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
82140
diff
changeset
|
3693 w32_clear_area (f, hdc, left, top, width, height); |
40137
5f0d7d58283b
(remember_mouse_glyph): New function.
Jason Rumney <jasonr@gnu.org>
parents:
40078
diff
changeset
|
3694 release_frame_dc (f, hdc); |
5f0d7d58283b
(remember_mouse_glyph): New function.
Jason Rumney <jasonr@gnu.org>
parents:
40078
diff
changeset
|
3695 } |
27402
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
3696 /* 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
|
3697 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
|
3698 my_show_window (f, hwnd, SW_HIDE); |
40137
5f0d7d58283b
(remember_mouse_glyph): New function.
Jason Rumney <jasonr@gnu.org>
parents:
40078
diff
changeset
|
3699 MoveWindow (hwnd, sb_left + VERTICAL_SCROLL_BAR_WIDTH_TRIM, |
5f0d7d58283b
(remember_mouse_glyph): New function.
Jason Rumney <jasonr@gnu.org>
parents:
40078
diff
changeset
|
3700 top, sb_width - VERTICAL_SCROLL_BAR_WIDTH_TRIM * 2, |
5f0d7d58283b
(remember_mouse_glyph): New function.
Jason Rumney <jasonr@gnu.org>
parents:
40078
diff
changeset
|
3701 max (height, 1), TRUE); |
71236
4a38eb2f741d
(w32_set_scroll_bar_thumb, x_scroll_bar_create)
Jason Rumney <jasonr@gnu.org>
parents:
71074
diff
changeset
|
3702 |
4a38eb2f741d
(w32_set_scroll_bar_thumb, x_scroll_bar_create)
Jason Rumney <jasonr@gnu.org>
parents:
71074
diff
changeset
|
3703 si.cbSize = sizeof (si); |
4a38eb2f741d
(w32_set_scroll_bar_thumb, x_scroll_bar_create)
Jason Rumney <jasonr@gnu.org>
parents:
71074
diff
changeset
|
3704 si.fMask = SIF_RANGE; |
4a38eb2f741d
(w32_set_scroll_bar_thumb, x_scroll_bar_create)
Jason Rumney <jasonr@gnu.org>
parents:
71074
diff
changeset
|
3705 si.nMin = 0; |
4a38eb2f741d
(w32_set_scroll_bar_thumb, x_scroll_bar_create)
Jason Rumney <jasonr@gnu.org>
parents:
71074
diff
changeset
|
3706 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
|
3707 + VERTICAL_SCROLL_BAR_MIN_HANDLE; |
4a38eb2f741d
(w32_set_scroll_bar_thumb, x_scroll_bar_create)
Jason Rumney <jasonr@gnu.org>
parents:
71074
diff
changeset
|
3708 |
4a38eb2f741d
(w32_set_scroll_bar_thumb, x_scroll_bar_create)
Jason Rumney <jasonr@gnu.org>
parents:
71074
diff
changeset
|
3709 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
|
3710 |
27402
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
3711 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
|
3712 /* InvalidateRect (w, NULL, FALSE); */ |
27402
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
3713 |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
3714 /* Remember new settings. */ |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
3715 XSETINT (bar->left, sb_left); |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
3716 XSETINT (bar->top, top); |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
3717 XSETINT (bar->width, sb_width); |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
3718 XSETINT (bar->height, height); |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
3719 |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
3720 UNBLOCK_INPUT; |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
3721 } |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
3722 } |
82170
e0ebebf01b6d
(w32_draw_fringe_bitmap): Extend fringe background to
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
82140
diff
changeset
|
3723 bar->fringe_extended_p = fringe_extended_p ? Qt : Qnil; |
e0ebebf01b6d
(w32_draw_fringe_bitmap): Extend fringe background to
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
82140
diff
changeset
|
3724 |
27402
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
3725 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
|
3726 |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
3727 XSETVECTOR (w->vertical_scroll_bar, bar); |
13434 | 3728 } |
3729 | |
3730 | |
3731 /* The following three hooks are used when we're doing a thorough | |
3732 redisplay of the frame. We don't explicitly know which scroll bars | |
3733 are going to be deleted, because keeping track of when windows go | |
3734 away is a real pain - "Can you say set-window-configuration, boys | |
3735 and girls?" Instead, we just assert at the beginning of redisplay | |
3736 that *all* scroll bars are to be removed, and then save a scroll bar | |
3737 from the fiery pit when we actually redisplay its window. */ | |
3738 | |
3739 /* Arrange for all scroll bars on FRAME to be removed at the next call | |
3740 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
|
3741 `*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
|
3742 |
13434 | 3743 static void |
16588
481b7874a1e9
Change identifiers of the form win32* to w32*.
Geoff Voelker <voelker@cs.washington.edu>
parents:
16326
diff
changeset
|
3744 w32_condemn_scroll_bars (frame) |
13434 | 3745 FRAME_PTR frame; |
3746 { | |
21614
2624d8dcc73f
(Vw32_recognize_altgr): New variable.
Geoff Voelker <voelker@cs.washington.edu>
parents:
21456
diff
changeset
|
3747 /* 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
|
3748 while (! NILP (FRAME_SCROLL_BARS (frame))) |
2624d8dcc73f
(Vw32_recognize_altgr): New variable.
Geoff Voelker <voelker@cs.washington.edu>
parents:
21456
diff
changeset
|
3749 { |
2624d8dcc73f
(Vw32_recognize_altgr): New variable.
Geoff Voelker <voelker@cs.washington.edu>
parents:
21456
diff
changeset
|
3750 Lisp_Object bar; |
2624d8dcc73f
(Vw32_recognize_altgr): New variable.
Geoff Voelker <voelker@cs.washington.edu>
parents:
21456
diff
changeset
|
3751 bar = FRAME_SCROLL_BARS (frame); |
2624d8dcc73f
(Vw32_recognize_altgr): New variable.
Geoff Voelker <voelker@cs.washington.edu>
parents:
21456
diff
changeset
|
3752 FRAME_SCROLL_BARS (frame) = XSCROLL_BAR (bar)->next; |
2624d8dcc73f
(Vw32_recognize_altgr): New variable.
Geoff Voelker <voelker@cs.washington.edu>
parents:
21456
diff
changeset
|
3753 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
|
3754 XSCROLL_BAR (bar)->prev = Qnil; |
2624d8dcc73f
(Vw32_recognize_altgr): New variable.
Geoff Voelker <voelker@cs.washington.edu>
parents:
21456
diff
changeset
|
3755 if (! NILP (FRAME_CONDEMNED_SCROLL_BARS (frame))) |
2624d8dcc73f
(Vw32_recognize_altgr): New variable.
Geoff Voelker <voelker@cs.washington.edu>
parents:
21456
diff
changeset
|
3756 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
|
3757 FRAME_CONDEMNED_SCROLL_BARS (frame) = bar; |
2624d8dcc73f
(Vw32_recognize_altgr): New variable.
Geoff Voelker <voelker@cs.washington.edu>
parents:
21456
diff
changeset
|
3758 } |
13434 | 3759 } |
3760 | |
35384
e50a7f9ce65e
(x_produce_stretch_glyph): Only use Qspace when GLYPH_DEBUG is defined.
Jason Rumney <jasonr@gnu.org>
parents:
35287
diff
changeset
|
3761 |
29321
8e2be36bb1c6
Format and doc changes to bring closer to xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
28369
diff
changeset
|
3762 /* Un-mark WINDOW's scroll bar for deletion in this judgment cycle. |
13434 | 3763 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
|
3764 |
13434 | 3765 static void |
16588
481b7874a1e9
Change identifiers of the form win32* to w32*.
Geoff Voelker <voelker@cs.washington.edu>
parents:
16326
diff
changeset
|
3766 w32_redeem_scroll_bar (window) |
13434 | 3767 struct window *window; |
3768 { | |
3769 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
|
3770 struct frame *f; |
13434 | 3771 |
3772 /* We can't redeem this window's scroll bar if it doesn't have one. */ | |
3773 if (NILP (window->vertical_scroll_bar)) | |
3774 abort (); | |
3775 | |
3776 bar = XSCROLL_BAR (window->vertical_scroll_bar); | |
3777 | |
3778 /* 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
|
3779 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
|
3780 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
|
3781 { |
e50a7f9ce65e
(x_produce_stretch_glyph): Only use Qspace when GLYPH_DEBUG is defined.
Jason Rumney <jasonr@gnu.org>
parents:
35287
diff
changeset
|
3782 /* 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
|
3783 the lists. */ |
e50a7f9ce65e
(x_produce_stretch_glyph): Only use Qspace when GLYPH_DEBUG is defined.
Jason Rumney <jasonr@gnu.org>
parents:
35287
diff
changeset
|
3784 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
|
3785 /* 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
|
3786 return; |
e50a7f9ce65e
(x_produce_stretch_glyph): Only use Qspace when GLYPH_DEBUG is defined.
Jason Rumney <jasonr@gnu.org>
parents:
35287
diff
changeset
|
3787 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
|
3788 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
|
3789 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
|
3790 else |
e50a7f9ce65e
(x_produce_stretch_glyph): Only use Qspace when GLYPH_DEBUG is defined.
Jason Rumney <jasonr@gnu.org>
parents:
35287
diff
changeset
|
3791 /* 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
|
3792 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
|
3793 abort (); |
e50a7f9ce65e
(x_produce_stretch_glyph): Only use Qspace when GLYPH_DEBUG is defined.
Jason Rumney <jasonr@gnu.org>
parents:
35287
diff
changeset
|
3794 } |
e50a7f9ce65e
(x_produce_stretch_glyph): Only use Qspace when GLYPH_DEBUG is defined.
Jason Rumney <jasonr@gnu.org>
parents:
35287
diff
changeset
|
3795 else |
e50a7f9ce65e
(x_produce_stretch_glyph): Only use Qspace when GLYPH_DEBUG is defined.
Jason Rumney <jasonr@gnu.org>
parents:
35287
diff
changeset
|
3796 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
|
3797 |
e50a7f9ce65e
(x_produce_stretch_glyph): Only use Qspace when GLYPH_DEBUG is defined.
Jason Rumney <jasonr@gnu.org>
parents:
35287
diff
changeset
|
3798 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
|
3799 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
|
3800 |
e50a7f9ce65e
(x_produce_stretch_glyph): Only use Qspace when GLYPH_DEBUG is defined.
Jason Rumney <jasonr@gnu.org>
parents:
35287
diff
changeset
|
3801 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
|
3802 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
|
3803 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
|
3804 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
|
3805 XSETVECTOR (XSCROLL_BAR (bar->next)->prev, bar); |
13434 | 3806 } |
3807 | |
3808 /* Remove all scroll bars on FRAME that haven't been saved since the | |
3809 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
|
3810 |
13434 | 3811 static void |
16588
481b7874a1e9
Change identifiers of the form win32* to w32*.
Geoff Voelker <voelker@cs.washington.edu>
parents:
16326
diff
changeset
|
3812 w32_judge_scroll_bars (f) |
13434 | 3813 FRAME_PTR f; |
3814 { | |
3815 Lisp_Object bar, next; | |
3816 | |
3817 bar = FRAME_CONDEMNED_SCROLL_BARS (f); | |
3818 | |
3819 /* Clear out the condemned list now so we won't try to process any | |
3820 more events on the hapless scroll bars. */ | |
3821 FRAME_CONDEMNED_SCROLL_BARS (f) = Qnil; | |
3822 | |
3823 for (; ! NILP (bar); bar = next) | |
3824 { | |
3825 struct scroll_bar *b = XSCROLL_BAR (bar); | |
3826 | |
3827 x_scroll_bar_remove (b); | |
3828 | |
3829 next = b->next; | |
3830 b->next = b->prev = Qnil; | |
3831 } | |
3832 | |
3833 /* Now there should be no references to the condemned scroll bars, | |
3834 and they should get garbage-collected. */ | |
3835 } | |
3836 | |
3837 /* 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
|
3838 is set to something other than NO_EVENT, it is enqueued. |
13434 | 3839 |
3840 This may be called from a signal handler, so we have to ignore GC | |
3841 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
|
3842 |
15151
ed6ddfc0d954
(Vwindow_system): Declared.
Geoff Voelker <voelker@cs.washington.edu>
parents:
15035
diff
changeset
|
3843 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
|
3844 w32_scroll_bar_handle_click (bar, msg, emacs_event) |
13434 | 3845 struct scroll_bar *bar; |
16588
481b7874a1e9
Change identifiers of the form win32* to w32*.
Geoff Voelker <voelker@cs.washington.edu>
parents:
16326
diff
changeset
|
3846 W32Msg *msg; |
13434 | 3847 struct input_event *emacs_event; |
3848 { | |
90970
3371fc48749b
Replace uses of GC_* macros with the non-GC_ versions.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
90923
diff
changeset
|
3849 if (! WINDOWP (bar->window)) |
13434 | 3850 abort (); |
3851 | |
85983
fbeab07144ff
(w32_scroll_bar_handle_click): Use SCROLL_BAR_CLICK_EVENT.
Jason Rumney <jasonr@gnu.org>
parents:
85850
diff
changeset
|
3852 emacs_event->kind = SCROLL_BAR_CLICK_EVENT; |
13434 | 3853 emacs_event->code = 0; |
15151
ed6ddfc0d954
(Vwindow_system): Declared.
Geoff Voelker <voelker@cs.washington.edu>
parents:
15035
diff
changeset
|
3854 /* not really meaningful to distinguish up/down */ |
ed6ddfc0d954
(Vwindow_system): Declared.
Geoff Voelker <voelker@cs.washington.edu>
parents:
15035
diff
changeset
|
3855 emacs_event->modifiers = msg->dwModifiers; |
13434 | 3856 emacs_event->frame_or_window = bar->window; |
30199
298f10cd4ba5
(construct_mouse_click, construct_mouse_wheel)
Gerd Moellmann <gerd@gnu.org>
parents:
30179
diff
changeset
|
3857 emacs_event->arg = Qnil; |
13434 | 3858 emacs_event->timestamp = msg->msg.time; |
3859 | |
3860 { | |
27402
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
3861 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
|
3862 int y; |
043ccce224fb
(SIF_*): Win95 macros defined for NT.
Geoff Voelker <voelker@cs.washington.edu>
parents:
18877
diff
changeset
|
3863 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
|
3864 SCROLLINFO si; |
4a38eb2f741d
(w32_set_scroll_bar_thumb, x_scroll_bar_create)
Jason Rumney <jasonr@gnu.org>
parents:
71074
diff
changeset
|
3865 |
4a38eb2f741d
(w32_set_scroll_bar_thumb, x_scroll_bar_create)
Jason Rumney <jasonr@gnu.org>
parents:
71074
diff
changeset
|
3866 si.cbSize = sizeof (si); |
4a38eb2f741d
(w32_set_scroll_bar_thumb, x_scroll_bar_create)
Jason Rumney <jasonr@gnu.org>
parents:
71074
diff
changeset
|
3867 si.fMask = SIF_POS; |
4a38eb2f741d
(w32_set_scroll_bar_thumb, x_scroll_bar_create)
Jason Rumney <jasonr@gnu.org>
parents:
71074
diff
changeset
|
3868 |
4a38eb2f741d
(w32_set_scroll_bar_thumb, x_scroll_bar_create)
Jason Rumney <jasonr@gnu.org>
parents:
71074
diff
changeset
|
3869 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
|
3870 y = si.nPos; |
19713
043ccce224fb
(SIF_*): Win95 macros defined for NT.
Geoff Voelker <voelker@cs.washington.edu>
parents:
18877
diff
changeset
|
3871 |
043ccce224fb
(SIF_*): Win95 macros defined for NT.
Geoff Voelker <voelker@cs.washington.edu>
parents:
18877
diff
changeset
|
3872 bar->dragging = Qnil; |
13434 | 3873 |
29321
8e2be36bb1c6
Format and doc changes to bring closer to xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
28369
diff
changeset
|
3874 |
8e2be36bb1c6
Format and doc changes to bring closer to xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
28369
diff
changeset
|
3875 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
|
3876 |
13434 | 3877 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
|
3878 { |
f639c5d732a3
(x_scroll_bar_set_handle): Always use start in calling SetScrollPos.
Richard M. Stallman <rms@gnu.org>
parents:
15204
diff
changeset
|
3879 case SB_LINEDOWN: |
15151
ed6ddfc0d954
(Vwindow_system): Declared.
Geoff Voelker <voelker@cs.washington.edu>
parents:
15035
diff
changeset
|
3880 emacs_event->part = scroll_bar_down_arrow; |
13434 | 3881 break; |
15216
f639c5d732a3
(x_scroll_bar_set_handle): Always use start in calling SetScrollPos.
Richard M. Stallman <rms@gnu.org>
parents:
15204
diff
changeset
|
3882 case SB_LINEUP: |
15151
ed6ddfc0d954
(Vwindow_system): Declared.
Geoff Voelker <voelker@cs.washington.edu>
parents:
15035
diff
changeset
|
3883 emacs_event->part = scroll_bar_up_arrow; |
13434 | 3884 break; |
15216
f639c5d732a3
(x_scroll_bar_set_handle): Always use start in calling SetScrollPos.
Richard M. Stallman <rms@gnu.org>
parents:
15204
diff
changeset
|
3885 case SB_PAGEUP: |
13434 | 3886 emacs_event->part = scroll_bar_above_handle; |
3887 break; | |
15216
f639c5d732a3
(x_scroll_bar_set_handle): Always use start in calling SetScrollPos.
Richard M. Stallman <rms@gnu.org>
parents:
15204
diff
changeset
|
3888 case SB_PAGEDOWN: |
13434 | 3889 emacs_event->part = scroll_bar_below_handle; |
3890 break; | |
15216
f639c5d732a3
(x_scroll_bar_set_handle): Always use start in calling SetScrollPos.
Richard M. Stallman <rms@gnu.org>
parents:
15204
diff
changeset
|
3891 case SB_TOP: |
13434 | 3892 emacs_event->part = scroll_bar_handle; |
3893 y = 0; | |
3894 break; | |
15216
f639c5d732a3
(x_scroll_bar_set_handle): Always use start in calling SetScrollPos.
Richard M. Stallman <rms@gnu.org>
parents:
15204
diff
changeset
|
3895 case SB_BOTTOM: |
13434 | 3896 emacs_event->part = scroll_bar_handle; |
3897 y = top_range; | |
3898 break; | |
19713
043ccce224fb
(SIF_*): Win95 macros defined for NT.
Geoff Voelker <voelker@cs.washington.edu>
parents:
18877
diff
changeset
|
3899 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
|
3900 case SB_THUMBPOSITION: |
27402
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
3901 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
|
3902 y = HIWORD (msg->msg.wParam); |
19713
043ccce224fb
(SIF_*): Win95 macros defined for NT.
Geoff Voelker <voelker@cs.washington.edu>
parents:
18877
diff
changeset
|
3903 bar->dragging = Qt; |
13434 | 3904 emacs_event->part = scroll_bar_handle; |
19713
043ccce224fb
(SIF_*): Win95 macros defined for NT.
Geoff Voelker <voelker@cs.washington.edu>
parents:
18877
diff
changeset
|
3905 |
043ccce224fb
(SIF_*): Win95 macros defined for NT.
Geoff Voelker <voelker@cs.washington.edu>
parents:
18877
diff
changeset
|
3906 /* "Silently" update current position. */ |
71236
4a38eb2f741d
(w32_set_scroll_bar_thumb, x_scroll_bar_create)
Jason Rumney <jasonr@gnu.org>
parents:
71074
diff
changeset
|
3907 { |
4a38eb2f741d
(w32_set_scroll_bar_thumb, x_scroll_bar_create)
Jason Rumney <jasonr@gnu.org>
parents:
71074
diff
changeset
|
3908 SCROLLINFO si; |
4a38eb2f741d
(w32_set_scroll_bar_thumb, x_scroll_bar_create)
Jason Rumney <jasonr@gnu.org>
parents:
71074
diff
changeset
|
3909 |
4a38eb2f741d
(w32_set_scroll_bar_thumb, x_scroll_bar_create)
Jason Rumney <jasonr@gnu.org>
parents:
71074
diff
changeset
|
3910 si.cbSize = sizeof (si); |
4a38eb2f741d
(w32_set_scroll_bar_thumb, x_scroll_bar_create)
Jason Rumney <jasonr@gnu.org>
parents:
71074
diff
changeset
|
3911 si.fMask = SIF_POS; |
4a38eb2f741d
(w32_set_scroll_bar_thumb, x_scroll_bar_create)
Jason Rumney <jasonr@gnu.org>
parents:
71074
diff
changeset
|
3912 si.nPos = y; |
4a38eb2f741d
(w32_set_scroll_bar_thumb, x_scroll_bar_create)
Jason Rumney <jasonr@gnu.org>
parents:
71074
diff
changeset
|
3913 /* 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
|
3914 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
|
3915 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
|
3916 |
4a38eb2f741d
(w32_set_scroll_bar_thumb, x_scroll_bar_create)
Jason Rumney <jasonr@gnu.org>
parents:
71074
diff
changeset
|
3917 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
|
3918 } |
13434 | 3919 break; |
15216
f639c5d732a3
(x_scroll_bar_set_handle): Always use start in calling SetScrollPos.
Richard M. Stallman <rms@gnu.org>
parents:
15204
diff
changeset
|
3920 case SB_ENDSCROLL: |
19713
043ccce224fb
(SIF_*): Win95 macros defined for NT.
Geoff Voelker <voelker@cs.washington.edu>
parents:
18877
diff
changeset
|
3921 /* 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
|
3922 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
|
3923 nothing. */ |
043ccce224fb
(SIF_*): Win95 macros defined for NT.
Geoff Voelker <voelker@cs.washington.edu>
parents:
18877
diff
changeset
|
3924 if (dragging) |
043ccce224fb
(SIF_*): Win95 macros defined for NT.
Geoff Voelker <voelker@cs.washington.edu>
parents:
18877
diff
changeset
|
3925 { |
71236
4a38eb2f741d
(w32_set_scroll_bar_thumb, x_scroll_bar_create)
Jason Rumney <jasonr@gnu.org>
parents:
71074
diff
changeset
|
3926 SCROLLINFO si; |
4a38eb2f741d
(w32_set_scroll_bar_thumb, x_scroll_bar_create)
Jason Rumney <jasonr@gnu.org>
parents:
71074
diff
changeset
|
3927 int start = XINT (bar->start); |
4a38eb2f741d
(w32_set_scroll_bar_thumb, x_scroll_bar_create)
Jason Rumney <jasonr@gnu.org>
parents:
71074
diff
changeset
|
3928 int end = XINT (bar->end); |
4a38eb2f741d
(w32_set_scroll_bar_thumb, x_scroll_bar_create)
Jason Rumney <jasonr@gnu.org>
parents:
71074
diff
changeset
|
3929 |
4a38eb2f741d
(w32_set_scroll_bar_thumb, x_scroll_bar_create)
Jason Rumney <jasonr@gnu.org>
parents:
71074
diff
changeset
|
3930 si.cbSize = sizeof (si); |
4a38eb2f741d
(w32_set_scroll_bar_thumb, x_scroll_bar_create)
Jason Rumney <jasonr@gnu.org>
parents:
71074
diff
changeset
|
3931 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
|
3932 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
|
3933 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
|
3934 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
|
3935 } |
043ccce224fb
(SIF_*): Win95 macros defined for NT.
Geoff Voelker <voelker@cs.washington.edu>
parents:
18877
diff
changeset
|
3936 /* 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
|
3937 default: |
45803
9484de301252
Rename enum event_kind items.
Pavel Janík <Pavel@Janik.cz>
parents:
45507
diff
changeset
|
3938 emacs_event->kind = NO_EVENT; |
15151
ed6ddfc0d954
(Vwindow_system): Declared.
Geoff Voelker <voelker@cs.washington.edu>
parents:
15035
diff
changeset
|
3939 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
|
3940 } |
15151
ed6ddfc0d954
(Vwindow_system): Declared.
Geoff Voelker <voelker@cs.washington.edu>
parents:
15035
diff
changeset
|
3941 |
13434 | 3942 XSETINT (emacs_event->x, y); |
3943 XSETINT (emacs_event->y, top_range); | |
15151
ed6ddfc0d954
(Vwindow_system): Declared.
Geoff Voelker <voelker@cs.washington.edu>
parents:
15035
diff
changeset
|
3944 |
ed6ddfc0d954
(Vwindow_system): Declared.
Geoff Voelker <voelker@cs.washington.edu>
parents:
15035
diff
changeset
|
3945 return TRUE; |
13434 | 3946 } |
3947 } | |
3948 | |
3949 /* Return information to the user about the current position of the mouse | |
3950 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
|
3951 |
13434 | 3952 static void |
3953 x_scroll_bar_report_motion (fp, bar_window, part, x, y, time) | |
3954 FRAME_PTR *fp; | |
3955 Lisp_Object *bar_window; | |
3956 enum scroll_bar_part *part; | |
3957 Lisp_Object *x, *y; | |
3958 unsigned long *time; | |
3959 { | |
3960 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
|
3961 Window w = SCROLL_BAR_W32_WINDOW (bar); |
13434 | 3962 FRAME_PTR f = XFRAME (WINDOW_FRAME (XWINDOW (bar->window))); |
3963 int pos; | |
27402
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
3964 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
|
3965 SCROLLINFO si; |
13434 | 3966 |
3967 BLOCK_INPUT; | |
3968 | |
3969 *fp = f; | |
3970 *bar_window = bar->window; | |
3971 | |
71236
4a38eb2f741d
(w32_set_scroll_bar_thumb, x_scroll_bar_create)
Jason Rumney <jasonr@gnu.org>
parents:
71074
diff
changeset
|
3972 si.cbSize = sizeof (si); |
4a38eb2f741d
(w32_set_scroll_bar_thumb, x_scroll_bar_create)
Jason Rumney <jasonr@gnu.org>
parents:
71074
diff
changeset
|
3973 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
|
3974 |
4a38eb2f741d
(w32_set_scroll_bar_thumb, x_scroll_bar_create)
Jason Rumney <jasonr@gnu.org>
parents:
71074
diff
changeset
|
3975 GetScrollInfo (w, SB_CTL, &si); |
4a38eb2f741d
(w32_set_scroll_bar_thumb, x_scroll_bar_create)
Jason Rumney <jasonr@gnu.org>
parents:
71074
diff
changeset
|
3976 pos = si.nPos; |
4a38eb2f741d
(w32_set_scroll_bar_thumb, x_scroll_bar_create)
Jason Rumney <jasonr@gnu.org>
parents:
71074
diff
changeset
|
3977 top_range = si.nMax - si.nPage + 1; |
13434 | 3978 |
3979 switch (LOWORD (last_mouse_scroll_bar_pos)) | |
3980 { | |
3981 case SB_THUMBPOSITION: | |
3982 case SB_THUMBTRACK: | |
3983 *part = scroll_bar_handle; | |
27402
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
3984 if (VERTICAL_SCROLL_BAR_TOP_RANGE (f, XINT (bar->height)) <= 0xffff) |
13434 | 3985 pos = HIWORD (last_mouse_scroll_bar_pos); |
3986 break; | |
3987 case SB_LINEDOWN: | |
3988 *part = scroll_bar_handle; | |
3989 pos++; | |
3990 break; | |
3991 default: | |
3992 *part = scroll_bar_handle; | |
3993 break; | |
3994 } | |
3995 | |
32022
1f26caa05cd7
(w32_char_font_type, w32_encode_char, x_produce_glyphs): Distinguish
Jason Rumney <jasonr@gnu.org>
parents:
31624
diff
changeset
|
3996 XSETINT (*x, pos); |
1f26caa05cd7
(w32_char_font_type, w32_encode_char, x_produce_glyphs): Distinguish
Jason Rumney <jasonr@gnu.org>
parents:
31624
diff
changeset
|
3997 XSETINT (*y, top_range); |
13434 | 3998 |
3999 f->mouse_moved = 0; | |
4000 last_mouse_scroll_bar = Qnil; | |
4001 | |
4002 *time = last_mouse_movement_time; | |
4003 | |
4004 UNBLOCK_INPUT; | |
4005 } | |
4006 | |
29321
8e2be36bb1c6
Format and doc changes to bring closer to xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
28369
diff
changeset
|
4007 |
13434 | 4008 /* The screen has been cleared so we may have changed foreground or |
4009 background colors, and the scroll bars may need to be redrawn. | |
4010 Clear out the scroll bars, and ask for expose events, so we can | |
4011 redraw them. */ | |
29321
8e2be36bb1c6
Format and doc changes to bring closer to xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
28369
diff
changeset
|
4012 |
27402
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
4013 void |
13434 | 4014 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
|
4015 FRAME_PTR f; |
13434 | 4016 { |
4017 Lisp_Object bar; | |
4018 | |
29321
8e2be36bb1c6
Format and doc changes to bring closer to xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
28369
diff
changeset
|
4019 /* 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
|
4020 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
|
4021 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
|
4022 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
|
4023 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
|
4024 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
|
4025 { |
8e2be36bb1c6
Format and doc changes to bring closer to xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
28369
diff
changeset
|
4026 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
|
4027 HDC hdc = GetDC (window); |
8e2be36bb1c6
Format and doc changes to bring closer to xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
28369
diff
changeset
|
4028 RECT rect; |
8e2be36bb1c6
Format and doc changes to bring closer to xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
28369
diff
changeset
|
4029 |
8e2be36bb1c6
Format and doc changes to bring closer to xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
28369
diff
changeset
|
4030 /* 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
|
4031 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
|
4032 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
|
4033 |
8e2be36bb1c6
Format and doc changes to bring closer to xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
28369
diff
changeset
|
4034 GetClientRect (window, &rect); |
8e2be36bb1c6
Format and doc changes to bring closer to xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
28369
diff
changeset
|
4035 select_palette (f, hdc); |
8e2be36bb1c6
Format and doc changes to bring closer to xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
28369
diff
changeset
|
4036 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
|
4037 deselect_palette (f, hdc); |
8e2be36bb1c6
Format and doc changes to bring closer to xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
28369
diff
changeset
|
4038 |
8e2be36bb1c6
Format and doc changes to bring closer to xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
28369
diff
changeset
|
4039 ReleaseDC (window, hdc); |
8e2be36bb1c6
Format and doc changes to bring closer to xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
28369
diff
changeset
|
4040 } |
15151
ed6ddfc0d954
(Vwindow_system): Declared.
Geoff Voelker <voelker@cs.washington.edu>
parents:
15035
diff
changeset
|
4041 } |
ed6ddfc0d954
(Vwindow_system): Declared.
Geoff Voelker <voelker@cs.washington.edu>
parents:
15035
diff
changeset
|
4042 |
13434 | 4043 |
16588
481b7874a1e9
Change identifiers of the form win32* to w32*.
Geoff Voelker <voelker@cs.washington.edu>
parents:
16326
diff
changeset
|
4044 /* The main W32 event-reading loop - w32_read_socket. */ |
13434 | 4045 |
4046 /* Record the last 100 characters stored | |
4047 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
|
4048 |
8e2be36bb1c6
Format and doc changes to bring closer to xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
28369
diff
changeset
|
4049 static int temp_index; |
8e2be36bb1c6
Format and doc changes to bring closer to xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
28369
diff
changeset
|
4050 static short temp_buffer[100]; |
13434 | 4051 |
79565
bfdbb60ac756
(w32_read_socket): Use MULTIBYTE_CHAR_KEYSTROKE_EVENT for characters above 127.
Jason Rumney <jasonr@gnu.org>
parents:
79301
diff
changeset
|
4052 /* Temporarily store lead byte of DBCS input sequences. */ |
bfdbb60ac756
(w32_read_socket): Use MULTIBYTE_CHAR_KEYSTROKE_EVENT for characters above 127.
Jason Rumney <jasonr@gnu.org>
parents:
79301
diff
changeset
|
4053 static char dbcs_lead = 0; |
14462
599a3ae1e8ea
(convert_to_key_event, is_dead_key): New functions.
Geoff Voelker <voelker@cs.washington.edu>
parents:
14351
diff
changeset
|
4054 |
16588
481b7874a1e9
Change identifiers of the form win32* to w32*.
Geoff Voelker <voelker@cs.washington.edu>
parents:
16326
diff
changeset
|
4055 /* Read events coming from the W32 shell. |
13434 | 4056 This routine is called by the SIGIO handler. |
4057 We return as soon as there are no more events to be read. | |
4058 | |
4059 We return the number of characters stored into the buffer, | |
4060 thus pretending to be `read'. | |
4061 | |
48218
01e253345507
(w32_draw_fringe_bitmap): Remove unused local variable window.
Juanma Barranquero <lekktu@gmail.com>
parents:
48025
diff
changeset
|
4062 EXPECTED is nonzero if the caller knows input is available. |
13434 | 4063 |
4064 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
|
4065 system calls the windows proc directly in a context where we cannot return |
85309
3224d6c172a6
(w32_font_is_double_byte, my_create_scrollbar): Make static.
Juanma Barranquero <lekktu@gmail.com>
parents:
85258
diff
changeset
|
4066 the data nor can we guarantee the state we are in. So if we dispatch them |
13434 | 4067 we will get into an infinite loop. To prevent this from ever happening we |
4068 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
|
4069 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
|
4070 recursively with different messages by the system. |
13434 | 4071 */ |
4072 | |
4073 int | |
54171
f6909a416c3f
(w32_read_socket): Remove bufp_r and numcharsp args.
Kim F. Storm <storm@cua.dk>
parents:
54126
diff
changeset
|
4074 w32_read_socket (sd, expected, hold_quit) |
13434 | 4075 register int sd; |
4076 int expected; | |
54171
f6909a416c3f
(w32_read_socket): Remove bufp_r and numcharsp args.
Kim F. Storm <storm@cua.dk>
parents:
54126
diff
changeset
|
4077 struct input_event *hold_quit; |
13434 | 4078 { |
4079 int count = 0; | |
19713
043ccce224fb
(SIF_*): Win95 macros defined for NT.
Geoff Voelker <voelker@cs.washington.edu>
parents:
18877
diff
changeset
|
4080 int check_visibility = 0; |
16588
481b7874a1e9
Change identifiers of the form win32* to w32*.
Geoff Voelker <voelker@cs.washington.edu>
parents:
16326
diff
changeset
|
4081 W32Msg msg; |
13434 | 4082 struct frame *f; |
16588
481b7874a1e9
Change identifiers of the form win32* to w32*.
Geoff Voelker <voelker@cs.washington.edu>
parents:
16326
diff
changeset
|
4083 struct w32_display_info *dpyinfo = &one_w32_display_info; |
13434 | 4084 |
4085 if (interrupt_input_blocked) | |
4086 { | |
4087 interrupt_input_pending = 1; | |
4088 return -1; | |
4089 } | |
4090 | |
4091 interrupt_input_pending = 0; | |
4092 BLOCK_INPUT; | |
4093 | |
4094 /* So people can tell when we have read the available input. */ | |
4095 input_signal_count++; | |
4096 | |
55286
b4bf3dd67827
(x_draw_hollow_cursor): Sync with xterm.c
Jason Rumney <jasonr@gnu.org>
parents:
55026
diff
changeset
|
4097 /* TODO: ghostscript integration. */ |
15151
ed6ddfc0d954
(Vwindow_system): Declared.
Geoff Voelker <voelker@cs.washington.edu>
parents:
15035
diff
changeset
|
4098 while (get_next_msg (&msg, FALSE)) |
13434 | 4099 { |
54171
f6909a416c3f
(w32_read_socket): Remove bufp_r and numcharsp args.
Kim F. Storm <storm@cua.dk>
parents:
54126
diff
changeset
|
4100 struct input_event inev; |
f6909a416c3f
(w32_read_socket): Remove bufp_r and numcharsp args.
Kim F. Storm <storm@cua.dk>
parents:
54126
diff
changeset
|
4101 int do_help = 0; |
f6909a416c3f
(w32_read_socket): Remove bufp_r and numcharsp args.
Kim F. Storm <storm@cua.dk>
parents:
54126
diff
changeset
|
4102 |
f6909a416c3f
(w32_read_socket): Remove bufp_r and numcharsp args.
Kim F. Storm <storm@cua.dk>
parents:
54126
diff
changeset
|
4103 EVENT_INIT (inev); |
f6909a416c3f
(w32_read_socket): Remove bufp_r and numcharsp args.
Kim F. Storm <storm@cua.dk>
parents:
54126
diff
changeset
|
4104 inev.kind = NO_EVENT; |
f6909a416c3f
(w32_read_socket): Remove bufp_r and numcharsp args.
Kim F. Storm <storm@cua.dk>
parents:
54126
diff
changeset
|
4105 inev.arg = Qnil; |
f6909a416c3f
(w32_read_socket): Remove bufp_r and numcharsp args.
Kim F. Storm <storm@cua.dk>
parents:
54126
diff
changeset
|
4106 |
13434 | 4107 switch (msg.msg.message) |
4108 { | |
102584
5cd33b0be96f
* w32term.h (WM_EMACS_PAINT): New message.
Jason Rumney <jasonr@gnu.org>
parents:
101977
diff
changeset
|
4109 case WM_EMACS_PAINT: |
40137
5f0d7d58283b
(remember_mouse_glyph): New function.
Jason Rumney <jasonr@gnu.org>
parents:
40078
diff
changeset
|
4110 f = x_window_to_frame (dpyinfo, msg.msg.hwnd); |
5f0d7d58283b
(remember_mouse_glyph): New function.
Jason Rumney <jasonr@gnu.org>
parents:
40078
diff
changeset
|
4111 |
48218
01e253345507
(w32_draw_fringe_bitmap): Remove unused local variable window.
Juanma Barranquero <lekktu@gmail.com>
parents:
48025
diff
changeset
|
4112 if (f) |
40137
5f0d7d58283b
(remember_mouse_glyph): New function.
Jason Rumney <jasonr@gnu.org>
parents:
40078
diff
changeset
|
4113 { |
5f0d7d58283b
(remember_mouse_glyph): New function.
Jason Rumney <jasonr@gnu.org>
parents:
40078
diff
changeset
|
4114 if (msg.rect.right == msg.rect.left || |
5f0d7d58283b
(remember_mouse_glyph): New function.
Jason Rumney <jasonr@gnu.org>
parents:
40078
diff
changeset
|
4115 msg.rect.bottom == msg.rect.top) |
5f0d7d58283b
(remember_mouse_glyph): New function.
Jason Rumney <jasonr@gnu.org>
parents:
40078
diff
changeset
|
4116 { |
5f0d7d58283b
(remember_mouse_glyph): New function.
Jason Rumney <jasonr@gnu.org>
parents:
40078
diff
changeset
|
4117 /* We may get paint messages even though the client |
5f0d7d58283b
(remember_mouse_glyph): New function.
Jason Rumney <jasonr@gnu.org>
parents:
40078
diff
changeset
|
4118 area is clipped - these are not expose events. */ |
5f0d7d58283b
(remember_mouse_glyph): New function.
Jason Rumney <jasonr@gnu.org>
parents:
40078
diff
changeset
|
4119 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
|
4120 SDATA (f->name))); |
40137
5f0d7d58283b
(remember_mouse_glyph): New function.
Jason Rumney <jasonr@gnu.org>
parents:
40078
diff
changeset
|
4121 } |
5f0d7d58283b
(remember_mouse_glyph): New function.
Jason Rumney <jasonr@gnu.org>
parents:
40078
diff
changeset
|
4122 else if (f->async_visible != 1) |
5f0d7d58283b
(remember_mouse_glyph): New function.
Jason Rumney <jasonr@gnu.org>
parents:
40078
diff
changeset
|
4123 { |
5f0d7d58283b
(remember_mouse_glyph): New function.
Jason Rumney <jasonr@gnu.org>
parents:
40078
diff
changeset
|
4124 /* Definitely not obscured, so mark as visible. */ |
5f0d7d58283b
(remember_mouse_glyph): New function.
Jason Rumney <jasonr@gnu.org>
parents:
40078
diff
changeset
|
4125 f->async_visible = 1; |
5f0d7d58283b
(remember_mouse_glyph): New function.
Jason Rumney <jasonr@gnu.org>
parents:
40078
diff
changeset
|
4126 f->async_iconified = 0; |
5f0d7d58283b
(remember_mouse_glyph): New function.
Jason Rumney <jasonr@gnu.org>
parents:
40078
diff
changeset
|
4127 SET_FRAME_GARBAGED (f); |
5f0d7d58283b
(remember_mouse_glyph): New function.
Jason Rumney <jasonr@gnu.org>
parents:
40078
diff
changeset
|
4128 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
|
4129 SDATA (f->name))); |
40137
5f0d7d58283b
(remember_mouse_glyph): New function.
Jason Rumney <jasonr@gnu.org>
parents:
40078
diff
changeset
|
4130 |
5f0d7d58283b
(remember_mouse_glyph): New function.
Jason Rumney <jasonr@gnu.org>
parents:
40078
diff
changeset
|
4131 /* WM_PAINT serves as MapNotify as well, so report |
5f0d7d58283b
(remember_mouse_glyph): New function.
Jason Rumney <jasonr@gnu.org>
parents:
40078
diff
changeset
|
4132 visibility changes properly. */ |
5f0d7d58283b
(remember_mouse_glyph): New function.
Jason Rumney <jasonr@gnu.org>
parents:
40078
diff
changeset
|
4133 if (f->iconified) |
5f0d7d58283b
(remember_mouse_glyph): New function.
Jason Rumney <jasonr@gnu.org>
parents:
40078
diff
changeset
|
4134 { |
54171
f6909a416c3f
(w32_read_socket): Remove bufp_r and numcharsp args.
Kim F. Storm <storm@cua.dk>
parents:
54126
diff
changeset
|
4135 inev.kind = DEICONIFY_EVENT; |
f6909a416c3f
(w32_read_socket): Remove bufp_r and numcharsp args.
Kim F. Storm <storm@cua.dk>
parents:
54126
diff
changeset
|
4136 XSETFRAME (inev.frame_or_window, f); |
40137
5f0d7d58283b
(remember_mouse_glyph): New function.
Jason Rumney <jasonr@gnu.org>
parents:
40078
diff
changeset
|
4137 } |
5f0d7d58283b
(remember_mouse_glyph): New function.
Jason Rumney <jasonr@gnu.org>
parents:
40078
diff
changeset
|
4138 else if (! NILP (Vframe_list) |
5f0d7d58283b
(remember_mouse_glyph): New function.
Jason Rumney <jasonr@gnu.org>
parents:
40078
diff
changeset
|
4139 && ! NILP (XCDR (Vframe_list))) |
5f0d7d58283b
(remember_mouse_glyph): New function.
Jason Rumney <jasonr@gnu.org>
parents:
40078
diff
changeset
|
4140 /* Force a redisplay sooner or later to update the |
5f0d7d58283b
(remember_mouse_glyph): New function.
Jason Rumney <jasonr@gnu.org>
parents:
40078
diff
changeset
|
4141 frame titles in case this is the second frame. */ |
5f0d7d58283b
(remember_mouse_glyph): New function.
Jason Rumney <jasonr@gnu.org>
parents:
40078
diff
changeset
|
4142 record_asynch_buffer_change (); |
5f0d7d58283b
(remember_mouse_glyph): New function.
Jason Rumney <jasonr@gnu.org>
parents:
40078
diff
changeset
|
4143 } |
5f0d7d58283b
(remember_mouse_glyph): New function.
Jason Rumney <jasonr@gnu.org>
parents:
40078
diff
changeset
|
4144 else |
5f0d7d58283b
(remember_mouse_glyph): New function.
Jason Rumney <jasonr@gnu.org>
parents:
40078
diff
changeset
|
4145 { |
5f0d7d58283b
(remember_mouse_glyph): New function.
Jason Rumney <jasonr@gnu.org>
parents:
40078
diff
changeset
|
4146 HDC hdc = get_frame_dc (f); |
5f0d7d58283b
(remember_mouse_glyph): New function.
Jason Rumney <jasonr@gnu.org>
parents:
40078
diff
changeset
|
4147 |
5f0d7d58283b
(remember_mouse_glyph): New function.
Jason Rumney <jasonr@gnu.org>
parents:
40078
diff
changeset
|
4148 /* Erase background again for safety. */ |
5f0d7d58283b
(remember_mouse_glyph): New function.
Jason Rumney <jasonr@gnu.org>
parents:
40078
diff
changeset
|
4149 w32_clear_rect (f, hdc, &msg.rect); |
5f0d7d58283b
(remember_mouse_glyph): New function.
Jason Rumney <jasonr@gnu.org>
parents:
40078
diff
changeset
|
4150 release_frame_dc (f, hdc); |
5f0d7d58283b
(remember_mouse_glyph): New function.
Jason Rumney <jasonr@gnu.org>
parents:
40078
diff
changeset
|
4151 expose_frame (f, |
5f0d7d58283b
(remember_mouse_glyph): New function.
Jason Rumney <jasonr@gnu.org>
parents:
40078
diff
changeset
|
4152 msg.rect.left, |
5f0d7d58283b
(remember_mouse_glyph): New function.
Jason Rumney <jasonr@gnu.org>
parents:
40078
diff
changeset
|
4153 msg.rect.top, |
5f0d7d58283b
(remember_mouse_glyph): New function.
Jason Rumney <jasonr@gnu.org>
parents:
40078
diff
changeset
|
4154 msg.rect.right - msg.rect.left, |
5f0d7d58283b
(remember_mouse_glyph): New function.
Jason Rumney <jasonr@gnu.org>
parents:
40078
diff
changeset
|
4155 msg.rect.bottom - msg.rect.top); |
5f0d7d58283b
(remember_mouse_glyph): New function.
Jason Rumney <jasonr@gnu.org>
parents:
40078
diff
changeset
|
4156 } |
5f0d7d58283b
(remember_mouse_glyph): New function.
Jason Rumney <jasonr@gnu.org>
parents:
40078
diff
changeset
|
4157 } |
15151
ed6ddfc0d954
(Vwindow_system): Declared.
Geoff Voelker <voelker@cs.washington.edu>
parents:
15035
diff
changeset
|
4158 break; |
19713
043ccce224fb
(SIF_*): Win95 macros defined for NT.
Geoff Voelker <voelker@cs.washington.edu>
parents:
18877
diff
changeset
|
4159 |
23677
70999481c915
(convert_to_key_event): Removed.
Geoff Voelker <voelker@cs.washington.edu>
parents:
23639
diff
changeset
|
4160 case WM_INPUTLANGCHANGE: |
70999481c915
(convert_to_key_event): Removed.
Geoff Voelker <voelker@cs.washington.edu>
parents:
23639
diff
changeset
|
4161 /* Generate a language change event. */ |
70999481c915
(convert_to_key_event): Removed.
Geoff Voelker <voelker@cs.washington.edu>
parents:
23639
diff
changeset
|
4162 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
|
4163 |
103500
d0e3ea40717c
(keyboard_codepage): New static variable.
Jason Rumney <jasonr@gnu.org>
parents:
103023
diff
changeset
|
4164 /* lParam contains the input lang ID. Use it to update our |
d0e3ea40717c
(keyboard_codepage): New static variable.
Jason Rumney <jasonr@gnu.org>
parents:
103023
diff
changeset
|
4165 record of the keyboard codepage. */ |
d0e3ea40717c
(keyboard_codepage): New static variable.
Jason Rumney <jasonr@gnu.org>
parents:
103023
diff
changeset
|
4166 keyboard_codepage = codepage_for_locale ((LCID)(msg.msg.lParam |
d0e3ea40717c
(keyboard_codepage): New static variable.
Jason Rumney <jasonr@gnu.org>
parents:
103023
diff
changeset
|
4167 & 0xffff)); |
d0e3ea40717c
(keyboard_codepage): New static variable.
Jason Rumney <jasonr@gnu.org>
parents:
103023
diff
changeset
|
4168 |
23677
70999481c915
(convert_to_key_event): Removed.
Geoff Voelker <voelker@cs.washington.edu>
parents:
23639
diff
changeset
|
4169 if (f) |
70999481c915
(convert_to_key_event): Removed.
Geoff Voelker <voelker@cs.washington.edu>
parents:
23639
diff
changeset
|
4170 { |
54171
f6909a416c3f
(w32_read_socket): Remove bufp_r and numcharsp args.
Kim F. Storm <storm@cua.dk>
parents:
54126
diff
changeset
|
4171 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
|
4172 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
|
4173 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
|
4174 inev.modifiers = msg.msg.lParam & 0xffff; |
23677
70999481c915
(convert_to_key_event): Removed.
Geoff Voelker <voelker@cs.washington.edu>
parents:
23639
diff
changeset
|
4175 } |
70999481c915
(convert_to_key_event): Removed.
Geoff Voelker <voelker@cs.washington.edu>
parents:
23639
diff
changeset
|
4176 break; |
70999481c915
(convert_to_key_event): Removed.
Geoff Voelker <voelker@cs.washington.edu>
parents:
23639
diff
changeset
|
4177 |
13434 | 4178 case WM_KEYDOWN: |
4179 case WM_SYSKEYDOWN: | |
4180 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
|
4181 |
13434 | 4182 if (f && !f->iconified) |
4183 { | |
69662
646410df27a7
(w32_read_socket): Don't let key-press clear mouse face
Kim F. Storm <storm@cua.dk>
parents:
69441
diff
changeset
|
4184 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
|
4185 && !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
|
4186 { |
54731
4031909001d5
(w32_read_socket): Set mouse_face_hidden after clearing highlight.
Kim F. Storm <storm@cua.dk>
parents:
54225
diff
changeset
|
4187 clear_mouse_face (dpyinfo); |
43373
44e2e2c9154f
(disable_mouse_highlight): Removed variable.
Kim F. Storm <storm@cua.dk>
parents:
43146
diff
changeset
|
4188 dpyinfo->mouse_face_hidden = 1; |
44e2e2c9154f
(disable_mouse_highlight): Removed variable.
Kim F. Storm <storm@cua.dk>
parents:
43146
diff
changeset
|
4189 } |
44e2e2c9154f
(disable_mouse_highlight): Removed variable.
Kim F. Storm <storm@cua.dk>
parents:
43146
diff
changeset
|
4190 |
13434 | 4191 if (temp_index == sizeof temp_buffer / sizeof (short)) |
4192 temp_index = 0; | |
4193 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
|
4194 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
|
4195 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
|
4196 inev.modifiers = msg.dwModifiers; |
f6909a416c3f
(w32_read_socket): Remove bufp_r and numcharsp args.
Kim F. Storm <storm@cua.dk>
parents:
54126
diff
changeset
|
4197 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
|
4198 inev.timestamp = msg.msg.time; |
13434 | 4199 } |
4200 break; | |
19713
043ccce224fb
(SIF_*): Win95 macros defined for NT.
Geoff Voelker <voelker@cs.washington.edu>
parents:
18877
diff
changeset
|
4201 |
91098
bbf4813494da
(w32_read_socket) [WM_UNICHAR]: Handle as MULTIBYTE_CHAR_KEYSTROKE_EVENT.
Jason Rumney <jasonr@gnu.org>
parents:
91085
diff
changeset
|
4202 case WM_UNICHAR: |
13434 | 4203 case WM_SYSCHAR: |
4204 case WM_CHAR: | |
4205 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
|
4206 |
13434 | 4207 if (f && !f->iconified) |
4208 { | |
69662
646410df27a7
(w32_read_socket): Don't let key-press clear mouse face
Kim F. Storm <storm@cua.dk>
parents:
69441
diff
changeset
|
4209 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
|
4210 && !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
|
4211 { |
54731
4031909001d5
(w32_read_socket): Set mouse_face_hidden after clearing highlight.
Kim F. Storm <storm@cua.dk>
parents:
54225
diff
changeset
|
4212 clear_mouse_face (dpyinfo); |
43373
44e2e2c9154f
(disable_mouse_highlight): Removed variable.
Kim F. Storm <storm@cua.dk>
parents:
43146
diff
changeset
|
4213 dpyinfo->mouse_face_hidden = 1; |
44e2e2c9154f
(disable_mouse_highlight): Removed variable.
Kim F. Storm <storm@cua.dk>
parents:
43146
diff
changeset
|
4214 } |
44e2e2c9154f
(disable_mouse_highlight): Removed variable.
Kim F. Storm <storm@cua.dk>
parents:
43146
diff
changeset
|
4215 |
23677
70999481c915
(convert_to_key_event): Removed.
Geoff Voelker <voelker@cs.washington.edu>
parents:
23639
diff
changeset
|
4216 if (temp_index == sizeof temp_buffer / sizeof (short)) |
70999481c915
(convert_to_key_event): Removed.
Geoff Voelker <voelker@cs.washington.edu>
parents:
23639
diff
changeset
|
4217 temp_index = 0; |
70999481c915
(convert_to_key_event): Removed.
Geoff Voelker <voelker@cs.washington.edu>
parents:
23639
diff
changeset
|
4218 temp_buffer[temp_index++] = msg.msg.wParam; |
91369
4c4c06eecf22
(w32_read_socket) <WM_CHAR>: Decode non-Unicode
Jason Rumney <jasonr@gnu.org>
parents:
91327
diff
changeset
|
4219 |
4c4c06eecf22
(w32_read_socket) <WM_CHAR>: Decode non-Unicode
Jason Rumney <jasonr@gnu.org>
parents:
91327
diff
changeset
|
4220 inev.modifiers = msg.dwModifiers; |
4c4c06eecf22
(w32_read_socket) <WM_CHAR>: Decode non-Unicode
Jason Rumney <jasonr@gnu.org>
parents:
91327
diff
changeset
|
4221 XSETFRAME (inev.frame_or_window, f); |
4c4c06eecf22
(w32_read_socket) <WM_CHAR>: Decode non-Unicode
Jason Rumney <jasonr@gnu.org>
parents:
91327
diff
changeset
|
4222 inev.timestamp = msg.msg.time; |
4c4c06eecf22
(w32_read_socket) <WM_CHAR>: Decode non-Unicode
Jason Rumney <jasonr@gnu.org>
parents:
91327
diff
changeset
|
4223 |
91098
bbf4813494da
(w32_read_socket) [WM_UNICHAR]: Handle as MULTIBYTE_CHAR_KEYSTROKE_EVENT.
Jason Rumney <jasonr@gnu.org>
parents:
91085
diff
changeset
|
4224 if (msg.msg.message == WM_UNICHAR) |
bbf4813494da
(w32_read_socket) [WM_UNICHAR]: Handle as MULTIBYTE_CHAR_KEYSTROKE_EVENT.
Jason Rumney <jasonr@gnu.org>
parents:
91085
diff
changeset
|
4225 { |
bbf4813494da
(w32_read_socket) [WM_UNICHAR]: Handle as MULTIBYTE_CHAR_KEYSTROKE_EVENT.
Jason Rumney <jasonr@gnu.org>
parents:
91085
diff
changeset
|
4226 inev.code = msg.msg.wParam; |
bbf4813494da
(w32_read_socket) [WM_UNICHAR]: Handle as MULTIBYTE_CHAR_KEYSTROKE_EVENT.
Jason Rumney <jasonr@gnu.org>
parents:
91085
diff
changeset
|
4227 } |
91369
4c4c06eecf22
(w32_read_socket) <WM_CHAR>: Decode non-Unicode
Jason Rumney <jasonr@gnu.org>
parents:
91327
diff
changeset
|
4228 else if (msg.msg.wParam < 256) |
4c4c06eecf22
(w32_read_socket) <WM_CHAR>: Decode non-Unicode
Jason Rumney <jasonr@gnu.org>
parents:
91327
diff
changeset
|
4229 { |
4c4c06eecf22
(w32_read_socket) <WM_CHAR>: Decode non-Unicode
Jason Rumney <jasonr@gnu.org>
parents:
91327
diff
changeset
|
4230 wchar_t code; |
4c4c06eecf22
(w32_read_socket) <WM_CHAR>: Decode non-Unicode
Jason Rumney <jasonr@gnu.org>
parents:
91327
diff
changeset
|
4231 char dbcs[2]; |
4c4c06eecf22
(w32_read_socket) <WM_CHAR>: Decode non-Unicode
Jason Rumney <jasonr@gnu.org>
parents:
91327
diff
changeset
|
4232 dbcs[0] = 0; |
4c4c06eecf22
(w32_read_socket) <WM_CHAR>: Decode non-Unicode
Jason Rumney <jasonr@gnu.org>
parents:
91327
diff
changeset
|
4233 dbcs[1] = (char) msg.msg.wParam; |
4c4c06eecf22
(w32_read_socket) <WM_CHAR>: Decode non-Unicode
Jason Rumney <jasonr@gnu.org>
parents:
91327
diff
changeset
|
4234 |
4c4c06eecf22
(w32_read_socket) <WM_CHAR>: Decode non-Unicode
Jason Rumney <jasonr@gnu.org>
parents:
91327
diff
changeset
|
4235 if (dbcs_lead) |
4c4c06eecf22
(w32_read_socket) <WM_CHAR>: Decode non-Unicode
Jason Rumney <jasonr@gnu.org>
parents:
91327
diff
changeset
|
4236 { |
4c4c06eecf22
(w32_read_socket) <WM_CHAR>: Decode non-Unicode
Jason Rumney <jasonr@gnu.org>
parents:
91327
diff
changeset
|
4237 dbcs[0] = dbcs_lead; |
4c4c06eecf22
(w32_read_socket) <WM_CHAR>: Decode non-Unicode
Jason Rumney <jasonr@gnu.org>
parents:
91327
diff
changeset
|
4238 dbcs_lead = 0; |
103500
d0e3ea40717c
(keyboard_codepage): New static variable.
Jason Rumney <jasonr@gnu.org>
parents:
103023
diff
changeset
|
4239 if (!MultiByteToWideChar (keyboard_codepage, 0, |
d0e3ea40717c
(keyboard_codepage): New static variable.
Jason Rumney <jasonr@gnu.org>
parents:
103023
diff
changeset
|
4240 dbcs, 2, &code, 1)) |
91369
4c4c06eecf22
(w32_read_socket) <WM_CHAR>: Decode non-Unicode
Jason Rumney <jasonr@gnu.org>
parents:
91327
diff
changeset
|
4241 { |
4c4c06eecf22
(w32_read_socket) <WM_CHAR>: Decode non-Unicode
Jason Rumney <jasonr@gnu.org>
parents:
91327
diff
changeset
|
4242 /* Garbage */ |
4c4c06eecf22
(w32_read_socket) <WM_CHAR>: Decode non-Unicode
Jason Rumney <jasonr@gnu.org>
parents:
91327
diff
changeset
|
4243 DebPrint (("Invalid DBCS sequence: %d %d\n", |
4c4c06eecf22
(w32_read_socket) <WM_CHAR>: Decode non-Unicode
Jason Rumney <jasonr@gnu.org>
parents:
91327
diff
changeset
|
4244 dbcs[0], dbcs[1])); |
4c4c06eecf22
(w32_read_socket) <WM_CHAR>: Decode non-Unicode
Jason Rumney <jasonr@gnu.org>
parents:
91327
diff
changeset
|
4245 inev.kind = NO_EVENT; |
4c4c06eecf22
(w32_read_socket) <WM_CHAR>: Decode non-Unicode
Jason Rumney <jasonr@gnu.org>
parents:
91327
diff
changeset
|
4246 break; |
4c4c06eecf22
(w32_read_socket) <WM_CHAR>: Decode non-Unicode
Jason Rumney <jasonr@gnu.org>
parents:
91327
diff
changeset
|
4247 } |
4c4c06eecf22
(w32_read_socket) <WM_CHAR>: Decode non-Unicode
Jason Rumney <jasonr@gnu.org>
parents:
91327
diff
changeset
|
4248 } |
103500
d0e3ea40717c
(keyboard_codepage): New static variable.
Jason Rumney <jasonr@gnu.org>
parents:
103023
diff
changeset
|
4249 else if (IsDBCSLeadByteEx (keyboard_codepage, |
d0e3ea40717c
(keyboard_codepage): New static variable.
Jason Rumney <jasonr@gnu.org>
parents:
103023
diff
changeset
|
4250 (BYTE) msg.msg.wParam)) |
91369
4c4c06eecf22
(w32_read_socket) <WM_CHAR>: Decode non-Unicode
Jason Rumney <jasonr@gnu.org>
parents:
91327
diff
changeset
|
4251 { |
4c4c06eecf22
(w32_read_socket) <WM_CHAR>: Decode non-Unicode
Jason Rumney <jasonr@gnu.org>
parents:
91327
diff
changeset
|
4252 dbcs_lead = (char) msg.msg.wParam; |
4c4c06eecf22
(w32_read_socket) <WM_CHAR>: Decode non-Unicode
Jason Rumney <jasonr@gnu.org>
parents:
91327
diff
changeset
|
4253 inev.kind = NO_EVENT; |
4c4c06eecf22
(w32_read_socket) <WM_CHAR>: Decode non-Unicode
Jason Rumney <jasonr@gnu.org>
parents:
91327
diff
changeset
|
4254 break; |
4c4c06eecf22
(w32_read_socket) <WM_CHAR>: Decode non-Unicode
Jason Rumney <jasonr@gnu.org>
parents:
91327
diff
changeset
|
4255 } |
4c4c06eecf22
(w32_read_socket) <WM_CHAR>: Decode non-Unicode
Jason Rumney <jasonr@gnu.org>
parents:
91327
diff
changeset
|
4256 else |
4c4c06eecf22
(w32_read_socket) <WM_CHAR>: Decode non-Unicode
Jason Rumney <jasonr@gnu.org>
parents:
91327
diff
changeset
|
4257 { |
103500
d0e3ea40717c
(keyboard_codepage): New static variable.
Jason Rumney <jasonr@gnu.org>
parents:
103023
diff
changeset
|
4258 if (!MultiByteToWideChar (keyboard_codepage, 0, |
d0e3ea40717c
(keyboard_codepage): New static variable.
Jason Rumney <jasonr@gnu.org>
parents:
103023
diff
changeset
|
4259 &dbcs[1], 1, &code, 1)) |
91369
4c4c06eecf22
(w32_read_socket) <WM_CHAR>: Decode non-Unicode
Jason Rumney <jasonr@gnu.org>
parents:
91327
diff
changeset
|
4260 { |
4c4c06eecf22
(w32_read_socket) <WM_CHAR>: Decode non-Unicode
Jason Rumney <jasonr@gnu.org>
parents:
91327
diff
changeset
|
4261 /* What to do with garbage? */ |
4c4c06eecf22
(w32_read_socket) <WM_CHAR>: Decode non-Unicode
Jason Rumney <jasonr@gnu.org>
parents:
91327
diff
changeset
|
4262 DebPrint (("Invalid character: %d\n", dbcs[1])); |
4c4c06eecf22
(w32_read_socket) <WM_CHAR>: Decode non-Unicode
Jason Rumney <jasonr@gnu.org>
parents:
91327
diff
changeset
|
4263 inev.kind = NO_EVENT; |
4c4c06eecf22
(w32_read_socket) <WM_CHAR>: Decode non-Unicode
Jason Rumney <jasonr@gnu.org>
parents:
91327
diff
changeset
|
4264 break; |
4c4c06eecf22
(w32_read_socket) <WM_CHAR>: Decode non-Unicode
Jason Rumney <jasonr@gnu.org>
parents:
91327
diff
changeset
|
4265 } |
4c4c06eecf22
(w32_read_socket) <WM_CHAR>: Decode non-Unicode
Jason Rumney <jasonr@gnu.org>
parents:
91327
diff
changeset
|
4266 } |
4c4c06eecf22
(w32_read_socket) <WM_CHAR>: Decode non-Unicode
Jason Rumney <jasonr@gnu.org>
parents:
91327
diff
changeset
|
4267 inev.code = code; |
4c4c06eecf22
(w32_read_socket) <WM_CHAR>: Decode non-Unicode
Jason Rumney <jasonr@gnu.org>
parents:
91327
diff
changeset
|
4268 } |
91098
bbf4813494da
(w32_read_socket) [WM_UNICHAR]: Handle as MULTIBYTE_CHAR_KEYSTROKE_EVENT.
Jason Rumney <jasonr@gnu.org>
parents:
91085
diff
changeset
|
4269 else |
79565
bfdbb60ac756
(w32_read_socket): Use MULTIBYTE_CHAR_KEYSTROKE_EVENT for characters above 127.
Jason Rumney <jasonr@gnu.org>
parents:
79301
diff
changeset
|
4270 { |
91369
4c4c06eecf22
(w32_read_socket) <WM_CHAR>: Decode non-Unicode
Jason Rumney <jasonr@gnu.org>
parents:
91327
diff
changeset
|
4271 /* Windows shouldn't generate WM_CHAR events above 0xFF |
4c4c06eecf22
(w32_read_socket) <WM_CHAR>: Decode non-Unicode
Jason Rumney <jasonr@gnu.org>
parents:
91327
diff
changeset
|
4272 in non-Unicode message handlers. */ |
4c4c06eecf22
(w32_read_socket) <WM_CHAR>: Decode non-Unicode
Jason Rumney <jasonr@gnu.org>
parents:
91327
diff
changeset
|
4273 DebPrint (("Non-byte WM_CHAR: %d\n", msg.msg.wParam)); |
4c4c06eecf22
(w32_read_socket) <WM_CHAR>: Decode non-Unicode
Jason Rumney <jasonr@gnu.org>
parents:
91327
diff
changeset
|
4274 inev.kind = NO_EVENT; |
4c4c06eecf22
(w32_read_socket) <WM_CHAR>: Decode non-Unicode
Jason Rumney <jasonr@gnu.org>
parents:
91327
diff
changeset
|
4275 break; |
79565
bfdbb60ac756
(w32_read_socket): Use MULTIBYTE_CHAR_KEYSTROKE_EVENT for characters above 127.
Jason Rumney <jasonr@gnu.org>
parents:
79301
diff
changeset
|
4276 } |
91369
4c4c06eecf22
(w32_read_socket) <WM_CHAR>: Decode non-Unicode
Jason Rumney <jasonr@gnu.org>
parents:
91327
diff
changeset
|
4277 inev.kind = inev.code < 128 ? ASCII_KEYSTROKE_EVENT |
4c4c06eecf22
(w32_read_socket) <WM_CHAR>: Decode non-Unicode
Jason Rumney <jasonr@gnu.org>
parents:
91327
diff
changeset
|
4278 : MULTIBYTE_CHAR_KEYSTROKE_EVENT; |
13434 | 4279 } |
4280 break; | |
19713
043ccce224fb
(SIF_*): Win95 macros defined for NT.
Geoff Voelker <voelker@cs.washington.edu>
parents:
18877
diff
changeset
|
4281 |
85983
fbeab07144ff
(w32_scroll_bar_handle_click): Use SCROLL_BAR_CLICK_EVENT.
Jason Rumney <jasonr@gnu.org>
parents:
85850
diff
changeset
|
4282 case WM_APPCOMMAND: |
fbeab07144ff
(w32_scroll_bar_handle_click): Use SCROLL_BAR_CLICK_EVENT.
Jason Rumney <jasonr@gnu.org>
parents:
85850
diff
changeset
|
4283 f = x_window_to_frame (dpyinfo, msg.msg.hwnd); |
fbeab07144ff
(w32_scroll_bar_handle_click): Use SCROLL_BAR_CLICK_EVENT.
Jason Rumney <jasonr@gnu.org>
parents:
85850
diff
changeset
|
4284 |
fbeab07144ff
(w32_scroll_bar_handle_click): Use SCROLL_BAR_CLICK_EVENT.
Jason Rumney <jasonr@gnu.org>
parents:
85850
diff
changeset
|
4285 if (f && !f->iconified) |
fbeab07144ff
(w32_scroll_bar_handle_click): Use SCROLL_BAR_CLICK_EVENT.
Jason Rumney <jasonr@gnu.org>
parents:
85850
diff
changeset
|
4286 { |
fbeab07144ff
(w32_scroll_bar_handle_click): Use SCROLL_BAR_CLICK_EVENT.
Jason Rumney <jasonr@gnu.org>
parents:
85850
diff
changeset
|
4287 if (!dpyinfo->mouse_face_hidden && INTEGERP (Vmouse_highlight) |
fbeab07144ff
(w32_scroll_bar_handle_click): Use SCROLL_BAR_CLICK_EVENT.
Jason Rumney <jasonr@gnu.org>
parents:
85850
diff
changeset
|
4288 && !EQ (f->tool_bar_window, dpyinfo->mouse_face_window)) |
fbeab07144ff
(w32_scroll_bar_handle_click): Use SCROLL_BAR_CLICK_EVENT.
Jason Rumney <jasonr@gnu.org>
parents:
85850
diff
changeset
|
4289 { |
fbeab07144ff
(w32_scroll_bar_handle_click): Use SCROLL_BAR_CLICK_EVENT.
Jason Rumney <jasonr@gnu.org>
parents:
85850
diff
changeset
|
4290 clear_mouse_face (dpyinfo); |
fbeab07144ff
(w32_scroll_bar_handle_click): Use SCROLL_BAR_CLICK_EVENT.
Jason Rumney <jasonr@gnu.org>
parents:
85850
diff
changeset
|
4291 dpyinfo->mouse_face_hidden = 1; |
fbeab07144ff
(w32_scroll_bar_handle_click): Use SCROLL_BAR_CLICK_EVENT.
Jason Rumney <jasonr@gnu.org>
parents:
85850
diff
changeset
|
4292 } |
fbeab07144ff
(w32_scroll_bar_handle_click): Use SCROLL_BAR_CLICK_EVENT.
Jason Rumney <jasonr@gnu.org>
parents:
85850
diff
changeset
|
4293 |
fbeab07144ff
(w32_scroll_bar_handle_click): Use SCROLL_BAR_CLICK_EVENT.
Jason Rumney <jasonr@gnu.org>
parents:
85850
diff
changeset
|
4294 if (temp_index == sizeof temp_buffer / sizeof (short)) |
fbeab07144ff
(w32_scroll_bar_handle_click): Use SCROLL_BAR_CLICK_EVENT.
Jason Rumney <jasonr@gnu.org>
parents:
85850
diff
changeset
|
4295 temp_index = 0; |
fbeab07144ff
(w32_scroll_bar_handle_click): Use SCROLL_BAR_CLICK_EVENT.
Jason Rumney <jasonr@gnu.org>
parents:
85850
diff
changeset
|
4296 temp_buffer[temp_index++] = msg.msg.wParam; |
fbeab07144ff
(w32_scroll_bar_handle_click): Use SCROLL_BAR_CLICK_EVENT.
Jason Rumney <jasonr@gnu.org>
parents:
85850
diff
changeset
|
4297 inev.kind = MULTIMEDIA_KEY_EVENT; |
fbeab07144ff
(w32_scroll_bar_handle_click): Use SCROLL_BAR_CLICK_EVENT.
Jason Rumney <jasonr@gnu.org>
parents:
85850
diff
changeset
|
4298 inev.code = GET_APPCOMMAND_LPARAM(msg.msg.lParam); |
fbeab07144ff
(w32_scroll_bar_handle_click): Use SCROLL_BAR_CLICK_EVENT.
Jason Rumney <jasonr@gnu.org>
parents:
85850
diff
changeset
|
4299 inev.modifiers = msg.dwModifiers; |
fbeab07144ff
(w32_scroll_bar_handle_click): Use SCROLL_BAR_CLICK_EVENT.
Jason Rumney <jasonr@gnu.org>
parents:
85850
diff
changeset
|
4300 XSETFRAME (inev.frame_or_window, f); |
fbeab07144ff
(w32_scroll_bar_handle_click): Use SCROLL_BAR_CLICK_EVENT.
Jason Rumney <jasonr@gnu.org>
parents:
85850
diff
changeset
|
4301 inev.timestamp = msg.msg.time; |
fbeab07144ff
(w32_scroll_bar_handle_click): Use SCROLL_BAR_CLICK_EVENT.
Jason Rumney <jasonr@gnu.org>
parents:
85850
diff
changeset
|
4302 } |
fbeab07144ff
(w32_scroll_bar_handle_click): Use SCROLL_BAR_CLICK_EVENT.
Jason Rumney <jasonr@gnu.org>
parents:
85850
diff
changeset
|
4303 break; |
95170
194ed5c5c97e
Fix typo in comment.
Juanma Barranquero <lekktu@gmail.com>
parents:
94970
diff
changeset
|
4304 |
13434 | 4305 case WM_MOUSEMOVE: |
48819
c7fb53597300
(last_mousemove_x, last_mousemove_y): New variables.
Jason Rumney <jasonr@gnu.org>
parents:
48360
diff
changeset
|
4306 /* Ignore non-movement. */ |
c7fb53597300
(last_mousemove_x, last_mousemove_y): New variables.
Jason Rumney <jasonr@gnu.org>
parents:
48360
diff
changeset
|
4307 { |
c7fb53597300
(last_mousemove_x, last_mousemove_y): New variables.
Jason Rumney <jasonr@gnu.org>
parents:
48360
diff
changeset
|
4308 int x = LOWORD (msg.msg.lParam); |
c7fb53597300
(last_mousemove_x, last_mousemove_y): New variables.
Jason Rumney <jasonr@gnu.org>
parents:
48360
diff
changeset
|
4309 int y = HIWORD (msg.msg.lParam); |
c7fb53597300
(last_mousemove_x, last_mousemove_y): New variables.
Jason Rumney <jasonr@gnu.org>
parents:
48360
diff
changeset
|
4310 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
|
4311 break; |
c7fb53597300
(last_mousemove_x, last_mousemove_y): New variables.
Jason Rumney <jasonr@gnu.org>
parents:
48360
diff
changeset
|
4312 last_mousemove_x = x; |
c7fb53597300
(last_mousemove_x, last_mousemove_y): New variables.
Jason Rumney <jasonr@gnu.org>
parents:
48360
diff
changeset
|
4313 last_mousemove_y = y; |
c7fb53597300
(last_mousemove_x, last_mousemove_y): New variables.
Jason Rumney <jasonr@gnu.org>
parents:
48360
diff
changeset
|
4314 } |
c7fb53597300
(last_mousemove_x, last_mousemove_y): New variables.
Jason Rumney <jasonr@gnu.org>
parents:
48360
diff
changeset
|
4315 |
50231
c8ea5e4b2129
* w32term.c: Remove consolidated defines and code.
Kim F. Storm <storm@cua.dk>
parents:
50163
diff
changeset
|
4316 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
|
4317 help_echo_string = Qnil; |
27402
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
4318 |
13434 | 4319 if (dpyinfo->grabbed && last_mouse_frame |
4320 && FRAME_LIVE_P (last_mouse_frame)) | |
4321 f = last_mouse_frame; | |
4322 else | |
4323 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
|
4324 |
43373
44e2e2c9154f
(disable_mouse_highlight): Removed variable.
Kim F. Storm <storm@cua.dk>
parents:
43146
diff
changeset
|
4325 if (dpyinfo->mouse_face_hidden) |
44e2e2c9154f
(disable_mouse_highlight): Removed variable.
Kim F. Storm <storm@cua.dk>
parents:
43146
diff
changeset
|
4326 { |
44e2e2c9154f
(disable_mouse_highlight): Removed variable.
Kim F. Storm <storm@cua.dk>
parents:
43146
diff
changeset
|
4327 dpyinfo->mouse_face_hidden = 0; |
44e2e2c9154f
(disable_mouse_highlight): Removed variable.
Kim F. Storm <storm@cua.dk>
parents:
43146
diff
changeset
|
4328 clear_mouse_face (dpyinfo); |
44e2e2c9154f
(disable_mouse_highlight): Removed variable.
Kim F. Storm <storm@cua.dk>
parents:
43146
diff
changeset
|
4329 } |
44e2e2c9154f
(disable_mouse_highlight): Removed variable.
Kim F. Storm <storm@cua.dk>
parents:
43146
diff
changeset
|
4330 |
13434 | 4331 if (f) |
49393
85246e86a2cd
* w32term.c (x_draw_glyph_string_foreground)
Jason Rumney <jasonr@gnu.org>
parents:
49371
diff
changeset
|
4332 { |
85246e86a2cd
* w32term.c (x_draw_glyph_string_foreground)
Jason Rumney <jasonr@gnu.org>
parents:
49371
diff
changeset
|
4333 /* Generate SELECT_WINDOW_EVENTs when needed. */ |
72736
f6b18b9949d1
* xdisp.c (mouse_autoselect_window): Removed.
Chong Yidong <cyd@stupidchicken.com>
parents:
72505
diff
changeset
|
4334 if (!NILP (Vmouse_autoselect_window)) |
49393
85246e86a2cd
* w32term.c (x_draw_glyph_string_foreground)
Jason Rumney <jasonr@gnu.org>
parents:
49371
diff
changeset
|
4335 { |
85246e86a2cd
* w32term.c (x_draw_glyph_string_foreground)
Jason Rumney <jasonr@gnu.org>
parents:
49371
diff
changeset
|
4336 Lisp_Object window; |
85246e86a2cd
* w32term.c (x_draw_glyph_string_foreground)
Jason Rumney <jasonr@gnu.org>
parents:
49371
diff
changeset
|
4337 int x = LOWORD (msg.msg.lParam); |
85246e86a2cd
* w32term.c (x_draw_glyph_string_foreground)
Jason Rumney <jasonr@gnu.org>
parents:
49371
diff
changeset
|
4338 int y = HIWORD (msg.msg.lParam); |
85246e86a2cd
* w32term.c (x_draw_glyph_string_foreground)
Jason Rumney <jasonr@gnu.org>
parents:
49371
diff
changeset
|
4339 |
51204
082b768216a0
Make (several) trivial substitutions for renamed and
Kim F. Storm <storm@cua.dk>
parents:
50441
diff
changeset
|
4340 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
|
4341 |
85246e86a2cd
* w32term.c (x_draw_glyph_string_foreground)
Jason Rumney <jasonr@gnu.org>
parents:
49371
diff
changeset
|
4342 /* 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
|
4343 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
|
4344 not in it. Minibuffer window will be selected |
78501 | 4345 only when it is active. */ |
49393
85246e86a2cd
* w32term.c (x_draw_glyph_string_foreground)
Jason Rumney <jasonr@gnu.org>
parents:
49371
diff
changeset
|
4346 if (WINDOWP(window) |
85246e86a2cd
* w32term.c (x_draw_glyph_string_foreground)
Jason Rumney <jasonr@gnu.org>
parents:
49371
diff
changeset
|
4347 && !EQ (window, last_window) |
78988
737206364a6e
(w32_read_socket): When focus_follows_mouse is nil make
Martin Rudalics <rudalics@gmx.at>
parents:
78858
diff
changeset
|
4348 && !EQ (window, selected_window) |
737206364a6e
(w32_read_socket): When focus_follows_mouse is nil make
Martin Rudalics <rudalics@gmx.at>
parents:
78858
diff
changeset
|
4349 /* For click-to-focus window managers |
737206364a6e
(w32_read_socket): When focus_follows_mouse is nil make
Martin Rudalics <rudalics@gmx.at>
parents:
78858
diff
changeset
|
4350 create event iff we don't leave the |
737206364a6e
(w32_read_socket): When focus_follows_mouse is nil make
Martin Rudalics <rudalics@gmx.at>
parents:
78858
diff
changeset
|
4351 selected frame. */ |
737206364a6e
(w32_read_socket): When focus_follows_mouse is nil make
Martin Rudalics <rudalics@gmx.at>
parents:
78858
diff
changeset
|
4352 && (focus_follows_mouse |
737206364a6e
(w32_read_socket): When focus_follows_mouse is nil make
Martin Rudalics <rudalics@gmx.at>
parents:
78858
diff
changeset
|
4353 || (EQ (XWINDOW (window)->frame, |
737206364a6e
(w32_read_socket): When focus_follows_mouse is nil make
Martin Rudalics <rudalics@gmx.at>
parents:
78858
diff
changeset
|
4354 XWINDOW (selected_window)->frame)))) |
49393
85246e86a2cd
* w32term.c (x_draw_glyph_string_foreground)
Jason Rumney <jasonr@gnu.org>
parents:
49371
diff
changeset
|
4355 { |
54171
f6909a416c3f
(w32_read_socket): Remove bufp_r and numcharsp args.
Kim F. Storm <storm@cua.dk>
parents:
54126
diff
changeset
|
4356 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
|
4357 inev.frame_or_window = window; |
49393
85246e86a2cd
* w32term.c (x_draw_glyph_string_foreground)
Jason Rumney <jasonr@gnu.org>
parents:
49371
diff
changeset
|
4358 } |
85246e86a2cd
* w32term.c (x_draw_glyph_string_foreground)
Jason Rumney <jasonr@gnu.org>
parents:
49371
diff
changeset
|
4359 |
85246e86a2cd
* w32term.c (x_draw_glyph_string_foreground)
Jason Rumney <jasonr@gnu.org>
parents:
49371
diff
changeset
|
4360 last_window=window; |
85246e86a2cd
* w32term.c (x_draw_glyph_string_foreground)
Jason Rumney <jasonr@gnu.org>
parents:
49371
diff
changeset
|
4361 } |
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
|
4362 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
|
4363 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
|
4364 } |
13434 | 4365 else |
27402
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
4366 { |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
4367 /* 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
|
4368 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
|
4369 clear_mouse_face (dpyinfo); |
27402
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
4370 } |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
4371 |
50231
c8ea5e4b2129
* w32term.c: Remove consolidated defines and code.
Kim F. Storm <storm@cua.dk>
parents:
50163
diff
changeset
|
4372 /* 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
|
4373 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
|
4374 #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
|
4375 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
|
4376 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
|
4377 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
|
4378 (!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
|
4379 #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
|
4380 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
|
4381 || !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
|
4382 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
|
4383 #endif |
27402
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
4384 break; |
19713
043ccce224fb
(SIF_*): Win95 macros defined for NT.
Geoff Voelker <voelker@cs.washington.edu>
parents:
18877
diff
changeset
|
4385 |
13434 | 4386 case WM_LBUTTONDOWN: |
4387 case WM_LBUTTONUP: | |
4388 case WM_MBUTTONDOWN: | |
4389 case WM_MBUTTONUP: | |
4390 case WM_RBUTTONDOWN: | |
4391 case WM_RBUTTONUP: | |
42720
1217a83a82e4
(parse_button): New parameter xbutton. Callers changed.
Jason Rumney <jasonr@gnu.org>
parents:
42675
diff
changeset
|
4392 case WM_XBUTTONDOWN: |
1217a83a82e4
(parse_button): New parameter xbutton. Callers changed.
Jason Rumney <jasonr@gnu.org>
parents:
42675
diff
changeset
|
4393 case WM_XBUTTONUP: |
13434 | 4394 { |
27402
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
4395 /* 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
|
4396 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
|
4397 int tool_bar_p = 0; |
13434 | 4398 int button; |
4399 int up; | |
27402
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
4400 |
13434 | 4401 if (dpyinfo->grabbed && last_mouse_frame |
4402 && FRAME_LIVE_P (last_mouse_frame)) | |
4403 f = last_mouse_frame; | |
4404 else | |
4405 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
|
4406 |
13434 | 4407 if (f) |
4408 { | |
54171
f6909a416c3f
(w32_read_socket): Remove bufp_r and numcharsp args.
Kim F. Storm <storm@cua.dk>
parents:
54126
diff
changeset
|
4409 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
|
4410 |
27402
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
4411 /* Is this in the tool-bar? */ |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
4412 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
|
4413 && 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
|
4414 { |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
4415 Lisp_Object window; |
54171
f6909a416c3f
(w32_read_socket): Remove bufp_r and numcharsp args.
Kim F. Storm <storm@cua.dk>
parents:
54126
diff
changeset
|
4416 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
|
4417 int y = XFASTINT (inev.y); |
50231
c8ea5e4b2129
* w32term.c: Remove consolidated defines and code.
Kim F. Storm <storm@cua.dk>
parents:
50163
diff
changeset
|
4418 |
51204
082b768216a0
Make (several) trivial substitutions for renamed and
Kim F. Storm <storm@cua.dk>
parents:
50441
diff
changeset
|
4419 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
|
4420 |
27402
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
4421 if (EQ (window, f->tool_bar_window)) |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
4422 { |
54171
f6909a416c3f
(w32_read_socket): Remove bufp_r and numcharsp args.
Kim F. Storm <storm@cua.dk>
parents:
54126
diff
changeset
|
4423 w32_handle_tool_bar_click (f, &inev); |
27402
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
4424 tool_bar_p = 1; |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
4425 } |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
4426 } |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
4427 |
54171
f6909a416c3f
(w32_read_socket): Remove bufp_r and numcharsp args.
Kim F. Storm <storm@cua.dk>
parents:
54126
diff
changeset
|
4428 if (tool_bar_p |
f6909a416c3f
(w32_read_socket): Remove bufp_r and numcharsp args.
Kim F. Storm <storm@cua.dk>
parents:
54126
diff
changeset
|
4429 || (dpyinfo->w32_focus_frame |
54225
61ba665b1e90
(w32_read_socket): Fix last change to ButtonPress handling.
Jason Rumney <jasonr@gnu.org>
parents:
54171
diff
changeset
|
4430 && 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
|
4431 inev.kind = NO_EVENT; |
13434 | 4432 } |
48218
01e253345507
(w32_draw_fringe_bitmap): Remove unused local variable window.
Juanma Barranquero <lekktu@gmail.com>
parents:
48025
diff
changeset
|
4433 |
42720
1217a83a82e4
(parse_button): New parameter xbutton. Callers changed.
Jason Rumney <jasonr@gnu.org>
parents:
42675
diff
changeset
|
4434 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
|
4435 &button, &up); |
1217a83a82e4
(parse_button): New parameter xbutton. Callers changed.
Jason Rumney <jasonr@gnu.org>
parents:
42675
diff
changeset
|
4436 |
13434 | 4437 if (up) |
4438 { | |
4439 dpyinfo->grabbed &= ~ (1 << button); | |
4440 } | |
4441 else | |
4442 { | |
4443 dpyinfo->grabbed |= (1 << button); | |
4444 last_mouse_frame = f; | |
27402
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
4445 /* Ignore any mouse motion that happened |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
4446 before this event; any subsequent mouse-movement |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
4447 Emacs events should reflect only motion after |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
4448 the ButtonPress. */ |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
4449 if (f != 0) |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
4450 f->mouse_moved = 0; |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
4451 |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
4452 if (!tool_bar_p) |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
4453 last_tool_bar_item = -1; |
13434 | 4454 } |
19713
043ccce224fb
(SIF_*): Win95 macros defined for NT.
Geoff Voelker <voelker@cs.washington.edu>
parents:
18877
diff
changeset
|
4455 break; |
13434 | 4456 } |
48218
01e253345507
(w32_draw_fringe_bitmap): Remove unused local variable window.
Juanma Barranquero <lekktu@gmail.com>
parents:
48025
diff
changeset
|
4457 |
51258
a35e5665c742
(construct_mouse_wheel): Result is a MOUSE_CLICK_EVENT. Scrolling down/up the
Juanma Barranquero <lekktu@gmail.com>
parents:
51204
diff
changeset
|
4458 case WM_MOUSEWHEEL: |
83876
37f582a71062
Support for horizontal scroll wheels on some mice:
Jason Rumney <jasonr@gnu.org>
parents:
83652
diff
changeset
|
4459 case WM_MOUSEHWHEEL: |
51258
a35e5665c742
(construct_mouse_wheel): Result is a MOUSE_CLICK_EVENT. Scrolling down/up the
Juanma Barranquero <lekktu@gmail.com>
parents:
51204
diff
changeset
|
4460 { |
a35e5665c742
(construct_mouse_wheel): Result is a MOUSE_CLICK_EVENT. Scrolling down/up the
Juanma Barranquero <lekktu@gmail.com>
parents:
51204
diff
changeset
|
4461 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
|
4462 && 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
|
4463 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
|
4464 else |
a35e5665c742
(construct_mouse_wheel): Result is a MOUSE_CLICK_EVENT. Scrolling down/up the
Juanma Barranquero <lekktu@gmail.com>
parents:
51204
diff
changeset
|
4465 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
|
4466 |
a35e5665c742
(construct_mouse_wheel): Result is a MOUSE_CLICK_EVENT. Scrolling down/up the
Juanma Barranquero <lekktu@gmail.com>
parents:
51204
diff
changeset
|
4467 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
|
4468 { |
a35e5665c742
(construct_mouse_wheel): Result is a MOUSE_CLICK_EVENT. Scrolling down/up the
Juanma Barranquero <lekktu@gmail.com>
parents:
51204
diff
changeset
|
4469 |
54171
f6909a416c3f
(w32_read_socket): Remove bufp_r and numcharsp args.
Kim F. Storm <storm@cua.dk>
parents:
54126
diff
changeset
|
4470 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
|
4471 || 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
|
4472 { |
51382
e099ac71bd76
(construct_mouse_wheel): Construct WHEEL_EVENT.
Jason Rumney <jasonr@gnu.org>
parents:
51270
diff
changeset
|
4473 /* 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
|
4474 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
|
4475 } |
51382
e099ac71bd76
(construct_mouse_wheel): Construct WHEEL_EVENT.
Jason Rumney <jasonr@gnu.org>
parents:
51270
diff
changeset
|
4476 /* Ignore any mouse motion that happened before this |
e099ac71bd76
(construct_mouse_wheel): Construct WHEEL_EVENT.
Jason Rumney <jasonr@gnu.org>
parents:
51270
diff
changeset
|
4477 event; any subsequent mouse-movement Emacs events |
e099ac71bd76
(construct_mouse_wheel): Construct WHEEL_EVENT.
Jason Rumney <jasonr@gnu.org>
parents:
51270
diff
changeset
|
4478 should reflect only motion after the |
74145 | 4479 ButtonPress. */ |
51382
e099ac71bd76
(construct_mouse_wheel): Construct WHEEL_EVENT.
Jason Rumney <jasonr@gnu.org>
parents:
51270
diff
changeset
|
4480 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
|
4481 } |
51382
e099ac71bd76
(construct_mouse_wheel): Construct WHEEL_EVENT.
Jason Rumney <jasonr@gnu.org>
parents:
51270
diff
changeset
|
4482 last_mouse_frame = f; |
e099ac71bd76
(construct_mouse_wheel): Construct WHEEL_EVENT.
Jason Rumney <jasonr@gnu.org>
parents:
51270
diff
changeset
|
4483 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
|
4484 } |
13434 | 4485 break; |
19713
043ccce224fb
(SIF_*): Win95 macros defined for NT.
Geoff Voelker <voelker@cs.washington.edu>
parents:
18877
diff
changeset
|
4486 |
21885 | 4487 case WM_DROPFILES: |
4488 f = x_window_to_frame (dpyinfo, msg.msg.hwnd); | |
4489 | |
4490 if (f) | |
54171
f6909a416c3f
(w32_read_socket): Remove bufp_r and numcharsp args.
Kim F. Storm <storm@cua.dk>
parents:
54126
diff
changeset
|
4491 construct_drag_n_drop (&inev, &msg, f); |
21885 | 4492 break; |
4493 | |
13434 | 4494 case WM_VSCROLL: |
4495 { | |
19713
043ccce224fb
(SIF_*): Win95 macros defined for NT.
Geoff Voelker <voelker@cs.washington.edu>
parents:
18877
diff
changeset
|
4496 struct scroll_bar *bar = |
043ccce224fb
(SIF_*): Win95 macros defined for NT.
Geoff Voelker <voelker@cs.washington.edu>
parents:
18877
diff
changeset
|
4497 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
|
4498 |
54171
f6909a416c3f
(w32_read_socket): Remove bufp_r and numcharsp args.
Kim F. Storm <storm@cua.dk>
parents:
54126
diff
changeset
|
4499 if (bar) |
f6909a416c3f
(w32_read_socket): Remove bufp_r and numcharsp args.
Kim F. Storm <storm@cua.dk>
parents:
54126
diff
changeset
|
4500 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
|
4501 break; |
13434 | 4502 } |
48218
01e253345507
(w32_draw_fringe_bitmap): Remove unused local variable window.
Juanma Barranquero <lekktu@gmail.com>
parents:
48025
diff
changeset
|
4503 |
19713
043ccce224fb
(SIF_*): Win95 macros defined for NT.
Geoff Voelker <voelker@cs.washington.edu>
parents:
18877
diff
changeset
|
4504 case WM_WINDOWPOSCHANGED: |
43396
9b50c09298f6
* w32term.c (x_autoselect_window_p): New variable.
Jason Rumney <jasonr@gnu.org>
parents:
43373
diff
changeset
|
4505 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
|
4506 if (f) |
9b50c09298f6
* w32term.c (x_autoselect_window_p): New variable.
Jason Rumney <jasonr@gnu.org>
parents:
43373
diff
changeset
|
4507 { |
51204
082b768216a0
Make (several) trivial substitutions for renamed and
Kim F. Storm <storm@cua.dk>
parents:
50441
diff
changeset
|
4508 if (f->want_fullscreen & FULLSCREEN_WAIT) |
082b768216a0
Make (several) trivial substitutions for renamed and
Kim F. Storm <storm@cua.dk>
parents:
50441
diff
changeset
|
4509 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
|
4510 } |
9b50c09298f6
* w32term.c (x_autoselect_window_p): New variable.
Jason Rumney <jasonr@gnu.org>
parents:
43373
diff
changeset
|
4511 check_visibility = 1; |
9b50c09298f6
* w32term.c (x_autoselect_window_p): New variable.
Jason Rumney <jasonr@gnu.org>
parents:
43373
diff
changeset
|
4512 break; |
9b50c09298f6
* w32term.c (x_autoselect_window_p): New variable.
Jason Rumney <jasonr@gnu.org>
parents:
43373
diff
changeset
|
4513 |
19713
043ccce224fb
(SIF_*): Win95 macros defined for NT.
Geoff Voelker <voelker@cs.washington.edu>
parents:
18877
diff
changeset
|
4514 case WM_ACTIVATE: |
043ccce224fb
(SIF_*): Win95 macros defined for NT.
Geoff Voelker <voelker@cs.washington.edu>
parents:
18877
diff
changeset
|
4515 case WM_ACTIVATEAPP: |
43396
9b50c09298f6
* w32term.c (x_autoselect_window_p): New variable.
Jason Rumney <jasonr@gnu.org>
parents:
43373
diff
changeset
|
4516 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
|
4517 if (f) |
9b50c09298f6
* w32term.c (x_autoselect_window_p): New variable.
Jason Rumney <jasonr@gnu.org>
parents:
43373
diff
changeset
|
4518 x_check_fullscreen (f); |
19713
043ccce224fb
(SIF_*): Win95 macros defined for NT.
Geoff Voelker <voelker@cs.washington.edu>
parents:
18877
diff
changeset
|
4519 check_visibility = 1; |
13434 | 4520 break; |
19713
043ccce224fb
(SIF_*): Win95 macros defined for NT.
Geoff Voelker <voelker@cs.washington.edu>
parents:
18877
diff
changeset
|
4521 |
13434 | 4522 case WM_MOVE: |
4523 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
|
4524 |
13434 | 4525 if (f && !f->async_iconified) |
4526 { | |
19713
043ccce224fb
(SIF_*): Win95 macros defined for NT.
Geoff Voelker <voelker@cs.washington.edu>
parents:
18877
diff
changeset
|
4527 int x, y; |
043ccce224fb
(SIF_*): Win95 macros defined for NT.
Geoff Voelker <voelker@cs.washington.edu>
parents:
18877
diff
changeset
|
4528 |
043ccce224fb
(SIF_*): Win95 macros defined for NT.
Geoff Voelker <voelker@cs.washington.edu>
parents:
18877
diff
changeset
|
4529 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
|
4530 f->left_pos = x; |
082b768216a0
Make (several) trivial substitutions for renamed and
Kim F. Storm <storm@cua.dk>
parents:
50441
diff
changeset
|
4531 f->top_pos = y; |
13434 | 4532 } |
19713
043ccce224fb
(SIF_*): Win95 macros defined for NT.
Geoff Voelker <voelker@cs.washington.edu>
parents:
18877
diff
changeset
|
4533 |
043ccce224fb
(SIF_*): Win95 macros defined for NT.
Geoff Voelker <voelker@cs.washington.edu>
parents:
18877
diff
changeset
|
4534 check_visibility = 1; |
13434 | 4535 break; |
19713
043ccce224fb
(SIF_*): Win95 macros defined for NT.
Geoff Voelker <voelker@cs.washington.edu>
parents:
18877
diff
changeset
|
4536 |
043ccce224fb
(SIF_*): Win95 macros defined for NT.
Geoff Voelker <voelker@cs.washington.edu>
parents:
18877
diff
changeset
|
4537 case WM_SHOWWINDOW: |
41447
783d21cc62b9
(x_after_update_window_line): Doc fix.
Jason Rumney <jasonr@gnu.org>
parents:
41249
diff
changeset
|
4538 /* 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
|
4539 about to be hidden. */ |
783d21cc62b9
(x_after_update_window_line): Doc fix.
Jason Rumney <jasonr@gnu.org>
parents:
41249
diff
changeset
|
4540 /* 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
|
4541 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
|
4542 { |
783d21cc62b9
(x_after_update_window_line): Doc fix.
Jason Rumney <jasonr@gnu.org>
parents:
41249
diff
changeset
|
4543 tip_window = NULL; |
783d21cc62b9
(x_after_update_window_line): Doc fix.
Jason Rumney <jasonr@gnu.org>
parents:
41249
diff
changeset
|
4544 redo_mouse_highlight (); |
783d21cc62b9
(x_after_update_window_line): Doc fix.
Jason Rumney <jasonr@gnu.org>
parents:
41249
diff
changeset
|
4545 } |
783d21cc62b9
(x_after_update_window_line): Doc fix.
Jason Rumney <jasonr@gnu.org>
parents:
41249
diff
changeset
|
4546 |
19713
043ccce224fb
(SIF_*): Win95 macros defined for NT.
Geoff Voelker <voelker@cs.washington.edu>
parents:
18877
diff
changeset
|
4547 /* 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
|
4548 being maximised or minimised/restored, then recheck |
043ccce224fb
(SIF_*): Win95 macros defined for NT.
Geoff Voelker <voelker@cs.washington.edu>
parents:
18877
diff
changeset
|
4549 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
|
4550 windows get handled by WM_SIZE. */ |
043ccce224fb
(SIF_*): Win95 macros defined for NT.
Geoff Voelker <voelker@cs.washington.edu>
parents:
18877
diff
changeset
|
4551 #if 0 |
043ccce224fb
(SIF_*): Win95 macros defined for NT.
Geoff Voelker <voelker@cs.washington.edu>
parents:
18877
diff
changeset
|
4552 if (msg.msg.lParam != 0) |
043ccce224fb
(SIF_*): Win95 macros defined for NT.
Geoff Voelker <voelker@cs.washington.edu>
parents:
18877
diff
changeset
|
4553 check_visibility = 1; |
043ccce224fb
(SIF_*): Win95 macros defined for NT.
Geoff Voelker <voelker@cs.washington.edu>
parents:
18877
diff
changeset
|
4554 else |
043ccce224fb
(SIF_*): Win95 macros defined for NT.
Geoff Voelker <voelker@cs.washington.edu>
parents:
18877
diff
changeset
|
4555 { |
043ccce224fb
(SIF_*): Win95 macros defined for NT.
Geoff Voelker <voelker@cs.washington.edu>
parents:
18877
diff
changeset
|
4556 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
|
4557 f->async_visible = msg.msg.wParam; |
043ccce224fb
(SIF_*): Win95 macros defined for NT.
Geoff Voelker <voelker@cs.washington.edu>
parents:
18877
diff
changeset
|
4558 } |
043ccce224fb
(SIF_*): Win95 macros defined for NT.
Geoff Voelker <voelker@cs.washington.edu>
parents:
18877
diff
changeset
|
4559 #endif |
043ccce224fb
(SIF_*): Win95 macros defined for NT.
Geoff Voelker <voelker@cs.washington.edu>
parents:
18877
diff
changeset
|
4560 |
043ccce224fb
(SIF_*): Win95 macros defined for NT.
Geoff Voelker <voelker@cs.washington.edu>
parents:
18877
diff
changeset
|
4561 check_visibility = 1; |
043ccce224fb
(SIF_*): Win95 macros defined for NT.
Geoff Voelker <voelker@cs.washington.edu>
parents:
18877
diff
changeset
|
4562 break; |
043ccce224fb
(SIF_*): Win95 macros defined for NT.
Geoff Voelker <voelker@cs.washington.edu>
parents:
18877
diff
changeset
|
4563 |
13434 | 4564 case WM_SIZE: |
4565 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
|
4566 |
19713
043ccce224fb
(SIF_*): Win95 macros defined for NT.
Geoff Voelker <voelker@cs.washington.edu>
parents:
18877
diff
changeset
|
4567 /* 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
|
4568 if (f) |
13434 | 4569 { |
19713
043ccce224fb
(SIF_*): Win95 macros defined for NT.
Geoff Voelker <voelker@cs.washington.edu>
parents:
18877
diff
changeset
|
4570 switch (msg.msg.wParam) |
13434 | 4571 { |
19713
043ccce224fb
(SIF_*): Win95 macros defined for NT.
Geoff Voelker <voelker@cs.washington.edu>
parents:
18877
diff
changeset
|
4572 case SIZE_MINIMIZED: |
043ccce224fb
(SIF_*): Win95 macros defined for NT.
Geoff Voelker <voelker@cs.washington.edu>
parents:
18877
diff
changeset
|
4573 f->async_visible = 0; |
13434 | 4574 f->async_iconified = 1; |
48218
01e253345507
(w32_draw_fringe_bitmap): Remove unused local variable window.
Juanma Barranquero <lekktu@gmail.com>
parents:
48025
diff
changeset
|
4575 |
54171
f6909a416c3f
(w32_read_socket): Remove bufp_r and numcharsp args.
Kim F. Storm <storm@cua.dk>
parents:
54126
diff
changeset
|
4576 inev.kind = ICONIFY_EVENT; |
f6909a416c3f
(w32_read_socket): Remove bufp_r and numcharsp args.
Kim F. Storm <storm@cua.dk>
parents:
54126
diff
changeset
|
4577 XSETFRAME (inev.frame_or_window, f); |
19713
043ccce224fb
(SIF_*): Win95 macros defined for NT.
Geoff Voelker <voelker@cs.washington.edu>
parents:
18877
diff
changeset
|
4578 break; |
043ccce224fb
(SIF_*): Win95 macros defined for NT.
Geoff Voelker <voelker@cs.washington.edu>
parents:
18877
diff
changeset
|
4579 |
043ccce224fb
(SIF_*): Win95 macros defined for NT.
Geoff Voelker <voelker@cs.washington.edu>
parents:
18877
diff
changeset
|
4580 case SIZE_MAXIMIZED: |
043ccce224fb
(SIF_*): Win95 macros defined for NT.
Geoff Voelker <voelker@cs.washington.edu>
parents:
18877
diff
changeset
|
4581 case SIZE_RESTORED: |
13434 | 4582 f->async_visible = 1; |
4583 f->async_iconified = 0; | |
48218
01e253345507
(w32_draw_fringe_bitmap): Remove unused local variable window.
Juanma Barranquero <lekktu@gmail.com>
parents:
48025
diff
changeset
|
4584 |
56729
e6e0caa7ec87
Rename wait_reading_process_input to wait_reading_process_output.
Kim F. Storm <storm@cua.dk>
parents:
55646
diff
changeset
|
4585 /* wait_reading_process_output will notice this and update |
13434 | 4586 the frame's display structures. */ |
4587 SET_FRAME_GARBAGED (f); | |
48218
01e253345507
(w32_draw_fringe_bitmap): Remove unused local variable window.
Juanma Barranquero <lekktu@gmail.com>
parents:
48025
diff
changeset
|
4588 |
13434 | 4589 if (f->iconified) |
4590 { | |
24827
487fdbc8de0f
(cancel_mouse_face): new function. See equiv
Karl Heuer <kwzh@gnu.org>
parents:
24752
diff
changeset
|
4591 int x, y; |
487fdbc8de0f
(cancel_mouse_face): new function. See equiv
Karl Heuer <kwzh@gnu.org>
parents:
24752
diff
changeset
|
4592 |
487fdbc8de0f
(cancel_mouse_face): new function. See equiv
Karl Heuer <kwzh@gnu.org>
parents:
24752
diff
changeset
|
4593 /* 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
|
4594 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
|
4595 BEFORE telling us the Window is minimized |
487fdbc8de0f
(cancel_mouse_face): new function. See equiv
Karl Heuer <kwzh@gnu.org>
parents:
24752
diff
changeset
|
4596 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
|
4597 as the co-ords. */ |
487fdbc8de0f
(cancel_mouse_face): new function. See equiv
Karl Heuer <kwzh@gnu.org>
parents:
24752
diff
changeset
|
4598 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
|
4599 f->left_pos = x; |
082b768216a0
Make (several) trivial substitutions for renamed and
Kim F. Storm <storm@cua.dk>
parents:
50441
diff
changeset
|
4600 f->top_pos = y; |
24827
487fdbc8de0f
(cancel_mouse_face): new function. See equiv
Karl Heuer <kwzh@gnu.org>
parents:
24752
diff
changeset
|
4601 |
54171
f6909a416c3f
(w32_read_socket): Remove bufp_r and numcharsp args.
Kim F. Storm <storm@cua.dk>
parents:
54126
diff
changeset
|
4602 inev.kind = DEICONIFY_EVENT; |
f6909a416c3f
(w32_read_socket): Remove bufp_r and numcharsp args.
Kim F. Storm <storm@cua.dk>
parents:
54126
diff
changeset
|
4603 XSETFRAME (inev.frame_or_window, f); |
13434 | 4604 } |
29321
8e2be36bb1c6
Format and doc changes to bring closer to xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
28369
diff
changeset
|
4605 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
|
4606 && ! NILP (XCDR (Vframe_list))) |
13434 | 4607 /* Force a redisplay sooner or later |
4608 to update the frame titles | |
4609 in case this is the second frame. */ | |
4610 record_asynch_buffer_change (); | |
19713
043ccce224fb
(SIF_*): Win95 macros defined for NT.
Geoff Voelker <voelker@cs.washington.edu>
parents:
18877
diff
changeset
|
4611 break; |
13434 | 4612 } |
4613 } | |
19713
043ccce224fb
(SIF_*): Win95 macros defined for NT.
Geoff Voelker <voelker@cs.washington.edu>
parents:
18877
diff
changeset
|
4614 |
21614
2624d8dcc73f
(Vw32_recognize_altgr): New variable.
Geoff Voelker <voelker@cs.washington.edu>
parents:
21456
diff
changeset
|
4615 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
|
4616 { |
2624d8dcc73f
(Vw32_recognize_altgr): New variable.
Geoff Voelker <voelker@cs.washington.edu>
parents:
21456
diff
changeset
|
4617 RECT rect; |
2624d8dcc73f
(Vw32_recognize_altgr): New variable.
Geoff Voelker <voelker@cs.washington.edu>
parents:
21456
diff
changeset
|
4618 int rows; |
2624d8dcc73f
(Vw32_recognize_altgr): New variable.
Geoff Voelker <voelker@cs.washington.edu>
parents:
21456
diff
changeset
|
4619 int columns; |
2624d8dcc73f
(Vw32_recognize_altgr): New variable.
Geoff Voelker <voelker@cs.washington.edu>
parents:
21456
diff
changeset
|
4620 int width; |
2624d8dcc73f
(Vw32_recognize_altgr): New variable.
Geoff Voelker <voelker@cs.washington.edu>
parents:
21456
diff
changeset
|
4621 int height; |
48218
01e253345507
(w32_draw_fringe_bitmap): Remove unused local variable window.
Juanma Barranquero <lekktu@gmail.com>
parents:
48025
diff
changeset
|
4622 |
32022
1f26caa05cd7
(w32_char_font_type, w32_encode_char, x_produce_glyphs): Distinguish
Jason Rumney <jasonr@gnu.org>
parents:
31624
diff
changeset
|
4623 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
|
4624 |
21614
2624d8dcc73f
(Vw32_recognize_altgr): New variable.
Geoff Voelker <voelker@cs.washington.edu>
parents:
21456
diff
changeset
|
4625 height = rect.bottom - rect.top; |
2624d8dcc73f
(Vw32_recognize_altgr): New variable.
Geoff Voelker <voelker@cs.washington.edu>
parents:
21456
diff
changeset
|
4626 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
|
4627 |
51204
082b768216a0
Make (several) trivial substitutions for renamed and
Kim F. Storm <storm@cua.dk>
parents:
50441
diff
changeset
|
4628 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
|
4629 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
|
4630 |
21614
2624d8dcc73f
(Vw32_recognize_altgr): New variable.
Geoff Voelker <voelker@cs.washington.edu>
parents:
21456
diff
changeset
|
4631 /* 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
|
4632 |
21614
2624d8dcc73f
(Vw32_recognize_altgr): New variable.
Geoff Voelker <voelker@cs.washington.edu>
parents:
21456
diff
changeset
|
4633 /* 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
|
4634 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
|
4635 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
|
4636 |
51204
082b768216a0
Make (several) trivial substitutions for renamed and
Kim F. Storm <storm@cua.dk>
parents:
50441
diff
changeset
|
4637 if (columns != FRAME_COLS (f) |
082b768216a0
Make (several) trivial substitutions for renamed and
Kim F. Storm <storm@cua.dk>
parents:
50441
diff
changeset
|
4638 || rows != FRAME_LINES (f) |
082b768216a0
Make (several) trivial substitutions for renamed and
Kim F. Storm <storm@cua.dk>
parents:
50441
diff
changeset
|
4639 || width != FRAME_PIXEL_WIDTH (f) |
082b768216a0
Make (several) trivial substitutions for renamed and
Kim F. Storm <storm@cua.dk>
parents:
50441
diff
changeset
|
4640 || height != FRAME_PIXEL_HEIGHT (f)) |
21614
2624d8dcc73f
(Vw32_recognize_altgr): New variable.
Geoff Voelker <voelker@cs.washington.edu>
parents:
21456
diff
changeset
|
4641 { |
27402
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
4642 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
|
4643 SET_FRAME_GARBAGED (f); |
24827
487fdbc8de0f
(cancel_mouse_face): new function. See equiv
Karl Heuer <kwzh@gnu.org>
parents:
24752
diff
changeset
|
4644 cancel_mouse_face (f); |
51204
082b768216a0
Make (several) trivial substitutions for renamed and
Kim F. Storm <storm@cua.dk>
parents:
50441
diff
changeset
|
4645 FRAME_PIXEL_WIDTH (f) = width; |
082b768216a0
Make (several) trivial substitutions for renamed and
Kim F. Storm <storm@cua.dk>
parents:
50441
diff
changeset
|
4646 FRAME_PIXEL_HEIGHT (f) = height; |
082b768216a0
Make (several) trivial substitutions for renamed and
Kim F. Storm <storm@cua.dk>
parents:
50441
diff
changeset
|
4647 f->win_gravity = NorthWestGravity; |
21614
2624d8dcc73f
(Vw32_recognize_altgr): New variable.
Geoff Voelker <voelker@cs.washington.edu>
parents:
21456
diff
changeset
|
4648 } |
2624d8dcc73f
(Vw32_recognize_altgr): New variable.
Geoff Voelker <voelker@cs.washington.edu>
parents:
21456
diff
changeset
|
4649 } |
2624d8dcc73f
(Vw32_recognize_altgr): New variable.
Geoff Voelker <voelker@cs.washington.edu>
parents:
21456
diff
changeset
|
4650 |
19713
043ccce224fb
(SIF_*): Win95 macros defined for NT.
Geoff Voelker <voelker@cs.washington.edu>
parents:
18877
diff
changeset
|
4651 check_visibility = 1; |
043ccce224fb
(SIF_*): Win95 macros defined for NT.
Geoff Voelker <voelker@cs.washington.edu>
parents:
18877
diff
changeset
|
4652 break; |
043ccce224fb
(SIF_*): Win95 macros defined for NT.
Geoff Voelker <voelker@cs.washington.edu>
parents:
18877
diff
changeset
|
4653 |
41731
33ba14e9c09a
(w32_read_socket) <WM_MOUSELEAVE>: Cancel help echo
Jason Rumney <jasonr@gnu.org>
parents:
41727
diff
changeset
|
4654 case WM_MOUSELEAVE: |
33ba14e9c09a
(w32_read_socket) <WM_MOUSELEAVE>: Cancel help echo
Jason Rumney <jasonr@gnu.org>
parents:
41727
diff
changeset
|
4655 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
|
4656 if (f) |
33ba14e9c09a
(w32_read_socket) <WM_MOUSELEAVE>: Cancel help echo
Jason Rumney <jasonr@gnu.org>
parents:
41727
diff
changeset
|
4657 { |
33ba14e9c09a
(w32_read_socket) <WM_MOUSELEAVE>: Cancel help echo
Jason Rumney <jasonr@gnu.org>
parents:
41727
diff
changeset
|
4658 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
|
4659 { |
33ba14e9c09a
(w32_read_socket) <WM_MOUSELEAVE>: Cancel help echo
Jason Rumney <jasonr@gnu.org>
parents:
41727
diff
changeset
|
4660 /* 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
|
4661 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
|
4662 clear_mouse_face (dpyinfo); |
33ba14e9c09a
(w32_read_socket) <WM_MOUSELEAVE>: Cancel help echo
Jason Rumney <jasonr@gnu.org>
parents:
41727
diff
changeset
|
4663 dpyinfo->mouse_face_mouse_frame = 0; |
33ba14e9c09a
(w32_read_socket) <WM_MOUSELEAVE>: Cancel help echo
Jason Rumney <jasonr@gnu.org>
parents:
41727
diff
changeset
|
4664 } |
33ba14e9c09a
(w32_read_socket) <WM_MOUSELEAVE>: Cancel help echo
Jason Rumney <jasonr@gnu.org>
parents:
41727
diff
changeset
|
4665 |
33ba14e9c09a
(w32_read_socket) <WM_MOUSELEAVE>: Cancel help echo
Jason Rumney <jasonr@gnu.org>
parents:
41727
diff
changeset
|
4666 /* 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
|
4667 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
|
4668 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
|
4669 the mouse leaves the frame. */ |
33ba14e9c09a
(w32_read_socket) <WM_MOUSELEAVE>: Cancel help echo
Jason Rumney <jasonr@gnu.org>
parents:
41727
diff
changeset
|
4670 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
|
4671 do_help = -1; |
41731
33ba14e9c09a
(w32_read_socket) <WM_MOUSELEAVE>: Cancel help echo
Jason Rumney <jasonr@gnu.org>
parents:
41727
diff
changeset
|
4672 } |
33ba14e9c09a
(w32_read_socket) <WM_MOUSELEAVE>: Cancel help echo
Jason Rumney <jasonr@gnu.org>
parents:
41727
diff
changeset
|
4673 break; |
48218
01e253345507
(w32_draw_fringe_bitmap): Remove unused local variable window.
Juanma Barranquero <lekktu@gmail.com>
parents:
48025
diff
changeset
|
4674 |
19713
043ccce224fb
(SIF_*): Win95 macros defined for NT.
Geoff Voelker <voelker@cs.washington.edu>
parents:
18877
diff
changeset
|
4675 case WM_SETFOCUS: |
60948
03a8b8b9ebef
(x_focus_changed, w32_detect_focus_change): New functions.
Jason Rumney <jasonr@gnu.org>
parents:
59748
diff
changeset
|
4676 w32_detect_focus_change (dpyinfo, &msg, &inev); |
27402
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
4677 |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
4678 dpyinfo->grabbed = 0; |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
4679 check_visibility = 1; |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
4680 break; |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
4681 |
19713
043ccce224fb
(SIF_*): Win95 macros defined for NT.
Geoff Voelker <voelker@cs.washington.edu>
parents:
18877
diff
changeset
|
4682 case WM_KILLFOCUS: |
27402
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
4683 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
|
4684 |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
4685 if (f) |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
4686 { |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
4687 if (f == dpyinfo->w32_focus_event_frame) |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
4688 dpyinfo->w32_focus_event_frame = 0; |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
4689 |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
4690 if (f == dpyinfo->w32_focus_frame) |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
4691 x_new_focus_frame (dpyinfo, 0); |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
4692 |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
4693 if (f == dpyinfo->mouse_face_mouse_frame) |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
4694 { |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
4695 /* 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
|
4696 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
|
4697 clear_mouse_face (dpyinfo); |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
4698 dpyinfo->mouse_face_mouse_frame = 0; |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
4699 } |
29321
8e2be36bb1c6
Format and doc changes to bring closer to xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
28369
diff
changeset
|
4700 |
27402
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
4701 /* 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
|
4702 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
|
4703 Otherwise, the startup message is cleared when |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
4704 the mouse leaves the frame. */ |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
4705 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
|
4706 do_help = -1; |
27402
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
4707 } |
19713
043ccce224fb
(SIF_*): Win95 macros defined for NT.
Geoff Voelker <voelker@cs.washington.edu>
parents:
18877
diff
changeset
|
4708 |
24752
80c46fd667da
(w32_read_socket): Reset the grabbed flag when a frame gains or
Andrew Innes <andrewi@gnu.org>
parents:
24733
diff
changeset
|
4709 dpyinfo->grabbed = 0; |
19713
043ccce224fb
(SIF_*): Win95 macros defined for NT.
Geoff Voelker <voelker@cs.washington.edu>
parents:
18877
diff
changeset
|
4710 check_visibility = 1; |
13434 | 4711 break; |
19713
043ccce224fb
(SIF_*): Win95 macros defined for NT.
Geoff Voelker <voelker@cs.washington.edu>
parents:
18877
diff
changeset
|
4712 |
13434 | 4713 case WM_CLOSE: |
4714 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
|
4715 |
13434 | 4716 if (f) |
4717 { | |
54171
f6909a416c3f
(w32_read_socket): Remove bufp_r and numcharsp args.
Kim F. Storm <storm@cua.dk>
parents:
54126
diff
changeset
|
4718 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
|
4719 XSETFRAME (inev.frame_or_window, f); |
13434 | 4720 } |
19713
043ccce224fb
(SIF_*): Win95 macros defined for NT.
Geoff Voelker <voelker@cs.washington.edu>
parents:
18877
diff
changeset
|
4721 break; |
043ccce224fb
(SIF_*): Win95 macros defined for NT.
Geoff Voelker <voelker@cs.washington.edu>
parents:
18877
diff
changeset
|
4722 |
043ccce224fb
(SIF_*): Win95 macros defined for NT.
Geoff Voelker <voelker@cs.washington.edu>
parents:
18877
diff
changeset
|
4723 case WM_INITMENU: |
043ccce224fb
(SIF_*): Win95 macros defined for NT.
Geoff Voelker <voelker@cs.washington.edu>
parents:
18877
diff
changeset
|
4724 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
|
4725 |
19713
043ccce224fb
(SIF_*): Win95 macros defined for NT.
Geoff Voelker <voelker@cs.washington.edu>
parents:
18877
diff
changeset
|
4726 if (f) |
043ccce224fb
(SIF_*): Win95 macros defined for NT.
Geoff Voelker <voelker@cs.washington.edu>
parents:
18877
diff
changeset
|
4727 { |
54171
f6909a416c3f
(w32_read_socket): Remove bufp_r and numcharsp args.
Kim F. Storm <storm@cua.dk>
parents:
54126
diff
changeset
|
4728 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
|
4729 XSETFRAME (inev.frame_or_window, f); |
19713
043ccce224fb
(SIF_*): Win95 macros defined for NT.
Geoff Voelker <voelker@cs.washington.edu>
parents:
18877
diff
changeset
|
4730 } |
13434 | 4731 break; |
19713
043ccce224fb
(SIF_*): Win95 macros defined for NT.
Geoff Voelker <voelker@cs.washington.edu>
parents:
18877
diff
changeset
|
4732 |
13434 | 4733 case WM_COMMAND: |
4734 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
|
4735 |
13434 | 4736 if (f) |
4737 { | |
23677
70999481c915
(convert_to_key_event): Removed.
Geoff Voelker <voelker@cs.washington.edu>
parents:
23639
diff
changeset
|
4738 extern void menubar_selection_callback |
70999481c915
(convert_to_key_event): Removed.
Geoff Voelker <voelker@cs.washington.edu>
parents:
23639
diff
changeset
|
4739 (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
|
4740 menubar_selection_callback (f, (void *)msg.msg.wParam); |
13434 | 4741 } |
19713
043ccce224fb
(SIF_*): Win95 macros defined for NT.
Geoff Voelker <voelker@cs.washington.edu>
parents:
18877
diff
changeset
|
4742 |
043ccce224fb
(SIF_*): Win95 macros defined for NT.
Geoff Voelker <voelker@cs.washington.edu>
parents:
18877
diff
changeset
|
4743 check_visibility = 1; |
043ccce224fb
(SIF_*): Win95 macros defined for NT.
Geoff Voelker <voelker@cs.washington.edu>
parents:
18877
diff
changeset
|
4744 break; |
043ccce224fb
(SIF_*): Win95 macros defined for NT.
Geoff Voelker <voelker@cs.washington.edu>
parents:
18877
diff
changeset
|
4745 |
043ccce224fb
(SIF_*): Win95 macros defined for NT.
Geoff Voelker <voelker@cs.washington.edu>
parents:
18877
diff
changeset
|
4746 case WM_DISPLAYCHANGE: |
043ccce224fb
(SIF_*): Win95 macros defined for NT.
Geoff Voelker <voelker@cs.washington.edu>
parents:
18877
diff
changeset
|
4747 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
|
4748 |
48218
01e253345507
(w32_draw_fringe_bitmap): Remove unused local variable window.
Juanma Barranquero <lekktu@gmail.com>
parents:
48025
diff
changeset
|
4749 if (f) |
19713
043ccce224fb
(SIF_*): Win95 macros defined for NT.
Geoff Voelker <voelker@cs.washington.edu>
parents:
18877
diff
changeset
|
4750 { |
043ccce224fb
(SIF_*): Win95 macros defined for NT.
Geoff Voelker <voelker@cs.washington.edu>
parents:
18877
diff
changeset
|
4751 dpyinfo->n_cbits = msg.msg.wParam; |
98227
166909ca8be2
(x_display_pixel_height, x_display_pixel_width): New functions.
Chong Yidong <cyd@stupidchicken.com>
parents:
97831
diff
changeset
|
4752 DebPrint (("display change: %d %d\n", |
166909ca8be2
(x_display_pixel_height, x_display_pixel_width): New functions.
Chong Yidong <cyd@stupidchicken.com>
parents:
97831
diff
changeset
|
4753 (short) LOWORD (msg.msg.lParam), |
166909ca8be2
(x_display_pixel_height, x_display_pixel_width): New functions.
Chong Yidong <cyd@stupidchicken.com>
parents:
97831
diff
changeset
|
4754 (short) HIWORD (msg.msg.lParam))); |
19713
043ccce224fb
(SIF_*): Win95 macros defined for NT.
Geoff Voelker <voelker@cs.washington.edu>
parents:
18877
diff
changeset
|
4755 } |
48218
01e253345507
(w32_draw_fringe_bitmap): Remove unused local variable window.
Juanma Barranquero <lekktu@gmail.com>
parents:
48025
diff
changeset
|
4756 |
19713
043ccce224fb
(SIF_*): Win95 macros defined for NT.
Geoff Voelker <voelker@cs.washington.edu>
parents:
18877
diff
changeset
|
4757 check_visibility = 1; |
13434 | 4758 break; |
21875
16414f4d07e7
(msh_mousewheel): Declare.
Geoff Voelker <voelker@cs.washington.edu>
parents:
21831
diff
changeset
|
4759 |
16414f4d07e7
(msh_mousewheel): Declare.
Geoff Voelker <voelker@cs.washington.edu>
parents:
21831
diff
changeset
|
4760 default: |
51270
827c306f0515
Add missing code from previous patch by David Ponce.
Juanma Barranquero <lekktu@gmail.com>
parents:
51269
diff
changeset
|
4761 /* Check for messages registered at runtime. */ |
21875
16414f4d07e7
(msh_mousewheel): Declare.
Geoff Voelker <voelker@cs.washington.edu>
parents:
21831
diff
changeset
|
4762 if (msg.msg.message == msh_mousewheel) |
16414f4d07e7
(msh_mousewheel): Declare.
Geoff Voelker <voelker@cs.washington.edu>
parents:
21831
diff
changeset
|
4763 { |
51270
827c306f0515
Add missing code from previous patch by David Ponce.
Juanma Barranquero <lekktu@gmail.com>
parents:
51269
diff
changeset
|
4764 /* Forward MSH_MOUSEWHEEL as WM_MOUSEWHEEL. */ |
52349
c631ebcc0df9
(w32_read_socket): Fix WM_MOUSEWHEEL assignment.
Jason Rumney <jasonr@gnu.org>
parents:
51382
diff
changeset
|
4765 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
|
4766 prepend_msg (&msg); |
21875
16414f4d07e7
(msh_mousewheel): Declare.
Geoff Voelker <voelker@cs.washington.edu>
parents:
21831
diff
changeset
|
4767 } |
16414f4d07e7
(msh_mousewheel): Declare.
Geoff Voelker <voelker@cs.washington.edu>
parents:
21831
diff
changeset
|
4768 break; |
13434 | 4769 } |
54171
f6909a416c3f
(w32_read_socket): Remove bufp_r and numcharsp args.
Kim F. Storm <storm@cua.dk>
parents:
54126
diff
changeset
|
4770 |
f6909a416c3f
(w32_read_socket): Remove bufp_r and numcharsp args.
Kim F. Storm <storm@cua.dk>
parents:
54126
diff
changeset
|
4771 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
|
4772 { |
f6909a416c3f
(w32_read_socket): Remove bufp_r and numcharsp args.
Kim F. Storm <storm@cua.dk>
parents:
54126
diff
changeset
|
4773 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
|
4774 count++; |
f6909a416c3f
(w32_read_socket): Remove bufp_r and numcharsp args.
Kim F. Storm <storm@cua.dk>
parents:
54126
diff
changeset
|
4775 } |
f6909a416c3f
(w32_read_socket): Remove bufp_r and numcharsp args.
Kim F. Storm <storm@cua.dk>
parents:
54126
diff
changeset
|
4776 |
f6909a416c3f
(w32_read_socket): Remove bufp_r and numcharsp args.
Kim F. Storm <storm@cua.dk>
parents:
54126
diff
changeset
|
4777 if (do_help |
f6909a416c3f
(w32_read_socket): Remove bufp_r and numcharsp args.
Kim F. Storm <storm@cua.dk>
parents:
54126
diff
changeset
|
4778 && !(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
|
4779 { |
f6909a416c3f
(w32_read_socket): Remove bufp_r and numcharsp args.
Kim F. Storm <storm@cua.dk>
parents:
54126
diff
changeset
|
4780 Lisp_Object frame; |
f6909a416c3f
(w32_read_socket): Remove bufp_r and numcharsp args.
Kim F. Storm <storm@cua.dk>
parents:
54126
diff
changeset
|
4781 |
f6909a416c3f
(w32_read_socket): Remove bufp_r and numcharsp args.
Kim F. Storm <storm@cua.dk>
parents:
54126
diff
changeset
|
4782 if (f) |
f6909a416c3f
(w32_read_socket): Remove bufp_r and numcharsp args.
Kim F. Storm <storm@cua.dk>
parents:
54126
diff
changeset
|
4783 XSETFRAME (frame, f); |
f6909a416c3f
(w32_read_socket): Remove bufp_r and numcharsp args.
Kim F. Storm <storm@cua.dk>
parents:
54126
diff
changeset
|
4784 else |
f6909a416c3f
(w32_read_socket): Remove bufp_r and numcharsp args.
Kim F. Storm <storm@cua.dk>
parents:
54126
diff
changeset
|
4785 frame = Qnil; |
f6909a416c3f
(w32_read_socket): Remove bufp_r and numcharsp args.
Kim F. Storm <storm@cua.dk>
parents:
54126
diff
changeset
|
4786 |
f6909a416c3f
(w32_read_socket): Remove bufp_r and numcharsp args.
Kim F. Storm <storm@cua.dk>
parents:
54126
diff
changeset
|
4787 if (do_help > 0) |
f6909a416c3f
(w32_read_socket): Remove bufp_r and numcharsp args.
Kim F. Storm <storm@cua.dk>
parents:
54126
diff
changeset
|
4788 { |
55646
358a5c0b4571
(w32_num_mouse_buttons): Rename from Vw32_num_mouse_buttons and make
Jason Rumney <jasonr@gnu.org>
parents:
55286
diff
changeset
|
4789 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
|
4790 { |
f6909a416c3f
(w32_read_socket): Remove bufp_r and numcharsp args.
Kim F. Storm <storm@cua.dk>
parents:
54126
diff
changeset
|
4791 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
|
4792 help_echo_pos = -1; |
f6909a416c3f
(w32_read_socket): Remove bufp_r and numcharsp args.
Kim F. Storm <storm@cua.dk>
parents:
54126
diff
changeset
|
4793 } |
54731
4031909001d5
(w32_read_socket): Set mouse_face_hidden after clearing highlight.
Kim F. Storm <storm@cua.dk>
parents:
54225
diff
changeset
|
4794 |
54171
f6909a416c3f
(w32_read_socket): Remove bufp_r and numcharsp args.
Kim F. Storm <storm@cua.dk>
parents:
54126
diff
changeset
|
4795 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
|
4796 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
|
4797 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
|
4798 } |
f6909a416c3f
(w32_read_socket): Remove bufp_r and numcharsp args.
Kim F. Storm <storm@cua.dk>
parents:
54126
diff
changeset
|
4799 else |
f6909a416c3f
(w32_read_socket): Remove bufp_r and numcharsp args.
Kim F. Storm <storm@cua.dk>
parents:
54126
diff
changeset
|
4800 { |
f6909a416c3f
(w32_read_socket): Remove bufp_r and numcharsp args.
Kim F. Storm <storm@cua.dk>
parents:
54126
diff
changeset
|
4801 help_echo_string = Qnil; |
f6909a416c3f
(w32_read_socket): Remove bufp_r and numcharsp args.
Kim F. Storm <storm@cua.dk>
parents:
54126
diff
changeset
|
4802 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
|
4803 } |
f6909a416c3f
(w32_read_socket): Remove bufp_r and numcharsp args.
Kim F. Storm <storm@cua.dk>
parents:
54126
diff
changeset
|
4804 count++; |
f6909a416c3f
(w32_read_socket): Remove bufp_r and numcharsp args.
Kim F. Storm <storm@cua.dk>
parents:
54126
diff
changeset
|
4805 } |
13434 | 4806 } |
4807 | |
4808 /* If the focus was just given to an autoraising frame, | |
4809 raise it now. */ | |
4810 /* ??? This ought to be able to handle more than one such frame. */ | |
4811 if (pending_autoraise_frame) | |
4812 { | |
4813 x_raise_frame (pending_autoraise_frame); | |
4814 pending_autoraise_frame = 0; | |
4815 } | |
4816 | |
19713
043ccce224fb
(SIF_*): Win95 macros defined for NT.
Geoff Voelker <voelker@cs.washington.edu>
parents:
18877
diff
changeset
|
4817 /* 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
|
4818 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
|
4819 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
|
4820 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
|
4821 changed (at least, not in all cases). */ |
043ccce224fb
(SIF_*): Win95 macros defined for NT.
Geoff Voelker <voelker@cs.washington.edu>
parents:
18877
diff
changeset
|
4822 if (count > 0 || check_visibility) |
043ccce224fb
(SIF_*): Win95 macros defined for NT.
Geoff Voelker <voelker@cs.washington.edu>
parents:
18877
diff
changeset
|
4823 { |
043ccce224fb
(SIF_*): Win95 macros defined for NT.
Geoff Voelker <voelker@cs.washington.edu>
parents:
18877
diff
changeset
|
4824 Lisp_Object tail, frame; |
043ccce224fb
(SIF_*): Win95 macros defined for NT.
Geoff Voelker <voelker@cs.washington.edu>
parents:
18877
diff
changeset
|
4825 |
043ccce224fb
(SIF_*): Win95 macros defined for NT.
Geoff Voelker <voelker@cs.washington.edu>
parents:
18877
diff
changeset
|
4826 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
|
4827 { |
a35e5665c742
(construct_mouse_wheel): Result is a MOUSE_CLICK_EVENT. Scrolling down/up the
Juanma Barranquero <lekktu@gmail.com>
parents:
51204
diff
changeset
|
4828 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
|
4829 /* 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
|
4830 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
|
4831 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
|
4832 continue; |
a35e5665c742
(construct_mouse_wheel): Result is a MOUSE_CLICK_EVENT. Scrolling down/up the
Juanma Barranquero <lekktu@gmail.com>
parents:
51204
diff
changeset
|
4833 |
a35e5665c742
(construct_mouse_wheel): Result is a MOUSE_CLICK_EVENT. Scrolling down/up the
Juanma Barranquero <lekktu@gmail.com>
parents:
51204
diff
changeset
|
4834 /* 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
|
4835 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
|
4836 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
|
4837 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
|
4838 { |
a35e5665c742
(construct_mouse_wheel): Result is a MOUSE_CLICK_EVENT. Scrolling down/up the
Juanma Barranquero <lekktu@gmail.com>
parents:
51204
diff
changeset
|
4839 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
|
4840 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
|
4841 |
a35e5665c742
(construct_mouse_wheel): Result is a MOUSE_CLICK_EVENT. Scrolling down/up the
Juanma Barranquero <lekktu@gmail.com>
parents:
51204
diff
changeset
|
4842 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
|
4843 /* 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
|
4844 (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
|
4845 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
|
4846 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
|
4847 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
|
4848 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
|
4849 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
|
4850 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
|
4851 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
|
4852 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
|
4853 |
a35e5665c742
(construct_mouse_wheel): Result is a MOUSE_CLICK_EVENT. Scrolling down/up the
Juanma Barranquero <lekktu@gmail.com>
parents:
51204
diff
changeset
|
4854 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
|
4855 || 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
|
4856 { |
a35e5665c742
(construct_mouse_wheel): Result is a MOUSE_CLICK_EVENT. Scrolling down/up the
Juanma Barranquero <lekktu@gmail.com>
parents:
51204
diff
changeset
|
4857 /* 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
|
4858 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
|
4859 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
|
4860 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
|
4861 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
|
4862 |
a35e5665c742
(construct_mouse_wheel): Result is a MOUSE_CLICK_EVENT. Scrolling down/up the
Juanma Barranquero <lekktu@gmail.com>
parents:
51204
diff
changeset
|
4863 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
|
4864 { |
a35e5665c742
(construct_mouse_wheel): Result is a MOUSE_CLICK_EVENT. Scrolling down/up the
Juanma Barranquero <lekktu@gmail.com>
parents:
51204
diff
changeset
|
4865 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
|
4866 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
|
4867 } |
a35e5665c742
(construct_mouse_wheel): Result is a MOUSE_CLICK_EVENT. Scrolling down/up the
Juanma Barranquero <lekktu@gmail.com>
parents:
51204
diff
changeset
|
4868 } |
a35e5665c742
(construct_mouse_wheel): Result is a MOUSE_CLICK_EVENT. Scrolling down/up the
Juanma Barranquero <lekktu@gmail.com>
parents:
51204
diff
changeset
|
4869 else |
a35e5665c742
(construct_mouse_wheel): Result is a MOUSE_CLICK_EVENT. Scrolling down/up the
Juanma Barranquero <lekktu@gmail.com>
parents:
51204
diff
changeset
|
4870 { |
a35e5665c742
(construct_mouse_wheel): Result is a MOUSE_CLICK_EVENT. Scrolling down/up the
Juanma Barranquero <lekktu@gmail.com>
parents:
51204
diff
changeset
|
4871 /* 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
|
4872 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
|
4873 |
a35e5665c742
(construct_mouse_wheel): Result is a MOUSE_CLICK_EVENT. Scrolling down/up the
Juanma Barranquero <lekktu@gmail.com>
parents:
51204
diff
changeset
|
4874 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
|
4875 { |
a35e5665c742
(construct_mouse_wheel): Result is a MOUSE_CLICK_EVENT. Scrolling down/up the
Juanma Barranquero <lekktu@gmail.com>
parents:
51204
diff
changeset
|
4876 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
|
4877 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
|
4878 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
|
4879 |
a35e5665c742
(construct_mouse_wheel): Result is a MOUSE_CLICK_EVENT. Scrolling down/up the
Juanma Barranquero <lekktu@gmail.com>
parents:
51204
diff
changeset
|
4880 /* 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
|
4881 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
|
4882 } |
a35e5665c742
(construct_mouse_wheel): Result is a MOUSE_CLICK_EVENT. Scrolling down/up the
Juanma Barranquero <lekktu@gmail.com>
parents:
51204
diff
changeset
|
4883 } |
a35e5665c742
(construct_mouse_wheel): Result is a MOUSE_CLICK_EVENT. Scrolling down/up the
Juanma Barranquero <lekktu@gmail.com>
parents:
51204
diff
changeset
|
4884 } |
a35e5665c742
(construct_mouse_wheel): Result is a MOUSE_CLICK_EVENT. Scrolling down/up the
Juanma Barranquero <lekktu@gmail.com>
parents:
51204
diff
changeset
|
4885 } |
19713
043ccce224fb
(SIF_*): Win95 macros defined for NT.
Geoff Voelker <voelker@cs.washington.edu>
parents:
18877
diff
changeset
|
4886 } |
043ccce224fb
(SIF_*): Win95 macros defined for NT.
Geoff Voelker <voelker@cs.washington.edu>
parents:
18877
diff
changeset
|
4887 |
13434 | 4888 UNBLOCK_INPUT; |
4889 return count; | |
4890 } | |
27402
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
4891 |
29321
8e2be36bb1c6
Format and doc changes to bring closer to xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
28369
diff
changeset
|
4892 |
13434 | 4893 |
27402
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
4894 /*********************************************************************** |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
4895 Text Cursor |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
4896 ***********************************************************************/ |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
4897 |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
4898 /* 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
|
4899 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
|
4900 |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
4901 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
|
4902 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
|
4903 mode lines must be clipped to the whole window. */ |
13434 | 4904 |
4905 static void | |
58402
d1d4d5846215
(w32_clip_to_row): Add area arg. Callers changed.
Kim F. Storm <storm@cua.dk>
parents:
57837
diff
changeset
|
4906 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
|
4907 struct window *w; |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
4908 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
|
4909 int area; |
27402
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
4910 HDC hdc; |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
4911 { |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
4912 struct frame *f = XFRAME (WINDOW_FRAME (w)); |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
4913 RECT clip_rect; |
58402
d1d4d5846215
(w32_clip_to_row): Add area arg. Callers changed.
Kim F. Storm <storm@cua.dk>
parents:
57837
diff
changeset
|
4914 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
|
4915 |
d1d4d5846215
(w32_clip_to_row): Add area arg. Callers changed.
Kim F. Storm <storm@cua.dk>
parents:
57837
diff
changeset
|
4916 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
|
4917 |
d1d4d5846215
(w32_clip_to_row): Add area arg. Callers changed.
Kim F. Storm <storm@cua.dk>
parents:
57837
diff
changeset
|
4918 clip_rect.left = window_x; |
27402
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
4919 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
|
4920 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
|
4921 clip_rect.right = clip_rect.left + window_width; |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
4922 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
|
4923 |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
4924 w32_set_clip_rectangle (hdc, &clip_rect); |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
4925 } |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
4926 |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
4927 |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
4928 /* 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
|
4929 |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
4930 static void |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
4931 x_draw_hollow_cursor (w, row) |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
4932 struct window *w; |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
4933 struct glyph_row *row; |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
4934 { |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
4935 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
|
4936 HDC hdc; |
13434 | 4937 RECT rect; |
71074
67dc3a0454b2
(x_draw_hollow_cursor): Fix last change.
Eli Zaretskii <eliz@gnu.org>
parents:
71073
diff
changeset
|
4938 int left, top, h; |
27402
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
4939 struct glyph *cursor_glyph; |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
4940 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
|
4941 |
55286
b4bf3dd67827
(x_draw_hollow_cursor): Sync with xterm.c
Jason Rumney <jasonr@gnu.org>
parents:
55026
diff
changeset
|
4942 /* 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
|
4943 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
|
4944 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
|
4945 if (cursor_glyph == NULL) |
b4bf3dd67827
(x_draw_hollow_cursor): Sync with xterm.c
Jason Rumney <jasonr@gnu.org>
parents:
55026
diff
changeset
|
4946 return; |
b4bf3dd67827
(x_draw_hollow_cursor): Sync with xterm.c
Jason Rumney <jasonr@gnu.org>
parents:
55026
diff
changeset
|
4947 |
59748
1df465faf1df
(x_draw_hollow_cursor): Use get_phys_cursor_geometry.
Kim F. Storm <storm@cua.dk>
parents:
59655
diff
changeset
|
4948 /* 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
|
4949 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
|
4950 rect.left = left; |
67dc3a0454b2
(x_draw_hollow_cursor): Fix last change.
Eli Zaretskii <eliz@gnu.org>
parents:
71073
diff
changeset
|
4951 rect.top = top; |
55286
b4bf3dd67827
(x_draw_hollow_cursor): Sync with xterm.c
Jason Rumney <jasonr@gnu.org>
parents:
55026
diff
changeset
|
4952 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
|
4953 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
|
4954 |
34779
94c3431a7fe2
(x_draw_hollow_cursor): Delay obtaining the frame's DC to avoid
Jason Rumney <jasonr@gnu.org>
parents:
34545
diff
changeset
|
4955 hdc = get_frame_dc (f); |
49393
85246e86a2cd
* w32term.c (x_draw_glyph_string_foreground)
Jason Rumney <jasonr@gnu.org>
parents:
49371
diff
changeset
|
4956 /* 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
|
4957 w32_clip_to_row (w, row, TEXT_AREA, hdc); |
13434 | 4958 FrameRect (hdc, &rect, hb); |
4959 DeleteObject (hb); | |
49393
85246e86a2cd
* w32term.c (x_draw_glyph_string_foreground)
Jason Rumney <jasonr@gnu.org>
parents:
49371
diff
changeset
|
4960 w32_set_clip_rectangle (hdc, NULL); |
15151
ed6ddfc0d954
(Vwindow_system): Declared.
Geoff Voelker <voelker@cs.washington.edu>
parents:
15035
diff
changeset
|
4961 release_frame_dc (f, hdc); |
13434 | 4962 } |
4963 | |
27402
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
4964 |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
4965 /* 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
|
4966 |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
4967 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
|
4968 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
|
4969 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
|
4970 --gerd. */ |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
4971 |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
4972 static void |
45467
583ed47de245
(x_draw_bar_cursor): New argument KIND; callers changed.
Jason Rumney <jasonr@gnu.org>
parents:
45196
diff
changeset
|
4973 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
|
4974 struct window *w; |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
4975 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
|
4976 int width; |
45467
583ed47de245
(x_draw_bar_cursor): New argument KIND; callers changed.
Jason Rumney <jasonr@gnu.org>
parents:
45196
diff
changeset
|
4977 enum text_cursor_kinds kind; |
27402
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
4978 { |
35384
e50a7f9ce65e
(x_produce_stretch_glyph): Only use Qspace when GLYPH_DEBUG is defined.
Jason Rumney <jasonr@gnu.org>
parents:
35287
diff
changeset
|
4979 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
|
4980 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
|
4981 |
e50a7f9ce65e
(x_produce_stretch_glyph): Only use Qspace when GLYPH_DEBUG is defined.
Jason Rumney <jasonr@gnu.org>
parents:
35287
diff
changeset
|
4982 /* 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
|
4983 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
|
4984 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
|
4985 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
|
4986 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
|
4987 return; |
e50a7f9ce65e
(x_produce_stretch_glyph): Only use Qspace when GLYPH_DEBUG is defined.
Jason Rumney <jasonr@gnu.org>
parents:
35287
diff
changeset
|
4988 |
e50a7f9ce65e
(x_produce_stretch_glyph): Only use Qspace when GLYPH_DEBUG is defined.
Jason Rumney <jasonr@gnu.org>
parents:
35287
diff
changeset
|
4989 /* 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
|
4990 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
|
4991 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
|
4992 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
|
4993 { |
e50a7f9ce65e
(x_produce_stretch_glyph): Only use Qspace when GLYPH_DEBUG is defined.
Jason Rumney <jasonr@gnu.org>
parents:
35287
diff
changeset
|
4994 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
|
4995 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
|
4996 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
|
4997 } |
e50a7f9ce65e
(x_produce_stretch_glyph): Only use Qspace when GLYPH_DEBUG is defined.
Jason Rumney <jasonr@gnu.org>
parents:
35287
diff
changeset
|
4998 else |
e50a7f9ce65e
(x_produce_stretch_glyph): Only use Qspace when GLYPH_DEBUG is defined.
Jason Rumney <jasonr@gnu.org>
parents:
35287
diff
changeset
|
4999 { |
41249
2043af2d023f
(note_mouse_highlight): Fix type of variable `ignore'.
Jason Rumney <jasonr@gnu.org>
parents:
41125
diff
changeset
|
5000 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
|
5001 struct face *face = FACE_FROM_ID (f, cursor_glyph->face_id); |
103023
30ed0fca4cdd
The following changes fix Bug#3005 for wide glyphs on each platform,
Jason Rumney <jasonr@gnu.org>
parents:
102688
diff
changeset
|
5002 int x; |
30ed0fca4cdd
The following changes fix Bug#3005 for wide glyphs on each platform,
Jason Rumney <jasonr@gnu.org>
parents:
102688
diff
changeset
|
5003 HDC hdc; |
41249
2043af2d023f
(note_mouse_highlight): Fix type of variable `ignore'.
Jason Rumney <jasonr@gnu.org>
parents:
41125
diff
changeset
|
5004 |
2043af2d023f
(note_mouse_highlight): Fix type of variable `ignore'.
Jason Rumney <jasonr@gnu.org>
parents:
41125
diff
changeset
|
5005 /* 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
|
5006 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
|
5007 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
|
5008 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
|
5009 that the glyph is legible. */ |
2043af2d023f
(note_mouse_highlight): Fix type of variable `ignore'.
Jason Rumney <jasonr@gnu.org>
parents:
41125
diff
changeset
|
5010 if (face->background == cursor_color) |
2043af2d023f
(note_mouse_highlight): Fix type of variable `ignore'.
Jason Rumney <jasonr@gnu.org>
parents:
41125
diff
changeset
|
5011 cursor_color = face->foreground; |
2043af2d023f
(note_mouse_highlight): Fix type of variable `ignore'.
Jason Rumney <jasonr@gnu.org>
parents:
41125
diff
changeset
|
5012 |
35384
e50a7f9ce65e
(x_produce_stretch_glyph): Only use Qspace when GLYPH_DEBUG is defined.
Jason Rumney <jasonr@gnu.org>
parents:
35287
diff
changeset
|
5013 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
|
5014 |
35384
e50a7f9ce65e
(x_produce_stretch_glyph): Only use Qspace when GLYPH_DEBUG is defined.
Jason Rumney <jasonr@gnu.org>
parents:
35287
diff
changeset
|
5015 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
|
5016 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
|
5017 |
583ed47de245
(x_draw_bar_cursor): New argument KIND; callers changed.
Jason Rumney <jasonr@gnu.org>
parents:
45196
diff
changeset
|
5018 if (kind == BAR_CURSOR) |
583ed47de245
(x_draw_bar_cursor): New argument KIND; callers changed.
Jason Rumney <jasonr@gnu.org>
parents:
45196
diff
changeset
|
5019 { |
103023
30ed0fca4cdd
The following changes fix Bug#3005 for wide glyphs on each platform,
Jason Rumney <jasonr@gnu.org>
parents:
102688
diff
changeset
|
5020 if (width < 0) |
30ed0fca4cdd
The following changes fix Bug#3005 for wide glyphs on each platform,
Jason Rumney <jasonr@gnu.org>
parents:
102688
diff
changeset
|
5021 width = FRAME_CURSOR_WIDTH (f); |
30ed0fca4cdd
The following changes fix Bug#3005 for wide glyphs on each platform,
Jason Rumney <jasonr@gnu.org>
parents:
102688
diff
changeset
|
5022 width = min (cursor_glyph->pixel_width, width); |
30ed0fca4cdd
The following changes fix Bug#3005 for wide glyphs on each platform,
Jason Rumney <jasonr@gnu.org>
parents:
102688
diff
changeset
|
5023 |
30ed0fca4cdd
The following changes fix Bug#3005 for wide glyphs on each platform,
Jason Rumney <jasonr@gnu.org>
parents:
102688
diff
changeset
|
5024 w->phys_cursor_width = width; |
30ed0fca4cdd
The following changes fix Bug#3005 for wide glyphs on each platform,
Jason Rumney <jasonr@gnu.org>
parents:
102688
diff
changeset
|
5025 |
45467
583ed47de245
(x_draw_bar_cursor): New argument KIND; callers changed.
Jason Rumney <jasonr@gnu.org>
parents:
45196
diff
changeset
|
5026 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
|
5027 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
|
5028 width, row->height); |
583ed47de245
(x_draw_bar_cursor): New argument KIND; callers changed.
Jason Rumney <jasonr@gnu.org>
parents:
45196
diff
changeset
|
5029 } |
583ed47de245
(x_draw_bar_cursor): New argument KIND; callers changed.
Jason Rumney <jasonr@gnu.org>
parents:
45196
diff
changeset
|
5030 else |
583ed47de245
(x_draw_bar_cursor): New argument KIND; callers changed.
Jason Rumney <jasonr@gnu.org>
parents:
45196
diff
changeset
|
5031 { |
103023
30ed0fca4cdd
The following changes fix Bug#3005 for wide glyphs on each platform,
Jason Rumney <jasonr@gnu.org>
parents:
102688
diff
changeset
|
5032 int dummy_x, dummy_y, dummy_h; |
30ed0fca4cdd
The following changes fix Bug#3005 for wide glyphs on each platform,
Jason Rumney <jasonr@gnu.org>
parents:
102688
diff
changeset
|
5033 |
30ed0fca4cdd
The following changes fix Bug#3005 for wide glyphs on each platform,
Jason Rumney <jasonr@gnu.org>
parents:
102688
diff
changeset
|
5034 if (width < 0) |
30ed0fca4cdd
The following changes fix Bug#3005 for wide glyphs on each platform,
Jason Rumney <jasonr@gnu.org>
parents:
102688
diff
changeset
|
5035 width = row->height; |
30ed0fca4cdd
The following changes fix Bug#3005 for wide glyphs on each platform,
Jason Rumney <jasonr@gnu.org>
parents:
102688
diff
changeset
|
5036 |
30ed0fca4cdd
The following changes fix Bug#3005 for wide glyphs on each platform,
Jason Rumney <jasonr@gnu.org>
parents:
102688
diff
changeset
|
5037 width = min (row->height, width); |
30ed0fca4cdd
The following changes fix Bug#3005 for wide glyphs on each platform,
Jason Rumney <jasonr@gnu.org>
parents:
102688
diff
changeset
|
5038 |
30ed0fca4cdd
The following changes fix Bug#3005 for wide glyphs on each platform,
Jason Rumney <jasonr@gnu.org>
parents:
102688
diff
changeset
|
5039 get_phys_cursor_geometry (w, row, cursor_glyph, &dummy_x, |
30ed0fca4cdd
The following changes fix Bug#3005 for wide glyphs on each platform,
Jason Rumney <jasonr@gnu.org>
parents:
102688
diff
changeset
|
5040 &dummy_y, &dummy_h); |
45467
583ed47de245
(x_draw_bar_cursor): New argument KIND; callers changed.
Jason Rumney <jasonr@gnu.org>
parents:
45196
diff
changeset
|
5041 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
|
5042 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
|
5043 row->height - width), |
103023
30ed0fca4cdd
The following changes fix Bug#3005 for wide glyphs on each platform,
Jason Rumney <jasonr@gnu.org>
parents:
102688
diff
changeset
|
5044 w->phys_cursor_width, width); |
45467
583ed47de245
(x_draw_bar_cursor): New argument KIND; callers changed.
Jason Rumney <jasonr@gnu.org>
parents:
45196
diff
changeset
|
5045 } |
49393
85246e86a2cd
* w32term.c (x_draw_glyph_string_foreground)
Jason Rumney <jasonr@gnu.org>
parents:
49371
diff
changeset
|
5046 |
85246e86a2cd
* w32term.c (x_draw_glyph_string_foreground)
Jason Rumney <jasonr@gnu.org>
parents:
49371
diff
changeset
|
5047 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
|
5048 release_frame_dc (f, hdc); |
27402
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
5049 } |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
5050 } |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
5051 |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
5052 |
50231
c8ea5e4b2129
* w32term.c: Remove consolidated defines and code.
Kim F. Storm <storm@cua.dk>
parents:
50163
diff
changeset
|
5053 /* RIF: Define cursor CURSOR on frame F. */ |
27402
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
5054 |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
5055 static void |
50231
c8ea5e4b2129
* w32term.c: Remove consolidated defines and code.
Kim F. Storm <storm@cua.dk>
parents:
50163
diff
changeset
|
5056 w32_define_frame_cursor (f, cursor) |
c8ea5e4b2129
* w32term.c: Remove consolidated defines and code.
Kim F. Storm <storm@cua.dk>
parents:
50163
diff
changeset
|
5057 struct frame *f; |
c8ea5e4b2129
* w32term.c: Remove consolidated defines and code.
Kim F. Storm <storm@cua.dk>
parents:
50163
diff
changeset
|
5058 Cursor cursor; |
27402
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
5059 { |
50231
c8ea5e4b2129
* w32term.c: Remove consolidated defines and code.
Kim F. Storm <storm@cua.dk>
parents:
50163
diff
changeset
|
5060 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
|
5061 } |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
5062 |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
5063 |
50231
c8ea5e4b2129
* w32term.c: Remove consolidated defines and code.
Kim F. Storm <storm@cua.dk>
parents:
50163
diff
changeset
|
5064 /* RIF: Clear area on frame F. */ |
13434 | 5065 |
5066 static void | |
50231
c8ea5e4b2129
* w32term.c: Remove consolidated defines and code.
Kim F. Storm <storm@cua.dk>
parents:
50163
diff
changeset
|
5067 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
|
5068 struct frame *f; |
c8ea5e4b2129
* w32term.c: Remove consolidated defines and code.
Kim F. Storm <storm@cua.dk>
parents:
50163
diff
changeset
|
5069 int x, y, width, height; |
27402
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
5070 { |
50231
c8ea5e4b2129
* w32term.c: Remove consolidated defines and code.
Kim F. Storm <storm@cua.dk>
parents:
50163
diff
changeset
|
5071 HDC hdc; |
c8ea5e4b2129
* w32term.c: Remove consolidated defines and code.
Kim F. Storm <storm@cua.dk>
parents:
50163
diff
changeset
|
5072 |
c8ea5e4b2129
* w32term.c: Remove consolidated defines and code.
Kim F. Storm <storm@cua.dk>
parents:
50163
diff
changeset
|
5073 hdc = get_frame_dc (f); |
c8ea5e4b2129
* w32term.c: Remove consolidated defines and code.
Kim F. Storm <storm@cua.dk>
parents:
50163
diff
changeset
|
5074 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
|
5075 release_frame_dc (f, hdc); |
27402
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
5076 } |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
5077 |
50231
c8ea5e4b2129
* w32term.c: Remove consolidated defines and code.
Kim F. Storm <storm@cua.dk>
parents:
50163
diff
changeset
|
5078 /* 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
|
5079 |
c8ea5e4b2129
* w32term.c: Remove consolidated defines and code.
Kim F. Storm <storm@cua.dk>
parents:
50163
diff
changeset
|
5080 static void |
50243
3fb54e5a7201
(struct redisplay_interface): Add active_p argument to
Kim F. Storm <storm@cua.dk>
parents:
50231
diff
changeset
|
5081 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
|
5082 struct window *w; |
50231
c8ea5e4b2129
* w32term.c: Remove consolidated defines and code.
Kim F. Storm <storm@cua.dk>
parents:
50163
diff
changeset
|
5083 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
|
5084 int x, y; |
3fb54e5a7201
(struct redisplay_interface): Add active_p argument to
Kim F. Storm <storm@cua.dk>
parents:
50231
diff
changeset
|
5085 int cursor_type, cursor_width; |
3fb54e5a7201
(struct redisplay_interface): Add active_p argument to
Kim F. Storm <storm@cua.dk>
parents:
50231
diff
changeset
|
5086 int on_p, active_p; |
27402
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
5087 { |
50243
3fb54e5a7201
(struct redisplay_interface): Add active_p argument to
Kim F. Storm <storm@cua.dk>
parents:
50231
diff
changeset
|
5088 if (on_p) |
27402
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
5089 { |
42864
c1af6a7f3dd4
(w32_system_caret_width): Remove.
Jason Rumney <jasonr@gnu.org>
parents:
42844
diff
changeset
|
5090 /* 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
|
5091 cursor remains invisible. */ |
c1af6a7f3dd4
(w32_system_caret_width): Remove.
Jason Rumney <jasonr@gnu.org>
parents:
42844
diff
changeset
|
5092 if (w32_use_visible_system_caret) |
c1af6a7f3dd4
(w32_system_caret_width): Remove.
Jason Rumney <jasonr@gnu.org>
parents:
42844
diff
changeset
|
5093 { |
54171
f6909a416c3f
(w32_read_socket): Remove bufp_r and numcharsp args.
Kim F. Storm <storm@cua.dk>
parents:
54126
diff
changeset
|
5094 /* 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
|
5095 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
|
5096 overwritten before this function was called. */ |
42864
c1af6a7f3dd4
(w32_system_caret_width): Remove.
Jason Rumney <jasonr@gnu.org>
parents:
42844
diff
changeset
|
5097 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
|
5098 erase_phys_cursor (w); |
42864
c1af6a7f3dd4
(w32_system_caret_width): Remove.
Jason Rumney <jasonr@gnu.org>
parents:
42844
diff
changeset
|
5099 |
50243
3fb54e5a7201
(struct redisplay_interface): Add active_p argument to
Kim F. Storm <storm@cua.dk>
parents:
50231
diff
changeset
|
5100 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
|
5101 w->phys_cursor_width = -1; |
42864
c1af6a7f3dd4
(w32_system_caret_width): Remove.
Jason Rumney <jasonr@gnu.org>
parents:
42844
diff
changeset
|
5102 } |
c1af6a7f3dd4
(w32_system_caret_width): Remove.
Jason Rumney <jasonr@gnu.org>
parents:
42844
diff
changeset
|
5103 else |
43621
7755c5d1d8b4
(x_display_and_set_cursor): Blink box cursor using
Kim F. Storm <storm@cua.dk>
parents:
43478
diff
changeset
|
5104 { |
50243
3fb54e5a7201
(struct redisplay_interface): Add active_p argument to
Kim F. Storm <storm@cua.dk>
parents:
50231
diff
changeset
|
5105 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
|
5106 } |
42864
c1af6a7f3dd4
(w32_system_caret_width): Remove.
Jason Rumney <jasonr@gnu.org>
parents:
42844
diff
changeset
|
5107 |
27402
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
5108 w->phys_cursor_on_p = 1; |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
5109 |
40384
25e6d4bb5f7f
(w32_system_caret_hwnd, w32_system_caret_width)
Jason Rumney <jasonr@gnu.org>
parents:
40245
diff
changeset
|
5110 /* 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
|
5111 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
|
5112 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
|
5113 if (active_p) |
40384
25e6d4bb5f7f
(w32_system_caret_hwnd, w32_system_caret_width)
Jason Rumney <jasonr@gnu.org>
parents:
40245
diff
changeset
|
5114 { |
50280
1a5341fe785b
(w32_draw_window_cursor): Fix last change.
Kim F. Storm <storm@cua.dk>
parents:
50247
diff
changeset
|
5115 struct frame *f = XFRAME (WINDOW_FRAME (w)); |
42864
c1af6a7f3dd4
(w32_system_caret_width): Remove.
Jason Rumney <jasonr@gnu.org>
parents:
42844
diff
changeset
|
5116 HWND hwnd = FRAME_W32_WINDOW (f); |
c1af6a7f3dd4
(w32_system_caret_width): Remove.
Jason Rumney <jasonr@gnu.org>
parents:
42844
diff
changeset
|
5117 |
c1af6a7f3dd4
(w32_system_caret_width): Remove.
Jason Rumney <jasonr@gnu.org>
parents:
42844
diff
changeset
|
5118 w32_system_caret_x |
c1af6a7f3dd4
(w32_system_caret_width): Remove.
Jason Rumney <jasonr@gnu.org>
parents:
42844
diff
changeset
|
5119 = 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
|
5120 w32_system_caret_y |
c1af6a7f3dd4
(w32_system_caret_width): Remove.
Jason Rumney <jasonr@gnu.org>
parents:
42844
diff
changeset
|
5121 = (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
|
5122 + glyph_row->ascent - w->phys_cursor_ascent); |
c1af6a7f3dd4
(w32_system_caret_width): Remove.
Jason Rumney <jasonr@gnu.org>
parents:
42844
diff
changeset
|
5123 |
104030
91b945d54645
* w32fns.c (w32_wnd_proc) [WM_IME_STARTCOMPOSITION]: Position
Jason Rumney <jasonr@gnu.org>
parents:
103716
diff
changeset
|
5124 PostMessage (hwnd, WM_IME_STARTCOMPOSITION, 0, 0); |
91b945d54645
* w32fns.c (w32_wnd_proc) [WM_IME_STARTCOMPOSITION]: Position
Jason Rumney <jasonr@gnu.org>
parents:
103716
diff
changeset
|
5125 |
42864
c1af6a7f3dd4
(w32_system_caret_width): Remove.
Jason Rumney <jasonr@gnu.org>
parents:
42844
diff
changeset
|
5126 /* 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
|
5127 system caret. */ |
c1af6a7f3dd4
(w32_system_caret_width): Remove.
Jason Rumney <jasonr@gnu.org>
parents:
42844
diff
changeset
|
5128 if (w32_system_caret_hwnd |
c1af6a7f3dd4
(w32_system_caret_width): Remove.
Jason Rumney <jasonr@gnu.org>
parents:
42844
diff
changeset
|
5129 && (w32_system_caret_height != w->phys_cursor_height)) |
c1af6a7f3dd4
(w32_system_caret_width): Remove.
Jason Rumney <jasonr@gnu.org>
parents:
42844
diff
changeset
|
5130 PostMessage (hwnd, WM_EMACS_DESTROY_CARET, 0, 0); |
c1af6a7f3dd4
(w32_system_caret_width): Remove.
Jason Rumney <jasonr@gnu.org>
parents:
42844
diff
changeset
|
5131 |
c1af6a7f3dd4
(w32_system_caret_width): Remove.
Jason Rumney <jasonr@gnu.org>
parents:
42844
diff
changeset
|
5132 w32_system_caret_height = w->phys_cursor_height; |
c1af6a7f3dd4
(w32_system_caret_width): Remove.
Jason Rumney <jasonr@gnu.org>
parents:
42844
diff
changeset
|
5133 |
c1af6a7f3dd4
(w32_system_caret_width): Remove.
Jason Rumney <jasonr@gnu.org>
parents:
42844
diff
changeset
|
5134 /* Move the system caret. */ |
c1af6a7f3dd4
(w32_system_caret_width): Remove.
Jason Rumney <jasonr@gnu.org>
parents:
42844
diff
changeset
|
5135 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
|
5136 } |
25e6d4bb5f7f
(w32_system_caret_hwnd, w32_system_caret_width)
Jason Rumney <jasonr@gnu.org>
parents:
40245
diff
changeset
|
5137 |
53607
4262a032b45b
(x_update_window_end): Call draw_window_fringes.
Kim F. Storm <storm@cua.dk>
parents:
53469
diff
changeset
|
5138 if (glyph_row->exact_window_width_line_p |
107991
74557d25410e
Implement cursor on the left fringe for R2L lines.
Eli Zaretskii <eliz@gnu.org>
parents:
107737
diff
changeset
|
5139 && (glyph_row->reversed_p |
74557d25410e
Implement cursor on the left fringe for R2L lines.
Eli Zaretskii <eliz@gnu.org>
parents:
107737
diff
changeset
|
5140 ? (w->phys_cursor.hpos < 0) |
74557d25410e
Implement cursor on the left fringe for R2L lines.
Eli Zaretskii <eliz@gnu.org>
parents:
107737
diff
changeset
|
5141 : (w->phys_cursor.hpos >= glyph_row->used[TEXT_AREA]))) |
53607
4262a032b45b
(x_update_window_end): Call draw_window_fringes.
Kim F. Storm <storm@cua.dk>
parents:
53469
diff
changeset
|
5142 { |
4262a032b45b
(x_update_window_end): Call draw_window_fringes.
Kim F. Storm <storm@cua.dk>
parents:
53469
diff
changeset
|
5143 glyph_row->cursor_in_fringe_p = 1; |
107991
74557d25410e
Implement cursor on the left fringe for R2L lines.
Eli Zaretskii <eliz@gnu.org>
parents:
107737
diff
changeset
|
5144 draw_fringe_bitmap (w, glyph_row, glyph_row->reversed_p); |
53607
4262a032b45b
(x_update_window_end): Call draw_window_fringes.
Kim F. Storm <storm@cua.dk>
parents:
53469
diff
changeset
|
5145 return; |
4262a032b45b
(x_update_window_end): Call draw_window_fringes.
Kim F. Storm <storm@cua.dk>
parents:
53469
diff
changeset
|
5146 } |
4262a032b45b
(x_update_window_end): Call draw_window_fringes.
Kim F. Storm <storm@cua.dk>
parents:
53469
diff
changeset
|
5147 |
50243
3fb54e5a7201
(struct redisplay_interface): Add active_p argument to
Kim F. Storm <storm@cua.dk>
parents:
50231
diff
changeset
|
5148 switch (cursor_type) |
13434 | 5149 { |
27402
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
5150 case HOLLOW_BOX_CURSOR: |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
5151 x_draw_hollow_cursor (w, glyph_row); |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
5152 break; |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
5153 |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
5154 case FILLED_BOX_CURSOR: |
50231
c8ea5e4b2129
* w32term.c: Remove consolidated defines and code.
Kim F. Storm <storm@cua.dk>
parents:
50163
diff
changeset
|
5155 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
|
5156 break; |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
5157 |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
5158 case BAR_CURSOR: |
50243
3fb54e5a7201
(struct redisplay_interface): Add active_p argument to
Kim F. Storm <storm@cua.dk>
parents:
50231
diff
changeset
|
5159 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
|
5160 break; |
583ed47de245
(x_draw_bar_cursor): New argument KIND; callers changed.
Jason Rumney <jasonr@gnu.org>
parents:
45196
diff
changeset
|
5161 |
583ed47de245
(x_draw_bar_cursor): New argument KIND; callers changed.
Jason Rumney <jasonr@gnu.org>
parents:
45196
diff
changeset
|
5162 case HBAR_CURSOR: |
50243
3fb54e5a7201
(struct redisplay_interface): Add active_p argument to
Kim F. Storm <storm@cua.dk>
parents:
50231
diff
changeset
|
5163 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
|
5164 break; |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
5165 |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
5166 case NO_CURSOR: |
49393
85246e86a2cd
* w32term.c (x_draw_glyph_string_foreground)
Jason Rumney <jasonr@gnu.org>
parents:
49371
diff
changeset
|
5167 w->phys_cursor_width = 0; |
27402
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
5168 break; |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
5169 |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
5170 default: |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
5171 abort (); |
13434 | 5172 } |
27402
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
5173 } |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
5174 } |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
5175 |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
5176 |
13434 | 5177 |
25236
ea748fe6dee4
(x_bitmap_icon): New function.
Geoff Voelker <voelker@cs.washington.edu>
parents:
24863
diff
changeset
|
5178 /* Icons. */ |
ea748fe6dee4
(x_bitmap_icon): New function.
Geoff Voelker <voelker@cs.washington.edu>
parents:
24863
diff
changeset
|
5179 |
ea748fe6dee4
(x_bitmap_icon): New function.
Geoff Voelker <voelker@cs.washington.edu>
parents:
24863
diff
changeset
|
5180 int |
ea748fe6dee4
(x_bitmap_icon): New function.
Geoff Voelker <voelker@cs.washington.edu>
parents:
24863
diff
changeset
|
5181 x_bitmap_icon (f, icon) |
ea748fe6dee4
(x_bitmap_icon): New function.
Geoff Voelker <voelker@cs.washington.edu>
parents:
24863
diff
changeset
|
5182 struct frame *f; |
ea748fe6dee4
(x_bitmap_icon): New function.
Geoff Voelker <voelker@cs.washington.edu>
parents:
24863
diff
changeset
|
5183 Lisp_Object icon; |
ea748fe6dee4
(x_bitmap_icon): New function.
Geoff Voelker <voelker@cs.washington.edu>
parents:
24863
diff
changeset
|
5184 { |
65444
14dd537e7ba9
2005-09-11 Chris Prince <cprince@gmail.com> (tiny change)
Jason Rumney <jasonr@gnu.org>
parents:
64770
diff
changeset
|
5185 HANDLE main_icon; |
14dd537e7ba9
2005-09-11 Chris Prince <cprince@gmail.com> (tiny change)
Jason Rumney <jasonr@gnu.org>
parents:
64770
diff
changeset
|
5186 HANDLE small_icon = NULL; |
25236
ea748fe6dee4
(x_bitmap_icon): New function.
Geoff Voelker <voelker@cs.washington.edu>
parents:
24863
diff
changeset
|
5187 |
ea748fe6dee4
(x_bitmap_icon): New function.
Geoff Voelker <voelker@cs.washington.edu>
parents:
24863
diff
changeset
|
5188 if (FRAME_W32_WINDOW (f) == 0) |
ea748fe6dee4
(x_bitmap_icon): New function.
Geoff Voelker <voelker@cs.washington.edu>
parents:
24863
diff
changeset
|
5189 return 1; |
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 if (NILP (icon)) |
65444
14dd537e7ba9
2005-09-11 Chris Prince <cprince@gmail.com> (tiny change)
Jason Rumney <jasonr@gnu.org>
parents:
64770
diff
changeset
|
5192 main_icon = LoadIcon (hinst, EMACS_CLASS); |
25236
ea748fe6dee4
(x_bitmap_icon): New function.
Geoff Voelker <voelker@cs.washington.edu>
parents:
24863
diff
changeset
|
5193 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
|
5194 { |
14dd537e7ba9
2005-09-11 Chris Prince <cprince@gmail.com> (tiny change)
Jason Rumney <jasonr@gnu.org>
parents:
64770
diff
changeset
|
5195 /* 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
|
5196 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
|
5197 LR_DEFAULTSIZE | LR_LOADFROMFILE); |
14dd537e7ba9
2005-09-11 Chris Prince <cprince@gmail.com> (tiny change)
Jason Rumney <jasonr@gnu.org>
parents:
64770
diff
changeset
|
5198 /* 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
|
5199 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
|
5200 GetSystemMetrics (SM_CXSMICON), |
14dd537e7ba9
2005-09-11 Chris Prince <cprince@gmail.com> (tiny change)
Jason Rumney <jasonr@gnu.org>
parents:
64770
diff
changeset
|
5201 GetSystemMetrics (SM_CYSMICON), |
14dd537e7ba9
2005-09-11 Chris Prince <cprince@gmail.com> (tiny change)
Jason Rumney <jasonr@gnu.org>
parents:
64770
diff
changeset
|
5202 LR_LOADFROMFILE); |
14dd537e7ba9
2005-09-11 Chris Prince <cprince@gmail.com> (tiny change)
Jason Rumney <jasonr@gnu.org>
parents:
64770
diff
changeset
|
5203 } |
25236
ea748fe6dee4
(x_bitmap_icon): New function.
Geoff Voelker <voelker@cs.washington.edu>
parents:
24863
diff
changeset
|
5204 else if (SYMBOLP (icon)) |
ea748fe6dee4
(x_bitmap_icon): New function.
Geoff Voelker <voelker@cs.washington.edu>
parents:
24863
diff
changeset
|
5205 { |
ea748fe6dee4
(x_bitmap_icon): New function.
Geoff Voelker <voelker@cs.washington.edu>
parents:
24863
diff
changeset
|
5206 LPCTSTR name; |
ea748fe6dee4
(x_bitmap_icon): New function.
Geoff Voelker <voelker@cs.washington.edu>
parents:
24863
diff
changeset
|
5207 |
ea748fe6dee4
(x_bitmap_icon): New function.
Geoff Voelker <voelker@cs.washington.edu>
parents:
24863
diff
changeset
|
5208 if (EQ (icon, intern ("application"))) |
ea748fe6dee4
(x_bitmap_icon): New function.
Geoff Voelker <voelker@cs.washington.edu>
parents:
24863
diff
changeset
|
5209 name = (LPCTSTR) IDI_APPLICATION; |
ea748fe6dee4
(x_bitmap_icon): New function.
Geoff Voelker <voelker@cs.washington.edu>
parents:
24863
diff
changeset
|
5210 else if (EQ (icon, intern ("hand"))) |
ea748fe6dee4
(x_bitmap_icon): New function.
Geoff Voelker <voelker@cs.washington.edu>
parents:
24863
diff
changeset
|
5211 name = (LPCTSTR) IDI_HAND; |
ea748fe6dee4
(x_bitmap_icon): New function.
Geoff Voelker <voelker@cs.washington.edu>
parents:
24863
diff
changeset
|
5212 else if (EQ (icon, intern ("question"))) |
ea748fe6dee4
(x_bitmap_icon): New function.
Geoff Voelker <voelker@cs.washington.edu>
parents:
24863
diff
changeset
|
5213 name = (LPCTSTR) IDI_QUESTION; |
ea748fe6dee4
(x_bitmap_icon): New function.
Geoff Voelker <voelker@cs.washington.edu>
parents:
24863
diff
changeset
|
5214 else if (EQ (icon, intern ("exclamation"))) |
ea748fe6dee4
(x_bitmap_icon): New function.
Geoff Voelker <voelker@cs.washington.edu>
parents:
24863
diff
changeset
|
5215 name = (LPCTSTR) IDI_EXCLAMATION; |
ea748fe6dee4
(x_bitmap_icon): New function.
Geoff Voelker <voelker@cs.washington.edu>
parents:
24863
diff
changeset
|
5216 else if (EQ (icon, intern ("asterisk"))) |
ea748fe6dee4
(x_bitmap_icon): New function.
Geoff Voelker <voelker@cs.washington.edu>
parents:
24863
diff
changeset
|
5217 name = (LPCTSTR) IDI_ASTERISK; |
ea748fe6dee4
(x_bitmap_icon): New function.
Geoff Voelker <voelker@cs.washington.edu>
parents:
24863
diff
changeset
|
5218 else if (EQ (icon, intern ("winlogo"))) |
ea748fe6dee4
(x_bitmap_icon): New function.
Geoff Voelker <voelker@cs.washington.edu>
parents:
24863
diff
changeset
|
5219 name = (LPCTSTR) IDI_WINLOGO; |
ea748fe6dee4
(x_bitmap_icon): New function.
Geoff Voelker <voelker@cs.washington.edu>
parents:
24863
diff
changeset
|
5220 else |
ea748fe6dee4
(x_bitmap_icon): New function.
Geoff Voelker <voelker@cs.washington.edu>
parents:
24863
diff
changeset
|
5221 return 1; |
ea748fe6dee4
(x_bitmap_icon): New function.
Geoff Voelker <voelker@cs.washington.edu>
parents:
24863
diff
changeset
|
5222 |
65444
14dd537e7ba9
2005-09-11 Chris Prince <cprince@gmail.com> (tiny change)
Jason Rumney <jasonr@gnu.org>
parents:
64770
diff
changeset
|
5223 main_icon = LoadIcon (NULL, name); |
25236
ea748fe6dee4
(x_bitmap_icon): New function.
Geoff Voelker <voelker@cs.washington.edu>
parents:
24863
diff
changeset
|
5224 } |
ea748fe6dee4
(x_bitmap_icon): New function.
Geoff Voelker <voelker@cs.washington.edu>
parents:
24863
diff
changeset
|
5225 else |
ea748fe6dee4
(x_bitmap_icon): New function.
Geoff Voelker <voelker@cs.washington.edu>
parents:
24863
diff
changeset
|
5226 return 1; |
ea748fe6dee4
(x_bitmap_icon): New function.
Geoff Voelker <voelker@cs.washington.edu>
parents:
24863
diff
changeset
|
5227 |
65444
14dd537e7ba9
2005-09-11 Chris Prince <cprince@gmail.com> (tiny change)
Jason Rumney <jasonr@gnu.org>
parents:
64770
diff
changeset
|
5228 if (main_icon == NULL) |
25236
ea748fe6dee4
(x_bitmap_icon): New function.
Geoff Voelker <voelker@cs.washington.edu>
parents:
24863
diff
changeset
|
5229 return 1; |
ea748fe6dee4
(x_bitmap_icon): New function.
Geoff Voelker <voelker@cs.washington.edu>
parents:
24863
diff
changeset
|
5230 |
27402
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
5231 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
|
5232 (LPARAM) main_icon); |
14dd537e7ba9
2005-09-11 Chris Prince <cprince@gmail.com> (tiny change)
Jason Rumney <jasonr@gnu.org>
parents:
64770
diff
changeset
|
5233 |
14dd537e7ba9
2005-09-11 Chris Prince <cprince@gmail.com> (tiny change)
Jason Rumney <jasonr@gnu.org>
parents:
64770
diff
changeset
|
5234 /* 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
|
5235 if (small_icon) |
14dd537e7ba9
2005-09-11 Chris Prince <cprince@gmail.com> (tiny change)
Jason Rumney <jasonr@gnu.org>
parents:
64770
diff
changeset
|
5236 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
|
5237 (LPARAM) small_icon); |
25236
ea748fe6dee4
(x_bitmap_icon): New function.
Geoff Voelker <voelker@cs.washington.edu>
parents:
24863
diff
changeset
|
5238 |
ea748fe6dee4
(x_bitmap_icon): New function.
Geoff Voelker <voelker@cs.washington.edu>
parents:
24863
diff
changeset
|
5239 return 0; |
ea748fe6dee4
(x_bitmap_icon): New function.
Geoff Voelker <voelker@cs.washington.edu>
parents:
24863
diff
changeset
|
5240 } |
ea748fe6dee4
(x_bitmap_icon): New function.
Geoff Voelker <voelker@cs.washington.edu>
parents:
24863
diff
changeset
|
5241 |
ea748fe6dee4
(x_bitmap_icon): New function.
Geoff Voelker <voelker@cs.washington.edu>
parents:
24863
diff
changeset
|
5242 |
35384
e50a7f9ce65e
(x_produce_stretch_glyph): Only use Qspace when GLYPH_DEBUG is defined.
Jason Rumney <jasonr@gnu.org>
parents:
35287
diff
changeset
|
5243 /************************************************************************ |
e50a7f9ce65e
(x_produce_stretch_glyph): Only use Qspace when GLYPH_DEBUG is defined.
Jason Rumney <jasonr@gnu.org>
parents:
35287
diff
changeset
|
5244 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
|
5245 ************************************************************************/ |
e50a7f9ce65e
(x_produce_stretch_glyph): Only use Qspace when GLYPH_DEBUG is defined.
Jason Rumney <jasonr@gnu.org>
parents:
35287
diff
changeset
|
5246 |
e50a7f9ce65e
(x_produce_stretch_glyph): Only use Qspace when GLYPH_DEBUG is defined.
Jason Rumney <jasonr@gnu.org>
parents:
35287
diff
changeset
|
5247 /* 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
|
5248 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
|
5249 |
e50a7f9ce65e
(x_produce_stretch_glyph): Only use Qspace when GLYPH_DEBUG is defined.
Jason Rumney <jasonr@gnu.org>
parents:
35287
diff
changeset
|
5250 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
|
5251 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
|
5252 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
|
5253 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
|
5254 x_fully_uncatch_errors () |
259ab035a718
Add x_fully_uncatch_errors and x_catching_errors to
Eli Zaretskii <eliz@gnu.org>
parents:
68651
diff
changeset
|
5255 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
|
5256 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
|
5257 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
|
5258 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
|
5259 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
|
5260 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
|
5261 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
|
5262 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
|
5263 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
|
5264 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
|
5265 |
e50a7f9ce65e
(x_produce_stretch_glyph): Only use Qspace when GLYPH_DEBUG is defined.
Jason Rumney <jasonr@gnu.org>
parents:
35287
diff
changeset
|
5266 */ |
e50a7f9ce65e
(x_produce_stretch_glyph): Only use Qspace when GLYPH_DEBUG is defined.
Jason Rumney <jasonr@gnu.org>
parents:
35287
diff
changeset
|
5267 |
e50a7f9ce65e
(x_produce_stretch_glyph): Only use Qspace when GLYPH_DEBUG is defined.
Jason Rumney <jasonr@gnu.org>
parents:
35287
diff
changeset
|
5268 |
13434 | 5269 /* Changing the font of the frame. */ |
5270 | |
90834 | 5271 Lisp_Object |
94912
5b153bea483d
: Throughout the file, delete all USE_FONT_BACKEND
Kenichi Handa <handa@m17n.org>
parents:
93913
diff
changeset
|
5272 x_new_font (f, font_object, fontset) |
90834 | 5273 struct frame *f; |
94912
5b153bea483d
: Throughout the file, delete all USE_FONT_BACKEND
Kenichi Handa <handa@m17n.org>
parents:
93913
diff
changeset
|
5274 Lisp_Object font_object; |
90834 | 5275 int fontset; |
94912
5b153bea483d
: Throughout the file, delete all USE_FONT_BACKEND
Kenichi Handa <handa@m17n.org>
parents:
93913
diff
changeset
|
5276 { |
5b153bea483d
: Throughout the file, delete all USE_FONT_BACKEND
Kenichi Handa <handa@m17n.org>
parents:
93913
diff
changeset
|
5277 struct font *font = XFONT_OBJECT (font_object); |
5b153bea483d
: Throughout the file, delete all USE_FONT_BACKEND
Kenichi Handa <handa@m17n.org>
parents:
93913
diff
changeset
|
5278 |
5b153bea483d
: Throughout the file, delete all USE_FONT_BACKEND
Kenichi Handa <handa@m17n.org>
parents:
93913
diff
changeset
|
5279 if (fontset < 0) |
5b153bea483d
: Throughout the file, delete all USE_FONT_BACKEND
Kenichi Handa <handa@m17n.org>
parents:
93913
diff
changeset
|
5280 fontset = fontset_from_font (font_object); |
5b153bea483d
: Throughout the file, delete all USE_FONT_BACKEND
Kenichi Handa <handa@m17n.org>
parents:
93913
diff
changeset
|
5281 FRAME_FONTSET (f) = fontset; |
5b153bea483d
: Throughout the file, delete all USE_FONT_BACKEND
Kenichi Handa <handa@m17n.org>
parents:
93913
diff
changeset
|
5282 if (FRAME_FONT (f) == font) |
90834 | 5283 /* This font is already set in frame F. There's nothing more to |
5284 do. */ | |
100805
20169cf90421
(x_new_font): Return font object, not fontset. (Bug#119)
Jason Rumney <jasonr@gnu.org>
parents:
100666
diff
changeset
|
5285 return font_object; |
90834 | 5286 |
94912
5b153bea483d
: Throughout the file, delete all USE_FONT_BACKEND
Kenichi Handa <handa@m17n.org>
parents:
93913
diff
changeset
|
5287 FRAME_FONT (f) = font; |
5b153bea483d
: Throughout the file, delete all USE_FONT_BACKEND
Kenichi Handa <handa@m17n.org>
parents:
93913
diff
changeset
|
5288 FRAME_BASELINE_OFFSET (f) = font->baseline_offset; |
5b153bea483d
: Throughout the file, delete all USE_FONT_BACKEND
Kenichi Handa <handa@m17n.org>
parents:
93913
diff
changeset
|
5289 FRAME_COLUMN_WIDTH (f) = font->average_width; |
5b153bea483d
: Throughout the file, delete all USE_FONT_BACKEND
Kenichi Handa <handa@m17n.org>
parents:
93913
diff
changeset
|
5290 FRAME_SPACE_WIDTH (f) = font->space_width; |
5b153bea483d
: Throughout the file, delete all USE_FONT_BACKEND
Kenichi Handa <handa@m17n.org>
parents:
93913
diff
changeset
|
5291 FRAME_LINE_HEIGHT (f) = font->height; |
90834 | 5292 |
5293 compute_fringe_widths (f, 1); | |
5294 | |
5295 /* Compute the scroll bar width in character columns. */ | |
5296 if (FRAME_CONFIG_SCROLL_BAR_WIDTH (f) > 0) | |
5297 { | |
5298 int wid = FRAME_COLUMN_WIDTH (f); | |
5299 FRAME_CONFIG_SCROLL_BAR_COLS (f) | |
5300 = (FRAME_CONFIG_SCROLL_BAR_WIDTH (f) + wid - 1) / wid; | |
5301 } | |
5302 else | |
5303 { | |
5304 int wid = FRAME_COLUMN_WIDTH (f); | |
5305 FRAME_CONFIG_SCROLL_BAR_COLS (f) = (14 + wid - 1) / wid; | |
5306 } | |
5307 | |
5308 /* Now make the frame display the given font. */ | |
5309 if (FRAME_X_WINDOW (f) != 0) | |
5310 { | |
5311 /* Don't change the size of a tip frame; there's no point in | |
5312 doing it because it's done in Fx_show_tip, and it leads to | |
5313 problems because the tip frame has no widget. */ | |
5314 if (NILP (tip_frame) || XFRAME (tip_frame) != f) | |
5315 x_set_window_size (f, 0, FRAME_COLS (f), FRAME_LINES (f)); | |
5316 } | |
5317 | |
100805
20169cf90421
(x_new_font): Return font object, not fontset. (Bug#119)
Jason Rumney <jasonr@gnu.org>
parents:
100666
diff
changeset
|
5318 /* X version sets font of input methods here also. */ |
20169cf90421
(x_new_font): Return font object, not fontset. (Bug#119)
Jason Rumney <jasonr@gnu.org>
parents:
100666
diff
changeset
|
5319 |
20169cf90421
(x_new_font): Return font object, not fontset. (Bug#119)
Jason Rumney <jasonr@gnu.org>
parents:
100666
diff
changeset
|
5320 return font_object; |
90834 | 5321 } |
5322 | |
35384
e50a7f9ce65e
(x_produce_stretch_glyph): Only use Qspace when GLYPH_DEBUG is defined.
Jason Rumney <jasonr@gnu.org>
parents:
35287
diff
changeset
|
5323 |
e50a7f9ce65e
(x_produce_stretch_glyph): Only use Qspace when GLYPH_DEBUG is defined.
Jason Rumney <jasonr@gnu.org>
parents:
35287
diff
changeset
|
5324 /*********************************************************************** |
e50a7f9ce65e
(x_produce_stretch_glyph): Only use Qspace when GLYPH_DEBUG is defined.
Jason Rumney <jasonr@gnu.org>
parents:
35287
diff
changeset
|
5325 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
|
5326 ***********************************************************************/ |
e50a7f9ce65e
(x_produce_stretch_glyph): Only use Qspace when GLYPH_DEBUG is defined.
Jason Rumney <jasonr@gnu.org>
parents:
35287
diff
changeset
|
5327 /* 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
|
5328 |
e50a7f9ce65e
(x_produce_stretch_glyph): Only use Qspace when GLYPH_DEBUG is defined.
Jason Rumney <jasonr@gnu.org>
parents:
35287
diff
changeset
|
5329 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
|
5330 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
|
5331 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
|
5332 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
|
5333 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
|
5334 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
|
5335 |
e50a7f9ce65e
(x_produce_stretch_glyph): Only use Qspace when GLYPH_DEBUG is defined.
Jason Rumney <jasonr@gnu.org>
parents:
35287
diff
changeset
|
5336 */ |
27402
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
5337 |
23507
8a448630a9b5
Include fontset.h. Define codepage macros.
Geoff Voelker <voelker@cs.washington.edu>
parents:
22059
diff
changeset
|
5338 |
19713
043ccce224fb
(SIF_*): Win95 macros defined for NT.
Geoff Voelker <voelker@cs.washington.edu>
parents:
18877
diff
changeset
|
5339 /* Calculate the absolute position in frame F |
043ccce224fb
(SIF_*): Win95 macros defined for NT.
Geoff Voelker <voelker@cs.washington.edu>
parents:
18877
diff
changeset
|
5340 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
|
5341 |
29321
8e2be36bb1c6
Format and doc changes to bring closer to xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
28369
diff
changeset
|
5342 void |
13434 | 5343 x_calc_absolute_position (f) |
5344 struct frame *f; | |
5345 { | |
51204
082b768216a0
Make (several) trivial substitutions for renamed and
Kim F. Storm <storm@cua.dk>
parents:
50441
diff
changeset
|
5346 int flags = f->size_hint_flags; |
13434 | 5347 |
72008
99cff808ae1e
(x_calc_absolute_position): Fix frame positioning
Kim F. Storm <storm@cua.dk>
parents:
71546
diff
changeset
|
5348 /* 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
|
5349 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
|
5350 pixels) drawn by Windows. */ |
99cff808ae1e
(x_calc_absolute_position): Fix frame positioning
Kim F. Storm <storm@cua.dk>
parents:
71546
diff
changeset
|
5351 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
|
5352 |
99cff808ae1e
(x_calc_absolute_position): Fix frame positioning
Kim F. Storm <storm@cua.dk>
parents:
71546
diff
changeset
|
5353 /* 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
|
5354 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
|
5355 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
|
5356 entire window. */ |
99cff808ae1e
(x_calc_absolute_position): Fix frame positioning
Kim F. Storm <storm@cua.dk>
parents:
71546
diff
changeset
|
5357 WINDOWPLACEMENT wp = { 0 }; |
99cff808ae1e
(x_calc_absolute_position): Fix frame positioning
Kim F. Storm <storm@cua.dk>
parents:
71546
diff
changeset
|
5358 RECT client_rect = { 0 }; |
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 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
|
5361 && 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
|
5362 { |
99cff808ae1e
(x_calc_absolute_position): Fix frame positioning
Kim F. Storm <storm@cua.dk>
parents:
71546
diff
changeset
|
5363 left_right_borders_width = |
99cff808ae1e
(x_calc_absolute_position): Fix frame positioning
Kim F. Storm <storm@cua.dk>
parents:
71546
diff
changeset
|
5364 (wp.rcNormalPosition.right - wp.rcNormalPosition.left) - |
99cff808ae1e
(x_calc_absolute_position): Fix frame positioning
Kim F. Storm <storm@cua.dk>
parents:
71546
diff
changeset
|
5365 (client_rect.right - client_rect.left); |
99cff808ae1e
(x_calc_absolute_position): Fix frame positioning
Kim F. Storm <storm@cua.dk>
parents:
71546
diff
changeset
|
5366 |
99cff808ae1e
(x_calc_absolute_position): Fix frame positioning
Kim F. Storm <storm@cua.dk>
parents:
71546
diff
changeset
|
5367 top_bottom_borders_height = |
99cff808ae1e
(x_calc_absolute_position): Fix frame positioning
Kim F. Storm <storm@cua.dk>
parents:
71546
diff
changeset
|
5368 (wp.rcNormalPosition.bottom - wp.rcNormalPosition.top) - |
99cff808ae1e
(x_calc_absolute_position): Fix frame positioning
Kim F. Storm <storm@cua.dk>
parents:
71546
diff
changeset
|
5369 (client_rect.bottom - client_rect.top); |
99cff808ae1e
(x_calc_absolute_position): Fix frame positioning
Kim F. Storm <storm@cua.dk>
parents:
71546
diff
changeset
|
5370 } |
99cff808ae1e
(x_calc_absolute_position): Fix frame positioning
Kim F. Storm <storm@cua.dk>
parents:
71546
diff
changeset
|
5371 else |
99cff808ae1e
(x_calc_absolute_position): Fix frame positioning
Kim F. Storm <storm@cua.dk>
parents:
71546
diff
changeset
|
5372 { |
99cff808ae1e
(x_calc_absolute_position): Fix frame positioning
Kim F. Storm <storm@cua.dk>
parents:
71546
diff
changeset
|
5373 /* Use sensible default values. */ |
99cff808ae1e
(x_calc_absolute_position): Fix frame positioning
Kim F. Storm <storm@cua.dk>
parents:
71546
diff
changeset
|
5374 left_right_borders_width = 8; |
99cff808ae1e
(x_calc_absolute_position): Fix frame positioning
Kim F. Storm <storm@cua.dk>
parents:
71546
diff
changeset
|
5375 top_bottom_borders_height = 32; |
99cff808ae1e
(x_calc_absolute_position): Fix frame positioning
Kim F. Storm <storm@cua.dk>
parents:
71546
diff
changeset
|
5376 } |
99cff808ae1e
(x_calc_absolute_position): Fix frame positioning
Kim F. Storm <storm@cua.dk>
parents:
71546
diff
changeset
|
5377 |
99cff808ae1e
(x_calc_absolute_position): Fix frame positioning
Kim F. Storm <storm@cua.dk>
parents:
71546
diff
changeset
|
5378 /* Treat negative positions as relative to the rightmost bottommost |
13434 | 5379 position that fits on the screen. */ |
5380 if (flags & XNegative) | |
98227
166909ca8be2
(x_display_pixel_height, x_display_pixel_width): New functions.
Chong Yidong <cyd@stupidchicken.com>
parents:
97831
diff
changeset
|
5381 f->left_pos = (x_display_pixel_width (FRAME_W32_DISPLAY_INFO (f)) |
51204
082b768216a0
Make (several) trivial substitutions for renamed and
Kim F. Storm <storm@cua.dk>
parents:
50441
diff
changeset
|
5382 - FRAME_PIXEL_WIDTH (f) |
72008
99cff808ae1e
(x_calc_absolute_position): Fix frame positioning
Kim F. Storm <storm@cua.dk>
parents:
71546
diff
changeset
|
5383 + f->left_pos |
99cff808ae1e
(x_calc_absolute_position): Fix frame positioning
Kim F. Storm <storm@cua.dk>
parents:
71546
diff
changeset
|
5384 - (left_right_borders_width - 1)); |
30988
a69a2ac4345b
(help_echo_window): New variable.
Jason Rumney <jasonr@gnu.org>
parents:
30730
diff
changeset
|
5385 |
13434 | 5386 if (flags & YNegative) |
98227
166909ca8be2
(x_display_pixel_height, x_display_pixel_width): New functions.
Chong Yidong <cyd@stupidchicken.com>
parents:
97831
diff
changeset
|
5387 f->top_pos = (x_display_pixel_height (FRAME_W32_DISPLAY_INFO (f)) |
51204
082b768216a0
Make (several) trivial substitutions for renamed and
Kim F. Storm <storm@cua.dk>
parents:
50441
diff
changeset
|
5388 - FRAME_PIXEL_HEIGHT (f) |
72008
99cff808ae1e
(x_calc_absolute_position): Fix frame positioning
Kim F. Storm <storm@cua.dk>
parents:
71546
diff
changeset
|
5389 + f->top_pos |
99cff808ae1e
(x_calc_absolute_position): Fix frame positioning
Kim F. Storm <storm@cua.dk>
parents:
71546
diff
changeset
|
5390 - (top_bottom_borders_height - 1)); |
99cff808ae1e
(x_calc_absolute_position): Fix frame positioning
Kim F. Storm <storm@cua.dk>
parents:
71546
diff
changeset
|
5391 |
99cff808ae1e
(x_calc_absolute_position): Fix frame positioning
Kim F. Storm <storm@cua.dk>
parents:
71546
diff
changeset
|
5392 /* 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
|
5393 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
|
5394 f->size_hint_flags &= ~ (XNegative | YNegative); |
13434 | 5395 } |
5396 | |
5397 /* CHANGE_GRAVITY is 1 when calling from Fset_frame_position, | |
5398 to really change the position, and 0 when calling from | |
5399 x_make_frame_visible (in that case, XOFF and YOFF are the current | |
5400 position values). It is -1 when calling from x_set_frame_parameters, | |
5401 which means, do adjust for borders but don't change the gravity. */ | |
5402 | |
29321
8e2be36bb1c6
Format and doc changes to bring closer to xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
28369
diff
changeset
|
5403 void |
13434 | 5404 x_set_offset (f, xoff, yoff, change_gravity) |
5405 struct frame *f; | |
5406 register int xoff, yoff; | |
5407 int change_gravity; | |
5408 { | |
5409 int modified_top, modified_left; | |
5410 | |
5411 if (change_gravity > 0) | |
5412 { | |
51204
082b768216a0
Make (several) trivial substitutions for renamed and
Kim F. Storm <storm@cua.dk>
parents:
50441
diff
changeset
|
5413 f->top_pos = yoff; |
082b768216a0
Make (several) trivial substitutions for renamed and
Kim F. Storm <storm@cua.dk>
parents:
50441
diff
changeset
|
5414 f->left_pos = xoff; |
082b768216a0
Make (several) trivial substitutions for renamed and
Kim F. Storm <storm@cua.dk>
parents:
50441
diff
changeset
|
5415 f->size_hint_flags &= ~ (XNegative | YNegative); |
13434 | 5416 if (xoff < 0) |
51204
082b768216a0
Make (several) trivial substitutions for renamed and
Kim F. Storm <storm@cua.dk>
parents:
50441
diff
changeset
|
5417 f->size_hint_flags |= XNegative; |
13434 | 5418 if (yoff < 0) |
51204
082b768216a0
Make (several) trivial substitutions for renamed and
Kim F. Storm <storm@cua.dk>
parents:
50441
diff
changeset
|
5419 f->size_hint_flags |= YNegative; |
082b768216a0
Make (several) trivial substitutions for renamed and
Kim F. Storm <storm@cua.dk>
parents:
50441
diff
changeset
|
5420 f->win_gravity = NorthWestGravity; |
13434 | 5421 } |
5422 x_calc_absolute_position (f); | |
5423 | |
5424 BLOCK_INPUT; | |
5425 x_wm_set_size_hint (f, (long) 0, 0); | |
5426 | |
51204
082b768216a0
Make (several) trivial substitutions for renamed and
Kim F. Storm <storm@cua.dk>
parents:
50441
diff
changeset
|
5427 modified_left = f->left_pos; |
082b768216a0
Make (several) trivial substitutions for renamed and
Kim F. Storm <storm@cua.dk>
parents:
50441
diff
changeset
|
5428 modified_top = f->top_pos; |
13434 | 5429 |
16588
481b7874a1e9
Change identifiers of the form win32* to w32*.
Geoff Voelker <voelker@cs.washington.edu>
parents:
16326
diff
changeset
|
5430 my_set_window_pos (FRAME_W32_WINDOW (f), |
15151
ed6ddfc0d954
(Vwindow_system): Declared.
Geoff Voelker <voelker@cs.washington.edu>
parents:
15035
diff
changeset
|
5431 NULL, |
ed6ddfc0d954
(Vwindow_system): Declared.
Geoff Voelker <voelker@cs.washington.edu>
parents:
15035
diff
changeset
|
5432 modified_left, modified_top, |
23507
8a448630a9b5
Include fontset.h. Define codepage macros.
Geoff Voelker <voelker@cs.washington.edu>
parents:
22059
diff
changeset
|
5433 0, 0, |
19713
043ccce224fb
(SIF_*): Win95 macros defined for NT.
Geoff Voelker <voelker@cs.washington.edu>
parents:
18877
diff
changeset
|
5434 SWP_NOZORDER | SWP_NOSIZE | SWP_NOACTIVATE); |
13434 | 5435 UNBLOCK_INPUT; |
5436 } | |
5437 | |
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 /* 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
|
5440 If so needed, resize the frame. */ |
9b50c09298f6
* w32term.c (x_autoselect_window_p): New variable.
Jason Rumney <jasonr@gnu.org>
parents:
43373
diff
changeset
|
5441 static void |
9b50c09298f6
* w32term.c (x_autoselect_window_p): New variable.
Jason Rumney <jasonr@gnu.org>
parents:
43373
diff
changeset
|
5442 x_check_fullscreen (f) |
9b50c09298f6
* w32term.c (x_autoselect_window_p): New variable.
Jason Rumney <jasonr@gnu.org>
parents:
43373
diff
changeset
|
5443 struct frame *f; |
9b50c09298f6
* w32term.c (x_autoselect_window_p): New variable.
Jason Rumney <jasonr@gnu.org>
parents:
43373
diff
changeset
|
5444 { |
51204
082b768216a0
Make (several) trivial substitutions for renamed and
Kim F. Storm <storm@cua.dk>
parents:
50441
diff
changeset
|
5445 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
|
5446 { |
9b50c09298f6
* w32term.c (x_autoselect_window_p): New variable.
Jason Rumney <jasonr@gnu.org>
parents:
43373
diff
changeset
|
5447 int width, height, ign; |
48218
01e253345507
(w32_draw_fringe_bitmap): Remove unused local variable window.
Juanma Barranquero <lekktu@gmail.com>
parents:
48025
diff
changeset
|
5448 |
51204
082b768216a0
Make (several) trivial substitutions for renamed and
Kim F. Storm <storm@cua.dk>
parents:
50441
diff
changeset
|
5449 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
|
5450 |
9b50c09298f6
* w32term.c (x_autoselect_window_p): New variable.
Jason Rumney <jasonr@gnu.org>
parents:
43373
diff
changeset
|
5451 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
|
5452 |
43396
9b50c09298f6
* w32term.c (x_autoselect_window_p): New variable.
Jason Rumney <jasonr@gnu.org>
parents:
43373
diff
changeset
|
5453 /* 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
|
5454 when setting WM manager hints. */ |
51204
082b768216a0
Make (several) trivial substitutions for renamed and
Kim F. Storm <storm@cua.dk>
parents:
50441
diff
changeset
|
5455 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
|
5456 { |
9b50c09298f6
* w32term.c (x_autoselect_window_p): New variable.
Jason Rumney <jasonr@gnu.org>
parents:
43373
diff
changeset
|
5457 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
|
5458 SET_FRAME_GARBAGED (f); |
9b50c09298f6
* w32term.c (x_autoselect_window_p): New variable.
Jason Rumney <jasonr@gnu.org>
parents:
43373
diff
changeset
|
5459 cancel_mouse_face (f); |
9b50c09298f6
* w32term.c (x_autoselect_window_p): New variable.
Jason Rumney <jasonr@gnu.org>
parents:
43373
diff
changeset
|
5460 |
9b50c09298f6
* w32term.c (x_autoselect_window_p): New variable.
Jason Rumney <jasonr@gnu.org>
parents:
43373
diff
changeset
|
5461 /* 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
|
5462 f->want_fullscreen |= FULLSCREEN_WAIT; |
43396
9b50c09298f6
* w32term.c (x_autoselect_window_p): New variable.
Jason Rumney <jasonr@gnu.org>
parents:
43373
diff
changeset
|
5463 } |
9b50c09298f6
* w32term.c (x_autoselect_window_p): New variable.
Jason Rumney <jasonr@gnu.org>
parents:
43373
diff
changeset
|
5464 } |
9b50c09298f6
* w32term.c (x_autoselect_window_p): New variable.
Jason Rumney <jasonr@gnu.org>
parents:
43373
diff
changeset
|
5465 } |
9b50c09298f6
* w32term.c (x_autoselect_window_p): New variable.
Jason Rumney <jasonr@gnu.org>
parents:
43373
diff
changeset
|
5466 |
13434 | 5467 /* Call this to change the size of frame F's x-window. |
5468 If CHANGE_GRAVITY is 1, we change to top-left-corner window gravity | |
5469 for this size change and subsequent size changes. | |
5470 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
|
5471 |
27402
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
5472 void |
13434 | 5473 x_set_window_size (f, change_gravity, cols, rows) |
5474 struct frame *f; | |
5475 int change_gravity; | |
5476 int cols, rows; | |
5477 { | |
5478 int pixelwidth, pixelheight; | |
48218
01e253345507
(w32_draw_fringe_bitmap): Remove unused local variable window.
Juanma Barranquero <lekktu@gmail.com>
parents:
48025
diff
changeset
|
5479 |
13434 | 5480 BLOCK_INPUT; |
48218
01e253345507
(w32_draw_fringe_bitmap): Remove unused local variable window.
Juanma Barranquero <lekktu@gmail.com>
parents:
48025
diff
changeset
|
5481 |
13434 | 5482 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
|
5483 f->scroll_bar_actual_width |
082b768216a0
Make (several) trivial substitutions for renamed and
Kim F. Storm <storm@cua.dk>
parents:
50441
diff
changeset
|
5484 = 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
|
5485 |
50096 | 5486 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
|
5487 |
51204
082b768216a0
Make (several) trivial substitutions for renamed and
Kim F. Storm <storm@cua.dk>
parents:
50441
diff
changeset
|
5488 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
|
5489 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
|
5490 |
082b768216a0
Make (several) trivial substitutions for renamed and
Kim F. Storm <storm@cua.dk>
parents:
50441
diff
changeset
|
5491 f->win_gravity = NorthWestGravity; |
13434 | 5492 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
|
5493 |
13434 | 5494 { |
5495 RECT rect; | |
5496 | |
5497 rect.left = rect.top = 0; | |
5498 rect.right = pixelwidth; | |
5499 rect.bottom = pixelheight; | |
48218
01e253345507
(w32_draw_fringe_bitmap): Remove unused local variable window.
Juanma Barranquero <lekktu@gmail.com>
parents:
48025
diff
changeset
|
5500 |
16588
481b7874a1e9
Change identifiers of the form win32* to w32*.
Geoff Voelker <voelker@cs.washington.edu>
parents:
16326
diff
changeset
|
5501 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
|
5502 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
|
5503 |
16588
481b7874a1e9
Change identifiers of the form win32* to w32*.
Geoff Voelker <voelker@cs.washington.edu>
parents:
16326
diff
changeset
|
5504 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
|
5505 NULL, |
15151
ed6ddfc0d954
(Vwindow_system): Declared.
Geoff Voelker <voelker@cs.washington.edu>
parents:
15035
diff
changeset
|
5506 0, 0, |
19713
043ccce224fb
(SIF_*): Win95 macros defined for NT.
Geoff Voelker <voelker@cs.washington.edu>
parents:
18877
diff
changeset
|
5507 rect.right - rect.left, |
043ccce224fb
(SIF_*): Win95 macros defined for NT.
Geoff Voelker <voelker@cs.washington.edu>
parents:
18877
diff
changeset
|
5508 rect.bottom - rect.top, |
043ccce224fb
(SIF_*): Win95 macros defined for NT.
Geoff Voelker <voelker@cs.washington.edu>
parents:
18877
diff
changeset
|
5509 SWP_NOZORDER | SWP_NOMOVE | SWP_NOACTIVATE); |
13434 | 5510 } |
48218
01e253345507
(w32_draw_fringe_bitmap): Remove unused local variable window.
Juanma Barranquero <lekktu@gmail.com>
parents:
48025
diff
changeset
|
5511 |
79023
a1576b4ab168
(x_set_window_size): Disable code that attempts to tell
Jason Rumney <jasonr@gnu.org>
parents:
78988
diff
changeset
|
5512 #if 0 |
a1576b4ab168
(x_set_window_size): Disable code that attempts to tell
Jason Rumney <jasonr@gnu.org>
parents:
78988
diff
changeset
|
5513 /* The following mirrors what is done in xterm.c. It appears to be |
a1576b4ab168
(x_set_window_size): Disable code that attempts to tell
Jason Rumney <jasonr@gnu.org>
parents:
78988
diff
changeset
|
5514 for informing lisp of the new size immediately, while the actual |
a1576b4ab168
(x_set_window_size): Disable code that attempts to tell
Jason Rumney <jasonr@gnu.org>
parents:
78988
diff
changeset
|
5515 resize will happen asynchronously. But on Windows, the menu bar |
a1576b4ab168
(x_set_window_size): Disable code that attempts to tell
Jason Rumney <jasonr@gnu.org>
parents:
78988
diff
changeset
|
5516 automatically wraps when the frame is too narrow to contain it, |
a1576b4ab168
(x_set_window_size): Disable code that attempts to tell
Jason Rumney <jasonr@gnu.org>
parents:
78988
diff
changeset
|
5517 and that causes any calculations made here to come out wrong. The |
96376
c3309dba6542
American English spelling fix.
Glenn Morris <rgm@gnu.org>
parents:
96343
diff
changeset
|
5518 end is some nasty buggy behavior, including the potential loss |
79023
a1576b4ab168
(x_set_window_size): Disable code that attempts to tell
Jason Rumney <jasonr@gnu.org>
parents:
78988
diff
changeset
|
5519 of the minibuffer. |
a1576b4ab168
(x_set_window_size): Disable code that attempts to tell
Jason Rumney <jasonr@gnu.org>
parents:
78988
diff
changeset
|
5520 |
a1576b4ab168
(x_set_window_size): Disable code that attempts to tell
Jason Rumney <jasonr@gnu.org>
parents:
78988
diff
changeset
|
5521 Disabling this code is either not sufficient to fix the problems |
a1576b4ab168
(x_set_window_size): Disable code that attempts to tell
Jason Rumney <jasonr@gnu.org>
parents:
78988
diff
changeset
|
5522 completely, or it causes fresh problems, but at least it removes |
a1576b4ab168
(x_set_window_size): Disable code that attempts to tell
Jason Rumney <jasonr@gnu.org>
parents:
78988
diff
changeset
|
5523 the most problematic symptom of the minibuffer becoming unusable. |
a1576b4ab168
(x_set_window_size): Disable code that attempts to tell
Jason Rumney <jasonr@gnu.org>
parents:
78988
diff
changeset
|
5524 |
a1576b4ab168
(x_set_window_size): Disable code that attempts to tell
Jason Rumney <jasonr@gnu.org>
parents:
78988
diff
changeset
|
5525 ----------------------------------------------------------------- |
a1576b4ab168
(x_set_window_size): Disable code that attempts to tell
Jason Rumney <jasonr@gnu.org>
parents:
78988
diff
changeset
|
5526 |
a1576b4ab168
(x_set_window_size): Disable code that attempts to tell
Jason Rumney <jasonr@gnu.org>
parents:
78988
diff
changeset
|
5527 Now, strictly speaking, we can't be sure that this is accurate, |
13434 | 5528 but the window manager will get around to dealing with the size |
5529 change request eventually, and we'll hear how it went when the | |
5530 ConfigureNotify event gets here. | |
48218
01e253345507
(w32_draw_fringe_bitmap): Remove unused local variable window.
Juanma Barranquero <lekktu@gmail.com>
parents:
48025
diff
changeset
|
5531 |
13434 | 5532 We could just not bother storing any of this information here, |
5533 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
|
5534 might be kind of confusing to the Lisp code, since size changes |
13434 | 5535 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
|
5536 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
|
5537 |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
5538 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
|
5539 a BLOCK_INPUT. */ |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
5540 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
|
5541 FRAME_PIXEL_WIDTH (f) = pixelwidth; |
082b768216a0
Make (several) trivial substitutions for renamed and
Kim F. Storm <storm@cua.dk>
parents:
50441
diff
changeset
|
5542 FRAME_PIXEL_HEIGHT (f) = pixelheight; |
13434 | 5543 |
19713
043ccce224fb
(SIF_*): Win95 macros defined for NT.
Geoff Voelker <voelker@cs.washington.edu>
parents:
18877
diff
changeset
|
5544 /* 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
|
5545 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
|
5546 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
|
5547 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
|
5548 SET_FRAME_GARBAGED (f); |
043ccce224fb
(SIF_*): Win95 macros defined for NT.
Geoff Voelker <voelker@cs.washington.edu>
parents:
18877
diff
changeset
|
5549 |
13434 | 5550 /* 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
|
5551 mark_window_cursors_off (XWINDOW (f->root_window)); |
13434 | 5552 |
19713
043ccce224fb
(SIF_*): Win95 macros defined for NT.
Geoff Voelker <voelker@cs.washington.edu>
parents:
18877
diff
changeset
|
5553 /* 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
|
5554 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
|
5555 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
|
5556 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
|
5557 cancel_mouse_face (f); |
79023
a1576b4ab168
(x_set_window_size): Disable code that attempts to tell
Jason Rumney <jasonr@gnu.org>
parents:
78988
diff
changeset
|
5558 #endif |
24827
487fdbc8de0f
(cancel_mouse_face): new function. See equiv
Karl Heuer <kwzh@gnu.org>
parents:
24752
diff
changeset
|
5559 |
13434 | 5560 UNBLOCK_INPUT; |
5561 } | |
5562 | |
5563 /* Mouse warping. */ | |
5564 | |
30240
2c2a7ebd2c15
(help_echo_object, help_echo_pos): New variables.
Jason Rumney <jasonr@gnu.org>
parents:
30199
diff
changeset
|
5565 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
|
5566 |
2c2a7ebd2c15
(help_echo_object, help_echo_pos): New variables.
Jason Rumney <jasonr@gnu.org>
parents:
30199
diff
changeset
|
5567 void |
2c2a7ebd2c15
(help_echo_object, help_echo_pos): New variables.
Jason Rumney <jasonr@gnu.org>
parents:
30199
diff
changeset
|
5568 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
|
5569 struct frame *f; |
2c2a7ebd2c15
(help_echo_object, help_echo_pos): New variables.
Jason Rumney <jasonr@gnu.org>
parents:
30199
diff
changeset
|
5570 int x, y; |
2c2a7ebd2c15
(help_echo_object, help_echo_pos): New variables.
Jason Rumney <jasonr@gnu.org>
parents:
30199
diff
changeset
|
5571 { |
2c2a7ebd2c15
(help_echo_object, help_echo_pos): New variables.
Jason Rumney <jasonr@gnu.org>
parents:
30199
diff
changeset
|
5572 int pix_x, pix_y; |
2c2a7ebd2c15
(help_echo_object, help_echo_pos): New variables.
Jason Rumney <jasonr@gnu.org>
parents:
30199
diff
changeset
|
5573 |
51204
082b768216a0
Make (several) trivial substitutions for renamed and
Kim F. Storm <storm@cua.dk>
parents:
50441
diff
changeset
|
5574 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
|
5575 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
|
5576 |
2c2a7ebd2c15
(help_echo_object, help_echo_pos): New variables.
Jason Rumney <jasonr@gnu.org>
parents:
30199
diff
changeset
|
5577 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
|
5578 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
|
5579 |
2c2a7ebd2c15
(help_echo_object, help_echo_pos): New variables.
Jason Rumney <jasonr@gnu.org>
parents:
30199
diff
changeset
|
5580 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
|
5581 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
|
5582 |
2c2a7ebd2c15
(help_echo_object, help_echo_pos): New variables.
Jason Rumney <jasonr@gnu.org>
parents:
30199
diff
changeset
|
5583 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
|
5584 } |
2c2a7ebd2c15
(help_echo_object, help_echo_pos): New variables.
Jason Rumney <jasonr@gnu.org>
parents:
30199
diff
changeset
|
5585 |
13434 | 5586 void |
15616
a73836346910
(x_set_mouse_pixel_position): Adjust coords by frame position.
Miles Bader <miles@gnu.org>
parents:
15435
diff
changeset
|
5587 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
|
5588 struct frame *f; |
a73836346910
(x_set_mouse_pixel_position): Adjust coords by frame position.
Miles Bader <miles@gnu.org>
parents:
15435
diff
changeset
|
5589 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
|
5590 { |
19713
043ccce224fb
(SIF_*): Win95 macros defined for NT.
Geoff Voelker <voelker@cs.washington.edu>
parents:
18877
diff
changeset
|
5591 RECT rect; |
043ccce224fb
(SIF_*): Win95 macros defined for NT.
Geoff Voelker <voelker@cs.washington.edu>
parents:
18877
diff
changeset
|
5592 POINT pt; |
043ccce224fb
(SIF_*): Win95 macros defined for NT.
Geoff Voelker <voelker@cs.washington.edu>
parents:
18877
diff
changeset
|
5593 |
15616
a73836346910
(x_set_mouse_pixel_position): Adjust coords by frame position.
Miles Bader <miles@gnu.org>
parents:
15435
diff
changeset
|
5594 BLOCK_INPUT; |
a73836346910
(x_set_mouse_pixel_position): Adjust coords by frame position.
Miles Bader <miles@gnu.org>
parents:
15435
diff
changeset
|
5595 |
19713
043ccce224fb
(SIF_*): Win95 macros defined for NT.
Geoff Voelker <voelker@cs.washington.edu>
parents:
18877
diff
changeset
|
5596 GetClientRect (FRAME_W32_WINDOW (f), &rect); |
043ccce224fb
(SIF_*): Win95 macros defined for NT.
Geoff Voelker <voelker@cs.washington.edu>
parents:
18877
diff
changeset
|
5597 pt.x = rect.left + pix_x; |
043ccce224fb
(SIF_*): Win95 macros defined for NT.
Geoff Voelker <voelker@cs.washington.edu>
parents:
18877
diff
changeset
|
5598 pt.y = rect.top + pix_y; |
043ccce224fb
(SIF_*): Win95 macros defined for NT.
Geoff Voelker <voelker@cs.washington.edu>
parents:
18877
diff
changeset
|
5599 ClientToScreen (FRAME_W32_WINDOW (f), &pt); |
043ccce224fb
(SIF_*): Win95 macros defined for NT.
Geoff Voelker <voelker@cs.washington.edu>
parents:
18877
diff
changeset
|
5600 |
043ccce224fb
(SIF_*): Win95 macros defined for NT.
Geoff Voelker <voelker@cs.washington.edu>
parents:
18877
diff
changeset
|
5601 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
|
5602 |
a73836346910
(x_set_mouse_pixel_position): Adjust coords by frame position.
Miles Bader <miles@gnu.org>
parents:
15435
diff
changeset
|
5603 UNBLOCK_INPUT; |
a73836346910
(x_set_mouse_pixel_position): Adjust coords by frame position.
Miles Bader <miles@gnu.org>
parents:
15435
diff
changeset
|
5604 } |
a73836346910
(x_set_mouse_pixel_position): Adjust coords by frame position.
Miles Bader <miles@gnu.org>
parents:
15435
diff
changeset
|
5605 |
13434 | 5606 |
5607 /* focus shifting, raising and lowering. */ | |
5608 | |
30240
2c2a7ebd2c15
(help_echo_object, help_echo_pos): New variables.
Jason Rumney <jasonr@gnu.org>
parents:
30199
diff
changeset
|
5609 void |
13434 | 5610 x_focus_on_frame (f) |
5611 struct frame *f; | |
5612 { | |
19713
043ccce224fb
(SIF_*): Win95 macros defined for NT.
Geoff Voelker <voelker@cs.washington.edu>
parents:
18877
diff
changeset
|
5613 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
|
5614 |
043ccce224fb
(SIF_*): Win95 macros defined for NT.
Geoff Voelker <voelker@cs.washington.edu>
parents:
18877
diff
changeset
|
5615 /* Give input focus to frame. */ |
043ccce224fb
(SIF_*): Win95 macros defined for NT.
Geoff Voelker <voelker@cs.washington.edu>
parents:
18877
diff
changeset
|
5616 BLOCK_INPUT; |
043ccce224fb
(SIF_*): Win95 macros defined for NT.
Geoff Voelker <voelker@cs.washington.edu>
parents:
18877
diff
changeset
|
5617 #if 0 |
043ccce224fb
(SIF_*): Win95 macros defined for NT.
Geoff Voelker <voelker@cs.washington.edu>
parents:
18877
diff
changeset
|
5618 /* 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
|
5619 if (x_window_to_frame (dpyinfo, GetForegroundWindow ())) |
043ccce224fb
(SIF_*): Win95 macros defined for NT.
Geoff Voelker <voelker@cs.washington.edu>
parents:
18877
diff
changeset
|
5620 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
|
5621 else |
043ccce224fb
(SIF_*): Win95 macros defined for NT.
Geoff Voelker <voelker@cs.washington.edu>
parents:
18877
diff
changeset
|
5622 #endif |
21614
2624d8dcc73f
(Vw32_recognize_altgr): New variable.
Geoff Voelker <voelker@cs.washington.edu>
parents:
21456
diff
changeset
|
5623 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
|
5624 UNBLOCK_INPUT; |
13434 | 5625 } |
5626 | |
30240
2c2a7ebd2c15
(help_echo_object, help_echo_pos): New variables.
Jason Rumney <jasonr@gnu.org>
parents:
30199
diff
changeset
|
5627 void |
13434 | 5628 x_unfocus_frame (f) |
5629 struct frame *f; | |
5630 { | |
5631 } | |
5632 | |
5633 /* Raise frame F. */ | |
27402
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
5634 void |
13434 | 5635 x_raise_frame (f) |
5636 struct frame *f; | |
5637 { | |
19713
043ccce224fb
(SIF_*): Win95 macros defined for NT.
Geoff Voelker <voelker@cs.washington.edu>
parents:
18877
diff
changeset
|
5638 BLOCK_INPUT; |
043ccce224fb
(SIF_*): Win95 macros defined for NT.
Geoff Voelker <voelker@cs.washington.edu>
parents:
18877
diff
changeset
|
5639 |
043ccce224fb
(SIF_*): Win95 macros defined for NT.
Geoff Voelker <voelker@cs.washington.edu>
parents:
18877
diff
changeset
|
5640 /* Strictly speaking, raise-frame should only change the frame's Z |
96376
c3309dba6542
American English spelling fix.
Glenn Morris <rgm@gnu.org>
parents:
96343
diff
changeset
|
5641 order, leaving input focus unchanged. This is reasonable behavior |
19713
043ccce224fb
(SIF_*): Win95 macros defined for NT.
Geoff Voelker <voelker@cs.washington.edu>
parents:
18877
diff
changeset
|
5642 on X where the usual policy is point-to-focus. However, this |
96376
c3309dba6542
American English spelling fix.
Glenn Morris <rgm@gnu.org>
parents:
96343
diff
changeset
|
5643 behavior would be very odd on Windows where the usual policy is |
19713
043ccce224fb
(SIF_*): Win95 macros defined for NT.
Geoff Voelker <voelker@cs.washington.edu>
parents:
18877
diff
changeset
|
5644 click-to-focus. |
043ccce224fb
(SIF_*): Win95 macros defined for NT.
Geoff Voelker <voelker@cs.washington.edu>
parents:
18877
diff
changeset
|
5645 |
043ccce224fb
(SIF_*): Win95 macros defined for NT.
Geoff Voelker <voelker@cs.washington.edu>
parents:
18877
diff
changeset
|
5646 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
|
5647 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
|
5648 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
|
5649 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
|
5650 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
|
5651 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
|
5652 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
|
5653 completely obscured) with input focus. |
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 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
|
5656 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
|
5657 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
|
5658 |
043ccce224fb
(SIF_*): Win95 macros defined for NT.
Geoff Voelker <voelker@cs.washington.edu>
parents:
18877
diff
changeset
|
5659 if (NILP (Vw32_grab_focus_on_raise)) |
13434 | 5660 { |
19713
043ccce224fb
(SIF_*): Win95 macros defined for NT.
Geoff Voelker <voelker@cs.washington.edu>
parents:
18877
diff
changeset
|
5661 /* 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
|
5662 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
|
5663 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
|
5664 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
|
5665 more cumbersome method. */ |
043ccce224fb
(SIF_*): Win95 macros defined for NT.
Geoff Voelker <voelker@cs.washington.edu>
parents:
18877
diff
changeset
|
5666 |
043ccce224fb
(SIF_*): Win95 macros defined for NT.
Geoff Voelker <voelker@cs.washington.edu>
parents:
18877
diff
changeset
|
5667 HDWP handle = BeginDeferWindowPos (2); |
043ccce224fb
(SIF_*): Win95 macros defined for NT.
Geoff Voelker <voelker@cs.washington.edu>
parents:
18877
diff
changeset
|
5668 if (handle) |
043ccce224fb
(SIF_*): Win95 macros defined for NT.
Geoff Voelker <voelker@cs.washington.edu>
parents:
18877
diff
changeset
|
5669 { |
043ccce224fb
(SIF_*): Win95 macros defined for NT.
Geoff Voelker <voelker@cs.washington.edu>
parents:
18877
diff
changeset
|
5670 DeferWindowPos (handle, |
043ccce224fb
(SIF_*): Win95 macros defined for NT.
Geoff Voelker <voelker@cs.washington.edu>
parents:
18877
diff
changeset
|
5671 FRAME_W32_WINDOW (f), |
043ccce224fb
(SIF_*): Win95 macros defined for NT.
Geoff Voelker <voelker@cs.washington.edu>
parents:
18877
diff
changeset
|
5672 HWND_TOP, |
043ccce224fb
(SIF_*): Win95 macros defined for NT.
Geoff Voelker <voelker@cs.washington.edu>
parents:
18877
diff
changeset
|
5673 0, 0, 0, 0, |
043ccce224fb
(SIF_*): Win95 macros defined for NT.
Geoff Voelker <voelker@cs.washington.edu>
parents:
18877
diff
changeset
|
5674 SWP_NOSIZE | SWP_NOMOVE | SWP_NOACTIVATE); |
043ccce224fb
(SIF_*): Win95 macros defined for NT.
Geoff Voelker <voelker@cs.washington.edu>
parents:
18877
diff
changeset
|
5675 |
043ccce224fb
(SIF_*): Win95 macros defined for NT.
Geoff Voelker <voelker@cs.washington.edu>
parents:
18877
diff
changeset
|
5676 DeferWindowPos (handle, |
043ccce224fb
(SIF_*): Win95 macros defined for NT.
Geoff Voelker <voelker@cs.washington.edu>
parents:
18877
diff
changeset
|
5677 GetForegroundWindow (), |
043ccce224fb
(SIF_*): Win95 macros defined for NT.
Geoff Voelker <voelker@cs.washington.edu>
parents:
18877
diff
changeset
|
5678 FRAME_W32_WINDOW (f), |
043ccce224fb
(SIF_*): Win95 macros defined for NT.
Geoff Voelker <voelker@cs.washington.edu>
parents:
18877
diff
changeset
|
5679 0, 0, 0, 0, |
043ccce224fb
(SIF_*): Win95 macros defined for NT.
Geoff Voelker <voelker@cs.washington.edu>
parents:
18877
diff
changeset
|
5680 SWP_NOSIZE | SWP_NOMOVE | SWP_NOACTIVATE); |
043ccce224fb
(SIF_*): Win95 macros defined for NT.
Geoff Voelker <voelker@cs.washington.edu>
parents:
18877
diff
changeset
|
5681 |
043ccce224fb
(SIF_*): Win95 macros defined for NT.
Geoff Voelker <voelker@cs.washington.edu>
parents:
18877
diff
changeset
|
5682 EndDeferWindowPos (handle); |
043ccce224fb
(SIF_*): Win95 macros defined for NT.
Geoff Voelker <voelker@cs.washington.edu>
parents:
18877
diff
changeset
|
5683 } |
13434 | 5684 } |
19713
043ccce224fb
(SIF_*): Win95 macros defined for NT.
Geoff Voelker <voelker@cs.washington.edu>
parents:
18877
diff
changeset
|
5685 else |
043ccce224fb
(SIF_*): Win95 macros defined for NT.
Geoff Voelker <voelker@cs.washington.edu>
parents:
18877
diff
changeset
|
5686 { |
21614
2624d8dcc73f
(Vw32_recognize_altgr): New variable.
Geoff Voelker <voelker@cs.washington.edu>
parents:
21456
diff
changeset
|
5687 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
|
5688 } |
043ccce224fb
(SIF_*): Win95 macros defined for NT.
Geoff Voelker <voelker@cs.washington.edu>
parents:
18877
diff
changeset
|
5689 |
043ccce224fb
(SIF_*): Win95 macros defined for NT.
Geoff Voelker <voelker@cs.washington.edu>
parents:
18877
diff
changeset
|
5690 UNBLOCK_INPUT; |
13434 | 5691 } |
5692 | |
5693 /* Lower frame F. */ | |
27402
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
5694 void |
13434 | 5695 x_lower_frame (f) |
5696 struct frame *f; | |
5697 { | |
19713
043ccce224fb
(SIF_*): Win95 macros defined for NT.
Geoff Voelker <voelker@cs.washington.edu>
parents:
18877
diff
changeset
|
5698 BLOCK_INPUT; |
043ccce224fb
(SIF_*): Win95 macros defined for NT.
Geoff Voelker <voelker@cs.washington.edu>
parents:
18877
diff
changeset
|
5699 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
|
5700 HWND_BOTTOM, |
043ccce224fb
(SIF_*): Win95 macros defined for NT.
Geoff Voelker <voelker@cs.washington.edu>
parents:
18877
diff
changeset
|
5701 0, 0, 0, 0, |
043ccce224fb
(SIF_*): Win95 macros defined for NT.
Geoff Voelker <voelker@cs.washington.edu>
parents:
18877
diff
changeset
|
5702 SWP_NOSIZE | SWP_NOMOVE | SWP_NOACTIVATE); |
043ccce224fb
(SIF_*): Win95 macros defined for NT.
Geoff Voelker <voelker@cs.washington.edu>
parents:
18877
diff
changeset
|
5703 UNBLOCK_INPUT; |
13434 | 5704 } |
5705 | |
5706 static void | |
30240
2c2a7ebd2c15
(help_echo_object, help_echo_pos): New variables.
Jason Rumney <jasonr@gnu.org>
parents:
30199
diff
changeset
|
5707 w32_frame_raise_lower (f, raise_flag) |
13434 | 5708 FRAME_PTR f; |
30240
2c2a7ebd2c15
(help_echo_object, help_echo_pos): New variables.
Jason Rumney <jasonr@gnu.org>
parents:
30199
diff
changeset
|
5709 int raise_flag; |
2c2a7ebd2c15
(help_echo_object, help_echo_pos): New variables.
Jason Rumney <jasonr@gnu.org>
parents:
30199
diff
changeset
|
5710 { |
35000 | 5711 if (! FRAME_W32_P (f)) |
5712 return; | |
5713 | |
30240
2c2a7ebd2c15
(help_echo_object, help_echo_pos): New variables.
Jason Rumney <jasonr@gnu.org>
parents:
30199
diff
changeset
|
5714 if (raise_flag) |
13434 | 5715 x_raise_frame (f); |
5716 else | |
5717 x_lower_frame (f); | |
5718 } | |
5719 | |
5720 /* Change of visibility. */ | |
5721 | |
5722 /* This tries to wait until the frame is really visible. | |
5723 However, if the window manager asks the user where to position | |
5724 the frame, this will return before the user finishes doing that. | |
5725 The frame will not actually be visible at that time, | |
5726 but it will become visible later when the window manager | |
5727 finishes with it. */ | |
5728 | |
30240
2c2a7ebd2c15
(help_echo_object, help_echo_pos): New variables.
Jason Rumney <jasonr@gnu.org>
parents:
30199
diff
changeset
|
5729 void |
13434 | 5730 x_make_frame_visible (f) |
5731 struct frame *f; | |
5732 { | |
25236
ea748fe6dee4
(x_bitmap_icon): New function.
Geoff Voelker <voelker@cs.washington.edu>
parents:
24863
diff
changeset
|
5733 Lisp_Object type; |
ea748fe6dee4
(x_bitmap_icon): New function.
Geoff Voelker <voelker@cs.washington.edu>
parents:
24863
diff
changeset
|
5734 |
13434 | 5735 BLOCK_INPUT; |
5736 | |
25236
ea748fe6dee4
(x_bitmap_icon): New function.
Geoff Voelker <voelker@cs.washington.edu>
parents:
24863
diff
changeset
|
5737 type = x_icon_type (f); |
ea748fe6dee4
(x_bitmap_icon): New function.
Geoff Voelker <voelker@cs.washington.edu>
parents:
24863
diff
changeset
|
5738 if (!NILP (type)) |
ea748fe6dee4
(x_bitmap_icon): New function.
Geoff Voelker <voelker@cs.washington.edu>
parents:
24863
diff
changeset
|
5739 x_bitmap_icon (f, type); |
ea748fe6dee4
(x_bitmap_icon): New function.
Geoff Voelker <voelker@cs.washington.edu>
parents:
24863
diff
changeset
|
5740 |
13434 | 5741 if (! FRAME_VISIBLE_P (f)) |
5742 { | |
5743 /* We test FRAME_GARBAGED_P here to make sure we don't | |
5744 call x_set_offset a second time | |
5745 if we get to x_make_frame_visible a second time | |
5746 before the window gets really visible. */ | |
5747 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
|
5748 && ! 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
|
5749 { |
d1eb48dbd3e6
(x_make_frame_visible): Use SystemParametersInfo with SPI_GETWORKAREA to find
Eli Zaretskii <eliz@gnu.org>
parents:
71236
diff
changeset
|
5750 RECT workarea_rect; |
d1eb48dbd3e6
(x_make_frame_visible): Use SystemParametersInfo with SPI_GETWORKAREA to find
Eli Zaretskii <eliz@gnu.org>
parents:
71236
diff
changeset
|
5751 RECT window_rect; |
d1eb48dbd3e6
(x_make_frame_visible): Use SystemParametersInfo with SPI_GETWORKAREA to find
Eli Zaretskii <eliz@gnu.org>
parents:
71236
diff
changeset
|
5752 |
d1eb48dbd3e6
(x_make_frame_visible): Use SystemParametersInfo with SPI_GETWORKAREA to find
Eli Zaretskii <eliz@gnu.org>
parents:
71236
diff
changeset
|
5753 /* 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
|
5754 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
|
5755 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
|
5756 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
|
5757 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
|
5758 && 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
|
5759 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
|
5760 - 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
|
5761 workarea_rect.top); |
d1eb48dbd3e6
(x_make_frame_visible): Use SystemParametersInfo with SPI_GETWORKAREA to find
Eli Zaretskii <eliz@gnu.org>
parents:
71236
diff
changeset
|
5762 |
d1eb48dbd3e6
(x_make_frame_visible): Use SystemParametersInfo with SPI_GETWORKAREA to find
Eli Zaretskii <eliz@gnu.org>
parents:
71236
diff
changeset
|
5763 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
|
5764 } |
13434 | 5765 |
16588
481b7874a1e9
Change identifiers of the form win32* to w32*.
Geoff Voelker <voelker@cs.washington.edu>
parents:
16326
diff
changeset
|
5766 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
|
5767 |
95733
0554ef53fccd
(x_make_frame_visible): Use alternate restore flags.
Jason Rumney <jasonr@gnu.org>
parents:
95364
diff
changeset
|
5768 /* The first of these seems to give more expected behavior, but |
0554ef53fccd
(x_make_frame_visible): Use alternate restore flags.
Jason Rumney <jasonr@gnu.org>
parents:
95364
diff
changeset
|
5769 was added as a commented out line in Sept 1997, with the |
0554ef53fccd
(x_make_frame_visible): Use alternate restore flags.
Jason Rumney <jasonr@gnu.org>
parents:
95364
diff
changeset
|
5770 second version remaining uncommented. There may have been |
0554ef53fccd
(x_make_frame_visible): Use alternate restore flags.
Jason Rumney <jasonr@gnu.org>
parents:
95364
diff
changeset
|
5771 some problem with it that led to it not being enabled, |
0554ef53fccd
(x_make_frame_visible): Use alternate restore flags.
Jason Rumney <jasonr@gnu.org>
parents:
95364
diff
changeset
|
5772 so the old version remains commented out below in case we |
0554ef53fccd
(x_make_frame_visible): Use alternate restore flags.
Jason Rumney <jasonr@gnu.org>
parents:
95364
diff
changeset
|
5773 decide we need to go back to it [23.0.60 2008-06-09]. */ |
0554ef53fccd
(x_make_frame_visible): Use alternate restore flags.
Jason Rumney <jasonr@gnu.org>
parents:
95364
diff
changeset
|
5774 my_show_window (f, FRAME_W32_WINDOW (f), |
0554ef53fccd
(x_make_frame_visible): Use alternate restore flags.
Jason Rumney <jasonr@gnu.org>
parents:
95364
diff
changeset
|
5775 f->async_iconified ? SW_RESTORE : SW_SHOW); |
0554ef53fccd
(x_make_frame_visible): Use alternate restore flags.
Jason Rumney <jasonr@gnu.org>
parents:
95364
diff
changeset
|
5776 /* my_show_window (f, FRAME_W32_WINDOW (f), SW_SHOWNORMAL); */ |
13434 | 5777 } |
5778 | |
5779 /* Synchronize to ensure Emacs knows the frame is visible | |
5780 before we do anything else. We do this loop with input not blocked | |
5781 so that incoming events are handled. */ | |
5782 { | |
5783 Lisp_Object frame; | |
27402
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
5784 int count; |
13434 | 5785 |
5786 /* This must come after we set COUNT. */ | |
5787 UNBLOCK_INPUT; | |
5788 | |
5789 XSETFRAME (frame, f); | |
5790 | |
27402
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
5791 /* 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
|
5792 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
|
5793 MapNotify at all.. */ |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
5794 for (count = input_signal_count + 10; |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
5795 input_signal_count < count && !FRAME_VISIBLE_P (f);) |
13434 | 5796 { |
27402
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
5797 /* Force processing of queued events. */ |
33097
84590a646acc
(x_produce_glyphs): Handle composite characters.
Jason Rumney <jasonr@gnu.org>
parents:
33037
diff
changeset
|
5798 /* TODO: x_sync equivalent? */ |
27402
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
5799 |
13434 | 5800 /* Machines that do polling rather than SIGIO have been observed |
5801 to go into a busy-wait here. So we'll fake an alarm signal | |
5802 to let the handler know that there's something to be read. | |
5803 We used to raise a real alarm, but it seems that the handler | |
5804 isn't always enabled here. This is probably a bug. */ | |
5805 if (input_polling_used ()) | |
5806 { | |
5807 /* It could be confusing if a real alarm arrives while processing | |
5808 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
|
5809 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
|
5810 poll_suppress_count = 1; |
5fe002cf4b37
(x_make_frame_visible): Replace call to
Andrew Innes <andrewi@gnu.org>
parents:
27514
diff
changeset
|
5811 poll_for_input_1 (); |
5fe002cf4b37
(x_make_frame_visible): Replace call to
Andrew Innes <andrewi@gnu.org>
parents:
27514
diff
changeset
|
5812 poll_suppress_count = old_poll_suppress_count; |
13434 | 5813 } |
5814 } | |
5815 FRAME_SAMPLE_VISIBILITY (f); | |
5816 } | |
5817 } | |
5818 | |
5819 /* Change from mapped state to withdrawn state. */ | |
5820 | |
5821 /* Make the frame visible (mapped and not iconified). */ | |
5822 | |
5823 x_make_frame_invisible (f) | |
5824 struct frame *f; | |
5825 { | |
5826 /* 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
|
5827 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
|
5828 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
|
5829 |
13434 | 5830 BLOCK_INPUT; |
48218
01e253345507
(w32_draw_fringe_bitmap): Remove unused local variable window.
Juanma Barranquero <lekktu@gmail.com>
parents:
48025
diff
changeset
|
5831 |
19713
043ccce224fb
(SIF_*): Win95 macros defined for NT.
Geoff Voelker <voelker@cs.washington.edu>
parents:
18877
diff
changeset
|
5832 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
|
5833 |
13434 | 5834 /* We can't distinguish this from iconification |
5835 just by the event that we get from the server. | |
5836 So we can't win using the usual strategy of letting | |
5837 FRAME_SAMPLE_VISIBILITY set this. So do it by hand, | |
5838 and synchronize with the server to make sure we agree. */ | |
5839 f->visible = 0; | |
5840 FRAME_ICONIFIED_P (f) = 0; | |
5841 f->async_visible = 0; | |
5842 f->async_iconified = 0; | |
48218
01e253345507
(w32_draw_fringe_bitmap): Remove unused local variable window.
Juanma Barranquero <lekktu@gmail.com>
parents:
48025
diff
changeset
|
5843 |
13434 | 5844 UNBLOCK_INPUT; |
5845 } | |
5846 | |
5847 /* Change window state from mapped to iconified. */ | |
5848 | |
15151
ed6ddfc0d954
(Vwindow_system): Declared.
Geoff Voelker <voelker@cs.washington.edu>
parents:
15035
diff
changeset
|
5849 void |
ed6ddfc0d954
(Vwindow_system): Declared.
Geoff Voelker <voelker@cs.washington.edu>
parents:
15035
diff
changeset
|
5850 x_iconify_frame (f) |
13434 | 5851 struct frame *f; |
5852 { | |
25236
ea748fe6dee4
(x_bitmap_icon): New function.
Geoff Voelker <voelker@cs.washington.edu>
parents:
24863
diff
changeset
|
5853 Lisp_Object type; |
13434 | 5854 |
5855 /* 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
|
5856 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
|
5857 FRAME_W32_DISPLAY_INFO (f)->x_highlight_frame = 0; |
13434 | 5858 |
5859 if (f->async_iconified) | |
5860 return; | |
5861 | |
5862 BLOCK_INPUT; | |
5863 | |
25236
ea748fe6dee4
(x_bitmap_icon): New function.
Geoff Voelker <voelker@cs.washington.edu>
parents:
24863
diff
changeset
|
5864 type = x_icon_type (f); |
ea748fe6dee4
(x_bitmap_icon): New function.
Geoff Voelker <voelker@cs.washington.edu>
parents:
24863
diff
changeset
|
5865 if (!NILP (type)) |
ea748fe6dee4
(x_bitmap_icon): New function.
Geoff Voelker <voelker@cs.washington.edu>
parents:
24863
diff
changeset
|
5866 x_bitmap_icon (f, type); |
ea748fe6dee4
(x_bitmap_icon): New function.
Geoff Voelker <voelker@cs.washington.edu>
parents:
24863
diff
changeset
|
5867 |
19713
043ccce224fb
(SIF_*): Win95 macros defined for NT.
Geoff Voelker <voelker@cs.washington.edu>
parents:
18877
diff
changeset
|
5868 /* 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
|
5869 SendMessage (FRAME_W32_WINDOW (f), WM_SYSCOMMAND, SC_MINIMIZE, 0); |
13434 | 5870 |
5871 UNBLOCK_INPUT; | |
5872 } | |
35384
e50a7f9ce65e
(x_produce_stretch_glyph): Only use Qspace when GLYPH_DEBUG is defined.
Jason Rumney <jasonr@gnu.org>
parents:
35287
diff
changeset
|
5873 |
13434 | 5874 |
34545
0322014fcf27
(clear_mouse_face): Treat tip_frame as a Lisp_Object.
Andrew Innes <andrewi@gnu.org>
parents:
34229
diff
changeset
|
5875 /* 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
|
5876 |
0322014fcf27
(clear_mouse_face): Treat tip_frame as a Lisp_Object.
Andrew Innes <andrewi@gnu.org>
parents:
34229
diff
changeset
|
5877 void |
0322014fcf27
(clear_mouse_face): Treat tip_frame as a Lisp_Object.
Andrew Innes <andrewi@gnu.org>
parents:
34229
diff
changeset
|
5878 x_free_frame_resources (f) |
13434 | 5879 struct frame *f; |
5880 { | |
16588
481b7874a1e9
Change identifiers of the form win32* to w32*.
Geoff Voelker <voelker@cs.washington.edu>
parents:
16326
diff
changeset
|
5881 struct w32_display_info *dpyinfo = FRAME_W32_DISPLAY_INFO (f); |
13434 | 5882 |
5883 BLOCK_INPUT; | |
5884 | |
94912
5b153bea483d
: Throughout the file, delete all USE_FONT_BACKEND
Kenichi Handa <handa@m17n.org>
parents:
93913
diff
changeset
|
5885 /* We must free faces before destroying windows because some |
5b153bea483d
: Throughout the file, delete all USE_FONT_BACKEND
Kenichi Handa <handa@m17n.org>
parents:
93913
diff
changeset
|
5886 font-driver (e.g. xft) access a window while finishing a |
5b153bea483d
: Throughout the file, delete all USE_FONT_BACKEND
Kenichi Handa <handa@m17n.org>
parents:
93913
diff
changeset
|
5887 face. */ |
5b153bea483d
: Throughout the file, delete all USE_FONT_BACKEND
Kenichi Handa <handa@m17n.org>
parents:
93913
diff
changeset
|
5888 if (FRAME_FACE_CACHE (f)) |
5b153bea483d
: Throughout the file, delete all USE_FONT_BACKEND
Kenichi Handa <handa@m17n.org>
parents:
93913
diff
changeset
|
5889 free_frame_faces (f); |
90834 | 5890 |
34545
0322014fcf27
(clear_mouse_face): Treat tip_frame as a Lisp_Object.
Andrew Innes <andrewi@gnu.org>
parents:
34229
diff
changeset
|
5891 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
|
5892 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
|
5893 |
13434 | 5894 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
|
5895 |
83505 | 5896 unload_color (f, FRAME_FOREGROUND_PIXEL (f)); |
5897 unload_color (f, FRAME_BACKGROUND_PIXEL (f)); | |
34545
0322014fcf27
(clear_mouse_face): Treat tip_frame as a Lisp_Object.
Andrew Innes <andrewi@gnu.org>
parents:
34229
diff
changeset
|
5898 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
|
5899 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
|
5900 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
|
5901 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
|
5902 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
|
5903 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
|
5904 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
|
5905 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
|
5906 |
34545
0322014fcf27
(clear_mouse_face): Treat tip_frame as a Lisp_Object.
Andrew Innes <andrewi@gnu.org>
parents:
34229
diff
changeset
|
5907 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
|
5908 free_frame_faces (f); |
48218
01e253345507
(w32_draw_fringe_bitmap): Remove unused local variable window.
Juanma Barranquero <lekktu@gmail.com>
parents:
48025
diff
changeset
|
5909 |
16588
481b7874a1e9
Change identifiers of the form win32* to w32*.
Geoff Voelker <voelker@cs.washington.edu>
parents:
16326
diff
changeset
|
5910 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
|
5911 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
|
5912 |
16588
481b7874a1e9
Change identifiers of the form win32* to w32*.
Geoff Voelker <voelker@cs.washington.edu>
parents:
16326
diff
changeset
|
5913 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
|
5914 dpyinfo->w32_focus_frame = 0; |
481b7874a1e9
Change identifiers of the form win32* to w32*.
Geoff Voelker <voelker@cs.washington.edu>
parents:
16326
diff
changeset
|
5915 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
|
5916 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
|
5917 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
|
5918 dpyinfo->x_highlight_frame = 0; |
13434 | 5919 |
5920 if (f == dpyinfo->mouse_face_mouse_frame) | |
5921 { | |
5922 dpyinfo->mouse_face_beg_row | |
5923 = dpyinfo->mouse_face_beg_col = -1; | |
5924 dpyinfo->mouse_face_end_row | |
5925 = dpyinfo->mouse_face_end_col = -1; | |
5926 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
|
5927 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
|
5928 dpyinfo->mouse_face_mouse_frame = 0; |
13434 | 5929 } |
5930 | |
5931 UNBLOCK_INPUT; | |
5932 } | |
34545
0322014fcf27
(clear_mouse_face): Treat tip_frame as a Lisp_Object.
Andrew Innes <andrewi@gnu.org>
parents:
34229
diff
changeset
|
5933 |
0322014fcf27
(clear_mouse_face): Treat tip_frame as a Lisp_Object.
Andrew Innes <andrewi@gnu.org>
parents:
34229
diff
changeset
|
5934 |
0322014fcf27
(clear_mouse_face): Treat tip_frame as a Lisp_Object.
Andrew Innes <andrewi@gnu.org>
parents:
34229
diff
changeset
|
5935 /* Destroy the window of frame F. */ |
83569
86395c339701
(w32_set_terminal_modes, w32_reset_terminal_modes):
Jason Rumney <jasonr@gnu.org>
parents:
83556
diff
changeset
|
5936 void |
34545
0322014fcf27
(clear_mouse_face): Treat tip_frame as a Lisp_Object.
Andrew Innes <andrewi@gnu.org>
parents:
34229
diff
changeset
|
5937 x_destroy_window (f) |
0322014fcf27
(clear_mouse_face): Treat tip_frame as a Lisp_Object.
Andrew Innes <andrewi@gnu.org>
parents:
34229
diff
changeset
|
5938 struct frame *f; |
0322014fcf27
(clear_mouse_face): Treat tip_frame as a Lisp_Object.
Andrew Innes <andrewi@gnu.org>
parents:
34229
diff
changeset
|
5939 { |
0322014fcf27
(clear_mouse_face): Treat tip_frame as a Lisp_Object.
Andrew Innes <andrewi@gnu.org>
parents:
34229
diff
changeset
|
5940 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
|
5941 |
0322014fcf27
(clear_mouse_face): Treat tip_frame as a Lisp_Object.
Andrew Innes <andrewi@gnu.org>
parents:
34229
diff
changeset
|
5942 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
|
5943 dpyinfo->reference_count--; |
0322014fcf27
(clear_mouse_face): Treat tip_frame as a Lisp_Object.
Andrew Innes <andrewi@gnu.org>
parents:
34229
diff
changeset
|
5944 } |
35384
e50a7f9ce65e
(x_produce_stretch_glyph): Only use Qspace when GLYPH_DEBUG is defined.
Jason Rumney <jasonr@gnu.org>
parents:
35287
diff
changeset
|
5945 |
13434 | 5946 |
5947 /* Setting window manager hints. */ | |
5948 | |
5949 /* Set the normal size hints for the window manager, for frame F. | |
5950 FLAGS is the flags word to use--or 0 meaning preserve the flags | |
5951 that the window now has. | |
5952 If USER_POSITION is nonzero, we set the USPosition | |
5953 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
|
5954 void |
13434 | 5955 x_wm_set_size_hint (f, flags, user_position) |
5956 struct frame *f; | |
5957 long flags; | |
5958 int user_position; | |
5959 { | |
16588
481b7874a1e9
Change identifiers of the form win32* to w32*.
Geoff Voelker <voelker@cs.washington.edu>
parents:
16326
diff
changeset
|
5960 Window window = FRAME_W32_WINDOW (f); |
13434 | 5961 |
14351
fb2ce4ebc871
ubackout 1.3 and 1.4
Geoff Voelker <voelker@cs.washington.edu>
parents:
14248
diff
changeset
|
5962 enter_crit (); |
13434 | 5963 |
51204
082b768216a0
Make (several) trivial substitutions for renamed and
Kim F. Storm <storm@cua.dk>
parents:
50441
diff
changeset
|
5964 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
|
5965 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
|
5966 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
|
5967 SetWindowLong (window, WND_SCROLLBAR_INDEX, f->scroll_bar_actual_width); |
13434 | 5968 |
14351
fb2ce4ebc871
ubackout 1.3 and 1.4
Geoff Voelker <voelker@cs.washington.edu>
parents:
14248
diff
changeset
|
5969 leave_crit (); |
13434 | 5970 } |
5971 | |
5972 /* 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
|
5973 void |
37738feb0204
Break the line after the return type in function definition.
Richard M. Stallman <rms@gnu.org>
parents:
50376
diff
changeset
|
5974 x_wm_set_icon_position (f, icon_x, icon_y) |
13434 | 5975 struct frame *f; |
5976 int icon_x, icon_y; | |
5977 { | |
5978 #if 0 | |
16588
481b7874a1e9
Change identifiers of the form win32* to w32*.
Geoff Voelker <voelker@cs.washington.edu>
parents:
16326
diff
changeset
|
5979 Window window = FRAME_W32_WINDOW (f); |
13434 | 5980 |
5981 f->display.x->wm_hints.flags |= IconPositionHint; | |
5982 f->display.x->wm_hints.icon_x = icon_x; | |
5983 f->display.x->wm_hints.icon_y = icon_y; | |
5984 | |
5985 XSetWMHints (FRAME_X_DISPLAY (f), window, &f->display.x->wm_hints); | |
5986 #endif | |
5987 } | |
5988 | |
35384
e50a7f9ce65e
(x_produce_stretch_glyph): Only use Qspace when GLYPH_DEBUG is defined.
Jason Rumney <jasonr@gnu.org>
parents:
35287
diff
changeset
|
5989 |
e50a7f9ce65e
(x_produce_stretch_glyph): Only use Qspace when GLYPH_DEBUG is defined.
Jason Rumney <jasonr@gnu.org>
parents:
35287
diff
changeset
|
5990 /*********************************************************************** |
27402
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
5991 Initialization |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
5992 ***********************************************************************/ |
13434 | 5993 |
16588
481b7874a1e9
Change identifiers of the form win32* to w32*.
Geoff Voelker <voelker@cs.washington.edu>
parents:
16326
diff
changeset
|
5994 static int w32_initialized = 0; |
481b7874a1e9
Change identifiers of the form win32* to w32*.
Geoff Voelker <voelker@cs.washington.edu>
parents:
16326
diff
changeset
|
5995 |
27889
51d0b4b8fc6a
(w32_display_info_for_display): Remove unused function.
Jason Rumney <jasonr@gnu.org>
parents:
27631
diff
changeset
|
5996 void |
51d0b4b8fc6a
(w32_display_info_for_display): Remove unused function.
Jason Rumney <jasonr@gnu.org>
parents:
27631
diff
changeset
|
5997 w32_initialize_display_info (display_name) |
51d0b4b8fc6a
(w32_display_info_for_display): Remove unused function.
Jason Rumney <jasonr@gnu.org>
parents:
27631
diff
changeset
|
5998 Lisp_Object display_name; |
51d0b4b8fc6a
(w32_display_info_for_display): Remove unused function.
Jason Rumney <jasonr@gnu.org>
parents:
27631
diff
changeset
|
5999 { |
51d0b4b8fc6a
(w32_display_info_for_display): Remove unused function.
Jason Rumney <jasonr@gnu.org>
parents:
27631
diff
changeset
|
6000 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
|
6001 |
51d0b4b8fc6a
(w32_display_info_for_display): Remove unused function.
Jason Rumney <jasonr@gnu.org>
parents:
27631
diff
changeset
|
6002 bzero (dpyinfo, sizeof (*dpyinfo)); |
51d0b4b8fc6a
(w32_display_info_for_display): Remove unused function.
Jason Rumney <jasonr@gnu.org>
parents:
27631
diff
changeset
|
6003 |
51d0b4b8fc6a
(w32_display_info_for_display): Remove unused function.
Jason Rumney <jasonr@gnu.org>
parents:
27631
diff
changeset
|
6004 /* 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
|
6005 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
|
6006 w32_display_name_list); |
51d0b4b8fc6a
(w32_display_info_for_display): Remove unused function.
Jason Rumney <jasonr@gnu.org>
parents:
27631
diff
changeset
|
6007 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
|
6008 |
27889
51d0b4b8fc6a
(w32_display_info_for_display): Remove unused function.
Jason Rumney <jasonr@gnu.org>
parents:
27631
diff
changeset
|
6009 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
|
6010 = (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
|
6011 + SCHARS (Vsystem_name) |
27889
51d0b4b8fc6a
(w32_display_info_for_display): Remove unused function.
Jason Rumney <jasonr@gnu.org>
parents:
27631
diff
changeset
|
6012 + 2); |
51d0b4b8fc6a
(w32_display_info_for_display): Remove unused function.
Jason Rumney <jasonr@gnu.org>
parents:
27631
diff
changeset
|
6013 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
|
6014 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
|
6015 |
51d0b4b8fc6a
(w32_display_info_for_display): Remove unused function.
Jason Rumney <jasonr@gnu.org>
parents:
27631
diff
changeset
|
6016 /* 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
|
6017 with values obtained from system metrics. */ |
51d0b4b8fc6a
(w32_display_info_for_display): Remove unused function.
Jason Rumney <jasonr@gnu.org>
parents:
27631
diff
changeset
|
6018 dpyinfo->resx = 1; |
51d0b4b8fc6a
(w32_display_info_for_display): Remove unused function.
Jason Rumney <jasonr@gnu.org>
parents:
27631
diff
changeset
|
6019 dpyinfo->resy = 1; |
51d0b4b8fc6a
(w32_display_info_for_display): Remove unused function.
Jason Rumney <jasonr@gnu.org>
parents:
27631
diff
changeset
|
6020 dpyinfo->n_planes = 1; |
51d0b4b8fc6a
(w32_display_info_for_display): Remove unused function.
Jason Rumney <jasonr@gnu.org>
parents:
27631
diff
changeset
|
6021 dpyinfo->n_cbits = 4; |
51d0b4b8fc6a
(w32_display_info_for_display): Remove unused function.
Jason Rumney <jasonr@gnu.org>
parents:
27631
diff
changeset
|
6022 dpyinfo->n_fonts = 0; |
51d0b4b8fc6a
(w32_display_info_for_display): Remove unused function.
Jason Rumney <jasonr@gnu.org>
parents:
27631
diff
changeset
|
6023 dpyinfo->smallest_font_height = 1; |
51d0b4b8fc6a
(w32_display_info_for_display): Remove unused function.
Jason Rumney <jasonr@gnu.org>
parents:
27631
diff
changeset
|
6024 dpyinfo->smallest_char_width = 1; |
51d0b4b8fc6a
(w32_display_info_for_display): Remove unused function.
Jason Rumney <jasonr@gnu.org>
parents:
27631
diff
changeset
|
6025 |
51d0b4b8fc6a
(w32_display_info_for_display): Remove unused function.
Jason Rumney <jasonr@gnu.org>
parents:
27631
diff
changeset
|
6026 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
|
6027 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
|
6028 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
|
6029 dpyinfo->mouse_face_window = Qnil; |
40137
5f0d7d58283b
(remember_mouse_glyph): New function.
Jason Rumney <jasonr@gnu.org>
parents:
40078
diff
changeset
|
6030 dpyinfo->mouse_face_overlay = Qnil; |
43373
44e2e2c9154f
(disable_mouse_highlight): Removed variable.
Kim F. Storm <storm@cua.dk>
parents:
43146
diff
changeset
|
6031 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
|
6032 |
c73ce11bb264
2003-01-21 KOBAYASHI Yasuhiro <kobayays@otsukakj.co.jp>
Jason Rumney <jasonr@gnu.org>
parents:
48888
diff
changeset
|
6033 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
|
6034 /* TODO: dpyinfo->gray */ |
27889
51d0b4b8fc6a
(w32_display_info_for_display): Remove unused function.
Jason Rumney <jasonr@gnu.org>
parents:
27631
diff
changeset
|
6035 |
51d0b4b8fc6a
(w32_display_info_for_display): Remove unused function.
Jason Rumney <jasonr@gnu.org>
parents:
27631
diff
changeset
|
6036 } |
51d0b4b8fc6a
(w32_display_info_for_display): Remove unused function.
Jason Rumney <jasonr@gnu.org>
parents:
27631
diff
changeset
|
6037 |
50038
8054c23b6726
(w32_make_rdb): New function.
Juanma Barranquero <lekktu@gmail.com>
parents:
49393
diff
changeset
|
6038 /* 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
|
6039 The database is just a concatenation of C strings, finished by an additional |
85309
3224d6c172a6
(w32_font_is_double_byte, my_create_scrollbar): Make static.
Juanma Barranquero <lekktu@gmail.com>
parents:
85258
diff
changeset
|
6040 \0. The strings are submitted to some basic normalization, so |
50038
8054c23b6726
(w32_make_rdb): New function.
Juanma Barranquero <lekktu@gmail.com>
parents:
49393
diff
changeset
|
6041 |
8054c23b6726
(w32_make_rdb): New function.
Juanma Barranquero <lekktu@gmail.com>
parents:
49393
diff
changeset
|
6042 [ *]option[ *]:[ *]value... |
8054c23b6726
(w32_make_rdb): New function.
Juanma Barranquero <lekktu@gmail.com>
parents:
49393
diff
changeset
|
6043 |
8054c23b6726
(w32_make_rdb): New function.
Juanma Barranquero <lekktu@gmail.com>
parents:
49393
diff
changeset
|
6044 becomes |
8054c23b6726
(w32_make_rdb): New function.
Juanma Barranquero <lekktu@gmail.com>
parents:
49393
diff
changeset
|
6045 |
8054c23b6726
(w32_make_rdb): New function.
Juanma Barranquero <lekktu@gmail.com>
parents:
49393
diff
changeset
|
6046 option:value... |
8054c23b6726
(w32_make_rdb): New function.
Juanma Barranquero <lekktu@gmail.com>
parents:
49393
diff
changeset
|
6047 |
8054c23b6726
(w32_make_rdb): New function.
Juanma Barranquero <lekktu@gmail.com>
parents:
49393
diff
changeset
|
6048 but any whitespace following value is not removed. */ |
8054c23b6726
(w32_make_rdb): New function.
Juanma Barranquero <lekktu@gmail.com>
parents:
49393
diff
changeset
|
6049 |
8054c23b6726
(w32_make_rdb): New function.
Juanma Barranquero <lekktu@gmail.com>
parents:
49393
diff
changeset
|
6050 static char * |
8054c23b6726
(w32_make_rdb): New function.
Juanma Barranquero <lekktu@gmail.com>
parents:
49393
diff
changeset
|
6051 w32_make_rdb (xrm_option) |
8054c23b6726
(w32_make_rdb): New function.
Juanma Barranquero <lekktu@gmail.com>
parents:
49393
diff
changeset
|
6052 char *xrm_option; |
8054c23b6726
(w32_make_rdb): New function.
Juanma Barranquero <lekktu@gmail.com>
parents:
49393
diff
changeset
|
6053 { |
8054c23b6726
(w32_make_rdb): New function.
Juanma Barranquero <lekktu@gmail.com>
parents:
49393
diff
changeset
|
6054 char *buffer = xmalloc (strlen (xrm_option) + 2); |
8054c23b6726
(w32_make_rdb): New function.
Juanma Barranquero <lekktu@gmail.com>
parents:
49393
diff
changeset
|
6055 char *current = buffer; |
8054c23b6726
(w32_make_rdb): New function.
Juanma Barranquero <lekktu@gmail.com>
parents:
49393
diff
changeset
|
6056 char ch; |
8054c23b6726
(w32_make_rdb): New function.
Juanma Barranquero <lekktu@gmail.com>
parents:
49393
diff
changeset
|
6057 int in_option = 1; |
8054c23b6726
(w32_make_rdb): New function.
Juanma Barranquero <lekktu@gmail.com>
parents:
49393
diff
changeset
|
6058 int before_value = 0; |
8054c23b6726
(w32_make_rdb): New function.
Juanma Barranquero <lekktu@gmail.com>
parents:
49393
diff
changeset
|
6059 |
8054c23b6726
(w32_make_rdb): New function.
Juanma Barranquero <lekktu@gmail.com>
parents:
49393
diff
changeset
|
6060 do { |
8054c23b6726
(w32_make_rdb): New function.
Juanma Barranquero <lekktu@gmail.com>
parents:
49393
diff
changeset
|
6061 ch = *xrm_option++; |
8054c23b6726
(w32_make_rdb): New function.
Juanma Barranquero <lekktu@gmail.com>
parents:
49393
diff
changeset
|
6062 |
8054c23b6726
(w32_make_rdb): New function.
Juanma Barranquero <lekktu@gmail.com>
parents:
49393
diff
changeset
|
6063 if (ch == '\n') |
8054c23b6726
(w32_make_rdb): New function.
Juanma Barranquero <lekktu@gmail.com>
parents:
49393
diff
changeset
|
6064 { |
8054c23b6726
(w32_make_rdb): New function.
Juanma Barranquero <lekktu@gmail.com>
parents:
49393
diff
changeset
|
6065 *current++ = '\0'; |
8054c23b6726
(w32_make_rdb): New function.
Juanma Barranquero <lekktu@gmail.com>
parents:
49393
diff
changeset
|
6066 in_option = 1; |
8054c23b6726
(w32_make_rdb): New function.
Juanma Barranquero <lekktu@gmail.com>
parents:
49393
diff
changeset
|
6067 before_value = 0; |
8054c23b6726
(w32_make_rdb): New function.
Juanma Barranquero <lekktu@gmail.com>
parents:
49393
diff
changeset
|
6068 } |
8054c23b6726
(w32_make_rdb): New function.
Juanma Barranquero <lekktu@gmail.com>
parents:
49393
diff
changeset
|
6069 else if (ch != ' ') |
8054c23b6726
(w32_make_rdb): New function.
Juanma Barranquero <lekktu@gmail.com>
parents:
49393
diff
changeset
|
6070 { |
8054c23b6726
(w32_make_rdb): New function.
Juanma Barranquero <lekktu@gmail.com>
parents:
49393
diff
changeset
|
6071 *current++ = ch; |
8054c23b6726
(w32_make_rdb): New function.
Juanma Barranquero <lekktu@gmail.com>
parents:
49393
diff
changeset
|
6072 if (in_option && (ch == ':')) |
8054c23b6726
(w32_make_rdb): New function.
Juanma Barranquero <lekktu@gmail.com>
parents:
49393
diff
changeset
|
6073 { |
8054c23b6726
(w32_make_rdb): New function.
Juanma Barranquero <lekktu@gmail.com>
parents:
49393
diff
changeset
|
6074 in_option = 0; |
8054c23b6726
(w32_make_rdb): New function.
Juanma Barranquero <lekktu@gmail.com>
parents:
49393
diff
changeset
|
6075 before_value = 1; |
8054c23b6726
(w32_make_rdb): New function.
Juanma Barranquero <lekktu@gmail.com>
parents:
49393
diff
changeset
|
6076 } |
8054c23b6726
(w32_make_rdb): New function.
Juanma Barranquero <lekktu@gmail.com>
parents:
49393
diff
changeset
|
6077 else if (before_value) |
8054c23b6726
(w32_make_rdb): New function.
Juanma Barranquero <lekktu@gmail.com>
parents:
49393
diff
changeset
|
6078 { |
8054c23b6726
(w32_make_rdb): New function.
Juanma Barranquero <lekktu@gmail.com>
parents:
49393
diff
changeset
|
6079 before_value = 0; |
8054c23b6726
(w32_make_rdb): New function.
Juanma Barranquero <lekktu@gmail.com>
parents:
49393
diff
changeset
|
6080 } |
8054c23b6726
(w32_make_rdb): New function.
Juanma Barranquero <lekktu@gmail.com>
parents:
49393
diff
changeset
|
6081 } |
8054c23b6726
(w32_make_rdb): New function.
Juanma Barranquero <lekktu@gmail.com>
parents:
49393
diff
changeset
|
6082 else if (!(in_option || before_value)) |
8054c23b6726
(w32_make_rdb): New function.
Juanma Barranquero <lekktu@gmail.com>
parents:
49393
diff
changeset
|
6083 { |
8054c23b6726
(w32_make_rdb): New function.
Juanma Barranquero <lekktu@gmail.com>
parents:
49393
diff
changeset
|
6084 *current++ = ch; |
8054c23b6726
(w32_make_rdb): New function.
Juanma Barranquero <lekktu@gmail.com>
parents:
49393
diff
changeset
|
6085 } |
8054c23b6726
(w32_make_rdb): New function.
Juanma Barranquero <lekktu@gmail.com>
parents:
49393
diff
changeset
|
6086 } while (ch); |
8054c23b6726
(w32_make_rdb): New function.
Juanma Barranquero <lekktu@gmail.com>
parents:
49393
diff
changeset
|
6087 |
8054c23b6726
(w32_make_rdb): New function.
Juanma Barranquero <lekktu@gmail.com>
parents:
49393
diff
changeset
|
6088 *current = '\0'; |
8054c23b6726
(w32_make_rdb): New function.
Juanma Barranquero <lekktu@gmail.com>
parents:
49393
diff
changeset
|
6089 |
8054c23b6726
(w32_make_rdb): New function.
Juanma Barranquero <lekktu@gmail.com>
parents:
49393
diff
changeset
|
6090 return buffer; |
8054c23b6726
(w32_make_rdb): New function.
Juanma Barranquero <lekktu@gmail.com>
parents:
49393
diff
changeset
|
6091 } |
8054c23b6726
(w32_make_rdb): New function.
Juanma Barranquero <lekktu@gmail.com>
parents:
49393
diff
changeset
|
6092 |
83569
86395c339701
(w32_set_terminal_modes, w32_reset_terminal_modes):
Jason Rumney <jasonr@gnu.org>
parents:
83556
diff
changeset
|
6093 void |
86395c339701
(w32_set_terminal_modes, w32_reset_terminal_modes):
Jason Rumney <jasonr@gnu.org>
parents:
83556
diff
changeset
|
6094 x_flush (struct frame * f) |
86395c339701
(w32_set_terminal_modes, w32_reset_terminal_modes):
Jason Rumney <jasonr@gnu.org>
parents:
83556
diff
changeset
|
6095 { /* Nothing to do */ } |
86395c339701
(w32_set_terminal_modes, w32_reset_terminal_modes):
Jason Rumney <jasonr@gnu.org>
parents:
83556
diff
changeset
|
6096 |
86395c339701
(w32_set_terminal_modes, w32_reset_terminal_modes):
Jason Rumney <jasonr@gnu.org>
parents:
83556
diff
changeset
|
6097 |
86395c339701
(w32_set_terminal_modes, w32_reset_terminal_modes):
Jason Rumney <jasonr@gnu.org>
parents:
83556
diff
changeset
|
6098 extern frame_parm_handler w32_frame_parm_handlers[]; |
86395c339701
(w32_set_terminal_modes, w32_reset_terminal_modes):
Jason Rumney <jasonr@gnu.org>
parents:
83556
diff
changeset
|
6099 |
86395c339701
(w32_set_terminal_modes, w32_reset_terminal_modes):
Jason Rumney <jasonr@gnu.org>
parents:
83556
diff
changeset
|
6100 static struct redisplay_interface w32_redisplay_interface = |
86395c339701
(w32_set_terminal_modes, w32_reset_terminal_modes):
Jason Rumney <jasonr@gnu.org>
parents:
83556
diff
changeset
|
6101 { |
86395c339701
(w32_set_terminal_modes, w32_reset_terminal_modes):
Jason Rumney <jasonr@gnu.org>
parents:
83556
diff
changeset
|
6102 w32_frame_parm_handlers, |
86395c339701
(w32_set_terminal_modes, w32_reset_terminal_modes):
Jason Rumney <jasonr@gnu.org>
parents:
83556
diff
changeset
|
6103 x_produce_glyphs, |
86395c339701
(w32_set_terminal_modes, w32_reset_terminal_modes):
Jason Rumney <jasonr@gnu.org>
parents:
83556
diff
changeset
|
6104 x_write_glyphs, |
86395c339701
(w32_set_terminal_modes, w32_reset_terminal_modes):
Jason Rumney <jasonr@gnu.org>
parents:
83556
diff
changeset
|
6105 x_insert_glyphs, |
86395c339701
(w32_set_terminal_modes, w32_reset_terminal_modes):
Jason Rumney <jasonr@gnu.org>
parents:
83556
diff
changeset
|
6106 x_clear_end_of_line, |
86395c339701
(w32_set_terminal_modes, w32_reset_terminal_modes):
Jason Rumney <jasonr@gnu.org>
parents:
83556
diff
changeset
|
6107 x_scroll_run, |
86395c339701
(w32_set_terminal_modes, w32_reset_terminal_modes):
Jason Rumney <jasonr@gnu.org>
parents:
83556
diff
changeset
|
6108 x_after_update_window_line, |
86395c339701
(w32_set_terminal_modes, w32_reset_terminal_modes):
Jason Rumney <jasonr@gnu.org>
parents:
83556
diff
changeset
|
6109 x_update_window_begin, |
86395c339701
(w32_set_terminal_modes, w32_reset_terminal_modes):
Jason Rumney <jasonr@gnu.org>
parents:
83556
diff
changeset
|
6110 x_update_window_end, |
86395c339701
(w32_set_terminal_modes, w32_reset_terminal_modes):
Jason Rumney <jasonr@gnu.org>
parents:
83556
diff
changeset
|
6111 x_cursor_to, |
86395c339701
(w32_set_terminal_modes, w32_reset_terminal_modes):
Jason Rumney <jasonr@gnu.org>
parents:
83556
diff
changeset
|
6112 x_flush, |
86395c339701
(w32_set_terminal_modes, w32_reset_terminal_modes):
Jason Rumney <jasonr@gnu.org>
parents:
83556
diff
changeset
|
6113 0, /* flush_display_optional */ |
86395c339701
(w32_set_terminal_modes, w32_reset_terminal_modes):
Jason Rumney <jasonr@gnu.org>
parents:
83556
diff
changeset
|
6114 x_clear_window_mouse_face, |
94970
2905831ea99f
(w32_get_glyph_overhangs): Remove.
Jason Rumney <jasonr@gnu.org>
parents:
94963
diff
changeset
|
6115 x_get_glyph_overhangs, |
83569
86395c339701
(w32_set_terminal_modes, w32_reset_terminal_modes):
Jason Rumney <jasonr@gnu.org>
parents:
83556
diff
changeset
|
6116 x_fix_overlapping_area, |
86395c339701
(w32_set_terminal_modes, w32_reset_terminal_modes):
Jason Rumney <jasonr@gnu.org>
parents:
83556
diff
changeset
|
6117 w32_draw_fringe_bitmap, |
86395c339701
(w32_set_terminal_modes, w32_reset_terminal_modes):
Jason Rumney <jasonr@gnu.org>
parents:
83556
diff
changeset
|
6118 w32_define_fringe_bitmap, |
86395c339701
(w32_set_terminal_modes, w32_reset_terminal_modes):
Jason Rumney <jasonr@gnu.org>
parents:
83556
diff
changeset
|
6119 w32_destroy_fringe_bitmap, |
93913
7e2e9d86af3b
(w32_compute_glyph_string_overhangs): Compute overhangs
Jason Rumney <jasonr@gnu.org>
parents:
92433
diff
changeset
|
6120 w32_compute_glyph_string_overhangs, |
83569
86395c339701
(w32_set_terminal_modes, w32_reset_terminal_modes):
Jason Rumney <jasonr@gnu.org>
parents:
83556
diff
changeset
|
6121 x_draw_glyph_string, |
86395c339701
(w32_set_terminal_modes, w32_reset_terminal_modes):
Jason Rumney <jasonr@gnu.org>
parents:
83556
diff
changeset
|
6122 w32_define_frame_cursor, |
86395c339701
(w32_set_terminal_modes, w32_reset_terminal_modes):
Jason Rumney <jasonr@gnu.org>
parents:
83556
diff
changeset
|
6123 w32_clear_frame_area, |
86395c339701
(w32_set_terminal_modes, w32_reset_terminal_modes):
Jason Rumney <jasonr@gnu.org>
parents:
83556
diff
changeset
|
6124 w32_draw_window_cursor, |
86395c339701
(w32_set_terminal_modes, w32_reset_terminal_modes):
Jason Rumney <jasonr@gnu.org>
parents:
83556
diff
changeset
|
6125 w32_draw_vertical_window_border, |
86395c339701
(w32_set_terminal_modes, w32_reset_terminal_modes):
Jason Rumney <jasonr@gnu.org>
parents:
83556
diff
changeset
|
6126 w32_shift_glyphs_for_insert |
86395c339701
(w32_set_terminal_modes, w32_reset_terminal_modes):
Jason Rumney <jasonr@gnu.org>
parents:
83556
diff
changeset
|
6127 }; |
86395c339701
(w32_set_terminal_modes, w32_reset_terminal_modes):
Jason Rumney <jasonr@gnu.org>
parents:
83556
diff
changeset
|
6128 |
86395c339701
(w32_set_terminal_modes, w32_reset_terminal_modes):
Jason Rumney <jasonr@gnu.org>
parents:
83556
diff
changeset
|
6129 static void x_delete_terminal (struct terminal *term); |
86395c339701
(w32_set_terminal_modes, w32_reset_terminal_modes):
Jason Rumney <jasonr@gnu.org>
parents:
83556
diff
changeset
|
6130 |
86395c339701
(w32_set_terminal_modes, w32_reset_terminal_modes):
Jason Rumney <jasonr@gnu.org>
parents:
83556
diff
changeset
|
6131 static struct terminal * |
86395c339701
(w32_set_terminal_modes, w32_reset_terminal_modes):
Jason Rumney <jasonr@gnu.org>
parents:
83556
diff
changeset
|
6132 w32_create_terminal (struct w32_display_info *dpyinfo) |
86395c339701
(w32_set_terminal_modes, w32_reset_terminal_modes):
Jason Rumney <jasonr@gnu.org>
parents:
83556
diff
changeset
|
6133 { |
86395c339701
(w32_set_terminal_modes, w32_reset_terminal_modes):
Jason Rumney <jasonr@gnu.org>
parents:
83556
diff
changeset
|
6134 struct terminal *terminal; |
84764
8556c5b11c62
(x_draw_glyph_string): Use strike_through_color, not underline_color,
Juanma Barranquero <lekktu@gmail.com>
parents:
84686
diff
changeset
|
6135 |
83569
86395c339701
(w32_set_terminal_modes, w32_reset_terminal_modes):
Jason Rumney <jasonr@gnu.org>
parents:
83556
diff
changeset
|
6136 terminal = create_terminal (); |
86395c339701
(w32_set_terminal_modes, w32_reset_terminal_modes):
Jason Rumney <jasonr@gnu.org>
parents:
83556
diff
changeset
|
6137 |
86395c339701
(w32_set_terminal_modes, w32_reset_terminal_modes):
Jason Rumney <jasonr@gnu.org>
parents:
83556
diff
changeset
|
6138 terminal->type = output_w32; |
86395c339701
(w32_set_terminal_modes, w32_reset_terminal_modes):
Jason Rumney <jasonr@gnu.org>
parents:
83556
diff
changeset
|
6139 terminal->display_info.w32 = dpyinfo; |
86395c339701
(w32_set_terminal_modes, w32_reset_terminal_modes):
Jason Rumney <jasonr@gnu.org>
parents:
83556
diff
changeset
|
6140 dpyinfo->terminal = terminal; |
86395c339701
(w32_set_terminal_modes, w32_reset_terminal_modes):
Jason Rumney <jasonr@gnu.org>
parents:
83556
diff
changeset
|
6141 |
86395c339701
(w32_set_terminal_modes, w32_reset_terminal_modes):
Jason Rumney <jasonr@gnu.org>
parents:
83556
diff
changeset
|
6142 /* MSVC does not type K&R functions with no arguments correctly, and |
86395c339701
(w32_set_terminal_modes, w32_reset_terminal_modes):
Jason Rumney <jasonr@gnu.org>
parents:
83556
diff
changeset
|
6143 so we must explicitly cast them. */ |
86395c339701
(w32_set_terminal_modes, w32_reset_terminal_modes):
Jason Rumney <jasonr@gnu.org>
parents:
83556
diff
changeset
|
6144 terminal->clear_frame_hook = x_clear_frame; |
86395c339701
(w32_set_terminal_modes, w32_reset_terminal_modes):
Jason Rumney <jasonr@gnu.org>
parents:
83556
diff
changeset
|
6145 terminal->ins_del_lines_hook = x_ins_del_lines; |
86395c339701
(w32_set_terminal_modes, w32_reset_terminal_modes):
Jason Rumney <jasonr@gnu.org>
parents:
83556
diff
changeset
|
6146 terminal->delete_glyphs_hook = x_delete_glyphs; |
86395c339701
(w32_set_terminal_modes, w32_reset_terminal_modes):
Jason Rumney <jasonr@gnu.org>
parents:
83556
diff
changeset
|
6147 terminal->ring_bell_hook = w32_ring_bell; |
86395c339701
(w32_set_terminal_modes, w32_reset_terminal_modes):
Jason Rumney <jasonr@gnu.org>
parents:
83556
diff
changeset
|
6148 terminal->reset_terminal_modes_hook = w32_reset_terminal_modes; |
86395c339701
(w32_set_terminal_modes, w32_reset_terminal_modes):
Jason Rumney <jasonr@gnu.org>
parents:
83556
diff
changeset
|
6149 terminal->set_terminal_modes_hook = w32_set_terminal_modes; |
86395c339701
(w32_set_terminal_modes, w32_reset_terminal_modes):
Jason Rumney <jasonr@gnu.org>
parents:
83556
diff
changeset
|
6150 terminal->update_begin_hook = x_update_begin; |
86395c339701
(w32_set_terminal_modes, w32_reset_terminal_modes):
Jason Rumney <jasonr@gnu.org>
parents:
83556
diff
changeset
|
6151 terminal->update_end_hook = x_update_end; |
86395c339701
(w32_set_terminal_modes, w32_reset_terminal_modes):
Jason Rumney <jasonr@gnu.org>
parents:
83556
diff
changeset
|
6152 terminal->set_terminal_window_hook = w32_set_terminal_window; |
86395c339701
(w32_set_terminal_modes, w32_reset_terminal_modes):
Jason Rumney <jasonr@gnu.org>
parents:
83556
diff
changeset
|
6153 terminal->read_socket_hook = w32_read_socket; |
86395c339701
(w32_set_terminal_modes, w32_reset_terminal_modes):
Jason Rumney <jasonr@gnu.org>
parents:
83556
diff
changeset
|
6154 terminal->frame_up_to_date_hook = w32_frame_up_to_date; |
86395c339701
(w32_set_terminal_modes, w32_reset_terminal_modes):
Jason Rumney <jasonr@gnu.org>
parents:
83556
diff
changeset
|
6155 terminal->mouse_position_hook = w32_mouse_position; |
86395c339701
(w32_set_terminal_modes, w32_reset_terminal_modes):
Jason Rumney <jasonr@gnu.org>
parents:
83556
diff
changeset
|
6156 terminal->frame_rehighlight_hook = w32_frame_rehighlight; |
86395c339701
(w32_set_terminal_modes, w32_reset_terminal_modes):
Jason Rumney <jasonr@gnu.org>
parents:
83556
diff
changeset
|
6157 terminal->frame_raise_lower_hook = w32_frame_raise_lower; |
86395c339701
(w32_set_terminal_modes, w32_reset_terminal_modes):
Jason Rumney <jasonr@gnu.org>
parents:
83556
diff
changeset
|
6158 // terminal->fullscreen_hook = XTfullscreen_hook; |
86395c339701
(w32_set_terminal_modes, w32_reset_terminal_modes):
Jason Rumney <jasonr@gnu.org>
parents:
83556
diff
changeset
|
6159 terminal->set_vertical_scroll_bar_hook = w32_set_vertical_scroll_bar; |
86395c339701
(w32_set_terminal_modes, w32_reset_terminal_modes):
Jason Rumney <jasonr@gnu.org>
parents:
83556
diff
changeset
|
6160 terminal->condemn_scroll_bars_hook = w32_condemn_scroll_bars; |
86395c339701
(w32_set_terminal_modes, w32_reset_terminal_modes):
Jason Rumney <jasonr@gnu.org>
parents:
83556
diff
changeset
|
6161 terminal->redeem_scroll_bar_hook = w32_redeem_scroll_bar; |
86395c339701
(w32_set_terminal_modes, w32_reset_terminal_modes):
Jason Rumney <jasonr@gnu.org>
parents:
83556
diff
changeset
|
6162 terminal->judge_scroll_bars_hook = w32_judge_scroll_bars; |
86395c339701
(w32_set_terminal_modes, w32_reset_terminal_modes):
Jason Rumney <jasonr@gnu.org>
parents:
83556
diff
changeset
|
6163 |
86395c339701
(w32_set_terminal_modes, w32_reset_terminal_modes):
Jason Rumney <jasonr@gnu.org>
parents:
83556
diff
changeset
|
6164 terminal->delete_frame_hook = x_destroy_window; |
86395c339701
(w32_set_terminal_modes, w32_reset_terminal_modes):
Jason Rumney <jasonr@gnu.org>
parents:
83556
diff
changeset
|
6165 terminal->delete_terminal_hook = x_delete_terminal; |
84764
8556c5b11c62
(x_draw_glyph_string): Use strike_through_color, not underline_color,
Juanma Barranquero <lekktu@gmail.com>
parents:
84686
diff
changeset
|
6166 |
83569
86395c339701
(w32_set_terminal_modes, w32_reset_terminal_modes):
Jason Rumney <jasonr@gnu.org>
parents:
83556
diff
changeset
|
6167 terminal->rif = &w32_redisplay_interface; |
86395c339701
(w32_set_terminal_modes, w32_reset_terminal_modes):
Jason Rumney <jasonr@gnu.org>
parents:
83556
diff
changeset
|
6168 terminal->scroll_region_ok = 1; /* We'll scroll partial frames. */ |
86395c339701
(w32_set_terminal_modes, w32_reset_terminal_modes):
Jason Rumney <jasonr@gnu.org>
parents:
83556
diff
changeset
|
6169 terminal->char_ins_del_ok = 1; |
86395c339701
(w32_set_terminal_modes, w32_reset_terminal_modes):
Jason Rumney <jasonr@gnu.org>
parents:
83556
diff
changeset
|
6170 terminal->line_ins_del_ok = 1; /* We'll just blt 'em. */ |
86395c339701
(w32_set_terminal_modes, w32_reset_terminal_modes):
Jason Rumney <jasonr@gnu.org>
parents:
83556
diff
changeset
|
6171 terminal->fast_clear_end_of_line = 1; /* X does this well. */ |
86395c339701
(w32_set_terminal_modes, w32_reset_terminal_modes):
Jason Rumney <jasonr@gnu.org>
parents:
83556
diff
changeset
|
6172 terminal->memory_below_frame = 0; /* We don't remember what scrolls |
86395c339701
(w32_set_terminal_modes, w32_reset_terminal_modes):
Jason Rumney <jasonr@gnu.org>
parents:
83556
diff
changeset
|
6173 off the bottom. */ |
86395c339701
(w32_set_terminal_modes, w32_reset_terminal_modes):
Jason Rumney <jasonr@gnu.org>
parents:
83556
diff
changeset
|
6174 |
83876
37f582a71062
Support for horizontal scroll wheels on some mice:
Jason Rumney <jasonr@gnu.org>
parents:
83652
diff
changeset
|
6175 /* We don't yet support separate terminals on W32, so don't try to share |
37f582a71062
Support for horizontal scroll wheels on some mice:
Jason Rumney <jasonr@gnu.org>
parents:
83652
diff
changeset
|
6176 keyboards between virtual terminals that are on the same physical |
37f582a71062
Support for horizontal scroll wheels on some mice:
Jason Rumney <jasonr@gnu.org>
parents:
83652
diff
changeset
|
6177 terminal like X does. */ |
37f582a71062
Support for horizontal scroll wheels on some mice:
Jason Rumney <jasonr@gnu.org>
parents:
83652
diff
changeset
|
6178 terminal->kboard = (KBOARD *) xmalloc (sizeof (KBOARD)); |
37f582a71062
Support for horizontal scroll wheels on some mice:
Jason Rumney <jasonr@gnu.org>
parents:
83652
diff
changeset
|
6179 init_kboard (terminal->kboard); |
85614
9f3a25157e4f
Make `window-system' into a keyboard-local variable (rather than
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
85311
diff
changeset
|
6180 terminal->kboard->Vwindow_system = intern ("w32"); |
83876
37f582a71062
Support for horizontal scroll wheels on some mice:
Jason Rumney <jasonr@gnu.org>
parents:
83652
diff
changeset
|
6181 terminal->kboard->next_kboard = all_kboards; |
37f582a71062
Support for horizontal scroll wheels on some mice:
Jason Rumney <jasonr@gnu.org>
parents:
83652
diff
changeset
|
6182 all_kboards = terminal->kboard; |
37f582a71062
Support for horizontal scroll wheels on some mice:
Jason Rumney <jasonr@gnu.org>
parents:
83652
diff
changeset
|
6183 /* Don't let the initial kboard remain current longer than necessary. |
37f582a71062
Support for horizontal scroll wheels on some mice:
Jason Rumney <jasonr@gnu.org>
parents:
83652
diff
changeset
|
6184 That would cause problems if a file loaded on startup tries to |
37f582a71062
Support for horizontal scroll wheels on some mice:
Jason Rumney <jasonr@gnu.org>
parents:
83652
diff
changeset
|
6185 prompt in the mini-buffer. */ |
37f582a71062
Support for horizontal scroll wheels on some mice:
Jason Rumney <jasonr@gnu.org>
parents:
83652
diff
changeset
|
6186 if (current_kboard == initial_kboard) |
37f582a71062
Support for horizontal scroll wheels on some mice:
Jason Rumney <jasonr@gnu.org>
parents:
83652
diff
changeset
|
6187 current_kboard = terminal->kboard; |
37f582a71062
Support for horizontal scroll wheels on some mice:
Jason Rumney <jasonr@gnu.org>
parents:
83652
diff
changeset
|
6188 terminal->kboard->reference_count++; |
37f582a71062
Support for horizontal scroll wheels on some mice:
Jason Rumney <jasonr@gnu.org>
parents:
83652
diff
changeset
|
6189 |
83569
86395c339701
(w32_set_terminal_modes, w32_reset_terminal_modes):
Jason Rumney <jasonr@gnu.org>
parents:
83556
diff
changeset
|
6190 return terminal; |
86395c339701
(w32_set_terminal_modes, w32_reset_terminal_modes):
Jason Rumney <jasonr@gnu.org>
parents:
83556
diff
changeset
|
6191 } |
86395c339701
(w32_set_terminal_modes, w32_reset_terminal_modes):
Jason Rumney <jasonr@gnu.org>
parents:
83556
diff
changeset
|
6192 |
86395c339701
(w32_set_terminal_modes, w32_reset_terminal_modes):
Jason Rumney <jasonr@gnu.org>
parents:
83556
diff
changeset
|
6193 static void |
86395c339701
(w32_set_terminal_modes, w32_reset_terminal_modes):
Jason Rumney <jasonr@gnu.org>
parents:
83556
diff
changeset
|
6194 x_delete_terminal (struct terminal *terminal) |
86395c339701
(w32_set_terminal_modes, w32_reset_terminal_modes):
Jason Rumney <jasonr@gnu.org>
parents:
83556
diff
changeset
|
6195 { |
86395c339701
(w32_set_terminal_modes, w32_reset_terminal_modes):
Jason Rumney <jasonr@gnu.org>
parents:
83556
diff
changeset
|
6196 struct w32_display_info *dpyinfo = terminal->display_info.w32; |
86395c339701
(w32_set_terminal_modes, w32_reset_terminal_modes):
Jason Rumney <jasonr@gnu.org>
parents:
83556
diff
changeset
|
6197 int i; |
86395c339701
(w32_set_terminal_modes, w32_reset_terminal_modes):
Jason Rumney <jasonr@gnu.org>
parents:
83556
diff
changeset
|
6198 |
100666
dab9cf44bf3f
In comments, write delete_frame instead of Fdelete_frame.
Martin Rudalics <rudalics@gmx.at>
parents:
100400
diff
changeset
|
6199 /* Protect against recursive calls. delete_frame in |
83569
86395c339701
(w32_set_terminal_modes, w32_reset_terminal_modes):
Jason Rumney <jasonr@gnu.org>
parents:
83556
diff
changeset
|
6200 delete_terminal calls us back when it deletes our last frame. */ |
84686
e68aa34ac58f
(w32_delete_terminal): Use terminal->name as liveness status.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
84543
diff
changeset
|
6201 if (!terminal->name) |
83569
86395c339701
(w32_set_terminal_modes, w32_reset_terminal_modes):
Jason Rumney <jasonr@gnu.org>
parents:
83556
diff
changeset
|
6202 return; |
86395c339701
(w32_set_terminal_modes, w32_reset_terminal_modes):
Jason Rumney <jasonr@gnu.org>
parents:
83556
diff
changeset
|
6203 |
86395c339701
(w32_set_terminal_modes, w32_reset_terminal_modes):
Jason Rumney <jasonr@gnu.org>
parents:
83556
diff
changeset
|
6204 BLOCK_INPUT; |
86395c339701
(w32_set_terminal_modes, w32_reset_terminal_modes):
Jason Rumney <jasonr@gnu.org>
parents:
83556
diff
changeset
|
6205 |
86395c339701
(w32_set_terminal_modes, w32_reset_terminal_modes):
Jason Rumney <jasonr@gnu.org>
parents:
83556
diff
changeset
|
6206 x_delete_display (dpyinfo); |
86395c339701
(w32_set_terminal_modes, w32_reset_terminal_modes):
Jason Rumney <jasonr@gnu.org>
parents:
83556
diff
changeset
|
6207 UNBLOCK_INPUT; |
86395c339701
(w32_set_terminal_modes, w32_reset_terminal_modes):
Jason Rumney <jasonr@gnu.org>
parents:
83556
diff
changeset
|
6208 } |
86395c339701
(w32_set_terminal_modes, w32_reset_terminal_modes):
Jason Rumney <jasonr@gnu.org>
parents:
83556
diff
changeset
|
6209 |
16588
481b7874a1e9
Change identifiers of the form win32* to w32*.
Geoff Voelker <voelker@cs.washington.edu>
parents:
16326
diff
changeset
|
6210 struct w32_display_info * |
481b7874a1e9
Change identifiers of the form win32* to w32*.
Geoff Voelker <voelker@cs.washington.edu>
parents:
16326
diff
changeset
|
6211 w32_term_init (display_name, xrm_option, resource_name) |
13434 | 6212 Lisp_Object display_name; |
6213 char *xrm_option; | |
6214 char *resource_name; | |
6215 { | |
16588
481b7874a1e9
Change identifiers of the form win32* to w32*.
Geoff Voelker <voelker@cs.washington.edu>
parents:
16326
diff
changeset
|
6216 struct w32_display_info *dpyinfo; |
83569
86395c339701
(w32_set_terminal_modes, w32_reset_terminal_modes):
Jason Rumney <jasonr@gnu.org>
parents:
83556
diff
changeset
|
6217 struct terminal *terminal; |
13434 | 6218 HDC hdc; |
48218
01e253345507
(w32_draw_fringe_bitmap): Remove unused local variable window.
Juanma Barranquero <lekktu@gmail.com>
parents:
48025
diff
changeset
|
6219 |
13434 | 6220 BLOCK_INPUT; |
48218
01e253345507
(w32_draw_fringe_bitmap): Remove unused local variable window.
Juanma Barranquero <lekktu@gmail.com>
parents:
48025
diff
changeset
|
6221 |
16588
481b7874a1e9
Change identifiers of the form win32* to w32*.
Geoff Voelker <voelker@cs.washington.edu>
parents:
16326
diff
changeset
|
6222 if (!w32_initialized) |
13434 | 6223 { |
16588
481b7874a1e9
Change identifiers of the form win32* to w32*.
Geoff Voelker <voelker@cs.washington.edu>
parents:
16326
diff
changeset
|
6224 w32_initialize (); |
481b7874a1e9
Change identifiers of the form win32* to w32*.
Geoff Voelker <voelker@cs.washington.edu>
parents:
16326
diff
changeset
|
6225 w32_initialized = 1; |
13434 | 6226 } |
48218
01e253345507
(w32_draw_fringe_bitmap): Remove unused local variable window.
Juanma Barranquero <lekktu@gmail.com>
parents:
48025
diff
changeset
|
6227 |
27889
51d0b4b8fc6a
(w32_display_info_for_display): Remove unused function.
Jason Rumney <jasonr@gnu.org>
parents:
27631
diff
changeset
|
6228 w32_initialize_display_info (display_name); |
51d0b4b8fc6a
(w32_display_info_for_display): Remove unused function.
Jason Rumney <jasonr@gnu.org>
parents:
27631
diff
changeset
|
6229 |
16588
481b7874a1e9
Change identifiers of the form win32* to w32*.
Geoff Voelker <voelker@cs.washington.edu>
parents:
16326
diff
changeset
|
6230 dpyinfo = &one_w32_display_info; |
83569
86395c339701
(w32_set_terminal_modes, w32_reset_terminal_modes):
Jason Rumney <jasonr@gnu.org>
parents:
83556
diff
changeset
|
6231 terminal = w32_create_terminal (dpyinfo); |
86395c339701
(w32_set_terminal_modes, w32_reset_terminal_modes):
Jason Rumney <jasonr@gnu.org>
parents:
83556
diff
changeset
|
6232 |
86395c339701
(w32_set_terminal_modes, w32_reset_terminal_modes):
Jason Rumney <jasonr@gnu.org>
parents:
83556
diff
changeset
|
6233 /* Set the name of the terminal. */ |
86395c339701
(w32_set_terminal_modes, w32_reset_terminal_modes):
Jason Rumney <jasonr@gnu.org>
parents:
83556
diff
changeset
|
6234 terminal->name = (char *) xmalloc (SBYTES (display_name) + 1); |
86395c339701
(w32_set_terminal_modes, w32_reset_terminal_modes):
Jason Rumney <jasonr@gnu.org>
parents:
83556
diff
changeset
|
6235 strncpy (terminal->name, SDATA (display_name), SBYTES (display_name)); |
86395c339701
(w32_set_terminal_modes, w32_reset_terminal_modes):
Jason Rumney <jasonr@gnu.org>
parents:
83556
diff
changeset
|
6236 terminal->name[SBYTES (display_name)] = 0; |
38570
9606b955465e
(x_display_list): New variable.
Andrew Innes <andrewi@gnu.org>
parents:
36315
diff
changeset
|
6237 |
50038
8054c23b6726
(w32_make_rdb): New function.
Juanma Barranquero <lekktu@gmail.com>
parents:
49393
diff
changeset
|
6238 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
|
6239 |
38570
9606b955465e
(x_display_list): New variable.
Andrew Innes <andrewi@gnu.org>
parents:
36315
diff
changeset
|
6240 /* Put this display on the chain. */ |
9606b955465e
(x_display_list): New variable.
Andrew Innes <andrewi@gnu.org>
parents:
36315
diff
changeset
|
6241 dpyinfo->next = x_display_list; |
9606b955465e
(x_display_list): New variable.
Andrew Innes <andrewi@gnu.org>
parents:
36315
diff
changeset
|
6242 x_display_list = dpyinfo; |
48218
01e253345507
(w32_draw_fringe_bitmap): Remove unused local variable window.
Juanma Barranquero <lekktu@gmail.com>
parents:
48025
diff
changeset
|
6243 |
101977
9a5d93661ee4
(x_display_pixel_height, x_display_pixel_width):
Jason Rumney <jasonr@gnu.org>
parents:
101682
diff
changeset
|
6244 hdc = GetDC (NULL); |
27402
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
6245 |
13434 | 6246 dpyinfo->root_window = GetDesktopWindow (); |
6247 dpyinfo->n_planes = GetDeviceCaps (hdc, PLANES); | |
6248 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
|
6249 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
|
6250 dpyinfo->resy = GetDeviceCaps (hdc, LOGPIXELSY); |
15151
ed6ddfc0d954
(Vwindow_system): Declared.
Geoff Voelker <voelker@cs.washington.edu>
parents:
15035
diff
changeset
|
6251 dpyinfo->has_palette = GetDeviceCaps (hdc, RASTERCAPS) & RC_PALETTE; |
101977
9a5d93661ee4
(x_display_pixel_height, x_display_pixel_width):
Jason Rumney <jasonr@gnu.org>
parents:
101682
diff
changeset
|
6252 ReleaseDC (NULL, hdc); |
15151
ed6ddfc0d954
(Vwindow_system): Declared.
Geoff Voelker <voelker@cs.washington.edu>
parents:
15035
diff
changeset
|
6253 |
ed6ddfc0d954
(Vwindow_system): Declared.
Geoff Voelker <voelker@cs.washington.edu>
parents:
15035
diff
changeset
|
6254 /* initialise palette with white and black */ |
ed6ddfc0d954
(Vwindow_system): Declared.
Geoff Voelker <voelker@cs.washington.edu>
parents:
15035
diff
changeset
|
6255 { |
47981
74b52651467d
(w32_term_init): Pass XColor to w32_define_color, not COLORREF.
Juanma Barranquero <lekktu@gmail.com>
parents:
47148
diff
changeset
|
6256 XColor color; |
27514
9625ad0c0f52
(w32_term_init): Swap resx and height_in, resy and
Jason Rumney <jasonr@gnu.org>
parents:
27406
diff
changeset
|
6257 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
|
6258 w32_defined_color (0, "black", &color, 1); |
15151
ed6ddfc0d954
(Vwindow_system): Declared.
Geoff Voelker <voelker@cs.washington.edu>
parents:
15035
diff
changeset
|
6259 } |
ed6ddfc0d954
(Vwindow_system): Declared.
Geoff Voelker <voelker@cs.washington.edu>
parents:
15035
diff
changeset
|
6260 |
83609
91cab9b5f774
(w32_term_init): Call add_keyboard_wait_descriptor.
Jason Rumney <jasonr@gnu.org>
parents:
83569
diff
changeset
|
6261 /* Add the default keyboard. */ |
91cab9b5f774
(w32_term_init): Call add_keyboard_wait_descriptor.
Jason Rumney <jasonr@gnu.org>
parents:
83569
diff
changeset
|
6262 add_keyboard_wait_descriptor (0); |
91cab9b5f774
(w32_term_init): Call add_keyboard_wait_descriptor.
Jason Rumney <jasonr@gnu.org>
parents:
83569
diff
changeset
|
6263 |
50096 | 6264 /* Create Fringe Bitmaps and store them for later use. |
6265 | |
6266 On W32, bitmaps are all unsigned short, as Windows requires | |
6267 bitmap data to be Word aligned. For some reason they are | |
6268 horizontally reflected compared to how they appear on X, so we | |
6269 need to bitswap and convert to unsigned shorts before creating | |
6270 the bitmaps. */ | |
84543
c7b52c80ffa2
(w32_term_init): Pass rif to w32_init_fringe.
Jason Rumney <jasonr@gnu.org>
parents:
83876
diff
changeset
|
6271 w32_init_fringe (terminal->rif); |
27889
51d0b4b8fc6a
(w32_display_info_for_display): Remove unused function.
Jason Rumney <jasonr@gnu.org>
parents:
27631
diff
changeset
|
6272 |
13434 | 6273 #ifdef F_SETOWN |
6274 fcntl (connection, F_SETOWN, getpid ()); | |
6275 #endif /* ! defined (F_SETOWN) */ | |
6276 | |
6277 #ifdef SIGIO | |
6278 if (interrupt_input) | |
6279 init_sigio (connection); | |
6280 #endif /* ! defined (SIGIO) */ | |
6281 | |
6282 UNBLOCK_INPUT; | |
6283 | |
6284 return dpyinfo; | |
6285 } | |
6286 | |
6287 /* Get rid of display DPYINFO, assuming all frames are already gone. */ | |
6288 void | |
6289 x_delete_display (dpyinfo) | |
16588
481b7874a1e9
Change identifiers of the form win32* to w32*.
Geoff Voelker <voelker@cs.washington.edu>
parents:
16326
diff
changeset
|
6290 struct w32_display_info *dpyinfo; |
13434 | 6291 { |
16588
481b7874a1e9
Change identifiers of the form win32* to w32*.
Geoff Voelker <voelker@cs.washington.edu>
parents:
16326
diff
changeset
|
6292 /* Discard this display from w32_display_name_list and w32_display_list. |
13434 | 6293 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
|
6294 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
|
6295 && 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
|
6296 w32_display_name_list = XCDR (w32_display_name_list); |
13434 | 6297 else |
6298 { | |
6299 Lisp_Object tail; | |
6300 | |
16588
481b7874a1e9
Change identifiers of the form win32* to w32*.
Geoff Voelker <voelker@cs.washington.edu>
parents:
16326
diff
changeset
|
6301 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
|
6302 while (CONSP (tail) && CONSP (XCDR (tail))) |
13434 | 6303 { |
27889
51d0b4b8fc6a
(w32_display_info_for_display): Remove unused function.
Jason Rumney <jasonr@gnu.org>
parents:
27631
diff
changeset
|
6304 if (EQ (XCAR (XCDR (tail)), dpyinfo->name_list_element)) |
13434 | 6305 { |
39973
579177964efa
Avoid (most) uses of XCAR/XCDR as lvalues, for flexibility in experimenting
Ken Raeburn <raeburn@raeburn.org>
parents:
39697
diff
changeset
|
6306 XSETCDR (tail, XCDR (XCDR (tail))); |
13434 | 6307 break; |
6308 } | |
25646
9154af188477
Use XCAR and XCDR instead of explicit member references.
Ken Raeburn <raeburn@raeburn.org>
parents:
25236
diff
changeset
|
6309 tail = XCDR (tail); |
13434 | 6310 } |
6311 } | |
6312 | |
15151
ed6ddfc0d954
(Vwindow_system): Declared.
Geoff Voelker <voelker@cs.washington.edu>
parents:
15035
diff
changeset
|
6313 /* free palette table */ |
ed6ddfc0d954
(Vwindow_system): Declared.
Geoff Voelker <voelker@cs.washington.edu>
parents:
15035
diff
changeset
|
6314 { |
16588
481b7874a1e9
Change identifiers of the form win32* to w32*.
Geoff Voelker <voelker@cs.washington.edu>
parents:
16326
diff
changeset
|
6315 struct w32_palette_entry * plist; |
15151
ed6ddfc0d954
(Vwindow_system): Declared.
Geoff Voelker <voelker@cs.washington.edu>
parents:
15035
diff
changeset
|
6316 |
ed6ddfc0d954
(Vwindow_system): Declared.
Geoff Voelker <voelker@cs.washington.edu>
parents:
15035
diff
changeset
|
6317 plist = dpyinfo->color_list; |
ed6ddfc0d954
(Vwindow_system): Declared.
Geoff Voelker <voelker@cs.washington.edu>
parents:
15035
diff
changeset
|
6318 while (plist) |
ed6ddfc0d954
(Vwindow_system): Declared.
Geoff Voelker <voelker@cs.washington.edu>
parents:
15035
diff
changeset
|
6319 { |
16588
481b7874a1e9
Change identifiers of the form win32* to w32*.
Geoff Voelker <voelker@cs.washington.edu>
parents:
16326
diff
changeset
|
6320 struct w32_palette_entry * pentry = plist; |
15151
ed6ddfc0d954
(Vwindow_system): Declared.
Geoff Voelker <voelker@cs.washington.edu>
parents:
15035
diff
changeset
|
6321 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
|
6322 xfree (pentry); |
15151
ed6ddfc0d954
(Vwindow_system): Declared.
Geoff Voelker <voelker@cs.washington.edu>
parents:
15035
diff
changeset
|
6323 } |
ed6ddfc0d954
(Vwindow_system): Declared.
Geoff Voelker <voelker@cs.washington.edu>
parents:
15035
diff
changeset
|
6324 dpyinfo->color_list = NULL; |
ed6ddfc0d954
(Vwindow_system): Declared.
Geoff Voelker <voelker@cs.washington.edu>
parents:
15035
diff
changeset
|
6325 if (dpyinfo->palette) |
ed6ddfc0d954
(Vwindow_system): Declared.
Geoff Voelker <voelker@cs.washington.edu>
parents:
15035
diff
changeset
|
6326 DeleteObject(dpyinfo->palette); |
ed6ddfc0d954
(Vwindow_system): Declared.
Geoff Voelker <voelker@cs.washington.edu>
parents:
15035
diff
changeset
|
6327 } |
16588
481b7874a1e9
Change identifiers of the form win32* to w32*.
Geoff Voelker <voelker@cs.washington.edu>
parents:
16326
diff
changeset
|
6328 xfree (dpyinfo->w32_id_name); |
27889
51d0b4b8fc6a
(w32_display_info_for_display): Remove unused function.
Jason Rumney <jasonr@gnu.org>
parents:
27631
diff
changeset
|
6329 |
53886
e1b1c388f74d
(w32_draw_fringe_bitmap): Copy unadapted code from
Kim F. Storm <storm@cua.dk>
parents:
53607
diff
changeset
|
6330 w32_reset_fringes (); |
13434 | 6331 } |
6332 | |
16588
481b7874a1e9
Change identifiers of the form win32* to w32*.
Geoff Voelker <voelker@cs.washington.edu>
parents:
16326
diff
changeset
|
6333 /* Set up use of W32. */ |
13434 | 6334 |
74220
ae3e88b9ef1b
(w32_msg_worker): Declare correctly.
Jason Rumney <jasonr@gnu.org>
parents:
74145
diff
changeset
|
6335 DWORD WINAPI w32_msg_worker (void * arg); |
13434 | 6336 |
81493
e7dfb7cb2088
(w32_delete_display): Remove leftover declaration.
Juanma Barranquero <lekktu@gmail.com>
parents:
76022
diff
changeset
|
6337 static void |
16588
481b7874a1e9
Change identifiers of the form win32* to w32*.
Geoff Voelker <voelker@cs.washington.edu>
parents:
16326
diff
changeset
|
6338 w32_initialize () |
13434 | 6339 { |
103641
48d529d3a5a4
bug#1849 - Windows 7 Taskbar Support
Jason Rumney <jasonr@gnu.org>
parents:
103509
diff
changeset
|
6340 HANDLE shell; |
103716
7bad97f82eb6
* w32term.c (w32_initialize): Use standard types.
Jason Rumney <jasonr@gnu.org>
parents:
103641
diff
changeset
|
6341 HRESULT (WINAPI * set_user_model) (wchar_t * id); |
103641
48d529d3a5a4
bug#1849 - Windows 7 Taskbar Support
Jason Rumney <jasonr@gnu.org>
parents:
103509
diff
changeset
|
6342 |
13434 | 6343 baud_rate = 19200; |
6344 | |
40384
25e6d4bb5f7f
(w32_system_caret_hwnd, w32_system_caret_width)
Jason Rumney <jasonr@gnu.org>
parents:
40245
diff
changeset
|
6345 w32_system_caret_hwnd = NULL; |
25e6d4bb5f7f
(w32_system_caret_hwnd, w32_system_caret_width)
Jason Rumney <jasonr@gnu.org>
parents:
40245
diff
changeset
|
6346 w32_system_caret_height = 0; |
25e6d4bb5f7f
(w32_system_caret_hwnd, w32_system_caret_width)
Jason Rumney <jasonr@gnu.org>
parents:
40245
diff
changeset
|
6347 w32_system_caret_x = 0; |
25e6d4bb5f7f
(w32_system_caret_hwnd, w32_system_caret_width)
Jason Rumney <jasonr@gnu.org>
parents:
40245
diff
changeset
|
6348 w32_system_caret_y = 0; |
25e6d4bb5f7f
(w32_system_caret_hwnd, w32_system_caret_width)
Jason Rumney <jasonr@gnu.org>
parents:
40245
diff
changeset
|
6349 |
103641
48d529d3a5a4
bug#1849 - Windows 7 Taskbar Support
Jason Rumney <jasonr@gnu.org>
parents:
103509
diff
changeset
|
6350 /* On Windows 7 and later, we need to set the user model ID |
48d529d3a5a4
bug#1849 - Windows 7 Taskbar Support
Jason Rumney <jasonr@gnu.org>
parents:
103509
diff
changeset
|
6351 to associate emacsclient launched files with Emacs frames |
48d529d3a5a4
bug#1849 - Windows 7 Taskbar Support
Jason Rumney <jasonr@gnu.org>
parents:
103509
diff
changeset
|
6352 in the UI. */ |
48d529d3a5a4
bug#1849 - Windows 7 Taskbar Support
Jason Rumney <jasonr@gnu.org>
parents:
103509
diff
changeset
|
6353 shell = GetModuleHandle ("shell32.dll"); |
48d529d3a5a4
bug#1849 - Windows 7 Taskbar Support
Jason Rumney <jasonr@gnu.org>
parents:
103509
diff
changeset
|
6354 if (shell) |
48d529d3a5a4
bug#1849 - Windows 7 Taskbar Support
Jason Rumney <jasonr@gnu.org>
parents:
103509
diff
changeset
|
6355 { |
48d529d3a5a4
bug#1849 - Windows 7 Taskbar Support
Jason Rumney <jasonr@gnu.org>
parents:
103509
diff
changeset
|
6356 set_user_model |
48d529d3a5a4
bug#1849 - Windows 7 Taskbar Support
Jason Rumney <jasonr@gnu.org>
parents:
103509
diff
changeset
|
6357 = (void *) GetProcAddress (shell, |
48d529d3a5a4
bug#1849 - Windows 7 Taskbar Support
Jason Rumney <jasonr@gnu.org>
parents:
103509
diff
changeset
|
6358 "SetCurrentProcessExplicitAppUserModelID"); |
48d529d3a5a4
bug#1849 - Windows 7 Taskbar Support
Jason Rumney <jasonr@gnu.org>
parents:
103509
diff
changeset
|
6359 |
48d529d3a5a4
bug#1849 - Windows 7 Taskbar Support
Jason Rumney <jasonr@gnu.org>
parents:
103509
diff
changeset
|
6360 /* If the function is defined, then we are running on Windows 7 |
48d529d3a5a4
bug#1849 - Windows 7 Taskbar Support
Jason Rumney <jasonr@gnu.org>
parents:
103509
diff
changeset
|
6361 or newer, and the UI uses this to group related windows |
48d529d3a5a4
bug#1849 - Windows 7 Taskbar Support
Jason Rumney <jasonr@gnu.org>
parents:
103509
diff
changeset
|
6362 together. Since emacs, runemacs, emacsclient are related, we |
48d529d3a5a4
bug#1849 - Windows 7 Taskbar Support
Jason Rumney <jasonr@gnu.org>
parents:
103509
diff
changeset
|
6363 want them grouped even though the executables are different, |
48d529d3a5a4
bug#1849 - Windows 7 Taskbar Support
Jason Rumney <jasonr@gnu.org>
parents:
103509
diff
changeset
|
6364 so we need to set a consistent ID between them. */ |
48d529d3a5a4
bug#1849 - Windows 7 Taskbar Support
Jason Rumney <jasonr@gnu.org>
parents:
103509
diff
changeset
|
6365 if (set_user_model) |
48d529d3a5a4
bug#1849 - Windows 7 Taskbar Support
Jason Rumney <jasonr@gnu.org>
parents:
103509
diff
changeset
|
6366 set_user_model (L"GNU.Emacs"); |
48d529d3a5a4
bug#1849 - Windows 7 Taskbar Support
Jason Rumney <jasonr@gnu.org>
parents:
103509
diff
changeset
|
6367 } |
48d529d3a5a4
bug#1849 - Windows 7 Taskbar Support
Jason Rumney <jasonr@gnu.org>
parents:
103509
diff
changeset
|
6368 |
63904
72c5011362ef
* w32term.c (cleartype_active): New flag for enabling sub-pixel
Jason Rumney <jasonr@gnu.org>
parents:
63376
diff
changeset
|
6369 /* 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
|
6370 reader is in use. */ |
72c5011362ef
* w32term.c (cleartype_active): New flag for enabling sub-pixel
Jason Rumney <jasonr@gnu.org>
parents:
63376
diff
changeset
|
6371 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
|
6372 &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
|
6373 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
|
6374 |
27402
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
6375 last_tool_bar_item = -1; |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
6376 any_help_event_p = 0; |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
6377 |
19713
043ccce224fb
(SIF_*): Win95 macros defined for NT.
Geoff Voelker <voelker@cs.washington.edu>
parents:
18877
diff
changeset
|
6378 /* 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
|
6379 8 bit character input, standard quit char. */ |
043ccce224fb
(SIF_*): Win95 macros defined for NT.
Geoff Voelker <voelker@cs.washington.edu>
parents:
18877
diff
changeset
|
6380 Fset_input_mode (Qnil, Qnil, make_number (2), Qnil); |
13434 | 6381 |
103500
d0e3ea40717c
(keyboard_codepage): New static variable.
Jason Rumney <jasonr@gnu.org>
parents:
103023
diff
changeset
|
6382 { |
103505
b1792516bf99
(w32_initialize): Add necessary casts to last change.
Jason Rumney <jasonr@gnu.org>
parents:
103500
diff
changeset
|
6383 DWORD input_locale_id = (DWORD) GetKeyboardLayout (0); |
b1792516bf99
(w32_initialize): Add necessary casts to last change.
Jason Rumney <jasonr@gnu.org>
parents:
103500
diff
changeset
|
6384 keyboard_codepage = codepage_for_locale ((LCID) (input_locale_id & 0xffff)); |
103500
d0e3ea40717c
(keyboard_codepage): New static variable.
Jason Rumney <jasonr@gnu.org>
parents:
103023
diff
changeset
|
6385 } |
d0e3ea40717c
(keyboard_codepage): New static variable.
Jason Rumney <jasonr@gnu.org>
parents:
103023
diff
changeset
|
6386 |
d0e3ea40717c
(keyboard_codepage): New static variable.
Jason Rumney <jasonr@gnu.org>
parents:
103023
diff
changeset
|
6387 /* Create the window thread - it will terminate itself when the app |
d0e3ea40717c
(keyboard_codepage): New static variable.
Jason Rumney <jasonr@gnu.org>
parents:
103023
diff
changeset
|
6388 terminates */ |
13434 | 6389 init_crit (); |
6390 | |
6391 dwMainThreadId = GetCurrentThreadId (); | |
48218
01e253345507
(w32_draw_fringe_bitmap): Remove unused local variable window.
Juanma Barranquero <lekktu@gmail.com>
parents:
48025
diff
changeset
|
6392 DuplicateHandle (GetCurrentProcess (), GetCurrentThread (), |
13434 | 6393 GetCurrentProcess (), &hMainThread, 0, TRUE, DUPLICATE_SAME_ACCESS); |
6394 | |
6395 /* Wait for thread to start */ | |
6396 { | |
6397 MSG msg; | |
6398 | |
6399 PeekMessage (&msg, NULL, 0, 0, PM_NOREMOVE); | |
6400 | |
48218
01e253345507
(w32_draw_fringe_bitmap): Remove unused local variable window.
Juanma Barranquero <lekktu@gmail.com>
parents:
48025
diff
changeset
|
6401 hWindowsThread = CreateThread (NULL, 0, |
74220
ae3e88b9ef1b
(w32_msg_worker): Declare correctly.
Jason Rumney <jasonr@gnu.org>
parents:
74145
diff
changeset
|
6402 w32_msg_worker, |
ae3e88b9ef1b
(w32_msg_worker): Declare correctly.
Jason Rumney <jasonr@gnu.org>
parents:
74145
diff
changeset
|
6403 0, 0, &dwWindowsThreadId); |
13434 | 6404 |
6405 GetMessage (&msg, NULL, WM_EMACS_DONE, WM_EMACS_DONE); | |
6406 } | |
48218
01e253345507
(w32_draw_fringe_bitmap): Remove unused local variable window.
Juanma Barranquero <lekktu@gmail.com>
parents:
48025
diff
changeset
|
6407 |
15151
ed6ddfc0d954
(Vwindow_system): Declared.
Geoff Voelker <voelker@cs.washington.edu>
parents:
15035
diff
changeset
|
6408 /* 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
|
6409 focus window and active window as windowsThread. Unfortunately, the |
15151
ed6ddfc0d954
(Vwindow_system): Declared.
Geoff Voelker <voelker@cs.washington.edu>
parents:
15035
diff
changeset
|
6410 following call to AttachThreadInput, which should do precisely what |
ed6ddfc0d954
(Vwindow_system): Declared.
Geoff Voelker <voelker@cs.washington.edu>
parents:
15035
diff
changeset
|
6411 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
|
6412 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
|
6413 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
|
6414 calls for us (ones that affect, or depend on, the active/focus |
95170
194ed5c5c97e
Fix typo in comment.
Juanma Barranquero <lekktu@gmail.com>
parents:
94970
diff
changeset
|
6415 window state.) */ |
15151
ed6ddfc0d954
(Vwindow_system): Declared.
Geoff Voelker <voelker@cs.washington.edu>
parents:
15035
diff
changeset
|
6416 #ifdef ATTACH_THREADS |
16884
36babc489b0c
Change all uses of win95, winnt, and win32
Geoff Voelker <voelker@cs.washington.edu>
parents:
16588
diff
changeset
|
6417 AttachThreadInput (dwMainThreadId, dwWindowsThreadId, TRUE); |
15151
ed6ddfc0d954
(Vwindow_system): Declared.
Geoff Voelker <voelker@cs.washington.edu>
parents:
15035
diff
changeset
|
6418 #endif |
19713
043ccce224fb
(SIF_*): Win95 macros defined for NT.
Geoff Voelker <voelker@cs.washington.edu>
parents:
18877
diff
changeset
|
6419 |
90436
6194dc57516d
(w32_initialize) Manually sync 2006-06-05 change from HEAD.
Jason Rumney <jasonr@gnu.org>
parents:
90428
diff
changeset
|
6420 /* Dynamically link to optional system components. */ |
19713
043ccce224fb
(SIF_*): Win95 macros defined for NT.
Geoff Voelker <voelker@cs.washington.edu>
parents:
18877
diff
changeset
|
6421 { |
103641
48d529d3a5a4
bug#1849 - Windows 7 Taskbar Support
Jason Rumney <jasonr@gnu.org>
parents:
103509
diff
changeset
|
6422 HMODULE user_lib = GetModuleHandle ("user32.dll"); |
19713
043ccce224fb
(SIF_*): Win95 macros defined for NT.
Geoff Voelker <voelker@cs.washington.edu>
parents:
18877
diff
changeset
|
6423 |
89595
804abd486fd1
(GLYPHSET, WCRANGE): Define if system headers don't.
Jason Rumney <jasonr@gnu.org>
parents:
89588
diff
changeset
|
6424 #define LOAD_PROC(lib, fn) pfn##fn = (void *) GetProcAddress (lib, #fn) |
19713
043ccce224fb
(SIF_*): Win95 macros defined for NT.
Geoff Voelker <voelker@cs.washington.edu>
parents:
18877
diff
changeset
|
6425 |
96403
4b6d1b55f59c
* w32term.c (pfnGetFontUnicodeRanges): Remove unused function pointer.
Jason Rumney <jasonr@gnu.org>
parents:
96376
diff
changeset
|
6426 LOAD_PROC (user_lib, SetLayeredWindowAttributes); |
95170
194ed5c5c97e
Fix typo in comment.
Juanma Barranquero <lekktu@gmail.com>
parents:
94970
diff
changeset
|
6427 |
19713
043ccce224fb
(SIF_*): Win95 macros defined for NT.
Geoff Voelker <voelker@cs.washington.edu>
parents:
18877
diff
changeset
|
6428 #undef LOAD_PROC |
043ccce224fb
(SIF_*): Win95 macros defined for NT.
Geoff Voelker <voelker@cs.washington.edu>
parents:
18877
diff
changeset
|
6429 |
90436
6194dc57516d
(w32_initialize) Manually sync 2006-06-05 change from HEAD.
Jason Rumney <jasonr@gnu.org>
parents:
90428
diff
changeset
|
6430 /* Ensure scrollbar handle is at least 5 pixels. */ |
71236
4a38eb2f741d
(w32_set_scroll_bar_thumb, x_scroll_bar_create)
Jason Rumney <jasonr@gnu.org>
parents:
71074
diff
changeset
|
6431 vertical_scroll_bar_min_handle = 5; |
19713
043ccce224fb
(SIF_*): Win95 macros defined for NT.
Geoff Voelker <voelker@cs.washington.edu>
parents:
18877
diff
changeset
|
6432 |
043ccce224fb
(SIF_*): Win95 macros defined for NT.
Geoff Voelker <voelker@cs.washington.edu>
parents:
18877
diff
changeset
|
6433 /* 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
|
6434 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
|
6435 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
|
6436 = GetSystemMetrics (SM_CYVSCROLL); |
043ccce224fb
(SIF_*): Win95 macros defined for NT.
Geoff Voelker <voelker@cs.washington.edu>
parents:
18877
diff
changeset
|
6437 } |
13434 | 6438 } |
6439 | |
6440 void | |
16588
481b7874a1e9
Change identifiers of the form win32* to w32*.
Geoff Voelker <voelker@cs.washington.edu>
parents:
16326
diff
changeset
|
6441 syms_of_w32term () |
13434 | 6442 { |
16588
481b7874a1e9
Change identifiers of the form win32* to w32*.
Geoff Voelker <voelker@cs.washington.edu>
parents:
16326
diff
changeset
|
6443 staticpro (&w32_display_name_list); |
481b7874a1e9
Change identifiers of the form win32* to w32*.
Geoff Voelker <voelker@cs.washington.edu>
parents:
16326
diff
changeset
|
6444 w32_display_name_list = Qnil; |
13434 | 6445 |
6446 staticpro (&last_mouse_scroll_bar); | |
6447 last_mouse_scroll_bar = Qnil; | |
6448 | |
90923
4a877f897bd8
(syms_of_w32term): Use DEFSYM macro.
Jason Rumney <jasonr@gnu.org>
parents:
90905
diff
changeset
|
6449 DEFSYM (Qvendor_specific_keysyms, "vendor-specific-keysyms"); |
15151
ed6ddfc0d954
(Vwindow_system): Declared.
Geoff Voelker <voelker@cs.washington.edu>
parents:
15035
diff
changeset
|
6450 |
16588
481b7874a1e9
Change identifiers of the form win32* to w32*.
Geoff Voelker <voelker@cs.washington.edu>
parents:
16326
diff
changeset
|
6451 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
|
6452 &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
|
6453 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
|
6454 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
|
6455 |
481b7874a1e9
Change identifiers of the form win32* to w32*.
Geoff Voelker <voelker@cs.washington.edu>
parents:
16326
diff
changeset
|
6456 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
|
6457 &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
|
6458 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
|
6459 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
|
6460 Vw32_swap_mouse_buttons = Qnil; |
19713
043ccce224fb
(SIF_*): Win95 macros defined for NT.
Geoff Voelker <voelker@cs.washington.edu>
parents:
18877
diff
changeset
|
6461 |
043ccce224fb
(SIF_*): Win95 macros defined for NT.
Geoff Voelker <voelker@cs.washington.edu>
parents:
18877
diff
changeset
|
6462 DEFVAR_LISP ("w32-grab-focus-on-raise", |
043ccce224fb
(SIF_*): Win95 macros defined for NT.
Geoff Voelker <voelker@cs.washington.edu>
parents:
18877
diff
changeset
|
6463 &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
|
6464 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
|
6465 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
|
6466 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
|
6467 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
|
6468 Vw32_grab_focus_on_raise = Qt; |
043ccce224fb
(SIF_*): Win95 macros defined for NT.
Geoff Voelker <voelker@cs.washington.edu>
parents:
18877
diff
changeset
|
6469 |
043ccce224fb
(SIF_*): Win95 macros defined for NT.
Geoff Voelker <voelker@cs.washington.edu>
parents:
18877
diff
changeset
|
6470 DEFVAR_LISP ("w32-capslock-is-shiftlock", |
043ccce224fb
(SIF_*): Win95 macros defined for NT.
Geoff Voelker <voelker@cs.washington.edu>
parents:
18877
diff
changeset
|
6471 &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
|
6472 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
|
6473 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
|
6474 Vw32_capslock_is_shiftlock = Qnil; |
21614
2624d8dcc73f
(Vw32_recognize_altgr): New variable.
Geoff Voelker <voelker@cs.washington.edu>
parents:
21456
diff
changeset
|
6475 |
2624d8dcc73f
(Vw32_recognize_altgr): New variable.
Geoff Voelker <voelker@cs.washington.edu>
parents:
21456
diff
changeset
|
6476 DEFVAR_LISP ("w32-recognize-altgr", |
2624d8dcc73f
(Vw32_recognize_altgr): New variable.
Geoff Voelker <voelker@cs.washington.edu>
parents:
21456
diff
changeset
|
6477 &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
|
6478 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
|
6479 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
|
6480 interpreted normally. */); |
21614
2624d8dcc73f
(Vw32_recognize_altgr): New variable.
Geoff Voelker <voelker@cs.washington.edu>
parents:
21456
diff
changeset
|
6481 Vw32_recognize_altgr = Qt; |
23638
e6fb9ffee4f4
(dumpglyphs): Use FRAME_FONT for w32_fill_area.
Geoff Voelker <voelker@cs.washington.edu>
parents:
23510
diff
changeset
|
6482 |
42864
c1af6a7f3dd4
(w32_system_caret_width): Remove.
Jason Rumney <jasonr@gnu.org>
parents:
42844
diff
changeset
|
6483 DEFVAR_BOOL ("w32-use-visible-system-caret", |
c1af6a7f3dd4
(w32_system_caret_width): Remove.
Jason Rumney <jasonr@gnu.org>
parents:
42844
diff
changeset
|
6484 &w32_use_visible_system_caret, |
c1af6a7f3dd4
(w32_system_caret_width): Remove.
Jason Rumney <jasonr@gnu.org>
parents:
42844
diff
changeset
|
6485 doc: /* Flag to make the system caret visible. |
c1af6a7f3dd4
(w32_system_caret_width): Remove.
Jason Rumney <jasonr@gnu.org>
parents:
42844
diff
changeset
|
6486 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
|
6487 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
|
6488 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
|
6489 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
|
6490 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
|
6491 software is running as it starts up. |
c1af6a7f3dd4
(w32_system_caret_width): Remove.
Jason Rumney <jasonr@gnu.org>
parents:
42844
diff
changeset
|
6492 |
c1af6a7f3dd4
(w32_system_caret_width): Remove.
Jason Rumney <jasonr@gnu.org>
parents:
42844
diff
changeset
|
6493 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
|
6494 the cursor have no effect. */); |
c1af6a7f3dd4
(w32_system_caret_width): Remove.
Jason Rumney <jasonr@gnu.org>
parents:
42844
diff
changeset
|
6495 |
63904
72c5011362ef
* w32term.c (cleartype_active): New flag for enabling sub-pixel
Jason Rumney <jasonr@gnu.org>
parents:
63376
diff
changeset
|
6496 w32_use_visible_system_caret = 0; |
42864
c1af6a7f3dd4
(w32_system_caret_width): Remove.
Jason Rumney <jasonr@gnu.org>
parents:
42844
diff
changeset
|
6497 |
63376
2a6bb16cad69
(x_use_underline_position_properties): New variable.
Eli Zaretskii <eliz@gnu.org>
parents:
60948
diff
changeset
|
6498 /* 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
|
6499 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
|
6500 DEFVAR_BOOL ("x-use-underline-position-properties", |
2a6bb16cad69
(x_use_underline_position_properties): New variable.
Eli Zaretskii <eliz@gnu.org>
parents:
60948
diff
changeset
|
6501 &x_use_underline_position_properties, |
2a6bb16cad69
(x_use_underline_position_properties): New variable.
Eli Zaretskii <eliz@gnu.org>
parents:
60948
diff
changeset
|
6502 doc: /* *Non-nil means make use of UNDERLINE_POSITION font properties. |
74571
e08f8d4c6dae
(syms_of_w32term) <x-use-underline-position-properties,
Juanma Barranquero <lekktu@gmail.com>
parents:
74220
diff
changeset
|
6503 A value of nil means ignore them. If you encounter fonts with bogus |
63376
2a6bb16cad69
(x_use_underline_position_properties): New variable.
Eli Zaretskii <eliz@gnu.org>
parents:
60948
diff
changeset
|
6504 UNDERLINE_POSITION font properties, for example 7x13 on XFree prior |
102688
f3f931ecb8d4
(x-use-underline-position-properties): Doc fix.
Jason Rumney <jasonr@gnu.org>
parents:
102584
diff
changeset
|
6505 to 4.1, set this to nil. */); |
63376
2a6bb16cad69
(x_use_underline_position_properties): New variable.
Eli Zaretskii <eliz@gnu.org>
parents:
60948
diff
changeset
|
6506 x_use_underline_position_properties = 0; |
2a6bb16cad69
(x_use_underline_position_properties): New variable.
Eli Zaretskii <eliz@gnu.org>
parents:
60948
diff
changeset
|
6507 |
72505
759e19ea81e5
(x_underline_at_descent_line): New variable.
Kim F. Storm <storm@cua.dk>
parents:
72470
diff
changeset
|
6508 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
|
6509 &x_underline_at_descent_line, |
759e19ea81e5
(x_underline_at_descent_line): New variable.
Kim F. Storm <storm@cua.dk>
parents:
72470
diff
changeset
|
6510 doc: /* *Non-nil means to draw the underline at the same place as the descent line. |
74571
e08f8d4c6dae
(syms_of_w32term) <x-use-underline-position-properties,
Juanma Barranquero <lekktu@gmail.com>
parents:
74220
diff
changeset
|
6511 A value of nil means to draw the underline according to the value of the |
e08f8d4c6dae
(syms_of_w32term) <x-use-underline-position-properties,
Juanma Barranquero <lekktu@gmail.com>
parents:
74220
diff
changeset
|
6512 variable `x-use-underline-position-properties', which is usually at the |
e08f8d4c6dae
(syms_of_w32term) <x-use-underline-position-properties,
Juanma Barranquero <lekktu@gmail.com>
parents:
74220
diff
changeset
|
6513 baseline level. The default value is nil. */); |
72505
759e19ea81e5
(x_underline_at_descent_line): New variable.
Kim F. Storm <storm@cua.dk>
parents:
72470
diff
changeset
|
6514 x_underline_at_descent_line = 0; |
759e19ea81e5
(x_underline_at_descent_line): New variable.
Kim F. Storm <storm@cua.dk>
parents:
72470
diff
changeset
|
6515 |
34869
1d671133e618
(syms_of_xterm): DEFVAR_LISP x-toolkit-scroll-bars
Gerd Moellmann <gerd@gnu.org>
parents:
34823
diff
changeset
|
6516 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
|
6517 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
|
6518 Vx_toolkit_scroll_bars = Qt; |
27402
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
6519 |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
6520 staticpro (&last_mouse_motion_frame); |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
6521 last_mouse_motion_frame = Qnil; |
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
6522 } |
52401 | 6523 |
6524 /* arch-tag: 5fa70624-ab86-499c-8a85-473958ee4646 | |
6525 (do not change this comment) */ |