Mercurial > emacs
annotate src/w32term.c @ 96392:61ba354c1338
* net/tramp.el (tramp-handle-file-modes): Handle symlinks.
(tramp-convert-file-attributes): Convert symlinks only when
returned from `tramp-handle-file-attributes-with-stat'.
| author | Michael Albinus <michael.albinus@gmx.de> |
|---|---|
| date | Sat, 28 Jun 2008 10:16:37 +0000 |
| parents | c3309dba6542 |
| children | 4b6d1b55f59c |
| 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, |
| 79759 | 4 2006, 2007, 2008 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> |
| 13434 | 25 #include "lisp.h" |
| 26 #include "blockinput.h" | |
|
19713
043ccce224fb
(SIF_*): Win95 macros defined for NT.
Geoff Voelker <voelker@cs.washington.edu>
parents:
18877
diff
changeset
|
27 #include "w32term.h" |
| 13434 | 28 |
| 29 #include "systty.h" | |
| 30 #include "systime.h" | |
| 31 | |
| 32 #include <ctype.h> | |
| 33 #include <errno.h> | |
| 34 #include <setjmp.h> | |
| 35 #include <sys/stat.h> | |
| 36 | |
|
89588
3a34407a4019
(w32_encode_char): New charset parameter. font_info.encoding becomes
Jason Rumney <jasonr@gnu.org>
parents:
89483
diff
changeset
|
37 #include "charset.h" |
|
3a34407a4019
(w32_encode_char): New charset parameter. font_info.encoding becomes
Jason Rumney <jasonr@gnu.org>
parents:
89483
diff
changeset
|
38 #include "character.h" |
|
3a34407a4019
(w32_encode_char): New charset parameter. font_info.encoding becomes
Jason Rumney <jasonr@gnu.org>
parents:
89483
diff
changeset
|
39 #include "coding.h" |
|
3a34407a4019
(w32_encode_char): New charset parameter. font_info.encoding becomes
Jason Rumney <jasonr@gnu.org>
parents:
89483
diff
changeset
|
40 #include "ccl.h" |
| 13434 | 41 #include "frame.h" |
| 42 #include "dispextern.h" | |
|
28369
3fb90cd81d3b
(w32_read_socket): Handle WM_MENUSELECT message.
Jason Rumney <jasonr@gnu.org>
parents:
27937
diff
changeset
|
43 #include "fontset.h" |
| 13434 | 44 #include "termhooks.h" |
| 45 #include "termopts.h" | |
| 46 #include "termchar.h" | |
| 47 #include "disptab.h" | |
| 48 #include "buffer.h" | |
| 49 #include "window.h" | |
|
89588
3a34407a4019
(w32_encode_char): New charset parameter. font_info.encoding becomes
Jason Rumney <jasonr@gnu.org>
parents:
89483
diff
changeset
|
50 #include "keyboard.h" |
| 13434 | 51 #include "intervals.h" |
|
89588
3a34407a4019
(w32_encode_char): New charset parameter. font_info.encoding becomes
Jason Rumney <jasonr@gnu.org>
parents:
89483
diff
changeset
|
52 #include "process.h" |
|
3a34407a4019
(w32_encode_char): New charset parameter. font_info.encoding becomes
Jason Rumney <jasonr@gnu.org>
parents:
89483
diff
changeset
|
53 #include "atimer.h" |
|
3a34407a4019
(w32_encode_char): New charset parameter. font_info.encoding becomes
Jason Rumney <jasonr@gnu.org>
parents:
89483
diff
changeset
|
54 #include "keymap.h" |
|
3a34407a4019
(w32_encode_char): New charset parameter. font_info.encoding becomes
Jason Rumney <jasonr@gnu.org>
parents:
89483
diff
changeset
|
55 |
|
3a34407a4019
(w32_encode_char): New charset parameter. font_info.encoding becomes
Jason Rumney <jasonr@gnu.org>
parents:
89483
diff
changeset
|
56 #include "w32heap.h" |
|
3a34407a4019
(w32_encode_char): New charset parameter. font_info.encoding becomes
Jason Rumney <jasonr@gnu.org>
parents:
89483
diff
changeset
|
57 #include <shellapi.h> |
| 13434 | 58 |
| 90834 | 59 #include "font.h" |
|
94912
5b153bea483d
: Throughout the file, delete all USE_FONT_BACKEND
Kenichi Handa <handa@m17n.org>
parents:
93913
diff
changeset
|
60 #include "w32font.h" |
|
27402
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
61 |
| 41125 | 62 /* Fringe bitmaps. */ |
| 63 | |
|
57278
4cec0243673a
(fringe_bmp): Change to pointer.
Kim F. Storm <storm@cua.dk>
parents:
56729
diff
changeset
|
64 static int max_fringe_bmp = 0; |
|
4cec0243673a
(fringe_bmp): Change to pointer.
Kim F. Storm <storm@cua.dk>
parents:
56729
diff
changeset
|
65 static HBITMAP *fringe_bmp = 0; |
|
27402
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
66 |
|
34869
1d671133e618
(syms_of_xterm): DEFVAR_LISP x-toolkit-scroll-bars
Gerd Moellmann <gerd@gnu.org>
parents:
34823
diff
changeset
|
67 /* 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
|
68 |
|
1d671133e618
(syms_of_xterm): DEFVAR_LISP x-toolkit-scroll-bars
Gerd Moellmann <gerd@gnu.org>
parents:
34823
diff
changeset
|
69 Lisp_Object Vx_toolkit_scroll_bars; |
|
27402
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
70 |
|
48819
c7fb53597300
(last_mousemove_x, last_mousemove_y): New variables.
Jason Rumney <jasonr@gnu.org>
parents:
48360
diff
changeset
|
71 /* Temporary variables for w32_read_socket. */ |
|
27402
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
72 |
|
48819
c7fb53597300
(last_mousemove_x, last_mousemove_y): New variables.
Jason Rumney <jasonr@gnu.org>
parents:
48360
diff
changeset
|
73 static int last_mousemove_x = 0; |
|
c7fb53597300
(last_mousemove_x, last_mousemove_y): New variables.
Jason Rumney <jasonr@gnu.org>
parents:
48360
diff
changeset
|
74 static int last_mousemove_y = 0; |
|
27402
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
75 |
|
51269
0e4f36767c58
(GET_WHEEL_DELTA_WPARAM): New macro.
Jason Rumney <jasonr@gnu.org>
parents:
51258
diff
changeset
|
76 /* 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
|
77 #ifndef GET_WHEEL_DELTA_WPARAM |
|
0e4f36767c58
(GET_WHEEL_DELTA_WPARAM): New macro.
Jason Rumney <jasonr@gnu.org>
parents:
51258
diff
changeset
|
78 #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
|
79 #endif |
|
0e4f36767c58
(GET_WHEEL_DELTA_WPARAM): New macro.
Jason Rumney <jasonr@gnu.org>
parents:
51258
diff
changeset
|
80 |
|
27402
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
81 /* 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
|
82 start. */ |
|
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
83 |
|
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
84 static int any_help_event_p; |
|
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
85 |
|
49393
85246e86a2cd
* w32term.c (x_draw_glyph_string_foreground)
Jason Rumney <jasonr@gnu.org>
parents:
49371
diff
changeset
|
86 /* 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
|
87 static Lisp_Object last_window; |
|
85246e86a2cd
* w32term.c (x_draw_glyph_string_foreground)
Jason Rumney <jasonr@gnu.org>
parents:
49371
diff
changeset
|
88 |
|
63376
2a6bb16cad69
(x_use_underline_position_properties): New variable.
Eli Zaretskii <eliz@gnu.org>
parents:
60948
diff
changeset
|
89 /* Non-zero means make use of UNDERLINE_POSITION font properties. |
|
2a6bb16cad69
(x_use_underline_position_properties): New variable.
Eli Zaretskii <eliz@gnu.org>
parents:
60948
diff
changeset
|
90 (Not yet supported, see TODO in x_draw_glyph_string.) */ |
|
2a6bb16cad69
(x_use_underline_position_properties): New variable.
Eli Zaretskii <eliz@gnu.org>
parents:
60948
diff
changeset
|
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 |
|
804abd486fd1
(GLYPHSET, WCRANGE): Define if system headers don't.
Jason Rumney <jasonr@gnu.org>
parents:
89588
diff
changeset
|
142 /* Dynamic linking to GetFontUnicodeRanges (not available on 95, 98, ME). */ |
|
804abd486fd1
(GLYPHSET, WCRANGE): Define if system headers don't.
Jason Rumney <jasonr@gnu.org>
parents:
89588
diff
changeset
|
143 DWORD (PASCAL *pfnGetFontUnicodeRanges) (HDC device, GLYPHSET *ranges); |
|
804abd486fd1
(GLYPHSET, WCRANGE): Define if system headers don't.
Jason Rumney <jasonr@gnu.org>
parents:
89588
diff
changeset
|
144 |
| 13434 | 145 /* Frame being updated by update_frame. This is declared in term.c. |
| 146 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
|
147 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
|
148 In that case, the w32 functions assume that `SELECTED_FRAME ()' |
| 13434 | 149 is the frame to apply to. */ |
| 150 extern struct frame *updating_frame; | |
| 151 | |
| 152 /* This is a frame waiting to be autoraised, within w32_read_socket. */ | |
| 153 struct frame *pending_autoraise_frame; | |
| 154 | |
|
40384
25e6d4bb5f7f
(w32_system_caret_hwnd, w32_system_caret_width)
Jason Rumney <jasonr@gnu.org>
parents:
40245
diff
changeset
|
155 /* 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
|
156 HWND w32_system_caret_hwnd; |
|
25e6d4bb5f7f
(w32_system_caret_hwnd, w32_system_caret_width)
Jason Rumney <jasonr@gnu.org>
parents:
40245
diff
changeset
|
157 int w32_system_caret_height; |
|
25e6d4bb5f7f
(w32_system_caret_hwnd, w32_system_caret_width)
Jason Rumney <jasonr@gnu.org>
parents:
40245
diff
changeset
|
158 int w32_system_caret_x; |
|
25e6d4bb5f7f
(w32_system_caret_hwnd, w32_system_caret_width)
Jason Rumney <jasonr@gnu.org>
parents:
40245
diff
changeset
|
159 int w32_system_caret_y; |
|
42864
c1af6a7f3dd4
(w32_system_caret_width): Remove.
Jason Rumney <jasonr@gnu.org>
parents:
42844
diff
changeset
|
160 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
|
161 |
|
23639
516fc58a7b7b
(w32_enable_unicode_output): Rename from
Geoff Voelker <voelker@cs.washington.edu>
parents:
23638
diff
changeset
|
162 /* Flag to enable Unicode output in case users wish to use programs |
|
23507
8a448630a9b5
Include fontset.h. Define codepage macros.
Geoff Voelker <voelker@cs.washington.edu>
parents:
22059
diff
changeset
|
163 like Twinbridge on '95 rather than installed system level support |
|
8a448630a9b5
Include fontset.h. Define codepage macros.
Geoff Voelker <voelker@cs.washington.edu>
parents:
22059
diff
changeset
|
164 for Far East languages. */ |
|
23639
516fc58a7b7b
(w32_enable_unicode_output): Rename from
Geoff Voelker <voelker@cs.washington.edu>
parents:
23638
diff
changeset
|
165 int w32_enable_unicode_output; |
|
23507
8a448630a9b5
Include fontset.h. Define codepage macros.
Geoff Voelker <voelker@cs.washington.edu>
parents:
22059
diff
changeset
|
166 |
|
63904
72c5011362ef
* w32term.c (cleartype_active): New flag for enabling sub-pixel
Jason Rumney <jasonr@gnu.org>
parents:
63376
diff
changeset
|
167 /* Flag to enable Cleartype hack for font metrics. */ |
|
72c5011362ef
* w32term.c (cleartype_active): New flag for enabling sub-pixel
Jason Rumney <jasonr@gnu.org>
parents:
63376
diff
changeset
|
168 static int cleartype_active; |
|
72c5011362ef
* w32term.c (cleartype_active): New flag for enabling sub-pixel
Jason Rumney <jasonr@gnu.org>
parents:
63376
diff
changeset
|
169 |
|
16884
36babc489b0c
Change all uses of win95, winnt, and win32
Geoff Voelker <voelker@cs.washington.edu>
parents:
16588
diff
changeset
|
170 DWORD dwWindowsThreadId = 0; |
|
36babc489b0c
Change all uses of win95, winnt, and win32
Geoff Voelker <voelker@cs.washington.edu>
parents:
16588
diff
changeset
|
171 HANDLE hWindowsThread = NULL; |
| 13434 | 172 DWORD dwMainThreadId = 0; |
| 173 HANDLE hMainThread = NULL; | |
| 174 | |
|
19713
043ccce224fb
(SIF_*): Win95 macros defined for NT.
Geoff Voelker <voelker@cs.washington.edu>
parents:
18877
diff
changeset
|
175 int vertical_scroll_bar_min_handle; |
|
043ccce224fb
(SIF_*): Win95 macros defined for NT.
Geoff Voelker <voelker@cs.washington.edu>
parents:
18877
diff
changeset
|
176 int vertical_scroll_bar_top_border; |
|
043ccce224fb
(SIF_*): Win95 macros defined for NT.
Geoff Voelker <voelker@cs.washington.edu>
parents:
18877
diff
changeset
|
177 int vertical_scroll_bar_bottom_border; |
|
043ccce224fb
(SIF_*): Win95 macros defined for NT.
Geoff Voelker <voelker@cs.washington.edu>
parents:
18877
diff
changeset
|
178 |
|
043ccce224fb
(SIF_*): Win95 macros defined for NT.
Geoff Voelker <voelker@cs.washington.edu>
parents:
18877
diff
changeset
|
179 int last_scroll_bar_drag_pos; |
|
043ccce224fb
(SIF_*): Win95 macros defined for NT.
Geoff Voelker <voelker@cs.washington.edu>
parents:
18877
diff
changeset
|
180 |
| 13434 | 181 /* Mouse movement. */ |
| 182 | |
| 183 /* Where the mouse was last time we reported a mouse event. */ | |
|
29321
8e2be36bb1c6
Format and doc changes to bring closer to xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
28369
diff
changeset
|
184 |
| 13434 | 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 |
|
8e2be36bb1c6
Format and doc changes to bring closer to xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
28369
diff
changeset
|
220 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
|
221 |
|
8e2be36bb1c6
Format and doc changes to bring closer to xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
28369
diff
changeset
|
222 /* 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
|
223 events. */ |
|
8e2be36bb1c6
Format and doc changes to bring closer to xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
28369
diff
changeset
|
224 |
| 13434 | 225 #ifdef __STDC__ |
| 226 static int volatile input_signal_count; | |
| 227 #else | |
| 228 static int input_signal_count; | |
| 229 #endif | |
| 230 | |
| 231 extern Lisp_Object Vcommand_line_args, Vsystem_name; | |
| 232 | |
|
31116
bbd7763673b6
Include keyboard.h before frame.h.
Andrew Innes <andrewi@gnu.org>
parents:
31010
diff
changeset
|
233 #ifndef USE_CRT_DLL |
| 13434 | 234 extern int errno; |
|
31116
bbd7763673b6
Include keyboard.h before frame.h.
Andrew Innes <andrewi@gnu.org>
parents:
31010
diff
changeset
|
235 #endif |
| 13434 | 236 |
| 237 /* A mask of extra modifier bits to put into every keyboard char. */ | |
|
29321
8e2be36bb1c6
Format and doc changes to bring closer to xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
28369
diff
changeset
|
238 |
|
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
|
239 extern EMACS_INT extra_keyboard_modifiers; |
| 13434 | 240 |
|
31116
bbd7763673b6
Include keyboard.h before frame.h.
Andrew Innes <andrewi@gnu.org>
parents:
31010
diff
changeset
|
241 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
|
242 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
|
243 struct input_event *)); |
|
81493
e7dfb7cb2088
(w32_delete_display): Remove leftover declaration.
Juanma Barranquero <lekktu@gmail.com>
parents:
76022
diff
changeset
|
244 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
|
245 |
|
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
246 void x_lower_frame P_ ((struct frame *)); |
|
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
247 void x_scroll_bar_clear P_ ((struct frame *)); |
|
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
248 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
|
249 void x_raise_frame P_ ((struct frame *)); |
|
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
250 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
|
251 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
|
252 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
|
253 static void w32_initialize P_ ((void)); |
|
27402
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
254 static void x_update_end P_ ((struct frame *)); |
|
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
255 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
|
256 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
|
257 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
|
258 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
|
259 static void frame_highlight P_ ((struct frame *)); |
|
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
260 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
|
261 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
|
262 struct frame *)); |
|
60948
03a8b8b9ebef
(x_focus_changed, w32_detect_focus_change): New functions.
Jason Rumney <jasonr@gnu.org>
parents:
59748
diff
changeset
|
263 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
|
264 struct frame *, struct input_event *)); |
|
03a8b8b9ebef
(x_focus_changed, w32_detect_focus_change): New functions.
Jason Rumney <jasonr@gnu.org>
parents:
59748
diff
changeset
|
265 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
|
266 W32Msg *, struct input_event *)); |
|
27402
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
267 static void w32_frame_rehighlight P_ ((struct frame *)); |
|
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
268 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
|
269 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
|
270 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
|
271 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
|
272 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
|
273 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
|
274 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
|
275 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
|
276 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
|
277 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
|
278 |
| 13434 | 279 static Lisp_Object Qvendor_specific_keysyms; |
| 280 | |
| 281 | |
|
29321
8e2be36bb1c6
Format and doc changes to bring closer to xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
28369
diff
changeset
|
282 /*********************************************************************** |
|
8e2be36bb1c6
Format and doc changes to bring closer to xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
28369
diff
changeset
|
283 Debugging |
|
8e2be36bb1c6
Format and doc changes to bring closer to xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
28369
diff
changeset
|
284 ***********************************************************************/ |
|
8e2be36bb1c6
Format and doc changes to bring closer to xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
28369
diff
changeset
|
285 |
| 13434 | 286 #if 0 |
|
29321
8e2be36bb1c6
Format and doc changes to bring closer to xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
28369
diff
changeset
|
287 |
|
8e2be36bb1c6
Format and doc changes to bring closer to xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
28369
diff
changeset
|
288 /* 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
|
289 the sequence of occurrences in this file. */ |
| 13434 | 290 |
|
48218
01e253345507
(w32_draw_fringe_bitmap): Remove unused local variable window.
Juanma Barranquero <lekktu@gmail.com>
parents:
48025
diff
changeset
|
291 struct record |
| 13434 | 292 { |
| 293 char *locus; | |
| 294 int type; | |
| 295 }; | |
| 296 | |
| 297 struct record event_record[100]; | |
| 298 | |
| 299 int event_record_index; | |
| 300 | |
| 301 record_event (locus, type) | |
| 302 char *locus; | |
| 303 int type; | |
| 304 { | |
| 305 if (event_record_index == sizeof (event_record) / sizeof (struct record)) | |
| 306 event_record_index = 0; | |
| 307 | |
| 308 event_record[event_record_index].locus = locus; | |
| 309 event_record[event_record_index].type = type; | |
| 310 event_record_index++; | |
| 311 } | |
| 312 | |
| 313 #endif /* 0 */ | |
| 314 | |
|
27402
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
315 |
|
50441
37738feb0204
Break the line after the return type in function definition.
Richard M. Stallman <rms@gnu.org>
parents:
50376
diff
changeset
|
316 void |
|
37738feb0204
Break the line after the return type in function definition.
Richard M. Stallman <rms@gnu.org>
parents:
50376
diff
changeset
|
317 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
|
318 XGCValues *xgcv) |
|
27402
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
319 { |
|
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
320 if (mask & GCForeground) |
|
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
321 gc->foreground = xgcv->foreground; |
|
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
322 if (mask & GCBackground) |
|
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
323 gc->background = xgcv->background; |
|
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
324 if (mask & GCFont) |
|
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
325 gc->font = xgcv->font; |
|
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 |
|
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
328 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
|
329 XGCValues *xgcv) |
|
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
330 { |
|
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
331 XGCValues *gc = (XGCValues *) xmalloc (sizeof (XGCValues)); |
|
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
332 bzero (gc, sizeof (XGCValues)); |
|
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 XChangeGC (ignore, gc, mask, xgcv); |
|
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
335 |
|
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
336 return gc; |
|
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
337 } |
|
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
338 |
|
50441
37738feb0204
Break the line after the return type in function definition.
Richard M. Stallman <rms@gnu.org>
parents:
50376
diff
changeset
|
339 void |
|
37738feb0204
Break the line after the return type in function definition.
Richard M. Stallman <rms@gnu.org>
parents:
50376
diff
changeset
|
340 XGetGCValues (void* ignore, XGCValues *gc, |
|
27402
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
341 unsigned long mask, XGCValues *xgcv) |
|
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
342 { |
|
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
343 XChangeGC (ignore, xgcv, mask, gc); |
|
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 |
|
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
346 static void |
|
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
347 w32_set_clip_rectangle (HDC hdc, RECT *rect) |
|
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
348 { |
|
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
349 if (rect) |
|
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 HRGN clip_region = CreateRectRgnIndirect (rect); |
|
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
352 SelectClipRgn (hdc, clip_region); |
|
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
353 DeleteObject (clip_region); |
|
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 else |
|
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
356 SelectClipRgn (hdc, NULL); |
|
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
357 } |
|
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
358 |
|
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
359 |
|
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
360 /* Draw a hollow rectangle at the specified position. */ |
|
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
361 void |
|
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
362 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
|
363 int width, int height) |
|
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
364 { |
|
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
365 HBRUSH hb, oldhb; |
|
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
366 HPEN hp, oldhp; |
|
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
367 |
|
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
368 hb = CreateSolidBrush (gc->background); |
|
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
369 hp = CreatePen (PS_SOLID, 0, gc->foreground); |
|
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
370 oldhb = SelectObject (hdc, hb); |
|
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
371 oldhp = SelectObject (hdc, hp); |
|
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
372 |
|
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
373 Rectangle (hdc, x, y, x + width, y + height); |
|
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
374 |
|
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
375 SelectObject (hdc, oldhb); |
|
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
376 SelectObject (hdc, oldhp); |
|
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
377 DeleteObject (hb); |
|
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
378 DeleteObject (hp); |
|
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
379 } |
|
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
380 |
|
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
381 /* 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
|
382 void |
|
27406
fb36ccd8457c
(w32_fill_rect): Do not try to deal with NULL hdc
Jason Rumney <jasonr@gnu.org>
parents:
27402
diff
changeset
|
383 w32_fill_rect (f, hdc, pix, lprect) |
| 13434 | 384 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
|
385 HDC hdc; |
| 13434 | 386 COLORREF pix; |
| 387 RECT * lprect; | |
| 388 { | |
| 389 HBRUSH hb; | |
|
27402
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
390 |
| 13434 | 391 hb = CreateSolidBrush (pix); |
| 392 FillRect (hdc, lprect, hb); | |
| 393 DeleteObject (hb); | |
| 394 } | |
| 395 | |
|
48218
01e253345507
(w32_draw_fringe_bitmap): Remove unused local variable window.
Juanma Barranquero <lekktu@gmail.com>
parents:
48025
diff
changeset
|
396 void |
|
16588
481b7874a1e9
Change identifiers of the form win32* to w32*.
Geoff Voelker <voelker@cs.washington.edu>
parents:
16326
diff
changeset
|
397 w32_clear_window (f) |
| 13434 | 398 FRAME_PTR f; |
| 399 { | |
| 400 RECT rect; | |
|
27406
fb36ccd8457c
(w32_fill_rect): Do not try to deal with NULL hdc
Jason Rumney <jasonr@gnu.org>
parents:
27402
diff
changeset
|
401 HDC hdc = get_frame_dc (f); |
|
15151
ed6ddfc0d954
(Vwindow_system): Declared.
Geoff Voelker <voelker@cs.washington.edu>
parents:
15035
diff
changeset
|
402 |
|
34093
d554a3ac3039
(x_draw_vertical_border): Fix call to w32_fill_rect.
Jason Rumney <jasonr@gnu.org>
parents:
33766
diff
changeset
|
403 /* 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
|
404 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
|
405 of 0 indicates this. */ |
|
d554a3ac3039
(x_draw_vertical_border): Fix call to w32_fill_rect.
Jason Rumney <jasonr@gnu.org>
parents:
33766
diff
changeset
|
406 if (hdc) |
|
d554a3ac3039
(x_draw_vertical_border): Fix call to w32_fill_rect.
Jason Rumney <jasonr@gnu.org>
parents:
33766
diff
changeset
|
407 { |
|
d554a3ac3039
(x_draw_vertical_border): Fix call to w32_fill_rect.
Jason Rumney <jasonr@gnu.org>
parents:
33766
diff
changeset
|
408 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
|
409 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
|
410 } |
|
d554a3ac3039
(x_draw_vertical_border): Fix call to w32_fill_rect.
Jason Rumney <jasonr@gnu.org>
parents:
33766
diff
changeset
|
411 |
|
27406
fb36ccd8457c
(w32_fill_rect): Do not try to deal with NULL hdc
Jason Rumney <jasonr@gnu.org>
parents:
27402
diff
changeset
|
412 release_frame_dc (f, hdc); |
| 13434 | 413 } |
| 414 | |
| 415 | |
|
27402
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
416 /*********************************************************************** |
|
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
417 Starting and ending an update |
|
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
418 ***********************************************************************/ |
|
48218
01e253345507
(w32_draw_fringe_bitmap): Remove unused local variable window.
Juanma Barranquero <lekktu@gmail.com>
parents:
48025
diff
changeset
|
419 |
|
27402
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
420 /* 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
|
421 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
|
422 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
|
423 each window being updated. */ |
| 13434 | 424 |
|
21831
6b659713b90b
Forward declare hooks with full function prototypes.
Geoff Voelker <voelker@cs.washington.edu>
parents:
21740
diff
changeset
|
425 static void |
|
27402
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
426 x_update_begin (f) |
| 13434 | 427 struct frame *f; |
| 428 { | |
|
34784
d140f5fb3307
(x_update_begin): Regenerate the palette here, rather
Andrew Innes <andrewi@gnu.org>
parents:
34779
diff
changeset
|
429 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
|
430 |
| 35000 | 431 if (! FRAME_W32_P (f)) |
| 432 return; | |
| 433 | |
|
34784
d140f5fb3307
(x_update_begin): Regenerate the palette here, rather
Andrew Innes <andrewi@gnu.org>
parents:
34779
diff
changeset
|
434 /* 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
|
435 colors has changed. */ |
|
d140f5fb3307
(x_update_begin): Regenerate the palette here, rather
Andrew Innes <andrewi@gnu.org>
parents:
34779
diff
changeset
|
436 if (display_info->regen_palette) |
|
d140f5fb3307
(x_update_begin): Regenerate the palette here, rather
Andrew Innes <andrewi@gnu.org>
parents:
34779
diff
changeset
|
437 { |
|
d140f5fb3307
(x_update_begin): Regenerate the palette here, rather
Andrew Innes <andrewi@gnu.org>
parents:
34779
diff
changeset
|
438 w32_regenerate_palette (f); |
|
d140f5fb3307
(x_update_begin): Regenerate the palette here, rather
Andrew Innes <andrewi@gnu.org>
parents:
34779
diff
changeset
|
439 display_info->regen_palette = FALSE; |
|
d140f5fb3307
(x_update_begin): Regenerate the palette here, rather
Andrew Innes <andrewi@gnu.org>
parents:
34779
diff
changeset
|
440 } |
|
27402
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
441 } |
|
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
442 |
|
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
443 |
|
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
444 /* 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
|
445 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
|
446 position of W. */ |
|
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
447 |
|
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
448 static void |
|
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
449 x_update_window_begin (w) |
|
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
450 struct window *w; |
|
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
451 { |
|
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
452 struct frame *f = XFRAME (WINDOW_FRAME (w)); |
|
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
453 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
|
454 |
|
42864
c1af6a7f3dd4
(w32_system_caret_width): Remove.
Jason Rumney <jasonr@gnu.org>
parents:
42844
diff
changeset
|
455 /* 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
|
456 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
|
457 { |
|
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
|
458 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
|
459 } |
|
42864
c1af6a7f3dd4
(w32_system_caret_width): Remove.
Jason Rumney <jasonr@gnu.org>
parents:
42844
diff
changeset
|
460 |
|
27402
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
461 updated_window = w; |
|
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
462 set_output_cursor (&w->cursor); |
| 13434 | 463 |
| 464 BLOCK_INPUT; | |
| 465 | |
|
27402
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
466 if (f == display_info->mouse_face_mouse_frame) |
| 13434 | 467 { |
| 468 /* 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
|
469 display_info->mouse_face_defer = 1; |
| 13434 | 470 |
|
29321
8e2be36bb1c6
Format and doc changes to bring closer to xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
28369
diff
changeset
|
471 /* 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
|
472 highlighting. */ |
| 13434 | 473 if (FRAME_GARBAGED_P (f)) |
|
27402
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
474 display_info->mouse_face_window = Qnil; |
|
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
475 |
|
30240
2c2a7ebd2c15
(help_echo_object, help_echo_pos): New variables.
Jason Rumney <jasonr@gnu.org>
parents:
30199
diff
changeset
|
476 #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
|
477 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
|
478 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
|
479 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
|
480 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
|
481 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
|
482 |
|
27402
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
483 /* 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
|
484 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
|
485 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
|
486 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
|
487 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
|
488 if (!NILP (display_info->mouse_face_window) |
|
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
489 && w == XWINDOW (display_info->mouse_face_window)) |
| 13434 | 490 { |
|
27402
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
491 int i; |
|
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
492 |
|
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
493 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
|
494 if (MATRIX_ROW_ENABLED_P (w->desired_matrix, i)) |
| 13434 | 495 break; |
| 496 | |
|
27402
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
497 if (i < w->desired_matrix->nrows) |
|
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
498 clear_mouse_face (display_info); |
| 13434 | 499 } |
|
30240
2c2a7ebd2c15
(help_echo_object, help_echo_pos): New variables.
Jason Rumney <jasonr@gnu.org>
parents:
30199
diff
changeset
|
500 #endif /* 0 */ |
| 13434 | 501 } |
| 502 | |
| 503 UNBLOCK_INPUT; | |
| 504 } | |
| 505 | |
|
50231
c8ea5e4b2129
* w32term.c: Remove consolidated defines and code.
Kim F. Storm <storm@cua.dk>
parents:
50163
diff
changeset
|
506 /* 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
|
507 |
|
21831
6b659713b90b
Forward declare hooks with full function prototypes.
Geoff Voelker <voelker@cs.washington.edu>
parents:
21740
diff
changeset
|
508 static void |
|
50231
c8ea5e4b2129
* w32term.c: Remove consolidated defines and code.
Kim F. Storm <storm@cua.dk>
parents:
50163
diff
changeset
|
509 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
|
510 struct window *w; |
|
50231
c8ea5e4b2129
* w32term.c: Remove consolidated defines and code.
Kim F. Storm <storm@cua.dk>
parents:
50163
diff
changeset
|
511 int x, y0, y1; |
|
27402
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
512 { |
|
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
513 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
|
514 RECT r; |
|
c8ea5e4b2129
* w32term.c: Remove consolidated defines and code.
Kim F. Storm <storm@cua.dk>
parents:
50163
diff
changeset
|
515 HDC hdc; |
|
63912
12f374b6c866
(w32_draw_vertical_window_border): Use foreground of
Eli Zaretskii <eliz@gnu.org>
parents:
63904
diff
changeset
|
516 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
|
517 |
|
50231
c8ea5e4b2129
* w32term.c: Remove consolidated defines and code.
Kim F. Storm <storm@cua.dk>
parents:
50163
diff
changeset
|
518 r.left = x; |
|
c8ea5e4b2129
* w32term.c: Remove consolidated defines and code.
Kim F. Storm <storm@cua.dk>
parents:
50163
diff
changeset
|
519 r.right = x + 1; |
|
c8ea5e4b2129
* w32term.c: Remove consolidated defines and code.
Kim F. Storm <storm@cua.dk>
parents:
50163
diff
changeset
|
520 r.top = y0; |
|
c8ea5e4b2129
* w32term.c: Remove consolidated defines and code.
Kim F. Storm <storm@cua.dk>
parents:
50163
diff
changeset
|
521 r.bottom = y1; |
|
c8ea5e4b2129
* w32term.c: Remove consolidated defines and code.
Kim F. Storm <storm@cua.dk>
parents:
50163
diff
changeset
|
522 |
|
c8ea5e4b2129
* w32term.c: Remove consolidated defines and code.
Kim F. Storm <storm@cua.dk>
parents:
50163
diff
changeset
|
523 hdc = get_frame_dc (f); |
|
63912
12f374b6c866
(w32_draw_vertical_window_border): Use foreground of
Eli Zaretskii <eliz@gnu.org>
parents:
63904
diff
changeset
|
524 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
|
525 if (face) |
|
12f374b6c866
(w32_draw_vertical_window_border): Use foreground of
Eli Zaretskii <eliz@gnu.org>
parents:
63904
diff
changeset
|
526 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
|
527 else |
|
12f374b6c866
(w32_draw_vertical_window_border): Use foreground of
Eli Zaretskii <eliz@gnu.org>
parents:
63904
diff
changeset
|
528 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
|
529 |
|
50231
c8ea5e4b2129
* w32term.c: Remove consolidated defines and code.
Kim F. Storm <storm@cua.dk>
parents:
50163
diff
changeset
|
530 release_frame_dc (f, hdc); |
|
27402
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
531 } |
|
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
532 |
|
48218
01e253345507
(w32_draw_fringe_bitmap): Remove unused local variable window.
Juanma Barranquero <lekktu@gmail.com>
parents:
48025
diff
changeset
|
533 |
|
30240
2c2a7ebd2c15
(help_echo_object, help_echo_pos): New variables.
Jason Rumney <jasonr@gnu.org>
parents:
30199
diff
changeset
|
534 /* 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
|
535 |
|
2c2a7ebd2c15
(help_echo_object, help_echo_pos): New variables.
Jason Rumney <jasonr@gnu.org>
parents:
30199
diff
changeset
|
536 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
|
537 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
|
538 |
|
2c2a7ebd2c15
(help_echo_object, help_echo_pos): New variables.
Jason Rumney <jasonr@gnu.org>
parents:
30199
diff
changeset
|
539 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
|
540 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
|
541 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
|
542 |
|
2c2a7ebd2c15
(help_echo_object, help_echo_pos): New variables.
Jason Rumney <jasonr@gnu.org>
parents:
30199
diff
changeset
|
543 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
|
544 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
|
545 here. */ |
|
27402
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
546 |
|
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
547 static void |
|
30240
2c2a7ebd2c15
(help_echo_object, help_echo_pos): New variables.
Jason Rumney <jasonr@gnu.org>
parents:
30199
diff
changeset
|
548 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
|
549 struct window *w; |
|
30240
2c2a7ebd2c15
(help_echo_object, help_echo_pos): New variables.
Jason Rumney <jasonr@gnu.org>
parents:
30199
diff
changeset
|
550 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
|
551 { |
|
50231
c8ea5e4b2129
* w32term.c: Remove consolidated defines and code.
Kim F. Storm <storm@cua.dk>
parents:
50163
diff
changeset
|
552 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
|
553 |
|
27402
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
554 if (!w->pseudo_window_p) |
|
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
555 { |
|
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
556 BLOCK_INPUT; |
|
30240
2c2a7ebd2c15
(help_echo_object, help_echo_pos): New variables.
Jason Rumney <jasonr@gnu.org>
parents:
30199
diff
changeset
|
557 |
|
27402
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
558 if (cursor_on_p) |
|
50231
c8ea5e4b2129
* w32term.c: Remove consolidated defines and code.
Kim F. Storm <storm@cua.dk>
parents:
50163
diff
changeset
|
559 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
|
560 output_cursor.vpos, |
|
c8ea5e4b2129
* w32term.c: Remove consolidated defines and code.
Kim F. Storm <storm@cua.dk>
parents:
50163
diff
changeset
|
561 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
|
562 |
|
57373
38e45bf0128a
(x_update_window_end): Fix flicker on vertical line between
Kim F. Storm <storm@cua.dk>
parents:
57278
diff
changeset
|
563 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
|
564 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
|
565 |
|
27402
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
566 UNBLOCK_INPUT; |
|
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
567 } |
|
40137
5f0d7d58283b
(remember_mouse_glyph): New function.
Jason Rumney <jasonr@gnu.org>
parents:
40078
diff
changeset
|
568 |
|
5f0d7d58283b
(remember_mouse_glyph): New function.
Jason Rumney <jasonr@gnu.org>
parents:
40078
diff
changeset
|
569 /* 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
|
570 XTframe_up_to_date to redisplay the mouse highlight. */ |
|
5f0d7d58283b
(remember_mouse_glyph): New function.
Jason Rumney <jasonr@gnu.org>
parents:
40078
diff
changeset
|
571 if (mouse_face_overwritten_p) |
|
5f0d7d58283b
(remember_mouse_glyph): New function.
Jason Rumney <jasonr@gnu.org>
parents:
40078
diff
changeset
|
572 { |
|
5f0d7d58283b
(remember_mouse_glyph): New function.
Jason Rumney <jasonr@gnu.org>
parents:
40078
diff
changeset
|
573 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
|
574 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
|
575 dpyinfo->mouse_face_window = Qnil; |
|
5f0d7d58283b
(remember_mouse_glyph): New function.
Jason Rumney <jasonr@gnu.org>
parents:
40078
diff
changeset
|
576 } |
|
5f0d7d58283b
(remember_mouse_glyph): New function.
Jason Rumney <jasonr@gnu.org>
parents:
40078
diff
changeset
|
577 |
|
42864
c1af6a7f3dd4
(w32_system_caret_width): Remove.
Jason Rumney <jasonr@gnu.org>
parents:
42844
diff
changeset
|
578 /* 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
|
579 was visible before the corresponding call to HideCaret in |
|
c1af6a7f3dd4
(w32_system_caret_width): Remove.
Jason Rumney <jasonr@gnu.org>
parents:
42844
diff
changeset
|
580 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
|
581 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
|
582 { |
|
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
|
583 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
|
584 } |
|
42864
c1af6a7f3dd4
(w32_system_caret_width): Remove.
Jason Rumney <jasonr@gnu.org>
parents:
42844
diff
changeset
|
585 |
|
27402
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
586 updated_window = NULL; |
|
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
587 } |
|
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
588 |
|
29321
8e2be36bb1c6
Format and doc changes to bring closer to xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
28369
diff
changeset
|
589 |
|
8e2be36bb1c6
Format and doc changes to bring closer to xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
28369
diff
changeset
|
590 /* 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
|
591 update_end. */ |
|
8e2be36bb1c6
Format and doc changes to bring closer to xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
28369
diff
changeset
|
592 |
|
27402
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
593 static void |
|
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
594 x_update_end (f) |
| 13434 | 595 struct frame *f; |
| 596 { | |
| 35000 | 597 if (! FRAME_W32_P (f)) |
| 598 return; | |
| 599 | |
|
27402
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
600 /* Mouse highlight may be displayed again. */ |
|
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
601 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
|
602 } |
|
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
603 |
|
29321
8e2be36bb1c6
Format and doc changes to bring closer to xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
28369
diff
changeset
|
604 |
|
27402
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
605 /* 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
|
606 complete update has been performed. The global variable |
|
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
607 updated_window is not available here. */ |
| 13434 | 608 |
|
21831
6b659713b90b
Forward declare hooks with full function prototypes.
Geoff Voelker <voelker@cs.washington.edu>
parents:
21740
diff
changeset
|
609 static void |
|
16588
481b7874a1e9
Change identifiers of the form win32* to w32*.
Geoff Voelker <voelker@cs.washington.edu>
parents:
16326
diff
changeset
|
610 w32_frame_up_to_date (f) |
|
27402
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
611 struct frame *f; |
|
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
612 { |
|
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
613 if (FRAME_W32_P (f)) |
|
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
614 { |
|
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
615 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
|
616 |
|
27402
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
617 if (dpyinfo->mouse_face_deferred_gc |
|
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
618 || f == dpyinfo->mouse_face_mouse_frame) |
|
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
619 { |
|
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
620 BLOCK_INPUT; |
|
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
621 if (dpyinfo->mouse_face_mouse_frame) |
|
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
622 note_mouse_highlight (dpyinfo->mouse_face_mouse_frame, |
|
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
623 dpyinfo->mouse_face_mouse_x, |
|
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
624 dpyinfo->mouse_face_mouse_y); |
|
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
625 dpyinfo->mouse_face_deferred_gc = 0; |
|
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
626 UNBLOCK_INPUT; |
|
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
627 } |
|
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
628 } |
|
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
629 } |
|
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
630 |
|
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
631 |
|
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
632 /* Draw truncation mark bitmaps, continuation mark bitmaps, overlay |
| 41125 | 633 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
|
634 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
|
635 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
|
636 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
|
637 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
|
638 |
|
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
639 static void |
|
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
640 x_after_update_window_line (desired_row) |
|
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
641 struct glyph_row *desired_row; |
|
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
642 { |
|
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
643 struct window *w = updated_window; |
|
41249
2043af2d023f
(note_mouse_highlight): Fix type of variable `ignore'.
Jason Rumney <jasonr@gnu.org>
parents:
41125
diff
changeset
|
644 struct frame *f; |
|
2043af2d023f
(note_mouse_highlight): Fix type of variable `ignore'.
Jason Rumney <jasonr@gnu.org>
parents:
41125
diff
changeset
|
645 int width, height; |
|
2043af2d023f
(note_mouse_highlight): Fix type of variable `ignore'.
Jason Rumney <jasonr@gnu.org>
parents:
41125
diff
changeset
|
646 |
|
27402
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
647 xassert (w); |
|
48218
01e253345507
(w32_draw_fringe_bitmap): Remove unused local variable window.
Juanma Barranquero <lekktu@gmail.com>
parents:
48025
diff
changeset
|
648 |
|
27402
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
649 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
|
650 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
|
651 |
|
2043af2d023f
(note_mouse_highlight): Fix type of variable `ignore'.
Jason Rumney <jasonr@gnu.org>
parents:
41125
diff
changeset
|
652 /* 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
|
653 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
|
654 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
|
655 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
|
656 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
|
657 overhead is very small. */ |
|
2043af2d023f
(note_mouse_highlight): Fix type of variable `ignore'.
Jason Rumney <jasonr@gnu.org>
parents:
41125
diff
changeset
|
658 if (windows_or_buffers_changed |
|
2043af2d023f
(note_mouse_highlight): Fix type of variable `ignore'.
Jason Rumney <jasonr@gnu.org>
parents:
41125
diff
changeset
|
659 && desired_row->full_width_p |
|
2043af2d023f
(note_mouse_highlight): Fix type of variable `ignore'.
Jason Rumney <jasonr@gnu.org>
parents:
41125
diff
changeset
|
660 && (f = XFRAME (w->frame), |
|
2043af2d023f
(note_mouse_highlight): Fix type of variable `ignore'.
Jason Rumney <jasonr@gnu.org>
parents:
41125
diff
changeset
|
661 width = FRAME_INTERNAL_BORDER_WIDTH (f), |
|
2043af2d023f
(note_mouse_highlight): Fix type of variable `ignore'.
Jason Rumney <jasonr@gnu.org>
parents:
41125
diff
changeset
|
662 width != 0) |
|
2043af2d023f
(note_mouse_highlight): Fix type of variable `ignore'.
Jason Rumney <jasonr@gnu.org>
parents:
41125
diff
changeset
|
663 && (height = desired_row->visible_height, |
|
2043af2d023f
(note_mouse_highlight): Fix type of variable `ignore'.
Jason Rumney <jasonr@gnu.org>
parents:
41125
diff
changeset
|
664 height > 0)) |
|
2043af2d023f
(note_mouse_highlight): Fix type of variable `ignore'.
Jason Rumney <jasonr@gnu.org>
parents:
41125
diff
changeset
|
665 { |
|
2043af2d023f
(note_mouse_highlight): Fix type of variable `ignore'.
Jason Rumney <jasonr@gnu.org>
parents:
41125
diff
changeset
|
666 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
|
667 |
|
41249
2043af2d023f
(note_mouse_highlight): Fix type of variable `ignore'.
Jason Rumney <jasonr@gnu.org>
parents:
41125
diff
changeset
|
668 /* Internal border is drawn below the tool bar. */ |
|
2043af2d023f
(note_mouse_highlight): Fix type of variable `ignore'.
Jason Rumney <jasonr@gnu.org>
parents:
41125
diff
changeset
|
669 if (WINDOWP (f->tool_bar_window) |
|
2043af2d023f
(note_mouse_highlight): Fix type of variable `ignore'.
Jason Rumney <jasonr@gnu.org>
parents:
41125
diff
changeset
|
670 && w == XWINDOW (f->tool_bar_window)) |
|
2043af2d023f
(note_mouse_highlight): Fix type of variable `ignore'.
Jason Rumney <jasonr@gnu.org>
parents:
41125
diff
changeset
|
671 y -= width; |
|
2043af2d023f
(note_mouse_highlight): Fix type of variable `ignore'.
Jason Rumney <jasonr@gnu.org>
parents:
41125
diff
changeset
|
672 |
|
2043af2d023f
(note_mouse_highlight): Fix type of variable `ignore'.
Jason Rumney <jasonr@gnu.org>
parents:
41125
diff
changeset
|
673 BLOCK_INPUT; |
|
2043af2d023f
(note_mouse_highlight): Fix type of variable `ignore'.
Jason Rumney <jasonr@gnu.org>
parents:
41125
diff
changeset
|
674 { |
|
2043af2d023f
(note_mouse_highlight): Fix type of variable `ignore'.
Jason Rumney <jasonr@gnu.org>
parents:
41125
diff
changeset
|
675 HDC hdc = get_frame_dc (f); |
|
2043af2d023f
(note_mouse_highlight): Fix type of variable `ignore'.
Jason Rumney <jasonr@gnu.org>
parents:
41125
diff
changeset
|
676 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
|
677 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
|
678 y, width, height); |
|
2043af2d023f
(note_mouse_highlight): Fix type of variable `ignore'.
Jason Rumney <jasonr@gnu.org>
parents:
41125
diff
changeset
|
679 release_frame_dc (f, hdc); |
|
2043af2d023f
(note_mouse_highlight): Fix type of variable `ignore'.
Jason Rumney <jasonr@gnu.org>
parents:
41125
diff
changeset
|
680 } |
|
27402
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
681 UNBLOCK_INPUT; |
|
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
682 } |
|
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
683 } |
|
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 |
| 41125 | 686 /* 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
|
687 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
|
688 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
|
689 drawn. */ |
|
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
690 |
|
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
691 static void |
| 50096 | 692 w32_draw_fringe_bitmap (w, row, p) |
|
27402
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
693 struct window *w; |
|
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
694 struct glyph_row *row; |
| 50096 | 695 struct draw_fringe_bitmap_params *p; |
|
27402
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 struct frame *f = XFRAME (WINDOW_FRAME (w)); |
| 50096 | 698 HDC hdc; |
| 699 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
|
700 int rowY; |
| 50096 | 701 |
| 702 hdc = get_frame_dc (f); | |
|
27402
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
703 |
|
82170
e0ebebf01b6d
(w32_draw_fringe_bitmap): Extend fringe background to
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
82140
diff
changeset
|
704 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
|
705 { |
|
e0ebebf01b6d
(w32_draw_fringe_bitmap): Extend fringe background to
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
82140
diff
changeset
|
706 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
|
707 |
|
e0ebebf01b6d
(w32_draw_fringe_bitmap): Extend fringe background to
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
82140
diff
changeset
|
708 /* 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
|
709 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
|
710 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
|
711 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
|
712 && 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
|
713 || (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
|
714 && 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
|
715 { |
|
e0ebebf01b6d
(w32_draw_fringe_bitmap): Extend fringe background to
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
82140
diff
changeset
|
716 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
|
717 |
|
e0ebebf01b6d
(w32_draw_fringe_bitmap): Extend fringe background to
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
82140
diff
changeset
|
718 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
|
719 { |
|
e0ebebf01b6d
(w32_draw_fringe_bitmap): Extend fringe background to
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
82140
diff
changeset
|
720 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
|
721 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
|
722 * 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
|
723 |
|
e0ebebf01b6d
(w32_draw_fringe_bitmap): Extend fringe background to
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
82140
diff
changeset
|
724 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
|
725 { |
|
e0ebebf01b6d
(w32_draw_fringe_bitmap): Extend fringe background to
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
82140
diff
changeset
|
726 /* 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
|
727 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
|
728 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
|
729 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
|
730 bx = left; |
|
e0ebebf01b6d
(w32_draw_fringe_bitmap): Extend fringe background to
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
82140
diff
changeset
|
731 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
|
732 { |
|
e0ebebf01b6d
(w32_draw_fringe_bitmap): Extend fringe background to
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
82140
diff
changeset
|
733 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
|
734 |
|
e0ebebf01b6d
(w32_draw_fringe_bitmap): Extend fringe background to
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
82140
diff
changeset
|
735 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
|
736 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
|
737 row->y)); |
|
e0ebebf01b6d
(w32_draw_fringe_bitmap): Extend fringe background to
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
82140
diff
changeset
|
738 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
|
739 } |
|
e0ebebf01b6d
(w32_draw_fringe_bitmap): Extend fringe background to
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
82140
diff
changeset
|
740 } |
|
e0ebebf01b6d
(w32_draw_fringe_bitmap): Extend fringe background to
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
82140
diff
changeset
|
741 else |
|
e0ebebf01b6d
(w32_draw_fringe_bitmap): Extend fringe background to
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
82140
diff
changeset
|
742 { |
|
e0ebebf01b6d
(w32_draw_fringe_bitmap): Extend fringe background to
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
82140
diff
changeset
|
743 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
|
744 { |
|
e0ebebf01b6d
(w32_draw_fringe_bitmap): Extend fringe background to
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
82140
diff
changeset
|
745 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
|
746 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
|
747 } |
|
e0ebebf01b6d
(w32_draw_fringe_bitmap): Extend fringe background to
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
82140
diff
changeset
|
748 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
|
749 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
|
750 } |
|
e0ebebf01b6d
(w32_draw_fringe_bitmap): Extend fringe background to
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
82140
diff
changeset
|
751 } |
|
e0ebebf01b6d
(w32_draw_fringe_bitmap): Extend fringe background to
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
82140
diff
changeset
|
752 } |
|
e0ebebf01b6d
(w32_draw_fringe_bitmap): Extend fringe background to
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
82140
diff
changeset
|
753 |
|
e0ebebf01b6d
(w32_draw_fringe_bitmap): Extend fringe background to
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
82140
diff
changeset
|
754 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
|
755 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
|
756 } |
|
e0ebebf01b6d
(w32_draw_fringe_bitmap): Extend fringe background to
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
82140
diff
changeset
|
757 |
|
27402
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
758 /* 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
|
759 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
|
760 if (p->y < rowY) |
|
4262a032b45b
(x_update_window_end): Call draw_window_fringes.
Kim F. Storm <storm@cua.dk>
parents:
53469
diff
changeset
|
761 { |
|
4262a032b45b
(x_update_window_end): Call draw_window_fringes.
Kim F. Storm <storm@cua.dk>
parents:
53469
diff
changeset
|
762 /* 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
|
763 visible last row. */ |
|
4262a032b45b
(x_update_window_end): Call draw_window_fringes.
Kim F. Storm <storm@cua.dk>
parents:
53469
diff
changeset
|
764 int oldY = row->y; |
|
4262a032b45b
(x_update_window_end): Call draw_window_fringes.
Kim F. Storm <storm@cua.dk>
parents:
53469
diff
changeset
|
765 int oldVH = row->visible_height; |
|
4262a032b45b
(x_update_window_end): Call draw_window_fringes.
Kim F. Storm <storm@cua.dk>
parents:
53469
diff
changeset
|
766 row->visible_height = p->h; |
|
4262a032b45b
(x_update_window_end): Call draw_window_fringes.
Kim F. Storm <storm@cua.dk>
parents:
53469
diff
changeset
|
767 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
|
768 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
|
769 row->y = oldY; |
|
4262a032b45b
(x_update_window_end): Call draw_window_fringes.
Kim F. Storm <storm@cua.dk>
parents:
53469
diff
changeset
|
770 row->visible_height = oldVH; |
|
4262a032b45b
(x_update_window_end): Call draw_window_fringes.
Kim F. Storm <storm@cua.dk>
parents:
53469
diff
changeset
|
771 } |
|
4262a032b45b
(x_update_window_end): Call draw_window_fringes.
Kim F. Storm <storm@cua.dk>
parents:
53469
diff
changeset
|
772 else |
|
58402
d1d4d5846215
(w32_clip_to_row): Add area arg. Callers changed.
Kim F. Storm <storm@cua.dk>
parents:
57837
diff
changeset
|
773 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
|
774 |
|
57278
4cec0243673a
(fringe_bmp): Change to pointer.
Kim F. Storm <storm@cua.dk>
parents:
56729
diff
changeset
|
775 if (p->which && p->which < max_fringe_bmp) |
| 50096 | 776 { |
| 777 HBITMAP pixmap = fringe_bmp[p->which]; | |
| 778 HDC compat_hdc; | |
| 779 HANDLE horig_obj; | |
| 780 | |
| 781 compat_hdc = CreateCompatibleDC (hdc); | |
|
53964
7add5c20b6f7
(w32_draw_fringe_bitmap): Handle overlay fringe bitmaps.
Jason Rumney <jasonr@gnu.org>
parents:
53934
diff
changeset
|
782 |
| 50096 | 783 SaveDC (hdc); |
| 784 | |
| 785 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
|
786 |
|
7add5c20b6f7
(w32_draw_fringe_bitmap): Handle overlay fringe bitmaps.
Jason Rumney <jasonr@gnu.org>
parents:
53934
diff
changeset
|
787 /* Paint overlays transparently. */ |
|
53886
e1b1c388f74d
(w32_draw_fringe_bitmap): Copy unadapted code from
Kim F. Storm <storm@cua.dk>
parents:
53607
diff
changeset
|
788 if (p->overlay_p) |
|
e1b1c388f74d
(w32_draw_fringe_bitmap): Copy unadapted code from
Kim F. Storm <storm@cua.dk>
parents:
53607
diff
changeset
|
789 { |
|
54126
8d0f80667054
(w32_draw_fringe_bitmap): Draw overlaid bitmaps
Jason Rumney <jasonr@gnu.org>
parents:
53964
diff
changeset
|
790 HBRUSH h_brush, h_orig_brush; |
|
8d0f80667054
(w32_draw_fringe_bitmap): Draw overlaid bitmaps
Jason Rumney <jasonr@gnu.org>
parents:
53964
diff
changeset
|
791 |
|
8d0f80667054
(w32_draw_fringe_bitmap): Draw overlaid bitmaps
Jason Rumney <jasonr@gnu.org>
parents:
53964
diff
changeset
|
792 SetTextColor (hdc, BLACK_PIX_DEFAULT (f)); |
|
8d0f80667054
(w32_draw_fringe_bitmap): Draw overlaid bitmaps
Jason Rumney <jasonr@gnu.org>
parents:
53964
diff
changeset
|
793 SetBkColor (hdc, WHITE_PIX_DEFAULT (f)); |
|
8d0f80667054
(w32_draw_fringe_bitmap): Draw overlaid bitmaps
Jason Rumney <jasonr@gnu.org>
parents:
53964
diff
changeset
|
794 h_brush = CreateSolidBrush (face->foreground); |
|
8d0f80667054
(w32_draw_fringe_bitmap): Draw overlaid bitmaps
Jason Rumney <jasonr@gnu.org>
parents:
53964
diff
changeset
|
795 h_orig_brush = SelectObject (hdc, h_brush); |
|
8d0f80667054
(w32_draw_fringe_bitmap): Draw overlaid bitmaps
Jason Rumney <jasonr@gnu.org>
parents:
53964
diff
changeset
|
796 |
|
8d0f80667054
(w32_draw_fringe_bitmap): Draw overlaid bitmaps
Jason Rumney <jasonr@gnu.org>
parents:
53964
diff
changeset
|
797 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
|
798 compat_hdc, 0, p->dh, |
|
8d0f80667054
(w32_draw_fringe_bitmap): Draw overlaid bitmaps
Jason Rumney <jasonr@gnu.org>
parents:
53964
diff
changeset
|
799 DSTINVERT); |
|
8d0f80667054
(w32_draw_fringe_bitmap): Draw overlaid bitmaps
Jason Rumney <jasonr@gnu.org>
parents:
53964
diff
changeset
|
800 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
|
801 compat_hdc, 0, p->dh, |
|
8d0f80667054
(w32_draw_fringe_bitmap): Draw overlaid bitmaps
Jason Rumney <jasonr@gnu.org>
parents:
53964
diff
changeset
|
802 0x2E064A); |
|
8d0f80667054
(w32_draw_fringe_bitmap): Draw overlaid bitmaps
Jason Rumney <jasonr@gnu.org>
parents:
53964
diff
changeset
|
803 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
|
804 compat_hdc, 0, p->dh, |
|
8d0f80667054
(w32_draw_fringe_bitmap): Draw overlaid bitmaps
Jason Rumney <jasonr@gnu.org>
parents:
53964
diff
changeset
|
805 DSTINVERT); |
|
8d0f80667054
(w32_draw_fringe_bitmap): Draw overlaid bitmaps
Jason Rumney <jasonr@gnu.org>
parents:
53964
diff
changeset
|
806 |
|
8d0f80667054
(w32_draw_fringe_bitmap): Draw overlaid bitmaps
Jason Rumney <jasonr@gnu.org>
parents:
53964
diff
changeset
|
807 SelectObject (hdc, h_orig_brush); |
|
8d0f80667054
(w32_draw_fringe_bitmap): Draw overlaid bitmaps
Jason Rumney <jasonr@gnu.org>
parents:
53964
diff
changeset
|
808 DeleteObject (h_brush); |
|
53886
e1b1c388f74d
(w32_draw_fringe_bitmap): Copy unadapted code from
Kim F. Storm <storm@cua.dk>
parents:
53607
diff
changeset
|
809 } |
|
53964
7add5c20b6f7
(w32_draw_fringe_bitmap): Handle overlay fringe bitmaps.
Jason Rumney <jasonr@gnu.org>
parents:
53934
diff
changeset
|
810 else |
|
54126
8d0f80667054
(w32_draw_fringe_bitmap): Draw overlaid bitmaps
Jason Rumney <jasonr@gnu.org>
parents:
53964
diff
changeset
|
811 { |
|
8d0f80667054
(w32_draw_fringe_bitmap): Draw overlaid bitmaps
Jason Rumney <jasonr@gnu.org>
parents:
53964
diff
changeset
|
812 SetTextColor (hdc, face->background); |
|
8d0f80667054
(w32_draw_fringe_bitmap): Draw overlaid bitmaps
Jason Rumney <jasonr@gnu.org>
parents:
53964
diff
changeset
|
813 SetBkColor (hdc, (p->cursor_p |
|
8d0f80667054
(w32_draw_fringe_bitmap): Draw overlaid bitmaps
Jason Rumney <jasonr@gnu.org>
parents:
53964
diff
changeset
|
814 ? f->output_data.w32->cursor_pixel |
|
8d0f80667054
(w32_draw_fringe_bitmap): Draw overlaid bitmaps
Jason Rumney <jasonr@gnu.org>
parents:
53964
diff
changeset
|
815 : face->foreground)); |
|
8d0f80667054
(w32_draw_fringe_bitmap): Draw overlaid bitmaps
Jason Rumney <jasonr@gnu.org>
parents:
53964
diff
changeset
|
816 |
|
8d0f80667054
(w32_draw_fringe_bitmap): Draw overlaid bitmaps
Jason Rumney <jasonr@gnu.org>
parents:
53964
diff
changeset
|
817 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
|
818 compat_hdc, 0, p->dh, |
|
8d0f80667054
(w32_draw_fringe_bitmap): Draw overlaid bitmaps
Jason Rumney <jasonr@gnu.org>
parents:
53964
diff
changeset
|
819 SRCCOPY); |
|
8d0f80667054
(w32_draw_fringe_bitmap): Draw overlaid bitmaps
Jason Rumney <jasonr@gnu.org>
parents:
53964
diff
changeset
|
820 } |
|
53886
e1b1c388f74d
(w32_draw_fringe_bitmap): Copy unadapted code from
Kim F. Storm <storm@cua.dk>
parents:
53607
diff
changeset
|
821 |
| 50096 | 822 SelectObject (compat_hdc, horig_obj); |
| 823 DeleteDC (compat_hdc); | |
| 824 RestoreDC (hdc, -1); | |
| 825 } | |
| 826 | |
| 827 w32_set_clip_rectangle (hdc, NULL); | |
|
27402
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
828 |
|
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
829 release_frame_dc (f, hdc); |
|
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
830 } |
|
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
831 |
|
53886
e1b1c388f74d
(w32_draw_fringe_bitmap): Copy unadapted code from
Kim F. Storm <storm@cua.dk>
parents:
53607
diff
changeset
|
832 static void |
|
e1b1c388f74d
(w32_draw_fringe_bitmap): Copy unadapted code from
Kim F. Storm <storm@cua.dk>
parents:
53607
diff
changeset
|
833 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
|
834 int which; |
|
53934
de8ab2bcee32
(w32_define_fringe_bitmap): Bitmaps are now 16 bits wide,
Kim F. Storm <storm@cua.dk>
parents:
53902
diff
changeset
|
835 unsigned short *bits; |
|
53886
e1b1c388f74d
(w32_draw_fringe_bitmap): Copy unadapted code from
Kim F. Storm <storm@cua.dk>
parents:
53607
diff
changeset
|
836 int h, wd; |
|
e1b1c388f74d
(w32_draw_fringe_bitmap): Copy unadapted code from
Kim F. Storm <storm@cua.dk>
parents:
53607
diff
changeset
|
837 { |
|
57278
4cec0243673a
(fringe_bmp): Change to pointer.
Kim F. Storm <storm@cua.dk>
parents:
56729
diff
changeset
|
838 if (which >= max_fringe_bmp) |
|
4cec0243673a
(fringe_bmp): Change to pointer.
Kim F. Storm <storm@cua.dk>
parents:
56729
diff
changeset
|
839 { |
|
4cec0243673a
(fringe_bmp): Change to pointer.
Kim F. Storm <storm@cua.dk>
parents:
56729
diff
changeset
|
840 int i = max_fringe_bmp; |
|
4cec0243673a
(fringe_bmp): Change to pointer.
Kim F. Storm <storm@cua.dk>
parents:
56729
diff
changeset
|
841 max_fringe_bmp = which + 20; |
|
4cec0243673a
(fringe_bmp): Change to pointer.
Kim F. Storm <storm@cua.dk>
parents:
56729
diff
changeset
|
842 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
|
843 while (i < max_fringe_bmp) |
|
4cec0243673a
(fringe_bmp): Change to pointer.
Kim F. Storm <storm@cua.dk>
parents:
56729
diff
changeset
|
844 fringe_bmp[i++] = 0; |
|
4cec0243673a
(fringe_bmp): Change to pointer.
Kim F. Storm <storm@cua.dk>
parents:
56729
diff
changeset
|
845 } |
|
4cec0243673a
(fringe_bmp): Change to pointer.
Kim F. Storm <storm@cua.dk>
parents:
56729
diff
changeset
|
846 |
|
53934
de8ab2bcee32
(w32_define_fringe_bitmap): Bitmaps are now 16 bits wide,
Kim F. Storm <storm@cua.dk>
parents:
53902
diff
changeset
|
847 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
|
848 } |
|
e1b1c388f74d
(w32_draw_fringe_bitmap): Copy unadapted code from
Kim F. Storm <storm@cua.dk>
parents:
53607
diff
changeset
|
849 |
|
e1b1c388f74d
(w32_draw_fringe_bitmap): Copy unadapted code from
Kim F. Storm <storm@cua.dk>
parents:
53607
diff
changeset
|
850 static void |
|
e1b1c388f74d
(w32_draw_fringe_bitmap): Copy unadapted code from
Kim F. Storm <storm@cua.dk>
parents:
53607
diff
changeset
|
851 w32_destroy_fringe_bitmap (which) |
|
e1b1c388f74d
(w32_draw_fringe_bitmap): Copy unadapted code from
Kim F. Storm <storm@cua.dk>
parents:
53607
diff
changeset
|
852 int which; |
|
e1b1c388f74d
(w32_draw_fringe_bitmap): Copy unadapted code from
Kim F. Storm <storm@cua.dk>
parents:
53607
diff
changeset
|
853 { |
|
57278
4cec0243673a
(fringe_bmp): Change to pointer.
Kim F. Storm <storm@cua.dk>
parents:
56729
diff
changeset
|
854 if (which >= max_fringe_bmp) |
|
4cec0243673a
(fringe_bmp): Change to pointer.
Kim F. Storm <storm@cua.dk>
parents:
56729
diff
changeset
|
855 return; |
|
4cec0243673a
(fringe_bmp): Change to pointer.
Kim F. Storm <storm@cua.dk>
parents:
56729
diff
changeset
|
856 |
|
53886
e1b1c388f74d
(w32_draw_fringe_bitmap): Copy unadapted code from
Kim F. Storm <storm@cua.dk>
parents:
53607
diff
changeset
|
857 if (fringe_bmp[which]) |
|
e1b1c388f74d
(w32_draw_fringe_bitmap): Copy unadapted code from
Kim F. Storm <storm@cua.dk>
parents:
53607
diff
changeset
|
858 DeleteObject (fringe_bmp[which]); |
|
e1b1c388f74d
(w32_draw_fringe_bitmap): Copy unadapted code from
Kim F. Storm <storm@cua.dk>
parents:
53607
diff
changeset
|
859 fringe_bmp[which] = 0; |
|
e1b1c388f74d
(w32_draw_fringe_bitmap): Copy unadapted code from
Kim F. Storm <storm@cua.dk>
parents:
53607
diff
changeset
|
860 } |
|
e1b1c388f74d
(w32_draw_fringe_bitmap): Copy unadapted code from
Kim F. Storm <storm@cua.dk>
parents:
53607
diff
changeset
|
861 |
|
e1b1c388f74d
(w32_draw_fringe_bitmap): Copy unadapted code from
Kim F. Storm <storm@cua.dk>
parents:
53607
diff
changeset
|
862 |
| 13434 | 863 |
|
29321
8e2be36bb1c6
Format and doc changes to bring closer to xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
28369
diff
changeset
|
864 /* 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
|
865 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
|
866 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
|
867 rarely happens). */ |
| 13434 | 868 |
|
21831
6b659713b90b
Forward declare hooks with full function prototypes.
Geoff Voelker <voelker@cs.washington.edu>
parents:
21740
diff
changeset
|
869 static void |
|
83569
86395c339701
(w32_set_terminal_modes, w32_reset_terminal_modes):
Jason Rumney <jasonr@gnu.org>
parents:
83556
diff
changeset
|
870 w32_set_terminal_modes (struct terminal *term) |
| 13434 | 871 { |
| 872 } | |
| 873 | |
|
29321
8e2be36bb1c6
Format and doc changes to bring closer to xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
28369
diff
changeset
|
874 /* 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
|
875 the W32 windows go away, and suspending requires no action. */ |
| 13434 | 876 |
|
21831
6b659713b90b
Forward declare hooks with full function prototypes.
Geoff Voelker <voelker@cs.washington.edu>
parents:
21740
diff
changeset
|
877 static void |
|
83569
86395c339701
(w32_set_terminal_modes, w32_reset_terminal_modes):
Jason Rumney <jasonr@gnu.org>
parents:
83556
diff
changeset
|
878 w32_reset_terminal_modes (struct terminal *term) |
| 13434 | 879 { |
| 880 } | |
|
27402
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
881 |
|
29321
8e2be36bb1c6
Format and doc changes to bring closer to xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
28369
diff
changeset
|
882 |
| 13434 | 883 |
|
27402
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
884 /*********************************************************************** |
|
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
885 Display Iterator |
|
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
886 ***********************************************************************/ |
|
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
887 |
|
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
888 /* Function prototypes of this page. */ |
|
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
889 |
|
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
890 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
|
891 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
|
892 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
|
893 int)); |
|
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
894 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
|
895 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
|
896 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
|
897 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
|
898 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
|
899 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
|
900 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
|
901 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
|
902 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
|
903 double, int, COLORREF)); |
|
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
904 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
|
905 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
|
906 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
|
907 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
|
908 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
|
909 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
|
910 int, int, int)); |
|
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
911 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
|
912 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
|
913 RECT *)); |
|
27402
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
914 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
|
915 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
|
916 |
|
48218
01e253345507
(w32_draw_fringe_bitmap): Remove unused local variable window.
Juanma Barranquero <lekktu@gmail.com>
parents:
48025
diff
changeset
|
917 |
|
27402
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
918 /* 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
|
919 face. */ |
|
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
920 |
|
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
921 static void |
|
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
922 x_set_cursor_gc (s) |
|
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
923 struct glyph_string *s; |
|
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
924 { |
|
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
925 if (s->font == FRAME_FONT (s->f) |
|
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
926 && s->face->background == FRAME_BACKGROUND_PIXEL (s->f) |
|
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
927 && s->face->foreground == FRAME_FOREGROUND_PIXEL (s->f) |
|
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
928 && !s->cmp) |
|
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
929 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
|
930 else |
|
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
931 { |
|
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
932 /* Cursor on non-default face: must merge. */ |
|
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
933 XGCValues xgcv; |
|
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
934 unsigned long mask; |
|
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
935 |
|
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
936 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
|
937 xgcv.foreground = s->face->background; |
|
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
938 |
|
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
939 /* 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
|
940 if (xgcv.foreground == xgcv.background) |
|
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
941 xgcv.foreground = s->face->foreground; |
|
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
942 if (xgcv.foreground == xgcv.background) |
|
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
943 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
|
944 if (xgcv.foreground == xgcv.background) |
|
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
945 xgcv.foreground = s->face->foreground; |
|
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 /* 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
|
948 if (xgcv.background == s->face->background |
|
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
949 && xgcv.foreground == s->face->foreground) |
|
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
950 { |
|
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
951 xgcv.background = s->face->foreground; |
|
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
952 xgcv.foreground = s->face->background; |
|
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
953 } |
|
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
954 |
|
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
955 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
|
956 xgcv.font = s->font; |
|
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
957 mask = GCForeground | GCBackground | GCFont; |
|
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
958 |
|
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
959 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
|
960 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
|
961 mask, &xgcv); |
|
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
962 else |
|
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
963 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
|
964 = XCreateGC (NULL, s->window, mask, &xgcv); |
|
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
965 |
|
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
966 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
|
967 } |
|
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
968 } |
|
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
969 |
|
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
970 |
|
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
971 /* 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
|
972 |
|
27402
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
973 static void |
|
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
974 x_set_mouse_face_gc (s) |
|
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
975 struct glyph_string *s; |
|
48218
01e253345507
(w32_draw_fringe_bitmap): Remove unused local variable window.
Juanma Barranquero <lekktu@gmail.com>
parents:
48025
diff
changeset
|
976 { |
|
27402
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
977 int face_id; |
|
28369
3fb90cd81d3b
(w32_read_socket): Handle WM_MENUSELECT message.
Jason Rumney <jasonr@gnu.org>
parents:
27937
diff
changeset
|
978 struct face *face; |
|
27402
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
979 |
|
35384
e50a7f9ce65e
(x_produce_stretch_glyph): Only use Qspace when GLYPH_DEBUG is defined.
Jason Rumney <jasonr@gnu.org>
parents:
35287
diff
changeset
|
980 /* 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
|
981 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
|
982 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
|
983 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
|
984 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
|
985 |
|
35384
e50a7f9ce65e
(x_produce_stretch_glyph): Only use Qspace when GLYPH_DEBUG is defined.
Jason Rumney <jasonr@gnu.org>
parents:
35287
diff
changeset
|
986 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
|
987 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
|
988 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
|
989 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
|
990 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
|
991 PREPARE_FACE_FOR_DISPLAY (s->f, s->face); |
|
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
992 |
|
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
993 /* 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
|
994 if (s->font == s->face->font) |
|
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
995 s->gc = s->face->gc; |
|
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
996 else |
|
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
997 { |
|
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
998 /* 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
|
999 but font FONT. */ |
|
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1000 XGCValues xgcv; |
|
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1001 unsigned long mask; |
|
48218
01e253345507
(w32_draw_fringe_bitmap): Remove unused local variable window.
Juanma Barranquero <lekktu@gmail.com>
parents:
48025
diff
changeset
|
1002 |
|
27402
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1003 xgcv.background = s->face->background; |
|
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1004 xgcv.foreground = s->face->foreground; |
|
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1005 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
|
1006 xgcv.font = s->font; |
|
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1007 mask = GCForeground | GCBackground | GCFont; |
|
48218
01e253345507
(w32_draw_fringe_bitmap): Remove unused local variable window.
Juanma Barranquero <lekktu@gmail.com>
parents:
48025
diff
changeset
|
1008 |
|
27402
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1009 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
|
1010 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
|
1011 mask, &xgcv); |
|
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1012 else |
|
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1013 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
|
1014 = 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
|
1015 |
|
27402
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1016 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
|
1017 } |
|
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 xassert (s->gc != 0); |
|
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1020 } |
|
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1021 |
|
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1022 |
|
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1023 /* 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
|
1024 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
|
1025 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
|
1026 |
|
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1027 static INLINE void |
|
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1028 x_set_mode_line_face_gc (s) |
|
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1029 struct glyph_string *s; |
|
48218
01e253345507
(w32_draw_fringe_bitmap): Remove unused local variable window.
Juanma Barranquero <lekktu@gmail.com>
parents:
48025
diff
changeset
|
1030 { |
|
27402
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1031 s->gc = s->face->gc; |
|
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1032 } |
|
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1033 |
|
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1034 |
|
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1035 /* 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
|
1036 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
|
1037 pattern. */ |
|
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1038 |
|
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1039 static INLINE void |
|
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1040 x_set_glyph_string_gc (s) |
|
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1041 struct glyph_string *s; |
|
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1042 { |
|
30240
2c2a7ebd2c15
(help_echo_object, help_echo_pos): New variables.
Jason Rumney <jasonr@gnu.org>
parents:
30199
diff
changeset
|
1043 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
|
1044 |
|
27402
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1045 if (s->hl == DRAW_NORMAL_TEXT) |
|
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1046 { |
|
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1047 s->gc = s->face->gc; |
|
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1048 s->stippled_p = s->face->stipple != 0; |
|
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1049 } |
|
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1050 else if (s->hl == DRAW_INVERSE_VIDEO) |
|
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1051 { |
|
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1052 x_set_mode_line_face_gc (s); |
|
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1053 s->stippled_p = s->face->stipple != 0; |
|
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1054 } |
|
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1055 else if (s->hl == DRAW_CURSOR) |
|
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1056 { |
|
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1057 x_set_cursor_gc (s); |
|
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1058 s->stippled_p = 0; |
|
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1059 } |
|
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1060 else if (s->hl == DRAW_MOUSE_FACE) |
|
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1061 { |
|
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1062 x_set_mouse_face_gc (s); |
|
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1063 s->stippled_p = s->face->stipple != 0; |
|
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1064 } |
|
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1065 else if (s->hl == DRAW_IMAGE_RAISED |
|
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1066 || s->hl == DRAW_IMAGE_SUNKEN) |
|
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1067 { |
|
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1068 s->gc = s->face->gc; |
|
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1069 s->stippled_p = s->face->stipple != 0; |
|
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1070 } |
|
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1071 else |
|
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1072 { |
|
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1073 s->gc = s->face->gc; |
|
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1074 s->stippled_p = s->face->stipple != 0; |
|
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1075 } |
|
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1076 |
|
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1077 /* GC must have been set. */ |
|
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1078 xassert (s->gc != 0); |
|
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1079 } |
|
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 /* 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
|
1083 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
|
1084 |
|
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1085 static INLINE void |
|
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1086 x_set_glyph_string_clipping (s) |
|
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1087 struct glyph_string *s; |
|
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1088 { |
|
91028
d41ffb650865
(x_set_glyph_string_clipping): Use
Jason Rumney <jasonr@gnu.org>
parents:
91005
diff
changeset
|
1089 RECT *r = s->clip; |
|
d41ffb650865
(x_set_glyph_string_clipping): Use
Jason Rumney <jasonr@gnu.org>
parents:
91005
diff
changeset
|
1090 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
|
1091 |
|
d41ffb650865
(x_set_glyph_string_clipping): Use
Jason Rumney <jasonr@gnu.org>
parents:
91005
diff
changeset
|
1092 if (n == 1) |
|
d41ffb650865
(x_set_glyph_string_clipping): Use
Jason Rumney <jasonr@gnu.org>
parents:
91005
diff
changeset
|
1093 w32_set_clip_rectangle (s->hdc, r); |
|
d41ffb650865
(x_set_glyph_string_clipping): Use
Jason Rumney <jasonr@gnu.org>
parents:
91005
diff
changeset
|
1094 else if (n > 1) |
|
d41ffb650865
(x_set_glyph_string_clipping): Use
Jason Rumney <jasonr@gnu.org>
parents:
91005
diff
changeset
|
1095 { |
|
d41ffb650865
(x_set_glyph_string_clipping): Use
Jason Rumney <jasonr@gnu.org>
parents:
91005
diff
changeset
|
1096 HRGN full_clip, clip1, clip2; |
|
d41ffb650865
(x_set_glyph_string_clipping): Use
Jason Rumney <jasonr@gnu.org>
parents:
91005
diff
changeset
|
1097 clip1 = CreateRectRgnIndirect (r); |
|
d41ffb650865
(x_set_glyph_string_clipping): Use
Jason Rumney <jasonr@gnu.org>
parents:
91005
diff
changeset
|
1098 clip2 = CreateRectRgnIndirect (r + 1); |
|
d41ffb650865
(x_set_glyph_string_clipping): Use
Jason Rumney <jasonr@gnu.org>
parents:
91005
diff
changeset
|
1099 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
|
1100 { |
|
d41ffb650865
(x_set_glyph_string_clipping): Use
Jason Rumney <jasonr@gnu.org>
parents:
91005
diff
changeset
|
1101 SelectClipRgn (s->hdc, full_clip); |
|
d41ffb650865
(x_set_glyph_string_clipping): Use
Jason Rumney <jasonr@gnu.org>
parents:
91005
diff
changeset
|
1102 } |
|
d41ffb650865
(x_set_glyph_string_clipping): Use
Jason Rumney <jasonr@gnu.org>
parents:
91005
diff
changeset
|
1103 DeleteObject (clip1); |
|
d41ffb650865
(x_set_glyph_string_clipping): Use
Jason Rumney <jasonr@gnu.org>
parents:
91005
diff
changeset
|
1104 DeleteObject (clip2); |
|
d41ffb650865
(x_set_glyph_string_clipping): Use
Jason Rumney <jasonr@gnu.org>
parents:
91005
diff
changeset
|
1105 DeleteObject (full_clip); |
|
d41ffb650865
(x_set_glyph_string_clipping): Use
Jason Rumney <jasonr@gnu.org>
parents:
91005
diff
changeset
|
1106 } |
|
d41ffb650865
(x_set_glyph_string_clipping): Use
Jason Rumney <jasonr@gnu.org>
parents:
91005
diff
changeset
|
1107 s->num_clips = n; |
|
27402
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1108 } |
|
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1109 |
| 90834 | 1110 /* Set SRC's clipping for output of glyph string DST. This is called |
| 1111 when we are drawing DST's left_overhang or right_overhang only in | |
| 1112 the area of SRC. */ | |
| 1113 | |
| 1114 static void | |
| 1115 x_set_glyph_string_clipping_exactly (src, dst) | |
| 1116 struct glyph_string *src, *dst; | |
| 1117 { | |
|
27402
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1118 RECT r; |
| 90834 | 1119 |
|
94912
5b153bea483d
: Throughout the file, delete all USE_FONT_BACKEND
Kenichi Handa <handa@m17n.org>
parents:
93913
diff
changeset
|
1120 r.left = src->x; |
|
5b153bea483d
: Throughout the file, delete all USE_FONT_BACKEND
Kenichi Handa <handa@m17n.org>
parents:
93913
diff
changeset
|
1121 r.right = r.left + src->width; |
|
5b153bea483d
: Throughout the file, delete all USE_FONT_BACKEND
Kenichi Handa <handa@m17n.org>
parents:
93913
diff
changeset
|
1122 r.top = src->y; |
|
5b153bea483d
: Throughout the file, delete all USE_FONT_BACKEND
Kenichi Handa <handa@m17n.org>
parents:
93913
diff
changeset
|
1123 r.bottom = r.top + src->height; |
|
5b153bea483d
: Throughout the file, delete all USE_FONT_BACKEND
Kenichi Handa <handa@m17n.org>
parents:
93913
diff
changeset
|
1124 dst->clip[0] = r; |
|
5b153bea483d
: Throughout the file, delete all USE_FONT_BACKEND
Kenichi Handa <handa@m17n.org>
parents:
93913
diff
changeset
|
1125 dst->num_clips = 1; |
| 90834 | 1126 w32_set_clip_rectangle (dst->hdc, &r); |
|
27402
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 |
|
50154
10038ae9db85
Remove consolidated defines and code.
Kim F. Storm <storm@cua.dk>
parents:
50096
diff
changeset
|
1129 /* RIF: |
|
94912
5b153bea483d
: Throughout the file, delete all USE_FONT_BACKEND
Kenichi Handa <handa@m17n.org>
parents:
93913
diff
changeset
|
1130 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
|
1131 |
|
50154
10038ae9db85
Remove consolidated defines and code.
Kim F. Storm <storm@cua.dk>
parents:
50096
diff
changeset
|
1132 static void |
|
10038ae9db85
Remove consolidated defines and code.
Kim F. Storm <storm@cua.dk>
parents:
50096
diff
changeset
|
1133 w32_compute_glyph_string_overhangs (s) |
|
27402
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1134 struct glyph_string *s; |
|
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1135 { |
|
93913
7e2e9d86af3b
(w32_compute_glyph_string_overhangs): Compute overhangs
Jason Rumney <jasonr@gnu.org>
parents:
92433
diff
changeset
|
1136 if (s->cmp == NULL |
|
94912
5b153bea483d
: Throughout the file, delete all USE_FONT_BACKEND
Kenichi Handa <handa@m17n.org>
parents:
93913
diff
changeset
|
1137 && s->first_glyph->type == CHAR_GLYPH |
|
5b153bea483d
: Throughout the file, delete all USE_FONT_BACKEND
Kenichi Handa <handa@m17n.org>
parents:
93913
diff
changeset
|
1138 && !s->font_not_found_p) |
|
93913
7e2e9d86af3b
(w32_compute_glyph_string_overhangs): Compute overhangs
Jason Rumney <jasonr@gnu.org>
parents:
92433
diff
changeset
|
1139 { |
|
94912
5b153bea483d
: Throughout the file, delete all USE_FONT_BACKEND
Kenichi Handa <handa@m17n.org>
parents:
93913
diff
changeset
|
1140 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
|
1141 struct font *font = s->font; |
|
5b153bea483d
: Throughout the file, delete all USE_FONT_BACKEND
Kenichi Handa <handa@m17n.org>
parents:
93913
diff
changeset
|
1142 struct font_metrics metrics; |
|
5b153bea483d
: Throughout the file, delete all USE_FONT_BACKEND
Kenichi Handa <handa@m17n.org>
parents:
93913
diff
changeset
|
1143 int i; |
|
5b153bea483d
: Throughout the file, delete all USE_FONT_BACKEND
Kenichi Handa <handa@m17n.org>
parents:
93913
diff
changeset
|
1144 |
|
5b153bea483d
: Throughout the file, delete all USE_FONT_BACKEND
Kenichi Handa <handa@m17n.org>
parents:
93913
diff
changeset
|
1145 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
|
1146 code[i] = s->char2b[i]; |
|
5b153bea483d
: Throughout the file, delete all USE_FONT_BACKEND
Kenichi Handa <handa@m17n.org>
parents:
93913
diff
changeset
|
1147 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
|
1148 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
|
1149 ? metrics.rbearing - metrics.width : 0); |
|
5b153bea483d
: Throughout the file, delete all USE_FONT_BACKEND
Kenichi Handa <handa@m17n.org>
parents:
93913
diff
changeset
|
1150 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
|
1151 } |
|
7e2e9d86af3b
(w32_compute_glyph_string_overhangs): Compute overhangs
Jason Rumney <jasonr@gnu.org>
parents:
92433
diff
changeset
|
1152 else if (s->cmp) |
|
7e2e9d86af3b
(w32_compute_glyph_string_overhangs): Compute overhangs
Jason Rumney <jasonr@gnu.org>
parents:
92433
diff
changeset
|
1153 { |
|
7e2e9d86af3b
(w32_compute_glyph_string_overhangs): Compute overhangs
Jason Rumney <jasonr@gnu.org>
parents:
92433
diff
changeset
|
1154 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
|
1155 s->left_overhang = -s->cmp->lbearing; |
|
7e2e9d86af3b
(w32_compute_glyph_string_overhangs): Compute overhangs
Jason Rumney <jasonr@gnu.org>
parents:
92433
diff
changeset
|
1156 } |
|
27402
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1157 } |
|
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1158 |
|
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1159 /* 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
|
1160 |
|
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1161 static INLINE void |
|
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1162 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
|
1163 struct glyph_string *s; |
|
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1164 int x, y, w, h; |
|
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1165 { |
|
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1166 int real_x = x; |
|
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1167 int real_y = y; |
|
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1168 int real_w = w; |
|
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1169 int real_h = h; |
|
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1170 #if 0 |
|
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1171 /* Take clipping into account. */ |
|
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1172 if (s->gc->clip_mask == Rect) |
|
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1173 { |
|
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1174 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
|
1175 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
|
1176 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
|
1177 - s->gc->clip_rectangle.left); |
|
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1178 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
|
1179 - s->gc->clip_rectangle.top); |
|
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1180 } |
|
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1181 #endif |
|
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1182 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
|
1183 real_w, real_h); |
|
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1184 } |
|
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1185 |
|
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1186 |
|
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1187 /* 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
|
1188 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
|
1189 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
|
1190 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
|
1191 contains the first component of a composition. */ |
|
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1192 |
|
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1193 static void |
|
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1194 x_draw_glyph_string_background (s, force_p) |
|
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1195 struct glyph_string *s; |
|
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1196 int force_p; |
|
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1197 { |
|
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1198 /* 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
|
1199 shouldn't be drawn in the first place. */ |
|
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1200 if (!s->background_filled_p) |
|
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1201 { |
|
36045
8be6a1c85409
(x_produce_image_glyph): Pay attention to the case that
Andrew Innes <andrewi@gnu.org>
parents:
36002
diff
changeset
|
1202 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
|
1203 |
|
33097
84590a646acc
(x_produce_glyphs): Handle composite characters.
Jason Rumney <jasonr@gnu.org>
parents:
33037
diff
changeset
|
1204 #if 0 /* TODO: stipple */ |
|
27402
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1205 if (s->stippled_p) |
|
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1206 { |
|
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1207 /* Fill background with a stipple pattern. */ |
|
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1208 XSetFillStyle (s->display, s->gc, FillOpaqueStippled); |
|
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1209 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
|
1210 s->y + box_line_width, |
|
27402
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1211 s->background_width, |
|
36045
8be6a1c85409
(x_produce_image_glyph): Pay attention to the case that
Andrew Innes <andrewi@gnu.org>
parents:
36002
diff
changeset
|
1212 s->height - 2 * box_line_width); |
|
27402
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1213 XSetFillStyle (s->display, s->gc, FillSolid); |
|
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1214 s->background_filled_p = 1; |
|
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1215 } |
|
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1216 else |
|
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1217 #endif |
|
36045
8be6a1c85409
(x_produce_image_glyph): Pay attention to the case that
Andrew Innes <andrewi@gnu.org>
parents:
36002
diff
changeset
|
1218 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
|
1219 || s->font_not_found_p |
|
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1220 || s->extends_to_end_of_line_p |
|
92154
285c3036c037
(x_draw_glyph_string_background): Clear the background
Jason Rumney <jasonr@gnu.org>
parents:
92109
diff
changeset
|
1221 || cleartype_active |
|
27402
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1222 || force_p) |
|
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1223 { |
|
36045
8be6a1c85409
(x_produce_image_glyph): Pay attention to the case that
Andrew Innes <andrewi@gnu.org>
parents:
36002
diff
changeset
|
1224 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
|
1225 s->background_width, |
|
36045
8be6a1c85409
(x_produce_image_glyph): Pay attention to the case that
Andrew Innes <andrewi@gnu.org>
parents:
36002
diff
changeset
|
1226 s->height - 2 * box_line_width); |
|
27402
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1227 s->background_filled_p = 1; |
|
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1228 } |
|
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1229 } |
|
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1230 } |
|
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1231 |
|
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1232 |
|
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1233 /* Draw the foreground of glyph string S. */ |
|
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1234 |
|
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1235 static void |
|
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1236 x_draw_glyph_string_foreground (s) |
|
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1237 struct glyph_string *s; |
|
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1238 { |
|
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1239 int i, x; |
|
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 /* 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
|
1242 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
|
1243 if (s->face->box != FACE_NO_BOX |
|
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1244 && s->first_glyph->left_box_line_p) |
| 85258 | 1245 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
|
1246 else |
|
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1247 x = s->x; |
|
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1248 |
|
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1249 SetTextColor (s->hdc, s->gc->foreground); |
|
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1250 SetBkColor (s->hdc, s->gc->background); |
|
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1251 SetTextAlign (s->hdc, TA_BASELINE | TA_LEFT); |
|
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 /* 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
|
1254 loaded. */ |
|
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1255 if (s->font_not_found_p) |
|
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1256 { |
|
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1257 for (i = 0; i < s->nchars; ++i) |
|
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1258 { |
|
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1259 struct glyph *g = s->first_glyph + i; |
|
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1260 |
|
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1261 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
|
1262 s->height - 1); |
|
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1263 x += g->pixel_width; |
|
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1264 } |
|
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1265 } |
|
94912
5b153bea483d
: Throughout the file, delete all USE_FONT_BACKEND
Kenichi Handa <handa@m17n.org>
parents:
93913
diff
changeset
|
1266 else |
| 90834 | 1267 { |
|
96343
5c8f2b7d28ae
* w32font.h (FONT_HANDLE, FONT_TEXTMETRIC): New macros.
Jason Rumney <jasonr@gnu.org>
parents:
96327
diff
changeset
|
1268 struct font *font = s->font; |
|
5c8f2b7d28ae
* w32font.h (FONT_HANDLE, FONT_TEXTMETRIC): New macros.
Jason Rumney <jasonr@gnu.org>
parents:
96327
diff
changeset
|
1269 int boff = font->baseline_offset; |
| 90834 | 1270 int y; |
|
96343
5c8f2b7d28ae
* w32font.h (FONT_HANDLE, FONT_TEXTMETRIC): New macros.
Jason Rumney <jasonr@gnu.org>
parents:
96327
diff
changeset
|
1271 HFONT old_font; |
|
5c8f2b7d28ae
* w32font.h (FONT_HANDLE, FONT_TEXTMETRIC): New macros.
Jason Rumney <jasonr@gnu.org>
parents:
96327
diff
changeset
|
1272 |
|
5c8f2b7d28ae
* w32font.h (FONT_HANDLE, FONT_TEXTMETRIC): New macros.
Jason Rumney <jasonr@gnu.org>
parents:
96327
diff
changeset
|
1273 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
|
1274 |
|
5c8f2b7d28ae
* w32font.h (FONT_HANDLE, FONT_TEXTMETRIC): New macros.
Jason Rumney <jasonr@gnu.org>
parents:
96327
diff
changeset
|
1275 if (font->vertical_centering) |
|
5c8f2b7d28ae
* w32font.h (FONT_HANDLE, FONT_TEXTMETRIC): New macros.
Jason Rumney <jasonr@gnu.org>
parents:
96327
diff
changeset
|
1276 boff = VCENTER_BASELINE_OFFSET (font, s->f) - boff; |
| 90834 | 1277 |
| 1278 y = s->ybase - boff; | |
| 1279 if (s->for_overlaps | |
| 1280 || (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
|
1281 font->driver->draw (s, 0, s->nchars, x, y, 0); |
| 90834 | 1282 else |
|
96343
5c8f2b7d28ae
* w32font.h (FONT_HANDLE, FONT_TEXTMETRIC): New macros.
Jason Rumney <jasonr@gnu.org>
parents:
96327
diff
changeset
|
1283 font->driver->draw (s, 0, s->nchars, x, y, 1); |
| 90834 | 1284 if (s->face->overstrike) |
|
96343
5c8f2b7d28ae
* w32font.h (FONT_HANDLE, FONT_TEXTMETRIC): New macros.
Jason Rumney <jasonr@gnu.org>
parents:
96327
diff
changeset
|
1285 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
|
1286 |
|
5c8f2b7d28ae
* w32font.h (FONT_HANDLE, FONT_TEXTMETRIC): New macros.
Jason Rumney <jasonr@gnu.org>
parents:
96327
diff
changeset
|
1287 SelectObject (s->hdc, old_font); |
| 90834 | 1288 } |
|
27402
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 /* Draw the foreground of composite glyph string S. */ |
|
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1292 |
|
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1293 static void |
|
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1294 x_draw_composite_glyph_string_foreground (s) |
|
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1295 struct glyph_string *s; |
|
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1296 { |
| 90834 | 1297 int i, j, x; |
|
27402
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1298 |
|
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1299 /* 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
|
1300 of S to the right of that box line. */ |
| 90834 | 1301 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
|
1302 && s->first_glyph->left_box_line_p) |
| 85258 | 1303 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
|
1304 else |
|
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1305 x = s->x; |
|
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1306 |
|
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1307 /* S is a glyph string for a composition. S->gidx is the index of |
|
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1308 the first character drawn for glyphs of this composition. |
|
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1309 S->gidx == 0 means we are drawing the very first character of |
|
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1310 this composition. */ |
|
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 SetTextColor (s->hdc, s->gc->foreground); |
|
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1313 SetBkColor (s->hdc, s->gc->background); |
|
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1314 SetTextAlign (s->hdc, TA_BASELINE | TA_LEFT); |
|
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 /* 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
|
1317 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
|
1318 if (s->font_not_found_p) |
|
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 if (s->gidx == 0) |
|
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1321 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
|
1322 s->height - 1); |
|
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1323 } |
|
96343
5c8f2b7d28ae
* w32font.h (FONT_HANDLE, FONT_TEXTMETRIC): New macros.
Jason Rumney <jasonr@gnu.org>
parents:
96327
diff
changeset
|
1324 else |
| 90834 | 1325 { |
|
94912
5b153bea483d
: Throughout the file, delete all USE_FONT_BACKEND
Kenichi Handa <handa@m17n.org>
parents:
93913
diff
changeset
|
1326 struct font *font = s->font; |
| 90834 | 1327 int y = s->ybase; |
| 1328 int width = 0; | |
|
96343
5c8f2b7d28ae
* w32font.h (FONT_HANDLE, FONT_TEXTMETRIC): New macros.
Jason Rumney <jasonr@gnu.org>
parents:
96327
diff
changeset
|
1329 HFONT old_font; |
|
5c8f2b7d28ae
* w32font.h (FONT_HANDLE, FONT_TEXTMETRIC): New macros.
Jason Rumney <jasonr@gnu.org>
parents:
96327
diff
changeset
|
1330 |
|
5c8f2b7d28ae
* w32font.h (FONT_HANDLE, FONT_TEXTMETRIC): New macros.
Jason Rumney <jasonr@gnu.org>
parents:
96327
diff
changeset
|
1331 old_font = SelectObject (s->hdc, FONT_HANDLE (font)); |
| 90834 | 1332 |
| 1333 if (s->cmp->method == COMPOSITION_WITH_GLYPH_STRING) | |
| 1334 { | |
| 1335 Lisp_Object gstring = AREF (XHASH_TABLE (composition_hash_table) | |
| 1336 ->key_and_value, | |
| 1337 s->cmp->hash_index * 2); | |
| 1338 int from; | |
| 1339 | |
| 1340 for (i = from = 0; i < s->nchars; i++) | |
| 1341 { | |
| 1342 Lisp_Object g = LGSTRING_GLYPH (gstring, i); | |
| 1343 Lisp_Object adjustment = LGLYPH_ADJUSTMENT (g); | |
| 1344 int xoff, yoff, wadjust; | |
| 1345 | |
| 1346 if (! VECTORP (adjustment)) | |
| 1347 { | |
|
91139
3b9ed57b1424
(x_draw_composite_glyph_string_foreground): Adjusted
Kenichi Handa <handa@m17n.org>
parents:
91098
diff
changeset
|
1348 width += LGLYPH_WIDTH (g); |
| 90834 | 1349 continue; |
| 1350 } | |
| 1351 if (from < i) | |
| 1352 { | |
| 1353 font->driver->draw (s, from, i, x, y, 0); | |
| 1354 x += width; | |
| 1355 } | |
| 1356 xoff = XINT (AREF (adjustment, 0)); | |
| 1357 yoff = XINT (AREF (adjustment, 1)); | |
| 1358 wadjust = XINT (AREF (adjustment, 2)); | |
| 1359 | |
| 1360 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
|
1361 x += wadjust; |
| 90834 | 1362 from = i + 1; |
| 1363 width = 0; | |
| 1364 } | |
| 1365 if (from < i) | |
| 1366 font->driver->draw (s, from, i, x, y, 0); | |
| 1367 } | |
| 1368 else | |
| 1369 { | |
| 1370 for (i = 0, j = s->gidx; i < s->nchars; i++, j++) | |
| 1371 if (COMPOSITION_GLYPH (s->cmp, j) != '\t') | |
| 1372 { | |
| 1373 int xx = x + s->cmp->offsets[j * 2]; | |
| 1374 int yy = y - s->cmp->offsets[j * 2 + 1]; | |
| 1375 | |
| 1376 font->driver->draw (s, j, j + 1, xx, yy, 0); | |
| 1377 if (s->face->overstrike) | |
| 1378 font->driver->draw (s, j, j + 1, xx + 1, yy, 0); | |
| 1379 } | |
| 1380 } | |
|
96343
5c8f2b7d28ae
* w32font.h (FONT_HANDLE, FONT_TEXTMETRIC): New macros.
Jason Rumney <jasonr@gnu.org>
parents:
96327
diff
changeset
|
1381 SelectObject (s->hdc, old_font); |
| 90834 | 1382 } |
|
27402
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1383 } |
|
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1384 |
|
33524
cf8e03cd4985
(HIGHLIGHT_COLOR_DARK_BOOST_LIMIT): New constant.
Jason Rumney <jasonr@gnu.org>
parents:
33386
diff
changeset
|
1385 |
|
cf8e03cd4985
(HIGHLIGHT_COLOR_DARK_BOOST_LIMIT): New constant.
Jason Rumney <jasonr@gnu.org>
parents:
33386
diff
changeset
|
1386 /* 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
|
1387 boosted. |
|
cf8e03cd4985
(HIGHLIGHT_COLOR_DARK_BOOST_LIMIT): New constant.
Jason Rumney <jasonr@gnu.org>
parents:
33386
diff
changeset
|
1388 |
|
cf8e03cd4985
(HIGHLIGHT_COLOR_DARK_BOOST_LIMIT): New constant.
Jason Rumney <jasonr@gnu.org>
parents:
33386
diff
changeset
|
1389 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
|
1390 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
|
1391 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
|
1392 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
|
1393 use an additional additive factor. |
|
cf8e03cd4985
(HIGHLIGHT_COLOR_DARK_BOOST_LIMIT): New constant.
Jason Rumney <jasonr@gnu.org>
parents:
33386
diff
changeset
|
1394 |
|
cf8e03cd4985
(HIGHLIGHT_COLOR_DARK_BOOST_LIMIT): New constant.
Jason Rumney <jasonr@gnu.org>
parents:
33386
diff
changeset
|
1395 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
|
1396 (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
|
1397 #define HIGHLIGHT_COLOR_DARK_BOOST_LIMIT 187 |
|
cf8e03cd4985
(HIGHLIGHT_COLOR_DARK_BOOST_LIMIT): New constant.
Jason Rumney <jasonr@gnu.org>
parents:
33386
diff
changeset
|
1398 |
|
cf8e03cd4985
(HIGHLIGHT_COLOR_DARK_BOOST_LIMIT): New constant.
Jason Rumney <jasonr@gnu.org>
parents:
33386
diff
changeset
|
1399 |
|
27402
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1400 /* 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
|
1401 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
|
1402 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
|
1403 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
|
1404 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
|
1405 Value is non-zero if successful. */ |
| 13434 | 1406 |
|
23507
8a448630a9b5
Include fontset.h. Define codepage macros.
Geoff Voelker <voelker@cs.washington.edu>
parents:
22059
diff
changeset
|
1407 static int |
|
27402
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1408 w32_alloc_lighter_color (f, color, factor, delta) |
|
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1409 struct frame *f; |
|
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1410 COLORREF *color; |
|
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1411 double factor; |
|
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1412 int delta; |
|
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1413 { |
|
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1414 COLORREF new; |
|
33524
cf8e03cd4985
(HIGHLIGHT_COLOR_DARK_BOOST_LIMIT): New constant.
Jason Rumney <jasonr@gnu.org>
parents:
33386
diff
changeset
|
1415 long bright; |
|
cf8e03cd4985
(HIGHLIGHT_COLOR_DARK_BOOST_LIMIT): New constant.
Jason Rumney <jasonr@gnu.org>
parents:
33386
diff
changeset
|
1416 |
|
cf8e03cd4985
(HIGHLIGHT_COLOR_DARK_BOOST_LIMIT): New constant.
Jason Rumney <jasonr@gnu.org>
parents:
33386
diff
changeset
|
1417 /* 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
|
1418 delta /= 256; |
|
27402
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1419 |
|
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1420 /* Change RGB values by specified FACTOR. Avoid overflow! */ |
|
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1421 xassert (factor >= 0); |
|
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1422 new = PALETTERGB (min (0xff, factor * GetRValue (*color)), |
|
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1423 min (0xff, factor * GetGValue (*color)), |
|
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1424 min (0xff, factor * GetBValue (*color))); |
|
33524
cf8e03cd4985
(HIGHLIGHT_COLOR_DARK_BOOST_LIMIT): New constant.
Jason Rumney <jasonr@gnu.org>
parents:
33386
diff
changeset
|
1425 |
|
cf8e03cd4985
(HIGHLIGHT_COLOR_DARK_BOOST_LIMIT): New constant.
Jason Rumney <jasonr@gnu.org>
parents:
33386
diff
changeset
|
1426 /* Calculate brightness of COLOR. */ |
|
cf8e03cd4985
(HIGHLIGHT_COLOR_DARK_BOOST_LIMIT): New constant.
Jason Rumney <jasonr@gnu.org>
parents:
33386
diff
changeset
|
1427 bright = (2 * GetRValue (*color) + 3 * GetGValue (*color) |
|
cf8e03cd4985
(HIGHLIGHT_COLOR_DARK_BOOST_LIMIT): New constant.
Jason Rumney <jasonr@gnu.org>
parents:
33386
diff
changeset
|
1428 + GetBValue (*color)) / 6; |
|
cf8e03cd4985
(HIGHLIGHT_COLOR_DARK_BOOST_LIMIT): New constant.
Jason Rumney <jasonr@gnu.org>
parents:
33386
diff
changeset
|
1429 |
|
cf8e03cd4985
(HIGHLIGHT_COLOR_DARK_BOOST_LIMIT): New constant.
Jason Rumney <jasonr@gnu.org>
parents:
33386
diff
changeset
|
1430 /* 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
|
1431 HIGHLIGHT_COLOR_DARK_BOOST_LIMIT. */ |
|
cf8e03cd4985
(HIGHLIGHT_COLOR_DARK_BOOST_LIMIT): New constant.
Jason Rumney <jasonr@gnu.org>
parents:
33386
diff
changeset
|
1432 if (bright < HIGHLIGHT_COLOR_DARK_BOOST_LIMIT) |
|
cf8e03cd4985
(HIGHLIGHT_COLOR_DARK_BOOST_LIMIT): New constant.
Jason Rumney <jasonr@gnu.org>
parents:
33386
diff
changeset
|
1433 /* 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
|
1434 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
|
1435 { |
|
cf8e03cd4985
(HIGHLIGHT_COLOR_DARK_BOOST_LIMIT): New constant.
Jason Rumney <jasonr@gnu.org>
parents:
33386
diff
changeset
|
1436 /* 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
|
1437 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
|
1438 /* The additive adjustment. */ |
|
cf8e03cd4985
(HIGHLIGHT_COLOR_DARK_BOOST_LIMIT): New constant.
Jason Rumney <jasonr@gnu.org>
parents:
33386
diff
changeset
|
1439 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
|
1440 |
|
33524
cf8e03cd4985
(HIGHLIGHT_COLOR_DARK_BOOST_LIMIT): New constant.
Jason Rumney <jasonr@gnu.org>
parents:
33386
diff
changeset
|
1441 if (factor < 1) |
|
cf8e03cd4985
(HIGHLIGHT_COLOR_DARK_BOOST_LIMIT): New constant.
Jason Rumney <jasonr@gnu.org>
parents:
33386
diff
changeset
|
1442 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
|
1443 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
|
1444 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
|
1445 else |
|
cf8e03cd4985
(HIGHLIGHT_COLOR_DARK_BOOST_LIMIT): New constant.
Jason Rumney <jasonr@gnu.org>
parents:
33386
diff
changeset
|
1446 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
|
1447 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
|
1448 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
|
1449 } |
|
48218
01e253345507
(w32_draw_fringe_bitmap): Remove unused local variable window.
Juanma Barranquero <lekktu@gmail.com>
parents:
48025
diff
changeset
|
1450 |
|
27402
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1451 if (new == *color) |
|
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1452 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
|
1453 max (0, min (0xff, delta + GetGValue (*color))), |
|
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1454 max (0, min (0xff, delta + GetBValue (*color)))); |
|
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1455 |
|
33097
84590a646acc
(x_produce_glyphs): Handle composite characters.
Jason Rumney <jasonr@gnu.org>
parents:
33037
diff
changeset
|
1456 /* 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
|
1457 /* TODO: Free colors (if using palette)? */ |
|
28369
3fb90cd81d3b
(w32_read_socket): Handle WM_MENUSELECT message.
Jason Rumney <jasonr@gnu.org>
parents:
27937
diff
changeset
|
1458 |
|
27402
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1459 if (new == *color) |
|
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1460 return 0; |
|
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1461 |
|
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1462 *color = new; |
|
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1463 |
|
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1464 return 1; |
|
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1465 } |
|
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1466 |
|
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1467 |
|
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1468 /* 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
|
1469 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
|
1470 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
|
1471 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
|
1472 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
|
1473 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
|
1474 |
|
27402
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1475 static void |
|
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1476 w32_setup_relief_color (f, relief, factor, delta, default_pixel) |
| 13434 | 1477 struct frame *f; |
|
27402
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1478 struct relief *relief; |
|
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1479 double factor; |
|
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1480 int delta; |
|
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1481 COLORREF default_pixel; |
|
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1482 { |
|
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1483 XGCValues xgcv; |
|
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1484 struct w32_output *di = f->output_data.w32; |
|
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1485 unsigned long mask = GCForeground; |
|
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1486 COLORREF pixel; |
|
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1487 COLORREF background = di->relief_background; |
|
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1488 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
|
1489 |
|
33097
84590a646acc
(x_produce_glyphs): Handle composite characters.
Jason Rumney <jasonr@gnu.org>
parents:
33037
diff
changeset
|
1490 /* TODO: Free colors (if using palette)? */ |
|
28369
3fb90cd81d3b
(w32_read_socket): Handle WM_MENUSELECT message.
Jason Rumney <jasonr@gnu.org>
parents:
27937
diff
changeset
|
1491 |
|
27402
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1492 /* Allocate new color. */ |
|
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1493 xgcv.foreground = default_pixel; |
|
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1494 pixel = background; |
|
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1495 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
|
1496 { |
|
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1497 relief->allocated_p = 1; |
|
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1498 xgcv.foreground = relief->pixel = pixel; |
|
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1499 } |
|
48218
01e253345507
(w32_draw_fringe_bitmap): Remove unused local variable window.
Juanma Barranquero <lekktu@gmail.com>
parents:
48025
diff
changeset
|
1500 |
|
27402
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1501 if (relief->gc == 0) |
|
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1502 { |
|
33097
84590a646acc
(x_produce_glyphs): Handle composite characters.
Jason Rumney <jasonr@gnu.org>
parents:
33037
diff
changeset
|
1503 #if 0 /* TODO: stipple */ |
|
27402
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1504 xgcv.stipple = dpyinfo->gray; |
|
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1505 mask |= GCStipple; |
|
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1506 #endif |
|
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1507 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
|
1508 } |
|
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1509 else |
|
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1510 XChangeGC (NULL, relief->gc, mask, &xgcv); |
|
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1511 } |
|
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1512 |
|
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1513 |
|
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1514 /* 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
|
1515 |
|
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1516 static void |
|
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1517 x_setup_relief_colors (s) |
|
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1518 struct glyph_string *s; |
|
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1519 { |
|
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1520 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
|
1521 COLORREF color; |
|
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 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
|
1524 color = s->face->box_color; |
|
41249
2043af2d023f
(note_mouse_highlight): Fix type of variable `ignore'.
Jason Rumney <jasonr@gnu.org>
parents:
41125
diff
changeset
|
1525 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
|
1526 && s->img->pixmap |
|
41249
2043af2d023f
(note_mouse_highlight): Fix type of variable `ignore'.
Jason Rumney <jasonr@gnu.org>
parents:
41125
diff
changeset
|
1527 && !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
|
1528 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
|
1529 else |
|
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1530 color = s->gc->background; |
|
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1531 |
|
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1532 if (di->white_relief.gc == 0 |
|
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1533 || color != di->relief_background) |
|
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1534 { |
|
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1535 di->relief_background = color; |
|
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1536 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
|
1537 WHITE_PIX_DEFAULT (s->f)); |
|
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1538 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
|
1539 BLACK_PIX_DEFAULT (s->f)); |
|
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1540 } |
|
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1541 } |
|
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1542 |
|
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1543 |
|
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1544 /* 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
|
1545 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
|
1546 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
|
1547 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
|
1548 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
|
1549 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
|
1550 when drawing. */ |
|
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1551 |
|
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1552 static void |
|
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1553 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
|
1554 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
|
1555 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
|
1556 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
|
1557 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
|
1558 RECT *clip_rect; |
|
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1559 { |
|
23507
8a448630a9b5
Include fontset.h. Define codepage macros.
Geoff Voelker <voelker@cs.washington.edu>
parents:
22059
diff
changeset
|
1560 int i; |
|
27402
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1561 XGCValues gc; |
|
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1562 HDC hdc = get_frame_dc (f); |
|
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1563 |
|
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1564 if (raised_p) |
|
33524
cf8e03cd4985
(HIGHLIGHT_COLOR_DARK_BOOST_LIMIT): New constant.
Jason Rumney <jasonr@gnu.org>
parents:
33386
diff
changeset
|
1565 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
|
1566 else |
|
33524
cf8e03cd4985
(HIGHLIGHT_COLOR_DARK_BOOST_LIMIT): New constant.
Jason Rumney <jasonr@gnu.org>
parents:
33386
diff
changeset
|
1567 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
|
1568 |
|
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1569 w32_set_clip_rectangle (hdc, clip_rect); |
|
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 /* Top. */ |
|
55026
08e4e7c06ffc
(w32_draw_relief_rect): Add top_p and bot_p args.
Kim F. Storm <storm@cua.dk>
parents:
54731
diff
changeset
|
1572 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
|
1573 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
|
1574 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
|
1575 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
|
1576 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
|
1577 |
|
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1578 /* Left. */ |
|
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1579 if (left_p) |
|
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1580 for (i = 0; i < width; ++i) |
|
40137
5f0d7d58283b
(remember_mouse_glyph): New function.
Jason Rumney <jasonr@gnu.org>
parents:
40078
diff
changeset
|
1581 w32_fill_area (f, hdc, gc.foreground, |
|
5f0d7d58283b
(remember_mouse_glyph): New function.
Jason Rumney <jasonr@gnu.org>
parents:
40078
diff
changeset
|
1582 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
|
1583 bottom_y - top_y - 2 * i + 1); |
|
27402
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 if (raised_p) |
|
33524
cf8e03cd4985
(HIGHLIGHT_COLOR_DARK_BOOST_LIMIT): New constant.
Jason Rumney <jasonr@gnu.org>
parents:
33386
diff
changeset
|
1586 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
|
1587 else |
|
33524
cf8e03cd4985
(HIGHLIGHT_COLOR_DARK_BOOST_LIMIT): New constant.
Jason Rumney <jasonr@gnu.org>
parents:
33386
diff
changeset
|
1588 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
|
1589 |
|
27402
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1590 /* Bottom. */ |
|
55026
08e4e7c06ffc
(w32_draw_relief_rect): Add top_p and bot_p args.
Kim F. Storm <storm@cua.dk>
parents:
54731
diff
changeset
|
1591 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
|
1592 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
|
1593 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
|
1594 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
|
1595 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
|
1596 |
|
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1597 /* Right. */ |
|
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1598 if (right_p) |
|
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1599 for (i = 0; i < width; ++i) |
|
40137
5f0d7d58283b
(remember_mouse_glyph): New function.
Jason Rumney <jasonr@gnu.org>
parents:
40078
diff
changeset
|
1600 w32_fill_area (f, hdc, gc.foreground, |
|
5f0d7d58283b
(remember_mouse_glyph): New function.
Jason Rumney <jasonr@gnu.org>
parents:
40078
diff
changeset
|
1601 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
|
1602 bottom_y - top_y - 2 * i - 1); |
|
27402
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 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
|
1605 |
|
27402
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1606 release_frame_dc (f, hdc); |
|
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 |
|
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1609 |
|
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1610 /* 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
|
1611 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
|
1612 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
|
1613 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
|
1614 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
|
1615 rectangle to use when drawing. */ |
|
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1616 |
|
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1617 static void |
|
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1618 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
|
1619 left_p, right_p, clip_rect) |
|
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1620 struct glyph_string *s; |
|
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1621 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
|
1622 RECT *clip_rect; |
|
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1623 { |
|
27406
fb36ccd8457c
(w32_fill_rect): Do not try to deal with NULL hdc
Jason Rumney <jasonr@gnu.org>
parents:
27402
diff
changeset
|
1624 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
|
1625 |
|
27402
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1626 /* Top. */ |
|
27406
fb36ccd8457c
(w32_fill_rect): Do not try to deal with NULL hdc
Jason Rumney <jasonr@gnu.org>
parents:
27402
diff
changeset
|
1627 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
|
1628 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
|
1629 |
|
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1630 /* Left. */ |
|
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1631 if (left_p) |
|
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1632 { |
|
27406
fb36ccd8457c
(w32_fill_rect): Do not try to deal with NULL hdc
Jason Rumney <jasonr@gnu.org>
parents:
27402
diff
changeset
|
1633 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
|
1634 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
|
1635 } |
|
48218
01e253345507
(w32_draw_fringe_bitmap): Remove unused local variable window.
Juanma Barranquero <lekktu@gmail.com>
parents:
48025
diff
changeset
|
1636 |
|
27402
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1637 /* Bottom. */ |
|
27406
fb36ccd8457c
(w32_fill_rect): Do not try to deal with NULL hdc
Jason Rumney <jasonr@gnu.org>
parents:
27402
diff
changeset
|
1638 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
|
1639 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
|
1640 |
|
27402
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1641 /* Right. */ |
|
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1642 if (right_p) |
|
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1643 { |
|
27406
fb36ccd8457c
(w32_fill_rect): Do not try to deal with NULL hdc
Jason Rumney <jasonr@gnu.org>
parents:
27402
diff
changeset
|
1644 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
|
1645 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
|
1646 } |
|
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1647 |
|
27406
fb36ccd8457c
(w32_fill_rect): Do not try to deal with NULL hdc
Jason Rumney <jasonr@gnu.org>
parents:
27402
diff
changeset
|
1648 w32_set_clip_rectangle (s->hdc, NULL); |
|
27402
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1649 } |
|
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1650 |
|
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 /* Draw a box around glyph string S. */ |
|
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1653 |
|
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1654 static void |
|
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1655 x_draw_glyph_string_box (s) |
|
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1656 struct glyph_string *s; |
|
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1657 { |
|
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1658 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
|
1659 int left_p, right_p; |
|
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1660 struct glyph *last_glyph; |
|
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1661 RECT clip_rect; |
|
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1662 |
|
59655
369714ad80ed
(x_draw_glyph_string_box): Fix last_x for full width rows.
Kim F. Storm <storm@cua.dk>
parents:
59332
diff
changeset
|
1663 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
|
1664 ? 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
|
1665 : 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
|
1666 |
|
27402
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1667 /* 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
|
1668 last_glyph = (s->cmp || s->img |
|
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1669 ? s->first_glyph |
|
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1670 : s->first_glyph + s->nchars - 1); |
|
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1671 |
| 85258 | 1672 width = eabs (s->face->box_line_width); |
|
27402
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1673 raised_p = s->face->box == FACE_RAISED_BOX; |
|
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1674 left_x = s->x; |
|
40137
5f0d7d58283b
(remember_mouse_glyph): New function.
Jason Rumney <jasonr@gnu.org>
parents:
40078
diff
changeset
|
1675 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
|
1676 ? last_x - 1 |
|
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1677 : 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
|
1678 top_y = s->y; |
|
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1679 bottom_y = top_y + s->height - 1; |
|
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1680 |
|
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1681 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
|
1682 || (s->hl == DRAW_MOUSE_FACE |
|
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1683 && (s->prev == NULL |
|
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1684 || s->prev->hl != s->hl))); |
|
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1685 right_p = (last_glyph->right_box_line_p |
|
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1686 || (s->hl == DRAW_MOUSE_FACE |
|
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1687 && (s->next == NULL |
|
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1688 || 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
|
1689 |
|
50231
c8ea5e4b2129
* w32term.c: Remove consolidated defines and code.
Kim F. Storm <storm@cua.dk>
parents:
50163
diff
changeset
|
1690 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
|
1691 |
|
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1692 if (s->face->box == FACE_SIMPLE_BOX) |
|
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1693 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
|
1694 left_p, right_p, &clip_rect); |
|
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1695 else |
|
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 x_setup_relief_colors (s); |
|
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1698 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
|
1699 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
|
1700 } |
|
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1701 } |
|
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1702 |
|
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1703 |
|
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1704 /* Draw foreground of image glyph string S. */ |
|
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1705 |
|
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1706 static void |
|
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1707 x_draw_image_foreground (s) |
|
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 { |
|
55026
08e4e7c06ffc
(w32_draw_relief_rect): Add top_p and bot_p args.
Kim F. Storm <storm@cua.dk>
parents:
54731
diff
changeset
|
1710 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
|
1711 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
|
1712 |
|
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1713 /* 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
|
1714 right of that line. */ |
|
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1715 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
|
1716 && 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
|
1717 && s->slice.x == 0) |
| 85258 | 1718 x += eabs (s->face->box_line_width); |
|
27402
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1719 |
|
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1720 /* 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
|
1721 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
|
1722 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
|
1723 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
|
1724 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
|
1725 y += s->img->vmargin; |
|
27402
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1726 |
|
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1727 SaveDC (s->hdc); |
|
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1728 |
|
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1729 if (s->img->pixmap) |
|
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1730 { |
|
48345
44c0f878e8b9
(x_draw_image_foreground, x_draw_image_glyph_string)
Jason Rumney <jasonr@gnu.org>
parents:
48218
diff
changeset
|
1731 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
|
1732 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
|
1733 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
|
1734 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
|
1735 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
|
1736 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
|
1737 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
|
1738 |
|
27402
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1739 if (s->img->mask) |
|
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1740 { |
|
48345
44c0f878e8b9
(x_draw_image_foreground, x_draw_image_glyph_string)
Jason Rumney <jasonr@gnu.org>
parents:
48218
diff
changeset
|
1741 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
|
1742 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
|
1743 |
|
44c0f878e8b9
(x_draw_image_foreground, x_draw_image_glyph_string)
Jason Rumney <jasonr@gnu.org>
parents:
48218
diff
changeset
|
1744 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
|
1745 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
|
1746 |
|
55026
08e4e7c06ffc
(w32_draw_relief_rect): Add top_p and bot_p args.
Kim F. Storm <storm@cua.dk>
parents:
54731
diff
changeset
|
1747 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
|
1748 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
|
1749 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
|
1750 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
|
1751 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
|
1752 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
|
1753 |
|
44c0f878e8b9
(x_draw_image_foreground, x_draw_image_glyph_string)
Jason Rumney <jasonr@gnu.org>
parents:
48218
diff
changeset
|
1754 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
|
1755 DeleteDC (mask_dc); |
|
27402
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1756 } |
|
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1757 else |
|
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1758 { |
|
48345
44c0f878e8b9
(x_draw_image_foreground, x_draw_image_glyph_string)
Jason Rumney <jasonr@gnu.org>
parents:
48218
diff
changeset
|
1759 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
|
1760 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
|
1761 |
|
55026
08e4e7c06ffc
(w32_draw_relief_rect): Add top_p and bot_p args.
Kim F. Storm <storm@cua.dk>
parents:
54731
diff
changeset
|
1762 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
|
1763 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
|
1764 |
|
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1765 /* 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
|
1766 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
|
1767 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
|
1768 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
|
1769 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
|
1770 nothing here for mouse-face. */ |
|
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1771 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
|
1772 { |
|
fb8359237a78
(x_draw_image_foreground, w32_draw_image_foreground_1):
Kim F. Storm <storm@cua.dk>
parents:
44641
diff
changeset
|
1773 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
|
1774 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
|
1775 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
|
1776 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
|
1777 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
|
1778 } |
|
27402
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1779 } |
|
48345
44c0f878e8b9
(x_draw_image_foreground, x_draw_image_glyph_string)
Jason Rumney <jasonr@gnu.org>
parents:
48218
diff
changeset
|
1780 |
|
44c0f878e8b9
(x_draw_image_foreground, x_draw_image_glyph_string)
Jason Rumney <jasonr@gnu.org>
parents:
48218
diff
changeset
|
1781 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
|
1782 SelectObject (s->hdc, orig_brush); |
|
44c0f878e8b9
(x_draw_image_foreground, x_draw_image_glyph_string)
Jason Rumney <jasonr@gnu.org>
parents:
48218
diff
changeset
|
1783 DeleteObject (fg_brush); |
|
44c0f878e8b9
(x_draw_image_foreground, x_draw_image_glyph_string)
Jason Rumney <jasonr@gnu.org>
parents:
48218
diff
changeset
|
1784 SelectObject (compat_hdc, orig_obj); |
|
44c0f878e8b9
(x_draw_image_foreground, x_draw_image_glyph_string)
Jason Rumney <jasonr@gnu.org>
parents:
48218
diff
changeset
|
1785 DeleteDC (compat_hdc); |
|
27402
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1786 } |
|
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1787 else |
|
55026
08e4e7c06ffc
(w32_draw_relief_rect): Add top_p and bot_p args.
Kim F. Storm <storm@cua.dk>
parents:
54731
diff
changeset
|
1788 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
|
1789 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
|
1790 |
|
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1791 RestoreDC (s->hdc ,-1); |
|
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1792 } |
|
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 |
|
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1795 /* 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
|
1796 |
|
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1797 static void |
|
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1798 x_draw_image_relief (s) |
|
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1799 struct glyph_string *s; |
|
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 int x0, y0, x1, y1, thick, raised_p; |
|
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1802 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
|
1803 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
|
1804 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
|
1805 |
|
27402
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1806 /* 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
|
1807 right of that line. */ |
|
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1808 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
|
1809 && 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
|
1810 && s->slice.x == 0) |
| 85258 | 1811 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
|
1812 |
|
27402
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1813 /* 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
|
1814 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
|
1815 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
|
1816 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
|
1817 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
|
1818 y += s->img->vmargin; |
|
48218
01e253345507
(w32_draw_fringe_bitmap): Remove unused local variable window.
Juanma Barranquero <lekktu@gmail.com>
parents:
48025
diff
changeset
|
1819 |
|
27402
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1820 if (s->hl == DRAW_IMAGE_SUNKEN |
|
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1821 || s->hl == DRAW_IMAGE_RAISED) |
|
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1822 { |
|
42538
2b4179d13ed7
(x_setup_relief_colors): Don't compute an image's
Jason Rumney <jasonr@gnu.org>
parents:
42206
diff
changeset
|
1823 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
|
1824 raised_p = s->hl == DRAW_IMAGE_RAISED; |
|
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1825 } |
|
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1826 else |
|
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1827 { |
| 85258 | 1828 thick = eabs (s->img->relief); |
|
27402
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1829 raised_p = s->img->relief > 0; |
|
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1830 } |
|
48218
01e253345507
(w32_draw_fringe_bitmap): Remove unused local variable window.
Juanma Barranquero <lekktu@gmail.com>
parents:
48025
diff
changeset
|
1831 |
|
27402
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1832 x0 = x - thick; |
|
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1833 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
|
1834 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
|
1835 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
|
1836 |
|
27402
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1837 x_setup_relief_colors (s); |
|
50231
c8ea5e4b2129
* w32term.c: Remove consolidated defines and code.
Kim F. Storm <storm@cua.dk>
parents:
50163
diff
changeset
|
1838 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
|
1839 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
|
1840 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
|
1841 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
|
1842 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
|
1843 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
|
1844 &r); |
|
27402
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1845 } |
|
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1846 |
|
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1847 |
|
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1848 /* 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
|
1849 |
|
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1850 static void |
|
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1851 w32_draw_image_foreground_1 (s, pixmap) |
|
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1852 struct glyph_string *s; |
|
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1853 HBITMAP pixmap; |
|
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1854 { |
|
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1855 HDC hdc = CreateCompatibleDC (s->hdc); |
|
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1856 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
|
1857 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
|
1858 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
|
1859 |
|
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1860 /* 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
|
1861 right of that line. */ |
|
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1862 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
|
1863 && 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
|
1864 && s->slice.x == 0) |
| 85258 | 1865 x += eabs (s->face->box_line_width); |
|
27402
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1866 |
|
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1867 /* 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
|
1868 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
|
1869 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
|
1870 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
|
1871 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
|
1872 y += s->img->vmargin; |
|
27402
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1873 |
|
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1874 if (s->img->pixmap) |
|
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1875 { |
|
48345
44c0f878e8b9
(x_draw_image_foreground, x_draw_image_glyph_string)
Jason Rumney <jasonr@gnu.org>
parents:
48218
diff
changeset
|
1876 HDC compat_hdc = CreateCompatibleDC (hdc); |
|
44c0f878e8b9
(x_draw_image_foreground, x_draw_image_glyph_string)
Jason Rumney <jasonr@gnu.org>
parents:
48218
diff
changeset
|
1877 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
|
1878 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
|
1879 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
|
1880 |
|
27402
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1881 if (s->img->mask) |
|
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1882 { |
|
48345
44c0f878e8b9
(x_draw_image_foreground, x_draw_image_glyph_string)
Jason Rumney <jasonr@gnu.org>
parents:
48218
diff
changeset
|
1883 HDC mask_dc = CreateCompatibleDC (hdc); |
|
44c0f878e8b9
(x_draw_image_foreground, x_draw_image_glyph_string)
Jason Rumney <jasonr@gnu.org>
parents:
48218
diff
changeset
|
1884 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
|
1885 |
|
44c0f878e8b9
(x_draw_image_foreground, x_draw_image_glyph_string)
Jason Rumney <jasonr@gnu.org>
parents:
48218
diff
changeset
|
1886 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
|
1887 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
|
1888 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
|
1889 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
|
1890 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
|
1891 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
|
1892 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
|
1893 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
|
1894 |
|
44c0f878e8b9
(x_draw_image_foreground, x_draw_image_glyph_string)
Jason Rumney <jasonr@gnu.org>
parents:
48218
diff
changeset
|
1895 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
|
1896 DeleteDC (mask_dc); |
|
27402
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1897 } |
|
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1898 else |
| 13434 | 1899 { |
|
48345
44c0f878e8b9
(x_draw_image_foreground, x_draw_image_glyph_string)
Jason Rumney <jasonr@gnu.org>
parents:
48218
diff
changeset
|
1900 SetTextColor (hdc, s->gc->foreground); |
|
44c0f878e8b9
(x_draw_image_foreground, x_draw_image_glyph_string)
Jason Rumney <jasonr@gnu.org>
parents:
48218
diff
changeset
|
1901 SetBkColor (hdc, s->gc->background); |
|
44c0f878e8b9
(x_draw_image_foreground, x_draw_image_glyph_string)
Jason Rumney <jasonr@gnu.org>
parents:
48218
diff
changeset
|
1902 |
|
55026
08e4e7c06ffc
(w32_draw_relief_rect): Add top_p and bot_p args.
Kim F. Storm <storm@cua.dk>
parents:
54731
diff
changeset
|
1903 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
|
1904 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
|
1905 |
|
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1906 /* 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
|
1907 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
|
1908 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
|
1909 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
|
1910 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
|
1911 nothing here for mouse-face. */ |
|
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1912 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
|
1913 { |
|
fb8359237a78
(x_draw_image_foreground, w32_draw_image_foreground_1):
Kim F. Storm <storm@cua.dk>
parents:
44641
diff
changeset
|
1914 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
|
1915 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
|
1916 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
|
1917 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
|
1918 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
|
1919 } |
| 13434 | 1920 } |
|
48345
44c0f878e8b9
(x_draw_image_foreground, x_draw_image_glyph_string)
Jason Rumney <jasonr@gnu.org>
parents:
48218
diff
changeset
|
1921 |
|
44c0f878e8b9
(x_draw_image_foreground, x_draw_image_glyph_string)
Jason Rumney <jasonr@gnu.org>
parents:
48218
diff
changeset
|
1922 SelectObject (hdc, orig_brush); |
|
44c0f878e8b9
(x_draw_image_foreground, x_draw_image_glyph_string)
Jason Rumney <jasonr@gnu.org>
parents:
48218
diff
changeset
|
1923 DeleteObject (fg_brush); |
|
44c0f878e8b9
(x_draw_image_foreground, x_draw_image_glyph_string)
Jason Rumney <jasonr@gnu.org>
parents:
48218
diff
changeset
|
1924 SelectObject (compat_hdc, orig_obj); |
|
44c0f878e8b9
(x_draw_image_foreground, x_draw_image_glyph_string)
Jason Rumney <jasonr@gnu.org>
parents:
48218
diff
changeset
|
1925 DeleteDC (compat_hdc); |
|
27402
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1926 } |
|
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1927 else |
|
55026
08e4e7c06ffc
(w32_draw_relief_rect): Add top_p and bot_p args.
Kim F. Storm <storm@cua.dk>
parents:
54731
diff
changeset
|
1928 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
|
1929 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
|
1930 |
|
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1931 SelectObject (hdc, orig_hdc_obj); |
|
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1932 DeleteDC (hdc); |
|
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 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
|
1937 give the rectangle to draw. */ |
|
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1938 |
|
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1939 static void |
|
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1940 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
|
1941 struct glyph_string *s; |
|
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1942 int x, y, w, h; |
|
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1943 { |
|
33097
84590a646acc
(x_produce_glyphs): Handle composite characters.
Jason Rumney <jasonr@gnu.org>
parents:
33037
diff
changeset
|
1944 #if 0 /* TODO: stipple */ |
|
27402
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1945 if (s->stippled_p) |
|
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1946 { |
|
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1947 /* Fill background with a stipple pattern. */ |
|
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1948 XSetFillStyle (s->display, s->gc, FillOpaqueStippled); |
|
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1949 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
|
1950 XSetFillStyle (s->display, s->gc, FillSolid); |
|
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1951 } |
|
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1952 else |
|
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1953 #endif |
|
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1954 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
|
1955 } |
|
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1956 |
|
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1957 |
|
48218
01e253345507
(w32_draw_fringe_bitmap): Remove unused local variable window.
Juanma Barranquero <lekktu@gmail.com>
parents:
48025
diff
changeset
|
1958 /* Draw image glyph string S. |
|
27402
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1959 |
|
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1960 s->y |
|
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1961 s->x +------------------------- |
|
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1962 | s->face->box |
|
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1963 | |
|
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1964 | +------------------------- |
|
35287
28e0cac22fbd
(x_produce_image_glyph, x_draw_image_foreground)
Jason Rumney <jasonr@gnu.org>
parents:
35000
diff
changeset
|
1965 | | s->img->vmargin |
|
27402
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1966 | | |
|
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1967 | | +------------------- |
|
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1968 | | | the image |
|
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1969 |
|
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1970 */ |
|
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1971 |
|
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1972 static void |
|
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1973 x_draw_image_glyph_string (s) |
|
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1974 struct glyph_string *s; |
|
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1975 { |
|
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1976 int x, y; |
| 85258 | 1977 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
|
1978 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
|
1979 int height; |
|
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1980 HBITMAP pixmap = 0; |
|
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1981 |
|
36045
8be6a1c85409
(x_produce_image_glyph): Pay attention to the case that
Andrew Innes <andrewi@gnu.org>
parents:
36002
diff
changeset
|
1982 height = s->height - 2 * box_line_vwidth; |
|
27402
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1983 |
|
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1984 /* 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
|
1985 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
|
1986 flickering. */ |
|
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1987 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
|
1988 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
|
1989 || s->img->hmargin |
|
35287
28e0cac22fbd
(x_produce_image_glyph, x_draw_image_foreground)
Jason Rumney <jasonr@gnu.org>
parents:
35000
diff
changeset
|
1990 || s->img->vmargin |
|
27402
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1991 || s->img->mask |
|
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1992 || s->img->pixmap == 0 |
|
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1993 || s->width != s->background_width) |
|
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
1994 { |
|
55026
08e4e7c06ffc
(w32_draw_relief_rect): Add top_p and bot_p args.
Kim F. Storm <storm@cua.dk>
parents:
54731
diff
changeset
|
1995 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
|
1996 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
|
1997 && s->slice.x == 0) |
|
08e4e7c06ffc
(w32_draw_relief_rect): Add top_p and bot_p args.
Kim F. Storm <storm@cua.dk>
parents:
54731
diff
changeset
|
1998 x += 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
|
1999 |
|
08e4e7c06ffc
(w32_draw_relief_rect): Add top_p and bot_p args.
Kim F. Storm <storm@cua.dk>
parents:
54731
diff
changeset
|
2000 y = s->y; |
|
08e4e7c06ffc
(w32_draw_relief_rect): Add top_p and bot_p args.
Kim F. Storm <storm@cua.dk>
parents:
54731
diff
changeset
|
2001 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
|
2002 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
|
2003 |
|
48345
44c0f878e8b9
(x_draw_image_foreground, x_draw_image_glyph_string)
Jason Rumney <jasonr@gnu.org>
parents:
48218
diff
changeset
|
2004 #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
|
2005 if (s->img->mask) |
|
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2006 { |
|
35384
e50a7f9ce65e
(x_produce_stretch_glyph): Only use Qspace when GLYPH_DEBUG is defined.
Jason Rumney <jasonr@gnu.org>
parents:
35287
diff
changeset
|
2007 /* 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
|
2008 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
|
2009 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
|
2010 Screen *screen = FRAME_X_SCREEN (s->f); |
|
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2011 int depth = DefaultDepthOfScreen (screen); |
|
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2012 |
|
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2013 /* 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
|
2014 pixmap = XCreatePixmap (s->display, s->window, |
|
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2015 s->background_width, |
|
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2016 s->height, depth); |
|
48218
01e253345507
(w32_draw_fringe_bitmap): Remove unused local variable window.
Juanma Barranquero <lekktu@gmail.com>
parents:
48025
diff
changeset
|
2017 |
|
27402
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2018 /* 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
|
2019 pixmap. */ |
|
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2020 XSetClipMask (s->display, s->gc, None); |
|
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 /* Fill the pixmap with the background color/stipple. */ |
|
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2023 if (s->stippled_p) |
|
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2024 { |
|
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2025 /* Fill background with a stipple pattern. */ |
|
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2026 XSetFillStyle (s->display, s->gc, FillOpaqueStippled); |
|
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2027 XFillRectangle (s->display, pixmap, s->gc, |
|
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2028 0, 0, s->background_width, s->height); |
|
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2029 XSetFillStyle (s->display, s->gc, FillSolid); |
|
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2030 } |
|
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2031 else |
|
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2032 { |
|
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2033 XGCValues xgcv; |
|
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2034 XGetGCValues (s->display, s->gc, GCForeground | GCBackground, |
|
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2035 &xgcv); |
|
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2036 XSetForeground (s->display, s->gc, xgcv.background); |
|
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2037 XFillRectangle (s->display, pixmap, s->gc, |
|
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2038 0, 0, s->background_width, s->height); |
|
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2039 XSetForeground (s->display, s->gc, xgcv.foreground); |
|
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2040 } |
|
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2041 } |
|
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2042 else |
|
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2043 #endif |
|
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2044 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
|
2045 |
|
27402
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2046 s->background_filled_p = 1; |
|
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 |
|
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2049 /* Draw the foreground. */ |
|
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2050 if (pixmap != 0) |
|
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 w32_draw_image_foreground_1 (s, pixmap); |
|
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2053 x_set_glyph_string_clipping (s); |
|
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 HDC compat_hdc = CreateCompatibleDC (s->hdc); |
|
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2056 HBRUSH fg_brush = CreateSolidBrush (s->gc->foreground); |
|
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2057 HBRUSH orig_brush = SelectObject (s->hdc, fg_brush); |
|
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2058 HGDIOBJ orig_obj = SelectObject (compat_hdc, pixmap); |
|
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 SetTextColor (s->hdc, s->gc->foreground); |
|
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2061 SetBkColor (s->hdc, s->gc->background); |
|
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2062 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
|
2063 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
|
2064 |
|
27402
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2065 SelectObject (s->hdc, orig_brush); |
|
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2066 DeleteObject (fg_brush); |
|
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2067 SelectObject (compat_hdc, orig_obj); |
|
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2068 DeleteDC (compat_hdc); |
| 13434 | 2069 } |
|
27402
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2070 DeleteObject (pixmap); |
|
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2071 pixmap = 0; |
|
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2072 } |
|
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2073 else |
|
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2074 x_draw_image_foreground (s); |
|
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2075 |
|
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2076 /* 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
|
2077 if (s->img->relief |
|
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2078 || s->hl == DRAW_IMAGE_RAISED |
|
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2079 || s->hl == DRAW_IMAGE_SUNKEN) |
|
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2080 x_draw_image_relief (s); |
|
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2081 } |
|
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2082 |
|
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2083 |
|
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2084 /* Draw stretch glyph string S. */ |
|
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2085 |
|
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2086 static void |
|
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2087 x_draw_stretch_glyph_string (s) |
|
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2088 struct glyph_string *s; |
|
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2089 { |
|
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2090 xassert (s->first_glyph->type == STRETCH_GLYPH); |
|
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2091 |
|
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2092 if (s->hl == DRAW_CURSOR |
|
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2093 && !x_stretch_cursor_p) |
|
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2094 { |
|
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2095 /* 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
|
2096 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
|
2097 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
|
2098 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
|
2099 |
|
a86a3503e350
(x_draw_stretch_glyph_string): Fix problems with invisible
Kim F. Storm <storm@cua.dk>
parents:
70234
diff
changeset
|
2100 if (x < left_x) |
|
a86a3503e350
(x_draw_stretch_glyph_string): Fix problems with invisible
Kim F. Storm <storm@cua.dk>
parents:
70234
diff
changeset
|
2101 { |
|
a86a3503e350
(x_draw_stretch_glyph_string): Fix problems with invisible
Kim F. Storm <storm@cua.dk>
parents:
70234
diff
changeset
|
2102 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
|
2103 x = left_x; |
|
a86a3503e350
(x_draw_stretch_glyph_string): Fix problems with invisible
Kim F. Storm <storm@cua.dk>
parents:
70234
diff
changeset
|
2104 } |
|
a86a3503e350
(x_draw_stretch_glyph_string): Fix problems with invisible
Kim F. Storm <storm@cua.dk>
parents:
70234
diff
changeset
|
2105 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
|
2106 |
|
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2107 /* Draw cursor. */ |
|
71021
a86a3503e350
(x_draw_stretch_glyph_string): Fix problems with invisible
Kim F. Storm <storm@cua.dk>
parents:
70234
diff
changeset
|
2108 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
|
2109 |
|
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2110 /* 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
|
2111 if (width < background_width) |
|
27402
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 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
|
2114 int y = s->y; |
|
a86a3503e350
(x_draw_stretch_glyph_string): Fix problems with invisible
Kim F. Storm <storm@cua.dk>
parents:
70234
diff
changeset
|
2115 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
|
2116 RECT r; |
|
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2117 HDC hdc = s->hdc; |
|
40137
5f0d7d58283b
(remember_mouse_glyph): New function.
Jason Rumney <jasonr@gnu.org>
parents:
40078
diff
changeset
|
2118 |
|
71021
a86a3503e350
(x_draw_stretch_glyph_string): Fix problems with invisible
Kim F. Storm <storm@cua.dk>
parents:
70234
diff
changeset
|
2119 x += width; |
|
40137
5f0d7d58283b
(remember_mouse_glyph): New function.
Jason Rumney <jasonr@gnu.org>
parents:
40078
diff
changeset
|
2120 if (s->row->mouse_face_p |
|
5f0d7d58283b
(remember_mouse_glyph): New function.
Jason Rumney <jasonr@gnu.org>
parents:
40078
diff
changeset
|
2121 && cursor_in_mouse_face_p (s->w)) |
|
5f0d7d58283b
(remember_mouse_glyph): New function.
Jason Rumney <jasonr@gnu.org>
parents:
40078
diff
changeset
|
2122 { |
|
5f0d7d58283b
(remember_mouse_glyph): New function.
Jason Rumney <jasonr@gnu.org>
parents:
40078
diff
changeset
|
2123 x_set_mouse_face_gc (s); |
|
5f0d7d58283b
(remember_mouse_glyph): New function.
Jason Rumney <jasonr@gnu.org>
parents:
40078
diff
changeset
|
2124 gc = s->gc; |
|
5f0d7d58283b
(remember_mouse_glyph): New function.
Jason Rumney <jasonr@gnu.org>
parents:
40078
diff
changeset
|
2125 } |
|
5f0d7d58283b
(remember_mouse_glyph): New function.
Jason Rumney <jasonr@gnu.org>
parents:
40078
diff
changeset
|
2126 else |
|
5f0d7d58283b
(remember_mouse_glyph): New function.
Jason Rumney <jasonr@gnu.org>
parents:
40078
diff
changeset
|
2127 gc = s->face->gc; |
|
48218
01e253345507
(w32_draw_fringe_bitmap): Remove unused local variable window.
Juanma Barranquero <lekktu@gmail.com>
parents:
48025
diff
changeset
|
2128 |
|
50231
c8ea5e4b2129
* w32term.c: Remove consolidated defines and code.
Kim F. Storm <storm@cua.dk>
parents:
50163
diff
changeset
|
2129 get_glyph_string_clip_rect (s, &r); |
|
27402
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2130 w32_set_clip_rectangle (hdc, &r); |
|
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2131 |
|
33097
84590a646acc
(x_produce_glyphs): Handle composite characters.
Jason Rumney <jasonr@gnu.org>
parents:
33037
diff
changeset
|
2132 #if 0 /* TODO: stipple */ |
|
27402
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2133 if (s->face->stipple) |
|
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2134 { |
|
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2135 /* Fill background with a stipple pattern. */ |
|
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2136 XSetFillStyle (s->display, gc, FillOpaqueStippled); |
|
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2137 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
|
2138 XSetFillStyle (s->display, gc, FillSolid); |
|
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 else |
|
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2141 #endif |
|
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 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
|
2144 } |
|
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2145 } |
|
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2146 } |
|
40137
5f0d7d58283b
(remember_mouse_glyph): New function.
Jason Rumney <jasonr@gnu.org>
parents:
40078
diff
changeset
|
2147 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
|
2148 { |
|
a86a3503e350
(x_draw_stretch_glyph_string): Fix problems with invisible
Kim F. Storm <storm@cua.dk>
parents:
70234
diff
changeset
|
2149 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
|
2150 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
|
2151 |
|
72470
3b82c004bf25
(x_draw_stretch_glyph_string): It is ok to draw a
Kim F. Storm <storm@cua.dk>
parents:
72008
diff
changeset
|
2152 /* 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
|
2153 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
|
2154 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
|
2155 { |
|
a86a3503e350
(x_draw_stretch_glyph_string): Fix problems with invisible
Kim F. Storm <storm@cua.dk>
parents:
70234
diff
changeset
|
2156 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
|
2157 x = left_x; |
|
a86a3503e350
(x_draw_stretch_glyph_string): Fix problems with invisible
Kim F. Storm <storm@cua.dk>
parents:
70234
diff
changeset
|
2158 } |
|
a86a3503e350
(x_draw_stretch_glyph_string): Fix problems with invisible
Kim F. Storm <storm@cua.dk>
parents:
70234
diff
changeset
|
2159 if (background_width > 0) |
|
a86a3503e350
(x_draw_stretch_glyph_string): Fix problems with invisible
Kim F. Storm <storm@cua.dk>
parents:
70234
diff
changeset
|
2160 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
|
2161 } |
|
48218
01e253345507
(w32_draw_fringe_bitmap): Remove unused local variable window.
Juanma Barranquero <lekktu@gmail.com>
parents:
48025
diff
changeset
|
2162 |
|
27402
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2163 s->background_filled_p = 1; |
|
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2164 } |
|
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2165 |
|
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2166 |
|
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2167 /* Draw glyph string S. */ |
| 13434 | 2168 |
|
21831
6b659713b90b
Forward declare hooks with full function prototypes.
Geoff Voelker <voelker@cs.washington.edu>
parents:
21740
diff
changeset
|
2169 static void |
|
27402
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2170 x_draw_glyph_string (s) |
|
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2171 struct glyph_string *s; |
|
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2172 { |
|
38807
a59ac9807c9d
Draw relief (if any) before
Andrew Innes <andrewi@gnu.org>
parents:
38570
diff
changeset
|
2173 int relief_drawn_p = 0; |
|
a59ac9807c9d
Draw relief (if any) before
Andrew Innes <andrewi@gnu.org>
parents:
38570
diff
changeset
|
2174 |
|
27402
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2175 /* 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
|
2176 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
|
2177 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
|
2178 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
|
2179 { |
| 90834 | 2180 int width; |
| 2181 struct glyph_string *next; | |
| 2182 for (width = 0, next = s->next; next; | |
| 2183 width += next->width, next = next->next) | |
| 2184 if (next->first_glyph->type != IMAGE_GLYPH) | |
| 2185 { | |
| 2186 x_set_glyph_string_gc (next); | |
| 2187 x_set_glyph_string_clipping (next); | |
| 2188 x_draw_glyph_string_background (next, 1); | |
|
91028
d41ffb650865
(x_set_glyph_string_clipping): Use
Jason Rumney <jasonr@gnu.org>
parents:
91005
diff
changeset
|
2189 next->num_clips = 0; |
| 90834 | 2190 } |
|
27402
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2191 } |
|
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2192 |
|
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2193 /* 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
|
2194 x_set_glyph_string_gc (s); |
|
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2195 |
|
38807
a59ac9807c9d
Draw relief (if any) before
Andrew Innes <andrewi@gnu.org>
parents:
38570
diff
changeset
|
2196 /* 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
|
2197 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
|
2198 if (!s->for_overlaps |
|
38807
a59ac9807c9d
Draw relief (if any) before
Andrew Innes <andrewi@gnu.org>
parents:
38570
diff
changeset
|
2199 && s->face->box != FACE_NO_BOX |
|
a59ac9807c9d
Draw relief (if any) before
Andrew Innes <andrewi@gnu.org>
parents:
38570
diff
changeset
|
2200 && (s->first_glyph->type == CHAR_GLYPH |
|
a59ac9807c9d
Draw relief (if any) before
Andrew Innes <andrewi@gnu.org>
parents:
38570
diff
changeset
|
2201 || s->first_glyph->type == COMPOSITE_GLYPH)) |
|
a59ac9807c9d
Draw relief (if any) before
Andrew Innes <andrewi@gnu.org>
parents:
38570
diff
changeset
|
2202 |
|
a59ac9807c9d
Draw relief (if any) before
Andrew Innes <andrewi@gnu.org>
parents:
38570
diff
changeset
|
2203 { |
|
40137
5f0d7d58283b
(remember_mouse_glyph): New function.
Jason Rumney <jasonr@gnu.org>
parents:
40078
diff
changeset
|
2204 x_set_glyph_string_clipping (s); |
|
38807
a59ac9807c9d
Draw relief (if any) before
Andrew Innes <andrewi@gnu.org>
parents:
38570
diff
changeset
|
2205 x_draw_glyph_string_background (s, 1); |
|
a59ac9807c9d
Draw relief (if any) before
Andrew Innes <andrewi@gnu.org>
parents:
38570
diff
changeset
|
2206 x_draw_glyph_string_box (s); |
|
40137
5f0d7d58283b
(remember_mouse_glyph): New function.
Jason Rumney <jasonr@gnu.org>
parents:
40078
diff
changeset
|
2207 x_set_glyph_string_clipping (s); |
|
38807
a59ac9807c9d
Draw relief (if any) before
Andrew Innes <andrewi@gnu.org>
parents:
38570
diff
changeset
|
2208 relief_drawn_p = 1; |
|
a59ac9807c9d
Draw relief (if any) before
Andrew Innes <andrewi@gnu.org>
parents:
38570
diff
changeset
|
2209 } |
|
95364
03298b3ef01c
(x_draw_glyph_string): Use clipmask if specified.
Jason Rumney <jasonr@gnu.org>
parents:
95296
diff
changeset
|
2210 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
|
2211 && !s->clip_tail |
|
03298b3ef01c
(x_draw_glyph_string): Use clipmask if specified.
Jason Rumney <jasonr@gnu.org>
parents:
95296
diff
changeset
|
2212 && ((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
|
2213 || (s->next && s->next->hl != s->hl && s->right_overhang))) |
| 90834 | 2214 /* We must clip just this glyph. left_overhang part has already |
| 2215 drawn when s->prev was drawn, and right_overhang part will be | |
| 2216 drawn later when s->next is drawn. */ | |
| 2217 x_set_glyph_string_clipping_exactly (s, s); | |
|
40137
5f0d7d58283b
(remember_mouse_glyph): New function.
Jason Rumney <jasonr@gnu.org>
parents:
40078
diff
changeset
|
2218 else |
|
5f0d7d58283b
(remember_mouse_glyph): New function.
Jason Rumney <jasonr@gnu.org>
parents:
40078
diff
changeset
|
2219 x_set_glyph_string_clipping (s); |
|
38807
a59ac9807c9d
Draw relief (if any) before
Andrew Innes <andrewi@gnu.org>
parents:
38570
diff
changeset
|
2220 |
|
27402
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2221 switch (s->first_glyph->type) |
|
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 case IMAGE_GLYPH: |
|
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2224 x_draw_image_glyph_string (s); |
|
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2225 break; |
|
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2226 |
|
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2227 case STRETCH_GLYPH: |
|
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2228 x_draw_stretch_glyph_string (s); |
|
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2229 break; |
|
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 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
|
2232 if (s->for_overlaps) |
|
27402
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2233 s->background_filled_p = 1; |
|
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2234 else |
|
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2235 x_draw_glyph_string_background (s, 0); |
|
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2236 x_draw_glyph_string_foreground (s); |
|
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2237 break; |
|
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2238 |
|
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2239 case COMPOSITE_GLYPH: |
|
65892
41fc0bf568be
Rename member for_overlaps_p in struct glyph_string to for_overlaps.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
65444
diff
changeset
|
2240 if (s->for_overlaps || s->gidx > 0) |
|
27402
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2241 s->background_filled_p = 1; |
|
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2242 else |
|
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2243 x_draw_glyph_string_background (s, 1); |
|
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2244 x_draw_composite_glyph_string_foreground (s); |
|
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2245 break; |
|
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2246 |
|
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2247 default: |
|
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2248 abort (); |
|
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2249 } |
|
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2250 |
|
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
|
2251 if (!s->for_overlaps) |
|
27402
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 /* Draw underline. */ |
|
94912
5b153bea483d
: Throughout the file, delete all USE_FONT_BACKEND
Kenichi Handa <handa@m17n.org>
parents:
93913
diff
changeset
|
2254 if (s->face->underline_p) |
|
27402
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2255 { |
|
94912
5b153bea483d
: Throughout the file, delete all USE_FONT_BACKEND
Kenichi Handa <handa@m17n.org>
parents:
93913
diff
changeset
|
2256 unsigned long thickness, position; |
|
90867
129b35b0274f
(w32_native_per_char_metric): Swap width and rbearing
Jason Rumney <jasonr@gnu.org>
parents:
90834
diff
changeset
|
2257 int y; |
|
94912
5b153bea483d
: Throughout the file, delete all USE_FONT_BACKEND
Kenichi Handa <handa@m17n.org>
parents:
93913
diff
changeset
|
2258 |
|
5b153bea483d
: Throughout the file, delete all USE_FONT_BACKEND
Kenichi Handa <handa@m17n.org>
parents:
93913
diff
changeset
|
2259 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
|
2260 { |
|
5b153bea483d
: Throughout the file, delete all USE_FONT_BACKEND
Kenichi Handa <handa@m17n.org>
parents:
93913
diff
changeset
|
2261 /* 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
|
2262 thickness = s->prev->underline_thickness; |
|
5b153bea483d
: Throughout the file, delete all USE_FONT_BACKEND
Kenichi Handa <handa@m17n.org>
parents:
93913
diff
changeset
|
2263 position = s->prev->underline_position; |
|
5b153bea483d
: Throughout the file, delete all USE_FONT_BACKEND
Kenichi Handa <handa@m17n.org>
parents:
93913
diff
changeset
|
2264 } |
|
5b153bea483d
: Throughout the file, delete all USE_FONT_BACKEND
Kenichi Handa <handa@m17n.org>
parents:
93913
diff
changeset
|
2265 else |
|
72505
759e19ea81e5
(x_underline_at_descent_line): New variable.
Kim F. Storm <storm@cua.dk>
parents:
72470
diff
changeset
|
2266 { |
|
94912
5b153bea483d
: Throughout the file, delete all USE_FONT_BACKEND
Kenichi Handa <handa@m17n.org>
parents:
93913
diff
changeset
|
2267 /* 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
|
2268 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
|
2269 thickness = s->font->underline_thickness; |
|
5b153bea483d
: Throughout the file, delete all USE_FONT_BACKEND
Kenichi Handa <handa@m17n.org>
parents:
93913
diff
changeset
|
2270 else |
|
5b153bea483d
: Throughout the file, delete all USE_FONT_BACKEND
Kenichi Handa <handa@m17n.org>
parents:
93913
diff
changeset
|
2271 thickness = 1; |
|
5b153bea483d
: Throughout the file, delete all USE_FONT_BACKEND
Kenichi Handa <handa@m17n.org>
parents:
93913
diff
changeset
|
2272 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
|
2273 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
|
2274 else |
| 90834 | 2275 { |
|
94912
5b153bea483d
: Throughout the file, delete all USE_FONT_BACKEND
Kenichi Handa <handa@m17n.org>
parents:
93913
diff
changeset
|
2276 /* 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
|
2277 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
|
2278 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
|
2279 specs, and its default is |
|
5b153bea483d
: Throughout the file, delete all USE_FONT_BACKEND
Kenichi Handa <handa@m17n.org>
parents:
93913
diff
changeset
|
2280 |
|
5b153bea483d
: Throughout the file, delete all USE_FONT_BACKEND
Kenichi Handa <handa@m17n.org>
parents:
93913
diff
changeset
|
2281 ROUND ((maximum_descent) / 2), with |
|
5b153bea483d
: Throughout the file, delete all USE_FONT_BACKEND
Kenichi Handa <handa@m17n.org>
parents:
93913
diff
changeset
|
2282 ROUND (x) = floor (x + 0.5) */ |
|
5b153bea483d
: Throughout the file, delete all USE_FONT_BACKEND
Kenichi Handa <handa@m17n.org>
parents:
93913
diff
changeset
|
2283 |
|
5b153bea483d
: Throughout the file, delete all USE_FONT_BACKEND
Kenichi Handa <handa@m17n.org>
parents:
93913
diff
changeset
|
2284 if (x_use_underline_position_properties |
|
5b153bea483d
: Throughout the file, delete all USE_FONT_BACKEND
Kenichi Handa <handa@m17n.org>
parents:
93913
diff
changeset
|
2285 && 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
|
2286 position = s->font->underline_position; |
|
5b153bea483d
: Throughout the file, delete all USE_FONT_BACKEND
Kenichi Handa <handa@m17n.org>
parents:
93913
diff
changeset
|
2287 else if (s->font) |
|
5b153bea483d
: Throughout the file, delete all USE_FONT_BACKEND
Kenichi Handa <handa@m17n.org>
parents:
93913
diff
changeset
|
2288 position = (s->font->descent + 1) / 2; |
| 90834 | 2289 } |
|
95792
953225ddde83
* xdisp.c (underline_minimum_offset): Rename from xterm.c's
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
95733
diff
changeset
|
2290 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
|
2291 } |
|
95247
32b09637961a
(x_draw_glyph_string): Be sure to draw underline within the current
Kenichi Handa <handa@m17n.org>
parents:
95240
diff
changeset
|
2292 /* 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
|
2293 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
|
2294 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
|
2295 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
|
2296 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
|
2297 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
|
2298 s->underline_thickness = thickness; |
|
b4799755ba3d
(x_draw_glyph_string): Be sure to update
Kenichi Handa <handa@m17n.org>
parents:
95170
diff
changeset
|
2299 s->underline_position =position; |
|
94912
5b153bea483d
: Throughout the file, delete all USE_FONT_BACKEND
Kenichi Handa <handa@m17n.org>
parents:
93913
diff
changeset
|
2300 y = s->ybase + position; |
|
27402
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2301 if (s->face->underline_defaulted_p) |
|
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2302 { |
|
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2303 w32_fill_area (s->f, s->hdc, s->gc->foreground, s->x, |
|
90867
129b35b0274f
(w32_native_per_char_metric): Swap width and rbearing
Jason Rumney <jasonr@gnu.org>
parents:
90834
diff
changeset
|
2304 y, s->background_width, 1); |
|
27402
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2305 } |
|
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2306 else |
|
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2307 { |
|
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2308 w32_fill_area (s->f, s->hdc, s->face->underline_color, s->x, |
|
90867
129b35b0274f
(w32_native_per_char_metric): Swap width and rbearing
Jason Rumney <jasonr@gnu.org>
parents:
90834
diff
changeset
|
2309 y, s->background_width, 1); |
|
27402
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2310 } |
|
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2311 } |
|
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2312 /* Draw overline. */ |
|
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2313 if (s->face->overline_p) |
|
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 unsigned long dy = 0, h = 1; |
|
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2316 |
|
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2317 if (s->face->overline_color_defaulted_p) |
| 90834 | 2318 { |
| 2319 w32_fill_area (s->f, s->hdc, s->gc->foreground, s->x, | |
| 2320 s->y + dy, s->background_width, h); | |
| 2321 } | |
|
27402
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2322 else |
|
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2323 { |
|
57626
d208db2b5db2
(x_draw_glyph_string): Use overline_color for overlines.
Jason Rumney <jasonr@gnu.org>
parents:
57560
diff
changeset
|
2324 w32_fill_area (s->f, s->hdc, s->face->overline_color, s->x, |
|
72505
759e19ea81e5
(x_underline_at_descent_line): New variable.
Kim F. Storm <storm@cua.dk>
parents:
72470
diff
changeset
|
2325 s->y + dy, s->background_width, h); |
|
27402
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2326 } |
|
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2327 } |
|
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2328 |
|
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2329 /* Draw strike-through. */ |
|
29321
8e2be36bb1c6
Format and doc changes to bring closer to xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
28369
diff
changeset
|
2330 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
|
2331 && !FONT_TEXTMETRIC(s->font).tmStruckOut) |
|
27402
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2332 { |
|
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2333 unsigned long h = 1; |
|
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2334 unsigned long dy = (s->height - h) / 2; |
|
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2335 |
|
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2336 if (s->face->strike_through_color_defaulted_p) |
|
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2337 { |
|
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2338 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
|
2339 s->width, h); |
|
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2340 } |
|
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2341 else |
|
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2342 { |
|
78858
266d9baa6dec
(x_draw_glyph_string): Use strike_through_color, not underline_color,
Juanma Barranquero <lekktu@gmail.com>
parents:
78501
diff
changeset
|
2343 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
|
2344 s->y + dy, s->width, h); |
|
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 } |
|
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2347 |
| 90834 | 2348 /* Draw relief if not yet drawn. */ |
|
38807
a59ac9807c9d
Draw relief (if any) before
Andrew Innes <andrewi@gnu.org>
parents:
38570
diff
changeset
|
2349 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
|
2350 x_draw_glyph_string_box (s); |
| 90834 | 2351 |
| 2352 if (s->prev) | |
| 2353 { | |
| 2354 struct glyph_string *prev; | |
| 2355 | |
| 2356 for (prev = s->prev; prev; prev = prev->prev) | |
| 2357 if (prev->hl != s->hl | |
| 2358 && prev->x + prev->width + prev->right_overhang > s->x) | |
| 2359 { | |
| 2360 /* As prev was drawn while clipped to its own area, we | |
| 2361 must draw the right_overhang part using s->hl now. */ | |
| 2362 enum draw_glyphs_face save = prev->hl; | |
| 2363 | |
| 2364 prev->hl = s->hl; | |
| 2365 x_set_glyph_string_gc (prev); | |
| 2366 x_set_glyph_string_clipping_exactly (s, prev); | |
| 2367 if (prev->first_glyph->type == CHAR_GLYPH) | |
| 2368 x_draw_glyph_string_foreground (prev); | |
| 2369 else | |
| 2370 x_draw_composite_glyph_string_foreground (prev); | |
| 2371 w32_set_clip_rectangle (prev->hdc, NULL); | |
| 2372 prev->hl = save; | |
|
91028
d41ffb650865
(x_set_glyph_string_clipping): Use
Jason Rumney <jasonr@gnu.org>
parents:
91005
diff
changeset
|
2373 prev->num_clips = 0; |
| 90834 | 2374 } |
| 2375 } | |
| 2376 | |
| 2377 if (s->next) | |
| 2378 { | |
| 2379 struct glyph_string *next; | |
| 2380 | |
| 2381 for (next = s->next; next; next = next->next) | |
| 2382 if (next->hl != s->hl | |
| 2383 && next->x - next->left_overhang < s->x + s->width) | |
| 2384 { | |
| 2385 /* As next will be drawn while clipped to its own area, | |
| 2386 we must draw the left_overhang part using s->hl now. */ | |
| 2387 enum draw_glyphs_face save = next->hl; | |
| 2388 | |
| 2389 next->hl = s->hl; | |
| 2390 x_set_glyph_string_gc (next); | |
| 2391 x_set_glyph_string_clipping_exactly (s, next); | |
| 2392 if (next->first_glyph->type == CHAR_GLYPH) | |
| 2393 x_draw_glyph_string_foreground (next); | |
| 2394 else | |
| 2395 x_draw_composite_glyph_string_foreground (next); | |
| 2396 w32_set_clip_rectangle (next->hdc, NULL); | |
| 2397 next->hl = save; | |
|
91028
d41ffb650865
(x_set_glyph_string_clipping): Use
Jason Rumney <jasonr@gnu.org>
parents:
91005
diff
changeset
|
2398 next->num_clips = 0; |
| 90834 | 2399 } |
| 2400 } | |
|
27402
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2401 } |
|
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2402 |
|
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2403 /* Reset clipping. */ |
|
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2404 w32_set_clip_rectangle (s->hdc, NULL); |
|
91028
d41ffb650865
(x_set_glyph_string_clipping): Use
Jason Rumney <jasonr@gnu.org>
parents:
91005
diff
changeset
|
2405 s->num_clips = 0; |
|
27402
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2406 } |
|
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 |
|
50231
c8ea5e4b2129
* w32term.c: Remove consolidated defines and code.
Kim F. Storm <storm@cua.dk>
parents:
50163
diff
changeset
|
2409 /* 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
|
2410 |
|
c8ea5e4b2129
* w32term.c: Remove consolidated defines and code.
Kim F. Storm <storm@cua.dk>
parents:
50163
diff
changeset
|
2411 void |
|
c8ea5e4b2129
* w32term.c: Remove consolidated defines and code.
Kim F. Storm <storm@cua.dk>
parents:
50163
diff
changeset
|
2412 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
|
2413 struct frame *f; |
|
c8ea5e4b2129
* w32term.c: Remove consolidated defines and code.
Kim F. Storm <storm@cua.dk>
parents:
50163
diff
changeset
|
2414 int x, y, width, height, shift_by; |
|
27402
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2415 { |
|
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2416 HDC hdc; |
|
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2417 |
|
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2418 hdc = get_frame_dc (f); |
|
50231
c8ea5e4b2129
* w32term.c: Remove consolidated defines and code.
Kim F. Storm <storm@cua.dk>
parents:
50163
diff
changeset
|
2419 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
|
2420 hdc, x, y, SRCCOPY); |
|
c8ea5e4b2129
* w32term.c: Remove consolidated defines and code.
Kim F. Storm <storm@cua.dk>
parents:
50163
diff
changeset
|
2421 |
|
27402
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2422 release_frame_dc (f, hdc); |
|
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2423 } |
|
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2424 |
|
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 /* 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
|
2427 for X frames. */ |
|
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 static void |
|
83569
86395c339701
(w32_set_terminal_modes, w32_reset_terminal_modes):
Jason Rumney <jasonr@gnu.org>
parents:
83556
diff
changeset
|
2430 x_delete_glyphs (f, n) |
|
86395c339701
(w32_set_terminal_modes, w32_reset_terminal_modes):
Jason Rumney <jasonr@gnu.org>
parents:
83556
diff
changeset
|
2431 struct frame *f; |
|
27402
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2432 register int n; |
|
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2433 { |
| 35000 | 2434 if (! FRAME_W32_P (f)) |
| 2435 return; | |
| 2436 | |
|
27402
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2437 abort (); |
|
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 |
|
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2441 /* 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
|
2442 frame. Otherwise clear the selected frame. */ |
|
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2443 |
|
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2444 static void |
|
83569
86395c339701
(w32_set_terminal_modes, w32_reset_terminal_modes):
Jason Rumney <jasonr@gnu.org>
parents:
83556
diff
changeset
|
2445 x_clear_frame (struct frame *f) |
|
27402
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2446 { |
| 35000 | 2447 if (! FRAME_W32_P (f)) |
| 2448 return; | |
| 2449 | |
|
27402
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2450 /* 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
|
2451 longer visible. */ |
|
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2452 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
|
2453 output_cursor.hpos = output_cursor.vpos = 0; |
|
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2454 output_cursor.x = -1; |
|
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2455 |
|
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2456 /* 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
|
2457 follow an explicit cursor_to. */ |
| 13434 | 2458 BLOCK_INPUT; |
| 2459 | |
|
16588
481b7874a1e9
Change identifiers of the form win32* to w32*.
Geoff Voelker <voelker@cs.washington.edu>
parents:
16326
diff
changeset
|
2460 w32_clear_window (f); |
| 13434 | 2461 |
| 2462 /* We have to clear the scroll bars, too. If we have changed | |
| 2463 colors or something like that, then they should be notified. */ | |
| 2464 x_scroll_bar_clear (f); | |
| 2465 | |
| 2466 UNBLOCK_INPUT; | |
| 2467 } | |
|
27402
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2468 |
| 13434 | 2469 |
| 2470 /* Make audible bell. */ | |
| 2471 | |
|
21831
6b659713b90b
Forward declare hooks with full function prototypes.
Geoff Voelker <voelker@cs.washington.edu>
parents:
21740
diff
changeset
|
2472 static void |
|
83569
86395c339701
(w32_set_terminal_modes, w32_reset_terminal_modes):
Jason Rumney <jasonr@gnu.org>
parents:
83556
diff
changeset
|
2473 w32_ring_bell (struct frame *f) |
| 13434 | 2474 { |
| 2475 BLOCK_INPUT; | |
| 2476 | |
|
35449
98d65e364070
(w32_ring_bell): Only support visible bell on w32
Andrew Innes <andrewi@gnu.org>
parents:
35384
diff
changeset
|
2477 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
|
2478 { |
|
23fda104cd36
(w32_ring_bell): Flash window correctly.
Geoff Voelker <voelker@cs.washington.edu>
parents:
21885
diff
changeset
|
2479 int i; |
|
83569
86395c339701
(w32_set_terminal_modes, w32_reset_terminal_modes):
Jason Rumney <jasonr@gnu.org>
parents:
83556
diff
changeset
|
2480 HWND hwnd = FRAME_W32_WINDOW (f); |
|
22059
23fda104cd36
(w32_ring_bell): Flash window correctly.
Geoff Voelker <voelker@cs.washington.edu>
parents:
21885
diff
changeset
|
2481 |
|
48218
01e253345507
(w32_draw_fringe_bitmap): Remove unused local variable window.
Juanma Barranquero <lekktu@gmail.com>
parents:
48025
diff
changeset
|
2482 for (i = 0; i < 5; i++) |
|
22059
23fda104cd36
(w32_ring_bell): Flash window correctly.
Geoff Voelker <voelker@cs.washington.edu>
parents:
21885
diff
changeset
|
2483 { |
|
23fda104cd36
(w32_ring_bell): Flash window correctly.
Geoff Voelker <voelker@cs.washington.edu>
parents:
21885
diff
changeset
|
2484 FlashWindow (hwnd, TRUE); |
|
23fda104cd36
(w32_ring_bell): Flash window correctly.
Geoff Voelker <voelker@cs.washington.edu>
parents:
21885
diff
changeset
|
2485 Sleep (10); |
|
23fda104cd36
(w32_ring_bell): Flash window correctly.
Geoff Voelker <voelker@cs.washington.edu>
parents:
21885
diff
changeset
|
2486 } |
|
23fda104cd36
(w32_ring_bell): Flash window correctly.
Geoff Voelker <voelker@cs.washington.edu>
parents:
21885
diff
changeset
|
2487 FlashWindow (hwnd, FALSE); |
|
23fda104cd36
(w32_ring_bell): Flash window correctly.
Geoff Voelker <voelker@cs.washington.edu>
parents:
21885
diff
changeset
|
2488 } |
| 13434 | 2489 else |
|
83569
86395c339701
(w32_set_terminal_modes, w32_reset_terminal_modes):
Jason Rumney <jasonr@gnu.org>
parents:
83556
diff
changeset
|
2490 w32_sys_ring_bell (f); |
| 13434 | 2491 |
| 2492 UNBLOCK_INPUT; | |
| 2493 } | |
|
27402
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2494 |
| 13434 | 2495 |
| 2496 /* Specify how many text lines, from the top of the window, | |
| 2497 should be affected by insert-lines and delete-lines operations. | |
| 2498 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
|
2499 that is bounded by calls to x_update_begin and x_update_end. */ |
| 13434 | 2500 |
|
21831
6b659713b90b
Forward declare hooks with full function prototypes.
Geoff Voelker <voelker@cs.washington.edu>
parents:
21740
diff
changeset
|
2501 static void |
|
16588
481b7874a1e9
Change identifiers of the form win32* to w32*.
Geoff Voelker <voelker@cs.washington.edu>
parents:
16326
diff
changeset
|
2502 w32_set_terminal_window (n) |
| 13434 | 2503 register int n; |
| 2504 { | |
|
27402
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2505 /* This function intentionally left blank. */ |
| 13434 | 2506 } |
|
27402
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2507 |
|
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2508 |
|
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2509 /*********************************************************************** |
|
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2510 Line Dance |
|
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2511 ***********************************************************************/ |
|
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2512 |
|
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2513 /* 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
|
2514 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
|
2515 |
|
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2516 static void |
|
83569
86395c339701
(w32_set_terminal_modes, w32_reset_terminal_modes):
Jason Rumney <jasonr@gnu.org>
parents:
83556
diff
changeset
|
2517 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
|
2518 struct frame *f; |
|
27402
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2519 int vpos, n; |
|
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2520 { |
| 35000 | 2521 if (! FRAME_W32_P (f)) |
| 2522 return; | |
| 2523 | |
|
27402
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2524 abort (); |
|
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2525 } |
|
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2526 |
|
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2527 |
|
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2528 /* 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
|
2529 |
|
6b659713b90b
Forward declare hooks with full function prototypes.
Geoff Voelker <voelker@cs.washington.edu>
parents:
21740
diff
changeset
|
2530 static void |
|
27402
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2531 x_scroll_run (w, run) |
|
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2532 struct window *w; |
|
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2533 struct run *run; |
|
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2534 { |
|
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2535 struct frame *f = XFRAME (w->frame); |
|
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2536 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
|
2537 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
|
2538 HRGN expect_dirty; |
|
27402
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2539 |
|
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2540 /* Get frame-relative bounding box of the text display area of W, |
| 41125 | 2541 without mode lines. Include in this box the left and right |
| 2542 fringes of W. */ | |
|
27402
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2543 window_box (w, -1, &x, &y, &width, &height); |
|
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2544 |
|
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2545 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
|
2546 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
|
2547 bottom_y = y + height; |
|
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 if (to_y < from_y) |
|
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2550 { |
|
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2551 /* 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
|
2552 line at the bottom. */ |
|
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2553 if (from_y + run->height > bottom_y) |
|
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2554 height = bottom_y - from_y; |
|
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2555 else |
|
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2556 height = run->height; |
|
42934
b3ee5e92548a
(x_scroll_run): Use ScrollWindowEx in place of BitBlt.
Jason Rumney <jasonr@gnu.org>
parents:
42919
diff
changeset
|
2557 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
|
2558 } |
|
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2559 else |
|
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2560 { |
|
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2561 /* 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
|
2562 at the bottom. */ |
|
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2563 if (to_y + run->height > bottom_y) |
|
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2564 height = bottom_y - to_y; |
|
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2565 else |
|
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2566 height = run->height; |
|
42934
b3ee5e92548a
(x_scroll_run): Use ScrollWindowEx in place of BitBlt.
Jason Rumney <jasonr@gnu.org>
parents:
42919
diff
changeset
|
2567 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
|
2568 } |
|
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2569 |
|
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2570 BLOCK_INPUT; |
|
48218
01e253345507
(w32_draw_fringe_bitmap): Remove unused local variable window.
Juanma Barranquero <lekktu@gmail.com>
parents:
48025
diff
changeset
|
2571 |
|
27402
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2572 /* 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
|
2573 updated_window = w; |
|
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2574 x_clear_cursor (w); |
|
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2575 |
|
42934
b3ee5e92548a
(x_scroll_run): Use ScrollWindowEx in place of BitBlt.
Jason Rumney <jasonr@gnu.org>
parents:
42919
diff
changeset
|
2576 { |
|
b3ee5e92548a
(x_scroll_run): Use ScrollWindowEx in place of BitBlt.
Jason Rumney <jasonr@gnu.org>
parents:
42919
diff
changeset
|
2577 RECT from; |
|
b3ee5e92548a
(x_scroll_run): Use ScrollWindowEx in place of BitBlt.
Jason Rumney <jasonr@gnu.org>
parents:
42919
diff
changeset
|
2578 RECT to; |
|
b3ee5e92548a
(x_scroll_run): Use ScrollWindowEx in place of BitBlt.
Jason Rumney <jasonr@gnu.org>
parents:
42919
diff
changeset
|
2579 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
|
2580 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
|
2581 |
|
b3ee5e92548a
(x_scroll_run): Use ScrollWindowEx in place of BitBlt.
Jason Rumney <jasonr@gnu.org>
parents:
42919
diff
changeset
|
2582 from.left = to.left = x; |
|
b3ee5e92548a
(x_scroll_run): Use ScrollWindowEx in place of BitBlt.
Jason Rumney <jasonr@gnu.org>
parents:
42919
diff
changeset
|
2583 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
|
2584 from.top = from_y; |
|
b3ee5e92548a
(x_scroll_run): Use ScrollWindowEx in place of BitBlt.
Jason Rumney <jasonr@gnu.org>
parents:
42919
diff
changeset
|
2585 from.bottom = from_y + height; |
|
b3ee5e92548a
(x_scroll_run): Use ScrollWindowEx in place of BitBlt.
Jason Rumney <jasonr@gnu.org>
parents:
42919
diff
changeset
|
2586 to.top = y; |
|
b3ee5e92548a
(x_scroll_run): Use ScrollWindowEx in place of BitBlt.
Jason Rumney <jasonr@gnu.org>
parents:
42919
diff
changeset
|
2587 to.bottom = bottom_y; |
|
b3ee5e92548a
(x_scroll_run): Use ScrollWindowEx in place of BitBlt.
Jason Rumney <jasonr@gnu.org>
parents:
42919
diff
changeset
|
2588 |
|
b3ee5e92548a
(x_scroll_run): Use ScrollWindowEx in place of BitBlt.
Jason Rumney <jasonr@gnu.org>
parents:
42919
diff
changeset
|
2589 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
|
2590 NULL, SW_INVALIDATE); |
|
b3ee5e92548a
(x_scroll_run): Use ScrollWindowEx in place of BitBlt.
Jason Rumney <jasonr@gnu.org>
parents:
42919
diff
changeset
|
2591 |
|
b3ee5e92548a
(x_scroll_run): Use ScrollWindowEx in place of BitBlt.
Jason Rumney <jasonr@gnu.org>
parents:
42919
diff
changeset
|
2592 /* 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
|
2593 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
|
2594 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
|
2595 |
|
b3ee5e92548a
(x_scroll_run): Use ScrollWindowEx in place of BitBlt.
Jason Rumney <jasonr@gnu.org>
parents:
42919
diff
changeset
|
2596 /* 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
|
2597 if (!EqualRgn (combined, expect_dirty)) |
|
b3ee5e92548a
(x_scroll_run): Use ScrollWindowEx in place of BitBlt.
Jason Rumney <jasonr@gnu.org>
parents:
42919
diff
changeset
|
2598 SET_FRAME_GARBAGED (f); |
|
57837
d2354c6afd6d
Delete region objects after use.
Jason Rumney <jasonr@gnu.org>
parents:
57626
diff
changeset
|
2599 |
|
d2354c6afd6d
Delete region objects after use.
Jason Rumney <jasonr@gnu.org>
parents:
57626
diff
changeset
|
2600 DeleteObject (dirty); |
|
d2354c6afd6d
Delete region objects after use.
Jason Rumney <jasonr@gnu.org>
parents:
57626
diff
changeset
|
2601 DeleteObject (combined); |
|
42934
b3ee5e92548a
(x_scroll_run): Use ScrollWindowEx in place of BitBlt.
Jason Rumney <jasonr@gnu.org>
parents:
42919
diff
changeset
|
2602 } |
|
b3ee5e92548a
(x_scroll_run): Use ScrollWindowEx in place of BitBlt.
Jason Rumney <jasonr@gnu.org>
parents:
42919
diff
changeset
|
2603 |
|
27402
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2604 UNBLOCK_INPUT; |
|
57837
d2354c6afd6d
Delete region objects after use.
Jason Rumney <jasonr@gnu.org>
parents:
57626
diff
changeset
|
2605 DeleteObject (expect_dirty); |
|
27402
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2606 } |
|
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2607 |
|
29321
8e2be36bb1c6
Format and doc changes to bring closer to xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
28369
diff
changeset
|
2608 |
|
27402
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2609 |
|
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2610 /*********************************************************************** |
|
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2611 Exposure Events |
|
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2612 ***********************************************************************/ |
|
48218
01e253345507
(w32_draw_fringe_bitmap): Remove unused local variable window.
Juanma Barranquero <lekktu@gmail.com>
parents:
48025
diff
changeset
|
2613 |
| 13434 | 2614 static void |
| 2615 frame_highlight (f) | |
| 2616 struct frame *f; | |
| 2617 { | |
|
27402
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2618 x_update_cursor (f, 1); |
| 13434 | 2619 } |
| 2620 | |
| 2621 static void | |
| 2622 frame_unhighlight (f) | |
| 2623 struct frame *f; | |
| 2624 { | |
|
27402
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2625 x_update_cursor (f, 1); |
|
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2626 } |
|
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
2627 |
| 13434 | 2628 /* The focus has changed. Update the frames as necessary to reflect |
| 2629 the new situation. Note that we can't change the selected frame | |
| 2630 here, because the Lisp code we are interrupting might become confused. | |
| 2631 Each event gets marked with the frame in which it occurred, so the | |
| 2632 Lisp code can tell when the switch took place by examining the events. */ | |
| 2633 | |
|
29321
8e2be36bb1c6
Format and doc changes to bring closer to xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
28369
diff
changeset
|
2634 static void |
| 13434 | 2635 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
|
2636 struct w32_display_info *dpyinfo; |
| 13434 | 2637 struct frame *frame; |
| 2638 { | |
|
16588
481b7874a1e9
Change identifiers of the form win32* to w32*.
Geoff Voelker <voelker@cs.washington.edu>
parents:
16326
diff
changeset
|
2639 struct frame *old_focus = dpyinfo->w32_focus_frame; |
| 13434 | 2640 |
|
16588
481b7874a1e9
Change identifiers of the form win32* to w32*.
Geoff Voelker <voelker@cs.washington.edu>
parents:
16326
diff
changeset
|
2641 if (frame != dpyinfo->w32_focus_frame) |
| 13434 | 2642 { |
| 2643 /* 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
|
2644 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
|
2645 dpyinfo->w32_focus_frame = frame; |
| 13434 | 2646 |
| 2647 if (old_focus && old_focus->auto_lower) | |
| 2648 x_lower_frame (old_focus); | |
| 2649 | |
|
16588
481b7874a1e9
Change identifiers of the form win32* to w32*.
Geoff Voelker <voelker@cs.washington.edu>
parents:
16326
diff
changeset
|
2650 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
|
2651 pending_autoraise_frame = dpyinfo->w32_focus_frame; |
| 13434 | 2652 else |
| 2653 pending_autoraise_frame = 0; | |
| 2654 } | |
| 2655 | |
| 2656 x_frame_rehighlight (dpyinfo); | |
| 2657 } | |
| 2658 | |
|
60948
03a8b8b9ebef
(x_focus_changed, w32_detect_focus_change): New functions.
Jason Rumney <jasonr@gnu.org>
parents:
59748
diff
changeset
|
2659 |
|
03a8b8b9ebef
(x_focus_changed, w32_detect_focus_change): New functions.
Jason Rumney <jasonr@gnu.org>
parents:
59748
diff
changeset
|
2660 /* 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
|
2661 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
|
2662 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
|
2663 |
|
03a8b8b9ebef
(x_focus_changed, w32_detect_focus_change): New functions.
Jason Rumney <jasonr@gnu.org>
parents:
59748
diff
changeset
|
2664 static void |
|
03a8b8b9ebef
(x_focus_changed, w32_detect_focus_change): New functions.
Jason Rumney <jasonr@gnu.org>
parents:
59748
diff
changeset
|
2665 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
|
2666 int type; |
|
03a8b8b9ebef
(x_focus_changed, w32_detect_focus_change): New functions.
Jason Rumney <jasonr@gnu.org>
parents:
59748
diff
changeset
|
2667 int state; |
|
03a8b8b9ebef
(x_focus_changed, w32_detect_focus_change): New functions.
Jason Rumney <jasonr@gnu.org>
parents:
59748
diff
changeset
|
2668 struct w32_display_info *dpyinfo; |
|
03a8b8b9ebef
(x_focus_changed, w32_detect_focus_change): New functions.
Jason Rumney <jasonr@gnu.org>
parents:
59748
diff
changeset
|
2669 struct frame *frame; |
|
03a8b8b9ebef
(x_focus_changed, w32_detect_focus_change): New functions.
Jason Rumney <jasonr@gnu.org>
parents:
59748
diff
changeset
|
2670 struct input_event *bufp; |
|
03a8b8b9ebef
(x_focus_changed, w32_detect_focus_change): New functions.
Jason Rumney <jasonr@gnu.org>
parents:
59748
diff
changeset
|
2671 { |
|
03a8b8b9ebef
(x_focus_changed, w32_detect_focus_change): New functions.
Jason Rumney <jasonr@gnu.org>
parents:
59748
diff
changeset
|
2672 if (type == WM_SETFOCUS) |
|
03a8b8b9ebef
(x_focus_changed, w32_detect_focus_change): New functions.
Jason Rumney <jasonr@gnu.org>
parents:
59748
diff
changeset
|
2673 { |
|
03a8b8b9ebef
(x_focus_changed, w32_detect_focus_change): New functions.
Jason Rumney <jasonr@gnu.org>
parents:
59748
diff
changeset
|
2674 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
|
2675 { |
|
03a8b8b9ebef
(x_focus_changed, w32_detect_focus_change): New functions.
Jason Rumney <jasonr@gnu.org>
parents:
59748
diff
changeset
|
2676 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
|
2677 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
|
2678 |
|
03a8b8b9ebef
(x_focus_changed, w32_detect_focus_change): New functions.
Jason Rumney <jasonr@gnu.org>
parents:
59748
diff
changeset
|
2679 /* 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
|
2680 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
|
2681 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
|
2682 && CONSP (Vframe_list) |
|
3371fc48749b
Replace uses of GC_* macros with the non-GC_ versions.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
90923
diff
changeset
|
2683 && !NILP (XCDR (Vframe_list))) |
|
60948
03a8b8b9ebef
(x_focus_changed, w32_detect_focus_change): New functions.
Jason Rumney <jasonr@gnu.org>
parents:
59748
diff
changeset
|
2684 { |
|
03a8b8b9ebef
(x_focus_changed, w32_detect_focus_change): New functions.
Jason Rumney <jasonr@gnu.org>
parents:
59748
diff
changeset
|
2685 bufp->kind = FOCUS_IN_EVENT; |
|
03a8b8b9ebef
(x_focus_changed, w32_detect_focus_change): New functions.
Jason Rumney <jasonr@gnu.org>
parents:
59748
diff
changeset
|
2686 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
|
2687 } |
|
03a8b8b9ebef
(x_focus_changed, w32_detect_focus_change): New functions.
Jason Rumney <jasonr@gnu.org>
parents:
59748
diff
changeset
|
2688 } |
|
03a8b8b9ebef
(x_focus_changed, w32_detect_focus_change): New functions.
Jason Rumney <jasonr@gnu.org>
parents:
59748
diff
changeset
|
2689 |
|
03a8b8b9ebef
(x_focus_changed, w32_detect_focus_change): New functions.
Jason Rumney <jasonr@gnu.org>
parents:
59748
diff
changeset
|
2690 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
|
2691 |
|
03a8b8b9ebef
(x_focus_changed, w32_detect_focus_change): New functions.
Jason Rumney <jasonr@gnu.org>
parents:
59748
diff
changeset
|
2692 /* TODO: IME focus? */ |
|
03a8b8b9ebef
(x_focus_changed, w32_detect_focus_change): New functions.
Jason Rumney <jasonr@gnu.org>
parents:
59748
diff
changeset
|
2693 } |
|
03a8b8b9ebef
(x_focus_changed, w32_detect_focus_change): New functions.
Jason Rumney <jasonr@gnu.org>
parents:
59748
diff
changeset
|
2694 else if (type == WM_KILLFOCUS) |
|
03a8b8b9ebef
(x_focus_changed, w32_detect_focus_change): New functions.
Jason Rumney <jasonr@gnu.org>
parents:
59748
diff
changeset
|
2695 { |
|
03a8b8b9ebef
(x_focus_changed, w32_detect_focus_change): New functions.
Jason Rumney <jasonr@gnu.org>
parents:
59748
diff
changeset
|
2696 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
|
2697 |
|
03a8b8b9ebef
(x_focus_changed, w32_detect_focus_change): New functions.
Jason Rumney <jasonr@gnu.org>
parents:
59748
diff
changeset
|
2698 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
|
2699 { |
|
03a8b8b9ebef
(x_focus_changed, w32_detect_focus_change): New functions.
Jason Rumney <jasonr@gnu.org>
parents:
59748
diff
changeset
|
2700 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
|
2701 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
|
2702 } |
|
03a8b8b9ebef
(x_focus_changed, w32_detect_focus_change): New functions.
Jason Rumney <jasonr@gnu.org>
parents:
59748
diff
changeset
|
2703 |
|
03a8b8b9ebef
(x_focus_changed, w32_detect_focus_change): New functions.
Jason Rumney <jasonr@gnu.org>
parents:
59748
diff
changeset
|
2704 /* TODO: IME focus? */ |
|
03a8b8b9ebef
(x_focus_changed, w32_detect_focus_change): New functions.
Jason Rumney <jasonr@gnu.org>
parents:
59748
diff
changeset
|
2705 } |
|
03a8b8b9ebef
(x_focus_changed, w32_detect_focus_change): New functions.
Jason Rumney <jasonr@gnu.org>
parents:
59748
diff
changeset
|
2706 } |
|
03a8b8b9ebef
(x_focus_changed, w32_detect_focus_change): New functions.
Jason Rumney <jasonr@gnu.org>
parents:
59748
diff
changeset
|
2707 |
|
03a8b8b9ebef
(x_focus_changed, w32_detect_focus_change): New functions.
Jason Rumney <jasonr@gnu.org>
parents:
59748
diff
changeset
|
2708 |
|
03a8b8b9ebef
(x_focus_changed, w32_detect_focus_change): New functions.
Jason Rumney <jasonr@gnu.org>
parents:
59748
diff
changeset
|
2709 /* 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
|
2710 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
|
2711 |
|
03a8b8b9ebef
(x_focus_changed, w32_detect_focus_change): New functions.
Jason Rumney <jasonr@gnu.org>
parents:
59748
diff
changeset
|
2712 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
|
2713 |
|
03a8b8b9ebef
(x_focus_changed, w32_detect_focus_change): New functions.
Jason Rumney <jasonr@gnu.org>
parents:
59748
diff
changeset
|
2714 static void |
|
03a8b8b9ebef
(x_focus_changed, w32_detect_focus_change): New functions.
Jason Rumney <jasonr@gnu.org>
parents:
59748
diff
changeset
|
2715 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
|
2716 struct w32_display_info *dpyinfo; |
|
03a8b8b9ebef
(x_focus_changed, w32_detect_focus_change): New functions.
Jason Rumney <jasonr@gnu.org>
parents:
59748
diff
changeset
|
2717 W32Msg *event; |
|
03a8b8b9ebef
(x_focus_changed, w32_detect_focus_change): New functions.
Jason Rumney <jasonr@gnu.org>
parents:
59748
diff
changeset
|
2718 struct input_event *bufp; |
|
03a8b8b9ebef
(x_focus_changed, w32_detect_focus_change): New functions.
Jason Rumney <jasonr@gnu.org>
parents:
59748
diff
changeset
|
2719 { |
|
03a8b8b9ebef
(x_focus_changed, w32_detect_focus_change): New functions.
Jason Rumney <jasonr@gnu.org>
parents:
59748
diff
changeset
|
2720 struct frame *frame; |
|
03a8b8b9ebef
(x_focus_changed, w32_detect_focus_change): New functions.
Jason Rumney <jasonr@gnu.org>
parents:
59748
diff
changeset
|
2721 |
|
03a8b8b9ebef
(x_focus_changed, w32_detect_focus_change): New functions.
Jason Rumney <jasonr@gnu.org>
parents:
59748
diff
changeset
|
2722 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
|
2723 if (! frame) |
|
03a8b8b9ebef
(x_focus_changed, w32_detect_focus_change): New functions.
Jason Rumney <jasonr@gnu.org>
parents:
59748
diff
changeset
|
2724 return; |
|
03a8b8b9ebef
(x_focus_changed, w32_detect_focus_change): New functions.
Jason Rumney <jasonr@gnu.org>
parents:
59748
diff
changeset
|
2725 |
|
03a8b8b9ebef
(x_focus_changed, w32_detect_focus_change): New functions.
Jason Rumney <jasonr@gnu.org>
parents:
59748
diff
changeset
|
2726 /* 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
|
2727 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
|
2728 (event->msg.message == WM_KILLFOCUS ? |
|
03a8b8b9ebef
(x_focus_changed, w32_detect_focus_change): New functions.
Jason Rumney <jasonr@gnu.org>
parents:
59748
diff
changeset
|
2729 FOCUS_IMPLICIT : FOCUS_EXPLICIT), |
|
03a8b8b9ebef
(x_focus_changed, w32_detect_focus_change): New functions.
Jason Rumney <jasonr@gnu.org>
parents:
59748
diff
changeset
|
2730 dpyinfo, frame, bufp); |
|
03a8b8b9ebef
(x_focus_changed, w32_detect_focus_change): New functions.
Jason Rumney <jasonr@gnu.org>
parents:
59748
diff
changeset
|
2731 } |
|
03a8b8b9ebef
(x_focus_changed, w32_detect_focus_change): New functions.
Jason Rumney <jasonr@gnu.org>
parents:
59748
diff
changeset
|
2732 |
|
03a8b8b9ebef
(x_focus_changed, w32_detect_focus_change): New functions.
Jason Rumney <jasonr@gnu.org>
parents:
59748
diff
changeset
|
2733 |
| 13434 | 2734 /* Handle an event saying the mouse has moved out of an Emacs frame. */ |
| 2735 | |
| 2736 void | |
| 2737 x_mouse_leave (dpyinfo) | |
|
16588
481b7874a1e9
Change identifiers of the form win32* to w32*.
Geoff Voelker <voelker@cs.washington.edu>
parents:
16326
diff
changeset
|
2738 struct w32_display_info *dpyinfo; |
| 13434 | 2739 { |
|
16588
481b7874a1e9
Change identifiers of the form win32* to w32*.
Geoff Voelker <voelker@cs.washington.edu>
parents:
16326
diff
changeset
|
2740 x_new_focus_frame (dpyinfo, dpyinfo->w32_focus_event_frame); |
| 13434 | 2741 } |
| 2742 | |
| 2743 /* The focus has changed, or we have redirected a frame's focus to | |
| 2744 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
|
2745 mini-buffer frame). Shift the highlight as appropriate. |
| 13434 | 2746 |
| 2747 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
|
2748 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
|
2749 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
|
2750 |
| 13434 | 2751 static void |
|
16588
481b7874a1e9
Change identifiers of the form win32* to w32*.
Geoff Voelker <voelker@cs.washington.edu>
parents:
16326
diff
changeset
|
2752 w32_frame_rehighlight (frame) |
| 13434 | 2753 struct frame *frame; |
| 2754 { | |
| 35000 | 2755 if (! FRAME_W32_P (frame)) |
| 2756 return; | |
|
16588
481b7874a1e9
Change identifiers of the form win32* to w32*.
Geoff Voelker <voelker@cs.washington.edu>
parents:
16326
diff
changeset
|
2757 x_frame_rehighlight (FRAME_W32_DISPLAY_INFO (frame)); |
| 13434 | 2758 } |
| 2759 | |
| 2760 static void | |
| 2761 x_frame_rehighlight (dpyinfo) | |
|
16588
481b7874a1e9
Change identifiers of the form win32* to w32*.
Geoff Voelker <voelker@cs.washington.edu>
parents:
16326
diff
changeset
|
2762 struct w32_display_info *dpyinfo; |
| 13434 | 2763 { |
|
47148
be0335657440
Changed all occurrences of w32_highlight_frame with x_highlight_frame.
Kim F. Storm <storm@cua.dk>
parents:
47143
diff
changeset
|
2764 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
|
2765 |
|
481b7874a1e9
Change identifiers of the form win32* to w32*.
Geoff Voelker <voelker@cs.washington.edu>
parents:
16326
diff
changeset
|
2766 if (dpyinfo->w32_focus_frame) |
| 13434 | 2767 { |
|
47148
be0335657440
Changed all occurrences of w32_highlight_frame with x_highlight_frame.
Kim F. Storm <storm@cua.dk>
parents:
47143
diff
changeset
|
2768 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
|
2769 = ((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
|
2770 ? 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
|
2771 : 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
|
2772 if (! FRAME_LIVE_P (dpyinfo->x_highlight_frame)) |
| 13434 | 2773 { |
|
16588
481b7874a1e9
Change identifiers of the form win32* to w32*.
Geoff Voelker <voelker@cs.washington.edu>
parents:
16326
diff
changeset
|
2774 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
|
2775 dpyinfo->x_highlight_frame = dpyinfo->w32_focus_frame; |
| 13434 | 2776 } |
| 2777 } | |
| 2778 else | |
|
47148
be0335657440
Changed all occurrences of w32_highlight_frame with x_highlight_frame.
Kim F. Storm <storm@cua.dk>
parents:
47143
diff
changeset
|
2779 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
|
2780 |
|
be0335657440
Changed all occurrences of w32_highlight_frame with x_highlight_frame.
Kim F. Storm <storm@cua.dk>
parents:
47143
diff
changeset
|
2781 if (dpyinfo->x_highlight_frame != old_highlight) |
| 13434 | 2782 { |
| 2783 if (old_highlight) | |
| 2784 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
|
2785 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
|
2786 frame_highlight (dpyinfo->x_highlight_frame); |
| 13434 | 2787 } |
| 2788 } | |
| 2789 | |
| 2790 /* Keyboard processing - modifier keys, etc. */ | |
| 2791 | |
| 2792 /* Convert a keysym to its name. */ | |
| 2793 | |
| 2794 char * | |
| 2795 x_get_keysym_name (keysym) | |
| 2796 int keysym; | |
| 2797 { | |
| 2798 /* Make static so we can always return it */ | |
| 2799 static char value[100]; | |
| 2800 | |
| 2801 BLOCK_INPUT; | |
|
32022
1f26caa05cd7
(w32_char_font_type, w32_encode_char, x_produce_glyphs): Distinguish
Jason Rumney <jasonr@gnu.org>
parents:
31624
diff
changeset
|
2802 GetKeyNameText (keysym, value, 100); |
| 13434 | 2803 UNBLOCK_INPUT; |
| 2804 | |
| 2805 return value; | |
| 2806 } | |
|
29321
8e2be36bb1c6
Format and doc changes to bring closer to xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
28369
diff
changeset
|
2807 |
|
8e2be36bb1c6
Format and doc changes to bring closer to xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
28369
diff
changeset
|
2808 |
| 13434 | 2809 |
| 2810 /* Mouse clicks and mouse movement. Rah. */ | |
| 2811 | |
|
42720
1217a83a82e4
(parse_button): New parameter xbutton. Callers changed.
Jason Rumney <jasonr@gnu.org>
parents:
42675
diff
changeset
|
2812 /* 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
|
2813 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
|
2814 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
|
2815 BOOL |
|
42720
1217a83a82e4
(parse_button): New parameter xbutton. Callers changed.
Jason Rumney <jasonr@gnu.org>
parents:
42675
diff
changeset
|
2816 parse_button (message, xbutton, pbutton, pup) |
| 13434 | 2817 int message; |
|
42720
1217a83a82e4
(parse_button): New parameter xbutton. Callers changed.
Jason Rumney <jasonr@gnu.org>
parents:
42675
diff
changeset
|
2818 int xbutton; |
| 13434 | 2819 int * pbutton; |
| 2820 int * pup; | |
| 2821 { | |
| 2822 int button = 0; | |
| 2823 int up = 0; | |
|
48218
01e253345507
(w32_draw_fringe_bitmap): Remove unused local variable window.
Juanma Barranquero <lekktu@gmail.com>
parents:
48025
diff
changeset
|
2824 |
| 13434 | 2825 switch (message) |
| 2826 { | |
| 2827 case WM_LBUTTONDOWN: | |
| 2828 button = 0; | |
| 2829 up = 0; | |
| 2830 break; | |
| 2831 case WM_LBUTTONUP: | |
| 2832 button = 0; | |
| 2833 up = 1; | |
| 2834 break; | |
| 2835 case WM_MBUTTONDOWN: | |
|
16588
481b7874a1e9
Change identifiers of the form win32* to w32*.
Geoff Voelker <voelker@cs.washington.edu>
parents:
16326
diff
changeset
|
2836 if (NILP (Vw32_swap_mouse_buttons)) |
|
15151
ed6ddfc0d954
(Vwindow_system): Declared.
Geoff Voelker <voelker@cs.washington.edu>
parents:
15035
diff
changeset
|
2837 button = 1; |
|
ed6ddfc0d954
(Vwindow_system): Declared.
Geoff Voelker <voelker@cs.washington.edu>
parents:
15035
diff
changeset
|
2838 else |
|
ed6ddfc0d954
(Vwindow_system): Declared.
Geoff Voelker <voelker@cs.washington.edu>
parents:
15035
diff
changeset
|
2839 button = 2; |
| 13434 | 2840 up = 0; |
| 2841 break; | |
| 2842 case WM_MBUTTONUP: | |
|
16588
481b7874a1e9
Change identifiers of the form win32* to w32*.
Geoff Voelker <voelker@cs.washington.edu>
parents:
16326
diff
changeset
|
2843 if (NILP (Vw32_swap_mouse_buttons)) |
|
15151
ed6ddfc0d954
(Vwindow_system): Declared.
Geoff Voelker <voelker@cs.washington.edu>
parents:
15035
diff
changeset
|
2844 button = 1; |
|
ed6ddfc0d954
(Vwindow_system): Declared.
Geoff Voelker <voelker@cs.washington.edu>
parents:
15035
diff
changeset
|
2845 else |
|
ed6ddfc0d954
(Vwindow_system): Declared.
Geoff Voelker <voelker@cs.washington.edu>
parents:
15035
diff
changeset
|
2846 button = 2; |
| 13434 | 2847 up = 1; |
| 2848 break; | |
| 2849 case WM_RBUTTONDOWN: | |
|
16588
481b7874a1e9
Change identifiers of the form win32* to w32*.
Geoff Voelker <voelker@cs.washington.edu>
parents:
16326
diff
changeset
|
2850 if (NILP (Vw32_swap_mouse_buttons)) |
|
15151
ed6ddfc0d954
(Vwindow_system): Declared.
Geoff Voelker <voelker@cs.washington.edu>
parents:
15035
diff
changeset
|
2851 button = 2; |
|
ed6ddfc0d954
(Vwindow_system): Declared.
Geoff Voelker <voelker@cs.washington.edu>
parents:
15035
diff
changeset
|
2852 else |
|
ed6ddfc0d954
(Vwindow_system): Declared.
Geoff Voelker <voelker@cs.washington.edu>
parents:
15035
diff
changeset
|
2853 button = 1; |
| 13434 | 2854 up = 0; |
| 2855 break; | |
| 2856 case WM_RBUTTONUP: | |
|
16588
481b7874a1e9
Change identifiers of the form win32* to w32*.
Geoff Voelker <voelker@cs.washington.edu>
parents:
16326
diff
changeset
|
2857 if (NILP (Vw32_swap_mouse_buttons)) |
|
15151
ed6ddfc0d954
(Vwindow_system): Declared.
Geoff Voelker <voelker@cs.washington.edu>
parents:
15035
diff
changeset
|
2858 button = 2; |
|
ed6ddfc0d954
(Vwindow_system): Declared.
Geoff Voelker <voelker@cs.washington.edu>
parents:
15035
diff
changeset
|
2859 else |
|
ed6ddfc0d954
(Vwindow_system): Declared.
Geoff Voelker <voelker@cs.washington.edu>
parents:
15035
diff
changeset
|
2860 button = 1; |
| 13434 | 2861 up = 1; |
| 2862 break; | |
|
42720
1217a83a82e4
(parse_button): New parameter xbutton. Callers changed.
Jason Rumney <jasonr@gnu.org>
parents:
42675
diff
changeset
|
2863 case WM_XBUTTONDOWN: |
|
1217a83a82e4
(parse_button): New parameter xbutton. Callers changed.
Jason Rumney <jasonr@gnu.org>
parents:
42675
diff
changeset
|
2864 button = xbutton + 2; |
|
1217a83a82e4
(parse_button): New parameter xbutton. Callers changed.
Jason Rumney <jasonr@gnu.org>
parents:
42675
diff
changeset
|
2865 up = 0; |
|
1217a83a82e4
(parse_button): New parameter xbutton. Callers changed.
Jason Rumney <jasonr@gnu.org>
parents:
42675
diff
changeset
|
2866 break; |
|
1217a83a82e4
(parse_button): New parameter xbutton. Callers changed.
Jason Rumney <jasonr@gnu.org>
parents:
42675
diff
changeset
|
2867 case WM_XBUTTONUP: |
|
1217a83a82e4
(parse_button): New parameter xbutton. Callers changed.
Jason Rumney <jasonr@gnu.org>
parents:
42675
diff
changeset
|
2868 button = xbutton + 2; |
|
1217a83a82e4
(parse_button): New parameter xbutton. Callers changed.
Jason Rumney <jasonr@gnu.org>
parents:
42675
diff
changeset
|
2869 up = 1; |
|
1217a83a82e4
(parse_button): New parameter xbutton. Callers changed.
Jason Rumney <jasonr@gnu.org>
parents:
42675
diff
changeset
|
2870 break; |
| 13434 | 2871 default: |
| 2872 return (FALSE); | |
| 2873 } | |
|
48218
01e253345507
(w32_draw_fringe_bitmap): Remove unused local variable window.
Juanma Barranquero <lekktu@gmail.com>
parents:
48025
diff
changeset
|
2874 |
| 13434 | 2875 if (pup) *pup = up; |
| 2876 if (pbutton) *pbutton = button; | |
|
48218
01e253345507
(w32_draw_fringe_bitmap): Remove unused local variable window.
Juanma Barranquero <lekktu@gmail.com>
parents:
48025
diff
changeset
|
2877 |
| 13434 | 2878 return (TRUE); |
| 2879 } | |
| 2880 | |
| 2881 | |
| 2882 /* Prepare a mouse-event in *RESULT for placement in the input queue. | |
| 2883 | |
| 2884 If the event is a button press, then note that we have grabbed | |
| 2885 the mouse. */ | |
| 2886 | |
|
30240
2c2a7ebd2c15
(help_echo_object, help_echo_pos): New variables.
Jason Rumney <jasonr@gnu.org>
parents:
30199
diff
changeset
|
2887 static Lisp_Object |
| 13434 | 2888 construct_mouse_click (result, msg, f) |
| 2889 struct input_event *result; | |
|
16588
481b7874a1e9
Change identifiers of the form win32* to w32*.
Geoff Voelker <voelker@cs.washington.edu>
parents:
16326
diff
changeset
|
2890 W32Msg *msg; |
| 13434 | 2891 struct frame *f; |
| 2892 { | |
| 2893 int button; | |
| 2894 int up; | |
| 2895 | |
|
42720
1217a83a82e4
(parse_button): New parameter xbutton. Callers changed.
Jason Rumney <jasonr@gnu.org>
parents:
42675
diff
changeset
|
2896 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
|
2897 &button, &up); |
| 13434 | 2898 |
|
45803
9484de301252
Rename enum event_kind items.
Pavel Jan?k <Pavel@Janik.cz>
parents:
45507
diff
changeset
|
2899 /* Make the event type NO_EVENT; we'll change that when we decide |
| 13434 | 2900 otherwise. */ |
|
45803
9484de301252
Rename enum event_kind items.
Pavel Jan?k <Pavel@Janik.cz>
parents:
45507
diff
changeset
|
2901 result->kind = MOUSE_CLICK_EVENT; |
| 13434 | 2902 result->code = button; |
| 2903 result->timestamp = msg->msg.time; | |
| 2904 result->modifiers = (msg->dwModifiers | |
| 2905 | (up | |
| 2906 ? up_modifier | |
| 2907 : down_modifier)); | |
| 2908 | |
|
30240
2c2a7ebd2c15
(help_echo_object, help_echo_pos): New variables.
Jason Rumney <jasonr@gnu.org>
parents:
30199
diff
changeset
|
2909 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
|
2910 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
|
2911 XSETFRAME (result->frame_or_window, f); |
|
2c2a7ebd2c15
(help_echo_object, help_echo_pos): New variables.
Jason Rumney <jasonr@gnu.org>
parents:
30199
diff
changeset
|
2912 result->arg = Qnil; |
|
2c2a7ebd2c15
(help_echo_object, help_echo_pos): New variables.
Jason Rumney <jasonr@gnu.org>
parents:
30199
diff
changeset
|
2913 return Qnil; |
|
2c2a7ebd2c15
(help_echo_object, help_echo_pos): New variables.
Jason Rumney <jasonr@gnu.org>
parents:
30199
diff
changeset
|
2914 } |
|
2c2a7ebd2c15
(help_echo_object, help_echo_pos): New variables.
Jason Rumney <jasonr@gnu.org>
parents:
30199
diff
changeset
|
2915 |
|
2c2a7ebd2c15
(help_echo_object, help_echo_pos): New variables.
Jason Rumney <jasonr@gnu.org>
parents:
30199
diff
changeset
|
2916 static Lisp_Object |
|
19713
043ccce224fb
(SIF_*): Win95 macros defined for NT.
Geoff Voelker <voelker@cs.washington.edu>
parents:
18877
diff
changeset
|
2917 construct_mouse_wheel (result, msg, f) |
|
043ccce224fb
(SIF_*): Win95 macros defined for NT.
Geoff Voelker <voelker@cs.washington.edu>
parents:
18877
diff
changeset
|
2918 struct input_event *result; |
|
043ccce224fb
(SIF_*): Win95 macros defined for NT.
Geoff Voelker <voelker@cs.washington.edu>
parents:
18877
diff
changeset
|
2919 W32Msg *msg; |
|
043ccce224fb
(SIF_*): Win95 macros defined for NT.
Geoff Voelker <voelker@cs.washington.edu>
parents:
18877
diff
changeset
|
2920 struct frame *f; |
|
043ccce224fb
(SIF_*): Win95 macros defined for NT.
Geoff Voelker <voelker@cs.washington.edu>
parents:
18877
diff
changeset
|
2921 { |
|
043ccce224fb
(SIF_*): Win95 macros defined for NT.
Geoff Voelker <voelker@cs.washington.edu>
parents:
18877
diff
changeset
|
2922 POINT p; |
|
51382
e099ac71bd76
(construct_mouse_wheel): Construct WHEEL_EVENT.
Jason Rumney <jasonr@gnu.org>
parents:
51270
diff
changeset
|
2923 int delta; |
|
e099ac71bd76
(construct_mouse_wheel): Construct WHEEL_EVENT.
Jason Rumney <jasonr@gnu.org>
parents:
51270
diff
changeset
|
2924 |
|
83876
37f582a71062
Support for horizontal scroll wheels on some mice:
Jason Rumney <jasonr@gnu.org>
parents:
83652
diff
changeset
|
2925 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
|
2926 : WHEEL_EVENT; |
|
51382
e099ac71bd76
(construct_mouse_wheel): Construct WHEEL_EVENT.
Jason Rumney <jasonr@gnu.org>
parents:
51270
diff
changeset
|
2927 result->code = 0; |
|
19713
043ccce224fb
(SIF_*): Win95 macros defined for NT.
Geoff Voelker <voelker@cs.washington.edu>
parents:
18877
diff
changeset
|
2928 result->timestamp = msg->msg.time; |
|
51382
e099ac71bd76
(construct_mouse_wheel): Construct WHEEL_EVENT.
Jason Rumney <jasonr@gnu.org>
parents:
51270
diff
changeset
|
2929 |
|
e099ac71bd76
(construct_mouse_wheel): Construct WHEEL_EVENT.
Jason Rumney <jasonr@gnu.org>
parents:
51270
diff
changeset
|
2930 /* 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
|
2931 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
|
2932 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
|
2933 delta = GET_WHEEL_DELTA_WPARAM (msg->msg.wParam); |
|
e099ac71bd76
(construct_mouse_wheel): Construct WHEEL_EVENT.
Jason Rumney <jasonr@gnu.org>
parents:
51270
diff
changeset
|
2934 |
|
e099ac71bd76
(construct_mouse_wheel): Construct WHEEL_EVENT.
Jason Rumney <jasonr@gnu.org>
parents:
51270
diff
changeset
|
2935 /* 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
|
2936 down based on WHEEL_DELTA value. */ |
|
e099ac71bd76
(construct_mouse_wheel): Construct WHEEL_EVENT.
Jason Rumney <jasonr@gnu.org>
parents:
51270
diff
changeset
|
2937 result->modifiers = (msg->dwModifiers |
|
e099ac71bd76
(construct_mouse_wheel): Construct WHEEL_EVENT.
Jason Rumney <jasonr@gnu.org>
parents:
51270
diff
changeset
|
2938 | ((delta < 0 ) ? down_modifier : up_modifier)); |
|
e099ac71bd76
(construct_mouse_wheel): Construct WHEEL_EVENT.
Jason Rumney <jasonr@gnu.org>
parents:
51270
diff
changeset
|
2939 |
|
70234
4282b2a1849b
(construct_mouse_wheel): Handle negative coordinates.
Jason Rumney <jasonr@gnu.org>
parents:
69662
diff
changeset
|
2940 /* With multiple monitors, we can legitimately get negative |
|
4282b2a1849b
(construct_mouse_wheel): Handle negative coordinates.
Jason Rumney <jasonr@gnu.org>
parents:
69662
diff
changeset
|
2941 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
|
2942 p.x = (short) LOWORD (msg->msg.lParam); |
|
4282b2a1849b
(construct_mouse_wheel): Handle negative coordinates.
Jason Rumney <jasonr@gnu.org>
parents:
69662
diff
changeset
|
2943 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
|
2944 ScreenToClient (msg->msg.hwnd, &p); |
|
19713
043ccce224fb
(SIF_*): Win95 macros defined for NT.
Geoff Voelker <voelker@cs.washington.edu>
parents:
18877
diff
changeset
|
2945 XSETINT (result->x, p.x); |
|
043ccce224fb
(SIF_*): Win95 macros defined for NT.
Geoff Voelker <voelker@cs.washington.edu>
parents:
18877
diff
changeset
|
2946 XSETINT (result->y, p.y); |
|
043ccce224fb
(SIF_*): Win95 macros defined for NT.
Geoff Voelker <voelker@cs.washington.edu>
parents:
18877
diff
changeset
|
2947 XSETFRAME (result->frame_or_window, f); |
|
30199
298f10cd4ba5
(construct_mouse_click, construct_mouse_wheel)
Gerd Moellmann <gerd@gnu.org>
parents:
30179
diff
changeset
|
2948 result->arg = Qnil; |
|
30240
2c2a7ebd2c15
(help_echo_object, help_echo_pos): New variables.
Jason Rumney <jasonr@gnu.org>
parents:
30199
diff
changeset
|
2949 return Qnil; |
|
2c2a7ebd2c15
(help_echo_object, help_echo_pos): New variables.
Jason Rumney <jasonr@gnu.org>
parents:
30199
diff
changeset
|
2950 } |
|
2c2a7ebd2c15
(help_echo_object, help_echo_pos): New variables.
Jason Rumney <jasonr@gnu.org>
parents:
30199
diff
changeset
|
2951 |
|
2c2a7ebd2c15
(help_echo_object, help_echo_pos): New variables.
Jason Rumney <jasonr@gnu.org>
parents:
30199
diff
changeset
|
2952 static Lisp_Object |
| 21885 | 2953 construct_drag_n_drop (result, msg, f) |
| 2954 struct input_event *result; | |
| 2955 W32Msg *msg; | |
| 2956 struct frame *f; | |
| 2957 { | |
| 2958 Lisp_Object files; | |
| 2959 Lisp_Object frame; | |
| 2960 HDROP hdrop; | |
| 2961 POINT p; | |
| 2962 WORD num_files; | |
| 2963 char *name; | |
| 2964 int i, len; | |
| 2965 | |
|
45803
9484de301252
Rename enum event_kind items.
Pavel Jan?k <Pavel@Janik.cz>
parents:
45507
diff
changeset
|
2966 result->kind = DRAG_N_DROP_EVENT; |
| 21885 | 2967 result->code = 0; |
| 2968 result->timestamp = msg->msg.time; | |
| 2969 result->modifiers = msg->dwModifiers; | |
| 2970 | |
|
24265
c5f1a1deffbb
(construct_drag_n_drop): Call DraqQueryPoint before
Andrew Innes <andrewi@gnu.org>
parents:
24146
diff
changeset
|
2971 hdrop = (HDROP) msg->msg.wParam; |
|
c5f1a1deffbb
(construct_drag_n_drop): Call DraqQueryPoint before
Andrew Innes <andrewi@gnu.org>
parents:
24146
diff
changeset
|
2972 DragQueryPoint (hdrop, &p); |
|
c5f1a1deffbb
(construct_drag_n_drop): Call DraqQueryPoint before
Andrew Innes <andrewi@gnu.org>
parents:
24146
diff
changeset
|
2973 |
| 24674 | 2974 #if 0 |
| 21885 | 2975 p.x = LOWORD (msg->msg.lParam); |
| 2976 p.y = HIWORD (msg->msg.lParam); | |
| 2977 ScreenToClient (msg->msg.hwnd, &p); | |
| 24674 | 2978 #endif |
| 2979 | |
| 21885 | 2980 XSETINT (result->x, p.x); |
| 2981 XSETINT (result->y, p.y); | |
| 2982 | |
| 2983 num_files = DragQueryFile (hdrop, 0xFFFFFFFF, NULL, 0); | |
| 2984 files = Qnil; | |
| 2985 | |
| 2986 for (i = 0; i < num_files; i++) | |
| 2987 { | |
| 2988 len = DragQueryFile (hdrop, i, NULL, 0); | |
| 2989 if (len <= 0) | |
| 2990 continue; | |
| 2991 name = alloca (len + 1); | |
| 2992 DragQueryFile (hdrop, i, name, len + 1); | |
|
44641
3afb0684cbc2
(construct_drag_n_drop): Likewise.
Jason Rumney <jasonr@gnu.org>
parents:
44359
diff
changeset
|
2993 files = Fcons (DECODE_FILE (build_string (name)), files); |
| 21885 | 2994 } |
| 2995 | |
| 2996 DragFinish (hdrop); | |
| 2997 | |
| 2998 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
|
2999 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
|
3000 result->arg = files; |
|
30240
2c2a7ebd2c15
(help_echo_object, help_echo_pos): New variables.
Jason Rumney <jasonr@gnu.org>
parents:
30199
diff
changeset
|
3001 return Qnil; |
| 21885 | 3002 } |
| 3003 | |
| 13434 | 3004 |
| 3005 /* Function to report a mouse movement to the mainstream Emacs code. | |
| 3006 The input handler calls this. | |
| 3007 | |
| 3008 We have received a mouse movement event, which is given in *event. | |
| 3009 If the mouse is over a different glyph than it was last time, tell | |
| 3010 the mainstream emacs code by setting mouse_moved. If not, ask for | |
| 3011 another motion event, so we can check again the next time it moves. */ | |
| 3012 | |
|
27402
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
3013 static MSG last_mouse_motion_event; |
|
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
3014 static Lisp_Object last_mouse_motion_frame; |
|
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
3015 |
|
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
|
3016 static int |
| 13434 | 3017 note_mouse_movement (frame, msg) |
| 3018 FRAME_PTR frame; | |
| 3019 MSG *msg; | |
| 3020 { | |
|
40137
5f0d7d58283b
(remember_mouse_glyph): New function.
Jason Rumney <jasonr@gnu.org>
parents:
40078
diff
changeset
|
3021 int mouse_x = LOWORD (msg->lParam); |
|
5f0d7d58283b
(remember_mouse_glyph): New function.
Jason Rumney <jasonr@gnu.org>
parents:
40078
diff
changeset
|
3022 int mouse_y = HIWORD (msg->lParam); |
|
5f0d7d58283b
(remember_mouse_glyph): New function.
Jason Rumney <jasonr@gnu.org>
parents:
40078
diff
changeset
|
3023 |
| 13434 | 3024 last_mouse_movement_time = msg->time; |
|
27402
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
3025 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
|
3026 XSETFRAME (last_mouse_motion_frame, frame); |
| 13434 | 3027 |
| 90834 | 3028 if (!FRAME_X_OUTPUT (frame)) |
| 3029 return 0; | |
| 3030 | |
|
16588
481b7874a1e9
Change identifiers of the form win32* to w32*.
Geoff Voelker <voelker@cs.washington.edu>
parents:
16326
diff
changeset
|
3031 if (msg->hwnd != FRAME_W32_WINDOW (frame)) |
| 13434 | 3032 { |
| 3033 frame->mouse_moved = 1; | |
| 3034 last_mouse_scroll_bar = Qnil; | |
| 3035 note_mouse_highlight (frame, -1, -1); | |
|
69441
eb7a171cafae
Sync 2005-10-24 xterm.c changes.
Jason Rumney <jasonr@gnu.org>
parents:
69401
diff
changeset
|
3036 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
|
3037 return 1; |
| 13434 | 3038 } |
| 3039 | |
| 3040 /* 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
|
3041 if (frame != last_mouse_glyph_frame |
|
eb7a171cafae
Sync 2005-10-24 xterm.c changes.
Jason Rumney <jasonr@gnu.org>
parents:
69401
diff
changeset
|
3042 || 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
|
3043 || 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
|
3044 || 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
|
3045 || mouse_y >= last_mouse_glyph.bottom) |
| 13434 | 3046 { |
| 3047 frame->mouse_moved = 1; | |
| 3048 last_mouse_scroll_bar = Qnil; | |
|
40137
5f0d7d58283b
(remember_mouse_glyph): New function.
Jason Rumney <jasonr@gnu.org>
parents:
40078
diff
changeset
|
3049 note_mouse_highlight (frame, mouse_x, mouse_y); |
|
5f0d7d58283b
(remember_mouse_glyph): New function.
Jason Rumney <jasonr@gnu.org>
parents:
40078
diff
changeset
|
3050 /* 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
|
3051 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
|
3052 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
|
3053 other times. */ |
|
66034
d1a8711a8c3a
(note_mouse_movement): Fix last_mouse_glyph check.
Kim F. Storm <storm@cua.dk>
parents:
65892
diff
changeset
|
3054 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
|
3055 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
|
3056 return 1; |
| 13434 | 3057 } |
|
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
|
3058 |
|
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
|
3059 return 0; |
| 13434 | 3060 } |
| 3061 | |
|
27402
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
3062 |
|
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
3063 /************************************************************************ |
|
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
3064 Mouse Face |
|
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
3065 ************************************************************************/ |
|
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
3066 |
|
50231
c8ea5e4b2129
* w32term.c: Remove consolidated defines and code.
Kim F. Storm <storm@cua.dk>
parents:
50163
diff
changeset
|
3067 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
|
3068 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
|
3069 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
|
3070 |
|
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
3071 static void |
|
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
3072 redo_mouse_highlight () |
|
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
3073 { |
|
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
3074 if (!NILP (last_mouse_motion_frame) |
|
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
3075 && FRAME_LIVE_P (XFRAME (last_mouse_motion_frame))) |
|
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
3076 note_mouse_highlight (XFRAME (last_mouse_motion_frame), |
|
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
3077 LOWORD (last_mouse_motion_event.lParam), |
|
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
3078 HIWORD (last_mouse_motion_event.lParam)); |
|
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
3079 } |
|
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
3080 |
|
81493
e7dfb7cb2088
(w32_delete_display): Remove leftover declaration.
Juanma Barranquero <lekktu@gmail.com>
parents:
76022
diff
changeset
|
3081 static void |
|
49371
c73ce11bb264
2003-01-21 KOBAYASHI Yasuhiro <kobayays@otsukakj.co.jp>
Jason Rumney <jasonr@gnu.org>
parents:
48888
diff
changeset
|
3082 w32_define_cursor (window, cursor) |
|
c73ce11bb264
2003-01-21 KOBAYASHI Yasuhiro <kobayays@otsukakj.co.jp>
Jason Rumney <jasonr@gnu.org>
parents:
48888
diff
changeset
|
3083 Window window; |
|
c73ce11bb264
2003-01-21 KOBAYASHI Yasuhiro <kobayays@otsukakj.co.jp>
Jason Rumney <jasonr@gnu.org>
parents:
48888
diff
changeset
|
3084 Cursor cursor; |
|
c73ce11bb264
2003-01-21 KOBAYASHI Yasuhiro <kobayays@otsukakj.co.jp>
Jason Rumney <jasonr@gnu.org>
parents:
48888
diff
changeset
|
3085 { |
|
c73ce11bb264
2003-01-21 KOBAYASHI Yasuhiro <kobayays@otsukakj.co.jp>
Jason Rumney <jasonr@gnu.org>
parents:
48888
diff
changeset
|
3086 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
|
3087 } |
| 13434 | 3088 /* Return the current position of the mouse. |
| 3089 *fp should be a frame which indicates which display to ask about. | |
| 3090 | |
| 3091 If the mouse movement started in a scroll bar, set *fp, *bar_window, | |
| 3092 and *part to the frame, window, and scroll bar part that the mouse | |
| 3093 is over. Set *x and *y to the portion and whole of the mouse's | |
| 3094 position on the scroll bar. | |
| 3095 | |
| 3096 If the mouse movement started elsewhere, set *fp to the frame the | |
| 3097 mouse is on, *bar_window to nil, and *x and *y to the character cell | |
| 3098 the mouse is over. | |
| 3099 | |
|
29321
8e2be36bb1c6
Format and doc changes to bring closer to xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
28369
diff
changeset
|
3100 Set *time to the server time-stamp for the time at which the mouse |
| 13434 | 3101 was at this position. |
| 3102 | |
| 3103 Don't store anything if we don't have a valid set of values to report. | |
| 3104 | |
| 3105 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
|
3106 movement. */ |
| 13434 | 3107 |
| 3108 static void | |
|
16588
481b7874a1e9
Change identifiers of the form win32* to w32*.
Geoff Voelker <voelker@cs.washington.edu>
parents:
16326
diff
changeset
|
3109 w32_mouse_position (fp, insist, bar_window, part, x, y, time) |
| 13434 | 3110 FRAME_PTR *fp; |
| 3111 int insist; | |
| 3112 Lisp_Object *bar_window; | |
| 3113 enum scroll_bar_part *part; | |
| 3114 Lisp_Object *x, *y; | |
| 3115 unsigned long *time; | |
| 3116 { | |
| 3117 FRAME_PTR f1; | |
| 3118 | |
| 3119 BLOCK_INPUT; | |
| 3120 | |
|
20179
b4fe0e8ac819
(w32_mouse_position): Handle INSIST < 0.
Karl Heuer <kwzh@gnu.org>
parents:
19713
diff
changeset
|
3121 if (! NILP (last_mouse_scroll_bar) && insist == 0) |
| 13434 | 3122 x_scroll_bar_report_motion (fp, bar_window, part, x, y, time); |
| 3123 else | |
| 3124 { | |
| 3125 POINT pt; | |
| 3126 | |
| 3127 Lisp_Object frame, tail; | |
| 3128 | |
| 3129 /* Clear the mouse-moved flag for every frame on this display. */ | |
| 3130 FOR_EACH_FRAME (tail, frame) | |
| 3131 XFRAME (frame)->mouse_moved = 0; | |
| 3132 | |
| 3133 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
|
3134 |
| 13434 | 3135 GetCursorPos (&pt); |
| 3136 | |
| 3137 /* Now we have a position on the root; find the innermost window | |
| 3138 containing the pointer. */ | |
| 3139 { | |
|
16588
481b7874a1e9
Change identifiers of the form win32* to w32*.
Geoff Voelker <voelker@cs.washington.edu>
parents:
16326
diff
changeset
|
3140 if (FRAME_W32_DISPLAY_INFO (*fp)->grabbed && last_mouse_frame |
| 13434 | 3141 && FRAME_LIVE_P (last_mouse_frame)) |
| 3142 { | |
|
24752
80c46fd667da
(w32_read_socket): Reset the grabbed flag when a frame gains or
Andrew Innes <andrewi@gnu.org>
parents:
24733
diff
changeset
|
3143 /* 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
|
3144 even if the mouse is now outside it. */ |
| 13434 | 3145 f1 = last_mouse_frame; |
| 3146 } | |
| 3147 else | |
| 3148 { | |
|
24752
80c46fd667da
(w32_read_socket): Reset the grabbed flag when a frame gains or
Andrew Innes <andrewi@gnu.org>
parents:
24733
diff
changeset
|
3149 /* Is window under mouse one of our frames? */ |
|
40137
5f0d7d58283b
(remember_mouse_glyph): New function.
Jason Rumney <jasonr@gnu.org>
parents:
40078
diff
changeset
|
3150 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
|
3151 WindowFromPoint (pt)); |
| 13434 | 3152 } |
| 3153 | |
| 3154 /* If not, is it one of our scroll bars? */ | |
| 3155 if (! f1) | |
| 3156 { | |
|
32022
1f26caa05cd7
(w32_char_font_type, w32_encode_char, x_produce_glyphs): Distinguish
Jason Rumney <jasonr@gnu.org>
parents:
31624
diff
changeset
|
3157 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
|
3158 = x_window_to_scroll_bar (WindowFromPoint (pt)); |
| 13434 | 3159 |
| 3160 if (bar) | |
| 3161 { | |
| 3162 f1 = XFRAME (WINDOW_FRAME (XWINDOW (bar->window))); | |
| 3163 } | |
| 3164 } | |
| 3165 | |
|
20179
b4fe0e8ac819
(w32_mouse_position): Handle INSIST < 0.
Karl Heuer <kwzh@gnu.org>
parents:
19713
diff
changeset
|
3166 if (f1 == 0 && insist > 0) |
|
27402
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
3167 f1 = SELECTED_FRAME (); |
| 13434 | 3168 |
| 3169 if (f1) | |
| 3170 { | |
|
27402
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
3171 /* 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
|
3172 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
|
3173 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
|
3174 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
|
3175 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
|
3176 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
|
3177 the frame are divided into. */ |
|
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
3178 |
|
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
3179 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
|
3180 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
|
3181 last_mouse_glyph_frame = f1; |
| 13434 | 3182 |
| 3183 *bar_window = Qnil; | |
| 3184 *part = 0; | |
| 3185 *fp = f1; | |
| 3186 XSETINT (*x, pt.x); | |
| 3187 XSETINT (*y, pt.y); | |
| 3188 *time = last_mouse_movement_time; | |
| 3189 } | |
| 3190 } | |
| 3191 } | |
| 3192 | |
| 3193 UNBLOCK_INPUT; | |
| 3194 } | |
|
27402
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
3195 |
| 13434 | 3196 |
|
50231
c8ea5e4b2129
* w32term.c: Remove consolidated defines and code.
Kim F. Storm <storm@cua.dk>
parents:
50163
diff
changeset
|
3197 /*********************************************************************** |
|
c8ea5e4b2129
* w32term.c: Remove consolidated defines and code.
Kim F. Storm <storm@cua.dk>
parents:
50163
diff
changeset
|
3198 Tool-bars |
|
c8ea5e4b2129
* w32term.c: Remove consolidated defines and code.
Kim F. Storm <storm@cua.dk>
parents:
50163
diff
changeset
|
3199 ***********************************************************************/ |
|
c8ea5e4b2129
* w32term.c: Remove consolidated defines and code.
Kim F. Storm <storm@cua.dk>
parents:
50163
diff
changeset
|
3200 |
|
c8ea5e4b2129
* w32term.c: Remove consolidated defines and code.
Kim F. Storm <storm@cua.dk>
parents:
50163
diff
changeset
|
3201 /* 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
|
3202 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
|
3203 or ButtonRelase. */ |
|
c8ea5e4b2129
* w32term.c: Remove consolidated defines and code.
Kim F. Storm <storm@cua.dk>
parents:
50163
diff
changeset
|
3204 |
|
c8ea5e4b2129
* w32term.c: Remove consolidated defines and code.
Kim F. Storm <storm@cua.dk>
parents:
50163
diff
changeset
|
3205 static void |
|
c8ea5e4b2129
* w32term.c: Remove consolidated defines and code.
Kim F. Storm <storm@cua.dk>
parents:
50163
diff
changeset
|
3206 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
|
3207 struct frame *f; |
|
c8ea5e4b2129
* w32term.c: Remove consolidated defines and code.
Kim F. Storm <storm@cua.dk>
parents:
50163
diff
changeset
|
3208 struct input_event *button_event; |
|
c8ea5e4b2129
* w32term.c: Remove consolidated defines and code.
Kim F. Storm <storm@cua.dk>
parents:
50163
diff
changeset
|
3209 { |
|
c8ea5e4b2129
* w32term.c: Remove consolidated defines and code.
Kim F. Storm <storm@cua.dk>
parents:
50163
diff
changeset
|
3210 int x = XFASTINT (button_event->x); |
|
c8ea5e4b2129
* w32term.c: Remove consolidated defines and code.
Kim F. Storm <storm@cua.dk>
parents:
50163
diff
changeset
|
3211 int y = XFASTINT (button_event->y); |
|
c8ea5e4b2129
* w32term.c: Remove consolidated defines and code.
Kim F. Storm <storm@cua.dk>
parents:
50163
diff
changeset
|
3212 |
|
c8ea5e4b2129
* w32term.c: Remove consolidated defines and code.
Kim F. Storm <storm@cua.dk>
parents:
50163
diff
changeset
|
3213 if (button_event->modifiers & down_modifier) |
|
c8ea5e4b2129
* w32term.c: Remove consolidated defines and code.
Kim F. Storm <storm@cua.dk>
parents:
50163
diff
changeset
|
3214 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
|
3215 else |
|
c8ea5e4b2129
* w32term.c: Remove consolidated defines and code.
Kim F. Storm <storm@cua.dk>
parents:
50163
diff
changeset
|
3216 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
|
3217 button_event->modifiers & ~up_modifier); |
|
c8ea5e4b2129
* w32term.c: Remove consolidated defines and code.
Kim F. Storm <storm@cua.dk>
parents:
50163
diff
changeset
|
3218 } |
|
c8ea5e4b2129
* w32term.c: Remove consolidated defines and code.
Kim F. Storm <storm@cua.dk>
parents:
50163
diff
changeset
|
3219 |
|
c8ea5e4b2129
* w32term.c: Remove consolidated defines and code.
Kim F. Storm <storm@cua.dk>
parents:
50163
diff
changeset
|
3220 |
|
c8ea5e4b2129
* w32term.c: Remove consolidated defines and code.
Kim F. Storm <storm@cua.dk>
parents:
50163
diff
changeset
|
3221 |
|
c8ea5e4b2129
* w32term.c: Remove consolidated defines and code.
Kim F. Storm <storm@cua.dk>
parents:
50163
diff
changeset
|
3222 /*********************************************************************** |
|
c8ea5e4b2129
* w32term.c: Remove consolidated defines and code.
Kim F. Storm <storm@cua.dk>
parents:
50163
diff
changeset
|
3223 Scroll bars |
|
c8ea5e4b2129
* w32term.c: Remove consolidated defines and code.
Kim F. Storm <storm@cua.dk>
parents:
50163
diff
changeset
|
3224 ***********************************************************************/ |
|
c8ea5e4b2129
* w32term.c: Remove consolidated defines and code.
Kim F. Storm <storm@cua.dk>
parents:
50163
diff
changeset
|
3225 |
| 13434 | 3226 /* Scroll bar support. */ |
| 3227 | |
|
30240
2c2a7ebd2c15
(help_echo_object, help_echo_pos): New variables.
Jason Rumney <jasonr@gnu.org>
parents:
30199
diff
changeset
|
3228 /* Given a window ID, find the struct scroll_bar which manages it. |
| 13434 | 3229 This can be called in GC, so we have to make sure to strip off mark |
| 3230 bits. */ | |
|
29321
8e2be36bb1c6
Format and doc changes to bring closer to xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
28369
diff
changeset
|
3231 |
|
8e2be36bb1c6
Format and doc changes to bring closer to xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
28369
diff
changeset
|
3232 static struct scroll_bar * |
| 13434 | 3233 x_window_to_scroll_bar (window_id) |
| 3234 Window window_id; | |
| 3235 { | |
|
27402
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
3236 Lisp_Object tail; |
| 13434 | 3237 |
|
90970
3371fc48749b
Replace uses of GC_* macros with the non-GC_ versions.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
90923
diff
changeset
|
3238 for (tail = Vframe_list; CONSP (tail); tail = XCDR (tail)) |
| 13434 | 3239 { |
| 3240 Lisp_Object frame, bar, condemned; | |
| 3241 | |
|
25646
9154af188477
Use XCAR and XCDR instead of explicit member references.
Ken Raeburn <raeburn@raeburn.org>
parents:
25236
diff
changeset
|
3242 frame = XCAR (tail); |
| 13434 | 3243 /* 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
|
3244 if (! FRAMEP (frame)) |
| 13434 | 3245 abort (); |
| 3246 | |
| 3247 /* Scan this frame's scroll bar list for a scroll bar with the | |
| 3248 right window ID. */ | |
| 3249 condemned = FRAME_CONDEMNED_SCROLL_BARS (XFRAME (frame)); | |
| 3250 for (bar = FRAME_SCROLL_BARS (XFRAME (frame)); | |
| 3251 /* This trick allows us to search both the ordinary and | |
| 3252 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
|
3253 ! NILP (bar) || (bar = condemned, |
| 13434 | 3254 condemned = Qnil, |
|
90970
3371fc48749b
Replace uses of GC_* macros with the non-GC_ versions.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
90923
diff
changeset
|
3255 ! NILP (bar)); |
| 13434 | 3256 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
|
3257 if (SCROLL_BAR_W32_WINDOW (XSCROLL_BAR (bar)) == window_id) |
| 13434 | 3258 return XSCROLL_BAR (bar); |
| 3259 } | |
| 3260 | |
| 3261 return 0; | |
| 3262 } | |
| 3263 | |
|
27402
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
3264 |
|
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
3265 |
|
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
3266 /* 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
|
3267 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
|
3268 |
|
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
3269 static void |
|
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
3270 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
|
3271 struct scroll_bar *bar; |
|
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
3272 int portion, position, whole; |
|
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
3273 { |
|
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
3274 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
|
3275 /* 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
|
3276 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
|
3277 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
|
3278 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
|
3279 + VERTICAL_SCROLL_BAR_MIN_HANDLE; |
|
27402
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
3280 int sb_page, sb_pos; |
|
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
3281 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
|
3282 SCROLLINFO si; |
|
27402
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
3283 |
|
76022
e892213b9815
(w32_set_scroll_bar_thumb): Don't resize scroll-bar
Kim F. Storm <storm@cua.dk>
parents:
76019
diff
changeset
|
3284 /* 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
|
3285 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
|
3286 while dragging downwards). |
|
e892213b9815
(w32_set_scroll_bar_thumb): Don't resize scroll-bar
Kim F. Storm <storm@cua.dk>
parents:
76019
diff
changeset
|
3287 |
|
e892213b9815
(w32_set_scroll_bar_thumb): Don't resize scroll-bar
Kim F. Storm <storm@cua.dk>
parents:
76019
diff
changeset
|
3288 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
|
3289 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
|
3290 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
|
3291 |
|
e892213b9815
(w32_set_scroll_bar_thumb): Don't resize scroll-bar
Kim F. Storm <storm@cua.dk>
parents:
76019
diff
changeset
|
3292 if (draggingp) |
|
e892213b9815
(w32_set_scroll_bar_thumb): Don't resize scroll-bar
Kim F. Storm <storm@cua.dk>
parents:
76019
diff
changeset
|
3293 { |
|
e892213b9815
(w32_set_scroll_bar_thumb): Don't resize scroll-bar
Kim F. Storm <storm@cua.dk>
parents:
76019
diff
changeset
|
3294 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
|
3295 BLOCK_INPUT; |
|
e892213b9815
(w32_set_scroll_bar_thumb): Don't resize scroll-bar
Kim F. Storm <storm@cua.dk>
parents:
76019
diff
changeset
|
3296 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
|
3297 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
|
3298 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
|
3299 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
|
3300 UNBLOCK_INPUT; |
|
e892213b9815
(w32_set_scroll_bar_thumb): Don't resize scroll-bar
Kim F. Storm <storm@cua.dk>
parents:
76019
diff
changeset
|
3301 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
|
3302 return; |
|
e892213b9815
(w32_set_scroll_bar_thumb): Don't resize scroll-bar
Kim F. Storm <storm@cua.dk>
parents:
76019
diff
changeset
|
3303 } |
|
e892213b9815
(w32_set_scroll_bar_thumb): Don't resize scroll-bar
Kim F. Storm <storm@cua.dk>
parents:
76019
diff
changeset
|
3304 |
|
27402
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
3305 if (whole) |
|
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
3306 { |
|
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
3307 /* 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
|
3308 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
|
3309 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
|
3310 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
|
3311 { |
|
e892213b9815
(w32_set_scroll_bar_thumb): Don't resize scroll-bar
Kim F. Storm <storm@cua.dk>
parents:
76019
diff
changeset
|
3312 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
|
3313 sb_pos = range; |
|
e892213b9815
(w32_set_scroll_bar_thumb): Don't resize scroll-bar
Kim F. Storm <storm@cua.dk>
parents:
76019
diff
changeset
|
3314 } |
|
e892213b9815
(w32_set_scroll_bar_thumb): Don't resize scroll-bar
Kim F. Storm <storm@cua.dk>
parents:
76019
diff
changeset
|
3315 else |
|
e892213b9815
(w32_set_scroll_bar_thumb): Don't resize scroll-bar
Kim F. Storm <storm@cua.dk>
parents:
76019
diff
changeset
|
3316 { |
|
e892213b9815
(w32_set_scroll_bar_thumb): Don't resize scroll-bar
Kim F. Storm <storm@cua.dk>
parents:
76019
diff
changeset
|
3317 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
|
3318 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
|
3319 } |
|
27402
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
3320 } |
|
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
3321 else |
|
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
3322 { |
|
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
3323 sb_page = range; |
|
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
3324 sb_pos = 0; |
|
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
3325 } |
|
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
3326 |
|
76022
e892213b9815
(w32_set_scroll_bar_thumb): Don't resize scroll-bar
Kim F. Storm <storm@cua.dk>
parents:
76019
diff
changeset
|
3327 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
|
3328 |
|
27402
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
3329 BLOCK_INPUT; |
|
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
3330 |
|
71236
4a38eb2f741d
(w32_set_scroll_bar_thumb, x_scroll_bar_create)
Jason Rumney <jasonr@gnu.org>
parents:
71074
diff
changeset
|
3331 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
|
3332 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
|
3333 si.nPage = sb_page; |
|
4a38eb2f741d
(w32_set_scroll_bar_thumb, x_scroll_bar_create)
Jason Rumney <jasonr@gnu.org>
parents:
71074
diff
changeset
|
3334 si.nPos = sb_pos; |
|
4a38eb2f741d
(w32_set_scroll_bar_thumb, x_scroll_bar_create)
Jason Rumney <jasonr@gnu.org>
parents:
71074
diff
changeset
|
3335 |
|
76022
e892213b9815
(w32_set_scroll_bar_thumb): Don't resize scroll-bar
Kim F. Storm <storm@cua.dk>
parents:
76019
diff
changeset
|
3336 SetScrollInfo (w, SB_CTL, &si, TRUE); |
|
27402
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
3337 |
|
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
3338 UNBLOCK_INPUT; |
|
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
3339 } |
|
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
3340 |
|
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
3341 |
|
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
3342 /************************************************************************ |
|
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
3343 Scroll bars, general |
|
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
3344 ************************************************************************/ |
|
48218
01e253345507
(w32_draw_fringe_bitmap): Remove unused local variable window.
Juanma Barranquero <lekktu@gmail.com>
parents:
48025
diff
changeset
|
3345 |
|
85309
3224d6c172a6
(w32_font_is_double_byte, my_create_scrollbar): Make static.
Juanma Barranquero <lekktu@gmail.com>
parents:
85258
diff
changeset
|
3346 static HWND |
| 13434 | 3347 my_create_scrollbar (f, bar) |
| 3348 struct frame * f; | |
| 3349 struct scroll_bar * bar; | |
| 3350 { | |
|
19713
043ccce224fb
(SIF_*): Win95 macros defined for NT.
Geoff Voelker <voelker@cs.washington.edu>
parents:
18877
diff
changeset
|
3351 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
|
3352 WM_EMACS_CREATESCROLLBAR, (WPARAM) f, |
|
19713
043ccce224fb
(SIF_*): Win95 macros defined for NT.
Geoff Voelker <voelker@cs.washington.edu>
parents:
18877
diff
changeset
|
3353 (LPARAM) bar); |
| 13434 | 3354 } |
| 3355 | |
|
42919
2a546583564f
(x_update_window_begin): Only hide caret if
Jason Rumney <jasonr@gnu.org>
parents:
42864
diff
changeset
|
3356 /*#define ATTACH_THREADS*/ |
|
15151
ed6ddfc0d954
(Vwindow_system): Declared.
Geoff Voelker <voelker@cs.washington.edu>
parents:
15035
diff
changeset
|
3357 |
|
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
|
3358 static BOOL |
|
19713
043ccce224fb
(SIF_*): Win95 macros defined for NT.
Geoff Voelker <voelker@cs.washington.edu>
parents:
18877
diff
changeset
|
3359 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
|
3360 { |
|
ed6ddfc0d954
(Vwindow_system): Declared.
Geoff Voelker <voelker@cs.washington.edu>
parents:
15035
diff
changeset
|
3361 #ifndef ATTACH_THREADS |
|
19713
043ccce224fb
(SIF_*): Win95 macros defined for NT.
Geoff Voelker <voelker@cs.washington.edu>
parents:
18877
diff
changeset
|
3362 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
|
3363 (WPARAM) hwnd, (LPARAM) how); |
|
15151
ed6ddfc0d954
(Vwindow_system): Declared.
Geoff Voelker <voelker@cs.washington.edu>
parents:
15035
diff
changeset
|
3364 #else |
|
19713
043ccce224fb
(SIF_*): Win95 macros defined for NT.
Geoff Voelker <voelker@cs.washington.edu>
parents:
18877
diff
changeset
|
3365 return ShowWindow (hwnd, how); |
|
15151
ed6ddfc0d954
(Vwindow_system): Declared.
Geoff Voelker <voelker@cs.washington.edu>
parents:
15035
diff
changeset
|
3366 #endif |
|
ed6ddfc0d954
(Vwindow_system): Declared.
Geoff Voelker <voelker@cs.washington.edu>
parents:
15035
diff
changeset
|
3367 } |
|
ed6ddfc0d954
(Vwindow_system): Declared.
Geoff Voelker <voelker@cs.washington.edu>
parents:
15035
diff
changeset
|
3368 |
|
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
|
3369 static void |
|
15151
ed6ddfc0d954
(Vwindow_system): Declared.
Geoff Voelker <voelker@cs.washington.edu>
parents:
15035
diff
changeset
|
3370 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
|
3371 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
|
3372 { |
|
ed6ddfc0d954
(Vwindow_system): Declared.
Geoff Voelker <voelker@cs.washington.edu>
parents:
15035
diff
changeset
|
3373 #ifndef ATTACH_THREADS |
|
19713
043ccce224fb
(SIF_*): Win95 macros defined for NT.
Geoff Voelker <voelker@cs.washington.edu>
parents:
18877
diff
changeset
|
3374 WINDOWPOS pos; |
|
043ccce224fb
(SIF_*): Win95 macros defined for NT.
Geoff Voelker <voelker@cs.washington.edu>
parents:
18877
diff
changeset
|
3375 pos.hwndInsertAfter = hwndAfter; |
|
15151
ed6ddfc0d954
(Vwindow_system): Declared.
Geoff Voelker <voelker@cs.washington.edu>
parents:
15035
diff
changeset
|
3376 pos.x = x; |
|
ed6ddfc0d954
(Vwindow_system): Declared.
Geoff Voelker <voelker@cs.washington.edu>
parents:
15035
diff
changeset
|
3377 pos.y = y; |
|
ed6ddfc0d954
(Vwindow_system): Declared.
Geoff Voelker <voelker@cs.washington.edu>
parents:
15035
diff
changeset
|
3378 pos.cx = cx; |
|
ed6ddfc0d954
(Vwindow_system): Declared.
Geoff Voelker <voelker@cs.washington.edu>
parents:
15035
diff
changeset
|
3379 pos.cy = cy; |
|
ed6ddfc0d954
(Vwindow_system): Declared.
Geoff Voelker <voelker@cs.washington.edu>
parents:
15035
diff
changeset
|
3380 pos.flags = flags; |
|
ed6ddfc0d954
(Vwindow_system): Declared.
Geoff Voelker <voelker@cs.washington.edu>
parents:
15035
diff
changeset
|
3381 SendMessage (hwnd, WM_EMACS_SETWINDOWPOS, (WPARAM) &pos, 0); |
|
ed6ddfc0d954
(Vwindow_system): Declared.
Geoff Voelker <voelker@cs.washington.edu>
parents:
15035
diff
changeset
|
3382 #else |
|
ed6ddfc0d954
(Vwindow_system): Declared.
Geoff Voelker <voelker@cs.washington.edu>
parents:
15035
diff
changeset
|
3383 SetWindowPos (hwnd, hwndAfter, x, y, cx, cy, flags); |
|
ed6ddfc0d954
(Vwindow_system): Declared.
Geoff Voelker <voelker@cs.washington.edu>
parents:
15035
diff
changeset
|
3384 #endif |
|
ed6ddfc0d954
(Vwindow_system): Declared.
Geoff Voelker <voelker@cs.washington.edu>
parents:
15035
diff
changeset
|
3385 } |
|
ed6ddfc0d954
(Vwindow_system): Declared.
Geoff Voelker <voelker@cs.washington.edu>
parents:
15035
diff
changeset
|
3386 |
|
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
|
3387 static void |
|
19713
043ccce224fb
(SIF_*): Win95 macros defined for NT.
Geoff Voelker <voelker@cs.washington.edu>
parents:
18877
diff
changeset
|
3388 my_set_focus (f, hwnd) |
|
043ccce224fb
(SIF_*): Win95 macros defined for NT.
Geoff Voelker <voelker@cs.washington.edu>
parents:
18877
diff
changeset
|
3389 struct frame * f; |
|
043ccce224fb
(SIF_*): Win95 macros defined for NT.
Geoff Voelker <voelker@cs.washington.edu>
parents:
18877
diff
changeset
|
3390 HWND hwnd; |
|
043ccce224fb
(SIF_*): Win95 macros defined for NT.
Geoff Voelker <voelker@cs.washington.edu>
parents:
18877
diff
changeset
|
3391 { |
|
48218
01e253345507
(w32_draw_fringe_bitmap): Remove unused local variable window.
Juanma Barranquero <lekktu@gmail.com>
parents:
48025
diff
changeset
|
3392 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
|
3393 (WPARAM) hwnd, 0); |
|
043ccce224fb
(SIF_*): Win95 macros defined for NT.
Geoff Voelker <voelker@cs.washington.edu>
parents:
18877
diff
changeset
|
3394 } |
|
043ccce224fb
(SIF_*): Win95 macros defined for NT.
Geoff Voelker <voelker@cs.washington.edu>
parents:
18877
diff
changeset
|
3395 |
|
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
|
3396 static void |
|
21614
2624d8dcc73f
(Vw32_recognize_altgr): New variable.
Geoff Voelker <voelker@cs.washington.edu>
parents:
21456
diff
changeset
|
3397 my_set_foreground_window (hwnd) |
|
2624d8dcc73f
(Vw32_recognize_altgr): New variable.
Geoff Voelker <voelker@cs.washington.edu>
parents:
21456
diff
changeset
|
3398 HWND hwnd; |
|
2624d8dcc73f
(Vw32_recognize_altgr): New variable.
Geoff Voelker <voelker@cs.washington.edu>
parents:
21456
diff
changeset
|
3399 { |
|
2624d8dcc73f
(Vw32_recognize_altgr): New variable.
Geoff Voelker <voelker@cs.washington.edu>
parents:
21456
diff
changeset
|
3400 SendMessage (hwnd, WM_EMACS_SETFOREGROUND, (WPARAM) hwnd, 0); |
|
2624d8dcc73f
(Vw32_recognize_altgr): New variable.
Geoff Voelker <voelker@cs.washington.edu>
parents:
21456
diff
changeset
|
3401 } |
|
2624d8dcc73f
(Vw32_recognize_altgr): New variable.
Geoff Voelker <voelker@cs.washington.edu>
parents:
21456
diff
changeset
|
3402 |
|
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
|
3403 |
|
75130ff74ad2
(my_show_window, my_set_window_pos, my_set_focus, my_set_foreground_window,
Juanma Barranquero <lekktu@gmail.com>
parents:
64084
diff
changeset
|
3404 static void |
| 13434 | 3405 my_destroy_window (f, hwnd) |
| 3406 struct frame * f; | |
| 3407 HWND hwnd; | |
| 3408 { | |
|
48218
01e253345507
(w32_draw_fringe_bitmap): Remove unused local variable window.
Juanma Barranquero <lekktu@gmail.com>
parents:
48025
diff
changeset
|
3409 SendMessage (FRAME_W32_WINDOW (f), WM_EMACS_DESTROYWINDOW, |
| 13434 | 3410 (WPARAM) hwnd, 0); |
| 3411 } | |
| 3412 | |
|
27402
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
3413 /* 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
|
3414 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
|
3415 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
|
3416 scroll bar. */ |
|
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
3417 |
| 13434 | 3418 static struct scroll_bar * |
|
27402
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
3419 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
|
3420 struct window *w; |
| 13434 | 3421 int top, left, width, height; |
| 3422 { | |
|
27402
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
3423 struct frame *f = XFRAME (WINDOW_FRAME (w)); |
|
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
3424 HWND hwnd; |
|
71236
4a38eb2f741d
(w32_set_scroll_bar_thumb, x_scroll_bar_create)
Jason Rumney <jasonr@gnu.org>
parents:
71074
diff
changeset
|
3425 SCROLLINFO si; |
| 13434 | 3426 struct scroll_bar *bar |
| 3427 = XSCROLL_BAR (Fmake_vector (make_number (SCROLL_BAR_VEC_SIZE), Qnil)); | |
| 3428 | |
| 3429 BLOCK_INPUT; | |
| 3430 | |
|
27402
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
3431 XSETWINDOW (bar->window, w); |
| 13434 | 3432 XSETINT (bar->top, top); |
| 3433 XSETINT (bar->left, left); | |
| 3434 XSETINT (bar->width, width); | |
| 3435 XSETINT (bar->height, height); | |
| 3436 XSETINT (bar->start, 0); | |
| 3437 XSETINT (bar->end, 0); | |
| 3438 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
|
3439 bar->fringe_extended_p = Qnil; |
| 13434 | 3440 |
| 3441 /* Requires geometry to be set before call to create the real window */ | |
| 3442 | |
| 3443 hwnd = my_create_scrollbar (f, bar); | |
| 3444 | |
|
71236
4a38eb2f741d
(w32_set_scroll_bar_thumb, x_scroll_bar_create)
Jason Rumney <jasonr@gnu.org>
parents:
71074
diff
changeset
|
3445 si.cbSize = sizeof (si); |
|
4a38eb2f741d
(w32_set_scroll_bar_thumb, x_scroll_bar_create)
Jason Rumney <jasonr@gnu.org>
parents:
71074
diff
changeset
|
3446 si.fMask = SIF_ALL; |
|
4a38eb2f741d
(w32_set_scroll_bar_thumb, x_scroll_bar_create)
Jason Rumney <jasonr@gnu.org>
parents:
71074
diff
changeset
|
3447 si.nMin = 0; |
|
4a38eb2f741d
(w32_set_scroll_bar_thumb, x_scroll_bar_create)
Jason Rumney <jasonr@gnu.org>
parents:
71074
diff
changeset
|
3448 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
|
3449 + VERTICAL_SCROLL_BAR_MIN_HANDLE; |
|
4a38eb2f741d
(w32_set_scroll_bar_thumb, x_scroll_bar_create)
Jason Rumney <jasonr@gnu.org>
parents:
71074
diff
changeset
|
3450 si.nPage = si.nMax; |
|
4a38eb2f741d
(w32_set_scroll_bar_thumb, x_scroll_bar_create)
Jason Rumney <jasonr@gnu.org>
parents:
71074
diff
changeset
|
3451 si.nPos = 0; |
|
4a38eb2f741d
(w32_set_scroll_bar_thumb, x_scroll_bar_create)
Jason Rumney <jasonr@gnu.org>
parents:
71074
diff
changeset
|
3452 |
|
4a38eb2f741d
(w32_set_scroll_bar_thumb, x_scroll_bar_create)
Jason Rumney <jasonr@gnu.org>
parents:
71074
diff
changeset
|
3453 SetScrollInfo (hwnd, SB_CTL, &si, FALSE); |
| 13434 | 3454 |
|
16588
481b7874a1e9
Change identifiers of the form win32* to w32*.
Geoff Voelker <voelker@cs.washington.edu>
parents:
16326
diff
changeset
|
3455 SET_SCROLL_BAR_W32_WINDOW (bar, hwnd); |
| 13434 | 3456 |
| 3457 /* Add bar to its frame's list of scroll bars. */ | |
| 3458 bar->next = FRAME_SCROLL_BARS (f); | |
| 3459 bar->prev = Qnil; | |
| 3460 XSETVECTOR (FRAME_SCROLL_BARS (f), bar); | |
| 3461 if (! NILP (bar->next)) | |
| 3462 XSETVECTOR (XSCROLL_BAR (bar->next)->prev, bar); | |
| 3463 | |
| 3464 UNBLOCK_INPUT; | |
| 3465 | |
| 3466 return bar; | |
| 3467 } | |
| 3468 | |
|
27402
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
3469 |
|
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
3470 /* 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
|
3471 nil. */ |
|
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
3472 |
| 13434 | 3473 static void |
| 3474 x_scroll_bar_remove (bar) | |
| 3475 struct scroll_bar *bar; | |
| 3476 { | |
| 3477 FRAME_PTR f = XFRAME (WINDOW_FRAME (XWINDOW (bar->window))); | |
| 3478 | |
| 3479 BLOCK_INPUT; | |
| 3480 | |
| 3481 /* Destroy the window. */ | |
|
16588
481b7874a1e9
Change identifiers of the form win32* to w32*.
Geoff Voelker <voelker@cs.washington.edu>
parents:
16326
diff
changeset
|
3482 my_destroy_window (f, SCROLL_BAR_W32_WINDOW (bar)); |
| 13434 | 3483 |
| 3484 /* Disassociate this scroll bar from its window. */ | |
| 3485 XWINDOW (bar->window)->vertical_scroll_bar = Qnil; | |
| 3486 | |
| 3487 UNBLOCK_INPUT; | |
| 3488 } | |
| 3489 | |
| 3490 /* Set the handle of the vertical scroll bar for WINDOW to indicate | |
| 3491 that we are displaying PORTION characters out of a total of WHOLE | |
| 3492 characters, starting at POSITION. If WINDOW has no scroll bar, | |
| 3493 create one. */ | |
| 3494 static void | |
|
27402
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
3495 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
|
3496 struct window *w; |
| 13434 | 3497 int portion, whole, position; |
| 3498 { | |
|
27402
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
3499 struct frame *f = XFRAME (w->frame); |
| 13434 | 3500 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
|
3501 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
|
3502 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
|
3503 int fringe_extended_p; |
|
27402
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
3504 |
|
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
3505 /* Get window dimensions. */ |
|
51204
082b768216a0
Make (several) trivial substitutions for renamed and
Kim F. Storm <storm@cua.dk>
parents:
50441
diff
changeset
|
3506 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
|
3507 top = window_y; |
|
51204
082b768216a0
Make (several) trivial substitutions for renamed and
Kim F. Storm <storm@cua.dk>
parents:
50441
diff
changeset
|
3508 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
|
3509 height = window_height; |
|
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
3510 |
|
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
3511 /* 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
|
3512 left = WINDOW_SCROLL_BAR_AREA_X (w); |
|
27402
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
3513 |
|
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
3514 /* 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
|
3515 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
|
3516 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
|
3517 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
|
3518 else |
|
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
3519 sb_width = width; |
|
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
3520 |
|
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
3521 /* 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
|
3522 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
|
3523 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
|
3524 else |
|
82170
e0ebebf01b6d
(w32_draw_fringe_bitmap): Extend fringe background to
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
82140
diff
changeset
|
3525 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
|
3526 |
|
e0ebebf01b6d
(w32_draw_fringe_bitmap): Extend fringe background to
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
82140
diff
changeset
|
3527 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
|
3528 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
|
3529 && 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
|
3530 && (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
|
3531 || 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
|
3532 else |
|
e0ebebf01b6d
(w32_draw_fringe_bitmap): Extend fringe background to
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
82140
diff
changeset
|
3533 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
|
3534 && 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
|
3535 && (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
|
3536 || WINDOW_RIGHT_MARGIN_COLS (w) == 0)); |
| 13434 | 3537 |
| 3538 /* Does the scroll bar exist yet? */ | |
|
27402
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
3539 if (NILP (w->vertical_scroll_bar)) |
|
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
3540 { |
|
27406
fb36ccd8457c
(w32_fill_rect): Do not try to deal with NULL hdc
Jason Rumney <jasonr@gnu.org>
parents:
27402
diff
changeset
|
3541 HDC hdc; |
|
27402
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
3542 BLOCK_INPUT; |
|
41249
2043af2d023f
(note_mouse_highlight): Fix type of variable `ignore'.
Jason Rumney <jasonr@gnu.org>
parents:
41125
diff
changeset
|
3543 if (width > 0 && height > 0) |
|
40137
5f0d7d58283b
(remember_mouse_glyph): New function.
Jason Rumney <jasonr@gnu.org>
parents:
40078
diff
changeset
|
3544 { |
|
5f0d7d58283b
(remember_mouse_glyph): New function.
Jason Rumney <jasonr@gnu.org>
parents:
40078
diff
changeset
|
3545 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
|
3546 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
|
3547 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
|
3548 else |
|
e0ebebf01b6d
(w32_draw_fringe_bitmap): Extend fringe background to
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
82140
diff
changeset
|
3549 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
|
3550 release_frame_dc (f, hdc); |
|
5f0d7d58283b
(remember_mouse_glyph): New function.
Jason Rumney <jasonr@gnu.org>
parents:
40078
diff
changeset
|
3551 } |
|
27402
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
3552 UNBLOCK_INPUT; |
|
27406
fb36ccd8457c
(w32_fill_rect): Do not try to deal with NULL hdc
Jason Rumney <jasonr@gnu.org>
parents:
27402
diff
changeset
|
3553 |
|
27402
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
3554 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
|
3555 } |
| 13434 | 3556 else |
| 3557 { | |
|
48218
01e253345507
(w32_draw_fringe_bitmap): Remove unused local variable window.
Juanma Barranquero <lekktu@gmail.com>
parents:
48025
diff
changeset
|
3558 /* 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
|
3559 HWND hwnd; |
|
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
3560 |
|
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
3561 bar = XSCROLL_BAR (w->vertical_scroll_bar); |
|
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
3562 hwnd = SCROLL_BAR_W32_WINDOW (bar); |
|
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
3563 |
|
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
3564 /* If already correctly positioned, do nothing. */ |
|
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
3565 if ( XINT (bar->left) == sb_left |
|
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
3566 && XINT (bar->top) == top |
|
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
3567 && 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
|
3568 && 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
|
3569 && !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
|
3570 { |
|
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
3571 /* Redraw after clear_frame. */ |
|
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
3572 if (!my_show_window (f, hwnd, SW_NORMAL)) |
|
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
3573 InvalidateRect (hwnd, NULL, FALSE); |
|
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
3574 } |
|
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
3575 else |
|
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
3576 { |
|
27406
fb36ccd8457c
(w32_fill_rect): Do not try to deal with NULL hdc
Jason Rumney <jasonr@gnu.org>
parents:
27402
diff
changeset
|
3577 HDC hdc; |
|
71236
4a38eb2f741d
(w32_set_scroll_bar_thumb, x_scroll_bar_create)
Jason Rumney <jasonr@gnu.org>
parents:
71074
diff
changeset
|
3578 SCROLLINFO si; |
|
4a38eb2f741d
(w32_set_scroll_bar_thumb, x_scroll_bar_create)
Jason Rumney <jasonr@gnu.org>
parents:
71074
diff
changeset
|
3579 |
|
27402
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
3580 BLOCK_INPUT; |
|
40137
5f0d7d58283b
(remember_mouse_glyph): New function.
Jason Rumney <jasonr@gnu.org>
parents:
40078
diff
changeset
|
3581 if (width && height) |
|
5f0d7d58283b
(remember_mouse_glyph): New function.
Jason Rumney <jasonr@gnu.org>
parents:
40078
diff
changeset
|
3582 { |
|
5f0d7d58283b
(remember_mouse_glyph): New function.
Jason Rumney <jasonr@gnu.org>
parents:
40078
diff
changeset
|
3583 hdc = get_frame_dc (f); |
|
5f0d7d58283b
(remember_mouse_glyph): New function.
Jason Rumney <jasonr@gnu.org>
parents:
40078
diff
changeset
|
3584 /* 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
|
3585 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
|
3586 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
|
3587 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
|
3588 else |
|
e0ebebf01b6d
(w32_draw_fringe_bitmap): Extend fringe background to
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
82140
diff
changeset
|
3589 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
|
3590 release_frame_dc (f, hdc); |
|
5f0d7d58283b
(remember_mouse_glyph): New function.
Jason Rumney <jasonr@gnu.org>
parents:
40078
diff
changeset
|
3591 } |
|
27402
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
3592 /* 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
|
3593 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
|
3594 my_show_window (f, hwnd, SW_HIDE); |
|
40137
5f0d7d58283b
(remember_mouse_glyph): New function.
Jason Rumney <jasonr@gnu.org>
parents:
40078
diff
changeset
|
3595 MoveWindow (hwnd, sb_left + VERTICAL_SCROLL_BAR_WIDTH_TRIM, |
|
5f0d7d58283b
(remember_mouse_glyph): New function.
Jason Rumney <jasonr@gnu.org>
parents:
40078
diff
changeset
|
3596 top, sb_width - VERTICAL_SCROLL_BAR_WIDTH_TRIM * 2, |
|
5f0d7d58283b
(remember_mouse_glyph): New function.
Jason Rumney <jasonr@gnu.org>
parents:
40078
diff
changeset
|
3597 max (height, 1), TRUE); |
|
71236
4a38eb2f741d
(w32_set_scroll_bar_thumb, x_scroll_bar_create)
Jason Rumney <jasonr@gnu.org>
parents:
71074
diff
changeset
|
3598 |
|
4a38eb2f741d
(w32_set_scroll_bar_thumb, x_scroll_bar_create)
Jason Rumney <jasonr@gnu.org>
parents:
71074
diff
changeset
|
3599 si.cbSize = sizeof (si); |
|
4a38eb2f741d
(w32_set_scroll_bar_thumb, x_scroll_bar_create)
Jason Rumney <jasonr@gnu.org>
parents:
71074
diff
changeset
|
3600 si.fMask = SIF_RANGE; |
|
4a38eb2f741d
(w32_set_scroll_bar_thumb, x_scroll_bar_create)
Jason Rumney <jasonr@gnu.org>
parents:
71074
diff
changeset
|
3601 si.nMin = 0; |
|
4a38eb2f741d
(w32_set_scroll_bar_thumb, x_scroll_bar_create)
Jason Rumney <jasonr@gnu.org>
parents:
71074
diff
changeset
|
3602 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
|
3603 + VERTICAL_SCROLL_BAR_MIN_HANDLE; |
|
4a38eb2f741d
(w32_set_scroll_bar_thumb, x_scroll_bar_create)
Jason Rumney <jasonr@gnu.org>
parents:
71074
diff
changeset
|
3604 |
|
4a38eb2f741d
(w32_set_scroll_bar_thumb, x_scroll_bar_create)
Jason Rumney <jasonr@gnu.org>
parents:
71074
diff
changeset
|
3605 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
|
3606 |
|
27402
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
3607 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
|
3608 /* InvalidateRect (w, NULL, FALSE); */ |
|
27402
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
3609 |
|
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
3610 /* Remember new settings. */ |
|
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
3611 XSETINT (bar->left, sb_left); |
|
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
3612 XSETINT (bar->top, top); |
|
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
3613 XSETINT (bar->width, sb_width); |
|
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
3614 XSETINT (bar->height, height); |
|
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
3615 |
|
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
3616 UNBLOCK_INPUT; |
|
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 } |
|
82170
e0ebebf01b6d
(w32_draw_fringe_bitmap): Extend fringe background to
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
82140
diff
changeset
|
3619 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
|
3620 |
|
27402
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
3621 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
|
3622 |
|
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
3623 XSETVECTOR (w->vertical_scroll_bar, bar); |
| 13434 | 3624 } |
| 3625 | |
| 3626 | |
| 3627 /* The following three hooks are used when we're doing a thorough | |
| 3628 redisplay of the frame. We don't explicitly know which scroll bars | |
| 3629 are going to be deleted, because keeping track of when windows go | |
| 3630 away is a real pain - "Can you say set-window-configuration, boys | |
| 3631 and girls?" Instead, we just assert at the beginning of redisplay | |
| 3632 that *all* scroll bars are to be removed, and then save a scroll bar | |
| 3633 from the fiery pit when we actually redisplay its window. */ | |
| 3634 | |
| 3635 /* Arrange for all scroll bars on FRAME to be removed at the next call | |
| 3636 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
|
3637 `*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
|
3638 |
| 13434 | 3639 static void |
|
16588
481b7874a1e9
Change identifiers of the form win32* to w32*.
Geoff Voelker <voelker@cs.washington.edu>
parents:
16326
diff
changeset
|
3640 w32_condemn_scroll_bars (frame) |
| 13434 | 3641 FRAME_PTR frame; |
| 3642 { | |
|
21614
2624d8dcc73f
(Vw32_recognize_altgr): New variable.
Geoff Voelker <voelker@cs.washington.edu>
parents:
21456
diff
changeset
|
3643 /* 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
|
3644 while (! NILP (FRAME_SCROLL_BARS (frame))) |
|
2624d8dcc73f
(Vw32_recognize_altgr): New variable.
Geoff Voelker <voelker@cs.washington.edu>
parents:
21456
diff
changeset
|
3645 { |
|
2624d8dcc73f
(Vw32_recognize_altgr): New variable.
Geoff Voelker <voelker@cs.washington.edu>
parents:
21456
diff
changeset
|
3646 Lisp_Object bar; |
|
2624d8dcc73f
(Vw32_recognize_altgr): New variable.
Geoff Voelker <voelker@cs.washington.edu>
parents:
21456
diff
changeset
|
3647 bar = FRAME_SCROLL_BARS (frame); |
|
2624d8dcc73f
(Vw32_recognize_altgr): New variable.
Geoff Voelker <voelker@cs.washington.edu>
parents:
21456
diff
changeset
|
3648 FRAME_SCROLL_BARS (frame) = XSCROLL_BAR (bar)->next; |
|
2624d8dcc73f
(Vw32_recognize_altgr): New variable.
Geoff Voelker <voelker@cs.washington.edu>
parents:
21456
diff
changeset
|
3649 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
|
3650 XSCROLL_BAR (bar)->prev = Qnil; |
|
2624d8dcc73f
(Vw32_recognize_altgr): New variable.
Geoff Voelker <voelker@cs.washington.edu>
parents:
21456
diff
changeset
|
3651 if (! NILP (FRAME_CONDEMNED_SCROLL_BARS (frame))) |
|
2624d8dcc73f
(Vw32_recognize_altgr): New variable.
Geoff Voelker <voelker@cs.washington.edu>
parents:
21456
diff
changeset
|
3652 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
|
3653 FRAME_CONDEMNED_SCROLL_BARS (frame) = bar; |
|
2624d8dcc73f
(Vw32_recognize_altgr): New variable.
Geoff Voelker <voelker@cs.washington.edu>
parents:
21456
diff
changeset
|
3654 } |
| 13434 | 3655 } |
| 3656 | |
|
35384
e50a7f9ce65e
(x_produce_stretch_glyph): Only use Qspace when GLYPH_DEBUG is defined.
Jason Rumney <jasonr@gnu.org>
parents:
35287
diff
changeset
|
3657 |
|
29321
8e2be36bb1c6
Format and doc changes to bring closer to xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
28369
diff
changeset
|
3658 /* Un-mark WINDOW's scroll bar for deletion in this judgment cycle. |
| 13434 | 3659 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
|
3660 |
| 13434 | 3661 static void |
|
16588
481b7874a1e9
Change identifiers of the form win32* to w32*.
Geoff Voelker <voelker@cs.washington.edu>
parents:
16326
diff
changeset
|
3662 w32_redeem_scroll_bar (window) |
| 13434 | 3663 struct window *window; |
| 3664 { | |
| 3665 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
|
3666 struct frame *f; |
| 13434 | 3667 |
| 3668 /* We can't redeem this window's scroll bar if it doesn't have one. */ | |
| 3669 if (NILP (window->vertical_scroll_bar)) | |
| 3670 abort (); | |
| 3671 | |
| 3672 bar = XSCROLL_BAR (window->vertical_scroll_bar); | |
| 3673 | |
| 3674 /* 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
|
3675 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
|
3676 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
|
3677 { |
|
e50a7f9ce65e
(x_produce_stretch_glyph): Only use Qspace when GLYPH_DEBUG is defined.
Jason Rumney <jasonr@gnu.org>
parents:
35287
diff
changeset
|
3678 /* 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
|
3679 the lists. */ |
|
e50a7f9ce65e
(x_produce_stretch_glyph): Only use Qspace when GLYPH_DEBUG is defined.
Jason Rumney <jasonr@gnu.org>
parents:
35287
diff
changeset
|
3680 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
|
3681 /* 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
|
3682 return; |
|
e50a7f9ce65e
(x_produce_stretch_glyph): Only use Qspace when GLYPH_DEBUG is defined.
Jason Rumney <jasonr@gnu.org>
parents:
35287
diff
changeset
|
3683 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
|
3684 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
|
3685 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
|
3686 else |
|
e50a7f9ce65e
(x_produce_stretch_glyph): Only use Qspace when GLYPH_DEBUG is defined.
Jason Rumney <jasonr@gnu.org>
parents:
35287
diff
changeset
|
3687 /* 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
|
3688 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
|
3689 abort (); |
|
e50a7f9ce65e
(x_produce_stretch_glyph): Only use Qspace when GLYPH_DEBUG is defined.
Jason Rumney <jasonr@gnu.org>
parents:
35287
diff
changeset
|
3690 } |
|
e50a7f9ce65e
(x_produce_stretch_glyph): Only use Qspace when GLYPH_DEBUG is defined.
Jason Rumney <jasonr@gnu.org>
parents:
35287
diff
changeset
|
3691 else |
|
e50a7f9ce65e
(x_produce_stretch_glyph): Only use Qspace when GLYPH_DEBUG is defined.
Jason Rumney <jasonr@gnu.org>
parents:
35287
diff
changeset
|
3692 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
|
3693 |
|
e50a7f9ce65e
(x_produce_stretch_glyph): Only use Qspace when GLYPH_DEBUG is defined.
Jason Rumney <jasonr@gnu.org>
parents:
35287
diff
changeset
|
3694 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
|
3695 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
|
3696 |
|
e50a7f9ce65e
(x_produce_stretch_glyph): Only use Qspace when GLYPH_DEBUG is defined.
Jason Rumney <jasonr@gnu.org>
parents:
35287
diff
changeset
|
3697 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
|
3698 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
|
3699 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
|
3700 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
|
3701 XSETVECTOR (XSCROLL_BAR (bar->next)->prev, bar); |
| 13434 | 3702 } |
| 3703 | |
| 3704 /* Remove all scroll bars on FRAME that haven't been saved since the | |
| 3705 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
|
3706 |
| 13434 | 3707 static void |
|
16588
481b7874a1e9
Change identifiers of the form win32* to w32*.
Geoff Voelker <voelker@cs.washington.edu>
parents:
16326
diff
changeset
|
3708 w32_judge_scroll_bars (f) |
| 13434 | 3709 FRAME_PTR f; |
| 3710 { | |
| 3711 Lisp_Object bar, next; | |
| 3712 | |
| 3713 bar = FRAME_CONDEMNED_SCROLL_BARS (f); | |
| 3714 | |
| 3715 /* Clear out the condemned list now so we won't try to process any | |
| 3716 more events on the hapless scroll bars. */ | |
| 3717 FRAME_CONDEMNED_SCROLL_BARS (f) = Qnil; | |
| 3718 | |
| 3719 for (; ! NILP (bar); bar = next) | |
| 3720 { | |
| 3721 struct scroll_bar *b = XSCROLL_BAR (bar); | |
| 3722 | |
| 3723 x_scroll_bar_remove (b); | |
| 3724 | |
| 3725 next = b->next; | |
| 3726 b->next = b->prev = Qnil; | |
| 3727 } | |
| 3728 | |
| 3729 /* Now there should be no references to the condemned scroll bars, | |
| 3730 and they should get garbage-collected. */ | |
| 3731 } | |
| 3732 | |
| 3733 /* 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
|
3734 is set to something other than NO_EVENT, it is enqueued. |
| 13434 | 3735 |
| 3736 This may be called from a signal handler, so we have to ignore GC | |
| 3737 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
|
3738 |
|
15151
ed6ddfc0d954
(Vwindow_system): Declared.
Geoff Voelker <voelker@cs.washington.edu>
parents:
15035
diff
changeset
|
3739 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
|
3740 w32_scroll_bar_handle_click (bar, msg, emacs_event) |
| 13434 | 3741 struct scroll_bar *bar; |
|
16588
481b7874a1e9
Change identifiers of the form win32* to w32*.
Geoff Voelker <voelker@cs.washington.edu>
parents:
16326
diff
changeset
|
3742 W32Msg *msg; |
| 13434 | 3743 struct input_event *emacs_event; |
| 3744 { | |
|
90970
3371fc48749b
Replace uses of GC_* macros with the non-GC_ versions.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
90923
diff
changeset
|
3745 if (! WINDOWP (bar->window)) |
| 13434 | 3746 abort (); |
| 3747 | |
|
85983
fbeab07144ff
(w32_scroll_bar_handle_click): Use SCROLL_BAR_CLICK_EVENT.
Jason Rumney <jasonr@gnu.org>
parents:
85850
diff
changeset
|
3748 emacs_event->kind = SCROLL_BAR_CLICK_EVENT; |
| 13434 | 3749 emacs_event->code = 0; |
|
15151
ed6ddfc0d954
(Vwindow_system): Declared.
Geoff Voelker <voelker@cs.washington.edu>
parents:
15035
diff
changeset
|
3750 /* not really meaningful to distinguish up/down */ |
|
ed6ddfc0d954
(Vwindow_system): Declared.
Geoff Voelker <voelker@cs.washington.edu>
parents:
15035
diff
changeset
|
3751 emacs_event->modifiers = msg->dwModifiers; |
| 13434 | 3752 emacs_event->frame_or_window = bar->window; |
|
30199
298f10cd4ba5
(construct_mouse_click, construct_mouse_wheel)
Gerd Moellmann <gerd@gnu.org>
parents:
30179
diff
changeset
|
3753 emacs_event->arg = Qnil; |
| 13434 | 3754 emacs_event->timestamp = msg->msg.time; |
| 3755 | |
| 3756 { | |
|
27402
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
3757 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
|
3758 int y; |
|
043ccce224fb
(SIF_*): Win95 macros defined for NT.
Geoff Voelker <voelker@cs.washington.edu>
parents:
18877
diff
changeset
|
3759 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
|
3760 SCROLLINFO si; |
|
4a38eb2f741d
(w32_set_scroll_bar_thumb, x_scroll_bar_create)
Jason Rumney <jasonr@gnu.org>
parents:
71074
diff
changeset
|
3761 |
|
4a38eb2f741d
(w32_set_scroll_bar_thumb, x_scroll_bar_create)
Jason Rumney <jasonr@gnu.org>
parents:
71074
diff
changeset
|
3762 si.cbSize = sizeof (si); |
|
4a38eb2f741d
(w32_set_scroll_bar_thumb, x_scroll_bar_create)
Jason Rumney <jasonr@gnu.org>
parents:
71074
diff
changeset
|
3763 si.fMask = SIF_POS; |
|
4a38eb2f741d
(w32_set_scroll_bar_thumb, x_scroll_bar_create)
Jason Rumney <jasonr@gnu.org>
parents:
71074
diff
changeset
|
3764 |
|
4a38eb2f741d
(w32_set_scroll_bar_thumb, x_scroll_bar_create)
Jason Rumney <jasonr@gnu.org>
parents:
71074
diff
changeset
|
3765 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
|
3766 y = si.nPos; |
|
19713
043ccce224fb
(SIF_*): Win95 macros defined for NT.
Geoff Voelker <voelker@cs.washington.edu>
parents:
18877
diff
changeset
|
3767 |
|
043ccce224fb
(SIF_*): Win95 macros defined for NT.
Geoff Voelker <voelker@cs.washington.edu>
parents:
18877
diff
changeset
|
3768 bar->dragging = Qnil; |
| 13434 | 3769 |
|
29321
8e2be36bb1c6
Format and doc changes to bring closer to xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
28369
diff
changeset
|
3770 |
|
8e2be36bb1c6
Format and doc changes to bring closer to xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
28369
diff
changeset
|
3771 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
|
3772 |
| 13434 | 3773 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
|
3774 { |
|
f639c5d732a3
(x_scroll_bar_set_handle): Always use start in calling SetScrollPos.
Richard M. Stallman <rms@gnu.org>
parents:
15204
diff
changeset
|
3775 case SB_LINEDOWN: |
|
15151
ed6ddfc0d954
(Vwindow_system): Declared.
Geoff Voelker <voelker@cs.washington.edu>
parents:
15035
diff
changeset
|
3776 emacs_event->part = scroll_bar_down_arrow; |
| 13434 | 3777 break; |
|
15216
f639c5d732a3
(x_scroll_bar_set_handle): Always use start in calling SetScrollPos.
Richard M. Stallman <rms@gnu.org>
parents:
15204
diff
changeset
|
3778 case SB_LINEUP: |
|
15151
ed6ddfc0d954
(Vwindow_system): Declared.
Geoff Voelker <voelker@cs.washington.edu>
parents:
15035
diff
changeset
|
3779 emacs_event->part = scroll_bar_up_arrow; |
| 13434 | 3780 break; |
|
15216
f639c5d732a3
(x_scroll_bar_set_handle): Always use start in calling SetScrollPos.
Richard M. Stallman <rms@gnu.org>
parents:
15204
diff
changeset
|
3781 case SB_PAGEUP: |
| 13434 | 3782 emacs_event->part = scroll_bar_above_handle; |
| 3783 break; | |
|
15216
f639c5d732a3
(x_scroll_bar_set_handle): Always use start in calling SetScrollPos.
Richard M. Stallman <rms@gnu.org>
parents:
15204
diff
changeset
|
3784 case SB_PAGEDOWN: |
| 13434 | 3785 emacs_event->part = scroll_bar_below_handle; |
| 3786 break; | |
|
15216
f639c5d732a3
(x_scroll_bar_set_handle): Always use start in calling SetScrollPos.
Richard M. Stallman <rms@gnu.org>
parents:
15204
diff
changeset
|
3787 case SB_TOP: |
| 13434 | 3788 emacs_event->part = scroll_bar_handle; |
| 3789 y = 0; | |
| 3790 break; | |
|
15216
f639c5d732a3
(x_scroll_bar_set_handle): Always use start in calling SetScrollPos.
Richard M. Stallman <rms@gnu.org>
parents:
15204
diff
changeset
|
3791 case SB_BOTTOM: |
| 13434 | 3792 emacs_event->part = scroll_bar_handle; |
| 3793 y = top_range; | |
| 3794 break; | |
|
19713
043ccce224fb
(SIF_*): Win95 macros defined for NT.
Geoff Voelker <voelker@cs.washington.edu>
parents:
18877
diff
changeset
|
3795 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
|
3796 case SB_THUMBPOSITION: |
|
27402
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
3797 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
|
3798 y = HIWORD (msg->msg.wParam); |
|
19713
043ccce224fb
(SIF_*): Win95 macros defined for NT.
Geoff Voelker <voelker@cs.washington.edu>
parents:
18877
diff
changeset
|
3799 bar->dragging = Qt; |
| 13434 | 3800 emacs_event->part = scroll_bar_handle; |
|
19713
043ccce224fb
(SIF_*): Win95 macros defined for NT.
Geoff Voelker <voelker@cs.washington.edu>
parents:
18877
diff
changeset
|
3801 |
|
043ccce224fb
(SIF_*): Win95 macros defined for NT.
Geoff Voelker <voelker@cs.washington.edu>
parents:
18877
diff
changeset
|
3802 /* "Silently" update current position. */ |
|
71236
4a38eb2f741d
(w32_set_scroll_bar_thumb, x_scroll_bar_create)
Jason Rumney <jasonr@gnu.org>
parents:
71074
diff
changeset
|
3803 { |
|
4a38eb2f741d
(w32_set_scroll_bar_thumb, x_scroll_bar_create)
Jason Rumney <jasonr@gnu.org>
parents:
71074
diff
changeset
|
3804 SCROLLINFO si; |
|
4a38eb2f741d
(w32_set_scroll_bar_thumb, x_scroll_bar_create)
Jason Rumney <jasonr@gnu.org>
parents:
71074
diff
changeset
|
3805 |
|
4a38eb2f741d
(w32_set_scroll_bar_thumb, x_scroll_bar_create)
Jason Rumney <jasonr@gnu.org>
parents:
71074
diff
changeset
|
3806 si.cbSize = sizeof (si); |
|
4a38eb2f741d
(w32_set_scroll_bar_thumb, x_scroll_bar_create)
Jason Rumney <jasonr@gnu.org>
parents:
71074
diff
changeset
|
3807 si.fMask = SIF_POS; |
|
4a38eb2f741d
(w32_set_scroll_bar_thumb, x_scroll_bar_create)
Jason Rumney <jasonr@gnu.org>
parents:
71074
diff
changeset
|
3808 si.nPos = y; |
|
4a38eb2f741d
(w32_set_scroll_bar_thumb, x_scroll_bar_create)
Jason Rumney <jasonr@gnu.org>
parents:
71074
diff
changeset
|
3809 /* 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
|
3810 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
|
3811 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
|
3812 |
|
4a38eb2f741d
(w32_set_scroll_bar_thumb, x_scroll_bar_create)
Jason Rumney <jasonr@gnu.org>
parents:
71074
diff
changeset
|
3813 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
|
3814 } |
| 13434 | 3815 break; |
|
15216
f639c5d732a3
(x_scroll_bar_set_handle): Always use start in calling SetScrollPos.
Richard M. Stallman <rms@gnu.org>
parents:
15204
diff
changeset
|
3816 case SB_ENDSCROLL: |
|
19713
043ccce224fb
(SIF_*): Win95 macros defined for NT.
Geoff Voelker <voelker@cs.washington.edu>
parents:
18877
diff
changeset
|
3817 /* 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
|
3818 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
|
3819 nothing. */ |
|
043ccce224fb
(SIF_*): Win95 macros defined for NT.
Geoff Voelker <voelker@cs.washington.edu>
parents:
18877
diff
changeset
|
3820 if (dragging) |
|
043ccce224fb
(SIF_*): Win95 macros defined for NT.
Geoff Voelker <voelker@cs.washington.edu>
parents:
18877
diff
changeset
|
3821 { |
|
71236
4a38eb2f741d
(w32_set_scroll_bar_thumb, x_scroll_bar_create)
Jason Rumney <jasonr@gnu.org>
parents:
71074
diff
changeset
|
3822 SCROLLINFO si; |
|
4a38eb2f741d
(w32_set_scroll_bar_thumb, x_scroll_bar_create)
Jason Rumney <jasonr@gnu.org>
parents:
71074
diff
changeset
|
3823 int start = XINT (bar->start); |
|
4a38eb2f741d
(w32_set_scroll_bar_thumb, x_scroll_bar_create)
Jason Rumney <jasonr@gnu.org>
parents:
71074
diff
changeset
|
3824 int end = XINT (bar->end); |
|
4a38eb2f741d
(w32_set_scroll_bar_thumb, x_scroll_bar_create)
Jason Rumney <jasonr@gnu.org>
parents:
71074
diff
changeset
|
3825 |
|
4a38eb2f741d
(w32_set_scroll_bar_thumb, x_scroll_bar_create)
Jason Rumney <jasonr@gnu.org>
parents:
71074
diff
changeset
|
3826 si.cbSize = sizeof (si); |
|
4a38eb2f741d
(w32_set_scroll_bar_thumb, x_scroll_bar_create)
Jason Rumney <jasonr@gnu.org>
parents:
71074
diff
changeset
|
3827 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
|
3828 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
|
3829 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
|
3830 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
|
3831 } |
|
043ccce224fb
(SIF_*): Win95 macros defined for NT.
Geoff Voelker <voelker@cs.washington.edu>
parents:
18877
diff
changeset
|
3832 /* 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
|
3833 default: |
|
45803
9484de301252
Rename enum event_kind items.
Pavel Jan?k <Pavel@Janik.cz>
parents:
45507
diff
changeset
|
3834 emacs_event->kind = NO_EVENT; |
|
15151
ed6ddfc0d954
(Vwindow_system): Declared.
Geoff Voelker <voelker@cs.washington.edu>
parents:
15035
diff
changeset
|
3835 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
|
3836 } |
|
15151
ed6ddfc0d954
(Vwindow_system): Declared.
Geoff Voelker <voelker@cs.washington.edu>
parents:
15035
diff
changeset
|
3837 |
| 13434 | 3838 XSETINT (emacs_event->x, y); |
| 3839 XSETINT (emacs_event->y, top_range); | |
|
15151
ed6ddfc0d954
(Vwindow_system): Declared.
Geoff Voelker <voelker@cs.washington.edu>
parents:
15035
diff
changeset
|
3840 |
|
ed6ddfc0d954
(Vwindow_system): Declared.
Geoff Voelker <voelker@cs.washington.edu>
parents:
15035
diff
changeset
|
3841 return TRUE; |
| 13434 | 3842 } |
| 3843 } | |
| 3844 | |
| 3845 /* Return information to the user about the current position of the mouse | |
| 3846 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
|
3847 |
| 13434 | 3848 static void |
| 3849 x_scroll_bar_report_motion (fp, bar_window, part, x, y, time) | |
| 3850 FRAME_PTR *fp; | |
| 3851 Lisp_Object *bar_window; | |
| 3852 enum scroll_bar_part *part; | |
| 3853 Lisp_Object *x, *y; | |
| 3854 unsigned long *time; | |
| 3855 { | |
| 3856 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
|
3857 Window w = SCROLL_BAR_W32_WINDOW (bar); |
| 13434 | 3858 FRAME_PTR f = XFRAME (WINDOW_FRAME (XWINDOW (bar->window))); |
| 3859 int pos; | |
|
27402
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
3860 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
|
3861 SCROLLINFO si; |
| 13434 | 3862 |
| 3863 BLOCK_INPUT; | |
| 3864 | |
| 3865 *fp = f; | |
| 3866 *bar_window = bar->window; | |
| 3867 | |
|
71236
4a38eb2f741d
(w32_set_scroll_bar_thumb, x_scroll_bar_create)
Jason Rumney <jasonr@gnu.org>
parents:
71074
diff
changeset
|
3868 si.cbSize = sizeof (si); |
|
4a38eb2f741d
(w32_set_scroll_bar_thumb, x_scroll_bar_create)
Jason Rumney <jasonr@gnu.org>
parents:
71074
diff
changeset
|
3869 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
|
3870 |
|
4a38eb2f741d
(w32_set_scroll_bar_thumb, x_scroll_bar_create)
Jason Rumney <jasonr@gnu.org>
parents:
71074
diff
changeset
|
3871 GetScrollInfo (w, SB_CTL, &si); |
|
4a38eb2f741d
(w32_set_scroll_bar_thumb, x_scroll_bar_create)
Jason Rumney <jasonr@gnu.org>
parents:
71074
diff
changeset
|
3872 pos = si.nPos; |
|
4a38eb2f741d
(w32_set_scroll_bar_thumb, x_scroll_bar_create)
Jason Rumney <jasonr@gnu.org>
parents:
71074
diff
changeset
|
3873 top_range = si.nMax - si.nPage + 1; |
| 13434 | 3874 |
| 3875 switch (LOWORD (last_mouse_scroll_bar_pos)) | |
| 3876 { | |
| 3877 case SB_THUMBPOSITION: | |
| 3878 case SB_THUMBTRACK: | |
| 3879 *part = scroll_bar_handle; | |
|
27402
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
3880 if (VERTICAL_SCROLL_BAR_TOP_RANGE (f, XINT (bar->height)) <= 0xffff) |
| 13434 | 3881 pos = HIWORD (last_mouse_scroll_bar_pos); |
| 3882 break; | |
| 3883 case SB_LINEDOWN: | |
| 3884 *part = scroll_bar_handle; | |
| 3885 pos++; | |
| 3886 break; | |
| 3887 default: | |
| 3888 *part = scroll_bar_handle; | |
| 3889 break; | |
| 3890 } | |
| 3891 | |
|
32022
1f26caa05cd7
(w32_char_font_type, w32_encode_char, x_produce_glyphs): Distinguish
Jason Rumney <jasonr@gnu.org>
parents:
31624
diff
changeset
|
3892 XSETINT (*x, pos); |
|
1f26caa05cd7
(w32_char_font_type, w32_encode_char, x_produce_glyphs): Distinguish
Jason Rumney <jasonr@gnu.org>
parents:
31624
diff
changeset
|
3893 XSETINT (*y, top_range); |
| 13434 | 3894 |
| 3895 f->mouse_moved = 0; | |
| 3896 last_mouse_scroll_bar = Qnil; | |
| 3897 | |
| 3898 *time = last_mouse_movement_time; | |
| 3899 | |
| 3900 UNBLOCK_INPUT; | |
| 3901 } | |
| 3902 | |
|
29321
8e2be36bb1c6
Format and doc changes to bring closer to xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
28369
diff
changeset
|
3903 |
| 13434 | 3904 /* The screen has been cleared so we may have changed foreground or |
| 3905 background colors, and the scroll bars may need to be redrawn. | |
| 3906 Clear out the scroll bars, and ask for expose events, so we can | |
| 3907 redraw them. */ | |
|
29321
8e2be36bb1c6
Format and doc changes to bring closer to xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
28369
diff
changeset
|
3908 |
|
27402
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
3909 void |
| 13434 | 3910 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
|
3911 FRAME_PTR f; |
| 13434 | 3912 { |
| 3913 Lisp_Object bar; | |
| 3914 | |
|
29321
8e2be36bb1c6
Format and doc changes to bring closer to xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
28369
diff
changeset
|
3915 /* 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
|
3916 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
|
3917 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
|
3918 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
|
3919 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
|
3920 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
|
3921 { |
|
8e2be36bb1c6
Format and doc changes to bring closer to xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
28369
diff
changeset
|
3922 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
|
3923 HDC hdc = GetDC (window); |
|
8e2be36bb1c6
Format and doc changes to bring closer to xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
28369
diff
changeset
|
3924 RECT rect; |
|
8e2be36bb1c6
Format and doc changes to bring closer to xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
28369
diff
changeset
|
3925 |
|
8e2be36bb1c6
Format and doc changes to bring closer to xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
28369
diff
changeset
|
3926 /* 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
|
3927 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
|
3928 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
|
3929 |
|
8e2be36bb1c6
Format and doc changes to bring closer to xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
28369
diff
changeset
|
3930 GetClientRect (window, &rect); |
|
8e2be36bb1c6
Format and doc changes to bring closer to xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
28369
diff
changeset
|
3931 select_palette (f, hdc); |
|
8e2be36bb1c6
Format and doc changes to bring closer to xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
28369
diff
changeset
|
3932 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
|
3933 deselect_palette (f, hdc); |
|
8e2be36bb1c6
Format and doc changes to bring closer to xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
28369
diff
changeset
|
3934 |
|
8e2be36bb1c6
Format and doc changes to bring closer to xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
28369
diff
changeset
|
3935 ReleaseDC (window, hdc); |
|
8e2be36bb1c6
Format and doc changes to bring closer to xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
28369
diff
changeset
|
3936 } |
|
15151
ed6ddfc0d954
(Vwindow_system): Declared.
Geoff Voelker <voelker@cs.washington.edu>
parents:
15035
diff
changeset
|
3937 } |
|
ed6ddfc0d954
(Vwindow_system): Declared.
Geoff Voelker <voelker@cs.washington.edu>
parents:
15035
diff
changeset
|
3938 |
| 13434 | 3939 |
|
16588
481b7874a1e9
Change identifiers of the form win32* to w32*.
Geoff Voelker <voelker@cs.washington.edu>
parents:
16326
diff
changeset
|
3940 /* The main W32 event-reading loop - w32_read_socket. */ |
| 13434 | 3941 |
| 3942 /* Record the last 100 characters stored | |
| 3943 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
|
3944 |
|
8e2be36bb1c6
Format and doc changes to bring closer to xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
28369
diff
changeset
|
3945 static int temp_index; |
|
8e2be36bb1c6
Format and doc changes to bring closer to xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
28369
diff
changeset
|
3946 static short temp_buffer[100]; |
| 13434 | 3947 |
|
79565
bfdbb60ac756
(w32_read_socket): Use MULTIBYTE_CHAR_KEYSTROKE_EVENT for characters above 127.
Jason Rumney <jasonr@gnu.org>
parents:
79301
diff
changeset
|
3948 /* 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
|
3949 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
|
3950 |
|
16588
481b7874a1e9
Change identifiers of the form win32* to w32*.
Geoff Voelker <voelker@cs.washington.edu>
parents:
16326
diff
changeset
|
3951 /* Read events coming from the W32 shell. |
| 13434 | 3952 This routine is called by the SIGIO handler. |
| 3953 We return as soon as there are no more events to be read. | |
| 3954 | |
| 3955 We return the number of characters stored into the buffer, | |
| 3956 thus pretending to be `read'. | |
| 3957 | |
|
48218
01e253345507
(w32_draw_fringe_bitmap): Remove unused local variable window.
Juanma Barranquero <lekktu@gmail.com>
parents:
48025
diff
changeset
|
3958 EXPECTED is nonzero if the caller knows input is available. |
| 13434 | 3959 |
| 3960 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
|
3961 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
|
3962 the data nor can we guarantee the state we are in. So if we dispatch them |
| 13434 | 3963 we will get into an infinite loop. To prevent this from ever happening we |
| 3964 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
|
3965 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
|
3966 recursively with different messages by the system. |
| 13434 | 3967 */ |
| 3968 | |
| 3969 int | |
|
54171
f6909a416c3f
(w32_read_socket): Remove bufp_r and numcharsp args.
Kim F. Storm <storm@cua.dk>
parents:
54126
diff
changeset
|
3970 w32_read_socket (sd, expected, hold_quit) |
| 13434 | 3971 register int sd; |
| 3972 int expected; | |
|
54171
f6909a416c3f
(w32_read_socket): Remove bufp_r and numcharsp args.
Kim F. Storm <storm@cua.dk>
parents:
54126
diff
changeset
|
3973 struct input_event *hold_quit; |
| 13434 | 3974 { |
| 3975 int count = 0; | |
|
19713
043ccce224fb
(SIF_*): Win95 macros defined for NT.
Geoff Voelker <voelker@cs.washington.edu>
parents:
18877
diff
changeset
|
3976 int check_visibility = 0; |
|
16588
481b7874a1e9
Change identifiers of the form win32* to w32*.
Geoff Voelker <voelker@cs.washington.edu>
parents:
16326
diff
changeset
|
3977 W32Msg msg; |
| 13434 | 3978 struct frame *f; |
|
16588
481b7874a1e9
Change identifiers of the form win32* to w32*.
Geoff Voelker <voelker@cs.washington.edu>
parents:
16326
diff
changeset
|
3979 struct w32_display_info *dpyinfo = &one_w32_display_info; |
| 13434 | 3980 |
| 3981 if (interrupt_input_blocked) | |
| 3982 { | |
| 3983 interrupt_input_pending = 1; | |
| 3984 return -1; | |
| 3985 } | |
| 3986 | |
| 3987 interrupt_input_pending = 0; | |
| 3988 BLOCK_INPUT; | |
| 3989 | |
| 3990 /* So people can tell when we have read the available input. */ | |
| 3991 input_signal_count++; | |
| 3992 | |
|
55286
b4bf3dd67827
(x_draw_hollow_cursor): Sync with xterm.c
Jason Rumney <jasonr@gnu.org>
parents:
55026
diff
changeset
|
3993 /* TODO: ghostscript integration. */ |
|
15151
ed6ddfc0d954
(Vwindow_system): Declared.
Geoff Voelker <voelker@cs.washington.edu>
parents:
15035
diff
changeset
|
3994 while (get_next_msg (&msg, FALSE)) |
| 13434 | 3995 { |
|
54171
f6909a416c3f
(w32_read_socket): Remove bufp_r and numcharsp args.
Kim F. Storm <storm@cua.dk>
parents:
54126
diff
changeset
|
3996 struct input_event inev; |
|
f6909a416c3f
(w32_read_socket): Remove bufp_r and numcharsp args.
Kim F. Storm <storm@cua.dk>
parents:
54126
diff
changeset
|
3997 int do_help = 0; |
|
f6909a416c3f
(w32_read_socket): Remove bufp_r and numcharsp args.
Kim F. Storm <storm@cua.dk>
parents:
54126
diff
changeset
|
3998 |
|
f6909a416c3f
(w32_read_socket): Remove bufp_r and numcharsp args.
Kim F. Storm <storm@cua.dk>
parents:
54126
diff
changeset
|
3999 EVENT_INIT (inev); |
|
f6909a416c3f
(w32_read_socket): Remove bufp_r and numcharsp args.
Kim F. Storm <storm@cua.dk>
parents:
54126
diff
changeset
|
4000 inev.kind = NO_EVENT; |
|
f6909a416c3f
(w32_read_socket): Remove bufp_r and numcharsp args.
Kim F. Storm <storm@cua.dk>
parents:
54126
diff
changeset
|
4001 inev.arg = Qnil; |
|
f6909a416c3f
(w32_read_socket): Remove bufp_r and numcharsp args.
Kim F. Storm <storm@cua.dk>
parents:
54126
diff
changeset
|
4002 |
| 13434 | 4003 switch (msg.msg.message) |
| 4004 { | |
| 4005 case WM_PAINT: | |
|
40137
5f0d7d58283b
(remember_mouse_glyph): New function.
Jason Rumney <jasonr@gnu.org>
parents:
40078
diff
changeset
|
4006 f = x_window_to_frame (dpyinfo, msg.msg.hwnd); |
|
5f0d7d58283b
(remember_mouse_glyph): New function.
Jason Rumney <jasonr@gnu.org>
parents:
40078
diff
changeset
|
4007 |
|
48218
01e253345507
(w32_draw_fringe_bitmap): Remove unused local variable window.
Juanma Barranquero <lekktu@gmail.com>
parents:
48025
diff
changeset
|
4008 if (f) |
|
40137
5f0d7d58283b
(remember_mouse_glyph): New function.
Jason Rumney <jasonr@gnu.org>
parents:
40078
diff
changeset
|
4009 { |
|
5f0d7d58283b
(remember_mouse_glyph): New function.
Jason Rumney <jasonr@gnu.org>
parents:
40078
diff
changeset
|
4010 if (msg.rect.right == msg.rect.left || |
|
5f0d7d58283b
(remember_mouse_glyph): New function.
Jason Rumney <jasonr@gnu.org>
parents:
40078
diff
changeset
|
4011 msg.rect.bottom == msg.rect.top) |
|
5f0d7d58283b
(remember_mouse_glyph): New function.
Jason Rumney <jasonr@gnu.org>
parents:
40078
diff
changeset
|
4012 { |
|
5f0d7d58283b
(remember_mouse_glyph): New function.
Jason Rumney <jasonr@gnu.org>
parents:
40078
diff
changeset
|
4013 /* We may get paint messages even though the client |
|
5f0d7d58283b
(remember_mouse_glyph): New function.
Jason Rumney <jasonr@gnu.org>
parents:
40078
diff
changeset
|
4014 area is clipped - these are not expose events. */ |
|
5f0d7d58283b
(remember_mouse_glyph): New function.
Jason Rumney <jasonr@gnu.org>
parents:
40078
diff
changeset
|
4015 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
|
4016 SDATA (f->name))); |
|
40137
5f0d7d58283b
(remember_mouse_glyph): New function.
Jason Rumney <jasonr@gnu.org>
parents:
40078
diff
changeset
|
4017 } |
|
5f0d7d58283b
(remember_mouse_glyph): New function.
Jason Rumney <jasonr@gnu.org>
parents:
40078
diff
changeset
|
4018 else if (f->async_visible != 1) |
|
5f0d7d58283b
(remember_mouse_glyph): New function.
Jason Rumney <jasonr@gnu.org>
parents:
40078
diff
changeset
|
4019 { |
|
5f0d7d58283b
(remember_mouse_glyph): New function.
Jason Rumney <jasonr@gnu.org>
parents:
40078
diff
changeset
|
4020 /* Definitely not obscured, so mark as visible. */ |
|
5f0d7d58283b
(remember_mouse_glyph): New function.
Jason Rumney <jasonr@gnu.org>
parents:
40078
diff
changeset
|
4021 f->async_visible = 1; |
|
5f0d7d58283b
(remember_mouse_glyph): New function.
Jason Rumney <jasonr@gnu.org>
parents:
40078
diff
changeset
|
4022 f->async_iconified = 0; |
|
5f0d7d58283b
(remember_mouse_glyph): New function.
Jason Rumney <jasonr@gnu.org>
parents:
40078
diff
changeset
|
4023 SET_FRAME_GARBAGED (f); |
|
5f0d7d58283b
(remember_mouse_glyph): New function.
Jason Rumney <jasonr@gnu.org>
parents:
40078
diff
changeset
|
4024 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
|
4025 SDATA (f->name))); |
|
40137
5f0d7d58283b
(remember_mouse_glyph): New function.
Jason Rumney <jasonr@gnu.org>
parents:
40078
diff
changeset
|
4026 |
|
5f0d7d58283b
(remember_mouse_glyph): New function.
Jason Rumney <jasonr@gnu.org>
parents:
40078
diff
changeset
|
4027 /* WM_PAINT serves as MapNotify as well, so report |
|
5f0d7d58283b
(remember_mouse_glyph): New function.
Jason Rumney <jasonr@gnu.org>
parents:
40078
diff
changeset
|
4028 visibility changes properly. */ |
|
5f0d7d58283b
(remember_mouse_glyph): New function.
Jason Rumney <jasonr@gnu.org>
parents:
40078
diff
changeset
|
4029 if (f->iconified) |
|
5f0d7d58283b
(remember_mouse_glyph): New function.
Jason Rumney <jasonr@gnu.org>
parents:
40078
diff
changeset
|
4030 { |
|
54171
f6909a416c3f
(w32_read_socket): Remove bufp_r and numcharsp args.
Kim F. Storm <storm@cua.dk>
parents:
54126
diff
changeset
|
4031 inev.kind = DEICONIFY_EVENT; |
|
f6909a416c3f
(w32_read_socket): Remove bufp_r and numcharsp args.
Kim F. Storm <storm@cua.dk>
parents:
54126
diff
changeset
|
4032 XSETFRAME (inev.frame_or_window, f); |
|
40137
5f0d7d58283b
(remember_mouse_glyph): New function.
Jason Rumney <jasonr@gnu.org>
parents:
40078
diff
changeset
|
4033 } |
|
5f0d7d58283b
(remember_mouse_glyph): New function.
Jason Rumney <jasonr@gnu.org>
parents:
40078
diff
changeset
|
4034 else if (! NILP (Vframe_list) |
|
5f0d7d58283b
(remember_mouse_glyph): New function.
Jason Rumney <jasonr@gnu.org>
parents:
40078
diff
changeset
|
4035 && ! NILP (XCDR (Vframe_list))) |
|
5f0d7d58283b
(remember_mouse_glyph): New function.
Jason Rumney <jasonr@gnu.org>
parents:
40078
diff
changeset
|
4036 /* Force a redisplay sooner or later to update the |
|
5f0d7d58283b
(remember_mouse_glyph): New function.
Jason Rumney <jasonr@gnu.org>
parents:
40078
diff
changeset
|
4037 frame titles in case this is the second frame. */ |
|
5f0d7d58283b
(remember_mouse_glyph): New function.
Jason Rumney <jasonr@gnu.org>
parents:
40078
diff
changeset
|
4038 record_asynch_buffer_change (); |
|
5f0d7d58283b
(remember_mouse_glyph): New function.
Jason Rumney <jasonr@gnu.org>
parents:
40078
diff
changeset
|
4039 } |
|
5f0d7d58283b
(remember_mouse_glyph): New function.
Jason Rumney <jasonr@gnu.org>
parents:
40078
diff
changeset
|
4040 else |
|
5f0d7d58283b
(remember_mouse_glyph): New function.
Jason Rumney <jasonr@gnu.org>
parents:
40078
diff
changeset
|
4041 { |
|
5f0d7d58283b
(remember_mouse_glyph): New function.
Jason Rumney <jasonr@gnu.org>
parents:
40078
diff
changeset
|
4042 HDC hdc = get_frame_dc (f); |
|
5f0d7d58283b
(remember_mouse_glyph): New function.
Jason Rumney <jasonr@gnu.org>
parents:
40078
diff
changeset
|
4043 |
|
5f0d7d58283b
(remember_mouse_glyph): New function.
Jason Rumney <jasonr@gnu.org>
parents:
40078
diff
changeset
|
4044 /* Erase background again for safety. */ |
|
5f0d7d58283b
(remember_mouse_glyph): New function.
Jason Rumney <jasonr@gnu.org>
parents:
40078
diff
changeset
|
4045 w32_clear_rect (f, hdc, &msg.rect); |
|
5f0d7d58283b
(remember_mouse_glyph): New function.
Jason Rumney <jasonr@gnu.org>
parents:
40078
diff
changeset
|
4046 release_frame_dc (f, hdc); |
|
5f0d7d58283b
(remember_mouse_glyph): New function.
Jason Rumney <jasonr@gnu.org>
parents:
40078
diff
changeset
|
4047 expose_frame (f, |
|
5f0d7d58283b
(remember_mouse_glyph): New function.
Jason Rumney <jasonr@gnu.org>
parents:
40078
diff
changeset
|
4048 msg.rect.left, |
|
5f0d7d58283b
(remember_mouse_glyph): New function.
Jason Rumney <jasonr@gnu.org>
parents:
40078
diff
changeset
|
4049 msg.rect.top, |
|
5f0d7d58283b
(remember_mouse_glyph): New function.
Jason Rumney <jasonr@gnu.org>
parents:
40078
diff
changeset
|
4050 msg.rect.right - msg.rect.left, |
|
5f0d7d58283b
(remember_mouse_glyph): New function.
Jason Rumney <jasonr@gnu.org>
parents:
40078
diff
changeset
|
4051 msg.rect.bottom - msg.rect.top); |
|
5f0d7d58283b
(remember_mouse_glyph): New function.
Jason Rumney <jasonr@gnu.org>
parents:
40078
diff
changeset
|
4052 } |
|
5f0d7d58283b
(remember_mouse_glyph): New function.
Jason Rumney <jasonr@gnu.org>
parents:
40078
diff
changeset
|
4053 } |
|
15151
ed6ddfc0d954
(Vwindow_system): Declared.
Geoff Voelker <voelker@cs.washington.edu>
parents:
15035
diff
changeset
|
4054 break; |
|
19713
043ccce224fb
(SIF_*): Win95 macros defined for NT.
Geoff Voelker <voelker@cs.washington.edu>
parents:
18877
diff
changeset
|
4055 |
|
23677
70999481c915
(convert_to_key_event): Removed.
Geoff Voelker <voelker@cs.washington.edu>
parents:
23639
diff
changeset
|
4056 case WM_INPUTLANGCHANGE: |
|
70999481c915
(convert_to_key_event): Removed.
Geoff Voelker <voelker@cs.washington.edu>
parents:
23639
diff
changeset
|
4057 /* Generate a language change event. */ |
|
70999481c915
(convert_to_key_event): Removed.
Geoff Voelker <voelker@cs.washington.edu>
parents:
23639
diff
changeset
|
4058 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
|
4059 |
|
70999481c915
(convert_to_key_event): Removed.
Geoff Voelker <voelker@cs.washington.edu>
parents:
23639
diff
changeset
|
4060 if (f) |
|
70999481c915
(convert_to_key_event): Removed.
Geoff Voelker <voelker@cs.washington.edu>
parents:
23639
diff
changeset
|
4061 { |
|
54171
f6909a416c3f
(w32_read_socket): Remove bufp_r and numcharsp args.
Kim F. Storm <storm@cua.dk>
parents:
54126
diff
changeset
|
4062 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
|
4063 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
|
4064 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
|
4065 inev.modifiers = msg.msg.lParam & 0xffff; |
|
23677
70999481c915
(convert_to_key_event): Removed.
Geoff Voelker <voelker@cs.washington.edu>
parents:
23639
diff
changeset
|
4066 } |
|
70999481c915
(convert_to_key_event): Removed.
Geoff Voelker <voelker@cs.washington.edu>
parents:
23639
diff
changeset
|
4067 break; |
|
70999481c915
(convert_to_key_event): Removed.
Geoff Voelker <voelker@cs.washington.edu>
parents:
23639
diff
changeset
|
4068 |
| 13434 | 4069 case WM_KEYDOWN: |
| 4070 case WM_SYSKEYDOWN: | |
| 4071 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
|
4072 |
| 13434 | 4073 if (f && !f->iconified) |
| 4074 { | |
|
69662
646410df27a7
(w32_read_socket): Don't let key-press clear mouse face
Kim F. Storm <storm@cua.dk>
parents:
69441
diff
changeset
|
4075 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
|
4076 && !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
|
4077 { |
|
54731
4031909001d5
(w32_read_socket): Set mouse_face_hidden after clearing highlight.
Kim F. Storm <storm@cua.dk>
parents:
54225
diff
changeset
|
4078 clear_mouse_face (dpyinfo); |
|
43373
44e2e2c9154f
(disable_mouse_highlight): Removed variable.
Kim F. Storm <storm@cua.dk>
parents:
43146
diff
changeset
|
4079 dpyinfo->mouse_face_hidden = 1; |
|
44e2e2c9154f
(disable_mouse_highlight): Removed variable.
Kim F. Storm <storm@cua.dk>
parents:
43146
diff
changeset
|
4080 } |
|
44e2e2c9154f
(disable_mouse_highlight): Removed variable.
Kim F. Storm <storm@cua.dk>
parents:
43146
diff
changeset
|
4081 |
| 13434 | 4082 if (temp_index == sizeof temp_buffer / sizeof (short)) |
| 4083 temp_index = 0; | |
| 4084 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
|
4085 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
|
4086 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
|
4087 inev.modifiers = msg.dwModifiers; |
|
f6909a416c3f
(w32_read_socket): Remove bufp_r and numcharsp args.
Kim F. Storm <storm@cua.dk>
parents:
54126
diff
changeset
|
4088 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
|
4089 inev.timestamp = msg.msg.time; |
| 13434 | 4090 } |
| 4091 break; | |
|
19713
043ccce224fb
(SIF_*): Win95 macros defined for NT.
Geoff Voelker <voelker@cs.washington.edu>
parents:
18877
diff
changeset
|
4092 |
|
91098
bbf4813494da
(w32_read_socket) [WM_UNICHAR]: Handle as MULTIBYTE_CHAR_KEYSTROKE_EVENT.
Jason Rumney <jasonr@gnu.org>
parents:
91085
diff
changeset
|
4093 case WM_UNICHAR: |
| 13434 | 4094 case WM_SYSCHAR: |
| 4095 case WM_CHAR: | |
| 4096 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
|
4097 |
| 13434 | 4098 if (f && !f->iconified) |
| 4099 { | |
|
69662
646410df27a7
(w32_read_socket): Don't let key-press clear mouse face
Kim F. Storm <storm@cua.dk>
parents:
69441
diff
changeset
|
4100 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
|
4101 && !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
|
4102 { |
|
54731
4031909001d5
(w32_read_socket): Set mouse_face_hidden after clearing highlight.
Kim F. Storm <storm@cua.dk>
parents:
54225
diff
changeset
|
4103 clear_mouse_face (dpyinfo); |
|
43373
44e2e2c9154f
(disable_mouse_highlight): Removed variable.
Kim F. Storm <storm@cua.dk>
parents:
43146
diff
changeset
|
4104 dpyinfo->mouse_face_hidden = 1; |
|
44e2e2c9154f
(disable_mouse_highlight): Removed variable.
Kim F. Storm <storm@cua.dk>
parents:
43146
diff
changeset
|
4105 } |
|
44e2e2c9154f
(disable_mouse_highlight): Removed variable.
Kim F. Storm <storm@cua.dk>
parents:
43146
diff
changeset
|
4106 |
|
23677
70999481c915
(convert_to_key_event): Removed.
Geoff Voelker <voelker@cs.washington.edu>
parents:
23639
diff
changeset
|
4107 if (temp_index == sizeof temp_buffer / sizeof (short)) |
|
70999481c915
(convert_to_key_event): Removed.
Geoff Voelker <voelker@cs.washington.edu>
parents:
23639
diff
changeset
|
4108 temp_index = 0; |
|
70999481c915
(convert_to_key_event): Removed.
Geoff Voelker <voelker@cs.washington.edu>
parents:
23639
diff
changeset
|
4109 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
|
4110 |
|
4c4c06eecf22
(w32_read_socket) <WM_CHAR>: Decode non-Unicode
Jason Rumney <jasonr@gnu.org>
parents:
91327
diff
changeset
|
4111 inev.modifiers = msg.dwModifiers; |
|
4c4c06eecf22
(w32_read_socket) <WM_CHAR>: Decode non-Unicode
Jason Rumney <jasonr@gnu.org>
parents:
91327
diff
changeset
|
4112 XSETFRAME (inev.frame_or_window, f); |
|
4c4c06eecf22
(w32_read_socket) <WM_CHAR>: Decode non-Unicode
Jason Rumney <jasonr@gnu.org>
parents:
91327
diff
changeset
|
4113 inev.timestamp = msg.msg.time; |
|
4c4c06eecf22
(w32_read_socket) <WM_CHAR>: Decode non-Unicode
Jason Rumney <jasonr@gnu.org>
parents:
91327
diff
changeset
|
4114 |
|
91098
bbf4813494da
(w32_read_socket) [WM_UNICHAR]: Handle as MULTIBYTE_CHAR_KEYSTROKE_EVENT.
Jason Rumney <jasonr@gnu.org>
parents:
91085
diff
changeset
|
4115 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
|
4116 { |
|
bbf4813494da
(w32_read_socket) [WM_UNICHAR]: Handle as MULTIBYTE_CHAR_KEYSTROKE_EVENT.
Jason Rumney <jasonr@gnu.org>
parents:
91085
diff
changeset
|
4117 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
|
4118 } |
|
91369
4c4c06eecf22
(w32_read_socket) <WM_CHAR>: Decode non-Unicode
Jason Rumney <jasonr@gnu.org>
parents:
91327
diff
changeset
|
4119 else if (msg.msg.wParam < 256) |
|
4c4c06eecf22
(w32_read_socket) <WM_CHAR>: Decode non-Unicode
Jason Rumney <jasonr@gnu.org>
parents:
91327
diff
changeset
|
4120 { |
|
4c4c06eecf22
(w32_read_socket) <WM_CHAR>: Decode non-Unicode
Jason Rumney <jasonr@gnu.org>
parents:
91327
diff
changeset
|
4121 wchar_t code; |
|
4c4c06eecf22
(w32_read_socket) <WM_CHAR>: Decode non-Unicode
Jason Rumney <jasonr@gnu.org>
parents:
91327
diff
changeset
|
4122 char dbcs[2]; |
|
4c4c06eecf22
(w32_read_socket) <WM_CHAR>: Decode non-Unicode
Jason Rumney <jasonr@gnu.org>
parents:
91327
diff
changeset
|
4123 dbcs[0] = 0; |
|
4c4c06eecf22
(w32_read_socket) <WM_CHAR>: Decode non-Unicode
Jason Rumney <jasonr@gnu.org>
parents:
91327
diff
changeset
|
4124 dbcs[1] = (char) msg.msg.wParam; |
|
4c4c06eecf22
(w32_read_socket) <WM_CHAR>: Decode non-Unicode
Jason Rumney <jasonr@gnu.org>
parents:
91327
diff
changeset
|
4125 |
|
4c4c06eecf22
(w32_read_socket) <WM_CHAR>: Decode non-Unicode
Jason Rumney <jasonr@gnu.org>
parents:
91327
diff
changeset
|
4126 if (dbcs_lead) |
|
4c4c06eecf22
(w32_read_socket) <WM_CHAR>: Decode non-Unicode
Jason Rumney <jasonr@gnu.org>
parents:
91327
diff
changeset
|
4127 { |
|
4c4c06eecf22
(w32_read_socket) <WM_CHAR>: Decode non-Unicode
Jason Rumney <jasonr@gnu.org>
parents:
91327
diff
changeset
|
4128 dbcs[0] = dbcs_lead; |
|
4c4c06eecf22
(w32_read_socket) <WM_CHAR>: Decode non-Unicode
Jason Rumney <jasonr@gnu.org>
parents:
91327
diff
changeset
|
4129 dbcs_lead = 0; |
|
4c4c06eecf22
(w32_read_socket) <WM_CHAR>: Decode non-Unicode
Jason Rumney <jasonr@gnu.org>
parents:
91327
diff
changeset
|
4130 if (!MultiByteToWideChar (CP_ACP, 0, dbcs, 2, &code, 1)) |
|
4c4c06eecf22
(w32_read_socket) <WM_CHAR>: Decode non-Unicode
Jason Rumney <jasonr@gnu.org>
parents:
91327
diff
changeset
|
4131 { |
|
4c4c06eecf22
(w32_read_socket) <WM_CHAR>: Decode non-Unicode
Jason Rumney <jasonr@gnu.org>
parents:
91327
diff
changeset
|
4132 /* Garbage */ |
|
4c4c06eecf22
(w32_read_socket) <WM_CHAR>: Decode non-Unicode
Jason Rumney <jasonr@gnu.org>
parents:
91327
diff
changeset
|
4133 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
|
4134 dbcs[0], dbcs[1])); |
|
4c4c06eecf22
(w32_read_socket) <WM_CHAR>: Decode non-Unicode
Jason Rumney <jasonr@gnu.org>
parents:
91327
diff
changeset
|
4135 inev.kind = NO_EVENT; |
|
4c4c06eecf22
(w32_read_socket) <WM_CHAR>: Decode non-Unicode
Jason Rumney <jasonr@gnu.org>
parents:
91327
diff
changeset
|
4136 break; |
|
4c4c06eecf22
(w32_read_socket) <WM_CHAR>: Decode non-Unicode
Jason Rumney <jasonr@gnu.org>
parents:
91327
diff
changeset
|
4137 } |
|
4c4c06eecf22
(w32_read_socket) <WM_CHAR>: Decode non-Unicode
Jason Rumney <jasonr@gnu.org>
parents:
91327
diff
changeset
|
4138 } |
|
4c4c06eecf22
(w32_read_socket) <WM_CHAR>: Decode non-Unicode
Jason Rumney <jasonr@gnu.org>
parents:
91327
diff
changeset
|
4139 else if (IsDBCSLeadByteEx (CP_ACP, (BYTE) msg.msg.wParam)) |
|
4c4c06eecf22
(w32_read_socket) <WM_CHAR>: Decode non-Unicode
Jason Rumney <jasonr@gnu.org>
parents:
91327
diff
changeset
|
4140 { |
|
4c4c06eecf22
(w32_read_socket) <WM_CHAR>: Decode non-Unicode
Jason Rumney <jasonr@gnu.org>
parents:
91327
diff
changeset
|
4141 dbcs_lead = (char) msg.msg.wParam; |
|
4c4c06eecf22
(w32_read_socket) <WM_CHAR>: Decode non-Unicode
Jason Rumney <jasonr@gnu.org>
parents:
91327
diff
changeset
|
4142 inev.kind = NO_EVENT; |
|
4c4c06eecf22
(w32_read_socket) <WM_CHAR>: Decode non-Unicode
Jason Rumney <jasonr@gnu.org>
parents:
91327
diff
changeset
|
4143 break; |
|
4c4c06eecf22
(w32_read_socket) <WM_CHAR>: Decode non-Unicode
Jason Rumney <jasonr@gnu.org>
parents:
91327
diff
changeset
|
4144 } |
|
4c4c06eecf22
(w32_read_socket) <WM_CHAR>: Decode non-Unicode
Jason Rumney <jasonr@gnu.org>
parents:
91327
diff
changeset
|
4145 else |
|
4c4c06eecf22
(w32_read_socket) <WM_CHAR>: Decode non-Unicode
Jason Rumney <jasonr@gnu.org>
parents:
91327
diff
changeset
|
4146 { |
|
4c4c06eecf22
(w32_read_socket) <WM_CHAR>: Decode non-Unicode
Jason Rumney <jasonr@gnu.org>
parents:
91327
diff
changeset
|
4147 if (!MultiByteToWideChar (CP_ACP, 0, &dbcs[1], 1, |
|
4c4c06eecf22
(w32_read_socket) <WM_CHAR>: Decode non-Unicode
Jason Rumney <jasonr@gnu.org>
parents:
91327
diff
changeset
|
4148 &code, 1)) |
|
4c4c06eecf22
(w32_read_socket) <WM_CHAR>: Decode non-Unicode
Jason Rumney <jasonr@gnu.org>
parents:
91327
diff
changeset
|
4149 { |
|
4c4c06eecf22
(w32_read_socket) <WM_CHAR>: Decode non-Unicode
Jason Rumney <jasonr@gnu.org>
parents:
91327
diff
changeset
|
4150 /* What to do with garbage? */ |
|
4c4c06eecf22
(w32_read_socket) <WM_CHAR>: Decode non-Unicode
Jason Rumney <jasonr@gnu.org>
parents:
91327
diff
changeset
|
4151 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
|
4152 inev.kind = NO_EVENT; |
|
4c4c06eecf22
(w32_read_socket) <WM_CHAR>: Decode non-Unicode
Jason Rumney <jasonr@gnu.org>
parents:
91327
diff
changeset
|
4153 break; |
|
4c4c06eecf22
(w32_read_socket) <WM_CHAR>: Decode non-Unicode
Jason Rumney <jasonr@gnu.org>
parents:
91327
diff
changeset
|
4154 } |
|
4c4c06eecf22
(w32_read_socket) <WM_CHAR>: Decode non-Unicode
Jason Rumney <jasonr@gnu.org>
parents:
91327
diff
changeset
|
4155 } |
|
4c4c06eecf22
(w32_read_socket) <WM_CHAR>: Decode non-Unicode
Jason Rumney <jasonr@gnu.org>
parents:
91327
diff
changeset
|
4156 inev.code = code; |
|
4c4c06eecf22
(w32_read_socket) <WM_CHAR>: Decode non-Unicode
Jason Rumney <jasonr@gnu.org>
parents:
91327
diff
changeset
|
4157 } |
|
91098
bbf4813494da
(w32_read_socket) [WM_UNICHAR]: Handle as MULTIBYTE_CHAR_KEYSTROKE_EVENT.
Jason Rumney <jasonr@gnu.org>
parents:
91085
diff
changeset
|
4158 else |
|
79565
bfdbb60ac756
(w32_read_socket): Use MULTIBYTE_CHAR_KEYSTROKE_EVENT for characters above 127.
Jason Rumney <jasonr@gnu.org>
parents:
79301
diff
changeset
|
4159 { |
|
91369
4c4c06eecf22
(w32_read_socket) <WM_CHAR>: Decode non-Unicode
Jason Rumney <jasonr@gnu.org>
parents:
91327
diff
changeset
|
4160 /* 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
|
4161 in non-Unicode message handlers. */ |
|
4c4c06eecf22
(w32_read_socket) <WM_CHAR>: Decode non-Unicode
Jason Rumney <jasonr@gnu.org>
parents:
91327
diff
changeset
|
4162 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
|
4163 inev.kind = NO_EVENT; |
|
4c4c06eecf22
(w32_read_socket) <WM_CHAR>: Decode non-Unicode
Jason Rumney <jasonr@gnu.org>
parents:
91327
diff
changeset
|
4164 break; |
|
79565
bfdbb60ac756
(w32_read_socket): Use MULTIBYTE_CHAR_KEYSTROKE_EVENT for characters above 127.
Jason Rumney <jasonr@gnu.org>
parents:
79301
diff
changeset
|
4165 } |
|
91369
4c4c06eecf22
(w32_read_socket) <WM_CHAR>: Decode non-Unicode
Jason Rumney <jasonr@gnu.org>
parents:
91327
diff
changeset
|
4166 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
|
4167 : MULTIBYTE_CHAR_KEYSTROKE_EVENT; |
| 13434 | 4168 } |
| 4169 break; | |
|
19713
043ccce224fb
(SIF_*): Win95 macros defined for NT.
Geoff Voelker <voelker@cs.washington.edu>
parents:
18877
diff
changeset
|
4170 |
|
85983
fbeab07144ff
(w32_scroll_bar_handle_click): Use SCROLL_BAR_CLICK_EVENT.
Jason Rumney <jasonr@gnu.org>
parents:
85850
diff
changeset
|
4171 case WM_APPCOMMAND: |
|
fbeab07144ff
(w32_scroll_bar_handle_click): Use SCROLL_BAR_CLICK_EVENT.
Jason Rumney <jasonr@gnu.org>
parents:
85850
diff
changeset
|
4172 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
|
4173 |
|
fbeab07144ff
(w32_scroll_bar_handle_click): Use SCROLL_BAR_CLICK_EVENT.
Jason Rumney <jasonr@gnu.org>
parents:
85850
diff
changeset
|
4174 if (f && !f->iconified) |
|
fbeab07144ff
(w32_scroll_bar_handle_click): Use SCROLL_BAR_CLICK_EVENT.
Jason Rumney <jasonr@gnu.org>
parents:
85850
diff
changeset
|
4175 { |
|
fbeab07144ff
(w32_scroll_bar_handle_click): Use SCROLL_BAR_CLICK_EVENT.
Jason Rumney <jasonr@gnu.org>
parents:
85850
diff
changeset
|
4176 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
|
4177 && !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
|
4178 { |
|
fbeab07144ff
(w32_scroll_bar_handle_click): Use SCROLL_BAR_CLICK_EVENT.
Jason Rumney <jasonr@gnu.org>
parents:
85850
diff
changeset
|
4179 clear_mouse_face (dpyinfo); |
|
fbeab07144ff
(w32_scroll_bar_handle_click): Use SCROLL_BAR_CLICK_EVENT.
Jason Rumney <jasonr@gnu.org>
parents:
85850
diff
changeset
|
4180 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
|
4181 } |
|
fbeab07144ff
(w32_scroll_bar_handle_click): Use SCROLL_BAR_CLICK_EVENT.
Jason Rumney <jasonr@gnu.org>
parents:
85850
diff
changeset
|
4182 |
|
fbeab07144ff
(w32_scroll_bar_handle_click): Use SCROLL_BAR_CLICK_EVENT.
Jason Rumney <jasonr@gnu.org>
parents:
85850
diff
changeset
|
4183 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
|
4184 temp_index = 0; |
|
fbeab07144ff
(w32_scroll_bar_handle_click): Use SCROLL_BAR_CLICK_EVENT.
Jason Rumney <jasonr@gnu.org>
parents:
85850
diff
changeset
|
4185 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
|
4186 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
|
4187 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
|
4188 inev.modifiers = msg.dwModifiers; |
|
fbeab07144ff
(w32_scroll_bar_handle_click): Use SCROLL_BAR_CLICK_EVENT.
Jason Rumney <jasonr@gnu.org>
parents:
85850
diff
changeset
|
4189 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
|
4190 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
|
4191 } |
|
fbeab07144ff
(w32_scroll_bar_handle_click): Use SCROLL_BAR_CLICK_EVENT.
Jason Rumney <jasonr@gnu.org>
parents:
85850
diff
changeset
|
4192 break; |
|
95170
194ed5c5c97e
Fix typo in comment.
Juanma Barranquero <lekktu@gmail.com>
parents:
94970
diff
changeset
|
4193 |
| 13434 | 4194 case WM_MOUSEMOVE: |
|
48819
c7fb53597300
(last_mousemove_x, last_mousemove_y): New variables.
Jason Rumney <jasonr@gnu.org>
parents:
48360
diff
changeset
|
4195 /* Ignore non-movement. */ |
|
c7fb53597300
(last_mousemove_x, last_mousemove_y): New variables.
Jason Rumney <jasonr@gnu.org>
parents:
48360
diff
changeset
|
4196 { |
|
c7fb53597300
(last_mousemove_x, last_mousemove_y): New variables.
Jason Rumney <jasonr@gnu.org>
parents:
48360
diff
changeset
|
4197 int x = LOWORD (msg.msg.lParam); |
|
c7fb53597300
(last_mousemove_x, last_mousemove_y): New variables.
Jason Rumney <jasonr@gnu.org>
parents:
48360
diff
changeset
|
4198 int y = HIWORD (msg.msg.lParam); |
|
c7fb53597300
(last_mousemove_x, last_mousemove_y): New variables.
Jason Rumney <jasonr@gnu.org>
parents:
48360
diff
changeset
|
4199 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
|
4200 break; |
|
c7fb53597300
(last_mousemove_x, last_mousemove_y): New variables.
Jason Rumney <jasonr@gnu.org>
parents:
48360
diff
changeset
|
4201 last_mousemove_x = x; |
|
c7fb53597300
(last_mousemove_x, last_mousemove_y): New variables.
Jason Rumney <jasonr@gnu.org>
parents:
48360
diff
changeset
|
4202 last_mousemove_y = y; |
|
c7fb53597300
(last_mousemove_x, last_mousemove_y): New variables.
Jason Rumney <jasonr@gnu.org>
parents:
48360
diff
changeset
|
4203 } |
|
c7fb53597300
(last_mousemove_x, last_mousemove_y): New variables.
Jason Rumney <jasonr@gnu.org>
parents:
48360
diff
changeset
|
4204 |
|
50231
c8ea5e4b2129
* w32term.c: Remove consolidated defines and code.
Kim F. Storm <storm@cua.dk>
parents:
50163
diff
changeset
|
4205 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
|
4206 help_echo_string = Qnil; |
|
27402
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
4207 |
| 13434 | 4208 if (dpyinfo->grabbed && last_mouse_frame |
| 4209 && FRAME_LIVE_P (last_mouse_frame)) | |
| 4210 f = last_mouse_frame; | |
| 4211 else | |
| 4212 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
|
4213 |
|
43373
44e2e2c9154f
(disable_mouse_highlight): Removed variable.
Kim F. Storm <storm@cua.dk>
parents:
43146
diff
changeset
|
4214 if (dpyinfo->mouse_face_hidden) |
|
44e2e2c9154f
(disable_mouse_highlight): Removed variable.
Kim F. Storm <storm@cua.dk>
parents:
43146
diff
changeset
|
4215 { |
|
44e2e2c9154f
(disable_mouse_highlight): Removed variable.
Kim F. Storm <storm@cua.dk>
parents:
43146
diff
changeset
|
4216 dpyinfo->mouse_face_hidden = 0; |
|
44e2e2c9154f
(disable_mouse_highlight): Removed variable.
Kim F. Storm <storm@cua.dk>
parents:
43146
diff
changeset
|
4217 clear_mouse_face (dpyinfo); |
|
44e2e2c9154f
(disable_mouse_highlight): Removed variable.
Kim F. Storm <storm@cua.dk>
parents:
43146
diff
changeset
|
4218 } |
|
44e2e2c9154f
(disable_mouse_highlight): Removed variable.
Kim F. Storm <storm@cua.dk>
parents:
43146
diff
changeset
|
4219 |
| 13434 | 4220 if (f) |
|
49393
85246e86a2cd
* w32term.c (x_draw_glyph_string_foreground)
Jason Rumney <jasonr@gnu.org>
parents:
49371
diff
changeset
|
4221 { |
|
85246e86a2cd
* w32term.c (x_draw_glyph_string_foreground)
Jason Rumney <jasonr@gnu.org>
parents:
49371
diff
changeset
|
4222 /* Generate SELECT_WINDOW_EVENTs when needed. */ |
|
72736
f6b18b9949d1
* xdisp.c (mouse_autoselect_window): Removed.
Chong Yidong <cyd@stupidchicken.com>
parents:
72505
diff
changeset
|
4223 if (!NILP (Vmouse_autoselect_window)) |
|
49393
85246e86a2cd
* w32term.c (x_draw_glyph_string_foreground)
Jason Rumney <jasonr@gnu.org>
parents:
49371
diff
changeset
|
4224 { |
|
85246e86a2cd
* w32term.c (x_draw_glyph_string_foreground)
Jason Rumney <jasonr@gnu.org>
parents:
49371
diff
changeset
|
4225 Lisp_Object window; |
|
85246e86a2cd
* w32term.c (x_draw_glyph_string_foreground)
Jason Rumney <jasonr@gnu.org>
parents:
49371
diff
changeset
|
4226 int x = LOWORD (msg.msg.lParam); |
|
85246e86a2cd
* w32term.c (x_draw_glyph_string_foreground)
Jason Rumney <jasonr@gnu.org>
parents:
49371
diff
changeset
|
4227 int y = HIWORD (msg.msg.lParam); |
|
85246e86a2cd
* w32term.c (x_draw_glyph_string_foreground)
Jason Rumney <jasonr@gnu.org>
parents:
49371
diff
changeset
|
4228 |
|
51204
082b768216a0
Make (several) trivial substitutions for renamed and
Kim F. Storm <storm@cua.dk>
parents:
50441
diff
changeset
|
4229 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
|
4230 |
|
85246e86a2cd
* w32term.c (x_draw_glyph_string_foreground)
Jason Rumney <jasonr@gnu.org>
parents:
49371
diff
changeset
|
4231 /* 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
|
4232 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
|
4233 not in it. Minibuffer window will be selected |
| 78501 | 4234 only when it is active. */ |
|
49393
85246e86a2cd
* w32term.c (x_draw_glyph_string_foreground)
Jason Rumney <jasonr@gnu.org>
parents:
49371
diff
changeset
|
4235 if (WINDOWP(window) |
|
85246e86a2cd
* w32term.c (x_draw_glyph_string_foreground)
Jason Rumney <jasonr@gnu.org>
parents:
49371
diff
changeset
|
4236 && !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
|
4237 && !EQ (window, selected_window) |
|
737206364a6e
(w32_read_socket): When focus_follows_mouse is nil make
Martin Rudalics <rudalics@gmx.at>
parents:
78858
diff
changeset
|
4238 /* 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
|
4239 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
|
4240 selected frame. */ |
|
737206364a6e
(w32_read_socket): When focus_follows_mouse is nil make
Martin Rudalics <rudalics@gmx.at>
parents:
78858
diff
changeset
|
4241 && (focus_follows_mouse |
|
737206364a6e
(w32_read_socket): When focus_follows_mouse is nil make
Martin Rudalics <rudalics@gmx.at>
parents:
78858
diff
changeset
|
4242 || (EQ (XWINDOW (window)->frame, |
|
737206364a6e
(w32_read_socket): When focus_follows_mouse is nil make
Martin Rudalics <rudalics@gmx.at>
parents:
78858
diff
changeset
|
4243 XWINDOW (selected_window)->frame)))) |
|
49393
85246e86a2cd
* w32term.c (x_draw_glyph_string_foreground)
Jason Rumney <jasonr@gnu.org>
parents:
49371
diff
changeset
|
4244 { |
|
54171
f6909a416c3f
(w32_read_socket): Remove bufp_r and numcharsp args.
Kim F. Storm <storm@cua.dk>
parents:
54126
diff
changeset
|
4245 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
|
4246 inev.frame_or_window = window; |
|
49393
85246e86a2cd
* w32term.c (x_draw_glyph_string_foreground)
Jason Rumney <jasonr@gnu.org>
parents:
49371
diff
changeset
|
4247 } |
|
85246e86a2cd
* w32term.c (x_draw_glyph_string_foreground)
Jason Rumney <jasonr@gnu.org>
parents:
49371
diff
changeset
|
4248 |
|
85246e86a2cd
* w32term.c (x_draw_glyph_string_foreground)
Jason Rumney <jasonr@gnu.org>
parents:
49371
diff
changeset
|
4249 last_window=window; |
|
85246e86a2cd
* w32term.c (x_draw_glyph_string_foreground)
Jason Rumney <jasonr@gnu.org>
parents:
49371
diff
changeset
|
4250 } |
|
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
|
4251 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
|
4252 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
|
4253 } |
| 13434 | 4254 else |
|
27402
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
4255 { |
|
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
4256 /* 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
|
4257 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
|
4258 clear_mouse_face (dpyinfo); |
|
27402
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
4259 } |
|
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
4260 |
|
50231
c8ea5e4b2129
* w32term.c: Remove consolidated defines and code.
Kim F. Storm <storm@cua.dk>
parents:
50163
diff
changeset
|
4261 /* 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
|
4262 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
|
4263 #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
|
4264 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
|
4265 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
|
4266 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
|
4267 (!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
|
4268 #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
|
4269 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
|
4270 || !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
|
4271 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
|
4272 #endif |
|
27402
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
4273 break; |
|
19713
043ccce224fb
(SIF_*): Win95 macros defined for NT.
Geoff Voelker <voelker@cs.washington.edu>
parents:
18877
diff
changeset
|
4274 |
| 13434 | 4275 case WM_LBUTTONDOWN: |
| 4276 case WM_LBUTTONUP: | |
| 4277 case WM_MBUTTONDOWN: | |
| 4278 case WM_MBUTTONUP: | |
| 4279 case WM_RBUTTONDOWN: | |
| 4280 case WM_RBUTTONUP: | |
|
42720
1217a83a82e4
(parse_button): New parameter xbutton. Callers changed.
Jason Rumney <jasonr@gnu.org>
parents:
42675
diff
changeset
|
4281 case WM_XBUTTONDOWN: |
|
1217a83a82e4
(parse_button): New parameter xbutton. Callers changed.
Jason Rumney <jasonr@gnu.org>
parents:
42675
diff
changeset
|
4282 case WM_XBUTTONUP: |
| 13434 | 4283 { |
|
27402
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
4284 /* 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
|
4285 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
|
4286 int tool_bar_p = 0; |
| 13434 | 4287 int button; |
| 4288 int up; | |
|
27402
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
4289 |
| 13434 | 4290 if (dpyinfo->grabbed && last_mouse_frame |
| 4291 && FRAME_LIVE_P (last_mouse_frame)) | |
| 4292 f = last_mouse_frame; | |
| 4293 else | |
| 4294 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
|
4295 |
| 13434 | 4296 if (f) |
| 4297 { | |
|
54171
f6909a416c3f
(w32_read_socket): Remove bufp_r and numcharsp args.
Kim F. Storm <storm@cua.dk>
parents:
54126
diff
changeset
|
4298 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
|
4299 |
|
27402
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
4300 /* Is this in the tool-bar? */ |
|
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
4301 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
|
4302 && 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
|
4303 { |
|
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
4304 Lisp_Object window; |
|
54171
f6909a416c3f
(w32_read_socket): Remove bufp_r and numcharsp args.
Kim F. Storm <storm@cua.dk>
parents:
54126
diff
changeset
|
4305 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
|
4306 int y = XFASTINT (inev.y); |
|
50231
c8ea5e4b2129
* w32term.c: Remove consolidated defines and code.
Kim F. Storm <storm@cua.dk>
parents:
50163
diff
changeset
|
4307 |
|
51204
082b768216a0
Make (several) trivial substitutions for renamed and
Kim F. Storm <storm@cua.dk>
parents:
50441
diff
changeset
|
4308 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
|
4309 |
|
27402
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
4310 if (EQ (window, f->tool_bar_window)) |
|
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
4311 { |
|
54171
f6909a416c3f
(w32_read_socket): Remove bufp_r and numcharsp args.
Kim F. Storm <storm@cua.dk>
parents:
54126
diff
changeset
|
4312 w32_handle_tool_bar_click (f, &inev); |
|
27402
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
4313 tool_bar_p = 1; |
|
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
4314 } |
|
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
4315 } |
|
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
4316 |
|
54171
f6909a416c3f
(w32_read_socket): Remove bufp_r and numcharsp args.
Kim F. Storm <storm@cua.dk>
parents:
54126
diff
changeset
|
4317 if (tool_bar_p |
|
f6909a416c3f
(w32_read_socket): Remove bufp_r and numcharsp args.
Kim F. Storm <storm@cua.dk>
parents:
54126
diff
changeset
|
4318 || (dpyinfo->w32_focus_frame |
|
54225
61ba665b1e90
(w32_read_socket): Fix last change to ButtonPress handling.
Jason Rumney <jasonr@gnu.org>
parents:
54171
diff
changeset
|
4319 && 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
|
4320 inev.kind = NO_EVENT; |
| 13434 | 4321 } |
|
48218
01e253345507
(w32_draw_fringe_bitmap): Remove unused local variable window.
Juanma Barranquero <lekktu@gmail.com>
parents:
48025
diff
changeset
|
4322 |
|
42720
1217a83a82e4
(parse_button): New parameter xbutton. Callers changed.
Jason Rumney <jasonr@gnu.org>
parents:
42675
diff
changeset
|
4323 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
|
4324 &button, &up); |
|
1217a83a82e4
(parse_button): New parameter xbutton. Callers changed.
Jason Rumney <jasonr@gnu.org>
parents:
42675
diff
changeset
|
4325 |
| 13434 | 4326 if (up) |
| 4327 { | |
| 4328 dpyinfo->grabbed &= ~ (1 << button); | |
| 4329 } | |
| 4330 else | |
| 4331 { | |
| 4332 dpyinfo->grabbed |= (1 << button); | |
| 4333 last_mouse_frame = f; | |
|
27402
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
4334 /* Ignore any mouse motion that happened |
|
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
4335 before this event; any subsequent mouse-movement |
|
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
4336 Emacs events should reflect only motion after |
|
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
4337 the ButtonPress. */ |
|
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
4338 if (f != 0) |
|
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
4339 f->mouse_moved = 0; |
|
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
4340 |
|
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
4341 if (!tool_bar_p) |
|
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
4342 last_tool_bar_item = -1; |
| 13434 | 4343 } |
|
19713
043ccce224fb
(SIF_*): Win95 macros defined for NT.
Geoff Voelker <voelker@cs.washington.edu>
parents:
18877
diff
changeset
|
4344 break; |
| 13434 | 4345 } |
|
48218
01e253345507
(w32_draw_fringe_bitmap): Remove unused local variable window.
Juanma Barranquero <lekktu@gmail.com>
parents:
48025
diff
changeset
|
4346 |
|
51258
a35e5665c742
(construct_mouse_wheel): Result is a MOUSE_CLICK_EVENT. Scrolling down/up the
Juanma Barranquero <lekktu@gmail.com>
parents:
51204
diff
changeset
|
4347 case WM_MOUSEWHEEL: |
|
83876
37f582a71062
Support for horizontal scroll wheels on some mice:
Jason Rumney <jasonr@gnu.org>
parents:
83652
diff
changeset
|
4348 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
|
4349 { |
|
a35e5665c742
(construct_mouse_wheel): Result is a MOUSE_CLICK_EVENT. Scrolling down/up the
Juanma Barranquero <lekktu@gmail.com>
parents:
51204
diff
changeset
|
4350 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
|
4351 && 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
|
4352 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
|
4353 else |
|
a35e5665c742
(construct_mouse_wheel): Result is a MOUSE_CLICK_EVENT. Scrolling down/up the
Juanma Barranquero <lekktu@gmail.com>
parents:
51204
diff
changeset
|
4354 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
|
4355 |
|
a35e5665c742
(construct_mouse_wheel): Result is a MOUSE_CLICK_EVENT. Scrolling down/up the
Juanma Barranquero <lekktu@gmail.com>
parents:
51204
diff
changeset
|
4356 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
|
4357 { |
|
a35e5665c742
(construct_mouse_wheel): Result is a MOUSE_CLICK_EVENT. Scrolling down/up the
Juanma Barranquero <lekktu@gmail.com>
parents:
51204
diff
changeset
|
4358 |
|
54171
f6909a416c3f
(w32_read_socket): Remove bufp_r and numcharsp args.
Kim F. Storm <storm@cua.dk>
parents:
54126
diff
changeset
|
4359 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
|
4360 || 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
|
4361 { |
|
51382
e099ac71bd76
(construct_mouse_wheel): Construct WHEEL_EVENT.
Jason Rumney <jasonr@gnu.org>
parents:
51270
diff
changeset
|
4362 /* 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
|
4363 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
|
4364 } |
|
51382
e099ac71bd76
(construct_mouse_wheel): Construct WHEEL_EVENT.
Jason Rumney <jasonr@gnu.org>
parents:
51270
diff
changeset
|
4365 /* Ignore any mouse motion that happened before this |
|
e099ac71bd76
(construct_mouse_wheel): Construct WHEEL_EVENT.
Jason Rumney <jasonr@gnu.org>
parents:
51270
diff
changeset
|
4366 event; any subsequent mouse-movement Emacs events |
|
e099ac71bd76
(construct_mouse_wheel): Construct WHEEL_EVENT.
Jason Rumney <jasonr@gnu.org>
parents:
51270
diff
changeset
|
4367 should reflect only motion after the |
| 74145 | 4368 ButtonPress. */ |
|
51382
e099ac71bd76
(construct_mouse_wheel): Construct WHEEL_EVENT.
Jason Rumney <jasonr@gnu.org>
parents:
51270
diff
changeset
|
4369 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
|
4370 } |
|
51382
e099ac71bd76
(construct_mouse_wheel): Construct WHEEL_EVENT.
Jason Rumney <jasonr@gnu.org>
parents:
51270
diff
changeset
|
4371 last_mouse_frame = f; |
|
e099ac71bd76
(construct_mouse_wheel): Construct WHEEL_EVENT.
Jason Rumney <jasonr@gnu.org>
parents:
51270
diff
changeset
|
4372 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
|
4373 } |
| 13434 | 4374 break; |
|
19713
043ccce224fb
(SIF_*): Win95 macros defined for NT.
Geoff Voelker <voelker@cs.washington.edu>
parents:
18877
diff
changeset
|
4375 |
| 21885 | 4376 case WM_DROPFILES: |
| 4377 f = x_window_to_frame (dpyinfo, msg.msg.hwnd); | |
| 4378 | |
| 4379 if (f) | |
|
54171
f6909a416c3f
(w32_read_socket): Remove bufp_r and numcharsp args.
Kim F. Storm <storm@cua.dk>
parents:
54126
diff
changeset
|
4380 construct_drag_n_drop (&inev, &msg, f); |
| 21885 | 4381 break; |
| 4382 | |
| 13434 | 4383 case WM_VSCROLL: |
| 4384 { | |
|
19713
043ccce224fb
(SIF_*): Win95 macros defined for NT.
Geoff Voelker <voelker@cs.washington.edu>
parents:
18877
diff
changeset
|
4385 struct scroll_bar *bar = |
|
043ccce224fb
(SIF_*): Win95 macros defined for NT.
Geoff Voelker <voelker@cs.washington.edu>
parents:
18877
diff
changeset
|
4386 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
|
4387 |
|
54171
f6909a416c3f
(w32_read_socket): Remove bufp_r and numcharsp args.
Kim F. Storm <storm@cua.dk>
parents:
54126
diff
changeset
|
4388 if (bar) |
|
f6909a416c3f
(w32_read_socket): Remove bufp_r and numcharsp args.
Kim F. Storm <storm@cua.dk>
parents:
54126
diff
changeset
|
4389 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
|
4390 break; |
| 13434 | 4391 } |
|
48218
01e253345507
(w32_draw_fringe_bitmap): Remove unused local variable window.
Juanma Barranquero <lekktu@gmail.com>
parents:
48025
diff
changeset
|
4392 |
|
19713
043ccce224fb
(SIF_*): Win95 macros defined for NT.
Geoff Voelker <voelker@cs.washington.edu>
parents:
18877
diff
changeset
|
4393 case WM_WINDOWPOSCHANGED: |
|
43396
9b50c09298f6
* w32term.c (x_autoselect_window_p): New variable.
Jason Rumney <jasonr@gnu.org>
parents:
43373
diff
changeset
|
4394 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
|
4395 if (f) |
|
9b50c09298f6
* w32term.c (x_autoselect_window_p): New variable.
Jason Rumney <jasonr@gnu.org>
parents:
43373
diff
changeset
|
4396 { |
|
51204
082b768216a0
Make (several) trivial substitutions for renamed and
Kim F. Storm <storm@cua.dk>
parents:
50441
diff
changeset
|
4397 if (f->want_fullscreen & FULLSCREEN_WAIT) |
|
082b768216a0
Make (several) trivial substitutions for renamed and
Kim F. Storm <storm@cua.dk>
parents:
50441
diff
changeset
|
4398 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
|
4399 } |
|
9b50c09298f6
* w32term.c (x_autoselect_window_p): New variable.
Jason Rumney <jasonr@gnu.org>
parents:
43373
diff
changeset
|
4400 check_visibility = 1; |
|
9b50c09298f6
* w32term.c (x_autoselect_window_p): New variable.
Jason Rumney <jasonr@gnu.org>
parents:
43373
diff
changeset
|
4401 break; |
|
9b50c09298f6
* w32term.c (x_autoselect_window_p): New variable.
Jason Rumney <jasonr@gnu.org>
parents:
43373
diff
changeset
|
4402 |
|
19713
043ccce224fb
(SIF_*): Win95 macros defined for NT.
Geoff Voelker <voelker@cs.washington.edu>
parents:
18877
diff
changeset
|
4403 case WM_ACTIVATE: |
|
043ccce224fb
(SIF_*): Win95 macros defined for NT.
Geoff Voelker <voelker@cs.washington.edu>
parents:
18877
diff
changeset
|
4404 case WM_ACTIVATEAPP: |
|
43396
9b50c09298f6
* w32term.c (x_autoselect_window_p): New variable.
Jason Rumney <jasonr@gnu.org>
parents:
43373
diff
changeset
|
4405 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
|
4406 if (f) |
|
9b50c09298f6
* w32term.c (x_autoselect_window_p): New variable.
Jason Rumney <jasonr@gnu.org>
parents:
43373
diff
changeset
|
4407 x_check_fullscreen (f); |
|
19713
043ccce224fb
(SIF_*): Win95 macros defined for NT.
Geoff Voelker <voelker@cs.washington.edu>
parents:
18877
diff
changeset
|
4408 check_visibility = 1; |
| 13434 | 4409 break; |
|
19713
043ccce224fb
(SIF_*): Win95 macros defined for NT.
Geoff Voelker <voelker@cs.washington.edu>
parents:
18877
diff
changeset
|
4410 |
| 13434 | 4411 case WM_MOVE: |
| 4412 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
|
4413 |
| 13434 | 4414 if (f && !f->async_iconified) |
| 4415 { | |
|
19713
043ccce224fb
(SIF_*): Win95 macros defined for NT.
Geoff Voelker <voelker@cs.washington.edu>
parents:
18877
diff
changeset
|
4416 int x, y; |
|
043ccce224fb
(SIF_*): Win95 macros defined for NT.
Geoff Voelker <voelker@cs.washington.edu>
parents:
18877
diff
changeset
|
4417 |
|
043ccce224fb
(SIF_*): Win95 macros defined for NT.
Geoff Voelker <voelker@cs.washington.edu>
parents:
18877
diff
changeset
|
4418 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
|
4419 f->left_pos = x; |
|
082b768216a0
Make (several) trivial substitutions for renamed and
Kim F. Storm <storm@cua.dk>
parents:
50441
diff
changeset
|
4420 f->top_pos = y; |
| 13434 | 4421 } |
|
19713
043ccce224fb
(SIF_*): Win95 macros defined for NT.
Geoff Voelker <voelker@cs.washington.edu>
parents:
18877
diff
changeset
|
4422 |
|
043ccce224fb
(SIF_*): Win95 macros defined for NT.
Geoff Voelker <voelker@cs.washington.edu>
parents:
18877
diff
changeset
|
4423 check_visibility = 1; |
| 13434 | 4424 break; |
|
19713
043ccce224fb
(SIF_*): Win95 macros defined for NT.
Geoff Voelker <voelker@cs.washington.edu>
parents:
18877
diff
changeset
|
4425 |
|
043ccce224fb
(SIF_*): Win95 macros defined for NT.
Geoff Voelker <voelker@cs.washington.edu>
parents:
18877
diff
changeset
|
4426 case WM_SHOWWINDOW: |
|
41447
783d21cc62b9
(x_after_update_window_line): Doc fix.
Jason Rumney <jasonr@gnu.org>
parents:
41249
diff
changeset
|
4427 /* 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
|
4428 about to be hidden. */ |
|
783d21cc62b9
(x_after_update_window_line): Doc fix.
Jason Rumney <jasonr@gnu.org>
parents:
41249
diff
changeset
|
4429 /* 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
|
4430 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
|
4431 { |
|
783d21cc62b9
(x_after_update_window_line): Doc fix.
Jason Rumney <jasonr@gnu.org>
parents:
41249
diff
changeset
|
4432 tip_window = NULL; |
|
783d21cc62b9
(x_after_update_window_line): Doc fix.
Jason Rumney <jasonr@gnu.org>
parents:
41249
diff
changeset
|
4433 redo_mouse_highlight (); |
|
783d21cc62b9
(x_after_update_window_line): Doc fix.
Jason Rumney <jasonr@gnu.org>
parents:
41249
diff
changeset
|
4434 } |
|
783d21cc62b9
(x_after_update_window_line): Doc fix.
Jason Rumney <jasonr@gnu.org>
parents:
41249
diff
changeset
|
4435 |
|
19713
043ccce224fb
(SIF_*): Win95 macros defined for NT.
Geoff Voelker <voelker@cs.washington.edu>
parents:
18877
diff
changeset
|
4436 /* 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
|
4437 being maximised or minimised/restored, then recheck |
|
043ccce224fb
(SIF_*): Win95 macros defined for NT.
Geoff Voelker <voelker@cs.washington.edu>
parents:
18877
diff
changeset
|
4438 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
|
4439 windows get handled by WM_SIZE. */ |
|
043ccce224fb
(SIF_*): Win95 macros defined for NT.
Geoff Voelker <voelker@cs.washington.edu>
parents:
18877
diff
changeset
|
4440 #if 0 |
|
043ccce224fb
(SIF_*): Win95 macros defined for NT.
Geoff Voelker <voelker@cs.washington.edu>
parents:
18877
diff
changeset
|
4441 if (msg.msg.lParam != 0) |
|
043ccce224fb
(SIF_*): Win95 macros defined for NT.
Geoff Voelker <voelker@cs.washington.edu>
parents:
18877
diff
changeset
|
4442 check_visibility = 1; |
|
043ccce224fb
(SIF_*): Win95 macros defined for NT.
Geoff Voelker <voelker@cs.washington.edu>
parents:
18877
diff
changeset
|
4443 else |
|
043ccce224fb
(SIF_*): Win95 macros defined for NT.
Geoff Voelker <voelker@cs.washington.edu>
parents:
18877
diff
changeset
|
4444 { |
|
043ccce224fb
(SIF_*): Win95 macros defined for NT.
Geoff Voelker <voelker@cs.washington.edu>
parents:
18877
diff
changeset
|
4445 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
|
4446 f->async_visible = msg.msg.wParam; |
|
043ccce224fb
(SIF_*): Win95 macros defined for NT.
Geoff Voelker <voelker@cs.washington.edu>
parents:
18877
diff
changeset
|
4447 } |
|
043ccce224fb
(SIF_*): Win95 macros defined for NT.
Geoff Voelker <voelker@cs.washington.edu>
parents:
18877
diff
changeset
|
4448 #endif |
|
043ccce224fb
(SIF_*): Win95 macros defined for NT.
Geoff Voelker <voelker@cs.washington.edu>
parents:
18877
diff
changeset
|
4449 |
|
043ccce224fb
(SIF_*): Win95 macros defined for NT.
Geoff Voelker <voelker@cs.washington.edu>
parents:
18877
diff
changeset
|
4450 check_visibility = 1; |
|
043ccce224fb
(SIF_*): Win95 macros defined for NT.
Geoff Voelker <voelker@cs.washington.edu>
parents:
18877
diff
changeset
|
4451 break; |
|
043ccce224fb
(SIF_*): Win95 macros defined for NT.
Geoff Voelker <voelker@cs.washington.edu>
parents:
18877
diff
changeset
|
4452 |
| 13434 | 4453 case WM_SIZE: |
| 4454 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
|
4455 |
|
19713
043ccce224fb
(SIF_*): Win95 macros defined for NT.
Geoff Voelker <voelker@cs.washington.edu>
parents:
18877
diff
changeset
|
4456 /* 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
|
4457 if (f) |
| 13434 | 4458 { |
|
19713
043ccce224fb
(SIF_*): Win95 macros defined for NT.
Geoff Voelker <voelker@cs.washington.edu>
parents:
18877
diff
changeset
|
4459 switch (msg.msg.wParam) |
| 13434 | 4460 { |
|
19713
043ccce224fb
(SIF_*): Win95 macros defined for NT.
Geoff Voelker <voelker@cs.washington.edu>
parents:
18877
diff
changeset
|
4461 case SIZE_MINIMIZED: |
|
043ccce224fb
(SIF_*): Win95 macros defined for NT.
Geoff Voelker <voelker@cs.washington.edu>
parents:
18877
diff
changeset
|
4462 f->async_visible = 0; |
| 13434 | 4463 f->async_iconified = 1; |
|
48218
01e253345507
(w32_draw_fringe_bitmap): Remove unused local variable window.
Juanma Barranquero <lekktu@gmail.com>
parents:
48025
diff
changeset
|
4464 |
|
54171
f6909a416c3f
(w32_read_socket): Remove bufp_r and numcharsp args.
Kim F. Storm <storm@cua.dk>
parents:
54126
diff
changeset
|
4465 inev.kind = ICONIFY_EVENT; |
|
f6909a416c3f
(w32_read_socket): Remove bufp_r and numcharsp args.
Kim F. Storm <storm@cua.dk>
parents:
54126
diff
changeset
|
4466 XSETFRAME (inev.frame_or_window, f); |
|
19713
043ccce224fb
(SIF_*): Win95 macros defined for NT.
Geoff Voelker <voelker@cs.washington.edu>
parents:
18877
diff
changeset
|
4467 break; |
|
043ccce224fb
(SIF_*): Win95 macros defined for NT.
Geoff Voelker <voelker@cs.washington.edu>
parents:
18877
diff
changeset
|
4468 |
|
043ccce224fb
(SIF_*): Win95 macros defined for NT.
Geoff Voelker <voelker@cs.washington.edu>
parents:
18877
diff
changeset
|
4469 case SIZE_MAXIMIZED: |
|
043ccce224fb
(SIF_*): Win95 macros defined for NT.
Geoff Voelker <voelker@cs.washington.edu>
parents:
18877
diff
changeset
|
4470 case SIZE_RESTORED: |
| 13434 | 4471 f->async_visible = 1; |
| 4472 f->async_iconified = 0; | |
|
48218
01e253345507
(w32_draw_fringe_bitmap): Remove unused local variable window.
Juanma Barranquero <lekktu@gmail.com>
parents:
48025
diff
changeset
|
4473 |
|
56729
e6e0caa7ec87
Rename wait_reading_process_input to wait_reading_process_output.
Kim F. Storm <storm@cua.dk>
parents:
55646
diff
changeset
|
4474 /* wait_reading_process_output will notice this and update |
| 13434 | 4475 the frame's display structures. */ |
| 4476 SET_FRAME_GARBAGED (f); | |
|
48218
01e253345507
(w32_draw_fringe_bitmap): Remove unused local variable window.
Juanma Barranquero <lekktu@gmail.com>
parents:
48025
diff
changeset
|
4477 |
| 13434 | 4478 if (f->iconified) |
| 4479 { | |
|
24827
487fdbc8de0f
(cancel_mouse_face): new function. See equiv
Karl Heuer <kwzh@gnu.org>
parents:
24752
diff
changeset
|
4480 int x, y; |
|
487fdbc8de0f
(cancel_mouse_face): new function. See equiv
Karl Heuer <kwzh@gnu.org>
parents:
24752
diff
changeset
|
4481 |
|
487fdbc8de0f
(cancel_mouse_face): new function. See equiv
Karl Heuer <kwzh@gnu.org>
parents:
24752
diff
changeset
|
4482 /* 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
|
4483 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
|
4484 BEFORE telling us the Window is minimized |
|
487fdbc8de0f
(cancel_mouse_face): new function. See equiv
Karl Heuer <kwzh@gnu.org>
parents:
24752
diff
changeset
|
4485 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
|
4486 as the co-ords. */ |
|
487fdbc8de0f
(cancel_mouse_face): new function. See equiv
Karl Heuer <kwzh@gnu.org>
parents:
24752
diff
changeset
|
4487 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
|
4488 f->left_pos = x; |
|
082b768216a0
Make (several) trivial substitutions for renamed and
Kim F. Storm <storm@cua.dk>
parents:
50441
diff
changeset
|
4489 f->top_pos = y; |
|
24827
487fdbc8de0f
(cancel_mouse_face): new function. See equiv
Karl Heuer <kwzh@gnu.org>
parents:
24752
diff
changeset
|
4490 |
|
54171
f6909a416c3f
(w32_read_socket): Remove bufp_r and numcharsp args.
Kim F. Storm <storm@cua.dk>
parents:
54126
diff
changeset
|
4491 inev.kind = DEICONIFY_EVENT; |
|
f6909a416c3f
(w32_read_socket): Remove bufp_r and numcharsp args.
Kim F. Storm <storm@cua.dk>
parents:
54126
diff
changeset
|
4492 XSETFRAME (inev.frame_or_window, f); |
| 13434 | 4493 } |
|
29321
8e2be36bb1c6
Format and doc changes to bring closer to xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
28369
diff
changeset
|
4494 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
|
4495 && ! NILP (XCDR (Vframe_list))) |
| 13434 | 4496 /* Force a redisplay sooner or later |
| 4497 to update the frame titles | |
| 4498 in case this is the second frame. */ | |
| 4499 record_asynch_buffer_change (); | |
|
19713
043ccce224fb
(SIF_*): Win95 macros defined for NT.
Geoff Voelker <voelker@cs.washington.edu>
parents:
18877
diff
changeset
|
4500 break; |
| 13434 | 4501 } |
| 4502 } | |
|
19713
043ccce224fb
(SIF_*): Win95 macros defined for NT.
Geoff Voelker <voelker@cs.washington.edu>
parents:
18877
diff
changeset
|
4503 |
|
21614
2624d8dcc73f
(Vw32_recognize_altgr): New variable.
Geoff Voelker <voelker@cs.washington.edu>
parents:
21456
diff
changeset
|
4504 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
|
4505 { |
|
2624d8dcc73f
(Vw32_recognize_altgr): New variable.
Geoff Voelker <voelker@cs.washington.edu>
parents:
21456
diff
changeset
|
4506 RECT rect; |
|
2624d8dcc73f
(Vw32_recognize_altgr): New variable.
Geoff Voelker <voelker@cs.washington.edu>
parents:
21456
diff
changeset
|
4507 int rows; |
|
2624d8dcc73f
(Vw32_recognize_altgr): New variable.
Geoff Voelker <voelker@cs.washington.edu>
parents:
21456
diff
changeset
|
4508 int columns; |
|
2624d8dcc73f
(Vw32_recognize_altgr): New variable.
Geoff Voelker <voelker@cs.washington.edu>
parents:
21456
diff
changeset
|
4509 int width; |
|
2624d8dcc73f
(Vw32_recognize_altgr): New variable.
Geoff Voelker <voelker@cs.washington.edu>
parents:
21456
diff
changeset
|
4510 int height; |
|
48218
01e253345507
(w32_draw_fringe_bitmap): Remove unused local variable window.
Juanma Barranquero <lekktu@gmail.com>
parents:
48025
diff
changeset
|
4511 |
|
32022
1f26caa05cd7
(w32_char_font_type, w32_encode_char, x_produce_glyphs): Distinguish
Jason Rumney <jasonr@gnu.org>
parents:
31624
diff
changeset
|
4512 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
|
4513 |
|
21614
2624d8dcc73f
(Vw32_recognize_altgr): New variable.
Geoff Voelker <voelker@cs.washington.edu>
parents:
21456
diff
changeset
|
4514 height = rect.bottom - rect.top; |
|
2624d8dcc73f
(Vw32_recognize_altgr): New variable.
Geoff Voelker <voelker@cs.washington.edu>
parents:
21456
diff
changeset
|
4515 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
|
4516 |
|
51204
082b768216a0
Make (several) trivial substitutions for renamed and
Kim F. Storm <storm@cua.dk>
parents:
50441
diff
changeset
|
4517 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
|
4518 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
|
4519 |
|
21614
2624d8dcc73f
(Vw32_recognize_altgr): New variable.
Geoff Voelker <voelker@cs.washington.edu>
parents:
21456
diff
changeset
|
4520 /* 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
|
4521 |
|
21614
2624d8dcc73f
(Vw32_recognize_altgr): New variable.
Geoff Voelker <voelker@cs.washington.edu>
parents:
21456
diff
changeset
|
4522 /* 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
|
4523 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
|
4524 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
|
4525 |
|
51204
082b768216a0
Make (several) trivial substitutions for renamed and
Kim F. Storm <storm@cua.dk>
parents:
50441
diff
changeset
|
4526 if (columns != FRAME_COLS (f) |
|
082b768216a0
Make (several) trivial substitutions for renamed and
Kim F. Storm <storm@cua.dk>
parents:
50441
diff
changeset
|
4527 || rows != FRAME_LINES (f) |
|
082b768216a0
Make (several) trivial substitutions for renamed and
Kim F. Storm <storm@cua.dk>
parents:
50441
diff
changeset
|
4528 || width != FRAME_PIXEL_WIDTH (f) |
|
082b768216a0
Make (several) trivial substitutions for renamed and
Kim F. Storm <storm@cua.dk>
parents:
50441
diff
changeset
|
4529 || height != FRAME_PIXEL_HEIGHT (f)) |
|
21614
2624d8dcc73f
(Vw32_recognize_altgr): New variable.
Geoff Voelker <voelker@cs.washington.edu>
parents:
21456
diff
changeset
|
4530 { |
|
27402
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
4531 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
|
4532 SET_FRAME_GARBAGED (f); |
|
24827
487fdbc8de0f
(cancel_mouse_face): new function. See equiv
Karl Heuer <kwzh@gnu.org>
parents:
24752
diff
changeset
|
4533 cancel_mouse_face (f); |
|
51204
082b768216a0
Make (several) trivial substitutions for renamed and
Kim F. Storm <storm@cua.dk>
parents:
50441
diff
changeset
|
4534 FRAME_PIXEL_WIDTH (f) = width; |
|
082b768216a0
Make (several) trivial substitutions for renamed and
Kim F. Storm <storm@cua.dk>
parents:
50441
diff
changeset
|
4535 FRAME_PIXEL_HEIGHT (f) = height; |
|
082b768216a0
Make (several) trivial substitutions for renamed and
Kim F. Storm <storm@cua.dk>
parents:
50441
diff
changeset
|
4536 f->win_gravity = NorthWestGravity; |
|
21614
2624d8dcc73f
(Vw32_recognize_altgr): New variable.
Geoff Voelker <voelker@cs.washington.edu>
parents:
21456
diff
changeset
|
4537 } |
|
2624d8dcc73f
(Vw32_recognize_altgr): New variable.
Geoff Voelker <voelker@cs.washington.edu>
parents:
21456
diff
changeset
|
4538 } |
|
2624d8dcc73f
(Vw32_recognize_altgr): New variable.
Geoff Voelker <voelker@cs.washington.edu>
parents:
21456
diff
changeset
|
4539 |
|
19713
043ccce224fb
(SIF_*): Win95 macros defined for NT.
Geoff Voelker <voelker@cs.washington.edu>
parents:
18877
diff
changeset
|
4540 check_visibility = 1; |
|
043ccce224fb
(SIF_*): Win95 macros defined for NT.
Geoff Voelker <voelker@cs.washington.edu>
parents:
18877
diff
changeset
|
4541 break; |
|
043ccce224fb
(SIF_*): Win95 macros defined for NT.
Geoff Voelker <voelker@cs.washington.edu>
parents:
18877
diff
changeset
|
4542 |
|
41731
33ba14e9c09a
(w32_read_socket) <WM_MOUSELEAVE>: Cancel help echo
Jason Rumney <jasonr@gnu.org>
parents:
41727
diff
changeset
|
4543 case WM_MOUSELEAVE: |
|
33ba14e9c09a
(w32_read_socket) <WM_MOUSELEAVE>: Cancel help echo
Jason Rumney <jasonr@gnu.org>
parents:
41727
diff
changeset
|
4544 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
|
4545 if (f) |
|
33ba14e9c09a
(w32_read_socket) <WM_MOUSELEAVE>: Cancel help echo
Jason Rumney <jasonr@gnu.org>
parents:
41727
diff
changeset
|
4546 { |
|
33ba14e9c09a
(w32_read_socket) <WM_MOUSELEAVE>: Cancel help echo
Jason Rumney <jasonr@gnu.org>
parents:
41727
diff
changeset
|
4547 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
|
4548 { |
|
33ba14e9c09a
(w32_read_socket) <WM_MOUSELEAVE>: Cancel help echo
Jason Rumney <jasonr@gnu.org>
parents:
41727
diff
changeset
|
4549 /* 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
|
4550 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
|
4551 clear_mouse_face (dpyinfo); |
|
33ba14e9c09a
(w32_read_socket) <WM_MOUSELEAVE>: Cancel help echo
Jason Rumney <jasonr@gnu.org>
parents:
41727
diff
changeset
|
4552 dpyinfo->mouse_face_mouse_frame = 0; |
|
33ba14e9c09a
(w32_read_socket) <WM_MOUSELEAVE>: Cancel help echo
Jason Rumney <jasonr@gnu.org>
parents:
41727
diff
changeset
|
4553 } |
|
33ba14e9c09a
(w32_read_socket) <WM_MOUSELEAVE>: Cancel help echo
Jason Rumney <jasonr@gnu.org>
parents:
41727
diff
changeset
|
4554 |
|
33ba14e9c09a
(w32_read_socket) <WM_MOUSELEAVE>: Cancel help echo
Jason Rumney <jasonr@gnu.org>
parents:
41727
diff
changeset
|
4555 /* 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
|
4556 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
|
4557 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
|
4558 the mouse leaves the frame. */ |
|
33ba14e9c09a
(w32_read_socket) <WM_MOUSELEAVE>: Cancel help echo
Jason Rumney <jasonr@gnu.org>
parents:
41727
diff
changeset
|
4559 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
|
4560 do_help = -1; |
|
41731
33ba14e9c09a
(w32_read_socket) <WM_MOUSELEAVE>: Cancel help echo
Jason Rumney <jasonr@gnu.org>
parents:
41727
diff
changeset
|
4561 } |
|
33ba14e9c09a
(w32_read_socket) <WM_MOUSELEAVE>: Cancel help echo
Jason Rumney <jasonr@gnu.org>
parents:
41727
diff
changeset
|
4562 break; |
|
48218
01e253345507
(w32_draw_fringe_bitmap): Remove unused local variable window.
Juanma Barranquero <lekktu@gmail.com>
parents:
48025
diff
changeset
|
4563 |
|
19713
043ccce224fb
(SIF_*): Win95 macros defined for NT.
Geoff Voelker <voelker@cs.washington.edu>
parents:
18877
diff
changeset
|
4564 case WM_SETFOCUS: |
|
60948
03a8b8b9ebef
(x_focus_changed, w32_detect_focus_change): New functions.
Jason Rumney <jasonr@gnu.org>
parents:
59748
diff
changeset
|
4565 w32_detect_focus_change (dpyinfo, &msg, &inev); |
|
27402
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
4566 |
|
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
4567 dpyinfo->grabbed = 0; |
|
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
4568 check_visibility = 1; |
|
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
4569 break; |
|
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
4570 |
|
19713
043ccce224fb
(SIF_*): Win95 macros defined for NT.
Geoff Voelker <voelker@cs.washington.edu>
parents:
18877
diff
changeset
|
4571 case WM_KILLFOCUS: |
|
27402
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
4572 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
|
4573 |
|
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
4574 if (f) |
|
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
4575 { |
|
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
4576 if (f == dpyinfo->w32_focus_event_frame) |
|
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
4577 dpyinfo->w32_focus_event_frame = 0; |
|
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
4578 |
|
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
4579 if (f == dpyinfo->w32_focus_frame) |
|
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
4580 x_new_focus_frame (dpyinfo, 0); |
|
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
4581 |
|
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
4582 if (f == dpyinfo->mouse_face_mouse_frame) |
|
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
4583 { |
|
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
4584 /* 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
|
4585 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
|
4586 clear_mouse_face (dpyinfo); |
|
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
4587 dpyinfo->mouse_face_mouse_frame = 0; |
|
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
4588 } |
|
29321
8e2be36bb1c6
Format and doc changes to bring closer to xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
28369
diff
changeset
|
4589 |
|
27402
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
4590 /* 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
|
4591 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
|
4592 Otherwise, the startup message is cleared when |
|
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
4593 the mouse leaves the frame. */ |
|
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
4594 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
|
4595 do_help = -1; |
|
27402
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
4596 } |
|
19713
043ccce224fb
(SIF_*): Win95 macros defined for NT.
Geoff Voelker <voelker@cs.washington.edu>
parents:
18877
diff
changeset
|
4597 |
|
24752
80c46fd667da
(w32_read_socket): Reset the grabbed flag when a frame gains or
Andrew Innes <andrewi@gnu.org>
parents:
24733
diff
changeset
|
4598 dpyinfo->grabbed = 0; |
|
19713
043ccce224fb
(SIF_*): Win95 macros defined for NT.
Geoff Voelker <voelker@cs.washington.edu>
parents:
18877
diff
changeset
|
4599 check_visibility = 1; |
| 13434 | 4600 break; |
|
19713
043ccce224fb
(SIF_*): Win95 macros defined for NT.
Geoff Voelker <voelker@cs.washington.edu>
parents:
18877
diff
changeset
|
4601 |
| 13434 | 4602 case WM_CLOSE: |
| 4603 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
|
4604 |
| 13434 | 4605 if (f) |
| 4606 { | |
|
54171
f6909a416c3f
(w32_read_socket): Remove bufp_r and numcharsp args.
Kim F. Storm <storm@cua.dk>
parents:
54126
diff
changeset
|
4607 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
|
4608 XSETFRAME (inev.frame_or_window, f); |
| 13434 | 4609 } |
|
19713
043ccce224fb
(SIF_*): Win95 macros defined for NT.
Geoff Voelker <voelker@cs.washington.edu>
parents:
18877
diff
changeset
|
4610 break; |
|
043ccce224fb
(SIF_*): Win95 macros defined for NT.
Geoff Voelker <voelker@cs.washington.edu>
parents:
18877
diff
changeset
|
4611 |
|
043ccce224fb
(SIF_*): Win95 macros defined for NT.
Geoff Voelker <voelker@cs.washington.edu>
parents:
18877
diff
changeset
|
4612 case WM_INITMENU: |
|
043ccce224fb
(SIF_*): Win95 macros defined for NT.
Geoff Voelker <voelker@cs.washington.edu>
parents:
18877
diff
changeset
|
4613 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
|
4614 |
|
19713
043ccce224fb
(SIF_*): Win95 macros defined for NT.
Geoff Voelker <voelker@cs.washington.edu>
parents:
18877
diff
changeset
|
4615 if (f) |
|
043ccce224fb
(SIF_*): Win95 macros defined for NT.
Geoff Voelker <voelker@cs.washington.edu>
parents:
18877
diff
changeset
|
4616 { |
|
54171
f6909a416c3f
(w32_read_socket): Remove bufp_r and numcharsp args.
Kim F. Storm <storm@cua.dk>
parents:
54126
diff
changeset
|
4617 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
|
4618 XSETFRAME (inev.frame_or_window, f); |
|
19713
043ccce224fb
(SIF_*): Win95 macros defined for NT.
Geoff Voelker <voelker@cs.washington.edu>
parents:
18877
diff
changeset
|
4619 } |
| 13434 | 4620 break; |
|
19713
043ccce224fb
(SIF_*): Win95 macros defined for NT.
Geoff Voelker <voelker@cs.washington.edu>
parents:
18877
diff
changeset
|
4621 |
| 13434 | 4622 case WM_COMMAND: |
| 4623 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
|
4624 |
| 13434 | 4625 if (f) |
| 4626 { | |
|
23677
70999481c915
(convert_to_key_event): Removed.
Geoff Voelker <voelker@cs.washington.edu>
parents:
23639
diff
changeset
|
4627 extern void menubar_selection_callback |
|
70999481c915
(convert_to_key_event): Removed.
Geoff Voelker <voelker@cs.washington.edu>
parents:
23639
diff
changeset
|
4628 (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
|
4629 menubar_selection_callback (f, (void *)msg.msg.wParam); |
| 13434 | 4630 } |
|
19713
043ccce224fb
(SIF_*): Win95 macros defined for NT.
Geoff Voelker <voelker@cs.washington.edu>
parents:
18877
diff
changeset
|
4631 |
|
043ccce224fb
(SIF_*): Win95 macros defined for NT.
Geoff Voelker <voelker@cs.washington.edu>
parents:
18877
diff
changeset
|
4632 check_visibility = 1; |
|
043ccce224fb
(SIF_*): Win95 macros defined for NT.
Geoff Voelker <voelker@cs.washington.edu>
parents:
18877
diff
changeset
|
4633 break; |
|
043ccce224fb
(SIF_*): Win95 macros defined for NT.
Geoff Voelker <voelker@cs.washington.edu>
parents:
18877
diff
changeset
|
4634 |
|
043ccce224fb
(SIF_*): Win95 macros defined for NT.
Geoff Voelker <voelker@cs.washington.edu>
parents:
18877
diff
changeset
|
4635 case WM_DISPLAYCHANGE: |
|
043ccce224fb
(SIF_*): Win95 macros defined for NT.
Geoff Voelker <voelker@cs.washington.edu>
parents:
18877
diff
changeset
|
4636 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
|
4637 |
|
48218
01e253345507
(w32_draw_fringe_bitmap): Remove unused local variable window.
Juanma Barranquero <lekktu@gmail.com>
parents:
48025
diff
changeset
|
4638 if (f) |
|
19713
043ccce224fb
(SIF_*): Win95 macros defined for NT.
Geoff Voelker <voelker@cs.washington.edu>
parents:
18877
diff
changeset
|
4639 { |
|
043ccce224fb
(SIF_*): Win95 macros defined for NT.
Geoff Voelker <voelker@cs.washington.edu>
parents:
18877
diff
changeset
|
4640 dpyinfo->width = (short) LOWORD (msg.msg.lParam); |
|
043ccce224fb
(SIF_*): Win95 macros defined for NT.
Geoff Voelker <voelker@cs.washington.edu>
parents:
18877
diff
changeset
|
4641 dpyinfo->height = (short) HIWORD (msg.msg.lParam); |
|
043ccce224fb
(SIF_*): Win95 macros defined for NT.
Geoff Voelker <voelker@cs.washington.edu>
parents:
18877
diff
changeset
|
4642 dpyinfo->n_cbits = msg.msg.wParam; |
|
043ccce224fb
(SIF_*): Win95 macros defined for NT.
Geoff Voelker <voelker@cs.washington.edu>
parents:
18877
diff
changeset
|
4643 DebPrint (("display change: %d %d\n", dpyinfo->width, |
|
043ccce224fb
(SIF_*): Win95 macros defined for NT.
Geoff Voelker <voelker@cs.washington.edu>
parents:
18877
diff
changeset
|
4644 dpyinfo->height)); |
|
043ccce224fb
(SIF_*): Win95 macros defined for NT.
Geoff Voelker <voelker@cs.washington.edu>
parents:
18877
diff
changeset
|
4645 } |
|
48218
01e253345507
(w32_draw_fringe_bitmap): Remove unused local variable window.
Juanma Barranquero <lekktu@gmail.com>
parents:
48025
diff
changeset
|
4646 |
|
19713
043ccce224fb
(SIF_*): Win95 macros defined for NT.
Geoff Voelker <voelker@cs.washington.edu>
parents:
18877
diff
changeset
|
4647 check_visibility = 1; |
| 13434 | 4648 break; |
|
21875
16414f4d07e7
(msh_mousewheel): Declare.
Geoff Voelker <voelker@cs.washington.edu>
parents:
21831
diff
changeset
|
4649 |
|
16414f4d07e7
(msh_mousewheel): Declare.
Geoff Voelker <voelker@cs.washington.edu>
parents:
21831
diff
changeset
|
4650 default: |
|
51270
827c306f0515
Add missing code from previous patch by David Ponce.
Juanma Barranquero <lekktu@gmail.com>
parents:
51269
diff
changeset
|
4651 /* Check for messages registered at runtime. */ |
|
21875
16414f4d07e7
(msh_mousewheel): Declare.
Geoff Voelker <voelker@cs.washington.edu>
parents:
21831
diff
changeset
|
4652 if (msg.msg.message == msh_mousewheel) |
|
16414f4d07e7
(msh_mousewheel): Declare.
Geoff Voelker <voelker@cs.washington.edu>
parents:
21831
diff
changeset
|
4653 { |
|
51270
827c306f0515
Add missing code from previous patch by David Ponce.
Juanma Barranquero <lekktu@gmail.com>
parents:
51269
diff
changeset
|
4654 /* Forward MSH_MOUSEWHEEL as WM_MOUSEWHEEL. */ |
|
52349
c631ebcc0df9
(w32_read_socket): Fix WM_MOUSEWHEEL assignment.
Jason Rumney <jasonr@gnu.org>
parents:
51382
diff
changeset
|
4655 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
|
4656 prepend_msg (&msg); |
|
21875
16414f4d07e7
(msh_mousewheel): Declare.
Geoff Voelker <voelker@cs.washington.edu>
parents:
21831
diff
changeset
|
4657 } |
|
16414f4d07e7
(msh_mousewheel): Declare.
Geoff Voelker <voelker@cs.washington.edu>
parents:
21831
diff
changeset
|
4658 break; |
| 13434 | 4659 } |
|
54171
f6909a416c3f
(w32_read_socket): Remove bufp_r and numcharsp args.
Kim F. Storm <storm@cua.dk>
parents:
54126
diff
changeset
|
4660 |
|
f6909a416c3f
(w32_read_socket): Remove bufp_r and numcharsp args.
Kim F. Storm <storm@cua.dk>
parents:
54126
diff
changeset
|
4661 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
|
4662 { |
|
f6909a416c3f
(w32_read_socket): Remove bufp_r and numcharsp args.
Kim F. Storm <storm@cua.dk>
parents:
54126
diff
changeset
|
4663 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
|
4664 count++; |
|
f6909a416c3f
(w32_read_socket): Remove bufp_r and numcharsp args.
Kim F. Storm <storm@cua.dk>
parents:
54126
diff
changeset
|
4665 } |
|
f6909a416c3f
(w32_read_socket): Remove bufp_r and numcharsp args.
Kim F. Storm <storm@cua.dk>
parents:
54126
diff
changeset
|
4666 |
|
f6909a416c3f
(w32_read_socket): Remove bufp_r and numcharsp args.
Kim F. Storm <storm@cua.dk>
parents:
54126
diff
changeset
|
4667 if (do_help |
|
f6909a416c3f
(w32_read_socket): Remove bufp_r and numcharsp args.
Kim F. Storm <storm@cua.dk>
parents:
54126
diff
changeset
|
4668 && !(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
|
4669 { |
|
f6909a416c3f
(w32_read_socket): Remove bufp_r and numcharsp args.
Kim F. Storm <storm@cua.dk>
parents:
54126
diff
changeset
|
4670 Lisp_Object frame; |
|
f6909a416c3f
(w32_read_socket): Remove bufp_r and numcharsp args.
Kim F. Storm <storm@cua.dk>
parents:
54126
diff
changeset
|
4671 |
|
f6909a416c3f
(w32_read_socket): Remove bufp_r and numcharsp args.
Kim F. Storm <storm@cua.dk>
parents:
54126
diff
changeset
|
4672 if (f) |
|
f6909a416c3f
(w32_read_socket): Remove bufp_r and numcharsp args.
Kim F. Storm <storm@cua.dk>
parents:
54126
diff
changeset
|
4673 XSETFRAME (frame, f); |
|
f6909a416c3f
(w32_read_socket): Remove bufp_r and numcharsp args.
Kim F. Storm <storm@cua.dk>
parents:
54126
diff
changeset
|
4674 else |
|
f6909a416c3f
(w32_read_socket): Remove bufp_r and numcharsp args.
Kim F. Storm <storm@cua.dk>
parents:
54126
diff
changeset
|
4675 frame = Qnil; |
|
f6909a416c3f
(w32_read_socket): Remove bufp_r and numcharsp args.
Kim F. Storm <storm@cua.dk>
parents:
54126
diff
changeset
|
4676 |
|
f6909a416c3f
(w32_read_socket): Remove bufp_r and numcharsp args.
Kim F. Storm <storm@cua.dk>
parents:
54126
diff
changeset
|
4677 if (do_help > 0) |
|
f6909a416c3f
(w32_read_socket): Remove bufp_r and numcharsp args.
Kim F. Storm <storm@cua.dk>
parents:
54126
diff
changeset
|
4678 { |
|
55646
358a5c0b4571
(w32_num_mouse_buttons): Rename from Vw32_num_mouse_buttons and make
Jason Rumney <jasonr@gnu.org>
parents:
55286
diff
changeset
|
4679 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
|
4680 { |
|
f6909a416c3f
(w32_read_socket): Remove bufp_r and numcharsp args.
Kim F. Storm <storm@cua.dk>
parents:
54126
diff
changeset
|
4681 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
|
4682 help_echo_pos = -1; |
|
f6909a416c3f
(w32_read_socket): Remove bufp_r and numcharsp args.
Kim F. Storm <storm@cua.dk>
parents:
54126
diff
changeset
|
4683 } |
|
54731
4031909001d5
(w32_read_socket): Set mouse_face_hidden after clearing highlight.
Kim F. Storm <storm@cua.dk>
parents:
54225
diff
changeset
|
4684 |
|
54171
f6909a416c3f
(w32_read_socket): Remove bufp_r and numcharsp args.
Kim F. Storm <storm@cua.dk>
parents:
54126
diff
changeset
|
4685 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
|
4686 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
|
4687 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
|
4688 } |
|
f6909a416c3f
(w32_read_socket): Remove bufp_r and numcharsp args.
Kim F. Storm <storm@cua.dk>
parents:
54126
diff
changeset
|
4689 else |
|
f6909a416c3f
(w32_read_socket): Remove bufp_r and numcharsp args.
Kim F. Storm <storm@cua.dk>
parents:
54126
diff
changeset
|
4690 { |
|
f6909a416c3f
(w32_read_socket): Remove bufp_r and numcharsp args.
Kim F. Storm <storm@cua.dk>
parents:
54126
diff
changeset
|
4691 help_echo_string = Qnil; |
|
f6909a416c3f
(w32_read_socket): Remove bufp_r and numcharsp args.
Kim F. Storm <storm@cua.dk>
parents:
54126
diff
changeset
|
4692 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
|
4693 } |
|
f6909a416c3f
(w32_read_socket): Remove bufp_r and numcharsp args.
Kim F. Storm <storm@cua.dk>
parents:
54126
diff
changeset
|
4694 count++; |
|
f6909a416c3f
(w32_read_socket): Remove bufp_r and numcharsp args.
Kim F. Storm <storm@cua.dk>
parents:
54126
diff
changeset
|
4695 } |
| 13434 | 4696 } |
| 4697 | |
| 4698 /* If the focus was just given to an autoraising frame, | |
| 4699 raise it now. */ | |
| 4700 /* ??? This ought to be able to handle more than one such frame. */ | |
| 4701 if (pending_autoraise_frame) | |
| 4702 { | |
| 4703 x_raise_frame (pending_autoraise_frame); | |
| 4704 pending_autoraise_frame = 0; | |
| 4705 } | |
| 4706 | |
|
19713
043ccce224fb
(SIF_*): Win95 macros defined for NT.
Geoff Voelker <voelker@cs.washington.edu>
parents:
18877
diff
changeset
|
4707 /* 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
|
4708 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
|
4709 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
|
4710 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
|
4711 changed (at least, not in all cases). */ |
|
043ccce224fb
(SIF_*): Win95 macros defined for NT.
Geoff Voelker <voelker@cs.washington.edu>
parents:
18877
diff
changeset
|
4712 if (count > 0 || check_visibility) |
|
043ccce224fb
(SIF_*): Win95 macros defined for NT.
Geoff Voelker <voelker@cs.washington.edu>
parents:
18877
diff
changeset
|
4713 { |
|
043ccce224fb
(SIF_*): Win95 macros defined for NT.
Geoff Voelker <voelker@cs.washington.edu>
parents:
18877
diff
changeset
|
4714 Lisp_Object tail, frame; |
|
043ccce224fb
(SIF_*): Win95 macros defined for NT.
Geoff Voelker <voelker@cs.washington.edu>
parents:
18877
diff
changeset
|
4715 |
|
043ccce224fb
(SIF_*): Win95 macros defined for NT.
Geoff Voelker <voelker@cs.washington.edu>
parents:
18877
diff
changeset
|
4716 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
|
4717 { |
|
a35e5665c742
(construct_mouse_wheel): Result is a MOUSE_CLICK_EVENT. Scrolling down/up the
Juanma Barranquero <lekktu@gmail.com>
parents:
51204
diff
changeset
|
4718 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
|
4719 /* 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
|
4720 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
|
4721 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
|
4722 continue; |
|
a35e5665c742
(construct_mouse_wheel): Result is a MOUSE_CLICK_EVENT. Scrolling down/up the
Juanma Barranquero <lekktu@gmail.com>
parents:
51204
diff
changeset
|
4723 |
|
a35e5665c742
(construct_mouse_wheel): Result is a MOUSE_CLICK_EVENT. Scrolling down/up the
Juanma Barranquero <lekktu@gmail.com>
parents:
51204
diff
changeset
|
4724 /* 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
|
4725 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
|
4726 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
|
4727 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
|
4728 { |
|
a35e5665c742
(construct_mouse_wheel): Result is a MOUSE_CLICK_EVENT. Scrolling down/up the
Juanma Barranquero <lekktu@gmail.com>
parents:
51204
diff
changeset
|
4729 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
|
4730 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
|
4731 |
|
a35e5665c742
(construct_mouse_wheel): Result is a MOUSE_CLICK_EVENT. Scrolling down/up the
Juanma Barranquero <lekktu@gmail.com>
parents:
51204
diff
changeset
|
4732 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
|
4733 /* 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
|
4734 (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
|
4735 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
|
4736 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
|
4737 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
|
4738 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
|
4739 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
|
4740 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
|
4741 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
|
4742 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
|
4743 |
|
a35e5665c742
(construct_mouse_wheel): Result is a MOUSE_CLICK_EVENT. Scrolling down/up the
Juanma Barranquero <lekktu@gmail.com>
parents:
51204
diff
changeset
|
4744 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
|
4745 || 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
|
4746 { |
|
a35e5665c742
(construct_mouse_wheel): Result is a MOUSE_CLICK_EVENT. Scrolling down/up the
Juanma Barranquero <lekktu@gmail.com>
parents:
51204
diff
changeset
|
4747 /* 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
|
4748 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
|
4749 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
|
4750 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
|
4751 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
|
4752 |
|
a35e5665c742
(construct_mouse_wheel): Result is a MOUSE_CLICK_EVENT. Scrolling down/up the
Juanma Barranquero <lekktu@gmail.com>
parents:
51204
diff
changeset
|
4753 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
|
4754 { |
|
a35e5665c742
(construct_mouse_wheel): Result is a MOUSE_CLICK_EVENT. Scrolling down/up the
Juanma Barranquero <lekktu@gmail.com>
parents:
51204
diff
changeset
|
4755 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
|
4756 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
|
4757 } |
|
a35e5665c742
(construct_mouse_wheel): Result is a MOUSE_CLICK_EVENT. Scrolling down/up the
Juanma Barranquero <lekktu@gmail.com>
parents:
51204
diff
changeset
|
4758 } |
|
a35e5665c742
(construct_mouse_wheel): Result is a MOUSE_CLICK_EVENT. Scrolling down/up the
Juanma Barranquero <lekktu@gmail.com>
parents:
51204
diff
changeset
|
4759 else |
|
a35e5665c742
(construct_mouse_wheel): Result is a MOUSE_CLICK_EVENT. Scrolling down/up the
Juanma Barranquero <lekktu@gmail.com>
parents:
51204
diff
changeset
|
4760 { |
|
a35e5665c742
(construct_mouse_wheel): Result is a MOUSE_CLICK_EVENT. Scrolling down/up the
Juanma Barranquero <lekktu@gmail.com>
parents:
51204
diff
changeset
|
4761 /* 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
|
4762 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
|
4763 |
|
a35e5665c742
(construct_mouse_wheel): Result is a MOUSE_CLICK_EVENT. Scrolling down/up the
Juanma Barranquero <lekktu@gmail.com>
parents:
51204
diff
changeset
|
4764 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
|
4765 { |
|
a35e5665c742
(construct_mouse_wheel): Result is a MOUSE_CLICK_EVENT. Scrolling down/up the
Juanma Barranquero <lekktu@gmail.com>
parents:
51204
diff
changeset
|
4766 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
|
4767 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
|
4768 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
|
4769 |
|
a35e5665c742
(construct_mouse_wheel): Result is a MOUSE_CLICK_EVENT. Scrolling down/up the
Juanma Barranquero <lekktu@gmail.com>
parents:
51204
diff
changeset
|
4770 /* 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
|
4771 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
|
4772 } |
|
a35e5665c742
(construct_mouse_wheel): Result is a MOUSE_CLICK_EVENT. Scrolling down/up the
Juanma Barranquero <lekktu@gmail.com>
parents:
51204
diff
changeset
|
4773 } |
|
a35e5665c742
(construct_mouse_wheel): Result is a MOUSE_CLICK_EVENT. Scrolling down/up the
Juanma Barranquero <lekktu@gmail.com>
parents:
51204
diff
changeset
|
4774 } |
|
a35e5665c742
(construct_mouse_wheel): Result is a MOUSE_CLICK_EVENT. Scrolling down/up the
Juanma Barranquero <lekktu@gmail.com>
parents:
51204
diff
changeset
|
4775 } |
|
19713
043ccce224fb
(SIF_*): Win95 macros defined for NT.
Geoff Voelker <voelker@cs.washington.edu>
parents:
18877
diff
changeset
|
4776 } |
|
043ccce224fb
(SIF_*): Win95 macros defined for NT.
Geoff Voelker <voelker@cs.washington.edu>
parents:
18877
diff
changeset
|
4777 |
| 13434 | 4778 UNBLOCK_INPUT; |
| 4779 return count; | |
| 4780 } | |
|
27402
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
4781 |
|
29321
8e2be36bb1c6
Format and doc changes to bring closer to xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
28369
diff
changeset
|
4782 |
| 13434 | 4783 |
|
27402
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
4784 /*********************************************************************** |
|
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
4785 Text Cursor |
|
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
4786 ***********************************************************************/ |
|
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
4787 |
|
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
4788 /* 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
|
4789 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
|
4790 |
|
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
4791 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
|
4792 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
|
4793 mode lines must be clipped to the whole window. */ |
| 13434 | 4794 |
| 4795 static void | |
|
58402
d1d4d5846215
(w32_clip_to_row): Add area arg. Callers changed.
Kim F. Storm <storm@cua.dk>
parents:
57837
diff
changeset
|
4796 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
|
4797 struct window *w; |
|
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
4798 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
|
4799 int area; |
|
27402
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
4800 HDC hdc; |
|
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
4801 { |
|
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
4802 struct frame *f = XFRAME (WINDOW_FRAME (w)); |
|
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
4803 RECT clip_rect; |
|
58402
d1d4d5846215
(w32_clip_to_row): Add area arg. Callers changed.
Kim F. Storm <storm@cua.dk>
parents:
57837
diff
changeset
|
4804 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
|
4805 |
|
d1d4d5846215
(w32_clip_to_row): Add area arg. Callers changed.
Kim F. Storm <storm@cua.dk>
parents:
57837
diff
changeset
|
4806 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
|
4807 |
|
d1d4d5846215
(w32_clip_to_row): Add area arg. Callers changed.
Kim F. Storm <storm@cua.dk>
parents:
57837
diff
changeset
|
4808 clip_rect.left = window_x; |
|
27402
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
4809 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
|
4810 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
|
4811 clip_rect.right = clip_rect.left + window_width; |
|
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
4812 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
|
4813 |
|
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
4814 w32_set_clip_rectangle (hdc, &clip_rect); |
|
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
4815 } |
|
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
4816 |
|
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
4817 |
|
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
4818 /* 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
|
4819 |
|
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
4820 static void |
|
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
4821 x_draw_hollow_cursor (w, row) |
|
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
4822 struct window *w; |
|
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
4823 struct glyph_row *row; |
|
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
4824 { |
|
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
4825 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
|
4826 HDC hdc; |
| 13434 | 4827 RECT rect; |
|
71074
67dc3a0454b2
(x_draw_hollow_cursor): Fix last change.
Eli Zaretskii <eliz@gnu.org>
parents:
71073
diff
changeset
|
4828 int left, top, h; |
|
27402
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
4829 struct glyph *cursor_glyph; |
|
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
4830 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
|
4831 |
|
55286
b4bf3dd67827
(x_draw_hollow_cursor): Sync with xterm.c
Jason Rumney <jasonr@gnu.org>
parents:
55026
diff
changeset
|
4832 /* 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
|
4833 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
|
4834 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
|
4835 if (cursor_glyph == NULL) |
|
b4bf3dd67827
(x_draw_hollow_cursor): Sync with xterm.c
Jason Rumney <jasonr@gnu.org>
parents:
55026
diff
changeset
|
4836 return; |
|
b4bf3dd67827
(x_draw_hollow_cursor): Sync with xterm.c
Jason Rumney <jasonr@gnu.org>
parents:
55026
diff
changeset
|
4837 |
|
59748
1df465faf1df
(x_draw_hollow_cursor): Use get_phys_cursor_geometry.
Kim F. Storm <storm@cua.dk>
parents:
59655
diff
changeset
|
4838 /* 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
|
4839 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
|
4840 rect.left = left; |
|
67dc3a0454b2
(x_draw_hollow_cursor): Fix last change.
Eli Zaretskii <eliz@gnu.org>
parents:
71073
diff
changeset
|
4841 rect.top = top; |
|
55286
b4bf3dd67827
(x_draw_hollow_cursor): Sync with xterm.c
Jason Rumney <jasonr@gnu.org>
parents:
55026
diff
changeset
|
4842 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
|
4843 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
|
4844 |
|
34779
94c3431a7fe2
(x_draw_hollow_cursor): Delay obtaining the frame's DC to avoid
Jason Rumney <jasonr@gnu.org>
parents:
34545
diff
changeset
|
4845 hdc = get_frame_dc (f); |
|
49393
85246e86a2cd
* w32term.c (x_draw_glyph_string_foreground)
Jason Rumney <jasonr@gnu.org>
parents:
49371
diff
changeset
|
4846 /* 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
|
4847 w32_clip_to_row (w, row, TEXT_AREA, hdc); |
| 13434 | 4848 FrameRect (hdc, &rect, hb); |
| 4849 DeleteObject (hb); | |
|
49393
85246e86a2cd
* w32term.c (x_draw_glyph_string_foreground)
Jason Rumney <jasonr@gnu.org>
parents:
49371
diff
changeset
|
4850 w32_set_clip_rectangle (hdc, NULL); |
|
15151
ed6ddfc0d954
(Vwindow_system): Declared.
Geoff Voelker <voelker@cs.washington.edu>
parents:
15035
diff
changeset
|
4851 release_frame_dc (f, hdc); |
| 13434 | 4852 } |
| 4853 | |
|
27402
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
4854 |
|
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
4855 /* 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
|
4856 |
|
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
4857 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
|
4858 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
|
4859 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
|
4860 --gerd. */ |
|
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
4861 |
|
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
4862 static void |
|
45467
583ed47de245
(x_draw_bar_cursor): New argument KIND; callers changed.
Jason Rumney <jasonr@gnu.org>
parents:
45196
diff
changeset
|
4863 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
|
4864 struct window *w; |
|
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
4865 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
|
4866 int width; |
|
45467
583ed47de245
(x_draw_bar_cursor): New argument KIND; callers changed.
Jason Rumney <jasonr@gnu.org>
parents:
45196
diff
changeset
|
4867 enum text_cursor_kinds kind; |
|
27402
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
4868 { |
|
35384
e50a7f9ce65e
(x_produce_stretch_glyph): Only use Qspace when GLYPH_DEBUG is defined.
Jason Rumney <jasonr@gnu.org>
parents:
35287
diff
changeset
|
4869 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
|
4870 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
|
4871 int x; |
|
e50a7f9ce65e
(x_produce_stretch_glyph): Only use Qspace when GLYPH_DEBUG is defined.
Jason Rumney <jasonr@gnu.org>
parents:
35287
diff
changeset
|
4872 HDC hdc; |
|
e50a7f9ce65e
(x_produce_stretch_glyph): Only use Qspace when GLYPH_DEBUG is defined.
Jason Rumney <jasonr@gnu.org>
parents:
35287
diff
changeset
|
4873 |
|
e50a7f9ce65e
(x_produce_stretch_glyph): Only use Qspace when GLYPH_DEBUG is defined.
Jason Rumney <jasonr@gnu.org>
parents:
35287
diff
changeset
|
4874 /* 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
|
4875 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
|
4876 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
|
4877 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
|
4878 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
|
4879 return; |
|
e50a7f9ce65e
(x_produce_stretch_glyph): Only use Qspace when GLYPH_DEBUG is defined.
Jason Rumney <jasonr@gnu.org>
parents:
35287
diff
changeset
|
4880 |
|
e50a7f9ce65e
(x_produce_stretch_glyph): Only use Qspace when GLYPH_DEBUG is defined.
Jason Rumney <jasonr@gnu.org>
parents:
35287
diff
changeset
|
4881 /* 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
|
4882 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
|
4883 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
|
4884 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
|
4885 { |
|
e50a7f9ce65e
(x_produce_stretch_glyph): Only use Qspace when GLYPH_DEBUG is defined.
Jason Rumney <jasonr@gnu.org>
parents:
35287
diff
changeset
|
4886 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
|
4887 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
|
4888 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
|
4889 } |
|
e50a7f9ce65e
(x_produce_stretch_glyph): Only use Qspace when GLYPH_DEBUG is defined.
Jason Rumney <jasonr@gnu.org>
parents:
35287
diff
changeset
|
4890 else |
|
e50a7f9ce65e
(x_produce_stretch_glyph): Only use Qspace when GLYPH_DEBUG is defined.
Jason Rumney <jasonr@gnu.org>
parents:
35287
diff
changeset
|
4891 { |
|
41249
2043af2d023f
(note_mouse_highlight): Fix type of variable `ignore'.
Jason Rumney <jasonr@gnu.org>
parents:
41125
diff
changeset
|
4892 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
|
4893 struct face *face = FACE_FROM_ID (f, cursor_glyph->face_id); |
|
2043af2d023f
(note_mouse_highlight): Fix type of variable `ignore'.
Jason Rumney <jasonr@gnu.org>
parents:
41125
diff
changeset
|
4894 |
|
2043af2d023f
(note_mouse_highlight): Fix type of variable `ignore'.
Jason Rumney <jasonr@gnu.org>
parents:
41125
diff
changeset
|
4895 /* 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
|
4896 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
|
4897 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
|
4898 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
|
4899 that the glyph is legible. */ |
|
2043af2d023f
(note_mouse_highlight): Fix type of variable `ignore'.
Jason Rumney <jasonr@gnu.org>
parents:
41125
diff
changeset
|
4900 if (face->background == cursor_color) |
|
2043af2d023f
(note_mouse_highlight): Fix type of variable `ignore'.
Jason Rumney <jasonr@gnu.org>
parents:
41125
diff
changeset
|
4901 cursor_color = face->foreground; |
|
2043af2d023f
(note_mouse_highlight): Fix type of variable `ignore'.
Jason Rumney <jasonr@gnu.org>
parents:
41125
diff
changeset
|
4902 |
|
35384
e50a7f9ce65e
(x_produce_stretch_glyph): Only use Qspace when GLYPH_DEBUG is defined.
Jason Rumney <jasonr@gnu.org>
parents:
35287
diff
changeset
|
4903 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
|
4904 |
|
85246e86a2cd
* w32term.c (x_draw_glyph_string_foreground)
Jason Rumney <jasonr@gnu.org>
parents:
49371
diff
changeset
|
4905 if (width < 0) |
|
85246e86a2cd
* w32term.c (x_draw_glyph_string_foreground)
Jason Rumney <jasonr@gnu.org>
parents:
49371
diff
changeset
|
4906 width = FRAME_CURSOR_WIDTH (f); |
|
85246e86a2cd
* w32term.c (x_draw_glyph_string_foreground)
Jason Rumney <jasonr@gnu.org>
parents:
49371
diff
changeset
|
4907 width = min (cursor_glyph->pixel_width, width); |
|
85246e86a2cd
* w32term.c (x_draw_glyph_string_foreground)
Jason Rumney <jasonr@gnu.org>
parents:
49371
diff
changeset
|
4908 |
|
85246e86a2cd
* w32term.c (x_draw_glyph_string_foreground)
Jason Rumney <jasonr@gnu.org>
parents:
49371
diff
changeset
|
4909 w->phys_cursor_width = width; |
|
85246e86a2cd
* w32term.c (x_draw_glyph_string_foreground)
Jason Rumney <jasonr@gnu.org>
parents:
49371
diff
changeset
|
4910 |
|
85246e86a2cd
* w32term.c (x_draw_glyph_string_foreground)
Jason Rumney <jasonr@gnu.org>
parents:
49371
diff
changeset
|
4911 |
|
35384
e50a7f9ce65e
(x_produce_stretch_glyph): Only use Qspace when GLYPH_DEBUG is defined.
Jason Rumney <jasonr@gnu.org>
parents:
35287
diff
changeset
|
4912 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
|
4913 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
|
4914 |
|
583ed47de245
(x_draw_bar_cursor): New argument KIND; callers changed.
Jason Rumney <jasonr@gnu.org>
parents:
45196
diff
changeset
|
4915 if (kind == BAR_CURSOR) |
|
583ed47de245
(x_draw_bar_cursor): New argument KIND; callers changed.
Jason Rumney <jasonr@gnu.org>
parents:
45196
diff
changeset
|
4916 { |
|
583ed47de245
(x_draw_bar_cursor): New argument KIND; callers changed.
Jason Rumney <jasonr@gnu.org>
parents:
45196
diff
changeset
|
4917 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
|
4918 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
|
4919 width, row->height); |
|
583ed47de245
(x_draw_bar_cursor): New argument KIND; callers changed.
Jason Rumney <jasonr@gnu.org>
parents:
45196
diff
changeset
|
4920 } |
|
583ed47de245
(x_draw_bar_cursor): New argument KIND; callers changed.
Jason Rumney <jasonr@gnu.org>
parents:
45196
diff
changeset
|
4921 else |
|
583ed47de245
(x_draw_bar_cursor): New argument KIND; callers changed.
Jason Rumney <jasonr@gnu.org>
parents:
45196
diff
changeset
|
4922 { |
|
583ed47de245
(x_draw_bar_cursor): New argument KIND; callers changed.
Jason Rumney <jasonr@gnu.org>
parents:
45196
diff
changeset
|
4923 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
|
4924 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
|
4925 row->height - width), |
|
583ed47de245
(x_draw_bar_cursor): New argument KIND; callers changed.
Jason Rumney <jasonr@gnu.org>
parents:
45196
diff
changeset
|
4926 cursor_glyph->pixel_width, width); |
|
583ed47de245
(x_draw_bar_cursor): New argument KIND; callers changed.
Jason Rumney <jasonr@gnu.org>
parents:
45196
diff
changeset
|
4927 } |
|
49393
85246e86a2cd
* w32term.c (x_draw_glyph_string_foreground)
Jason Rumney <jasonr@gnu.org>
parents:
49371
diff
changeset
|
4928 |
|
85246e86a2cd
* w32term.c (x_draw_glyph_string_foreground)
Jason Rumney <jasonr@gnu.org>
parents:
49371
diff
changeset
|
4929 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
|
4930 release_frame_dc (f, hdc); |
|
27402
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
4931 } |
|
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
4932 } |
|
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
4933 |
|
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
4934 |
|
50231
c8ea5e4b2129
* w32term.c: Remove consolidated defines and code.
Kim F. Storm <storm@cua.dk>
parents:
50163
diff
changeset
|
4935 /* RIF: Define cursor CURSOR on frame F. */ |
|
27402
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
4936 |
|
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
4937 static void |
|
50231
c8ea5e4b2129
* w32term.c: Remove consolidated defines and code.
Kim F. Storm <storm@cua.dk>
parents:
50163
diff
changeset
|
4938 w32_define_frame_cursor (f, cursor) |
|
c8ea5e4b2129
* w32term.c: Remove consolidated defines and code.
Kim F. Storm <storm@cua.dk>
parents:
50163
diff
changeset
|
4939 struct frame *f; |
|
c8ea5e4b2129
* w32term.c: Remove consolidated defines and code.
Kim F. Storm <storm@cua.dk>
parents:
50163
diff
changeset
|
4940 Cursor cursor; |
|
27402
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
4941 { |
|
50231
c8ea5e4b2129
* w32term.c: Remove consolidated defines and code.
Kim F. Storm <storm@cua.dk>
parents:
50163
diff
changeset
|
4942 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
|
4943 } |
|
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
4944 |
|
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
4945 |
|
50231
c8ea5e4b2129
* w32term.c: Remove consolidated defines and code.
Kim F. Storm <storm@cua.dk>
parents:
50163
diff
changeset
|
4946 /* RIF: Clear area on frame F. */ |
| 13434 | 4947 |
| 4948 static void | |
|
50231
c8ea5e4b2129
* w32term.c: Remove consolidated defines and code.
Kim F. Storm <storm@cua.dk>
parents:
50163
diff
changeset
|
4949 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
|
4950 struct frame *f; |
|
c8ea5e4b2129
* w32term.c: Remove consolidated defines and code.
Kim F. Storm <storm@cua.dk>
parents:
50163
diff
changeset
|
4951 int x, y, width, height; |
|
27402
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
4952 { |
|
50231
c8ea5e4b2129
* w32term.c: Remove consolidated defines and code.
Kim F. Storm <storm@cua.dk>
parents:
50163
diff
changeset
|
4953 HDC hdc; |
|
c8ea5e4b2129
* w32term.c: Remove consolidated defines and code.
Kim F. Storm <storm@cua.dk>
parents:
50163
diff
changeset
|
4954 |
|
c8ea5e4b2129
* w32term.c: Remove consolidated defines and code.
Kim F. Storm <storm@cua.dk>
parents:
50163
diff
changeset
|
4955 hdc = get_frame_dc (f); |
|
c8ea5e4b2129
* w32term.c: Remove consolidated defines and code.
Kim F. Storm <storm@cua.dk>
parents:
50163
diff
changeset
|
4956 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
|
4957 release_frame_dc (f, hdc); |
|
27402
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
4958 } |
|
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
4959 |
|
50231
c8ea5e4b2129
* w32term.c: Remove consolidated defines and code.
Kim F. Storm <storm@cua.dk>
parents:
50163
diff
changeset
|
4960 /* 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
|
4961 |
|
c8ea5e4b2129
* w32term.c: Remove consolidated defines and code.
Kim F. Storm <storm@cua.dk>
parents:
50163
diff
changeset
|
4962 static void |
|
50243
3fb54e5a7201
(struct redisplay_interface): Add active_p argument to
Kim F. Storm <storm@cua.dk>
parents:
50231
diff
changeset
|
4963 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
|
4964 struct window *w; |
|
50231
c8ea5e4b2129
* w32term.c: Remove consolidated defines and code.
Kim F. Storm <storm@cua.dk>
parents:
50163
diff
changeset
|
4965 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
|
4966 int x, y; |
|
3fb54e5a7201
(struct redisplay_interface): Add active_p argument to
Kim F. Storm <storm@cua.dk>
parents:
50231
diff
changeset
|
4967 int cursor_type, cursor_width; |
|
3fb54e5a7201
(struct redisplay_interface): Add active_p argument to
Kim F. Storm <storm@cua.dk>
parents:
50231
diff
changeset
|
4968 int on_p, active_p; |
|
27402
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
4969 { |
|
50243
3fb54e5a7201
(struct redisplay_interface): Add active_p argument to
Kim F. Storm <storm@cua.dk>
parents:
50231
diff
changeset
|
4970 if (on_p) |
|
27402
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
4971 { |
|
42864
c1af6a7f3dd4
(w32_system_caret_width): Remove.
Jason Rumney <jasonr@gnu.org>
parents:
42844
diff
changeset
|
4972 /* 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
|
4973 cursor remains invisible. */ |
|
c1af6a7f3dd4
(w32_system_caret_width): Remove.
Jason Rumney <jasonr@gnu.org>
parents:
42844
diff
changeset
|
4974 if (w32_use_visible_system_caret) |
|
c1af6a7f3dd4
(w32_system_caret_width): Remove.
Jason Rumney <jasonr@gnu.org>
parents:
42844
diff
changeset
|
4975 { |
|
54171
f6909a416c3f
(w32_read_socket): Remove bufp_r and numcharsp args.
Kim F. Storm <storm@cua.dk>
parents:
54126
diff
changeset
|
4976 /* 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
|
4977 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
|
4978 overwritten before this function was called. */ |
|
42864
c1af6a7f3dd4
(w32_system_caret_width): Remove.
Jason Rumney <jasonr@gnu.org>
parents:
42844
diff
changeset
|
4979 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
|
4980 erase_phys_cursor (w); |
|
42864
c1af6a7f3dd4
(w32_system_caret_width): Remove.
Jason Rumney <jasonr@gnu.org>
parents:
42844
diff
changeset
|
4981 |
|
50243
3fb54e5a7201
(struct redisplay_interface): Add active_p argument to
Kim F. Storm <storm@cua.dk>
parents:
50231
diff
changeset
|
4982 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
|
4983 w->phys_cursor_width = -1; |
|
42864
c1af6a7f3dd4
(w32_system_caret_width): Remove.
Jason Rumney <jasonr@gnu.org>
parents:
42844
diff
changeset
|
4984 } |
|
c1af6a7f3dd4
(w32_system_caret_width): Remove.
Jason Rumney <jasonr@gnu.org>
parents:
42844
diff
changeset
|
4985 else |
|
43621
7755c5d1d8b4
(x_display_and_set_cursor): Blink box cursor using
Kim F. Storm <storm@cua.dk>
parents:
43478
diff
changeset
|
4986 { |
|
50243
3fb54e5a7201
(struct redisplay_interface): Add active_p argument to
Kim F. Storm <storm@cua.dk>
parents:
50231
diff
changeset
|
4987 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
|
4988 } |
|
42864
c1af6a7f3dd4
(w32_system_caret_width): Remove.
Jason Rumney <jasonr@gnu.org>
parents:
42844
diff
changeset
|
4989 |
|
27402
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
4990 w->phys_cursor_on_p = 1; |
|
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
4991 |
|
40384
25e6d4bb5f7f
(w32_system_caret_hwnd, w32_system_caret_width)
Jason Rumney <jasonr@gnu.org>
parents:
40245
diff
changeset
|
4992 /* 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
|
4993 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
|
4994 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
|
4995 if (active_p) |
|
40384
25e6d4bb5f7f
(w32_system_caret_hwnd, w32_system_caret_width)
Jason Rumney <jasonr@gnu.org>
parents:
40245
diff
changeset
|
4996 { |
|
50280
1a5341fe785b
(w32_draw_window_cursor): Fix last change.
Kim F. Storm <storm@cua.dk>
parents:
50247
diff
changeset
|
4997 struct frame *f = XFRAME (WINDOW_FRAME (w)); |
|
42864
c1af6a7f3dd4
(w32_system_caret_width): Remove.
Jason Rumney <jasonr@gnu.org>
parents:
42844
diff
changeset
|
4998 HWND hwnd = FRAME_W32_WINDOW (f); |
|
c1af6a7f3dd4
(w32_system_caret_width): Remove.
Jason Rumney <jasonr@gnu.org>
parents:
42844
diff
changeset
|
4999 |
|
c1af6a7f3dd4
(w32_system_caret_width): Remove.
Jason Rumney <jasonr@gnu.org>
parents:
42844
diff
changeset
|
5000 w32_system_caret_x |
|
c1af6a7f3dd4
(w32_system_caret_width): Remove.
Jason Rumney <jasonr@gnu.org>
parents:
42844
diff
changeset
|
5001 = 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
|
5002 w32_system_caret_y |
|
c1af6a7f3dd4
(w32_system_caret_width): Remove.
Jason Rumney <jasonr@gnu.org>
parents:
42844
diff
changeset
|
5003 = (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
|
5004 + glyph_row->ascent - w->phys_cursor_ascent); |
|
c1af6a7f3dd4
(w32_system_caret_width): Remove.
Jason Rumney <jasonr@gnu.org>
parents:
42844
diff
changeset
|
5005 |
|
c1af6a7f3dd4
(w32_system_caret_width): Remove.
Jason Rumney <jasonr@gnu.org>
parents:
42844
diff
changeset
|
5006 /* 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
|
5007 system caret. */ |
|
c1af6a7f3dd4
(w32_system_caret_width): Remove.
Jason Rumney <jasonr@gnu.org>
parents:
42844
diff
changeset
|
5008 if (w32_system_caret_hwnd |
|
c1af6a7f3dd4
(w32_system_caret_width): Remove.
Jason Rumney <jasonr@gnu.org>
parents:
42844
diff
changeset
|
5009 && (w32_system_caret_height != w->phys_cursor_height)) |
|
c1af6a7f3dd4
(w32_system_caret_width): Remove.
Jason Rumney <jasonr@gnu.org>
parents:
42844
diff
changeset
|
5010 PostMessage (hwnd, WM_EMACS_DESTROY_CARET, 0, 0); |
|
c1af6a7f3dd4
(w32_system_caret_width): Remove.
Jason Rumney <jasonr@gnu.org>
parents:
42844
diff
changeset
|
5011 |
|
c1af6a7f3dd4
(w32_system_caret_width): Remove.
Jason Rumney <jasonr@gnu.org>
parents:
42844
diff
changeset
|
5012 w32_system_caret_height = w->phys_cursor_height; |
|
c1af6a7f3dd4
(w32_system_caret_width): Remove.
Jason Rumney <jasonr@gnu.org>
parents:
42844
diff
changeset
|
5013 |
|
c1af6a7f3dd4
(w32_system_caret_width): Remove.
Jason Rumney <jasonr@gnu.org>
parents:
42844
diff
changeset
|
5014 /* Move the system caret. */ |
|
c1af6a7f3dd4
(w32_system_caret_width): Remove.
Jason Rumney <jasonr@gnu.org>
parents:
42844
diff
changeset
|
5015 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
|
5016 } |
|
25e6d4bb5f7f
(w32_system_caret_hwnd, w32_system_caret_width)
Jason Rumney <jasonr@gnu.org>
parents:
40245
diff
changeset
|
5017 |
|
53607
4262a032b45b
(x_update_window_end): Call draw_window_fringes.
Kim F. Storm <storm@cua.dk>
parents:
53469
diff
changeset
|
5018 if (glyph_row->exact_window_width_line_p |
|
4262a032b45b
(x_update_window_end): Call draw_window_fringes.
Kim F. Storm <storm@cua.dk>
parents:
53469
diff
changeset
|
5019 && w->phys_cursor.hpos >= glyph_row->used[TEXT_AREA]) |
|
4262a032b45b
(x_update_window_end): Call draw_window_fringes.
Kim F. Storm <storm@cua.dk>
parents:
53469
diff
changeset
|
5020 { |
|
4262a032b45b
(x_update_window_end): Call draw_window_fringes.
Kim F. Storm <storm@cua.dk>
parents:
53469
diff
changeset
|
5021 glyph_row->cursor_in_fringe_p = 1; |
|
4262a032b45b
(x_update_window_end): Call draw_window_fringes.
Kim F. Storm <storm@cua.dk>
parents:
53469
diff
changeset
|
5022 draw_fringe_bitmap (w, glyph_row, 0); |
|
4262a032b45b
(x_update_window_end): Call draw_window_fringes.
Kim F. Storm <storm@cua.dk>
parents:
53469
diff
changeset
|
5023 return; |
|
4262a032b45b
(x_update_window_end): Call draw_window_fringes.
Kim F. Storm <storm@cua.dk>
parents:
53469
diff
changeset
|
5024 } |
|
4262a032b45b
(x_update_window_end): Call draw_window_fringes.
Kim F. Storm <storm@cua.dk>
parents:
53469
diff
changeset
|
5025 |
|
50243
3fb54e5a7201
(struct redisplay_interface): Add active_p argument to
Kim F. Storm <storm@cua.dk>
parents:
50231
diff
changeset
|
5026 switch (cursor_type) |
| 13434 | 5027 { |
|
27402
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
5028 case HOLLOW_BOX_CURSOR: |
|
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
5029 x_draw_hollow_cursor (w, glyph_row); |
|
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
5030 break; |
|
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
5031 |
|
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
5032 case FILLED_BOX_CURSOR: |
|
50231
c8ea5e4b2129
* w32term.c: Remove consolidated defines and code.
Kim F. Storm <storm@cua.dk>
parents:
50163
diff
changeset
|
5033 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
|
5034 break; |
|
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
5035 |
|
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
5036 case BAR_CURSOR: |
|
50243
3fb54e5a7201
(struct redisplay_interface): Add active_p argument to
Kim F. Storm <storm@cua.dk>
parents:
50231
diff
changeset
|
5037 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
|
5038 break; |
|
583ed47de245
(x_draw_bar_cursor): New argument KIND; callers changed.
Jason Rumney <jasonr@gnu.org>
parents:
45196
diff
changeset
|
5039 |
|
583ed47de245
(x_draw_bar_cursor): New argument KIND; callers changed.
Jason Rumney <jasonr@gnu.org>
parents:
45196
diff
changeset
|
5040 case HBAR_CURSOR: |
|
50243
3fb54e5a7201
(struct redisplay_interface): Add active_p argument to
Kim F. Storm <storm@cua.dk>
parents:
50231
diff
changeset
|
5041 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
|
5042 break; |
|
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
5043 |
|
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
5044 case NO_CURSOR: |
|
49393
85246e86a2cd
* w32term.c (x_draw_glyph_string_foreground)
Jason Rumney <jasonr@gnu.org>
parents:
49371
diff
changeset
|
5045 w->phys_cursor_width = 0; |
|
27402
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
5046 break; |
|
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
5047 |
|
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
5048 default: |
|
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
5049 abort (); |
| 13434 | 5050 } |
|
27402
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 } |
|
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
5053 |
|
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
5054 |
| 13434 | 5055 |
|
25236
ea748fe6dee4
(x_bitmap_icon): New function.
Geoff Voelker <voelker@cs.washington.edu>
parents:
24863
diff
changeset
|
5056 /* Icons. */ |
|
ea748fe6dee4
(x_bitmap_icon): New function.
Geoff Voelker <voelker@cs.washington.edu>
parents:
24863
diff
changeset
|
5057 |
|
ea748fe6dee4
(x_bitmap_icon): New function.
Geoff Voelker <voelker@cs.washington.edu>
parents:
24863
diff
changeset
|
5058 int |
|
ea748fe6dee4
(x_bitmap_icon): New function.
Geoff Voelker <voelker@cs.washington.edu>
parents:
24863
diff
changeset
|
5059 x_bitmap_icon (f, icon) |
|
ea748fe6dee4
(x_bitmap_icon): New function.
Geoff Voelker <voelker@cs.washington.edu>
parents:
24863
diff
changeset
|
5060 struct frame *f; |
|
ea748fe6dee4
(x_bitmap_icon): New function.
Geoff Voelker <voelker@cs.washington.edu>
parents:
24863
diff
changeset
|
5061 Lisp_Object icon; |
|
ea748fe6dee4
(x_bitmap_icon): New function.
Geoff Voelker <voelker@cs.washington.edu>
parents:
24863
diff
changeset
|
5062 { |
|
65444
14dd537e7ba9
2005-09-11 Chris Prince <cprince@gmail.com> (tiny change)
Jason Rumney <jasonr@gnu.org>
parents:
64770
diff
changeset
|
5063 HANDLE main_icon; |
|
14dd537e7ba9
2005-09-11 Chris Prince <cprince@gmail.com> (tiny change)
Jason Rumney <jasonr@gnu.org>
parents:
64770
diff
changeset
|
5064 HANDLE small_icon = NULL; |
|
25236
ea748fe6dee4
(x_bitmap_icon): New function.
Geoff Voelker <voelker@cs.washington.edu>
parents:
24863
diff
changeset
|
5065 |
|
ea748fe6dee4
(x_bitmap_icon): New function.
Geoff Voelker <voelker@cs.washington.edu>
parents:
24863
diff
changeset
|
5066 if (FRAME_W32_WINDOW (f) == 0) |
|
ea748fe6dee4
(x_bitmap_icon): New function.
Geoff Voelker <voelker@cs.washington.edu>
parents:
24863
diff
changeset
|
5067 return 1; |
|
ea748fe6dee4
(x_bitmap_icon): New function.
Geoff Voelker <voelker@cs.washington.edu>
parents:
24863
diff
changeset
|
5068 |
|
ea748fe6dee4
(x_bitmap_icon): New function.
Geoff Voelker <voelker@cs.washington.edu>
parents:
24863
diff
changeset
|
5069 if (NILP (icon)) |
|
65444
14dd537e7ba9
2005-09-11 Chris Prince <cprince@gmail.com> (tiny change)
Jason Rumney <jasonr@gnu.org>
parents:
64770
diff
changeset
|
5070 main_icon = LoadIcon (hinst, EMACS_CLASS); |
|
25236
ea748fe6dee4
(x_bitmap_icon): New function.
Geoff Voelker <voelker@cs.washington.edu>
parents:
24863
diff
changeset
|
5071 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
|
5072 { |
|
14dd537e7ba9
2005-09-11 Chris Prince <cprince@gmail.com> (tiny change)
Jason Rumney <jasonr@gnu.org>
parents:
64770
diff
changeset
|
5073 /* 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
|
5074 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
|
5075 LR_DEFAULTSIZE | LR_LOADFROMFILE); |
|
14dd537e7ba9
2005-09-11 Chris Prince <cprince@gmail.com> (tiny change)
Jason Rumney <jasonr@gnu.org>
parents:
64770
diff
changeset
|
5076 /* 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
|
5077 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
|
5078 GetSystemMetrics (SM_CXSMICON), |
|
14dd537e7ba9
2005-09-11 Chris Prince <cprince@gmail.com> (tiny change)
Jason Rumney <jasonr@gnu.org>
parents:
64770
diff
changeset
|
5079 GetSystemMetrics (SM_CYSMICON), |
|
14dd537e7ba9
2005-09-11 Chris Prince <cprince@gmail.com> (tiny change)
Jason Rumney <jasonr@gnu.org>
parents:
64770
diff
changeset
|
5080 LR_LOADFROMFILE); |
|
14dd537e7ba9
2005-09-11 Chris Prince <cprince@gmail.com> (tiny change)
Jason Rumney <jasonr@gnu.org>
parents:
64770
diff
changeset
|
5081 } |
|
25236
ea748fe6dee4
(x_bitmap_icon): New function.
Geoff Voelker <voelker@cs.washington.edu>
parents:
24863
diff
changeset
|
5082 else if (SYMBOLP (icon)) |
|
ea748fe6dee4
(x_bitmap_icon): New function.
Geoff Voelker <voelker@cs.washington.edu>
parents:
24863
diff
changeset
|
5083 { |
|
ea748fe6dee4
(x_bitmap_icon): New function.
Geoff Voelker <voelker@cs.washington.edu>
parents:
24863
diff
changeset
|
5084 LPCTSTR name; |
|
ea748fe6dee4
(x_bitmap_icon): New function.
Geoff Voelker <voelker@cs.washington.edu>
parents:
24863
diff
changeset
|
5085 |
|
ea748fe6dee4
(x_bitmap_icon): New function.
Geoff Voelker <voelker@cs.washington.edu>
parents:
24863
diff
changeset
|
5086 if (EQ (icon, intern ("application"))) |
|
ea748fe6dee4
(x_bitmap_icon): New function.
Geoff Voelker <voelker@cs.washington.edu>
parents:
24863
diff
changeset
|
5087 name = (LPCTSTR) IDI_APPLICATION; |
|
ea748fe6dee4
(x_bitmap_icon): New function.
Geoff Voelker <voelker@cs.washington.edu>
parents:
24863
diff
changeset
|
5088 else if (EQ (icon, intern ("hand"))) |
|
ea748fe6dee4
(x_bitmap_icon): New function.
Geoff Voelker <voelker@cs.washington.edu>
parents:
24863
diff
changeset
|
5089 name = (LPCTSTR) IDI_HAND; |
|
ea748fe6dee4
(x_bitmap_icon): New function.
Geoff Voelker <voelker@cs.washington.edu>
parents:
24863
diff
changeset
|
5090 else if (EQ (icon, intern ("question"))) |
|
ea748fe6dee4
(x_bitmap_icon): New function.
Geoff Voelker <voelker@cs.washington.edu>
parents:
24863
diff
changeset
|
5091 name = (LPCTSTR) IDI_QUESTION; |
|
ea748fe6dee4
(x_bitmap_icon): New function.
Geoff Voelker <voelker@cs.washington.edu>
parents:
24863
diff
changeset
|
5092 else if (EQ (icon, intern ("exclamation"))) |
|
ea748fe6dee4
(x_bitmap_icon): New function.
Geoff Voelker <voelker@cs.washington.edu>
parents:
24863
diff
changeset
|
5093 name = (LPCTSTR) IDI_EXCLAMATION; |
|
ea748fe6dee4
(x_bitmap_icon): New function.
Geoff Voelker <voelker@cs.washington.edu>
parents:
24863
diff
changeset
|
5094 else if (EQ (icon, intern ("asterisk"))) |
|
ea748fe6dee4
(x_bitmap_icon): New function.
Geoff Voelker <voelker@cs.washington.edu>
parents:
24863
diff
changeset
|
5095 name = (LPCTSTR) IDI_ASTERISK; |
|
ea748fe6dee4
(x_bitmap_icon): New function.
Geoff Voelker <voelker@cs.washington.edu>
parents:
24863
diff
changeset
|
5096 else if (EQ (icon, intern ("winlogo"))) |
|
ea748fe6dee4
(x_bitmap_icon): New function.
Geoff Voelker <voelker@cs.washington.edu>
parents:
24863
diff
changeset
|
5097 name = (LPCTSTR) IDI_WINLOGO; |
|
ea748fe6dee4
(x_bitmap_icon): New function.
Geoff Voelker <voelker@cs.washington.edu>
parents:
24863
diff
changeset
|
5098 else |
|
ea748fe6dee4
(x_bitmap_icon): New function.
Geoff Voelker <voelker@cs.washington.edu>
parents:
24863
diff
changeset
|
5099 return 1; |
|
ea748fe6dee4
(x_bitmap_icon): New function.
Geoff Voelker <voelker@cs.washington.edu>
parents:
24863
diff
changeset
|
5100 |
|
65444
14dd537e7ba9
2005-09-11 Chris Prince <cprince@gmail.com> (tiny change)
Jason Rumney <jasonr@gnu.org>
parents:
64770
diff
changeset
|
5101 main_icon = LoadIcon (NULL, name); |
|
25236
ea748fe6dee4
(x_bitmap_icon): New function.
Geoff Voelker <voelker@cs.washington.edu>
parents:
24863
diff
changeset
|
5102 } |
|
ea748fe6dee4
(x_bitmap_icon): New function.
Geoff Voelker <voelker@cs.washington.edu>
parents:
24863
diff
changeset
|
5103 else |
|
ea748fe6dee4
(x_bitmap_icon): New function.
Geoff Voelker <voelker@cs.washington.edu>
parents:
24863
diff
changeset
|
5104 return 1; |
|
ea748fe6dee4
(x_bitmap_icon): New function.
Geoff Voelker <voelker@cs.washington.edu>
parents:
24863
diff
changeset
|
5105 |
|
65444
14dd537e7ba9
2005-09-11 Chris Prince <cprince@gmail.com> (tiny change)
Jason Rumney <jasonr@gnu.org>
parents:
64770
diff
changeset
|
5106 if (main_icon == NULL) |
|
25236
ea748fe6dee4
(x_bitmap_icon): New function.
Geoff Voelker <voelker@cs.washington.edu>
parents:
24863
diff
changeset
|
5107 return 1; |
|
ea748fe6dee4
(x_bitmap_icon): New function.
Geoff Voelker <voelker@cs.washington.edu>
parents:
24863
diff
changeset
|
5108 |
|
27402
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
5109 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
|
5110 (LPARAM) main_icon); |
|
14dd537e7ba9
2005-09-11 Chris Prince <cprince@gmail.com> (tiny change)
Jason Rumney <jasonr@gnu.org>
parents:
64770
diff
changeset
|
5111 |
|
14dd537e7ba9
2005-09-11 Chris Prince <cprince@gmail.com> (tiny change)
Jason Rumney <jasonr@gnu.org>
parents:
64770
diff
changeset
|
5112 /* 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
|
5113 if (small_icon) |
|
14dd537e7ba9
2005-09-11 Chris Prince <cprince@gmail.com> (tiny change)
Jason Rumney <jasonr@gnu.org>
parents:
64770
diff
changeset
|
5114 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
|
5115 (LPARAM) small_icon); |
|
25236
ea748fe6dee4
(x_bitmap_icon): New function.
Geoff Voelker <voelker@cs.washington.edu>
parents:
24863
diff
changeset
|
5116 |
|
ea748fe6dee4
(x_bitmap_icon): New function.
Geoff Voelker <voelker@cs.washington.edu>
parents:
24863
diff
changeset
|
5117 return 0; |
|
ea748fe6dee4
(x_bitmap_icon): New function.
Geoff Voelker <voelker@cs.washington.edu>
parents:
24863
diff
changeset
|
5118 } |
|
ea748fe6dee4
(x_bitmap_icon): New function.
Geoff Voelker <voelker@cs.washington.edu>
parents:
24863
diff
changeset
|
5119 |
|
ea748fe6dee4
(x_bitmap_icon): New function.
Geoff Voelker <voelker@cs.washington.edu>
parents:
24863
diff
changeset
|
5120 |
|
35384
e50a7f9ce65e
(x_produce_stretch_glyph): Only use Qspace when GLYPH_DEBUG is defined.
Jason Rumney <jasonr@gnu.org>
parents:
35287
diff
changeset
|
5121 /************************************************************************ |
|
e50a7f9ce65e
(x_produce_stretch_glyph): Only use Qspace when GLYPH_DEBUG is defined.
Jason Rumney <jasonr@gnu.org>
parents:
35287
diff
changeset
|
5122 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
|
5123 ************************************************************************/ |
|
e50a7f9ce65e
(x_produce_stretch_glyph): Only use Qspace when GLYPH_DEBUG is defined.
Jason Rumney <jasonr@gnu.org>
parents:
35287
diff
changeset
|
5124 |
|
e50a7f9ce65e
(x_produce_stretch_glyph): Only use Qspace when GLYPH_DEBUG is defined.
Jason Rumney <jasonr@gnu.org>
parents:
35287
diff
changeset
|
5125 /* 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
|
5126 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
|
5127 |
|
e50a7f9ce65e
(x_produce_stretch_glyph): Only use Qspace when GLYPH_DEBUG is defined.
Jason Rumney <jasonr@gnu.org>
parents:
35287
diff
changeset
|
5128 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
|
5129 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
|
5130 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
|
5131 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
|
5132 x_fully_uncatch_errors () |
|
259ab035a718
Add x_fully_uncatch_errors and x_catching_errors to
Eli Zaretskii <eliz@gnu.org>
parents:
68651
diff
changeset
|
5133 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
|
5134 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
|
5135 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
|
5136 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
|
5137 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
|
5138 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
|
5139 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
|
5140 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
|
5141 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
|
5142 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
|
5143 |
|
e50a7f9ce65e
(x_produce_stretch_glyph): Only use Qspace when GLYPH_DEBUG is defined.
Jason Rumney <jasonr@gnu.org>
parents:
35287
diff
changeset
|
5144 */ |
|
e50a7f9ce65e
(x_produce_stretch_glyph): Only use Qspace when GLYPH_DEBUG is defined.
Jason Rumney <jasonr@gnu.org>
parents:
35287
diff
changeset
|
5145 |
|
e50a7f9ce65e
(x_produce_stretch_glyph): Only use Qspace when GLYPH_DEBUG is defined.
Jason Rumney <jasonr@gnu.org>
parents:
35287
diff
changeset
|
5146 |
| 13434 | 5147 /* Changing the font of the frame. */ |
| 5148 | |
| 90834 | 5149 Lisp_Object |
|
94912
5b153bea483d
: Throughout the file, delete all USE_FONT_BACKEND
Kenichi Handa <handa@m17n.org>
parents:
93913
diff
changeset
|
5150 x_new_font (f, font_object, fontset) |
| 90834 | 5151 struct frame *f; |
|
94912
5b153bea483d
: Throughout the file, delete all USE_FONT_BACKEND
Kenichi Handa <handa@m17n.org>
parents:
93913
diff
changeset
|
5152 Lisp_Object font_object; |
| 90834 | 5153 int fontset; |
|
94912
5b153bea483d
: Throughout the file, delete all USE_FONT_BACKEND
Kenichi Handa <handa@m17n.org>
parents:
93913
diff
changeset
|
5154 { |
|
5b153bea483d
: Throughout the file, delete all USE_FONT_BACKEND
Kenichi Handa <handa@m17n.org>
parents:
93913
diff
changeset
|
5155 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
|
5156 |
|
5b153bea483d
: Throughout the file, delete all USE_FONT_BACKEND
Kenichi Handa <handa@m17n.org>
parents:
93913
diff
changeset
|
5157 if (fontset < 0) |
|
5b153bea483d
: Throughout the file, delete all USE_FONT_BACKEND
Kenichi Handa <handa@m17n.org>
parents:
93913
diff
changeset
|
5158 fontset = fontset_from_font (font_object); |
|
5b153bea483d
: Throughout the file, delete all USE_FONT_BACKEND
Kenichi Handa <handa@m17n.org>
parents:
93913
diff
changeset
|
5159 FRAME_FONTSET (f) = fontset; |
|
5b153bea483d
: Throughout the file, delete all USE_FONT_BACKEND
Kenichi Handa <handa@m17n.org>
parents:
93913
diff
changeset
|
5160 if (FRAME_FONT (f) == font) |
| 90834 | 5161 /* This font is already set in frame F. There's nothing more to |
| 5162 do. */ | |
| 5163 return fontset_name (fontset); | |
| 5164 | |
| 5165 BLOCK_INPUT; | |
| 5166 | |
|
94912
5b153bea483d
: Throughout the file, delete all USE_FONT_BACKEND
Kenichi Handa <handa@m17n.org>
parents:
93913
diff
changeset
|
5167 FRAME_FONT (f) = font; |
|
5b153bea483d
: Throughout the file, delete all USE_FONT_BACKEND
Kenichi Handa <handa@m17n.org>
parents:
93913
diff
changeset
|
5168 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
|
5169 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
|
5170 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
|
5171 FRAME_LINE_HEIGHT (f) = font->height; |
| 90834 | 5172 |
| 5173 compute_fringe_widths (f, 1); | |
| 5174 | |
| 5175 /* Compute the scroll bar width in character columns. */ | |
| 5176 if (FRAME_CONFIG_SCROLL_BAR_WIDTH (f) > 0) | |
| 5177 { | |
| 5178 int wid = FRAME_COLUMN_WIDTH (f); | |
| 5179 FRAME_CONFIG_SCROLL_BAR_COLS (f) | |
| 5180 = (FRAME_CONFIG_SCROLL_BAR_WIDTH (f) + wid - 1) / wid; | |
| 5181 } | |
| 5182 else | |
| 5183 { | |
| 5184 int wid = FRAME_COLUMN_WIDTH (f); | |
| 5185 FRAME_CONFIG_SCROLL_BAR_COLS (f) = (14 + wid - 1) / wid; | |
| 5186 } | |
| 5187 | |
| 5188 /* Now make the frame display the given font. */ | |
| 5189 if (FRAME_X_WINDOW (f) != 0) | |
| 5190 { | |
| 5191 /* Don't change the size of a tip frame; there's no point in | |
| 5192 doing it because it's done in Fx_show_tip, and it leads to | |
| 5193 problems because the tip frame has no widget. */ | |
| 5194 if (NILP (tip_frame) || XFRAME (tip_frame) != f) | |
| 5195 x_set_window_size (f, 0, FRAME_COLS (f), FRAME_LINES (f)); | |
| 5196 } | |
| 5197 | |
| 5198 #ifdef HAVE_X_I18N | |
| 5199 if (FRAME_XIC (f) | |
| 5200 && (FRAME_XIC_STYLE (f) & (XIMPreeditPosition | XIMStatusArea))) | |
| 5201 xic_set_xfontset (f, SDATA (fontset_ascii (fontset))); | |
| 5202 #endif | |
| 5203 | |
| 5204 UNBLOCK_INPUT; | |
| 5205 | |
| 5206 return fontset_name (fontset); | |
| 5207 } | |
| 5208 | |
|
35384
e50a7f9ce65e
(x_produce_stretch_glyph): Only use Qspace when GLYPH_DEBUG is defined.
Jason Rumney <jasonr@gnu.org>
parents:
35287
diff
changeset
|
5209 |
|
e50a7f9ce65e
(x_produce_stretch_glyph): Only use Qspace when GLYPH_DEBUG is defined.
Jason Rumney <jasonr@gnu.org>
parents:
35287
diff
changeset
|
5210 /*********************************************************************** |
|
e50a7f9ce65e
(x_produce_stretch_glyph): Only use Qspace when GLYPH_DEBUG is defined.
Jason Rumney <jasonr@gnu.org>
parents:
35287
diff
changeset
|
5211 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
|
5212 ***********************************************************************/ |
|
e50a7f9ce65e
(x_produce_stretch_glyph): Only use Qspace when GLYPH_DEBUG is defined.
Jason Rumney <jasonr@gnu.org>
parents:
35287
diff
changeset
|
5213 /* 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
|
5214 |
|
e50a7f9ce65e
(x_produce_stretch_glyph): Only use Qspace when GLYPH_DEBUG is defined.
Jason Rumney <jasonr@gnu.org>
parents:
35287
diff
changeset
|
5215 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
|
5216 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
|
5217 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
|
5218 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
|
5219 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
|
5220 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
|
5221 |
|
e50a7f9ce65e
(x_produce_stretch_glyph): Only use Qspace when GLYPH_DEBUG is defined.
Jason Rumney <jasonr@gnu.org>
parents:
35287
diff
changeset
|
5222 */ |
|
27402
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
5223 |
|
23507
8a448630a9b5
Include fontset.h. Define codepage macros.
Geoff Voelker <voelker@cs.washington.edu>
parents:
22059
diff
changeset
|
5224 |
|
19713
043ccce224fb
(SIF_*): Win95 macros defined for NT.
Geoff Voelker <voelker@cs.washington.edu>
parents:
18877
diff
changeset
|
5225 /* Calculate the absolute position in frame F |
|
043ccce224fb
(SIF_*): Win95 macros defined for NT.
Geoff Voelker <voelker@cs.washington.edu>
parents:
18877
diff
changeset
|
5226 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
|
5227 |
|
29321
8e2be36bb1c6
Format and doc changes to bring closer to xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
28369
diff
changeset
|
5228 void |
| 13434 | 5229 x_calc_absolute_position (f) |
| 5230 struct frame *f; | |
| 5231 { | |
|
51204
082b768216a0
Make (several) trivial substitutions for renamed and
Kim F. Storm <storm@cua.dk>
parents:
50441
diff
changeset
|
5232 int flags = f->size_hint_flags; |
| 13434 | 5233 |
|
72008
99cff808ae1e
(x_calc_absolute_position): Fix frame positioning
Kim F. Storm <storm@cua.dk>
parents:
71546
diff
changeset
|
5234 /* 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
|
5235 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
|
5236 pixels) drawn by Windows. */ |
|
99cff808ae1e
(x_calc_absolute_position): Fix frame positioning
Kim F. Storm <storm@cua.dk>
parents:
71546
diff
changeset
|
5237 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
|
5238 |
|
99cff808ae1e
(x_calc_absolute_position): Fix frame positioning
Kim F. Storm <storm@cua.dk>
parents:
71546
diff
changeset
|
5239 /* 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
|
5240 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
|
5241 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
|
5242 entire window. */ |
|
99cff808ae1e
(x_calc_absolute_position): Fix frame positioning
Kim F. Storm <storm@cua.dk>
parents:
71546
diff
changeset
|
5243 WINDOWPLACEMENT wp = { 0 }; |
|
99cff808ae1e
(x_calc_absolute_position): Fix frame positioning
Kim F. Storm <storm@cua.dk>
parents:
71546
diff
changeset
|
5244 RECT client_rect = { 0 }; |
|
99cff808ae1e
(x_calc_absolute_position): Fix frame positioning
Kim F. Storm <storm@cua.dk>
parents:
71546
diff
changeset
|
5245 |
|
99cff808ae1e
(x_calc_absolute_position): Fix frame positioning
Kim F. Storm <storm@cua.dk>
parents:
71546
diff
changeset
|
5246 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
|
5247 && 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
|
5248 { |
|
99cff808ae1e
(x_calc_absolute_position): Fix frame positioning
Kim F. Storm <storm@cua.dk>
parents:
71546
diff
changeset
|
5249 left_right_borders_width = |
|
99cff808ae1e
(x_calc_absolute_position): Fix frame positioning
Kim F. Storm <storm@cua.dk>
parents:
71546
diff
changeset
|
5250 (wp.rcNormalPosition.right - wp.rcNormalPosition.left) - |
|
99cff808ae1e
(x_calc_absolute_position): Fix frame positioning
Kim F. Storm <storm@cua.dk>
parents:
71546
diff
changeset
|
5251 (client_rect.right - client_rect.left); |
|
99cff808ae1e
(x_calc_absolute_position): Fix frame positioning
Kim F. Storm <storm@cua.dk>
parents:
71546
diff
changeset
|
5252 |
|
99cff808ae1e
(x_calc_absolute_position): Fix frame positioning
Kim F. Storm <storm@cua.dk>
parents:
71546
diff
changeset
|
5253 top_bottom_borders_height = |
|
99cff808ae1e
(x_calc_absolute_position): Fix frame positioning
Kim F. Storm <storm@cua.dk>
parents:
71546
diff
changeset
|
5254 (wp.rcNormalPosition.bottom - wp.rcNormalPosition.top) - |
|
99cff808ae1e
(x_calc_absolute_position): Fix frame positioning
Kim F. Storm <storm@cua.dk>
parents:
71546
diff
changeset
|
5255 (client_rect.bottom - client_rect.top); |
|
99cff808ae1e
(x_calc_absolute_position): Fix frame positioning
Kim F. Storm <storm@cua.dk>
parents:
71546
diff
changeset
|
5256 } |
|
99cff808ae1e
(x_calc_absolute_position): Fix frame positioning
Kim F. Storm <storm@cua.dk>
parents:
71546
diff
changeset
|
5257 else |
|
99cff808ae1e
(x_calc_absolute_position): Fix frame positioning
Kim F. Storm <storm@cua.dk>
parents:
71546
diff
changeset
|
5258 { |
|
99cff808ae1e
(x_calc_absolute_position): Fix frame positioning
Kim F. Storm <storm@cua.dk>
parents:
71546
diff
changeset
|
5259 /* Use sensible default values. */ |
|
99cff808ae1e
(x_calc_absolute_position): Fix frame positioning
Kim F. Storm <storm@cua.dk>
parents:
71546
diff
changeset
|
5260 left_right_borders_width = 8; |
|
99cff808ae1e
(x_calc_absolute_position): Fix frame positioning
Kim F. Storm <storm@cua.dk>
parents:
71546
diff
changeset
|
5261 top_bottom_borders_height = 32; |
|
99cff808ae1e
(x_calc_absolute_position): Fix frame positioning
Kim F. Storm <storm@cua.dk>
parents:
71546
diff
changeset
|
5262 } |
|
99cff808ae1e
(x_calc_absolute_position): Fix frame positioning
Kim F. Storm <storm@cua.dk>
parents:
71546
diff
changeset
|
5263 |
|
99cff808ae1e
(x_calc_absolute_position): Fix frame positioning
Kim F. Storm <storm@cua.dk>
parents:
71546
diff
changeset
|
5264 /* Treat negative positions as relative to the rightmost bottommost |
| 13434 | 5265 position that fits on the screen. */ |
| 5266 if (flags & XNegative) | |
|
51204
082b768216a0
Make (several) trivial substitutions for renamed and
Kim F. Storm <storm@cua.dk>
parents:
50441
diff
changeset
|
5267 f->left_pos = (FRAME_W32_DISPLAY_INFO (f)->width |
|
082b768216a0
Make (several) trivial substitutions for renamed and
Kim F. Storm <storm@cua.dk>
parents:
50441
diff
changeset
|
5268 - FRAME_PIXEL_WIDTH (f) |
|
72008
99cff808ae1e
(x_calc_absolute_position): Fix frame positioning
Kim F. Storm <storm@cua.dk>
parents:
71546
diff
changeset
|
5269 + f->left_pos |
|
99cff808ae1e
(x_calc_absolute_position): Fix frame positioning
Kim F. Storm <storm@cua.dk>
parents:
71546
diff
changeset
|
5270 - (left_right_borders_width - 1)); |
|
30988
a69a2ac4345b
(help_echo_window): New variable.
Jason Rumney <jasonr@gnu.org>
parents:
30730
diff
changeset
|
5271 |
| 13434 | 5272 if (flags & YNegative) |
|
51204
082b768216a0
Make (several) trivial substitutions for renamed and
Kim F. Storm <storm@cua.dk>
parents:
50441
diff
changeset
|
5273 f->top_pos = (FRAME_W32_DISPLAY_INFO (f)->height |
|
082b768216a0
Make (several) trivial substitutions for renamed and
Kim F. Storm <storm@cua.dk>
parents:
50441
diff
changeset
|
5274 - FRAME_PIXEL_HEIGHT (f) |
|
72008
99cff808ae1e
(x_calc_absolute_position): Fix frame positioning
Kim F. Storm <storm@cua.dk>
parents:
71546
diff
changeset
|
5275 + f->top_pos |
|
99cff808ae1e
(x_calc_absolute_position): Fix frame positioning
Kim F. Storm <storm@cua.dk>
parents:
71546
diff
changeset
|
5276 - (top_bottom_borders_height - 1)); |
|
99cff808ae1e
(x_calc_absolute_position): Fix frame positioning
Kim F. Storm <storm@cua.dk>
parents:
71546
diff
changeset
|
5277 |
|
99cff808ae1e
(x_calc_absolute_position): Fix frame positioning
Kim F. Storm <storm@cua.dk>
parents:
71546
diff
changeset
|
5278 /* 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
|
5279 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
|
5280 f->size_hint_flags &= ~ (XNegative | YNegative); |
| 13434 | 5281 } |
| 5282 | |
| 5283 /* CHANGE_GRAVITY is 1 when calling from Fset_frame_position, | |
| 5284 to really change the position, and 0 when calling from | |
| 5285 x_make_frame_visible (in that case, XOFF and YOFF are the current | |
| 5286 position values). It is -1 when calling from x_set_frame_parameters, | |
| 5287 which means, do adjust for borders but don't change the gravity. */ | |
| 5288 | |
|
29321
8e2be36bb1c6
Format and doc changes to bring closer to xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
28369
diff
changeset
|
5289 void |
| 13434 | 5290 x_set_offset (f, xoff, yoff, change_gravity) |
| 5291 struct frame *f; | |
| 5292 register int xoff, yoff; | |
| 5293 int change_gravity; | |
| 5294 { | |
| 5295 int modified_top, modified_left; | |
| 5296 | |
| 5297 if (change_gravity > 0) | |
| 5298 { | |
|
51204
082b768216a0
Make (several) trivial substitutions for renamed and
Kim F. Storm <storm@cua.dk>
parents:
50441
diff
changeset
|
5299 f->top_pos = yoff; |
|
082b768216a0
Make (several) trivial substitutions for renamed and
Kim F. Storm <storm@cua.dk>
parents:
50441
diff
changeset
|
5300 f->left_pos = xoff; |
|
082b768216a0
Make (several) trivial substitutions for renamed and
Kim F. Storm <storm@cua.dk>
parents:
50441
diff
changeset
|
5301 f->size_hint_flags &= ~ (XNegative | YNegative); |
| 13434 | 5302 if (xoff < 0) |
|
51204
082b768216a0
Make (several) trivial substitutions for renamed and
Kim F. Storm <storm@cua.dk>
parents:
50441
diff
changeset
|
5303 f->size_hint_flags |= XNegative; |
| 13434 | 5304 if (yoff < 0) |
|
51204
082b768216a0
Make (several) trivial substitutions for renamed and
Kim F. Storm <storm@cua.dk>
parents:
50441
diff
changeset
|
5305 f->size_hint_flags |= YNegative; |
|
082b768216a0
Make (several) trivial substitutions for renamed and
Kim F. Storm <storm@cua.dk>
parents:
50441
diff
changeset
|
5306 f->win_gravity = NorthWestGravity; |
| 13434 | 5307 } |
| 5308 x_calc_absolute_position (f); | |
| 5309 | |
| 5310 BLOCK_INPUT; | |
| 5311 x_wm_set_size_hint (f, (long) 0, 0); | |
| 5312 | |
|
51204
082b768216a0
Make (several) trivial substitutions for renamed and
Kim F. Storm <storm@cua.dk>
parents:
50441
diff
changeset
|
5313 modified_left = f->left_pos; |
|
082b768216a0
Make (several) trivial substitutions for renamed and
Kim F. Storm <storm@cua.dk>
parents:
50441
diff
changeset
|
5314 modified_top = f->top_pos; |
| 13434 | 5315 |
|
16588
481b7874a1e9
Change identifiers of the form win32* to w32*.
Geoff Voelker <voelker@cs.washington.edu>
parents:
16326
diff
changeset
|
5316 my_set_window_pos (FRAME_W32_WINDOW (f), |
|
15151
ed6ddfc0d954
(Vwindow_system): Declared.
Geoff Voelker <voelker@cs.washington.edu>
parents:
15035
diff
changeset
|
5317 NULL, |
|
ed6ddfc0d954
(Vwindow_system): Declared.
Geoff Voelker <voelker@cs.washington.edu>
parents:
15035
diff
changeset
|
5318 modified_left, modified_top, |
|
23507
8a448630a9b5
Include fontset.h. Define codepage macros.
Geoff Voelker <voelker@cs.washington.edu>
parents:
22059
diff
changeset
|
5319 0, 0, |
|
19713
043ccce224fb
(SIF_*): Win95 macros defined for NT.
Geoff Voelker <voelker@cs.washington.edu>
parents:
18877
diff
changeset
|
5320 SWP_NOZORDER | SWP_NOSIZE | SWP_NOACTIVATE); |
| 13434 | 5321 UNBLOCK_INPUT; |
| 5322 } | |
| 5323 | |
|
43396
9b50c09298f6
* w32term.c (x_autoselect_window_p): New variable.
Jason Rumney <jasonr@gnu.org>
parents:
43373
diff
changeset
|
5324 |
|
9b50c09298f6
* w32term.c (x_autoselect_window_p): New variable.
Jason Rumney <jasonr@gnu.org>
parents:
43373
diff
changeset
|
5325 /* 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
|
5326 If so needed, resize the frame. */ |
|
9b50c09298f6
* w32term.c (x_autoselect_window_p): New variable.
Jason Rumney <jasonr@gnu.org>
parents:
43373
diff
changeset
|
5327 static void |
|
9b50c09298f6
* w32term.c (x_autoselect_window_p): New variable.
Jason Rumney <jasonr@gnu.org>
parents:
43373
diff
changeset
|
5328 x_check_fullscreen (f) |
|
9b50c09298f6
* w32term.c (x_autoselect_window_p): New variable.
Jason Rumney <jasonr@gnu.org>
parents:
43373
diff
changeset
|
5329 struct frame *f; |
|
9b50c09298f6
* w32term.c (x_autoselect_window_p): New variable.
Jason Rumney <jasonr@gnu.org>
parents:
43373
diff
changeset
|
5330 { |
|
51204
082b768216a0
Make (several) trivial substitutions for renamed and
Kim F. Storm <storm@cua.dk>
parents:
50441
diff
changeset
|
5331 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
|
5332 { |
|
9b50c09298f6
* w32term.c (x_autoselect_window_p): New variable.
Jason Rumney <jasonr@gnu.org>
parents:
43373
diff
changeset
|
5333 int width, height, ign; |
|
48218
01e253345507
(w32_draw_fringe_bitmap): Remove unused local variable window.
Juanma Barranquero <lekktu@gmail.com>
parents:
48025
diff
changeset
|
5334 |
|
51204
082b768216a0
Make (several) trivial substitutions for renamed and
Kim F. Storm <storm@cua.dk>
parents:
50441
diff
changeset
|
5335 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
|
5336 |
|
9b50c09298f6
* w32term.c (x_autoselect_window_p): New variable.
Jason Rumney <jasonr@gnu.org>
parents:
43373
diff
changeset
|
5337 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
|
5338 |
|
43396
9b50c09298f6
* w32term.c (x_autoselect_window_p): New variable.
Jason Rumney <jasonr@gnu.org>
parents:
43373
diff
changeset
|
5339 /* 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
|
5340 when setting WM manager hints. */ |
|
51204
082b768216a0
Make (several) trivial substitutions for renamed and
Kim F. Storm <storm@cua.dk>
parents:
50441
diff
changeset
|
5341 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
|
5342 { |
|
9b50c09298f6
* w32term.c (x_autoselect_window_p): New variable.
Jason Rumney <jasonr@gnu.org>
parents:
43373
diff
changeset
|
5343 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
|
5344 SET_FRAME_GARBAGED (f); |
|
9b50c09298f6
* w32term.c (x_autoselect_window_p): New variable.
Jason Rumney <jasonr@gnu.org>
parents:
43373
diff
changeset
|
5345 cancel_mouse_face (f); |
|
9b50c09298f6
* w32term.c (x_autoselect_window_p): New variable.
Jason Rumney <jasonr@gnu.org>
parents:
43373
diff
changeset
|
5346 |
|
9b50c09298f6
* w32term.c (x_autoselect_window_p): New variable.
Jason Rumney <jasonr@gnu.org>
parents:
43373
diff
changeset
|
5347 /* 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
|
5348 f->want_fullscreen |= FULLSCREEN_WAIT; |
|
43396
9b50c09298f6
* w32term.c (x_autoselect_window_p): New variable.
Jason Rumney <jasonr@gnu.org>
parents:
43373
diff
changeset
|
5349 } |
|
9b50c09298f6
* w32term.c (x_autoselect_window_p): New variable.
Jason Rumney <jasonr@gnu.org>
parents:
43373
diff
changeset
|
5350 } |
|
9b50c09298f6
* w32term.c (x_autoselect_window_p): New variable.
Jason Rumney <jasonr@gnu.org>
parents:
43373
diff
changeset
|
5351 } |
|
9b50c09298f6
* w32term.c (x_autoselect_window_p): New variable.
Jason Rumney <jasonr@gnu.org>
parents:
43373
diff
changeset
|
5352 |
| 13434 | 5353 /* Call this to change the size of frame F's x-window. |
| 5354 If CHANGE_GRAVITY is 1, we change to top-left-corner window gravity | |
| 5355 for this size change and subsequent size changes. | |
| 5356 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
|
5357 |
|
27402
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
5358 void |
| 13434 | 5359 x_set_window_size (f, change_gravity, cols, rows) |
| 5360 struct frame *f; | |
| 5361 int change_gravity; | |
| 5362 int cols, rows; | |
| 5363 { | |
| 5364 int pixelwidth, pixelheight; | |
|
48218
01e253345507
(w32_draw_fringe_bitmap): Remove unused local variable window.
Juanma Barranquero <lekktu@gmail.com>
parents:
48025
diff
changeset
|
5365 |
| 13434 | 5366 BLOCK_INPUT; |
|
48218
01e253345507
(w32_draw_fringe_bitmap): Remove unused local variable window.
Juanma Barranquero <lekktu@gmail.com>
parents:
48025
diff
changeset
|
5367 |
| 13434 | 5368 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
|
5369 f->scroll_bar_actual_width |
|
082b768216a0
Make (several) trivial substitutions for renamed and
Kim F. Storm <storm@cua.dk>
parents:
50441
diff
changeset
|
5370 = 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
|
5371 |
| 50096 | 5372 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
|
5373 |
|
51204
082b768216a0
Make (several) trivial substitutions for renamed and
Kim F. Storm <storm@cua.dk>
parents:
50441
diff
changeset
|
5374 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
|
5375 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
|
5376 |
|
082b768216a0
Make (several) trivial substitutions for renamed and
Kim F. Storm <storm@cua.dk>
parents:
50441
diff
changeset
|
5377 f->win_gravity = NorthWestGravity; |
| 13434 | 5378 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
|
5379 |
| 13434 | 5380 { |
| 5381 RECT rect; | |
| 5382 | |
| 5383 rect.left = rect.top = 0; | |
| 5384 rect.right = pixelwidth; | |
| 5385 rect.bottom = pixelheight; | |
|
48218
01e253345507
(w32_draw_fringe_bitmap): Remove unused local variable window.
Juanma Barranquero <lekktu@gmail.com>
parents:
48025
diff
changeset
|
5386 |
|
16588
481b7874a1e9
Change identifiers of the form win32* to w32*.
Geoff Voelker <voelker@cs.washington.edu>
parents:
16326
diff
changeset
|
5387 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
|
5388 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
|
5389 |
|
16588
481b7874a1e9
Change identifiers of the form win32* to w32*.
Geoff Voelker <voelker@cs.washington.edu>
parents:
16326
diff
changeset
|
5390 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
|
5391 NULL, |
|
15151
ed6ddfc0d954
(Vwindow_system): Declared.
Geoff Voelker <voelker@cs.washington.edu>
parents:
15035
diff
changeset
|
5392 0, 0, |
|
19713
043ccce224fb
(SIF_*): Win95 macros defined for NT.
Geoff Voelker <voelker@cs.washington.edu>
parents:
18877
diff
changeset
|
5393 rect.right - rect.left, |
|
043ccce224fb
(SIF_*): Win95 macros defined for NT.
Geoff Voelker <voelker@cs.washington.edu>
parents:
18877
diff
changeset
|
5394 rect.bottom - rect.top, |
|
043ccce224fb
(SIF_*): Win95 macros defined for NT.
Geoff Voelker <voelker@cs.washington.edu>
parents:
18877
diff
changeset
|
5395 SWP_NOZORDER | SWP_NOMOVE | SWP_NOACTIVATE); |
| 13434 | 5396 } |
|
48218
01e253345507
(w32_draw_fringe_bitmap): Remove unused local variable window.
Juanma Barranquero <lekktu@gmail.com>
parents:
48025
diff
changeset
|
5397 |
|
79023
a1576b4ab168
(x_set_window_size): Disable code that attempts to tell
Jason Rumney <jasonr@gnu.org>
parents:
78988
diff
changeset
|
5398 #if 0 |
|
a1576b4ab168
(x_set_window_size): Disable code that attempts to tell
Jason Rumney <jasonr@gnu.org>
parents:
78988
diff
changeset
|
5399 /* 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
|
5400 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
|
5401 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
|
5402 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
|
5403 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
|
5404 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
|
5405 of the minibuffer. |
|
a1576b4ab168
(x_set_window_size): Disable code that attempts to tell
Jason Rumney <jasonr@gnu.org>
parents:
78988
diff
changeset
|
5406 |
|
a1576b4ab168
(x_set_window_size): Disable code that attempts to tell
Jason Rumney <jasonr@gnu.org>
parents:
78988
diff
changeset
|
5407 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
|
5408 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
|
5409 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
|
5410 |
|
a1576b4ab168
(x_set_window_size): Disable code that attempts to tell
Jason Rumney <jasonr@gnu.org>
parents:
78988
diff
changeset
|
5411 ----------------------------------------------------------------- |
|
a1576b4ab168
(x_set_window_size): Disable code that attempts to tell
Jason Rumney <jasonr@gnu.org>
parents:
78988
diff
changeset
|
5412 |
|
a1576b4ab168
(x_set_window_size): Disable code that attempts to tell
Jason Rumney <jasonr@gnu.org>
parents:
78988
diff
changeset
|
5413 Now, strictly speaking, we can't be sure that this is accurate, |
| 13434 | 5414 but the window manager will get around to dealing with the size |
| 5415 change request eventually, and we'll hear how it went when the | |
| 5416 ConfigureNotify event gets here. | |
|
48218
01e253345507
(w32_draw_fringe_bitmap): Remove unused local variable window.
Juanma Barranquero <lekktu@gmail.com>
parents:
48025
diff
changeset
|
5417 |
| 13434 | 5418 We could just not bother storing any of this information here, |
| 5419 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
|
5420 might be kind of confusing to the Lisp code, since size changes |
| 13434 | 5421 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
|
5422 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
|
5423 |
|
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
5424 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
|
5425 a BLOCK_INPUT. */ |
|
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
5426 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
|
5427 FRAME_PIXEL_WIDTH (f) = pixelwidth; |
|
082b768216a0
Make (several) trivial substitutions for renamed and
Kim F. Storm <storm@cua.dk>
parents:
50441
diff
changeset
|
5428 FRAME_PIXEL_HEIGHT (f) = pixelheight; |
| 13434 | 5429 |
|
19713
043ccce224fb
(SIF_*): Win95 macros defined for NT.
Geoff Voelker <voelker@cs.washington.edu>
parents:
18877
diff
changeset
|
5430 /* 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
|
5431 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
|
5432 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
|
5433 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
|
5434 SET_FRAME_GARBAGED (f); |
|
043ccce224fb
(SIF_*): Win95 macros defined for NT.
Geoff Voelker <voelker@cs.washington.edu>
parents:
18877
diff
changeset
|
5435 |
| 13434 | 5436 /* 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
|
5437 mark_window_cursors_off (XWINDOW (f->root_window)); |
| 13434 | 5438 |
|
19713
043ccce224fb
(SIF_*): Win95 macros defined for NT.
Geoff Voelker <voelker@cs.washington.edu>
parents:
18877
diff
changeset
|
5439 /* 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
|
5440 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
|
5441 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
|
5442 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
|
5443 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
|
5444 #endif |
|
24827
487fdbc8de0f
(cancel_mouse_face): new function. See equiv
Karl Heuer <kwzh@gnu.org>
parents:
24752
diff
changeset
|
5445 |
| 13434 | 5446 UNBLOCK_INPUT; |
| 5447 } | |
| 5448 | |
| 5449 /* Mouse warping. */ | |
| 5450 | |
|
30240
2c2a7ebd2c15
(help_echo_object, help_echo_pos): New variables.
Jason Rumney <jasonr@gnu.org>
parents:
30199
diff
changeset
|
5451 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
|
5452 |
|
2c2a7ebd2c15
(help_echo_object, help_echo_pos): New variables.
Jason Rumney <jasonr@gnu.org>
parents:
30199
diff
changeset
|
5453 void |
|
2c2a7ebd2c15
(help_echo_object, help_echo_pos): New variables.
Jason Rumney <jasonr@gnu.org>
parents:
30199
diff
changeset
|
5454 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
|
5455 struct frame *f; |
|
2c2a7ebd2c15
(help_echo_object, help_echo_pos): New variables.
Jason Rumney <jasonr@gnu.org>
parents:
30199
diff
changeset
|
5456 int x, y; |
|
2c2a7ebd2c15
(help_echo_object, help_echo_pos): New variables.
Jason Rumney <jasonr@gnu.org>
parents:
30199
diff
changeset
|
5457 { |
|
2c2a7ebd2c15
(help_echo_object, help_echo_pos): New variables.
Jason Rumney <jasonr@gnu.org>
parents:
30199
diff
changeset
|
5458 int pix_x, pix_y; |
|
2c2a7ebd2c15
(help_echo_object, help_echo_pos): New variables.
Jason Rumney <jasonr@gnu.org>
parents:
30199
diff
changeset
|
5459 |
|
51204
082b768216a0
Make (several) trivial substitutions for renamed and
Kim F. Storm <storm@cua.dk>
parents:
50441
diff
changeset
|
5460 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
|
5461 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
|
5462 |
|
2c2a7ebd2c15
(help_echo_object, help_echo_pos): New variables.
Jason Rumney <jasonr@gnu.org>
parents:
30199
diff
changeset
|
5463 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
|
5464 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
|
5465 |
|
2c2a7ebd2c15
(help_echo_object, help_echo_pos): New variables.
Jason Rumney <jasonr@gnu.org>
parents:
30199
diff
changeset
|
5466 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
|
5467 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
|
5468 |
|
2c2a7ebd2c15
(help_echo_object, help_echo_pos): New variables.
Jason Rumney <jasonr@gnu.org>
parents:
30199
diff
changeset
|
5469 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
|
5470 } |
|
2c2a7ebd2c15
(help_echo_object, help_echo_pos): New variables.
Jason Rumney <jasonr@gnu.org>
parents:
30199
diff
changeset
|
5471 |
| 13434 | 5472 void |
|
15616
a73836346910
(x_set_mouse_pixel_position): Adjust coords by frame position.
Miles Bader <miles@gnu.org>
parents:
15435
diff
changeset
|
5473 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
|
5474 struct frame *f; |
|
a73836346910
(x_set_mouse_pixel_position): Adjust coords by frame position.
Miles Bader <miles@gnu.org>
parents:
15435
diff
changeset
|
5475 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
|
5476 { |
|
19713
043ccce224fb
(SIF_*): Win95 macros defined for NT.
Geoff Voelker <voelker@cs.washington.edu>
parents:
18877
diff
changeset
|
5477 RECT rect; |
|
043ccce224fb
(SIF_*): Win95 macros defined for NT.
Geoff Voelker <voelker@cs.washington.edu>
parents:
18877
diff
changeset
|
5478 POINT pt; |
|
043ccce224fb
(SIF_*): Win95 macros defined for NT.
Geoff Voelker <voelker@cs.washington.edu>
parents:
18877
diff
changeset
|
5479 |
|
15616
a73836346910
(x_set_mouse_pixel_position): Adjust coords by frame position.
Miles Bader <miles@gnu.org>
parents:
15435
diff
changeset
|
5480 BLOCK_INPUT; |
|
a73836346910
(x_set_mouse_pixel_position): Adjust coords by frame position.
Miles Bader <miles@gnu.org>
parents:
15435
diff
changeset
|
5481 |
|
19713
043ccce224fb
(SIF_*): Win95 macros defined for NT.
Geoff Voelker <voelker@cs.washington.edu>
parents:
18877
diff
changeset
|
5482 GetClientRect (FRAME_W32_WINDOW (f), &rect); |
|
043ccce224fb
(SIF_*): Win95 macros defined for NT.
Geoff Voelker <voelker@cs.washington.edu>
parents:
18877
diff
changeset
|
5483 pt.x = rect.left + pix_x; |
|
043ccce224fb
(SIF_*): Win95 macros defined for NT.
Geoff Voelker <voelker@cs.washington.edu>
parents:
18877
diff
changeset
|
5484 pt.y = rect.top + pix_y; |
|
043ccce224fb
(SIF_*): Win95 macros defined for NT.
Geoff Voelker <voelker@cs.washington.edu>
parents:
18877
diff
changeset
|
5485 ClientToScreen (FRAME_W32_WINDOW (f), &pt); |
|
043ccce224fb
(SIF_*): Win95 macros defined for NT.
Geoff Voelker <voelker@cs.washington.edu>
parents:
18877
diff
changeset
|
5486 |
|
043ccce224fb
(SIF_*): Win95 macros defined for NT.
Geoff Voelker <voelker@cs.washington.edu>
parents:
18877
diff
changeset
|
5487 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
|
5488 |
|
a73836346910
(x_set_mouse_pixel_position): Adjust coords by frame position.
Miles Bader <miles@gnu.org>
parents:
15435
diff
changeset
|
5489 UNBLOCK_INPUT; |
|
a73836346910
(x_set_mouse_pixel_position): Adjust coords by frame position.
Miles Bader <miles@gnu.org>
parents:
15435
diff
changeset
|
5490 } |
|
a73836346910
(x_set_mouse_pixel_position): Adjust coords by frame position.
Miles Bader <miles@gnu.org>
parents:
15435
diff
changeset
|
5491 |
| 13434 | 5492 |
| 5493 /* focus shifting, raising and lowering. */ | |
| 5494 | |
|
30240
2c2a7ebd2c15
(help_echo_object, help_echo_pos): New variables.
Jason Rumney <jasonr@gnu.org>
parents:
30199
diff
changeset
|
5495 void |
| 13434 | 5496 x_focus_on_frame (f) |
| 5497 struct frame *f; | |
| 5498 { | |
|
19713
043ccce224fb
(SIF_*): Win95 macros defined for NT.
Geoff Voelker <voelker@cs.washington.edu>
parents:
18877
diff
changeset
|
5499 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
|
5500 |
|
043ccce224fb
(SIF_*): Win95 macros defined for NT.
Geoff Voelker <voelker@cs.washington.edu>
parents:
18877
diff
changeset
|
5501 /* Give input focus to frame. */ |
|
043ccce224fb
(SIF_*): Win95 macros defined for NT.
Geoff Voelker <voelker@cs.washington.edu>
parents:
18877
diff
changeset
|
5502 BLOCK_INPUT; |
|
043ccce224fb
(SIF_*): Win95 macros defined for NT.
Geoff Voelker <voelker@cs.washington.edu>
parents:
18877
diff
changeset
|
5503 #if 0 |
|
043ccce224fb
(SIF_*): Win95 macros defined for NT.
Geoff Voelker <voelker@cs.washington.edu>
parents:
18877
diff
changeset
|
5504 /* 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
|
5505 if (x_window_to_frame (dpyinfo, GetForegroundWindow ())) |
|
043ccce224fb
(SIF_*): Win95 macros defined for NT.
Geoff Voelker <voelker@cs.washington.edu>
parents:
18877
diff
changeset
|
5506 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
|
5507 else |
|
043ccce224fb
(SIF_*): Win95 macros defined for NT.
Geoff Voelker <voelker@cs.washington.edu>
parents:
18877
diff
changeset
|
5508 #endif |
|
21614
2624d8dcc73f
(Vw32_recognize_altgr): New variable.
Geoff Voelker <voelker@cs.washington.edu>
parents:
21456
diff
changeset
|
5509 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
|
5510 UNBLOCK_INPUT; |
| 13434 | 5511 } |
| 5512 | |
|
30240
2c2a7ebd2c15
(help_echo_object, help_echo_pos): New variables.
Jason Rumney <jasonr@gnu.org>
parents:
30199
diff
changeset
|
5513 void |
| 13434 | 5514 x_unfocus_frame (f) |
| 5515 struct frame *f; | |
| 5516 { | |
| 5517 } | |
| 5518 | |
| 5519 /* Raise frame F. */ | |
|
27402
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
5520 void |
| 13434 | 5521 x_raise_frame (f) |
| 5522 struct frame *f; | |
| 5523 { | |
|
19713
043ccce224fb
(SIF_*): Win95 macros defined for NT.
Geoff Voelker <voelker@cs.washington.edu>
parents:
18877
diff
changeset
|
5524 BLOCK_INPUT; |
|
043ccce224fb
(SIF_*): Win95 macros defined for NT.
Geoff Voelker <voelker@cs.washington.edu>
parents:
18877
diff
changeset
|
5525 |
|
043ccce224fb
(SIF_*): Win95 macros defined for NT.
Geoff Voelker <voelker@cs.washington.edu>
parents:
18877
diff
changeset
|
5526 /* 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
|
5527 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
|
5528 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
|
5529 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
|
5530 click-to-focus. |
|
043ccce224fb
(SIF_*): Win95 macros defined for NT.
Geoff Voelker <voelker@cs.washington.edu>
parents:
18877
diff
changeset
|
5531 |
|
043ccce224fb
(SIF_*): Win95 macros defined for NT.
Geoff Voelker <voelker@cs.washington.edu>
parents:
18877
diff
changeset
|
5532 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
|
5533 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
|
5534 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
|
5535 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
|
5536 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
|
5537 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
|
5538 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
|
5539 completely obscured) with input focus. |
|
043ccce224fb
(SIF_*): Win95 macros defined for NT.
Geoff Voelker <voelker@cs.washington.edu>
parents:
18877
diff
changeset
|
5540 |
|
043ccce224fb
(SIF_*): Win95 macros defined for NT.
Geoff Voelker <voelker@cs.washington.edu>
parents:
18877
diff
changeset
|
5541 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
|
5542 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
|
5543 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
|
5544 |
|
043ccce224fb
(SIF_*): Win95 macros defined for NT.
Geoff Voelker <voelker@cs.washington.edu>
parents:
18877
diff
changeset
|
5545 if (NILP (Vw32_grab_focus_on_raise)) |
| 13434 | 5546 { |
|
19713
043ccce224fb
(SIF_*): Win95 macros defined for NT.
Geoff Voelker <voelker@cs.washington.edu>
parents:
18877
diff
changeset
|
5547 /* 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
|
5548 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
|
5549 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
|
5550 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
|
5551 more cumbersome method. */ |
|
043ccce224fb
(SIF_*): Win95 macros defined for NT.
Geoff Voelker <voelker@cs.washington.edu>
parents:
18877
diff
changeset
|
5552 |
|
043ccce224fb
(SIF_*): Win95 macros defined for NT.
Geoff Voelker <voelker@cs.washington.edu>
parents:
18877
diff
changeset
|
5553 HDWP handle = BeginDeferWindowPos (2); |
|
043ccce224fb
(SIF_*): Win95 macros defined for NT.
Geoff Voelker <voelker@cs.washington.edu>
parents:
18877
diff
changeset
|
5554 if (handle) |
|
043ccce224fb
(SIF_*): Win95 macros defined for NT.
Geoff Voelker <voelker@cs.washington.edu>
parents:
18877
diff
changeset
|
5555 { |
|
043ccce224fb
(SIF_*): Win95 macros defined for NT.
Geoff Voelker <voelker@cs.washington.edu>
parents:
18877
diff
changeset
|
5556 DeferWindowPos (handle, |
|
043ccce224fb
(SIF_*): Win95 macros defined for NT.
Geoff Voelker <voelker@cs.washington.edu>
parents:
18877
diff
changeset
|
5557 FRAME_W32_WINDOW (f), |
|
043ccce224fb
(SIF_*): Win95 macros defined for NT.
Geoff Voelker <voelker@cs.washington.edu>
parents:
18877
diff
changeset
|
5558 HWND_TOP, |
|
043ccce224fb
(SIF_*): Win95 macros defined for NT.
Geoff Voelker <voelker@cs.washington.edu>
parents:
18877
diff
changeset
|
5559 0, 0, 0, 0, |
|
043ccce224fb
(SIF_*): Win95 macros defined for NT.
Geoff Voelker <voelker@cs.washington.edu>
parents:
18877
diff
changeset
|
5560 SWP_NOSIZE | SWP_NOMOVE | SWP_NOACTIVATE); |
|
043ccce224fb
(SIF_*): Win95 macros defined for NT.
Geoff Voelker <voelker@cs.washington.edu>
parents:
18877
diff
changeset
|
5561 |
|
043ccce224fb
(SIF_*): Win95 macros defined for NT.
Geoff Voelker <voelker@cs.washington.edu>
parents:
18877
diff
changeset
|
5562 DeferWindowPos (handle, |
|
043ccce224fb
(SIF_*): Win95 macros defined for NT.
Geoff Voelker <voelker@cs.washington.edu>
parents:
18877
diff
changeset
|
5563 GetForegroundWindow (), |
|
043ccce224fb
(SIF_*): Win95 macros defined for NT.
Geoff Voelker <voelker@cs.washington.edu>
parents:
18877
diff
changeset
|
5564 FRAME_W32_WINDOW (f), |
|
043ccce224fb
(SIF_*): Win95 macros defined for NT.
Geoff Voelker <voelker@cs.washington.edu>
parents:
18877
diff
changeset
|
5565 0, 0, 0, 0, |
|
043ccce224fb
(SIF_*): Win95 macros defined for NT.
Geoff Voelker <voelker@cs.washington.edu>
parents:
18877
diff
changeset
|
5566 SWP_NOSIZE | SWP_NOMOVE | SWP_NOACTIVATE); |
|
043ccce224fb
(SIF_*): Win95 macros defined for NT.
Geoff Voelker <voelker@cs.washington.edu>
parents:
18877
diff
changeset
|
5567 |
|
043ccce224fb
(SIF_*): Win95 macros defined for NT.
Geoff Voelker <voelker@cs.washington.edu>
parents:
18877
diff
changeset
|
5568 EndDeferWindowPos (handle); |
|
043ccce224fb
(SIF_*): Win95 macros defined for NT.
Geoff Voelker <voelker@cs.washington.edu>
parents:
18877
diff
changeset
|
5569 } |
| 13434 | 5570 } |
|
19713
043ccce224fb
(SIF_*): Win95 macros defined for NT.
Geoff Voelker <voelker@cs.washington.edu>
parents:
18877
diff
changeset
|
5571 else |
|
043ccce224fb
(SIF_*): Win95 macros defined for NT.
Geoff Voelker <voelker@cs.washington.edu>
parents:
18877
diff
changeset
|
5572 { |
|
21614
2624d8dcc73f
(Vw32_recognize_altgr): New variable.
Geoff Voelker <voelker@cs.washington.edu>
parents:
21456
diff
changeset
|
5573 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
|
5574 } |
|
043ccce224fb
(SIF_*): Win95 macros defined for NT.
Geoff Voelker <voelker@cs.washington.edu>
parents:
18877
diff
changeset
|
5575 |
|
043ccce224fb
(SIF_*): Win95 macros defined for NT.
Geoff Voelker <voelker@cs.washington.edu>
parents:
18877
diff
changeset
|
5576 UNBLOCK_INPUT; |
| 13434 | 5577 } |
| 5578 | |
| 5579 /* Lower frame F. */ | |
|
27402
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
5580 void |
| 13434 | 5581 x_lower_frame (f) |
| 5582 struct frame *f; | |
| 5583 { | |
|
19713
043ccce224fb
(SIF_*): Win95 macros defined for NT.
Geoff Voelker <voelker@cs.washington.edu>
parents:
18877
diff
changeset
|
5584 BLOCK_INPUT; |
|
043ccce224fb
(SIF_*): Win95 macros defined for NT.
Geoff Voelker <voelker@cs.washington.edu>
parents:
18877
diff
changeset
|
5585 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
|
5586 HWND_BOTTOM, |
|
043ccce224fb
(SIF_*): Win95 macros defined for NT.
Geoff Voelker <voelker@cs.washington.edu>
parents:
18877
diff
changeset
|
5587 0, 0, 0, 0, |
|
043ccce224fb
(SIF_*): Win95 macros defined for NT.
Geoff Voelker <voelker@cs.washington.edu>
parents:
18877
diff
changeset
|
5588 SWP_NOSIZE | SWP_NOMOVE | SWP_NOACTIVATE); |
|
043ccce224fb
(SIF_*): Win95 macros defined for NT.
Geoff Voelker <voelker@cs.washington.edu>
parents:
18877
diff
changeset
|
5589 UNBLOCK_INPUT; |
| 13434 | 5590 } |
| 5591 | |
| 5592 static void | |
|
30240
2c2a7ebd2c15
(help_echo_object, help_echo_pos): New variables.
Jason Rumney <jasonr@gnu.org>
parents:
30199
diff
changeset
|
5593 w32_frame_raise_lower (f, raise_flag) |
| 13434 | 5594 FRAME_PTR f; |
|
30240
2c2a7ebd2c15
(help_echo_object, help_echo_pos): New variables.
Jason Rumney <jasonr@gnu.org>
parents:
30199
diff
changeset
|
5595 int raise_flag; |
|
2c2a7ebd2c15
(help_echo_object, help_echo_pos): New variables.
Jason Rumney <jasonr@gnu.org>
parents:
30199
diff
changeset
|
5596 { |
| 35000 | 5597 if (! FRAME_W32_P (f)) |
| 5598 return; | |
| 5599 | |
|
30240
2c2a7ebd2c15
(help_echo_object, help_echo_pos): New variables.
Jason Rumney <jasonr@gnu.org>
parents:
30199
diff
changeset
|
5600 if (raise_flag) |
| 13434 | 5601 x_raise_frame (f); |
| 5602 else | |
| 5603 x_lower_frame (f); | |
| 5604 } | |
| 5605 | |
| 5606 /* Change of visibility. */ | |
| 5607 | |
| 5608 /* This tries to wait until the frame is really visible. | |
| 5609 However, if the window manager asks the user where to position | |
| 5610 the frame, this will return before the user finishes doing that. | |
| 5611 The frame will not actually be visible at that time, | |
| 5612 but it will become visible later when the window manager | |
| 5613 finishes with it. */ | |
| 5614 | |
|
30240
2c2a7ebd2c15
(help_echo_object, help_echo_pos): New variables.
Jason Rumney <jasonr@gnu.org>
parents:
30199
diff
changeset
|
5615 void |
| 13434 | 5616 x_make_frame_visible (f) |
| 5617 struct frame *f; | |
| 5618 { | |
|
25236
ea748fe6dee4
(x_bitmap_icon): New function.
Geoff Voelker <voelker@cs.washington.edu>
parents:
24863
diff
changeset
|
5619 Lisp_Object type; |
|
ea748fe6dee4
(x_bitmap_icon): New function.
Geoff Voelker <voelker@cs.washington.edu>
parents:
24863
diff
changeset
|
5620 |
| 13434 | 5621 BLOCK_INPUT; |
| 5622 | |
|
25236
ea748fe6dee4
(x_bitmap_icon): New function.
Geoff Voelker <voelker@cs.washington.edu>
parents:
24863
diff
changeset
|
5623 type = x_icon_type (f); |
|
ea748fe6dee4
(x_bitmap_icon): New function.
Geoff Voelker <voelker@cs.washington.edu>
parents:
24863
diff
changeset
|
5624 if (!NILP (type)) |
|
ea748fe6dee4
(x_bitmap_icon): New function.
Geoff Voelker <voelker@cs.washington.edu>
parents:
24863
diff
changeset
|
5625 x_bitmap_icon (f, type); |
|
ea748fe6dee4
(x_bitmap_icon): New function.
Geoff Voelker <voelker@cs.washington.edu>
parents:
24863
diff
changeset
|
5626 |
| 13434 | 5627 if (! FRAME_VISIBLE_P (f)) |
| 5628 { | |
| 5629 /* We test FRAME_GARBAGED_P here to make sure we don't | |
| 5630 call x_set_offset a second time | |
| 5631 if we get to x_make_frame_visible a second time | |
| 5632 before the window gets really visible. */ | |
| 5633 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
|
5634 && ! 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
|
5635 { |
|
d1eb48dbd3e6
(x_make_frame_visible): Use SystemParametersInfo with SPI_GETWORKAREA to find
Eli Zaretskii <eliz@gnu.org>
parents:
71236
diff
changeset
|
5636 RECT workarea_rect; |
|
d1eb48dbd3e6
(x_make_frame_visible): Use SystemParametersInfo with SPI_GETWORKAREA to find
Eli Zaretskii <eliz@gnu.org>
parents:
71236
diff
changeset
|
5637 RECT window_rect; |
|
d1eb48dbd3e6
(x_make_frame_visible): Use SystemParametersInfo with SPI_GETWORKAREA to find
Eli Zaretskii <eliz@gnu.org>
parents:
71236
diff
changeset
|
5638 |
|
d1eb48dbd3e6
(x_make_frame_visible): Use SystemParametersInfo with SPI_GETWORKAREA to find
Eli Zaretskii <eliz@gnu.org>
parents:
71236
diff
changeset
|
5639 /* 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
|
5640 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
|
5641 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
|
5642 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
|
5643 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
|
5644 && 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
|
5645 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
|
5646 - 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
|
5647 workarea_rect.top); |
|
d1eb48dbd3e6
(x_make_frame_visible): Use SystemParametersInfo with SPI_GETWORKAREA to find
Eli Zaretskii <eliz@gnu.org>
parents:
71236
diff
changeset
|
5648 |
|
d1eb48dbd3e6
(x_make_frame_visible): Use SystemParametersInfo with SPI_GETWORKAREA to find
Eli Zaretskii <eliz@gnu.org>
parents:
71236
diff
changeset
|
5649 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
|
5650 } |
| 13434 | 5651 |
|
16588
481b7874a1e9
Change identifiers of the form win32* to w32*.
Geoff Voelker <voelker@cs.washington.edu>
parents:
16326
diff
changeset
|
5652 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
|
5653 |
|
95733
0554ef53fccd
(x_make_frame_visible): Use alternate restore flags.
Jason Rumney <jasonr@gnu.org>
parents:
95364
diff
changeset
|
5654 /* 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
|
5655 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
|
5656 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
|
5657 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
|
5658 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
|
5659 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
|
5660 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
|
5661 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
|
5662 /* my_show_window (f, FRAME_W32_WINDOW (f), SW_SHOWNORMAL); */ |
| 13434 | 5663 } |
| 5664 | |
| 5665 /* Synchronize to ensure Emacs knows the frame is visible | |
| 5666 before we do anything else. We do this loop with input not blocked | |
| 5667 so that incoming events are handled. */ | |
| 5668 { | |
| 5669 Lisp_Object frame; | |
|
27402
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
5670 int count; |
| 13434 | 5671 |
| 5672 /* This must come after we set COUNT. */ | |
| 5673 UNBLOCK_INPUT; | |
| 5674 | |
| 5675 XSETFRAME (frame, f); | |
| 5676 | |
|
27402
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
5677 /* 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
|
5678 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
|
5679 MapNotify at all.. */ |
|
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
5680 for (count = input_signal_count + 10; |
|
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
5681 input_signal_count < count && !FRAME_VISIBLE_P (f);) |
| 13434 | 5682 { |
|
27402
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
5683 /* Force processing of queued events. */ |
|
33097
84590a646acc
(x_produce_glyphs): Handle composite characters.
Jason Rumney <jasonr@gnu.org>
parents:
33037
diff
changeset
|
5684 /* TODO: x_sync equivalent? */ |
|
27402
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
5685 |
| 13434 | 5686 /* Machines that do polling rather than SIGIO have been observed |
| 5687 to go into a busy-wait here. So we'll fake an alarm signal | |
| 5688 to let the handler know that there's something to be read. | |
| 5689 We used to raise a real alarm, but it seems that the handler | |
| 5690 isn't always enabled here. This is probably a bug. */ | |
| 5691 if (input_polling_used ()) | |
| 5692 { | |
| 5693 /* It could be confusing if a real alarm arrives while processing | |
| 5694 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
|
5695 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
|
5696 poll_suppress_count = 1; |
|
5fe002cf4b37
(x_make_frame_visible): Replace call to
Andrew Innes <andrewi@gnu.org>
parents:
27514
diff
changeset
|
5697 poll_for_input_1 (); |
|
5fe002cf4b37
(x_make_frame_visible): Replace call to
Andrew Innes <andrewi@gnu.org>
parents:
27514
diff
changeset
|
5698 poll_suppress_count = old_poll_suppress_count; |
| 13434 | 5699 } |
| 5700 } | |
| 5701 FRAME_SAMPLE_VISIBILITY (f); | |
| 5702 } | |
| 5703 } | |
| 5704 | |
| 5705 /* Change from mapped state to withdrawn state. */ | |
| 5706 | |
| 5707 /* Make the frame visible (mapped and not iconified). */ | |
| 5708 | |
| 5709 x_make_frame_invisible (f) | |
| 5710 struct frame *f; | |
| 5711 { | |
| 5712 /* 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
|
5713 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
|
5714 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
|
5715 |
| 13434 | 5716 BLOCK_INPUT; |
|
48218
01e253345507
(w32_draw_fringe_bitmap): Remove unused local variable window.
Juanma Barranquero <lekktu@gmail.com>
parents:
48025
diff
changeset
|
5717 |
|
19713
043ccce224fb
(SIF_*): Win95 macros defined for NT.
Geoff Voelker <voelker@cs.washington.edu>
parents:
18877
diff
changeset
|
5718 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
|
5719 |
| 13434 | 5720 /* We can't distinguish this from iconification |
| 5721 just by the event that we get from the server. | |
| 5722 So we can't win using the usual strategy of letting | |
| 5723 FRAME_SAMPLE_VISIBILITY set this. So do it by hand, | |
| 5724 and synchronize with the server to make sure we agree. */ | |
| 5725 f->visible = 0; | |
| 5726 FRAME_ICONIFIED_P (f) = 0; | |
| 5727 f->async_visible = 0; | |
| 5728 f->async_iconified = 0; | |
|
48218
01e253345507
(w32_draw_fringe_bitmap): Remove unused local variable window.
Juanma Barranquero <lekktu@gmail.com>
parents:
48025
diff
changeset
|
5729 |
| 13434 | 5730 UNBLOCK_INPUT; |
| 5731 } | |
| 5732 | |
| 5733 /* Change window state from mapped to iconified. */ | |
| 5734 | |
|
15151
ed6ddfc0d954
(Vwindow_system): Declared.
Geoff Voelker <voelker@cs.washington.edu>
parents:
15035
diff
changeset
|
5735 void |
|
ed6ddfc0d954
(Vwindow_system): Declared.
Geoff Voelker <voelker@cs.washington.edu>
parents:
15035
diff
changeset
|
5736 x_iconify_frame (f) |
| 13434 | 5737 struct frame *f; |
| 5738 { | |
|
25236
ea748fe6dee4
(x_bitmap_icon): New function.
Geoff Voelker <voelker@cs.washington.edu>
parents:
24863
diff
changeset
|
5739 Lisp_Object type; |
| 13434 | 5740 |
| 5741 /* 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
|
5742 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
|
5743 FRAME_W32_DISPLAY_INFO (f)->x_highlight_frame = 0; |
| 13434 | 5744 |
| 5745 if (f->async_iconified) | |
| 5746 return; | |
| 5747 | |
| 5748 BLOCK_INPUT; | |
| 5749 | |
|
25236
ea748fe6dee4
(x_bitmap_icon): New function.
Geoff Voelker <voelker@cs.washington.edu>
parents:
24863
diff
changeset
|
5750 type = x_icon_type (f); |
|
ea748fe6dee4
(x_bitmap_icon): New function.
Geoff Voelker <voelker@cs.washington.edu>
parents:
24863
diff
changeset
|
5751 if (!NILP (type)) |
|
ea748fe6dee4
(x_bitmap_icon): New function.
Geoff Voelker <voelker@cs.washington.edu>
parents:
24863
diff
changeset
|
5752 x_bitmap_icon (f, type); |
|
ea748fe6dee4
(x_bitmap_icon): New function.
Geoff Voelker <voelker@cs.washington.edu>
parents:
24863
diff
changeset
|
5753 |
|
19713
043ccce224fb
(SIF_*): Win95 macros defined for NT.
Geoff Voelker <voelker@cs.washington.edu>
parents:
18877
diff
changeset
|
5754 /* 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
|
5755 SendMessage (FRAME_W32_WINDOW (f), WM_SYSCOMMAND, SC_MINIMIZE, 0); |
| 13434 | 5756 |
| 5757 UNBLOCK_INPUT; | |
| 5758 } | |
|
35384
e50a7f9ce65e
(x_produce_stretch_glyph): Only use Qspace when GLYPH_DEBUG is defined.
Jason Rumney <jasonr@gnu.org>
parents:
35287
diff
changeset
|
5759 |
| 13434 | 5760 |
|
34545
0322014fcf27
(clear_mouse_face): Treat tip_frame as a Lisp_Object.
Andrew Innes <andrewi@gnu.org>
parents:
34229
diff
changeset
|
5761 /* 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
|
5762 |
|
0322014fcf27
(clear_mouse_face): Treat tip_frame as a Lisp_Object.
Andrew Innes <andrewi@gnu.org>
parents:
34229
diff
changeset
|
5763 void |
|
0322014fcf27
(clear_mouse_face): Treat tip_frame as a Lisp_Object.
Andrew Innes <andrewi@gnu.org>
parents:
34229
diff
changeset
|
5764 x_free_frame_resources (f) |
| 13434 | 5765 struct frame *f; |
| 5766 { | |
|
16588
481b7874a1e9
Change identifiers of the form win32* to w32*.
Geoff Voelker <voelker@cs.washington.edu>
parents:
16326
diff
changeset
|
5767 struct w32_display_info *dpyinfo = FRAME_W32_DISPLAY_INFO (f); |
| 13434 | 5768 |
| 5769 BLOCK_INPUT; | |
| 5770 | |
|
94912
5b153bea483d
: Throughout the file, delete all USE_FONT_BACKEND
Kenichi Handa <handa@m17n.org>
parents:
93913
diff
changeset
|
5771 /* 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
|
5772 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
|
5773 face. */ |
|
5b153bea483d
: Throughout the file, delete all USE_FONT_BACKEND
Kenichi Handa <handa@m17n.org>
parents:
93913
diff
changeset
|
5774 if (FRAME_FACE_CACHE (f)) |
|
5b153bea483d
: Throughout the file, delete all USE_FONT_BACKEND
Kenichi Handa <handa@m17n.org>
parents:
93913
diff
changeset
|
5775 free_frame_faces (f); |
| 90834 | 5776 |
|
34545
0322014fcf27
(clear_mouse_face): Treat tip_frame as a Lisp_Object.
Andrew Innes <andrewi@gnu.org>
parents:
34229
diff
changeset
|
5777 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
|
5778 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
|
5779 |
| 13434 | 5780 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
|
5781 |
| 83505 | 5782 unload_color (f, FRAME_FOREGROUND_PIXEL (f)); |
| 5783 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
|
5784 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
|
5785 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
|
5786 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
|
5787 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
|
5788 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
|
5789 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
|
5790 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
|
5791 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
|
5792 |
|
34545
0322014fcf27
(clear_mouse_face): Treat tip_frame as a Lisp_Object.
Andrew Innes <andrewi@gnu.org>
parents:
34229
diff
changeset
|
5793 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
|
5794 free_frame_faces (f); |
|
48218
01e253345507
(w32_draw_fringe_bitmap): Remove unused local variable window.
Juanma Barranquero <lekktu@gmail.com>
parents:
48025
diff
changeset
|
5795 |
|
16588
481b7874a1e9
Change identifiers of the form win32* to w32*.
Geoff Voelker <voelker@cs.washington.edu>
parents:
16326
diff
changeset
|
5796 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
|
5797 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
|
5798 |
|
16588
481b7874a1e9
Change identifiers of the form win32* to w32*.
Geoff Voelker <voelker@cs.washington.edu>
parents:
16326
diff
changeset
|
5799 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
|
5800 dpyinfo->w32_focus_frame = 0; |
|
481b7874a1e9
Change identifiers of the form win32* to w32*.
Geoff Voelker <voelker@cs.washington.edu>
parents:
16326
diff
changeset
|
5801 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
|
5802 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
|
5803 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
|
5804 dpyinfo->x_highlight_frame = 0; |
| 13434 | 5805 |
| 5806 if (f == dpyinfo->mouse_face_mouse_frame) | |
| 5807 { | |
| 5808 dpyinfo->mouse_face_beg_row | |
| 5809 = dpyinfo->mouse_face_beg_col = -1; | |
| 5810 dpyinfo->mouse_face_end_row | |
| 5811 = dpyinfo->mouse_face_end_col = -1; | |
| 5812 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
|
5813 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
|
5814 dpyinfo->mouse_face_mouse_frame = 0; |
| 13434 | 5815 } |
| 5816 | |
| 5817 UNBLOCK_INPUT; | |
| 5818 } | |
|
34545
0322014fcf27
(clear_mouse_face): Treat tip_frame as a Lisp_Object.
Andrew Innes <andrewi@gnu.org>
parents:
34229
diff
changeset
|
5819 |
|
0322014fcf27
(clear_mouse_face): Treat tip_frame as a Lisp_Object.
Andrew Innes <andrewi@gnu.org>
parents:
34229
diff
changeset
|
5820 |
|
0322014fcf27
(clear_mouse_face): Treat tip_frame as a Lisp_Object.
Andrew Innes <andrewi@gnu.org>
parents:
34229
diff
changeset
|
5821 /* 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
|
5822 void |
|
34545
0322014fcf27
(clear_mouse_face): Treat tip_frame as a Lisp_Object.
Andrew Innes <andrewi@gnu.org>
parents:
34229
diff
changeset
|
5823 x_destroy_window (f) |
|
0322014fcf27
(clear_mouse_face): Treat tip_frame as a Lisp_Object.
Andrew Innes <andrewi@gnu.org>
parents:
34229
diff
changeset
|
5824 struct frame *f; |
|
0322014fcf27
(clear_mouse_face): Treat tip_frame as a Lisp_Object.
Andrew Innes <andrewi@gnu.org>
parents:
34229
diff
changeset
|
5825 { |
|
0322014fcf27
(clear_mouse_face): Treat tip_frame as a Lisp_Object.
Andrew Innes <andrewi@gnu.org>
parents:
34229
diff
changeset
|
5826 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
|
5827 |
|
0322014fcf27
(clear_mouse_face): Treat tip_frame as a Lisp_Object.
Andrew Innes <andrewi@gnu.org>
parents:
34229
diff
changeset
|
5828 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
|
5829 dpyinfo->reference_count--; |
|
0322014fcf27
(clear_mouse_face): Treat tip_frame as a Lisp_Object.
Andrew Innes <andrewi@gnu.org>
parents:
34229
diff
changeset
|
5830 } |
|
35384
e50a7f9ce65e
(x_produce_stretch_glyph): Only use Qspace when GLYPH_DEBUG is defined.
Jason Rumney <jasonr@gnu.org>
parents:
35287
diff
changeset
|
5831 |
| 13434 | 5832 |
| 5833 /* Setting window manager hints. */ | |
| 5834 | |
| 5835 /* Set the normal size hints for the window manager, for frame F. | |
| 5836 FLAGS is the flags word to use--or 0 meaning preserve the flags | |
| 5837 that the window now has. | |
| 5838 If USER_POSITION is nonzero, we set the USPosition | |
| 5839 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
|
5840 void |
| 13434 | 5841 x_wm_set_size_hint (f, flags, user_position) |
| 5842 struct frame *f; | |
| 5843 long flags; | |
| 5844 int user_position; | |
| 5845 { | |
|
16588
481b7874a1e9
Change identifiers of the form win32* to w32*.
Geoff Voelker <voelker@cs.washington.edu>
parents:
16326
diff
changeset
|
5846 Window window = FRAME_W32_WINDOW (f); |
| 13434 | 5847 |
|
14351
fb2ce4ebc871
ubackout 1.3 and 1.4
Geoff Voelker <voelker@cs.washington.edu>
parents:
14248
diff
changeset
|
5848 enter_crit (); |
| 13434 | 5849 |
|
51204
082b768216a0
Make (several) trivial substitutions for renamed and
Kim F. Storm <storm@cua.dk>
parents:
50441
diff
changeset
|
5850 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
|
5851 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
|
5852 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
|
5853 SetWindowLong (window, WND_SCROLLBAR_INDEX, f->scroll_bar_actual_width); |
| 13434 | 5854 |
|
14351
fb2ce4ebc871
ubackout 1.3 and 1.4
Geoff Voelker <voelker@cs.washington.edu>
parents:
14248
diff
changeset
|
5855 leave_crit (); |
| 13434 | 5856 } |
| 5857 | |
| 5858 /* 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
|
5859 void |
|
37738feb0204
Break the line after the return type in function definition.
Richard M. Stallman <rms@gnu.org>
parents:
50376
diff
changeset
|
5860 x_wm_set_icon_position (f, icon_x, icon_y) |
| 13434 | 5861 struct frame *f; |
| 5862 int icon_x, icon_y; | |
| 5863 { | |
| 5864 #if 0 | |
|
16588
481b7874a1e9
Change identifiers of the form win32* to w32*.
Geoff Voelker <voelker@cs.washington.edu>
parents:
16326
diff
changeset
|
5865 Window window = FRAME_W32_WINDOW (f); |
| 13434 | 5866 |
| 5867 f->display.x->wm_hints.flags |= IconPositionHint; | |
| 5868 f->display.x->wm_hints.icon_x = icon_x; | |
| 5869 f->display.x->wm_hints.icon_y = icon_y; | |
| 5870 | |
| 5871 XSetWMHints (FRAME_X_DISPLAY (f), window, &f->display.x->wm_hints); | |
| 5872 #endif | |
| 5873 } | |
| 5874 | |
|
35384
e50a7f9ce65e
(x_produce_stretch_glyph): Only use Qspace when GLYPH_DEBUG is defined.
Jason Rumney <jasonr@gnu.org>
parents:
35287
diff
changeset
|
5875 |
|
e50a7f9ce65e
(x_produce_stretch_glyph): Only use Qspace when GLYPH_DEBUG is defined.
Jason Rumney <jasonr@gnu.org>
parents:
35287
diff
changeset
|
5876 /*********************************************************************** |
|
27402
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
5877 Initialization |
|
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
5878 ***********************************************************************/ |
| 13434 | 5879 |
|
16588
481b7874a1e9
Change identifiers of the form win32* to w32*.
Geoff Voelker <voelker@cs.washington.edu>
parents:
16326
diff
changeset
|
5880 static int w32_initialized = 0; |
|
481b7874a1e9
Change identifiers of the form win32* to w32*.
Geoff Voelker <voelker@cs.washington.edu>
parents:
16326
diff
changeset
|
5881 |
|
27889
51d0b4b8fc6a
(w32_display_info_for_display): Remove unused function.
Jason Rumney <jasonr@gnu.org>
parents:
27631
diff
changeset
|
5882 void |
|
51d0b4b8fc6a
(w32_display_info_for_display): Remove unused function.
Jason Rumney <jasonr@gnu.org>
parents:
27631
diff
changeset
|
5883 w32_initialize_display_info (display_name) |
|
51d0b4b8fc6a
(w32_display_info_for_display): Remove unused function.
Jason Rumney <jasonr@gnu.org>
parents:
27631
diff
changeset
|
5884 Lisp_Object display_name; |
|
51d0b4b8fc6a
(w32_display_info_for_display): Remove unused function.
Jason Rumney <jasonr@gnu.org>
parents:
27631
diff
changeset
|
5885 { |
|
51d0b4b8fc6a
(w32_display_info_for_display): Remove unused function.
Jason Rumney <jasonr@gnu.org>
parents:
27631
diff
changeset
|
5886 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
|
5887 |
|
51d0b4b8fc6a
(w32_display_info_for_display): Remove unused function.
Jason Rumney <jasonr@gnu.org>
parents:
27631
diff
changeset
|
5888 bzero (dpyinfo, sizeof (*dpyinfo)); |
|
51d0b4b8fc6a
(w32_display_info_for_display): Remove unused function.
Jason Rumney <jasonr@gnu.org>
parents:
27631
diff
changeset
|
5889 |
|
51d0b4b8fc6a
(w32_display_info_for_display): Remove unused function.
Jason Rumney <jasonr@gnu.org>
parents:
27631
diff
changeset
|
5890 /* 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
|
5891 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
|
5892 w32_display_name_list); |
|
51d0b4b8fc6a
(w32_display_info_for_display): Remove unused function.
Jason Rumney <jasonr@gnu.org>
parents:
27631
diff
changeset
|
5893 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
|
5894 |
|
27889
51d0b4b8fc6a
(w32_display_info_for_display): Remove unused function.
Jason Rumney <jasonr@gnu.org>
parents:
27631
diff
changeset
|
5895 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
|
5896 = (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
|
5897 + SCHARS (Vsystem_name) |
|
27889
51d0b4b8fc6a
(w32_display_info_for_display): Remove unused function.
Jason Rumney <jasonr@gnu.org>
parents:
27631
diff
changeset
|
5898 + 2); |
|
51d0b4b8fc6a
(w32_display_info_for_display): Remove unused function.
Jason Rumney <jasonr@gnu.org>
parents:
27631
diff
changeset
|
5899 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
|
5900 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
|
5901 |
|
51d0b4b8fc6a
(w32_display_info_for_display): Remove unused function.
Jason Rumney <jasonr@gnu.org>
parents:
27631
diff
changeset
|
5902 /* 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
|
5903 with values obtained from system metrics. */ |
|
51d0b4b8fc6a
(w32_display_info_for_display): Remove unused function.
Jason Rumney <jasonr@gnu.org>
parents:
27631
diff
changeset
|
5904 dpyinfo->resx = 1; |
|
51d0b4b8fc6a
(w32_display_info_for_display): Remove unused function.
Jason Rumney <jasonr@gnu.org>
parents:
27631
diff
changeset
|
5905 dpyinfo->resy = 1; |
|
51d0b4b8fc6a
(w32_display_info_for_display): Remove unused function.
Jason Rumney <jasonr@gnu.org>
parents:
27631
diff
changeset
|
5906 dpyinfo->height_in = 1; |
|
51d0b4b8fc6a
(w32_display_info_for_display): Remove unused function.
Jason Rumney <jasonr@gnu.org>
parents:
27631
diff
changeset
|
5907 dpyinfo->width_in = 1; |
|
51d0b4b8fc6a
(w32_display_info_for_display): Remove unused function.
Jason Rumney <jasonr@gnu.org>
parents:
27631
diff
changeset
|
5908 dpyinfo->n_planes = 1; |
|
51d0b4b8fc6a
(w32_display_info_for_display): Remove unused function.
Jason Rumney <jasonr@gnu.org>
parents:
27631
diff
changeset
|
5909 dpyinfo->n_cbits = 4; |
|
51d0b4b8fc6a
(w32_display_info_for_display): Remove unused function.
Jason Rumney <jasonr@gnu.org>
parents:
27631
diff
changeset
|
5910 dpyinfo->n_fonts = 0; |
|
51d0b4b8fc6a
(w32_display_info_for_display): Remove unused function.
Jason Rumney <jasonr@gnu.org>
parents:
27631
diff
changeset
|
5911 dpyinfo->smallest_font_height = 1; |
|
51d0b4b8fc6a
(w32_display_info_for_display): Remove unused function.
Jason Rumney <jasonr@gnu.org>
parents:
27631
diff
changeset
|
5912 dpyinfo->smallest_char_width = 1; |
|
51d0b4b8fc6a
(w32_display_info_for_display): Remove unused function.
Jason Rumney <jasonr@gnu.org>
parents:
27631
diff
changeset
|
5913 |
|
51d0b4b8fc6a
(w32_display_info_for_display): Remove unused function.
Jason Rumney <jasonr@gnu.org>
parents:
27631
diff
changeset
|
5914 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
|
5915 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
|
5916 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
|
5917 dpyinfo->mouse_face_window = Qnil; |
|
40137
5f0d7d58283b
(remember_mouse_glyph): New function.
Jason Rumney <jasonr@gnu.org>
parents:
40078
diff
changeset
|
5918 dpyinfo->mouse_face_overlay = Qnil; |
|
43373
44e2e2c9154f
(disable_mouse_highlight): Removed variable.
Kim F. Storm <storm@cua.dk>
parents:
43146
diff
changeset
|
5919 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
|
5920 |
|
c73ce11bb264
2003-01-21 KOBAYASHI Yasuhiro <kobayays@otsukakj.co.jp>
Jason Rumney <jasonr@gnu.org>
parents:
48888
diff
changeset
|
5921 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
|
5922 /* TODO: dpyinfo->gray */ |
|
27889
51d0b4b8fc6a
(w32_display_info_for_display): Remove unused function.
Jason Rumney <jasonr@gnu.org>
parents:
27631
diff
changeset
|
5923 |
|
51d0b4b8fc6a
(w32_display_info_for_display): Remove unused function.
Jason Rumney <jasonr@gnu.org>
parents:
27631
diff
changeset
|
5924 } |
|
51d0b4b8fc6a
(w32_display_info_for_display): Remove unused function.
Jason Rumney <jasonr@gnu.org>
parents:
27631
diff
changeset
|
5925 |
|
50038
8054c23b6726
(w32_make_rdb): New function.
Juanma Barranquero <lekktu@gmail.com>
parents:
49393
diff
changeset
|
5926 /* 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
|
5927 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
|
5928 \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
|
5929 |
|
8054c23b6726
(w32_make_rdb): New function.
Juanma Barranquero <lekktu@gmail.com>
parents:
49393
diff
changeset
|
5930 [ *]option[ *]:[ *]value... |
|
8054c23b6726
(w32_make_rdb): New function.
Juanma Barranquero <lekktu@gmail.com>
parents:
49393
diff
changeset
|
5931 |
|
8054c23b6726
(w32_make_rdb): New function.
Juanma Barranquero <lekktu@gmail.com>
parents:
49393
diff
changeset
|
5932 becomes |
|
8054c23b6726
(w32_make_rdb): New function.
Juanma Barranquero <lekktu@gmail.com>
parents:
49393
diff
changeset
|
5933 |
|
8054c23b6726
(w32_make_rdb): New function.
Juanma Barranquero <lekktu@gmail.com>
parents:
49393
diff
changeset
|
5934 option:value... |
|
8054c23b6726
(w32_make_rdb): New function.
Juanma Barranquero <lekktu@gmail.com>
parents:
49393
diff
changeset
|
5935 |
|
8054c23b6726
(w32_make_rdb): New function.
Juanma Barranquero <lekktu@gmail.com>
parents:
49393
diff
changeset
|
5936 but any whitespace following value is not removed. */ |
|
8054c23b6726
(w32_make_rdb): New function.
Juanma Barranquero <lekktu@gmail.com>
parents:
49393
diff
changeset
|
5937 |
|
8054c23b6726
(w32_make_rdb): New function.
Juanma Barranquero <lekktu@gmail.com>
parents:
49393
diff
changeset
|
5938 static char * |
|
8054c23b6726
(w32_make_rdb): New function.
Juanma Barranquero <lekktu@gmail.com>
parents:
49393
diff
changeset
|
5939 w32_make_rdb (xrm_option) |
|
8054c23b6726
(w32_make_rdb): New function.
Juanma Barranquero <lekktu@gmail.com>
parents:
49393
diff
changeset
|
5940 char *xrm_option; |
|
8054c23b6726
(w32_make_rdb): New function.
Juanma Barranquero <lekktu@gmail.com>
parents:
49393
diff
changeset
|
5941 { |
|
8054c23b6726
(w32_make_rdb): New function.
Juanma Barranquero <lekktu@gmail.com>
parents:
49393
diff
changeset
|
5942 char *buffer = xmalloc (strlen (xrm_option) + 2); |
|
8054c23b6726
(w32_make_rdb): New function.
Juanma Barranquero <lekktu@gmail.com>
parents:
49393
diff
changeset
|
5943 char *current = buffer; |
|
8054c23b6726
(w32_make_rdb): New function.
Juanma Barranquero <lekktu@gmail.com>
parents:
49393
diff
changeset
|
5944 char ch; |
|
8054c23b6726
(w32_make_rdb): New function.
Juanma Barranquero <lekktu@gmail.com>
parents:
49393
diff
changeset
|
5945 int in_option = 1; |
|
8054c23b6726
(w32_make_rdb): New function.
Juanma Barranquero <lekktu@gmail.com>
parents:
49393
diff
changeset
|
5946 int before_value = 0; |
|
8054c23b6726
(w32_make_rdb): New function.
Juanma Barranquero <lekktu@gmail.com>
parents:
49393
diff
changeset
|
5947 |
|
8054c23b6726
(w32_make_rdb): New function.
Juanma Barranquero <lekktu@gmail.com>
parents:
49393
diff
changeset
|
5948 do { |
|
8054c23b6726
(w32_make_rdb): New function.
Juanma Barranquero <lekktu@gmail.com>
parents:
49393
diff
changeset
|
5949 ch = *xrm_option++; |
|
8054c23b6726
(w32_make_rdb): New function.
Juanma Barranquero <lekktu@gmail.com>
parents:
49393
diff
changeset
|
5950 |
|
8054c23b6726
(w32_make_rdb): New function.
Juanma Barranquero <lekktu@gmail.com>
parents:
49393
diff
changeset
|
5951 if (ch == '\n') |
|
8054c23b6726
(w32_make_rdb): New function.
Juanma Barranquero <lekktu@gmail.com>
parents:
49393
diff
changeset
|
5952 { |
|
8054c23b6726
(w32_make_rdb): New function.
Juanma Barranquero <lekktu@gmail.com>
parents:
49393
diff
changeset
|
5953 *current++ = '\0'; |
|
8054c23b6726
(w32_make_rdb): New function.
Juanma Barranquero <lekktu@gmail.com>
parents:
49393
diff
changeset
|
5954 in_option = 1; |
|
8054c23b6726
(w32_make_rdb): New function.
Juanma Barranquero <lekktu@gmail.com>
parents:
49393
diff
changeset
|
5955 before_value = 0; |
|
8054c23b6726
(w32_make_rdb): New function.
Juanma Barranquero <lekktu@gmail.com>
parents:
49393
diff
changeset
|
5956 } |
|
8054c23b6726
(w32_make_rdb): New function.
Juanma Barranquero <lekktu@gmail.com>
parents:
49393
diff
changeset
|
5957 else if (ch != ' ') |
|
8054c23b6726
(w32_make_rdb): New function.
Juanma Barranquero <lekktu@gmail.com>
parents:
49393
diff
changeset
|
5958 { |
|
8054c23b6726
(w32_make_rdb): New function.
Juanma Barranquero <lekktu@gmail.com>
parents:
49393
diff
changeset
|
5959 *current++ = ch; |
|
8054c23b6726
(w32_make_rdb): New function.
Juanma Barranquero <lekktu@gmail.com>
parents:
49393
diff
changeset
|
5960 if (in_option && (ch == ':')) |
|
8054c23b6726
(w32_make_rdb): New function.
Juanma Barranquero <lekktu@gmail.com>
parents:
49393
diff
changeset
|
5961 { |
|
8054c23b6726
(w32_make_rdb): New function.
Juanma Barranquero <lekktu@gmail.com>
parents:
49393
diff
changeset
|
5962 in_option = 0; |
|
8054c23b6726
(w32_make_rdb): New function.
Juanma Barranquero <lekktu@gmail.com>
parents:
49393
diff
changeset
|
5963 before_value = 1; |
|
8054c23b6726
(w32_make_rdb): New function.
Juanma Barranquero <lekktu@gmail.com>
parents:
49393
diff
changeset
|
5964 } |
|
8054c23b6726
(w32_make_rdb): New function.
Juanma Barranquero <lekktu@gmail.com>
parents:
49393
diff
changeset
|
5965 else if (before_value) |
|
8054c23b6726
(w32_make_rdb): New function.
Juanma Barranquero <lekktu@gmail.com>
parents:
49393
diff
changeset
|
5966 { |
|
8054c23b6726
(w32_make_rdb): New function.
Juanma Barranquero <lekktu@gmail.com>
parents:
49393
diff
changeset
|
5967 before_value = 0; |
|
8054c23b6726
(w32_make_rdb): New function.
Juanma Barranquero <lekktu@gmail.com>
parents:
49393
diff
changeset
|
5968 } |
|
8054c23b6726
(w32_make_rdb): New function.
Juanma Barranquero <lekktu@gmail.com>
parents:
49393
diff
changeset
|
5969 } |
|
8054c23b6726
(w32_make_rdb): New function.
Juanma Barranquero <lekktu@gmail.com>
parents:
49393
diff
changeset
|
5970 else if (!(in_option || before_value)) |
|
8054c23b6726
(w32_make_rdb): New function.
Juanma Barranquero <lekktu@gmail.com>
parents:
49393
diff
changeset
|
5971 { |
|
8054c23b6726
(w32_make_rdb): New function.
Juanma Barranquero <lekktu@gmail.com>
parents:
49393
diff
changeset
|
5972 *current++ = ch; |
|
8054c23b6726
(w32_make_rdb): New function.
Juanma Barranquero <lekktu@gmail.com>
parents:
49393
diff
changeset
|
5973 } |
|
8054c23b6726
(w32_make_rdb): New function.
Juanma Barranquero <lekktu@gmail.com>
parents:
49393
diff
changeset
|
5974 } while (ch); |
|
8054c23b6726
(w32_make_rdb): New function.
Juanma Barranquero <lekktu@gmail.com>
parents:
49393
diff
changeset
|
5975 |
|
8054c23b6726
(w32_make_rdb): New function.
Juanma Barranquero <lekktu@gmail.com>
parents:
49393
diff
changeset
|
5976 *current = '\0'; |
|
8054c23b6726
(w32_make_rdb): New function.
Juanma Barranquero <lekktu@gmail.com>
parents:
49393
diff
changeset
|
5977 |
|
8054c23b6726
(w32_make_rdb): New function.
Juanma Barranquero <lekktu@gmail.com>
parents:
49393
diff
changeset
|
5978 return buffer; |
|
8054c23b6726
(w32_make_rdb): New function.
Juanma Barranquero <lekktu@gmail.com>
parents:
49393
diff
changeset
|
5979 } |
|
8054c23b6726
(w32_make_rdb): New function.
Juanma Barranquero <lekktu@gmail.com>
parents:
49393
diff
changeset
|
5980 |
|
83569
86395c339701
(w32_set_terminal_modes, w32_reset_terminal_modes):
Jason Rumney <jasonr@gnu.org>
parents:
83556
diff
changeset
|
5981 void |
|
86395c339701
(w32_set_terminal_modes, w32_reset_terminal_modes):
Jason Rumney <jasonr@gnu.org>
parents:
83556
diff
changeset
|
5982 x_flush (struct frame * f) |
|
86395c339701
(w32_set_terminal_modes, w32_reset_terminal_modes):
Jason Rumney <jasonr@gnu.org>
parents:
83556
diff
changeset
|
5983 { /* Nothing to do */ } |
|
86395c339701
(w32_set_terminal_modes, w32_reset_terminal_modes):
Jason Rumney <jasonr@gnu.org>
parents:
83556
diff
changeset
|
5984 |
|
86395c339701
(w32_set_terminal_modes, w32_reset_terminal_modes):
Jason Rumney <jasonr@gnu.org>
parents:
83556
diff
changeset
|
5985 |
|
86395c339701
(w32_set_terminal_modes, w32_reset_terminal_modes):
Jason Rumney <jasonr@gnu.org>
parents:
83556
diff
changeset
|
5986 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
|
5987 |
|
86395c339701
(w32_set_terminal_modes, w32_reset_terminal_modes):
Jason Rumney <jasonr@gnu.org>
parents:
83556
diff
changeset
|
5988 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
|
5989 { |
|
86395c339701
(w32_set_terminal_modes, w32_reset_terminal_modes):
Jason Rumney <jasonr@gnu.org>
parents:
83556
diff
changeset
|
5990 w32_frame_parm_handlers, |
|
86395c339701
(w32_set_terminal_modes, w32_reset_terminal_modes):
Jason Rumney <jasonr@gnu.org>
parents:
83556
diff
changeset
|
5991 x_produce_glyphs, |
|
86395c339701
(w32_set_terminal_modes, w32_reset_terminal_modes):
Jason Rumney <jasonr@gnu.org>
parents:
83556
diff
changeset
|
5992 x_write_glyphs, |
|
86395c339701
(w32_set_terminal_modes, w32_reset_terminal_modes):
Jason Rumney <jasonr@gnu.org>
parents:
83556
diff
changeset
|
5993 x_insert_glyphs, |
|
86395c339701
(w32_set_terminal_modes, w32_reset_terminal_modes):
Jason Rumney <jasonr@gnu.org>
parents:
83556
diff
changeset
|
5994 x_clear_end_of_line, |
|
86395c339701
(w32_set_terminal_modes, w32_reset_terminal_modes):
Jason Rumney <jasonr@gnu.org>
parents:
83556
diff
changeset
|
5995 x_scroll_run, |
|
86395c339701
(w32_set_terminal_modes, w32_reset_terminal_modes):
Jason Rumney <jasonr@gnu.org>
parents:
83556
diff
changeset
|
5996 x_after_update_window_line, |
|
86395c339701
(w32_set_terminal_modes, w32_reset_terminal_modes):
Jason Rumney <jasonr@gnu.org>
parents:
83556
diff
changeset
|
5997 x_update_window_begin, |
|
86395c339701
(w32_set_terminal_modes, w32_reset_terminal_modes):
Jason Rumney <jasonr@gnu.org>
parents:
83556
diff
changeset
|
5998 x_update_window_end, |
|
86395c339701
(w32_set_terminal_modes, w32_reset_terminal_modes):
Jason Rumney <jasonr@gnu.org>
parents:
83556
diff
changeset
|
5999 x_cursor_to, |
|
86395c339701
(w32_set_terminal_modes, w32_reset_terminal_modes):
Jason Rumney <jasonr@gnu.org>
parents:
83556
diff
changeset
|
6000 x_flush, |
|
86395c339701
(w32_set_terminal_modes, w32_reset_terminal_modes):
Jason Rumney <jasonr@gnu.org>
parents:
83556
diff
changeset
|
6001 0, /* flush_display_optional */ |
|
86395c339701
(w32_set_terminal_modes, w32_reset_terminal_modes):
Jason Rumney <jasonr@gnu.org>
parents:
83556
diff
changeset
|
6002 x_clear_window_mouse_face, |
|
94970
2905831ea99f
(w32_get_glyph_overhangs): Remove.
Jason Rumney <jasonr@gnu.org>
parents:
94963
diff
changeset
|
6003 x_get_glyph_overhangs, |
|
83569
86395c339701
(w32_set_terminal_modes, w32_reset_terminal_modes):
Jason Rumney <jasonr@gnu.org>
parents:
83556
diff
changeset
|
6004 x_fix_overlapping_area, |
|
86395c339701
(w32_set_terminal_modes, w32_reset_terminal_modes):
Jason Rumney <jasonr@gnu.org>
parents:
83556
diff
changeset
|
6005 w32_draw_fringe_bitmap, |
|
86395c339701
(w32_set_terminal_modes, w32_reset_terminal_modes):
Jason Rumney <jasonr@gnu.org>
parents:
83556
diff
changeset
|
6006 w32_define_fringe_bitmap, |
|
86395c339701
(w32_set_terminal_modes, w32_reset_terminal_modes):
Jason Rumney <jasonr@gnu.org>
parents:
83556
diff
changeset
|
6007 w32_destroy_fringe_bitmap, |
|
93913
7e2e9d86af3b
(w32_compute_glyph_string_overhangs): Compute overhangs
Jason Rumney <jasonr@gnu.org>
parents:
92433
diff
changeset
|
6008 w32_compute_glyph_string_overhangs, |
|
83569
86395c339701
(w32_set_terminal_modes, w32_reset_terminal_modes):
Jason Rumney <jasonr@gnu.org>
parents:
83556
diff
changeset
|
6009 x_draw_glyph_string, |
|
86395c339701
(w32_set_terminal_modes, w32_reset_terminal_modes):
Jason Rumney <jasonr@gnu.org>
parents:
83556
diff
changeset
|
6010 w32_define_frame_cursor, |
|
86395c339701
(w32_set_terminal_modes, w32_reset_terminal_modes):
Jason Rumney <jasonr@gnu.org>
parents:
83556
diff
changeset
|
6011 w32_clear_frame_area, |
|
86395c339701
(w32_set_terminal_modes, w32_reset_terminal_modes):
Jason Rumney <jasonr@gnu.org>
parents:
83556
diff
changeset
|
6012 w32_draw_window_cursor, |
|
86395c339701
(w32_set_terminal_modes, w32_reset_terminal_modes):
Jason Rumney <jasonr@gnu.org>
parents:
83556
diff
changeset
|
6013 w32_draw_vertical_window_border, |
|
86395c339701
(w32_set_terminal_modes, w32_reset_terminal_modes):
Jason Rumney <jasonr@gnu.org>
parents:
83556
diff
changeset
|
6014 w32_shift_glyphs_for_insert |
|
86395c339701
(w32_set_terminal_modes, w32_reset_terminal_modes):
Jason Rumney <jasonr@gnu.org>
parents:
83556
diff
changeset
|
6015 }; |
|
86395c339701
(w32_set_terminal_modes, w32_reset_terminal_modes):
Jason Rumney <jasonr@gnu.org>
parents:
83556
diff
changeset
|
6016 |
|
86395c339701
(w32_set_terminal_modes, w32_reset_terminal_modes):
Jason Rumney <jasonr@gnu.org>
parents:
83556
diff
changeset
|
6017 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
|
6018 |
|
86395c339701
(w32_set_terminal_modes, w32_reset_terminal_modes):
Jason Rumney <jasonr@gnu.org>
parents:
83556
diff
changeset
|
6019 static struct terminal * |
|
86395c339701
(w32_set_terminal_modes, w32_reset_terminal_modes):
Jason Rumney <jasonr@gnu.org>
parents:
83556
diff
changeset
|
6020 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
|
6021 { |
|
86395c339701
(w32_set_terminal_modes, w32_reset_terminal_modes):
Jason Rumney <jasonr@gnu.org>
parents:
83556
diff
changeset
|
6022 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
|
6023 |
|
83569
86395c339701
(w32_set_terminal_modes, w32_reset_terminal_modes):
Jason Rumney <jasonr@gnu.org>
parents:
83556
diff
changeset
|
6024 terminal = create_terminal (); |
|
86395c339701
(w32_set_terminal_modes, w32_reset_terminal_modes):
Jason Rumney <jasonr@gnu.org>
parents:
83556
diff
changeset
|
6025 |
|
86395c339701
(w32_set_terminal_modes, w32_reset_terminal_modes):
Jason Rumney <jasonr@gnu.org>
parents:
83556
diff
changeset
|
6026 terminal->type = output_w32; |
|
86395c339701
(w32_set_terminal_modes, w32_reset_terminal_modes):
Jason Rumney <jasonr@gnu.org>
parents:
83556
diff
changeset
|
6027 terminal->display_info.w32 = dpyinfo; |
|
86395c339701
(w32_set_terminal_modes, w32_reset_terminal_modes):
Jason Rumney <jasonr@gnu.org>
parents:
83556
diff
changeset
|
6028 dpyinfo->terminal = terminal; |
|
86395c339701
(w32_set_terminal_modes, w32_reset_terminal_modes):
Jason Rumney <jasonr@gnu.org>
parents:
83556
diff
changeset
|
6029 |
|
86395c339701
(w32_set_terminal_modes, w32_reset_terminal_modes):
Jason Rumney <jasonr@gnu.org>
parents:
83556
diff
changeset
|
6030 /* 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
|
6031 so we must explicitly cast them. */ |
|
86395c339701
(w32_set_terminal_modes, w32_reset_terminal_modes):
Jason Rumney <jasonr@gnu.org>
parents:
83556
diff
changeset
|
6032 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
|
6033 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
|
6034 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
|
6035 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
|
6036 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
|
6037 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
|
6038 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
|
6039 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
|
6040 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
|
6041 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
|
6042 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
|
6043 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
|
6044 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
|
6045 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
|
6046 // terminal->fullscreen_hook = XTfullscreen_hook; |
|
86395c339701
(w32_set_terminal_modes, w32_reset_terminal_modes):
Jason Rumney <jasonr@gnu.org>
parents:
83556
diff
changeset
|
6047 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
|
6048 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
|
6049 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
|
6050 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
|
6051 |
|
86395c339701
(w32_set_terminal_modes, w32_reset_terminal_modes):
Jason Rumney <jasonr@gnu.org>
parents:
83556
diff
changeset
|
6052 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
|
6053 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
|
6054 |
|
83569
86395c339701
(w32_set_terminal_modes, w32_reset_terminal_modes):
Jason Rumney <jasonr@gnu.org>
parents:
83556
diff
changeset
|
6055 terminal->rif = &w32_redisplay_interface; |
|
86395c339701
(w32_set_terminal_modes, w32_reset_terminal_modes):
Jason Rumney <jasonr@gnu.org>
parents:
83556
diff
changeset
|
6056 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
|
6057 terminal->char_ins_del_ok = 1; |
|
86395c339701
(w32_set_terminal_modes, w32_reset_terminal_modes):
Jason Rumney <jasonr@gnu.org>
parents:
83556
diff
changeset
|
6058 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
|
6059 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
|
6060 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
|
6061 off the bottom. */ |
|
86395c339701
(w32_set_terminal_modes, w32_reset_terminal_modes):
Jason Rumney <jasonr@gnu.org>
parents:
83556
diff
changeset
|
6062 |
|
83876
37f582a71062
Support for horizontal scroll wheels on some mice:
Jason Rumney <jasonr@gnu.org>
parents:
83652
diff
changeset
|
6063 #ifdef MULTI_KBOARD |
|
37f582a71062
Support for horizontal scroll wheels on some mice:
Jason Rumney <jasonr@gnu.org>
parents:
83652
diff
changeset
|
6064 /* 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
|
6065 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
|
6066 terminal like X does. */ |
|
37f582a71062
Support for horizontal scroll wheels on some mice:
Jason Rumney <jasonr@gnu.org>
parents:
83652
diff
changeset
|
6067 terminal->kboard = (KBOARD *) xmalloc (sizeof (KBOARD)); |
|
37f582a71062
Support for horizontal scroll wheels on some mice:
Jason Rumney <jasonr@gnu.org>
parents:
83652
diff
changeset
|
6068 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
|
6069 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
|
6070 terminal->kboard->next_kboard = all_kboards; |
|
37f582a71062
Support for horizontal scroll wheels on some mice:
Jason Rumney <jasonr@gnu.org>
parents:
83652
diff
changeset
|
6071 all_kboards = terminal->kboard; |
|
37f582a71062
Support for horizontal scroll wheels on some mice:
Jason Rumney <jasonr@gnu.org>
parents:
83652
diff
changeset
|
6072 /* 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
|
6073 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
|
6074 prompt in the mini-buffer. */ |
|
37f582a71062
Support for horizontal scroll wheels on some mice:
Jason Rumney <jasonr@gnu.org>
parents:
83652
diff
changeset
|
6075 if (current_kboard == initial_kboard) |
|
37f582a71062
Support for horizontal scroll wheels on some mice:
Jason Rumney <jasonr@gnu.org>
parents:
83652
diff
changeset
|
6076 current_kboard = terminal->kboard; |
|
37f582a71062
Support for horizontal scroll wheels on some mice:
Jason Rumney <jasonr@gnu.org>
parents:
83652
diff
changeset
|
6077 terminal->kboard->reference_count++; |
|
37f582a71062
Support for horizontal scroll wheels on some mice:
Jason Rumney <jasonr@gnu.org>
parents:
83652
diff
changeset
|
6078 #endif |
|
37f582a71062
Support for horizontal scroll wheels on some mice:
Jason Rumney <jasonr@gnu.org>
parents:
83652
diff
changeset
|
6079 |
|
83569
86395c339701
(w32_set_terminal_modes, w32_reset_terminal_modes):
Jason Rumney <jasonr@gnu.org>
parents:
83556
diff
changeset
|
6080 return terminal; |
|
86395c339701
(w32_set_terminal_modes, w32_reset_terminal_modes):
Jason Rumney <jasonr@gnu.org>
parents:
83556
diff
changeset
|
6081 } |
|
86395c339701
(w32_set_terminal_modes, w32_reset_terminal_modes):
Jason Rumney <jasonr@gnu.org>
parents:
83556
diff
changeset
|
6082 |
|
86395c339701
(w32_set_terminal_modes, w32_reset_terminal_modes):
Jason Rumney <jasonr@gnu.org>
parents:
83556
diff
changeset
|
6083 static void |
|
86395c339701
(w32_set_terminal_modes, w32_reset_terminal_modes):
Jason Rumney <jasonr@gnu.org>
parents:
83556
diff
changeset
|
6084 x_delete_terminal (struct terminal *terminal) |
|
86395c339701
(w32_set_terminal_modes, w32_reset_terminal_modes):
Jason Rumney <jasonr@gnu.org>
parents:
83556
diff
changeset
|
6085 { |
|
86395c339701
(w32_set_terminal_modes, w32_reset_terminal_modes):
Jason Rumney <jasonr@gnu.org>
parents:
83556
diff
changeset
|
6086 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
|
6087 int i; |
|
86395c339701
(w32_set_terminal_modes, w32_reset_terminal_modes):
Jason Rumney <jasonr@gnu.org>
parents:
83556
diff
changeset
|
6088 |
|
86395c339701
(w32_set_terminal_modes, w32_reset_terminal_modes):
Jason Rumney <jasonr@gnu.org>
parents:
83556
diff
changeset
|
6089 /* Protect against recursive calls. Fdelete_frame in |
|
86395c339701
(w32_set_terminal_modes, w32_reset_terminal_modes):
Jason Rumney <jasonr@gnu.org>
parents:
83556
diff
changeset
|
6090 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
|
6091 if (!terminal->name) |
|
83569
86395c339701
(w32_set_terminal_modes, w32_reset_terminal_modes):
Jason Rumney <jasonr@gnu.org>
parents:
83556
diff
changeset
|
6092 return; |
|
86395c339701
(w32_set_terminal_modes, w32_reset_terminal_modes):
Jason Rumney <jasonr@gnu.org>
parents:
83556
diff
changeset
|
6093 |
|
86395c339701
(w32_set_terminal_modes, w32_reset_terminal_modes):
Jason Rumney <jasonr@gnu.org>
parents:
83556
diff
changeset
|
6094 BLOCK_INPUT; |
|
86395c339701
(w32_set_terminal_modes, w32_reset_terminal_modes):
Jason Rumney <jasonr@gnu.org>
parents:
83556
diff
changeset
|
6095 |
|
86395c339701
(w32_set_terminal_modes, w32_reset_terminal_modes):
Jason Rumney <jasonr@gnu.org>
parents:
83556
diff
changeset
|
6096 x_delete_display (dpyinfo); |
|
86395c339701
(w32_set_terminal_modes, w32_reset_terminal_modes):
Jason Rumney <jasonr@gnu.org>
parents:
83556
diff
changeset
|
6097 UNBLOCK_INPUT; |
|
86395c339701
(w32_set_terminal_modes, w32_reset_terminal_modes):
Jason Rumney <jasonr@gnu.org>
parents:
83556
diff
changeset
|
6098 } |
|
86395c339701
(w32_set_terminal_modes, w32_reset_terminal_modes):
Jason Rumney <jasonr@gnu.org>
parents:
83556
diff
changeset
|
6099 |
|
16588
481b7874a1e9
Change identifiers of the form win32* to w32*.
Geoff Voelker <voelker@cs.washington.edu>
parents:
16326
diff
changeset
|
6100 struct w32_display_info * |
|
481b7874a1e9
Change identifiers of the form win32* to w32*.
Geoff Voelker <voelker@cs.washington.edu>
parents:
16326
diff
changeset
|
6101 w32_term_init (display_name, xrm_option, resource_name) |
| 13434 | 6102 Lisp_Object display_name; |
| 6103 char *xrm_option; | |
| 6104 char *resource_name; | |
| 6105 { | |
|
16588
481b7874a1e9
Change identifiers of the form win32* to w32*.
Geoff Voelker <voelker@cs.washington.edu>
parents:
16326
diff
changeset
|
6106 struct w32_display_info *dpyinfo; |
|
83569
86395c339701
(w32_set_terminal_modes, w32_reset_terminal_modes):
Jason Rumney <jasonr@gnu.org>
parents:
83556
diff
changeset
|
6107 struct terminal *terminal; |
| 13434 | 6108 HDC hdc; |
|
48218
01e253345507
(w32_draw_fringe_bitmap): Remove unused local variable window.
Juanma Barranquero <lekktu@gmail.com>
parents:
48025
diff
changeset
|
6109 |
| 13434 | 6110 BLOCK_INPUT; |
|
48218
01e253345507
(w32_draw_fringe_bitmap): Remove unused local variable window.
Juanma Barranquero <lekktu@gmail.com>
parents:
48025
diff
changeset
|
6111 |
|
16588
481b7874a1e9
Change identifiers of the form win32* to w32*.
Geoff Voelker <voelker@cs.washington.edu>
parents:
16326
diff
changeset
|
6112 if (!w32_initialized) |
| 13434 | 6113 { |
|
16588
481b7874a1e9
Change identifiers of the form win32* to w32*.
Geoff Voelker <voelker@cs.washington.edu>
parents:
16326
diff
changeset
|
6114 w32_initialize (); |
|
481b7874a1e9
Change identifiers of the form win32* to w32*.
Geoff Voelker <voelker@cs.washington.edu>
parents:
16326
diff
changeset
|
6115 w32_initialized = 1; |
| 13434 | 6116 } |
|
48218
01e253345507
(w32_draw_fringe_bitmap): Remove unused local variable window.
Juanma Barranquero <lekktu@gmail.com>
parents:
48025
diff
changeset
|
6117 |
|
27889
51d0b4b8fc6a
(w32_display_info_for_display): Remove unused function.
Jason Rumney <jasonr@gnu.org>
parents:
27631
diff
changeset
|
6118 w32_initialize_display_info (display_name); |
|
51d0b4b8fc6a
(w32_display_info_for_display): Remove unused function.
Jason Rumney <jasonr@gnu.org>
parents:
27631
diff
changeset
|
6119 |
|
16588
481b7874a1e9
Change identifiers of the form win32* to w32*.
Geoff Voelker <voelker@cs.washington.edu>
parents:
16326
diff
changeset
|
6120 dpyinfo = &one_w32_display_info; |
|
83569
86395c339701
(w32_set_terminal_modes, w32_reset_terminal_modes):
Jason Rumney <jasonr@gnu.org>
parents:
83556
diff
changeset
|
6121 terminal = w32_create_terminal (dpyinfo); |
|
86395c339701
(w32_set_terminal_modes, w32_reset_terminal_modes):
Jason Rumney <jasonr@gnu.org>
parents:
83556
diff
changeset
|
6122 |
|
86395c339701
(w32_set_terminal_modes, w32_reset_terminal_modes):
Jason Rumney <jasonr@gnu.org>
parents:
83556
diff
changeset
|
6123 /* Set the name of the terminal. */ |
|
86395c339701
(w32_set_terminal_modes, w32_reset_terminal_modes):
Jason Rumney <jasonr@gnu.org>
parents:
83556
diff
changeset
|
6124 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
|
6125 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
|
6126 terminal->name[SBYTES (display_name)] = 0; |
|
38570
9606b955465e
(x_display_list): New variable.
Andrew Innes <andrewi@gnu.org>
parents:
36315
diff
changeset
|
6127 |
|
50038
8054c23b6726
(w32_make_rdb): New function.
Juanma Barranquero <lekktu@gmail.com>
parents:
49393
diff
changeset
|
6128 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
|
6129 |
|
38570
9606b955465e
(x_display_list): New variable.
Andrew Innes <andrewi@gnu.org>
parents:
36315
diff
changeset
|
6130 /* Put this display on the chain. */ |
|
9606b955465e
(x_display_list): New variable.
Andrew Innes <andrewi@gnu.org>
parents:
36315
diff
changeset
|
6131 dpyinfo->next = x_display_list; |
|
9606b955465e
(x_display_list): New variable.
Andrew Innes <andrewi@gnu.org>
parents:
36315
diff
changeset
|
6132 x_display_list = dpyinfo; |
|
48218
01e253345507
(w32_draw_fringe_bitmap): Remove unused local variable window.
Juanma Barranquero <lekktu@gmail.com>
parents:
48025
diff
changeset
|
6133 |
|
15151
ed6ddfc0d954
(Vwindow_system): Declared.
Geoff Voelker <voelker@cs.washington.edu>
parents:
15035
diff
changeset
|
6134 hdc = GetDC (GetDesktopWindow ()); |
|
27402
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
6135 |
| 13434 | 6136 dpyinfo->height = GetDeviceCaps (hdc, VERTRES); |
| 6137 dpyinfo->width = GetDeviceCaps (hdc, HORZRES); | |
| 6138 dpyinfo->root_window = GetDesktopWindow (); | |
| 6139 dpyinfo->n_planes = GetDeviceCaps (hdc, PLANES); | |
| 6140 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
|
6141 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
|
6142 dpyinfo->resy = GetDeviceCaps (hdc, LOGPIXELSY); |
|
15151
ed6ddfc0d954
(Vwindow_system): Declared.
Geoff Voelker <voelker@cs.washington.edu>
parents:
15035
diff
changeset
|
6143 dpyinfo->has_palette = GetDeviceCaps (hdc, RASTERCAPS) & RC_PALETTE; |
|
92109
4d9fc08769fa
Consolidate the image_cache to the terminal struct.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
91702
diff
changeset
|
6144 dpyinfo->terminal->image_cache = make_image_cache (); |
|
27514
9625ad0c0f52
(w32_term_init): Swap resx and height_in, resy and
Jason Rumney <jasonr@gnu.org>
parents:
27406
diff
changeset
|
6145 dpyinfo->height_in = dpyinfo->height / dpyinfo->resx; |
|
9625ad0c0f52
(w32_term_init): Swap resx and height_in, resy and
Jason Rumney <jasonr@gnu.org>
parents:
27406
diff
changeset
|
6146 dpyinfo->width_in = dpyinfo->width / dpyinfo->resy; |
| 13434 | 6147 ReleaseDC (GetDesktopWindow (), hdc); |
|
15151
ed6ddfc0d954
(Vwindow_system): Declared.
Geoff Voelker <voelker@cs.washington.edu>
parents:
15035
diff
changeset
|
6148 |
|
ed6ddfc0d954
(Vwindow_system): Declared.
Geoff Voelker <voelker@cs.washington.edu>
parents:
15035
diff
changeset
|
6149 /* initialise palette with white and black */ |
|
ed6ddfc0d954
(Vwindow_system): Declared.
Geoff Voelker <voelker@cs.washington.edu>
parents:
15035
diff
changeset
|
6150 { |
|
47981
74b52651467d
(w32_term_init): Pass XColor to w32_define_color, not COLORREF.
Juanma Barranquero <lekktu@gmail.com>
parents:
47148
diff
changeset
|
6151 XColor color; |
|
27514
9625ad0c0f52
(w32_term_init): Swap resx and height_in, resy and
Jason Rumney <jasonr@gnu.org>
parents:
27406
diff
changeset
|
6152 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
|
6153 w32_defined_color (0, "black", &color, 1); |
|
15151
ed6ddfc0d954
(Vwindow_system): Declared.
Geoff Voelker <voelker@cs.washington.edu>
parents:
15035
diff
changeset
|
6154 } |
|
ed6ddfc0d954
(Vwindow_system): Declared.
Geoff Voelker <voelker@cs.washington.edu>
parents:
15035
diff
changeset
|
6155 |
|
83609
91cab9b5f774
(w32_term_init): Call add_keyboard_wait_descriptor.
Jason Rumney <jasonr@gnu.org>
parents:
83569
diff
changeset
|
6156 /* Add the default keyboard. */ |
|
91cab9b5f774
(w32_term_init): Call add_keyboard_wait_descriptor.
Jason Rumney <jasonr@gnu.org>
parents:
83569
diff
changeset
|
6157 add_keyboard_wait_descriptor (0); |
|
91cab9b5f774
(w32_term_init): Call add_keyboard_wait_descriptor.
Jason Rumney <jasonr@gnu.org>
parents:
83569
diff
changeset
|
6158 |
| 50096 | 6159 /* Create Fringe Bitmaps and store them for later use. |
| 6160 | |
| 6161 On W32, bitmaps are all unsigned short, as Windows requires | |
| 6162 bitmap data to be Word aligned. For some reason they are | |
| 6163 horizontally reflected compared to how they appear on X, so we | |
| 6164 need to bitswap and convert to unsigned shorts before creating | |
| 6165 the bitmaps. */ | |
|
84543
c7b52c80ffa2
(w32_term_init): Pass rif to w32_init_fringe.
Jason Rumney <jasonr@gnu.org>
parents:
83876
diff
changeset
|
6166 w32_init_fringe (terminal->rif); |
|
27889
51d0b4b8fc6a
(w32_display_info_for_display): Remove unused function.
Jason Rumney <jasonr@gnu.org>
parents:
27631
diff
changeset
|
6167 |
| 13434 | 6168 #ifdef F_SETOWN |
| 6169 fcntl (connection, F_SETOWN, getpid ()); | |
| 6170 #endif /* ! defined (F_SETOWN) */ | |
| 6171 | |
| 6172 #ifdef SIGIO | |
| 6173 if (interrupt_input) | |
| 6174 init_sigio (connection); | |
| 6175 #endif /* ! defined (SIGIO) */ | |
| 6176 | |
| 6177 UNBLOCK_INPUT; | |
| 6178 | |
| 6179 return dpyinfo; | |
| 6180 } | |
| 6181 | |
| 6182 /* Get rid of display DPYINFO, assuming all frames are already gone. */ | |
| 6183 void | |
| 6184 x_delete_display (dpyinfo) | |
|
16588
481b7874a1e9
Change identifiers of the form win32* to w32*.
Geoff Voelker <voelker@cs.washington.edu>
parents:
16326
diff
changeset
|
6185 struct w32_display_info *dpyinfo; |
| 13434 | 6186 { |
|
16588
481b7874a1e9
Change identifiers of the form win32* to w32*.
Geoff Voelker <voelker@cs.washington.edu>
parents:
16326
diff
changeset
|
6187 /* Discard this display from w32_display_name_list and w32_display_list. |
| 13434 | 6188 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
|
6189 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
|
6190 && 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
|
6191 w32_display_name_list = XCDR (w32_display_name_list); |
| 13434 | 6192 else |
| 6193 { | |
| 6194 Lisp_Object tail; | |
| 6195 | |
|
16588
481b7874a1e9
Change identifiers of the form win32* to w32*.
Geoff Voelker <voelker@cs.washington.edu>
parents:
16326
diff
changeset
|
6196 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
|
6197 while (CONSP (tail) && CONSP (XCDR (tail))) |
| 13434 | 6198 { |
|
27889
51d0b4b8fc6a
(w32_display_info_for_display): Remove unused function.
Jason Rumney <jasonr@gnu.org>
parents:
27631
diff
changeset
|
6199 if (EQ (XCAR (XCDR (tail)), dpyinfo->name_list_element)) |
| 13434 | 6200 { |
|
39973
579177964efa
Avoid (most) uses of XCAR/XCDR as lvalues, for flexibility in experimenting
Ken Raeburn <raeburn@raeburn.org>
parents:
39697
diff
changeset
|
6201 XSETCDR (tail, XCDR (XCDR (tail))); |
| 13434 | 6202 break; |
| 6203 } | |
|
25646
9154af188477
Use XCAR and XCDR instead of explicit member references.
Ken Raeburn <raeburn@raeburn.org>
parents:
25236
diff
changeset
|
6204 tail = XCDR (tail); |
| 13434 | 6205 } |
| 6206 } | |
| 6207 | |
|
15151
ed6ddfc0d954
(Vwindow_system): Declared.
Geoff Voelker <voelker@cs.washington.edu>
parents:
15035
diff
changeset
|
6208 /* free palette table */ |
|
ed6ddfc0d954
(Vwindow_system): Declared.
Geoff Voelker <voelker@cs.washington.edu>
parents:
15035
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_palette_entry * plist; |
|
15151
ed6ddfc0d954
(Vwindow_system): Declared.
Geoff Voelker <voelker@cs.washington.edu>
parents:
15035
diff
changeset
|
6211 |
|
ed6ddfc0d954
(Vwindow_system): Declared.
Geoff Voelker <voelker@cs.washington.edu>
parents:
15035
diff
changeset
|
6212 plist = dpyinfo->color_list; |
|
ed6ddfc0d954
(Vwindow_system): Declared.
Geoff Voelker <voelker@cs.washington.edu>
parents:
15035
diff
changeset
|
6213 while (plist) |
|
ed6ddfc0d954
(Vwindow_system): Declared.
Geoff Voelker <voelker@cs.washington.edu>
parents:
15035
diff
changeset
|
6214 { |
|
16588
481b7874a1e9
Change identifiers of the form win32* to w32*.
Geoff Voelker <voelker@cs.washington.edu>
parents:
16326
diff
changeset
|
6215 struct w32_palette_entry * pentry = plist; |
|
15151
ed6ddfc0d954
(Vwindow_system): Declared.
Geoff Voelker <voelker@cs.washington.edu>
parents:
15035
diff
changeset
|
6216 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
|
6217 xfree (pentry); |
|
15151
ed6ddfc0d954
(Vwindow_system): Declared.
Geoff Voelker <voelker@cs.washington.edu>
parents:
15035
diff
changeset
|
6218 } |
|
ed6ddfc0d954
(Vwindow_system): Declared.
Geoff Voelker <voelker@cs.washington.edu>
parents:
15035
diff
changeset
|
6219 dpyinfo->color_list = NULL; |
|
ed6ddfc0d954
(Vwindow_system): Declared.
Geoff Voelker <voelker@cs.washington.edu>
parents:
15035
diff
changeset
|
6220 if (dpyinfo->palette) |
|
ed6ddfc0d954
(Vwindow_system): Declared.
Geoff Voelker <voelker@cs.washington.edu>
parents:
15035
diff
changeset
|
6221 DeleteObject(dpyinfo->palette); |
|
ed6ddfc0d954
(Vwindow_system): Declared.
Geoff Voelker <voelker@cs.washington.edu>
parents:
15035
diff
changeset
|
6222 } |
|
16588
481b7874a1e9
Change identifiers of the form win32* to w32*.
Geoff Voelker <voelker@cs.washington.edu>
parents:
16326
diff
changeset
|
6223 xfree (dpyinfo->w32_id_name); |
|
27889
51d0b4b8fc6a
(w32_display_info_for_display): Remove unused function.
Jason Rumney <jasonr@gnu.org>
parents:
27631
diff
changeset
|
6224 |
|
53886
e1b1c388f74d
(w32_draw_fringe_bitmap): Copy unadapted code from
Kim F. Storm <storm@cua.dk>
parents:
53607
diff
changeset
|
6225 w32_reset_fringes (); |
| 13434 | 6226 } |
| 6227 | |
|
16588
481b7874a1e9
Change identifiers of the form win32* to w32*.
Geoff Voelker <voelker@cs.washington.edu>
parents:
16326
diff
changeset
|
6228 /* Set up use of W32. */ |
| 13434 | 6229 |
|
74220
ae3e88b9ef1b
(w32_msg_worker): Declare correctly.
Jason Rumney <jasonr@gnu.org>
parents:
74145
diff
changeset
|
6230 DWORD WINAPI w32_msg_worker (void * arg); |
| 13434 | 6231 |
|
81493
e7dfb7cb2088
(w32_delete_display): Remove leftover declaration.
Juanma Barranquero <lekktu@gmail.com>
parents:
76022
diff
changeset
|
6232 static void |
|
16588
481b7874a1e9
Change identifiers of the form win32* to w32*.
Geoff Voelker <voelker@cs.washington.edu>
parents:
16326
diff
changeset
|
6233 w32_initialize () |
| 13434 | 6234 { |
| 6235 baud_rate = 19200; | |
| 6236 | |
|
40384
25e6d4bb5f7f
(w32_system_caret_hwnd, w32_system_caret_width)
Jason Rumney <jasonr@gnu.org>
parents:
40245
diff
changeset
|
6237 w32_system_caret_hwnd = NULL; |
|
25e6d4bb5f7f
(w32_system_caret_hwnd, w32_system_caret_width)
Jason Rumney <jasonr@gnu.org>
parents:
40245
diff
changeset
|
6238 w32_system_caret_height = 0; |
|
25e6d4bb5f7f
(w32_system_caret_hwnd, w32_system_caret_width)
Jason Rumney <jasonr@gnu.org>
parents:
40245
diff
changeset
|
6239 w32_system_caret_x = 0; |
|
25e6d4bb5f7f
(w32_system_caret_hwnd, w32_system_caret_width)
Jason Rumney <jasonr@gnu.org>
parents:
40245
diff
changeset
|
6240 w32_system_caret_y = 0; |
|
25e6d4bb5f7f
(w32_system_caret_hwnd, w32_system_caret_width)
Jason Rumney <jasonr@gnu.org>
parents:
40245
diff
changeset
|
6241 |
|
63904
72c5011362ef
* w32term.c (cleartype_active): New flag for enabling sub-pixel
Jason Rumney <jasonr@gnu.org>
parents:
63376
diff
changeset
|
6242 /* 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
|
6243 reader is in use. */ |
|
72c5011362ef
* w32term.c (cleartype_active): New flag for enabling sub-pixel
Jason Rumney <jasonr@gnu.org>
parents:
63376
diff
changeset
|
6244 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
|
6245 &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
|
6246 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
|
6247 |
|
27402
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
6248 last_tool_bar_item = -1; |
|
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
6249 any_help_event_p = 0; |
|
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
6250 |
|
19713
043ccce224fb
(SIF_*): Win95 macros defined for NT.
Geoff Voelker <voelker@cs.washington.edu>
parents:
18877
diff
changeset
|
6251 /* 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
|
6252 8 bit character input, standard quit char. */ |
|
043ccce224fb
(SIF_*): Win95 macros defined for NT.
Geoff Voelker <voelker@cs.washington.edu>
parents:
18877
diff
changeset
|
6253 Fset_input_mode (Qnil, Qnil, make_number (2), Qnil); |
| 13434 | 6254 |
| 6255 /* Create the window thread - it will terminate itself or when the app terminates */ | |
| 6256 | |
| 6257 init_crit (); | |
| 6258 | |
| 6259 dwMainThreadId = GetCurrentThreadId (); | |
|
48218
01e253345507
(w32_draw_fringe_bitmap): Remove unused local variable window.
Juanma Barranquero <lekktu@gmail.com>
parents:
48025
diff
changeset
|
6260 DuplicateHandle (GetCurrentProcess (), GetCurrentThread (), |
| 13434 | 6261 GetCurrentProcess (), &hMainThread, 0, TRUE, DUPLICATE_SAME_ACCESS); |
| 6262 | |
| 6263 /* Wait for thread to start */ | |
| 6264 | |
| 6265 { | |
| 6266 MSG msg; | |
| 6267 | |
| 6268 PeekMessage (&msg, NULL, 0, 0, PM_NOREMOVE); | |
| 6269 | |
|
48218
01e253345507
(w32_draw_fringe_bitmap): Remove unused local variable window.
Juanma Barranquero <lekktu@gmail.com>
parents:
48025
diff
changeset
|
6270 hWindowsThread = CreateThread (NULL, 0, |
|
74220
ae3e88b9ef1b
(w32_msg_worker): Declare correctly.
Jason Rumney <jasonr@gnu.org>
parents:
74145
diff
changeset
|
6271 w32_msg_worker, |
|
ae3e88b9ef1b
(w32_msg_worker): Declare correctly.
Jason Rumney <jasonr@gnu.org>
parents:
74145
diff
changeset
|
6272 0, 0, &dwWindowsThreadId); |
| 13434 | 6273 |
| 6274 GetMessage (&msg, NULL, WM_EMACS_DONE, WM_EMACS_DONE); | |
| 6275 } | |
|
48218
01e253345507
(w32_draw_fringe_bitmap): Remove unused local variable window.
Juanma Barranquero <lekktu@gmail.com>
parents:
48025
diff
changeset
|
6276 |
|
15151
ed6ddfc0d954
(Vwindow_system): Declared.
Geoff Voelker <voelker@cs.washington.edu>
parents:
15035
diff
changeset
|
6277 /* 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
|
6278 focus window and active window as windowsThread. Unfortunately, the |
|
15151
ed6ddfc0d954
(Vwindow_system): Declared.
Geoff Voelker <voelker@cs.washington.edu>
parents:
15035
diff
changeset
|
6279 following call to AttachThreadInput, which should do precisely what |
|
ed6ddfc0d954
(Vwindow_system): Declared.
Geoff Voelker <voelker@cs.washington.edu>
parents:
15035
diff
changeset
|
6280 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
|
6281 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
|
6282 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
|
6283 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
|
6284 window state.) */ |
|
15151
ed6ddfc0d954
(Vwindow_system): Declared.
Geoff Voelker <voelker@cs.washington.edu>
parents:
15035
diff
changeset
|
6285 #ifdef ATTACH_THREADS |
|
16884
36babc489b0c
Change all uses of win95, winnt, and win32
Geoff Voelker <voelker@cs.washington.edu>
parents:
16588
diff
changeset
|
6286 AttachThreadInput (dwMainThreadId, dwWindowsThreadId, TRUE); |
|
15151
ed6ddfc0d954
(Vwindow_system): Declared.
Geoff Voelker <voelker@cs.washington.edu>
parents:
15035
diff
changeset
|
6287 #endif |
|
19713
043ccce224fb
(SIF_*): Win95 macros defined for NT.
Geoff Voelker <voelker@cs.washington.edu>
parents:
18877
diff
changeset
|
6288 |
|
90436
6194dc57516d
(w32_initialize) Manually sync 2006-06-05 change from HEAD.
Jason Rumney <jasonr@gnu.org>
parents:
90428
diff
changeset
|
6289 /* Dynamically link to optional system components. */ |
|
19713
043ccce224fb
(SIF_*): Win95 macros defined for NT.
Geoff Voelker <voelker@cs.washington.edu>
parents:
18877
diff
changeset
|
6290 { |
|
63904
72c5011362ef
* w32term.c (cleartype_active): New flag for enabling sub-pixel
Jason Rumney <jasonr@gnu.org>
parents:
63376
diff
changeset
|
6291 UINT smoothing_type; |
|
72c5011362ef
* w32term.c (cleartype_active): New flag for enabling sub-pixel
Jason Rumney <jasonr@gnu.org>
parents:
63376
diff
changeset
|
6292 BOOL smoothing_enabled; |
|
19713
043ccce224fb
(SIF_*): Win95 macros defined for NT.
Geoff Voelker <voelker@cs.washington.edu>
parents:
18877
diff
changeset
|
6293 |
|
89595
804abd486fd1
(GLYPHSET, WCRANGE): Define if system headers don't.
Jason Rumney <jasonr@gnu.org>
parents:
89588
diff
changeset
|
6294 HANDLE gdi_lib = LoadLibrary ("gdi32.dll"); |
|
19713
043ccce224fb
(SIF_*): Win95 macros defined for NT.
Geoff Voelker <voelker@cs.washington.edu>
parents:
18877
diff
changeset
|
6295 |
|
89595
804abd486fd1
(GLYPHSET, WCRANGE): Define if system headers don't.
Jason Rumney <jasonr@gnu.org>
parents:
89588
diff
changeset
|
6296 #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
|
6297 |
|
89595
804abd486fd1
(GLYPHSET, WCRANGE): Define if system headers don't.
Jason Rumney <jasonr@gnu.org>
parents:
89588
diff
changeset
|
6298 LOAD_PROC (gdi_lib, GetFontUnicodeRanges); |
|
95170
194ed5c5c97e
Fix typo in comment.
Juanma Barranquero <lekktu@gmail.com>
parents:
94970
diff
changeset
|
6299 |
|
19713
043ccce224fb
(SIF_*): Win95 macros defined for NT.
Geoff Voelker <voelker@cs.washington.edu>
parents:
18877
diff
changeset
|
6300 #undef LOAD_PROC |
|
043ccce224fb
(SIF_*): Win95 macros defined for NT.
Geoff Voelker <voelker@cs.washington.edu>
parents:
18877
diff
changeset
|
6301 |
|
89595
804abd486fd1
(GLYPHSET, WCRANGE): Define if system headers don't.
Jason Rumney <jasonr@gnu.org>
parents:
89588
diff
changeset
|
6302 FreeLibrary (gdi_lib); |
|
19713
043ccce224fb
(SIF_*): Win95 macros defined for NT.
Geoff Voelker <voelker@cs.washington.edu>
parents:
18877
diff
changeset
|
6303 |
|
90436
6194dc57516d
(w32_initialize) Manually sync 2006-06-05 change from HEAD.
Jason Rumney <jasonr@gnu.org>
parents:
90428
diff
changeset
|
6304 /* 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
|
6305 vertical_scroll_bar_min_handle = 5; |
|
19713
043ccce224fb
(SIF_*): Win95 macros defined for NT.
Geoff Voelker <voelker@cs.washington.edu>
parents:
18877
diff
changeset
|
6306 |
|
043ccce224fb
(SIF_*): Win95 macros defined for NT.
Geoff Voelker <voelker@cs.washington.edu>
parents:
18877
diff
changeset
|
6307 /* 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
|
6308 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
|
6309 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
|
6310 = GetSystemMetrics (SM_CYVSCROLL); |
|
63904
72c5011362ef
* w32term.c (cleartype_active): New flag for enabling sub-pixel
Jason Rumney <jasonr@gnu.org>
parents:
63376
diff
changeset
|
6311 |
|
72c5011362ef
* w32term.c (cleartype_active): New flag for enabling sub-pixel
Jason Rumney <jasonr@gnu.org>
parents:
63376
diff
changeset
|
6312 /* Constants that are not always defined by the system headers |
|
72c5011362ef
* w32term.c (cleartype_active): New flag for enabling sub-pixel
Jason Rumney <jasonr@gnu.org>
parents:
63376
diff
changeset
|
6313 since they only exist on certain versions of Windows. */ |
|
72c5011362ef
* w32term.c (cleartype_active): New flag for enabling sub-pixel
Jason Rumney <jasonr@gnu.org>
parents:
63376
diff
changeset
|
6314 #ifndef SPI_GETFONTSMOOTHING |
|
72c5011362ef
* w32term.c (cleartype_active): New flag for enabling sub-pixel
Jason Rumney <jasonr@gnu.org>
parents:
63376
diff
changeset
|
6315 #define SPI_GETFONTSMOOTHING 0x4A |
|
72c5011362ef
* w32term.c (cleartype_active): New flag for enabling sub-pixel
Jason Rumney <jasonr@gnu.org>
parents:
63376
diff
changeset
|
6316 #endif |
|
72c5011362ef
* w32term.c (cleartype_active): New flag for enabling sub-pixel
Jason Rumney <jasonr@gnu.org>
parents:
63376
diff
changeset
|
6317 #ifndef SPI_GETFONTSMOOTHINGTYPE |
|
72c5011362ef
* w32term.c (cleartype_active): New flag for enabling sub-pixel
Jason Rumney <jasonr@gnu.org>
parents:
63376
diff
changeset
|
6318 #define SPI_GETFONTSMOOTHINGTYPE 0x0200A |
|
72c5011362ef
* w32term.c (cleartype_active): New flag for enabling sub-pixel
Jason Rumney <jasonr@gnu.org>
parents:
63376
diff
changeset
|
6319 #endif |
|
72c5011362ef
* w32term.c (cleartype_active): New flag for enabling sub-pixel
Jason Rumney <jasonr@gnu.org>
parents:
63376
diff
changeset
|
6320 #ifndef FE_FONTSMOOTHINGCLEARTYPE |
|
72c5011362ef
* w32term.c (cleartype_active): New flag for enabling sub-pixel
Jason Rumney <jasonr@gnu.org>
parents:
63376
diff
changeset
|
6321 #define FE_FONTSMOOTHINGCLEARTYPE 0x2 |
|
72c5011362ef
* w32term.c (cleartype_active): New flag for enabling sub-pixel
Jason Rumney <jasonr@gnu.org>
parents:
63376
diff
changeset
|
6322 #endif |
|
72c5011362ef
* w32term.c (cleartype_active): New flag for enabling sub-pixel
Jason Rumney <jasonr@gnu.org>
parents:
63376
diff
changeset
|
6323 |
|
72c5011362ef
* w32term.c (cleartype_active): New flag for enabling sub-pixel
Jason Rumney <jasonr@gnu.org>
parents:
63376
diff
changeset
|
6324 /* Determine if Cleartype is in use. Used to enable a hack in |
|
72c5011362ef
* w32term.c (cleartype_active): New flag for enabling sub-pixel
Jason Rumney <jasonr@gnu.org>
parents:
63376
diff
changeset
|
6325 the char metric calculations which adds extra pixels to |
|
72c5011362ef
* w32term.c (cleartype_active): New flag for enabling sub-pixel
Jason Rumney <jasonr@gnu.org>
parents:
63376
diff
changeset
|
6326 compensate for the "sub-pixels" that are not counted by the |
|
72c5011362ef
* w32term.c (cleartype_active): New flag for enabling sub-pixel
Jason Rumney <jasonr@gnu.org>
parents:
63376
diff
changeset
|
6327 system APIs. */ |
|
72c5011362ef
* w32term.c (cleartype_active): New flag for enabling sub-pixel
Jason Rumney <jasonr@gnu.org>
parents:
63376
diff
changeset
|
6328 cleartype_active = |
|
72c5011362ef
* w32term.c (cleartype_active): New flag for enabling sub-pixel
Jason Rumney <jasonr@gnu.org>
parents:
63376
diff
changeset
|
6329 SystemParametersInfo (SPI_GETFONTSMOOTHING, 0, &smoothing_enabled, 0) |
|
72c5011362ef
* w32term.c (cleartype_active): New flag for enabling sub-pixel
Jason Rumney <jasonr@gnu.org>
parents:
63376
diff
changeset
|
6330 && smoothing_enabled |
|
72c5011362ef
* w32term.c (cleartype_active): New flag for enabling sub-pixel
Jason Rumney <jasonr@gnu.org>
parents:
63376
diff
changeset
|
6331 && SystemParametersInfo (SPI_GETFONTSMOOTHINGTYPE, 0, &smoothing_type, 0) |
|
72c5011362ef
* w32term.c (cleartype_active): New flag for enabling sub-pixel
Jason Rumney <jasonr@gnu.org>
parents:
63376
diff
changeset
|
6332 && smoothing_type == FE_FONTSMOOTHINGCLEARTYPE; |
|
19713
043ccce224fb
(SIF_*): Win95 macros defined for NT.
Geoff Voelker <voelker@cs.washington.edu>
parents:
18877
diff
changeset
|
6333 } |
| 13434 | 6334 } |
| 6335 | |
| 6336 void | |
|
16588
481b7874a1e9
Change identifiers of the form win32* to w32*.
Geoff Voelker <voelker@cs.washington.edu>
parents:
16326
diff
changeset
|
6337 syms_of_w32term () |
| 13434 | 6338 { |
|
16588
481b7874a1e9
Change identifiers of the form win32* to w32*.
Geoff Voelker <voelker@cs.washington.edu>
parents:
16326
diff
changeset
|
6339 staticpro (&w32_display_name_list); |
|
481b7874a1e9
Change identifiers of the form win32* to w32*.
Geoff Voelker <voelker@cs.washington.edu>
parents:
16326
diff
changeset
|
6340 w32_display_name_list = Qnil; |
| 13434 | 6341 |
| 6342 staticpro (&last_mouse_scroll_bar); | |
| 6343 last_mouse_scroll_bar = Qnil; | |
| 6344 | |
|
90923
4a877f897bd8
(syms_of_w32term): Use DEFSYM macro.
Jason Rumney <jasonr@gnu.org>
parents:
90905
diff
changeset
|
6345 DEFSYM (Qvendor_specific_keysyms, "vendor-specific-keysyms"); |
|
15151
ed6ddfc0d954
(Vwindow_system): Declared.
Geoff Voelker <voelker@cs.washington.edu>
parents:
15035
diff
changeset
|
6346 |
|
16588
481b7874a1e9
Change identifiers of the form win32* to w32*.
Geoff Voelker <voelker@cs.washington.edu>
parents:
16326
diff
changeset
|
6347 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
|
6348 &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
|
6349 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
|
6350 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
|
6351 |
|
481b7874a1e9
Change identifiers of the form win32* to w32*.
Geoff Voelker <voelker@cs.washington.edu>
parents:
16326
diff
changeset
|
6352 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
|
6353 &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
|
6354 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
|
6355 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
|
6356 Vw32_swap_mouse_buttons = Qnil; |
|
19713
043ccce224fb
(SIF_*): Win95 macros defined for NT.
Geoff Voelker <voelker@cs.washington.edu>
parents:
18877
diff
changeset
|
6357 |
|
043ccce224fb
(SIF_*): Win95 macros defined for NT.
Geoff Voelker <voelker@cs.washington.edu>
parents:
18877
diff
changeset
|
6358 DEFVAR_LISP ("w32-grab-focus-on-raise", |
|
043ccce224fb
(SIF_*): Win95 macros defined for NT.
Geoff Voelker <voelker@cs.washington.edu>
parents:
18877
diff
changeset
|
6359 &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
|
6360 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
|
6361 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
|
6362 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
|
6363 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
|
6364 Vw32_grab_focus_on_raise = Qt; |
|
043ccce224fb
(SIF_*): Win95 macros defined for NT.
Geoff Voelker <voelker@cs.washington.edu>
parents:
18877
diff
changeset
|
6365 |
|
043ccce224fb
(SIF_*): Win95 macros defined for NT.
Geoff Voelker <voelker@cs.washington.edu>
parents:
18877
diff
changeset
|
6366 DEFVAR_LISP ("w32-capslock-is-shiftlock", |
|
043ccce224fb
(SIF_*): Win95 macros defined for NT.
Geoff Voelker <voelker@cs.washington.edu>
parents:
18877
diff
changeset
|
6367 &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
|
6368 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
|
6369 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
|
6370 Vw32_capslock_is_shiftlock = Qnil; |
|
21614
2624d8dcc73f
(Vw32_recognize_altgr): New variable.
Geoff Voelker <voelker@cs.washington.edu>
parents:
21456
diff
changeset
|
6371 |
|
2624d8dcc73f
(Vw32_recognize_altgr): New variable.
Geoff Voelker <voelker@cs.washington.edu>
parents:
21456
diff
changeset
|
6372 DEFVAR_LISP ("w32-recognize-altgr", |
|
2624d8dcc73f
(Vw32_recognize_altgr): New variable.
Geoff Voelker <voelker@cs.washington.edu>
parents:
21456
diff
changeset
|
6373 &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
|
6374 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
|
6375 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
|
6376 interpreted normally. */); |
|
21614
2624d8dcc73f
(Vw32_recognize_altgr): New variable.
Geoff Voelker <voelker@cs.washington.edu>
parents:
21456
diff
changeset
|
6377 Vw32_recognize_altgr = Qt; |
|
23638
e6fb9ffee4f4
(dumpglyphs): Use FRAME_FONT for w32_fill_area.
Geoff Voelker <voelker@cs.washington.edu>
parents:
23510
diff
changeset
|
6378 |
|
23639
516fc58a7b7b
(w32_enable_unicode_output): Rename from
Geoff Voelker <voelker@cs.washington.edu>
parents:
23638
diff
changeset
|
6379 DEFVAR_BOOL ("w32-enable-unicode-output", |
|
516fc58a7b7b
(w32_enable_unicode_output): Rename from
Geoff Voelker <voelker@cs.washington.edu>
parents:
23638
diff
changeset
|
6380 &w32_enable_unicode_output, |
|
40962
f66d09d1bb2f
Change doc-string comments to `new style'. [w/`doc:' keyword]. Doc fixes.
Jason Rumney <jasonr@gnu.org>
parents:
40816
diff
changeset
|
6381 doc: /* Enable the use of Unicode for text output if non-nil. |
|
f66d09d1bb2f
Change doc-string comments to `new style'. [w/`doc:' keyword]. Doc fixes.
Jason Rumney <jasonr@gnu.org>
parents:
40816
diff
changeset
|
6382 Unicode output may prevent some third party applications for displaying |
|
f66d09d1bb2f
Change doc-string comments to `new style'. [w/`doc:' keyword]. Doc fixes.
Jason Rumney <jasonr@gnu.org>
parents:
40816
diff
changeset
|
6383 Far-East Languages on Windows 95/98 from working properly. |
|
f66d09d1bb2f
Change doc-string comments to `new style'. [w/`doc:' keyword]. Doc fixes.
Jason Rumney <jasonr@gnu.org>
parents:
40816
diff
changeset
|
6384 NT uses Unicode internally anyway, so this flag will probably have no |
|
85309
3224d6c172a6
(w32_font_is_double_byte, my_create_scrollbar): Make static.
Juanma Barranquero <lekktu@gmail.com>
parents:
85258
diff
changeset
|
6385 effect on NT machines. */); |
|
23639
516fc58a7b7b
(w32_enable_unicode_output): Rename from
Geoff Voelker <voelker@cs.washington.edu>
parents:
23638
diff
changeset
|
6386 w32_enable_unicode_output = 1; |
|
24131
34f6ec762e5e
Remove codepage macros. Remove redundant BIG5 macros.
Geoff Voelker <voelker@cs.washington.edu>
parents:
23951
diff
changeset
|
6387 |
|
42864
c1af6a7f3dd4
(w32_system_caret_width): Remove.
Jason Rumney <jasonr@gnu.org>
parents:
42844
diff
changeset
|
6388 DEFVAR_BOOL ("w32-use-visible-system-caret", |
|
c1af6a7f3dd4
(w32_system_caret_width): Remove.
Jason Rumney <jasonr@gnu.org>
parents:
42844
diff
changeset
|
6389 &w32_use_visible_system_caret, |
|
c1af6a7f3dd4
(w32_system_caret_width): Remove.
Jason Rumney <jasonr@gnu.org>
parents:
42844
diff
changeset
|
6390 doc: /* Flag to make the system caret visible. |
|
c1af6a7f3dd4
(w32_system_caret_width): Remove.
Jason Rumney <jasonr@gnu.org>
parents:
42844
diff
changeset
|
6391 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
|
6392 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
|
6393 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
|
6394 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
|
6395 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
|
6396 software is running as it starts up. |
|
c1af6a7f3dd4
(w32_system_caret_width): Remove.
Jason Rumney <jasonr@gnu.org>
parents:
42844
diff
changeset
|
6397 |
|
c1af6a7f3dd4
(w32_system_caret_width): Remove.
Jason Rumney <jasonr@gnu.org>
parents:
42844
diff
changeset
|
6398 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
|
6399 the cursor have no effect. */); |
|
c1af6a7f3dd4
(w32_system_caret_width): Remove.
Jason Rumney <jasonr@gnu.org>
parents:
42844
diff
changeset
|
6400 |
|
63904
72c5011362ef
* w32term.c (cleartype_active): New flag for enabling sub-pixel
Jason Rumney <jasonr@gnu.org>
parents:
63376
diff
changeset
|
6401 w32_use_visible_system_caret = 0; |
|
42864
c1af6a7f3dd4
(w32_system_caret_width): Remove.
Jason Rumney <jasonr@gnu.org>
parents:
42844
diff
changeset
|
6402 |
|
63376
2a6bb16cad69
(x_use_underline_position_properties): New variable.
Eli Zaretskii <eliz@gnu.org>
parents:
60948
diff
changeset
|
6403 /* 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
|
6404 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
|
6405 DEFVAR_BOOL ("x-use-underline-position-properties", |
|
2a6bb16cad69
(x_use_underline_position_properties): New variable.
Eli Zaretskii <eliz@gnu.org>
parents:
60948
diff
changeset
|
6406 &x_use_underline_position_properties, |
|
2a6bb16cad69
(x_use_underline_position_properties): New variable.
Eli Zaretskii <eliz@gnu.org>
parents:
60948
diff
changeset
|
6407 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
|
6408 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
|
6409 UNDERLINE_POSITION font properties, for example 7x13 on XFree prior |
|
2a6bb16cad69
(x_use_underline_position_properties): New variable.
Eli Zaretskii <eliz@gnu.org>
parents:
60948
diff
changeset
|
6410 to 4.1, set this to nil. |
|
2a6bb16cad69
(x_use_underline_position_properties): New variable.
Eli Zaretskii <eliz@gnu.org>
parents:
60948
diff
changeset
|
6411 |
|
2a6bb16cad69
(x_use_underline_position_properties): New variable.
Eli Zaretskii <eliz@gnu.org>
parents:
60948
diff
changeset
|
6412 NOTE: Not supported on MS-Windows yet. */); |
|
2a6bb16cad69
(x_use_underline_position_properties): New variable.
Eli Zaretskii <eliz@gnu.org>
parents:
60948
diff
changeset
|
6413 x_use_underline_position_properties = 0; |
|
2a6bb16cad69
(x_use_underline_position_properties): New variable.
Eli Zaretskii <eliz@gnu.org>
parents:
60948
diff
changeset
|
6414 |
|
72505
759e19ea81e5
(x_underline_at_descent_line): New variable.
Kim F. Storm <storm@cua.dk>
parents:
72470
diff
changeset
|
6415 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
|
6416 &x_underline_at_descent_line, |
|
759e19ea81e5
(x_underline_at_descent_line): New variable.
Kim F. Storm <storm@cua.dk>
parents:
72470
diff
changeset
|
6417 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
|
6418 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
|
6419 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
|
6420 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
|
6421 x_underline_at_descent_line = 0; |
|
759e19ea81e5
(x_underline_at_descent_line): New variable.
Kim F. Storm <storm@cua.dk>
parents:
72470
diff
changeset
|
6422 |
|
34869
1d671133e618
(syms_of_xterm): DEFVAR_LISP x-toolkit-scroll-bars
Gerd Moellmann <gerd@gnu.org>
parents:
34823
diff
changeset
|
6423 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
|
6424 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
|
6425 Vx_toolkit_scroll_bars = Qt; |
|
27402
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
6426 |
|
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
6427 staticpro (&last_mouse_motion_frame); |
|
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
6428 last_mouse_motion_frame = Qnil; |
|
044fe520ab6e
Complete rewrite based on xterm.c.
Jason Rumney <jasonr@gnu.org>
parents:
26088
diff
changeset
|
6429 } |
| 52401 | 6430 |
| 6431 /* arch-tag: 5fa70624-ab86-499c-8a85-473958ee4646 | |
| 6432 (do not change this comment) */ |
