annotate src/gui_w32.c @ 29479:5c390aa28f44 v9.0.0081

patch 9.0.0081: command line completion of user command may have duplicates Commit: https://github.com/vim/vim/commit/c2842adfb2ca0637f13e2793fefa18e7818684f9 Author: Bram Moolenaar <Bram@vim.org> Date: Tue Jul 26 17:23:47 2022 +0100 patch 9.0.0081: command line completion of user command may have duplicates Problem: Command line completion of user command may have duplicates. (Dani Dickstein) Solution: Skip global user command if an identical buffer-local one is defined. (closes #10797)
author Bram Moolenaar <Bram@vim.org>
date Tue, 26 Jul 2022 18:30:03 +0200
parents 827d9f2b7a71
children aeaeb92c2764
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
10042
4aead6a9b7a9 commit https://github.com/vim/vim/commit/edf3f97ae2af024708ebb4ac614227327033ca47
Christian Brabandt <cb@256bit.org>
parents: 9959
diff changeset
1 /* vi:set ts=8 sts=4 sw=4 noet:
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2 *
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3 * VIM - Vi IMproved by Bram Moolenaar
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
4 * GUI support by Robert Webb
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
5 *
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
6 * Do ":help uganda" in Vim to read copying and usage conditions.
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
7 * Do ":help credits" in Vim to see a list of people who contributed.
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
8 * See README.txt for an overview of the Vim source code.
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
9 */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
10 /*
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
11 * Windows GUI.
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
12 *
8140
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
13 * GUI support for Microsoft Windows, aka Win32. Also for Win64.
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
14 *
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
15 * George V. Reilly <george@reilly.org> wrote the original Win32 GUI.
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
16 * Robert Webb reworked it to use the existing GUI stuff and added menu,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
17 * scrollbars, etc.
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
18 *
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
19 * Note: Clipboard stuff, for cutting and pasting text to other windows, is in
7009
286fd54c7ae3 patch 7.4.822
Bram Moolenaar <bram@vim.org>
parents: 6714
diff changeset
20 * winclip.c. (It can also be done from the terminal version).
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
21 *
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
22 * TODO: Some of the function signatures ought to be updated for Win64;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
23 * e.g., replace LONG with LONG_PTR, etc.
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
24 */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
25
1376
53b2bedccfdf updated for version 7.1-091
vimboss
parents: 1356
diff changeset
26 #include "vim.h"
53b2bedccfdf updated for version 7.1-091
vimboss
parents: 1356
diff changeset
27
6110
1bff71d20262 updated for version 7.4.393
Bram Moolenaar <bram@vim.org>
parents: 5284
diff changeset
28 #if defined(FEAT_DIRECTX)
1bff71d20262 updated for version 7.4.393
Bram Moolenaar <bram@vim.org>
parents: 5284
diff changeset
29 # include "gui_dwrite.h"
1bff71d20262 updated for version 7.4.393
Bram Moolenaar <bram@vim.org>
parents: 5284
diff changeset
30 #endif
1bff71d20262 updated for version 7.4.393
Bram Moolenaar <bram@vim.org>
parents: 5284
diff changeset
31
6359
9f9058aeba0d updated for version 7.4.512
Bram Moolenaar <bram@vim.org>
parents: 6260
diff changeset
32 #if defined(FEAT_DIRECTX)
6110
1bff71d20262 updated for version 7.4.393
Bram Moolenaar <bram@vim.org>
parents: 5284
diff changeset
33 static DWriteContext *s_dwc = NULL;
1bff71d20262 updated for version 7.4.393
Bram Moolenaar <bram@vim.org>
parents: 5284
diff changeset
34 static int s_directx_enabled = 0;
1bff71d20262 updated for version 7.4.393
Bram Moolenaar <bram@vim.org>
parents: 5284
diff changeset
35 static int s_directx_load_attempted = 0;
13028
cfce9ac1d1e8 patch 8.0.1390: DirectX scrolling can be slow, vertical positioning is off
Christian Brabandt <cb@256bit.org>
parents: 12994
diff changeset
36 # define IS_ENABLE_DIRECTX() (s_directx_enabled && s_dwc != NULL && enc_utf8)
12934
2ebc3df65ca2 patch 8.0.1343: MS-Windows: does not show colored emojis
Christian Brabandt <cb@256bit.org>
parents: 12924
diff changeset
37 static int directx_enabled(void);
2ebc3df65ca2 patch 8.0.1343: MS-Windows: does not show colored emojis
Christian Brabandt <cb@256bit.org>
parents: 12924
diff changeset
38 static void directx_binddc(void);
6359
9f9058aeba0d updated for version 7.4.512
Bram Moolenaar <bram@vim.org>
parents: 6260
diff changeset
39 #endif
9f9058aeba0d updated for version 7.4.512
Bram Moolenaar <bram@vim.org>
parents: 6260
diff changeset
40
8138
f52504c10387 commit https://github.com/vim/vim/commit/065bbac8adfe29a09958570237d223457f235c6c
Christian Brabandt <cb@256bit.org>
parents: 8108
diff changeset
41 #ifdef FEAT_MENU
f52504c10387 commit https://github.com/vim/vim/commit/065bbac8adfe29a09958570237d223457f235c6c
Christian Brabandt <cb@256bit.org>
parents: 8108
diff changeset
42 static int gui_mswin_get_menu_height(int fix_window);
27160
4482dd5f8869 patch 8.2.4109: MS-Windows: high dpi support is outdated
Bram Moolenaar <Bram@vim.org>
parents: 26966
diff changeset
43 #else
4482dd5f8869 patch 8.2.4109: MS-Windows: high dpi support is outdated
Bram Moolenaar <Bram@vim.org>
parents: 26966
diff changeset
44 # define gui_mswin_get_menu_height(fix_window) 0
8138
f52504c10387 commit https://github.com/vim/vim/commit/065bbac8adfe29a09958570237d223457f235c6c
Christian Brabandt <cb@256bit.org>
parents: 8108
diff changeset
45 #endif
f52504c10387 commit https://github.com/vim/vim/commit/065bbac8adfe29a09958570237d223457f235c6c
Christian Brabandt <cb@256bit.org>
parents: 8108
diff changeset
46
6110
1bff71d20262 updated for version 7.4.393
Bram Moolenaar <bram@vim.org>
parents: 5284
diff changeset
47 #if defined(FEAT_RENDER_OPTIONS) || defined(PROTO)
1bff71d20262 updated for version 7.4.393
Bram Moolenaar <bram@vim.org>
parents: 5284
diff changeset
48 int
1bff71d20262 updated for version 7.4.393
Bram Moolenaar <bram@vim.org>
parents: 5284
diff changeset
49 gui_mch_set_rendering_options(char_u *s)
1bff71d20262 updated for version 7.4.393
Bram Moolenaar <bram@vim.org>
parents: 5284
diff changeset
50 {
13028
cfce9ac1d1e8 patch 8.0.1390: DirectX scrolling can be slow, vertical positioning is off
Christian Brabandt <cb@256bit.org>
parents: 12994
diff changeset
51 # ifdef FEAT_DIRECTX
6110
1bff71d20262 updated for version 7.4.393
Bram Moolenaar <bram@vim.org>
parents: 5284
diff changeset
52 char_u *p, *q;
1bff71d20262 updated for version 7.4.393
Bram Moolenaar <bram@vim.org>
parents: 5284
diff changeset
53
1bff71d20262 updated for version 7.4.393
Bram Moolenaar <bram@vim.org>
parents: 5284
diff changeset
54 int dx_enable = 0;
1bff71d20262 updated for version 7.4.393
Bram Moolenaar <bram@vim.org>
parents: 5284
diff changeset
55 int dx_flags = 0;
1bff71d20262 updated for version 7.4.393
Bram Moolenaar <bram@vim.org>
parents: 5284
diff changeset
56 float dx_gamma = 0.0f;
1bff71d20262 updated for version 7.4.393
Bram Moolenaar <bram@vim.org>
parents: 5284
diff changeset
57 float dx_contrast = 0.0f;
1bff71d20262 updated for version 7.4.393
Bram Moolenaar <bram@vim.org>
parents: 5284
diff changeset
58 float dx_level = 0.0f;
1bff71d20262 updated for version 7.4.393
Bram Moolenaar <bram@vim.org>
parents: 5284
diff changeset
59 int dx_geom = 0;
1bff71d20262 updated for version 7.4.393
Bram Moolenaar <bram@vim.org>
parents: 5284
diff changeset
60 int dx_renmode = 0;
1bff71d20262 updated for version 7.4.393
Bram Moolenaar <bram@vim.org>
parents: 5284
diff changeset
61 int dx_taamode = 0;
1bff71d20262 updated for version 7.4.393
Bram Moolenaar <bram@vim.org>
parents: 5284
diff changeset
62
18788
e1f4e9d78a6a patch 8.1.2383: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents: 18773
diff changeset
63 // parse string as rendering options.
6110
1bff71d20262 updated for version 7.4.393
Bram Moolenaar <bram@vim.org>
parents: 5284
diff changeset
64 for (p = s; p != NULL && *p != NUL; )
1bff71d20262 updated for version 7.4.393
Bram Moolenaar <bram@vim.org>
parents: 5284
diff changeset
65 {
1bff71d20262 updated for version 7.4.393
Bram Moolenaar <bram@vim.org>
parents: 5284
diff changeset
66 char_u item[256];
1bff71d20262 updated for version 7.4.393
Bram Moolenaar <bram@vim.org>
parents: 5284
diff changeset
67 char_u name[128];
1bff71d20262 updated for version 7.4.393
Bram Moolenaar <bram@vim.org>
parents: 5284
diff changeset
68 char_u value[128];
1bff71d20262 updated for version 7.4.393
Bram Moolenaar <bram@vim.org>
parents: 5284
diff changeset
69
7009
286fd54c7ae3 patch 7.4.822
Bram Moolenaar <bram@vim.org>
parents: 6714
diff changeset
70 copy_option_part(&p, item, sizeof(item), ",");
6110
1bff71d20262 updated for version 7.4.393
Bram Moolenaar <bram@vim.org>
parents: 5284
diff changeset
71 if (p == NULL)
1bff71d20262 updated for version 7.4.393
Bram Moolenaar <bram@vim.org>
parents: 5284
diff changeset
72 break;
1bff71d20262 updated for version 7.4.393
Bram Moolenaar <bram@vim.org>
parents: 5284
diff changeset
73 q = &item[0];
1bff71d20262 updated for version 7.4.393
Bram Moolenaar <bram@vim.org>
parents: 5284
diff changeset
74 copy_option_part(&q, name, sizeof(name), ":");
1bff71d20262 updated for version 7.4.393
Bram Moolenaar <bram@vim.org>
parents: 5284
diff changeset
75 if (q == NULL)
1bff71d20262 updated for version 7.4.393
Bram Moolenaar <bram@vim.org>
parents: 5284
diff changeset
76 return FAIL;
1bff71d20262 updated for version 7.4.393
Bram Moolenaar <bram@vim.org>
parents: 5284
diff changeset
77 copy_option_part(&q, value, sizeof(value), ":");
1bff71d20262 updated for version 7.4.393
Bram Moolenaar <bram@vim.org>
parents: 5284
diff changeset
78
1bff71d20262 updated for version 7.4.393
Bram Moolenaar <bram@vim.org>
parents: 5284
diff changeset
79 if (STRCMP(name, "type") == 0)
1bff71d20262 updated for version 7.4.393
Bram Moolenaar <bram@vim.org>
parents: 5284
diff changeset
80 {
1bff71d20262 updated for version 7.4.393
Bram Moolenaar <bram@vim.org>
parents: 5284
diff changeset
81 if (STRCMP(value, "directx") == 0)
1bff71d20262 updated for version 7.4.393
Bram Moolenaar <bram@vim.org>
parents: 5284
diff changeset
82 dx_enable = 1;
1bff71d20262 updated for version 7.4.393
Bram Moolenaar <bram@vim.org>
parents: 5284
diff changeset
83 else
1bff71d20262 updated for version 7.4.393
Bram Moolenaar <bram@vim.org>
parents: 5284
diff changeset
84 return FAIL;
1bff71d20262 updated for version 7.4.393
Bram Moolenaar <bram@vim.org>
parents: 5284
diff changeset
85 }
1bff71d20262 updated for version 7.4.393
Bram Moolenaar <bram@vim.org>
parents: 5284
diff changeset
86 else if (STRCMP(name, "gamma") == 0)
1bff71d20262 updated for version 7.4.393
Bram Moolenaar <bram@vim.org>
parents: 5284
diff changeset
87 {
1bff71d20262 updated for version 7.4.393
Bram Moolenaar <bram@vim.org>
parents: 5284
diff changeset
88 dx_flags |= 1 << 0;
8108
50515f2e81d1 commit https://github.com/vim/vim/commit/7f0608fb5219645d776fadfe13efb867c2460698
Christian Brabandt <cb@256bit.org>
parents: 8102
diff changeset
89 dx_gamma = (float)atof((char *)value);
6110
1bff71d20262 updated for version 7.4.393
Bram Moolenaar <bram@vim.org>
parents: 5284
diff changeset
90 }
1bff71d20262 updated for version 7.4.393
Bram Moolenaar <bram@vim.org>
parents: 5284
diff changeset
91 else if (STRCMP(name, "contrast") == 0)
1bff71d20262 updated for version 7.4.393
Bram Moolenaar <bram@vim.org>
parents: 5284
diff changeset
92 {
1bff71d20262 updated for version 7.4.393
Bram Moolenaar <bram@vim.org>
parents: 5284
diff changeset
93 dx_flags |= 1 << 1;
8108
50515f2e81d1 commit https://github.com/vim/vim/commit/7f0608fb5219645d776fadfe13efb867c2460698
Christian Brabandt <cb@256bit.org>
parents: 8102
diff changeset
94 dx_contrast = (float)atof((char *)value);
6110
1bff71d20262 updated for version 7.4.393
Bram Moolenaar <bram@vim.org>
parents: 5284
diff changeset
95 }
1bff71d20262 updated for version 7.4.393
Bram Moolenaar <bram@vim.org>
parents: 5284
diff changeset
96 else if (STRCMP(name, "level") == 0)
1bff71d20262 updated for version 7.4.393
Bram Moolenaar <bram@vim.org>
parents: 5284
diff changeset
97 {
1bff71d20262 updated for version 7.4.393
Bram Moolenaar <bram@vim.org>
parents: 5284
diff changeset
98 dx_flags |= 1 << 2;
8108
50515f2e81d1 commit https://github.com/vim/vim/commit/7f0608fb5219645d776fadfe13efb867c2460698
Christian Brabandt <cb@256bit.org>
parents: 8102
diff changeset
99 dx_level = (float)atof((char *)value);
6110
1bff71d20262 updated for version 7.4.393
Bram Moolenaar <bram@vim.org>
parents: 5284
diff changeset
100 }
1bff71d20262 updated for version 7.4.393
Bram Moolenaar <bram@vim.org>
parents: 5284
diff changeset
101 else if (STRCMP(name, "geom") == 0)
1bff71d20262 updated for version 7.4.393
Bram Moolenaar <bram@vim.org>
parents: 5284
diff changeset
102 {
1bff71d20262 updated for version 7.4.393
Bram Moolenaar <bram@vim.org>
parents: 5284
diff changeset
103 dx_flags |= 1 << 3;
8108
50515f2e81d1 commit https://github.com/vim/vim/commit/7f0608fb5219645d776fadfe13efb867c2460698
Christian Brabandt <cb@256bit.org>
parents: 8102
diff changeset
104 dx_geom = atoi((char *)value);
6110
1bff71d20262 updated for version 7.4.393
Bram Moolenaar <bram@vim.org>
parents: 5284
diff changeset
105 if (dx_geom < 0 || dx_geom > 2)
1bff71d20262 updated for version 7.4.393
Bram Moolenaar <bram@vim.org>
parents: 5284
diff changeset
106 return FAIL;
1bff71d20262 updated for version 7.4.393
Bram Moolenaar <bram@vim.org>
parents: 5284
diff changeset
107 }
1bff71d20262 updated for version 7.4.393
Bram Moolenaar <bram@vim.org>
parents: 5284
diff changeset
108 else if (STRCMP(name, "renmode") == 0)
1bff71d20262 updated for version 7.4.393
Bram Moolenaar <bram@vim.org>
parents: 5284
diff changeset
109 {
1bff71d20262 updated for version 7.4.393
Bram Moolenaar <bram@vim.org>
parents: 5284
diff changeset
110 dx_flags |= 1 << 4;
8108
50515f2e81d1 commit https://github.com/vim/vim/commit/7f0608fb5219645d776fadfe13efb867c2460698
Christian Brabandt <cb@256bit.org>
parents: 8102
diff changeset
111 dx_renmode = atoi((char *)value);
6110
1bff71d20262 updated for version 7.4.393
Bram Moolenaar <bram@vim.org>
parents: 5284
diff changeset
112 if (dx_renmode < 0 || dx_renmode > 6)
1bff71d20262 updated for version 7.4.393
Bram Moolenaar <bram@vim.org>
parents: 5284
diff changeset
113 return FAIL;
1bff71d20262 updated for version 7.4.393
Bram Moolenaar <bram@vim.org>
parents: 5284
diff changeset
114 }
1bff71d20262 updated for version 7.4.393
Bram Moolenaar <bram@vim.org>
parents: 5284
diff changeset
115 else if (STRCMP(name, "taamode") == 0)
1bff71d20262 updated for version 7.4.393
Bram Moolenaar <bram@vim.org>
parents: 5284
diff changeset
116 {
1bff71d20262 updated for version 7.4.393
Bram Moolenaar <bram@vim.org>
parents: 5284
diff changeset
117 dx_flags |= 1 << 5;
8108
50515f2e81d1 commit https://github.com/vim/vim/commit/7f0608fb5219645d776fadfe13efb867c2460698
Christian Brabandt <cb@256bit.org>
parents: 8102
diff changeset
118 dx_taamode = atoi((char *)value);
6110
1bff71d20262 updated for version 7.4.393
Bram Moolenaar <bram@vim.org>
parents: 5284
diff changeset
119 if (dx_taamode < 0 || dx_taamode > 3)
1bff71d20262 updated for version 7.4.393
Bram Moolenaar <bram@vim.org>
parents: 5284
diff changeset
120 return FAIL;
1bff71d20262 updated for version 7.4.393
Bram Moolenaar <bram@vim.org>
parents: 5284
diff changeset
121 }
12986
18e6f4addce9 patch 8.0.1369: MS-Windows: drawing underline slow, mFallbackDC not updated
Christian Brabandt <cb@256bit.org>
parents: 12950
diff changeset
122 else if (STRCMP(name, "scrlines") == 0)
18e6f4addce9 patch 8.0.1369: MS-Windows: drawing underline slow, mFallbackDC not updated
Christian Brabandt <cb@256bit.org>
parents: 12950
diff changeset
123 {
18788
e1f4e9d78a6a patch 8.1.2383: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents: 18773
diff changeset
124 // Deprecated. Simply ignore it.
12986
18e6f4addce9 patch 8.0.1369: MS-Windows: drawing underline slow, mFallbackDC not updated
Christian Brabandt <cb@256bit.org>
parents: 12950
diff changeset
125 }
6110
1bff71d20262 updated for version 7.4.393
Bram Moolenaar <bram@vim.org>
parents: 5284
diff changeset
126 else
1bff71d20262 updated for version 7.4.393
Bram Moolenaar <bram@vim.org>
parents: 5284
diff changeset
127 return FAIL;
1bff71d20262 updated for version 7.4.393
Bram Moolenaar <bram@vim.org>
parents: 5284
diff changeset
128 }
1bff71d20262 updated for version 7.4.393
Bram Moolenaar <bram@vim.org>
parents: 5284
diff changeset
129
12994
8566eaa08788 patch 8.0.1373: no error when settting 'renderoptions' before starting GUI
Christian Brabandt <cb@256bit.org>
parents: 12986
diff changeset
130 if (!gui.in_use)
18788
e1f4e9d78a6a patch 8.1.2383: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents: 18773
diff changeset
131 return OK; // only checking the syntax of the value
e1f4e9d78a6a patch 8.1.2383: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents: 18773
diff changeset
132
e1f4e9d78a6a patch 8.1.2383: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents: 18773
diff changeset
133 // Enable DirectX/DirectWrite
6110
1bff71d20262 updated for version 7.4.393
Bram Moolenaar <bram@vim.org>
parents: 5284
diff changeset
134 if (dx_enable)
1bff71d20262 updated for version 7.4.393
Bram Moolenaar <bram@vim.org>
parents: 5284
diff changeset
135 {
1bff71d20262 updated for version 7.4.393
Bram Moolenaar <bram@vim.org>
parents: 5284
diff changeset
136 if (!directx_enabled())
1bff71d20262 updated for version 7.4.393
Bram Moolenaar <bram@vim.org>
parents: 5284
diff changeset
137 return FAIL;
1bff71d20262 updated for version 7.4.393
Bram Moolenaar <bram@vim.org>
parents: 5284
diff changeset
138 DWriteContext_SetRenderingParams(s_dwc, NULL);
1bff71d20262 updated for version 7.4.393
Bram Moolenaar <bram@vim.org>
parents: 5284
diff changeset
139 if (dx_flags)
1bff71d20262 updated for version 7.4.393
Bram Moolenaar <bram@vim.org>
parents: 5284
diff changeset
140 {
1bff71d20262 updated for version 7.4.393
Bram Moolenaar <bram@vim.org>
parents: 5284
diff changeset
141 DWriteRenderingParams param;
1bff71d20262 updated for version 7.4.393
Bram Moolenaar <bram@vim.org>
parents: 5284
diff changeset
142 DWriteContext_GetRenderingParams(s_dwc, &param);
1bff71d20262 updated for version 7.4.393
Bram Moolenaar <bram@vim.org>
parents: 5284
diff changeset
143 if (dx_flags & (1 << 0))
1bff71d20262 updated for version 7.4.393
Bram Moolenaar <bram@vim.org>
parents: 5284
diff changeset
144 param.gamma = dx_gamma;
1bff71d20262 updated for version 7.4.393
Bram Moolenaar <bram@vim.org>
parents: 5284
diff changeset
145 if (dx_flags & (1 << 1))
1bff71d20262 updated for version 7.4.393
Bram Moolenaar <bram@vim.org>
parents: 5284
diff changeset
146 param.enhancedContrast = dx_contrast;
1bff71d20262 updated for version 7.4.393
Bram Moolenaar <bram@vim.org>
parents: 5284
diff changeset
147 if (dx_flags & (1 << 2))
1bff71d20262 updated for version 7.4.393
Bram Moolenaar <bram@vim.org>
parents: 5284
diff changeset
148 param.clearTypeLevel = dx_level;
1bff71d20262 updated for version 7.4.393
Bram Moolenaar <bram@vim.org>
parents: 5284
diff changeset
149 if (dx_flags & (1 << 3))
1bff71d20262 updated for version 7.4.393
Bram Moolenaar <bram@vim.org>
parents: 5284
diff changeset
150 param.pixelGeometry = dx_geom;
1bff71d20262 updated for version 7.4.393
Bram Moolenaar <bram@vim.org>
parents: 5284
diff changeset
151 if (dx_flags & (1 << 4))
1bff71d20262 updated for version 7.4.393
Bram Moolenaar <bram@vim.org>
parents: 5284
diff changeset
152 param.renderingMode = dx_renmode;
1bff71d20262 updated for version 7.4.393
Bram Moolenaar <bram@vim.org>
parents: 5284
diff changeset
153 if (dx_flags & (1 << 5))
1bff71d20262 updated for version 7.4.393
Bram Moolenaar <bram@vim.org>
parents: 5284
diff changeset
154 param.textAntialiasMode = dx_taamode;
1bff71d20262 updated for version 7.4.393
Bram Moolenaar <bram@vim.org>
parents: 5284
diff changeset
155 DWriteContext_SetRenderingParams(s_dwc, &param);
1bff71d20262 updated for version 7.4.393
Bram Moolenaar <bram@vim.org>
parents: 5284
diff changeset
156 }
1bff71d20262 updated for version 7.4.393
Bram Moolenaar <bram@vim.org>
parents: 5284
diff changeset
157 }
1bff71d20262 updated for version 7.4.393
Bram Moolenaar <bram@vim.org>
parents: 5284
diff changeset
158 s_directx_enabled = dx_enable;
1bff71d20262 updated for version 7.4.393
Bram Moolenaar <bram@vim.org>
parents: 5284
diff changeset
159
1bff71d20262 updated for version 7.4.393
Bram Moolenaar <bram@vim.org>
parents: 5284
diff changeset
160 return OK;
13028
cfce9ac1d1e8 patch 8.0.1390: DirectX scrolling can be slow, vertical positioning is off
Christian Brabandt <cb@256bit.org>
parents: 12994
diff changeset
161 # else
6110
1bff71d20262 updated for version 7.4.393
Bram Moolenaar <bram@vim.org>
parents: 5284
diff changeset
162 return FAIL;
13028
cfce9ac1d1e8 patch 8.0.1390: DirectX scrolling can be slow, vertical positioning is off
Christian Brabandt <cb@256bit.org>
parents: 12994
diff changeset
163 # endif
6110
1bff71d20262 updated for version 7.4.393
Bram Moolenaar <bram@vim.org>
parents: 5284
diff changeset
164 }
1bff71d20262 updated for version 7.4.393
Bram Moolenaar <bram@vim.org>
parents: 5284
diff changeset
165 #endif
1bff71d20262 updated for version 7.4.393
Bram Moolenaar <bram@vim.org>
parents: 5284
diff changeset
166
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
167 /*
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
168 * These are new in Windows ME/XP, only defined in recent compilers.
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
169 */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
170 #ifndef HANDLE_WM_XBUTTONUP
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
171 # define HANDLE_WM_XBUTTONUP(hwnd, wParam, lParam, fn) \
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
172 ((fn)((hwnd), (int)(short)LOWORD(lParam), (int)(short)HIWORD(lParam), (UINT)(wParam)), 0L)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
173 #endif
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
174 #ifndef HANDLE_WM_XBUTTONDOWN
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
175 # define HANDLE_WM_XBUTTONDOWN(hwnd, wParam, lParam, fn) \
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
176 ((fn)((hwnd), FALSE, (int)(short)LOWORD(lParam), (int)(short)HIWORD(lParam), (UINT)(wParam)), 0L)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
177 #endif
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
178 #ifndef HANDLE_WM_XBUTTONDBLCLK
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
179 # define HANDLE_WM_XBUTTONDBLCLK(hwnd, wParam, lParam, fn) \
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
180 ((fn)((hwnd), TRUE, (int)(short)LOWORD(lParam), (int)(short)HIWORD(lParam), (UINT)(wParam)), 0L)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
181 #endif
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
182
8140
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
183
18788
e1f4e9d78a6a patch 8.1.2383: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents: 18773
diff changeset
184 #include "version.h" // used by dialog box routine for default title
8140
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
185 #ifdef DEBUG
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
186 # include <tchar.h>
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
187 #endif
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
188
18788
e1f4e9d78a6a patch 8.1.2383: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents: 18773
diff changeset
189 // cproto fails on missing include files
8140
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
190 #ifndef PROTO
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
191
18773
38a3bef525e6 patch 8.1.2376: preprocessor indents are incorrect
Bram Moolenaar <Bram@vim.org>
parents: 18763
diff changeset
192 # ifndef __MINGW32__
38a3bef525e6 patch 8.1.2376: preprocessor indents are incorrect
Bram Moolenaar <Bram@vim.org>
parents: 18763
diff changeset
193 # include <shellapi.h>
38a3bef525e6 patch 8.1.2376: preprocessor indents are incorrect
Bram Moolenaar <Bram@vim.org>
parents: 18763
diff changeset
194 # endif
38a3bef525e6 patch 8.1.2376: preprocessor indents are incorrect
Bram Moolenaar <Bram@vim.org>
parents: 18763
diff changeset
195 # if defined(FEAT_TOOLBAR) || defined(FEAT_BEVAL_GUI) || defined(FEAT_GUI_TABLINE)
38a3bef525e6 patch 8.1.2376: preprocessor indents are incorrect
Bram Moolenaar <Bram@vim.org>
parents: 18763
diff changeset
196 # include <commctrl.h>
38a3bef525e6 patch 8.1.2376: preprocessor indents are incorrect
Bram Moolenaar <Bram@vim.org>
parents: 18763
diff changeset
197 # endif
38a3bef525e6 patch 8.1.2376: preprocessor indents are incorrect
Bram Moolenaar <Bram@vim.org>
parents: 18763
diff changeset
198 # include <windowsx.h>
38a3bef525e6 patch 8.1.2376: preprocessor indents are incorrect
Bram Moolenaar <Bram@vim.org>
parents: 18763
diff changeset
199
18788
e1f4e9d78a6a patch 8.1.2383: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents: 18773
diff changeset
200 #endif // PROTO
8140
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
201
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
202 #ifdef FEAT_MENU
18788
e1f4e9d78a6a patch 8.1.2383: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents: 18773
diff changeset
203 # define MENUHINTS // show menu hints in command line
e1f4e9d78a6a patch 8.1.2383: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents: 18773
diff changeset
204 #endif
e1f4e9d78a6a patch 8.1.2383: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents: 18773
diff changeset
205
e1f4e9d78a6a patch 8.1.2383: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents: 18773
diff changeset
206 // Some parameters for dialog boxes. All in pixels.
8140
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
207 #define DLG_PADDING_X 10
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
208 #define DLG_PADDING_Y 10
18788
e1f4e9d78a6a patch 8.1.2383: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents: 18773
diff changeset
209 #define DLG_VERT_PADDING_X 4 // For vertical buttons
8140
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
210 #define DLG_VERT_PADDING_Y 4
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
211 #define DLG_ICON_WIDTH 34
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
212 #define DLG_ICON_HEIGHT 34
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
213 #define DLG_MIN_WIDTH 150
27322
574cd25f0962 patch 8.2.4189: MS-Windows: code for "old look" is obsolete
Bram Moolenaar <Bram@vim.org>
parents: 27293
diff changeset
214 #define DLG_FONT_NAME "MS Shell Dlg"
8140
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
215 #define DLG_FONT_POINT_SIZE 8
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
216 #define DLG_MIN_MAX_WIDTH 400
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
217 #define DLG_MIN_MAX_HEIGHT 400
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
218
18788
e1f4e9d78a6a patch 8.1.2383: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents: 18773
diff changeset
219 #define DLG_NONBUTTON_CONTROL 5000 // First ID of non-button controls
e1f4e9d78a6a patch 8.1.2383: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents: 18773
diff changeset
220
27160
4482dd5f8869 patch 8.2.4109: MS-Windows: high dpi support is outdated
Bram Moolenaar <Bram@vim.org>
parents: 26966
diff changeset
221 #ifndef WM_DPICHANGED
28700
7fc67f9d84a7 patch 8.2.4874: Win32 GUI: horizontal scroll wheel not handled properly
Bram Moolenaar <Bram@vim.org>
parents: 28639
diff changeset
222 # define WM_DPICHANGED 0x02E0
7fc67f9d84a7 patch 8.2.4874: Win32 GUI: horizontal scroll wheel not handled properly
Bram Moolenaar <Bram@vim.org>
parents: 28639
diff changeset
223 #endif
7fc67f9d84a7 patch 8.2.4874: Win32 GUI: horizontal scroll wheel not handled properly
Bram Moolenaar <Bram@vim.org>
parents: 28639
diff changeset
224
7fc67f9d84a7 patch 8.2.4874: Win32 GUI: horizontal scroll wheel not handled properly
Bram Moolenaar <Bram@vim.org>
parents: 28639
diff changeset
225 #ifndef WM_MOUSEHWHEEL
7fc67f9d84a7 patch 8.2.4874: Win32 GUI: horizontal scroll wheel not handled properly
Bram Moolenaar <Bram@vim.org>
parents: 28639
diff changeset
226 # define WM_MOUSEHWHEEL 0x020E
7fc67f9d84a7 patch 8.2.4874: Win32 GUI: horizontal scroll wheel not handled properly
Bram Moolenaar <Bram@vim.org>
parents: 28639
diff changeset
227 #endif
7fc67f9d84a7 patch 8.2.4874: Win32 GUI: horizontal scroll wheel not handled properly
Bram Moolenaar <Bram@vim.org>
parents: 28639
diff changeset
228
7fc67f9d84a7 patch 8.2.4874: Win32 GUI: horizontal scroll wheel not handled properly
Bram Moolenaar <Bram@vim.org>
parents: 28639
diff changeset
229 #ifndef SPI_GETWHEELSCROLLCHARS
7fc67f9d84a7 patch 8.2.4874: Win32 GUI: horizontal scroll wheel not handled properly
Bram Moolenaar <Bram@vim.org>
parents: 28639
diff changeset
230 # define SPI_GETWHEELSCROLLCHARS 0x006C
27160
4482dd5f8869 patch 8.2.4109: MS-Windows: high dpi support is outdated
Bram Moolenaar <Bram@vim.org>
parents: 26966
diff changeset
231 #endif
4482dd5f8869 patch 8.2.4109: MS-Windows: high dpi support is outdated
Bram Moolenaar <Bram@vim.org>
parents: 26966
diff changeset
232
28755
26a2836923d6 patch 8.2.4902: mouse wheel scrolling is inconsistent
Bram Moolenaar <Bram@vim.org>
parents: 28700
diff changeset
233 #ifndef SPI_SETWHEELSCROLLCHARS
26a2836923d6 patch 8.2.4902: mouse wheel scrolling is inconsistent
Bram Moolenaar <Bram@vim.org>
parents: 28700
diff changeset
234 # define SPI_SETWHEELSCROLLCHARS 0x006D
26a2836923d6 patch 8.2.4902: mouse wheel scrolling is inconsistent
Bram Moolenaar <Bram@vim.org>
parents: 28700
diff changeset
235 #endif
26a2836923d6 patch 8.2.4902: mouse wheel scrolling is inconsistent
Bram Moolenaar <Bram@vim.org>
parents: 28700
diff changeset
236
8140
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
237 #ifdef PROTO
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
238 /*
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
239 * Define a few things for generating prototypes. This is just to avoid
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
240 * syntax errors, the defines do not need to be correct.
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
241 */
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
242 # define APIENTRY
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
243 # define CALLBACK
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
244 # define CONST
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
245 # define FAR
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
246 # define NEAR
21361
75514c95b948 patch 8.2.1231: MS-Windows: GUI code can be cleaned up
Bram Moolenaar <Bram@vim.org>
parents: 21355
diff changeset
247 # define WINAPI
9834
80ace3687eec commit https://github.com/vim/vim/commit/a6b7a08ae04a3cd4d9c45c906bb7a197e2135179
Christian Brabandt <cb@256bit.org>
parents: 9428
diff changeset
248 # undef _cdecl
8140
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
249 # define _cdecl
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
250 typedef int BOOL;
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
251 typedef int BYTE;
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
252 typedef int DWORD;
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
253 typedef int WCHAR;
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
254 typedef int ENUMLOGFONT;
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
255 typedef int FINDREPLACE;
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
256 typedef int HANDLE;
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
257 typedef int HBITMAP;
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
258 typedef int HBRUSH;
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
259 typedef int HDROP;
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
260 typedef int INT;
16152
8f4eccaaf2c0 patch 8.1.1081: MS-Windows: cannot use some fonts
Bram Moolenaar <Bram@vim.org>
parents: 16123
diff changeset
261 typedef int LOGFONTW[];
8140
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
262 typedef int LPARAM;
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
263 typedef int LPCREATESTRUCT;
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
264 typedef int LPCSTR;
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
265 typedef int LPCTSTR;
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
266 typedef int LPRECT;
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
267 typedef int LPSTR;
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
268 typedef int LPWINDOWPOS;
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
269 typedef int LPWORD;
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
270 typedef int LRESULT;
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
271 typedef int HRESULT;
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
272 # undef MSG
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
273 typedef int MSG;
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
274 typedef int NEWTEXTMETRIC;
29310
f103da6ba95f patch 8.2.5171: dependencies and proto files are outdated
Bram Moolenaar <Bram@vim.org>
parents: 29283
diff changeset
275 typedef int NMHDR;
8140
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
276 typedef int OSVERSIONINFO;
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
277 typedef int PWORD;
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
278 typedef int RECT;
29310
f103da6ba95f patch 8.2.5171: dependencies and proto files are outdated
Bram Moolenaar <Bram@vim.org>
parents: 29283
diff changeset
279 typedef int SIZE;
8140
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
280 typedef int UINT;
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
281 typedef int WORD;
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
282 typedef int WPARAM;
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
283 typedef int POINT;
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
284 typedef void *HINSTANCE;
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
285 typedef void *HMENU;
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
286 typedef void *HWND;
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
287 typedef void *HDC;
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
288 typedef void VOID;
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
289 typedef int LPNMHDR;
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
290 typedef int LONG;
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
291 typedef int WNDPROC;
9834
80ace3687eec commit https://github.com/vim/vim/commit/a6b7a08ae04a3cd4d9c45c906bb7a197e2135179
Christian Brabandt <cb@256bit.org>
parents: 9428
diff changeset
292 typedef int UINT_PTR;
13963
1174611ad715 Vim 8.1 release
Christian Brabandt <cb@256bit.org>
parents: 13766
diff changeset
293 typedef int COLORREF;
1174611ad715 Vim 8.1 release
Christian Brabandt <cb@256bit.org>
parents: 13766
diff changeset
294 typedef int HCURSOR;
8140
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
295 #endif
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
296
27281
f7d73708b391 patch 8.2.4169: MS-Windows: unnessary casts and other minor things
Bram Moolenaar <Bram@vim.org>
parents: 27261
diff changeset
297 static void _OnPaint(HWND hwnd);
12986
18e6f4addce9 patch 8.0.1369: MS-Windows: drawing underline slow, mFallbackDC not updated
Christian Brabandt <cb@256bit.org>
parents: 12950
diff changeset
298 static void fill_rect(const RECT *rcp, HBRUSH hbr, COLORREF color);
8140
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
299 static void clear_rect(RECT *rcp);
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
300
18788
e1f4e9d78a6a patch 8.1.2383: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents: 18773
diff changeset
301 static WORD s_dlgfntheight; // height of the dialog font
e1f4e9d78a6a patch 8.1.2383: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents: 18773
diff changeset
302 static WORD s_dlgfntwidth; // width of the dialog font
8140
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
303
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
304 #ifdef FEAT_MENU
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
305 static HMENU s_menuBar = NULL;
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
306 #endif
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
307 #ifdef FEAT_TEAROFF
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
308 static void rebuild_tearoff(vimmenu_T *menu);
18788
e1f4e9d78a6a patch 8.1.2383: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents: 18773
diff changeset
309 static HBITMAP s_htearbitmap; // bitmap used to indicate tearoff
e1f4e9d78a6a patch 8.1.2383: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents: 18773
diff changeset
310 #endif
e1f4e9d78a6a patch 8.1.2383: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents: 18773
diff changeset
311
e1f4e9d78a6a patch 8.1.2383: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents: 18773
diff changeset
312 // Flag that is set while processing a message that must not be interrupted by
e1f4e9d78a6a patch 8.1.2383: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents: 18773
diff changeset
313 // processing another message.
8140
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
314 static int s_busy_processing = FALSE;
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
315
18788
e1f4e9d78a6a patch 8.1.2383: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents: 18773
diff changeset
316 static int destroying = FALSE; // call DestroyWindow() ourselves
8140
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
317
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
318 #ifdef MSWIN_FIND_REPLACE
27160
4482dd5f8869 patch 8.2.4109: MS-Windows: high dpi support is outdated
Bram Moolenaar <Bram@vim.org>
parents: 26966
diff changeset
319 static UINT s_findrep_msg = 0;
16196
973070a30381 patch 8.1.1103: MS-Windows: old API calls are no longer needed
Bram Moolenaar <Bram@vim.org>
parents: 16162
diff changeset
320 static FINDREPLACEW s_findrep_struct;
8140
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
321 static HWND s_findrep_hwnd = NULL;
16196
973070a30381 patch 8.1.1103: MS-Windows: old API calls are no longer needed
Bram Moolenaar <Bram@vim.org>
parents: 16162
diff changeset
322 static int s_findrep_is_find; // TRUE for find dialog, FALSE
973070a30381 patch 8.1.1103: MS-Windows: old API calls are no longer needed
Bram Moolenaar <Bram@vim.org>
parents: 16162
diff changeset
323 // for find/replace dialog
8140
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
324 #endif
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
325
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
326 HWND s_hwnd = NULL;
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
327 static HDC s_hdc = NULL;
18617
5beda1754026 patch 8.1.2301: MS-Windows GUI: drawing error when background color changes
Bram Moolenaar <Bram@vim.org>
parents: 18526
diff changeset
328 static HBRUSH s_brush = NULL;
8140
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
329
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
330 #ifdef FEAT_TOOLBAR
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
331 static HWND s_toolbarhwnd = NULL;
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
332 static WNDPROC s_toolbar_wndproc = NULL;
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
333 #endif
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
334
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
335 #ifdef FEAT_GUI_TABLINE
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
336 static HWND s_tabhwnd = NULL;
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
337 static WNDPROC s_tabline_wndproc = NULL;
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
338 static int showing_tabline = 0;
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
339 #endif
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
340
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
341 static WPARAM s_wParam = 0;
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
342 static LPARAM s_lParam = 0;
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
343
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
344 static HWND s_textArea = NULL;
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
345 static UINT s_uMsg = 0;
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
346
18788
e1f4e9d78a6a patch 8.1.2383: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents: 18773
diff changeset
347 static char_u *s_textfield; // Used by dialogs to pass back strings
8140
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
348
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
349 static int s_need_activate = FALSE;
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
350
18788
e1f4e9d78a6a patch 8.1.2383: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents: 18773
diff changeset
351 // This variable is set when waiting for an event, which is the only moment
e1f4e9d78a6a patch 8.1.2383: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents: 18773
diff changeset
352 // scrollbar dragging can be done directly. It's not allowed while commands
e1f4e9d78a6a patch 8.1.2383: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents: 18773
diff changeset
353 // are executed, because it may move the cursor and that may cause unexpected
e1f4e9d78a6a patch 8.1.2383: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents: 18773
diff changeset
354 // problems (e.g., while ":s" is working).
8140
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
355 static int allow_scrollbar = FALSE;
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
356
27160
4482dd5f8869 patch 8.2.4109: MS-Windows: high dpi support is outdated
Bram Moolenaar <Bram@vim.org>
parents: 26966
diff changeset
357 #ifndef _DPI_AWARENESS_CONTEXTS_
4482dd5f8869 patch 8.2.4109: MS-Windows: high dpi support is outdated
Bram Moolenaar <Bram@vim.org>
parents: 26966
diff changeset
358 typedef HANDLE DPI_AWARENESS_CONTEXT;
4482dd5f8869 patch 8.2.4109: MS-Windows: high dpi support is outdated
Bram Moolenaar <Bram@vim.org>
parents: 26966
diff changeset
359
4482dd5f8869 patch 8.2.4109: MS-Windows: high dpi support is outdated
Bram Moolenaar <Bram@vim.org>
parents: 26966
diff changeset
360 typedef enum DPI_AWARENESS {
27229
6837d2c14dee patch 8.2.4143: MS-Windows: IME support for Win9x is obsolete
Bram Moolenaar <Bram@vim.org>
parents: 27160
diff changeset
361 DPI_AWARENESS_INVALID = -1,
6837d2c14dee patch 8.2.4143: MS-Windows: IME support for Win9x is obsolete
Bram Moolenaar <Bram@vim.org>
parents: 27160
diff changeset
362 DPI_AWARENESS_UNAWARE = 0,
6837d2c14dee patch 8.2.4143: MS-Windows: IME support for Win9x is obsolete
Bram Moolenaar <Bram@vim.org>
parents: 27160
diff changeset
363 DPI_AWARENESS_SYSTEM_AWARE = 1,
27160
4482dd5f8869 patch 8.2.4109: MS-Windows: high dpi support is outdated
Bram Moolenaar <Bram@vim.org>
parents: 26966
diff changeset
364 DPI_AWARENESS_PER_MONITOR_AWARE = 2
4482dd5f8869 patch 8.2.4109: MS-Windows: high dpi support is outdated
Bram Moolenaar <Bram@vim.org>
parents: 26966
diff changeset
365 } DPI_AWARENESS;
4482dd5f8869 patch 8.2.4109: MS-Windows: high dpi support is outdated
Bram Moolenaar <Bram@vim.org>
parents: 26966
diff changeset
366
27229
6837d2c14dee patch 8.2.4143: MS-Windows: IME support for Win9x is obsolete
Bram Moolenaar <Bram@vim.org>
parents: 27160
diff changeset
367 # define DPI_AWARENESS_CONTEXT_UNAWARE ((DPI_AWARENESS_CONTEXT)-1)
6837d2c14dee patch 8.2.4143: MS-Windows: IME support for Win9x is obsolete
Bram Moolenaar <Bram@vim.org>
parents: 27160
diff changeset
368 # define DPI_AWARENESS_CONTEXT_SYSTEM_AWARE ((DPI_AWARENESS_CONTEXT)-2)
27160
4482dd5f8869 patch 8.2.4109: MS-Windows: high dpi support is outdated
Bram Moolenaar <Bram@vim.org>
parents: 26966
diff changeset
369 # define DPI_AWARENESS_CONTEXT_PER_MONITOR_AWARE ((DPI_AWARENESS_CONTEXT)-3)
4482dd5f8869 patch 8.2.4109: MS-Windows: high dpi support is outdated
Bram Moolenaar <Bram@vim.org>
parents: 26966
diff changeset
370 # define DPI_AWARENESS_CONTEXT_PER_MONITOR_AWARE_V2 ((DPI_AWARENESS_CONTEXT)-4)
4482dd5f8869 patch 8.2.4109: MS-Windows: high dpi support is outdated
Bram Moolenaar <Bram@vim.org>
parents: 26966
diff changeset
371 # define DPI_AWARENESS_CONTEXT_UNAWARE_GDISCALED ((DPI_AWARENESS_CONTEXT)-5)
4482dd5f8869 patch 8.2.4109: MS-Windows: high dpi support is outdated
Bram Moolenaar <Bram@vim.org>
parents: 26966
diff changeset
372 #endif
4482dd5f8869 patch 8.2.4109: MS-Windows: high dpi support is outdated
Bram Moolenaar <Bram@vim.org>
parents: 26966
diff changeset
373
4482dd5f8869 patch 8.2.4109: MS-Windows: high dpi support is outdated
Bram Moolenaar <Bram@vim.org>
parents: 26966
diff changeset
374 #define DEFAULT_DPI 96
4482dd5f8869 patch 8.2.4109: MS-Windows: high dpi support is outdated
Bram Moolenaar <Bram@vim.org>
parents: 26966
diff changeset
375 static int s_dpi = DEFAULT_DPI;
4482dd5f8869 patch 8.2.4109: MS-Windows: high dpi support is outdated
Bram Moolenaar <Bram@vim.org>
parents: 26966
diff changeset
376 static BOOL s_in_dpichanged = FALSE;
4482dd5f8869 patch 8.2.4109: MS-Windows: high dpi support is outdated
Bram Moolenaar <Bram@vim.org>
parents: 26966
diff changeset
377 static DPI_AWARENESS s_process_dpi_aware = DPI_AWARENESS_INVALID;
4482dd5f8869 patch 8.2.4109: MS-Windows: high dpi support is outdated
Bram Moolenaar <Bram@vim.org>
parents: 26966
diff changeset
378
4482dd5f8869 patch 8.2.4109: MS-Windows: high dpi support is outdated
Bram Moolenaar <Bram@vim.org>
parents: 26966
diff changeset
379 static UINT (WINAPI *pGetDpiForSystem)(void) = NULL;
4482dd5f8869 patch 8.2.4109: MS-Windows: high dpi support is outdated
Bram Moolenaar <Bram@vim.org>
parents: 26966
diff changeset
380 static UINT (WINAPI *pGetDpiForWindow)(HWND hwnd) = NULL;
4482dd5f8869 patch 8.2.4109: MS-Windows: high dpi support is outdated
Bram Moolenaar <Bram@vim.org>
parents: 26966
diff changeset
381 static int (WINAPI *pGetSystemMetricsForDpi)(int, UINT) = NULL;
4482dd5f8869 patch 8.2.4109: MS-Windows: high dpi support is outdated
Bram Moolenaar <Bram@vim.org>
parents: 26966
diff changeset
382 //static INT (WINAPI *pGetWindowDpiAwarenessContext)(HWND hwnd) = NULL;
4482dd5f8869 patch 8.2.4109: MS-Windows: high dpi support is outdated
Bram Moolenaar <Bram@vim.org>
parents: 26966
diff changeset
383 static DPI_AWARENESS_CONTEXT (WINAPI *pSetThreadDpiAwarenessContext)(DPI_AWARENESS_CONTEXT dpiContext) = NULL;
4482dd5f8869 patch 8.2.4109: MS-Windows: high dpi support is outdated
Bram Moolenaar <Bram@vim.org>
parents: 26966
diff changeset
384 static DPI_AWARENESS (WINAPI *pGetAwarenessFromDpiAwarenessContext)(DPI_AWARENESS_CONTEXT) = NULL;
4482dd5f8869 patch 8.2.4109: MS-Windows: high dpi support is outdated
Bram Moolenaar <Bram@vim.org>
parents: 26966
diff changeset
385
4482dd5f8869 patch 8.2.4109: MS-Windows: high dpi support is outdated
Bram Moolenaar <Bram@vim.org>
parents: 26966
diff changeset
386 static UINT WINAPI
4482dd5f8869 patch 8.2.4109: MS-Windows: high dpi support is outdated
Bram Moolenaar <Bram@vim.org>
parents: 26966
diff changeset
387 stubGetDpiForSystem(void)
4482dd5f8869 patch 8.2.4109: MS-Windows: high dpi support is outdated
Bram Moolenaar <Bram@vim.org>
parents: 26966
diff changeset
388 {
4482dd5f8869 patch 8.2.4109: MS-Windows: high dpi support is outdated
Bram Moolenaar <Bram@vim.org>
parents: 26966
diff changeset
389 HWND hwnd = GetDesktopWindow();
4482dd5f8869 patch 8.2.4109: MS-Windows: high dpi support is outdated
Bram Moolenaar <Bram@vim.org>
parents: 26966
diff changeset
390 HDC hdc = GetWindowDC(hwnd);
4482dd5f8869 patch 8.2.4109: MS-Windows: high dpi support is outdated
Bram Moolenaar <Bram@vim.org>
parents: 26966
diff changeset
391 UINT dpi = GetDeviceCaps(hdc, LOGPIXELSY);
4482dd5f8869 patch 8.2.4109: MS-Windows: high dpi support is outdated
Bram Moolenaar <Bram@vim.org>
parents: 26966
diff changeset
392 ReleaseDC(hwnd, hdc);
4482dd5f8869 patch 8.2.4109: MS-Windows: high dpi support is outdated
Bram Moolenaar <Bram@vim.org>
parents: 26966
diff changeset
393 return dpi;
4482dd5f8869 patch 8.2.4109: MS-Windows: high dpi support is outdated
Bram Moolenaar <Bram@vim.org>
parents: 26966
diff changeset
394 }
4482dd5f8869 patch 8.2.4109: MS-Windows: high dpi support is outdated
Bram Moolenaar <Bram@vim.org>
parents: 26966
diff changeset
395
4482dd5f8869 patch 8.2.4109: MS-Windows: high dpi support is outdated
Bram Moolenaar <Bram@vim.org>
parents: 26966
diff changeset
396 static int WINAPI
29105
faf7fcd1c8d5 patch 8.2.5073: clang on MS-Windows produces warnings
Bram Moolenaar <Bram@vim.org>
parents: 29096
diff changeset
397 stubGetSystemMetricsForDpi(int nIndex, UINT dpi UNUSED)
27160
4482dd5f8869 patch 8.2.4109: MS-Windows: high dpi support is outdated
Bram Moolenaar <Bram@vim.org>
parents: 26966
diff changeset
398 {
4482dd5f8869 patch 8.2.4109: MS-Windows: high dpi support is outdated
Bram Moolenaar <Bram@vim.org>
parents: 26966
diff changeset
399 return GetSystemMetrics(nIndex);
4482dd5f8869 patch 8.2.4109: MS-Windows: high dpi support is outdated
Bram Moolenaar <Bram@vim.org>
parents: 26966
diff changeset
400 }
4482dd5f8869 patch 8.2.4109: MS-Windows: high dpi support is outdated
Bram Moolenaar <Bram@vim.org>
parents: 26966
diff changeset
401
4482dd5f8869 patch 8.2.4109: MS-Windows: high dpi support is outdated
Bram Moolenaar <Bram@vim.org>
parents: 26966
diff changeset
402 static int
4482dd5f8869 patch 8.2.4109: MS-Windows: high dpi support is outdated
Bram Moolenaar <Bram@vim.org>
parents: 26966
diff changeset
403 adjust_fontsize_by_dpi(int size)
4482dd5f8869 patch 8.2.4109: MS-Windows: high dpi support is outdated
Bram Moolenaar <Bram@vim.org>
parents: 26966
diff changeset
404 {
4482dd5f8869 patch 8.2.4109: MS-Windows: high dpi support is outdated
Bram Moolenaar <Bram@vim.org>
parents: 26966
diff changeset
405 return size * s_dpi / (int)pGetDpiForSystem();
4482dd5f8869 patch 8.2.4109: MS-Windows: high dpi support is outdated
Bram Moolenaar <Bram@vim.org>
parents: 26966
diff changeset
406 }
4482dd5f8869 patch 8.2.4109: MS-Windows: high dpi support is outdated
Bram Moolenaar <Bram@vim.org>
parents: 26966
diff changeset
407
4482dd5f8869 patch 8.2.4109: MS-Windows: high dpi support is outdated
Bram Moolenaar <Bram@vim.org>
parents: 26966
diff changeset
408 static int
4482dd5f8869 patch 8.2.4109: MS-Windows: high dpi support is outdated
Bram Moolenaar <Bram@vim.org>
parents: 26966
diff changeset
409 adjust_by_system_dpi(int size)
4482dd5f8869 patch 8.2.4109: MS-Windows: high dpi support is outdated
Bram Moolenaar <Bram@vim.org>
parents: 26966
diff changeset
410 {
4482dd5f8869 patch 8.2.4109: MS-Windows: high dpi support is outdated
Bram Moolenaar <Bram@vim.org>
parents: 26966
diff changeset
411 return size * (int)pGetDpiForSystem() / DEFAULT_DPI;
4482dd5f8869 patch 8.2.4109: MS-Windows: high dpi support is outdated
Bram Moolenaar <Bram@vim.org>
parents: 26966
diff changeset
412 }
4482dd5f8869 patch 8.2.4109: MS-Windows: high dpi support is outdated
Bram Moolenaar <Bram@vim.org>
parents: 26966
diff changeset
413
12934
2ebc3df65ca2 patch 8.0.1343: MS-Windows: does not show colored emojis
Christian Brabandt <cb@256bit.org>
parents: 12924
diff changeset
414 #if defined(FEAT_DIRECTX)
2ebc3df65ca2 patch 8.0.1343: MS-Windows: does not show colored emojis
Christian Brabandt <cb@256bit.org>
parents: 12924
diff changeset
415 static int
2ebc3df65ca2 patch 8.0.1343: MS-Windows: does not show colored emojis
Christian Brabandt <cb@256bit.org>
parents: 12924
diff changeset
416 directx_enabled(void)
2ebc3df65ca2 patch 8.0.1343: MS-Windows: does not show colored emojis
Christian Brabandt <cb@256bit.org>
parents: 12924
diff changeset
417 {
2ebc3df65ca2 patch 8.0.1343: MS-Windows: does not show colored emojis
Christian Brabandt <cb@256bit.org>
parents: 12924
diff changeset
418 if (s_dwc != NULL)
2ebc3df65ca2 patch 8.0.1343: MS-Windows: does not show colored emojis
Christian Brabandt <cb@256bit.org>
parents: 12924
diff changeset
419 return 1;
2ebc3df65ca2 patch 8.0.1343: MS-Windows: does not show colored emojis
Christian Brabandt <cb@256bit.org>
parents: 12924
diff changeset
420 else if (s_directx_load_attempted)
2ebc3df65ca2 patch 8.0.1343: MS-Windows: does not show colored emojis
Christian Brabandt <cb@256bit.org>
parents: 12924
diff changeset
421 return 0;
18788
e1f4e9d78a6a patch 8.1.2383: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents: 18773
diff changeset
422 // load DirectX
12934
2ebc3df65ca2 patch 8.0.1343: MS-Windows: does not show colored emojis
Christian Brabandt <cb@256bit.org>
parents: 12924
diff changeset
423 DWrite_Init();
2ebc3df65ca2 patch 8.0.1343: MS-Windows: does not show colored emojis
Christian Brabandt <cb@256bit.org>
parents: 12924
diff changeset
424 s_directx_load_attempted = 1;
2ebc3df65ca2 patch 8.0.1343: MS-Windows: does not show colored emojis
Christian Brabandt <cb@256bit.org>
parents: 12924
diff changeset
425 s_dwc = DWriteContext_Open();
2ebc3df65ca2 patch 8.0.1343: MS-Windows: does not show colored emojis
Christian Brabandt <cb@256bit.org>
parents: 12924
diff changeset
426 directx_binddc();
2ebc3df65ca2 patch 8.0.1343: MS-Windows: does not show colored emojis
Christian Brabandt <cb@256bit.org>
parents: 12924
diff changeset
427 return s_dwc != NULL ? 1 : 0;
2ebc3df65ca2 patch 8.0.1343: MS-Windows: does not show colored emojis
Christian Brabandt <cb@256bit.org>
parents: 12924
diff changeset
428 }
2ebc3df65ca2 patch 8.0.1343: MS-Windows: does not show colored emojis
Christian Brabandt <cb@256bit.org>
parents: 12924
diff changeset
429
2ebc3df65ca2 patch 8.0.1343: MS-Windows: does not show colored emojis
Christian Brabandt <cb@256bit.org>
parents: 12924
diff changeset
430 static void
2ebc3df65ca2 patch 8.0.1343: MS-Windows: does not show colored emojis
Christian Brabandt <cb@256bit.org>
parents: 12924
diff changeset
431 directx_binddc(void)
2ebc3df65ca2 patch 8.0.1343: MS-Windows: does not show colored emojis
Christian Brabandt <cb@256bit.org>
parents: 12924
diff changeset
432 {
2ebc3df65ca2 patch 8.0.1343: MS-Windows: does not show colored emojis
Christian Brabandt <cb@256bit.org>
parents: 12924
diff changeset
433 if (s_textArea != NULL)
2ebc3df65ca2 patch 8.0.1343: MS-Windows: does not show colored emojis
Christian Brabandt <cb@256bit.org>
parents: 12924
diff changeset
434 {
2ebc3df65ca2 patch 8.0.1343: MS-Windows: does not show colored emojis
Christian Brabandt <cb@256bit.org>
parents: 12924
diff changeset
435 RECT rect;
2ebc3df65ca2 patch 8.0.1343: MS-Windows: does not show colored emojis
Christian Brabandt <cb@256bit.org>
parents: 12924
diff changeset
436 GetClientRect(s_textArea, &rect);
2ebc3df65ca2 patch 8.0.1343: MS-Windows: does not show colored emojis
Christian Brabandt <cb@256bit.org>
parents: 12924
diff changeset
437 DWriteContext_BindDC(s_dwc, s_hdc, &rect);
2ebc3df65ca2 patch 8.0.1343: MS-Windows: does not show colored emojis
Christian Brabandt <cb@256bit.org>
parents: 12924
diff changeset
438 }
2ebc3df65ca2 patch 8.0.1343: MS-Windows: does not show colored emojis
Christian Brabandt <cb@256bit.org>
parents: 12924
diff changeset
439 }
2ebc3df65ca2 patch 8.0.1343: MS-Windows: does not show colored emojis
Christian Brabandt <cb@256bit.org>
parents: 12924
diff changeset
440 #endif
2ebc3df65ca2 patch 8.0.1343: MS-Windows: does not show colored emojis
Christian Brabandt <cb@256bit.org>
parents: 12924
diff changeset
441
18788
e1f4e9d78a6a patch 8.1.2383: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents: 18773
diff changeset
442 extern int current_font_height; // this is in os_mswin.c
8140
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
443
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
444 static struct
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
445 {
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
446 UINT key_sym;
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
447 char_u vim_code0;
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
448 char_u vim_code1;
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
449 } special_keys[] =
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
450 {
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
451 {VK_UP, 'k', 'u'},
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
452 {VK_DOWN, 'k', 'd'},
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
453 {VK_LEFT, 'k', 'l'},
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
454 {VK_RIGHT, 'k', 'r'},
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
455
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
456 {VK_F1, 'k', '1'},
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
457 {VK_F2, 'k', '2'},
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
458 {VK_F3, 'k', '3'},
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
459 {VK_F4, 'k', '4'},
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
460 {VK_F5, 'k', '5'},
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
461 {VK_F6, 'k', '6'},
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
462 {VK_F7, 'k', '7'},
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
463 {VK_F8, 'k', '8'},
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
464 {VK_F9, 'k', '9'},
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
465 {VK_F10, 'k', ';'},
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
466
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
467 {VK_F11, 'F', '1'},
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
468 {VK_F12, 'F', '2'},
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
469 {VK_F13, 'F', '3'},
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
470 {VK_F14, 'F', '4'},
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
471 {VK_F15, 'F', '5'},
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
472 {VK_F16, 'F', '6'},
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
473 {VK_F17, 'F', '7'},
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
474 {VK_F18, 'F', '8'},
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
475 {VK_F19, 'F', '9'},
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
476 {VK_F20, 'F', 'A'},
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
477
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
478 {VK_F21, 'F', 'B'},
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
479 #ifdef FEAT_NETBEANS_INTG
18788
e1f4e9d78a6a patch 8.1.2383: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents: 18773
diff changeset
480 {VK_PAUSE, 'F', 'B'}, // Pause == F21 (see gui_gtk_x11.c)
8140
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
481 #endif
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
482 {VK_F22, 'F', 'C'},
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
483 {VK_F23, 'F', 'D'},
18788
e1f4e9d78a6a patch 8.1.2383: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents: 18773
diff changeset
484 {VK_F24, 'F', 'E'}, // winuser.h defines up to F24
8140
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
485
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
486 {VK_HELP, '%', '1'},
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
487 {VK_BACK, 'k', 'b'},
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
488 {VK_INSERT, 'k', 'I'},
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
489 {VK_DELETE, 'k', 'D'},
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
490 {VK_HOME, 'k', 'h'},
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
491 {VK_END, '@', '7'},
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
492 {VK_PRIOR, 'k', 'P'},
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
493 {VK_NEXT, 'k', 'N'},
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
494 {VK_PRINT, '%', '9'},
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
495 {VK_ADD, 'K', '6'},
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
496 {VK_SUBTRACT, 'K', '7'},
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
497 {VK_DIVIDE, 'K', '8'},
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
498 {VK_MULTIPLY, 'K', '9'},
18788
e1f4e9d78a6a patch 8.1.2383: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents: 18773
diff changeset
499 {VK_SEPARATOR, 'K', 'A'}, // Keypad Enter
8140
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
500 {VK_DECIMAL, 'K', 'B'},
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
501
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
502 {VK_NUMPAD0, 'K', 'C'},
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
503 {VK_NUMPAD1, 'K', 'D'},
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
504 {VK_NUMPAD2, 'K', 'E'},
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
505 {VK_NUMPAD3, 'K', 'F'},
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
506 {VK_NUMPAD4, 'K', 'G'},
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
507 {VK_NUMPAD5, 'K', 'H'},
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
508 {VK_NUMPAD6, 'K', 'I'},
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
509 {VK_NUMPAD7, 'K', 'J'},
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
510 {VK_NUMPAD8, 'K', 'K'},
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
511 {VK_NUMPAD9, 'K', 'L'},
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
512
18788
e1f4e9d78a6a patch 8.1.2383: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents: 18773
diff changeset
513 // Keys that we want to be able to use any modifier with:
8140
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
514 {VK_SPACE, ' ', NUL},
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
515 {VK_TAB, TAB, NUL},
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
516 {VK_ESCAPE, ESC, NUL},
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
517 {NL, NL, NUL},
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
518 {CAR, CAR, NUL},
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
519
18788
e1f4e9d78a6a patch 8.1.2383: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents: 18773
diff changeset
520 // End of list marker:
8140
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
521 {0, 0, 0}
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
522 };
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
523
18788
e1f4e9d78a6a patch 8.1.2383: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents: 18773
diff changeset
524 // Local variables
8140
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
525 static int s_button_pending = -1;
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
526
18788
e1f4e9d78a6a patch 8.1.2383: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents: 18773
diff changeset
527 // s_getting_focus is set when we got focus but didn't see mouse-up event yet,
e1f4e9d78a6a patch 8.1.2383: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents: 18773
diff changeset
528 // so don't reset s_button_pending.
8140
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
529 static int s_getting_focus = FALSE;
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
530
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
531 static int s_x_pending;
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
532 static int s_y_pending;
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
533 static UINT s_kFlags_pending;
27525
27694b525305 patch 8.2.4290: MS-Windows: using type casts for timer IDs
Bram Moolenaar <Bram@vim.org>
parents: 27455
diff changeset
534 static UINT_PTR s_wait_timer = 0; // Timer for get char from user
8140
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
535 static int s_timed_out = FALSE;
13766
74294f0fbf28 patch 8.0.1755: MS-Windows: high unicode char received as two utf-16 words
Christian Brabandt <cb@256bit.org>
parents: 13244
diff changeset
536 static int dead_key = 0; // 0: no dead key, 1: dead key pressed
74294f0fbf28 patch 8.0.1755: MS-Windows: high unicode char received as two utf-16 words
Christian Brabandt <cb@256bit.org>
parents: 13244
diff changeset
537 static UINT surrogate_pending_ch = 0; // 0: no surrogate pending,
74294f0fbf28 patch 8.0.1755: MS-Windows: high unicode char received as two utf-16 words
Christian Brabandt <cb@256bit.org>
parents: 13244
diff changeset
538 // else a high surrogate
8140
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
539
12871
1a450ce6980c patch 8.0.1312: balloon_show() only works in terminal when compiled with GUI
Christian Brabandt <cb@256bit.org>
parents: 12802
diff changeset
540 #ifdef FEAT_BEVAL_GUI
18788
e1f4e9d78a6a patch 8.1.2383: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents: 18773
diff changeset
541 // balloon-eval WM_NOTIFY_HANDLER
8140
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
542 static void Handle_WM_Notify(HWND hwnd, LPNMHDR pnmh);
27525
27694b525305 patch 8.2.4290: MS-Windows: using type casts for timer IDs
Bram Moolenaar <Bram@vim.org>
parents: 27455
diff changeset
543 static void track_user_activity(UINT uMsg);
8140
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
544 #endif
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
545
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
546 /*
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
547 * For control IME.
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
548 *
16152
8f4eccaaf2c0 patch 8.1.1081: MS-Windows: cannot use some fonts
Bram Moolenaar <Bram@vim.org>
parents: 16123
diff changeset
549 * These LOGFONTW used for IME.
8140
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
550 */
27249
d5570658f18d patch 8.2.4153: MS-Windows: Global IME is no longer supported
Bram Moolenaar <Bram@vim.org>
parents: 27229
diff changeset
551 #ifdef FEAT_MBYTE_IME
18788
e1f4e9d78a6a patch 8.1.2383: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents: 18773
diff changeset
552 // holds LOGFONTW for 'guifontwide' if available, otherwise 'guifont'
16152
8f4eccaaf2c0 patch 8.1.1081: MS-Windows: cannot use some fonts
Bram Moolenaar <Bram@vim.org>
parents: 16123
diff changeset
553 static LOGFONTW norm_logfont;
18788
e1f4e9d78a6a patch 8.1.2383: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents: 18773
diff changeset
554 // holds LOGFONTW for 'guifont' always.
16152
8f4eccaaf2c0 patch 8.1.1081: MS-Windows: cannot use some fonts
Bram Moolenaar <Bram@vim.org>
parents: 16123
diff changeset
555 static LOGFONTW sub_logfont;
8140
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
556 #endif
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
557
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
558 #ifdef FEAT_MBYTE_IME
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
559 static LRESULT _OnImeNotify(HWND hWnd, DWORD dwCommand, DWORD dwData);
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
560 #endif
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
561
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
562 #if defined(FEAT_BROWSE)
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
563 static char_u *convert_filter(char_u *s);
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
564 #endif
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
565
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
566 #ifdef DEBUG_PRINT_ERROR
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
567 /*
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
568 * Print out the last Windows error message
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
569 */
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
570 static void
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
571 print_windows_error(void)
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
572 {
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
573 LPVOID lpMsgBuf;
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
574
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
575 FormatMessage(FORMAT_MESSAGE_ALLOCATE_BUFFER | FORMAT_MESSAGE_FROM_SYSTEM,
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
576 NULL, GetLastError(),
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
577 MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT),
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
578 (LPTSTR) &lpMsgBuf, 0, NULL);
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
579 TRACE1("Error: %s\n", lpMsgBuf);
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
580 LocalFree(lpMsgBuf);
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
581 }
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
582 #endif
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
583
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
584 /*
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
585 * Cursor blink functions.
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
586 *
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
587 * This is a simple state machine:
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
588 * BLINK_NONE not blinking at all
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
589 * BLINK_OFF blinking, cursor is not shown
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
590 * BLINK_ON blinking, cursor is shown
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
591 */
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
592
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
593 #define BLINK_NONE 0
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
594 #define BLINK_OFF 1
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
595 #define BLINK_ON 2
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
596
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
597 static int blink_state = BLINK_NONE;
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
598 static long_u blink_waittime = 700;
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
599 static long_u blink_ontime = 400;
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
600 static long_u blink_offtime = 250;
27525
27694b525305 patch 8.2.4290: MS-Windows: using type casts for timer IDs
Bram Moolenaar <Bram@vim.org>
parents: 27455
diff changeset
601 static UINT_PTR blink_timer = 0;
8140
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
602
9213
bb86514cad15 commit https://github.com/vim/vim/commit/703a8044b5393d37d355b0b1054a9a5a13912a3f
Christian Brabandt <cb@256bit.org>
parents: 9181
diff changeset
603 int
bb86514cad15 commit https://github.com/vim/vim/commit/703a8044b5393d37d355b0b1054a9a5a13912a3f
Christian Brabandt <cb@256bit.org>
parents: 9181
diff changeset
604 gui_mch_is_blinking(void)
bb86514cad15 commit https://github.com/vim/vim/commit/703a8044b5393d37d355b0b1054a9a5a13912a3f
Christian Brabandt <cb@256bit.org>
parents: 9181
diff changeset
605 {
bb86514cad15 commit https://github.com/vim/vim/commit/703a8044b5393d37d355b0b1054a9a5a13912a3f
Christian Brabandt <cb@256bit.org>
parents: 9181
diff changeset
606 return blink_state != BLINK_NONE;
bb86514cad15 commit https://github.com/vim/vim/commit/703a8044b5393d37d355b0b1054a9a5a13912a3f
Christian Brabandt <cb@256bit.org>
parents: 9181
diff changeset
607 }
bb86514cad15 commit https://github.com/vim/vim/commit/703a8044b5393d37d355b0b1054a9a5a13912a3f
Christian Brabandt <cb@256bit.org>
parents: 9181
diff changeset
608
9428
0c7f47088e55 commit https://github.com/vim/vim/commit/9d5d3c9c4468ad76f16b50eabd3d9e7eab2ed44d
Christian Brabandt <cb@256bit.org>
parents: 9252
diff changeset
609 int
0c7f47088e55 commit https://github.com/vim/vim/commit/9d5d3c9c4468ad76f16b50eabd3d9e7eab2ed44d
Christian Brabandt <cb@256bit.org>
parents: 9252
diff changeset
610 gui_mch_is_blink_off(void)
0c7f47088e55 commit https://github.com/vim/vim/commit/9d5d3c9c4468ad76f16b50eabd3d9e7eab2ed44d
Christian Brabandt <cb@256bit.org>
parents: 9252
diff changeset
611 {
0c7f47088e55 commit https://github.com/vim/vim/commit/9d5d3c9c4468ad76f16b50eabd3d9e7eab2ed44d
Christian Brabandt <cb@256bit.org>
parents: 9252
diff changeset
612 return blink_state == BLINK_OFF;
0c7f47088e55 commit https://github.com/vim/vim/commit/9d5d3c9c4468ad76f16b50eabd3d9e7eab2ed44d
Christian Brabandt <cb@256bit.org>
parents: 9252
diff changeset
613 }
0c7f47088e55 commit https://github.com/vim/vim/commit/9d5d3c9c4468ad76f16b50eabd3d9e7eab2ed44d
Christian Brabandt <cb@256bit.org>
parents: 9252
diff changeset
614
8140
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
615 void
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
616 gui_mch_set_blinking(long wait, long on, long off)
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
617 {
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
618 blink_waittime = wait;
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
619 blink_ontime = on;
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
620 blink_offtime = off;
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
621 }
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
622
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
623 static VOID CALLBACK
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
624 _OnBlinkTimer(
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
625 HWND hwnd,
10783
04eb70c77cf4 patch 8.0.0281: some files are still using ARGSUSED instead of UNUSED
Christian Brabandt <cb@256bit.org>
parents: 10440
diff changeset
626 UINT uMsg UNUSED,
27525
27694b525305 patch 8.2.4290: MS-Windows: using type casts for timer IDs
Bram Moolenaar <Bram@vim.org>
parents: 27455
diff changeset
627 UINT_PTR idEvent,
10783
04eb70c77cf4 patch 8.0.0281: some files are still using ARGSUSED instead of UNUSED
Christian Brabandt <cb@256bit.org>
parents: 10440
diff changeset
628 DWORD dwTime UNUSED)
8140
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
629 {
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
630 MSG msg;
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
631
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
632 /*
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
633 TRACE2("Got timer event, id %d, blink_timer %d\n", idEvent, blink_timer);
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
634 */
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
635
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
636 KillTimer(NULL, idEvent);
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
637
18788
e1f4e9d78a6a patch 8.1.2383: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents: 18773
diff changeset
638 // Eat spurious WM_TIMER messages
27283
b4d92a69035b patch 8.2.4170: MS-Windows: still using old message API calls
Bram Moolenaar <Bram@vim.org>
parents: 27281
diff changeset
639 while (PeekMessageW(&msg, hwnd, WM_TIMER, WM_TIMER, PM_REMOVE))
8140
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
640 ;
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
641
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
642 if (blink_state == BLINK_ON)
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
643 {
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
644 gui_undraw_cursor();
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
645 blink_state = BLINK_OFF;
27525
27694b525305 patch 8.2.4290: MS-Windows: using type casts for timer IDs
Bram Moolenaar <Bram@vim.org>
parents: 27455
diff changeset
646 blink_timer = SetTimer(NULL, 0, (UINT)blink_offtime, _OnBlinkTimer);
8140
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
647 }
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
648 else
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
649 {
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
650 gui_update_cursor(TRUE, FALSE);
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
651 blink_state = BLINK_ON;
27525
27694b525305 patch 8.2.4290: MS-Windows: using type casts for timer IDs
Bram Moolenaar <Bram@vim.org>
parents: 27455
diff changeset
652 blink_timer = SetTimer(NULL, 0, (UINT)blink_ontime, _OnBlinkTimer);
8140
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
653 }
12986
18e6f4addce9 patch 8.0.1369: MS-Windows: drawing underline slow, mFallbackDC not updated
Christian Brabandt <cb@256bit.org>
parents: 12950
diff changeset
654 gui_mch_flush();
8140
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
655 }
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
656
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
657 static void
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
658 gui_mswin_rm_blink_timer(void)
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
659 {
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
660 MSG msg;
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
661
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
662 if (blink_timer != 0)
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
663 {
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
664 KillTimer(NULL, blink_timer);
18788
e1f4e9d78a6a patch 8.1.2383: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents: 18773
diff changeset
665 // Eat spurious WM_TIMER messages
27283
b4d92a69035b patch 8.2.4170: MS-Windows: still using old message API calls
Bram Moolenaar <Bram@vim.org>
parents: 27281
diff changeset
666 while (PeekMessageW(&msg, s_hwnd, WM_TIMER, WM_TIMER, PM_REMOVE))
8140
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
667 ;
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
668 blink_timer = 0;
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
669 }
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
670 }
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
671
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
672 /*
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
673 * Stop the cursor blinking. Show the cursor if it wasn't shown.
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
674 */
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
675 void
13152
f4c3a7f410f4 patch 8.0.1450: GUI: endless loop when stopping cursor blinking
Christian Brabandt <cb@256bit.org>
parents: 13150
diff changeset
676 gui_mch_stop_blink(int may_call_gui_update_cursor)
8140
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
677 {
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
678 gui_mswin_rm_blink_timer();
13152
f4c3a7f410f4 patch 8.0.1450: GUI: endless loop when stopping cursor blinking
Christian Brabandt <cb@256bit.org>
parents: 13150
diff changeset
679 if (blink_state == BLINK_OFF && may_call_gui_update_cursor)
12986
18e6f4addce9 patch 8.0.1369: MS-Windows: drawing underline slow, mFallbackDC not updated
Christian Brabandt <cb@256bit.org>
parents: 12950
diff changeset
680 {
8140
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
681 gui_update_cursor(TRUE, FALSE);
12986
18e6f4addce9 patch 8.0.1369: MS-Windows: drawing underline slow, mFallbackDC not updated
Christian Brabandt <cb@256bit.org>
parents: 12950
diff changeset
682 gui_mch_flush();
18e6f4addce9 patch 8.0.1369: MS-Windows: drawing underline slow, mFallbackDC not updated
Christian Brabandt <cb@256bit.org>
parents: 12950
diff changeset
683 }
8140
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
684 blink_state = BLINK_NONE;
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
685 }
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
686
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
687 /*
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
688 * Start the cursor blinking. If it was already blinking, this restarts the
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
689 * waiting time and shows the cursor.
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
690 */
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
691 void
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
692 gui_mch_start_blink(void)
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
693 {
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
694 gui_mswin_rm_blink_timer();
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
695
18788
e1f4e9d78a6a patch 8.1.2383: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents: 18773
diff changeset
696 // Only switch blinking on if none of the times is zero
8140
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
697 if (blink_waittime && blink_ontime && blink_offtime && gui.in_focus)
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
698 {
27525
27694b525305 patch 8.2.4290: MS-Windows: using type casts for timer IDs
Bram Moolenaar <Bram@vim.org>
parents: 27455
diff changeset
699 blink_timer = SetTimer(NULL, 0, (UINT)blink_waittime, _OnBlinkTimer);
8140
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
700 blink_state = BLINK_ON;
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
701 gui_update_cursor(TRUE, FALSE);
12986
18e6f4addce9 patch 8.0.1369: MS-Windows: drawing underline slow, mFallbackDC not updated
Christian Brabandt <cb@256bit.org>
parents: 12950
diff changeset
702 gui_mch_flush();
8140
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
703 }
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
704 }
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
705
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
706 /*
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
707 * Call-back routines.
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
708 */
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
709
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
710 static VOID CALLBACK
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
711 _OnTimer(
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
712 HWND hwnd,
10783
04eb70c77cf4 patch 8.0.0281: some files are still using ARGSUSED instead of UNUSED
Christian Brabandt <cb@256bit.org>
parents: 10440
diff changeset
713 UINT uMsg UNUSED,
27525
27694b525305 patch 8.2.4290: MS-Windows: using type casts for timer IDs
Bram Moolenaar <Bram@vim.org>
parents: 27455
diff changeset
714 UINT_PTR idEvent,
10783
04eb70c77cf4 patch 8.0.0281: some files are still using ARGSUSED instead of UNUSED
Christian Brabandt <cb@256bit.org>
parents: 10440
diff changeset
715 DWORD dwTime UNUSED)
8140
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
716 {
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
717 MSG msg;
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
718
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
719 /*
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
720 TRACE2("Got timer event, id %d, s_wait_timer %d\n", idEvent, s_wait_timer);
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
721 */
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
722 KillTimer(NULL, idEvent);
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
723 s_timed_out = TRUE;
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
724
18788
e1f4e9d78a6a patch 8.1.2383: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents: 18773
diff changeset
725 // Eat spurious WM_TIMER messages
27283
b4d92a69035b patch 8.2.4170: MS-Windows: still using old message API calls
Bram Moolenaar <Bram@vim.org>
parents: 27281
diff changeset
726 while (PeekMessageW(&msg, hwnd, WM_TIMER, WM_TIMER, PM_REMOVE))
8140
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
727 ;
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
728 if (idEvent == s_wait_timer)
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
729 s_wait_timer = 0;
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
730 }
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
731
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
732 static void
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
733 _OnDeadChar(
10783
04eb70c77cf4 patch 8.0.0281: some files are still using ARGSUSED instead of UNUSED
Christian Brabandt <cb@256bit.org>
parents: 10440
diff changeset
734 HWND hwnd UNUSED,
04eb70c77cf4 patch 8.0.0281: some files are still using ARGSUSED instead of UNUSED
Christian Brabandt <cb@256bit.org>
parents: 10440
diff changeset
735 UINT ch UNUSED,
04eb70c77cf4 patch 8.0.0281: some files are still using ARGSUSED instead of UNUSED
Christian Brabandt <cb@256bit.org>
parents: 10440
diff changeset
736 int cRepeat UNUSED)
8140
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
737 {
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
738 dead_key = 1;
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
739 }
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
740
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
741 /*
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
742 * Convert Unicode character "ch" to bytes in "string[slen]".
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
743 * When "had_alt" is TRUE the ALT key was included in "ch".
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
744 * Return the length.
13766
74294f0fbf28 patch 8.0.1755: MS-Windows: high unicode char received as two utf-16 words
Christian Brabandt <cb@256bit.org>
parents: 13244
diff changeset
745 * Because the Windows API uses UTF-16, we have to deal with surrogate
74294f0fbf28 patch 8.0.1755: MS-Windows: high unicode char received as two utf-16 words
Christian Brabandt <cb@256bit.org>
parents: 13244
diff changeset
746 * pairs; this is where we choose to deal with them: if "ch" is a high
74294f0fbf28 patch 8.0.1755: MS-Windows: high unicode char received as two utf-16 words
Christian Brabandt <cb@256bit.org>
parents: 13244
diff changeset
747 * surrogate, it will be stored, and the length returned will be zero; the next
74294f0fbf28 patch 8.0.1755: MS-Windows: high unicode char received as two utf-16 words
Christian Brabandt <cb@256bit.org>
parents: 13244
diff changeset
748 * char_to_string call will then include the high surrogate, decoding the pair
74294f0fbf28 patch 8.0.1755: MS-Windows: high unicode char received as two utf-16 words
Christian Brabandt <cb@256bit.org>
parents: 13244
diff changeset
749 * of UTF-16 code units to a single Unicode code point, presuming it is the
74294f0fbf28 patch 8.0.1755: MS-Windows: high unicode char received as two utf-16 words
Christian Brabandt <cb@256bit.org>
parents: 13244
diff changeset
750 * matching low surrogate.
8140
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
751 */
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
752 static int
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
753 char_to_string(int ch, char_u *string, int slen, int had_alt)
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
754 {
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
755 int len;
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
756 int i;
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
757 WCHAR wstring[2];
9252
c25898cc99c1 commit https://github.com/vim/vim/commit/945ec093cd4ddefab930239990564b12eb232153
Christian Brabandt <cb@256bit.org>
parents: 9236
diff changeset
758 char_u *ws = NULL;
8140
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
759
13766
74294f0fbf28 patch 8.0.1755: MS-Windows: high unicode char received as two utf-16 words
Christian Brabandt <cb@256bit.org>
parents: 13244
diff changeset
760 if (surrogate_pending_ch != 0)
74294f0fbf28 patch 8.0.1755: MS-Windows: high unicode char received as two utf-16 words
Christian Brabandt <cb@256bit.org>
parents: 13244
diff changeset
761 {
18788
e1f4e9d78a6a patch 8.1.2383: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents: 18773
diff changeset
762 // We don't guarantee ch is a low surrogate to match the high surrogate
e1f4e9d78a6a patch 8.1.2383: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents: 18773
diff changeset
763 // we already have; it should be, but if it isn't, tough luck.
13766
74294f0fbf28 patch 8.0.1755: MS-Windows: high unicode char received as two utf-16 words
Christian Brabandt <cb@256bit.org>
parents: 13244
diff changeset
764 wstring[0] = surrogate_pending_ch;
74294f0fbf28 patch 8.0.1755: MS-Windows: high unicode char received as two utf-16 words
Christian Brabandt <cb@256bit.org>
parents: 13244
diff changeset
765 wstring[1] = ch;
74294f0fbf28 patch 8.0.1755: MS-Windows: high unicode char received as two utf-16 words
Christian Brabandt <cb@256bit.org>
parents: 13244
diff changeset
766 surrogate_pending_ch = 0;
74294f0fbf28 patch 8.0.1755: MS-Windows: high unicode char received as two utf-16 words
Christian Brabandt <cb@256bit.org>
parents: 13244
diff changeset
767 len = 2;
74294f0fbf28 patch 8.0.1755: MS-Windows: high unicode char received as two utf-16 words
Christian Brabandt <cb@256bit.org>
parents: 13244
diff changeset
768 }
18788
e1f4e9d78a6a patch 8.1.2383: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents: 18773
diff changeset
769 else if (ch >= 0xD800 && ch <= 0xDBFF) // high surrogate
e1f4e9d78a6a patch 8.1.2383: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents: 18773
diff changeset
770 {
e1f4e9d78a6a patch 8.1.2383: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents: 18773
diff changeset
771 // We don't have the entire code point yet, only the first UTF-16 code
e1f4e9d78a6a patch 8.1.2383: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents: 18773
diff changeset
772 // unit; so just remember it and use it in the next call.
13766
74294f0fbf28 patch 8.0.1755: MS-Windows: high unicode char received as two utf-16 words
Christian Brabandt <cb@256bit.org>
parents: 13244
diff changeset
773 surrogate_pending_ch = ch;
74294f0fbf28 patch 8.0.1755: MS-Windows: high unicode char received as two utf-16 words
Christian Brabandt <cb@256bit.org>
parents: 13244
diff changeset
774 return 0;
74294f0fbf28 patch 8.0.1755: MS-Windows: high unicode char received as two utf-16 words
Christian Brabandt <cb@256bit.org>
parents: 13244
diff changeset
775 }
74294f0fbf28 patch 8.0.1755: MS-Windows: high unicode char received as two utf-16 words
Christian Brabandt <cb@256bit.org>
parents: 13244
diff changeset
776 else
74294f0fbf28 patch 8.0.1755: MS-Windows: high unicode char received as two utf-16 words
Christian Brabandt <cb@256bit.org>
parents: 13244
diff changeset
777 {
74294f0fbf28 patch 8.0.1755: MS-Windows: high unicode char received as two utf-16 words
Christian Brabandt <cb@256bit.org>
parents: 13244
diff changeset
778 wstring[0] = ch;
74294f0fbf28 patch 8.0.1755: MS-Windows: high unicode char received as two utf-16 words
Christian Brabandt <cb@256bit.org>
parents: 13244
diff changeset
779 len = 1;
74294f0fbf28 patch 8.0.1755: MS-Windows: high unicode char received as two utf-16 words
Christian Brabandt <cb@256bit.org>
parents: 13244
diff changeset
780 }
10264
c036c0f636d5 commit https://github.com/vim/vim/commit/cea912af725c54f4727a0565e31661f6b29c6bb1
Christian Brabandt <cb@256bit.org>
parents: 10042
diff changeset
781
18788
e1f4e9d78a6a patch 8.1.2383: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents: 18773
diff changeset
782 // "ch" is a UTF-16 character. Convert it to a string of bytes. When
e1f4e9d78a6a patch 8.1.2383: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents: 18773
diff changeset
783 // "enc_codepage" is non-zero use the standard Win32 function,
e1f4e9d78a6a patch 8.1.2383: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents: 18773
diff changeset
784 // otherwise use our own conversion function (e.g., for UTF-8).
10264
c036c0f636d5 commit https://github.com/vim/vim/commit/cea912af725c54f4727a0565e31661f6b29c6bb1
Christian Brabandt <cb@256bit.org>
parents: 10042
diff changeset
785 if (enc_codepage > 0)
c036c0f636d5 commit https://github.com/vim/vim/commit/cea912af725c54f4727a0565e31661f6b29c6bb1
Christian Brabandt <cb@256bit.org>
parents: 10042
diff changeset
786 {
c036c0f636d5 commit https://github.com/vim/vim/commit/cea912af725c54f4727a0565e31661f6b29c6bb1
Christian Brabandt <cb@256bit.org>
parents: 10042
diff changeset
787 len = WideCharToMultiByte(enc_codepage, 0, wstring, len,
c036c0f636d5 commit https://github.com/vim/vim/commit/cea912af725c54f4727a0565e31661f6b29c6bb1
Christian Brabandt <cb@256bit.org>
parents: 10042
diff changeset
788 (LPSTR)string, slen, 0, NULL);
18788
e1f4e9d78a6a patch 8.1.2383: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents: 18773
diff changeset
789 // If we had included the ALT key into the character but now the
e1f4e9d78a6a patch 8.1.2383: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents: 18773
diff changeset
790 // upper bit is no longer set, that probably means the conversion
e1f4e9d78a6a patch 8.1.2383: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents: 18773
diff changeset
791 // failed. Convert the original character and set the upper bit
e1f4e9d78a6a patch 8.1.2383: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents: 18773
diff changeset
792 // afterwards.
10264
c036c0f636d5 commit https://github.com/vim/vim/commit/cea912af725c54f4727a0565e31661f6b29c6bb1
Christian Brabandt <cb@256bit.org>
parents: 10042
diff changeset
793 if (had_alt && len == 1 && ch >= 0x80 && string[0] < 0x80)
c036c0f636d5 commit https://github.com/vim/vim/commit/cea912af725c54f4727a0565e31661f6b29c6bb1
Christian Brabandt <cb@256bit.org>
parents: 10042
diff changeset
794 {
c036c0f636d5 commit https://github.com/vim/vim/commit/cea912af725c54f4727a0565e31661f6b29c6bb1
Christian Brabandt <cb@256bit.org>
parents: 10042
diff changeset
795 wstring[0] = ch & 0x7f;
c036c0f636d5 commit https://github.com/vim/vim/commit/cea912af725c54f4727a0565e31661f6b29c6bb1
Christian Brabandt <cb@256bit.org>
parents: 10042
diff changeset
796 len = WideCharToMultiByte(enc_codepage, 0, wstring, len,
c036c0f636d5 commit https://github.com/vim/vim/commit/cea912af725c54f4727a0565e31661f6b29c6bb1
Christian Brabandt <cb@256bit.org>
parents: 10042
diff changeset
797 (LPSTR)string, slen, 0, NULL);
18788
e1f4e9d78a6a patch 8.1.2383: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents: 18773
diff changeset
798 if (len == 1) // safety check
10264
c036c0f636d5 commit https://github.com/vim/vim/commit/cea912af725c54f4727a0565e31661f6b29c6bb1
Christian Brabandt <cb@256bit.org>
parents: 10042
diff changeset
799 string[0] |= 0x80;
8140
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
800 }
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
801 }
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
802 else
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
803 {
10264
c036c0f636d5 commit https://github.com/vim/vim/commit/cea912af725c54f4727a0565e31661f6b29c6bb1
Christian Brabandt <cb@256bit.org>
parents: 10042
diff changeset
804 ws = utf16_to_enc(wstring, &len);
c036c0f636d5 commit https://github.com/vim/vim/commit/cea912af725c54f4727a0565e31661f6b29c6bb1
Christian Brabandt <cb@256bit.org>
parents: 10042
diff changeset
805 if (ws == NULL)
c036c0f636d5 commit https://github.com/vim/vim/commit/cea912af725c54f4727a0565e31661f6b29c6bb1
Christian Brabandt <cb@256bit.org>
parents: 10042
diff changeset
806 len = 0;
8140
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
807 else
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
808 {
18788
e1f4e9d78a6a patch 8.1.2383: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents: 18773
diff changeset
809 if (len > slen) // just in case
10264
c036c0f636d5 commit https://github.com/vim/vim/commit/cea912af725c54f4727a0565e31661f6b29c6bb1
Christian Brabandt <cb@256bit.org>
parents: 10042
diff changeset
810 len = slen;
c036c0f636d5 commit https://github.com/vim/vim/commit/cea912af725c54f4727a0565e31661f6b29c6bb1
Christian Brabandt <cb@256bit.org>
parents: 10042
diff changeset
811 mch_memmove(string, ws, len);
c036c0f636d5 commit https://github.com/vim/vim/commit/cea912af725c54f4727a0565e31661f6b29c6bb1
Christian Brabandt <cb@256bit.org>
parents: 10042
diff changeset
812 vim_free(ws);
8140
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
813 }
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
814 }
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
815
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
816 if (len == 0)
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
817 {
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
818 string[0] = ch;
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
819 len = 1;
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
820 }
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
821
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
822 for (i = 0; i < len; ++i)
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
823 if (string[i] == CSI && len <= slen - 2)
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
824 {
18788
e1f4e9d78a6a patch 8.1.2383: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents: 18773
diff changeset
825 // Insert CSI as K_CSI.
8140
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
826 mch_memmove(string + i + 3, string + i + 1, len - i - 1);
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
827 string[++i] = KS_EXTRA;
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
828 string[++i] = (int)KE_CSI;
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
829 len += 2;
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
830 }
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
831
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
832 return len;
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
833 }
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
834
28586
3fd992496509 patch 8.2.4817: Win32 GUI: modifiers are not always used
Bram Moolenaar <Bram@vim.org>
parents: 28574
diff changeset
835 static int
3fd992496509 patch 8.2.4817: Win32 GUI: modifiers are not always used
Bram Moolenaar <Bram@vim.org>
parents: 28574
diff changeset
836 get_active_modifiers(void)
3fd992496509 patch 8.2.4817: Win32 GUI: modifiers are not always used
Bram Moolenaar <Bram@vim.org>
parents: 28574
diff changeset
837 {
3fd992496509 patch 8.2.4817: Win32 GUI: modifiers are not always used
Bram Moolenaar <Bram@vim.org>
parents: 28574
diff changeset
838 int modifiers = 0;
3fd992496509 patch 8.2.4817: Win32 GUI: modifiers are not always used
Bram Moolenaar <Bram@vim.org>
parents: 28574
diff changeset
839
3fd992496509 patch 8.2.4817: Win32 GUI: modifiers are not always used
Bram Moolenaar <Bram@vim.org>
parents: 28574
diff changeset
840 if (GetKeyState(VK_CONTROL) & 0x8000)
3fd992496509 patch 8.2.4817: Win32 GUI: modifiers are not always used
Bram Moolenaar <Bram@vim.org>
parents: 28574
diff changeset
841 modifiers |= MOD_MASK_CTRL;
3fd992496509 patch 8.2.4817: Win32 GUI: modifiers are not always used
Bram Moolenaar <Bram@vim.org>
parents: 28574
diff changeset
842 if (GetKeyState(VK_SHIFT) & 0x8000)
3fd992496509 patch 8.2.4817: Win32 GUI: modifiers are not always used
Bram Moolenaar <Bram@vim.org>
parents: 28574
diff changeset
843 modifiers |= MOD_MASK_SHIFT;
28639
8ea5468f9b5a patch 8.2.4843: treating CTRL + ALT as AltGr is not backwards compatible
Bram Moolenaar <Bram@vim.org>
parents: 28586
diff changeset
844 // Windows handles Ctrl + Alt as AltGr and vice-versa. We can distinguish
8ea5468f9b5a patch 8.2.4843: treating CTRL + ALT as AltGr is not backwards compatible
Bram Moolenaar <Bram@vim.org>
parents: 28586
diff changeset
845 // the two cases by checking whether the left or the right Alt key is
28586
3fd992496509 patch 8.2.4817: Win32 GUI: modifiers are not always used
Bram Moolenaar <Bram@vim.org>
parents: 28574
diff changeset
846 // pressed.
28639
8ea5468f9b5a patch 8.2.4843: treating CTRL + ALT as AltGr is not backwards compatible
Bram Moolenaar <Bram@vim.org>
parents: 28586
diff changeset
847 if (GetKeyState(VK_LMENU) & 0x8000)
8ea5468f9b5a patch 8.2.4843: treating CTRL + ALT as AltGr is not backwards compatible
Bram Moolenaar <Bram@vim.org>
parents: 28586
diff changeset
848 modifiers |= MOD_MASK_ALT;
8ea5468f9b5a patch 8.2.4843: treating CTRL + ALT as AltGr is not backwards compatible
Bram Moolenaar <Bram@vim.org>
parents: 28586
diff changeset
849 if ((modifiers & MOD_MASK_CTRL) && (GetKeyState(VK_RMENU) & 0x8000))
8ea5468f9b5a patch 8.2.4843: treating CTRL + ALT as AltGr is not backwards compatible
Bram Moolenaar <Bram@vim.org>
parents: 28586
diff changeset
850 modifiers &= ~MOD_MASK_CTRL;
28586
3fd992496509 patch 8.2.4817: Win32 GUI: modifiers are not always used
Bram Moolenaar <Bram@vim.org>
parents: 28574
diff changeset
851
3fd992496509 patch 8.2.4817: Win32 GUI: modifiers are not always used
Bram Moolenaar <Bram@vim.org>
parents: 28574
diff changeset
852 return modifiers;
3fd992496509 patch 8.2.4817: Win32 GUI: modifiers are not always used
Bram Moolenaar <Bram@vim.org>
parents: 28574
diff changeset
853 }
3fd992496509 patch 8.2.4817: Win32 GUI: modifiers are not always used
Bram Moolenaar <Bram@vim.org>
parents: 28574
diff changeset
854
8140
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
855 /*
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
856 * Key hit, add it to the input buffer.
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
857 */
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
858 static void
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
859 _OnChar(
10783
04eb70c77cf4 patch 8.0.0281: some files are still using ARGSUSED instead of UNUSED
Christian Brabandt <cb@256bit.org>
parents: 10440
diff changeset
860 HWND hwnd UNUSED,
28566
893251eed714 patch 8.2.4807: processing key eveints in Win32 GUI is not ideal
Bram Moolenaar <Bram@vim.org>
parents: 28439
diff changeset
861 UINT cch,
10783
04eb70c77cf4 patch 8.0.0281: some files are still using ARGSUSED instead of UNUSED
Christian Brabandt <cb@256bit.org>
parents: 10440
diff changeset
862 int cRepeat UNUSED)
8140
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
863 {
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
864 char_u string[40];
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
865 int len = 0;
28586
3fd992496509 patch 8.2.4817: Win32 GUI: modifiers are not always used
Bram Moolenaar <Bram@vim.org>
parents: 28574
diff changeset
866 int modifiers;
28566
893251eed714 patch 8.2.4807: processing key eveints in Win32 GUI is not ideal
Bram Moolenaar <Bram@vim.org>
parents: 28439
diff changeset
867 int ch = cch; // special keys are negative
8140
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
868
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
869 dead_key = 0;
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
870
28586
3fd992496509 patch 8.2.4817: Win32 GUI: modifiers are not always used
Bram Moolenaar <Bram@vim.org>
parents: 28574
diff changeset
871 modifiers = get_active_modifiers();
28566
893251eed714 patch 8.2.4807: processing key eveints in Win32 GUI is not ideal
Bram Moolenaar <Bram@vim.org>
parents: 28439
diff changeset
872
893251eed714 patch 8.2.4807: processing key eveints in Win32 GUI is not ideal
Bram Moolenaar <Bram@vim.org>
parents: 28439
diff changeset
873 ch = simplify_key(ch, &modifiers);
893251eed714 patch 8.2.4807: processing key eveints in Win32 GUI is not ideal
Bram Moolenaar <Bram@vim.org>
parents: 28439
diff changeset
874 // remove the SHIFT modifier for keys where it's already included, e.g.,
893251eed714 patch 8.2.4807: processing key eveints in Win32 GUI is not ideal
Bram Moolenaar <Bram@vim.org>
parents: 28439
diff changeset
875 // '(' and '*'
893251eed714 patch 8.2.4807: processing key eveints in Win32 GUI is not ideal
Bram Moolenaar <Bram@vim.org>
parents: 28439
diff changeset
876 modifiers = may_remove_shift_modifier(modifiers, ch);
893251eed714 patch 8.2.4807: processing key eveints in Win32 GUI is not ideal
Bram Moolenaar <Bram@vim.org>
parents: 28439
diff changeset
877
893251eed714 patch 8.2.4807: processing key eveints in Win32 GUI is not ideal
Bram Moolenaar <Bram@vim.org>
parents: 28439
diff changeset
878 // Unify modifiers somewhat. No longer use ALT to set the 8th bit.
893251eed714 patch 8.2.4807: processing key eveints in Win32 GUI is not ideal
Bram Moolenaar <Bram@vim.org>
parents: 28439
diff changeset
879 ch = extract_modifiers(ch, &modifiers, FALSE, NULL);
893251eed714 patch 8.2.4807: processing key eveints in Win32 GUI is not ideal
Bram Moolenaar <Bram@vim.org>
parents: 28439
diff changeset
880 if (ch == CSI)
893251eed714 patch 8.2.4807: processing key eveints in Win32 GUI is not ideal
Bram Moolenaar <Bram@vim.org>
parents: 28439
diff changeset
881 ch = K_CSI;
893251eed714 patch 8.2.4807: processing key eveints in Win32 GUI is not ideal
Bram Moolenaar <Bram@vim.org>
parents: 28439
diff changeset
882
893251eed714 patch 8.2.4807: processing key eveints in Win32 GUI is not ideal
Bram Moolenaar <Bram@vim.org>
parents: 28439
diff changeset
883 if (modifiers)
893251eed714 patch 8.2.4807: processing key eveints in Win32 GUI is not ideal
Bram Moolenaar <Bram@vim.org>
parents: 28439
diff changeset
884 {
893251eed714 patch 8.2.4807: processing key eveints in Win32 GUI is not ideal
Bram Moolenaar <Bram@vim.org>
parents: 28439
diff changeset
885 string[0] = CSI;
893251eed714 patch 8.2.4807: processing key eveints in Win32 GUI is not ideal
Bram Moolenaar <Bram@vim.org>
parents: 28439
diff changeset
886 string[1] = KS_MODIFIER;
893251eed714 patch 8.2.4807: processing key eveints in Win32 GUI is not ideal
Bram Moolenaar <Bram@vim.org>
parents: 28439
diff changeset
887 string[2] = modifiers;
893251eed714 patch 8.2.4807: processing key eveints in Win32 GUI is not ideal
Bram Moolenaar <Bram@vim.org>
parents: 28439
diff changeset
888 add_to_input_buf(string, 3);
893251eed714 patch 8.2.4807: processing key eveints in Win32 GUI is not ideal
Bram Moolenaar <Bram@vim.org>
parents: 28439
diff changeset
889 }
893251eed714 patch 8.2.4807: processing key eveints in Win32 GUI is not ideal
Bram Moolenaar <Bram@vim.org>
parents: 28439
diff changeset
890
8140
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
891 len = char_to_string(ch, string, 40, FALSE);
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
892 if (len == 1 && string[0] == Ctrl_C && ctrl_c_interrupts)
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
893 {
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
894 trash_input_buf();
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
895 got_int = TRUE;
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
896 }
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
897
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
898 add_to_input_buf(string, len);
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
899 }
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
900
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
901 /*
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
902 * Alt-Key hit, add it to the input buffer.
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
903 */
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
904 static void
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
905 _OnSysChar(
10783
04eb70c77cf4 patch 8.0.0281: some files are still using ARGSUSED instead of UNUSED
Christian Brabandt <cb@256bit.org>
parents: 10440
diff changeset
906 HWND hwnd UNUSED,
8140
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
907 UINT cch,
10783
04eb70c77cf4 patch 8.0.0281: some files are still using ARGSUSED instead of UNUSED
Christian Brabandt <cb@256bit.org>
parents: 10440
diff changeset
908 int cRepeat UNUSED)
8140
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
909 {
18788
e1f4e9d78a6a patch 8.1.2383: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents: 18773
diff changeset
910 char_u string[40]; // Enough for multibyte character
8140
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
911 int len;
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
912 int modifiers;
18788
e1f4e9d78a6a patch 8.1.2383: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents: 18773
diff changeset
913 int ch = cch; // special keys are negative
8140
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
914
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
915 dead_key = 0;
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
916
18788
e1f4e9d78a6a patch 8.1.2383: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents: 18773
diff changeset
917 // OK, we have a character key (given by ch) which was entered with the
e1f4e9d78a6a patch 8.1.2383: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents: 18773
diff changeset
918 // ALT key pressed. Eg, if the user presses Alt-A, then ch == 'A'. Note
e1f4e9d78a6a patch 8.1.2383: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents: 18773
diff changeset
919 // that the system distinguishes Alt-a and Alt-A (Alt-Shift-a unless
e1f4e9d78a6a patch 8.1.2383: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents: 18773
diff changeset
920 // CAPSLOCK is pressed) at this point.
28586
3fd992496509 patch 8.2.4817: Win32 GUI: modifiers are not always used
Bram Moolenaar <Bram@vim.org>
parents: 28574
diff changeset
921 modifiers = get_active_modifiers();
8140
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
922 ch = simplify_key(ch, &modifiers);
18788
e1f4e9d78a6a patch 8.1.2383: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents: 18773
diff changeset
923 // remove the SHIFT modifier for keys where it's already included, e.g.,
e1f4e9d78a6a patch 8.1.2383: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents: 18773
diff changeset
924 // '(' and '*'
22407
c19acd92ee83 patch 8.2.1752: GTK GUI: cannot map alt-? with <A-?>
Bram Moolenaar <Bram@vim.org>
parents: 21363
diff changeset
925 modifiers = may_remove_shift_modifier(modifiers, ch);
8140
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
926
20421
8590a462ad46 patch 8.2.0765: In the GUI can't use all the modifiers.
Bram Moolenaar <Bram@vim.org>
parents: 20007
diff changeset
927 // Unify modifiers somewhat. No longer use ALT to set the 8th bit.
8590a462ad46 patch 8.2.0765: In the GUI can't use all the modifiers.
Bram Moolenaar <Bram@vim.org>
parents: 20007
diff changeset
928 ch = extract_modifiers(ch, &modifiers, FALSE, NULL);
8140
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
929 if (ch == CSI)
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
930 ch = K_CSI;
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
931
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
932 len = 0;
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
933 if (modifiers)
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
934 {
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
935 string[len++] = CSI;
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
936 string[len++] = KS_MODIFIER;
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
937 string[len++] = modifiers;
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
938 }
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
939
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
940 if (IS_SPECIAL((int)ch))
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
941 {
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
942 string[len++] = CSI;
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
943 string[len++] = K_SECOND((int)ch);
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
944 string[len++] = K_THIRD((int)ch);
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
945 }
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
946 else
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
947 {
18788
e1f4e9d78a6a patch 8.1.2383: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents: 18773
diff changeset
948 // Although the documentation isn't clear about it, we assume "ch" is
e1f4e9d78a6a patch 8.1.2383: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents: 18773
diff changeset
949 // a Unicode character.
8140
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
950 len += char_to_string(ch, string + len, 40 - len, TRUE);
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
951 }
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
952
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
953 add_to_input_buf(string, len);
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
954 }
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
955
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
956 static void
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
957 _OnMouseEvent(
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
958 int button,
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
959 int x,
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
960 int y,
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
961 int repeated_click,
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
962 UINT keyFlags)
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
963 {
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
964 int vim_modifiers = 0x0;
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
965
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
966 s_getting_focus = FALSE;
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
967
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
968 if (keyFlags & MK_SHIFT)
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
969 vim_modifiers |= MOUSE_SHIFT;
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
970 if (keyFlags & MK_CONTROL)
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
971 vim_modifiers |= MOUSE_CTRL;
28639
8ea5468f9b5a patch 8.2.4843: treating CTRL + ALT as AltGr is not backwards compatible
Bram Moolenaar <Bram@vim.org>
parents: 28586
diff changeset
972 if (GetKeyState(VK_LMENU) & 0x8000)
8140
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
973 vim_modifiers |= MOUSE_ALT;
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
974
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
975 gui_send_mouse_event(button, x, y, repeated_click, vim_modifiers);
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
976 }
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
977
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
978 static void
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
979 _OnMouseButtonDown(
10783
04eb70c77cf4 patch 8.0.0281: some files are still using ARGSUSED instead of UNUSED
Christian Brabandt <cb@256bit.org>
parents: 10440
diff changeset
980 HWND hwnd UNUSED,
04eb70c77cf4 patch 8.0.0281: some files are still using ARGSUSED instead of UNUSED
Christian Brabandt <cb@256bit.org>
parents: 10440
diff changeset
981 BOOL fDoubleClick UNUSED,
8140
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
982 int x,
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
983 int y,
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
984 UINT keyFlags)
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
985 {
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
986 static LONG s_prevTime = 0;
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
987
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
988 LONG currentTime = GetMessageTime();
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
989 int button = -1;
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
990 int repeated_click;
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
991
18788
e1f4e9d78a6a patch 8.1.2383: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents: 18773
diff changeset
992 // Give main window the focus: this is so the cursor isn't hollow.
8140
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
993 (void)SetFocus(s_hwnd);
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
994
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
995 if (s_uMsg == WM_LBUTTONDOWN || s_uMsg == WM_LBUTTONDBLCLK)
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
996 button = MOUSE_LEFT;
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
997 else if (s_uMsg == WM_MBUTTONDOWN || s_uMsg == WM_MBUTTONDBLCLK)
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
998 button = MOUSE_MIDDLE;
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
999 else if (s_uMsg == WM_RBUTTONDOWN || s_uMsg == WM_RBUTTONDBLCLK)
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
1000 button = MOUSE_RIGHT;
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
1001 else if (s_uMsg == WM_XBUTTONDOWN || s_uMsg == WM_XBUTTONDBLCLK)
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
1002 {
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
1003 button = ((GET_XBUTTON_WPARAM(s_wParam) == 1) ? MOUSE_X1 : MOUSE_X2);
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
1004 }
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
1005 else if (s_uMsg == WM_CAPTURECHANGED)
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
1006 {
18788
e1f4e9d78a6a patch 8.1.2383: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents: 18773
diff changeset
1007 // on W95/NT4, somehow you get in here with an odd Msg
e1f4e9d78a6a patch 8.1.2383: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents: 18773
diff changeset
1008 // if you press one button while holding down the other..
8140
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
1009 if (s_button_pending == MOUSE_LEFT)
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
1010 button = MOUSE_RIGHT;
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
1011 else
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
1012 button = MOUSE_LEFT;
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
1013 }
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
1014 if (button >= 0)
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
1015 {
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
1016 repeated_click = ((int)(currentTime - s_prevTime) < p_mouset);
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
1017
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
1018 /*
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
1019 * Holding down the left and right buttons simulates pushing the middle
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
1020 * button.
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
1021 */
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
1022 if (repeated_click
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
1023 && ((button == MOUSE_LEFT && s_button_pending == MOUSE_RIGHT)
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
1024 || (button == MOUSE_RIGHT
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
1025 && s_button_pending == MOUSE_LEFT)))
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
1026 {
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
1027 /*
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
1028 * Hmm, gui.c will ignore more than one button down at a time, so
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
1029 * pretend we let go of it first.
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
1030 */
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
1031 gui_send_mouse_event(MOUSE_RELEASE, x, y, FALSE, 0x0);
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
1032 button = MOUSE_MIDDLE;
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
1033 repeated_click = FALSE;
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
1034 s_button_pending = -1;
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
1035 _OnMouseEvent(button, x, y, repeated_click, keyFlags);
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
1036 }
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
1037 else if ((repeated_click)
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
1038 || (mouse_model_popup() && (button == MOUSE_RIGHT)))
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
1039 {
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
1040 if (s_button_pending > -1)
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
1041 {
27281
f7d73708b391 patch 8.2.4169: MS-Windows: unnessary casts and other minor things
Bram Moolenaar <Bram@vim.org>
parents: 27261
diff changeset
1042 _OnMouseEvent(s_button_pending, x, y, FALSE, keyFlags);
f7d73708b391 patch 8.2.4169: MS-Windows: unnessary casts and other minor things
Bram Moolenaar <Bram@vim.org>
parents: 27261
diff changeset
1043 s_button_pending = -1;
8140
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
1044 }
18788
e1f4e9d78a6a patch 8.1.2383: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents: 18773
diff changeset
1045 // TRACE("Button down at x %d, y %d\n", x, y);
8140
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
1046 _OnMouseEvent(button, x, y, repeated_click, keyFlags);
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
1047 }
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
1048 else
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
1049 {
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
1050 /*
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
1051 * If this is the first press (i.e. not a multiple click) don't
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
1052 * action immediately, but store and wait for:
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
1053 * i) button-up
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
1054 * ii) mouse move
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
1055 * iii) another button press
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
1056 * before using it.
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
1057 * This enables us to make left+right simulate middle button,
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
1058 * without left or right being actioned first. The side-effect is
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
1059 * that if you click and hold the mouse without dragging, the
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
1060 * cursor doesn't move until you release the button. In practice
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
1061 * this is hardly a problem.
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
1062 */
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
1063 s_button_pending = button;
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
1064 s_x_pending = x;
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
1065 s_y_pending = y;
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
1066 s_kFlags_pending = keyFlags;
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
1067 }
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
1068
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
1069 s_prevTime = currentTime;
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
1070 }
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
1071 }
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
1072
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
1073 static void
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
1074 _OnMouseMoveOrRelease(
10783
04eb70c77cf4 patch 8.0.0281: some files are still using ARGSUSED instead of UNUSED
Christian Brabandt <cb@256bit.org>
parents: 10440
diff changeset
1075 HWND hwnd UNUSED,
8140
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
1076 int x,
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
1077 int y,
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
1078 UINT keyFlags)
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
1079 {
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
1080 int button;
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
1081
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
1082 s_getting_focus = FALSE;
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
1083 if (s_button_pending > -1)
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
1084 {
18788
e1f4e9d78a6a patch 8.1.2383: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents: 18773
diff changeset
1085 // Delayed action for mouse down event
8140
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
1086 _OnMouseEvent(s_button_pending, s_x_pending,
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
1087 s_y_pending, FALSE, s_kFlags_pending);
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
1088 s_button_pending = -1;
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
1089 }
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
1090 if (s_uMsg == WM_MOUSEMOVE)
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
1091 {
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
1092 /*
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
1093 * It's only a MOUSE_DRAG if one or more mouse buttons are being held
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
1094 * down.
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
1095 */
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
1096 if (!(keyFlags & (MK_LBUTTON | MK_MBUTTON | MK_RBUTTON
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
1097 | MK_XBUTTON1 | MK_XBUTTON2)))
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
1098 {
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
1099 gui_mouse_moved(x, y);
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
1100 return;
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
1101 }
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
1102
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
1103 /*
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
1104 * While button is down, keep grabbing mouse move events when
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
1105 * the mouse goes outside the window
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
1106 */
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
1107 SetCapture(s_textArea);
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
1108 button = MOUSE_DRAG;
18788
e1f4e9d78a6a patch 8.1.2383: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents: 18773
diff changeset
1109 // TRACE(" move at x %d, y %d\n", x, y);
8140
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
1110 }
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
1111 else
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
1112 {
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
1113 ReleaseCapture();
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
1114 button = MOUSE_RELEASE;
18788
e1f4e9d78a6a patch 8.1.2383: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents: 18773
diff changeset
1115 // TRACE(" up at x %d, y %d\n", x, y);
8140
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
1116 }
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
1117
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
1118 _OnMouseEvent(button, x, y, FALSE, keyFlags);
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
1119 }
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
1120
12934
2ebc3df65ca2 patch 8.0.1343: MS-Windows: does not show colored emojis
Christian Brabandt <cb@256bit.org>
parents: 12924
diff changeset
1121 static void
2ebc3df65ca2 patch 8.0.1343: MS-Windows: does not show colored emojis
Christian Brabandt <cb@256bit.org>
parents: 12924
diff changeset
1122 _OnSizeTextArea(
2ebc3df65ca2 patch 8.0.1343: MS-Windows: does not show colored emojis
Christian Brabandt <cb@256bit.org>
parents: 12924
diff changeset
1123 HWND hwnd UNUSED,
2ebc3df65ca2 patch 8.0.1343: MS-Windows: does not show colored emojis
Christian Brabandt <cb@256bit.org>
parents: 12924
diff changeset
1124 UINT state UNUSED,
2ebc3df65ca2 patch 8.0.1343: MS-Windows: does not show colored emojis
Christian Brabandt <cb@256bit.org>
parents: 12924
diff changeset
1125 int cx UNUSED,
2ebc3df65ca2 patch 8.0.1343: MS-Windows: does not show colored emojis
Christian Brabandt <cb@256bit.org>
parents: 12924
diff changeset
1126 int cy UNUSED)
2ebc3df65ca2 patch 8.0.1343: MS-Windows: does not show colored emojis
Christian Brabandt <cb@256bit.org>
parents: 12924
diff changeset
1127 {
2ebc3df65ca2 patch 8.0.1343: MS-Windows: does not show colored emojis
Christian Brabandt <cb@256bit.org>
parents: 12924
diff changeset
1128 #if defined(FEAT_DIRECTX)
2ebc3df65ca2 patch 8.0.1343: MS-Windows: does not show colored emojis
Christian Brabandt <cb@256bit.org>
parents: 12924
diff changeset
1129 if (IS_ENABLE_DIRECTX())
2ebc3df65ca2 patch 8.0.1343: MS-Windows: does not show colored emojis
Christian Brabandt <cb@256bit.org>
parents: 12924
diff changeset
1130 directx_binddc();
2ebc3df65ca2 patch 8.0.1343: MS-Windows: does not show colored emojis
Christian Brabandt <cb@256bit.org>
parents: 12924
diff changeset
1131 #endif
2ebc3df65ca2 patch 8.0.1343: MS-Windows: does not show colored emojis
Christian Brabandt <cb@256bit.org>
parents: 12924
diff changeset
1132 }
2ebc3df65ca2 patch 8.0.1343: MS-Windows: does not show colored emojis
Christian Brabandt <cb@256bit.org>
parents: 12924
diff changeset
1133
8140
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
1134 #ifdef FEAT_MENU
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
1135 /*
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
1136 * Find the vimmenu_T with the given id
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
1137 */
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
1138 static vimmenu_T *
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
1139 gui_mswin_find_menu(
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
1140 vimmenu_T *pMenu,
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
1141 int id)
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
1142 {
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
1143 vimmenu_T *pChildMenu;
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
1144
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
1145 while (pMenu)
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
1146 {
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
1147 if (pMenu->id == (UINT)id)
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
1148 break;
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
1149 if (pMenu->children != NULL)
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
1150 {
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
1151 pChildMenu = gui_mswin_find_menu(pMenu->children, id);
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
1152 if (pChildMenu)
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
1153 {
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
1154 pMenu = pChildMenu;
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
1155 break;
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
1156 }
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
1157 }
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
1158 pMenu = pMenu->next;
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
1159 }
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
1160 return pMenu;
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
1161 }
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
1162
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
1163 static void
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
1164 _OnMenu(
10783
04eb70c77cf4 patch 8.0.0281: some files are still using ARGSUSED instead of UNUSED
Christian Brabandt <cb@256bit.org>
parents: 10440
diff changeset
1165 HWND hwnd UNUSED,
8140
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
1166 int id,
10783
04eb70c77cf4 patch 8.0.0281: some files are still using ARGSUSED instead of UNUSED
Christian Brabandt <cb@256bit.org>
parents: 10440
diff changeset
1167 HWND hwndCtl UNUSED,
04eb70c77cf4 patch 8.0.0281: some files are still using ARGSUSED instead of UNUSED
Christian Brabandt <cb@256bit.org>
parents: 10440
diff changeset
1168 UINT codeNotify UNUSED)
8140
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
1169 {
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
1170 vimmenu_T *pMenu;
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
1171
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
1172 pMenu = gui_mswin_find_menu(root_menu, id);
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
1173 if (pMenu)
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
1174 gui_menu_cb(pMenu);
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
1175 }
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
1176 #endif
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
1177
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
1178 #ifdef MSWIN_FIND_REPLACE
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
1179 /*
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
1180 * Handle a Find/Replace window message.
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
1181 */
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
1182 static void
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
1183 _OnFindRepl(void)
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
1184 {
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
1185 int flags = 0;
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
1186 int down;
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
1187
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
1188 if (s_findrep_struct.Flags & FR_DIALOGTERM)
18788
e1f4e9d78a6a patch 8.1.2383: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents: 18773
diff changeset
1189 // Give main window the focus back.
8140
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
1190 (void)SetFocus(s_hwnd);
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
1191
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
1192 if (s_findrep_struct.Flags & FR_FINDNEXT)
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
1193 {
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
1194 flags = FRD_FINDNEXT;
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
1195
18788
e1f4e9d78a6a patch 8.1.2383: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents: 18773
diff changeset
1196 // Give main window the focus back: this is so the cursor isn't
e1f4e9d78a6a patch 8.1.2383: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents: 18773
diff changeset
1197 // hollow.
8140
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
1198 (void)SetFocus(s_hwnd);
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
1199 }
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
1200 else if (s_findrep_struct.Flags & FR_REPLACE)
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
1201 {
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
1202 flags = FRD_REPLACE;
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
1203
18788
e1f4e9d78a6a patch 8.1.2383: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents: 18773
diff changeset
1204 // Give main window the focus back: this is so the cursor isn't
e1f4e9d78a6a patch 8.1.2383: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents: 18773
diff changeset
1205 // hollow.
8140
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
1206 (void)SetFocus(s_hwnd);
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
1207 }
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
1208 else if (s_findrep_struct.Flags & FR_REPLACEALL)
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
1209 {
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
1210 flags = FRD_REPLACEALL;
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
1211 }
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
1212
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
1213 if (flags != 0)
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
1214 {
16196
973070a30381 patch 8.1.1103: MS-Windows: old API calls are no longer needed
Bram Moolenaar <Bram@vim.org>
parents: 16162
diff changeset
1215 char_u *p, *q;
973070a30381 patch 8.1.1103: MS-Windows: old API calls are no longer needed
Bram Moolenaar <Bram@vim.org>
parents: 16162
diff changeset
1216
18788
e1f4e9d78a6a patch 8.1.2383: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents: 18773
diff changeset
1217 // Call the generic GUI function to do the actual work.
8140
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
1218 if (s_findrep_struct.Flags & FR_WHOLEWORD)
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
1219 flags |= FRD_WHOLE_WORD;
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
1220 if (s_findrep_struct.Flags & FR_MATCHCASE)
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
1221 flags |= FRD_MATCH_CASE;
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
1222 down = (s_findrep_struct.Flags & FR_DOWN) != 0;
16196
973070a30381 patch 8.1.1103: MS-Windows: old API calls are no longer needed
Bram Moolenaar <Bram@vim.org>
parents: 16162
diff changeset
1223 p = utf16_to_enc(s_findrep_struct.lpstrFindWhat, NULL);
973070a30381 patch 8.1.1103: MS-Windows: old API calls are no longer needed
Bram Moolenaar <Bram@vim.org>
parents: 16162
diff changeset
1224 q = utf16_to_enc(s_findrep_struct.lpstrReplaceWith, NULL);
973070a30381 patch 8.1.1103: MS-Windows: old API calls are no longer needed
Bram Moolenaar <Bram@vim.org>
parents: 16162
diff changeset
1225 if (p != NULL && q != NULL)
973070a30381 patch 8.1.1103: MS-Windows: old API calls are no longer needed
Bram Moolenaar <Bram@vim.org>
parents: 16162
diff changeset
1226 gui_do_findrepl(flags, p, q, down);
973070a30381 patch 8.1.1103: MS-Windows: old API calls are no longer needed
Bram Moolenaar <Bram@vim.org>
parents: 16162
diff changeset
1227 vim_free(p);
973070a30381 patch 8.1.1103: MS-Windows: old API calls are no longer needed
Bram Moolenaar <Bram@vim.org>
parents: 16162
diff changeset
1228 vim_free(q);
8140
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
1229 }
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
1230 }
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
1231 #endif
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
1232
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
1233 static void
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
1234 HandleMouseHide(UINT uMsg, LPARAM lParam)
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
1235 {
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
1236 static LPARAM last_lParam = 0L;
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
1237
18788
e1f4e9d78a6a patch 8.1.2383: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents: 18773
diff changeset
1238 // We sometimes get a mousemove when the mouse didn't move...
8140
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
1239 if (uMsg == WM_MOUSEMOVE || uMsg == WM_NCMOUSEMOVE)
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
1240 {
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
1241 if (lParam == last_lParam)
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
1242 return;
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
1243 last_lParam = lParam;
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
1244 }
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
1245
18788
e1f4e9d78a6a patch 8.1.2383: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents: 18773
diff changeset
1246 // Handle specially, to centralise coding. We need to be sure we catch all
e1f4e9d78a6a patch 8.1.2383: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents: 18773
diff changeset
1247 // possible events which should cause us to restore the cursor (as it is a
e1f4e9d78a6a patch 8.1.2383: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents: 18773
diff changeset
1248 // shared resource, we take full responsibility for it).
8140
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
1249 switch (uMsg)
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
1250 {
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
1251 case WM_KEYUP:
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
1252 case WM_CHAR:
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
1253 /*
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
1254 * blank out the pointer if necessary
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
1255 */
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
1256 if (p_mh)
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
1257 gui_mch_mousehide(TRUE);
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
1258 break;
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
1259
18788
e1f4e9d78a6a patch 8.1.2383: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents: 18773
diff changeset
1260 case WM_SYSKEYUP: // show the pointer when a system-key is pressed
8140
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
1261 case WM_SYSCHAR:
18788
e1f4e9d78a6a patch 8.1.2383: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents: 18773
diff changeset
1262 case WM_MOUSEMOVE: // show the pointer on any mouse action
8140
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
1263 case WM_LBUTTONDOWN:
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
1264 case WM_LBUTTONUP:
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
1265 case WM_MBUTTONDOWN:
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
1266 case WM_MBUTTONUP:
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
1267 case WM_RBUTTONDOWN:
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
1268 case WM_RBUTTONUP:
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
1269 case WM_XBUTTONDOWN:
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
1270 case WM_XBUTTONUP:
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
1271 case WM_NCMOUSEMOVE:
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
1272 case WM_NCLBUTTONDOWN:
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
1273 case WM_NCLBUTTONUP:
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
1274 case WM_NCMBUTTONDOWN:
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
1275 case WM_NCMBUTTONUP:
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
1276 case WM_NCRBUTTONDOWN:
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
1277 case WM_NCRBUTTONUP:
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
1278 case WM_KILLFOCUS:
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
1279 /*
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
1280 * if the pointer is currently hidden, then we should show it.
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
1281 */
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
1282 gui_mch_mousehide(FALSE);
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
1283 break;
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
1284 }
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
1285 }
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
1286
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
1287 static LRESULT CALLBACK
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
1288 _TextAreaWndProc(
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
1289 HWND hwnd,
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
1290 UINT uMsg,
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
1291 WPARAM wParam,
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
1292 LPARAM lParam)
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
1293 {
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
1294 /*
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
1295 TRACE("TextAreaWndProc: hwnd = %08x, msg = %x, wParam = %x, lParam = %x\n",
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
1296 hwnd, uMsg, wParam, lParam);
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
1297 */
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
1298
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
1299 HandleMouseHide(uMsg, lParam);
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
1300
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
1301 s_uMsg = uMsg;
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
1302 s_wParam = wParam;
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
1303 s_lParam = lParam;
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
1304
12871
1a450ce6980c patch 8.0.1312: balloon_show() only works in terminal when compiled with GUI
Christian Brabandt <cb@256bit.org>
parents: 12802
diff changeset
1305 #ifdef FEAT_BEVAL_GUI
27525
27694b525305 patch 8.2.4290: MS-Windows: using type casts for timer IDs
Bram Moolenaar <Bram@vim.org>
parents: 27455
diff changeset
1306 track_user_activity(uMsg);
8140
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
1307 #endif
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
1308
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
1309 switch (uMsg)
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
1310 {
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
1311 HANDLE_MSG(hwnd, WM_LBUTTONDBLCLK,_OnMouseButtonDown);
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
1312 HANDLE_MSG(hwnd, WM_LBUTTONDOWN,_OnMouseButtonDown);
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
1313 HANDLE_MSG(hwnd, WM_LBUTTONUP, _OnMouseMoveOrRelease);
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
1314 HANDLE_MSG(hwnd, WM_MBUTTONDBLCLK,_OnMouseButtonDown);
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
1315 HANDLE_MSG(hwnd, WM_MBUTTONDOWN,_OnMouseButtonDown);
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
1316 HANDLE_MSG(hwnd, WM_MBUTTONUP, _OnMouseMoveOrRelease);
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
1317 HANDLE_MSG(hwnd, WM_MOUSEMOVE, _OnMouseMoveOrRelease);
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
1318 HANDLE_MSG(hwnd, WM_PAINT, _OnPaint);
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
1319 HANDLE_MSG(hwnd, WM_RBUTTONDBLCLK,_OnMouseButtonDown);
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
1320 HANDLE_MSG(hwnd, WM_RBUTTONDOWN,_OnMouseButtonDown);
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
1321 HANDLE_MSG(hwnd, WM_RBUTTONUP, _OnMouseMoveOrRelease);
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
1322 HANDLE_MSG(hwnd, WM_XBUTTONDBLCLK,_OnMouseButtonDown);
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
1323 HANDLE_MSG(hwnd, WM_XBUTTONDOWN,_OnMouseButtonDown);
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
1324 HANDLE_MSG(hwnd, WM_XBUTTONUP, _OnMouseMoveOrRelease);
12934
2ebc3df65ca2 patch 8.0.1343: MS-Windows: does not show colored emojis
Christian Brabandt <cb@256bit.org>
parents: 12924
diff changeset
1325 HANDLE_MSG(hwnd, WM_SIZE, _OnSizeTextArea);
8140
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
1326
12871
1a450ce6980c patch 8.0.1312: balloon_show() only works in terminal when compiled with GUI
Christian Brabandt <cb@256bit.org>
parents: 12802
diff changeset
1327 #ifdef FEAT_BEVAL_GUI
8140
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
1328 case WM_NOTIFY: Handle_WM_Notify(hwnd, (LPNMHDR)lParam);
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
1329 return TRUE;
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
1330 #endif
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
1331 default:
27249
d5570658f18d patch 8.2.4153: MS-Windows: Global IME is no longer supported
Bram Moolenaar <Bram@vim.org>
parents: 27229
diff changeset
1332 return DefWindowProcW(hwnd, uMsg, wParam, lParam);
d5570658f18d patch 8.2.4153: MS-Windows: Global IME is no longer supported
Bram Moolenaar <Bram@vim.org>
parents: 27229
diff changeset
1333 }
8140
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
1334 }
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
1335
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
1336 /*
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
1337 * Called when the foreground or background color has been changed.
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
1338 */
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
1339 void
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
1340 gui_mch_new_colors(void)
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
1341 {
18617
5beda1754026 patch 8.1.2301: MS-Windows GUI: drawing error when background color changes
Bram Moolenaar <Bram@vim.org>
parents: 18526
diff changeset
1342 HBRUSH prevBrush;
5beda1754026 patch 8.1.2301: MS-Windows GUI: drawing error when background color changes
Bram Moolenaar <Bram@vim.org>
parents: 18526
diff changeset
1343
5beda1754026 patch 8.1.2301: MS-Windows GUI: drawing error when background color changes
Bram Moolenaar <Bram@vim.org>
parents: 18526
diff changeset
1344 s_brush = CreateSolidBrush(gui.back_pixel);
5beda1754026 patch 8.1.2301: MS-Windows GUI: drawing error when background color changes
Bram Moolenaar <Bram@vim.org>
parents: 18526
diff changeset
1345 prevBrush = (HBRUSH)SetClassLongPtr(
5beda1754026 patch 8.1.2301: MS-Windows GUI: drawing error when background color changes
Bram Moolenaar <Bram@vim.org>
parents: 18526
diff changeset
1346 s_hwnd, GCLP_HBRBACKGROUND, (LONG_PTR)s_brush);
5beda1754026 patch 8.1.2301: MS-Windows GUI: drawing error when background color changes
Bram Moolenaar <Bram@vim.org>
parents: 18526
diff changeset
1347 InvalidateRect(s_hwnd, NULL, TRUE);
5beda1754026 patch 8.1.2301: MS-Windows GUI: drawing error when background color changes
Bram Moolenaar <Bram@vim.org>
parents: 18526
diff changeset
1348 DeleteObject(prevBrush);
8140
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
1349 }
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
1350
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
1351 /*
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
1352 * Set the colors to their default values.
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
1353 */
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
1354 void
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
1355 gui_mch_def_colors(void)
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
1356 {
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
1357 gui.norm_pixel = GetSysColor(COLOR_WINDOWTEXT);
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
1358 gui.back_pixel = GetSysColor(COLOR_WINDOW);
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
1359 gui.def_norm_pixel = gui.norm_pixel;
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
1360 gui.def_back_pixel = gui.back_pixel;
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
1361 }
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
1362
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
1363 /*
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
1364 * Open the GUI window which was created by a call to gui_mch_init().
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
1365 */
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
1366 int
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
1367 gui_mch_open(void)
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
1368 {
18788
e1f4e9d78a6a patch 8.1.2383: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents: 18773
diff changeset
1369 // Actually open the window, if not already visible
e1f4e9d78a6a patch 8.1.2383: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents: 18773
diff changeset
1370 // (may be done already in gui_mch_set_shellsize)
8140
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
1371 if (!IsWindowVisible(s_hwnd))
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
1372 ShowWindow(s_hwnd, SW_SHOWDEFAULT);
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
1373
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
1374 #ifdef MSWIN_FIND_REPLACE
18788
e1f4e9d78a6a patch 8.1.2383: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents: 18773
diff changeset
1375 // Init replace string here, so that we keep it when re-opening the
e1f4e9d78a6a patch 8.1.2383: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents: 18773
diff changeset
1376 // dialog.
8140
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
1377 s_findrep_struct.lpstrReplaceWith[0] = NUL;
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
1378 #endif
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
1379
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
1380 return OK;
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
1381 }
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
1382
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
1383 /*
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
1384 * Get the position of the top left corner of the window.
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
1385 */
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
1386 int
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
1387 gui_mch_get_winpos(int *x, int *y)
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
1388 {
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
1389 RECT rect;
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
1390
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
1391 GetWindowRect(s_hwnd, &rect);
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
1392 *x = rect.left;
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
1393 *y = rect.top;
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
1394 return OK;
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
1395 }
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
1396
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
1397 /*
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
1398 * Set the position of the top left corner of the window to the given
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
1399 * coordinates.
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
1400 */
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
1401 void
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
1402 gui_mch_set_winpos(int x, int y)
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
1403 {
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
1404 SetWindowPos(s_hwnd, NULL, x, y, 0, 0,
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
1405 SWP_NOZORDER | SWP_NOSIZE | SWP_NOACTIVATE);
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
1406 }
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
1407 void
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
1408 gui_mch_set_text_area_pos(int x, int y, int w, int h)
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
1409 {
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
1410 static int oldx = 0;
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
1411 static int oldy = 0;
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
1412
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
1413 SetWindowPos(s_textArea, NULL, x, y, w, h, SWP_NOZORDER | SWP_NOACTIVATE);
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
1414
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
1415 #ifdef FEAT_TOOLBAR
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
1416 if (vim_strchr(p_go, GO_TOOLBAR) != NULL)
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
1417 SendMessage(s_toolbarhwnd, WM_SIZE,
27160
4482dd5f8869 patch 8.2.4109: MS-Windows: high dpi support is outdated
Bram Moolenaar <Bram@vim.org>
parents: 26966
diff changeset
1418 (WPARAM)0, MAKELPARAM(w, gui.toolbar_height));
8140
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
1419 #endif
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
1420 #if defined(FEAT_GUI_TABLINE)
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
1421 if (showing_tabline)
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
1422 {
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
1423 int top = 0;
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
1424 RECT rect;
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
1425
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
1426 # ifdef FEAT_TOOLBAR
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
1427 if (vim_strchr(p_go, GO_TOOLBAR) != NULL)
27160
4482dd5f8869 patch 8.2.4109: MS-Windows: high dpi support is outdated
Bram Moolenaar <Bram@vim.org>
parents: 26966
diff changeset
1428 top = gui.toolbar_height;
8140
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
1429 # endif
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
1430 GetClientRect(s_hwnd, &rect);
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
1431 MoveWindow(s_tabhwnd, 0, top, rect.right, gui.tabline_height, TRUE);
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
1432 }
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
1433 #endif
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
1434
18788
e1f4e9d78a6a patch 8.1.2383: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents: 18773
diff changeset
1435 // When side scroll bar is unshown, the size of window will change.
e1f4e9d78a6a patch 8.1.2383: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents: 18773
diff changeset
1436 // then, the text area move left or right. thus client rect should be
e1f4e9d78a6a patch 8.1.2383: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents: 18773
diff changeset
1437 // forcedly redrawn. (Yasuhiro Matsumoto)
8140
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
1438 if (oldx != x || oldy != y)
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
1439 {
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
1440 InvalidateRect(s_hwnd, NULL, FALSE);
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
1441 oldx = x;
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
1442 oldy = y;
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
1443 }
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
1444 }
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
1445
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
1446
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
1447 /*
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
1448 * Scrollbar stuff:
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
1449 */
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
1450
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
1451 void
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
1452 gui_mch_enable_scrollbar(
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
1453 scrollbar_T *sb,
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
1454 int flag)
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
1455 {
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
1456 ShowScrollBar(sb->id, SB_CTL, flag);
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
1457
18788
e1f4e9d78a6a patch 8.1.2383: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents: 18773
diff changeset
1458 // TODO: When the window is maximized, the size of the window stays the
e1f4e9d78a6a patch 8.1.2383: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents: 18773
diff changeset
1459 // same, thus the size of the text area changes. On Win98 it's OK, on Win
e1f4e9d78a6a patch 8.1.2383: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents: 18773
diff changeset
1460 // NT 4.0 it's not...
8140
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
1461 }
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
1462
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
1463 void
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
1464 gui_mch_set_scrollbar_pos(
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
1465 scrollbar_T *sb,
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
1466 int x,
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
1467 int y,
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
1468 int w,
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
1469 int h)
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
1470 {
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
1471 SetWindowPos(sb->id, NULL, x, y, w, h,
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
1472 SWP_NOZORDER | SWP_NOACTIVATE | SWP_SHOWWINDOW);
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
1473 }
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
1474
21355
fcccc29bd386 patch 8.2.1228: scrollbars not flush against the window edges when maximised
Bram Moolenaar <Bram@vim.org>
parents: 21351
diff changeset
1475 int
fcccc29bd386 patch 8.2.1228: scrollbars not flush against the window edges when maximised
Bram Moolenaar <Bram@vim.org>
parents: 21351
diff changeset
1476 gui_mch_get_scrollbar_xpadding(void)
fcccc29bd386 patch 8.2.1228: scrollbars not flush against the window edges when maximised
Bram Moolenaar <Bram@vim.org>
parents: 21351
diff changeset
1477 {
fcccc29bd386 patch 8.2.1228: scrollbars not flush against the window edges when maximised
Bram Moolenaar <Bram@vim.org>
parents: 21351
diff changeset
1478 RECT rcTxt, rcWnd;
fcccc29bd386 patch 8.2.1228: scrollbars not flush against the window edges when maximised
Bram Moolenaar <Bram@vim.org>
parents: 21351
diff changeset
1479 int xpad;
fcccc29bd386 patch 8.2.1228: scrollbars not flush against the window edges when maximised
Bram Moolenaar <Bram@vim.org>
parents: 21351
diff changeset
1480
fcccc29bd386 patch 8.2.1228: scrollbars not flush against the window edges when maximised
Bram Moolenaar <Bram@vim.org>
parents: 21351
diff changeset
1481 GetWindowRect(s_textArea, &rcTxt);
fcccc29bd386 patch 8.2.1228: scrollbars not flush against the window edges when maximised
Bram Moolenaar <Bram@vim.org>
parents: 21351
diff changeset
1482 GetWindowRect(s_hwnd, &rcWnd);
fcccc29bd386 patch 8.2.1228: scrollbars not flush against the window edges when maximised
Bram Moolenaar <Bram@vim.org>
parents: 21351
diff changeset
1483 xpad = rcWnd.right - rcTxt.right - gui.scrollbar_width
27160
4482dd5f8869 patch 8.2.4109: MS-Windows: high dpi support is outdated
Bram Moolenaar <Bram@vim.org>
parents: 26966
diff changeset
1484 - pGetSystemMetricsForDpi(SM_CXFRAME, s_dpi)
4482dd5f8869 patch 8.2.4109: MS-Windows: high dpi support is outdated
Bram Moolenaar <Bram@vim.org>
parents: 26966
diff changeset
1485 - pGetSystemMetricsForDpi(SM_CXPADDEDBORDER, s_dpi);
21355
fcccc29bd386 patch 8.2.1228: scrollbars not flush against the window edges when maximised
Bram Moolenaar <Bram@vim.org>
parents: 21351
diff changeset
1486 return (xpad < 0) ? 0 : xpad;
fcccc29bd386 patch 8.2.1228: scrollbars not flush against the window edges when maximised
Bram Moolenaar <Bram@vim.org>
parents: 21351
diff changeset
1487 }
fcccc29bd386 patch 8.2.1228: scrollbars not flush against the window edges when maximised
Bram Moolenaar <Bram@vim.org>
parents: 21351
diff changeset
1488
fcccc29bd386 patch 8.2.1228: scrollbars not flush against the window edges when maximised
Bram Moolenaar <Bram@vim.org>
parents: 21351
diff changeset
1489 int
fcccc29bd386 patch 8.2.1228: scrollbars not flush against the window edges when maximised
Bram Moolenaar <Bram@vim.org>
parents: 21351
diff changeset
1490 gui_mch_get_scrollbar_ypadding(void)
fcccc29bd386 patch 8.2.1228: scrollbars not flush against the window edges when maximised
Bram Moolenaar <Bram@vim.org>
parents: 21351
diff changeset
1491 {
fcccc29bd386 patch 8.2.1228: scrollbars not flush against the window edges when maximised
Bram Moolenaar <Bram@vim.org>
parents: 21351
diff changeset
1492 RECT rcTxt, rcWnd;
fcccc29bd386 patch 8.2.1228: scrollbars not flush against the window edges when maximised
Bram Moolenaar <Bram@vim.org>
parents: 21351
diff changeset
1493 int ypad;
fcccc29bd386 patch 8.2.1228: scrollbars not flush against the window edges when maximised
Bram Moolenaar <Bram@vim.org>
parents: 21351
diff changeset
1494
fcccc29bd386 patch 8.2.1228: scrollbars not flush against the window edges when maximised
Bram Moolenaar <Bram@vim.org>
parents: 21351
diff changeset
1495 GetWindowRect(s_textArea, &rcTxt);
fcccc29bd386 patch 8.2.1228: scrollbars not flush against the window edges when maximised
Bram Moolenaar <Bram@vim.org>
parents: 21351
diff changeset
1496 GetWindowRect(s_hwnd, &rcWnd);
fcccc29bd386 patch 8.2.1228: scrollbars not flush against the window edges when maximised
Bram Moolenaar <Bram@vim.org>
parents: 21351
diff changeset
1497 ypad = rcWnd.bottom - rcTxt.bottom - gui.scrollbar_height
27160
4482dd5f8869 patch 8.2.4109: MS-Windows: high dpi support is outdated
Bram Moolenaar <Bram@vim.org>
parents: 26966
diff changeset
1498 - pGetSystemMetricsForDpi(SM_CYFRAME, s_dpi)
4482dd5f8869 patch 8.2.4109: MS-Windows: high dpi support is outdated
Bram Moolenaar <Bram@vim.org>
parents: 26966
diff changeset
1499 - pGetSystemMetricsForDpi(SM_CXPADDEDBORDER, s_dpi);
21355
fcccc29bd386 patch 8.2.1228: scrollbars not flush against the window edges when maximised
Bram Moolenaar <Bram@vim.org>
parents: 21351
diff changeset
1500 return (ypad < 0) ? 0 : ypad;
fcccc29bd386 patch 8.2.1228: scrollbars not flush against the window edges when maximised
Bram Moolenaar <Bram@vim.org>
parents: 21351
diff changeset
1501 }
fcccc29bd386 patch 8.2.1228: scrollbars not flush against the window edges when maximised
Bram Moolenaar <Bram@vim.org>
parents: 21351
diff changeset
1502
8140
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
1503 void
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
1504 gui_mch_create_scrollbar(
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
1505 scrollbar_T *sb,
18788
e1f4e9d78a6a patch 8.1.2383: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents: 18773
diff changeset
1506 int orient) // SBAR_VERT or SBAR_HORIZ
8140
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
1507 {
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
1508 sb->id = CreateWindow(
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
1509 "SCROLLBAR", "Scrollbar",
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
1510 WS_CHILD | ((orient == SBAR_VERT) ? SBS_VERT : SBS_HORZ), 0, 0,
18788
e1f4e9d78a6a patch 8.1.2383: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents: 18773
diff changeset
1511 10, // Any value will do for now
e1f4e9d78a6a patch 8.1.2383: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents: 18773
diff changeset
1512 10, // Any value will do for now
8140
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
1513 s_hwnd, NULL,
16451
7ae2396cef62 patch 8.1.1230: a lot of code is shared between vim.exe and gvim.exe
Bram Moolenaar <Bram@vim.org>
parents: 16439
diff changeset
1514 g_hinst, NULL);
8140
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
1515 }
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
1516
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
1517 /*
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
1518 * Find the scrollbar with the given hwnd.
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
1519 */
21351
a4f213630151 patch 8.2.1226: MS-Windows: windows positioning wrong depending on taskbar
Bram Moolenaar <Bram@vim.org>
parents: 20421
diff changeset
1520 static scrollbar_T *
8140
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
1521 gui_mswin_find_scrollbar(HWND hwnd)
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
1522 {
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
1523 win_T *wp;
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
1524
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
1525 if (gui.bottom_sbar.id == hwnd)
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
1526 return &gui.bottom_sbar;
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
1527 FOR_ALL_WINDOWS(wp)
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
1528 {
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
1529 if (wp->w_scrollbars[SBAR_LEFT].id == hwnd)
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
1530 return &wp->w_scrollbars[SBAR_LEFT];
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
1531 if (wp->w_scrollbars[SBAR_RIGHT].id == hwnd)
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
1532 return &wp->w_scrollbars[SBAR_RIGHT];
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
1533 }
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
1534 return NULL;
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
1535 }
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
1536
27160
4482dd5f8869 patch 8.2.4109: MS-Windows: high dpi support is outdated
Bram Moolenaar <Bram@vim.org>
parents: 26966
diff changeset
1537 static void
4482dd5f8869 patch 8.2.4109: MS-Windows: high dpi support is outdated
Bram Moolenaar <Bram@vim.org>
parents: 26966
diff changeset
1538 update_scrollbar_size(void)
4482dd5f8869 patch 8.2.4109: MS-Windows: high dpi support is outdated
Bram Moolenaar <Bram@vim.org>
parents: 26966
diff changeset
1539 {
4482dd5f8869 patch 8.2.4109: MS-Windows: high dpi support is outdated
Bram Moolenaar <Bram@vim.org>
parents: 26966
diff changeset
1540 gui.scrollbar_width = pGetSystemMetricsForDpi(SM_CXVSCROLL, s_dpi);
4482dd5f8869 patch 8.2.4109: MS-Windows: high dpi support is outdated
Bram Moolenaar <Bram@vim.org>
parents: 26966
diff changeset
1541 gui.scrollbar_height = pGetSystemMetricsForDpi(SM_CYHSCROLL, s_dpi);
4482dd5f8869 patch 8.2.4109: MS-Windows: high dpi support is outdated
Bram Moolenaar <Bram@vim.org>
parents: 26966
diff changeset
1542 }
4482dd5f8869 patch 8.2.4109: MS-Windows: high dpi support is outdated
Bram Moolenaar <Bram@vim.org>
parents: 26966
diff changeset
1543
8140
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
1544 /*
27332
251cae25bb49 patch 8.2.4194: MS-Windows: code for calculating font size is duplicated
Bram Moolenaar <Bram@vim.org>
parents: 27322
diff changeset
1545 * Get the average character size of a font.
251cae25bb49 patch 8.2.4194: MS-Windows: code for calculating font size is duplicated
Bram Moolenaar <Bram@vim.org>
parents: 27322
diff changeset
1546 */
251cae25bb49 patch 8.2.4194: MS-Windows: code for calculating font size is duplicated
Bram Moolenaar <Bram@vim.org>
parents: 27322
diff changeset
1547 static void
251cae25bb49 patch 8.2.4194: MS-Windows: code for calculating font size is duplicated
Bram Moolenaar <Bram@vim.org>
parents: 27322
diff changeset
1548 GetAverageFontSize(HDC hdc, SIZE *size)
251cae25bb49 patch 8.2.4194: MS-Windows: code for calculating font size is duplicated
Bram Moolenaar <Bram@vim.org>
parents: 27322
diff changeset
1549 {
251cae25bb49 patch 8.2.4194: MS-Windows: code for calculating font size is duplicated
Bram Moolenaar <Bram@vim.org>
parents: 27322
diff changeset
1550 // GetTextMetrics() may not return the right value in tmAveCharWidth
251cae25bb49 patch 8.2.4194: MS-Windows: code for calculating font size is duplicated
Bram Moolenaar <Bram@vim.org>
parents: 27322
diff changeset
1551 // for some fonts. Do our own average computation.
251cae25bb49 patch 8.2.4194: MS-Windows: code for calculating font size is duplicated
Bram Moolenaar <Bram@vim.org>
parents: 27322
diff changeset
1552 GetTextExtentPoint(hdc,
251cae25bb49 patch 8.2.4194: MS-Windows: code for calculating font size is duplicated
Bram Moolenaar <Bram@vim.org>
parents: 27322
diff changeset
1553 "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz",
251cae25bb49 patch 8.2.4194: MS-Windows: code for calculating font size is duplicated
Bram Moolenaar <Bram@vim.org>
parents: 27322
diff changeset
1554 52, size);
251cae25bb49 patch 8.2.4194: MS-Windows: code for calculating font size is duplicated
Bram Moolenaar <Bram@vim.org>
parents: 27322
diff changeset
1555 size->cx = (size->cx / 26 + 1) / 2;
251cae25bb49 patch 8.2.4194: MS-Windows: code for calculating font size is duplicated
Bram Moolenaar <Bram@vim.org>
parents: 27322
diff changeset
1556 }
251cae25bb49 patch 8.2.4194: MS-Windows: code for calculating font size is duplicated
Bram Moolenaar <Bram@vim.org>
parents: 27322
diff changeset
1557
251cae25bb49 patch 8.2.4194: MS-Windows: code for calculating font size is duplicated
Bram Moolenaar <Bram@vim.org>
parents: 27322
diff changeset
1558 /*
8140
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
1559 * Get the character size of a font.
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
1560 */
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
1561 static void
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
1562 GetFontSize(GuiFont font)
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
1563 {
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
1564 HWND hwnd = GetDesktopWindow();
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
1565 HDC hdc = GetWindowDC(hwnd);
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
1566 HFONT hfntOld = SelectFont(hdc, (HFONT)font);
16582
9a7d98e11954 patch 8.1.1294: MS-Windows: Some fonts return wrong average char width
Bram Moolenaar <Bram@vim.org>
parents: 16468
diff changeset
1567 SIZE size;
8140
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
1568 TEXTMETRIC tm;
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
1569
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
1570 GetTextMetrics(hdc, &tm);
27332
251cae25bb49 patch 8.2.4194: MS-Windows: code for calculating font size is duplicated
Bram Moolenaar <Bram@vim.org>
parents: 27322
diff changeset
1571 GetAverageFontSize(hdc, &size);
251cae25bb49 patch 8.2.4194: MS-Windows: code for calculating font size is duplicated
Bram Moolenaar <Bram@vim.org>
parents: 27322
diff changeset
1572
251cae25bb49 patch 8.2.4194: MS-Windows: code for calculating font size is duplicated
Bram Moolenaar <Bram@vim.org>
parents: 27322
diff changeset
1573 gui.char_width = size.cx + tm.tmOverhang;
8140
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
1574 gui.char_height = tm.tmHeight + p_linespace;
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
1575
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
1576 SelectFont(hdc, hfntOld);
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
1577
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
1578 ReleaseDC(hwnd, hdc);
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
1579 }
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
1580
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
1581 /*
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
1582 * Adjust gui.char_height (after 'linespace' was changed).
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
1583 */
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
1584 int
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
1585 gui_mch_adjust_charheight(void)
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
1586 {
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
1587 GetFontSize(gui.norm_font);
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
1588 return OK;
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
1589 }
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
1590
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
1591 static GuiFont
16152
8f4eccaaf2c0 patch 8.1.1081: MS-Windows: cannot use some fonts
Bram Moolenaar <Bram@vim.org>
parents: 16123
diff changeset
1592 get_font_handle(LOGFONTW *lf)
8140
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
1593 {
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
1594 HFONT font = NULL;
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
1595
18788
e1f4e9d78a6a patch 8.1.2383: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents: 18773
diff changeset
1596 // Load the font
16152
8f4eccaaf2c0 patch 8.1.1081: MS-Windows: cannot use some fonts
Bram Moolenaar <Bram@vim.org>
parents: 16123
diff changeset
1597 font = CreateFontIndirectW(lf);
8140
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
1598
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
1599 if (font == NULL)
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
1600 return NOFONT;
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
1601
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
1602 return (GuiFont)font;
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
1603 }
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
1604
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
1605 static int
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
1606 pixels_to_points(int pixels, int vertical)
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
1607 {
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
1608 int points;
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
1609 HWND hwnd;
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
1610 HDC hdc;
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
1611
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
1612 hwnd = GetDesktopWindow();
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
1613 hdc = GetWindowDC(hwnd);
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
1614
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
1615 points = MulDiv(pixels, 72,
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
1616 GetDeviceCaps(hdc, vertical ? LOGPIXELSY : LOGPIXELSX));
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
1617
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
1618 ReleaseDC(hwnd, hdc);
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
1619
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
1620 return points;
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
1621 }
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
1622
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
1623 GuiFont
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
1624 gui_mch_get_font(
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
1625 char_u *name,
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
1626 int giveErrorIfMissing)
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
1627 {
16152
8f4eccaaf2c0 patch 8.1.1081: MS-Windows: cannot use some fonts
Bram Moolenaar <Bram@vim.org>
parents: 16123
diff changeset
1628 LOGFONTW lf;
8140
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
1629 GuiFont font = NOFONT;
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
1630
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
1631 if (get_logfont(&lf, name, NULL, giveErrorIfMissing) == OK)
27160
4482dd5f8869 patch 8.2.4109: MS-Windows: high dpi support is outdated
Bram Moolenaar <Bram@vim.org>
parents: 26966
diff changeset
1632 {
4482dd5f8869 patch 8.2.4109: MS-Windows: high dpi support is outdated
Bram Moolenaar <Bram@vim.org>
parents: 26966
diff changeset
1633 lf.lfHeight = adjust_fontsize_by_dpi(lf.lfHeight);
8140
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
1634 font = get_font_handle(&lf);
27160
4482dd5f8869 patch 8.2.4109: MS-Windows: high dpi support is outdated
Bram Moolenaar <Bram@vim.org>
parents: 26966
diff changeset
1635 }
8140
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
1636 if (font == NOFONT && giveErrorIfMissing)
26865
bce848ec8b1b patch 8.2.3961: error messages are spread out
Bram Moolenaar <Bram@vim.org>
parents: 26771
diff changeset
1637 semsg(_(e_unknown_font_str), name);
8140
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
1638 return font;
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
1639 }
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
1640
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
1641 #if defined(FEAT_EVAL) || defined(PROTO)
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
1642 /*
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
1643 * Return the name of font "font" in allocated memory.
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
1644 * Don't know how to get the actual name, thus use the provided name.
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
1645 */
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
1646 char_u *
10783
04eb70c77cf4 patch 8.0.0281: some files are still using ARGSUSED instead of UNUSED
Christian Brabandt <cb@256bit.org>
parents: 10440
diff changeset
1647 gui_mch_get_fontname(GuiFont font UNUSED, char_u *name)
8140
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
1648 {
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
1649 if (name == NULL)
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
1650 return NULL;
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
1651 return vim_strsave(name);
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
1652 }
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
1653 #endif
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
1654
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
1655 void
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
1656 gui_mch_free_font(GuiFont font)
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
1657 {
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
1658 if (font)
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
1659 DeleteObject((HFONT)font);
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
1660 }
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
1661
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
1662 /*
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
1663 * Return the Pixel value (color) for the given color name.
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
1664 * Return INVALCOLOR for error.
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
1665 */
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
1666 guicolor_T
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
1667 gui_mch_get_color(char_u *name)
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
1668 {
9017
7b1200ea03a1 commit https://github.com/vim/vim/commit/c285fe7c3ffdb3ec4eff20a1d1d5accfc80f1a86
Christian Brabandt <cb@256bit.org>
parents: 9013
diff changeset
1669 int i;
8140
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
1670
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
1671 typedef struct SysColorTable
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
1672 {
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
1673 char *name;
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
1674 int color;
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
1675 } SysColorTable;
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
1676
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
1677 static SysColorTable sys_table[] =
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
1678 {
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
1679 {"SYS_3DDKSHADOW", COLOR_3DDKSHADOW},
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
1680 {"SYS_3DHILIGHT", COLOR_3DHILIGHT},
10264
c036c0f636d5 commit https://github.com/vim/vim/commit/cea912af725c54f4727a0565e31661f6b29c6bb1
Christian Brabandt <cb@256bit.org>
parents: 10042
diff changeset
1681 #ifdef COLOR_3DHIGHLIGHT
8140
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
1682 {"SYS_3DHIGHLIGHT", COLOR_3DHIGHLIGHT},
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
1683 #endif
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
1684 {"SYS_BTNHILIGHT", COLOR_BTNHILIGHT},
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
1685 {"SYS_BTNHIGHLIGHT", COLOR_BTNHIGHLIGHT},
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
1686 {"SYS_3DLIGHT", COLOR_3DLIGHT},
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
1687 {"SYS_3DSHADOW", COLOR_3DSHADOW},
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
1688 {"SYS_DESKTOP", COLOR_DESKTOP},
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
1689 {"SYS_INFOBK", COLOR_INFOBK},
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
1690 {"SYS_INFOTEXT", COLOR_INFOTEXT},
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
1691 {"SYS_3DFACE", COLOR_3DFACE},
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
1692 {"SYS_BTNFACE", COLOR_BTNFACE},
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
1693 {"SYS_BTNSHADOW", COLOR_BTNSHADOW},
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
1694 {"SYS_ACTIVEBORDER", COLOR_ACTIVEBORDER},
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
1695 {"SYS_ACTIVECAPTION", COLOR_ACTIVECAPTION},
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
1696 {"SYS_APPWORKSPACE", COLOR_APPWORKSPACE},
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
1697 {"SYS_BACKGROUND", COLOR_BACKGROUND},
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
1698 {"SYS_BTNTEXT", COLOR_BTNTEXT},
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
1699 {"SYS_CAPTIONTEXT", COLOR_CAPTIONTEXT},
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
1700 {"SYS_GRAYTEXT", COLOR_GRAYTEXT},
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
1701 {"SYS_HIGHLIGHT", COLOR_HIGHLIGHT},
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
1702 {"SYS_HIGHLIGHTTEXT", COLOR_HIGHLIGHTTEXT},
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
1703 {"SYS_INACTIVEBORDER", COLOR_INACTIVEBORDER},
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
1704 {"SYS_INACTIVECAPTION", COLOR_INACTIVECAPTION},
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
1705 {"SYS_INACTIVECAPTIONTEXT", COLOR_INACTIVECAPTIONTEXT},
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
1706 {"SYS_MENU", COLOR_MENU},
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
1707 {"SYS_MENUTEXT", COLOR_MENUTEXT},
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
1708 {"SYS_SCROLLBAR", COLOR_SCROLLBAR},
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
1709 {"SYS_WINDOW", COLOR_WINDOW},
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
1710 {"SYS_WINDOWFRAME", COLOR_WINDOWFRAME},
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
1711 {"SYS_WINDOWTEXT", COLOR_WINDOWTEXT}
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
1712 };
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
1713
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
1714 /*
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
1715 * Try to look up a system colour.
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
1716 */
29113
495d55210aac patch 8.2.5077: various warnings from clang on MS-Windows
Bram Moolenaar <Bram@vim.org>
parents: 29105
diff changeset
1717 for (i = 0; i < (int)ARRAY_LENGTH(sys_table); i++)
8140
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
1718 if (STRICMP(name, sys_table[i].name) == 0)
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
1719 return GetSysColor(sys_table[i].color);
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
1720
9013
22c29a515b53 commit https://github.com/vim/vim/commit/ab3022196ea4f1496e79b8ee85996e31c45d02f1
Christian Brabandt <cb@256bit.org>
parents: 8835
diff changeset
1721 return gui_get_color_cmn(name);
8140
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
1722 }
9017
7b1200ea03a1 commit https://github.com/vim/vim/commit/c285fe7c3ffdb3ec4eff20a1d1d5accfc80f1a86
Christian Brabandt <cb@256bit.org>
parents: 9013
diff changeset
1723
11745
5a5709918a98 patch 8.0.0755: terminal window does not have colors in the GUI
Christian Brabandt <cb@256bit.org>
parents: 11410
diff changeset
1724 guicolor_T
5a5709918a98 patch 8.0.0755: terminal window does not have colors in the GUI
Christian Brabandt <cb@256bit.org>
parents: 11410
diff changeset
1725 gui_mch_get_rgb_color(int r, int g, int b)
5a5709918a98 patch 8.0.0755: terminal window does not have colors in the GUI
Christian Brabandt <cb@256bit.org>
parents: 11410
diff changeset
1726 {
5a5709918a98 patch 8.0.0755: terminal window does not have colors in the GUI
Christian Brabandt <cb@256bit.org>
parents: 11410
diff changeset
1727 return gui_get_rgb_color_cmn(r, g, b);
5a5709918a98 patch 8.0.0755: terminal window does not have colors in the GUI
Christian Brabandt <cb@256bit.org>
parents: 11410
diff changeset
1728 }
5a5709918a98 patch 8.0.0755: terminal window does not have colors in the GUI
Christian Brabandt <cb@256bit.org>
parents: 11410
diff changeset
1729
8140
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
1730 /*
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
1731 * Return OK if the key with the termcap name "name" is supported.
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
1732 */
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
1733 int
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
1734 gui_mch_haskey(char_u *name)
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
1735 {
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
1736 int i;
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
1737
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
1738 for (i = 0; special_keys[i].vim_code1 != NUL; i++)
28639
8ea5468f9b5a patch 8.2.4843: treating CTRL + ALT as AltGr is not backwards compatible
Bram Moolenaar <Bram@vim.org>
parents: 28586
diff changeset
1739 if (name[0] == special_keys[i].vim_code0
8ea5468f9b5a patch 8.2.4843: treating CTRL + ALT as AltGr is not backwards compatible
Bram Moolenaar <Bram@vim.org>
parents: 28586
diff changeset
1740 && name[1] == special_keys[i].vim_code1)
8140
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
1741 return OK;
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
1742 return FAIL;
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
1743 }
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
1744
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
1745 void
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
1746 gui_mch_beep(void)
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
1747 {
28439
16bd027b039e patch 8.2.4744: a terminal window can't use the bell
Bram Moolenaar <Bram@vim.org>
parents: 28411
diff changeset
1748 MessageBeep((UINT)-1);
8140
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
1749 }
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
1750 /*
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
1751 * Invert a rectangle from row r, column c, for nr rows and nc columns.
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
1752 */
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
1753 void
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
1754 gui_mch_invert_rectangle(
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
1755 int r,
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
1756 int c,
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
1757 int nr,
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
1758 int nc)
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
1759 {
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
1760 RECT rc;
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
1761
12934
2ebc3df65ca2 patch 8.0.1343: MS-Windows: does not show colored emojis
Christian Brabandt <cb@256bit.org>
parents: 12924
diff changeset
1762 #if defined(FEAT_DIRECTX)
2ebc3df65ca2 patch 8.0.1343: MS-Windows: does not show colored emojis
Christian Brabandt <cb@256bit.org>
parents: 12924
diff changeset
1763 if (IS_ENABLE_DIRECTX())
2ebc3df65ca2 patch 8.0.1343: MS-Windows: does not show colored emojis
Christian Brabandt <cb@256bit.org>
parents: 12924
diff changeset
1764 DWriteContext_Flush(s_dwc);
2ebc3df65ca2 patch 8.0.1343: MS-Windows: does not show colored emojis
Christian Brabandt <cb@256bit.org>
parents: 12924
diff changeset
1765 #endif
2ebc3df65ca2 patch 8.0.1343: MS-Windows: does not show colored emojis
Christian Brabandt <cb@256bit.org>
parents: 12924
diff changeset
1766
8140
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
1767 /*
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
1768 * Note: InvertRect() excludes right and bottom of rectangle.
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
1769 */
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
1770 rc.left = FILL_X(c);
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
1771 rc.top = FILL_Y(r);
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
1772 rc.right = rc.left + nc * gui.char_width;
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
1773 rc.bottom = rc.top + nr * gui.char_height;
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
1774 InvertRect(s_hdc, &rc);
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
1775 }
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
1776
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
1777 /*
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
1778 * Iconify the GUI window.
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
1779 */
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
1780 void
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
1781 gui_mch_iconify(void)
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
1782 {
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
1783 ShowWindow(s_hwnd, SW_MINIMIZE);
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
1784 }
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
1785
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
1786 /*
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
1787 * Draw a cursor without focus.
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
1788 */
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
1789 void
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
1790 gui_mch_draw_hollow_cursor(guicolor_T color)
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
1791 {
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
1792 HBRUSH hbr;
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
1793 RECT rc;
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
1794
12934
2ebc3df65ca2 patch 8.0.1343: MS-Windows: does not show colored emojis
Christian Brabandt <cb@256bit.org>
parents: 12924
diff changeset
1795 #if defined(FEAT_DIRECTX)
2ebc3df65ca2 patch 8.0.1343: MS-Windows: does not show colored emojis
Christian Brabandt <cb@256bit.org>
parents: 12924
diff changeset
1796 if (IS_ENABLE_DIRECTX())
2ebc3df65ca2 patch 8.0.1343: MS-Windows: does not show colored emojis
Christian Brabandt <cb@256bit.org>
parents: 12924
diff changeset
1797 DWriteContext_Flush(s_dwc);
2ebc3df65ca2 patch 8.0.1343: MS-Windows: does not show colored emojis
Christian Brabandt <cb@256bit.org>
parents: 12924
diff changeset
1798 #endif
2ebc3df65ca2 patch 8.0.1343: MS-Windows: does not show colored emojis
Christian Brabandt <cb@256bit.org>
parents: 12924
diff changeset
1799
8140
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
1800 /*
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
1801 * Note: FrameRect() excludes right and bottom of rectangle.
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
1802 */
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
1803 rc.left = FILL_X(gui.col);
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
1804 rc.top = FILL_Y(gui.row);
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
1805 rc.right = rc.left + gui.char_width;
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
1806 if (mb_lefthalve(gui.row, gui.col))
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
1807 rc.right += gui.char_width;
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
1808 rc.bottom = rc.top + gui.char_height;
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
1809 hbr = CreateSolidBrush(color);
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
1810 FrameRect(s_hdc, &rc, hbr);
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
1811 DeleteBrush(hbr);
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
1812 }
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
1813 /*
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
1814 * Draw part of a cursor, "w" pixels wide, and "h" pixels high, using
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
1815 * color "color".
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
1816 */
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
1817 void
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
1818 gui_mch_draw_part_cursor(
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
1819 int w,
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
1820 int h,
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
1821 guicolor_T color)
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
1822 {
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
1823 RECT rc;
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
1824
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
1825 /*
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
1826 * Note: FillRect() excludes right and bottom of rectangle.
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
1827 */
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
1828 rc.left =
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
1829 #ifdef FEAT_RIGHTLEFT
18788
e1f4e9d78a6a patch 8.1.2383: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents: 18773
diff changeset
1830 // vertical line should be on the right of current point
8140
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
1831 CURSOR_BAR_RIGHT ? FILL_X(gui.col + 1) - w :
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
1832 #endif
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
1833 FILL_X(gui.col);
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
1834 rc.top = FILL_Y(gui.row) + gui.char_height - h;
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
1835 rc.right = rc.left + w;
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
1836 rc.bottom = rc.top + h;
12934
2ebc3df65ca2 patch 8.0.1343: MS-Windows: does not show colored emojis
Christian Brabandt <cb@256bit.org>
parents: 12924
diff changeset
1837
12986
18e6f4addce9 patch 8.0.1369: MS-Windows: drawing underline slow, mFallbackDC not updated
Christian Brabandt <cb@256bit.org>
parents: 12950
diff changeset
1838 fill_rect(&rc, NULL, color);
8140
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
1839 }
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
1840
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
1841
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
1842 /*
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
1843 * Generates a VK_SPACE when the internal dead_key flag is set to output the
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
1844 * dead key's nominal character and re-post the original message.
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
1845 */
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
1846 static void
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
1847 outputDeadKey_rePost(MSG originalMsg)
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
1848 {
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
1849 static MSG deadCharExpel;
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
1850
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
1851 if (!dead_key)
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
1852 return;
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
1853
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
1854 dead_key = 0;
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
1855
18788
e1f4e9d78a6a patch 8.1.2383: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents: 18773
diff changeset
1856 // Make Windows generate the dead key's character
8140
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
1857 deadCharExpel.message = originalMsg.message;
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
1858 deadCharExpel.hwnd = originalMsg.hwnd;
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
1859 deadCharExpel.wParam = VK_SPACE;
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
1860
27249
d5570658f18d patch 8.2.4153: MS-Windows: Global IME is no longer supported
Bram Moolenaar <Bram@vim.org>
parents: 27229
diff changeset
1861 TranslateMessage(&deadCharExpel);
8140
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
1862
18788
e1f4e9d78a6a patch 8.1.2383: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents: 18773
diff changeset
1863 // re-generate the current character free of the dead char influence
8140
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
1864 PostMessage(originalMsg.hwnd, originalMsg.message, originalMsg.wParam,
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
1865 originalMsg.lParam);
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
1866 }
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
1867
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
1868 /*
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
1869 * Process a single Windows message.
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
1870 * If one is not available we hang until one is.
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
1871 */
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
1872 static void
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
1873 process_message(void)
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
1874 {
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
1875 MSG msg;
18788
e1f4e9d78a6a patch 8.1.2383: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents: 18773
diff changeset
1876 UINT vk = 0; // Virtual key
8140
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
1877 char_u string[40];
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
1878 int i;
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
1879 int modifiers = 0;
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
1880 int key;
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
1881 #ifdef FEAT_MENU
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
1882 static char_u k10[] = {K_SPECIAL, 'k', ';', 0};
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
1883 #endif
28566
893251eed714 patch 8.2.4807: processing key eveints in Win32 GUI is not ideal
Bram Moolenaar <Bram@vim.org>
parents: 28439
diff changeset
1884 BYTE keyboard_state[256];
8140
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
1885
27283
b4d92a69035b patch 8.2.4170: MS-Windows: still using old message API calls
Bram Moolenaar <Bram@vim.org>
parents: 27281
diff changeset
1886 GetMessageW(&msg, NULL, 0, 0);
8140
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
1887
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
1888 #ifdef FEAT_OLE
18788
e1f4e9d78a6a patch 8.1.2383: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents: 18773
diff changeset
1889 // Look after OLE Automation commands
8140
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
1890 if (msg.message == WM_OLE)
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
1891 {
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
1892 char_u *str = (char_u *)msg.lParam;
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
1893 if (str == NULL || *str == NUL)
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
1894 {
18788
e1f4e9d78a6a patch 8.1.2383: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents: 18773
diff changeset
1895 // Message can't be ours, forward it. Fixes problem with Ultramon
e1f4e9d78a6a patch 8.1.2383: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents: 18773
diff changeset
1896 // 3.0.4
27283
b4d92a69035b patch 8.2.4170: MS-Windows: still using old message API calls
Bram Moolenaar <Bram@vim.org>
parents: 27281
diff changeset
1897 DispatchMessageW(&msg);
8140
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
1898 }
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
1899 else
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
1900 {
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
1901 add_to_input_buf(str, (int)STRLEN(str));
18788
e1f4e9d78a6a patch 8.1.2383: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents: 18773
diff changeset
1902 vim_free(str); // was allocated in CVim::SendKeys()
8140
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
1903 }
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
1904 return;
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
1905 }
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
1906 #endif
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
1907
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
1908 #ifdef MSWIN_FIND_REPLACE
18788
e1f4e9d78a6a patch 8.1.2383: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents: 18773
diff changeset
1909 // Don't process messages used by the dialog
27283
b4d92a69035b patch 8.2.4170: MS-Windows: still using old message API calls
Bram Moolenaar <Bram@vim.org>
parents: 27281
diff changeset
1910 if (s_findrep_hwnd != NULL && IsDialogMessageW(s_findrep_hwnd, &msg))
8140
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
1911 {
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
1912 HandleMouseHide(msg.message, msg.lParam);
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
1913 return;
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
1914 }
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
1915 #endif
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
1916
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
1917 /*
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
1918 * Check if it's a special key that we recognise. If not, call
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
1919 * TranslateMessage().
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
1920 */
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
1921 if (msg.message == WM_KEYDOWN || msg.message == WM_SYSKEYDOWN)
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
1922 {
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
1923 vk = (int) msg.wParam;
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
1924
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
1925 /*
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
1926 * Handle dead keys in special conditions in other cases we let Windows
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
1927 * handle them and do not interfere.
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
1928 *
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
1929 * The dead_key flag must be reset on several occasions:
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
1930 * - in _OnChar() (or _OnSysChar()) as any dead key was necessarily
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
1931 * consumed at that point (This is when we let Windows combine the
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
1932 * dead character on its own)
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
1933 *
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
1934 * - Before doing something special such as regenerating keypresses to
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
1935 * expel the dead character as this could trigger an infinite loop if
27249
d5570658f18d patch 8.2.4153: MS-Windows: Global IME is no longer supported
Bram Moolenaar <Bram@vim.org>
parents: 27229
diff changeset
1936 * for some reason TranslateMessage() do not trigger a call
8140
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
1937 * immediately to _OnChar() (or _OnSysChar()).
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
1938 */
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
1939 if (dead_key)
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
1940 {
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
1941 /*
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
1942 * If a dead key was pressed and the user presses VK_SPACE,
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
1943 * VK_BACK, or VK_ESCAPE it means that he actually wants to deal
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
1944 * with the dead char now, so do nothing special and let Windows
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
1945 * handle it.
28586
3fd992496509 patch 8.2.4817: Win32 GUI: modifiers are not always used
Bram Moolenaar <Bram@vim.org>
parents: 28574
diff changeset
1946 *
3fd992496509 patch 8.2.4817: Win32 GUI: modifiers are not always used
Bram Moolenaar <Bram@vim.org>
parents: 28574
diff changeset
1947 * Note that VK_SPACE combines with the dead_key's character and
3fd992496509 patch 8.2.4817: Win32 GUI: modifiers are not always used
Bram Moolenaar <Bram@vim.org>
parents: 28574
diff changeset
1948 * only one WM_CHAR will be generated by TranslateMessage(), in
3fd992496509 patch 8.2.4817: Win32 GUI: modifiers are not always used
Bram Moolenaar <Bram@vim.org>
parents: 28574
diff changeset
1949 * the two other cases two WM_CHAR will be generated: the dead
3fd992496509 patch 8.2.4817: Win32 GUI: modifiers are not always used
Bram Moolenaar <Bram@vim.org>
parents: 28574
diff changeset
1950 * char and VK_BACK or VK_ESCAPE. That is most likely what the
3fd992496509 patch 8.2.4817: Win32 GUI: modifiers are not always used
Bram Moolenaar <Bram@vim.org>
parents: 28574
diff changeset
1951 * user expects.
8140
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
1952 */
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
1953 if ((vk == VK_SPACE || vk == VK_BACK || vk == VK_ESCAPE))
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
1954 {
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
1955 dead_key = 0;
28586
3fd992496509 patch 8.2.4817: Win32 GUI: modifiers are not always used
Bram Moolenaar <Bram@vim.org>
parents: 28574
diff changeset
1956 TranslateMessage(&msg);
3fd992496509 patch 8.2.4817: Win32 GUI: modifiers are not always used
Bram Moolenaar <Bram@vim.org>
parents: 28574
diff changeset
1957 return;
8140
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
1958 }
18788
e1f4e9d78a6a patch 8.1.2383: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents: 18773
diff changeset
1959 // In modes where we are not typing, dead keys should behave
e1f4e9d78a6a patch 8.1.2383: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents: 18773
diff changeset
1960 // normally
28773
d770568e6c98 patch 8.2.4911: the mode #defines are not clearly named
Bram Moolenaar <Bram@vim.org>
parents: 28755
diff changeset
1961 else if ((get_real_state()
d770568e6c98 patch 8.2.4911: the mode #defines are not clearly named
Bram Moolenaar <Bram@vim.org>
parents: 28755
diff changeset
1962 & (MODE_INSERT | MODE_CMDLINE | MODE_SELECT)) == 0)
8140
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
1963 {
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
1964 outputDeadKey_rePost(msg);
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
1965 return;
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
1966 }
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
1967 }
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
1968
18788
e1f4e9d78a6a patch 8.1.2383: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents: 18773
diff changeset
1969 // Check for CTRL-BREAK
8140
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
1970 if (vk == VK_CANCEL)
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
1971 {
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
1972 trash_input_buf();
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
1973 got_int = TRUE;
12066
8ad282dee649 patch 8.0.0913: MS-Windows: CTRL-C kills shell in terminal window
Christian Brabandt <cb@256bit.org>
parents: 11745
diff changeset
1974 ctrl_break_was_pressed = TRUE;
8140
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
1975 string[0] = Ctrl_C;
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
1976 add_to_input_buf(string, 1);
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
1977 }
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
1978
28566
893251eed714 patch 8.2.4807: processing key eveints in Win32 GUI is not ideal
Bram Moolenaar <Bram@vim.org>
parents: 28439
diff changeset
1979 // This is an IME event or a synthetic keystroke, let Windows handle it.
893251eed714 patch 8.2.4807: processing key eveints in Win32 GUI is not ideal
Bram Moolenaar <Bram@vim.org>
parents: 28439
diff changeset
1980 if (vk == VK_PROCESSKEY || vk == VK_PACKET)
893251eed714 patch 8.2.4807: processing key eveints in Win32 GUI is not ideal
Bram Moolenaar <Bram@vim.org>
parents: 28439
diff changeset
1981 {
893251eed714 patch 8.2.4807: processing key eveints in Win32 GUI is not ideal
Bram Moolenaar <Bram@vim.org>
parents: 28439
diff changeset
1982 TranslateMessage(&msg);
893251eed714 patch 8.2.4807: processing key eveints in Win32 GUI is not ideal
Bram Moolenaar <Bram@vim.org>
parents: 28439
diff changeset
1983 return;
893251eed714 patch 8.2.4807: processing key eveints in Win32 GUI is not ideal
Bram Moolenaar <Bram@vim.org>
parents: 28439
diff changeset
1984 }
893251eed714 patch 8.2.4807: processing key eveints in Win32 GUI is not ideal
Bram Moolenaar <Bram@vim.org>
parents: 28439
diff changeset
1985
8140
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
1986 for (i = 0; special_keys[i].key_sym != 0; i++)
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
1987 {
18788
e1f4e9d78a6a patch 8.1.2383: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents: 18773
diff changeset
1988 // ignore VK_SPACE when ALT key pressed: system menu
8140
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
1989 if (special_keys[i].key_sym == vk
28639
8ea5468f9b5a patch 8.2.4843: treating CTRL + ALT as AltGr is not backwards compatible
Bram Moolenaar <Bram@vim.org>
parents: 28586
diff changeset
1990 && (vk != VK_SPACE || !(GetKeyState(VK_LMENU) & 0x8000)))
8140
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
1991 {
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
1992 /*
9252
c25898cc99c1 commit https://github.com/vim/vim/commit/945ec093cd4ddefab930239990564b12eb232153
Christian Brabandt <cb@256bit.org>
parents: 9236
diff changeset
1993 * Behave as expected if we have a dead key and the special key
8140
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
1994 * is a key that would normally trigger the dead key nominal
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
1995 * character output (such as a NUMPAD printable character or
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
1996 * the TAB key, etc...).
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
1997 */
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
1998 if (dead_key && (special_keys[i].vim_code0 == 'K'
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
1999 || vk == VK_TAB || vk == CAR))
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
2000 {
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
2001 outputDeadKey_rePost(msg);
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
2002 return;
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
2003 }
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
2004
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
2005 #ifdef FEAT_MENU
18788
e1f4e9d78a6a patch 8.1.2383: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents: 18773
diff changeset
2006 // Check for <F10>: Windows selects the menu. When <F10> is
e1f4e9d78a6a patch 8.1.2383: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents: 18773
diff changeset
2007 // mapped we want to use the mapping instead.
8140
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
2008 if (vk == VK_F10
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
2009 && gui.menu_is_active
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
2010 && check_map(k10, State, FALSE, TRUE, FALSE,
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
2011 NULL, NULL) == NULL)
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
2012 break;
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
2013 #endif
28586
3fd992496509 patch 8.2.4817: Win32 GUI: modifiers are not always used
Bram Moolenaar <Bram@vim.org>
parents: 28574
diff changeset
2014 modifiers = get_active_modifiers();
8140
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
2015
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
2016 if (special_keys[i].vim_code1 == NUL)
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
2017 key = special_keys[i].vim_code0;
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
2018 else
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
2019 key = TO_SPECIAL(special_keys[i].vim_code0,
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
2020 special_keys[i].vim_code1);
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
2021 key = simplify_key(key, &modifiers);
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
2022 if (key == CSI)
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
2023 key = K_CSI;
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
2024
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
2025 if (modifiers)
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
2026 {
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
2027 string[0] = CSI;
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
2028 string[1] = KS_MODIFIER;
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
2029 string[2] = modifiers;
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
2030 add_to_input_buf(string, 3);
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
2031 }
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
2032
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
2033 if (IS_SPECIAL(key))
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
2034 {
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
2035 string[0] = CSI;
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
2036 string[1] = K_SECOND(key);
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
2037 string[2] = K_THIRD(key);
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
2038 add_to_input_buf(string, 3);
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
2039 }
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
2040 else
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
2041 {
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
2042 int len;
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
2043
18788
e1f4e9d78a6a patch 8.1.2383: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents: 18773
diff changeset
2044 // Handle "key" as a Unicode character.
8140
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
2045 len = char_to_string(key, string, 40, FALSE);
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
2046 add_to_input_buf(string, len);
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
2047 }
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
2048 break;
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
2049 }
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
2050 }
28566
893251eed714 patch 8.2.4807: processing key eveints in Win32 GUI is not ideal
Bram Moolenaar <Bram@vim.org>
parents: 28439
diff changeset
2051
893251eed714 patch 8.2.4807: processing key eveints in Win32 GUI is not ideal
Bram Moolenaar <Bram@vim.org>
parents: 28439
diff changeset
2052 // Not a special key.
8140
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
2053 if (special_keys[i].key_sym == 0)
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
2054 {
28566
893251eed714 patch 8.2.4807: processing key eveints in Win32 GUI is not ideal
Bram Moolenaar <Bram@vim.org>
parents: 28439
diff changeset
2055 WCHAR ch[8];
893251eed714 patch 8.2.4807: processing key eveints in Win32 GUI is not ideal
Bram Moolenaar <Bram@vim.org>
parents: 28439
diff changeset
2056 int len;
893251eed714 patch 8.2.4807: processing key eveints in Win32 GUI is not ideal
Bram Moolenaar <Bram@vim.org>
parents: 28439
diff changeset
2057 int i;
893251eed714 patch 8.2.4807: processing key eveints in Win32 GUI is not ideal
Bram Moolenaar <Bram@vim.org>
parents: 28439
diff changeset
2058 UINT scan_code;
893251eed714 patch 8.2.4807: processing key eveints in Win32 GUI is not ideal
Bram Moolenaar <Bram@vim.org>
parents: 28439
diff changeset
2059
29283
fed16adfe353 patch 8.2.5159: fix for CTRL-key combinations causes problems
Bram Moolenaar <Bram@vim.org>
parents: 29279
diff changeset
2060 // Construct the state table with only a few modifiers, we don't
fed16adfe353 patch 8.2.5159: fix for CTRL-key combinations causes problems
Bram Moolenaar <Bram@vim.org>
parents: 29279
diff changeset
2061 // really care about the presence of Ctrl/Alt as those modifiers are
fed16adfe353 patch 8.2.5159: fix for CTRL-key combinations causes problems
Bram Moolenaar <Bram@vim.org>
parents: 29279
diff changeset
2062 // handled by Vim separately.
28566
893251eed714 patch 8.2.4807: processing key eveints in Win32 GUI is not ideal
Bram Moolenaar <Bram@vim.org>
parents: 28439
diff changeset
2063 memset(keyboard_state, 0, 256);
893251eed714 patch 8.2.4807: processing key eveints in Win32 GUI is not ideal
Bram Moolenaar <Bram@vim.org>
parents: 28439
diff changeset
2064 if (GetKeyState(VK_SHIFT) & 0x8000)
893251eed714 patch 8.2.4807: processing key eveints in Win32 GUI is not ideal
Bram Moolenaar <Bram@vim.org>
parents: 28439
diff changeset
2065 keyboard_state[VK_SHIFT] = 0x80;
28574
7c96d7924ea5 patch 8.2.4811: Win32 GUI: caps lock doesn't work
Bram Moolenaar <Bram@vim.org>
parents: 28566
diff changeset
2066 if (GetKeyState(VK_CAPITAL) & 0x0001)
7c96d7924ea5 patch 8.2.4811: Win32 GUI: caps lock doesn't work
Bram Moolenaar <Bram@vim.org>
parents: 28566
diff changeset
2067 keyboard_state[VK_CAPITAL] = 0x01;
29283
fed16adfe353 patch 8.2.5159: fix for CTRL-key combinations causes problems
Bram Moolenaar <Bram@vim.org>
parents: 29279
diff changeset
2068 // Alt-Gr is synthesized as Alt + Ctrl.
fed16adfe353 patch 8.2.5159: fix for CTRL-key combinations causes problems
Bram Moolenaar <Bram@vim.org>
parents: 29279
diff changeset
2069 if ((GetKeyState(VK_RMENU) & 0x8000)
fed16adfe353 patch 8.2.5159: fix for CTRL-key combinations causes problems
Bram Moolenaar <Bram@vim.org>
parents: 29279
diff changeset
2070 && (GetKeyState(VK_CONTROL) & 0x8000))
fed16adfe353 patch 8.2.5159: fix for CTRL-key combinations causes problems
Bram Moolenaar <Bram@vim.org>
parents: 29279
diff changeset
2071 {
28566
893251eed714 patch 8.2.4807: processing key eveints in Win32 GUI is not ideal
Bram Moolenaar <Bram@vim.org>
parents: 28439
diff changeset
2072 keyboard_state[VK_MENU] = 0x80;
29283
fed16adfe353 patch 8.2.5159: fix for CTRL-key combinations causes problems
Bram Moolenaar <Bram@vim.org>
parents: 29279
diff changeset
2073 keyboard_state[VK_CONTROL] = 0x80;
fed16adfe353 patch 8.2.5159: fix for CTRL-key combinations causes problems
Bram Moolenaar <Bram@vim.org>
parents: 29279
diff changeset
2074 }
28566
893251eed714 patch 8.2.4807: processing key eveints in Win32 GUI is not ideal
Bram Moolenaar <Bram@vim.org>
parents: 28439
diff changeset
2075
893251eed714 patch 8.2.4807: processing key eveints in Win32 GUI is not ideal
Bram Moolenaar <Bram@vim.org>
parents: 28439
diff changeset
2076 // Translate the virtual key according to the current keyboard
893251eed714 patch 8.2.4807: processing key eveints in Win32 GUI is not ideal
Bram Moolenaar <Bram@vim.org>
parents: 28439
diff changeset
2077 // layout.
893251eed714 patch 8.2.4807: processing key eveints in Win32 GUI is not ideal
Bram Moolenaar <Bram@vim.org>
parents: 28439
diff changeset
2078 scan_code = MapVirtualKey(vk, MAPVK_VK_TO_VSC);
893251eed714 patch 8.2.4807: processing key eveints in Win32 GUI is not ideal
Bram Moolenaar <Bram@vim.org>
parents: 28439
diff changeset
2079 // Convert the scan-code into a sequence of zero or more unicode
893251eed714 patch 8.2.4807: processing key eveints in Win32 GUI is not ideal
Bram Moolenaar <Bram@vim.org>
parents: 28439
diff changeset
2080 // codepoints.
893251eed714 patch 8.2.4807: processing key eveints in Win32 GUI is not ideal
Bram Moolenaar <Bram@vim.org>
parents: 28439
diff changeset
2081 // If this is a dead key ToUnicode returns a negative value.
893251eed714 patch 8.2.4807: processing key eveints in Win32 GUI is not ideal
Bram Moolenaar <Bram@vim.org>
parents: 28439
diff changeset
2082 len = ToUnicode(vk, scan_code, keyboard_state, ch, ARRAY_LENGTH(ch),
893251eed714 patch 8.2.4807: processing key eveints in Win32 GUI is not ideal
Bram Moolenaar <Bram@vim.org>
parents: 28439
diff changeset
2083 0);
893251eed714 patch 8.2.4807: processing key eveints in Win32 GUI is not ideal
Bram Moolenaar <Bram@vim.org>
parents: 28439
diff changeset
2084 dead_key = len < 0;
893251eed714 patch 8.2.4807: processing key eveints in Win32 GUI is not ideal
Bram Moolenaar <Bram@vim.org>
parents: 28439
diff changeset
2085
893251eed714 patch 8.2.4807: processing key eveints in Win32 GUI is not ideal
Bram Moolenaar <Bram@vim.org>
parents: 28439
diff changeset
2086 if (len <= 0)
893251eed714 patch 8.2.4807: processing key eveints in Win32 GUI is not ideal
Bram Moolenaar <Bram@vim.org>
parents: 28439
diff changeset
2087 return;
893251eed714 patch 8.2.4807: processing key eveints in Win32 GUI is not ideal
Bram Moolenaar <Bram@vim.org>
parents: 28439
diff changeset
2088
893251eed714 patch 8.2.4807: processing key eveints in Win32 GUI is not ideal
Bram Moolenaar <Bram@vim.org>
parents: 28439
diff changeset
2089 // Post the message as TranslateMessage would do.
893251eed714 patch 8.2.4807: processing key eveints in Win32 GUI is not ideal
Bram Moolenaar <Bram@vim.org>
parents: 28439
diff changeset
2090 if (msg.message == WM_KEYDOWN)
893251eed714 patch 8.2.4807: processing key eveints in Win32 GUI is not ideal
Bram Moolenaar <Bram@vim.org>
parents: 28439
diff changeset
2091 {
893251eed714 patch 8.2.4807: processing key eveints in Win32 GUI is not ideal
Bram Moolenaar <Bram@vim.org>
parents: 28439
diff changeset
2092 for (i = 0; i < len; i++)
893251eed714 patch 8.2.4807: processing key eveints in Win32 GUI is not ideal
Bram Moolenaar <Bram@vim.org>
parents: 28439
diff changeset
2093 PostMessageW(msg.hwnd, WM_CHAR, ch[i], msg.lParam);
8140
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
2094 }
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
2095 else
28566
893251eed714 patch 8.2.4807: processing key eveints in Win32 GUI is not ideal
Bram Moolenaar <Bram@vim.org>
parents: 28439
diff changeset
2096 {
893251eed714 patch 8.2.4807: processing key eveints in Win32 GUI is not ideal
Bram Moolenaar <Bram@vim.org>
parents: 28439
diff changeset
2097 for (i = 0; i < len; i++)
893251eed714 patch 8.2.4807: processing key eveints in Win32 GUI is not ideal
Bram Moolenaar <Bram@vim.org>
parents: 28439
diff changeset
2098 PostMessageW(msg.hwnd, WM_SYSCHAR, ch[i], msg.lParam);
893251eed714 patch 8.2.4807: processing key eveints in Win32 GUI is not ideal
Bram Moolenaar <Bram@vim.org>
parents: 28439
diff changeset
2099 }
8140
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
2100 }
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
2101 }
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
2102 #ifdef FEAT_MBYTE_IME
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
2103 else if (msg.message == WM_IME_NOTIFY)
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
2104 _OnImeNotify(msg.hwnd, (DWORD)msg.wParam, (DWORD)msg.lParam);
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
2105 else if (msg.message == WM_KEYUP && im_get_status())
18788
e1f4e9d78a6a patch 8.1.2383: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents: 18773
diff changeset
2106 // added for non-MS IME (Yasuhiro Matsumoto)
27249
d5570658f18d patch 8.2.4153: MS-Windows: Global IME is no longer supported
Bram Moolenaar <Bram@vim.org>
parents: 27229
diff changeset
2107 TranslateMessage(&msg);
8140
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
2108 #endif
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
2109
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
2110 #ifdef FEAT_MENU
18788
e1f4e9d78a6a patch 8.1.2383: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents: 18773
diff changeset
2111 // Check for <F10>: Default effect is to select the menu. When <F10> is
e1f4e9d78a6a patch 8.1.2383: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents: 18773
diff changeset
2112 // mapped we need to stop it here to avoid strange effects (e.g., for the
e1f4e9d78a6a patch 8.1.2383: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents: 18773
diff changeset
2113 // key-up event)
8140
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
2114 if (vk != VK_F10 || check_map(k10, State, FALSE, TRUE, FALSE,
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
2115 NULL, NULL) == NULL)
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
2116 #endif
27283
b4d92a69035b patch 8.2.4170: MS-Windows: still using old message API calls
Bram Moolenaar <Bram@vim.org>
parents: 27281
diff changeset
2117 DispatchMessageW(&msg);
8140
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
2118 }
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
2119
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
2120 /*
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
2121 * Catch up with any queued events. This may put keyboard input into the
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
2122 * input buffer, call resize call-backs, trigger timers etc. If there is
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
2123 * nothing in the event queue (& no timers pending), then we return
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
2124 * immediately.
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
2125 */
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
2126 void
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
2127 gui_mch_update(void)
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
2128 {
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
2129 MSG msg;
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
2130
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
2131 if (!s_busy_processing)
27283
b4d92a69035b patch 8.2.4170: MS-Windows: still using old message API calls
Bram Moolenaar <Bram@vim.org>
parents: 27281
diff changeset
2132 while (PeekMessageW(&msg, NULL, 0, 0, PM_NOREMOVE)
8140
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
2133 && !vim_is_input_buf_full())
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
2134 process_message();
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
2135 }
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
2136
9179
5e18efdad322 commit https://github.com/vim/vim/commit/4231da403e3c879dd6ac261e51f4ca60813935e3
Christian Brabandt <cb@256bit.org>
parents: 9017
diff changeset
2137 static void
5e18efdad322 commit https://github.com/vim/vim/commit/4231da403e3c879dd6ac261e51f4ca60813935e3
Christian Brabandt <cb@256bit.org>
parents: 9017
diff changeset
2138 remove_any_timer(void)
5e18efdad322 commit https://github.com/vim/vim/commit/4231da403e3c879dd6ac261e51f4ca60813935e3
Christian Brabandt <cb@256bit.org>
parents: 9017
diff changeset
2139 {
5e18efdad322 commit https://github.com/vim/vim/commit/4231da403e3c879dd6ac261e51f4ca60813935e3
Christian Brabandt <cb@256bit.org>
parents: 9017
diff changeset
2140 MSG msg;
5e18efdad322 commit https://github.com/vim/vim/commit/4231da403e3c879dd6ac261e51f4ca60813935e3
Christian Brabandt <cb@256bit.org>
parents: 9017
diff changeset
2141
5e18efdad322 commit https://github.com/vim/vim/commit/4231da403e3c879dd6ac261e51f4ca60813935e3
Christian Brabandt <cb@256bit.org>
parents: 9017
diff changeset
2142 if (s_wait_timer != 0 && !s_timed_out)
5e18efdad322 commit https://github.com/vim/vim/commit/4231da403e3c879dd6ac261e51f4ca60813935e3
Christian Brabandt <cb@256bit.org>
parents: 9017
diff changeset
2143 {
5e18efdad322 commit https://github.com/vim/vim/commit/4231da403e3c879dd6ac261e51f4ca60813935e3
Christian Brabandt <cb@256bit.org>
parents: 9017
diff changeset
2144 KillTimer(NULL, s_wait_timer);
5e18efdad322 commit https://github.com/vim/vim/commit/4231da403e3c879dd6ac261e51f4ca60813935e3
Christian Brabandt <cb@256bit.org>
parents: 9017
diff changeset
2145
18788
e1f4e9d78a6a patch 8.1.2383: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents: 18773
diff changeset
2146 // Eat spurious WM_TIMER messages
27283
b4d92a69035b patch 8.2.4170: MS-Windows: still using old message API calls
Bram Moolenaar <Bram@vim.org>
parents: 27281
diff changeset
2147 while (PeekMessageW(&msg, s_hwnd, WM_TIMER, WM_TIMER, PM_REMOVE))
9179
5e18efdad322 commit https://github.com/vim/vim/commit/4231da403e3c879dd6ac261e51f4ca60813935e3
Christian Brabandt <cb@256bit.org>
parents: 9017
diff changeset
2148 ;
5e18efdad322 commit https://github.com/vim/vim/commit/4231da403e3c879dd6ac261e51f4ca60813935e3
Christian Brabandt <cb@256bit.org>
parents: 9017
diff changeset
2149 s_wait_timer = 0;
5e18efdad322 commit https://github.com/vim/vim/commit/4231da403e3c879dd6ac261e51f4ca60813935e3
Christian Brabandt <cb@256bit.org>
parents: 9017
diff changeset
2150 }
5e18efdad322 commit https://github.com/vim/vim/commit/4231da403e3c879dd6ac261e51f4ca60813935e3
Christian Brabandt <cb@256bit.org>
parents: 9017
diff changeset
2151 }
5e18efdad322 commit https://github.com/vim/vim/commit/4231da403e3c879dd6ac261e51f4ca60813935e3
Christian Brabandt <cb@256bit.org>
parents: 9017
diff changeset
2152
8140
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
2153 /*
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
2154 * GUI input routine called by gui_wait_for_chars(). Waits for a character
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
2155 * from the keyboard.
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
2156 * wtime == -1 Wait forever.
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
2157 * wtime == 0 This should never happen.
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
2158 * wtime > 0 Wait wtime milliseconds for a character.
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
2159 * Returns OK if a character was found to be available within the given time,
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
2160 * or FAIL otherwise.
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
2161 */
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
2162 int
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
2163 gui_mch_wait_for_chars(int wtime)
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
2164 {
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
2165 int focus;
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
2166
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
2167 s_timed_out = FALSE;
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
2168
15665
31367ce5aac7 patch 8.1.0840: getchar(0) never returns a character in the terminal
Bram Moolenaar <Bram@vim.org>
parents: 15601
diff changeset
2169 if (wtime >= 0)
31367ce5aac7 patch 8.1.0840: getchar(0) never returns a character in the terminal
Bram Moolenaar <Bram@vim.org>
parents: 15601
diff changeset
2170 {
31367ce5aac7 patch 8.1.0840: getchar(0) never returns a character in the terminal
Bram Moolenaar <Bram@vim.org>
parents: 15601
diff changeset
2171 // Don't do anything while processing a (scroll) message.
8140
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
2172 if (s_busy_processing)
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
2173 return FAIL;
15665
31367ce5aac7 patch 8.1.0840: getchar(0) never returns a character in the terminal
Bram Moolenaar <Bram@vim.org>
parents: 15601
diff changeset
2174
31367ce5aac7 patch 8.1.0840: getchar(0) never returns a character in the terminal
Bram Moolenaar <Bram@vim.org>
parents: 15601
diff changeset
2175 // When called with "wtime" zero, just want one msec.
27525
27694b525305 patch 8.2.4290: MS-Windows: using type casts for timer IDs
Bram Moolenaar <Bram@vim.org>
parents: 27455
diff changeset
2176 s_wait_timer = SetTimer(NULL, 0, (UINT)(wtime == 0 ? 1 : wtime),
27694b525305 patch 8.2.4290: MS-Windows: using type casts for timer IDs
Bram Moolenaar <Bram@vim.org>
parents: 27455
diff changeset
2177 _OnTimer);
8140
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
2178 }
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
2179
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
2180 allow_scrollbar = TRUE;
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
2181
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
2182 focus = gui.in_focus;
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
2183 while (!s_timed_out)
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
2184 {
17958
1d69e11db360 patch 8.1.1975: MS-Windows GUI responds slowly to timer
Bram Moolenaar <Bram@vim.org>
parents: 16827
diff changeset
2185 // Stop or start blinking when focus changes
8140
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
2186 if (gui.in_focus != focus)
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
2187 {
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
2188 if (gui.in_focus)
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
2189 gui_mch_start_blink();
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
2190 else
13152
f4c3a7f410f4 patch 8.0.1450: GUI: endless loop when stopping cursor blinking
Christian Brabandt <cb@256bit.org>
parents: 13150
diff changeset
2191 gui_mch_stop_blink(TRUE);
8140
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
2192 focus = gui.in_focus;
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
2193 }
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
2194
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
2195 if (s_need_activate)
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
2196 {
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
2197 (void)SetForegroundWindow(s_hwnd);
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
2198 s_need_activate = FALSE;
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
2199 }
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
2200
9179
5e18efdad322 commit https://github.com/vim/vim/commit/4231da403e3c879dd6ac261e51f4ca60813935e3
Christian Brabandt <cb@256bit.org>
parents: 9017
diff changeset
2201 #ifdef FEAT_TIMERS
5e18efdad322 commit https://github.com/vim/vim/commit/4231da403e3c879dd6ac261e51f4ca60813935e3
Christian Brabandt <cb@256bit.org>
parents: 9017
diff changeset
2202 did_add_timer = FALSE;
5e18efdad322 commit https://github.com/vim/vim/commit/4231da403e3c879dd6ac261e51f4ca60813935e3
Christian Brabandt <cb@256bit.org>
parents: 9017
diff changeset
2203 #endif
8140
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
2204 #ifdef MESSAGE_QUEUE
17958
1d69e11db360 patch 8.1.1975: MS-Windows GUI responds slowly to timer
Bram Moolenaar <Bram@vim.org>
parents: 16827
diff changeset
2205 // Check channel I/O while waiting for a message.
8222
4f0677020a43 commit https://github.com/vim/vim/commit/9186a276222ea8a7c88f4092ac5b4201381f4e20
Christian Brabandt <cb@256bit.org>
parents: 8172
diff changeset
2206 for (;;)
4f0677020a43 commit https://github.com/vim/vim/commit/9186a276222ea8a7c88f4092ac5b4201381f4e20
Christian Brabandt <cb@256bit.org>
parents: 8172
diff changeset
2207 {
4f0677020a43 commit https://github.com/vim/vim/commit/9186a276222ea8a7c88f4092ac5b4201381f4e20
Christian Brabandt <cb@256bit.org>
parents: 8172
diff changeset
2208 MSG msg;
4f0677020a43 commit https://github.com/vim/vim/commit/9186a276222ea8a7c88f4092ac5b4201381f4e20
Christian Brabandt <cb@256bit.org>
parents: 8172
diff changeset
2209
4f0677020a43 commit https://github.com/vim/vim/commit/9186a276222ea8a7c88f4092ac5b4201381f4e20
Christian Brabandt <cb@256bit.org>
parents: 8172
diff changeset
2210 parse_queued_messages();
18773
38a3bef525e6 patch 8.1.2376: preprocessor indents are incorrect
Bram Moolenaar <Bram@vim.org>
parents: 18763
diff changeset
2211 # ifdef FEAT_TIMERS
17958
1d69e11db360 patch 8.1.1975: MS-Windows GUI responds slowly to timer
Bram Moolenaar <Bram@vim.org>
parents: 16827
diff changeset
2212 if (did_add_timer)
1d69e11db360 patch 8.1.1975: MS-Windows GUI responds slowly to timer
Bram Moolenaar <Bram@vim.org>
parents: 16827
diff changeset
2213 break;
18773
38a3bef525e6 patch 8.1.2376: preprocessor indents are incorrect
Bram Moolenaar <Bram@vim.org>
parents: 18763
diff changeset
2214 # endif
27283
b4d92a69035b patch 8.2.4170: MS-Windows: still using old message API calls
Bram Moolenaar <Bram@vim.org>
parents: 27281
diff changeset
2215 if (PeekMessageW(&msg, NULL, 0, 0, PM_NOREMOVE))
12090
c4caf49c8bf4 patch 8.0.0925: MS-Windows GUI: channel I/O not handled right away
Christian Brabandt <cb@256bit.org>
parents: 12066
diff changeset
2216 {
c4caf49c8bf4 patch 8.0.0925: MS-Windows GUI: channel I/O not handled right away
Christian Brabandt <cb@256bit.org>
parents: 12066
diff changeset
2217 process_message();
8222
4f0677020a43 commit https://github.com/vim/vim/commit/9186a276222ea8a7c88f4092ac5b4201381f4e20
Christian Brabandt <cb@256bit.org>
parents: 8172
diff changeset
2218 break;
12090
c4caf49c8bf4 patch 8.0.0925: MS-Windows GUI: channel I/O not handled right away
Christian Brabandt <cb@256bit.org>
parents: 12066
diff changeset
2219 }
17958
1d69e11db360 patch 8.1.1975: MS-Windows GUI responds slowly to timer
Bram Moolenaar <Bram@vim.org>
parents: 16827
diff changeset
2220 else if (input_available()
22922
5d8990ad211e patch 8.2.2008: MS-Windows GUI: handling channel messages lags
Bram Moolenaar <Bram@vim.org>
parents: 22748
diff changeset
2221 // TODO: The 10 msec is a compromise between laggy response
5d8990ad211e patch 8.2.2008: MS-Windows GUI: handling channel messages lags
Bram Moolenaar <Bram@vim.org>
parents: 22748
diff changeset
2222 // and consuming more CPU time. Better would be to handle
5d8990ad211e patch 8.2.2008: MS-Windows GUI: handling channel messages lags
Bram Moolenaar <Bram@vim.org>
parents: 22748
diff changeset
2223 // channel messages when they arrive.
5d8990ad211e patch 8.2.2008: MS-Windows GUI: handling channel messages lags
Bram Moolenaar <Bram@vim.org>
parents: 22748
diff changeset
2224 || MsgWaitForMultipleObjects(0, NULL, FALSE, 10,
17958
1d69e11db360 patch 8.1.1975: MS-Windows GUI responds slowly to timer
Bram Moolenaar <Bram@vim.org>
parents: 16827
diff changeset
2225 QS_ALLINPUT) != WAIT_TIMEOUT)
12090
c4caf49c8bf4 patch 8.0.0925: MS-Windows GUI: channel I/O not handled right away
Christian Brabandt <cb@256bit.org>
parents: 12066
diff changeset
2226 break;
c4caf49c8bf4 patch 8.0.0925: MS-Windows GUI: channel I/O not handled right away
Christian Brabandt <cb@256bit.org>
parents: 12066
diff changeset
2227 }
c4caf49c8bf4 patch 8.0.0925: MS-Windows GUI: channel I/O not handled right away
Christian Brabandt <cb@256bit.org>
parents: 12066
diff changeset
2228 #else
17958
1d69e11db360 patch 8.1.1975: MS-Windows GUI responds slowly to timer
Bram Moolenaar <Bram@vim.org>
parents: 16827
diff changeset
2229 // Don't use gui_mch_update() because then we will spin-lock until a
1d69e11db360 patch 8.1.1975: MS-Windows GUI responds slowly to timer
Bram Moolenaar <Bram@vim.org>
parents: 16827
diff changeset
2230 // char arrives, instead we use GetMessage() to hang until an
1d69e11db360 patch 8.1.1975: MS-Windows GUI responds slowly to timer
Bram Moolenaar <Bram@vim.org>
parents: 16827
diff changeset
2231 // event arrives. No need to check for input_buf_full because we are
1d69e11db360 patch 8.1.1975: MS-Windows GUI responds slowly to timer
Bram Moolenaar <Bram@vim.org>
parents: 16827
diff changeset
2232 // returning as soon as it contains a single char -- webb
8140
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
2233 process_message();
12090
c4caf49c8bf4 patch 8.0.0925: MS-Windows GUI: channel I/O not handled right away
Christian Brabandt <cb@256bit.org>
parents: 12066
diff changeset
2234 #endif
8140
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
2235
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
2236 if (input_available())
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
2237 {
9179
5e18efdad322 commit https://github.com/vim/vim/commit/4231da403e3c879dd6ac261e51f4ca60813935e3
Christian Brabandt <cb@256bit.org>
parents: 9017
diff changeset
2238 remove_any_timer();
8140
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
2239 allow_scrollbar = FALSE;
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
2240
17958
1d69e11db360 patch 8.1.1975: MS-Windows GUI responds slowly to timer
Bram Moolenaar <Bram@vim.org>
parents: 16827
diff changeset
2241 // Clear pending mouse button, the release event may have been
1d69e11db360 patch 8.1.1975: MS-Windows GUI responds slowly to timer
Bram Moolenaar <Bram@vim.org>
parents: 16827
diff changeset
2242 // taken by the dialog window. But don't do this when getting
1d69e11db360 patch 8.1.1975: MS-Windows GUI responds slowly to timer
Bram Moolenaar <Bram@vim.org>
parents: 16827
diff changeset
2243 // focus, we need the mouse-up event then.
8140
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
2244 if (!s_getting_focus)
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
2245 s_button_pending = -1;
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
2246
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
2247 return OK;
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
2248 }
9179
5e18efdad322 commit https://github.com/vim/vim/commit/4231da403e3c879dd6ac261e51f4ca60813935e3
Christian Brabandt <cb@256bit.org>
parents: 9017
diff changeset
2249
5e18efdad322 commit https://github.com/vim/vim/commit/4231da403e3c879dd6ac261e51f4ca60813935e3
Christian Brabandt <cb@256bit.org>
parents: 9017
diff changeset
2250 #ifdef FEAT_TIMERS
5e18efdad322 commit https://github.com/vim/vim/commit/4231da403e3c879dd6ac261e51f4ca60813935e3
Christian Brabandt <cb@256bit.org>
parents: 9017
diff changeset
2251 if (did_add_timer)
5e18efdad322 commit https://github.com/vim/vim/commit/4231da403e3c879dd6ac261e51f4ca60813935e3
Christian Brabandt <cb@256bit.org>
parents: 9017
diff changeset
2252 {
17958
1d69e11db360 patch 8.1.1975: MS-Windows GUI responds slowly to timer
Bram Moolenaar <Bram@vim.org>
parents: 16827
diff changeset
2253 // Need to recompute the waiting time.
9179
5e18efdad322 commit https://github.com/vim/vim/commit/4231da403e3c879dd6ac261e51f4ca60813935e3
Christian Brabandt <cb@256bit.org>
parents: 9017
diff changeset
2254 remove_any_timer();
5e18efdad322 commit https://github.com/vim/vim/commit/4231da403e3c879dd6ac261e51f4ca60813935e3
Christian Brabandt <cb@256bit.org>
parents: 9017
diff changeset
2255 break;
5e18efdad322 commit https://github.com/vim/vim/commit/4231da403e3c879dd6ac261e51f4ca60813935e3
Christian Brabandt <cb@256bit.org>
parents: 9017
diff changeset
2256 }
5e18efdad322 commit https://github.com/vim/vim/commit/4231da403e3c879dd6ac261e51f4ca60813935e3
Christian Brabandt <cb@256bit.org>
parents: 9017
diff changeset
2257 #endif
8140
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
2258 }
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
2259 allow_scrollbar = FALSE;
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
2260 return FAIL;
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
2261 }
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
2262
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
2263 /*
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
2264 * Clear a rectangular region of the screen from text pos (row1, col1) to
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
2265 * (row2, col2) inclusive.
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
2266 */
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
2267 void
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
2268 gui_mch_clear_block(
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
2269 int row1,
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
2270 int col1,
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
2271 int row2,
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
2272 int col2)
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
2273 {
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
2274 RECT rc;
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
2275
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
2276 /*
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
2277 * Clear one extra pixel at the far right, for when bold characters have
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
2278 * spilled over to the window border.
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
2279 * Note: FillRect() excludes right and bottom of rectangle.
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
2280 */
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
2281 rc.left = FILL_X(col1);
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
2282 rc.top = FILL_Y(row1);
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
2283 rc.right = FILL_X(col2 + 1) + (col2 == Columns - 1);
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
2284 rc.bottom = FILL_Y(row2 + 1);
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
2285 clear_rect(&rc);
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
2286 }
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
2287
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
2288 /*
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
2289 * Clear the whole text window.
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
2290 */
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
2291 void
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
2292 gui_mch_clear_all(void)
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
2293 {
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
2294 RECT rc;
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
2295
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
2296 rc.left = 0;
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
2297 rc.top = 0;
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
2298 rc.right = Columns * gui.char_width + 2 * gui.border_width;
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
2299 rc.bottom = Rows * gui.char_height + 2 * gui.border_width;
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
2300 clear_rect(&rc);
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
2301 }
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
2302 /*
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
2303 * Menu stuff.
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
2304 */
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
2305
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
2306 void
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
2307 gui_mch_enable_menu(int flag)
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
2308 {
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
2309 #ifdef FEAT_MENU
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
2310 SetMenu(s_hwnd, flag ? s_menuBar : NULL);
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
2311 #endif
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
2312 }
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
2313
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
2314 void
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
2315 gui_mch_set_menu_pos(
10783
04eb70c77cf4 patch 8.0.0281: some files are still using ARGSUSED instead of UNUSED
Christian Brabandt <cb@256bit.org>
parents: 10440
diff changeset
2316 int x UNUSED,
04eb70c77cf4 patch 8.0.0281: some files are still using ARGSUSED instead of UNUSED
Christian Brabandt <cb@256bit.org>
parents: 10440
diff changeset
2317 int y UNUSED,
04eb70c77cf4 patch 8.0.0281: some files are still using ARGSUSED instead of UNUSED
Christian Brabandt <cb@256bit.org>
parents: 10440
diff changeset
2318 int w UNUSED,
04eb70c77cf4 patch 8.0.0281: some files are still using ARGSUSED instead of UNUSED
Christian Brabandt <cb@256bit.org>
parents: 10440
diff changeset
2319 int h UNUSED)
8140
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
2320 {
18788
e1f4e9d78a6a patch 8.1.2383: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents: 18773
diff changeset
2321 // It will be in the right place anyway
8140
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
2322 }
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
2323
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
2324 #if defined(FEAT_MENU) || defined(PROTO)
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
2325 /*
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
2326 * Make menu item hidden or not hidden
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
2327 */
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
2328 void
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
2329 gui_mch_menu_hidden(
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
2330 vimmenu_T *menu,
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
2331 int hidden)
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
2332 {
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
2333 /*
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
2334 * This doesn't do what we want. Hmm, just grey the menu items for now.
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
2335 */
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
2336 /*
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
2337 if (hidden)
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
2338 EnableMenuItem(s_menuBar, menu->id, MF_BYCOMMAND | MF_DISABLED);
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
2339 else
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
2340 EnableMenuItem(s_menuBar, menu->id, MF_BYCOMMAND | MF_ENABLED);
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
2341 */
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
2342 gui_mch_menu_grey(menu, hidden);
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
2343 }
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
2344
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
2345 /*
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
2346 * This is called after setting all the menus to grey/hidden or not.
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
2347 */
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
2348 void
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
2349 gui_mch_draw_menubar(void)
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
2350 {
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
2351 DrawMenuBar(s_hwnd);
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
2352 }
18788
e1f4e9d78a6a patch 8.1.2383: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents: 18773
diff changeset
2353 #endif // FEAT_MENU
8140
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
2354
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
2355 /*
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
2356 * Return the RGB value of a pixel as a long.
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
2357 */
9939
ccb6461b82df commit https://github.com/vim/vim/commit/1b58cdd160c2e0ada0f638679a2aa27e4665fc48
Christian Brabandt <cb@256bit.org>
parents: 9834
diff changeset
2358 guicolor_T
8140
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
2359 gui_mch_get_rgb(guicolor_T pixel)
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
2360 {
9939
ccb6461b82df commit https://github.com/vim/vim/commit/1b58cdd160c2e0ada0f638679a2aa27e4665fc48
Christian Brabandt <cb@256bit.org>
parents: 9834
diff changeset
2361 return (guicolor_T)((GetRValue(pixel) << 16) + (GetGValue(pixel) << 8)
ccb6461b82df commit https://github.com/vim/vim/commit/1b58cdd160c2e0ada0f638679a2aa27e4665fc48
Christian Brabandt <cb@256bit.org>
parents: 9834
diff changeset
2362 + GetBValue(pixel));
8140
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
2363 }
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
2364
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
2365 #if defined(FEAT_GUI_DIALOG) || defined(PROTO)
18788
e1f4e9d78a6a patch 8.1.2383: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents: 18773
diff changeset
2366 /*
e1f4e9d78a6a patch 8.1.2383: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents: 18773
diff changeset
2367 * Convert pixels in X to dialog units
e1f4e9d78a6a patch 8.1.2383: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents: 18773
diff changeset
2368 */
8140
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
2369 static WORD
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
2370 PixelToDialogX(int numPixels)
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
2371 {
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
2372 return (WORD)((numPixels * 4) / s_dlgfntwidth);
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
2373 }
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
2374
18788
e1f4e9d78a6a patch 8.1.2383: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents: 18773
diff changeset
2375 /*
e1f4e9d78a6a patch 8.1.2383: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents: 18773
diff changeset
2376 * Convert pixels in Y to dialog units
e1f4e9d78a6a patch 8.1.2383: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents: 18773
diff changeset
2377 */
8140
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
2378 static WORD
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
2379 PixelToDialogY(int numPixels)
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
2380 {
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
2381 return (WORD)((numPixels * 8) / s_dlgfntheight);
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
2382 }
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
2383
18788
e1f4e9d78a6a patch 8.1.2383: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents: 18773
diff changeset
2384 /*
e1f4e9d78a6a patch 8.1.2383: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents: 18773
diff changeset
2385 * Return the width in pixels of the given text in the given DC.
e1f4e9d78a6a patch 8.1.2383: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents: 18773
diff changeset
2386 */
8140
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
2387 static int
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
2388 GetTextWidth(HDC hdc, char_u *str, int len)
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
2389 {
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
2390 SIZE size;
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
2391
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
2392 GetTextExtentPoint(hdc, (LPCSTR)str, len, &size);
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
2393 return size.cx;
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
2394 }
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
2395
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
2396 /*
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
2397 * Return the width in pixels of the given text in the given DC, taking care
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
2398 * of 'encoding' to active codepage conversion.
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
2399 */
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
2400 static int
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
2401 GetTextWidthEnc(HDC hdc, char_u *str, int len)
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
2402 {
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
2403 SIZE size;
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
2404 WCHAR *wstr;
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
2405 int n;
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
2406 int wlen = len;
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
2407
16196
973070a30381 patch 8.1.1103: MS-Windows: old API calls are no longer needed
Bram Moolenaar <Bram@vim.org>
parents: 16162
diff changeset
2408 wstr = enc_to_utf16(str, &wlen);
973070a30381 patch 8.1.1103: MS-Windows: old API calls are no longer needed
Bram Moolenaar <Bram@vim.org>
parents: 16162
diff changeset
2409 if (wstr == NULL)
973070a30381 patch 8.1.1103: MS-Windows: old API calls are no longer needed
Bram Moolenaar <Bram@vim.org>
parents: 16162
diff changeset
2410 return 0;
973070a30381 patch 8.1.1103: MS-Windows: old API calls are no longer needed
Bram Moolenaar <Bram@vim.org>
parents: 16162
diff changeset
2411
973070a30381 patch 8.1.1103: MS-Windows: old API calls are no longer needed
Bram Moolenaar <Bram@vim.org>
parents: 16162
diff changeset
2412 n = GetTextExtentPointW(hdc, wstr, wlen, &size);
973070a30381 patch 8.1.1103: MS-Windows: old API calls are no longer needed
Bram Moolenaar <Bram@vim.org>
parents: 16162
diff changeset
2413 vim_free(wstr);
973070a30381 patch 8.1.1103: MS-Windows: old API calls are no longer needed
Bram Moolenaar <Bram@vim.org>
parents: 16162
diff changeset
2414 if (n)
973070a30381 patch 8.1.1103: MS-Windows: old API calls are no longer needed
Bram Moolenaar <Bram@vim.org>
parents: 16162
diff changeset
2415 return size.cx;
973070a30381 patch 8.1.1103: MS-Windows: old API calls are no longer needed
Bram Moolenaar <Bram@vim.org>
parents: 16162
diff changeset
2416 return 0;
8140
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
2417 }
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
2418
10438
935bdb919a50 commit https://github.com/vim/vim/commit/87f3d202a90bd2d08a7afd55b3486b10bef858bb
Christian Brabandt <cb@256bit.org>
parents: 10359
diff changeset
2419 static void get_work_area(RECT *spi_rect);
935bdb919a50 commit https://github.com/vim/vim/commit/87f3d202a90bd2d08a7afd55b3486b10bef858bb
Christian Brabandt <cb@256bit.org>
parents: 10359
diff changeset
2420
8140
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
2421 /*
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
2422 * A quick little routine that will center one window over another, handy for
10438
935bdb919a50 commit https://github.com/vim/vim/commit/87f3d202a90bd2d08a7afd55b3486b10bef858bb
Christian Brabandt <cb@256bit.org>
parents: 10359
diff changeset
2423 * dialog boxes. Taken from the Win32SDK samples and modified for multiple
935bdb919a50 commit https://github.com/vim/vim/commit/87f3d202a90bd2d08a7afd55b3486b10bef858bb
Christian Brabandt <cb@256bit.org>
parents: 10359
diff changeset
2424 * monitors.
8140
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
2425 */
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
2426 static BOOL
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
2427 CenterWindow(
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
2428 HWND hwndChild,
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
2429 HWND hwndParent)
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
2430 {
10438
935bdb919a50 commit https://github.com/vim/vim/commit/87f3d202a90bd2d08a7afd55b3486b10bef858bb
Christian Brabandt <cb@256bit.org>
parents: 10359
diff changeset
2431 HMONITOR mon;
935bdb919a50 commit https://github.com/vim/vim/commit/87f3d202a90bd2d08a7afd55b3486b10bef858bb
Christian Brabandt <cb@256bit.org>
parents: 10359
diff changeset
2432 MONITORINFO moninfo;
935bdb919a50 commit https://github.com/vim/vim/commit/87f3d202a90bd2d08a7afd55b3486b10bef858bb
Christian Brabandt <cb@256bit.org>
parents: 10359
diff changeset
2433 RECT rChild, rParent, rScreen;
935bdb919a50 commit https://github.com/vim/vim/commit/87f3d202a90bd2d08a7afd55b3486b10bef858bb
Christian Brabandt <cb@256bit.org>
parents: 10359
diff changeset
2434 int wChild, hChild, wParent, hParent;
935bdb919a50 commit https://github.com/vim/vim/commit/87f3d202a90bd2d08a7afd55b3486b10bef858bb
Christian Brabandt <cb@256bit.org>
parents: 10359
diff changeset
2435 int xNew, yNew;
935bdb919a50 commit https://github.com/vim/vim/commit/87f3d202a90bd2d08a7afd55b3486b10bef858bb
Christian Brabandt <cb@256bit.org>
parents: 10359
diff changeset
2436 HDC hdc;
8140
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
2437
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
2438 GetWindowRect(hwndChild, &rChild);
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
2439 wChild = rChild.right - rChild.left;
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
2440 hChild = rChild.bottom - rChild.top;
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
2441
18788
e1f4e9d78a6a patch 8.1.2383: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents: 18773
diff changeset
2442 // If Vim is minimized put the window in the middle of the screen.
8140
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
2443 if (hwndParent == NULL || IsMinimized(hwndParent))
10438
935bdb919a50 commit https://github.com/vim/vim/commit/87f3d202a90bd2d08a7afd55b3486b10bef858bb
Christian Brabandt <cb@256bit.org>
parents: 10359
diff changeset
2444 get_work_area(&rParent);
8140
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
2445 else
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
2446 GetWindowRect(hwndParent, &rParent);
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
2447 wParent = rParent.right - rParent.left;
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
2448 hParent = rParent.bottom - rParent.top;
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
2449
10438
935bdb919a50 commit https://github.com/vim/vim/commit/87f3d202a90bd2d08a7afd55b3486b10bef858bb
Christian Brabandt <cb@256bit.org>
parents: 10359
diff changeset
2450 moninfo.cbSize = sizeof(MONITORINFO);
935bdb919a50 commit https://github.com/vim/vim/commit/87f3d202a90bd2d08a7afd55b3486b10bef858bb
Christian Brabandt <cb@256bit.org>
parents: 10359
diff changeset
2451 mon = MonitorFromWindow(hwndChild, MONITOR_DEFAULTTOPRIMARY);
935bdb919a50 commit https://github.com/vim/vim/commit/87f3d202a90bd2d08a7afd55b3486b10bef858bb
Christian Brabandt <cb@256bit.org>
parents: 10359
diff changeset
2452 if (mon != NULL && GetMonitorInfo(mon, &moninfo))
935bdb919a50 commit https://github.com/vim/vim/commit/87f3d202a90bd2d08a7afd55b3486b10bef858bb
Christian Brabandt <cb@256bit.org>
parents: 10359
diff changeset
2453 {
935bdb919a50 commit https://github.com/vim/vim/commit/87f3d202a90bd2d08a7afd55b3486b10bef858bb
Christian Brabandt <cb@256bit.org>
parents: 10359
diff changeset
2454 rScreen = moninfo.rcWork;
935bdb919a50 commit https://github.com/vim/vim/commit/87f3d202a90bd2d08a7afd55b3486b10bef858bb
Christian Brabandt <cb@256bit.org>
parents: 10359
diff changeset
2455 }
935bdb919a50 commit https://github.com/vim/vim/commit/87f3d202a90bd2d08a7afd55b3486b10bef858bb
Christian Brabandt <cb@256bit.org>
parents: 10359
diff changeset
2456 else
935bdb919a50 commit https://github.com/vim/vim/commit/87f3d202a90bd2d08a7afd55b3486b10bef858bb
Christian Brabandt <cb@256bit.org>
parents: 10359
diff changeset
2457 {
935bdb919a50 commit https://github.com/vim/vim/commit/87f3d202a90bd2d08a7afd55b3486b10bef858bb
Christian Brabandt <cb@256bit.org>
parents: 10359
diff changeset
2458 hdc = GetDC(hwndChild);
935bdb919a50 commit https://github.com/vim/vim/commit/87f3d202a90bd2d08a7afd55b3486b10bef858bb
Christian Brabandt <cb@256bit.org>
parents: 10359
diff changeset
2459 rScreen.left = 0;
935bdb919a50 commit https://github.com/vim/vim/commit/87f3d202a90bd2d08a7afd55b3486b10bef858bb
Christian Brabandt <cb@256bit.org>
parents: 10359
diff changeset
2460 rScreen.top = 0;
935bdb919a50 commit https://github.com/vim/vim/commit/87f3d202a90bd2d08a7afd55b3486b10bef858bb
Christian Brabandt <cb@256bit.org>
parents: 10359
diff changeset
2461 rScreen.right = GetDeviceCaps(hdc, HORZRES);
935bdb919a50 commit https://github.com/vim/vim/commit/87f3d202a90bd2d08a7afd55b3486b10bef858bb
Christian Brabandt <cb@256bit.org>
parents: 10359
diff changeset
2462 rScreen.bottom = GetDeviceCaps(hdc, VERTRES);
935bdb919a50 commit https://github.com/vim/vim/commit/87f3d202a90bd2d08a7afd55b3486b10bef858bb
Christian Brabandt <cb@256bit.org>
parents: 10359
diff changeset
2463 ReleaseDC(hwndChild, hdc);
935bdb919a50 commit https://github.com/vim/vim/commit/87f3d202a90bd2d08a7afd55b3486b10bef858bb
Christian Brabandt <cb@256bit.org>
parents: 10359
diff changeset
2464 }
935bdb919a50 commit https://github.com/vim/vim/commit/87f3d202a90bd2d08a7afd55b3486b10bef858bb
Christian Brabandt <cb@256bit.org>
parents: 10359
diff changeset
2465
935bdb919a50 commit https://github.com/vim/vim/commit/87f3d202a90bd2d08a7afd55b3486b10bef858bb
Christian Brabandt <cb@256bit.org>
parents: 10359
diff changeset
2466 xNew = rParent.left + ((wParent - wChild) / 2);
935bdb919a50 commit https://github.com/vim/vim/commit/87f3d202a90bd2d08a7afd55b3486b10bef858bb
Christian Brabandt <cb@256bit.org>
parents: 10359
diff changeset
2467 if (xNew < rScreen.left)
935bdb919a50 commit https://github.com/vim/vim/commit/87f3d202a90bd2d08a7afd55b3486b10bef858bb
Christian Brabandt <cb@256bit.org>
parents: 10359
diff changeset
2468 xNew = rScreen.left;
935bdb919a50 commit https://github.com/vim/vim/commit/87f3d202a90bd2d08a7afd55b3486b10bef858bb
Christian Brabandt <cb@256bit.org>
parents: 10359
diff changeset
2469 else if ((xNew + wChild) > rScreen.right)
935bdb919a50 commit https://github.com/vim/vim/commit/87f3d202a90bd2d08a7afd55b3486b10bef858bb
Christian Brabandt <cb@256bit.org>
parents: 10359
diff changeset
2470 xNew = rScreen.right - wChild;
935bdb919a50 commit https://github.com/vim/vim/commit/87f3d202a90bd2d08a7afd55b3486b10bef858bb
Christian Brabandt <cb@256bit.org>
parents: 10359
diff changeset
2471
935bdb919a50 commit https://github.com/vim/vim/commit/87f3d202a90bd2d08a7afd55b3486b10bef858bb
Christian Brabandt <cb@256bit.org>
parents: 10359
diff changeset
2472 yNew = rParent.top + ((hParent - hChild) / 2);
935bdb919a50 commit https://github.com/vim/vim/commit/87f3d202a90bd2d08a7afd55b3486b10bef858bb
Christian Brabandt <cb@256bit.org>
parents: 10359
diff changeset
2473 if (yNew < rScreen.top)
935bdb919a50 commit https://github.com/vim/vim/commit/87f3d202a90bd2d08a7afd55b3486b10bef858bb
Christian Brabandt <cb@256bit.org>
parents: 10359
diff changeset
2474 yNew = rScreen.top;
935bdb919a50 commit https://github.com/vim/vim/commit/87f3d202a90bd2d08a7afd55b3486b10bef858bb
Christian Brabandt <cb@256bit.org>
parents: 10359
diff changeset
2475 else if ((yNew + hChild) > rScreen.bottom)
935bdb919a50 commit https://github.com/vim/vim/commit/87f3d202a90bd2d08a7afd55b3486b10bef858bb
Christian Brabandt <cb@256bit.org>
parents: 10359
diff changeset
2476 yNew = rScreen.bottom - hChild;
8140
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
2477
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
2478 return SetWindowPos(hwndChild, NULL, xNew, yNew, 0, 0,
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
2479 SWP_NOSIZE | SWP_NOZORDER);
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
2480 }
18788
e1f4e9d78a6a patch 8.1.2383: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents: 18773
diff changeset
2481 #endif // FEAT_GUI_DIALOG
8140
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
2482
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
2483 #if defined(FEAT_TOOLBAR) || defined(PROTO)
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
2484 void
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
2485 gui_mch_show_toolbar(int showit)
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
2486 {
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
2487 if (s_toolbarhwnd == NULL)
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
2488 return;
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
2489
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
2490 if (showit)
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
2491 {
16196
973070a30381 patch 8.1.1103: MS-Windows: old API calls are no longer needed
Bram Moolenaar <Bram@vim.org>
parents: 16162
diff changeset
2492 // Enable unicode support
973070a30381 patch 8.1.1103: MS-Windows: old API calls are no longer needed
Bram Moolenaar <Bram@vim.org>
parents: 16162
diff changeset
2493 SendMessage(s_toolbarhwnd, TB_SETUNICODEFORMAT, (WPARAM)TRUE,
973070a30381 patch 8.1.1103: MS-Windows: old API calls are no longer needed
Bram Moolenaar <Bram@vim.org>
parents: 16162
diff changeset
2494 (LPARAM)0);
8140
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
2495 ShowWindow(s_toolbarhwnd, SW_SHOW);
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
2496 }
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
2497 else
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
2498 ShowWindow(s_toolbarhwnd, SW_HIDE);
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
2499 }
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
2500
18788
e1f4e9d78a6a patch 8.1.2383: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents: 18773
diff changeset
2501 // The number of bitmaps is fixed. Exit is missing!
18773
38a3bef525e6 patch 8.1.2376: preprocessor indents are incorrect
Bram Moolenaar <Bram@vim.org>
parents: 18763
diff changeset
2502 # define TOOLBAR_BITMAP_COUNT 31
8140
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
2503
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
2504 #endif
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
2505
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
2506 #if defined(FEAT_GUI_TABLINE) || defined(PROTO)
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
2507 static void
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
2508 add_tabline_popup_menu_entry(HMENU pmenu, UINT item_id, char_u *item_text)
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
2509 {
16196
973070a30381 patch 8.1.1103: MS-Windows: old API calls are no longer needed
Bram Moolenaar <Bram@vim.org>
parents: 16162
diff changeset
2510 WCHAR *wn;
973070a30381 patch 8.1.1103: MS-Windows: old API calls are no longer needed
Bram Moolenaar <Bram@vim.org>
parents: 16162
diff changeset
2511 MENUITEMINFOW infow;
973070a30381 patch 8.1.1103: MS-Windows: old API calls are no longer needed
Bram Moolenaar <Bram@vim.org>
parents: 16162
diff changeset
2512
973070a30381 patch 8.1.1103: MS-Windows: old API calls are no longer needed
Bram Moolenaar <Bram@vim.org>
parents: 16162
diff changeset
2513 wn = enc_to_utf16(item_text, NULL);
8140
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
2514 if (wn == NULL)
16196
973070a30381 patch 8.1.1103: MS-Windows: old API calls are no longer needed
Bram Moolenaar <Bram@vim.org>
parents: 16162
diff changeset
2515 return;
973070a30381 patch 8.1.1103: MS-Windows: old API calls are no longer needed
Bram Moolenaar <Bram@vim.org>
parents: 16162
diff changeset
2516
973070a30381 patch 8.1.1103: MS-Windows: old API calls are no longer needed
Bram Moolenaar <Bram@vim.org>
parents: 16162
diff changeset
2517 infow.cbSize = sizeof(infow);
973070a30381 patch 8.1.1103: MS-Windows: old API calls are no longer needed
Bram Moolenaar <Bram@vim.org>
parents: 16162
diff changeset
2518 infow.fMask = MIIM_TYPE | MIIM_ID;
973070a30381 patch 8.1.1103: MS-Windows: old API calls are no longer needed
Bram Moolenaar <Bram@vim.org>
parents: 16162
diff changeset
2519 infow.wID = item_id;
973070a30381 patch 8.1.1103: MS-Windows: old API calls are no longer needed
Bram Moolenaar <Bram@vim.org>
parents: 16162
diff changeset
2520 infow.fType = MFT_STRING;
973070a30381 patch 8.1.1103: MS-Windows: old API calls are no longer needed
Bram Moolenaar <Bram@vim.org>
parents: 16162
diff changeset
2521 infow.dwTypeData = wn;
973070a30381 patch 8.1.1103: MS-Windows: old API calls are no longer needed
Bram Moolenaar <Bram@vim.org>
parents: 16162
diff changeset
2522 infow.cch = (UINT)wcslen(wn);
973070a30381 patch 8.1.1103: MS-Windows: old API calls are no longer needed
Bram Moolenaar <Bram@vim.org>
parents: 16162
diff changeset
2523 InsertMenuItemW(pmenu, item_id, FALSE, &infow);
973070a30381 patch 8.1.1103: MS-Windows: old API calls are no longer needed
Bram Moolenaar <Bram@vim.org>
parents: 16162
diff changeset
2524 vim_free(wn);
8140
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
2525 }
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
2526
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
2527 static void
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
2528 show_tabline_popup_menu(void)
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
2529 {
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
2530 HMENU tab_pmenu;
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
2531 long rval;
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
2532 POINT pt;
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
2533
18788
e1f4e9d78a6a patch 8.1.2383: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents: 18773
diff changeset
2534 // When ignoring events don't show the menu.
8140
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
2535 if (hold_gui_events
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
2536 # ifdef FEAT_CMDWIN
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
2537 || cmdwin_type != 0
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
2538 # endif
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
2539 )
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
2540 return;
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
2541
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
2542 tab_pmenu = CreatePopupMenu();
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
2543 if (tab_pmenu == NULL)
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
2544 return;
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
2545
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
2546 if (first_tabpage->tp_next != NULL)
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
2547 add_tabline_popup_menu_entry(tab_pmenu,
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
2548 TABLINE_MENU_CLOSE, (char_u *)_("Close tab"));
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
2549 add_tabline_popup_menu_entry(tab_pmenu,
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
2550 TABLINE_MENU_NEW, (char_u *)_("New tab"));
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
2551 add_tabline_popup_menu_entry(tab_pmenu,
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
2552 TABLINE_MENU_OPEN, (char_u *)_("Open tab..."));
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
2553
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
2554 GetCursorPos(&pt);
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
2555 rval = TrackPopupMenuEx(tab_pmenu, TPM_RETURNCMD, pt.x, pt.y, s_tabhwnd,
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
2556 NULL);
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
2557
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
2558 DestroyMenu(tab_pmenu);
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
2559
18788
e1f4e9d78a6a patch 8.1.2383: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents: 18773
diff changeset
2560 // Add the string cmd into input buffer
8140
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
2561 if (rval > 0)
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
2562 {
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
2563 TCHITTESTINFO htinfo;
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
2564 int idx;
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
2565
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
2566 if (ScreenToClient(s_tabhwnd, &pt) == 0)
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
2567 return;
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
2568
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
2569 htinfo.pt.x = pt.x;
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
2570 htinfo.pt.y = pt.y;
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
2571 idx = TabCtrl_HitTest(s_tabhwnd, &htinfo);
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
2572 if (idx == -1)
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
2573 idx = 0;
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
2574 else
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
2575 idx += 1;
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
2576
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
2577 send_tabline_menu_event(idx, (int)rval);
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
2578 }
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
2579 }
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
2580
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
2581 /*
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
2582 * Show or hide the tabline.
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
2583 */
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
2584 void
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
2585 gui_mch_show_tabline(int showit)
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
2586 {
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
2587 if (s_tabhwnd == NULL)
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
2588 return;
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
2589
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
2590 if (!showit != !showing_tabline)
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
2591 {
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
2592 if (showit)
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
2593 ShowWindow(s_tabhwnd, SW_SHOW);
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
2594 else
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
2595 ShowWindow(s_tabhwnd, SW_HIDE);
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
2596 showing_tabline = showit;
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
2597 }
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
2598 }
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
2599
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
2600 /*
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
2601 * Return TRUE when tabline is displayed.
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
2602 */
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
2603 int
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
2604 gui_mch_showing_tabline(void)
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
2605 {
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
2606 return s_tabhwnd != NULL && showing_tabline;
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
2607 }
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
2608
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
2609 /*
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
2610 * Update the labels of the tabline.
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
2611 */
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
2612 void
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
2613 gui_mch_update_tabline(void)
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
2614 {
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
2615 tabpage_T *tp;
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
2616 TCITEM tie;
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
2617 int nr = 0;
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
2618 int curtabidx = 0;
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
2619 int tabadded = 0;
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
2620 WCHAR *wstr = NULL;
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
2621
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
2622 if (s_tabhwnd == NULL)
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
2623 return;
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
2624
16196
973070a30381 patch 8.1.1103: MS-Windows: old API calls are no longer needed
Bram Moolenaar <Bram@vim.org>
parents: 16162
diff changeset
2625 // Enable unicode support
973070a30381 patch 8.1.1103: MS-Windows: old API calls are no longer needed
Bram Moolenaar <Bram@vim.org>
parents: 16162
diff changeset
2626 SendMessage(s_tabhwnd, CCM_SETUNICODEFORMAT, (WPARAM)TRUE, (LPARAM)0);
8140
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
2627
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
2628 tie.mask = TCIF_TEXT;
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
2629 tie.iImage = -1;
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
2630
18788
e1f4e9d78a6a patch 8.1.2383: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents: 18773
diff changeset
2631 // Disable redraw for tab updates to eliminate O(N^2) draws.
8140
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
2632 SendMessage(s_tabhwnd, WM_SETREDRAW, (WPARAM)FALSE, 0);
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
2633
18788
e1f4e9d78a6a patch 8.1.2383: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents: 18773
diff changeset
2634 // Add a label for each tab page. They all contain the same text area.
8140
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
2635 for (tp = first_tabpage; tp != NULL; tp = tp->tp_next, ++nr)
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
2636 {
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
2637 if (tp == curtab)
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
2638 curtabidx = nr;
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
2639
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
2640 if (nr >= TabCtrl_GetItemCount(s_tabhwnd))
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
2641 {
18788
e1f4e9d78a6a patch 8.1.2383: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents: 18773
diff changeset
2642 // Add the tab
8140
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
2643 tie.pszText = "-Empty-";
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
2644 TabCtrl_InsertItem(s_tabhwnd, nr, &tie);
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
2645 tabadded = 1;
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
2646 }
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
2647
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
2648 get_tabline_label(tp, FALSE);
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
2649 tie.pszText = (LPSTR)NameBuff;
16196
973070a30381 patch 8.1.1103: MS-Windows: old API calls are no longer needed
Bram Moolenaar <Bram@vim.org>
parents: 16162
diff changeset
2650
973070a30381 patch 8.1.1103: MS-Windows: old API calls are no longer needed
Bram Moolenaar <Bram@vim.org>
parents: 16162
diff changeset
2651 wstr = enc_to_utf16(NameBuff, NULL);
973070a30381 patch 8.1.1103: MS-Windows: old API calls are no longer needed
Bram Moolenaar <Bram@vim.org>
parents: 16162
diff changeset
2652 if (wstr != NULL)
8140
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
2653 {
16196
973070a30381 patch 8.1.1103: MS-Windows: old API calls are no longer needed
Bram Moolenaar <Bram@vim.org>
parents: 16162
diff changeset
2654 TCITEMW tiw;
973070a30381 patch 8.1.1103: MS-Windows: old API calls are no longer needed
Bram Moolenaar <Bram@vim.org>
parents: 16162
diff changeset
2655
973070a30381 patch 8.1.1103: MS-Windows: old API calls are no longer needed
Bram Moolenaar <Bram@vim.org>
parents: 16162
diff changeset
2656 tiw.mask = TCIF_TEXT;
973070a30381 patch 8.1.1103: MS-Windows: old API calls are no longer needed
Bram Moolenaar <Bram@vim.org>
parents: 16162
diff changeset
2657 tiw.iImage = -1;
973070a30381 patch 8.1.1103: MS-Windows: old API calls are no longer needed
Bram Moolenaar <Bram@vim.org>
parents: 16162
diff changeset
2658 tiw.pszText = wstr;
973070a30381 patch 8.1.1103: MS-Windows: old API calls are no longer needed
Bram Moolenaar <Bram@vim.org>
parents: 16162
diff changeset
2659 SendMessage(s_tabhwnd, TCM_SETITEMW, (WPARAM)nr, (LPARAM)&tiw);
973070a30381 patch 8.1.1103: MS-Windows: old API calls are no longer needed
Bram Moolenaar <Bram@vim.org>
parents: 16162
diff changeset
2660 vim_free(wstr);
8140
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
2661 }
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
2662 }
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
2663
18788
e1f4e9d78a6a patch 8.1.2383: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents: 18773
diff changeset
2664 // Remove any old labels.
8140
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
2665 while (nr < TabCtrl_GetItemCount(s_tabhwnd))
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
2666 TabCtrl_DeleteItem(s_tabhwnd, nr);
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
2667
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
2668 if (!tabadded && TabCtrl_GetCurSel(s_tabhwnd) != curtabidx)
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
2669 TabCtrl_SetCurSel(s_tabhwnd, curtabidx);
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
2670
18788
e1f4e9d78a6a patch 8.1.2383: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents: 18773
diff changeset
2671 // Re-enable redraw and redraw.
8140
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
2672 SendMessage(s_tabhwnd, WM_SETREDRAW, (WPARAM)TRUE, 0);
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
2673 RedrawWindow(s_tabhwnd, NULL, NULL,
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
2674 RDW_ERASE | RDW_FRAME | RDW_INVALIDATE | RDW_ALLCHILDREN);
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
2675
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
2676 if (tabadded && TabCtrl_GetCurSel(s_tabhwnd) != curtabidx)
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
2677 TabCtrl_SetCurSel(s_tabhwnd, curtabidx);
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
2678 }
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
2679
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
2680 /*
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
2681 * Set the current tab to "nr". First tab is 1.
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
2682 */
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
2683 void
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
2684 gui_mch_set_curtab(int nr)
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
2685 {
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
2686 if (s_tabhwnd == NULL)
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
2687 return;
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
2688
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
2689 if (TabCtrl_GetCurSel(s_tabhwnd) != nr - 1)
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
2690 TabCtrl_SetCurSel(s_tabhwnd, nr - 1);
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
2691 }
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
2692
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
2693 #endif
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
2694
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
2695 /*
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
2696 * ":simalt" command.
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
2697 */
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
2698 void
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
2699 ex_simalt(exarg_T *eap)
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
2700 {
11386
e2b34123c7dc patch 8.0.0578: :simalt on MS-Windows does not work properly
Christian Brabandt <cb@256bit.org>
parents: 11129
diff changeset
2701 char_u *keys = eap->arg;
e2b34123c7dc patch 8.0.0578: :simalt on MS-Windows does not work properly
Christian Brabandt <cb@256bit.org>
parents: 11129
diff changeset
2702 int fill_typebuf = FALSE;
e2b34123c7dc patch 8.0.0578: :simalt on MS-Windows does not work properly
Christian Brabandt <cb@256bit.org>
parents: 11129
diff changeset
2703 char_u key_name[4];
8140
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
2704
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
2705 PostMessage(s_hwnd, WM_SYSCOMMAND, (WPARAM)SC_KEYMENU, (LPARAM)0);
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
2706 while (*keys)
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
2707 {
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
2708 if (*keys == '~')
18788
e1f4e9d78a6a patch 8.1.2383: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents: 18773
diff changeset
2709 *keys = ' '; // for showing system menu
8140
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
2710 PostMessage(s_hwnd, WM_CHAR, (WPARAM)*keys, (LPARAM)0);
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
2711 keys++;
11386
e2b34123c7dc patch 8.0.0578: :simalt on MS-Windows does not work properly
Christian Brabandt <cb@256bit.org>
parents: 11129
diff changeset
2712 fill_typebuf = TRUE;
e2b34123c7dc patch 8.0.0578: :simalt on MS-Windows does not work properly
Christian Brabandt <cb@256bit.org>
parents: 11129
diff changeset
2713 }
e2b34123c7dc patch 8.0.0578: :simalt on MS-Windows does not work properly
Christian Brabandt <cb@256bit.org>
parents: 11129
diff changeset
2714 if (fill_typebuf)
e2b34123c7dc patch 8.0.0578: :simalt on MS-Windows does not work properly
Christian Brabandt <cb@256bit.org>
parents: 11129
diff changeset
2715 {
18788
e1f4e9d78a6a patch 8.1.2383: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents: 18773
diff changeset
2716 // Put a NOP in the typeahead buffer so that the message will get
e1f4e9d78a6a patch 8.1.2383: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents: 18773
diff changeset
2717 // processed.
11386
e2b34123c7dc patch 8.0.0578: :simalt on MS-Windows does not work properly
Christian Brabandt <cb@256bit.org>
parents: 11129
diff changeset
2718 key_name[0] = K_SPECIAL;
e2b34123c7dc patch 8.0.0578: :simalt on MS-Windows does not work properly
Christian Brabandt <cb@256bit.org>
parents: 11129
diff changeset
2719 key_name[1] = KS_EXTRA;
11410
db21cc7b40f0 patch 8.0.0589: :simalt still does not work
Christian Brabandt <cb@256bit.org>
parents: 11386
diff changeset
2720 key_name[2] = KE_NOP;
11386
e2b34123c7dc patch 8.0.0578: :simalt on MS-Windows does not work properly
Christian Brabandt <cb@256bit.org>
parents: 11129
diff changeset
2721 key_name[3] = NUL;
18416
59b3d19511d0 patch 8.1.2202: MS-Windows: build failure with GUI and small features
Bram Moolenaar <Bram@vim.org>
parents: 18301
diff changeset
2722 #if defined(FEAT_CLIENTSERVER) || defined(FEAT_EVAL)
11386
e2b34123c7dc patch 8.0.0578: :simalt on MS-Windows does not work properly
Christian Brabandt <cb@256bit.org>
parents: 11129
diff changeset
2723 typebuf_was_filled = TRUE;
18416
59b3d19511d0 patch 8.1.2202: MS-Windows: build failure with GUI and small features
Bram Moolenaar <Bram@vim.org>
parents: 18301
diff changeset
2724 #endif
11386
e2b34123c7dc patch 8.0.0578: :simalt on MS-Windows does not work properly
Christian Brabandt <cb@256bit.org>
parents: 11129
diff changeset
2725 (void)ins_typebuf(key_name, REMAP_NONE, 0, TRUE, FALSE);
8140
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
2726 }
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
2727 }
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
2728
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
2729 /*
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
2730 * Create the find & replace dialogs.
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
2731 * You can't have both at once: ":find" when replace is showing, destroys
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
2732 * the replace dialog first, and the other way around.
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
2733 */
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
2734 #ifdef MSWIN_FIND_REPLACE
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
2735 static void
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
2736 initialise_findrep(char_u *initial_string)
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
2737 {
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
2738 int wword = FALSE;
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
2739 int mcase = !p_ic;
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
2740 char_u *entry_text;
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
2741
18788
e1f4e9d78a6a patch 8.1.2383: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents: 18773
diff changeset
2742 // Get the search string to use.
8140
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
2743 entry_text = get_find_dialog_text(initial_string, &wword, &mcase);
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
2744
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
2745 s_findrep_struct.hwndOwner = s_hwnd;
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
2746 s_findrep_struct.Flags = FR_DOWN;
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
2747 if (mcase)
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
2748 s_findrep_struct.Flags |= FR_MATCHCASE;
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
2749 if (wword)
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
2750 s_findrep_struct.Flags |= FR_WHOLEWORD;
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
2751 if (entry_text != NULL && *entry_text != NUL)
16196
973070a30381 patch 8.1.1103: MS-Windows: old API calls are no longer needed
Bram Moolenaar <Bram@vim.org>
parents: 16162
diff changeset
2752 {
973070a30381 patch 8.1.1103: MS-Windows: old API calls are no longer needed
Bram Moolenaar <Bram@vim.org>
parents: 16162
diff changeset
2753 WCHAR *p = enc_to_utf16(entry_text, NULL);
973070a30381 patch 8.1.1103: MS-Windows: old API calls are no longer needed
Bram Moolenaar <Bram@vim.org>
parents: 16162
diff changeset
2754 if (p != NULL)
973070a30381 patch 8.1.1103: MS-Windows: old API calls are no longer needed
Bram Moolenaar <Bram@vim.org>
parents: 16162
diff changeset
2755 {
973070a30381 patch 8.1.1103: MS-Windows: old API calls are no longer needed
Bram Moolenaar <Bram@vim.org>
parents: 16162
diff changeset
2756 int len = s_findrep_struct.wFindWhatLen - 1;
973070a30381 patch 8.1.1103: MS-Windows: old API calls are no longer needed
Bram Moolenaar <Bram@vim.org>
parents: 16162
diff changeset
2757
973070a30381 patch 8.1.1103: MS-Windows: old API calls are no longer needed
Bram Moolenaar <Bram@vim.org>
parents: 16162
diff changeset
2758 wcsncpy(s_findrep_struct.lpstrFindWhat, p, len);
973070a30381 patch 8.1.1103: MS-Windows: old API calls are no longer needed
Bram Moolenaar <Bram@vim.org>
parents: 16162
diff changeset
2759 s_findrep_struct.lpstrFindWhat[len] = NUL;
973070a30381 patch 8.1.1103: MS-Windows: old API calls are no longer needed
Bram Moolenaar <Bram@vim.org>
parents: 16162
diff changeset
2760 vim_free(p);
973070a30381 patch 8.1.1103: MS-Windows: old API calls are no longer needed
Bram Moolenaar <Bram@vim.org>
parents: 16162
diff changeset
2761 }
973070a30381 patch 8.1.1103: MS-Windows: old API calls are no longer needed
Bram Moolenaar <Bram@vim.org>
parents: 16162
diff changeset
2762 }
8140
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
2763 vim_free(entry_text);
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
2764 }
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
2765 #endif
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
2766
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
2767 static void
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
2768 set_window_title(HWND hwnd, char *title)
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
2769 {
16196
973070a30381 patch 8.1.1103: MS-Windows: old API calls are no longer needed
Bram Moolenaar <Bram@vim.org>
parents: 16162
diff changeset
2770 if (title != NULL)
8140
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
2771 {
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
2772 WCHAR *wbuf;
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
2773
18788
e1f4e9d78a6a patch 8.1.2383: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents: 18773
diff changeset
2774 // Convert the title from 'encoding' to UTF-16.
8140
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
2775 wbuf = (WCHAR *)enc_to_utf16((char_u *)title, NULL);
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
2776 if (wbuf != NULL)
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
2777 {
10264
c036c0f636d5 commit https://github.com/vim/vim/commit/cea912af725c54f4727a0565e31661f6b29c6bb1
Christian Brabandt <cb@256bit.org>
parents: 10042
diff changeset
2778 SetWindowTextW(hwnd, wbuf);
8140
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
2779 vim_free(wbuf);
10264
c036c0f636d5 commit https://github.com/vim/vim/commit/cea912af725c54f4727a0565e31661f6b29c6bb1
Christian Brabandt <cb@256bit.org>
parents: 10042
diff changeset
2780 }
16196
973070a30381 patch 8.1.1103: MS-Windows: old API calls are no longer needed
Bram Moolenaar <Bram@vim.org>
parents: 16162
diff changeset
2781 }
973070a30381 patch 8.1.1103: MS-Windows: old API calls are no longer needed
Bram Moolenaar <Bram@vim.org>
parents: 16162
diff changeset
2782 else
973070a30381 patch 8.1.1103: MS-Windows: old API calls are no longer needed
Bram Moolenaar <Bram@vim.org>
parents: 16162
diff changeset
2783 (void)SetWindowTextW(hwnd, NULL);
8140
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
2784 }
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
2785
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
2786 void
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
2787 gui_mch_find_dialog(exarg_T *eap)
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
2788 {
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
2789 #ifdef MSWIN_FIND_REPLACE
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
2790 if (s_findrep_msg != 0)
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
2791 {
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
2792 if (IsWindow(s_findrep_hwnd) && !s_findrep_is_find)
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
2793 DestroyWindow(s_findrep_hwnd);
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
2794
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
2795 if (!IsWindow(s_findrep_hwnd))
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
2796 {
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
2797 initialise_findrep(eap->arg);
27281
f7d73708b391 patch 8.2.4169: MS-Windows: unnessary casts and other minor things
Bram Moolenaar <Bram@vim.org>
parents: 27261
diff changeset
2798 s_findrep_hwnd = FindTextW(&s_findrep_struct);
8140
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
2799 }
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
2800
14364
d876b8588731 patch 8.1.0197: Windows GUI: title for search/replace is wrong
Christian Brabandt <cb@256bit.org>
parents: 14208
diff changeset
2801 set_window_title(s_findrep_hwnd, _("Find string"));
8140
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
2802 (void)SetFocus(s_findrep_hwnd);
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
2803
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
2804 s_findrep_is_find = TRUE;
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
2805 }
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
2806 #endif
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
2807 }
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
2808
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
2809
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
2810 void
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
2811 gui_mch_replace_dialog(exarg_T *eap)
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
2812 {
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
2813 #ifdef MSWIN_FIND_REPLACE
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
2814 if (s_findrep_msg != 0)
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
2815 {
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
2816 if (IsWindow(s_findrep_hwnd) && s_findrep_is_find)
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
2817 DestroyWindow(s_findrep_hwnd);
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
2818
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
2819 if (!IsWindow(s_findrep_hwnd))
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
2820 {
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
2821 initialise_findrep(eap->arg);
27281
f7d73708b391 patch 8.2.4169: MS-Windows: unnessary casts and other minor things
Bram Moolenaar <Bram@vim.org>
parents: 27261
diff changeset
2822 s_findrep_hwnd = ReplaceTextW(&s_findrep_struct);
8140
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
2823 }
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
2824
14364
d876b8588731 patch 8.1.0197: Windows GUI: title for search/replace is wrong
Christian Brabandt <cb@256bit.org>
parents: 14208
diff changeset
2825 set_window_title(s_findrep_hwnd, _("Find & Replace"));
8140
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
2826 (void)SetFocus(s_findrep_hwnd);
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
2827
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
2828 s_findrep_is_find = FALSE;
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
2829 }
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
2830 #endif
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
2831 }
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
2832
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
2833
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
2834 /*
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
2835 * Set visibility of the pointer.
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
2836 */
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
2837 void
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
2838 gui_mch_mousehide(int hide)
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
2839 {
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
2840 if (hide != gui.pointer_hidden)
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
2841 {
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
2842 ShowCursor(!hide);
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
2843 gui.pointer_hidden = hide;
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
2844 }
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
2845 }
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
2846
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
2847 #ifdef FEAT_MENU
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
2848 static void
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
2849 gui_mch_show_popupmenu_at(vimmenu_T *menu, int x, int y)
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
2850 {
18788
e1f4e9d78a6a patch 8.1.2383: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents: 18773
diff changeset
2851 // Unhide the mouse, we don't get move events here.
8140
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
2852 gui_mch_mousehide(FALSE);
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
2853
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
2854 (void)TrackPopupMenu(
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
2855 (HMENU)menu->submenu_id,
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
2856 TPM_LEFTALIGN | TPM_LEFTBUTTON,
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
2857 x, y,
18788
e1f4e9d78a6a patch 8.1.2383: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents: 18773
diff changeset
2858 (int)0, //reserved param
8140
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
2859 s_hwnd,
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
2860 NULL);
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
2861 /*
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
2862 * NOTE: The pop-up menu can eat the mouse up event.
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
2863 * We deal with this in normal.c.
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
2864 */
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
2865 }
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
2866 #endif
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
2867
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
2868 /*
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
2869 * Got a message when the system will go down.
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
2870 */
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
2871 static void
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
2872 _OnEndSession(void)
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
2873 {
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
2874 getout_preserve_modified(1);
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
2875 }
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
2876
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
2877 /*
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
2878 * Get this message when the user clicks on the cross in the top right corner
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
2879 * of a Windows95 window.
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
2880 */
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
2881 static void
10783
04eb70c77cf4 patch 8.0.0281: some files are still using ARGSUSED instead of UNUSED
Christian Brabandt <cb@256bit.org>
parents: 10440
diff changeset
2882 _OnClose(HWND hwnd UNUSED)
8140
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
2883 {
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
2884 gui_shell_closed();
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
2885 }
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
2886
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
2887 /*
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
2888 * Get a message when the window is being destroyed.
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
2889 */
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
2890 static void
10783
04eb70c77cf4 patch 8.0.0281: some files are still using ARGSUSED instead of UNUSED
Christian Brabandt <cb@256bit.org>
parents: 10440
diff changeset
2891 _OnDestroy(HWND hwnd)
8140
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
2892 {
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
2893 if (!destroying)
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
2894 _OnClose(hwnd);
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
2895 }
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
2896
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
2897 static void
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
2898 _OnPaint(
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
2899 HWND hwnd)
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
2900 {
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
2901 if (!IsMinimized(hwnd))
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
2902 {
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
2903 PAINTSTRUCT ps;
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
2904
18788
e1f4e9d78a6a patch 8.1.2383: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents: 18773
diff changeset
2905 out_flush(); // make sure all output has been processed
8140
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
2906 (void)BeginPaint(hwnd, &ps);
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
2907
18788
e1f4e9d78a6a patch 8.1.2383: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents: 18773
diff changeset
2908 // prevent multi-byte characters from misprinting on an invalid
e1f4e9d78a6a patch 8.1.2383: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents: 18773
diff changeset
2909 // rectangle
8140
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
2910 if (has_mbyte)
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
2911 {
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
2912 RECT rect;
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
2913
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
2914 GetClientRect(hwnd, &rect);
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
2915 ps.rcPaint.left = rect.left;
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
2916 ps.rcPaint.right = rect.right;
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
2917 }
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
2918
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
2919 if (!IsRectEmpty(&ps.rcPaint))
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
2920 {
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
2921 gui_redraw(ps.rcPaint.left, ps.rcPaint.top,
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
2922 ps.rcPaint.right - ps.rcPaint.left + 1,
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
2923 ps.rcPaint.bottom - ps.rcPaint.top + 1);
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
2924 }
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
2925
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
2926 EndPaint(hwnd, &ps);
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
2927 }
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
2928 }
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
2929
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
2930 static void
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
2931 _OnSize(
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
2932 HWND hwnd,
10783
04eb70c77cf4 patch 8.0.0281: some files are still using ARGSUSED instead of UNUSED
Christian Brabandt <cb@256bit.org>
parents: 10440
diff changeset
2933 UINT state UNUSED,
8140
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
2934 int cx,
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
2935 int cy)
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
2936 {
27160
4482dd5f8869 patch 8.2.4109: MS-Windows: high dpi support is outdated
Bram Moolenaar <Bram@vim.org>
parents: 26966
diff changeset
2937 if (!IsMinimized(hwnd) && !s_in_dpichanged)
8140
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
2938 {
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
2939 gui_resize_shell(cx, cy);
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
2940
18788
e1f4e9d78a6a patch 8.1.2383: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents: 18773
diff changeset
2941 // Menu bar may wrap differently now
8140
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
2942 gui_mswin_get_menu_height(TRUE);
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
2943 }
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
2944 }
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
2945
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
2946 static void
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
2947 _OnSetFocus(
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
2948 HWND hwnd,
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
2949 HWND hwndOldFocus)
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
2950 {
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
2951 gui_focus_change(TRUE);
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
2952 s_getting_focus = TRUE;
27249
d5570658f18d patch 8.2.4153: MS-Windows: Global IME is no longer supported
Bram Moolenaar <Bram@vim.org>
parents: 27229
diff changeset
2953 (void)DefWindowProcW(hwnd, WM_SETFOCUS, (WPARAM)hwndOldFocus, 0);
8140
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
2954 }
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
2955
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
2956 static void
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
2957 _OnKillFocus(
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
2958 HWND hwnd,
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
2959 HWND hwndNewFocus)
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
2960 {
27871
2be33ea63428 patch 8.2.4461: MS-Windows: garbage characters on stdout with VIMDLL
Bram Moolenaar <Bram@vim.org>
parents: 27525
diff changeset
2961 if (destroying)
2be33ea63428 patch 8.2.4461: MS-Windows: garbage characters on stdout with VIMDLL
Bram Moolenaar <Bram@vim.org>
parents: 27525
diff changeset
2962 return;
8140
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
2963 gui_focus_change(FALSE);
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
2964 s_getting_focus = FALSE;
27249
d5570658f18d patch 8.2.4153: MS-Windows: Global IME is no longer supported
Bram Moolenaar <Bram@vim.org>
parents: 27229
diff changeset
2965 (void)DefWindowProcW(hwnd, WM_KILLFOCUS, (WPARAM)hwndNewFocus, 0);
8140
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
2966 }
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
2967
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
2968 /*
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
2969 * Get a message when the user switches back to vim
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
2970 */
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
2971 static LRESULT
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
2972 _OnActivateApp(
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
2973 HWND hwnd,
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
2974 BOOL fActivate,
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
2975 DWORD dwThreadId)
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
2976 {
18788
e1f4e9d78a6a patch 8.1.2383: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents: 18773
diff changeset
2977 // we call gui_focus_change() in _OnSetFocus()
e1f4e9d78a6a patch 8.1.2383: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents: 18773
diff changeset
2978 // gui_focus_change((int)fActivate);
27249
d5570658f18d patch 8.2.4153: MS-Windows: Global IME is no longer supported
Bram Moolenaar <Bram@vim.org>
parents: 27229
diff changeset
2979 return DefWindowProcW(hwnd, WM_ACTIVATEAPP, fActivate, (DWORD)dwThreadId);
8140
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
2980 }
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
2981
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
2982 void
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
2983 gui_mch_destroy_scrollbar(scrollbar_T *sb)
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
2984 {
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
2985 DestroyWindow(sb->id);
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
2986 }
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
2987
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
2988 /*
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
2989 * Get current mouse coordinates in text window.
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
2990 */
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
2991 void
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
2992 gui_mch_getmouse(int *x, int *y)
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
2993 {
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
2994 RECT rct;
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
2995 POINT mp;
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
2996
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
2997 (void)GetWindowRect(s_textArea, &rct);
27281
f7d73708b391 patch 8.2.4169: MS-Windows: unnessary casts and other minor things
Bram Moolenaar <Bram@vim.org>
parents: 27261
diff changeset
2998 (void)GetCursorPos(&mp);
8140
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
2999 *x = (int)(mp.x - rct.left);
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
3000 *y = (int)(mp.y - rct.top);
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
3001 }
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
3002
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
3003 /*
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
3004 * Move mouse pointer to character at (x, y).
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
3005 */
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
3006 void
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
3007 gui_mch_setmouse(int x, int y)
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
3008 {
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
3009 RECT rct;
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
3010
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
3011 (void)GetWindowRect(s_textArea, &rct);
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
3012 (void)SetCursorPos(x + gui.border_offset + rct.left,
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
3013 y + gui.border_offset + rct.top);
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
3014 }
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
3015
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
3016 static void
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
3017 gui_mswin_get_valid_dimensions(
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
3018 int w,
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
3019 int h,
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
3020 int *valid_w,
24804
324086c6f757 patch 8.2.2940: MS-Windows: cannot see the size when resizing
Bram Moolenaar <Bram@vim.org>
parents: 24768
diff changeset
3021 int *valid_h,
324086c6f757 patch 8.2.2940: MS-Windows: cannot see the size when resizing
Bram Moolenaar <Bram@vim.org>
parents: 24768
diff changeset
3022 int *cols,
324086c6f757 patch 8.2.2940: MS-Windows: cannot see the size when resizing
Bram Moolenaar <Bram@vim.org>
parents: 24768
diff changeset
3023 int *rows)
8140
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
3024 {
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
3025 int base_width, base_height;
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
3026
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
3027 base_width = gui_get_base_width()
27160
4482dd5f8869 patch 8.2.4109: MS-Windows: high dpi support is outdated
Bram Moolenaar <Bram@vim.org>
parents: 26966
diff changeset
3028 + (pGetSystemMetricsForDpi(SM_CXFRAME, s_dpi) +
4482dd5f8869 patch 8.2.4109: MS-Windows: high dpi support is outdated
Bram Moolenaar <Bram@vim.org>
parents: 26966
diff changeset
3029 pGetSystemMetricsForDpi(SM_CXPADDEDBORDER, s_dpi)) * 2;
8140
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
3030 base_height = gui_get_base_height()
27160
4482dd5f8869 patch 8.2.4109: MS-Windows: high dpi support is outdated
Bram Moolenaar <Bram@vim.org>
parents: 26966
diff changeset
3031 + (pGetSystemMetricsForDpi(SM_CYFRAME, s_dpi) +
4482dd5f8869 patch 8.2.4109: MS-Windows: high dpi support is outdated
Bram Moolenaar <Bram@vim.org>
parents: 26966
diff changeset
3032 pGetSystemMetricsForDpi(SM_CXPADDEDBORDER, s_dpi)) * 2
4482dd5f8869 patch 8.2.4109: MS-Windows: high dpi support is outdated
Bram Moolenaar <Bram@vim.org>
parents: 26966
diff changeset
3033 + pGetSystemMetricsForDpi(SM_CYCAPTION, s_dpi)
4482dd5f8869 patch 8.2.4109: MS-Windows: high dpi support is outdated
Bram Moolenaar <Bram@vim.org>
parents: 26966
diff changeset
3034 + gui_mswin_get_menu_height(FALSE);
24804
324086c6f757 patch 8.2.2940: MS-Windows: cannot see the size when resizing
Bram Moolenaar <Bram@vim.org>
parents: 24768
diff changeset
3035 *cols = (w - base_width) / gui.char_width;
324086c6f757 patch 8.2.2940: MS-Windows: cannot see the size when resizing
Bram Moolenaar <Bram@vim.org>
parents: 24768
diff changeset
3036 *rows = (h - base_height) / gui.char_height;
324086c6f757 patch 8.2.2940: MS-Windows: cannot see the size when resizing
Bram Moolenaar <Bram@vim.org>
parents: 24768
diff changeset
3037 *valid_w = base_width + *cols * gui.char_width;
324086c6f757 patch 8.2.2940: MS-Windows: cannot see the size when resizing
Bram Moolenaar <Bram@vim.org>
parents: 24768
diff changeset
3038 *valid_h = base_height + *rows * gui.char_height;
8140
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
3039 }
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
3040
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
3041 void
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
3042 gui_mch_flash(int msec)
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
3043 {
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
3044 RECT rc;
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
3045
12934
2ebc3df65ca2 patch 8.0.1343: MS-Windows: does not show colored emojis
Christian Brabandt <cb@256bit.org>
parents: 12924
diff changeset
3046 #if defined(FEAT_DIRECTX)
2ebc3df65ca2 patch 8.0.1343: MS-Windows: does not show colored emojis
Christian Brabandt <cb@256bit.org>
parents: 12924
diff changeset
3047 if (IS_ENABLE_DIRECTX())
2ebc3df65ca2 patch 8.0.1343: MS-Windows: does not show colored emojis
Christian Brabandt <cb@256bit.org>
parents: 12924
diff changeset
3048 DWriteContext_Flush(s_dwc);
2ebc3df65ca2 patch 8.0.1343: MS-Windows: does not show colored emojis
Christian Brabandt <cb@256bit.org>
parents: 12924
diff changeset
3049 #endif
2ebc3df65ca2 patch 8.0.1343: MS-Windows: does not show colored emojis
Christian Brabandt <cb@256bit.org>
parents: 12924
diff changeset
3050
8140
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
3051 /*
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
3052 * Note: InvertRect() excludes right and bottom of rectangle.
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
3053 */
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
3054 rc.left = 0;
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
3055 rc.top = 0;
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
3056 rc.right = gui.num_cols * gui.char_width;
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
3057 rc.bottom = gui.num_rows * gui.char_height;
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
3058 InvertRect(s_hdc, &rc);
18788
e1f4e9d78a6a patch 8.1.2383: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents: 18773
diff changeset
3059 gui_mch_flush(); // make sure it's displayed
e1f4e9d78a6a patch 8.1.2383: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents: 18773
diff changeset
3060
e1f4e9d78a6a patch 8.1.2383: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents: 18773
diff changeset
3061 ui_delay((long)msec, TRUE); // wait for a few msec
8140
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
3062
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
3063 InvertRect(s_hdc, &rc);
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
3064 }
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
3065
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
3066 /*
22748
837983942264 patch 8.2.1922: Win32: scrolling problems when part of window is off-screen
Bram Moolenaar <Bram@vim.org>
parents: 22407
diff changeset
3067 * Check if the specified point is on-screen. (multi-monitor aware)
837983942264 patch 8.2.1922: Win32: scrolling problems when part of window is off-screen
Bram Moolenaar <Bram@vim.org>
parents: 22407
diff changeset
3068 */
837983942264 patch 8.2.1922: Win32: scrolling problems when part of window is off-screen
Bram Moolenaar <Bram@vim.org>
parents: 22407
diff changeset
3069 static BOOL
837983942264 patch 8.2.1922: Win32: scrolling problems when part of window is off-screen
Bram Moolenaar <Bram@vim.org>
parents: 22407
diff changeset
3070 is_point_onscreen(int x, int y)
837983942264 patch 8.2.1922: Win32: scrolling problems when part of window is off-screen
Bram Moolenaar <Bram@vim.org>
parents: 22407
diff changeset
3071 {
837983942264 patch 8.2.1922: Win32: scrolling problems when part of window is off-screen
Bram Moolenaar <Bram@vim.org>
parents: 22407
diff changeset
3072 POINT pt = {x, y};
837983942264 patch 8.2.1922: Win32: scrolling problems when part of window is off-screen
Bram Moolenaar <Bram@vim.org>
parents: 22407
diff changeset
3073
837983942264 patch 8.2.1922: Win32: scrolling problems when part of window is off-screen
Bram Moolenaar <Bram@vim.org>
parents: 22407
diff changeset
3074 return MonitorFromPoint(pt, MONITOR_DEFAULTTONULL) != NULL;
837983942264 patch 8.2.1922: Win32: scrolling problems when part of window is off-screen
Bram Moolenaar <Bram@vim.org>
parents: 22407
diff changeset
3075 }
837983942264 patch 8.2.1922: Win32: scrolling problems when part of window is off-screen
Bram Moolenaar <Bram@vim.org>
parents: 22407
diff changeset
3076
837983942264 patch 8.2.1922: Win32: scrolling problems when part of window is off-screen
Bram Moolenaar <Bram@vim.org>
parents: 22407
diff changeset
3077 /*
27922
b4ef8f851be4 patch 8.2.4486: MS-Windows GUI: slow scrolling with maximized window
Bram Moolenaar <Bram@vim.org>
parents: 27871
diff changeset
3078 * Check if the whole client area of the specified window is on-screen.
22748
837983942264 patch 8.2.1922: Win32: scrolling problems when part of window is off-screen
Bram Moolenaar <Bram@vim.org>
parents: 22407
diff changeset
3079 *
837983942264 patch 8.2.1922: Win32: scrolling problems when part of window is off-screen
Bram Moolenaar <Bram@vim.org>
parents: 22407
diff changeset
3080 * Note about DirectX: Windows 10 1809 or above no longer maintains image of
837983942264 patch 8.2.1922: Win32: scrolling problems when part of window is off-screen
Bram Moolenaar <Bram@vim.org>
parents: 22407
diff changeset
3081 * the window portion that is off-screen. Scrolling by DWriteContext_Scroll()
837983942264 patch 8.2.1922: Win32: scrolling problems when part of window is off-screen
Bram Moolenaar <Bram@vim.org>
parents: 22407
diff changeset
3082 * only works when the whole window is on-screen.
837983942264 patch 8.2.1922: Win32: scrolling problems when part of window is off-screen
Bram Moolenaar <Bram@vim.org>
parents: 22407
diff changeset
3083 */
837983942264 patch 8.2.1922: Win32: scrolling problems when part of window is off-screen
Bram Moolenaar <Bram@vim.org>
parents: 22407
diff changeset
3084 static BOOL
837983942264 patch 8.2.1922: Win32: scrolling problems when part of window is off-screen
Bram Moolenaar <Bram@vim.org>
parents: 22407
diff changeset
3085 is_window_onscreen(HWND hwnd)
837983942264 patch 8.2.1922: Win32: scrolling problems when part of window is off-screen
Bram Moolenaar <Bram@vim.org>
parents: 22407
diff changeset
3086 {
837983942264 patch 8.2.1922: Win32: scrolling problems when part of window is off-screen
Bram Moolenaar <Bram@vim.org>
parents: 22407
diff changeset
3087 RECT rc;
27922
b4ef8f851be4 patch 8.2.4486: MS-Windows GUI: slow scrolling with maximized window
Bram Moolenaar <Bram@vim.org>
parents: 27871
diff changeset
3088 POINT p1, p2;
b4ef8f851be4 patch 8.2.4486: MS-Windows GUI: slow scrolling with maximized window
Bram Moolenaar <Bram@vim.org>
parents: 27871
diff changeset
3089
b4ef8f851be4 patch 8.2.4486: MS-Windows GUI: slow scrolling with maximized window
Bram Moolenaar <Bram@vim.org>
parents: 27871
diff changeset
3090 GetClientRect(hwnd, &rc);
b4ef8f851be4 patch 8.2.4486: MS-Windows GUI: slow scrolling with maximized window
Bram Moolenaar <Bram@vim.org>
parents: 27871
diff changeset
3091 p1.x = rc.left;
b4ef8f851be4 patch 8.2.4486: MS-Windows GUI: slow scrolling with maximized window
Bram Moolenaar <Bram@vim.org>
parents: 27871
diff changeset
3092 p1.y = rc.top;
b4ef8f851be4 patch 8.2.4486: MS-Windows GUI: slow scrolling with maximized window
Bram Moolenaar <Bram@vim.org>
parents: 27871
diff changeset
3093 p2.x = rc.right - 1;
b4ef8f851be4 patch 8.2.4486: MS-Windows GUI: slow scrolling with maximized window
Bram Moolenaar <Bram@vim.org>
parents: 27871
diff changeset
3094 p2.y = rc.bottom - 1;
b4ef8f851be4 patch 8.2.4486: MS-Windows GUI: slow scrolling with maximized window
Bram Moolenaar <Bram@vim.org>
parents: 27871
diff changeset
3095 ClientToScreen(hwnd, &p1);
b4ef8f851be4 patch 8.2.4486: MS-Windows GUI: slow scrolling with maximized window
Bram Moolenaar <Bram@vim.org>
parents: 27871
diff changeset
3096 ClientToScreen(hwnd, &p2);
b4ef8f851be4 patch 8.2.4486: MS-Windows GUI: slow scrolling with maximized window
Bram Moolenaar <Bram@vim.org>
parents: 27871
diff changeset
3097
b4ef8f851be4 patch 8.2.4486: MS-Windows GUI: slow scrolling with maximized window
Bram Moolenaar <Bram@vim.org>
parents: 27871
diff changeset
3098 if (!is_point_onscreen(p1.x, p1.y))
22748
837983942264 patch 8.2.1922: Win32: scrolling problems when part of window is off-screen
Bram Moolenaar <Bram@vim.org>
parents: 22407
diff changeset
3099 return FALSE;
27922
b4ef8f851be4 patch 8.2.4486: MS-Windows GUI: slow scrolling with maximized window
Bram Moolenaar <Bram@vim.org>
parents: 27871
diff changeset
3100 if (!is_point_onscreen(p1.x, p2.y))
22748
837983942264 patch 8.2.1922: Win32: scrolling problems when part of window is off-screen
Bram Moolenaar <Bram@vim.org>
parents: 22407
diff changeset
3101 return FALSE;
27922
b4ef8f851be4 patch 8.2.4486: MS-Windows GUI: slow scrolling with maximized window
Bram Moolenaar <Bram@vim.org>
parents: 27871
diff changeset
3102 if (!is_point_onscreen(p2.x, p1.y))
22748
837983942264 patch 8.2.1922: Win32: scrolling problems when part of window is off-screen
Bram Moolenaar <Bram@vim.org>
parents: 22407
diff changeset
3103 return FALSE;
27922
b4ef8f851be4 patch 8.2.4486: MS-Windows GUI: slow scrolling with maximized window
Bram Moolenaar <Bram@vim.org>
parents: 27871
diff changeset
3104 if (!is_point_onscreen(p2.x, p2.y))
22748
837983942264 patch 8.2.1922: Win32: scrolling problems when part of window is off-screen
Bram Moolenaar <Bram@vim.org>
parents: 22407
diff changeset
3105 return FALSE;
837983942264 patch 8.2.1922: Win32: scrolling problems when part of window is off-screen
Bram Moolenaar <Bram@vim.org>
parents: 22407
diff changeset
3106 return TRUE;
837983942264 patch 8.2.1922: Win32: scrolling problems when part of window is off-screen
Bram Moolenaar <Bram@vim.org>
parents: 22407
diff changeset
3107 }
837983942264 patch 8.2.1922: Win32: scrolling problems when part of window is off-screen
Bram Moolenaar <Bram@vim.org>
parents: 22407
diff changeset
3108
837983942264 patch 8.2.1922: Win32: scrolling problems when part of window is off-screen
Bram Moolenaar <Bram@vim.org>
parents: 22407
diff changeset
3109 /*
8140
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
3110 * Return flags used for scrolling.
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
3111 * The SW_INVALIDATE is required when part of the window is covered or
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
3112 * off-screen. Refer to MS KB Q75236.
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
3113 */
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
3114 static int
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
3115 get_scroll_flags(void)
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
3116 {
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
3117 HWND hwnd;
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
3118 RECT rcVim, rcOther, rcDest;
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
3119
22748
837983942264 patch 8.2.1922: Win32: scrolling problems when part of window is off-screen
Bram Moolenaar <Bram@vim.org>
parents: 22407
diff changeset
3120 // Check if the window is (partly) off-screen.
837983942264 patch 8.2.1922: Win32: scrolling problems when part of window is off-screen
Bram Moolenaar <Bram@vim.org>
parents: 22407
diff changeset
3121 if (!is_window_onscreen(s_hwnd))
8140
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
3122 return SW_INVALIDATE;
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
3123
26771
fc859aea8cec patch 8.2.3914: various spelling mistakes in comments
Bram Moolenaar <Bram@vim.org>
parents: 24804
diff changeset
3124 // Check if there is a window (partly) on top of us.
22748
837983942264 patch 8.2.1922: Win32: scrolling problems when part of window is off-screen
Bram Moolenaar <Bram@vim.org>
parents: 22407
diff changeset
3125 GetWindowRect(s_hwnd, &rcVim);
8140
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
3126 for (hwnd = s_hwnd; (hwnd = GetWindow(hwnd, GW_HWNDPREV)) != (HWND)0; )
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
3127 if (IsWindowVisible(hwnd))
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
3128 {
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
3129 GetWindowRect(hwnd, &rcOther);
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
3130 if (IntersectRect(&rcDest, &rcVim, &rcOther))
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
3131 return SW_INVALIDATE;
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
3132 }
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
3133 return 0;
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
3134 }
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
3135
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
3136 /*
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
3137 * On some Intel GPUs, the regions drawn just prior to ScrollWindowEx()
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
3138 * may not be scrolled out properly.
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
3139 * For gVim, when _OnScroll() is repeated, the character at the
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
3140 * previous cursor position may be left drawn after scroll.
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
3141 * The problem can be avoided by calling GetPixel() to get a pixel in
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
3142 * the region before ScrollWindowEx().
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
3143 */
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
3144 static void
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
3145 intel_gpu_workaround(void)
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
3146 {
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
3147 GetPixel(s_hdc, FILL_X(gui.col), FILL_Y(gui.row));
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
3148 }
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
3149
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
3150 /*
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
3151 * Delete the given number of lines from the given row, scrolling up any
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
3152 * text further down within the scroll region.
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
3153 */
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
3154 void
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
3155 gui_mch_delete_lines(
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
3156 int row,
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
3157 int num_lines)
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
3158 {
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
3159 RECT rc;
12934
2ebc3df65ca2 patch 8.0.1343: MS-Windows: does not show colored emojis
Christian Brabandt <cb@256bit.org>
parents: 12924
diff changeset
3160
8140
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
3161 rc.left = FILL_X(gui.scroll_region_left);
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
3162 rc.right = FILL_X(gui.scroll_region_right + 1);
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
3163 rc.top = FILL_Y(row);
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
3164 rc.bottom = FILL_Y(gui.scroll_region_bot + 1);
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
3165
12986
18e6f4addce9 patch 8.0.1369: MS-Windows: drawing underline slow, mFallbackDC not updated
Christian Brabandt <cb@256bit.org>
parents: 12950
diff changeset
3166 #if defined(FEAT_DIRECTX)
22748
837983942264 patch 8.2.1922: Win32: scrolling problems when part of window is off-screen
Bram Moolenaar <Bram@vim.org>
parents: 22407
diff changeset
3167 if (IS_ENABLE_DIRECTX() && is_window_onscreen(s_hwnd))
12986
18e6f4addce9 patch 8.0.1369: MS-Windows: drawing underline slow, mFallbackDC not updated
Christian Brabandt <cb@256bit.org>
parents: 12950
diff changeset
3168 {
13150
808625d4b71b patch 8.0.1449: slow redrawing with DirectX
Christian Brabandt <cb@256bit.org>
parents: 13028
diff changeset
3169 DWriteContext_Scroll(s_dwc, 0, -num_lines * gui.char_height, &rc);
808625d4b71b patch 8.0.1449: slow redrawing with DirectX
Christian Brabandt <cb@256bit.org>
parents: 13028
diff changeset
3170 }
808625d4b71b patch 8.0.1449: slow redrawing with DirectX
Christian Brabandt <cb@256bit.org>
parents: 13028
diff changeset
3171 else
12986
18e6f4addce9 patch 8.0.1369: MS-Windows: drawing underline slow, mFallbackDC not updated
Christian Brabandt <cb@256bit.org>
parents: 12950
diff changeset
3172 #endif
18e6f4addce9 patch 8.0.1369: MS-Windows: drawing underline slow, mFallbackDC not updated
Christian Brabandt <cb@256bit.org>
parents: 12950
diff changeset
3173 {
22748
837983942264 patch 8.2.1922: Win32: scrolling problems when part of window is off-screen
Bram Moolenaar <Bram@vim.org>
parents: 22407
diff changeset
3174 #if defined(FEAT_DIRECTX)
837983942264 patch 8.2.1922: Win32: scrolling problems when part of window is off-screen
Bram Moolenaar <Bram@vim.org>
parents: 22407
diff changeset
3175 if (IS_ENABLE_DIRECTX())
837983942264 patch 8.2.1922: Win32: scrolling problems when part of window is off-screen
Bram Moolenaar <Bram@vim.org>
parents: 22407
diff changeset
3176 DWriteContext_Flush(s_dwc);
837983942264 patch 8.2.1922: Win32: scrolling problems when part of window is off-screen
Bram Moolenaar <Bram@vim.org>
parents: 22407
diff changeset
3177 #endif
12986
18e6f4addce9 patch 8.0.1369: MS-Windows: drawing underline slow, mFallbackDC not updated
Christian Brabandt <cb@256bit.org>
parents: 12950
diff changeset
3178 intel_gpu_workaround();
18e6f4addce9 patch 8.0.1369: MS-Windows: drawing underline slow, mFallbackDC not updated
Christian Brabandt <cb@256bit.org>
parents: 12950
diff changeset
3179 ScrollWindowEx(s_textArea, 0, -num_lines * gui.char_height,
8140
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
3180 &rc, &rc, NULL, NULL, get_scroll_flags());
13028
cfce9ac1d1e8 patch 8.0.1390: DirectX scrolling can be slow, vertical positioning is off
Christian Brabandt <cb@256bit.org>
parents: 12994
diff changeset
3181 UpdateWindow(s_textArea);
cfce9ac1d1e8 patch 8.0.1390: DirectX scrolling can be slow, vertical positioning is off
Christian Brabandt <cb@256bit.org>
parents: 12994
diff changeset
3182 }
cfce9ac1d1e8 patch 8.0.1390: DirectX scrolling can be slow, vertical positioning is off
Christian Brabandt <cb@256bit.org>
parents: 12994
diff changeset
3183
18788
e1f4e9d78a6a patch 8.1.2383: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents: 18773
diff changeset
3184 // This seems to be required to avoid the cursor disappearing when
e1f4e9d78a6a patch 8.1.2383: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents: 18773
diff changeset
3185 // scrolling such that the cursor ends up in the top-left character on
e1f4e9d78a6a patch 8.1.2383: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents: 18773
diff changeset
3186 // the screen... But why? (Webb)
e1f4e9d78a6a patch 8.1.2383: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents: 18773
diff changeset
3187 // It's probably fixed by disabling drawing the cursor while scrolling.
e1f4e9d78a6a patch 8.1.2383: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents: 18773
diff changeset
3188 // gui.cursor_is_valid = FALSE;
8140
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
3189
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
3190 gui_clear_block(gui.scroll_region_bot - num_lines + 1,
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
3191 gui.scroll_region_left,
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
3192 gui.scroll_region_bot, gui.scroll_region_right);
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
3193 }
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
3194
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
3195 /*
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
3196 * Insert the given number of lines before the given row, scrolling down any
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
3197 * following text within the scroll region.
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
3198 */
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
3199 void
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
3200 gui_mch_insert_lines(
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
3201 int row,
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
3202 int num_lines)
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
3203 {
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
3204 RECT rc;
12934
2ebc3df65ca2 patch 8.0.1343: MS-Windows: does not show colored emojis
Christian Brabandt <cb@256bit.org>
parents: 12924
diff changeset
3205
8140
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
3206 rc.left = FILL_X(gui.scroll_region_left);
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
3207 rc.right = FILL_X(gui.scroll_region_right + 1);
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
3208 rc.top = FILL_Y(row);
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
3209 rc.bottom = FILL_Y(gui.scroll_region_bot + 1);
12986
18e6f4addce9 patch 8.0.1369: MS-Windows: drawing underline slow, mFallbackDC not updated
Christian Brabandt <cb@256bit.org>
parents: 12950
diff changeset
3210
18e6f4addce9 patch 8.0.1369: MS-Windows: drawing underline slow, mFallbackDC not updated
Christian Brabandt <cb@256bit.org>
parents: 12950
diff changeset
3211 #if defined(FEAT_DIRECTX)
22748
837983942264 patch 8.2.1922: Win32: scrolling problems when part of window is off-screen
Bram Moolenaar <Bram@vim.org>
parents: 22407
diff changeset
3212 if (IS_ENABLE_DIRECTX() && is_window_onscreen(s_hwnd))
12986
18e6f4addce9 patch 8.0.1369: MS-Windows: drawing underline slow, mFallbackDC not updated
Christian Brabandt <cb@256bit.org>
parents: 12950
diff changeset
3213 {
13150
808625d4b71b patch 8.0.1449: slow redrawing with DirectX
Christian Brabandt <cb@256bit.org>
parents: 13028
diff changeset
3214 DWriteContext_Scroll(s_dwc, 0, num_lines * gui.char_height, &rc);
808625d4b71b patch 8.0.1449: slow redrawing with DirectX
Christian Brabandt <cb@256bit.org>
parents: 13028
diff changeset
3215 }
808625d4b71b patch 8.0.1449: slow redrawing with DirectX
Christian Brabandt <cb@256bit.org>
parents: 13028
diff changeset
3216 else
12986
18e6f4addce9 patch 8.0.1369: MS-Windows: drawing underline slow, mFallbackDC not updated
Christian Brabandt <cb@256bit.org>
parents: 12950
diff changeset
3217 #endif
18e6f4addce9 patch 8.0.1369: MS-Windows: drawing underline slow, mFallbackDC not updated
Christian Brabandt <cb@256bit.org>
parents: 12950
diff changeset
3218 {
22748
837983942264 patch 8.2.1922: Win32: scrolling problems when part of window is off-screen
Bram Moolenaar <Bram@vim.org>
parents: 22407
diff changeset
3219 #if defined(FEAT_DIRECTX)
837983942264 patch 8.2.1922: Win32: scrolling problems when part of window is off-screen
Bram Moolenaar <Bram@vim.org>
parents: 22407
diff changeset
3220 if (IS_ENABLE_DIRECTX())
837983942264 patch 8.2.1922: Win32: scrolling problems when part of window is off-screen
Bram Moolenaar <Bram@vim.org>
parents: 22407
diff changeset
3221 DWriteContext_Flush(s_dwc);
837983942264 patch 8.2.1922: Win32: scrolling problems when part of window is off-screen
Bram Moolenaar <Bram@vim.org>
parents: 22407
diff changeset
3222 #endif
12986
18e6f4addce9 patch 8.0.1369: MS-Windows: drawing underline slow, mFallbackDC not updated
Christian Brabandt <cb@256bit.org>
parents: 12950
diff changeset
3223 intel_gpu_workaround();
18788
e1f4e9d78a6a patch 8.1.2383: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents: 18773
diff changeset
3224 // The SW_INVALIDATE is required when part of the window is covered or
e1f4e9d78a6a patch 8.1.2383: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents: 18773
diff changeset
3225 // off-screen. How do we avoid it when it's not needed?
12986
18e6f4addce9 patch 8.0.1369: MS-Windows: drawing underline slow, mFallbackDC not updated
Christian Brabandt <cb@256bit.org>
parents: 12950
diff changeset
3226 ScrollWindowEx(s_textArea, 0, num_lines * gui.char_height,
8140
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
3227 &rc, &rc, NULL, NULL, get_scroll_flags());
13028
cfce9ac1d1e8 patch 8.0.1390: DirectX scrolling can be slow, vertical positioning is off
Christian Brabandt <cb@256bit.org>
parents: 12994
diff changeset
3228 UpdateWindow(s_textArea);
cfce9ac1d1e8 patch 8.0.1390: DirectX scrolling can be slow, vertical positioning is off
Christian Brabandt <cb@256bit.org>
parents: 12994
diff changeset
3229 }
8140
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
3230
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
3231 gui_clear_block(row, gui.scroll_region_left,
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
3232 row + num_lines - 1, gui.scroll_region_right);
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
3233 }
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
3234
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
3235
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
3236 void
10783
04eb70c77cf4 patch 8.0.0281: some files are still using ARGSUSED instead of UNUSED
Christian Brabandt <cb@256bit.org>
parents: 10440
diff changeset
3237 gui_mch_exit(int rc UNUSED)
8140
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
3238 {
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
3239 #if defined(FEAT_DIRECTX)
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
3240 DWriteContext_Close(s_dwc);
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
3241 DWrite_Final();
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
3242 s_dwc = NULL;
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
3243 #endif
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
3244
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
3245 ReleaseDC(s_textArea, s_hdc);
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
3246 DeleteObject(s_brush);
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
3247
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
3248 #ifdef FEAT_TEAROFF
18788
e1f4e9d78a6a patch 8.1.2383: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents: 18773
diff changeset
3249 // Unload the tearoff bitmap
8140
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
3250 (void)DeleteObject((HGDIOBJ)s_htearbitmap);
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
3251 #endif
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
3252
18788
e1f4e9d78a6a patch 8.1.2383: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents: 18773
diff changeset
3253 // Destroy our window (if we have one).
8140
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
3254 if (s_hwnd != NULL)
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
3255 {
18788
e1f4e9d78a6a patch 8.1.2383: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents: 18773
diff changeset
3256 destroying = TRUE; // ignore WM_DESTROY message now
8140
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
3257 DestroyWindow(s_hwnd);
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
3258 }
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
3259 }
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
3260
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
3261 static char_u *
16152
8f4eccaaf2c0 patch 8.1.1081: MS-Windows: cannot use some fonts
Bram Moolenaar <Bram@vim.org>
parents: 16123
diff changeset
3262 logfont2name(LOGFONTW lf)
8140
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
3263 {
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
3264 char *p;
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
3265 char *res;
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
3266 char *charset_name;
8835
c1a5623cfc86 commit https://github.com/vim/vim/commit/7c1c6dbb6817640fd3956a0d5417da23fde336d8
Christian Brabandt <cb@256bit.org>
parents: 8813
diff changeset
3267 char *quality_name;
16152
8f4eccaaf2c0 patch 8.1.1081: MS-Windows: cannot use some fonts
Bram Moolenaar <Bram@vim.org>
parents: 16123
diff changeset
3268 char *font_name;
16439
9d20e26dc13c patch 8.1.1224: MS-Windows: cannot specify font weight
Bram Moolenaar <Bram@vim.org>
parents: 16425
diff changeset
3269 int points;
16152
8f4eccaaf2c0 patch 8.1.1081: MS-Windows: cannot use some fonts
Bram Moolenaar <Bram@vim.org>
parents: 16123
diff changeset
3270
8f4eccaaf2c0 patch 8.1.1081: MS-Windows: cannot use some fonts
Bram Moolenaar <Bram@vim.org>
parents: 16123
diff changeset
3271 font_name = (char *)utf16_to_enc(lf.lfFaceName, NULL);
8f4eccaaf2c0 patch 8.1.1081: MS-Windows: cannot use some fonts
Bram Moolenaar <Bram@vim.org>
parents: 16123
diff changeset
3272 if (font_name == NULL)
8f4eccaaf2c0 patch 8.1.1081: MS-Windows: cannot use some fonts
Bram Moolenaar <Bram@vim.org>
parents: 16123
diff changeset
3273 return NULL;
8140
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
3274 charset_name = charset_id2name((int)lf.lfCharSet);
8835
c1a5623cfc86 commit https://github.com/vim/vim/commit/7c1c6dbb6817640fd3956a0d5417da23fde336d8
Christian Brabandt <cb@256bit.org>
parents: 8813
diff changeset
3275 quality_name = quality_id2name((int)lf.lfQuality);
c1a5623cfc86 commit https://github.com/vim/vim/commit/7c1c6dbb6817640fd3956a0d5417da23fde336d8
Christian Brabandt <cb@256bit.org>
parents: 8813
diff changeset
3276
16825
ce04ebdf26b8 patch 8.1.1414: alloc() returning "char_u *" causes a lot of type casts
Bram Moolenaar <Bram@vim.org>
parents: 16768
diff changeset
3277 res = alloc(strlen(font_name) + 30
16425
e263ace0c9d0 patch 8.1.1217: MS-Windows: no space reserved for font quality name
Bram Moolenaar <Bram@vim.org>
parents: 16196
diff changeset
3278 + (charset_name == NULL ? 0 : strlen(charset_name) + 2)
16764
ef00b6bc186b patch 8.1.1384: using "int" for alloc() often results in compiler warnings
Bram Moolenaar <Bram@vim.org>
parents: 16606
diff changeset
3279 + (quality_name == NULL ? 0 : strlen(quality_name) + 2));
8140
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
3280 if (res != NULL)
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
3281 {
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
3282 p = res;
16439
9d20e26dc13c patch 8.1.1224: MS-Windows: cannot specify font weight
Bram Moolenaar <Bram@vim.org>
parents: 16425
diff changeset
3283 // make a normal font string out of the lf thing:
9d20e26dc13c patch 8.1.1224: MS-Windows: cannot specify font weight
Bram Moolenaar <Bram@vim.org>
parents: 16425
diff changeset
3284 points = pixels_to_points(
9d20e26dc13c patch 8.1.1224: MS-Windows: cannot specify font weight
Bram Moolenaar <Bram@vim.org>
parents: 16425
diff changeset
3285 lf.lfHeight < 0 ? -lf.lfHeight : lf.lfHeight, TRUE);
9d20e26dc13c patch 8.1.1224: MS-Windows: cannot specify font weight
Bram Moolenaar <Bram@vim.org>
parents: 16425
diff changeset
3286 if (lf.lfWeight == FW_NORMAL || lf.lfWeight == FW_BOLD)
9d20e26dc13c patch 8.1.1224: MS-Windows: cannot specify font weight
Bram Moolenaar <Bram@vim.org>
parents: 16425
diff changeset
3287 sprintf((char *)p, "%s:h%d", font_name, points);
9d20e26dc13c patch 8.1.1224: MS-Windows: cannot specify font weight
Bram Moolenaar <Bram@vim.org>
parents: 16425
diff changeset
3288 else
16468
045ab97fe320 patch 8.1.1238: MS-Windows: compiler warning for sprintf() format
Bram Moolenaar <Bram@vim.org>
parents: 16451
diff changeset
3289 sprintf((char *)p, "%s:h%d:W%ld", font_name, points, lf.lfWeight);
8140
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
3290 while (*p)
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
3291 {
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
3292 if (*p == ' ')
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
3293 *p = '_';
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
3294 ++p;
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
3295 }
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
3296 if (lf.lfItalic)
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
3297 STRCAT(p, ":i");
16439
9d20e26dc13c patch 8.1.1224: MS-Windows: cannot specify font weight
Bram Moolenaar <Bram@vim.org>
parents: 16425
diff changeset
3298 if (lf.lfWeight == FW_BOLD)
8140
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
3299 STRCAT(p, ":b");
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
3300 if (lf.lfUnderline)
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
3301 STRCAT(p, ":u");
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
3302 if (lf.lfStrikeOut)
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
3303 STRCAT(p, ":s");
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
3304 if (charset_name != NULL)
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
3305 {
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
3306 STRCAT(p, ":c");
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
3307 STRCAT(p, charset_name);
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
3308 }
8835
c1a5623cfc86 commit https://github.com/vim/vim/commit/7c1c6dbb6817640fd3956a0d5417da23fde336d8
Christian Brabandt <cb@256bit.org>
parents: 8813
diff changeset
3309 if (quality_name != NULL)
c1a5623cfc86 commit https://github.com/vim/vim/commit/7c1c6dbb6817640fd3956a0d5417da23fde336d8
Christian Brabandt <cb@256bit.org>
parents: 8813
diff changeset
3310 {
c1a5623cfc86 commit https://github.com/vim/vim/commit/7c1c6dbb6817640fd3956a0d5417da23fde336d8
Christian Brabandt <cb@256bit.org>
parents: 8813
diff changeset
3311 STRCAT(p, ":q");
c1a5623cfc86 commit https://github.com/vim/vim/commit/7c1c6dbb6817640fd3956a0d5417da23fde336d8
Christian Brabandt <cb@256bit.org>
parents: 8813
diff changeset
3312 STRCAT(p, quality_name);
c1a5623cfc86 commit https://github.com/vim/vim/commit/7c1c6dbb6817640fd3956a0d5417da23fde336d8
Christian Brabandt <cb@256bit.org>
parents: 8813
diff changeset
3313 }
8140
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
3314 }
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
3315
16152
8f4eccaaf2c0 patch 8.1.1081: MS-Windows: cannot use some fonts
Bram Moolenaar <Bram@vim.org>
parents: 16123
diff changeset
3316 vim_free(font_name);
8140
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
3317 return (char_u *)res;
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
3318 }
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
3319
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
3320
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
3321 #ifdef FEAT_MBYTE_IME
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
3322 /*
16152
8f4eccaaf2c0 patch 8.1.1081: MS-Windows: cannot use some fonts
Bram Moolenaar <Bram@vim.org>
parents: 16123
diff changeset
3323 * Set correct LOGFONTW to IME. Use 'guifontwide' if available, otherwise use
27160
4482dd5f8869 patch 8.2.4109: MS-Windows: high dpi support is outdated
Bram Moolenaar <Bram@vim.org>
parents: 26966
diff changeset
3324 * 'guifont'.
8140
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
3325 */
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
3326 static void
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
3327 update_im_font(void)
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
3328 {
27160
4482dd5f8869 patch 8.2.4109: MS-Windows: high dpi support is outdated
Bram Moolenaar <Bram@vim.org>
parents: 26966
diff changeset
3329 LOGFONTW lf_wide, lf;
8140
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
3330
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
3331 if (p_guifontwide != NULL && *p_guifontwide != NUL
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
3332 && gui.wide_font != NOFONT
16152
8f4eccaaf2c0 patch 8.1.1081: MS-Windows: cannot use some fonts
Bram Moolenaar <Bram@vim.org>
parents: 16123
diff changeset
3333 && GetObjectW((HFONT)gui.wide_font, sizeof(lf_wide), &lf_wide))
8140
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
3334 norm_logfont = lf_wide;
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
3335 else
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
3336 norm_logfont = sub_logfont;
27160
4482dd5f8869 patch 8.2.4109: MS-Windows: high dpi support is outdated
Bram Moolenaar <Bram@vim.org>
parents: 26966
diff changeset
3337
4482dd5f8869 patch 8.2.4109: MS-Windows: high dpi support is outdated
Bram Moolenaar <Bram@vim.org>
parents: 26966
diff changeset
3338 lf = norm_logfont;
4482dd5f8869 patch 8.2.4109: MS-Windows: high dpi support is outdated
Bram Moolenaar <Bram@vim.org>
parents: 26966
diff changeset
3339 if (s_process_dpi_aware == DPI_AWARENESS_UNAWARE)
4482dd5f8869 patch 8.2.4109: MS-Windows: high dpi support is outdated
Bram Moolenaar <Bram@vim.org>
parents: 26966
diff changeset
3340 // Work around when PerMonitorV2 is not enabled in the process level.
4482dd5f8869 patch 8.2.4109: MS-Windows: high dpi support is outdated
Bram Moolenaar <Bram@vim.org>
parents: 26966
diff changeset
3341 lf.lfHeight = lf.lfHeight * DEFAULT_DPI / s_dpi;
4482dd5f8869 patch 8.2.4109: MS-Windows: high dpi support is outdated
Bram Moolenaar <Bram@vim.org>
parents: 26966
diff changeset
3342 im_set_font(&lf);
8140
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
3343 }
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
3344 #endif
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
3345
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
3346 /*
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
3347 * Handler of gui.wide_font (p_guifontwide) changed notification.
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
3348 */
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
3349 void
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
3350 gui_mch_wide_font_changed(void)
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
3351 {
16152
8f4eccaaf2c0 patch 8.1.1081: MS-Windows: cannot use some fonts
Bram Moolenaar <Bram@vim.org>
parents: 16123
diff changeset
3352 LOGFONTW lf;
8140
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
3353
15597
536dd2bc5ac9 patch 8.1.0806: too many #ifdefs
Bram Moolenaar <Bram@vim.org>
parents: 15549
diff changeset
3354 #ifdef FEAT_MBYTE_IME
8140
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
3355 update_im_font();
15597
536dd2bc5ac9 patch 8.1.0806: too many #ifdefs
Bram Moolenaar <Bram@vim.org>
parents: 15549
diff changeset
3356 #endif
8140
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
3357
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
3358 gui_mch_free_font(gui.wide_ital_font);
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
3359 gui.wide_ital_font = NOFONT;
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
3360 gui_mch_free_font(gui.wide_bold_font);
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
3361 gui.wide_bold_font = NOFONT;
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
3362 gui_mch_free_font(gui.wide_boldital_font);
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
3363 gui.wide_boldital_font = NOFONT;
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
3364
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
3365 if (gui.wide_font
16152
8f4eccaaf2c0 patch 8.1.1081: MS-Windows: cannot use some fonts
Bram Moolenaar <Bram@vim.org>
parents: 16123
diff changeset
3366 && GetObjectW((HFONT)gui.wide_font, sizeof(lf), &lf))
8140
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
3367 {
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
3368 if (!lf.lfItalic)
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
3369 {
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
3370 lf.lfItalic = TRUE;
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
3371 gui.wide_ital_font = get_font_handle(&lf);
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
3372 lf.lfItalic = FALSE;
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
3373 }
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
3374 if (lf.lfWeight < FW_BOLD)
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
3375 {
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
3376 lf.lfWeight = FW_BOLD;
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
3377 gui.wide_bold_font = get_font_handle(&lf);
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
3378 if (!lf.lfItalic)
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
3379 {
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
3380 lf.lfItalic = TRUE;
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
3381 gui.wide_boldital_font = get_font_handle(&lf);
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
3382 }
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
3383 }
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
3384 }
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
3385 }
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
3386
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
3387 /*
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
3388 * Initialise vim to use the font with the given name.
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
3389 * Return FAIL if the font could not be loaded, OK otherwise.
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
3390 */
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
3391 int
10783
04eb70c77cf4 patch 8.0.0281: some files are still using ARGSUSED instead of UNUSED
Christian Brabandt <cb@256bit.org>
parents: 10440
diff changeset
3392 gui_mch_init_font(char_u *font_name, int fontset UNUSED)
8140
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
3393 {
27160
4482dd5f8869 patch 8.2.4109: MS-Windows: high dpi support is outdated
Bram Moolenaar <Bram@vim.org>
parents: 26966
diff changeset
3394 LOGFONTW lf, lfOrig;
8140
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
3395 GuiFont font = NOFONT;
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
3396 char_u *p;
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
3397
18788
e1f4e9d78a6a patch 8.1.2383: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents: 18773
diff changeset
3398 // Load the font
8140
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
3399 if (get_logfont(&lf, font_name, NULL, TRUE) == OK)
27160
4482dd5f8869 patch 8.2.4109: MS-Windows: high dpi support is outdated
Bram Moolenaar <Bram@vim.org>
parents: 26966
diff changeset
3400 {
4482dd5f8869 patch 8.2.4109: MS-Windows: high dpi support is outdated
Bram Moolenaar <Bram@vim.org>
parents: 26966
diff changeset
3401 lfOrig = lf;
4482dd5f8869 patch 8.2.4109: MS-Windows: high dpi support is outdated
Bram Moolenaar <Bram@vim.org>
parents: 26966
diff changeset
3402 lf.lfHeight = adjust_fontsize_by_dpi(lf.lfHeight);
8140
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
3403 font = get_font_handle(&lf);
27160
4482dd5f8869 patch 8.2.4109: MS-Windows: high dpi support is outdated
Bram Moolenaar <Bram@vim.org>
parents: 26966
diff changeset
3404 }
8140
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
3405 if (font == NOFONT)
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
3406 return FAIL;
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
3407
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
3408 if (font_name == NULL)
27281
f7d73708b391 patch 8.2.4169: MS-Windows: unnessary casts and other minor things
Bram Moolenaar <Bram@vim.org>
parents: 27261
diff changeset
3409 font_name = (char_u *)"";
27249
d5570658f18d patch 8.2.4153: MS-Windows: Global IME is no longer supported
Bram Moolenaar <Bram@vim.org>
parents: 27229
diff changeset
3410 #ifdef FEAT_MBYTE_IME
8140
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
3411 norm_logfont = lf;
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
3412 sub_logfont = lf;
27160
4482dd5f8869 patch 8.2.4109: MS-Windows: high dpi support is outdated
Bram Moolenaar <Bram@vim.org>
parents: 26966
diff changeset
3413 if (!s_in_dpichanged)
4482dd5f8869 patch 8.2.4109: MS-Windows: high dpi support is outdated
Bram Moolenaar <Bram@vim.org>
parents: 26966
diff changeset
3414 update_im_font();
8140
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
3415 #endif
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
3416 gui_mch_free_font(gui.norm_font);
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
3417 gui.norm_font = font;
27160
4482dd5f8869 patch 8.2.4109: MS-Windows: high dpi support is outdated
Bram Moolenaar <Bram@vim.org>
parents: 26966
diff changeset
3418 current_font_height = lfOrig.lfHeight;
8140
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
3419 GetFontSize(font);
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
3420
27160
4482dd5f8869 patch 8.2.4109: MS-Windows: high dpi support is outdated
Bram Moolenaar <Bram@vim.org>
parents: 26966
diff changeset
3421 p = logfont2name(lfOrig);
8140
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
3422 if (p != NULL)
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
3423 {
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
3424 hl_set_font_name(p);
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
3425
18788
e1f4e9d78a6a patch 8.1.2383: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents: 18773
diff changeset
3426 // When setting 'guifont' to "*" replace it with the actual font name.
8140
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
3427 if (STRCMP(font_name, "*") == 0 && STRCMP(p_guifont, "*") == 0)
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
3428 {
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
3429 vim_free(p_guifont);
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
3430 p_guifont = p;
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
3431 }
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
3432 else
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
3433 vim_free(p);
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
3434 }
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
3435
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
3436 gui_mch_free_font(gui.ital_font);
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
3437 gui.ital_font = NOFONT;
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
3438 gui_mch_free_font(gui.bold_font);
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
3439 gui.bold_font = NOFONT;
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
3440 gui_mch_free_font(gui.boldital_font);
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
3441 gui.boldital_font = NOFONT;
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
3442
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
3443 if (!lf.lfItalic)
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
3444 {
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
3445 lf.lfItalic = TRUE;
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
3446 gui.ital_font = get_font_handle(&lf);
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
3447 lf.lfItalic = FALSE;
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
3448 }
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
3449 if (lf.lfWeight < FW_BOLD)
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
3450 {
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
3451 lf.lfWeight = FW_BOLD;
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
3452 gui.bold_font = get_font_handle(&lf);
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
3453 if (!lf.lfItalic)
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
3454 {
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
3455 lf.lfItalic = TRUE;
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
3456 gui.boldital_font = get_font_handle(&lf);
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
3457 }
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
3458 }
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
3459
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
3460 return OK;
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
3461 }
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
3462
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
3463 /*
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
3464 * Return TRUE if the GUI window is maximized, filling the whole screen.
21363
ef2290a53dd0 patch 8.2.1232: MS-Windows GUI: Snap cancelled by split command
Bram Moolenaar <Bram@vim.org>
parents: 21361
diff changeset
3465 * Also return TRUE if the window is snapped.
8140
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
3466 */
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
3467 int
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
3468 gui_mch_maximized(void)
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
3469 {
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
3470 WINDOWPLACEMENT wp;
21363
ef2290a53dd0 patch 8.2.1232: MS-Windows GUI: Snap cancelled by split command
Bram Moolenaar <Bram@vim.org>
parents: 21361
diff changeset
3471 RECT rc;
8140
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
3472
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
3473 wp.length = sizeof(WINDOWPLACEMENT);
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
3474 if (GetWindowPlacement(s_hwnd, &wp))
21363
ef2290a53dd0 patch 8.2.1232: MS-Windows GUI: Snap cancelled by split command
Bram Moolenaar <Bram@vim.org>
parents: 21361
diff changeset
3475 {
ef2290a53dd0 patch 8.2.1232: MS-Windows GUI: Snap cancelled by split command
Bram Moolenaar <Bram@vim.org>
parents: 21361
diff changeset
3476 if (wp.showCmd == SW_SHOWMAXIMIZED
8140
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
3477 || (wp.showCmd == SW_SHOWMINIMIZED
21363
ef2290a53dd0 patch 8.2.1232: MS-Windows GUI: Snap cancelled by split command
Bram Moolenaar <Bram@vim.org>
parents: 21361
diff changeset
3478 && wp.flags == WPF_RESTORETOMAXIMIZED))
ef2290a53dd0 patch 8.2.1232: MS-Windows GUI: Snap cancelled by split command
Bram Moolenaar <Bram@vim.org>
parents: 21361
diff changeset
3479 return TRUE;
ef2290a53dd0 patch 8.2.1232: MS-Windows GUI: Snap cancelled by split command
Bram Moolenaar <Bram@vim.org>
parents: 21361
diff changeset
3480 if (wp.showCmd == SW_SHOWMINIMIZED)
ef2290a53dd0 patch 8.2.1232: MS-Windows GUI: Snap cancelled by split command
Bram Moolenaar <Bram@vim.org>
parents: 21361
diff changeset
3481 return FALSE;
ef2290a53dd0 patch 8.2.1232: MS-Windows GUI: Snap cancelled by split command
Bram Moolenaar <Bram@vim.org>
parents: 21361
diff changeset
3482
ef2290a53dd0 patch 8.2.1232: MS-Windows GUI: Snap cancelled by split command
Bram Moolenaar <Bram@vim.org>
parents: 21361
diff changeset
3483 // Assume the window is snapped when the sizes from two APIs differ.
ef2290a53dd0 patch 8.2.1232: MS-Windows GUI: Snap cancelled by split command
Bram Moolenaar <Bram@vim.org>
parents: 21361
diff changeset
3484 GetWindowRect(s_hwnd, &rc);
ef2290a53dd0 patch 8.2.1232: MS-Windows GUI: Snap cancelled by split command
Bram Moolenaar <Bram@vim.org>
parents: 21361
diff changeset
3485 if ((rc.right - rc.left !=
ef2290a53dd0 patch 8.2.1232: MS-Windows GUI: Snap cancelled by split command
Bram Moolenaar <Bram@vim.org>
parents: 21361
diff changeset
3486 wp.rcNormalPosition.right - wp.rcNormalPosition.left)
ef2290a53dd0 patch 8.2.1232: MS-Windows GUI: Snap cancelled by split command
Bram Moolenaar <Bram@vim.org>
parents: 21361
diff changeset
3487 || (rc.bottom - rc.top !=
ef2290a53dd0 patch 8.2.1232: MS-Windows GUI: Snap cancelled by split command
Bram Moolenaar <Bram@vim.org>
parents: 21361
diff changeset
3488 wp.rcNormalPosition.bottom - wp.rcNormalPosition.top))
ef2290a53dd0 patch 8.2.1232: MS-Windows GUI: Snap cancelled by split command
Bram Moolenaar <Bram@vim.org>
parents: 21361
diff changeset
3489 return TRUE;
ef2290a53dd0 patch 8.2.1232: MS-Windows GUI: Snap cancelled by split command
Bram Moolenaar <Bram@vim.org>
parents: 21361
diff changeset
3490 }
ef2290a53dd0 patch 8.2.1232: MS-Windows GUI: Snap cancelled by split command
Bram Moolenaar <Bram@vim.org>
parents: 21361
diff changeset
3491 return FALSE;
8140
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
3492 }
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
3493
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
3494 /*
12802
29a728529f92 patch 8.0.1278: GUI window always resizes when adding scrollbar
Christian Brabandt <cb@256bit.org>
parents: 12712
diff changeset
3495 * Called when the font changed while the window is maximized or GO_KEEPWINSIZE
29a728529f92 patch 8.0.1278: GUI window always resizes when adding scrollbar
Christian Brabandt <cb@256bit.org>
parents: 12712
diff changeset
3496 * is set. Compute the new Rows and Columns. This is like resizing the
29a728529f92 patch 8.0.1278: GUI window always resizes when adding scrollbar
Christian Brabandt <cb@256bit.org>
parents: 12712
diff changeset
3497 * window.
8140
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
3498 */
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
3499 void
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
3500 gui_mch_newfont(void)
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
3501 {
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
3502 RECT rect;
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
3503
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
3504 GetWindowRect(s_hwnd, &rect);
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
3505 if (win_socket_id == 0)
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
3506 {
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
3507 gui_resize_shell(rect.right - rect.left
27160
4482dd5f8869 patch 8.2.4109: MS-Windows: high dpi support is outdated
Bram Moolenaar <Bram@vim.org>
parents: 26966
diff changeset
3508 - (pGetSystemMetricsForDpi(SM_CXFRAME, s_dpi) +
4482dd5f8869 patch 8.2.4109: MS-Windows: high dpi support is outdated
Bram Moolenaar <Bram@vim.org>
parents: 26966
diff changeset
3509 pGetSystemMetricsForDpi(SM_CXPADDEDBORDER, s_dpi)) * 2,
8140
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
3510 rect.bottom - rect.top
27160
4482dd5f8869 patch 8.2.4109: MS-Windows: high dpi support is outdated
Bram Moolenaar <Bram@vim.org>
parents: 26966
diff changeset
3511 - (pGetSystemMetricsForDpi(SM_CYFRAME, s_dpi) +
4482dd5f8869 patch 8.2.4109: MS-Windows: high dpi support is outdated
Bram Moolenaar <Bram@vim.org>
parents: 26966
diff changeset
3512 pGetSystemMetricsForDpi(SM_CXPADDEDBORDER, s_dpi)) * 2
4482dd5f8869 patch 8.2.4109: MS-Windows: high dpi support is outdated
Bram Moolenaar <Bram@vim.org>
parents: 26966
diff changeset
3513 - pGetSystemMetricsForDpi(SM_CYCAPTION, s_dpi)
4482dd5f8869 patch 8.2.4109: MS-Windows: high dpi support is outdated
Bram Moolenaar <Bram@vim.org>
parents: 26966
diff changeset
3514 - gui_mswin_get_menu_height(FALSE));
8140
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
3515 }
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
3516 else
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
3517 {
18788
e1f4e9d78a6a patch 8.1.2383: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents: 18773
diff changeset
3518 // Inside another window, don't use the frame and border.
8140
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
3519 gui_resize_shell(rect.right - rect.left,
27160
4482dd5f8869 patch 8.2.4109: MS-Windows: high dpi support is outdated
Bram Moolenaar <Bram@vim.org>
parents: 26966
diff changeset
3520 rect.bottom - rect.top - gui_mswin_get_menu_height(FALSE));
8140
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
3521 }
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
3522 }
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
3523
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
3524 /*
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
3525 * Set the window title
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
3526 */
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
3527 void
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
3528 gui_mch_settitle(
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
3529 char_u *title,
10783
04eb70c77cf4 patch 8.0.0281: some files are still using ARGSUSED instead of UNUSED
Christian Brabandt <cb@256bit.org>
parents: 10440
diff changeset
3530 char_u *icon UNUSED)
8140
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
3531 {
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
3532 set_window_title(s_hwnd, (title == NULL ? "VIM" : (char *)title));
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
3533 }
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
3534
9834
80ace3687eec commit https://github.com/vim/vim/commit/a6b7a08ae04a3cd4d9c45c906bb7a197e2135179
Christian Brabandt <cb@256bit.org>
parents: 9428
diff changeset
3535 #if defined(FEAT_MOUSESHAPE) || defined(PROTO)
18788
e1f4e9d78a6a patch 8.1.2383: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents: 18773
diff changeset
3536 // Table for shape IDCs. Keep in sync with the mshape_names[] table in
e1f4e9d78a6a patch 8.1.2383: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents: 18773
diff changeset
3537 // misc2.c!
8140
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
3538 static LPCSTR mshape_idcs[] =
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
3539 {
18788
e1f4e9d78a6a patch 8.1.2383: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents: 18773
diff changeset
3540 IDC_ARROW, // arrow
e1f4e9d78a6a patch 8.1.2383: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents: 18773
diff changeset
3541 MAKEINTRESOURCE(0), // blank
e1f4e9d78a6a patch 8.1.2383: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents: 18773
diff changeset
3542 IDC_IBEAM, // beam
e1f4e9d78a6a patch 8.1.2383: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents: 18773
diff changeset
3543 IDC_SIZENS, // updown
e1f4e9d78a6a patch 8.1.2383: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents: 18773
diff changeset
3544 IDC_SIZENS, // udsizing
e1f4e9d78a6a patch 8.1.2383: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents: 18773
diff changeset
3545 IDC_SIZEWE, // leftright
e1f4e9d78a6a patch 8.1.2383: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents: 18773
diff changeset
3546 IDC_SIZEWE, // lrsizing
e1f4e9d78a6a patch 8.1.2383: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents: 18773
diff changeset
3547 IDC_WAIT, // busy
e1f4e9d78a6a patch 8.1.2383: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents: 18773
diff changeset
3548 IDC_NO, // no
e1f4e9d78a6a patch 8.1.2383: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents: 18773
diff changeset
3549 IDC_ARROW, // crosshair
e1f4e9d78a6a patch 8.1.2383: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents: 18773
diff changeset
3550 IDC_ARROW, // hand1
e1f4e9d78a6a patch 8.1.2383: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents: 18773
diff changeset
3551 IDC_ARROW, // hand2
e1f4e9d78a6a patch 8.1.2383: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents: 18773
diff changeset
3552 IDC_ARROW, // pencil
e1f4e9d78a6a patch 8.1.2383: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents: 18773
diff changeset
3553 IDC_ARROW, // question
e1f4e9d78a6a patch 8.1.2383: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents: 18773
diff changeset
3554 IDC_ARROW, // right-arrow
e1f4e9d78a6a patch 8.1.2383: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents: 18773
diff changeset
3555 IDC_UPARROW, // up-arrow
e1f4e9d78a6a patch 8.1.2383: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents: 18773
diff changeset
3556 IDC_ARROW // last one
8140
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
3557 };
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
3558
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
3559 void
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
3560 mch_set_mouse_shape(int shape)
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
3561 {
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
3562 LPCSTR idc;
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
3563
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
3564 if (shape == MSHAPE_HIDE)
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
3565 ShowCursor(FALSE);
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
3566 else
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
3567 {
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
3568 if (shape >= MSHAPE_NUMBERED)
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
3569 idc = IDC_ARROW;
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
3570 else
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
3571 idc = mshape_idcs[shape];
18662
652ac5edf8d0 patch 8.1.2323: Old MSVC version no longer tested.
Bram Moolenaar <Bram@vim.org>
parents: 18652
diff changeset
3572 SetClassLongPtr(s_textArea, GCLP_HCURSOR, (LONG_PTR)LoadCursor(NULL, idc));
8140
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
3573 if (!p_mh)
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
3574 {
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
3575 POINT mp;
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
3576
18788
e1f4e9d78a6a patch 8.1.2383: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents: 18773
diff changeset
3577 // Set the position to make it redrawn with the new shape.
27281
f7d73708b391 patch 8.2.4169: MS-Windows: unnessary casts and other minor things
Bram Moolenaar <Bram@vim.org>
parents: 27261
diff changeset
3578 (void)GetCursorPos(&mp);
8140
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
3579 (void)SetCursorPos(mp.x, mp.y);
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
3580 ShowCursor(TRUE);
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
3581 }
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
3582 }
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
3583 }
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
3584 #endif
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
3585
9834
80ace3687eec commit https://github.com/vim/vim/commit/a6b7a08ae04a3cd4d9c45c906bb7a197e2135179
Christian Brabandt <cb@256bit.org>
parents: 9428
diff changeset
3586 #if defined(FEAT_BROWSE) || defined(PROTO)
8140
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
3587 /*
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
3588 * Wide version of convert_filter().
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
3589 */
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
3590 static WCHAR *
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
3591 convert_filterW(char_u *s)
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
3592 {
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
3593 char_u *tmp;
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
3594 int len;
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
3595 WCHAR *res;
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
3596
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
3597 tmp = convert_filter(s);
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
3598 if (tmp == NULL)
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
3599 return NULL;
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
3600 len = (int)STRLEN(s) + 3;
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
3601 res = enc_to_utf16(tmp, &len);
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
3602 vim_free(tmp);
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
3603 return res;
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
3604 }
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
3605
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
3606 /*
15597
536dd2bc5ac9 patch 8.1.0806: too many #ifdefs
Bram Moolenaar <Bram@vim.org>
parents: 15549
diff changeset
3607 * Pop open a file browser and return the file selected, in allocated memory,
536dd2bc5ac9 patch 8.1.0806: too many #ifdefs
Bram Moolenaar <Bram@vim.org>
parents: 15549
diff changeset
3608 * or NULL if Cancel is hit.
536dd2bc5ac9 patch 8.1.0806: too many #ifdefs
Bram Moolenaar <Bram@vim.org>
parents: 15549
diff changeset
3609 * saving - TRUE if the file will be saved to, FALSE if it will be opened.
536dd2bc5ac9 patch 8.1.0806: too many #ifdefs
Bram Moolenaar <Bram@vim.org>
parents: 15549
diff changeset
3610 * title - Title message for the file browser dialog.
536dd2bc5ac9 patch 8.1.0806: too many #ifdefs
Bram Moolenaar <Bram@vim.org>
parents: 15549
diff changeset
3611 * dflt - Default name of file.
536dd2bc5ac9 patch 8.1.0806: too many #ifdefs
Bram Moolenaar <Bram@vim.org>
parents: 15549
diff changeset
3612 * ext - Default extension to be added to files without extensions.
536dd2bc5ac9 patch 8.1.0806: too many #ifdefs
Bram Moolenaar <Bram@vim.org>
parents: 15549
diff changeset
3613 * initdir - directory in which to open the browser (NULL = current dir)
536dd2bc5ac9 patch 8.1.0806: too many #ifdefs
Bram Moolenaar <Bram@vim.org>
parents: 15549
diff changeset
3614 * filter - Filter for matched files to choose from.
8140
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
3615 */
15601
8ab9ad27fca4 patch 8.1.0808: MS-Windows: build error with GUI
Bram Moolenaar <Bram@vim.org>
parents: 15597
diff changeset
3616 char_u *
15597
536dd2bc5ac9 patch 8.1.0806: too many #ifdefs
Bram Moolenaar <Bram@vim.org>
parents: 15549
diff changeset
3617 gui_mch_browse(
8140
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
3618 int saving,
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
3619 char_u *title,
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
3620 char_u *dflt,
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
3621 char_u *ext,
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
3622 char_u *initdir,
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
3623 char_u *filter)
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
3624 {
18788
e1f4e9d78a6a patch 8.1.2383: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents: 18773
diff changeset
3625 // We always use the wide function. This means enc_to_utf16() must work,
e1f4e9d78a6a patch 8.1.2383: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents: 18773
diff changeset
3626 // otherwise it fails miserably!
8140
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
3627 OPENFILENAMEW fileStruct;
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
3628 WCHAR fileBuf[MAXPATHL];
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
3629 WCHAR *wp;
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
3630 int i;
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
3631 WCHAR *titlep = NULL;
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
3632 WCHAR *extp = NULL;
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
3633 WCHAR *initdirp = NULL;
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
3634 WCHAR *filterp;
14830
9d9e4a929357 patch 8.1.0427: MS-Windows GUI: using invalid encoded file name
Christian Brabandt <cb@256bit.org>
parents: 14364
diff changeset
3635 char_u *p, *q;
27259
59cdcd1e47b8 patch 8.2.4158: MS-Windows: memory leak in :browse
Bram Moolenaar <Bram@vim.org>
parents: 27249
diff changeset
3636 BOOL ret;
8140
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
3637
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
3638 if (dflt == NULL)
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
3639 fileBuf[0] = NUL;
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
3640 else
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
3641 {
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
3642 wp = enc_to_utf16(dflt, NULL);
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
3643 if (wp == NULL)
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
3644 fileBuf[0] = NUL;
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
3645 else
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
3646 {
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
3647 for (i = 0; wp[i] != NUL && i < MAXPATHL - 1; ++i)
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
3648 fileBuf[i] = wp[i];
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
3649 fileBuf[i] = NUL;
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
3650 vim_free(wp);
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
3651 }
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
3652 }
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
3653
18788
e1f4e9d78a6a patch 8.1.2383: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents: 18773
diff changeset
3654 // Convert the filter to Windows format.
8140
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
3655 filterp = convert_filterW(filter);
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
3656
20007
aadd1cae2ff5 patch 8.2.0559: clearing a struct is verbose
Bram Moolenaar <Bram@vim.org>
parents: 19934
diff changeset
3657 CLEAR_FIELD(fileStruct);
18773
38a3bef525e6 patch 8.1.2376: preprocessor indents are incorrect
Bram Moolenaar <Bram@vim.org>
parents: 18763
diff changeset
3658 # ifdef OPENFILENAME_SIZE_VERSION_400W
18788
e1f4e9d78a6a patch 8.1.2383: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents: 18773
diff changeset
3659 // be compatible with Windows NT 4.0
8571
debe6347024d commit https://github.com/vim/vim/commit/89e375a88f3eceb73bbd97e78aca1a1c4647c897
Christian Brabandt <cb@256bit.org>
parents: 8281
diff changeset
3660 fileStruct.lStructSize = OPENFILENAME_SIZE_VERSION_400W;
18773
38a3bef525e6 patch 8.1.2376: preprocessor indents are incorrect
Bram Moolenaar <Bram@vim.org>
parents: 18763
diff changeset
3661 # else
8140
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
3662 fileStruct.lStructSize = sizeof(fileStruct);
18773
38a3bef525e6 patch 8.1.2376: preprocessor indents are incorrect
Bram Moolenaar <Bram@vim.org>
parents: 18763
diff changeset
3663 # endif
8140
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
3664
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
3665 if (title != NULL)
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
3666 titlep = enc_to_utf16(title, NULL);
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
3667 fileStruct.lpstrTitle = titlep;
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
3668
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
3669 if (ext != NULL)
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
3670 extp = enc_to_utf16(ext, NULL);
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
3671 fileStruct.lpstrDefExt = extp;
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
3672
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
3673 fileStruct.lpstrFile = fileBuf;
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
3674 fileStruct.nMaxFile = MAXPATHL;
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
3675 fileStruct.lpstrFilter = filterp;
18788
e1f4e9d78a6a patch 8.1.2383: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents: 18773
diff changeset
3676 fileStruct.hwndOwner = s_hwnd; // main Vim window is owner
e1f4e9d78a6a patch 8.1.2383: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents: 18773
diff changeset
3677 // has an initial dir been specified?
8140
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
3678 if (initdir != NULL && *initdir != NUL)
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
3679 {
18788
e1f4e9d78a6a patch 8.1.2383: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents: 18773
diff changeset
3680 // Must have backslashes here, no matter what 'shellslash' says
8140
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
3681 initdirp = enc_to_utf16(initdir, NULL);
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
3682 if (initdirp != NULL)
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
3683 {
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
3684 for (wp = initdirp; *wp != NUL; ++wp)
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
3685 if (*wp == '/')
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
3686 *wp = '\\';
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
3687 }
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
3688 fileStruct.lpstrInitialDir = initdirp;
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
3689 }
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
3690
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
3691 /*
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
3692 * TODO: Allow selection of multiple files. Needs another arg to this
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
3693 * function to ask for it, and need to use OFN_ALLOWMULTISELECT below.
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
3694 * Also, should we use OFN_FILEMUSTEXIST when opening? Vim can edit on
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
3695 * files that don't exist yet, so I haven't put it in. What about
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
3696 * OFN_PATHMUSTEXIST?
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
3697 * Don't use OFN_OVERWRITEPROMPT, Vim has its own ":confirm" dialog.
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
3698 */
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
3699 fileStruct.Flags = (OFN_NOCHANGEDIR | OFN_PATHMUSTEXIST | OFN_HIDEREADONLY);
18773
38a3bef525e6 patch 8.1.2376: preprocessor indents are incorrect
Bram Moolenaar <Bram@vim.org>
parents: 18763
diff changeset
3700 # ifdef FEAT_SHORTCUT
8140
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
3701 if (curbuf->b_p_bin)
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
3702 fileStruct.Flags |= OFN_NODEREFERENCELINKS;
18773
38a3bef525e6 patch 8.1.2376: preprocessor indents are incorrect
Bram Moolenaar <Bram@vim.org>
parents: 18763
diff changeset
3703 # endif
8140
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
3704 if (saving)
27259
59cdcd1e47b8 patch 8.2.4158: MS-Windows: memory leak in :browse
Bram Moolenaar <Bram@vim.org>
parents: 27249
diff changeset
3705 ret = GetSaveFileNameW(&fileStruct);
8140
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
3706 else
27259
59cdcd1e47b8 patch 8.2.4158: MS-Windows: memory leak in :browse
Bram Moolenaar <Bram@vim.org>
parents: 27249
diff changeset
3707 ret = GetOpenFileNameW(&fileStruct);
8140
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
3708
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
3709 vim_free(filterp);
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
3710 vim_free(initdirp);
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
3711 vim_free(titlep);
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
3712 vim_free(extp);
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
3713
27259
59cdcd1e47b8 patch 8.2.4158: MS-Windows: memory leak in :browse
Bram Moolenaar <Bram@vim.org>
parents: 27249
diff changeset
3714 if (!ret)
59cdcd1e47b8 patch 8.2.4158: MS-Windows: memory leak in :browse
Bram Moolenaar <Bram@vim.org>
parents: 27249
diff changeset
3715 return NULL;
59cdcd1e47b8 patch 8.2.4158: MS-Windows: memory leak in :browse
Bram Moolenaar <Bram@vim.org>
parents: 27249
diff changeset
3716
59cdcd1e47b8 patch 8.2.4158: MS-Windows: memory leak in :browse
Bram Moolenaar <Bram@vim.org>
parents: 27249
diff changeset
3717 // Convert from UTF-16 to 'encoding'.
8140
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
3718 p = utf16_to_enc(fileBuf, NULL);
14830
9d9e4a929357 patch 8.1.0427: MS-Windows GUI: using invalid encoded file name
Christian Brabandt <cb@256bit.org>
parents: 14364
diff changeset
3719 if (p == NULL)
9d9e4a929357 patch 8.1.0427: MS-Windows GUI: using invalid encoded file name
Christian Brabandt <cb@256bit.org>
parents: 14364
diff changeset
3720 return NULL;
8140
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
3721
18788
e1f4e9d78a6a patch 8.1.2383: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents: 18773
diff changeset
3722 // Give focus back to main window (when using MDI).
8140
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
3723 SetFocus(s_hwnd);
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
3724
18788
e1f4e9d78a6a patch 8.1.2383: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents: 18773
diff changeset
3725 // Shorten the file name if possible
14830
9d9e4a929357 patch 8.1.0427: MS-Windows GUI: using invalid encoded file name
Christian Brabandt <cb@256bit.org>
parents: 14364
diff changeset
3726 q = vim_strsave(shorten_fname1(p));
9d9e4a929357 patch 8.1.0427: MS-Windows GUI: using invalid encoded file name
Christian Brabandt <cb@256bit.org>
parents: 14364
diff changeset
3727 vim_free(p);
9d9e4a929357 patch 8.1.0427: MS-Windows GUI: using invalid encoded file name
Christian Brabandt <cb@256bit.org>
parents: 14364
diff changeset
3728 return q;
8140
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
3729 }
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
3730
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
3731
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
3732 /*
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
3733 * Convert the string s to the proper format for a filter string by replacing
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
3734 * the \t and \n delimiters with \0.
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
3735 * Returns the converted string in allocated memory.
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
3736 *
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
3737 * Keep in sync with convert_filterW() above!
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
3738 */
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
3739 static char_u *
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
3740 convert_filter(char_u *s)
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
3741 {
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
3742 char_u *res;
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
3743 unsigned s_len = (unsigned)STRLEN(s);
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
3744 unsigned i;
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
3745
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
3746 res = alloc(s_len + 3);
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
3747 if (res != NULL)
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
3748 {
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
3749 for (i = 0; i < s_len; ++i)
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
3750 if (s[i] == '\t' || s[i] == '\n')
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
3751 res[i] = '\0';
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
3752 else
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
3753 res[i] = s[i];
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
3754 res[s_len] = NUL;
18788
e1f4e9d78a6a patch 8.1.2383: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents: 18773
diff changeset
3755 // Add two extra NULs to make sure it's properly terminated.
8140
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
3756 res[s_len + 1] = NUL;
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
3757 res[s_len + 2] = NUL;
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
3758 }
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
3759 return res;
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
3760 }
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
3761
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
3762 /*
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
3763 * Select a directory.
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
3764 */
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
3765 char_u *
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
3766 gui_mch_browsedir(char_u *title, char_u *initdir)
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
3767 {
18788
e1f4e9d78a6a patch 8.1.2383: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents: 18773
diff changeset
3768 // We fake this: Use a filter that doesn't select anything and a default
e1f4e9d78a6a patch 8.1.2383: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents: 18773
diff changeset
3769 // file name that won't be used.
8140
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
3770 return gui_mch_browse(0, title, (char_u *)_("Not Used"), NULL,
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
3771 initdir, (char_u *)_("Directory\t*.nothing\n"));
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
3772 }
18788
e1f4e9d78a6a patch 8.1.2383: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents: 18773
diff changeset
3773 #endif // FEAT_BROWSE
8140
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
3774
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
3775 static void
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
3776 _OnDropFiles(
10783
04eb70c77cf4 patch 8.0.0281: some files are still using ARGSUSED instead of UNUSED
Christian Brabandt <cb@256bit.org>
parents: 10440
diff changeset
3777 HWND hwnd UNUSED,
8140
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
3778 HDROP hDrop)
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
3779 {
12477
68d7bc045dbe patch 8.0.1118: FEAT_WINDOWS adds a lot of #ifdefs
Christian Brabandt <cb@256bit.org>
parents: 12317
diff changeset
3780 #define BUFPATHLEN _MAX_PATH
68d7bc045dbe patch 8.0.1118: FEAT_WINDOWS adds a lot of #ifdefs
Christian Brabandt <cb@256bit.org>
parents: 12317
diff changeset
3781 #define DRAGQVAL 0xFFFFFFFF
8140
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
3782 WCHAR wszFile[BUFPATHLEN];
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
3783 char szFile[BUFPATHLEN];
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
3784 UINT cFiles = DragQueryFile(hDrop, DRAGQVAL, NULL, 0);
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
3785 UINT i;
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
3786 char_u **fnames;
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
3787 POINT pt;
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
3788 int_u modifiers = 0;
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
3789
18788
e1f4e9d78a6a patch 8.1.2383: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents: 18773
diff changeset
3790 // Obtain dropped position
8140
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
3791 DragQueryPoint(hDrop, &pt);
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
3792 MapWindowPoints(s_hwnd, s_textArea, &pt, 1);
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
3793
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
3794 reset_VIsual();
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
3795
16825
ce04ebdf26b8 patch 8.1.1414: alloc() returning "char_u *" causes a lot of type casts
Bram Moolenaar <Bram@vim.org>
parents: 16768
diff changeset
3796 fnames = ALLOC_MULT(char_u *, cFiles);
8140
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
3797
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
3798 if (fnames != NULL)
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
3799 for (i = 0; i < cFiles; ++i)
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
3800 {
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
3801 if (DragQueryFileW(hDrop, i, wszFile, BUFPATHLEN) > 0)
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
3802 fnames[i] = utf16_to_enc(wszFile, NULL);
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
3803 else
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
3804 {
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
3805 DragQueryFile(hDrop, i, szFile, BUFPATHLEN);
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
3806 fnames[i] = vim_strsave((char_u *)szFile);
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
3807 }
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
3808 }
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
3809
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
3810 DragFinish(hDrop);
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
3811
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
3812 if (fnames != NULL)
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
3813 {
28586
3fd992496509 patch 8.2.4817: Win32 GUI: modifiers are not always used
Bram Moolenaar <Bram@vim.org>
parents: 28574
diff changeset
3814 int kbd_modifiers = get_active_modifiers();
3fd992496509 patch 8.2.4817: Win32 GUI: modifiers are not always used
Bram Moolenaar <Bram@vim.org>
parents: 28574
diff changeset
3815
3fd992496509 patch 8.2.4817: Win32 GUI: modifiers are not always used
Bram Moolenaar <Bram@vim.org>
parents: 28574
diff changeset
3816 if ((kbd_modifiers & MOD_MASK_SHIFT) != 0)
8140
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
3817 modifiers |= MOUSE_SHIFT;
28586
3fd992496509 patch 8.2.4817: Win32 GUI: modifiers are not always used
Bram Moolenaar <Bram@vim.org>
parents: 28574
diff changeset
3818 if ((kbd_modifiers & MOD_MASK_CTRL) != 0)
8140
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
3819 modifiers |= MOUSE_CTRL;
28586
3fd992496509 patch 8.2.4817: Win32 GUI: modifiers are not always used
Bram Moolenaar <Bram@vim.org>
parents: 28574
diff changeset
3820 if ((kbd_modifiers & MOD_MASK_ALT) != 0)
8140
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
3821 modifiers |= MOUSE_ALT;
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
3822
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
3823 gui_handle_drop(pt.x, pt.y, modifiers, fnames, cFiles);
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
3824
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
3825 s_need_activate = TRUE;
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
3826 }
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
3827 }
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
3828
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
3829 static int
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
3830 _OnScroll(
10783
04eb70c77cf4 patch 8.0.0281: some files are still using ARGSUSED instead of UNUSED
Christian Brabandt <cb@256bit.org>
parents: 10440
diff changeset
3831 HWND hwnd UNUSED,
8140
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
3832 HWND hwndCtl,
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
3833 UINT code,
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
3834 int pos)
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
3835 {
18788
e1f4e9d78a6a patch 8.1.2383: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents: 18773
diff changeset
3836 static UINT prev_code = 0; // code of previous call
8140
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
3837 scrollbar_T *sb, *sb_info;
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
3838 long val;
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
3839 int dragging = FALSE;
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
3840 int dont_scroll_save = dont_scroll;
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
3841 SCROLLINFO si;
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
3842
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
3843 si.cbSize = sizeof(si);
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
3844 si.fMask = SIF_POS;
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
3845
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
3846 sb = gui_mswin_find_scrollbar(hwndCtl);
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
3847 if (sb == NULL)
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
3848 return 0;
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
3849
18788
e1f4e9d78a6a patch 8.1.2383: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents: 18773
diff changeset
3850 if (sb->wp != NULL) // Left or right scrollbar
8140
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
3851 {
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
3852 /*
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
3853 * Careful: need to get scrollbar info out of first (left) scrollbar
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
3854 * for window, but keep real scrollbar too because we must pass it to
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
3855 * gui_drag_scrollbar().
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
3856 */
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
3857 sb_info = &sb->wp->w_scrollbars[0];
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
3858 }
18788
e1f4e9d78a6a patch 8.1.2383: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents: 18773
diff changeset
3859 else // Bottom scrollbar
8140
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
3860 sb_info = sb;
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
3861 val = sb_info->value;
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
3862
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
3863 switch (code)
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
3864 {
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
3865 case SB_THUMBTRACK:
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
3866 val = pos;
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
3867 dragging = TRUE;
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
3868 if (sb->scroll_shift > 0)
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
3869 val <<= sb->scroll_shift;
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
3870 break;
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
3871 case SB_LINEDOWN:
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
3872 val++;
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
3873 break;
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
3874 case SB_LINEUP:
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
3875 val--;
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
3876 break;
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
3877 case SB_PAGEDOWN:
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
3878 val += (sb_info->size > 2 ? sb_info->size - 2 : 1);
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
3879 break;
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
3880 case SB_PAGEUP:
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
3881 val -= (sb_info->size > 2 ? sb_info->size - 2 : 1);
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
3882 break;
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
3883 case SB_TOP:
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
3884 val = 0;
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
3885 break;
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
3886 case SB_BOTTOM:
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
3887 val = sb_info->max;
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
3888 break;
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
3889 case SB_ENDSCROLL:
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
3890 if (prev_code == SB_THUMBTRACK)
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
3891 {
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
3892 /*
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
3893 * "pos" only gives us 16-bit data. In case of large file,
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
3894 * use GetScrollPos() which returns 32-bit. Unfortunately it
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
3895 * is not valid while the scrollbar is being dragged.
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
3896 */
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
3897 val = GetScrollPos(hwndCtl, SB_CTL);
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
3898 if (sb->scroll_shift > 0)
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
3899 val <<= sb->scroll_shift;
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
3900 }
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
3901 break;
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
3902
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
3903 default:
18788
e1f4e9d78a6a patch 8.1.2383: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents: 18773
diff changeset
3904 // TRACE("Unknown scrollbar event %d\n", code);
8140
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
3905 return 0;
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
3906 }
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
3907 prev_code = code;
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
3908
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
3909 si.nPos = (sb->scroll_shift > 0) ? val >> sb->scroll_shift : val;
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
3910 SetScrollInfo(hwndCtl, SB_CTL, &si, TRUE);
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
3911
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
3912 /*
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
3913 * When moving a vertical scrollbar, move the other vertical scrollbar too.
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
3914 */
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
3915 if (sb->wp != NULL)
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
3916 {
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
3917 scrollbar_T *sba = sb->wp->w_scrollbars;
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
3918 HWND id = sba[ (sb == sba + SBAR_LEFT) ? SBAR_RIGHT : SBAR_LEFT].id;
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
3919
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
3920 SetScrollInfo(id, SB_CTL, &si, TRUE);
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
3921 }
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
3922
18788
e1f4e9d78a6a patch 8.1.2383: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents: 18773
diff changeset
3923 // Don't let us be interrupted here by another message.
8140
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
3924 s_busy_processing = TRUE;
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
3925
18788
e1f4e9d78a6a patch 8.1.2383: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents: 18773
diff changeset
3926 // When "allow_scrollbar" is FALSE still need to remember the new
e1f4e9d78a6a patch 8.1.2383: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents: 18773
diff changeset
3927 // position, but don't actually scroll by setting "dont_scroll".
8140
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
3928 dont_scroll = !allow_scrollbar;
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
3929
13150
808625d4b71b patch 8.0.1449: slow redrawing with DirectX
Christian Brabandt <cb@256bit.org>
parents: 13028
diff changeset
3930 mch_disable_flush();
8140
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
3931 gui_drag_scrollbar(sb, val, dragging);
13150
808625d4b71b patch 8.0.1449: slow redrawing with DirectX
Christian Brabandt <cb@256bit.org>
parents: 13028
diff changeset
3932 mch_enable_flush();
808625d4b71b patch 8.0.1449: slow redrawing with DirectX
Christian Brabandt <cb@256bit.org>
parents: 13028
diff changeset
3933 gui_may_flush();
8140
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
3934
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
3935 s_busy_processing = FALSE;
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
3936 dont_scroll = dont_scroll_save;
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
3937
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
3938 return 0;
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
3939 }
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
3940
563c923b1584 commit https://github.com/vim/vim/commit/cf7164a088664961e7d70dd100c5874dc5ceb293
Christian Brabandt <cb@256bit.org>
parents: 8138
diff changeset
3941
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3942 #ifdef FEAT_XPM_W32
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3943 # include "xpm_w32.h"
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3944 #endif
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3945
18788
e1f4e9d78a6a patch 8.1.2383: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents: 18773
diff changeset
3946
e1f4e9d78a6a patch 8.1.2383: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents: 18773
diff changeset
3947 // Some parameters for tearoff menus. All in pixels.
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3948 #define TEAROFF_PADDING_X 2
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3949 #define TEAROFF_BUTTON_PAD_X 8
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3950 #define TEAROFF_MIN_WIDTH 200
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3951 #define TEAROFF_SUBMENU_LABEL ">>"
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3952 #define TEAROFF_COLUMN_PADDING 3 // # spaces to pad column with.
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3953
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3954
12871
1a450ce6980c patch 8.0.1312: balloon_show() only works in terminal when compiled with GUI
Christian Brabandt <cb@256bit.org>
parents: 12802
diff changeset
3955 #ifdef FEAT_BEVAL_GUI
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3956 # define ID_BEVAL_TOOLTIP 200
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3957 # define BEVAL_TEXT_LEN MAXPATHL
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3958
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3959 static BalloonEval *cur_beval = NULL;
27525
27694b525305 patch 8.2.4290: MS-Windows: using type casts for timer IDs
Bram Moolenaar <Bram@vim.org>
parents: 27455
diff changeset
3960 static UINT_PTR beval_timer_id = 0;
27694b525305 patch 8.2.4290: MS-Windows: using type casts for timer IDs
Bram Moolenaar <Bram@vim.org>
parents: 27455
diff changeset
3961 static DWORD last_user_activity = 0;
18788
e1f4e9d78a6a patch 8.1.2383: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents: 18773
diff changeset
3962 #endif // defined(FEAT_BEVAL_GUI)
435
73f016dbb279 updated for version 7.0112
vimboss
parents: 419
diff changeset
3963
842
a209672376fd updated for version 7.0f
vimboss
parents: 840
diff changeset
3964
18788
e1f4e9d78a6a patch 8.1.2383: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents: 18773
diff changeset
3965 // Local variables:
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3966
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3967 #ifdef FEAT_MENU
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3968 static UINT s_menu_id = 100;
2614
56ecdb792c33 updated for version 7.3.036
Bram Moolenaar <bram@vim.org>
parents: 2612
diff changeset
3969 #endif
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3970
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3971 /*
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3972 * Use the system font for dialogs and tear-off menus. Remove this line to
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3973 * use DLG_FONT_NAME.
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3974 */
2614
56ecdb792c33 updated for version 7.3.036
Bram Moolenaar <bram@vim.org>
parents: 2612
diff changeset
3975 #define USE_SYSMENU_FONT
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3976
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3977 #define VIM_NAME "vim"
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3978 #define VIM_CLASSW L"Vim"
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3979
18788
e1f4e9d78a6a patch 8.1.2383: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents: 18773
diff changeset
3980 // Initial size for the dialog template. For gui_mch_dialog() it's fixed,
e1f4e9d78a6a patch 8.1.2383: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents: 18773
diff changeset
3981 // thus there should be room for every dialog. For tearoffs it's made bigger
e1f4e9d78a6a patch 8.1.2383: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents: 18773
diff changeset
3982 // when needed.
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3983 #define DLG_ALLOC_SIZE 16 * 1024
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3984
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3985 /*
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3986 * stuff for dialogs, menus, tearoffs etc.
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3987 */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3988 static PWORD
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3989 add_dialog_element(
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3990 PWORD p,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3991 DWORD lStyle,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3992 WORD x,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3993 WORD y,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3994 WORD w,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3995 WORD h,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3996 WORD Id,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3997 WORD clss,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3998 const char *caption);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3999 static LPWORD lpwAlign(LPWORD);
12543
e9028055f6d6 patch 8.0.1150: MS-Windows GUI: dialog font size is incorrect
Christian Brabandt <cb@256bit.org>
parents: 12513
diff changeset
4000 static int nCopyAnsiToWideChar(LPWORD, LPSTR, BOOL);
8138
f52504c10387 commit https://github.com/vim/vim/commit/065bbac8adfe29a09958570237d223457f235c6c
Christian Brabandt <cb@256bit.org>
parents: 8108
diff changeset
4001 #if defined(FEAT_MENU) && defined(FEAT_TEAROFF)
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
4002 static void gui_mch_tearoff(char_u *title, vimmenu_T *menu, int initX, int initY);
8138
f52504c10387 commit https://github.com/vim/vim/commit/065bbac8adfe29a09958570237d223457f235c6c
Christian Brabandt <cb@256bit.org>
parents: 8108
diff changeset
4003 #endif
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
4004 static void get_dialog_font_metrics(void);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
4005
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
4006 static int dialog_default_button = -1;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
4007
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
4008 #ifdef FEAT_TOOLBAR
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
4009 static void initialise_toolbar(void);
27160
4482dd5f8869 patch 8.2.4109: MS-Windows: high dpi support is outdated
Bram Moolenaar <Bram@vim.org>
parents: 26966
diff changeset
4010 static void update_toolbar_size(void);
5223
91d478da863e updated for version 7.4a.037
Bram Moolenaar <bram@vim.org>
parents: 5020
diff changeset
4011 static LRESULT CALLBACK toolbar_wndproc(HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam);
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
4012 static int get_toolbar_bitmap(vimmenu_T *menu);
27160
4482dd5f8869 patch 8.2.4109: MS-Windows: high dpi support is outdated
Bram Moolenaar <Bram@vim.org>
parents: 26966
diff changeset
4013 #else
4482dd5f8869 patch 8.2.4109: MS-Windows: high dpi support is outdated
Bram Moolenaar <Bram@vim.org>
parents: 26966
diff changeset
4014 # define update_toolbar_size()
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
4015 #endif
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
4016
810
9f345c48220b updated for version 7.0c
vimboss
parents: 786
diff changeset
4017 #ifdef FEAT_GUI_TABLINE
9f345c48220b updated for version 7.0c
vimboss
parents: 786
diff changeset
4018 static void initialise_tabline(void);
5223
91d478da863e updated for version 7.4a.037
Bram Moolenaar <bram@vim.org>
parents: 5020
diff changeset
4019 static LRESULT CALLBACK tabline_wndproc(HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam);
810
9f345c48220b updated for version 7.0c
vimboss
parents: 786
diff changeset
4020 #endif
9f345c48220b updated for version 7.0c
vimboss
parents: 786
diff changeset
4021
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
4022 #ifdef FEAT_MBYTE_IME
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
4023 static LRESULT _OnImeComposition(HWND hwnd, WPARAM dbcs, LPARAM param);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
4024 static char_u *GetResultStr(HWND hwnd, int GCS, int *lenp);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
4025 #endif
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
4026 #if defined(FEAT_MBYTE_IME) && defined(DYNAMIC_IME)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
4027 # ifdef NOIME
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
4028 typedef struct tagCOMPOSITIONFORM {
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
4029 DWORD dwStyle;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
4030 POINT ptCurrentPos;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
4031 RECT rcArea;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
4032 } COMPOSITIONFORM, *PCOMPOSITIONFORM, NEAR *NPCOMPOSITIONFORM, FAR *LPCOMPOSITIONFORM;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
4033 typedef HANDLE HIMC;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
4034 # endif
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
4035
344
7033303ea0c0 updated for version 7.0089
vimboss
parents: 336
diff changeset
4036 static HINSTANCE hLibImm = NULL;
7033303ea0c0 updated for version 7.0089
vimboss
parents: 336
diff changeset
4037 static LONG (WINAPI *pImmGetCompositionStringW)(HIMC, DWORD, LPVOID, DWORD);
7033303ea0c0 updated for version 7.0089
vimboss
parents: 336
diff changeset
4038 static HIMC (WINAPI *pImmGetContext)(HWND);
7033303ea0c0 updated for version 7.0089
vimboss
parents: 336
diff changeset
4039 static HIMC (WINAPI *pImmAssociateContext)(HWND, HIMC);
7033303ea0c0 updated for version 7.0089
vimboss
parents: 336
diff changeset
4040 static BOOL (WINAPI *pImmReleaseContext)(HWND, HIMC);
7033303ea0c0 updated for version 7.0089
vimboss
parents: 336
diff changeset
4041 static BOOL (WINAPI *pImmGetOpenStatus)(HIMC);
7033303ea0c0 updated for version 7.0089
vimboss
parents: 336
diff changeset
4042 static BOOL (WINAPI *pImmSetOpenStatus)(HIMC, BOOL);
16152
8f4eccaaf2c0 patch 8.1.1081: MS-Windows: cannot use some fonts
Bram Moolenaar <Bram@vim.org>
parents: 16123
diff changeset
4043 static BOOL (WINAPI *pImmGetCompositionFontW)(HIMC, LPLOGFONTW);
8f4eccaaf2c0 patch 8.1.1081: MS-Windows: cannot use some fonts
Bram Moolenaar <Bram@vim.org>
parents: 16123
diff changeset
4044 static BOOL (WINAPI *pImmSetCompositionFontW)(HIMC, LPLOGFONTW);
344
7033303ea0c0 updated for version 7.0089
vimboss
parents: 336
diff changeset
4045 static BOOL (WINAPI *pImmSetCompositionWindow)(HIMC, LPCOMPOSITIONFORM);
7033303ea0c0 updated for version 7.0089
vimboss
parents: 336
diff changeset
4046 static BOOL (WINAPI *pImmGetConversionStatus)(HIMC, LPDWORD, LPDWORD);
777
f664cc974a7a updated for version 7.0227
vimboss
parents: 714
diff changeset
4047 static BOOL (WINAPI *pImmSetConversionStatus)(HIMC, DWORD, DWORD);
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
4048 static void dyn_imm_load(void);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
4049 #else
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
4050 # define pImmGetCompositionStringW ImmGetCompositionStringW
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
4051 # define pImmGetContext ImmGetContext
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
4052 # define pImmAssociateContext ImmAssociateContext
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
4053 # define pImmReleaseContext ImmReleaseContext
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
4054 # define pImmGetOpenStatus ImmGetOpenStatus
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
4055 # define pImmSetOpenStatus ImmSetOpenStatus
16152
8f4eccaaf2c0 patch 8.1.1081: MS-Windows: cannot use some fonts
Bram Moolenaar <Bram@vim.org>
parents: 16123
diff changeset
4056 # define pImmGetCompositionFontW ImmGetCompositionFontW
8f4eccaaf2c0 patch 8.1.1081: MS-Windows: cannot use some fonts
Bram Moolenaar <Bram@vim.org>
parents: 16123
diff changeset
4057 # define pImmSetCompositionFontW ImmSetCompositionFontW
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
4058 # define pImmSetCompositionWindow ImmSetCompositionWindow
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
4059 # define pImmGetConversionStatus ImmGetConversionStatus
777
f664cc974a7a updated for version 7.0227
vimboss
parents: 714
diff changeset
4060 # define pImmSetConversionStatus ImmSetConversionStatus
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
4061 #endif
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
4062
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
4063 #ifdef FEAT_MENU
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
4064 /*
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
4065 * Figure out how high the menu bar is at the moment.
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
4066 */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
4067 static int
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
4068 gui_mswin_get_menu_height(
18788
e1f4e9d78a6a patch 8.1.2383: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents: 18773
diff changeset
4069 int fix_window) // If TRUE, resize window if menu height changed
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
4070 {
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
4071 static int old_menu_height = -1;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
4072
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
4073 RECT rc1, rc2;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
4074 int num;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
4075 int menu_height;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
4076
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
4077 if (gui.menu_is_active)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
4078 num = GetMenuItemCount(s_menuBar);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
4079 else
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
4080 num = 0;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
4081
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
4082 if (num == 0)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
4083 menu_height = 0;
6714
dc96dd80aef8 updated for version 7.4.681
Bram Moolenaar <bram@vim.org>
parents: 6359
diff changeset
4084 else if (IsMinimized(s_hwnd))
dc96dd80aef8 updated for version 7.4.681
Bram Moolenaar <bram@vim.org>
parents: 6359
diff changeset
4085 {
18788
e1f4e9d78a6a patch 8.1.2383: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents: 18773
diff changeset
4086 // The height of the menu cannot be determined while the window is
e1f4e9d78a6a patch 8.1.2383: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents: 18773
diff changeset
4087 // minimized. Take the previous height if the menu is changed in that
e1f4e9d78a6a patch 8.1.2383: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents: 18773
diff changeset
4088 // state, to avoid that Vim's vertical window size accidentally
e1f4e9d78a6a patch 8.1.2383: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents: 18773
diff changeset
4089 // increases due to the unaccounted-for menu height.
6714
dc96dd80aef8 updated for version 7.4.681
Bram Moolenaar <bram@vim.org>
parents: 6359
diff changeset
4090 menu_height = old_menu_height == -1 ? 0 : old_menu_height;
dc96dd80aef8 updated for version 7.4.681
Bram Moolenaar <bram@vim.org>
parents: 6359
diff changeset
4091 }
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
4092 else
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
4093 {
10264
c036c0f636d5 commit https://github.com/vim/vim/commit/cea912af725c54f4727a0565e31661f6b29c6bb1
Christian Brabandt <cb@256bit.org>
parents: 10042
diff changeset
4094 /*
c036c0f636d5 commit https://github.com/vim/vim/commit/cea912af725c54f4727a0565e31661f6b29c6bb1
Christian Brabandt <cb@256bit.org>
parents: 10042
diff changeset
4095 * In case 'lines' is set in _vimrc/_gvimrc window width doesn't
c036c0f636d5 commit https://github.com/vim/vim/commit/cea912af725c54f4727a0565e31661f6b29c6bb1
Christian Brabandt <cb@256bit.org>
parents: 10042
diff changeset
4096 * seem to have been set yet, so menu wraps in default window
c036c0f636d5 commit https://github.com/vim/vim/commit/cea912af725c54f4727a0565e31661f6b29c6bb1
Christian Brabandt <cb@256bit.org>
parents: 10042
diff changeset
4097 * width which is very narrow. Instead just return height of a
c036c0f636d5 commit https://github.com/vim/vim/commit/cea912af725c54f4727a0565e31661f6b29c6bb1
Christian Brabandt <cb@256bit.org>
parents: 10042
diff changeset
4098 * single menu item. Will still be wrong when the menu really
c036c0f636d5 commit https://github.com/vim/vim/commit/cea912af725c54f4727a0565e31661f6b29c6bb1
Christian Brabandt <cb@256bit.org>
parents: 10042
diff changeset
4099 * should wrap over more than one line.
c036c0f636d5 commit https://github.com/vim/vim/commit/cea912af725c54f4727a0565e31661f6b29c6bb1
Christian Brabandt <cb@256bit.org>
parents: 10042
diff changeset
4100 */
c036c0f636d5 commit https://github.com/vim/vim/commit/cea912af725c54f4727a0565e31661f6b29c6bb1
Christian Brabandt <cb@256bit.org>
parents: 10042
diff changeset
4101 GetMenuItemRect(s_hwnd, s_menuBar, 0, &rc1);
c036c0f636d5 commit https://github.com/vim/vim/commit/cea912af725c54f4727a0565e31661f6b29c6bb1
Christian Brabandt <cb@256bit.org>
parents: 10042
diff changeset
4102 if (gui.starting)
c036c0f636d5 commit https://github.com/vim/vim/commit/cea912af725c54f4727a0565e31661f6b29c6bb1
Christian Brabandt <cb@256bit.org>
parents: 10042
diff changeset
4103 menu_height = rc1.bottom - rc1.top + 1;
c036c0f636d5 commit https://github.com/vim/vim/commit/cea912af725c54f4727a0565e31661f6b29c6bb1
Christian Brabandt <cb@256bit.org>
parents: 10042
diff changeset
4104 else
c036c0f636d5 commit https://github.com/vim/vim/commit/cea912af725c54f4727a0565e31661f6b29c6bb1
Christian Brabandt <cb@256bit.org>
parents: 10042
diff changeset
4105 {
c036c0f636d5 commit https://github.com/vim/vim/commit/cea912af725c54f4727a0565e31661f6b29c6bb1
Christian Brabandt <cb@256bit.org>
parents: 10042
diff changeset
4106 GetMenuItemRect(s_hwnd, s_menuBar, num - 1, &rc2);
c036c0f636d5 commit https://github.com/vim/vim/commit/cea912af725c54f4727a0565e31661f6b29c6bb1
Christian Brabandt <cb@256bit.org>
parents: 10042
diff changeset
4107 menu_height = rc2.bottom - rc1.top + 1;
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
4108 }
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
4109 }
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
4110
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
4111 if (fix_window && menu_height != old_menu_height)
812
68c15f2c7d3f updated for version 7.0c01
vimboss
parents: 810
diff changeset
4112 gui_set_shellsize(FALSE, FALSE, RESIZE_VERT);
6714
dc96dd80aef8 updated for version 7.4.681
Bram Moolenaar <bram@vim.org>
parents: 6359
diff changeset
4113 old_menu_height = menu_height;
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
4114
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
4115 return menu_height;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
4116 }
18788
e1f4e9d78a6a patch 8.1.2383: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents: 18773
diff changeset
4117 #endif // FEAT_MENU
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
4118
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
4119
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
4120 /*
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
4121 * Setup for the Intellimouse
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
4122 */
28755
26a2836923d6 patch 8.2.4902: mouse wheel scrolling is inconsistent
Bram Moolenaar <Bram@vim.org>
parents: 28700
diff changeset
4123 static long
26a2836923d6 patch 8.2.4902: mouse wheel scrolling is inconsistent
Bram Moolenaar <Bram@vim.org>
parents: 28700
diff changeset
4124 mouse_vertical_scroll_step(void)
26a2836923d6 patch 8.2.4902: mouse wheel scrolling is inconsistent
Bram Moolenaar <Bram@vim.org>
parents: 28700
diff changeset
4125 {
26a2836923d6 patch 8.2.4902: mouse wheel scrolling is inconsistent
Bram Moolenaar <Bram@vim.org>
parents: 28700
diff changeset
4126 UINT val;
26a2836923d6 patch 8.2.4902: mouse wheel scrolling is inconsistent
Bram Moolenaar <Bram@vim.org>
parents: 28700
diff changeset
4127 if (SystemParametersInfo(SPI_GETWHEELSCROLLLINES, 0, &val, 0))
26a2836923d6 patch 8.2.4902: mouse wheel scrolling is inconsistent
Bram Moolenaar <Bram@vim.org>
parents: 28700
diff changeset
4128 return (val != WHEEL_PAGESCROLL) ? (long)val : -1;
26a2836923d6 patch 8.2.4902: mouse wheel scrolling is inconsistent
Bram Moolenaar <Bram@vim.org>
parents: 28700
diff changeset
4129 return 3; // Safe default;
26a2836923d6 patch 8.2.4902: mouse wheel scrolling is inconsistent
Bram Moolenaar <Bram@vim.org>
parents: 28700
diff changeset
4130 }
26a2836923d6 patch 8.2.4902: mouse wheel scrolling is inconsistent
Bram Moolenaar <Bram@vim.org>
parents: 28700
diff changeset
4131
26a2836923d6 patch 8.2.4902: mouse wheel scrolling is inconsistent
Bram Moolenaar <Bram@vim.org>
parents: 28700
diff changeset
4132 static long
26a2836923d6 patch 8.2.4902: mouse wheel scrolling is inconsistent
Bram Moolenaar <Bram@vim.org>
parents: 28700
diff changeset
4133 mouse_horizontal_scroll_step(void)
26a2836923d6 patch 8.2.4902: mouse wheel scrolling is inconsistent
Bram Moolenaar <Bram@vim.org>
parents: 28700
diff changeset
4134 {
26a2836923d6 patch 8.2.4902: mouse wheel scrolling is inconsistent
Bram Moolenaar <Bram@vim.org>
parents: 28700
diff changeset
4135 UINT val;
26a2836923d6 patch 8.2.4902: mouse wheel scrolling is inconsistent
Bram Moolenaar <Bram@vim.org>
parents: 28700
diff changeset
4136 if (SystemParametersInfo(SPI_GETWHEELSCROLLCHARS, 0, &val, 0))
26a2836923d6 patch 8.2.4902: mouse wheel scrolling is inconsistent
Bram Moolenaar <Bram@vim.org>
parents: 28700
diff changeset
4137 return (long)val;
26a2836923d6 patch 8.2.4902: mouse wheel scrolling is inconsistent
Bram Moolenaar <Bram@vim.org>
parents: 28700
diff changeset
4138 return 3; // Safe default;
26a2836923d6 patch 8.2.4902: mouse wheel scrolling is inconsistent
Bram Moolenaar <Bram@vim.org>
parents: 28700
diff changeset
4139 }
26a2836923d6 patch 8.2.4902: mouse wheel scrolling is inconsistent
Bram Moolenaar <Bram@vim.org>
parents: 28700
diff changeset
4140
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
4141 static void
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
4142 init_mouse_wheel(void)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
4143 {
28755
26a2836923d6 patch 8.2.4902: mouse wheel scrolling is inconsistent
Bram Moolenaar <Bram@vim.org>
parents: 28700
diff changeset
4144 // Get the default values for the horizontal and vertical scroll steps from
26a2836923d6 patch 8.2.4902: mouse wheel scrolling is inconsistent
Bram Moolenaar <Bram@vim.org>
parents: 28700
diff changeset
4145 // the system.
26a2836923d6 patch 8.2.4902: mouse wheel scrolling is inconsistent
Bram Moolenaar <Bram@vim.org>
parents: 28700
diff changeset
4146 mouse_set_vert_scroll_step(mouse_vertical_scroll_step());
26a2836923d6 patch 8.2.4902: mouse wheel scrolling is inconsistent
Bram Moolenaar <Bram@vim.org>
parents: 28700
diff changeset
4147 mouse_set_hor_scroll_step(mouse_horizontal_scroll_step());
26a2836923d6 patch 8.2.4902: mouse wheel scrolling is inconsistent
Bram Moolenaar <Bram@vim.org>
parents: 28700
diff changeset
4148 }
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
4149
18526
334b1f897f3a patch 8.1.2257: MS-Windows GUI: scroll wheel always uses current window
Bram Moolenaar <Bram@vim.org>
parents: 18520
diff changeset
4150 /*
28825
4c749f9b97fd patch 8.2.4936: MS-Windows: mouse coordinates for scroll event are wrong
Bram Moolenaar <Bram@vim.org>
parents: 28792
diff changeset
4151 * Mouse scroll event handler.
18526
334b1f897f3a patch 8.1.2257: MS-Windows GUI: scroll wheel always uses current window
Bram Moolenaar <Bram@vim.org>
parents: 18520
diff changeset
4152 */
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
4153 static void
29105
faf7fcd1c8d5 patch 8.2.5073: clang on MS-Windows produces warnings
Bram Moolenaar <Bram@vim.org>
parents: 29096
diff changeset
4154 _OnMouseWheel(HWND hwnd UNUSED, WPARAM wParam, LPARAM lParam, int horizontal)
28700
7fc67f9d84a7 patch 8.2.4874: Win32 GUI: horizontal scroll wheel not handled properly
Bram Moolenaar <Bram@vim.org>
parents: 28639
diff changeset
4155 {
7fc67f9d84a7 patch 8.2.4874: Win32 GUI: horizontal scroll wheel not handled properly
Bram Moolenaar <Bram@vim.org>
parents: 28639
diff changeset
4156 int button;
7fc67f9d84a7 patch 8.2.4874: Win32 GUI: horizontal scroll wheel not handled properly
Bram Moolenaar <Bram@vim.org>
parents: 28639
diff changeset
4157 win_T *wp;
29096
d2ef7d649fcb patch 8.2.5069: various warnings from clang on MS-Windows
Bram Moolenaar <Bram@vim.org>
parents: 28825
diff changeset
4158 int modifiers = 0;
d2ef7d649fcb patch 8.2.5069: various warnings from clang on MS-Windows
Bram Moolenaar <Bram@vim.org>
parents: 28825
diff changeset
4159 int kbd_modifiers;
28825
4c749f9b97fd patch 8.2.4936: MS-Windows: mouse coordinates for scroll event are wrong
Bram Moolenaar <Bram@vim.org>
parents: 28792
diff changeset
4160 int zDelta = GET_WHEEL_DELTA_WPARAM(wParam);
4c749f9b97fd patch 8.2.4936: MS-Windows: mouse coordinates for scroll event are wrong
Bram Moolenaar <Bram@vim.org>
parents: 28792
diff changeset
4161 POINT pt;
28700
7fc67f9d84a7 patch 8.2.4874: Win32 GUI: horizontal scroll wheel not handled properly
Bram Moolenaar <Bram@vim.org>
parents: 28639
diff changeset
4162
18526
334b1f897f3a patch 8.1.2257: MS-Windows GUI: scroll wheel always uses current window
Bram Moolenaar <Bram@vim.org>
parents: 18520
diff changeset
4163 wp = gui_mouse_window(FIND_POPUP);
334b1f897f3a patch 8.1.2257: MS-Windows GUI: scroll wheel always uses current window
Bram Moolenaar <Bram@vim.org>
parents: 18520
diff changeset
4164
18763
49b78d6465e5 patch 8.1.2371: FEAT_TEXT_PROP is a confusing name
Bram Moolenaar <Bram@vim.org>
parents: 18742
diff changeset
4165 #ifdef FEAT_PROP_POPUP
18526
334b1f897f3a patch 8.1.2257: MS-Windows GUI: scroll wheel always uses current window
Bram Moolenaar <Bram@vim.org>
parents: 18520
diff changeset
4166 if (wp != NULL && popup_is_popup(wp))
334b1f897f3a patch 8.1.2257: MS-Windows GUI: scroll wheel always uses current window
Bram Moolenaar <Bram@vim.org>
parents: 18520
diff changeset
4167 {
334b1f897f3a patch 8.1.2257: MS-Windows GUI: scroll wheel always uses current window
Bram Moolenaar <Bram@vim.org>
parents: 18520
diff changeset
4168 cmdarg_T cap;
334b1f897f3a patch 8.1.2257: MS-Windows GUI: scroll wheel always uses current window
Bram Moolenaar <Bram@vim.org>
parents: 18520
diff changeset
4169 oparg_T oa;
334b1f897f3a patch 8.1.2257: MS-Windows GUI: scroll wheel always uses current window
Bram Moolenaar <Bram@vim.org>
parents: 18520
diff changeset
4170
334b1f897f3a patch 8.1.2257: MS-Windows GUI: scroll wheel always uses current window
Bram Moolenaar <Bram@vim.org>
parents: 18520
diff changeset
4171 // Mouse hovers over popup window, scroll it if possible.
334b1f897f3a patch 8.1.2257: MS-Windows GUI: scroll wheel always uses current window
Bram Moolenaar <Bram@vim.org>
parents: 18520
diff changeset
4172 mouse_row = wp->w_winrow;
334b1f897f3a patch 8.1.2257: MS-Windows GUI: scroll wheel always uses current window
Bram Moolenaar <Bram@vim.org>
parents: 18520
diff changeset
4173 mouse_col = wp->w_wincol;
20007
aadd1cae2ff5 patch 8.2.0559: clearing a struct is verbose
Bram Moolenaar <Bram@vim.org>
parents: 19934
diff changeset
4174 CLEAR_FIELD(cap);
28700
7fc67f9d84a7 patch 8.2.4874: Win32 GUI: horizontal scroll wheel not handled properly
Bram Moolenaar <Bram@vim.org>
parents: 28639
diff changeset
4175 if (horizontal)
7fc67f9d84a7 patch 8.2.4874: Win32 GUI: horizontal scroll wheel not handled properly
Bram Moolenaar <Bram@vim.org>
parents: 28639
diff changeset
4176 {
7fc67f9d84a7 patch 8.2.4874: Win32 GUI: horizontal scroll wheel not handled properly
Bram Moolenaar <Bram@vim.org>
parents: 28639
diff changeset
4177 cap.arg = zDelta < 0 ? MSCR_LEFT : MSCR_RIGHT;
7fc67f9d84a7 patch 8.2.4874: Win32 GUI: horizontal scroll wheel not handled properly
Bram Moolenaar <Bram@vim.org>
parents: 28639
diff changeset
4178 cap.cmdchar = zDelta < 0 ? K_MOUSELEFT : K_MOUSERIGHT;
7fc67f9d84a7 patch 8.2.4874: Win32 GUI: horizontal scroll wheel not handled properly
Bram Moolenaar <Bram@vim.org>
parents: 28639
diff changeset
4179 }
7fc67f9d84a7 patch 8.2.4874: Win32 GUI: horizontal scroll wheel not handled properly
Bram Moolenaar <Bram@vim.org>
parents: 28639
diff changeset
4180 else
7fc67f9d84a7 patch 8.2.4874: Win32 GUI: horizontal scroll wheel not handled properly
Bram Moolenaar <Bram@vim.org>
parents: 28639
diff changeset
4181 {
7fc67f9d84a7 patch 8.2.4874: Win32 GUI: horizontal scroll wheel not handled properly
Bram Moolenaar <Bram@vim.org>
parents: 28639
diff changeset
4182 cap.arg = zDelta < 0 ? MSCR_UP : MSCR_DOWN;
7fc67f9d84a7 patch 8.2.4874: Win32 GUI: horizontal scroll wheel not handled properly
Bram Moolenaar <Bram@vim.org>
parents: 28639
diff changeset
4183 cap.cmdchar = zDelta < 0 ? K_MOUSEUP : K_MOUSEDOWN;
7fc67f9d84a7 patch 8.2.4874: Win32 GUI: horizontal scroll wheel not handled properly
Bram Moolenaar <Bram@vim.org>
parents: 28639
diff changeset
4184 }
18526
334b1f897f3a patch 8.1.2257: MS-Windows GUI: scroll wheel always uses current window
Bram Moolenaar <Bram@vim.org>
parents: 18520
diff changeset
4185 clear_oparg(&oa);
334b1f897f3a patch 8.1.2257: MS-Windows GUI: scroll wheel always uses current window
Bram Moolenaar <Bram@vim.org>
parents: 18520
diff changeset
4186 cap.oap = &oa;
334b1f897f3a patch 8.1.2257: MS-Windows GUI: scroll wheel always uses current window
Bram Moolenaar <Bram@vim.org>
parents: 18520
diff changeset
4187 nv_mousescroll(&cap);
334b1f897f3a patch 8.1.2257: MS-Windows GUI: scroll wheel always uses current window
Bram Moolenaar <Bram@vim.org>
parents: 18520
diff changeset
4188 update_screen(0);
334b1f897f3a patch 8.1.2257: MS-Windows GUI: scroll wheel always uses current window
Bram Moolenaar <Bram@vim.org>
parents: 18520
diff changeset
4189 setcursor();
334b1f897f3a patch 8.1.2257: MS-Windows GUI: scroll wheel always uses current window
Bram Moolenaar <Bram@vim.org>
parents: 18520
diff changeset
4190 out_flush();
334b1f897f3a patch 8.1.2257: MS-Windows GUI: scroll wheel always uses current window
Bram Moolenaar <Bram@vim.org>
parents: 18520
diff changeset
4191 return;
334b1f897f3a patch 8.1.2257: MS-Windows GUI: scroll wheel always uses current window
Bram Moolenaar <Bram@vim.org>
parents: 18520
diff changeset
4192 }
334b1f897f3a patch 8.1.2257: MS-Windows GUI: scroll wheel always uses current window
Bram Moolenaar <Bram@vim.org>
parents: 18520
diff changeset
4193 #endif
334b1f897f3a patch 8.1.2257: MS-Windows GUI: scroll wheel always uses current window
Bram Moolenaar <Bram@vim.org>
parents: 18520
diff changeset
4194
334b1f897f3a patch 8.1.2257: MS-Windows GUI: scroll wheel always uses current window
Bram Moolenaar <Bram@vim.org>
parents: 18520
diff changeset
4195 if (wp == NULL || !p_scf)
334b1f897f3a patch 8.1.2257: MS-Windows GUI: scroll wheel always uses current window
Bram Moolenaar <Bram@vim.org>
parents: 18520
diff changeset
4196 wp = curwin;
334b1f897f3a patch 8.1.2257: MS-Windows GUI: scroll wheel always uses current window
Bram Moolenaar <Bram@vim.org>
parents: 18520
diff changeset
4197
28700
7fc67f9d84a7 patch 8.2.4874: Win32 GUI: horizontal scroll wheel not handled properly
Bram Moolenaar <Bram@vim.org>
parents: 28639
diff changeset
4198 // Translate the scroll event into an event that Vim can process so that
7fc67f9d84a7 patch 8.2.4874: Win32 GUI: horizontal scroll wheel not handled properly
Bram Moolenaar <Bram@vim.org>
parents: 28639
diff changeset
4199 // the user has a chance to map the scrollwheel buttons.
7fc67f9d84a7 patch 8.2.4874: Win32 GUI: horizontal scroll wheel not handled properly
Bram Moolenaar <Bram@vim.org>
parents: 28639
diff changeset
4200 if (horizontal)
7fc67f9d84a7 patch 8.2.4874: Win32 GUI: horizontal scroll wheel not handled properly
Bram Moolenaar <Bram@vim.org>
parents: 28639
diff changeset
4201 button = zDelta >= 0 ? MOUSE_6 : MOUSE_7;
18526
334b1f897f3a patch 8.1.2257: MS-Windows GUI: scroll wheel always uses current window
Bram Moolenaar <Bram@vim.org>
parents: 18520
diff changeset
4202 else
28700
7fc67f9d84a7 patch 8.2.4874: Win32 GUI: horizontal scroll wheel not handled properly
Bram Moolenaar <Bram@vim.org>
parents: 28639
diff changeset
4203 button = zDelta >= 0 ? MOUSE_4 : MOUSE_5;
7fc67f9d84a7 patch 8.2.4874: Win32 GUI: horizontal scroll wheel not handled properly
Bram Moolenaar <Bram@vim.org>
parents: 28639
diff changeset
4204
7fc67f9d84a7 patch 8.2.4874: Win32 GUI: horizontal scroll wheel not handled properly
Bram Moolenaar <Bram@vim.org>
parents: 28639
diff changeset
4205 kbd_modifiers = get_active_modifiers();
7fc67f9d84a7 patch 8.2.4874: Win32 GUI: horizontal scroll wheel not handled properly
Bram Moolenaar <Bram@vim.org>
parents: 28639
diff changeset
4206
7fc67f9d84a7 patch 8.2.4874: Win32 GUI: horizontal scroll wheel not handled properly
Bram Moolenaar <Bram@vim.org>
parents: 28639
diff changeset
4207 if ((kbd_modifiers & MOD_MASK_SHIFT) != 0)
7fc67f9d84a7 patch 8.2.4874: Win32 GUI: horizontal scroll wheel not handled properly
Bram Moolenaar <Bram@vim.org>
parents: 28639
diff changeset
4208 modifiers |= MOUSE_SHIFT;
7fc67f9d84a7 patch 8.2.4874: Win32 GUI: horizontal scroll wheel not handled properly
Bram Moolenaar <Bram@vim.org>
parents: 28639
diff changeset
4209 if ((kbd_modifiers & MOD_MASK_CTRL) != 0)
7fc67f9d84a7 patch 8.2.4874: Win32 GUI: horizontal scroll wheel not handled properly
Bram Moolenaar <Bram@vim.org>
parents: 28639
diff changeset
4210 modifiers |= MOUSE_CTRL;
7fc67f9d84a7 patch 8.2.4874: Win32 GUI: horizontal scroll wheel not handled properly
Bram Moolenaar <Bram@vim.org>
parents: 28639
diff changeset
4211 if ((kbd_modifiers & MOD_MASK_ALT) != 0)
7fc67f9d84a7 patch 8.2.4874: Win32 GUI: horizontal scroll wheel not handled properly
Bram Moolenaar <Bram@vim.org>
parents: 28639
diff changeset
4212 modifiers |= MOUSE_ALT;
18520
6067fbb46625 patch 8.1.2254: MS-Windows: mouse scroll wheel doesn't work in popup
Bram Moolenaar <Bram@vim.org>
parents: 18416
diff changeset
4213
28825
4c749f9b97fd patch 8.2.4936: MS-Windows: mouse coordinates for scroll event are wrong
Bram Moolenaar <Bram@vim.org>
parents: 28792
diff changeset
4214 // The cursor position is relative to the upper-left corner of the screen.
4c749f9b97fd patch 8.2.4936: MS-Windows: mouse coordinates for scroll event are wrong
Bram Moolenaar <Bram@vim.org>
parents: 28792
diff changeset
4215 pt.x = GET_X_LPARAM(lParam);
4c749f9b97fd patch 8.2.4936: MS-Windows: mouse coordinates for scroll event are wrong
Bram Moolenaar <Bram@vim.org>
parents: 28792
diff changeset
4216 pt.y = GET_Y_LPARAM(lParam);
4c749f9b97fd patch 8.2.4936: MS-Windows: mouse coordinates for scroll event are wrong
Bram Moolenaar <Bram@vim.org>
parents: 28792
diff changeset
4217 ScreenToClient(s_textArea, &pt);
4c749f9b97fd patch 8.2.4936: MS-Windows: mouse coordinates for scroll event are wrong
Bram Moolenaar <Bram@vim.org>
parents: 28792
diff changeset
4218
29096
d2ef7d649fcb patch 8.2.5069: various warnings from clang on MS-Windows
Bram Moolenaar <Bram@vim.org>
parents: 28825
diff changeset
4219 gui_send_mouse_event(button, pt.x, pt.y, FALSE, modifiers);
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
4220 }
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
4221
843
9f279ebda751 updated for version 7.0f01
vimboss
parents: 842
diff changeset
4222 #ifdef USE_SYSMENU_FONT
9f279ebda751 updated for version 7.0f01
vimboss
parents: 842
diff changeset
4223 /*
9f279ebda751 updated for version 7.0f01
vimboss
parents: 842
diff changeset
4224 * Get Menu Font.
9f279ebda751 updated for version 7.0f01
vimboss
parents: 842
diff changeset
4225 * Return OK or FAIL.
9f279ebda751 updated for version 7.0f01
vimboss
parents: 842
diff changeset
4226 */
9f279ebda751 updated for version 7.0f01
vimboss
parents: 842
diff changeset
4227 static int
16152
8f4eccaaf2c0 patch 8.1.1081: MS-Windows: cannot use some fonts
Bram Moolenaar <Bram@vim.org>
parents: 16123
diff changeset
4228 gui_w32_get_menu_font(LOGFONTW *lf)
8f4eccaaf2c0 patch 8.1.1081: MS-Windows: cannot use some fonts
Bram Moolenaar <Bram@vim.org>
parents: 16123
diff changeset
4229 {
8f4eccaaf2c0 patch 8.1.1081: MS-Windows: cannot use some fonts
Bram Moolenaar <Bram@vim.org>
parents: 16123
diff changeset
4230 NONCLIENTMETRICSW nm;
8f4eccaaf2c0 patch 8.1.1081: MS-Windows: cannot use some fonts
Bram Moolenaar <Bram@vim.org>
parents: 16123
diff changeset
4231
8f4eccaaf2c0 patch 8.1.1081: MS-Windows: cannot use some fonts
Bram Moolenaar <Bram@vim.org>
parents: 16123
diff changeset
4232 nm.cbSize = sizeof(NONCLIENTMETRICSW);
8f4eccaaf2c0 patch 8.1.1081: MS-Windows: cannot use some fonts
Bram Moolenaar <Bram@vim.org>
parents: 16123
diff changeset
4233 if (!SystemParametersInfoW(
843
9f279ebda751 updated for version 7.0f01
vimboss
parents: 842
diff changeset
4234 SPI_GETNONCLIENTMETRICS,
16152
8f4eccaaf2c0 patch 8.1.1081: MS-Windows: cannot use some fonts
Bram Moolenaar <Bram@vim.org>
parents: 16123
diff changeset
4235 sizeof(NONCLIENTMETRICSW),
843
9f279ebda751 updated for version 7.0f01
vimboss
parents: 842
diff changeset
4236 &nm,
9f279ebda751 updated for version 7.0f01
vimboss
parents: 842
diff changeset
4237 0))
9f279ebda751 updated for version 7.0f01
vimboss
parents: 842
diff changeset
4238 return FAIL;
9f279ebda751 updated for version 7.0f01
vimboss
parents: 842
diff changeset
4239 *lf = nm.lfMenuFont;
9f279ebda751 updated for version 7.0f01
vimboss
parents: 842
diff changeset
4240 return OK;
9f279ebda751 updated for version 7.0f01
vimboss
parents: 842
diff changeset
4241 }
9f279ebda751 updated for version 7.0f01
vimboss
parents: 842
diff changeset
4242 #endif
9f279ebda751 updated for version 7.0f01
vimboss
parents: 842
diff changeset
4243
9f279ebda751 updated for version 7.0f01
vimboss
parents: 842
diff changeset
4244
9f279ebda751 updated for version 7.0f01
vimboss
parents: 842
diff changeset
4245 #if defined(FEAT_GUI_TABLINE) && defined(USE_SYSMENU_FONT)
9f279ebda751 updated for version 7.0f01
vimboss
parents: 842
diff changeset
4246 /*
9f279ebda751 updated for version 7.0f01
vimboss
parents: 842
diff changeset
4247 * Set the GUI tabline font to the system menu font
9f279ebda751 updated for version 7.0f01
vimboss
parents: 842
diff changeset
4248 */
9f279ebda751 updated for version 7.0f01
vimboss
parents: 842
diff changeset
4249 static void
9f279ebda751 updated for version 7.0f01
vimboss
parents: 842
diff changeset
4250 set_tabline_font(void)
9f279ebda751 updated for version 7.0f01
vimboss
parents: 842
diff changeset
4251 {
16152
8f4eccaaf2c0 patch 8.1.1081: MS-Windows: cannot use some fonts
Bram Moolenaar <Bram@vim.org>
parents: 16123
diff changeset
4252 LOGFONTW lfSysmenu;
843
9f279ebda751 updated for version 7.0f01
vimboss
parents: 842
diff changeset
4253 HFONT font;
9f279ebda751 updated for version 7.0f01
vimboss
parents: 842
diff changeset
4254 HWND hwnd;
9f279ebda751 updated for version 7.0f01
vimboss
parents: 842
diff changeset
4255 HDC hdc;
9f279ebda751 updated for version 7.0f01
vimboss
parents: 842
diff changeset
4256 HFONT hfntOld;
9f279ebda751 updated for version 7.0f01
vimboss
parents: 842
diff changeset
4257 TEXTMETRIC tm;
9f279ebda751 updated for version 7.0f01
vimboss
parents: 842
diff changeset
4258
9f279ebda751 updated for version 7.0f01
vimboss
parents: 842
diff changeset
4259 if (gui_w32_get_menu_font(&lfSysmenu) != OK)
9f279ebda751 updated for version 7.0f01
vimboss
parents: 842
diff changeset
4260 return;
9f279ebda751 updated for version 7.0f01
vimboss
parents: 842
diff changeset
4261
27160
4482dd5f8869 patch 8.2.4109: MS-Windows: high dpi support is outdated
Bram Moolenaar <Bram@vim.org>
parents: 26966
diff changeset
4262 lfSysmenu.lfHeight = adjust_fontsize_by_dpi(lfSysmenu.lfHeight);
16152
8f4eccaaf2c0 patch 8.1.1081: MS-Windows: cannot use some fonts
Bram Moolenaar <Bram@vim.org>
parents: 16123
diff changeset
4263 font = CreateFontIndirectW(&lfSysmenu);
843
9f279ebda751 updated for version 7.0f01
vimboss
parents: 842
diff changeset
4264
9f279ebda751 updated for version 7.0f01
vimboss
parents: 842
diff changeset
4265 SendMessage(s_tabhwnd, WM_SETFONT, (WPARAM)font, TRUE);
9f279ebda751 updated for version 7.0f01
vimboss
parents: 842
diff changeset
4266
9f279ebda751 updated for version 7.0f01
vimboss
parents: 842
diff changeset
4267 /*
9f279ebda751 updated for version 7.0f01
vimboss
parents: 842
diff changeset
4268 * Compute the height of the font used for the tab text
9f279ebda751 updated for version 7.0f01
vimboss
parents: 842
diff changeset
4269 */
9f279ebda751 updated for version 7.0f01
vimboss
parents: 842
diff changeset
4270 hwnd = GetDesktopWindow();
9f279ebda751 updated for version 7.0f01
vimboss
parents: 842
diff changeset
4271 hdc = GetWindowDC(hwnd);
9f279ebda751 updated for version 7.0f01
vimboss
parents: 842
diff changeset
4272 hfntOld = SelectFont(hdc, font);
9f279ebda751 updated for version 7.0f01
vimboss
parents: 842
diff changeset
4273
9f279ebda751 updated for version 7.0f01
vimboss
parents: 842
diff changeset
4274 GetTextMetrics(hdc, &tm);
9f279ebda751 updated for version 7.0f01
vimboss
parents: 842
diff changeset
4275
9f279ebda751 updated for version 7.0f01
vimboss
parents: 842
diff changeset
4276 SelectFont(hdc, hfntOld);
9f279ebda751 updated for version 7.0f01
vimboss
parents: 842
diff changeset
4277 ReleaseDC(hwnd, hdc);
9f279ebda751 updated for version 7.0f01
vimboss
parents: 842
diff changeset
4278
9f279ebda751 updated for version 7.0f01
vimboss
parents: 842
diff changeset
4279 /*
9f279ebda751 updated for version 7.0f01
vimboss
parents: 842
diff changeset
4280 * The space used by the tab border and the space between the tab label
9f279ebda751 updated for version 7.0f01
vimboss
parents: 842
diff changeset
4281 * and the tab border is included as 7.
9f279ebda751 updated for version 7.0f01
vimboss
parents: 842
diff changeset
4282 */
9f279ebda751 updated for version 7.0f01
vimboss
parents: 842
diff changeset
4283 gui.tabline_height = tm.tmHeight + tm.tmInternalLeading + 7;
9f279ebda751 updated for version 7.0f01
vimboss
parents: 842
diff changeset
4284 }
27160
4482dd5f8869 patch 8.2.4109: MS-Windows: high dpi support is outdated
Bram Moolenaar <Bram@vim.org>
parents: 26966
diff changeset
4285 #else
4482dd5f8869 patch 8.2.4109: MS-Windows: high dpi support is outdated
Bram Moolenaar <Bram@vim.org>
parents: 26966
diff changeset
4286 # define set_tabline_font()
843
9f279ebda751 updated for version 7.0f01
vimboss
parents: 842
diff changeset
4287 #endif
9f279ebda751 updated for version 7.0f01
vimboss
parents: 842
diff changeset
4288
333
18f024844150 updated for version 7.0086
vimboss
parents: 323
diff changeset
4289 /*
18f024844150 updated for version 7.0086
vimboss
parents: 323
diff changeset
4290 * Invoked when a setting was changed.
18f024844150 updated for version 7.0086
vimboss
parents: 323
diff changeset
4291 */
18f024844150 updated for version 7.0086
vimboss
parents: 323
diff changeset
4292 static LRESULT CALLBACK
28700
7fc67f9d84a7 patch 8.2.4874: Win32 GUI: horizontal scroll wheel not handled properly
Bram Moolenaar <Bram@vim.org>
parents: 28639
diff changeset
4293 _OnSettingChange(UINT param)
7fc67f9d84a7 patch 8.2.4874: Win32 GUI: horizontal scroll wheel not handled properly
Bram Moolenaar <Bram@vim.org>
parents: 28639
diff changeset
4294 {
7fc67f9d84a7 patch 8.2.4874: Win32 GUI: horizontal scroll wheel not handled properly
Bram Moolenaar <Bram@vim.org>
parents: 28639
diff changeset
4295 switch (param)
7fc67f9d84a7 patch 8.2.4874: Win32 GUI: horizontal scroll wheel not handled properly
Bram Moolenaar <Bram@vim.org>
parents: 28639
diff changeset
4296 {
7fc67f9d84a7 patch 8.2.4874: Win32 GUI: horizontal scroll wheel not handled properly
Bram Moolenaar <Bram@vim.org>
parents: 28639
diff changeset
4297 case SPI_SETWHEELSCROLLLINES:
28755
26a2836923d6 patch 8.2.4902: mouse wheel scrolling is inconsistent
Bram Moolenaar <Bram@vim.org>
parents: 28700
diff changeset
4298 mouse_set_vert_scroll_step(mouse_vertical_scroll_step());
28700
7fc67f9d84a7 patch 8.2.4874: Win32 GUI: horizontal scroll wheel not handled properly
Bram Moolenaar <Bram@vim.org>
parents: 28639
diff changeset
4299 break;
28755
26a2836923d6 patch 8.2.4902: mouse wheel scrolling is inconsistent
Bram Moolenaar <Bram@vim.org>
parents: 28700
diff changeset
4300 case SPI_SETWHEELSCROLLCHARS:
26a2836923d6 patch 8.2.4902: mouse wheel scrolling is inconsistent
Bram Moolenaar <Bram@vim.org>
parents: 28700
diff changeset
4301 mouse_set_hor_scroll_step(mouse_horizontal_scroll_step());
28700
7fc67f9d84a7 patch 8.2.4874: Win32 GUI: horizontal scroll wheel not handled properly
Bram Moolenaar <Bram@vim.org>
parents: 28639
diff changeset
4302 break;
7fc67f9d84a7 patch 8.2.4874: Win32 GUI: horizontal scroll wheel not handled properly
Bram Moolenaar <Bram@vim.org>
parents: 28639
diff changeset
4303 case SPI_SETNONCLIENTMETRICS:
7fc67f9d84a7 patch 8.2.4874: Win32 GUI: horizontal scroll wheel not handled properly
Bram Moolenaar <Bram@vim.org>
parents: 28639
diff changeset
4304 set_tabline_font();
7fc67f9d84a7 patch 8.2.4874: Win32 GUI: horizontal scroll wheel not handled properly
Bram Moolenaar <Bram@vim.org>
parents: 28639
diff changeset
4305 break;
7fc67f9d84a7 patch 8.2.4874: Win32 GUI: horizontal scroll wheel not handled properly
Bram Moolenaar <Bram@vim.org>
parents: 28639
diff changeset
4306 default:
7fc67f9d84a7 patch 8.2.4874: Win32 GUI: horizontal scroll wheel not handled properly
Bram Moolenaar <Bram@vim.org>
parents: 28639
diff changeset
4307 break;
7fc67f9d84a7 patch 8.2.4874: Win32 GUI: horizontal scroll wheel not handled properly
Bram Moolenaar <Bram@vim.org>
parents: 28639
diff changeset
4308 }
333
18f024844150 updated for version 7.0086
vimboss
parents: 323
diff changeset
4309 return 0;
18f024844150 updated for version 7.0086
vimboss
parents: 323
diff changeset
4310 }
18f024844150 updated for version 7.0086
vimboss
parents: 323
diff changeset
4311
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
4312 #ifdef FEAT_NETBEANS_INTG
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
4313 static void
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
4314 _OnWindowPosChanged(
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
4315 HWND hwnd,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
4316 const LPWINDOWPOS lpwpos)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
4317 {
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
4318 static int x = 0, y = 0, cx = 0, cy = 0;
7797
0d46cea25641 commit https://github.com/vim/vim/commit/f12d983deab06b0408781d7a6c2f8970d765b723
Christian Brabandt <cb@256bit.org>
parents: 7743
diff changeset
4319 extern int WSInitialized;
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
4320
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
4321 if (WSInitialized && (lpwpos->x != x || lpwpos->y != y
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
4322 || lpwpos->cx != cx || lpwpos->cy != cy))
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
4323 {
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
4324 x = lpwpos->x;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
4325 y = lpwpos->y;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
4326 cx = lpwpos->cx;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
4327 cy = lpwpos->cy;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
4328 netbeans_frame_moved(x, y);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
4329 }
18788
e1f4e9d78a6a patch 8.1.2383: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents: 18773
diff changeset
4330 // Allow to send WM_SIZE and WM_MOVE
27249
d5570658f18d patch 8.2.4153: MS-Windows: Global IME is no longer supported
Bram Moolenaar <Bram@vim.org>
parents: 27229
diff changeset
4331 FORWARD_WM_WINDOWPOSCHANGED(hwnd, lpwpos, DefWindowProcW);
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
4332 }
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
4333 #endif
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
4334
24804
324086c6f757 patch 8.2.2940: MS-Windows: cannot see the size when resizing
Bram Moolenaar <Bram@vim.org>
parents: 24768
diff changeset
4335
324086c6f757 patch 8.2.2940: MS-Windows: cannot see the size when resizing
Bram Moolenaar <Bram@vim.org>
parents: 24768
diff changeset
4336 static HWND hwndTip = NULL;
324086c6f757 patch 8.2.2940: MS-Windows: cannot see the size when resizing
Bram Moolenaar <Bram@vim.org>
parents: 24768
diff changeset
4337
324086c6f757 patch 8.2.2940: MS-Windows: cannot see the size when resizing
Bram Moolenaar <Bram@vim.org>
parents: 24768
diff changeset
4338 static void
324086c6f757 patch 8.2.2940: MS-Windows: cannot see the size when resizing
Bram Moolenaar <Bram@vim.org>
parents: 24768
diff changeset
4339 show_sizing_tip(int cols, int rows)
324086c6f757 patch 8.2.2940: MS-Windows: cannot see the size when resizing
Bram Moolenaar <Bram@vim.org>
parents: 24768
diff changeset
4340 {
29105
faf7fcd1c8d5 patch 8.2.5073: clang on MS-Windows produces warnings
Bram Moolenaar <Bram@vim.org>
parents: 29096
diff changeset
4341 TOOLINFOA ti;
24804
324086c6f757 patch 8.2.2940: MS-Windows: cannot see the size when resizing
Bram Moolenaar <Bram@vim.org>
parents: 24768
diff changeset
4342 char buf[32];
324086c6f757 patch 8.2.2940: MS-Windows: cannot see the size when resizing
Bram Moolenaar <Bram@vim.org>
parents: 24768
diff changeset
4343
29105
faf7fcd1c8d5 patch 8.2.5073: clang on MS-Windows produces warnings
Bram Moolenaar <Bram@vim.org>
parents: 29096
diff changeset
4344 ti.cbSize = sizeof(ti);
24804
324086c6f757 patch 8.2.2940: MS-Windows: cannot see the size when resizing
Bram Moolenaar <Bram@vim.org>
parents: 24768
diff changeset
4345 ti.hwnd = s_hwnd;
324086c6f757 patch 8.2.2940: MS-Windows: cannot see the size when resizing
Bram Moolenaar <Bram@vim.org>
parents: 24768
diff changeset
4346 ti.uId = (UINT_PTR)s_hwnd;
324086c6f757 patch 8.2.2940: MS-Windows: cannot see the size when resizing
Bram Moolenaar <Bram@vim.org>
parents: 24768
diff changeset
4347 ti.uFlags = TTF_SUBCLASS | TTF_IDISHWND;
324086c6f757 patch 8.2.2940: MS-Windows: cannot see the size when resizing
Bram Moolenaar <Bram@vim.org>
parents: 24768
diff changeset
4348 ti.lpszText = buf;
324086c6f757 patch 8.2.2940: MS-Windows: cannot see the size when resizing
Bram Moolenaar <Bram@vim.org>
parents: 24768
diff changeset
4349 sprintf(buf, "%dx%d", cols, rows);
324086c6f757 patch 8.2.2940: MS-Windows: cannot see the size when resizing
Bram Moolenaar <Bram@vim.org>
parents: 24768
diff changeset
4350 if (hwndTip == NULL)
324086c6f757 patch 8.2.2940: MS-Windows: cannot see the size when resizing
Bram Moolenaar <Bram@vim.org>
parents: 24768
diff changeset
4351 {
324086c6f757 patch 8.2.2940: MS-Windows: cannot see the size when resizing
Bram Moolenaar <Bram@vim.org>
parents: 24768
diff changeset
4352 hwndTip = CreateWindowExA(0, TOOLTIPS_CLASSA, NULL,
324086c6f757 patch 8.2.2940: MS-Windows: cannot see the size when resizing
Bram Moolenaar <Bram@vim.org>
parents: 24768
diff changeset
4353 WS_POPUP | TTS_ALWAYSTIP | TTS_NOPREFIX,
324086c6f757 patch 8.2.2940: MS-Windows: cannot see the size when resizing
Bram Moolenaar <Bram@vim.org>
parents: 24768
diff changeset
4354 CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT,
324086c6f757 patch 8.2.2940: MS-Windows: cannot see the size when resizing
Bram Moolenaar <Bram@vim.org>
parents: 24768
diff changeset
4355 s_hwnd, NULL, GetModuleHandle(NULL), NULL);
324086c6f757 patch 8.2.2940: MS-Windows: cannot see the size when resizing
Bram Moolenaar <Bram@vim.org>
parents: 24768
diff changeset
4356 SendMessage(hwndTip, TTM_ADDTOOL, 0, (LPARAM)&ti);
324086c6f757 patch 8.2.2940: MS-Windows: cannot see the size when resizing
Bram Moolenaar <Bram@vim.org>
parents: 24768
diff changeset
4357 SendMessage(hwndTip, TTM_TRACKACTIVATE, TRUE, (LPARAM)&ti);
324086c6f757 patch 8.2.2940: MS-Windows: cannot see the size when resizing
Bram Moolenaar <Bram@vim.org>
parents: 24768
diff changeset
4358 }
324086c6f757 patch 8.2.2940: MS-Windows: cannot see the size when resizing
Bram Moolenaar <Bram@vim.org>
parents: 24768
diff changeset
4359 else
324086c6f757 patch 8.2.2940: MS-Windows: cannot see the size when resizing
Bram Moolenaar <Bram@vim.org>
parents: 24768
diff changeset
4360 {
324086c6f757 patch 8.2.2940: MS-Windows: cannot see the size when resizing
Bram Moolenaar <Bram@vim.org>
parents: 24768
diff changeset
4361 SendMessage(hwndTip, TTM_UPDATETIPTEXT, 0, (LPARAM)&ti);
324086c6f757 patch 8.2.2940: MS-Windows: cannot see the size when resizing
Bram Moolenaar <Bram@vim.org>
parents: 24768
diff changeset
4362 }
324086c6f757 patch 8.2.2940: MS-Windows: cannot see the size when resizing
Bram Moolenaar <Bram@vim.org>
parents: 24768
diff changeset
4363 SendMessage(hwndTip, TTM_POPUP, 0, 0);
324086c6f757 patch 8.2.2940: MS-Windows: cannot see the size when resizing
Bram Moolenaar <Bram@vim.org>
parents: 24768
diff changeset
4364 }
324086c6f757 patch 8.2.2940: MS-Windows: cannot see the size when resizing
Bram Moolenaar <Bram@vim.org>
parents: 24768
diff changeset
4365
324086c6f757 patch 8.2.2940: MS-Windows: cannot see the size when resizing
Bram Moolenaar <Bram@vim.org>
parents: 24768
diff changeset
4366 static void
324086c6f757 patch 8.2.2940: MS-Windows: cannot see the size when resizing
Bram Moolenaar <Bram@vim.org>
parents: 24768
diff changeset
4367 destroy_sizing_tip(void)
324086c6f757 patch 8.2.2940: MS-Windows: cannot see the size when resizing
Bram Moolenaar <Bram@vim.org>
parents: 24768
diff changeset
4368 {
324086c6f757 patch 8.2.2940: MS-Windows: cannot see the size when resizing
Bram Moolenaar <Bram@vim.org>
parents: 24768
diff changeset
4369 if (hwndTip != NULL)
324086c6f757 patch 8.2.2940: MS-Windows: cannot see the size when resizing
Bram Moolenaar <Bram@vim.org>
parents: 24768
diff changeset
4370 {
324086c6f757 patch 8.2.2940: MS-Windows: cannot see the size when resizing
Bram Moolenaar <Bram@vim.org>
parents: 24768
diff changeset
4371 DestroyWindow(hwndTip);
324086c6f757 patch 8.2.2940: MS-Windows: cannot see the size when resizing
Bram Moolenaar <Bram@vim.org>
parents: 24768
diff changeset
4372 hwndTip = NULL;
324086c6f757 patch 8.2.2940: MS-Windows: cannot see the size when resizing
Bram Moolenaar <Bram@vim.org>
parents: 24768
diff changeset
4373 }
324086c6f757 patch 8.2.2940: MS-Windows: cannot see the size when resizing
Bram Moolenaar <Bram@vim.org>
parents: 24768
diff changeset
4374 }
324086c6f757 patch 8.2.2940: MS-Windows: cannot see the size when resizing
Bram Moolenaar <Bram@vim.org>
parents: 24768
diff changeset
4375
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
4376 static int
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
4377 _DuringSizing(
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
4378 UINT fwSide,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
4379 LPRECT lprc)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
4380 {
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
4381 int w, h;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
4382 int valid_w, valid_h;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
4383 int w_offset, h_offset;
24804
324086c6f757 patch 8.2.2940: MS-Windows: cannot see the size when resizing
Bram Moolenaar <Bram@vim.org>
parents: 24768
diff changeset
4384 int cols, rows;
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
4385
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
4386 w = lprc->right - lprc->left;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
4387 h = lprc->bottom - lprc->top;
24804
324086c6f757 patch 8.2.2940: MS-Windows: cannot see the size when resizing
Bram Moolenaar <Bram@vim.org>
parents: 24768
diff changeset
4388 gui_mswin_get_valid_dimensions(w, h, &valid_w, &valid_h, &cols, &rows);
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
4389 w_offset = w - valid_w;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
4390 h_offset = h - valid_h;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
4391
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
4392 if (fwSide == WMSZ_LEFT || fwSide == WMSZ_TOPLEFT
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
4393 || fwSide == WMSZ_BOTTOMLEFT)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
4394 lprc->left += w_offset;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
4395 else if (fwSide == WMSZ_RIGHT || fwSide == WMSZ_TOPRIGHT
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
4396 || fwSide == WMSZ_BOTTOMRIGHT)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
4397 lprc->right -= w_offset;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
4398
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
4399 if (fwSide == WMSZ_TOP || fwSide == WMSZ_TOPLEFT
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
4400 || fwSide == WMSZ_TOPRIGHT)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
4401 lprc->top += h_offset;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
4402 else if (fwSide == WMSZ_BOTTOM || fwSide == WMSZ_BOTTOMLEFT
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
4403 || fwSide == WMSZ_BOTTOMRIGHT)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
4404 lprc->bottom -= h_offset;
24804
324086c6f757 patch 8.2.2940: MS-Windows: cannot see the size when resizing
Bram Moolenaar <Bram@vim.org>
parents: 24768
diff changeset
4405
324086c6f757 patch 8.2.2940: MS-Windows: cannot see the size when resizing
Bram Moolenaar <Bram@vim.org>
parents: 24768
diff changeset
4406 show_sizing_tip(cols, rows);
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
4407 return TRUE;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
4408 }
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
4409
27261
a63505f33894 patch 8.2.4159: MS-Windows: _WndProc() is very long
Bram Moolenaar <Bram@vim.org>
parents: 27259
diff changeset
4410 #ifdef FEAT_GUI_TABLINE
a63505f33894 patch 8.2.4159: MS-Windows: _WndProc() is very long
Bram Moolenaar <Bram@vim.org>
parents: 27259
diff changeset
4411 static void
a63505f33894 patch 8.2.4159: MS-Windows: _WndProc() is very long
Bram Moolenaar <Bram@vim.org>
parents: 27259
diff changeset
4412 _OnRButtonUp(HWND hwnd, int x, int y, UINT keyFlags)
a63505f33894 patch 8.2.4159: MS-Windows: _WndProc() is very long
Bram Moolenaar <Bram@vim.org>
parents: 27259
diff changeset
4413 {
a63505f33894 patch 8.2.4159: MS-Windows: _WndProc() is very long
Bram Moolenaar <Bram@vim.org>
parents: 27259
diff changeset
4414 if (gui_mch_showing_tabline())
a63505f33894 patch 8.2.4159: MS-Windows: _WndProc() is very long
Bram Moolenaar <Bram@vim.org>
parents: 27259
diff changeset
4415 {
a63505f33894 patch 8.2.4159: MS-Windows: _WndProc() is very long
Bram Moolenaar <Bram@vim.org>
parents: 27259
diff changeset
4416 POINT pt;
a63505f33894 patch 8.2.4159: MS-Windows: _WndProc() is very long
Bram Moolenaar <Bram@vim.org>
parents: 27259
diff changeset
4417 RECT rect;
a63505f33894 patch 8.2.4159: MS-Windows: _WndProc() is very long
Bram Moolenaar <Bram@vim.org>
parents: 27259
diff changeset
4418
a63505f33894 patch 8.2.4159: MS-Windows: _WndProc() is very long
Bram Moolenaar <Bram@vim.org>
parents: 27259
diff changeset
4419 /*
a63505f33894 patch 8.2.4159: MS-Windows: _WndProc() is very long
Bram Moolenaar <Bram@vim.org>
parents: 27259
diff changeset
4420 * If the cursor is on the tabline, display the tab menu
a63505f33894 patch 8.2.4159: MS-Windows: _WndProc() is very long
Bram Moolenaar <Bram@vim.org>
parents: 27259
diff changeset
4421 */
a63505f33894 patch 8.2.4159: MS-Windows: _WndProc() is very long
Bram Moolenaar <Bram@vim.org>
parents: 27259
diff changeset
4422 GetCursorPos(&pt);
a63505f33894 patch 8.2.4159: MS-Windows: _WndProc() is very long
Bram Moolenaar <Bram@vim.org>
parents: 27259
diff changeset
4423 GetWindowRect(s_textArea, &rect);
a63505f33894 patch 8.2.4159: MS-Windows: _WndProc() is very long
Bram Moolenaar <Bram@vim.org>
parents: 27259
diff changeset
4424 if (pt.y < rect.top)
a63505f33894 patch 8.2.4159: MS-Windows: _WndProc() is very long
Bram Moolenaar <Bram@vim.org>
parents: 27259
diff changeset
4425 {
a63505f33894 patch 8.2.4159: MS-Windows: _WndProc() is very long
Bram Moolenaar <Bram@vim.org>
parents: 27259
diff changeset
4426 show_tabline_popup_menu();
a63505f33894 patch 8.2.4159: MS-Windows: _WndProc() is very long
Bram Moolenaar <Bram@vim.org>
parents: 27259
diff changeset
4427 return;
a63505f33894 patch 8.2.4159: MS-Windows: _WndProc() is very long
Bram Moolenaar <Bram@vim.org>
parents: 27259
diff changeset
4428 }
a63505f33894 patch 8.2.4159: MS-Windows: _WndProc() is very long
Bram Moolenaar <Bram@vim.org>
parents: 27259
diff changeset
4429 }
a63505f33894 patch 8.2.4159: MS-Windows: _WndProc() is very long
Bram Moolenaar <Bram@vim.org>
parents: 27259
diff changeset
4430 FORWARD_WM_RBUTTONUP(hwnd, x, y, keyFlags, DefWindowProcW);
a63505f33894 patch 8.2.4159: MS-Windows: _WndProc() is very long
Bram Moolenaar <Bram@vim.org>
parents: 27259
diff changeset
4431 }
a63505f33894 patch 8.2.4159: MS-Windows: _WndProc() is very long
Bram Moolenaar <Bram@vim.org>
parents: 27259
diff changeset
4432
a63505f33894 patch 8.2.4159: MS-Windows: _WndProc() is very long
Bram Moolenaar <Bram@vim.org>
parents: 27259
diff changeset
4433 static void
a63505f33894 patch 8.2.4159: MS-Windows: _WndProc() is very long
Bram Moolenaar <Bram@vim.org>
parents: 27259
diff changeset
4434 _OnLButtonDown(HWND hwnd, BOOL fDoubleClick, int x, int y, UINT keyFlags)
a63505f33894 patch 8.2.4159: MS-Windows: _WndProc() is very long
Bram Moolenaar <Bram@vim.org>
parents: 27259
diff changeset
4435 {
a63505f33894 patch 8.2.4159: MS-Windows: _WndProc() is very long
Bram Moolenaar <Bram@vim.org>
parents: 27259
diff changeset
4436 /*
a63505f33894 patch 8.2.4159: MS-Windows: _WndProc() is very long
Bram Moolenaar <Bram@vim.org>
parents: 27259
diff changeset
4437 * If the user double clicked the tabline, create a new tab
a63505f33894 patch 8.2.4159: MS-Windows: _WndProc() is very long
Bram Moolenaar <Bram@vim.org>
parents: 27259
diff changeset
4438 */
a63505f33894 patch 8.2.4159: MS-Windows: _WndProc() is very long
Bram Moolenaar <Bram@vim.org>
parents: 27259
diff changeset
4439 if (gui_mch_showing_tabline())
a63505f33894 patch 8.2.4159: MS-Windows: _WndProc() is very long
Bram Moolenaar <Bram@vim.org>
parents: 27259
diff changeset
4440 {
a63505f33894 patch 8.2.4159: MS-Windows: _WndProc() is very long
Bram Moolenaar <Bram@vim.org>
parents: 27259
diff changeset
4441 POINT pt;
a63505f33894 patch 8.2.4159: MS-Windows: _WndProc() is very long
Bram Moolenaar <Bram@vim.org>
parents: 27259
diff changeset
4442 RECT rect;
a63505f33894 patch 8.2.4159: MS-Windows: _WndProc() is very long
Bram Moolenaar <Bram@vim.org>
parents: 27259
diff changeset
4443
a63505f33894 patch 8.2.4159: MS-Windows: _WndProc() is very long
Bram Moolenaar <Bram@vim.org>
parents: 27259
diff changeset
4444 GetCursorPos(&pt);
a63505f33894 patch 8.2.4159: MS-Windows: _WndProc() is very long
Bram Moolenaar <Bram@vim.org>
parents: 27259
diff changeset
4445 GetWindowRect(s_textArea, &rect);
a63505f33894 patch 8.2.4159: MS-Windows: _WndProc() is very long
Bram Moolenaar <Bram@vim.org>
parents: 27259
diff changeset
4446 if (pt.y < rect.top)
a63505f33894 patch 8.2.4159: MS-Windows: _WndProc() is very long
Bram Moolenaar <Bram@vim.org>
parents: 27259
diff changeset
4447 send_tabline_menu_event(0, TABLINE_MENU_NEW);
a63505f33894 patch 8.2.4159: MS-Windows: _WndProc() is very long
Bram Moolenaar <Bram@vim.org>
parents: 27259
diff changeset
4448 }
a63505f33894 patch 8.2.4159: MS-Windows: _WndProc() is very long
Bram Moolenaar <Bram@vim.org>
parents: 27259
diff changeset
4449 FORWARD_WM_LBUTTONDOWN(hwnd, fDoubleClick, x, y, keyFlags, DefWindowProcW);
a63505f33894 patch 8.2.4159: MS-Windows: _WndProc() is very long
Bram Moolenaar <Bram@vim.org>
parents: 27259
diff changeset
4450 }
a63505f33894 patch 8.2.4159: MS-Windows: _WndProc() is very long
Bram Moolenaar <Bram@vim.org>
parents: 27259
diff changeset
4451 #endif
a63505f33894 patch 8.2.4159: MS-Windows: _WndProc() is very long
Bram Moolenaar <Bram@vim.org>
parents: 27259
diff changeset
4452
a63505f33894 patch 8.2.4159: MS-Windows: _WndProc() is very long
Bram Moolenaar <Bram@vim.org>
parents: 27259
diff changeset
4453 static UINT
a63505f33894 patch 8.2.4159: MS-Windows: _WndProc() is very long
Bram Moolenaar <Bram@vim.org>
parents: 27259
diff changeset
4454 _OnNCHitTest(HWND hwnd, int xPos, int yPos)
a63505f33894 patch 8.2.4159: MS-Windows: _WndProc() is very long
Bram Moolenaar <Bram@vim.org>
parents: 27259
diff changeset
4455 {
a63505f33894 patch 8.2.4159: MS-Windows: _WndProc() is very long
Bram Moolenaar <Bram@vim.org>
parents: 27259
diff changeset
4456 UINT result;
a63505f33894 patch 8.2.4159: MS-Windows: _WndProc() is very long
Bram Moolenaar <Bram@vim.org>
parents: 27259
diff changeset
4457 int x, y;
a63505f33894 patch 8.2.4159: MS-Windows: _WndProc() is very long
Bram Moolenaar <Bram@vim.org>
parents: 27259
diff changeset
4458
a63505f33894 patch 8.2.4159: MS-Windows: _WndProc() is very long
Bram Moolenaar <Bram@vim.org>
parents: 27259
diff changeset
4459 result = FORWARD_WM_NCHITTEST(hwnd, xPos, yPos, DefWindowProcW);
a63505f33894 patch 8.2.4159: MS-Windows: _WndProc() is very long
Bram Moolenaar <Bram@vim.org>
parents: 27259
diff changeset
4460 if (result != HTCLIENT)
a63505f33894 patch 8.2.4159: MS-Windows: _WndProc() is very long
Bram Moolenaar <Bram@vim.org>
parents: 27259
diff changeset
4461 return result;
a63505f33894 patch 8.2.4159: MS-Windows: _WndProc() is very long
Bram Moolenaar <Bram@vim.org>
parents: 27259
diff changeset
4462
a63505f33894 patch 8.2.4159: MS-Windows: _WndProc() is very long
Bram Moolenaar <Bram@vim.org>
parents: 27259
diff changeset
4463 #ifdef FEAT_GUI_TABLINE
a63505f33894 patch 8.2.4159: MS-Windows: _WndProc() is very long
Bram Moolenaar <Bram@vim.org>
parents: 27259
diff changeset
4464 if (gui_mch_showing_tabline())
a63505f33894 patch 8.2.4159: MS-Windows: _WndProc() is very long
Bram Moolenaar <Bram@vim.org>
parents: 27259
diff changeset
4465 {
a63505f33894 patch 8.2.4159: MS-Windows: _WndProc() is very long
Bram Moolenaar <Bram@vim.org>
parents: 27259
diff changeset
4466 RECT rct;
a63505f33894 patch 8.2.4159: MS-Windows: _WndProc() is very long
Bram Moolenaar <Bram@vim.org>
parents: 27259
diff changeset
4467
a63505f33894 patch 8.2.4159: MS-Windows: _WndProc() is very long
Bram Moolenaar <Bram@vim.org>
parents: 27259
diff changeset
4468 // If the cursor is on the GUI tabline, don't process this event
a63505f33894 patch 8.2.4159: MS-Windows: _WndProc() is very long
Bram Moolenaar <Bram@vim.org>
parents: 27259
diff changeset
4469 GetWindowRect(s_textArea, &rct);
a63505f33894 patch 8.2.4159: MS-Windows: _WndProc() is very long
Bram Moolenaar <Bram@vim.org>
parents: 27259
diff changeset
4470 if (yPos < rct.top)
a63505f33894 patch 8.2.4159: MS-Windows: _WndProc() is very long
Bram Moolenaar <Bram@vim.org>
parents: 27259
diff changeset
4471 return result;
a63505f33894 patch 8.2.4159: MS-Windows: _WndProc() is very long
Bram Moolenaar <Bram@vim.org>
parents: 27259
diff changeset
4472 }
a63505f33894 patch 8.2.4159: MS-Windows: _WndProc() is very long
Bram Moolenaar <Bram@vim.org>
parents: 27259
diff changeset
4473 #endif
a63505f33894 patch 8.2.4159: MS-Windows: _WndProc() is very long
Bram Moolenaar <Bram@vim.org>
parents: 27259
diff changeset
4474 (void)gui_mch_get_winpos(&x, &y);
a63505f33894 patch 8.2.4159: MS-Windows: _WndProc() is very long
Bram Moolenaar <Bram@vim.org>
parents: 27259
diff changeset
4475 xPos -= x;
a63505f33894 patch 8.2.4159: MS-Windows: _WndProc() is very long
Bram Moolenaar <Bram@vim.org>
parents: 27259
diff changeset
4476
a63505f33894 patch 8.2.4159: MS-Windows: _WndProc() is very long
Bram Moolenaar <Bram@vim.org>
parents: 27259
diff changeset
4477 if (xPos < 48) // <VN> TODO should use system metric?
a63505f33894 patch 8.2.4159: MS-Windows: _WndProc() is very long
Bram Moolenaar <Bram@vim.org>
parents: 27259
diff changeset
4478 return HTBOTTOMLEFT;
a63505f33894 patch 8.2.4159: MS-Windows: _WndProc() is very long
Bram Moolenaar <Bram@vim.org>
parents: 27259
diff changeset
4479 else
a63505f33894 patch 8.2.4159: MS-Windows: _WndProc() is very long
Bram Moolenaar <Bram@vim.org>
parents: 27259
diff changeset
4480 return HTBOTTOMRIGHT;
a63505f33894 patch 8.2.4159: MS-Windows: _WndProc() is very long
Bram Moolenaar <Bram@vim.org>
parents: 27259
diff changeset
4481 }
a63505f33894 patch 8.2.4159: MS-Windows: _WndProc() is very long
Bram Moolenaar <Bram@vim.org>
parents: 27259
diff changeset
4482
a63505f33894 patch 8.2.4159: MS-Windows: _WndProc() is very long
Bram Moolenaar <Bram@vim.org>
parents: 27259
diff changeset
4483 #if defined(FEAT_TOOLBAR) || defined(FEAT_GUI_TABLINE)
a63505f33894 patch 8.2.4159: MS-Windows: _WndProc() is very long
Bram Moolenaar <Bram@vim.org>
parents: 27259
diff changeset
4484 static LRESULT
a63505f33894 patch 8.2.4159: MS-Windows: _WndProc() is very long
Bram Moolenaar <Bram@vim.org>
parents: 27259
diff changeset
4485 _OnNotify(HWND hwnd, UINT id, NMHDR *hdr)
a63505f33894 patch 8.2.4159: MS-Windows: _WndProc() is very long
Bram Moolenaar <Bram@vim.org>
parents: 27259
diff changeset
4486 {
a63505f33894 patch 8.2.4159: MS-Windows: _WndProc() is very long
Bram Moolenaar <Bram@vim.org>
parents: 27259
diff changeset
4487 switch (hdr->code)
a63505f33894 patch 8.2.4159: MS-Windows: _WndProc() is very long
Bram Moolenaar <Bram@vim.org>
parents: 27259
diff changeset
4488 {
a63505f33894 patch 8.2.4159: MS-Windows: _WndProc() is very long
Bram Moolenaar <Bram@vim.org>
parents: 27259
diff changeset
4489 case TTN_GETDISPINFOW:
a63505f33894 patch 8.2.4159: MS-Windows: _WndProc() is very long
Bram Moolenaar <Bram@vim.org>
parents: 27259
diff changeset
4490 case TTN_GETDISPINFO:
a63505f33894 patch 8.2.4159: MS-Windows: _WndProc() is very long
Bram Moolenaar <Bram@vim.org>
parents: 27259
diff changeset
4491 {
a63505f33894 patch 8.2.4159: MS-Windows: _WndProc() is very long
Bram Moolenaar <Bram@vim.org>
parents: 27259
diff changeset
4492 char_u *str = NULL;
a63505f33894 patch 8.2.4159: MS-Windows: _WndProc() is very long
Bram Moolenaar <Bram@vim.org>
parents: 27259
diff changeset
4493 static void *tt_text = NULL;
a63505f33894 patch 8.2.4159: MS-Windows: _WndProc() is very long
Bram Moolenaar <Bram@vim.org>
parents: 27259
diff changeset
4494
a63505f33894 patch 8.2.4159: MS-Windows: _WndProc() is very long
Bram Moolenaar <Bram@vim.org>
parents: 27259
diff changeset
4495 VIM_CLEAR(tt_text);
a63505f33894 patch 8.2.4159: MS-Windows: _WndProc() is very long
Bram Moolenaar <Bram@vim.org>
parents: 27259
diff changeset
4496
a63505f33894 patch 8.2.4159: MS-Windows: _WndProc() is very long
Bram Moolenaar <Bram@vim.org>
parents: 27259
diff changeset
4497 # ifdef FEAT_GUI_TABLINE
a63505f33894 patch 8.2.4159: MS-Windows: _WndProc() is very long
Bram Moolenaar <Bram@vim.org>
parents: 27259
diff changeset
4498 if (gui_mch_showing_tabline()
a63505f33894 patch 8.2.4159: MS-Windows: _WndProc() is very long
Bram Moolenaar <Bram@vim.org>
parents: 27259
diff changeset
4499 && hdr->hwndFrom == TabCtrl_GetToolTips(s_tabhwnd))
a63505f33894 patch 8.2.4159: MS-Windows: _WndProc() is very long
Bram Moolenaar <Bram@vim.org>
parents: 27259
diff changeset
4500 {
a63505f33894 patch 8.2.4159: MS-Windows: _WndProc() is very long
Bram Moolenaar <Bram@vim.org>
parents: 27259
diff changeset
4501 POINT pt;
a63505f33894 patch 8.2.4159: MS-Windows: _WndProc() is very long
Bram Moolenaar <Bram@vim.org>
parents: 27259
diff changeset
4502 /*
a63505f33894 patch 8.2.4159: MS-Windows: _WndProc() is very long
Bram Moolenaar <Bram@vim.org>
parents: 27259
diff changeset
4503 * Mouse is over the GUI tabline. Display the
a63505f33894 patch 8.2.4159: MS-Windows: _WndProc() is very long
Bram Moolenaar <Bram@vim.org>
parents: 27259
diff changeset
4504 * tooltip for the tab under the cursor
a63505f33894 patch 8.2.4159: MS-Windows: _WndProc() is very long
Bram Moolenaar <Bram@vim.org>
parents: 27259
diff changeset
4505 *
a63505f33894 patch 8.2.4159: MS-Windows: _WndProc() is very long
Bram Moolenaar <Bram@vim.org>
parents: 27259
diff changeset
4506 * Get the cursor position within the tab control
a63505f33894 patch 8.2.4159: MS-Windows: _WndProc() is very long
Bram Moolenaar <Bram@vim.org>
parents: 27259
diff changeset
4507 */
a63505f33894 patch 8.2.4159: MS-Windows: _WndProc() is very long
Bram Moolenaar <Bram@vim.org>
parents: 27259
diff changeset
4508 GetCursorPos(&pt);
a63505f33894 patch 8.2.4159: MS-Windows: _WndProc() is very long
Bram Moolenaar <Bram@vim.org>
parents: 27259
diff changeset
4509 if (ScreenToClient(s_tabhwnd, &pt) != 0)
a63505f33894 patch 8.2.4159: MS-Windows: _WndProc() is very long
Bram Moolenaar <Bram@vim.org>
parents: 27259
diff changeset
4510 {
a63505f33894 patch 8.2.4159: MS-Windows: _WndProc() is very long
Bram Moolenaar <Bram@vim.org>
parents: 27259
diff changeset
4511 TCHITTESTINFO htinfo;
a63505f33894 patch 8.2.4159: MS-Windows: _WndProc() is very long
Bram Moolenaar <Bram@vim.org>
parents: 27259
diff changeset
4512 int idx;
a63505f33894 patch 8.2.4159: MS-Windows: _WndProc() is very long
Bram Moolenaar <Bram@vim.org>
parents: 27259
diff changeset
4513
a63505f33894 patch 8.2.4159: MS-Windows: _WndProc() is very long
Bram Moolenaar <Bram@vim.org>
parents: 27259
diff changeset
4514 /*
a63505f33894 patch 8.2.4159: MS-Windows: _WndProc() is very long
Bram Moolenaar <Bram@vim.org>
parents: 27259
diff changeset
4515 * Get the tab under the cursor
a63505f33894 patch 8.2.4159: MS-Windows: _WndProc() is very long
Bram Moolenaar <Bram@vim.org>
parents: 27259
diff changeset
4516 */
a63505f33894 patch 8.2.4159: MS-Windows: _WndProc() is very long
Bram Moolenaar <Bram@vim.org>
parents: 27259
diff changeset
4517 htinfo.pt.x = pt.x;
a63505f33894 patch 8.2.4159: MS-Windows: _WndProc() is very long
Bram Moolenaar <Bram@vim.org>
parents: 27259
diff changeset
4518 htinfo.pt.y = pt.y;
a63505f33894 patch 8.2.4159: MS-Windows: _WndProc() is very long
Bram Moolenaar <Bram@vim.org>
parents: 27259
diff changeset
4519 idx = TabCtrl_HitTest(s_tabhwnd, &htinfo);
a63505f33894 patch 8.2.4159: MS-Windows: _WndProc() is very long
Bram Moolenaar <Bram@vim.org>
parents: 27259
diff changeset
4520 if (idx != -1)
a63505f33894 patch 8.2.4159: MS-Windows: _WndProc() is very long
Bram Moolenaar <Bram@vim.org>
parents: 27259
diff changeset
4521 {
a63505f33894 patch 8.2.4159: MS-Windows: _WndProc() is very long
Bram Moolenaar <Bram@vim.org>
parents: 27259
diff changeset
4522 tabpage_T *tp;
a63505f33894 patch 8.2.4159: MS-Windows: _WndProc() is very long
Bram Moolenaar <Bram@vim.org>
parents: 27259
diff changeset
4523
a63505f33894 patch 8.2.4159: MS-Windows: _WndProc() is very long
Bram Moolenaar <Bram@vim.org>
parents: 27259
diff changeset
4524 tp = find_tabpage(idx + 1);
a63505f33894 patch 8.2.4159: MS-Windows: _WndProc() is very long
Bram Moolenaar <Bram@vim.org>
parents: 27259
diff changeset
4525 if (tp != NULL)
a63505f33894 patch 8.2.4159: MS-Windows: _WndProc() is very long
Bram Moolenaar <Bram@vim.org>
parents: 27259
diff changeset
4526 {
a63505f33894 patch 8.2.4159: MS-Windows: _WndProc() is very long
Bram Moolenaar <Bram@vim.org>
parents: 27259
diff changeset
4527 get_tabline_label(tp, TRUE);
a63505f33894 patch 8.2.4159: MS-Windows: _WndProc() is very long
Bram Moolenaar <Bram@vim.org>
parents: 27259
diff changeset
4528 str = NameBuff;
a63505f33894 patch 8.2.4159: MS-Windows: _WndProc() is very long
Bram Moolenaar <Bram@vim.org>
parents: 27259
diff changeset
4529 }
a63505f33894 patch 8.2.4159: MS-Windows: _WndProc() is very long
Bram Moolenaar <Bram@vim.org>
parents: 27259
diff changeset
4530 }
a63505f33894 patch 8.2.4159: MS-Windows: _WndProc() is very long
Bram Moolenaar <Bram@vim.org>
parents: 27259
diff changeset
4531 }
a63505f33894 patch 8.2.4159: MS-Windows: _WndProc() is very long
Bram Moolenaar <Bram@vim.org>
parents: 27259
diff changeset
4532 }
a63505f33894 patch 8.2.4159: MS-Windows: _WndProc() is very long
Bram Moolenaar <Bram@vim.org>
parents: 27259
diff changeset
4533 # endif
a63505f33894 patch 8.2.4159: MS-Windows: _WndProc() is very long
Bram Moolenaar <Bram@vim.org>
parents: 27259
diff changeset
4534 # ifdef FEAT_TOOLBAR
a63505f33894 patch 8.2.4159: MS-Windows: _WndProc() is very long
Bram Moolenaar <Bram@vim.org>
parents: 27259
diff changeset
4535 # ifdef FEAT_GUI_TABLINE
a63505f33894 patch 8.2.4159: MS-Windows: _WndProc() is very long
Bram Moolenaar <Bram@vim.org>
parents: 27259
diff changeset
4536 else
a63505f33894 patch 8.2.4159: MS-Windows: _WndProc() is very long
Bram Moolenaar <Bram@vim.org>
parents: 27259
diff changeset
4537 # endif
a63505f33894 patch 8.2.4159: MS-Windows: _WndProc() is very long
Bram Moolenaar <Bram@vim.org>
parents: 27259
diff changeset
4538 {
a63505f33894 patch 8.2.4159: MS-Windows: _WndProc() is very long
Bram Moolenaar <Bram@vim.org>
parents: 27259
diff changeset
4539 UINT idButton;
a63505f33894 patch 8.2.4159: MS-Windows: _WndProc() is very long
Bram Moolenaar <Bram@vim.org>
parents: 27259
diff changeset
4540 vimmenu_T *pMenu;
a63505f33894 patch 8.2.4159: MS-Windows: _WndProc() is very long
Bram Moolenaar <Bram@vim.org>
parents: 27259
diff changeset
4541
a63505f33894 patch 8.2.4159: MS-Windows: _WndProc() is very long
Bram Moolenaar <Bram@vim.org>
parents: 27259
diff changeset
4542 idButton = (UINT) hdr->idFrom;
a63505f33894 patch 8.2.4159: MS-Windows: _WndProc() is very long
Bram Moolenaar <Bram@vim.org>
parents: 27259
diff changeset
4543 pMenu = gui_mswin_find_menu(root_menu, idButton);
a63505f33894 patch 8.2.4159: MS-Windows: _WndProc() is very long
Bram Moolenaar <Bram@vim.org>
parents: 27259
diff changeset
4544 if (pMenu)
a63505f33894 patch 8.2.4159: MS-Windows: _WndProc() is very long
Bram Moolenaar <Bram@vim.org>
parents: 27259
diff changeset
4545 str = pMenu->strings[MENU_INDEX_TIP];
a63505f33894 patch 8.2.4159: MS-Windows: _WndProc() is very long
Bram Moolenaar <Bram@vim.org>
parents: 27259
diff changeset
4546 }
a63505f33894 patch 8.2.4159: MS-Windows: _WndProc() is very long
Bram Moolenaar <Bram@vim.org>
parents: 27259
diff changeset
4547 # endif
a63505f33894 patch 8.2.4159: MS-Windows: _WndProc() is very long
Bram Moolenaar <Bram@vim.org>
parents: 27259
diff changeset
4548 if (str == NULL)
a63505f33894 patch 8.2.4159: MS-Windows: _WndProc() is very long
Bram Moolenaar <Bram@vim.org>
parents: 27259
diff changeset
4549 break;
a63505f33894 patch 8.2.4159: MS-Windows: _WndProc() is very long
Bram Moolenaar <Bram@vim.org>
parents: 27259
diff changeset
4550
a63505f33894 patch 8.2.4159: MS-Windows: _WndProc() is very long
Bram Moolenaar <Bram@vim.org>
parents: 27259
diff changeset
4551 // Set the maximum width, this also enables using \n for
a63505f33894 patch 8.2.4159: MS-Windows: _WndProc() is very long
Bram Moolenaar <Bram@vim.org>
parents: 27259
diff changeset
4552 // line break.
a63505f33894 patch 8.2.4159: MS-Windows: _WndProc() is very long
Bram Moolenaar <Bram@vim.org>
parents: 27259
diff changeset
4553 SendMessage(hdr->hwndFrom, TTM_SETMAXTIPWIDTH, 0, 500);
a63505f33894 patch 8.2.4159: MS-Windows: _WndProc() is very long
Bram Moolenaar <Bram@vim.org>
parents: 27259
diff changeset
4554
a63505f33894 patch 8.2.4159: MS-Windows: _WndProc() is very long
Bram Moolenaar <Bram@vim.org>
parents: 27259
diff changeset
4555 if (hdr->code == TTN_GETDISPINFOW)
a63505f33894 patch 8.2.4159: MS-Windows: _WndProc() is very long
Bram Moolenaar <Bram@vim.org>
parents: 27259
diff changeset
4556 {
a63505f33894 patch 8.2.4159: MS-Windows: _WndProc() is very long
Bram Moolenaar <Bram@vim.org>
parents: 27259
diff changeset
4557 LPNMTTDISPINFOW lpdi = (LPNMTTDISPINFOW)hdr;
a63505f33894 patch 8.2.4159: MS-Windows: _WndProc() is very long
Bram Moolenaar <Bram@vim.org>
parents: 27259
diff changeset
4558
a63505f33894 patch 8.2.4159: MS-Windows: _WndProc() is very long
Bram Moolenaar <Bram@vim.org>
parents: 27259
diff changeset
4559 tt_text = enc_to_utf16(str, NULL);
a63505f33894 patch 8.2.4159: MS-Windows: _WndProc() is very long
Bram Moolenaar <Bram@vim.org>
parents: 27259
diff changeset
4560 lpdi->lpszText = tt_text;
a63505f33894 patch 8.2.4159: MS-Windows: _WndProc() is very long
Bram Moolenaar <Bram@vim.org>
parents: 27259
diff changeset
4561 // can't show tooltip if failed
a63505f33894 patch 8.2.4159: MS-Windows: _WndProc() is very long
Bram Moolenaar <Bram@vim.org>
parents: 27259
diff changeset
4562 }
a63505f33894 patch 8.2.4159: MS-Windows: _WndProc() is very long
Bram Moolenaar <Bram@vim.org>
parents: 27259
diff changeset
4563 else
a63505f33894 patch 8.2.4159: MS-Windows: _WndProc() is very long
Bram Moolenaar <Bram@vim.org>
parents: 27259
diff changeset
4564 {
a63505f33894 patch 8.2.4159: MS-Windows: _WndProc() is very long
Bram Moolenaar <Bram@vim.org>
parents: 27259
diff changeset
4565 LPNMTTDISPINFO lpdi = (LPNMTTDISPINFO)hdr;
a63505f33894 patch 8.2.4159: MS-Windows: _WndProc() is very long
Bram Moolenaar <Bram@vim.org>
parents: 27259
diff changeset
4566
a63505f33894 patch 8.2.4159: MS-Windows: _WndProc() is very long
Bram Moolenaar <Bram@vim.org>
parents: 27259
diff changeset
4567 if (STRLEN(str) < sizeof(lpdi->szText)
a63505f33894 patch 8.2.4159: MS-Windows: _WndProc() is very long
Bram Moolenaar <Bram@vim.org>
parents: 27259
diff changeset
4568 || ((tt_text = vim_strsave(str)) == NULL))
a63505f33894 patch 8.2.4159: MS-Windows: _WndProc() is very long
Bram Moolenaar <Bram@vim.org>
parents: 27259
diff changeset
4569 vim_strncpy((char_u *)lpdi->szText, str,
a63505f33894 patch 8.2.4159: MS-Windows: _WndProc() is very long
Bram Moolenaar <Bram@vim.org>
parents: 27259
diff changeset
4570 sizeof(lpdi->szText) - 1);
a63505f33894 patch 8.2.4159: MS-Windows: _WndProc() is very long
Bram Moolenaar <Bram@vim.org>
parents: 27259
diff changeset
4571 else
a63505f33894 patch 8.2.4159: MS-Windows: _WndProc() is very long
Bram Moolenaar <Bram@vim.org>
parents: 27259
diff changeset
4572 lpdi->lpszText = tt_text;
a63505f33894 patch 8.2.4159: MS-Windows: _WndProc() is very long
Bram Moolenaar <Bram@vim.org>
parents: 27259
diff changeset
4573 }
a63505f33894 patch 8.2.4159: MS-Windows: _WndProc() is very long
Bram Moolenaar <Bram@vim.org>
parents: 27259
diff changeset
4574 }
a63505f33894 patch 8.2.4159: MS-Windows: _WndProc() is very long
Bram Moolenaar <Bram@vim.org>
parents: 27259
diff changeset
4575 break;
a63505f33894 patch 8.2.4159: MS-Windows: _WndProc() is very long
Bram Moolenaar <Bram@vim.org>
parents: 27259
diff changeset
4576
a63505f33894 patch 8.2.4159: MS-Windows: _WndProc() is very long
Bram Moolenaar <Bram@vim.org>
parents: 27259
diff changeset
4577 # ifdef FEAT_GUI_TABLINE
a63505f33894 patch 8.2.4159: MS-Windows: _WndProc() is very long
Bram Moolenaar <Bram@vim.org>
parents: 27259
diff changeset
4578 case TCN_SELCHANGE:
a63505f33894 patch 8.2.4159: MS-Windows: _WndProc() is very long
Bram Moolenaar <Bram@vim.org>
parents: 27259
diff changeset
4579 if (gui_mch_showing_tabline() && (hdr->hwndFrom == s_tabhwnd))
a63505f33894 patch 8.2.4159: MS-Windows: _WndProc() is very long
Bram Moolenaar <Bram@vim.org>
parents: 27259
diff changeset
4580 {
a63505f33894 patch 8.2.4159: MS-Windows: _WndProc() is very long
Bram Moolenaar <Bram@vim.org>
parents: 27259
diff changeset
4581 send_tabline_event(TabCtrl_GetCurSel(s_tabhwnd) + 1);
a63505f33894 patch 8.2.4159: MS-Windows: _WndProc() is very long
Bram Moolenaar <Bram@vim.org>
parents: 27259
diff changeset
4582 return 0L;
a63505f33894 patch 8.2.4159: MS-Windows: _WndProc() is very long
Bram Moolenaar <Bram@vim.org>
parents: 27259
diff changeset
4583 }
a63505f33894 patch 8.2.4159: MS-Windows: _WndProc() is very long
Bram Moolenaar <Bram@vim.org>
parents: 27259
diff changeset
4584 break;
a63505f33894 patch 8.2.4159: MS-Windows: _WndProc() is very long
Bram Moolenaar <Bram@vim.org>
parents: 27259
diff changeset
4585
a63505f33894 patch 8.2.4159: MS-Windows: _WndProc() is very long
Bram Moolenaar <Bram@vim.org>
parents: 27259
diff changeset
4586 case NM_RCLICK:
a63505f33894 patch 8.2.4159: MS-Windows: _WndProc() is very long
Bram Moolenaar <Bram@vim.org>
parents: 27259
diff changeset
4587 if (gui_mch_showing_tabline() && (hdr->hwndFrom == s_tabhwnd))
a63505f33894 patch 8.2.4159: MS-Windows: _WndProc() is very long
Bram Moolenaar <Bram@vim.org>
parents: 27259
diff changeset
4588 {
a63505f33894 patch 8.2.4159: MS-Windows: _WndProc() is very long
Bram Moolenaar <Bram@vim.org>
parents: 27259
diff changeset
4589 show_tabline_popup_menu();
a63505f33894 patch 8.2.4159: MS-Windows: _WndProc() is very long
Bram Moolenaar <Bram@vim.org>
parents: 27259
diff changeset
4590 return 0L;
a63505f33894 patch 8.2.4159: MS-Windows: _WndProc() is very long
Bram Moolenaar <Bram@vim.org>
parents: 27259
diff changeset
4591 }
a63505f33894 patch 8.2.4159: MS-Windows: _WndProc() is very long
Bram Moolenaar <Bram@vim.org>
parents: 27259
diff changeset
4592 break;
a63505f33894 patch 8.2.4159: MS-Windows: _WndProc() is very long
Bram Moolenaar <Bram@vim.org>
parents: 27259
diff changeset
4593 # endif
a63505f33894 patch 8.2.4159: MS-Windows: _WndProc() is very long
Bram Moolenaar <Bram@vim.org>
parents: 27259
diff changeset
4594
a63505f33894 patch 8.2.4159: MS-Windows: _WndProc() is very long
Bram Moolenaar <Bram@vim.org>
parents: 27259
diff changeset
4595 default:
a63505f33894 patch 8.2.4159: MS-Windows: _WndProc() is very long
Bram Moolenaar <Bram@vim.org>
parents: 27259
diff changeset
4596 break;
a63505f33894 patch 8.2.4159: MS-Windows: _WndProc() is very long
Bram Moolenaar <Bram@vim.org>
parents: 27259
diff changeset
4597 }
a63505f33894 patch 8.2.4159: MS-Windows: _WndProc() is very long
Bram Moolenaar <Bram@vim.org>
parents: 27259
diff changeset
4598 return DefWindowProcW(hwnd, WM_NOTIFY, (WPARAM)id, (LPARAM)hdr);
a63505f33894 patch 8.2.4159: MS-Windows: _WndProc() is very long
Bram Moolenaar <Bram@vim.org>
parents: 27259
diff changeset
4599 }
a63505f33894 patch 8.2.4159: MS-Windows: _WndProc() is very long
Bram Moolenaar <Bram@vim.org>
parents: 27259
diff changeset
4600 #endif
a63505f33894 patch 8.2.4159: MS-Windows: _WndProc() is very long
Bram Moolenaar <Bram@vim.org>
parents: 27259
diff changeset
4601
a63505f33894 patch 8.2.4159: MS-Windows: _WndProc() is very long
Bram Moolenaar <Bram@vim.org>
parents: 27259
diff changeset
4602 #if defined(MENUHINTS) && defined(FEAT_MENU)
a63505f33894 patch 8.2.4159: MS-Windows: _WndProc() is very long
Bram Moolenaar <Bram@vim.org>
parents: 27259
diff changeset
4603 static LRESULT
a63505f33894 patch 8.2.4159: MS-Windows: _WndProc() is very long
Bram Moolenaar <Bram@vim.org>
parents: 27259
diff changeset
4604 _OnMenuSelect(HWND hwnd, WPARAM wParam, LPARAM lParam)
a63505f33894 patch 8.2.4159: MS-Windows: _WndProc() is very long
Bram Moolenaar <Bram@vim.org>
parents: 27259
diff changeset
4605 {
a63505f33894 patch 8.2.4159: MS-Windows: _WndProc() is very long
Bram Moolenaar <Bram@vim.org>
parents: 27259
diff changeset
4606 if (((UINT) HIWORD(wParam)
a63505f33894 patch 8.2.4159: MS-Windows: _WndProc() is very long
Bram Moolenaar <Bram@vim.org>
parents: 27259
diff changeset
4607 & (0xffff ^ (MF_MOUSESELECT + MF_BITMAP + MF_POPUP)))
a63505f33894 patch 8.2.4159: MS-Windows: _WndProc() is very long
Bram Moolenaar <Bram@vim.org>
parents: 27259
diff changeset
4608 == MF_HILITE
28773
d770568e6c98 patch 8.2.4911: the mode #defines are not clearly named
Bram Moolenaar <Bram@vim.org>
parents: 28755
diff changeset
4609 && (State & MODE_CMDLINE) == 0)
27261
a63505f33894 patch 8.2.4159: MS-Windows: _WndProc() is very long
Bram Moolenaar <Bram@vim.org>
parents: 27259
diff changeset
4610 {
a63505f33894 patch 8.2.4159: MS-Windows: _WndProc() is very long
Bram Moolenaar <Bram@vim.org>
parents: 27259
diff changeset
4611 UINT idButton;
a63505f33894 patch 8.2.4159: MS-Windows: _WndProc() is very long
Bram Moolenaar <Bram@vim.org>
parents: 27259
diff changeset
4612 vimmenu_T *pMenu;
a63505f33894 patch 8.2.4159: MS-Windows: _WndProc() is very long
Bram Moolenaar <Bram@vim.org>
parents: 27259
diff changeset
4613 static int did_menu_tip = FALSE;
a63505f33894 patch 8.2.4159: MS-Windows: _WndProc() is very long
Bram Moolenaar <Bram@vim.org>
parents: 27259
diff changeset
4614
a63505f33894 patch 8.2.4159: MS-Windows: _WndProc() is very long
Bram Moolenaar <Bram@vim.org>
parents: 27259
diff changeset
4615 if (did_menu_tip)
a63505f33894 patch 8.2.4159: MS-Windows: _WndProc() is very long
Bram Moolenaar <Bram@vim.org>
parents: 27259
diff changeset
4616 {
a63505f33894 patch 8.2.4159: MS-Windows: _WndProc() is very long
Bram Moolenaar <Bram@vim.org>
parents: 27259
diff changeset
4617 msg_clr_cmdline();
a63505f33894 patch 8.2.4159: MS-Windows: _WndProc() is very long
Bram Moolenaar <Bram@vim.org>
parents: 27259
diff changeset
4618 setcursor();
a63505f33894 patch 8.2.4159: MS-Windows: _WndProc() is very long
Bram Moolenaar <Bram@vim.org>
parents: 27259
diff changeset
4619 out_flush();
a63505f33894 patch 8.2.4159: MS-Windows: _WndProc() is very long
Bram Moolenaar <Bram@vim.org>
parents: 27259
diff changeset
4620 did_menu_tip = FALSE;
a63505f33894 patch 8.2.4159: MS-Windows: _WndProc() is very long
Bram Moolenaar <Bram@vim.org>
parents: 27259
diff changeset
4621 }
a63505f33894 patch 8.2.4159: MS-Windows: _WndProc() is very long
Bram Moolenaar <Bram@vim.org>
parents: 27259
diff changeset
4622
a63505f33894 patch 8.2.4159: MS-Windows: _WndProc() is very long
Bram Moolenaar <Bram@vim.org>
parents: 27259
diff changeset
4623 idButton = (UINT)LOWORD(wParam);
a63505f33894 patch 8.2.4159: MS-Windows: _WndProc() is very long
Bram Moolenaar <Bram@vim.org>
parents: 27259
diff changeset
4624 pMenu = gui_mswin_find_menu(root_menu, idButton);
a63505f33894 patch 8.2.4159: MS-Windows: _WndProc() is very long
Bram Moolenaar <Bram@vim.org>
parents: 27259
diff changeset
4625 if (pMenu != NULL && pMenu->strings[MENU_INDEX_TIP] != 0
a63505f33894 patch 8.2.4159: MS-Windows: _WndProc() is very long
Bram Moolenaar <Bram@vim.org>
parents: 27259
diff changeset
4626 && GetMenuState(s_menuBar, pMenu->id, MF_BYCOMMAND) != -1)
a63505f33894 patch 8.2.4159: MS-Windows: _WndProc() is very long
Bram Moolenaar <Bram@vim.org>
parents: 27259
diff changeset
4627 {
a63505f33894 patch 8.2.4159: MS-Windows: _WndProc() is very long
Bram Moolenaar <Bram@vim.org>
parents: 27259
diff changeset
4628 ++msg_hist_off;
a63505f33894 patch 8.2.4159: MS-Windows: _WndProc() is very long
Bram Moolenaar <Bram@vim.org>
parents: 27259
diff changeset
4629 msg((char *)pMenu->strings[MENU_INDEX_TIP]);
a63505f33894 patch 8.2.4159: MS-Windows: _WndProc() is very long
Bram Moolenaar <Bram@vim.org>
parents: 27259
diff changeset
4630 --msg_hist_off;
a63505f33894 patch 8.2.4159: MS-Windows: _WndProc() is very long
Bram Moolenaar <Bram@vim.org>
parents: 27259
diff changeset
4631 setcursor();
a63505f33894 patch 8.2.4159: MS-Windows: _WndProc() is very long
Bram Moolenaar <Bram@vim.org>
parents: 27259
diff changeset
4632 out_flush();
a63505f33894 patch 8.2.4159: MS-Windows: _WndProc() is very long
Bram Moolenaar <Bram@vim.org>
parents: 27259
diff changeset
4633 did_menu_tip = TRUE;
a63505f33894 patch 8.2.4159: MS-Windows: _WndProc() is very long
Bram Moolenaar <Bram@vim.org>
parents: 27259
diff changeset
4634 }
a63505f33894 patch 8.2.4159: MS-Windows: _WndProc() is very long
Bram Moolenaar <Bram@vim.org>
parents: 27259
diff changeset
4635 return 0L;
a63505f33894 patch 8.2.4159: MS-Windows: _WndProc() is very long
Bram Moolenaar <Bram@vim.org>
parents: 27259
diff changeset
4636 }
a63505f33894 patch 8.2.4159: MS-Windows: _WndProc() is very long
Bram Moolenaar <Bram@vim.org>
parents: 27259
diff changeset
4637 return DefWindowProcW(hwnd, WM_MENUSELECT, wParam, lParam);
a63505f33894 patch 8.2.4159: MS-Windows: _WndProc() is very long
Bram Moolenaar <Bram@vim.org>
parents: 27259
diff changeset
4638 }
a63505f33894 patch 8.2.4159: MS-Windows: _WndProc() is very long
Bram Moolenaar <Bram@vim.org>
parents: 27259
diff changeset
4639 #endif
a63505f33894 patch 8.2.4159: MS-Windows: _WndProc() is very long
Bram Moolenaar <Bram@vim.org>
parents: 27259
diff changeset
4640
27160
4482dd5f8869 patch 8.2.4109: MS-Windows: high dpi support is outdated
Bram Moolenaar <Bram@vim.org>
parents: 26966
diff changeset
4641 static LRESULT
29105
faf7fcd1c8d5 patch 8.2.5073: clang on MS-Windows produces warnings
Bram Moolenaar <Bram@vim.org>
parents: 29096
diff changeset
4642 _OnDpiChanged(HWND hwnd, UINT xdpi UNUSED, UINT ydpi, RECT *rc UNUSED)
27160
4482dd5f8869 patch 8.2.4109: MS-Windows: high dpi support is outdated
Bram Moolenaar <Bram@vim.org>
parents: 26966
diff changeset
4643 {
4482dd5f8869 patch 8.2.4109: MS-Windows: high dpi support is outdated
Bram Moolenaar <Bram@vim.org>
parents: 26966
diff changeset
4644 s_dpi = ydpi;
4482dd5f8869 patch 8.2.4109: MS-Windows: high dpi support is outdated
Bram Moolenaar <Bram@vim.org>
parents: 26966
diff changeset
4645 s_in_dpichanged = TRUE;
4482dd5f8869 patch 8.2.4109: MS-Windows: high dpi support is outdated
Bram Moolenaar <Bram@vim.org>
parents: 26966
diff changeset
4646 //TRACE("DPI: %d", ydpi);
4482dd5f8869 patch 8.2.4109: MS-Windows: high dpi support is outdated
Bram Moolenaar <Bram@vim.org>
parents: 26966
diff changeset
4647
4482dd5f8869 patch 8.2.4109: MS-Windows: high dpi support is outdated
Bram Moolenaar <Bram@vim.org>
parents: 26966
diff changeset
4648 update_scrollbar_size();
4482dd5f8869 patch 8.2.4109: MS-Windows: high dpi support is outdated
Bram Moolenaar <Bram@vim.org>
parents: 26966
diff changeset
4649 update_toolbar_size();
4482dd5f8869 patch 8.2.4109: MS-Windows: high dpi support is outdated
Bram Moolenaar <Bram@vim.org>
parents: 26966
diff changeset
4650 set_tabline_font();
4482dd5f8869 patch 8.2.4109: MS-Windows: high dpi support is outdated
Bram Moolenaar <Bram@vim.org>
parents: 26966
diff changeset
4651
4482dd5f8869 patch 8.2.4109: MS-Windows: high dpi support is outdated
Bram Moolenaar <Bram@vim.org>
parents: 26966
diff changeset
4652 gui_init_font(*p_guifont == NUL ? hl_get_font_name() : p_guifont, FALSE);
4482dd5f8869 patch 8.2.4109: MS-Windows: high dpi support is outdated
Bram Moolenaar <Bram@vim.org>
parents: 26966
diff changeset
4653 gui_get_wide_font();
4482dd5f8869 patch 8.2.4109: MS-Windows: high dpi support is outdated
Bram Moolenaar <Bram@vim.org>
parents: 26966
diff changeset
4654 gui_mswin_get_menu_height(FALSE);
4482dd5f8869 patch 8.2.4109: MS-Windows: high dpi support is outdated
Bram Moolenaar <Bram@vim.org>
parents: 26966
diff changeset
4655 #ifdef FEAT_MBYTE_IME
4482dd5f8869 patch 8.2.4109: MS-Windows: high dpi support is outdated
Bram Moolenaar <Bram@vim.org>
parents: 26966
diff changeset
4656 im_set_position(gui.row, gui.col);
4482dd5f8869 patch 8.2.4109: MS-Windows: high dpi support is outdated
Bram Moolenaar <Bram@vim.org>
parents: 26966
diff changeset
4657 #endif
4482dd5f8869 patch 8.2.4109: MS-Windows: high dpi support is outdated
Bram Moolenaar <Bram@vim.org>
parents: 26966
diff changeset
4658 InvalidateRect(hwnd, NULL, TRUE);
4482dd5f8869 patch 8.2.4109: MS-Windows: high dpi support is outdated
Bram Moolenaar <Bram@vim.org>
parents: 26966
diff changeset
4659
4482dd5f8869 patch 8.2.4109: MS-Windows: high dpi support is outdated
Bram Moolenaar <Bram@vim.org>
parents: 26966
diff changeset
4660 s_in_dpichanged = FALSE;
4482dd5f8869 patch 8.2.4109: MS-Windows: high dpi support is outdated
Bram Moolenaar <Bram@vim.org>
parents: 26966
diff changeset
4661 return 0L;
4482dd5f8869 patch 8.2.4109: MS-Windows: high dpi support is outdated
Bram Moolenaar <Bram@vim.org>
parents: 26966
diff changeset
4662 }
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
4663
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
4664
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
4665 static LRESULT CALLBACK
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
4666 _WndProc(
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
4667 HWND hwnd,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
4668 UINT uMsg,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
4669 WPARAM wParam,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
4670 LPARAM lParam)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
4671 {
28825
4c749f9b97fd patch 8.2.4936: MS-Windows: mouse coordinates for scroll event are wrong
Bram Moolenaar <Bram@vim.org>
parents: 28792
diff changeset
4672 // ch_log(NULL, "WndProc: hwnd = %08x, msg = %x, wParam = %x, lParam = %x",
4c749f9b97fd patch 8.2.4936: MS-Windows: mouse coordinates for scroll event are wrong
Bram Moolenaar <Bram@vim.org>
parents: 28792
diff changeset
4673 // hwnd, uMsg, wParam, lParam);
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
4674
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
4675 HandleMouseHide(uMsg, lParam);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
4676
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
4677 s_uMsg = uMsg;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
4678 s_wParam = wParam;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
4679 s_lParam = lParam;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
4680
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
4681 switch (uMsg)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
4682 {
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
4683 HANDLE_MSG(hwnd, WM_DEADCHAR, _OnDeadChar);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
4684 HANDLE_MSG(hwnd, WM_SYSDEADCHAR, _OnDeadChar);
18788
e1f4e9d78a6a patch 8.1.2383: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents: 18773
diff changeset
4685 // HANDLE_MSG(hwnd, WM_ACTIVATE, _OnActivate);
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
4686 HANDLE_MSG(hwnd, WM_CLOSE, _OnClose);
18788
e1f4e9d78a6a patch 8.1.2383: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents: 18773
diff changeset
4687 // HANDLE_MSG(hwnd, WM_COMMAND, _OnCommand);
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
4688 HANDLE_MSG(hwnd, WM_DESTROY, _OnDestroy);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
4689 HANDLE_MSG(hwnd, WM_DROPFILES, _OnDropFiles);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
4690 HANDLE_MSG(hwnd, WM_HSCROLL, _OnScroll);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
4691 HANDLE_MSG(hwnd, WM_KILLFOCUS, _OnKillFocus);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
4692 #ifdef FEAT_MENU
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
4693 HANDLE_MSG(hwnd, WM_COMMAND, _OnMenu);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
4694 #endif
18788
e1f4e9d78a6a patch 8.1.2383: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents: 18773
diff changeset
4695 // HANDLE_MSG(hwnd, WM_MOVE, _OnMove);
e1f4e9d78a6a patch 8.1.2383: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents: 18773
diff changeset
4696 // HANDLE_MSG(hwnd, WM_NCACTIVATE, _OnNCActivate);
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
4697 HANDLE_MSG(hwnd, WM_SETFOCUS, _OnSetFocus);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
4698 HANDLE_MSG(hwnd, WM_SIZE, _OnSize);
18788
e1f4e9d78a6a patch 8.1.2383: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents: 18773
diff changeset
4699 // HANDLE_MSG(hwnd, WM_SYSCOMMAND, _OnSysCommand);
e1f4e9d78a6a patch 8.1.2383: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents: 18773
diff changeset
4700 // HANDLE_MSG(hwnd, WM_SYSKEYDOWN, _OnAltKey);
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
4701 HANDLE_MSG(hwnd, WM_VSCROLL, _OnScroll);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
4702 // HANDLE_MSG(hwnd, WM_WINDOWPOSCHANGING, _OnWindowPosChanging);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
4703 HANDLE_MSG(hwnd, WM_ACTIVATEAPP, _OnActivateApp);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
4704 #ifdef FEAT_NETBEANS_INTG
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
4705 HANDLE_MSG(hwnd, WM_WINDOWPOSCHANGED, _OnWindowPosChanged);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
4706 #endif
812
68c15f2c7d3f updated for version 7.0c01
vimboss
parents: 810
diff changeset
4707 #ifdef FEAT_GUI_TABLINE
27261
a63505f33894 patch 8.2.4159: MS-Windows: _WndProc() is very long
Bram Moolenaar <Bram@vim.org>
parents: 27259
diff changeset
4708 HANDLE_MSG(hwnd, WM_RBUTTONUP, _OnRButtonUp);
a63505f33894 patch 8.2.4159: MS-Windows: _WndProc() is very long
Bram Moolenaar <Bram@vim.org>
parents: 27259
diff changeset
4709 HANDLE_MSG(hwnd, WM_LBUTTONDBLCLK, _OnLButtonDown);
a63505f33894 patch 8.2.4159: MS-Windows: _WndProc() is very long
Bram Moolenaar <Bram@vim.org>
parents: 27259
diff changeset
4710 #endif
a63505f33894 patch 8.2.4159: MS-Windows: _WndProc() is very long
Bram Moolenaar <Bram@vim.org>
parents: 27259
diff changeset
4711 HANDLE_MSG(hwnd, WM_NCHITTEST, _OnNCHitTest);
812
68c15f2c7d3f updated for version 7.0c01
vimboss
parents: 810
diff changeset
4712
18788
e1f4e9d78a6a patch 8.1.2383: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents: 18773
diff changeset
4713 case WM_QUERYENDSESSION: // System wants to go down.
e1f4e9d78a6a patch 8.1.2383: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents: 18773
diff changeset
4714 gui_shell_closed(); // Will exit when no changed buffers.
e1f4e9d78a6a patch 8.1.2383: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents: 18773
diff changeset
4715 return FALSE; // Do NOT allow system to go down.
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
4716
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
4717 case WM_ENDSESSION:
18788
e1f4e9d78a6a patch 8.1.2383: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents: 18773
diff changeset
4718 if (wParam) // system only really goes down when wParam is TRUE
3225
2260435283f2 updated for version 7.3.382
Bram Moolenaar <bram@vim.org>
parents: 3212
diff changeset
4719 {
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
4720 _OnEndSession();
3225
2260435283f2 updated for version 7.3.382
Bram Moolenaar <bram@vim.org>
parents: 3212
diff changeset
4721 return 0L;
2260435283f2 updated for version 7.3.382
Bram Moolenaar <bram@vim.org>
parents: 3212
diff changeset
4722 }
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
4723 break;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
4724
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
4725 case WM_CHAR:
18788
e1f4e9d78a6a patch 8.1.2383: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents: 18773
diff changeset
4726 // Don't use HANDLE_MSG() for WM_CHAR, it truncates wParam to a single
e1f4e9d78a6a patch 8.1.2383: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents: 18773
diff changeset
4727 // byte while we want the UTF-16 character value.
835
8bebcabccc2c updated for version 7.0e01
vimboss
parents: 824
diff changeset
4728 _OnChar(hwnd, (UINT)wParam, (int)(short)LOWORD(lParam));
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
4729 return 0L;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
4730
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
4731 case WM_SYSCHAR:
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
4732 /*
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
4733 * if 'winaltkeys' is "no", or it's "menu" and it's not a menu
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
4734 * shortcut key, handle like a typed ALT key, otherwise call Windows
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
4735 * ALT key handling.
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
4736 */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
4737 #ifdef FEAT_MENU
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
4738 if ( !gui.menu_is_active
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
4739 || p_wak[0] == 'n'
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
4740 || (p_wak[0] == 'm' && !gui_is_menu_shortcut((int)wParam))
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
4741 )
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
4742 #endif
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
4743 {
835
8bebcabccc2c updated for version 7.0e01
vimboss
parents: 824
diff changeset
4744 _OnSysChar(hwnd, (UINT)wParam, (int)(short)LOWORD(lParam));
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
4745 return 0L;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
4746 }
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
4747 #ifdef FEAT_MENU
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
4748 else
27249
d5570658f18d patch 8.2.4153: MS-Windows: Global IME is no longer supported
Bram Moolenaar <Bram@vim.org>
parents: 27229
diff changeset
4749 return DefWindowProcW(hwnd, uMsg, wParam, lParam);
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
4750 #endif
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
4751
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
4752 case WM_SYSKEYUP:
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
4753 #ifdef FEAT_MENU
18788
e1f4e9d78a6a patch 8.1.2383: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents: 18773
diff changeset
4754 // This used to be done only when menu is active: ALT key is used for
e1f4e9d78a6a patch 8.1.2383: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents: 18773
diff changeset
4755 // that. But that caused problems when menu is disabled and using
e1f4e9d78a6a patch 8.1.2383: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents: 18773
diff changeset
4756 // Alt-Tab-Esc: get into a strange state where no mouse-moved events
e1f4e9d78a6a patch 8.1.2383: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents: 18773
diff changeset
4757 // are received, mouse pointer remains hidden.
27249
d5570658f18d patch 8.2.4153: MS-Windows: Global IME is no longer supported
Bram Moolenaar <Bram@vim.org>
parents: 27229
diff changeset
4758 return DefWindowProcW(hwnd, uMsg, wParam, lParam);
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
4759 #else
3225
2260435283f2 updated for version 7.3.382
Bram Moolenaar <bram@vim.org>
parents: 3212
diff changeset
4760 return 0L;
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
4761 #endif
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
4762
24804
324086c6f757 patch 8.2.2940: MS-Windows: cannot see the size when resizing
Bram Moolenaar <Bram@vim.org>
parents: 24768
diff changeset
4763 case WM_EXITSIZEMOVE:
324086c6f757 patch 8.2.2940: MS-Windows: cannot see the size when resizing
Bram Moolenaar <Bram@vim.org>
parents: 24768
diff changeset
4764 destroy_sizing_tip();
324086c6f757 patch 8.2.2940: MS-Windows: cannot see the size when resizing
Bram Moolenaar <Bram@vim.org>
parents: 24768
diff changeset
4765 break;
324086c6f757 patch 8.2.2940: MS-Windows: cannot see the size when resizing
Bram Moolenaar <Bram@vim.org>
parents: 24768
diff changeset
4766
18788
e1f4e9d78a6a patch 8.1.2383: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents: 18773
diff changeset
4767 case WM_SIZING: // HANDLE_MSG doesn't seem to handle this one
323
03b3684919e3 updated for version 7.0084
vimboss
parents: 293
diff changeset
4768 return _DuringSizing((UINT)wParam, (LPRECT)lParam);
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
4769
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
4770 case WM_MOUSEWHEEL:
28700
7fc67f9d84a7 patch 8.2.4874: Win32 GUI: horizontal scroll wheel not handled properly
Bram Moolenaar <Bram@vim.org>
parents: 28639
diff changeset
4771 case WM_MOUSEHWHEEL:
28825
4c749f9b97fd patch 8.2.4936: MS-Windows: mouse coordinates for scroll event are wrong
Bram Moolenaar <Bram@vim.org>
parents: 28792
diff changeset
4772 _OnMouseWheel(hwnd, wParam, lParam, uMsg == WM_MOUSEHWHEEL);
3225
2260435283f2 updated for version 7.3.382
Bram Moolenaar <bram@vim.org>
parents: 3212
diff changeset
4773 return 0L;
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
4774
18788
e1f4e9d78a6a patch 8.1.2383: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents: 18773
diff changeset
4775 // Notification for change in SystemParametersInfo()
333
18f024844150 updated for version 7.0086
vimboss
parents: 323
diff changeset
4776 case WM_SETTINGCHANGE:
18f024844150 updated for version 7.0086
vimboss
parents: 323
diff changeset
4777 return _OnSettingChange((UINT)wParam);
18f024844150 updated for version 7.0086
vimboss
parents: 323
diff changeset
4778
810
9f345c48220b updated for version 7.0c
vimboss
parents: 786
diff changeset
4779 #if defined(FEAT_TOOLBAR) || defined(FEAT_GUI_TABLINE)
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
4780 case WM_NOTIFY:
27261
a63505f33894 patch 8.2.4159: MS-Windows: _WndProc() is very long
Bram Moolenaar <Bram@vim.org>
parents: 27259
diff changeset
4781 return _OnNotify(hwnd, (UINT)wParam, (NMHDR*)lParam);
a63505f33894 patch 8.2.4159: MS-Windows: _WndProc() is very long
Bram Moolenaar <Bram@vim.org>
parents: 27259
diff changeset
4782 #endif
a63505f33894 patch 8.2.4159: MS-Windows: _WndProc() is very long
Bram Moolenaar <Bram@vim.org>
parents: 27259
diff changeset
4783
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
4784 #if defined(MENUHINTS) && defined(FEAT_MENU)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
4785 case WM_MENUSELECT:
27261
a63505f33894 patch 8.2.4159: MS-Windows: _WndProc() is very long
Bram Moolenaar <Bram@vim.org>
parents: 27259
diff changeset
4786 return _OnMenuSelect(hwnd, wParam, lParam);
a63505f33894 patch 8.2.4159: MS-Windows: _WndProc() is very long
Bram Moolenaar <Bram@vim.org>
parents: 27259
diff changeset
4787 #endif
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
4788
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
4789 #ifdef FEAT_MBYTE_IME
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
4790 case WM_IME_NOTIFY:
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
4791 if (!_OnImeNotify(hwnd, (DWORD)wParam, (DWORD)lParam))
27249
d5570658f18d patch 8.2.4153: MS-Windows: Global IME is no longer supported
Bram Moolenaar <Bram@vim.org>
parents: 27229
diff changeset
4792 return DefWindowProcW(hwnd, uMsg, wParam, lParam);
3225
2260435283f2 updated for version 7.3.382
Bram Moolenaar <bram@vim.org>
parents: 3212
diff changeset
4793 return 1L;
2260435283f2 updated for version 7.3.382
Bram Moolenaar <bram@vim.org>
parents: 3212
diff changeset
4794
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
4795 case WM_IME_COMPOSITION:
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
4796 if (!_OnImeComposition(hwnd, wParam, lParam))
27249
d5570658f18d patch 8.2.4153: MS-Windows: Global IME is no longer supported
Bram Moolenaar <Bram@vim.org>
parents: 27229
diff changeset
4797 return DefWindowProcW(hwnd, uMsg, wParam, lParam);
3225
2260435283f2 updated for version 7.3.382
Bram Moolenaar <bram@vim.org>
parents: 3212
diff changeset
4798 return 1L;
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
4799 #endif
27160
4482dd5f8869 patch 8.2.4109: MS-Windows: high dpi support is outdated
Bram Moolenaar <Bram@vim.org>
parents: 26966
diff changeset
4800 case WM_DPICHANGED:
4482dd5f8869 patch 8.2.4109: MS-Windows: high dpi support is outdated
Bram Moolenaar <Bram@vim.org>
parents: 26966
diff changeset
4801 return _OnDpiChanged(hwnd, (UINT)LOWORD(wParam), (UINT)HIWORD(wParam),
4482dd5f8869 patch 8.2.4109: MS-Windows: high dpi support is outdated
Bram Moolenaar <Bram@vim.org>
parents: 26966
diff changeset
4802 (RECT*)lParam);
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
4803
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
4804 default:
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
4805 #ifdef MSWIN_FIND_REPLACE
10264
c036c0f636d5 commit https://github.com/vim/vim/commit/cea912af725c54f4727a0565e31661f6b29c6bb1
Christian Brabandt <cb@256bit.org>
parents: 10042
diff changeset
4806 if (uMsg == s_findrep_msg && s_findrep_msg != 0)
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
4807 _OnFindRepl();
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
4808 #endif
27261
a63505f33894 patch 8.2.4159: MS-Windows: _WndProc() is very long
Bram Moolenaar <Bram@vim.org>
parents: 27259
diff changeset
4809 break;
27249
d5570658f18d patch 8.2.4153: MS-Windows: Global IME is no longer supported
Bram Moolenaar <Bram@vim.org>
parents: 27229
diff changeset
4810 }
d5570658f18d patch 8.2.4153: MS-Windows: Global IME is no longer supported
Bram Moolenaar <Bram@vim.org>
parents: 27229
diff changeset
4811
d5570658f18d patch 8.2.4153: MS-Windows: Global IME is no longer supported
Bram Moolenaar <Bram@vim.org>
parents: 27229
diff changeset
4812 return DefWindowProcW(hwnd, uMsg, wParam, lParam);
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
4813 }
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
4814
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
4815 /*
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
4816 * End of call-back routines
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
4817 */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
4818
18788
e1f4e9d78a6a patch 8.1.2383: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents: 18773
diff changeset
4819 // parent window, if specified with -P
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
4820 HWND vim_parent_hwnd = NULL;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
4821
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
4822 static BOOL CALLBACK
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
4823 FindWindowTitle(HWND hwnd, LPARAM lParam)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
4824 {
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
4825 char buf[2048];
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
4826 char *title = (char *)lParam;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
4827
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
4828 if (GetWindowText(hwnd, buf, sizeof(buf)))
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
4829 {
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
4830 if (strstr(buf, title) != NULL)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
4831 {
18788
e1f4e9d78a6a patch 8.1.2383: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents: 18773
diff changeset
4832 // Found it. Store the window ref. and quit searching if MDI
e1f4e9d78a6a patch 8.1.2383: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents: 18773
diff changeset
4833 // works.
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
4834 vim_parent_hwnd = FindWindowEx(hwnd, NULL, "MDIClient", NULL);
9
4102fb4ea781 updated for version 7.0002
vimboss
parents: 7
diff changeset
4835 if (vim_parent_hwnd != NULL)
4102fb4ea781 updated for version 7.0002
vimboss
parents: 7
diff changeset
4836 return FALSE;
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
4837 }
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
4838 }
18788
e1f4e9d78a6a patch 8.1.2383: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents: 18773
diff changeset
4839 return TRUE; // continue searching
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
4840 }
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
4841
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
4842 /*
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
4843 * Invoked for '-P "title"' argument: search for parent application to open
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
4844 * our window in.
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
4845 */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
4846 void
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
4847 gui_mch_set_parent(char *title)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
4848 {
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
4849 EnumWindows(FindWindowTitle, (LPARAM)title);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
4850 if (vim_parent_hwnd == NULL)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
4851 {
26952
b34ddbca305c patch 8.2.4005: error messages are spread out
Bram Moolenaar <Bram@vim.org>
parents: 26893
diff changeset
4852 semsg(_(e_cannot_find_window_title_str), title);
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
4853 mch_exit(2);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
4854 }
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
4855 }
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
4856
323
03b3684919e3 updated for version 7.0084
vimboss
parents: 293
diff changeset
4857 #ifndef FEAT_OLE
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
4858 static void
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
4859 ole_error(char *arg)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
4860 {
1116
e76a088056dd updated for version 7.0-242
vimboss
parents: 948
diff changeset
4861 char buf[IOSIZE];
e76a088056dd updated for version 7.0-242
vimboss
parents: 948
diff changeset
4862
16596
2f86ca0c1e6b patch 8.1.1301: when compiled with VIMDLL some messages are not shown
Bram Moolenaar <Bram@vim.org>
parents: 16582
diff changeset
4863 # ifdef VIMDLL
2f86ca0c1e6b patch 8.1.1301: when compiled with VIMDLL some messages are not shown
Bram Moolenaar <Bram@vim.org>
parents: 16582
diff changeset
4864 gui.in_use = mch_is_gui_executable();
2f86ca0c1e6b patch 8.1.1301: when compiled with VIMDLL some messages are not shown
Bram Moolenaar <Bram@vim.org>
parents: 16582
diff changeset
4865 # endif
2f86ca0c1e6b patch 8.1.1301: when compiled with VIMDLL some messages are not shown
Bram Moolenaar <Bram@vim.org>
parents: 16582
diff changeset
4866
18788
e1f4e9d78a6a patch 8.1.2383: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents: 18773
diff changeset
4867 // Can't use emsg() here, we have not finished initialisation yet.
1116
e76a088056dd updated for version 7.0-242
vimboss
parents: 948
diff changeset
4868 vim_snprintf(buf, IOSIZE,
26893
79c76ca2c53c patch 8.2.3975: error messages are spread out
Bram Moolenaar <Bram@vim.org>
parents: 26883
diff changeset
4869 _(e_argument_not_supported_str_use_ole_version), arg);
1116
e76a088056dd updated for version 7.0-242
vimboss
parents: 948
diff changeset
4870 mch_errmsg(buf);
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
4871 }
323
03b3684919e3 updated for version 7.0084
vimboss
parents: 293
diff changeset
4872 #endif
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
4873
16451
7ae2396cef62 patch 8.1.1230: a lot of code is shared between vim.exe and gvim.exe
Bram Moolenaar <Bram@vim.org>
parents: 16439
diff changeset
4874 #if defined(GUI_MAY_SPAWN) || defined(PROTO)
7ae2396cef62 patch 8.1.1230: a lot of code is shared between vim.exe and gvim.exe
Bram Moolenaar <Bram@vim.org>
parents: 16439
diff changeset
4875 static char *
7ae2396cef62 patch 8.1.1230: a lot of code is shared between vim.exe and gvim.exe
Bram Moolenaar <Bram@vim.org>
parents: 16439
diff changeset
4876 gvim_error(void)
7ae2396cef62 patch 8.1.1230: a lot of code is shared between vim.exe and gvim.exe
Bram Moolenaar <Bram@vim.org>
parents: 16439
diff changeset
4877 {
26966
ac75c145f0a9 patch 8.2.4012: error messages are spread out
Bram Moolenaar <Bram@vim.org>
parents: 26952
diff changeset
4878 char *msg = _(e_gui_cannot_be_used_cannot_execute_gvim_exe);
16451
7ae2396cef62 patch 8.1.1230: a lot of code is shared between vim.exe and gvim.exe
Bram Moolenaar <Bram@vim.org>
parents: 16439
diff changeset
4879
7ae2396cef62 patch 8.1.1230: a lot of code is shared between vim.exe and gvim.exe
Bram Moolenaar <Bram@vim.org>
parents: 16439
diff changeset
4880 if (starting)
7ae2396cef62 patch 8.1.1230: a lot of code is shared between vim.exe and gvim.exe
Bram Moolenaar <Bram@vim.org>
parents: 16439
diff changeset
4881 {
7ae2396cef62 patch 8.1.1230: a lot of code is shared between vim.exe and gvim.exe
Bram Moolenaar <Bram@vim.org>
parents: 16439
diff changeset
4882 mch_errmsg(msg);
7ae2396cef62 patch 8.1.1230: a lot of code is shared between vim.exe and gvim.exe
Bram Moolenaar <Bram@vim.org>
parents: 16439
diff changeset
4883 mch_errmsg("\n");
7ae2396cef62 patch 8.1.1230: a lot of code is shared between vim.exe and gvim.exe
Bram Moolenaar <Bram@vim.org>
parents: 16439
diff changeset
4884 mch_exit(2);
7ae2396cef62 patch 8.1.1230: a lot of code is shared between vim.exe and gvim.exe
Bram Moolenaar <Bram@vim.org>
parents: 16439
diff changeset
4885 }
7ae2396cef62 patch 8.1.1230: a lot of code is shared between vim.exe and gvim.exe
Bram Moolenaar <Bram@vim.org>
parents: 16439
diff changeset
4886 return msg;
7ae2396cef62 patch 8.1.1230: a lot of code is shared between vim.exe and gvim.exe
Bram Moolenaar <Bram@vim.org>
parents: 16439
diff changeset
4887 }
7ae2396cef62 patch 8.1.1230: a lot of code is shared between vim.exe and gvim.exe
Bram Moolenaar <Bram@vim.org>
parents: 16439
diff changeset
4888
7ae2396cef62 patch 8.1.1230: a lot of code is shared between vim.exe and gvim.exe
Bram Moolenaar <Bram@vim.org>
parents: 16439
diff changeset
4889 char *
7ae2396cef62 patch 8.1.1230: a lot of code is shared between vim.exe and gvim.exe
Bram Moolenaar <Bram@vim.org>
parents: 16439
diff changeset
4890 gui_mch_do_spawn(char_u *arg)
7ae2396cef62 patch 8.1.1230: a lot of code is shared between vim.exe and gvim.exe
Bram Moolenaar <Bram@vim.org>
parents: 16439
diff changeset
4891 {
7ae2396cef62 patch 8.1.1230: a lot of code is shared between vim.exe and gvim.exe
Bram Moolenaar <Bram@vim.org>
parents: 16439
diff changeset
4892 int len;
7ae2396cef62 patch 8.1.1230: a lot of code is shared between vim.exe and gvim.exe
Bram Moolenaar <Bram@vim.org>
parents: 16439
diff changeset
4893 # if defined(FEAT_SESSION) && defined(EXPERIMENTAL_GUI_CMD)
7ae2396cef62 patch 8.1.1230: a lot of code is shared between vim.exe and gvim.exe
Bram Moolenaar <Bram@vim.org>
parents: 16439
diff changeset
4894 char_u *session = NULL;
7ae2396cef62 patch 8.1.1230: a lot of code is shared between vim.exe and gvim.exe
Bram Moolenaar <Bram@vim.org>
parents: 16439
diff changeset
4895 LPWSTR tofree1 = NULL;
7ae2396cef62 patch 8.1.1230: a lot of code is shared between vim.exe and gvim.exe
Bram Moolenaar <Bram@vim.org>
parents: 16439
diff changeset
4896 # endif
7ae2396cef62 patch 8.1.1230: a lot of code is shared between vim.exe and gvim.exe
Bram Moolenaar <Bram@vim.org>
parents: 16439
diff changeset
4897 WCHAR name[MAX_PATH];
7ae2396cef62 patch 8.1.1230: a lot of code is shared between vim.exe and gvim.exe
Bram Moolenaar <Bram@vim.org>
parents: 16439
diff changeset
4898 LPWSTR cmd, newcmd = NULL, p, warg, tofree2 = NULL;
7ae2396cef62 patch 8.1.1230: a lot of code is shared between vim.exe and gvim.exe
Bram Moolenaar <Bram@vim.org>
parents: 16439
diff changeset
4899 STARTUPINFOW si = {sizeof(si)};
7ae2396cef62 patch 8.1.1230: a lot of code is shared between vim.exe and gvim.exe
Bram Moolenaar <Bram@vim.org>
parents: 16439
diff changeset
4900 PROCESS_INFORMATION pi;
7ae2396cef62 patch 8.1.1230: a lot of code is shared between vim.exe and gvim.exe
Bram Moolenaar <Bram@vim.org>
parents: 16439
diff changeset
4901
7ae2396cef62 patch 8.1.1230: a lot of code is shared between vim.exe and gvim.exe
Bram Moolenaar <Bram@vim.org>
parents: 16439
diff changeset
4902 if (!GetModuleFileNameW(g_hinst, name, MAX_PATH))
7ae2396cef62 patch 8.1.1230: a lot of code is shared between vim.exe and gvim.exe
Bram Moolenaar <Bram@vim.org>
parents: 16439
diff changeset
4903 goto error;
7ae2396cef62 patch 8.1.1230: a lot of code is shared between vim.exe and gvim.exe
Bram Moolenaar <Bram@vim.org>
parents: 16439
diff changeset
4904 p = wcsrchr(name, L'\\');
7ae2396cef62 patch 8.1.1230: a lot of code is shared between vim.exe and gvim.exe
Bram Moolenaar <Bram@vim.org>
parents: 16439
diff changeset
4905 if (p == NULL)
7ae2396cef62 patch 8.1.1230: a lot of code is shared between vim.exe and gvim.exe
Bram Moolenaar <Bram@vim.org>
parents: 16439
diff changeset
4906 goto error;
7ae2396cef62 patch 8.1.1230: a lot of code is shared between vim.exe and gvim.exe
Bram Moolenaar <Bram@vim.org>
parents: 16439
diff changeset
4907 // Replace the executable name from vim(d).exe to gvim(d).exe.
7ae2396cef62 patch 8.1.1230: a lot of code is shared between vim.exe and gvim.exe
Bram Moolenaar <Bram@vim.org>
parents: 16439
diff changeset
4908 # ifdef DEBUG
7ae2396cef62 patch 8.1.1230: a lot of code is shared between vim.exe and gvim.exe
Bram Moolenaar <Bram@vim.org>
parents: 16439
diff changeset
4909 wcscpy(p + 1, L"gvimd.exe");
7ae2396cef62 patch 8.1.1230: a lot of code is shared between vim.exe and gvim.exe
Bram Moolenaar <Bram@vim.org>
parents: 16439
diff changeset
4910 # else
7ae2396cef62 patch 8.1.1230: a lot of code is shared between vim.exe and gvim.exe
Bram Moolenaar <Bram@vim.org>
parents: 16439
diff changeset
4911 wcscpy(p + 1, L"gvim.exe");
7ae2396cef62 patch 8.1.1230: a lot of code is shared between vim.exe and gvim.exe
Bram Moolenaar <Bram@vim.org>
parents: 16439
diff changeset
4912 # endif
7ae2396cef62 patch 8.1.1230: a lot of code is shared between vim.exe and gvim.exe
Bram Moolenaar <Bram@vim.org>
parents: 16439
diff changeset
4913
7ae2396cef62 patch 8.1.1230: a lot of code is shared between vim.exe and gvim.exe
Bram Moolenaar <Bram@vim.org>
parents: 16439
diff changeset
4914 # if defined(FEAT_SESSION) && defined(EXPERIMENTAL_GUI_CMD)
7ae2396cef62 patch 8.1.1230: a lot of code is shared between vim.exe and gvim.exe
Bram Moolenaar <Bram@vim.org>
parents: 16439
diff changeset
4915 if (starting)
7ae2396cef62 patch 8.1.1230: a lot of code is shared between vim.exe and gvim.exe
Bram Moolenaar <Bram@vim.org>
parents: 16439
diff changeset
4916 # endif
7ae2396cef62 patch 8.1.1230: a lot of code is shared between vim.exe and gvim.exe
Bram Moolenaar <Bram@vim.org>
parents: 16439
diff changeset
4917 {
7ae2396cef62 patch 8.1.1230: a lot of code is shared between vim.exe and gvim.exe
Bram Moolenaar <Bram@vim.org>
parents: 16439
diff changeset
4918 // Pass the command line to the new process.
7ae2396cef62 patch 8.1.1230: a lot of code is shared between vim.exe and gvim.exe
Bram Moolenaar <Bram@vim.org>
parents: 16439
diff changeset
4919 p = GetCommandLineW();
7ae2396cef62 patch 8.1.1230: a lot of code is shared between vim.exe and gvim.exe
Bram Moolenaar <Bram@vim.org>
parents: 16439
diff changeset
4920 // Skip 1st argument.
7ae2396cef62 patch 8.1.1230: a lot of code is shared between vim.exe and gvim.exe
Bram Moolenaar <Bram@vim.org>
parents: 16439
diff changeset
4921 while (*p && *p != L' ' && *p != L'\t')
7ae2396cef62 patch 8.1.1230: a lot of code is shared between vim.exe and gvim.exe
Bram Moolenaar <Bram@vim.org>
parents: 16439
diff changeset
4922 {
7ae2396cef62 patch 8.1.1230: a lot of code is shared between vim.exe and gvim.exe
Bram Moolenaar <Bram@vim.org>
parents: 16439
diff changeset
4923 if (*p == L'"')
7ae2396cef62 patch 8.1.1230: a lot of code is shared between vim.exe and gvim.exe
Bram Moolenaar <Bram@vim.org>
parents: 16439
diff changeset
4924 {
7ae2396cef62 patch 8.1.1230: a lot of code is shared between vim.exe and gvim.exe
Bram Moolenaar <Bram@vim.org>
parents: 16439
diff changeset
4925 while (*p && *p != L'"')
7ae2396cef62 patch 8.1.1230: a lot of code is shared between vim.exe and gvim.exe
Bram Moolenaar <Bram@vim.org>
parents: 16439
diff changeset
4926 ++p;
7ae2396cef62 patch 8.1.1230: a lot of code is shared between vim.exe and gvim.exe
Bram Moolenaar <Bram@vim.org>
parents: 16439
diff changeset
4927 if (*p)
7ae2396cef62 patch 8.1.1230: a lot of code is shared between vim.exe and gvim.exe
Bram Moolenaar <Bram@vim.org>
parents: 16439
diff changeset
4928 ++p;
7ae2396cef62 patch 8.1.1230: a lot of code is shared between vim.exe and gvim.exe
Bram Moolenaar <Bram@vim.org>
parents: 16439
diff changeset
4929 }
7ae2396cef62 patch 8.1.1230: a lot of code is shared between vim.exe and gvim.exe
Bram Moolenaar <Bram@vim.org>
parents: 16439
diff changeset
4930 else
7ae2396cef62 patch 8.1.1230: a lot of code is shared between vim.exe and gvim.exe
Bram Moolenaar <Bram@vim.org>
parents: 16439
diff changeset
4931 ++p;
7ae2396cef62 patch 8.1.1230: a lot of code is shared between vim.exe and gvim.exe
Bram Moolenaar <Bram@vim.org>
parents: 16439
diff changeset
4932 }
7ae2396cef62 patch 8.1.1230: a lot of code is shared between vim.exe and gvim.exe
Bram Moolenaar <Bram@vim.org>
parents: 16439
diff changeset
4933 cmd = p;
7ae2396cef62 patch 8.1.1230: a lot of code is shared between vim.exe and gvim.exe
Bram Moolenaar <Bram@vim.org>
parents: 16439
diff changeset
4934 }
7ae2396cef62 patch 8.1.1230: a lot of code is shared between vim.exe and gvim.exe
Bram Moolenaar <Bram@vim.org>
parents: 16439
diff changeset
4935 # if defined(FEAT_SESSION) && defined(EXPERIMENTAL_GUI_CMD)
7ae2396cef62 patch 8.1.1230: a lot of code is shared between vim.exe and gvim.exe
Bram Moolenaar <Bram@vim.org>
parents: 16439
diff changeset
4936 else
7ae2396cef62 patch 8.1.1230: a lot of code is shared between vim.exe and gvim.exe
Bram Moolenaar <Bram@vim.org>
parents: 16439
diff changeset
4937 {
7ae2396cef62 patch 8.1.1230: a lot of code is shared between vim.exe and gvim.exe
Bram Moolenaar <Bram@vim.org>
parents: 16439
diff changeset
4938 // Create a session file and pass it to the new process.
7ae2396cef62 patch 8.1.1230: a lot of code is shared between vim.exe and gvim.exe
Bram Moolenaar <Bram@vim.org>
parents: 16439
diff changeset
4939 LPWSTR wsession;
7ae2396cef62 patch 8.1.1230: a lot of code is shared between vim.exe and gvim.exe
Bram Moolenaar <Bram@vim.org>
parents: 16439
diff changeset
4940 char_u *savebg;
7ae2396cef62 patch 8.1.1230: a lot of code is shared between vim.exe and gvim.exe
Bram Moolenaar <Bram@vim.org>
parents: 16439
diff changeset
4941 int ret;
7ae2396cef62 patch 8.1.1230: a lot of code is shared between vim.exe and gvim.exe
Bram Moolenaar <Bram@vim.org>
parents: 16439
diff changeset
4942
7ae2396cef62 patch 8.1.1230: a lot of code is shared between vim.exe and gvim.exe
Bram Moolenaar <Bram@vim.org>
parents: 16439
diff changeset
4943 session = vim_tempname('s', FALSE);
7ae2396cef62 patch 8.1.1230: a lot of code is shared between vim.exe and gvim.exe
Bram Moolenaar <Bram@vim.org>
parents: 16439
diff changeset
4944 if (session == NULL)
7ae2396cef62 patch 8.1.1230: a lot of code is shared between vim.exe and gvim.exe
Bram Moolenaar <Bram@vim.org>
parents: 16439
diff changeset
4945 goto error;
7ae2396cef62 patch 8.1.1230: a lot of code is shared between vim.exe and gvim.exe
Bram Moolenaar <Bram@vim.org>
parents: 16439
diff changeset
4946 savebg = p_bg;
7ae2396cef62 patch 8.1.1230: a lot of code is shared between vim.exe and gvim.exe
Bram Moolenaar <Bram@vim.org>
parents: 16439
diff changeset
4947 p_bg = vim_strsave((char_u *)"light"); // Set 'bg' to "light".
7ae2396cef62 patch 8.1.1230: a lot of code is shared between vim.exe and gvim.exe
Bram Moolenaar <Bram@vim.org>
parents: 16439
diff changeset
4948 ret = write_session_file(session);
7ae2396cef62 patch 8.1.1230: a lot of code is shared between vim.exe and gvim.exe
Bram Moolenaar <Bram@vim.org>
parents: 16439
diff changeset
4949 vim_free(p_bg);
7ae2396cef62 patch 8.1.1230: a lot of code is shared between vim.exe and gvim.exe
Bram Moolenaar <Bram@vim.org>
parents: 16439
diff changeset
4950 p_bg = savebg;
7ae2396cef62 patch 8.1.1230: a lot of code is shared between vim.exe and gvim.exe
Bram Moolenaar <Bram@vim.org>
parents: 16439
diff changeset
4951 if (!ret)
7ae2396cef62 patch 8.1.1230: a lot of code is shared between vim.exe and gvim.exe
Bram Moolenaar <Bram@vim.org>
parents: 16439
diff changeset
4952 goto error;
7ae2396cef62 patch 8.1.1230: a lot of code is shared between vim.exe and gvim.exe
Bram Moolenaar <Bram@vim.org>
parents: 16439
diff changeset
4953 wsession = enc_to_utf16(session, NULL);
7ae2396cef62 patch 8.1.1230: a lot of code is shared between vim.exe and gvim.exe
Bram Moolenaar <Bram@vim.org>
parents: 16439
diff changeset
4954 if (wsession == NULL)
7ae2396cef62 patch 8.1.1230: a lot of code is shared between vim.exe and gvim.exe
Bram Moolenaar <Bram@vim.org>
parents: 16439
diff changeset
4955 goto error;
7ae2396cef62 patch 8.1.1230: a lot of code is shared between vim.exe and gvim.exe
Bram Moolenaar <Bram@vim.org>
parents: 16439
diff changeset
4956 len = (int)wcslen(wsession) * 2 + 27 + 1;
16825
ce04ebdf26b8 patch 8.1.1414: alloc() returning "char_u *" causes a lot of type casts
Bram Moolenaar <Bram@vim.org>
parents: 16768
diff changeset
4957 cmd = ALLOC_MULT(WCHAR, len);
16451
7ae2396cef62 patch 8.1.1230: a lot of code is shared between vim.exe and gvim.exe
Bram Moolenaar <Bram@vim.org>
parents: 16439
diff changeset
4958 if (cmd == NULL)
7ae2396cef62 patch 8.1.1230: a lot of code is shared between vim.exe and gvim.exe
Bram Moolenaar <Bram@vim.org>
parents: 16439
diff changeset
4959 {
7ae2396cef62 patch 8.1.1230: a lot of code is shared between vim.exe and gvim.exe
Bram Moolenaar <Bram@vim.org>
parents: 16439
diff changeset
4960 vim_free(wsession);
7ae2396cef62 patch 8.1.1230: a lot of code is shared between vim.exe and gvim.exe
Bram Moolenaar <Bram@vim.org>
parents: 16439
diff changeset
4961 goto error;
7ae2396cef62 patch 8.1.1230: a lot of code is shared between vim.exe and gvim.exe
Bram Moolenaar <Bram@vim.org>
parents: 16439
diff changeset
4962 }
7ae2396cef62 patch 8.1.1230: a lot of code is shared between vim.exe and gvim.exe
Bram Moolenaar <Bram@vim.org>
parents: 16439
diff changeset
4963 tofree1 = cmd;
7ae2396cef62 patch 8.1.1230: a lot of code is shared between vim.exe and gvim.exe
Bram Moolenaar <Bram@vim.org>
parents: 16439
diff changeset
4964 _snwprintf(cmd, len, L" -S \"%s\" -c \"call delete('%s')\"",
7ae2396cef62 patch 8.1.1230: a lot of code is shared between vim.exe and gvim.exe
Bram Moolenaar <Bram@vim.org>
parents: 16439
diff changeset
4965 wsession, wsession);
7ae2396cef62 patch 8.1.1230: a lot of code is shared between vim.exe and gvim.exe
Bram Moolenaar <Bram@vim.org>
parents: 16439
diff changeset
4966 vim_free(wsession);
7ae2396cef62 patch 8.1.1230: a lot of code is shared between vim.exe and gvim.exe
Bram Moolenaar <Bram@vim.org>
parents: 16439
diff changeset
4967 }
7ae2396cef62 patch 8.1.1230: a lot of code is shared between vim.exe and gvim.exe
Bram Moolenaar <Bram@vim.org>
parents: 16439
diff changeset
4968 # endif
7ae2396cef62 patch 8.1.1230: a lot of code is shared between vim.exe and gvim.exe
Bram Moolenaar <Bram@vim.org>
parents: 16439
diff changeset
4969
7ae2396cef62 patch 8.1.1230: a lot of code is shared between vim.exe and gvim.exe
Bram Moolenaar <Bram@vim.org>
parents: 16439
diff changeset
4970 // Check additional arguments to the `:gui` command.
7ae2396cef62 patch 8.1.1230: a lot of code is shared between vim.exe and gvim.exe
Bram Moolenaar <Bram@vim.org>
parents: 16439
diff changeset
4971 if (arg != NULL)
7ae2396cef62 patch 8.1.1230: a lot of code is shared between vim.exe and gvim.exe
Bram Moolenaar <Bram@vim.org>
parents: 16439
diff changeset
4972 {
7ae2396cef62 patch 8.1.1230: a lot of code is shared between vim.exe and gvim.exe
Bram Moolenaar <Bram@vim.org>
parents: 16439
diff changeset
4973 warg = enc_to_utf16(arg, NULL);
7ae2396cef62 patch 8.1.1230: a lot of code is shared between vim.exe and gvim.exe
Bram Moolenaar <Bram@vim.org>
parents: 16439
diff changeset
4974 if (warg == NULL)
7ae2396cef62 patch 8.1.1230: a lot of code is shared between vim.exe and gvim.exe
Bram Moolenaar <Bram@vim.org>
parents: 16439
diff changeset
4975 goto error;
7ae2396cef62 patch 8.1.1230: a lot of code is shared between vim.exe and gvim.exe
Bram Moolenaar <Bram@vim.org>
parents: 16439
diff changeset
4976 tofree2 = warg;
7ae2396cef62 patch 8.1.1230: a lot of code is shared between vim.exe and gvim.exe
Bram Moolenaar <Bram@vim.org>
parents: 16439
diff changeset
4977 }
7ae2396cef62 patch 8.1.1230: a lot of code is shared between vim.exe and gvim.exe
Bram Moolenaar <Bram@vim.org>
parents: 16439
diff changeset
4978 else
7ae2396cef62 patch 8.1.1230: a lot of code is shared between vim.exe and gvim.exe
Bram Moolenaar <Bram@vim.org>
parents: 16439
diff changeset
4979 warg = L"";
7ae2396cef62 patch 8.1.1230: a lot of code is shared between vim.exe and gvim.exe
Bram Moolenaar <Bram@vim.org>
parents: 16439
diff changeset
4980
7ae2396cef62 patch 8.1.1230: a lot of code is shared between vim.exe and gvim.exe
Bram Moolenaar <Bram@vim.org>
parents: 16439
diff changeset
4981 // Set up the new command line.
7ae2396cef62 patch 8.1.1230: a lot of code is shared between vim.exe and gvim.exe
Bram Moolenaar <Bram@vim.org>
parents: 16439
diff changeset
4982 len = (int)wcslen(name) + (int)wcslen(cmd) + (int)wcslen(warg) + 4;
16825
ce04ebdf26b8 patch 8.1.1414: alloc() returning "char_u *" causes a lot of type casts
Bram Moolenaar <Bram@vim.org>
parents: 16768
diff changeset
4983 newcmd = ALLOC_MULT(WCHAR, len);
16451
7ae2396cef62 patch 8.1.1230: a lot of code is shared between vim.exe and gvim.exe
Bram Moolenaar <Bram@vim.org>
parents: 16439
diff changeset
4984 if (newcmd == NULL)
7ae2396cef62 patch 8.1.1230: a lot of code is shared between vim.exe and gvim.exe
Bram Moolenaar <Bram@vim.org>
parents: 16439
diff changeset
4985 goto error;
7ae2396cef62 patch 8.1.1230: a lot of code is shared between vim.exe and gvim.exe
Bram Moolenaar <Bram@vim.org>
parents: 16439
diff changeset
4986 _snwprintf(newcmd, len, L"\"%s\"%s %s", name, cmd, warg);
7ae2396cef62 patch 8.1.1230: a lot of code is shared between vim.exe and gvim.exe
Bram Moolenaar <Bram@vim.org>
parents: 16439
diff changeset
4987
7ae2396cef62 patch 8.1.1230: a lot of code is shared between vim.exe and gvim.exe
Bram Moolenaar <Bram@vim.org>
parents: 16439
diff changeset
4988 // Spawn a new GUI process.
7ae2396cef62 patch 8.1.1230: a lot of code is shared between vim.exe and gvim.exe
Bram Moolenaar <Bram@vim.org>
parents: 16439
diff changeset
4989 if (!CreateProcessW(NULL, newcmd, NULL, NULL, TRUE, 0,
7ae2396cef62 patch 8.1.1230: a lot of code is shared between vim.exe and gvim.exe
Bram Moolenaar <Bram@vim.org>
parents: 16439
diff changeset
4990 NULL, NULL, &si, &pi))
7ae2396cef62 patch 8.1.1230: a lot of code is shared between vim.exe and gvim.exe
Bram Moolenaar <Bram@vim.org>
parents: 16439
diff changeset
4991 goto error;
7ae2396cef62 patch 8.1.1230: a lot of code is shared between vim.exe and gvim.exe
Bram Moolenaar <Bram@vim.org>
parents: 16439
diff changeset
4992 CloseHandle(pi.hProcess);
7ae2396cef62 patch 8.1.1230: a lot of code is shared between vim.exe and gvim.exe
Bram Moolenaar <Bram@vim.org>
parents: 16439
diff changeset
4993 CloseHandle(pi.hThread);
7ae2396cef62 patch 8.1.1230: a lot of code is shared between vim.exe and gvim.exe
Bram Moolenaar <Bram@vim.org>
parents: 16439
diff changeset
4994 mch_exit(0);
7ae2396cef62 patch 8.1.1230: a lot of code is shared between vim.exe and gvim.exe
Bram Moolenaar <Bram@vim.org>
parents: 16439
diff changeset
4995
7ae2396cef62 patch 8.1.1230: a lot of code is shared between vim.exe and gvim.exe
Bram Moolenaar <Bram@vim.org>
parents: 16439
diff changeset
4996 error:
7ae2396cef62 patch 8.1.1230: a lot of code is shared between vim.exe and gvim.exe
Bram Moolenaar <Bram@vim.org>
parents: 16439
diff changeset
4997 # if defined(FEAT_SESSION) && defined(EXPERIMENTAL_GUI_CMD)
7ae2396cef62 patch 8.1.1230: a lot of code is shared between vim.exe and gvim.exe
Bram Moolenaar <Bram@vim.org>
parents: 16439
diff changeset
4998 if (session)
7ae2396cef62 patch 8.1.1230: a lot of code is shared between vim.exe and gvim.exe
Bram Moolenaar <Bram@vim.org>
parents: 16439
diff changeset
4999 mch_remove(session);
7ae2396cef62 patch 8.1.1230: a lot of code is shared between vim.exe and gvim.exe
Bram Moolenaar <Bram@vim.org>
parents: 16439
diff changeset
5000 vim_free(session);
7ae2396cef62 patch 8.1.1230: a lot of code is shared between vim.exe and gvim.exe
Bram Moolenaar <Bram@vim.org>
parents: 16439
diff changeset
5001 vim_free(tofree1);
7ae2396cef62 patch 8.1.1230: a lot of code is shared between vim.exe and gvim.exe
Bram Moolenaar <Bram@vim.org>
parents: 16439
diff changeset
5002 # endif
7ae2396cef62 patch 8.1.1230: a lot of code is shared between vim.exe and gvim.exe
Bram Moolenaar <Bram@vim.org>
parents: 16439
diff changeset
5003 vim_free(newcmd);
7ae2396cef62 patch 8.1.1230: a lot of code is shared between vim.exe and gvim.exe
Bram Moolenaar <Bram@vim.org>
parents: 16439
diff changeset
5004 vim_free(tofree2);
7ae2396cef62 patch 8.1.1230: a lot of code is shared between vim.exe and gvim.exe
Bram Moolenaar <Bram@vim.org>
parents: 16439
diff changeset
5005 return gvim_error();
7ae2396cef62 patch 8.1.1230: a lot of code is shared between vim.exe and gvim.exe
Bram Moolenaar <Bram@vim.org>
parents: 16439
diff changeset
5006 }
7ae2396cef62 patch 8.1.1230: a lot of code is shared between vim.exe and gvim.exe
Bram Moolenaar <Bram@vim.org>
parents: 16439
diff changeset
5007 #endif
7ae2396cef62 patch 8.1.1230: a lot of code is shared between vim.exe and gvim.exe
Bram Moolenaar <Bram@vim.org>
parents: 16439
diff changeset
5008
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
5009 /*
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
5010 * Parse the GUI related command-line arguments. Any arguments used are
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
5011 * deleted from argv, and *argc is decremented accordingly. This is called
24768
7334bf933510 patch 8.2.2922: computing array length is done in various ways
Bram Moolenaar <Bram@vim.org>
parents: 22922
diff changeset
5012 * when Vim is started, whether or not the GUI has been started.
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
5013 */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
5014 void
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
5015 gui_mch_prepare(int *argc, char **argv)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
5016 {
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
5017 int silent = FALSE;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
5018 int idx;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
5019
18788
e1f4e9d78a6a patch 8.1.2383: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents: 18773
diff changeset
5020 // Check for special OLE command line parameters
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
5021 if ((*argc == 2 || *argc == 3) && (argv[1][0] == '-' || argv[1][0] == '/'))
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
5022 {
18788
e1f4e9d78a6a patch 8.1.2383: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents: 18773
diff changeset
5023 // Check for a "-silent" argument first.
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
5024 if (*argc == 3 && STRICMP(argv[1] + 1, "silent") == 0
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
5025 && (argv[2][0] == '-' || argv[2][0] == '/'))
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
5026 {
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
5027 silent = TRUE;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
5028 idx = 2;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
5029 }
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
5030 else
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
5031 idx = 1;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
5032
18788
e1f4e9d78a6a patch 8.1.2383: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents: 18773
diff changeset
5033 // Register Vim as an OLE Automation server
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
5034 if (STRICMP(argv[idx] + 1, "register") == 0)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
5035 {
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
5036 #ifdef FEAT_OLE
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
5037 RegisterMe(silent);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
5038 mch_exit(0);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
5039 #else
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
5040 if (!silent)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
5041 ole_error("register");
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
5042 mch_exit(2);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
5043 #endif
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
5044 }
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
5045
18788
e1f4e9d78a6a patch 8.1.2383: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents: 18773
diff changeset
5046 // Unregister Vim as an OLE Automation server
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
5047 if (STRICMP(argv[idx] + 1, "unregister") == 0)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
5048 {
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
5049 #ifdef FEAT_OLE
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
5050 UnregisterMe(!silent);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
5051 mch_exit(0);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
5052 #else
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
5053 if (!silent)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
5054 ole_error("unregister");
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
5055 mch_exit(2);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
5056 #endif
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
5057 }
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
5058
18788
e1f4e9d78a6a patch 8.1.2383: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents: 18773
diff changeset
5059 // Ignore an -embedding argument. It is only relevant if the
e1f4e9d78a6a patch 8.1.2383: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents: 18773
diff changeset
5060 // application wants to treat the case when it is started manually
e1f4e9d78a6a patch 8.1.2383: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents: 18773
diff changeset
5061 // differently from the case where it is started via automation (and
e1f4e9d78a6a patch 8.1.2383: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents: 18773
diff changeset
5062 // we don't).
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
5063 if (STRICMP(argv[idx] + 1, "embedding") == 0)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
5064 {
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
5065 #ifdef FEAT_OLE
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
5066 *argc = 1;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
5067 #else
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
5068 ole_error("embedding");
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
5069 mch_exit(2);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
5070 #endif
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
5071 }
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
5072 }
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
5073
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
5074 #ifdef FEAT_OLE
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
5075 {
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
5076 int bDoRestart = FALSE;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
5077
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
5078 InitOLE(&bDoRestart);
18788
e1f4e9d78a6a patch 8.1.2383: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents: 18773
diff changeset
5079 // automatically exit after registering
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
5080 if (bDoRestart)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
5081 mch_exit(0);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
5082 }
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
5083 #endif
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
5084
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
5085 #ifdef FEAT_NETBEANS_INTG
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
5086 {
18788
e1f4e9d78a6a patch 8.1.2383: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents: 18773
diff changeset
5087 // stolen from gui_x11.c
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
5088 int arg;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
5089
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
5090 for (arg = 1; arg < *argc; arg++)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
5091 if (strncmp("-nb", argv[arg], 3) == 0)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
5092 {
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
5093 netbeansArg = argv[arg];
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
5094 mch_memmove(&argv[arg], &argv[arg + 1],
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
5095 (--*argc - arg) * sizeof(char *));
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
5096 argv[*argc] = NULL;
18788
e1f4e9d78a6a patch 8.1.2383: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents: 18773
diff changeset
5097 break; // enough?
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
5098 }
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
5099 }
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
5100 #endif
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
5101 }
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
5102
27160
4482dd5f8869 patch 8.2.4109: MS-Windows: high dpi support is outdated
Bram Moolenaar <Bram@vim.org>
parents: 26966
diff changeset
5103 static void
4482dd5f8869 patch 8.2.4109: MS-Windows: high dpi support is outdated
Bram Moolenaar <Bram@vim.org>
parents: 26966
diff changeset
5104 load_dpi_func(void)
4482dd5f8869 patch 8.2.4109: MS-Windows: high dpi support is outdated
Bram Moolenaar <Bram@vim.org>
parents: 26966
diff changeset
5105 {
4482dd5f8869 patch 8.2.4109: MS-Windows: high dpi support is outdated
Bram Moolenaar <Bram@vim.org>
parents: 26966
diff changeset
5106 HMODULE hUser32;
4482dd5f8869 patch 8.2.4109: MS-Windows: high dpi support is outdated
Bram Moolenaar <Bram@vim.org>
parents: 26966
diff changeset
5107
4482dd5f8869 patch 8.2.4109: MS-Windows: high dpi support is outdated
Bram Moolenaar <Bram@vim.org>
parents: 26966
diff changeset
5108 hUser32 = GetModuleHandle("user32.dll");
4482dd5f8869 patch 8.2.4109: MS-Windows: high dpi support is outdated
Bram Moolenaar <Bram@vim.org>
parents: 26966
diff changeset
5109 if (hUser32 == NULL)
4482dd5f8869 patch 8.2.4109: MS-Windows: high dpi support is outdated
Bram Moolenaar <Bram@vim.org>
parents: 26966
diff changeset
5110 goto fail;
4482dd5f8869 patch 8.2.4109: MS-Windows: high dpi support is outdated
Bram Moolenaar <Bram@vim.org>
parents: 26966
diff changeset
5111
29105
faf7fcd1c8d5 patch 8.2.5073: clang on MS-Windows produces warnings
Bram Moolenaar <Bram@vim.org>
parents: 29096
diff changeset
5112 pGetDpiForSystem = (UINT (WINAPI *)(void))GetProcAddress(hUser32, "GetDpiForSystem");
faf7fcd1c8d5 patch 8.2.5073: clang on MS-Windows produces warnings
Bram Moolenaar <Bram@vim.org>
parents: 29096
diff changeset
5113 pGetDpiForWindow = (UINT (WINAPI *)(HWND))GetProcAddress(hUser32, "GetDpiForWindow");
faf7fcd1c8d5 patch 8.2.5073: clang on MS-Windows produces warnings
Bram Moolenaar <Bram@vim.org>
parents: 29096
diff changeset
5114 pGetSystemMetricsForDpi = (int (WINAPI *)(int, UINT))GetProcAddress(hUser32, "GetSystemMetricsForDpi");
27160
4482dd5f8869 patch 8.2.4109: MS-Windows: high dpi support is outdated
Bram Moolenaar <Bram@vim.org>
parents: 26966
diff changeset
5115 //pGetWindowDpiAwarenessContext = (void*)GetProcAddress(hUser32, "GetWindowDpiAwarenessContext");
29105
faf7fcd1c8d5 patch 8.2.5073: clang on MS-Windows produces warnings
Bram Moolenaar <Bram@vim.org>
parents: 29096
diff changeset
5116 pSetThreadDpiAwarenessContext = (DPI_AWARENESS_CONTEXT (WINAPI *)(DPI_AWARENESS_CONTEXT))GetProcAddress(hUser32, "SetThreadDpiAwarenessContext");
faf7fcd1c8d5 patch 8.2.5073: clang on MS-Windows produces warnings
Bram Moolenaar <Bram@vim.org>
parents: 29096
diff changeset
5117 pGetAwarenessFromDpiAwarenessContext = (DPI_AWARENESS (WINAPI *)(DPI_AWARENESS_CONTEXT))GetProcAddress(hUser32, "GetAwarenessFromDpiAwarenessContext");
27160
4482dd5f8869 patch 8.2.4109: MS-Windows: high dpi support is outdated
Bram Moolenaar <Bram@vim.org>
parents: 26966
diff changeset
5118
4482dd5f8869 patch 8.2.4109: MS-Windows: high dpi support is outdated
Bram Moolenaar <Bram@vim.org>
parents: 26966
diff changeset
5119 if (pSetThreadDpiAwarenessContext != NULL)
4482dd5f8869 patch 8.2.4109: MS-Windows: high dpi support is outdated
Bram Moolenaar <Bram@vim.org>
parents: 26966
diff changeset
5120 {
4482dd5f8869 patch 8.2.4109: MS-Windows: high dpi support is outdated
Bram Moolenaar <Bram@vim.org>
parents: 26966
diff changeset
5121 DPI_AWARENESS_CONTEXT oldctx = pSetThreadDpiAwarenessContext(
4482dd5f8869 patch 8.2.4109: MS-Windows: high dpi support is outdated
Bram Moolenaar <Bram@vim.org>
parents: 26966
diff changeset
5122 DPI_AWARENESS_CONTEXT_PER_MONITOR_AWARE_V2);
4482dd5f8869 patch 8.2.4109: MS-Windows: high dpi support is outdated
Bram Moolenaar <Bram@vim.org>
parents: 26966
diff changeset
5123 if (oldctx != NULL)
4482dd5f8869 patch 8.2.4109: MS-Windows: high dpi support is outdated
Bram Moolenaar <Bram@vim.org>
parents: 26966
diff changeset
5124 {
4482dd5f8869 patch 8.2.4109: MS-Windows: high dpi support is outdated
Bram Moolenaar <Bram@vim.org>
parents: 26966
diff changeset
5125 TRACE("DPI_AWARENESS_CONTEXT_PER_MONITOR_AWARE_V2 enabled");
4482dd5f8869 patch 8.2.4109: MS-Windows: high dpi support is outdated
Bram Moolenaar <Bram@vim.org>
parents: 26966
diff changeset
5126 s_process_dpi_aware = pGetAwarenessFromDpiAwarenessContext(oldctx);
4482dd5f8869 patch 8.2.4109: MS-Windows: high dpi support is outdated
Bram Moolenaar <Bram@vim.org>
parents: 26966
diff changeset
5127 #ifdef DEBUG
4482dd5f8869 patch 8.2.4109: MS-Windows: high dpi support is outdated
Bram Moolenaar <Bram@vim.org>
parents: 26966
diff changeset
5128 if (s_process_dpi_aware == DPI_AWARENESS_UNAWARE)
4482dd5f8869 patch 8.2.4109: MS-Windows: high dpi support is outdated
Bram Moolenaar <Bram@vim.org>
parents: 26966
diff changeset
5129 {
4482dd5f8869 patch 8.2.4109: MS-Windows: high dpi support is outdated
Bram Moolenaar <Bram@vim.org>
parents: 26966
diff changeset
5130 TRACE("WARNING: PerMonitorV2 is not enabled in the process level for some reasons. IME window may not shown correctly.");
4482dd5f8869 patch 8.2.4109: MS-Windows: high dpi support is outdated
Bram Moolenaar <Bram@vim.org>
parents: 26966
diff changeset
5131 }
4482dd5f8869 patch 8.2.4109: MS-Windows: high dpi support is outdated
Bram Moolenaar <Bram@vim.org>
parents: 26966
diff changeset
5132 #endif
4482dd5f8869 patch 8.2.4109: MS-Windows: high dpi support is outdated
Bram Moolenaar <Bram@vim.org>
parents: 26966
diff changeset
5133 return;
4482dd5f8869 patch 8.2.4109: MS-Windows: high dpi support is outdated
Bram Moolenaar <Bram@vim.org>
parents: 26966
diff changeset
5134 }
4482dd5f8869 patch 8.2.4109: MS-Windows: high dpi support is outdated
Bram Moolenaar <Bram@vim.org>
parents: 26966
diff changeset
5135 }
4482dd5f8869 patch 8.2.4109: MS-Windows: high dpi support is outdated
Bram Moolenaar <Bram@vim.org>
parents: 26966
diff changeset
5136
4482dd5f8869 patch 8.2.4109: MS-Windows: high dpi support is outdated
Bram Moolenaar <Bram@vim.org>
parents: 26966
diff changeset
5137 fail:
4482dd5f8869 patch 8.2.4109: MS-Windows: high dpi support is outdated
Bram Moolenaar <Bram@vim.org>
parents: 26966
diff changeset
5138 // Disable PerMonitorV2 APIs.
4482dd5f8869 patch 8.2.4109: MS-Windows: high dpi support is outdated
Bram Moolenaar <Bram@vim.org>
parents: 26966
diff changeset
5139 pGetDpiForSystem = stubGetDpiForSystem;
4482dd5f8869 patch 8.2.4109: MS-Windows: high dpi support is outdated
Bram Moolenaar <Bram@vim.org>
parents: 26966
diff changeset
5140 pGetDpiForWindow = NULL;
4482dd5f8869 patch 8.2.4109: MS-Windows: high dpi support is outdated
Bram Moolenaar <Bram@vim.org>
parents: 26966
diff changeset
5141 pGetSystemMetricsForDpi = stubGetSystemMetricsForDpi;
4482dd5f8869 patch 8.2.4109: MS-Windows: high dpi support is outdated
Bram Moolenaar <Bram@vim.org>
parents: 26966
diff changeset
5142 pSetThreadDpiAwarenessContext = NULL;
4482dd5f8869 patch 8.2.4109: MS-Windows: high dpi support is outdated
Bram Moolenaar <Bram@vim.org>
parents: 26966
diff changeset
5143 pGetAwarenessFromDpiAwarenessContext = NULL;
4482dd5f8869 patch 8.2.4109: MS-Windows: high dpi support is outdated
Bram Moolenaar <Bram@vim.org>
parents: 26966
diff changeset
5144 }
4482dd5f8869 patch 8.2.4109: MS-Windows: high dpi support is outdated
Bram Moolenaar <Bram@vim.org>
parents: 26966
diff changeset
5145
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
5146 /*
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
5147 * Initialise the GUI. Create all the windows, set up all the call-backs
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
5148 * etc.
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
5149 */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
5150 int
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
5151 gui_mch_init(void)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
5152 {
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
5153 const WCHAR szVimWndClassW[] = VIM_CLASSW;
2078
d7ce3adb8dda updated for version 7.2.362
Bram Moolenaar <bram@zimbu.org>
parents: 2026
diff changeset
5154 const WCHAR szTextAreaClassW[] = L"VimTextArea";
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
5155 WNDCLASSW wndclassw;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
5156
18788
e1f4e9d78a6a patch 8.1.2383: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents: 18773
diff changeset
5157 // Return here if the window was already opened (happens when
e1f4e9d78a6a patch 8.1.2383: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents: 18773
diff changeset
5158 // gui_mch_dialog() is called early).
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
5159 if (s_hwnd != NULL)
153
19670b05ee32 updated for version 7.0047
vimboss
parents: 148
diff changeset
5160 goto theend;
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
5161
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
5162 /*
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
5163 * Load the tearoff bitmap
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
5164 */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
5165 #ifdef FEAT_TEAROFF
16451
7ae2396cef62 patch 8.1.1230: a lot of code is shared between vim.exe and gvim.exe
Bram Moolenaar <Bram@vim.org>
parents: 16439
diff changeset
5166 s_htearbitmap = LoadBitmap(g_hinst, "IDB_TEAROFF");
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
5167 #endif
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
5168
27160
4482dd5f8869 patch 8.2.4109: MS-Windows: high dpi support is outdated
Bram Moolenaar <Bram@vim.org>
parents: 26966
diff changeset
5169 load_dpi_func();
4482dd5f8869 patch 8.2.4109: MS-Windows: high dpi support is outdated
Bram Moolenaar <Bram@vim.org>
parents: 26966
diff changeset
5170
4482dd5f8869 patch 8.2.4109: MS-Windows: high dpi support is outdated
Bram Moolenaar <Bram@vim.org>
parents: 26966
diff changeset
5171 s_dpi = pGetDpiForSystem();
4482dd5f8869 patch 8.2.4109: MS-Windows: high dpi support is outdated
Bram Moolenaar <Bram@vim.org>
parents: 26966
diff changeset
5172 update_scrollbar_size();
4482dd5f8869 patch 8.2.4109: MS-Windows: high dpi support is outdated
Bram Moolenaar <Bram@vim.org>
parents: 26966
diff changeset
5173
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
5174 #ifdef FEAT_MENU
18788
e1f4e9d78a6a patch 8.1.2383: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents: 18773
diff changeset
5175 gui.menu_height = 0; // Windows takes care of this
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
5176 #endif
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
5177 gui.border_width = 0;
27160
4482dd5f8869 patch 8.2.4109: MS-Windows: high dpi support is outdated
Bram Moolenaar <Bram@vim.org>
parents: 26966
diff changeset
5178 #ifdef FEAT_TOOLBAR
4482dd5f8869 patch 8.2.4109: MS-Windows: high dpi support is outdated
Bram Moolenaar <Bram@vim.org>
parents: 26966
diff changeset
5179 gui.toolbar_height = TOOLBAR_BUTTON_HEIGHT + TOOLBAR_BORDER_HEIGHT;
4482dd5f8869 patch 8.2.4109: MS-Windows: high dpi support is outdated
Bram Moolenaar <Bram@vim.org>
parents: 26966
diff changeset
5180 #endif
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
5181
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
5182 s_brush = CreateSolidBrush(GetSysColor(COLOR_BTNFACE));
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
5183
18788
e1f4e9d78a6a patch 8.1.2383: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents: 18773
diff changeset
5184 // First try using the wide version, so that we can use any title.
e1f4e9d78a6a patch 8.1.2383: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents: 18773
diff changeset
5185 // Otherwise only characters in the active codepage will work.
16451
7ae2396cef62 patch 8.1.1230: a lot of code is shared between vim.exe and gvim.exe
Bram Moolenaar <Bram@vim.org>
parents: 16439
diff changeset
5186 if (GetClassInfoW(g_hinst, szVimWndClassW, &wndclassw) == 0)
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
5187 {
819
23f82b5d2814 updated for version 7.0c10
vimboss
parents: 812
diff changeset
5188 wndclassw.style = CS_DBLCLKS;
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
5189 wndclassw.lpfnWndProc = _WndProc;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
5190 wndclassw.cbClsExtra = 0;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
5191 wndclassw.cbWndExtra = 0;
16451
7ae2396cef62 patch 8.1.1230: a lot of code is shared between vim.exe and gvim.exe
Bram Moolenaar <Bram@vim.org>
parents: 16439
diff changeset
5192 wndclassw.hInstance = g_hinst;
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
5193 wndclassw.hIcon = LoadIcon(wndclassw.hInstance, "IDR_VIM");
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
5194 wndclassw.hCursor = LoadCursor(NULL, IDC_ARROW);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
5195 wndclassw.hbrBackground = s_brush;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
5196 wndclassw.lpszMenuName = NULL;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
5197 wndclassw.lpszClassName = szVimWndClassW;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
5198
27249
d5570658f18d patch 8.2.4153: MS-Windows: Global IME is no longer supported
Bram Moolenaar <Bram@vim.org>
parents: 27229
diff changeset
5199 if (RegisterClassW(&wndclassw) == 0)
10264
c036c0f636d5 commit https://github.com/vim/vim/commit/cea912af725c54f4727a0565e31661f6b29c6bb1
Christian Brabandt <cb@256bit.org>
parents: 10042
diff changeset
5200 return FAIL;
16196
973070a30381 patch 8.1.1103: MS-Windows: old API calls are no longer needed
Bram Moolenaar <Bram@vim.org>
parents: 16162
diff changeset
5201 }
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
5202
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
5203 if (vim_parent_hwnd != NULL)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
5204 {
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
5205 #ifdef HAVE_TRY_EXCEPT
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
5206 __try
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
5207 {
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
5208 #endif
16196
973070a30381 patch 8.1.1103: MS-Windows: old API calls are no longer needed
Bram Moolenaar <Bram@vim.org>
parents: 16162
diff changeset
5209 // Open inside the specified parent window.
973070a30381 patch 8.1.1103: MS-Windows: old API calls are no longer needed
Bram Moolenaar <Bram@vim.org>
parents: 16162
diff changeset
5210 // TODO: last argument should point to a CLIENTCREATESTRUCT
973070a30381 patch 8.1.1103: MS-Windows: old API calls are no longer needed
Bram Moolenaar <Bram@vim.org>
parents: 16162
diff changeset
5211 // structure.
973070a30381 patch 8.1.1103: MS-Windows: old API calls are no longer needed
Bram Moolenaar <Bram@vim.org>
parents: 16162
diff changeset
5212 s_hwnd = CreateWindowExW(
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
5213 WS_EX_MDICHILD,
16196
973070a30381 patch 8.1.1103: MS-Windows: old API calls are no longer needed
Bram Moolenaar <Bram@vim.org>
parents: 16162
diff changeset
5214 szVimWndClassW, L"Vim MSWindows GUI",
3006
125c7bf52271 updated for version 7.3.275
Bram Moolenaar <bram@vim.org>
parents: 2943
diff changeset
5215 WS_OVERLAPPEDWINDOW | WS_CHILD
125c7bf52271 updated for version 7.3.275
Bram Moolenaar <bram@vim.org>
parents: 2943
diff changeset
5216 | WS_CLIPSIBLINGS | WS_CLIPCHILDREN | 0xC000,
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
5217 gui_win_x == -1 ? CW_USEDEFAULT : gui_win_x,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
5218 gui_win_y == -1 ? CW_USEDEFAULT : gui_win_y,
16196
973070a30381 patch 8.1.1103: MS-Windows: old API calls are no longer needed
Bram Moolenaar <Bram@vim.org>
parents: 16162
diff changeset
5219 100, // Any value will do
973070a30381 patch 8.1.1103: MS-Windows: old API calls are no longer needed
Bram Moolenaar <Bram@vim.org>
parents: 16162
diff changeset
5220 100, // Any value will do
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
5221 vim_parent_hwnd, NULL,
16451
7ae2396cef62 patch 8.1.1230: a lot of code is shared between vim.exe and gvim.exe
Bram Moolenaar <Bram@vim.org>
parents: 16439
diff changeset
5222 g_hinst, NULL);
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
5223 #ifdef HAVE_TRY_EXCEPT
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
5224 }
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
5225 __except(EXCEPTION_EXECUTE_HANDLER)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
5226 {
18788
e1f4e9d78a6a patch 8.1.2383: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents: 18773
diff changeset
5227 // NOP
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
5228 }
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
5229 #endif
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
5230 if (s_hwnd == NULL)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
5231 {
26952
b34ddbca305c patch 8.2.4005: error messages are spread out
Bram Moolenaar <Bram@vim.org>
parents: 26893
diff changeset
5232 emsg(_(e_unable_to_open_window_inside_mdi_application));
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
5233 mch_exit(2);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
5234 }
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
5235 }
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
5236 else
1376
53b2bedccfdf updated for version 7.1-091
vimboss
parents: 1356
diff changeset
5237 {
18788
e1f4e9d78a6a patch 8.1.2383: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents: 18773
diff changeset
5238 // If the provided windowid is not valid reset it to zero, so that it
e1f4e9d78a6a patch 8.1.2383: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents: 18773
diff changeset
5239 // is ignored and we open our own window.
1376
53b2bedccfdf updated for version 7.1-091
vimboss
parents: 1356
diff changeset
5240 if (IsWindow((HWND)win_socket_id) <= 0)
53b2bedccfdf updated for version 7.1-091
vimboss
parents: 1356
diff changeset
5241 win_socket_id = 0;
53b2bedccfdf updated for version 7.1-091
vimboss
parents: 1356
diff changeset
5242
18788
e1f4e9d78a6a patch 8.1.2383: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents: 18773
diff changeset
5243 // Create a window. If win_socket_id is not zero without border and
e1f4e9d78a6a patch 8.1.2383: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents: 18773
diff changeset
5244 // titlebar, it will be reparented below.
16196
973070a30381 patch 8.1.1103: MS-Windows: old API calls are no longer needed
Bram Moolenaar <Bram@vim.org>
parents: 16162
diff changeset
5245 s_hwnd = CreateWindowW(
973070a30381 patch 8.1.1103: MS-Windows: old API calls are no longer needed
Bram Moolenaar <Bram@vim.org>
parents: 16162
diff changeset
5246 szVimWndClassW, L"Vim MSWindows GUI",
3006
125c7bf52271 updated for version 7.3.275
Bram Moolenaar <bram@vim.org>
parents: 2943
diff changeset
5247 (win_socket_id == 0 ? WS_OVERLAPPEDWINDOW : WS_POPUP)
125c7bf52271 updated for version 7.3.275
Bram Moolenaar <bram@vim.org>
parents: 2943
diff changeset
5248 | WS_CLIPSIBLINGS | WS_CLIPCHILDREN,
1376
53b2bedccfdf updated for version 7.1-091
vimboss
parents: 1356
diff changeset
5249 gui_win_x == -1 ? CW_USEDEFAULT : gui_win_x,
53b2bedccfdf updated for version 7.1-091
vimboss
parents: 1356
diff changeset
5250 gui_win_y == -1 ? CW_USEDEFAULT : gui_win_y,
18788
e1f4e9d78a6a patch 8.1.2383: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents: 18773
diff changeset
5251 100, // Any value will do
e1f4e9d78a6a patch 8.1.2383: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents: 18773
diff changeset
5252 100, // Any value will do
1376
53b2bedccfdf updated for version 7.1-091
vimboss
parents: 1356
diff changeset
5253 NULL, NULL,
16451
7ae2396cef62 patch 8.1.1230: a lot of code is shared between vim.exe and gvim.exe
Bram Moolenaar <Bram@vim.org>
parents: 16439
diff changeset
5254 g_hinst, NULL);
1376
53b2bedccfdf updated for version 7.1-091
vimboss
parents: 1356
diff changeset
5255 if (s_hwnd != NULL && win_socket_id != 0)
53b2bedccfdf updated for version 7.1-091
vimboss
parents: 1356
diff changeset
5256 {
53b2bedccfdf updated for version 7.1-091
vimboss
parents: 1356
diff changeset
5257 SetParent(s_hwnd, (HWND)win_socket_id);
53b2bedccfdf updated for version 7.1-091
vimboss
parents: 1356
diff changeset
5258 ShowWindow(s_hwnd, SW_SHOWMAXIMIZED);
53b2bedccfdf updated for version 7.1-091
vimboss
parents: 1356
diff changeset
5259 }
53b2bedccfdf updated for version 7.1-091
vimboss
parents: 1356
diff changeset
5260 }
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
5261
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
5262 if (s_hwnd == NULL)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
5263 return FAIL;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
5264
27160
4482dd5f8869 patch 8.2.4109: MS-Windows: high dpi support is outdated
Bram Moolenaar <Bram@vim.org>
parents: 26966
diff changeset
5265 if (pGetDpiForWindow != NULL)
4482dd5f8869 patch 8.2.4109: MS-Windows: high dpi support is outdated
Bram Moolenaar <Bram@vim.org>
parents: 26966
diff changeset
5266 {
4482dd5f8869 patch 8.2.4109: MS-Windows: high dpi support is outdated
Bram Moolenaar <Bram@vim.org>
parents: 26966
diff changeset
5267 s_dpi = pGetDpiForWindow(s_hwnd);
4482dd5f8869 patch 8.2.4109: MS-Windows: high dpi support is outdated
Bram Moolenaar <Bram@vim.org>
parents: 26966
diff changeset
5268 update_scrollbar_size();
4482dd5f8869 patch 8.2.4109: MS-Windows: high dpi support is outdated
Bram Moolenaar <Bram@vim.org>
parents: 26966
diff changeset
5269 //TRACE("System DPI: %d, DPI: %d", pGetDpiForSystem(), s_dpi);
4482dd5f8869 patch 8.2.4109: MS-Windows: high dpi support is outdated
Bram Moolenaar <Bram@vim.org>
parents: 26966
diff changeset
5270 }
4482dd5f8869 patch 8.2.4109: MS-Windows: high dpi support is outdated
Bram Moolenaar <Bram@vim.org>
parents: 26966
diff changeset
5271
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
5272 #if defined(FEAT_MBYTE_IME) && defined(DYNAMIC_IME)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
5273 dyn_imm_load();
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
5274 #endif
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
5275
18788
e1f4e9d78a6a patch 8.1.2383: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents: 18773
diff changeset
5276 // Create the text area window
16451
7ae2396cef62 patch 8.1.1230: a lot of code is shared between vim.exe and gvim.exe
Bram Moolenaar <Bram@vim.org>
parents: 16439
diff changeset
5277 if (GetClassInfoW(g_hinst, szTextAreaClassW, &wndclassw) == 0)
16196
973070a30381 patch 8.1.1103: MS-Windows: old API calls are no longer needed
Bram Moolenaar <Bram@vim.org>
parents: 16162
diff changeset
5278 {
973070a30381 patch 8.1.1103: MS-Windows: old API calls are no longer needed
Bram Moolenaar <Bram@vim.org>
parents: 16162
diff changeset
5279 wndclassw.style = CS_OWNDC;
973070a30381 patch 8.1.1103: MS-Windows: old API calls are no longer needed
Bram Moolenaar <Bram@vim.org>
parents: 16162
diff changeset
5280 wndclassw.lpfnWndProc = _TextAreaWndProc;
973070a30381 patch 8.1.1103: MS-Windows: old API calls are no longer needed
Bram Moolenaar <Bram@vim.org>
parents: 16162
diff changeset
5281 wndclassw.cbClsExtra = 0;
973070a30381 patch 8.1.1103: MS-Windows: old API calls are no longer needed
Bram Moolenaar <Bram@vim.org>
parents: 16162
diff changeset
5282 wndclassw.cbWndExtra = 0;
16451
7ae2396cef62 patch 8.1.1230: a lot of code is shared between vim.exe and gvim.exe
Bram Moolenaar <Bram@vim.org>
parents: 16439
diff changeset
5283 wndclassw.hInstance = g_hinst;
16196
973070a30381 patch 8.1.1103: MS-Windows: old API calls are no longer needed
Bram Moolenaar <Bram@vim.org>
parents: 16162
diff changeset
5284 wndclassw.hIcon = NULL;
973070a30381 patch 8.1.1103: MS-Windows: old API calls are no longer needed
Bram Moolenaar <Bram@vim.org>
parents: 16162
diff changeset
5285 wndclassw.hCursor = LoadCursor(NULL, IDC_ARROW);
973070a30381 patch 8.1.1103: MS-Windows: old API calls are no longer needed
Bram Moolenaar <Bram@vim.org>
parents: 16162
diff changeset
5286 wndclassw.hbrBackground = NULL;
973070a30381 patch 8.1.1103: MS-Windows: old API calls are no longer needed
Bram Moolenaar <Bram@vim.org>
parents: 16162
diff changeset
5287 wndclassw.lpszMenuName = NULL;
973070a30381 patch 8.1.1103: MS-Windows: old API calls are no longer needed
Bram Moolenaar <Bram@vim.org>
parents: 16162
diff changeset
5288 wndclassw.lpszClassName = szTextAreaClassW;
973070a30381 patch 8.1.1103: MS-Windows: old API calls are no longer needed
Bram Moolenaar <Bram@vim.org>
parents: 16162
diff changeset
5289
973070a30381 patch 8.1.1103: MS-Windows: old API calls are no longer needed
Bram Moolenaar <Bram@vim.org>
parents: 16162
diff changeset
5290 if (RegisterClassW(&wndclassw) == 0)
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
5291 return FAIL;
16196
973070a30381 patch 8.1.1103: MS-Windows: old API calls are no longer needed
Bram Moolenaar <Bram@vim.org>
parents: 16162
diff changeset
5292 }
973070a30381 patch 8.1.1103: MS-Windows: old API calls are no longer needed
Bram Moolenaar <Bram@vim.org>
parents: 16162
diff changeset
5293
973070a30381 patch 8.1.1103: MS-Windows: old API calls are no longer needed
Bram Moolenaar <Bram@vim.org>
parents: 16162
diff changeset
5294 s_textArea = CreateWindowExW(
973070a30381 patch 8.1.1103: MS-Windows: old API calls are no longer needed
Bram Moolenaar <Bram@vim.org>
parents: 16162
diff changeset
5295 0,
973070a30381 patch 8.1.1103: MS-Windows: old API calls are no longer needed
Bram Moolenaar <Bram@vim.org>
parents: 16162
diff changeset
5296 szTextAreaClassW, L"Vim text area",
973070a30381 patch 8.1.1103: MS-Windows: old API calls are no longer needed
Bram Moolenaar <Bram@vim.org>
parents: 16162
diff changeset
5297 WS_CHILD | WS_VISIBLE, 0, 0,
973070a30381 patch 8.1.1103: MS-Windows: old API calls are no longer needed
Bram Moolenaar <Bram@vim.org>
parents: 16162
diff changeset
5298 100, // Any value will do for now
973070a30381 patch 8.1.1103: MS-Windows: old API calls are no longer needed
Bram Moolenaar <Bram@vim.org>
parents: 16162
diff changeset
5299 100, // Any value will do for now
973070a30381 patch 8.1.1103: MS-Windows: old API calls are no longer needed
Bram Moolenaar <Bram@vim.org>
parents: 16162
diff changeset
5300 s_hwnd, NULL,
16451
7ae2396cef62 patch 8.1.1230: a lot of code is shared between vim.exe and gvim.exe
Bram Moolenaar <Bram@vim.org>
parents: 16439
diff changeset
5301 g_hinst, NULL);
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
5302
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
5303 if (s_textArea == NULL)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
5304 return FAIL;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
5305
8100
ae50910ce279 commit https://github.com/vim/vim/commit/203219048fa007b5042d9b893fd647aef44722a0
Christian Brabandt <cb@256bit.org>
parents: 8090
diff changeset
5306 #ifdef FEAT_LIBCALL
18788
e1f4e9d78a6a patch 8.1.2383: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents: 18773
diff changeset
5307 // Try loading an icon from $RUNTIMEPATH/bitmaps/vim.ico.
6249
7816c24ff890 updated for version 7.4.459
Bram Moolenaar <bram@vim.org>
parents: 6226
diff changeset
5308 {
7816c24ff890 updated for version 7.4.459
Bram Moolenaar <bram@vim.org>
parents: 6226
diff changeset
5309 HANDLE hIcon = NULL;
7816c24ff890 updated for version 7.4.459
Bram Moolenaar <bram@vim.org>
parents: 6226
diff changeset
5310
7816c24ff890 updated for version 7.4.459
Bram Moolenaar <bram@vim.org>
parents: 6226
diff changeset
5311 if (mch_icon_load(&hIcon) == OK && hIcon != NULL)
6260
74c65620c985 updated for version 7.4.464
Bram Moolenaar <bram@vim.org>
parents: 6249
diff changeset
5312 SendMessage(s_hwnd, WM_SETICON, ICON_SMALL, (LPARAM)hIcon);
6249
7816c24ff890 updated for version 7.4.459
Bram Moolenaar <bram@vim.org>
parents: 6226
diff changeset
5313 }
8100
ae50910ce279 commit https://github.com/vim/vim/commit/203219048fa007b5042d9b893fd647aef44722a0
Christian Brabandt <cb@256bit.org>
parents: 8090
diff changeset
5314 #endif
6249
7816c24ff890 updated for version 7.4.459
Bram Moolenaar <bram@vim.org>
parents: 6226
diff changeset
5315
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
5316 #ifdef FEAT_MENU
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
5317 s_menuBar = CreateMenu();
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
5318 #endif
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
5319 s_hdc = GetDC(s_textArea);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
5320
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
5321 DragAcceptFiles(s_hwnd, TRUE);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
5322
18788
e1f4e9d78a6a patch 8.1.2383: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents: 18773
diff changeset
5323 // Do we need to bother with this?
27160
4482dd5f8869 patch 8.2.4109: MS-Windows: high dpi support is outdated
Bram Moolenaar <Bram@vim.org>
parents: 26966
diff changeset
5324 // m_fMouseAvail = pGetSystemMetricsForDpi(SM_MOUSEPRESENT, s_dpi);
18788
e1f4e9d78a6a patch 8.1.2383: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents: 18773
diff changeset
5325
e1f4e9d78a6a patch 8.1.2383: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents: 18773
diff changeset
5326 // Get background/foreground colors from the system
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
5327 gui_mch_def_colors();
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
5328
18788
e1f4e9d78a6a patch 8.1.2383: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents: 18773
diff changeset
5329 // Get the colors from the "Normal" group (set in syntax.c or in a vimrc
e1f4e9d78a6a patch 8.1.2383: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents: 18773
diff changeset
5330 // file)
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
5331 set_normal_colors();
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
5332
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
5333 /*
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
5334 * Check that none of the colors are the same as the background color.
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
5335 * Then store the current values as the defaults.
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
5336 */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
5337 gui_check_colors();
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
5338 gui.def_norm_pixel = gui.norm_pixel;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
5339 gui.def_back_pixel = gui.back_pixel;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
5340
18788
e1f4e9d78a6a patch 8.1.2383: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents: 18773
diff changeset
5341 // Get the colors for the highlight groups (gui_check_colors() might have
e1f4e9d78a6a patch 8.1.2383: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents: 18773
diff changeset
5342 // changed them)
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
5343 highlight_gui_started();
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
5344
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
5345 /*
7243
861a44fc5183 commit https://github.com/vim/vim/commit/97b0b0ec764d3a247ef600d809b965d5ab37155d
Christian Brabandt <cb@256bit.org>
parents: 7060
diff changeset
5346 * Start out by adding the configured border width into the border offset.
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
5347 */
7243
861a44fc5183 commit https://github.com/vim/vim/commit/97b0b0ec764d3a247ef600d809b965d5ab37155d
Christian Brabandt <cb@256bit.org>
parents: 7060
diff changeset
5348 gui.border_offset = gui.border_width;
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
5349
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
5350 /*
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
5351 * Set up for Intellimouse processing
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
5352 */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
5353 init_mouse_wheel();
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
5354
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
5355 /*
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
5356 * compute a couple of metrics used for the dialogs
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
5357 */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
5358 get_dialog_font_metrics();
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
5359 #ifdef FEAT_TOOLBAR
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
5360 /*
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
5361 * Create the toolbar
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
5362 */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
5363 initialise_toolbar();
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
5364 #endif
810
9f345c48220b updated for version 7.0c
vimboss
parents: 786
diff changeset
5365 #ifdef FEAT_GUI_TABLINE
9f345c48220b updated for version 7.0c
vimboss
parents: 786
diff changeset
5366 /*
9f345c48220b updated for version 7.0c
vimboss
parents: 786
diff changeset
5367 * Create the tabline
9f345c48220b updated for version 7.0c
vimboss
parents: 786
diff changeset
5368 */
9f345c48220b updated for version 7.0c
vimboss
parents: 786
diff changeset
5369 initialise_tabline();
9f345c48220b updated for version 7.0c
vimboss
parents: 786
diff changeset
5370 #endif
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
5371 #ifdef MSWIN_FIND_REPLACE
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
5372 /*
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
5373 * Initialise the dialog box stuff
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
5374 */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
5375 s_findrep_msg = RegisterWindowMessage(FINDMSGSTRING);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
5376
18788
e1f4e9d78a6a patch 8.1.2383: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents: 18773
diff changeset
5377 // Initialise the struct
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
5378 s_findrep_struct.lStructSize = sizeof(s_findrep_struct);
16825
ce04ebdf26b8 patch 8.1.1414: alloc() returning "char_u *" causes a lot of type casts
Bram Moolenaar <Bram@vim.org>
parents: 16768
diff changeset
5379 s_findrep_struct.lpstrFindWhat = ALLOC_MULT(WCHAR, MSWIN_FR_BUFSIZE);
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
5380 s_findrep_struct.lpstrFindWhat[0] = NUL;
16825
ce04ebdf26b8 patch 8.1.1414: alloc() returning "char_u *" causes a lot of type casts
Bram Moolenaar <Bram@vim.org>
parents: 16768
diff changeset
5381 s_findrep_struct.lpstrReplaceWith = ALLOC_MULT(WCHAR, MSWIN_FR_BUFSIZE);
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
5382 s_findrep_struct.lpstrReplaceWith[0] = NUL;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
5383 s_findrep_struct.wFindWhatLen = MSWIN_FR_BUFSIZE;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
5384 s_findrep_struct.wReplaceWithLen = MSWIN_FR_BUFSIZE;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
5385 #endif
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
5386
2616
73d947c20291 updated for version 7.3.038
Bram Moolenaar <bram@vim.org>
parents: 2614
diff changeset
5387 #ifdef FEAT_EVAL
18788
e1f4e9d78a6a patch 8.1.2383: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents: 18773
diff changeset
5388 // set the v:windowid variable
2865
46544d3ae7ec updated for version 7.3.206
Bram Moolenaar <bram@vim.org>
parents: 2684
diff changeset
5389 set_vim_var_nr(VV_WINDOWID, HandleToLong(s_hwnd));
2616
73d947c20291 updated for version 7.3.038
Bram Moolenaar <bram@vim.org>
parents: 2614
diff changeset
5390 #endif
73d947c20291 updated for version 7.3.038
Bram Moolenaar <bram@vim.org>
parents: 2614
diff changeset
5391
6110
1bff71d20262 updated for version 7.4.393
Bram Moolenaar <bram@vim.org>
parents: 5284
diff changeset
5392 #ifdef FEAT_RENDER_OPTIONS
1bff71d20262 updated for version 7.4.393
Bram Moolenaar <bram@vim.org>
parents: 5284
diff changeset
5393 if (p_rop)
1bff71d20262 updated for version 7.4.393
Bram Moolenaar <bram@vim.org>
parents: 5284
diff changeset
5394 (void)gui_mch_set_rendering_options(p_rop);
1bff71d20262 updated for version 7.4.393
Bram Moolenaar <bram@vim.org>
parents: 5284
diff changeset
5395 #endif
1bff71d20262 updated for version 7.4.393
Bram Moolenaar <bram@vim.org>
parents: 5284
diff changeset
5396
153
19670b05ee32 updated for version 7.0047
vimboss
parents: 148
diff changeset
5397 theend:
18788
e1f4e9d78a6a patch 8.1.2383: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents: 18773
diff changeset
5398 // Display any pending error messages
153
19670b05ee32 updated for version 7.0047
vimboss
parents: 148
diff changeset
5399 display_errors();
19670b05ee32 updated for version 7.0047
vimboss
parents: 148
diff changeset
5400
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
5401 return OK;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
5402 }
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
5403
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
5404 /*
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
5405 * Get the size of the screen, taking position on multiple monitors into
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
5406 * account (if supported).
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
5407 */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
5408 static void
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
5409 get_work_area(RECT *spi_rect)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
5410 {
10264
c036c0f636d5 commit https://github.com/vim/vim/commit/cea912af725c54f4727a0565e31661f6b29c6bb1
Christian Brabandt <cb@256bit.org>
parents: 10042
diff changeset
5411 HMONITOR mon;
c036c0f636d5 commit https://github.com/vim/vim/commit/cea912af725c54f4727a0565e31661f6b29c6bb1
Christian Brabandt <cb@256bit.org>
parents: 10042
diff changeset
5412 MONITORINFO moninfo;
c036c0f636d5 commit https://github.com/vim/vim/commit/cea912af725c54f4727a0565e31661f6b29c6bb1
Christian Brabandt <cb@256bit.org>
parents: 10042
diff changeset
5413
18788
e1f4e9d78a6a patch 8.1.2383: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents: 18773
diff changeset
5414 // work out which monitor the window is on, and get *its* work area
10438
935bdb919a50 commit https://github.com/vim/vim/commit/87f3d202a90bd2d08a7afd55b3486b10bef858bb
Christian Brabandt <cb@256bit.org>
parents: 10359
diff changeset
5415 mon = MonitorFromWindow(s_hwnd, MONITOR_DEFAULTTOPRIMARY);
10264
c036c0f636d5 commit https://github.com/vim/vim/commit/cea912af725c54f4727a0565e31661f6b29c6bb1
Christian Brabandt <cb@256bit.org>
parents: 10042
diff changeset
5416 if (mon != NULL)
c036c0f636d5 commit https://github.com/vim/vim/commit/cea912af725c54f4727a0565e31661f6b29c6bb1
Christian Brabandt <cb@256bit.org>
parents: 10042
diff changeset
5417 {
c036c0f636d5 commit https://github.com/vim/vim/commit/cea912af725c54f4727a0565e31661f6b29c6bb1
Christian Brabandt <cb@256bit.org>
parents: 10042
diff changeset
5418 moninfo.cbSize = sizeof(MONITORINFO);
c036c0f636d5 commit https://github.com/vim/vim/commit/cea912af725c54f4727a0565e31661f6b29c6bb1
Christian Brabandt <cb@256bit.org>
parents: 10042
diff changeset
5419 if (GetMonitorInfo(mon, &moninfo))
c036c0f636d5 commit https://github.com/vim/vim/commit/cea912af725c54f4727a0565e31661f6b29c6bb1
Christian Brabandt <cb@256bit.org>
parents: 10042
diff changeset
5420 {
c036c0f636d5 commit https://github.com/vim/vim/commit/cea912af725c54f4727a0565e31661f6b29c6bb1
Christian Brabandt <cb@256bit.org>
parents: 10042
diff changeset
5421 *spi_rect = moninfo.rcWork;
c036c0f636d5 commit https://github.com/vim/vim/commit/cea912af725c54f4727a0565e31661f6b29c6bb1
Christian Brabandt <cb@256bit.org>
parents: 10042
diff changeset
5422 return;
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
5423 }
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
5424 }
18788
e1f4e9d78a6a patch 8.1.2383: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents: 18773
diff changeset
5425 // this is the old method...
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
5426 SystemParametersInfo(SPI_GETWORKAREA, 0, spi_rect, 0);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
5427 }
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
5428
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
5429 /*
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
5430 * Set the size of the window to the given width and height in pixels.
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
5431 */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
5432 void
10783
04eb70c77cf4 patch 8.0.0281: some files are still using ARGSUSED instead of UNUSED
Christian Brabandt <cb@256bit.org>
parents: 10440
diff changeset
5433 gui_mch_set_shellsize(
04eb70c77cf4 patch 8.0.0281: some files are still using ARGSUSED instead of UNUSED
Christian Brabandt <cb@256bit.org>
parents: 10440
diff changeset
5434 int width,
04eb70c77cf4 patch 8.0.0281: some files are still using ARGSUSED instead of UNUSED
Christian Brabandt <cb@256bit.org>
parents: 10440
diff changeset
5435 int height,
04eb70c77cf4 patch 8.0.0281: some files are still using ARGSUSED instead of UNUSED
Christian Brabandt <cb@256bit.org>
parents: 10440
diff changeset
5436 int min_width UNUSED,
04eb70c77cf4 patch 8.0.0281: some files are still using ARGSUSED instead of UNUSED
Christian Brabandt <cb@256bit.org>
parents: 10440
diff changeset
5437 int min_height UNUSED,
04eb70c77cf4 patch 8.0.0281: some files are still using ARGSUSED instead of UNUSED
Christian Brabandt <cb@256bit.org>
parents: 10440
diff changeset
5438 int base_width UNUSED,
04eb70c77cf4 patch 8.0.0281: some files are still using ARGSUSED instead of UNUSED
Christian Brabandt <cb@256bit.org>
parents: 10440
diff changeset
5439 int base_height UNUSED,
812
68c15f2c7d3f updated for version 7.0c01
vimboss
parents: 810
diff changeset
5440 int direction)
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
5441 {
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
5442 RECT workarea_rect;
21351
a4f213630151 patch 8.2.1226: MS-Windows: windows positioning wrong depending on taskbar
Bram Moolenaar <Bram@vim.org>
parents: 20421
diff changeset
5443 RECT window_rect;
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
5444 int win_width, win_height;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
5445
18788
e1f4e9d78a6a patch 8.1.2383: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents: 18773
diff changeset
5446 // Try to keep window completely on screen.
e1f4e9d78a6a patch 8.1.2383: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents: 18773
diff changeset
5447 // Get position of the screen work area. This is the part that is not
e1f4e9d78a6a patch 8.1.2383: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents: 18773
diff changeset
5448 // used by the taskbar or appbars.
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
5449 get_work_area(&workarea_rect);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
5450
18788
e1f4e9d78a6a patch 8.1.2383: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents: 18773
diff changeset
5451 // Resizing a maximized window looks very strange, unzoom it first.
e1f4e9d78a6a patch 8.1.2383: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents: 18773
diff changeset
5452 // But don't do it when still starting up, it may have been requested in
e1f4e9d78a6a patch 8.1.2383: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents: 18773
diff changeset
5453 // the shortcut.
21351
a4f213630151 patch 8.2.1226: MS-Windows: windows positioning wrong depending on taskbar
Bram Moolenaar <Bram@vim.org>
parents: 20421
diff changeset
5454 if (IsZoomed(s_hwnd) && starting == 0)
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
5455 ShowWindow(s_hwnd, SW_SHOWNORMAL);
21351
a4f213630151 patch 8.2.1226: MS-Windows: windows positioning wrong depending on taskbar
Bram Moolenaar <Bram@vim.org>
parents: 20421
diff changeset
5456
a4f213630151 patch 8.2.1226: MS-Windows: windows positioning wrong depending on taskbar
Bram Moolenaar <Bram@vim.org>
parents: 20421
diff changeset
5457 GetWindowRect(s_hwnd, &window_rect);
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
5458
18788
e1f4e9d78a6a patch 8.1.2383: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents: 18773
diff changeset
5459 // compute the size of the outside of the window
27160
4482dd5f8869 patch 8.2.4109: MS-Windows: high dpi support is outdated
Bram Moolenaar <Bram@vim.org>
parents: 26966
diff changeset
5460 win_width = width + (pGetSystemMetricsForDpi(SM_CXFRAME, s_dpi) +
4482dd5f8869 patch 8.2.4109: MS-Windows: high dpi support is outdated
Bram Moolenaar <Bram@vim.org>
parents: 26966
diff changeset
5461 pGetSystemMetricsForDpi(SM_CXPADDEDBORDER, s_dpi)) * 2;
4482dd5f8869 patch 8.2.4109: MS-Windows: high dpi support is outdated
Bram Moolenaar <Bram@vim.org>
parents: 26966
diff changeset
5462 win_height = height + (pGetSystemMetricsForDpi(SM_CYFRAME, s_dpi) +
4482dd5f8869 patch 8.2.4109: MS-Windows: high dpi support is outdated
Bram Moolenaar <Bram@vim.org>
parents: 26966
diff changeset
5463 pGetSystemMetricsForDpi(SM_CXPADDEDBORDER, s_dpi)) * 2
4482dd5f8869 patch 8.2.4109: MS-Windows: high dpi support is outdated
Bram Moolenaar <Bram@vim.org>
parents: 26966
diff changeset
5464 + pGetSystemMetricsForDpi(SM_CYCAPTION, s_dpi)
4482dd5f8869 patch 8.2.4109: MS-Windows: high dpi support is outdated
Bram Moolenaar <Bram@vim.org>
parents: 26966
diff changeset
5465 + gui_mswin_get_menu_height(FALSE);
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
5466
18788
e1f4e9d78a6a patch 8.1.2383: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents: 18773
diff changeset
5467 // The following should take care of keeping Vim on the same monitor, no
e1f4e9d78a6a patch 8.1.2383: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents: 18773
diff changeset
5468 // matter if the secondary monitor is left or right of the primary
e1f4e9d78a6a patch 8.1.2383: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents: 18773
diff changeset
5469 // monitor.
21351
a4f213630151 patch 8.2.1226: MS-Windows: windows positioning wrong depending on taskbar
Bram Moolenaar <Bram@vim.org>
parents: 20421
diff changeset
5470 window_rect.right = window_rect.left + win_width;
a4f213630151 patch 8.2.1226: MS-Windows: windows positioning wrong depending on taskbar
Bram Moolenaar <Bram@vim.org>
parents: 20421
diff changeset
5471 window_rect.bottom = window_rect.top + win_height;
3248
e0248b732a5c updated for version 7.3.393
Bram Moolenaar <bram@vim.org>
parents: 3225
diff changeset
5472
18788
e1f4e9d78a6a patch 8.1.2383: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents: 18773
diff changeset
5473 // If the window is going off the screen, move it on to the screen.
21351
a4f213630151 patch 8.2.1226: MS-Windows: windows positioning wrong depending on taskbar
Bram Moolenaar <Bram@vim.org>
parents: 20421
diff changeset
5474 if ((direction & RESIZE_HOR) && window_rect.right > workarea_rect.right)
a4f213630151 patch 8.2.1226: MS-Windows: windows positioning wrong depending on taskbar
Bram Moolenaar <Bram@vim.org>
parents: 20421
diff changeset
5475 OffsetRect(&window_rect, workarea_rect.right - window_rect.right, 0);
a4f213630151 patch 8.2.1226: MS-Windows: windows positioning wrong depending on taskbar
Bram Moolenaar <Bram@vim.org>
parents: 20421
diff changeset
5476
a4f213630151 patch 8.2.1226: MS-Windows: windows positioning wrong depending on taskbar
Bram Moolenaar <Bram@vim.org>
parents: 20421
diff changeset
5477 if ((direction & RESIZE_HOR) && window_rect.left < workarea_rect.left)
a4f213630151 patch 8.2.1226: MS-Windows: windows positioning wrong depending on taskbar
Bram Moolenaar <Bram@vim.org>
parents: 20421
diff changeset
5478 OffsetRect(&window_rect, workarea_rect.left - window_rect.left, 0);
a4f213630151 patch 8.2.1226: MS-Windows: windows positioning wrong depending on taskbar
Bram Moolenaar <Bram@vim.org>
parents: 20421
diff changeset
5479
a4f213630151 patch 8.2.1226: MS-Windows: windows positioning wrong depending on taskbar
Bram Moolenaar <Bram@vim.org>
parents: 20421
diff changeset
5480 if ((direction & RESIZE_VERT) && window_rect.bottom > workarea_rect.bottom)
a4f213630151 patch 8.2.1226: MS-Windows: windows positioning wrong depending on taskbar
Bram Moolenaar <Bram@vim.org>
parents: 20421
diff changeset
5481 OffsetRect(&window_rect, 0, workarea_rect.bottom - window_rect.bottom);
a4f213630151 patch 8.2.1226: MS-Windows: windows positioning wrong depending on taskbar
Bram Moolenaar <Bram@vim.org>
parents: 20421
diff changeset
5482
a4f213630151 patch 8.2.1226: MS-Windows: windows positioning wrong depending on taskbar
Bram Moolenaar <Bram@vim.org>
parents: 20421
diff changeset
5483 if ((direction & RESIZE_VERT) && window_rect.top < workarea_rect.top)
a4f213630151 patch 8.2.1226: MS-Windows: windows positioning wrong depending on taskbar
Bram Moolenaar <Bram@vim.org>
parents: 20421
diff changeset
5484 OffsetRect(&window_rect, 0, workarea_rect.top - window_rect.top);
a4f213630151 patch 8.2.1226: MS-Windows: windows positioning wrong depending on taskbar
Bram Moolenaar <Bram@vim.org>
parents: 20421
diff changeset
5485
a4f213630151 patch 8.2.1226: MS-Windows: windows positioning wrong depending on taskbar
Bram Moolenaar <Bram@vim.org>
parents: 20421
diff changeset
5486 MoveWindow(s_hwnd, window_rect.left, window_rect.top,
a4f213630151 patch 8.2.1226: MS-Windows: windows positioning wrong depending on taskbar
Bram Moolenaar <Bram@vim.org>
parents: 20421
diff changeset
5487 win_width, win_height, TRUE);
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
5488
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
5489 SetActiveWindow(s_hwnd);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
5490 SetFocus(s_hwnd);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
5491
18788
e1f4e9d78a6a patch 8.1.2383: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents: 18773
diff changeset
5492 // Menu may wrap differently now
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
5493 gui_mswin_get_menu_height(!gui.starting);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
5494 }
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
5495
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
5496
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
5497 void
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
5498 gui_mch_set_scrollbar_thumb(
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
5499 scrollbar_T *sb,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
5500 long val,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
5501 long size,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
5502 long max)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
5503 {
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
5504 SCROLLINFO info;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
5505
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
5506 sb->scroll_shift = 0;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
5507 while (max > 32767)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
5508 {
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
5509 max = (max + 1) >> 1;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
5510 val >>= 1;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
5511 size >>= 1;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
5512 ++sb->scroll_shift;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
5513 }
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
5514
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
5515 if (sb->scroll_shift > 0)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
5516 ++size;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
5517
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
5518 info.cbSize = sizeof(info);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
5519 info.fMask = SIF_POS | SIF_RANGE | SIF_PAGE;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
5520 info.nPos = val;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
5521 info.nMin = 0;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
5522 info.nMax = max;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
5523 info.nPage = size;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
5524 SetScrollInfo(sb->id, SB_CTL, &info, TRUE);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
5525 }
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
5526
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
5527
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
5528 /*
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
5529 * Set the current text font.
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
5530 */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
5531 void
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
5532 gui_mch_set_font(GuiFont font)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
5533 {
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
5534 gui.currFont = font;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
5535 }
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
5536
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
5537
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
5538 /*
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
5539 * Set the current text foreground color.
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
5540 */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
5541 void
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
5542 gui_mch_set_fg_color(guicolor_T color)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
5543 {
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
5544 gui.currFgColor = color;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
5545 }
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
5546
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
5547 /*
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
5548 * Set the current text background color.
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
5549 */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
5550 void
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
5551 gui_mch_set_bg_color(guicolor_T color)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
5552 {
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
5553 gui.currBgColor = color;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
5554 }
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
5555
205
d292c40ca788 updated for version 7.0060
vimboss
parents: 189
diff changeset
5556 /*
d292c40ca788 updated for version 7.0060
vimboss
parents: 189
diff changeset
5557 * Set the current text special color.
d292c40ca788 updated for version 7.0060
vimboss
parents: 189
diff changeset
5558 */
d292c40ca788 updated for version 7.0060
vimboss
parents: 189
diff changeset
5559 void
d292c40ca788 updated for version 7.0060
vimboss
parents: 189
diff changeset
5560 gui_mch_set_sp_color(guicolor_T color)
d292c40ca788 updated for version 7.0060
vimboss
parents: 189
diff changeset
5561 {
d292c40ca788 updated for version 7.0060
vimboss
parents: 189
diff changeset
5562 gui.currSpColor = color;
d292c40ca788 updated for version 7.0060
vimboss
parents: 189
diff changeset
5563 }
d292c40ca788 updated for version 7.0060
vimboss
parents: 189
diff changeset
5564
12950
e60b2aa04903 patch 8.0.1351: warning for unused variables building with MinGW
Christian Brabandt <cb@256bit.org>
parents: 12934
diff changeset
5565 #ifdef FEAT_MBYTE_IME
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
5566 /*
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
5567 * Multi-byte handling, originally by Sung-Hoon Baek.
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
5568 * First static functions (no prototypes generated).
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
5569 */
12950
e60b2aa04903 patch 8.0.1351: warning for unused variables building with MinGW
Christian Brabandt <cb@256bit.org>
parents: 12934
diff changeset
5570 # ifdef _MSC_VER
18788
e1f4e9d78a6a patch 8.1.2383: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents: 18773
diff changeset
5571 # include <ime.h> // Apparently not needed for Cygwin or MinGW.
12950
e60b2aa04903 patch 8.0.1351: warning for unused variables building with MinGW
Christian Brabandt <cb@256bit.org>
parents: 12934
diff changeset
5572 # endif
e60b2aa04903 patch 8.0.1351: warning for unused variables building with MinGW
Christian Brabandt <cb@256bit.org>
parents: 12934
diff changeset
5573 # include <imm.h>
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
5574
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
5575 /*
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
5576 * handle WM_IME_NOTIFY message
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
5577 */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
5578 static LRESULT
10783
04eb70c77cf4 patch 8.0.0281: some files are still using ARGSUSED instead of UNUSED
Christian Brabandt <cb@256bit.org>
parents: 10440
diff changeset
5579 _OnImeNotify(HWND hWnd, DWORD dwCommand, DWORD dwData UNUSED)
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
5580 {
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
5581 LRESULT lResult = 0;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
5582 HIMC hImc;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
5583
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
5584 if (!pImmGetContext || (hImc = pImmGetContext(hWnd)) == (HIMC)0)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
5585 return lResult;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
5586 switch (dwCommand)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
5587 {
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
5588 case IMN_SETOPENSTATUS:
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
5589 if (pImmGetOpenStatus(hImc))
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
5590 {
27160
4482dd5f8869 patch 8.2.4109: MS-Windows: high dpi support is outdated
Bram Moolenaar <Bram@vim.org>
parents: 26966
diff changeset
5591 LOGFONTW lf = norm_logfont;
4482dd5f8869 patch 8.2.4109: MS-Windows: high dpi support is outdated
Bram Moolenaar <Bram@vim.org>
parents: 26966
diff changeset
5592 if (s_process_dpi_aware == DPI_AWARENESS_UNAWARE)
4482dd5f8869 patch 8.2.4109: MS-Windows: high dpi support is outdated
Bram Moolenaar <Bram@vim.org>
parents: 26966
diff changeset
5593 // Work around when PerMonitorV2 is not enabled in the process level.
4482dd5f8869 patch 8.2.4109: MS-Windows: high dpi support is outdated
Bram Moolenaar <Bram@vim.org>
parents: 26966
diff changeset
5594 lf.lfHeight = lf.lfHeight * DEFAULT_DPI / s_dpi;
4482dd5f8869 patch 8.2.4109: MS-Windows: high dpi support is outdated
Bram Moolenaar <Bram@vim.org>
parents: 26966
diff changeset
5595 pImmSetCompositionFontW(hImc, &lf);
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
5596 im_set_position(gui.row, gui.col);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
5597
18788
e1f4e9d78a6a patch 8.1.2383: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents: 18773
diff changeset
5598 // Disable langmap
28773
d770568e6c98 patch 8.2.4911: the mode #defines are not clearly named
Bram Moolenaar <Bram@vim.org>
parents: 28755
diff changeset
5599 State &= ~MODE_LANGMAP;
d770568e6c98 patch 8.2.4911: the mode #defines are not clearly named
Bram Moolenaar <Bram@vim.org>
parents: 28755
diff changeset
5600 if (State & MODE_INSERT)
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
5601 {
18773
38a3bef525e6 patch 8.1.2376: preprocessor indents are incorrect
Bram Moolenaar <Bram@vim.org>
parents: 18763
diff changeset
5602 # if defined(FEAT_KEYMAP)
18788
e1f4e9d78a6a patch 8.1.2383: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents: 18773
diff changeset
5603 // Unshown 'keymap' in status lines
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
5604 if (curbuf->b_p_iminsert == B_IMODE_LMAP)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
5605 {
18788
e1f4e9d78a6a patch 8.1.2383: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents: 18773
diff changeset
5606 // Save cursor position
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
5607 int old_row = gui.row;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
5608 int old_col = gui.col;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
5609
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
5610 // This must be called here before
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
5611 // status_redraw_curbuf(), otherwise the mode
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
5612 // message may appear in the wrong position.
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
5613 showmode();
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
5614 status_redraw_curbuf();
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
5615 update_screen(0);
18788
e1f4e9d78a6a patch 8.1.2383: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents: 18773
diff changeset
5616 // Restore cursor position
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
5617 gui.row = old_row;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
5618 gui.col = old_col;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
5619 }
18773
38a3bef525e6 patch 8.1.2376: preprocessor indents are incorrect
Bram Moolenaar <Bram@vim.org>
parents: 18763
diff changeset
5620 # endif
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
5621 }
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
5622 }
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
5623 gui_update_cursor(TRUE, FALSE);
12986
18e6f4addce9 patch 8.0.1369: MS-Windows: drawing underline slow, mFallbackDC not updated
Christian Brabandt <cb@256bit.org>
parents: 12950
diff changeset
5624 gui_mch_flush();
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
5625 lResult = 0;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
5626 break;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
5627 }
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
5628 pImmReleaseContext(hWnd, hImc);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
5629 return lResult;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
5630 }
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
5631
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
5632 static LRESULT
10783
04eb70c77cf4 patch 8.0.0281: some files are still using ARGSUSED instead of UNUSED
Christian Brabandt <cb@256bit.org>
parents: 10440
diff changeset
5633 _OnImeComposition(HWND hwnd, WPARAM dbcs UNUSED, LPARAM param)
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
5634 {
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
5635 char_u *ret;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
5636 int len;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
5637
18788
e1f4e9d78a6a patch 8.1.2383: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents: 18773
diff changeset
5638 if ((param & GCS_RESULTSTR) == 0) // Composition unfinished.
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
5639 return 0;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
5640
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
5641 ret = GetResultStr(hwnd, GCS_RESULTSTR, &len);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
5642 if (ret != NULL)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
5643 {
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
5644 add_to_input_buf_csi(ret, len);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
5645 vim_free(ret);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
5646 return 1;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
5647 }
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
5648 return 0;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
5649 }
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
5650
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
5651 /*
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
5652 * void GetResultStr()
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
5653 *
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
5654 * This handles WM_IME_COMPOSITION with GCS_RESULTSTR flag on.
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
5655 * get complete composition string
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
5656 */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
5657 static char_u *
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
5658 GetResultStr(HWND hwnd, int GCS, int *lenp)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
5659 {
18788
e1f4e9d78a6a patch 8.1.2383: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents: 18773
diff changeset
5660 HIMC hIMC; // Input context handle.
27229
6837d2c14dee patch 8.2.4143: MS-Windows: IME support for Win9x is obsolete
Bram Moolenaar <Bram@vim.org>
parents: 27160
diff changeset
5661 LONG ret;
6837d2c14dee patch 8.2.4143: MS-Windows: IME support for Win9x is obsolete
Bram Moolenaar <Bram@vim.org>
parents: 27160
diff changeset
5662 WCHAR *buf = NULL;
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
5663 char_u *convbuf = NULL;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
5664
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
5665 if (!pImmGetContext || (hIMC = pImmGetContext(hwnd)) == (HIMC)0)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
5666 return NULL;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
5667
27229
6837d2c14dee patch 8.2.4143: MS-Windows: IME support for Win9x is obsolete
Bram Moolenaar <Bram@vim.org>
parents: 27160
diff changeset
5668 // Get the length of the composition string.
6837d2c14dee patch 8.2.4143: MS-Windows: IME support for Win9x is obsolete
Bram Moolenaar <Bram@vim.org>
parents: 27160
diff changeset
5669 ret = pImmGetCompositionStringW(hIMC, GCS, NULL, 0);
6837d2c14dee patch 8.2.4143: MS-Windows: IME support for Win9x is obsolete
Bram Moolenaar <Bram@vim.org>
parents: 27160
diff changeset
5670 if (ret <= 0)
6837d2c14dee patch 8.2.4143: MS-Windows: IME support for Win9x is obsolete
Bram Moolenaar <Bram@vim.org>
parents: 27160
diff changeset
5671 return NULL;
6837d2c14dee patch 8.2.4143: MS-Windows: IME support for Win9x is obsolete
Bram Moolenaar <Bram@vim.org>
parents: 27160
diff changeset
5672
6837d2c14dee patch 8.2.4143: MS-Windows: IME support for Win9x is obsolete
Bram Moolenaar <Bram@vim.org>
parents: 27160
diff changeset
5673 // Allocate the requested buffer plus space for the NUL character.
6837d2c14dee patch 8.2.4143: MS-Windows: IME support for Win9x is obsolete
Bram Moolenaar <Bram@vim.org>
parents: 27160
diff changeset
5674 buf = alloc(ret + sizeof(WCHAR));
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
5675 if (buf == NULL)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
5676 return NULL;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
5677
27229
6837d2c14dee patch 8.2.4143: MS-Windows: IME support for Win9x is obsolete
Bram Moolenaar <Bram@vim.org>
parents: 27160
diff changeset
5678 // Reads in the composition string.
6837d2c14dee patch 8.2.4143: MS-Windows: IME support for Win9x is obsolete
Bram Moolenaar <Bram@vim.org>
parents: 27160
diff changeset
5679 pImmGetCompositionStringW(hIMC, GCS, buf, ret);
6837d2c14dee patch 8.2.4143: MS-Windows: IME support for Win9x is obsolete
Bram Moolenaar <Bram@vim.org>
parents: 27160
diff changeset
5680 *lenp = ret / sizeof(WCHAR);
6837d2c14dee patch 8.2.4143: MS-Windows: IME support for Win9x is obsolete
Bram Moolenaar <Bram@vim.org>
parents: 27160
diff changeset
5681
1752
a8aae2e1d2ae updated for version 7.2-049
vimboss
parents: 1621
diff changeset
5682 convbuf = utf16_to_enc(buf, lenp);
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
5683 pImmReleaseContext(hwnd, hIMC);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
5684 vim_free(buf);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
5685 return convbuf;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
5686 }
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
5687 #endif
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
5688
18788
e1f4e9d78a6a patch 8.1.2383: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents: 18773
diff changeset
5689 // For global functions we need prototypes.
12950
e60b2aa04903 patch 8.0.1351: warning for unused variables building with MinGW
Christian Brabandt <cb@256bit.org>
parents: 12934
diff changeset
5690 #if defined(FEAT_MBYTE_IME) || defined(PROTO)
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
5691
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
5692 /*
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
5693 * set font to IM.
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
5694 */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
5695 void
16152
8f4eccaaf2c0 patch 8.1.1081: MS-Windows: cannot use some fonts
Bram Moolenaar <Bram@vim.org>
parents: 16123
diff changeset
5696 im_set_font(LOGFONTW *lf)
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
5697 {
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
5698 HIMC hImc;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
5699
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
5700 if (pImmGetContext && (hImc = pImmGetContext(s_hwnd)) != (HIMC)0)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
5701 {
16152
8f4eccaaf2c0 patch 8.1.1081: MS-Windows: cannot use some fonts
Bram Moolenaar <Bram@vim.org>
parents: 16123
diff changeset
5702 pImmSetCompositionFontW(hImc, lf);
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
5703 pImmReleaseContext(s_hwnd, hImc);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
5704 }
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
5705 }
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
5706
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
5707 /*
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
5708 * Notify cursor position to IM.
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
5709 */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
5710 void
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
5711 im_set_position(int row, int col)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
5712 {
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
5713 HIMC hImc;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
5714
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
5715 if (pImmGetContext && (hImc = pImmGetContext(s_hwnd)) != (HIMC)0)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
5716 {
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
5717 COMPOSITIONFORM cfs;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
5718
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
5719 cfs.dwStyle = CFS_POINT;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
5720 cfs.ptCurrentPos.x = FILL_X(col);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
5721 cfs.ptCurrentPos.y = FILL_Y(row);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
5722 MapWindowPoints(s_textArea, s_hwnd, &cfs.ptCurrentPos, 1);
27160
4482dd5f8869 patch 8.2.4109: MS-Windows: high dpi support is outdated
Bram Moolenaar <Bram@vim.org>
parents: 26966
diff changeset
5723 if (s_process_dpi_aware == DPI_AWARENESS_UNAWARE)
4482dd5f8869 patch 8.2.4109: MS-Windows: high dpi support is outdated
Bram Moolenaar <Bram@vim.org>
parents: 26966
diff changeset
5724 {
4482dd5f8869 patch 8.2.4109: MS-Windows: high dpi support is outdated
Bram Moolenaar <Bram@vim.org>
parents: 26966
diff changeset
5725 // Work around when PerMonitorV2 is not enabled in the process level.
4482dd5f8869 patch 8.2.4109: MS-Windows: high dpi support is outdated
Bram Moolenaar <Bram@vim.org>
parents: 26966
diff changeset
5726 cfs.ptCurrentPos.x = cfs.ptCurrentPos.x * DEFAULT_DPI / s_dpi;
4482dd5f8869 patch 8.2.4109: MS-Windows: high dpi support is outdated
Bram Moolenaar <Bram@vim.org>
parents: 26966
diff changeset
5727 cfs.ptCurrentPos.y = cfs.ptCurrentPos.y * DEFAULT_DPI / s_dpi;
4482dd5f8869 patch 8.2.4109: MS-Windows: high dpi support is outdated
Bram Moolenaar <Bram@vim.org>
parents: 26966
diff changeset
5728 }
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
5729 pImmSetCompositionWindow(hImc, &cfs);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
5730
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
5731 pImmReleaseContext(s_hwnd, hImc);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
5732 }
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
5733 }
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
5734
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
5735 /*
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
5736 * Set IM status on ("active" is TRUE) or off ("active" is FALSE).
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
5737 */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
5738 void
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
5739 im_set_active(int active)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
5740 {
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
5741 HIMC hImc;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
5742 static HIMC hImcOld = (HIMC)0;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
5743
18742
e9b2ade1adbd patch 8.1.2361: MS-Windows: test failures related to VIMDLL
Bram Moolenaar <Bram@vim.org>
parents: 18662
diff changeset
5744 # ifdef VIMDLL
e9b2ade1adbd patch 8.1.2361: MS-Windows: test failures related to VIMDLL
Bram Moolenaar <Bram@vim.org>
parents: 18662
diff changeset
5745 if (!gui.in_use && !gui.starting)
e9b2ade1adbd patch 8.1.2361: MS-Windows: test failures related to VIMDLL
Bram Moolenaar <Bram@vim.org>
parents: 18662
diff changeset
5746 {
e9b2ade1adbd patch 8.1.2361: MS-Windows: test failures related to VIMDLL
Bram Moolenaar <Bram@vim.org>
parents: 18662
diff changeset
5747 mbyte_im_set_active(active);
e9b2ade1adbd patch 8.1.2361: MS-Windows: test failures related to VIMDLL
Bram Moolenaar <Bram@vim.org>
parents: 18662
diff changeset
5748 return;
e9b2ade1adbd patch 8.1.2361: MS-Windows: test failures related to VIMDLL
Bram Moolenaar <Bram@vim.org>
parents: 18662
diff changeset
5749 }
e9b2ade1adbd patch 8.1.2361: MS-Windows: test failures related to VIMDLL
Bram Moolenaar <Bram@vim.org>
parents: 18662
diff changeset
5750 # endif
e9b2ade1adbd patch 8.1.2361: MS-Windows: test failures related to VIMDLL
Bram Moolenaar <Bram@vim.org>
parents: 18662
diff changeset
5751
18788
e1f4e9d78a6a patch 8.1.2383: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents: 18773
diff changeset
5752 if (pImmGetContext) // if NULL imm32.dll wasn't loaded (yet)
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
5753 {
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
5754 if (p_imdisable)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
5755 {
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
5756 if (hImcOld == (HIMC)0)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
5757 {
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
5758 hImcOld = pImmGetContext(s_hwnd);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
5759 if (hImcOld)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
5760 pImmAssociateContext(s_hwnd, (HIMC)0);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
5761 }
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
5762 active = FALSE;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
5763 }
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
5764 else if (hImcOld != (HIMC)0)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
5765 {
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
5766 pImmAssociateContext(s_hwnd, hImcOld);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
5767 hImcOld = (HIMC)0;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
5768 }
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
5769
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
5770 hImc = pImmGetContext(s_hwnd);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
5771 if (hImc)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
5772 {
777
f664cc974a7a updated for version 7.0227
vimboss
parents: 714
diff changeset
5773 /*
f664cc974a7a updated for version 7.0227
vimboss
parents: 714
diff changeset
5774 * for Korean ime
f664cc974a7a updated for version 7.0227
vimboss
parents: 714
diff changeset
5775 */
f664cc974a7a updated for version 7.0227
vimboss
parents: 714
diff changeset
5776 HKL hKL = GetKeyboardLayout(0);
f664cc974a7a updated for version 7.0227
vimboss
parents: 714
diff changeset
5777
f664cc974a7a updated for version 7.0227
vimboss
parents: 714
diff changeset
5778 if (LOWORD(hKL) == MAKELANGID(LANG_KOREAN, SUBLANG_KOREAN))
f664cc974a7a updated for version 7.0227
vimboss
parents: 714
diff changeset
5779 {
f664cc974a7a updated for version 7.0227
vimboss
parents: 714
diff changeset
5780 static DWORD dwConversionSaved = 0, dwSentenceSaved = 0;
f664cc974a7a updated for version 7.0227
vimboss
parents: 714
diff changeset
5781 static BOOL bSaved = FALSE;
f664cc974a7a updated for version 7.0227
vimboss
parents: 714
diff changeset
5782
f664cc974a7a updated for version 7.0227
vimboss
parents: 714
diff changeset
5783 if (active)
f664cc974a7a updated for version 7.0227
vimboss
parents: 714
diff changeset
5784 {
18788
e1f4e9d78a6a patch 8.1.2383: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents: 18773
diff changeset
5785 // if we have a saved conversion status, restore it
777
f664cc974a7a updated for version 7.0227
vimboss
parents: 714
diff changeset
5786 if (bSaved)
f664cc974a7a updated for version 7.0227
vimboss
parents: 714
diff changeset
5787 pImmSetConversionStatus(hImc, dwConversionSaved,
f664cc974a7a updated for version 7.0227
vimboss
parents: 714
diff changeset
5788 dwSentenceSaved);
f664cc974a7a updated for version 7.0227
vimboss
parents: 714
diff changeset
5789 bSaved = FALSE;
f664cc974a7a updated for version 7.0227
vimboss
parents: 714
diff changeset
5790 }
f664cc974a7a updated for version 7.0227
vimboss
parents: 714
diff changeset
5791 else
f664cc974a7a updated for version 7.0227
vimboss
parents: 714
diff changeset
5792 {
18788
e1f4e9d78a6a patch 8.1.2383: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents: 18773
diff changeset
5793 // save conversion status and disable korean
777
f664cc974a7a updated for version 7.0227
vimboss
parents: 714
diff changeset
5794 if (pImmGetConversionStatus(hImc, &dwConversionSaved,
f664cc974a7a updated for version 7.0227
vimboss
parents: 714
diff changeset
5795 &dwSentenceSaved))
f664cc974a7a updated for version 7.0227
vimboss
parents: 714
diff changeset
5796 {
f664cc974a7a updated for version 7.0227
vimboss
parents: 714
diff changeset
5797 bSaved = TRUE;
f664cc974a7a updated for version 7.0227
vimboss
parents: 714
diff changeset
5798 pImmSetConversionStatus(hImc,
f664cc974a7a updated for version 7.0227
vimboss
parents: 714
diff changeset
5799 dwConversionSaved & ~(IME_CMODE_NATIVE
f664cc974a7a updated for version 7.0227
vimboss
parents: 714
diff changeset
5800 | IME_CMODE_FULLSHAPE),
f664cc974a7a updated for version 7.0227
vimboss
parents: 714
diff changeset
5801 dwSentenceSaved);
f664cc974a7a updated for version 7.0227
vimboss
parents: 714
diff changeset
5802 }
f664cc974a7a updated for version 7.0227
vimboss
parents: 714
diff changeset
5803 }
f664cc974a7a updated for version 7.0227
vimboss
parents: 714
diff changeset
5804 }
f664cc974a7a updated for version 7.0227
vimboss
parents: 714
diff changeset
5805
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
5806 pImmSetOpenStatus(hImc, active);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
5807 pImmReleaseContext(s_hwnd, hImc);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
5808 }
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
5809 }
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
5810 }
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
5811
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
5812 /*
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
5813 * Get IM status. When IM is on, return not 0. Else return 0.
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
5814 */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
5815 int
7823
bcef391c101c commit https://github.com/vim/vim/commit/68c2f638e65d914dc6e84eb7ce2624f08af525c0
Christian Brabandt <cb@256bit.org>
parents: 7807
diff changeset
5816 im_get_status(void)
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
5817 {
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
5818 int status = 0;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
5819 HIMC hImc;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
5820
18742
e9b2ade1adbd patch 8.1.2361: MS-Windows: test failures related to VIMDLL
Bram Moolenaar <Bram@vim.org>
parents: 18662
diff changeset
5821 # ifdef VIMDLL
e9b2ade1adbd patch 8.1.2361: MS-Windows: test failures related to VIMDLL
Bram Moolenaar <Bram@vim.org>
parents: 18662
diff changeset
5822 if (!gui.in_use && !gui.starting)
e9b2ade1adbd patch 8.1.2361: MS-Windows: test failures related to VIMDLL
Bram Moolenaar <Bram@vim.org>
parents: 18662
diff changeset
5823 return mbyte_im_get_status();
e9b2ade1adbd patch 8.1.2361: MS-Windows: test failures related to VIMDLL
Bram Moolenaar <Bram@vim.org>
parents: 18662
diff changeset
5824 # endif
e9b2ade1adbd patch 8.1.2361: MS-Windows: test failures related to VIMDLL
Bram Moolenaar <Bram@vim.org>
parents: 18662
diff changeset
5825
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
5826 if (pImmGetContext && (hImc = pImmGetContext(s_hwnd)) != (HIMC)0)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
5827 {
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
5828 status = pImmGetOpenStatus(hImc) ? 1 : 0;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
5829 pImmReleaseContext(s_hwnd, hImc);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
5830 }
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
5831 return status;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
5832 }
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
5833
18788
e1f4e9d78a6a patch 8.1.2383: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents: 18773
diff changeset
5834 #endif // FEAT_MBYTE_IME
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
5835
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
5836
26
404aac550f35 updated for version 7.0017
vimboss
parents: 9
diff changeset
5837 /*
786
8f6a426bc1e0 updated for version 7.0229
vimboss
parents: 782
diff changeset
5838 * Convert latin9 text "text[len]" to ucs-2 in "unicodebuf".
26
404aac550f35 updated for version 7.0017
vimboss
parents: 9
diff changeset
5839 */
404aac550f35 updated for version 7.0017
vimboss
parents: 9
diff changeset
5840 static void
404aac550f35 updated for version 7.0017
vimboss
parents: 9
diff changeset
5841 latin9_to_ucs(char_u *text, int len, WCHAR *unicodebuf)
404aac550f35 updated for version 7.0017
vimboss
parents: 9
diff changeset
5842 {
404aac550f35 updated for version 7.0017
vimboss
parents: 9
diff changeset
5843 int c;
404aac550f35 updated for version 7.0017
vimboss
parents: 9
diff changeset
5844
777
f664cc974a7a updated for version 7.0227
vimboss
parents: 714
diff changeset
5845 while (--len >= 0)
26
404aac550f35 updated for version 7.0017
vimboss
parents: 9
diff changeset
5846 {
404aac550f35 updated for version 7.0017
vimboss
parents: 9
diff changeset
5847 c = *text++;
404aac550f35 updated for version 7.0017
vimboss
parents: 9
diff changeset
5848 switch (c)
404aac550f35 updated for version 7.0017
vimboss
parents: 9
diff changeset
5849 {
18788
e1f4e9d78a6a patch 8.1.2383: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents: 18773
diff changeset
5850 case 0xa4: c = 0x20ac; break; // euro
e1f4e9d78a6a patch 8.1.2383: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents: 18773
diff changeset
5851 case 0xa6: c = 0x0160; break; // S hat
e1f4e9d78a6a patch 8.1.2383: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents: 18773
diff changeset
5852 case 0xa8: c = 0x0161; break; // S -hat
e1f4e9d78a6a patch 8.1.2383: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents: 18773
diff changeset
5853 case 0xb4: c = 0x017d; break; // Z hat
e1f4e9d78a6a patch 8.1.2383: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents: 18773
diff changeset
5854 case 0xb8: c = 0x017e; break; // Z -hat
e1f4e9d78a6a patch 8.1.2383: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents: 18773
diff changeset
5855 case 0xbc: c = 0x0152; break; // OE
e1f4e9d78a6a patch 8.1.2383: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents: 18773
diff changeset
5856 case 0xbd: c = 0x0153; break; // oe
e1f4e9d78a6a patch 8.1.2383: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents: 18773
diff changeset
5857 case 0xbe: c = 0x0178; break; // Y
26
404aac550f35 updated for version 7.0017
vimboss
parents: 9
diff changeset
5858 }
404aac550f35 updated for version 7.0017
vimboss
parents: 9
diff changeset
5859 *unicodebuf++ = c;
404aac550f35 updated for version 7.0017
vimboss
parents: 9
diff changeset
5860 }
404aac550f35 updated for version 7.0017
vimboss
parents: 9
diff changeset
5861 }
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
5862
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
5863 #ifdef FEAT_RIGHTLEFT
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
5864 /*
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
5865 * What is this for? In the case where you are using Win98 or Win2K or later,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
5866 * and you are using a Hebrew font (or Arabic!), Windows does you a favor and
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
5867 * reverses the string sent to the TextOut... family. This sucks, because we
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
5868 * go to a lot of effort to do the right thing, and there doesn't seem to be a
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
5869 * way to tell Windblows not to do this!
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
5870 *
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
5871 * The short of it is that this 'RevOut' only gets called if you are running
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
5872 * one of the new, "improved" MS OSes, and only if you are running in
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
5873 * 'rightleft' mode. It makes display take *slightly* longer, but not
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
5874 * noticeably so.
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
5875 */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
5876 static void
27455
6045bf58926d patch 8.2.4256: MS-Windows: compiler warnings when compiled with /W4
Bram Moolenaar <Bram@vim.org>
parents: 27370
diff changeset
5877 RevOut( HDC hdc,
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
5878 int col,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
5879 int row,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
5880 UINT foptions,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
5881 CONST RECT *pcliprect,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
5882 LPCTSTR text,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
5883 UINT len,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
5884 CONST INT *padding)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
5885 {
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
5886 int ix;
10264
c036c0f636d5 commit https://github.com/vim/vim/commit/cea912af725c54f4727a0565e31661f6b29c6bb1
Christian Brabandt <cb@256bit.org>
parents: 10042
diff changeset
5887
c036c0f636d5 commit https://github.com/vim/vim/commit/cea912af725c54f4727a0565e31661f6b29c6bb1
Christian Brabandt <cb@256bit.org>
parents: 10042
diff changeset
5888 for (ix = 0; ix < (int)len; ++ix)
27455
6045bf58926d patch 8.2.4256: MS-Windows: compiler warnings when compiled with /W4
Bram Moolenaar <Bram@vim.org>
parents: 27370
diff changeset
5889 ExtTextOut(hdc, col + TEXT_X(ix), row, foptions,
10264
c036c0f636d5 commit https://github.com/vim/vim/commit/cea912af725c54f4727a0565e31661f6b29c6bb1
Christian Brabandt <cb@256bit.org>
parents: 10042
diff changeset
5890 pcliprect, text + ix, 1, padding);
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
5891 }
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
5892 #endif
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
5893
12986
18e6f4addce9 patch 8.0.1369: MS-Windows: drawing underline slow, mFallbackDC not updated
Christian Brabandt <cb@256bit.org>
parents: 12950
diff changeset
5894 static void
18e6f4addce9 patch 8.0.1369: MS-Windows: drawing underline slow, mFallbackDC not updated
Christian Brabandt <cb@256bit.org>
parents: 12950
diff changeset
5895 draw_line(
18e6f4addce9 patch 8.0.1369: MS-Windows: drawing underline slow, mFallbackDC not updated
Christian Brabandt <cb@256bit.org>
parents: 12950
diff changeset
5896 int x1,
15277
71b762af30c3 patch 8.1.0647: MS-Windows: balloon_show() does not handle wide characters
Bram Moolenaar <Bram@vim.org>
parents: 15034
diff changeset
5897 int y1,
71b762af30c3 patch 8.1.0647: MS-Windows: balloon_show() does not handle wide characters
Bram Moolenaar <Bram@vim.org>
parents: 15034
diff changeset
5898 int x2,
71b762af30c3 patch 8.1.0647: MS-Windows: balloon_show() does not handle wide characters
Bram Moolenaar <Bram@vim.org>
parents: 15034
diff changeset
5899 int y2,
12986
18e6f4addce9 patch 8.0.1369: MS-Windows: drawing underline slow, mFallbackDC not updated
Christian Brabandt <cb@256bit.org>
parents: 12950
diff changeset
5900 COLORREF color)
18e6f4addce9 patch 8.0.1369: MS-Windows: drawing underline slow, mFallbackDC not updated
Christian Brabandt <cb@256bit.org>
parents: 12950
diff changeset
5901 {
18e6f4addce9 patch 8.0.1369: MS-Windows: drawing underline slow, mFallbackDC not updated
Christian Brabandt <cb@256bit.org>
parents: 12950
diff changeset
5902 #if defined(FEAT_DIRECTX)
18e6f4addce9 patch 8.0.1369: MS-Windows: drawing underline slow, mFallbackDC not updated
Christian Brabandt <cb@256bit.org>
parents: 12950
diff changeset
5903 if (IS_ENABLE_DIRECTX())
18e6f4addce9 patch 8.0.1369: MS-Windows: drawing underline slow, mFallbackDC not updated
Christian Brabandt <cb@256bit.org>
parents: 12950
diff changeset
5904 DWriteContext_DrawLine(s_dwc, x1, y1, x2, y2, color);
18e6f4addce9 patch 8.0.1369: MS-Windows: drawing underline slow, mFallbackDC not updated
Christian Brabandt <cb@256bit.org>
parents: 12950
diff changeset
5905 else
18e6f4addce9 patch 8.0.1369: MS-Windows: drawing underline slow, mFallbackDC not updated
Christian Brabandt <cb@256bit.org>
parents: 12950
diff changeset
5906 #endif
18e6f4addce9 patch 8.0.1369: MS-Windows: drawing underline slow, mFallbackDC not updated
Christian Brabandt <cb@256bit.org>
parents: 12950
diff changeset
5907 {
18e6f4addce9 patch 8.0.1369: MS-Windows: drawing underline slow, mFallbackDC not updated
Christian Brabandt <cb@256bit.org>
parents: 12950
diff changeset
5908 HPEN hpen = CreatePen(PS_SOLID, 1, color);
18e6f4addce9 patch 8.0.1369: MS-Windows: drawing underline slow, mFallbackDC not updated
Christian Brabandt <cb@256bit.org>
parents: 12950
diff changeset
5909 HPEN old_pen = SelectObject(s_hdc, hpen);
18e6f4addce9 patch 8.0.1369: MS-Windows: drawing underline slow, mFallbackDC not updated
Christian Brabandt <cb@256bit.org>
parents: 12950
diff changeset
5910 MoveToEx(s_hdc, x1, y1, NULL);
18788
e1f4e9d78a6a patch 8.1.2383: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents: 18773
diff changeset
5911 // Note: LineTo() excludes the last pixel in the line.
12986
18e6f4addce9 patch 8.0.1369: MS-Windows: drawing underline slow, mFallbackDC not updated
Christian Brabandt <cb@256bit.org>
parents: 12950
diff changeset
5912 LineTo(s_hdc, x2, y2);
18e6f4addce9 patch 8.0.1369: MS-Windows: drawing underline slow, mFallbackDC not updated
Christian Brabandt <cb@256bit.org>
parents: 12950
diff changeset
5913 DeleteObject(SelectObject(s_hdc, old_pen));
18e6f4addce9 patch 8.0.1369: MS-Windows: drawing underline slow, mFallbackDC not updated
Christian Brabandt <cb@256bit.org>
parents: 12950
diff changeset
5914 }
18e6f4addce9 patch 8.0.1369: MS-Windows: drawing underline slow, mFallbackDC not updated
Christian Brabandt <cb@256bit.org>
parents: 12950
diff changeset
5915 }
18e6f4addce9 patch 8.0.1369: MS-Windows: drawing underline slow, mFallbackDC not updated
Christian Brabandt <cb@256bit.org>
parents: 12950
diff changeset
5916
18e6f4addce9 patch 8.0.1369: MS-Windows: drawing underline slow, mFallbackDC not updated
Christian Brabandt <cb@256bit.org>
parents: 12950
diff changeset
5917 static void
18e6f4addce9 patch 8.0.1369: MS-Windows: drawing underline slow, mFallbackDC not updated
Christian Brabandt <cb@256bit.org>
parents: 12950
diff changeset
5918 set_pixel(
18e6f4addce9 patch 8.0.1369: MS-Windows: drawing underline slow, mFallbackDC not updated
Christian Brabandt <cb@256bit.org>
parents: 12950
diff changeset
5919 int x,
15277
71b762af30c3 patch 8.1.0647: MS-Windows: balloon_show() does not handle wide characters
Bram Moolenaar <Bram@vim.org>
parents: 15034
diff changeset
5920 int y,
12986
18e6f4addce9 patch 8.0.1369: MS-Windows: drawing underline slow, mFallbackDC not updated
Christian Brabandt <cb@256bit.org>
parents: 12950
diff changeset
5921 COLORREF color)
18e6f4addce9 patch 8.0.1369: MS-Windows: drawing underline slow, mFallbackDC not updated
Christian Brabandt <cb@256bit.org>
parents: 12950
diff changeset
5922 {
18e6f4addce9 patch 8.0.1369: MS-Windows: drawing underline slow, mFallbackDC not updated
Christian Brabandt <cb@256bit.org>
parents: 12950
diff changeset
5923 #if defined(FEAT_DIRECTX)
18e6f4addce9 patch 8.0.1369: MS-Windows: drawing underline slow, mFallbackDC not updated
Christian Brabandt <cb@256bit.org>
parents: 12950
diff changeset
5924 if (IS_ENABLE_DIRECTX())
18e6f4addce9 patch 8.0.1369: MS-Windows: drawing underline slow, mFallbackDC not updated
Christian Brabandt <cb@256bit.org>
parents: 12950
diff changeset
5925 DWriteContext_SetPixel(s_dwc, x, y, color);
18e6f4addce9 patch 8.0.1369: MS-Windows: drawing underline slow, mFallbackDC not updated
Christian Brabandt <cb@256bit.org>
parents: 12950
diff changeset
5926 else
18e6f4addce9 patch 8.0.1369: MS-Windows: drawing underline slow, mFallbackDC not updated
Christian Brabandt <cb@256bit.org>
parents: 12950
diff changeset
5927 #endif
18e6f4addce9 patch 8.0.1369: MS-Windows: drawing underline slow, mFallbackDC not updated
Christian Brabandt <cb@256bit.org>
parents: 12950
diff changeset
5928 SetPixel(s_hdc, x, y, color);
18e6f4addce9 patch 8.0.1369: MS-Windows: drawing underline slow, mFallbackDC not updated
Christian Brabandt <cb@256bit.org>
parents: 12950
diff changeset
5929 }
18e6f4addce9 patch 8.0.1369: MS-Windows: drawing underline slow, mFallbackDC not updated
Christian Brabandt <cb@256bit.org>
parents: 12950
diff changeset
5930
18e6f4addce9 patch 8.0.1369: MS-Windows: drawing underline slow, mFallbackDC not updated
Christian Brabandt <cb@256bit.org>
parents: 12950
diff changeset
5931 static void
18e6f4addce9 patch 8.0.1369: MS-Windows: drawing underline slow, mFallbackDC not updated
Christian Brabandt <cb@256bit.org>
parents: 12950
diff changeset
5932 fill_rect(
18e6f4addce9 patch 8.0.1369: MS-Windows: drawing underline slow, mFallbackDC not updated
Christian Brabandt <cb@256bit.org>
parents: 12950
diff changeset
5933 const RECT *rcp,
15277
71b762af30c3 patch 8.1.0647: MS-Windows: balloon_show() does not handle wide characters
Bram Moolenaar <Bram@vim.org>
parents: 15034
diff changeset
5934 HBRUSH hbr,
12986
18e6f4addce9 patch 8.0.1369: MS-Windows: drawing underline slow, mFallbackDC not updated
Christian Brabandt <cb@256bit.org>
parents: 12950
diff changeset
5935 COLORREF color)
18e6f4addce9 patch 8.0.1369: MS-Windows: drawing underline slow, mFallbackDC not updated
Christian Brabandt <cb@256bit.org>
parents: 12950
diff changeset
5936 {
18e6f4addce9 patch 8.0.1369: MS-Windows: drawing underline slow, mFallbackDC not updated
Christian Brabandt <cb@256bit.org>
parents: 12950
diff changeset
5937 #if defined(FEAT_DIRECTX)
18e6f4addce9 patch 8.0.1369: MS-Windows: drawing underline slow, mFallbackDC not updated
Christian Brabandt <cb@256bit.org>
parents: 12950
diff changeset
5938 if (IS_ENABLE_DIRECTX())
18e6f4addce9 patch 8.0.1369: MS-Windows: drawing underline slow, mFallbackDC not updated
Christian Brabandt <cb@256bit.org>
parents: 12950
diff changeset
5939 DWriteContext_FillRect(s_dwc, rcp, color);
18e6f4addce9 patch 8.0.1369: MS-Windows: drawing underline slow, mFallbackDC not updated
Christian Brabandt <cb@256bit.org>
parents: 12950
diff changeset
5940 else
18e6f4addce9 patch 8.0.1369: MS-Windows: drawing underline slow, mFallbackDC not updated
Christian Brabandt <cb@256bit.org>
parents: 12950
diff changeset
5941 #endif
18e6f4addce9 patch 8.0.1369: MS-Windows: drawing underline slow, mFallbackDC not updated
Christian Brabandt <cb@256bit.org>
parents: 12950
diff changeset
5942 {
18e6f4addce9 patch 8.0.1369: MS-Windows: drawing underline slow, mFallbackDC not updated
Christian Brabandt <cb@256bit.org>
parents: 12950
diff changeset
5943 HBRUSH hbr2;
18e6f4addce9 patch 8.0.1369: MS-Windows: drawing underline slow, mFallbackDC not updated
Christian Brabandt <cb@256bit.org>
parents: 12950
diff changeset
5944
18e6f4addce9 patch 8.0.1369: MS-Windows: drawing underline slow, mFallbackDC not updated
Christian Brabandt <cb@256bit.org>
parents: 12950
diff changeset
5945 if (hbr == NULL)
18e6f4addce9 patch 8.0.1369: MS-Windows: drawing underline slow, mFallbackDC not updated
Christian Brabandt <cb@256bit.org>
parents: 12950
diff changeset
5946 hbr2 = CreateSolidBrush(color);
18e6f4addce9 patch 8.0.1369: MS-Windows: drawing underline slow, mFallbackDC not updated
Christian Brabandt <cb@256bit.org>
parents: 12950
diff changeset
5947 else
18e6f4addce9 patch 8.0.1369: MS-Windows: drawing underline slow, mFallbackDC not updated
Christian Brabandt <cb@256bit.org>
parents: 12950
diff changeset
5948 hbr2 = hbr;
18e6f4addce9 patch 8.0.1369: MS-Windows: drawing underline slow, mFallbackDC not updated
Christian Brabandt <cb@256bit.org>
parents: 12950
diff changeset
5949 FillRect(s_hdc, rcp, hbr2);
18e6f4addce9 patch 8.0.1369: MS-Windows: drawing underline slow, mFallbackDC not updated
Christian Brabandt <cb@256bit.org>
parents: 12950
diff changeset
5950 if (hbr == NULL)
18e6f4addce9 patch 8.0.1369: MS-Windows: drawing underline slow, mFallbackDC not updated
Christian Brabandt <cb@256bit.org>
parents: 12950
diff changeset
5951 DeleteBrush(hbr2);
18e6f4addce9 patch 8.0.1369: MS-Windows: drawing underline slow, mFallbackDC not updated
Christian Brabandt <cb@256bit.org>
parents: 12950
diff changeset
5952 }
18e6f4addce9 patch 8.0.1369: MS-Windows: drawing underline slow, mFallbackDC not updated
Christian Brabandt <cb@256bit.org>
parents: 12950
diff changeset
5953 }
18e6f4addce9 patch 8.0.1369: MS-Windows: drawing underline slow, mFallbackDC not updated
Christian Brabandt <cb@256bit.org>
parents: 12950
diff changeset
5954
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
5955 void
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
5956 gui_mch_draw_string(
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
5957 int row,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
5958 int col,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
5959 char_u *text,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
5960 int len,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
5961 int flags)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
5962 {
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
5963 static int *padding = NULL;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
5964 static int pad_size = 0;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
5965 const RECT *pcliprect = NULL;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
5966 UINT foptions = 0;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
5967 static WCHAR *unicodebuf = NULL;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
5968 static int *unicodepdy = NULL;
236
4707450c2b33 updated for version 7.0066
vimboss
parents: 205
diff changeset
5969 static int unibuflen = 0;
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
5970 int n = 0;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
5971 int y;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
5972
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
5973 /*
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
5974 * Italic and bold text seems to have an extra row of pixels at the bottom
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
5975 * (below where the bottom of the character should be). If we draw the
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
5976 * characters with a solid background, the top row of pixels in the
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
5977 * character below will be overwritten. We can fix this by filling in the
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
5978 * background ourselves, to the correct character proportions, and then
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
5979 * writing the character in transparent mode. Still have a problem when
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
5980 * the character is "_", which gets written on to the character below.
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
5981 * New fix: set gui.char_ascent to -1. This shifts all characters up one
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
5982 * pixel in their slots, which fixes the problem with the bottom row of
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
5983 * pixels. We still need this code because otherwise the top row of pixels
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
5984 * becomes a problem. - webb.
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
5985 */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
5986 static HBRUSH hbr_cache[2] = {NULL, NULL};
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
5987 static guicolor_T brush_color[2] = {INVALCOLOR, INVALCOLOR};
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
5988 static int brush_lru = 0;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
5989 HBRUSH hbr;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
5990 RECT rc;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
5991
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
5992 if (!(flags & DRAW_TRANSP))
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
5993 {
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
5994 /*
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
5995 * Clear background first.
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
5996 * Note: FillRect() excludes right and bottom of rectangle.
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
5997 */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
5998 rc.left = FILL_X(col);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
5999 rc.top = FILL_Y(row);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
6000 if (has_mbyte)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
6001 {
18788
e1f4e9d78a6a patch 8.1.2383: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents: 18773
diff changeset
6002 // Compute the length in display cells.
2338
da6ec32d8d8f Added strwidth() and strchars() functions.
Bram Moolenaar <bram@vim.org>
parents: 2311
diff changeset
6003 rc.right = FILL_X(col + mb_string2cells(text, len));
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
6004 }
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
6005 else
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
6006 rc.right = FILL_X(col + len);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
6007 rc.bottom = FILL_Y(row + 1);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
6008
18788
e1f4e9d78a6a patch 8.1.2383: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents: 18773
diff changeset
6009 // Cache the created brush, that saves a lot of time. We need two:
e1f4e9d78a6a patch 8.1.2383: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents: 18773
diff changeset
6010 // one for cursor background and one for the normal background.
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
6011 if (gui.currBgColor == brush_color[0])
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
6012 {
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
6013 hbr = hbr_cache[0];
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
6014 brush_lru = 1;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
6015 }
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
6016 else if (gui.currBgColor == brush_color[1])
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
6017 {
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
6018 hbr = hbr_cache[1];
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
6019 brush_lru = 0;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
6020 }
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
6021 else
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
6022 {
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
6023 if (hbr_cache[brush_lru] != NULL)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
6024 DeleteBrush(hbr_cache[brush_lru]);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
6025 hbr_cache[brush_lru] = CreateSolidBrush(gui.currBgColor);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
6026 brush_color[brush_lru] = gui.currBgColor;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
6027 hbr = hbr_cache[brush_lru];
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
6028 brush_lru = !brush_lru;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
6029 }
12934
2ebc3df65ca2 patch 8.0.1343: MS-Windows: does not show colored emojis
Christian Brabandt <cb@256bit.org>
parents: 12924
diff changeset
6030
12986
18e6f4addce9 patch 8.0.1369: MS-Windows: drawing underline slow, mFallbackDC not updated
Christian Brabandt <cb@256bit.org>
parents: 12950
diff changeset
6031 fill_rect(&rc, hbr, gui.currBgColor);
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
6032
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
6033 SetBkMode(s_hdc, TRANSPARENT);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
6034
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
6035 /*
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
6036 * When drawing block cursor, prevent inverted character spilling
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
6037 * over character cell (can happen with bold/italic)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
6038 */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
6039 if (flags & DRAW_CURSOR)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
6040 {
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
6041 pcliprect = &rc;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
6042 foptions = ETO_CLIPPED;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
6043 }
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
6044 }
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
6045 SetTextColor(s_hdc, gui.currFgColor);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
6046 SelectFont(s_hdc, gui.currFont);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
6047
6110
1bff71d20262 updated for version 7.4.393
Bram Moolenaar <bram@vim.org>
parents: 5284
diff changeset
6048 #ifdef FEAT_DIRECTX
1bff71d20262 updated for version 7.4.393
Bram Moolenaar <bram@vim.org>
parents: 5284
diff changeset
6049 if (IS_ENABLE_DIRECTX())
12934
2ebc3df65ca2 patch 8.0.1343: MS-Windows: does not show colored emojis
Christian Brabandt <cb@256bit.org>
parents: 12924
diff changeset
6050 DWriteContext_SetFont(s_dwc, (HFONT)gui.currFont);
6110
1bff71d20262 updated for version 7.4.393
Bram Moolenaar <bram@vim.org>
parents: 5284
diff changeset
6051 #endif
1bff71d20262 updated for version 7.4.393
Bram Moolenaar <bram@vim.org>
parents: 5284
diff changeset
6052
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
6053 if (pad_size != Columns || padding == NULL || padding[0] != gui.char_width)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
6054 {
27455
6045bf58926d patch 8.2.4256: MS-Windows: compiler warnings when compiled with /W4
Bram Moolenaar <Bram@vim.org>
parents: 27370
diff changeset
6055 int i;
6045bf58926d patch 8.2.4256: MS-Windows: compiler warnings when compiled with /W4
Bram Moolenaar <Bram@vim.org>
parents: 27370
diff changeset
6056
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
6057 vim_free(padding);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
6058 pad_size = Columns;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
6059
18788
e1f4e9d78a6a patch 8.1.2383: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents: 18773
diff changeset
6060 // Don't give an out-of-memory message here, it would call us
e1f4e9d78a6a patch 8.1.2383: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents: 18773
diff changeset
6061 // recursively.
16827
ce562b9f702e patch 8.1.1415: build error in MS-Windows GUI
Bram Moolenaar <Bram@vim.org>
parents: 16825
diff changeset
6062 padding = LALLOC_MULT(int, pad_size);
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
6063 if (padding != NULL)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
6064 for (i = 0; i < pad_size; i++)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
6065 padding[i] = gui.char_width;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
6066 }
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
6067
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
6068 /*
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
6069 * We have to provide the padding argument because italic and bold versions
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
6070 * of fixed-width fonts are often one pixel or so wider than their normal
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
6071 * versions.
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
6072 * No check for DRAW_BOLD, Windows will have done it already.
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
6073 */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
6074
18788
e1f4e9d78a6a patch 8.1.2383: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents: 18773
diff changeset
6075 // Check if there are any UTF-8 characters. If not, use normal text
e1f4e9d78a6a patch 8.1.2383: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents: 18773
diff changeset
6076 // output to speed up output.
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
6077 if (enc_utf8)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
6078 for (n = 0; n < len; ++n)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
6079 if (text[n] >= 0x80)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
6080 break;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
6081
15597
536dd2bc5ac9 patch 8.1.0806: too many #ifdefs
Bram Moolenaar <Bram@vim.org>
parents: 15549
diff changeset
6082 #if defined(FEAT_DIRECTX)
18788
e1f4e9d78a6a patch 8.1.2383: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents: 18773
diff changeset
6083 // Quick hack to enable DirectWrite. To use DirectWrite (antialias), it is
e1f4e9d78a6a patch 8.1.2383: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents: 18773
diff changeset
6084 // required that unicode drawing routine, currently. So this forces it
e1f4e9d78a6a patch 8.1.2383: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents: 18773
diff changeset
6085 // enabled.
13028
cfce9ac1d1e8 patch 8.0.1390: DirectX scrolling can be slow, vertical positioning is off
Christian Brabandt <cb@256bit.org>
parents: 12994
diff changeset
6086 if (IS_ENABLE_DIRECTX())
18788
e1f4e9d78a6a patch 8.1.2383: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents: 18773
diff changeset
6087 n = 0; // Keep n < len, to enter block for unicode.
e1f4e9d78a6a patch 8.1.2383: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents: 18773
diff changeset
6088 #endif
e1f4e9d78a6a patch 8.1.2383: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents: 18773
diff changeset
6089
e1f4e9d78a6a patch 8.1.2383: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents: 18773
diff changeset
6090 // Check if the Unicode buffer exists and is big enough. Create it
e1f4e9d78a6a patch 8.1.2383: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents: 18773
diff changeset
6091 // with the same length as the multi-byte string, the number of wide
e1f4e9d78a6a patch 8.1.2383: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents: 18773
diff changeset
6092 // characters is always equal or smaller.
26
404aac550f35 updated for version 7.0017
vimboss
parents: 9
diff changeset
6093 if ((enc_utf8
404aac550f35 updated for version 7.0017
vimboss
parents: 9
diff changeset
6094 || (enc_codepage > 0 && (int)GetACP() != enc_codepage)
404aac550f35 updated for version 7.0017
vimboss
parents: 9
diff changeset
6095 || enc_latin9)
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
6096 && (unicodebuf == NULL || len > unibuflen))
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
6097 {
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
6098 vim_free(unicodebuf);
16825
ce04ebdf26b8 patch 8.1.1414: alloc() returning "char_u *" causes a lot of type casts
Bram Moolenaar <Bram@vim.org>
parents: 16768
diff changeset
6099 unicodebuf = LALLOC_MULT(WCHAR, len);
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
6100
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
6101 vim_free(unicodepdy);
16825
ce04ebdf26b8 patch 8.1.1414: alloc() returning "char_u *" causes a lot of type casts
Bram Moolenaar <Bram@vim.org>
parents: 16768
diff changeset
6102 unicodepdy = LALLOC_MULT(int, len);
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
6103
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
6104 unibuflen = len;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
6105 }
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
6106
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
6107 if (enc_utf8 && n < len && unicodebuf != NULL)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
6108 {
18788
e1f4e9d78a6a patch 8.1.2383: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents: 18773
diff changeset
6109 // Output UTF-8 characters. Composing characters should be
e1f4e9d78a6a patch 8.1.2383: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents: 18773
diff changeset
6110 // handled here.
777
f664cc974a7a updated for version 7.0227
vimboss
parents: 714
diff changeset
6111 int i;
18788
e1f4e9d78a6a patch 8.1.2383: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents: 18773
diff changeset
6112 int wlen; // string length in words
e1f4e9d78a6a patch 8.1.2383: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents: 18773
diff changeset
6113 int clen; // string length in characters
e1f4e9d78a6a patch 8.1.2383: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents: 18773
diff changeset
6114 int cells; // cell width of string up to composing char
e1f4e9d78a6a patch 8.1.2383: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents: 18773
diff changeset
6115 int cw; // width of current cell
714
0f9f4761ad9c updated for version 7.0216
vimboss
parents: 636
diff changeset
6116 int c;
777
f664cc974a7a updated for version 7.0227
vimboss
parents: 714
diff changeset
6117
782
d20041a02ee5 updated for version 7.0228
vimboss
parents: 777
diff changeset
6118 wlen = 0;
777
f664cc974a7a updated for version 7.0227
vimboss
parents: 714
diff changeset
6119 clen = 0;
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
6120 cells = 0;
777
f664cc974a7a updated for version 7.0227
vimboss
parents: 714
diff changeset
6121 for (i = 0; i < len; )
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
6122 {
714
0f9f4761ad9c updated for version 7.0216
vimboss
parents: 636
diff changeset
6123 c = utf_ptr2char(text + i);
0f9f4761ad9c updated for version 7.0216
vimboss
parents: 636
diff changeset
6124 if (c >= 0x10000)
0f9f4761ad9c updated for version 7.0216
vimboss
parents: 636
diff changeset
6125 {
18788
e1f4e9d78a6a patch 8.1.2383: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents: 18773
diff changeset
6126 // Turn into UTF-16 encoding.
777
f664cc974a7a updated for version 7.0227
vimboss
parents: 714
diff changeset
6127 unicodebuf[wlen++] = ((c - 0x10000) >> 10) + 0xD800;
f664cc974a7a updated for version 7.0227
vimboss
parents: 714
diff changeset
6128 unicodebuf[wlen++] = ((c - 0x10000) & 0x3ff) + 0xDC00;
714
0f9f4761ad9c updated for version 7.0216
vimboss
parents: 636
diff changeset
6129 }
0f9f4761ad9c updated for version 7.0216
vimboss
parents: 636
diff changeset
6130 else
0f9f4761ad9c updated for version 7.0216
vimboss
parents: 636
diff changeset
6131 {
777
f664cc974a7a updated for version 7.0227
vimboss
parents: 714
diff changeset
6132 unicodebuf[wlen++] = c;
714
0f9f4761ad9c updated for version 7.0216
vimboss
parents: 636
diff changeset
6133 }
12712
25f7d8ee04c7 patch 8.0.1234: MS-Windows: composing chars are not shown properly
Christian Brabandt <cb@256bit.org>
parents: 12668
diff changeset
6134
25f7d8ee04c7 patch 8.0.1234: MS-Windows: composing chars are not shown properly
Christian Brabandt <cb@256bit.org>
parents: 12668
diff changeset
6135 if (utf_iscomposing(c))
25f7d8ee04c7 patch 8.0.1234: MS-Windows: composing chars are not shown properly
Christian Brabandt <cb@256bit.org>
parents: 12668
diff changeset
6136 cw = 0;
25f7d8ee04c7 patch 8.0.1234: MS-Windows: composing chars are not shown properly
Christian Brabandt <cb@256bit.org>
parents: 12668
diff changeset
6137 else
25f7d8ee04c7 patch 8.0.1234: MS-Windows: composing chars are not shown properly
Christian Brabandt <cb@256bit.org>
parents: 12668
diff changeset
6138 {
25f7d8ee04c7 patch 8.0.1234: MS-Windows: composing chars are not shown properly
Christian Brabandt <cb@256bit.org>
parents: 12668
diff changeset
6139 cw = utf_char2cells(c);
18788
e1f4e9d78a6a patch 8.1.2383: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents: 18773
diff changeset
6140 if (cw > 2) // don't use 4 for unprintable char
12712
25f7d8ee04c7 patch 8.0.1234: MS-Windows: composing chars are not shown properly
Christian Brabandt <cb@256bit.org>
parents: 12668
diff changeset
6141 cw = 1;
25f7d8ee04c7 patch 8.0.1234: MS-Windows: composing chars are not shown properly
Christian Brabandt <cb@256bit.org>
parents: 12668
diff changeset
6142 }
25f7d8ee04c7 patch 8.0.1234: MS-Windows: composing chars are not shown properly
Christian Brabandt <cb@256bit.org>
parents: 12668
diff changeset
6143
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
6144 if (unicodepdy != NULL)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
6145 {
18788
e1f4e9d78a6a patch 8.1.2383: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents: 18773
diff changeset
6146 // Use unicodepdy to make characters fit as we expect, even
e1f4e9d78a6a patch 8.1.2383: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents: 18773
diff changeset
6147 // when the font uses different widths (e.g., bold character
e1f4e9d78a6a patch 8.1.2383: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents: 18773
diff changeset
6148 // is wider).
8273
0c3210caefa6 commit https://github.com/vim/vim/commit/d804fdf4c25435284333258856bc265f1ff10b09
Christian Brabandt <cb@256bit.org>
parents: 8222
diff changeset
6149 if (c >= 0x10000)
0c3210caefa6 commit https://github.com/vim/vim/commit/d804fdf4c25435284333258856bc265f1ff10b09
Christian Brabandt <cb@256bit.org>
parents: 8222
diff changeset
6150 {
0c3210caefa6 commit https://github.com/vim/vim/commit/d804fdf4c25435284333258856bc265f1ff10b09
Christian Brabandt <cb@256bit.org>
parents: 8222
diff changeset
6151 unicodepdy[wlen - 2] = cw * gui.char_width;
0c3210caefa6 commit https://github.com/vim/vim/commit/d804fdf4c25435284333258856bc265f1ff10b09
Christian Brabandt <cb@256bit.org>
parents: 8222
diff changeset
6152 unicodepdy[wlen - 1] = 0;
0c3210caefa6 commit https://github.com/vim/vim/commit/d804fdf4c25435284333258856bc265f1ff10b09
Christian Brabandt <cb@256bit.org>
parents: 8222
diff changeset
6153 }
0c3210caefa6 commit https://github.com/vim/vim/commit/d804fdf4c25435284333258856bc265f1ff10b09
Christian Brabandt <cb@256bit.org>
parents: 8222
diff changeset
6154 else
0c3210caefa6 commit https://github.com/vim/vim/commit/d804fdf4c25435284333258856bc265f1ff10b09
Christian Brabandt <cb@256bit.org>
parents: 8222
diff changeset
6155 unicodepdy[wlen - 1] = cw * gui.char_width;
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
6156 }
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
6157 cells += cw;
12712
25f7d8ee04c7 patch 8.0.1234: MS-Windows: composing chars are not shown properly
Christian Brabandt <cb@256bit.org>
parents: 12668
diff changeset
6158 i += utf_ptr2len_len(text + i, len - i);
777
f664cc974a7a updated for version 7.0227
vimboss
parents: 714
diff changeset
6159 ++clen;
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
6160 }
15597
536dd2bc5ac9 patch 8.1.0806: too many #ifdefs
Bram Moolenaar <Bram@vim.org>
parents: 15549
diff changeset
6161 #if defined(FEAT_DIRECTX)
12934
2ebc3df65ca2 patch 8.0.1343: MS-Windows: does not show colored emojis
Christian Brabandt <cb@256bit.org>
parents: 12924
diff changeset
6162 if (IS_ENABLE_DIRECTX())
6110
1bff71d20262 updated for version 7.4.393
Bram Moolenaar <bram@vim.org>
parents: 5284
diff changeset
6163 {
18788
e1f4e9d78a6a patch 8.1.2383: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents: 18773
diff changeset
6164 // Add one to "cells" for italics.
12934
2ebc3df65ca2 patch 8.0.1343: MS-Windows: does not show colored emojis
Christian Brabandt <cb@256bit.org>
parents: 12924
diff changeset
6165 DWriteContext_DrawText(s_dwc, unicodebuf, wlen,
16048
728bef04b0d4 patch 8.1.1029: DirectWrite doesn't take 'linespace' into account
Bram Moolenaar <Bram@vim.org>
parents: 15665
diff changeset
6166 TEXT_X(col), TEXT_Y(row),
728bef04b0d4 patch 8.1.1029: DirectWrite doesn't take 'linespace' into account
Bram Moolenaar <Bram@vim.org>
parents: 15665
diff changeset
6167 FILL_X(cells + 1), FILL_Y(1) - p_linespace,
12934
2ebc3df65ca2 patch 8.0.1343: MS-Windows: does not show colored emojis
Christian Brabandt <cb@256bit.org>
parents: 12924
diff changeset
6168 gui.char_width, gui.currFgColor,
2ebc3df65ca2 patch 8.0.1343: MS-Windows: does not show colored emojis
Christian Brabandt <cb@256bit.org>
parents: 12924
diff changeset
6169 foptions, pcliprect, unicodepdy);
6110
1bff71d20262 updated for version 7.4.393
Bram Moolenaar <bram@vim.org>
parents: 5284
diff changeset
6170 }
1bff71d20262 updated for version 7.4.393
Bram Moolenaar <bram@vim.org>
parents: 5284
diff changeset
6171 else
15597
536dd2bc5ac9 patch 8.1.0806: too many #ifdefs
Bram Moolenaar <Bram@vim.org>
parents: 15549
diff changeset
6172 #endif
6110
1bff71d20262 updated for version 7.4.393
Bram Moolenaar <bram@vim.org>
parents: 5284
diff changeset
6173 ExtTextOutW(s_hdc, TEXT_X(col), TEXT_Y(row),
1bff71d20262 updated for version 7.4.393
Bram Moolenaar <bram@vim.org>
parents: 5284
diff changeset
6174 foptions, pcliprect, unicodebuf, wlen, unicodepdy);
18788
e1f4e9d78a6a patch 8.1.2383: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents: 18773
diff changeset
6175 len = cells; // used for underlining
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
6176 }
26
404aac550f35 updated for version 7.0017
vimboss
parents: 9
diff changeset
6177 else if ((enc_codepage > 0 && (int)GetACP() != enc_codepage) || enc_latin9)
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
6178 {
18788
e1f4e9d78a6a patch 8.1.2383: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents: 18773
diff changeset
6179 // If we want to display codepage data, and the current CP is not the
e1f4e9d78a6a patch 8.1.2383: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents: 18773
diff changeset
6180 // ANSI one, we need to go via Unicode.
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
6181 if (unicodebuf != NULL)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
6182 {
26
404aac550f35 updated for version 7.0017
vimboss
parents: 9
diff changeset
6183 if (enc_latin9)
404aac550f35 updated for version 7.0017
vimboss
parents: 9
diff changeset
6184 latin9_to_ucs(text, len, unicodebuf);
404aac550f35 updated for version 7.0017
vimboss
parents: 9
diff changeset
6185 else
404aac550f35 updated for version 7.0017
vimboss
parents: 9
diff changeset
6186 len = MultiByteToWideChar(enc_codepage,
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
6187 MB_PRECOMPOSED,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
6188 (char *)text, len,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
6189 (LPWSTR)unicodebuf, unibuflen);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
6190 if (len != 0)
179
7fd70926e2e1 updated for version 7.0055
vimboss
parents: 170
diff changeset
6191 {
18788
e1f4e9d78a6a patch 8.1.2383: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents: 18773
diff changeset
6192 // Use unicodepdy to make characters fit as we expect, even
e1f4e9d78a6a patch 8.1.2383: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents: 18773
diff changeset
6193 // when the font uses different widths (e.g., bold character
e1f4e9d78a6a patch 8.1.2383: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents: 18773
diff changeset
6194 // is wider).
179
7fd70926e2e1 updated for version 7.0055
vimboss
parents: 170
diff changeset
6195 if (unicodepdy != NULL)
7fd70926e2e1 updated for version 7.0055
vimboss
parents: 170
diff changeset
6196 {
7fd70926e2e1 updated for version 7.0055
vimboss
parents: 170
diff changeset
6197 int i;
7fd70926e2e1 updated for version 7.0055
vimboss
parents: 170
diff changeset
6198 int cw;
7fd70926e2e1 updated for version 7.0055
vimboss
parents: 170
diff changeset
6199
7fd70926e2e1 updated for version 7.0055
vimboss
parents: 170
diff changeset
6200 for (i = 0; i < len; ++i)
7fd70926e2e1 updated for version 7.0055
vimboss
parents: 170
diff changeset
6201 {
7fd70926e2e1 updated for version 7.0055
vimboss
parents: 170
diff changeset
6202 cw = utf_char2cells(unicodebuf[i]);
7fd70926e2e1 updated for version 7.0055
vimboss
parents: 170
diff changeset
6203 if (cw > 2)
7fd70926e2e1 updated for version 7.0055
vimboss
parents: 170
diff changeset
6204 cw = 1;
7fd70926e2e1 updated for version 7.0055
vimboss
parents: 170
diff changeset
6205 unicodepdy[i] = cw * gui.char_width;
7fd70926e2e1 updated for version 7.0055
vimboss
parents: 170
diff changeset
6206 }
7fd70926e2e1 updated for version 7.0055
vimboss
parents: 170
diff changeset
6207 }
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
6208 ExtTextOutW(s_hdc, TEXT_X(col), TEXT_Y(row),
179
7fd70926e2e1 updated for version 7.0055
vimboss
parents: 170
diff changeset
6209 foptions, pcliprect, unicodebuf, len, unicodepdy);
7fd70926e2e1 updated for version 7.0055
vimboss
parents: 170
diff changeset
6210 }
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
6211 }
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
6212 }
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
6213 else
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
6214 {
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
6215 #ifdef FEAT_RIGHTLEFT
18788
e1f4e9d78a6a patch 8.1.2383: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents: 18773
diff changeset
6216 // Windows will mess up RL text, so we have to draw it character by
e1f4e9d78a6a patch 8.1.2383: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents: 18773
diff changeset
6217 // character. Only do this if RL is on, since it's slow.
6226
2fd96725b063 updated for version 7.4.448
Bram Moolenaar <bram@vim.org>
parents: 6112
diff changeset
6218 if (curwin->w_p_rl)
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
6219 RevOut(s_hdc, TEXT_X(col), TEXT_Y(row),
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
6220 foptions, pcliprect, (char *)text, len, padding);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
6221 else
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
6222 #endif
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
6223 ExtTextOut(s_hdc, TEXT_X(col), TEXT_Y(row),
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
6224 foptions, pcliprect, (char *)text, len, padding);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
6225 }
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
6226
18788
e1f4e9d78a6a patch 8.1.2383: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents: 18773
diff changeset
6227 // Underline
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
6228 if (flags & DRAW_UNDERL)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
6229 {
18788
e1f4e9d78a6a patch 8.1.2383: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents: 18773
diff changeset
6230 // When p_linespace is 0, overwrite the bottom row of pixels.
e1f4e9d78a6a patch 8.1.2383: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents: 18773
diff changeset
6231 // Otherwise put the line just below the character.
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
6232 y = FILL_Y(row + 1) - 1;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
6233 if (p_linespace > 1)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
6234 y -= p_linespace - 1;
12986
18e6f4addce9 patch 8.0.1369: MS-Windows: drawing underline slow, mFallbackDC not updated
Christian Brabandt <cb@256bit.org>
parents: 12950
diff changeset
6235 draw_line(FILL_X(col), y, FILL_X(col + len), y, gui.currFgColor);
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
6236 }
205
d292c40ca788 updated for version 7.0060
vimboss
parents: 189
diff changeset
6237
18788
e1f4e9d78a6a patch 8.1.2383: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents: 18773
diff changeset
6238 // Strikethrough
12317
2a8890b80923 patch 8.0.1038: strike-through text not supported
Christian Brabandt <cb@256bit.org>
parents: 12090
diff changeset
6239 if (flags & DRAW_STRIKE)
2a8890b80923 patch 8.0.1038: strike-through text not supported
Christian Brabandt <cb@256bit.org>
parents: 12090
diff changeset
6240 {
2a8890b80923 patch 8.0.1038: strike-through text not supported
Christian Brabandt <cb@256bit.org>
parents: 12090
diff changeset
6241 y = FILL_Y(row + 1) - gui.char_height/2;
12986
18e6f4addce9 patch 8.0.1369: MS-Windows: drawing underline slow, mFallbackDC not updated
Christian Brabandt <cb@256bit.org>
parents: 12950
diff changeset
6242 draw_line(FILL_X(col), y, FILL_X(col + len), y, gui.currSpColor);
12317
2a8890b80923 patch 8.0.1038: strike-through text not supported
Christian Brabandt <cb@256bit.org>
parents: 12090
diff changeset
6243 }
2a8890b80923 patch 8.0.1038: strike-through text not supported
Christian Brabandt <cb@256bit.org>
parents: 12090
diff changeset
6244
18788
e1f4e9d78a6a patch 8.1.2383: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents: 18773
diff changeset
6245 // Undercurl
205
d292c40ca788 updated for version 7.0060
vimboss
parents: 189
diff changeset
6246 if (flags & DRAW_UNDERC)
d292c40ca788 updated for version 7.0060
vimboss
parents: 189
diff changeset
6247 {
d292c40ca788 updated for version 7.0060
vimboss
parents: 189
diff changeset
6248 int x;
d292c40ca788 updated for version 7.0060
vimboss
parents: 189
diff changeset
6249 int offset;
323
03b3684919e3 updated for version 7.0084
vimboss
parents: 293
diff changeset
6250 static const int val[8] = {1, 0, 0, 0, 1, 2, 2, 2 };
205
d292c40ca788 updated for version 7.0060
vimboss
parents: 189
diff changeset
6251
d292c40ca788 updated for version 7.0060
vimboss
parents: 189
diff changeset
6252 y = FILL_Y(row + 1) - 1;
d292c40ca788 updated for version 7.0060
vimboss
parents: 189
diff changeset
6253 for (x = FILL_X(col); x < FILL_X(col + len); ++x)
d292c40ca788 updated for version 7.0060
vimboss
parents: 189
diff changeset
6254 {
d292c40ca788 updated for version 7.0060
vimboss
parents: 189
diff changeset
6255 offset = val[x % 8];
12986
18e6f4addce9 patch 8.0.1369: MS-Windows: drawing underline slow, mFallbackDC not updated
Christian Brabandt <cb@256bit.org>
parents: 12950
diff changeset
6256 set_pixel(x, y - offset, gui.currSpColor);
205
d292c40ca788 updated for version 7.0060
vimboss
parents: 189
diff changeset
6257 }
d292c40ca788 updated for version 7.0060
vimboss
parents: 189
diff changeset
6258 }
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
6259 }
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
6260
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
6261
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
6262 /*
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
6263 * Output routines.
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
6264 */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
6265
18788
e1f4e9d78a6a patch 8.1.2383: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents: 18773
diff changeset
6266 /*
e1f4e9d78a6a patch 8.1.2383: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents: 18773
diff changeset
6267 * Flush any output to the screen
e1f4e9d78a6a patch 8.1.2383: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents: 18773
diff changeset
6268 */
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
6269 void
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
6270 gui_mch_flush(void)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
6271 {
12934
2ebc3df65ca2 patch 8.0.1343: MS-Windows: does not show colored emojis
Christian Brabandt <cb@256bit.org>
parents: 12924
diff changeset
6272 #if defined(FEAT_DIRECTX)
2ebc3df65ca2 patch 8.0.1343: MS-Windows: does not show colored emojis
Christian Brabandt <cb@256bit.org>
parents: 12924
diff changeset
6273 if (IS_ENABLE_DIRECTX())
2ebc3df65ca2 patch 8.0.1343: MS-Windows: does not show colored emojis
Christian Brabandt <cb@256bit.org>
parents: 12924
diff changeset
6274 DWriteContext_Flush(s_dwc);
2ebc3df65ca2 patch 8.0.1343: MS-Windows: does not show colored emojis
Christian Brabandt <cb@256bit.org>
parents: 12924
diff changeset
6275 #endif
2ebc3df65ca2 patch 8.0.1343: MS-Windows: does not show colored emojis
Christian Brabandt <cb@256bit.org>
parents: 12924
diff changeset
6276
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
6277 GdiFlush();
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
6278 }
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
6279
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
6280 static void
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
6281 clear_rect(RECT *rcp)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
6282 {
12986
18e6f4addce9 patch 8.0.1369: MS-Windows: drawing underline slow, mFallbackDC not updated
Christian Brabandt <cb@256bit.org>
parents: 12950
diff changeset
6283 fill_rect(rcp, NULL, gui.back_pixel);
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
6284 }
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
6285
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
6286
636
5ad3b5d4ecc0 updated for version 7.0184
vimboss
parents: 615
diff changeset
6287 void
5ad3b5d4ecc0 updated for version 7.0184
vimboss
parents: 615
diff changeset
6288 gui_mch_get_screen_dimensions(int *screen_w, int *screen_h)
5ad3b5d4ecc0 updated for version 7.0184
vimboss
parents: 615
diff changeset
6289 {
5ad3b5d4ecc0 updated for version 7.0184
vimboss
parents: 615
diff changeset
6290 RECT workarea_rect;
5ad3b5d4ecc0 updated for version 7.0184
vimboss
parents: 615
diff changeset
6291
5ad3b5d4ecc0 updated for version 7.0184
vimboss
parents: 615
diff changeset
6292 get_work_area(&workarea_rect);
5ad3b5d4ecc0 updated for version 7.0184
vimboss
parents: 615
diff changeset
6293
819
23f82b5d2814 updated for version 7.0c10
vimboss
parents: 812
diff changeset
6294 *screen_w = workarea_rect.right - workarea_rect.left
27160
4482dd5f8869 patch 8.2.4109: MS-Windows: high dpi support is outdated
Bram Moolenaar <Bram@vim.org>
parents: 26966
diff changeset
6295 - (pGetSystemMetricsForDpi(SM_CXFRAME, s_dpi) +
4482dd5f8869 patch 8.2.4109: MS-Windows: high dpi support is outdated
Bram Moolenaar <Bram@vim.org>
parents: 26966
diff changeset
6296 pGetSystemMetricsForDpi(SM_CXPADDEDBORDER, s_dpi)) * 2;
636
5ad3b5d4ecc0 updated for version 7.0184
vimboss
parents: 615
diff changeset
6297
18788
e1f4e9d78a6a patch 8.1.2383: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents: 18773
diff changeset
6298 // FIXME: dirty trick: Because the gui_get_base_height() doesn't include
e1f4e9d78a6a patch 8.1.2383: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents: 18773
diff changeset
6299 // the menubar for MSwin, we subtract it from the screen height, so that
e1f4e9d78a6a patch 8.1.2383: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents: 18773
diff changeset
6300 // the window size can be made to fit on the screen.
819
23f82b5d2814 updated for version 7.0c10
vimboss
parents: 812
diff changeset
6301 *screen_h = workarea_rect.bottom - workarea_rect.top
27160
4482dd5f8869 patch 8.2.4109: MS-Windows: high dpi support is outdated
Bram Moolenaar <Bram@vim.org>
parents: 26966
diff changeset
6302 - (pGetSystemMetricsForDpi(SM_CYFRAME, s_dpi) +
4482dd5f8869 patch 8.2.4109: MS-Windows: high dpi support is outdated
Bram Moolenaar <Bram@vim.org>
parents: 26966
diff changeset
6303 pGetSystemMetricsForDpi(SM_CXPADDEDBORDER, s_dpi)) * 2
4482dd5f8869 patch 8.2.4109: MS-Windows: high dpi support is outdated
Bram Moolenaar <Bram@vim.org>
parents: 26966
diff changeset
6304 - pGetSystemMetricsForDpi(SM_CYCAPTION, s_dpi)
4482dd5f8869 patch 8.2.4109: MS-Windows: high dpi support is outdated
Bram Moolenaar <Bram@vim.org>
parents: 26966
diff changeset
6305 - gui_mswin_get_menu_height(FALSE);
636
5ad3b5d4ecc0 updated for version 7.0184
vimboss
parents: 615
diff changeset
6306 }
5ad3b5d4ecc0 updated for version 7.0184
vimboss
parents: 615
diff changeset
6307
5ad3b5d4ecc0 updated for version 7.0184
vimboss
parents: 615
diff changeset
6308
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
6309 #if defined(FEAT_MENU) || defined(PROTO)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
6310 /*
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
6311 * Add a sub menu to the menu bar.
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
6312 */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
6313 void
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
6314 gui_mch_add_menu(
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
6315 vimmenu_T *menu,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
6316 int pos)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
6317 {
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
6318 vimmenu_T *parent = menu->parent;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
6319
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
6320 menu->submenu_id = CreatePopupMenu();
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
6321 menu->id = s_menu_id++;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
6322
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
6323 if (menu_is_menubar(menu->name))
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
6324 {
16196
973070a30381 patch 8.1.1103: MS-Windows: old API calls are no longer needed
Bram Moolenaar <Bram@vim.org>
parents: 16162
diff changeset
6325 WCHAR *wn;
973070a30381 patch 8.1.1103: MS-Windows: old API calls are no longer needed
Bram Moolenaar <Bram@vim.org>
parents: 16162
diff changeset
6326 MENUITEMINFOW infow;
973070a30381 patch 8.1.1103: MS-Windows: old API calls are no longer needed
Bram Moolenaar <Bram@vim.org>
parents: 16162
diff changeset
6327
973070a30381 patch 8.1.1103: MS-Windows: old API calls are no longer needed
Bram Moolenaar <Bram@vim.org>
parents: 16162
diff changeset
6328 wn = enc_to_utf16(menu->name, NULL);
10264
c036c0f636d5 commit https://github.com/vim/vim/commit/cea912af725c54f4727a0565e31661f6b29c6bb1
Christian Brabandt <cb@256bit.org>
parents: 10042
diff changeset
6329 if (wn == NULL)
16196
973070a30381 patch 8.1.1103: MS-Windows: old API calls are no longer needed
Bram Moolenaar <Bram@vim.org>
parents: 16162
diff changeset
6330 return;
973070a30381 patch 8.1.1103: MS-Windows: old API calls are no longer needed
Bram Moolenaar <Bram@vim.org>
parents: 16162
diff changeset
6331
973070a30381 patch 8.1.1103: MS-Windows: old API calls are no longer needed
Bram Moolenaar <Bram@vim.org>
parents: 16162
diff changeset
6332 infow.cbSize = sizeof(infow);
973070a30381 patch 8.1.1103: MS-Windows: old API calls are no longer needed
Bram Moolenaar <Bram@vim.org>
parents: 16162
diff changeset
6333 infow.fMask = MIIM_DATA | MIIM_TYPE | MIIM_ID
973070a30381 patch 8.1.1103: MS-Windows: old API calls are no longer needed
Bram Moolenaar <Bram@vim.org>
parents: 16162
diff changeset
6334 | MIIM_SUBMENU;
973070a30381 patch 8.1.1103: MS-Windows: old API calls are no longer needed
Bram Moolenaar <Bram@vim.org>
parents: 16162
diff changeset
6335 infow.dwItemData = (long_u)menu;
973070a30381 patch 8.1.1103: MS-Windows: old API calls are no longer needed
Bram Moolenaar <Bram@vim.org>
parents: 16162
diff changeset
6336 infow.wID = menu->id;
973070a30381 patch 8.1.1103: MS-Windows: old API calls are no longer needed
Bram Moolenaar <Bram@vim.org>
parents: 16162
diff changeset
6337 infow.fType = MFT_STRING;
973070a30381 patch 8.1.1103: MS-Windows: old API calls are no longer needed
Bram Moolenaar <Bram@vim.org>
parents: 16162
diff changeset
6338 infow.dwTypeData = wn;
973070a30381 patch 8.1.1103: MS-Windows: old API calls are no longer needed
Bram Moolenaar <Bram@vim.org>
parents: 16162
diff changeset
6339 infow.cch = (UINT)wcslen(wn);
973070a30381 patch 8.1.1103: MS-Windows: old API calls are no longer needed
Bram Moolenaar <Bram@vim.org>
parents: 16162
diff changeset
6340 infow.hSubMenu = menu->submenu_id;
973070a30381 patch 8.1.1103: MS-Windows: old API calls are no longer needed
Bram Moolenaar <Bram@vim.org>
parents: 16162
diff changeset
6341 InsertMenuItemW((parent == NULL)
973070a30381 patch 8.1.1103: MS-Windows: old API calls are no longer needed
Bram Moolenaar <Bram@vim.org>
parents: 16162
diff changeset
6342 ? s_menuBar : parent->submenu_id,
973070a30381 patch 8.1.1103: MS-Windows: old API calls are no longer needed
Bram Moolenaar <Bram@vim.org>
parents: 16162
diff changeset
6343 (UINT)pos, TRUE, &infow);
973070a30381 patch 8.1.1103: MS-Windows: old API calls are no longer needed
Bram Moolenaar <Bram@vim.org>
parents: 16162
diff changeset
6344 vim_free(wn);
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
6345 }
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
6346
18788
e1f4e9d78a6a patch 8.1.2383: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents: 18773
diff changeset
6347 // Fix window size if menu may have wrapped
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
6348 if (parent == NULL)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
6349 gui_mswin_get_menu_height(!gui.starting);
18773
38a3bef525e6 patch 8.1.2376: preprocessor indents are incorrect
Bram Moolenaar <Bram@vim.org>
parents: 18763
diff changeset
6350 # ifdef FEAT_TEAROFF
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
6351 else if (IsWindow(parent->tearoff_handle))
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
6352 rebuild_tearoff(parent);
18773
38a3bef525e6 patch 8.1.2376: preprocessor indents are incorrect
Bram Moolenaar <Bram@vim.org>
parents: 18763
diff changeset
6353 # endif
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
6354 }
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
6355
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
6356 void
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
6357 gui_mch_show_popupmenu(vimmenu_T *menu)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
6358 {
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
6359 POINT mp;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
6360
27281
f7d73708b391 patch 8.2.4169: MS-Windows: unnessary casts and other minor things
Bram Moolenaar <Bram@vim.org>
parents: 27261
diff changeset
6361 (void)GetCursorPos(&mp);
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
6362 gui_mch_show_popupmenu_at(menu, (int)mp.x, (int)mp.y);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
6363 }
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
6364
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
6365 void
401
4a1ead01d30b updated for version 7.0105
vimboss
parents: 344
diff changeset
6366 gui_make_popup(char_u *path_name, int mouse_pos)
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
6367 {
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
6368 vimmenu_T *menu = gui_find_menu(path_name);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
6369
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
6370 if (menu != NULL)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
6371 {
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
6372 POINT p;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
6373
18788
e1f4e9d78a6a patch 8.1.2383: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents: 18773
diff changeset
6374 // Find the position of the current cursor
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
6375 GetDCOrgEx(s_hdc, &p);
401
4a1ead01d30b updated for version 7.0105
vimboss
parents: 344
diff changeset
6376 if (mouse_pos)
4a1ead01d30b updated for version 7.0105
vimboss
parents: 344
diff changeset
6377 {
4a1ead01d30b updated for version 7.0105
vimboss
parents: 344
diff changeset
6378 int mx, my;
4a1ead01d30b updated for version 7.0105
vimboss
parents: 344
diff changeset
6379
4a1ead01d30b updated for version 7.0105
vimboss
parents: 344
diff changeset
6380 gui_mch_getmouse(&mx, &my);
4a1ead01d30b updated for version 7.0105
vimboss
parents: 344
diff changeset
6381 p.x += mx;
4a1ead01d30b updated for version 7.0105
vimboss
parents: 344
diff changeset
6382 p.y += my;
4a1ead01d30b updated for version 7.0105
vimboss
parents: 344
diff changeset
6383 }
4a1ead01d30b updated for version 7.0105
vimboss
parents: 344
diff changeset
6384 else if (curwin != NULL)
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
6385 {
12513
3ca08bf99396 patch 8.0.1135: W_WINCOL() is always the same
Christian Brabandt <cb@256bit.org>
parents: 12477
diff changeset
6386 p.x += TEXT_X(curwin->w_wincol + curwin->w_wcol + 1);
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
6387 p.y += TEXT_Y(W_WINROW(curwin) + curwin->w_wrow + 1);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
6388 }
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
6389 msg_scroll = FALSE;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
6390 gui_mch_show_popupmenu_at(menu, (int)p.x, (int)p.y);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
6391 }
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
6392 }
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
6393
18773
38a3bef525e6 patch 8.1.2376: preprocessor indents are incorrect
Bram Moolenaar <Bram@vim.org>
parents: 18763
diff changeset
6394 # if defined(FEAT_TEAROFF) || defined(PROTO)
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
6395 /*
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
6396 * Given a menu descriptor, e.g. "File.New", find it in the menu hierarchy and
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
6397 * create it as a pseudo-"tearoff menu".
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
6398 */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
6399 void
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
6400 gui_make_tearoff(char_u *path_name)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
6401 {
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
6402 vimmenu_T *menu = gui_find_menu(path_name);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
6403
18788
e1f4e9d78a6a patch 8.1.2383: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents: 18773
diff changeset
6404 // Found the menu, so tear it off.
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
6405 if (menu != NULL)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
6406 gui_mch_tearoff(menu->dname, menu, 0xffffL, 0xffffL);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
6407 }
18773
38a3bef525e6 patch 8.1.2376: preprocessor indents are incorrect
Bram Moolenaar <Bram@vim.org>
parents: 18763
diff changeset
6408 # endif
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
6409
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
6410 /*
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
6411 * Add a menu item to a menu
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
6412 */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
6413 void
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
6414 gui_mch_add_menu_item(
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
6415 vimmenu_T *menu,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
6416 int idx)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
6417 {
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
6418 vimmenu_T *parent = menu->parent;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
6419
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
6420 menu->id = s_menu_id++;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
6421 menu->submenu_id = NULL;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
6422
18773
38a3bef525e6 patch 8.1.2376: preprocessor indents are incorrect
Bram Moolenaar <Bram@vim.org>
parents: 18763
diff changeset
6423 # ifdef FEAT_TEAROFF
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
6424 if (STRNCMP(menu->name, TEAR_STRING, TEAR_LEN) == 0)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
6425 {
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
6426 InsertMenu(parent->submenu_id, (UINT)idx, MF_BITMAP|MF_BYPOSITION,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
6427 (UINT)menu->id, (LPCTSTR) s_htearbitmap);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
6428 }
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
6429 else
18773
38a3bef525e6 patch 8.1.2376: preprocessor indents are incorrect
Bram Moolenaar <Bram@vim.org>
parents: 18763
diff changeset
6430 # endif
38a3bef525e6 patch 8.1.2376: preprocessor indents are incorrect
Bram Moolenaar <Bram@vim.org>
parents: 18763
diff changeset
6431 # ifdef FEAT_TOOLBAR
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
6432 if (menu_is_toolbar(parent->name))
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
6433 {
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
6434 TBBUTTON newtb;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
6435
20007
aadd1cae2ff5 patch 8.2.0559: clearing a struct is verbose
Bram Moolenaar <Bram@vim.org>
parents: 19934
diff changeset
6436 CLEAR_FIELD(newtb);
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
6437 if (menu_is_separator(menu->name))
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
6438 {
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
6439 newtb.iBitmap = 0;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
6440 newtb.fsStyle = TBSTYLE_SEP;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
6441 }
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
6442 else
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
6443 {
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
6444 newtb.iBitmap = get_toolbar_bitmap(menu);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
6445 newtb.fsStyle = TBSTYLE_BUTTON;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
6446 }
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
6447 newtb.idCommand = menu->id;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
6448 newtb.fsState = TBSTATE_ENABLED;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
6449 newtb.iString = 0;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
6450 SendMessage(s_toolbarhwnd, TB_INSERTBUTTON, (WPARAM)idx,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
6451 (LPARAM)&newtb);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
6452 menu->submenu_id = (HMENU)-1;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
6453 }
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
6454 else
18773
38a3bef525e6 patch 8.1.2376: preprocessor indents are incorrect
Bram Moolenaar <Bram@vim.org>
parents: 18763
diff changeset
6455 # endif
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
6456 {
16196
973070a30381 patch 8.1.1103: MS-Windows: old API calls are no longer needed
Bram Moolenaar <Bram@vim.org>
parents: 16162
diff changeset
6457 WCHAR *wn;
973070a30381 patch 8.1.1103: MS-Windows: old API calls are no longer needed
Bram Moolenaar <Bram@vim.org>
parents: 16162
diff changeset
6458
973070a30381 patch 8.1.1103: MS-Windows: old API calls are no longer needed
Bram Moolenaar <Bram@vim.org>
parents: 16162
diff changeset
6459 wn = enc_to_utf16(menu->name, NULL);
973070a30381 patch 8.1.1103: MS-Windows: old API calls are no longer needed
Bram Moolenaar <Bram@vim.org>
parents: 16162
diff changeset
6460 if (wn != NULL)
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
6461 {
16196
973070a30381 patch 8.1.1103: MS-Windows: old API calls are no longer needed
Bram Moolenaar <Bram@vim.org>
parents: 16162
diff changeset
6462 InsertMenuW(parent->submenu_id, (UINT)idx,
973070a30381 patch 8.1.1103: MS-Windows: old API calls are no longer needed
Bram Moolenaar <Bram@vim.org>
parents: 16162
diff changeset
6463 (menu_is_separator(menu->name)
973070a30381 patch 8.1.1103: MS-Windows: old API calls are no longer needed
Bram Moolenaar <Bram@vim.org>
parents: 16162
diff changeset
6464 ? MF_SEPARATOR : MF_STRING) | MF_BYPOSITION,
973070a30381 patch 8.1.1103: MS-Windows: old API calls are no longer needed
Bram Moolenaar <Bram@vim.org>
parents: 16162
diff changeset
6465 (UINT)menu->id, wn);
973070a30381 patch 8.1.1103: MS-Windows: old API calls are no longer needed
Bram Moolenaar <Bram@vim.org>
parents: 16162
diff changeset
6466 vim_free(wn);
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
6467 }
18773
38a3bef525e6 patch 8.1.2376: preprocessor indents are incorrect
Bram Moolenaar <Bram@vim.org>
parents: 18763
diff changeset
6468 # ifdef FEAT_TEAROFF
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
6469 if (IsWindow(parent->tearoff_handle))
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
6470 rebuild_tearoff(parent);
18773
38a3bef525e6 patch 8.1.2376: preprocessor indents are incorrect
Bram Moolenaar <Bram@vim.org>
parents: 18763
diff changeset
6471 # endif
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
6472 }
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
6473 }
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
6474
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
6475 /*
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
6476 * Destroy the machine specific menu widget.
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
6477 */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
6478 void
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
6479 gui_mch_destroy_menu(vimmenu_T *menu)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
6480 {
18773
38a3bef525e6 patch 8.1.2376: preprocessor indents are incorrect
Bram Moolenaar <Bram@vim.org>
parents: 18763
diff changeset
6481 # ifdef FEAT_TOOLBAR
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
6482 /*
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
6483 * is this a toolbar button?
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
6484 */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
6485 if (menu->submenu_id == (HMENU)-1)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
6486 {
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
6487 int iButton;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
6488
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
6489 iButton = (int)SendMessage(s_toolbarhwnd, TB_COMMANDTOINDEX,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
6490 (WPARAM)menu->id, 0);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
6491 SendMessage(s_toolbarhwnd, TB_DELETEBUTTON, (WPARAM)iButton, 0);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
6492 }
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
6493 else
18773
38a3bef525e6 patch 8.1.2376: preprocessor indents are incorrect
Bram Moolenaar <Bram@vim.org>
parents: 18763
diff changeset
6494 # endif
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
6495 {
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
6496 if (menu->parent != NULL
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
6497 && menu_is_popup(menu->parent->dname)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
6498 && menu->parent->submenu_id != NULL)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
6499 RemoveMenu(menu->parent->submenu_id, menu->id, MF_BYCOMMAND);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
6500 else
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
6501 RemoveMenu(s_menuBar, menu->id, MF_BYCOMMAND);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
6502 if (menu->submenu_id != NULL)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
6503 DestroyMenu(menu->submenu_id);
18773
38a3bef525e6 patch 8.1.2376: preprocessor indents are incorrect
Bram Moolenaar <Bram@vim.org>
parents: 18763
diff changeset
6504 # ifdef FEAT_TEAROFF
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
6505 if (IsWindow(menu->tearoff_handle))
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
6506 DestroyWindow(menu->tearoff_handle);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
6507 if (menu->parent != NULL
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
6508 && menu->parent->children != NULL
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
6509 && IsWindow(menu->parent->tearoff_handle))
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
6510 {
18788
e1f4e9d78a6a patch 8.1.2383: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents: 18773
diff changeset
6511 // This menu must not show up when rebuilding the tearoff window.
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
6512 menu->modes = 0;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
6513 rebuild_tearoff(menu->parent);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
6514 }
18773
38a3bef525e6 patch 8.1.2376: preprocessor indents are incorrect
Bram Moolenaar <Bram@vim.org>
parents: 18763
diff changeset
6515 # endif
38a3bef525e6 patch 8.1.2376: preprocessor indents are incorrect
Bram Moolenaar <Bram@vim.org>
parents: 18763
diff changeset
6516 }
38a3bef525e6 patch 8.1.2376: preprocessor indents are incorrect
Bram Moolenaar <Bram@vim.org>
parents: 18763
diff changeset
6517 }
38a3bef525e6 patch 8.1.2376: preprocessor indents are incorrect
Bram Moolenaar <Bram@vim.org>
parents: 18763
diff changeset
6518
38a3bef525e6 patch 8.1.2376: preprocessor indents are incorrect
Bram Moolenaar <Bram@vim.org>
parents: 18763
diff changeset
6519 # ifdef FEAT_TEAROFF
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
6520 static void
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
6521 rebuild_tearoff(vimmenu_T *menu)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
6522 {
18788
e1f4e9d78a6a patch 8.1.2383: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents: 18773
diff changeset
6523 //hackish
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
6524 char_u tbuf[128];
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
6525 RECT trect;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
6526 RECT rct;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
6527 RECT roct;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
6528 int x, y;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
6529
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
6530 HWND thwnd = menu->tearoff_handle;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
6531
8090
54cfe888c627 commit https://github.com/vim/vim/commit/418f81b5fa400ed59793384f2f3d9df45390f080
Christian Brabandt <cb@256bit.org>
parents: 7856
diff changeset
6532 GetWindowText(thwnd, (LPSTR)tbuf, 127);
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
6533 if (GetWindowRect(thwnd, &trect)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
6534 && GetWindowRect(s_hwnd, &rct)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
6535 && GetClientRect(s_hwnd, &roct))
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
6536 {
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
6537 x = trect.left - rct.left;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
6538 y = (trect.top - rct.bottom + roct.bottom);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
6539 }
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
6540 else
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
6541 {
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
6542 x = y = 0xffffL;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
6543 }
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
6544 DestroyWindow(thwnd);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
6545 if (menu->children != NULL)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
6546 {
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
6547 gui_mch_tearoff(tbuf, menu, x, y);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
6548 if (IsWindow(menu->tearoff_handle))
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
6549 (void) SetWindowPos(menu->tearoff_handle,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
6550 NULL,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
6551 (int)trect.left,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
6552 (int)trect.top,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
6553 0, 0,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
6554 SWP_NOSIZE | SWP_NOZORDER | SWP_NOACTIVATE);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
6555 }
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
6556 }
18788
e1f4e9d78a6a patch 8.1.2383: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents: 18773
diff changeset
6557 # endif // FEAT_TEAROFF
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
6558
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
6559 /*
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
6560 * Make a menu either grey or not grey.
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
6561 */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
6562 void
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
6563 gui_mch_menu_grey(
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
6564 vimmenu_T *menu,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
6565 int grey)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
6566 {
18773
38a3bef525e6 patch 8.1.2376: preprocessor indents are incorrect
Bram Moolenaar <Bram@vim.org>
parents: 18763
diff changeset
6567 # ifdef FEAT_TOOLBAR
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
6568 /*
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
6569 * is this a toolbar button?
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
6570 */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
6571 if (menu->submenu_id == (HMENU)-1)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
6572 {
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
6573 SendMessage(s_toolbarhwnd, TB_ENABLEBUTTON,
27281
f7d73708b391 patch 8.2.4169: MS-Windows: unnessary casts and other minor things
Bram Moolenaar <Bram@vim.org>
parents: 27261
diff changeset
6574 (WPARAM)menu->id, (LPARAM) MAKELONG((grey ? FALSE : TRUE), 0));
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
6575 }
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
6576 else
18773
38a3bef525e6 patch 8.1.2376: preprocessor indents are incorrect
Bram Moolenaar <Bram@vim.org>
parents: 18763
diff changeset
6577 # endif
9236
9940e9b2a725 commit https://github.com/vim/vim/commit/762f1754370a1278167c8cba6c047ef319fc099c
Christian Brabandt <cb@256bit.org>
parents: 9213
diff changeset
6578 (void)EnableMenuItem(menu->parent ? menu->parent->submenu_id : s_menuBar,
9940e9b2a725 commit https://github.com/vim/vim/commit/762f1754370a1278167c8cba6c047ef319fc099c
Christian Brabandt <cb@256bit.org>
parents: 9213
diff changeset
6579 menu->id, MF_BYCOMMAND | (grey ? MF_GRAYED : MF_ENABLED));
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
6580
18773
38a3bef525e6 patch 8.1.2376: preprocessor indents are incorrect
Bram Moolenaar <Bram@vim.org>
parents: 18763
diff changeset
6581 # ifdef FEAT_TEAROFF
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
6582 if ((menu->parent != NULL) && (IsWindow(menu->parent->tearoff_handle)))
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
6583 {
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
6584 WORD menuID;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
6585 HWND menuHandle;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
6586
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
6587 /*
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
6588 * A tearoff button has changed state.
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
6589 */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
6590 if (menu->children == NULL)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
6591 menuID = (WORD)(menu->id);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
6592 else
840
2c885fab04e3 updated for version 7.0e06
vimboss
parents: 837
diff changeset
6593 menuID = (WORD)((long_u)(menu->submenu_id) | (DWORD)0x8000);
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
6594 menuHandle = GetDlgItem(menu->parent->tearoff_handle, menuID);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
6595 if (menuHandle)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
6596 EnableWindow(menuHandle, !grey);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
6597
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
6598 }
18773
38a3bef525e6 patch 8.1.2376: preprocessor indents are incorrect
Bram Moolenaar <Bram@vim.org>
parents: 18763
diff changeset
6599 # endif
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
6600 }
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
6601
18788
e1f4e9d78a6a patch 8.1.2383: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents: 18773
diff changeset
6602 #endif // FEAT_MENU
e1f4e9d78a6a patch 8.1.2383: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents: 18773
diff changeset
6603
e1f4e9d78a6a patch 8.1.2383: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents: 18773
diff changeset
6604
e1f4e9d78a6a patch 8.1.2383: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents: 18773
diff changeset
6605 // define some macros used to make the dialogue creation more readable
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
6606
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
6607 #define add_word(x) *p++ = (x)
615
7fe13e0f5dce updated for version 7.0175
vimboss
parents: 537
diff changeset
6608 #define add_long(x) dwp = (DWORD *)p; *dwp++ = (x); p = (WORD *)dwp
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
6609
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
6610 #if defined(FEAT_GUI_DIALOG) || defined(PROTO)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
6611 /*
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
6612 * stuff for dialogs
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
6613 */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
6614
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
6615 /*
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
6616 * The callback routine used by all the dialogs. Very simple. First,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
6617 * acknowledges the INITDIALOG message so that Windows knows to do standard
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
6618 * dialog stuff (Return = default, Esc = cancel....) Second, if a button is
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
6619 * pressed, return that button's ID - IDCANCEL (2), which is the button's
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
6620 * number.
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
6621 */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
6622 static LRESULT CALLBACK
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
6623 dialog_callback(
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
6624 HWND hwnd,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
6625 UINT message,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
6626 WPARAM wParam,
10783
04eb70c77cf4 patch 8.0.0281: some files are still using ARGSUSED instead of UNUSED
Christian Brabandt <cb@256bit.org>
parents: 10440
diff changeset
6627 LPARAM lParam UNUSED)
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
6628 {
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
6629 if (message == WM_INITDIALOG)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
6630 {
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
6631 CenterWindow(hwnd, GetWindow(hwnd, GW_OWNER));
18788
e1f4e9d78a6a patch 8.1.2383: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents: 18773
diff changeset
6632 // Set focus to the dialog. Set the default button, if specified.
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
6633 (void)SetFocus(hwnd);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
6634 if (dialog_default_button > IDCANCEL)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
6635 (void)SetFocus(GetDlgItem(hwnd, dialog_default_button));
1356
c87f38b71d27 updated for version 7.1-070
vimboss
parents: 1288
diff changeset
6636 else
18788
e1f4e9d78a6a patch 8.1.2383: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents: 18773
diff changeset
6637 // We don't have a default, set focus on another element of the
e1f4e9d78a6a patch 8.1.2383: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents: 18773
diff changeset
6638 // dialog window, probably the icon
1356
c87f38b71d27 updated for version 7.1-070
vimboss
parents: 1288
diff changeset
6639 (void)SetFocus(GetDlgItem(hwnd, DLG_NONBUTTON_CONTROL));
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
6640 return FALSE;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
6641 }
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
6642
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
6643 if (message == WM_COMMAND)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
6644 {
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
6645 int button = LOWORD(wParam);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
6646
18788
e1f4e9d78a6a patch 8.1.2383: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents: 18773
diff changeset
6647 // Don't end the dialog if something was selected that was
e1f4e9d78a6a patch 8.1.2383: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents: 18773
diff changeset
6648 // not a button.
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
6649 if (button >= DLG_NONBUTTON_CONTROL)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
6650 return TRUE;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
6651
18788
e1f4e9d78a6a patch 8.1.2383: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents: 18773
diff changeset
6652 // If the edit box exists, copy the string.
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
6653 if (s_textfield != NULL)
1795
1fc8d918d9fc updated for version 7.2-093
vimboss
parents: 1752
diff changeset
6654 {
16825
ce04ebdf26b8 patch 8.1.1414: alloc() returning "char_u *" causes a lot of type casts
Bram Moolenaar <Bram@vim.org>
parents: 16768
diff changeset
6655 WCHAR *wp = ALLOC_MULT(WCHAR, IOSIZE);
16196
973070a30381 patch 8.1.1103: MS-Windows: old API calls are no longer needed
Bram Moolenaar <Bram@vim.org>
parents: 16162
diff changeset
6656 char_u *p;
973070a30381 patch 8.1.1103: MS-Windows: old API calls are no longer needed
Bram Moolenaar <Bram@vim.org>
parents: 16162
diff changeset
6657
973070a30381 patch 8.1.1103: MS-Windows: old API calls are no longer needed
Bram Moolenaar <Bram@vim.org>
parents: 16162
diff changeset
6658 GetDlgItemTextW(hwnd, DLG_NONBUTTON_CONTROL + 2, wp, IOSIZE);
973070a30381 patch 8.1.1103: MS-Windows: old API calls are no longer needed
Bram Moolenaar <Bram@vim.org>
parents: 16162
diff changeset
6659 p = utf16_to_enc(wp, NULL);
973070a30381 patch 8.1.1103: MS-Windows: old API calls are no longer needed
Bram Moolenaar <Bram@vim.org>
parents: 16162
diff changeset
6660 vim_strncpy(s_textfield, p, IOSIZE);
973070a30381 patch 8.1.1103: MS-Windows: old API calls are no longer needed
Bram Moolenaar <Bram@vim.org>
parents: 16162
diff changeset
6661 vim_free(p);
973070a30381 patch 8.1.1103: MS-Windows: old API calls are no longer needed
Bram Moolenaar <Bram@vim.org>
parents: 16162
diff changeset
6662 vim_free(wp);
1795
1fc8d918d9fc updated for version 7.2-093
vimboss
parents: 1752
diff changeset
6663 }
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
6664
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
6665 /*
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
6666 * Need to check for IDOK because if the user just hits Return to
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
6667 * accept the default value, some reason this is what we get.
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
6668 */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
6669 if (button == IDOK)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
6670 {
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
6671 if (dialog_default_button > IDCANCEL)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
6672 EndDialog(hwnd, dialog_default_button);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
6673 }
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
6674 else
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
6675 EndDialog(hwnd, button - IDCANCEL);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
6676 return TRUE;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
6677 }
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
6678
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
6679 if ((message == WM_SYSCOMMAND) && (wParam == SC_CLOSE))
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
6680 {
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
6681 EndDialog(hwnd, 0);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
6682 return TRUE;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
6683 }
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
6684 return FALSE;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
6685 }
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
6686
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
6687 /*
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
6688 * Create a dialog dynamically from the parameter strings.
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
6689 * type = type of dialog (question, alert, etc.)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
6690 * title = dialog title. may be NULL for default title.
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
6691 * message = text to display. Dialog sizes to accommodate it.
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
6692 * buttons = '\n' separated list of button captions, default first.
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
6693 * dfltbutton = number of default button.
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
6694 *
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
6695 * This routine returns 1 if the first button is pressed,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
6696 * 2 for the second, etc.
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
6697 *
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
6698 * 0 indicates Esc was pressed.
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
6699 * -1 for unexpected error
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
6700 *
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
6701 * If stubbing out this fn, return 1.
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
6702 */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
6703
18788
e1f4e9d78a6a patch 8.1.2383: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents: 18773
diff changeset
6704 static const char *dlg_icons[] = // must match names in resource file
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
6705 {
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
6706 "IDR_VIM",
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
6707 "IDR_VIM_ERROR",
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
6708 "IDR_VIM_ALERT",
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
6709 "IDR_VIM_INFO",
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
6710 "IDR_VIM_QUESTION"
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
6711 };
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
6712
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
6713 int
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
6714 gui_mch_dialog(
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
6715 int type,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
6716 char_u *title,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
6717 char_u *message,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
6718 char_u *buttons,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
6719 int dfltbutton,
2684
951641b8784d updated for version 7.3.102
Bram Moolenaar <bram@vim.org>
parents: 2616
diff changeset
6720 char_u *textfield,
18139
59bc3cd42cf5 patch 8.1.2064: MS-Windows: compiler warnings for unused arguments
Bram Moolenaar <Bram@vim.org>
parents: 17958
diff changeset
6721 int ex_cmd UNUSED)
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
6722 {
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
6723 WORD *p, *pdlgtemplate, *pnumitems;
615
7fe13e0f5dce updated for version 7.0175
vimboss
parents: 537
diff changeset
6724 DWORD *dwp;
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
6725 int numButtons;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
6726 int *buttonWidths, *buttonPositions;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
6727 int buttonYpos;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
6728 int nchar, i;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
6729 DWORD lStyle;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
6730 int dlgwidth = 0;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
6731 int dlgheight;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
6732 int editboxheight;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
6733 int horizWidth = 0;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
6734 int msgheight;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
6735 char_u *pstart;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
6736 char_u *pend;
158
78423945b251 updated for version 7.0048
vimboss
parents: 153
diff changeset
6737 char_u *last_white;
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
6738 char_u *tbuffer;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
6739 RECT rect;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
6740 HWND hwnd;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
6741 HDC hdc;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
6742 HFONT font, oldFont;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
6743 TEXTMETRIC fontInfo;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
6744 int fontHeight;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
6745 int textWidth, minButtonWidth, messageWidth;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
6746 int maxDialogWidth;
153
19670b05ee32 updated for version 7.0047
vimboss
parents: 148
diff changeset
6747 int maxDialogHeight;
19670b05ee32 updated for version 7.0047
vimboss
parents: 148
diff changeset
6748 int scroll_flag = 0;
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
6749 int vertical;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
6750 int dlgPaddingX;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
6751 int dlgPaddingY;
18773
38a3bef525e6 patch 8.1.2376: preprocessor indents are incorrect
Bram Moolenaar <Bram@vim.org>
parents: 18763
diff changeset
6752 # ifdef USE_SYSMENU_FONT
16152
8f4eccaaf2c0 patch 8.1.1081: MS-Windows: cannot use some fonts
Bram Moolenaar <Bram@vim.org>
parents: 16123
diff changeset
6753 LOGFONTW lfSysmenu;
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
6754 int use_lfSysmenu = FALSE;
18773
38a3bef525e6 patch 8.1.2376: preprocessor indents are incorrect
Bram Moolenaar <Bram@vim.org>
parents: 18763
diff changeset
6755 # endif
158
78423945b251 updated for version 7.0048
vimboss
parents: 153
diff changeset
6756 garray_T ga;
78423945b251 updated for version 7.0048
vimboss
parents: 153
diff changeset
6757 int l;
27160
4482dd5f8869 patch 8.2.4109: MS-Windows: high dpi support is outdated
Bram Moolenaar <Bram@vim.org>
parents: 26966
diff changeset
6758 int dlg_icon_width;
4482dd5f8869 patch 8.2.4109: MS-Windows: high dpi support is outdated
Bram Moolenaar <Bram@vim.org>
parents: 26966
diff changeset
6759 int dlg_icon_height;
4482dd5f8869 patch 8.2.4109: MS-Windows: high dpi support is outdated
Bram Moolenaar <Bram@vim.org>
parents: 26966
diff changeset
6760 int dpi;
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
6761
18773
38a3bef525e6 patch 8.1.2376: preprocessor indents are incorrect
Bram Moolenaar <Bram@vim.org>
parents: 18763
diff changeset
6762 # ifndef NO_CONSOLE
18788
e1f4e9d78a6a patch 8.1.2383: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents: 18773
diff changeset
6763 // Don't output anything in silent mode ("ex -s")
18773
38a3bef525e6 patch 8.1.2376: preprocessor indents are incorrect
Bram Moolenaar <Bram@vim.org>
parents: 18763
diff changeset
6764 # ifdef VIMDLL
16451
7ae2396cef62 patch 8.1.1230: a lot of code is shared between vim.exe and gvim.exe
Bram Moolenaar <Bram@vim.org>
parents: 16439
diff changeset
6765 if (!(gui.in_use || gui.starting))
18773
38a3bef525e6 patch 8.1.2376: preprocessor indents are incorrect
Bram Moolenaar <Bram@vim.org>
parents: 18763
diff changeset
6766 # endif
16451
7ae2396cef62 patch 8.1.1230: a lot of code is shared between vim.exe and gvim.exe
Bram Moolenaar <Bram@vim.org>
parents: 16439
diff changeset
6767 if (silent_mode)
18788
e1f4e9d78a6a patch 8.1.2383: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents: 18773
diff changeset
6768 return dfltbutton; // return default option
18773
38a3bef525e6 patch 8.1.2376: preprocessor indents are incorrect
Bram Moolenaar <Bram@vim.org>
parents: 18763
diff changeset
6769 # endif
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
6770
153
19670b05ee32 updated for version 7.0047
vimboss
parents: 148
diff changeset
6771 if (s_hwnd == NULL)
27160
4482dd5f8869 patch 8.2.4109: MS-Windows: high dpi support is outdated
Bram Moolenaar <Bram@vim.org>
parents: 26966
diff changeset
6772 {
4482dd5f8869 patch 8.2.4109: MS-Windows: high dpi support is outdated
Bram Moolenaar <Bram@vim.org>
parents: 26966
diff changeset
6773 load_dpi_func();
4482dd5f8869 patch 8.2.4109: MS-Windows: high dpi support is outdated
Bram Moolenaar <Bram@vim.org>
parents: 26966
diff changeset
6774 s_dpi = dpi = pGetDpiForSystem();
153
19670b05ee32 updated for version 7.0047
vimboss
parents: 148
diff changeset
6775 get_dialog_font_metrics();
27160
4482dd5f8869 patch 8.2.4109: MS-Windows: high dpi support is outdated
Bram Moolenaar <Bram@vim.org>
parents: 26966
diff changeset
6776 }
4482dd5f8869 patch 8.2.4109: MS-Windows: high dpi support is outdated
Bram Moolenaar <Bram@vim.org>
parents: 26966
diff changeset
6777 else
4482dd5f8869 patch 8.2.4109: MS-Windows: high dpi support is outdated
Bram Moolenaar <Bram@vim.org>
parents: 26966
diff changeset
6778 dpi = pGetDpiForSystem();
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
6779
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
6780 if ((type < 0) || (type > VIM_LAST_TYPE))
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
6781 type = 0;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
6782
18788
e1f4e9d78a6a patch 8.1.2383: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents: 18773
diff changeset
6783 // allocate some memory for dialog template
e1f4e9d78a6a patch 8.1.2383: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents: 18773
diff changeset
6784 // TODO should compute this really
158
78423945b251 updated for version 7.0048
vimboss
parents: 153
diff changeset
6785 pdlgtemplate = p = (PWORD)LocalAlloc(LPTR,
840
2c885fab04e3 updated for version 7.0e06
vimboss
parents: 837
diff changeset
6786 DLG_ALLOC_SIZE + STRLEN(message) * 2);
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
6787
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
6788 if (p == NULL)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
6789 return -1;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
6790
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
6791 /*
4352
04736b4030ec updated for version 7.3.925
Bram Moolenaar <bram@vim.org>
parents: 4238
diff changeset
6792 * make a copy of 'buttons' to fiddle with it. compiler grizzles because
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
6793 * vim_strsave() doesn't take a const arg (why not?), so cast away the
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
6794 * const.
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
6795 */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
6796 tbuffer = vim_strsave(buttons);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
6797 if (tbuffer == NULL)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
6798 return -1;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
6799
18788
e1f4e9d78a6a patch 8.1.2383: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents: 18773
diff changeset
6800 --dfltbutton; // Change from one-based to zero-based
e1f4e9d78a6a patch 8.1.2383: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents: 18773
diff changeset
6801
e1f4e9d78a6a patch 8.1.2383: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents: 18773
diff changeset
6802 // Count buttons
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
6803 numButtons = 1;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
6804 for (i = 0; tbuffer[i] != '\0'; i++)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
6805 {
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
6806 if (tbuffer[i] == DLG_BUTTON_SEP)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
6807 numButtons++;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
6808 }
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
6809 if (dfltbutton >= numButtons)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
6810 dfltbutton = -1;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
6811
18788
e1f4e9d78a6a patch 8.1.2383: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents: 18773
diff changeset
6812 // Allocate array to hold the width of each button
16825
ce04ebdf26b8 patch 8.1.1414: alloc() returning "char_u *" causes a lot of type casts
Bram Moolenaar <Bram@vim.org>
parents: 16768
diff changeset
6813 buttonWidths = ALLOC_MULT(int, numButtons);
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
6814 if (buttonWidths == NULL)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
6815 return -1;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
6816
18788
e1f4e9d78a6a patch 8.1.2383: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents: 18773
diff changeset
6817 // Allocate array to hold the X position of each button
16825
ce04ebdf26b8 patch 8.1.1414: alloc() returning "char_u *" causes a lot of type casts
Bram Moolenaar <Bram@vim.org>
parents: 16768
diff changeset
6818 buttonPositions = ALLOC_MULT(int, numButtons);
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
6819 if (buttonPositions == NULL)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
6820 return -1;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
6821
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
6822 /*
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
6823 * Calculate how big the dialog must be.
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
6824 */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
6825 hwnd = GetDesktopWindow();
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
6826 hdc = GetWindowDC(hwnd);
18773
38a3bef525e6 patch 8.1.2376: preprocessor indents are incorrect
Bram Moolenaar <Bram@vim.org>
parents: 18763
diff changeset
6827 # ifdef USE_SYSMENU_FONT
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
6828 if (gui_w32_get_menu_font(&lfSysmenu) == OK)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
6829 {
16152
8f4eccaaf2c0 patch 8.1.1081: MS-Windows: cannot use some fonts
Bram Moolenaar <Bram@vim.org>
parents: 16123
diff changeset
6830 font = CreateFontIndirectW(&lfSysmenu);
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
6831 use_lfSysmenu = TRUE;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
6832 }
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
6833 else
18773
38a3bef525e6 patch 8.1.2376: preprocessor indents are incorrect
Bram Moolenaar <Bram@vim.org>
parents: 18763
diff changeset
6834 # endif
27322
574cd25f0962 patch 8.2.4189: MS-Windows: code for "old look" is obsolete
Bram Moolenaar <Bram@vim.org>
parents: 27293
diff changeset
6835 font = CreateFont(-DLG_FONT_POINT_SIZE, 0, 0, 0, 0, 0, 0, 0,
574cd25f0962 patch 8.2.4189: MS-Windows: code for "old look" is obsolete
Bram Moolenaar <Bram@vim.org>
parents: 27293
diff changeset
6836 0, 0, 0, 0, VARIABLE_PITCH, DLG_FONT_NAME);
574cd25f0962 patch 8.2.4189: MS-Windows: code for "old look" is obsolete
Bram Moolenaar <Bram@vim.org>
parents: 27293
diff changeset
6837
574cd25f0962 patch 8.2.4189: MS-Windows: code for "old look" is obsolete
Bram Moolenaar <Bram@vim.org>
parents: 27293
diff changeset
6838 oldFont = SelectFont(hdc, font);
574cd25f0962 patch 8.2.4189: MS-Windows: code for "old look" is obsolete
Bram Moolenaar <Bram@vim.org>
parents: 27293
diff changeset
6839 dlgPaddingX = DLG_PADDING_X;
574cd25f0962 patch 8.2.4189: MS-Windows: code for "old look" is obsolete
Bram Moolenaar <Bram@vim.org>
parents: 27293
diff changeset
6840 dlgPaddingY = DLG_PADDING_Y;
574cd25f0962 patch 8.2.4189: MS-Windows: code for "old look" is obsolete
Bram Moolenaar <Bram@vim.org>
parents: 27293
diff changeset
6841
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
6842 GetTextMetrics(hdc, &fontInfo);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
6843 fontHeight = fontInfo.tmHeight;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
6844
18788
e1f4e9d78a6a patch 8.1.2383: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents: 18773
diff changeset
6845 // Minimum width for horizontal button
8090
54cfe888c627 commit https://github.com/vim/vim/commit/418f81b5fa400ed59793384f2f3d9df45390f080
Christian Brabandt <cb@256bit.org>
parents: 7856
diff changeset
6846 minButtonWidth = GetTextWidth(hdc, (char_u *)"Cancel", 6);
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
6847
18788
e1f4e9d78a6a patch 8.1.2383: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents: 18773
diff changeset
6848 // Maximum width of a dialog, if possible
158
78423945b251 updated for version 7.0048
vimboss
parents: 153
diff changeset
6849 if (s_hwnd == NULL)
78423945b251 updated for version 7.0048
vimboss
parents: 153
diff changeset
6850 {
78423945b251 updated for version 7.0048
vimboss
parents: 153
diff changeset
6851 RECT workarea_rect;
78423945b251 updated for version 7.0048
vimboss
parents: 153
diff changeset
6852
18788
e1f4e9d78a6a patch 8.1.2383: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents: 18773
diff changeset
6853 // We don't have a window, use the desktop area.
158
78423945b251 updated for version 7.0048
vimboss
parents: 153
diff changeset
6854 get_work_area(&workarea_rect);
78423945b251 updated for version 7.0048
vimboss
parents: 153
diff changeset
6855 maxDialogWidth = workarea_rect.right - workarea_rect.left - 100;
27160
4482dd5f8869 patch 8.2.4109: MS-Windows: high dpi support is outdated
Bram Moolenaar <Bram@vim.org>
parents: 26966
diff changeset
6856 if (maxDialogWidth > adjust_by_system_dpi(600))
4482dd5f8869 patch 8.2.4109: MS-Windows: high dpi support is outdated
Bram Moolenaar <Bram@vim.org>
parents: 26966
diff changeset
6857 maxDialogWidth = adjust_by_system_dpi(600);
18788
e1f4e9d78a6a patch 8.1.2383: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents: 18773
diff changeset
6858 // Leave some room for the taskbar.
5249
47a09a572ea6 updated for version 7.4b.001
Bram Moolenaar <bram@vim.org>
parents: 5225
diff changeset
6859 maxDialogHeight = workarea_rect.bottom - workarea_rect.top - 150;
158
78423945b251 updated for version 7.0048
vimboss
parents: 153
diff changeset
6860 }
78423945b251 updated for version 7.0048
vimboss
parents: 153
diff changeset
6861 else
78423945b251 updated for version 7.0048
vimboss
parents: 153
diff changeset
6862 {
18788
e1f4e9d78a6a patch 8.1.2383: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents: 18773
diff changeset
6863 // Use our own window for the size, unless it's very small.
5284
7ed1ec814daf updated for version 7.4b.018
Bram Moolenaar <bram@vim.org>
parents: 5249
diff changeset
6864 GetWindowRect(s_hwnd, &rect);
158
78423945b251 updated for version 7.0048
vimboss
parents: 153
diff changeset
6865 maxDialogWidth = rect.right - rect.left
27160
4482dd5f8869 patch 8.2.4109: MS-Windows: high dpi support is outdated
Bram Moolenaar <Bram@vim.org>
parents: 26966
diff changeset
6866 - (pGetSystemMetricsForDpi(SM_CXFRAME, dpi) +
4482dd5f8869 patch 8.2.4109: MS-Windows: high dpi support is outdated
Bram Moolenaar <Bram@vim.org>
parents: 26966
diff changeset
6867 pGetSystemMetricsForDpi(SM_CXPADDEDBORDER, dpi)) * 2;
4482dd5f8869 patch 8.2.4109: MS-Windows: high dpi support is outdated
Bram Moolenaar <Bram@vim.org>
parents: 26966
diff changeset
6868 if (maxDialogWidth < adjust_by_system_dpi(DLG_MIN_MAX_WIDTH))
4482dd5f8869 patch 8.2.4109: MS-Windows: high dpi support is outdated
Bram Moolenaar <Bram@vim.org>
parents: 26966
diff changeset
6869 maxDialogWidth = adjust_by_system_dpi(DLG_MIN_MAX_WIDTH);
158
78423945b251 updated for version 7.0048
vimboss
parents: 153
diff changeset
6870
78423945b251 updated for version 7.0048
vimboss
parents: 153
diff changeset
6871 maxDialogHeight = rect.bottom - rect.top
27160
4482dd5f8869 patch 8.2.4109: MS-Windows: high dpi support is outdated
Bram Moolenaar <Bram@vim.org>
parents: 26966
diff changeset
6872 - (pGetSystemMetricsForDpi(SM_CYFRAME, dpi) +
4482dd5f8869 patch 8.2.4109: MS-Windows: high dpi support is outdated
Bram Moolenaar <Bram@vim.org>
parents: 26966
diff changeset
6873 pGetSystemMetricsForDpi(SM_CXPADDEDBORDER, dpi)) * 4
4482dd5f8869 patch 8.2.4109: MS-Windows: high dpi support is outdated
Bram Moolenaar <Bram@vim.org>
parents: 26966
diff changeset
6874 - pGetSystemMetricsForDpi(SM_CYCAPTION, dpi);
4482dd5f8869 patch 8.2.4109: MS-Windows: high dpi support is outdated
Bram Moolenaar <Bram@vim.org>
parents: 26966
diff changeset
6875 if (maxDialogHeight < adjust_by_system_dpi(DLG_MIN_MAX_HEIGHT))
4482dd5f8869 patch 8.2.4109: MS-Windows: high dpi support is outdated
Bram Moolenaar <Bram@vim.org>
parents: 26966
diff changeset
6876 maxDialogHeight = adjust_by_system_dpi(DLG_MIN_MAX_HEIGHT);
158
78423945b251 updated for version 7.0048
vimboss
parents: 153
diff changeset
6877 }
78423945b251 updated for version 7.0048
vimboss
parents: 153
diff changeset
6878
18788
e1f4e9d78a6a patch 8.1.2383: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents: 18773
diff changeset
6879 // Set dlgwidth to width of message.
e1f4e9d78a6a patch 8.1.2383: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents: 18773
diff changeset
6880 // Copy the message into "ga", changing NL to CR-NL and inserting line
e1f4e9d78a6a patch 8.1.2383: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents: 18773
diff changeset
6881 // breaks where needed.
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
6882 pstart = message;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
6883 messageWidth = 0;
158
78423945b251 updated for version 7.0048
vimboss
parents: 153
diff changeset
6884 msgheight = 0;
78423945b251 updated for version 7.0048
vimboss
parents: 153
diff changeset
6885 ga_init2(&ga, sizeof(char), 500);
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
6886 do
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
6887 {
18788
e1f4e9d78a6a patch 8.1.2383: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents: 18773
diff changeset
6888 msgheight += fontHeight; // at least one line
e1f4e9d78a6a patch 8.1.2383: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents: 18773
diff changeset
6889
e1f4e9d78a6a patch 8.1.2383: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents: 18773
diff changeset
6890 // Need to figure out where to break the string. The system does it
e1f4e9d78a6a patch 8.1.2383: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents: 18773
diff changeset
6891 // at a word boundary, which would mean we can't compute the number of
e1f4e9d78a6a patch 8.1.2383: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents: 18773
diff changeset
6892 // wrapped lines.
158
78423945b251 updated for version 7.0048
vimboss
parents: 153
diff changeset
6893 textWidth = 0;
78423945b251 updated for version 7.0048
vimboss
parents: 153
diff changeset
6894 last_white = NULL;
78423945b251 updated for version 7.0048
vimboss
parents: 153
diff changeset
6895 for (pend = pstart; *pend != NUL && *pend != '\n'; )
153
19670b05ee32 updated for version 7.0047
vimboss
parents: 148
diff changeset
6896 {
474
a5fcf36ef512 updated for version 7.0127
vimboss
parents: 435
diff changeset
6897 l = (*mb_ptr2len)(pend);
11129
f4ea50924c6d patch 8.0.0452: some macros are in lower case
Christian Brabandt <cb@256bit.org>
parents: 10783
diff changeset
6898 if (l == 1 && VIM_ISWHITE(*pend)
158
78423945b251 updated for version 7.0048
vimboss
parents: 153
diff changeset
6899 && textWidth > maxDialogWidth * 3 / 4)
78423945b251 updated for version 7.0048
vimboss
parents: 153
diff changeset
6900 last_white = pend;
4999
b4a71dbdb787 updated for version 7.3.1244
Bram Moolenaar <bram@vim.org>
parents: 4352
diff changeset
6901 textWidth += GetTextWidthEnc(hdc, pend, l);
158
78423945b251 updated for version 7.0048
vimboss
parents: 153
diff changeset
6902 if (textWidth >= maxDialogWidth)
153
19670b05ee32 updated for version 7.0047
vimboss
parents: 148
diff changeset
6903 {
18788
e1f4e9d78a6a patch 8.1.2383: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents: 18773
diff changeset
6904 // Line will wrap.
158
78423945b251 updated for version 7.0048
vimboss
parents: 153
diff changeset
6905 messageWidth = maxDialogWidth;
153
19670b05ee32 updated for version 7.0047
vimboss
parents: 148
diff changeset
6906 msgheight += fontHeight;
158
78423945b251 updated for version 7.0048
vimboss
parents: 153
diff changeset
6907 textWidth = 0;
78423945b251 updated for version 7.0048
vimboss
parents: 153
diff changeset
6908
78423945b251 updated for version 7.0048
vimboss
parents: 153
diff changeset
6909 if (last_white != NULL)
78423945b251 updated for version 7.0048
vimboss
parents: 153
diff changeset
6910 {
18788
e1f4e9d78a6a patch 8.1.2383: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents: 18773
diff changeset
6911 // break the line just after a space
27160
4482dd5f8869 patch 8.2.4109: MS-Windows: high dpi support is outdated
Bram Moolenaar <Bram@vim.org>
parents: 26966
diff changeset
6912 if (pend > last_white)
4482dd5f8869 patch 8.2.4109: MS-Windows: high dpi support is outdated
Bram Moolenaar <Bram@vim.org>
parents: 26966
diff changeset
6913 ga.ga_len -= (int)(pend - (last_white + 1));
158
78423945b251 updated for version 7.0048
vimboss
parents: 153
diff changeset
6914 pend = last_white + 1;
78423945b251 updated for version 7.0048
vimboss
parents: 153
diff changeset
6915 last_white = NULL;
78423945b251 updated for version 7.0048
vimboss
parents: 153
diff changeset
6916 }
78423945b251 updated for version 7.0048
vimboss
parents: 153
diff changeset
6917 ga_append(&ga, '\r');
78423945b251 updated for version 7.0048
vimboss
parents: 153
diff changeset
6918 ga_append(&ga, '\n');
78423945b251 updated for version 7.0048
vimboss
parents: 153
diff changeset
6919 continue;
153
19670b05ee32 updated for version 7.0047
vimboss
parents: 148
diff changeset
6920 }
158
78423945b251 updated for version 7.0048
vimboss
parents: 153
diff changeset
6921
78423945b251 updated for version 7.0048
vimboss
parents: 153
diff changeset
6922 while (--l >= 0)
78423945b251 updated for version 7.0048
vimboss
parents: 153
diff changeset
6923 ga_append(&ga, *pend++);
153
19670b05ee32 updated for version 7.0047
vimboss
parents: 148
diff changeset
6924 }
158
78423945b251 updated for version 7.0048
vimboss
parents: 153
diff changeset
6925 if (textWidth > messageWidth)
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
6926 messageWidth = textWidth;
158
78423945b251 updated for version 7.0048
vimboss
parents: 153
diff changeset
6927
78423945b251 updated for version 7.0048
vimboss
parents: 153
diff changeset
6928 ga_append(&ga, '\r');
78423945b251 updated for version 7.0048
vimboss
parents: 153
diff changeset
6929 ga_append(&ga, '\n');
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
6930 pstart = pend + 1;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
6931 } while (*pend != NUL);
153
19670b05ee32 updated for version 7.0047
vimboss
parents: 148
diff changeset
6932
158
78423945b251 updated for version 7.0048
vimboss
parents: 153
diff changeset
6933 if (ga.ga_data != NULL)
78423945b251 updated for version 7.0048
vimboss
parents: 153
diff changeset
6934 message = ga.ga_data;
78423945b251 updated for version 7.0048
vimboss
parents: 153
diff changeset
6935
18788
e1f4e9d78a6a patch 8.1.2383: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents: 18773
diff changeset
6936 messageWidth += 10; // roundoff space
e1f4e9d78a6a patch 8.1.2383: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents: 18773
diff changeset
6937
27160
4482dd5f8869 patch 8.2.4109: MS-Windows: high dpi support is outdated
Bram Moolenaar <Bram@vim.org>
parents: 26966
diff changeset
6938 dlg_icon_width = adjust_by_system_dpi(DLG_ICON_WIDTH);
4482dd5f8869 patch 8.2.4109: MS-Windows: high dpi support is outdated
Bram Moolenaar <Bram@vim.org>
parents: 26966
diff changeset
6939 dlg_icon_height = adjust_by_system_dpi(DLG_ICON_HEIGHT);
4482dd5f8869 patch 8.2.4109: MS-Windows: high dpi support is outdated
Bram Moolenaar <Bram@vim.org>
parents: 26966
diff changeset
6940
18788
e1f4e9d78a6a patch 8.1.2383: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents: 18773
diff changeset
6941 // Add width of icon to dlgwidth, and some space
27160
4482dd5f8869 patch 8.2.4109: MS-Windows: high dpi support is outdated
Bram Moolenaar <Bram@vim.org>
parents: 26966
diff changeset
6942 dlgwidth = messageWidth + dlg_icon_width + 3 * dlgPaddingX
4482dd5f8869 patch 8.2.4109: MS-Windows: high dpi support is outdated
Bram Moolenaar <Bram@vim.org>
parents: 26966
diff changeset
6943 + pGetSystemMetricsForDpi(SM_CXVSCROLL, dpi);
4482dd5f8869 patch 8.2.4109: MS-Windows: high dpi support is outdated
Bram Moolenaar <Bram@vim.org>
parents: 26966
diff changeset
6944
4482dd5f8869 patch 8.2.4109: MS-Windows: high dpi support is outdated
Bram Moolenaar <Bram@vim.org>
parents: 26966
diff changeset
6945 if (msgheight < dlg_icon_height)
4482dd5f8869 patch 8.2.4109: MS-Windows: high dpi support is outdated
Bram Moolenaar <Bram@vim.org>
parents: 26966
diff changeset
6946 msgheight = dlg_icon_height;
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
6947
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
6948 /*
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
6949 * Check button names. A long one will make the dialog wider.
1116
e76a088056dd updated for version 7.0-242
vimboss
parents: 948
diff changeset
6950 * When called early (-register error message) p_go isn't initialized.
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
6951 */
1116
e76a088056dd updated for version 7.0-242
vimboss
parents: 948
diff changeset
6952 vertical = (p_go != NULL && vim_strchr(p_go, GO_VERTICAL) != NULL);
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
6953 if (!vertical)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
6954 {
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
6955 // Place buttons horizontally if they fit.
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
6956 horizWidth = dlgPaddingX;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
6957 pstart = tbuffer;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
6958 i = 0;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
6959 do
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
6960 {
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
6961 pend = vim_strchr(pstart, DLG_BUTTON_SEP);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
6962 if (pend == NULL)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
6963 pend = pstart + STRLEN(pstart); // Last button name.
5001
43329b2b5b79 updated for version 7.3.1245
Bram Moolenaar <bram@vim.org>
parents: 4999
diff changeset
6964 textWidth = GetTextWidthEnc(hdc, pstart, (int)(pend - pstart));
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
6965 if (textWidth < minButtonWidth)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
6966 textWidth = minButtonWidth;
18788
e1f4e9d78a6a patch 8.1.2383: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents: 18773
diff changeset
6967 textWidth += dlgPaddingX; // Padding within button
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
6968 buttonWidths[i] = textWidth;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
6969 buttonPositions[i++] = horizWidth;
18788
e1f4e9d78a6a patch 8.1.2383: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents: 18773
diff changeset
6970 horizWidth += textWidth + dlgPaddingX; // Pad between buttons
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
6971 pstart = pend + 1;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
6972 } while (*pend != NUL);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
6973
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
6974 if (horizWidth > maxDialogWidth)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
6975 vertical = TRUE; // Too wide to fit on the screen.
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
6976 else if (horizWidth > dlgwidth)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
6977 dlgwidth = horizWidth;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
6978 }
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
6979
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
6980 if (vertical)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
6981 {
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
6982 // Stack buttons vertically.
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
6983 pstart = tbuffer;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
6984 do
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
6985 {
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
6986 pend = vim_strchr(pstart, DLG_BUTTON_SEP);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
6987 if (pend == NULL)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
6988 pend = pstart + STRLEN(pstart); // Last button name.
5001
43329b2b5b79 updated for version 7.3.1245
Bram Moolenaar <bram@vim.org>
parents: 4999
diff changeset
6989 textWidth = GetTextWidthEnc(hdc, pstart, (int)(pend - pstart));
18788
e1f4e9d78a6a patch 8.1.2383: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents: 18773
diff changeset
6990 textWidth += dlgPaddingX; // Padding within button
e1f4e9d78a6a patch 8.1.2383: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents: 18773
diff changeset
6991 textWidth += DLG_VERT_PADDING_X * 2; // Padding around button
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
6992 if (textWidth > dlgwidth)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
6993 dlgwidth = textWidth;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
6994 pstart = pend + 1;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
6995 } while (*pend != NUL);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
6996 }
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
6997
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
6998 if (dlgwidth < DLG_MIN_WIDTH)
18788
e1f4e9d78a6a patch 8.1.2383: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents: 18773
diff changeset
6999 dlgwidth = DLG_MIN_WIDTH; // Don't allow a really thin dialog!
e1f4e9d78a6a patch 8.1.2383: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents: 18773
diff changeset
7000
e1f4e9d78a6a patch 8.1.2383: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents: 18773
diff changeset
7001 // start to fill in the dlgtemplate information. addressing by WORDs
27322
574cd25f0962 patch 8.2.4189: MS-Windows: code for "old look" is obsolete
Bram Moolenaar <Bram@vim.org>
parents: 27293
diff changeset
7002 lStyle = DS_MODALFRAME | WS_CAPTION | DS_3DLOOK | WS_VISIBLE | DS_SETFONT;
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
7003
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
7004 add_long(lStyle);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
7005 add_long(0); // (lExtendedStyle)
18788
e1f4e9d78a6a patch 8.1.2383: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents: 18773
diff changeset
7006 pnumitems = p; //save where the number of items must be stored
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
7007 add_word(0); // NumberOfItems(will change later)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
7008 add_word(10); // x
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
7009 add_word(10); // y
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
7010 add_word(PixelToDialogX(dlgwidth)); // cx
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
7011
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
7012 // Dialog height.
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
7013 if (vertical)
5284
7ed1ec814daf updated for version 7.4b.018
Bram Moolenaar <bram@vim.org>
parents: 5249
diff changeset
7014 dlgheight = msgheight + 2 * dlgPaddingY
7ed1ec814daf updated for version 7.4b.018
Bram Moolenaar <bram@vim.org>
parents: 5249
diff changeset
7015 + DLG_VERT_PADDING_Y + 2 * fontHeight * numButtons;
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
7016 else
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
7017 dlgheight = msgheight + 3 * dlgPaddingY + 2 * fontHeight;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
7018
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
7019 // Dialog needs to be taller if contains an edit box.
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
7020 editboxheight = fontHeight + dlgPaddingY + 4 * DLG_VERT_PADDING_Y;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
7021 if (textfield != NULL)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
7022 dlgheight += editboxheight;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
7023
18788
e1f4e9d78a6a patch 8.1.2383: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents: 18773
diff changeset
7024 // Restrict the size to a maximum. Causes a scrollbar to show up.
5284
7ed1ec814daf updated for version 7.4b.018
Bram Moolenaar <bram@vim.org>
parents: 5249
diff changeset
7025 if (dlgheight > maxDialogHeight)
7ed1ec814daf updated for version 7.4b.018
Bram Moolenaar <bram@vim.org>
parents: 5249
diff changeset
7026 {
6110
1bff71d20262 updated for version 7.4.393
Bram Moolenaar <bram@vim.org>
parents: 5284
diff changeset
7027 msgheight = msgheight - (dlgheight - maxDialogHeight);
1bff71d20262 updated for version 7.4.393
Bram Moolenaar <bram@vim.org>
parents: 5284
diff changeset
7028 dlgheight = maxDialogHeight;
1bff71d20262 updated for version 7.4.393
Bram Moolenaar <bram@vim.org>
parents: 5284
diff changeset
7029 scroll_flag = WS_VSCROLL;
18788
e1f4e9d78a6a patch 8.1.2383: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents: 18773
diff changeset
7030 // Make sure scrollbar doesn't appear in the middle of the dialog
27160
4482dd5f8869 patch 8.2.4109: MS-Windows: high dpi support is outdated
Bram Moolenaar <Bram@vim.org>
parents: 26966
diff changeset
7031 messageWidth = dlgwidth - dlg_icon_width - 3 * dlgPaddingX;
5284
7ed1ec814daf updated for version 7.4b.018
Bram Moolenaar <bram@vim.org>
parents: 5249
diff changeset
7032 }
7ed1ec814daf updated for version 7.4b.018
Bram Moolenaar <bram@vim.org>
parents: 5249
diff changeset
7033
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
7034 add_word(PixelToDialogY(dlgheight));
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
7035
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
7036 add_word(0); // Menu
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
7037 add_word(0); // Class
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
7038
18788
e1f4e9d78a6a patch 8.1.2383: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents: 18773
diff changeset
7039 // copy the title of the dialog
12543
e9028055f6d6 patch 8.0.1150: MS-Windows GUI: dialog font size is incorrect
Christian Brabandt <cb@256bit.org>
parents: 12513
diff changeset
7040 nchar = nCopyAnsiToWideChar(p, (title ? (LPSTR)title
e9028055f6d6 patch 8.0.1150: MS-Windows GUI: dialog font size is incorrect
Christian Brabandt <cb@256bit.org>
parents: 12513
diff changeset
7041 : (LPSTR)("Vim "VIM_VERSION_MEDIUM)), TRUE);
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
7042 p += nchar;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
7043
27322
574cd25f0962 patch 8.2.4189: MS-Windows: code for "old look" is obsolete
Bram Moolenaar <Bram@vim.org>
parents: 27293
diff changeset
7044 // do the font, since DS_3DLOOK doesn't work properly
18773
38a3bef525e6 patch 8.1.2376: preprocessor indents are incorrect
Bram Moolenaar <Bram@vim.org>
parents: 18763
diff changeset
7045 # ifdef USE_SYSMENU_FONT
27322
574cd25f0962 patch 8.2.4189: MS-Windows: code for "old look" is obsolete
Bram Moolenaar <Bram@vim.org>
parents: 27293
diff changeset
7046 if (use_lfSysmenu)
574cd25f0962 patch 8.2.4189: MS-Windows: code for "old look" is obsolete
Bram Moolenaar <Bram@vim.org>
parents: 27293
diff changeset
7047 {
574cd25f0962 patch 8.2.4189: MS-Windows: code for "old look" is obsolete
Bram Moolenaar <Bram@vim.org>
parents: 27293
diff changeset
7048 // point size
574cd25f0962 patch 8.2.4189: MS-Windows: code for "old look" is obsolete
Bram Moolenaar <Bram@vim.org>
parents: 27293
diff changeset
7049 *p++ = -MulDiv(lfSysmenu.lfHeight, 72,
574cd25f0962 patch 8.2.4189: MS-Windows: code for "old look" is obsolete
Bram Moolenaar <Bram@vim.org>
parents: 27293
diff changeset
7050 GetDeviceCaps(hdc, LOGPIXELSY));
574cd25f0962 patch 8.2.4189: MS-Windows: code for "old look" is obsolete
Bram Moolenaar <Bram@vim.org>
parents: 27293
diff changeset
7051 wcscpy(p, lfSysmenu.lfFaceName);
574cd25f0962 patch 8.2.4189: MS-Windows: code for "old look" is obsolete
Bram Moolenaar <Bram@vim.org>
parents: 27293
diff changeset
7052 nchar = (int)wcslen(lfSysmenu.lfFaceName) + 1;
574cd25f0962 patch 8.2.4189: MS-Windows: code for "old look" is obsolete
Bram Moolenaar <Bram@vim.org>
parents: 27293
diff changeset
7053 }
574cd25f0962 patch 8.2.4189: MS-Windows: code for "old look" is obsolete
Bram Moolenaar <Bram@vim.org>
parents: 27293
diff changeset
7054 else
18773
38a3bef525e6 patch 8.1.2376: preprocessor indents are incorrect
Bram Moolenaar <Bram@vim.org>
parents: 18763
diff changeset
7055 # endif
27322
574cd25f0962 patch 8.2.4189: MS-Windows: code for "old look" is obsolete
Bram Moolenaar <Bram@vim.org>
parents: 27293
diff changeset
7056 {
574cd25f0962 patch 8.2.4189: MS-Windows: code for "old look" is obsolete
Bram Moolenaar <Bram@vim.org>
parents: 27293
diff changeset
7057 *p++ = DLG_FONT_POINT_SIZE; // point size
574cd25f0962 patch 8.2.4189: MS-Windows: code for "old look" is obsolete
Bram Moolenaar <Bram@vim.org>
parents: 27293
diff changeset
7058 nchar = nCopyAnsiToWideChar(p, DLG_FONT_NAME, FALSE);
574cd25f0962 patch 8.2.4189: MS-Windows: code for "old look" is obsolete
Bram Moolenaar <Bram@vim.org>
parents: 27293
diff changeset
7059 }
574cd25f0962 patch 8.2.4189: MS-Windows: code for "old look" is obsolete
Bram Moolenaar <Bram@vim.org>
parents: 27293
diff changeset
7060 p += nchar;
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
7061
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
7062 buttonYpos = msgheight + 2 * dlgPaddingY;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
7063
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
7064 if (textfield != NULL)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
7065 buttonYpos += editboxheight;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
7066
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
7067 pstart = tbuffer;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
7068 if (!vertical)
18788
e1f4e9d78a6a patch 8.1.2383: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents: 18773
diff changeset
7069 horizWidth = (dlgwidth - horizWidth) / 2; // Now it's X offset
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
7070 for (i = 0; i < numButtons; i++)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
7071 {
18788
e1f4e9d78a6a patch 8.1.2383: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents: 18773
diff changeset
7072 // get end of this button.
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
7073 for ( pend = pstart;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
7074 *pend && (*pend != DLG_BUTTON_SEP);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
7075 pend++)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
7076 ;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
7077
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
7078 if (*pend)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
7079 *pend = '\0';
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
7080
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
7081 /*
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
7082 * old NOTE:
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
7083 * setting the BS_DEFPUSHBUTTON style doesn't work because Windows sets
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
7084 * the focus to the first tab-able button and in so doing makes that
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
7085 * the default!! Grrr. Workaround: Make the default button the only
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
7086 * one with WS_TABSTOP style. Means user can't tab between buttons, but
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
7087 * he/she can use arrow keys.
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
7088 *
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
7089 * new NOTE: BS_DEFPUSHBUTTON is required to be able to select the
1213
8906c10ecbb0 updated for version 7.1b
vimboss
parents: 1153
diff changeset
7090 * right button when hitting <Enter>. E.g., for the ":confirm quit"
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
7091 * dialog. Also needed for when the textfield is the default control.
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
7092 * It appears to work now (perhaps not on Win95?).
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
7093 */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
7094 if (vertical)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
7095 {
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
7096 p = add_dialog_element(p,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
7097 (i == dfltbutton
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
7098 ? BS_DEFPUSHBUTTON : BS_PUSHBUTTON) | WS_TABSTOP,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
7099 PixelToDialogX(DLG_VERT_PADDING_X),
18788
e1f4e9d78a6a patch 8.1.2383: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents: 18773
diff changeset
7100 PixelToDialogY(buttonYpos // TBK
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
7101 + 2 * fontHeight * i),
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
7102 PixelToDialogX(dlgwidth - 2 * DLG_VERT_PADDING_X),
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
7103 (WORD)(PixelToDialogY(2 * fontHeight) - 1),
8090
54cfe888c627 commit https://github.com/vim/vim/commit/418f81b5fa400ed59793384f2f3d9df45390f080
Christian Brabandt <cb@256bit.org>
parents: 7856
diff changeset
7104 (WORD)(IDCANCEL + 1 + i), (WORD)0x0080, (char *)pstart);
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
7105 }
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
7106 else
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
7107 {
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
7108 p = add_dialog_element(p,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
7109 (i == dfltbutton
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
7110 ? BS_DEFPUSHBUTTON : BS_PUSHBUTTON) | WS_TABSTOP,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
7111 PixelToDialogX(horizWidth + buttonPositions[i]),
18788
e1f4e9d78a6a patch 8.1.2383: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents: 18773
diff changeset
7112 PixelToDialogY(buttonYpos), // TBK
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
7113 PixelToDialogX(buttonWidths[i]),
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
7114 (WORD)(PixelToDialogY(2 * fontHeight) - 1),
8090
54cfe888c627 commit https://github.com/vim/vim/commit/418f81b5fa400ed59793384f2f3d9df45390f080
Christian Brabandt <cb@256bit.org>
parents: 7856
diff changeset
7115 (WORD)(IDCANCEL + 1 + i), (WORD)0x0080, (char *)pstart);
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
7116 }
18788
e1f4e9d78a6a patch 8.1.2383: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents: 18773
diff changeset
7117 pstart = pend + 1; //next button
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
7118 }
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
7119 *pnumitems += numButtons;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
7120
18788
e1f4e9d78a6a patch 8.1.2383: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents: 18773
diff changeset
7121 // Vim icon
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
7122 p = add_dialog_element(p, SS_ICON,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
7123 PixelToDialogX(dlgPaddingX),
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
7124 PixelToDialogY(dlgPaddingY),
27160
4482dd5f8869 patch 8.2.4109: MS-Windows: high dpi support is outdated
Bram Moolenaar <Bram@vim.org>
parents: 26966
diff changeset
7125 PixelToDialogX(dlg_icon_width),
4482dd5f8869 patch 8.2.4109: MS-Windows: high dpi support is outdated
Bram Moolenaar <Bram@vim.org>
parents: 26966
diff changeset
7126 PixelToDialogY(dlg_icon_height),
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
7127 DLG_NONBUTTON_CONTROL + 0, (WORD)0x0082,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
7128 dlg_icons[type]);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
7129
18788
e1f4e9d78a6a patch 8.1.2383: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents: 18773
diff changeset
7130 // Dialog message
153
19670b05ee32 updated for version 7.0047
vimboss
parents: 148
diff changeset
7131 p = add_dialog_element(p, ES_LEFT|scroll_flag|ES_MULTILINE|ES_READONLY,
27160
4482dd5f8869 patch 8.2.4109: MS-Windows: high dpi support is outdated
Bram Moolenaar <Bram@vim.org>
parents: 26966
diff changeset
7132 PixelToDialogX(2 * dlgPaddingX + dlg_icon_width),
153
19670b05ee32 updated for version 7.0047
vimboss
parents: 148
diff changeset
7133 PixelToDialogY(dlgPaddingY),
19670b05ee32 updated for version 7.0047
vimboss
parents: 148
diff changeset
7134 (WORD)(PixelToDialogX(messageWidth) + 1),
19670b05ee32 updated for version 7.0047
vimboss
parents: 148
diff changeset
7135 PixelToDialogY(msgheight),
8090
54cfe888c627 commit https://github.com/vim/vim/commit/418f81b5fa400ed59793384f2f3d9df45390f080
Christian Brabandt <cb@256bit.org>
parents: 7856
diff changeset
7136 DLG_NONBUTTON_CONTROL + 1, (WORD)0x0081, (char *)message);
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
7137
18788
e1f4e9d78a6a patch 8.1.2383: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents: 18773
diff changeset
7138 // Edit box
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
7139 if (textfield != NULL)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
7140 {
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
7141 p = add_dialog_element(p, ES_LEFT|ES_AUTOHSCROLL|WS_TABSTOP|WS_BORDER,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
7142 PixelToDialogX(2 * dlgPaddingX),
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
7143 PixelToDialogY(2 * dlgPaddingY + msgheight),
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
7144 PixelToDialogX(dlgwidth - 4 * dlgPaddingX),
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
7145 PixelToDialogY(fontHeight + dlgPaddingY),
8090
54cfe888c627 commit https://github.com/vim/vim/commit/418f81b5fa400ed59793384f2f3d9df45390f080
Christian Brabandt <cb@256bit.org>
parents: 7856
diff changeset
7146 DLG_NONBUTTON_CONTROL + 2, (WORD)0x0081, (char *)textfield);
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
7147 *pnumitems += 1;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
7148 }
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
7149
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
7150 *pnumitems += 2;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
7151
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
7152 SelectFont(hdc, oldFont);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
7153 DeleteObject(font);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
7154 ReleaseDC(hwnd, hdc);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
7155
18788
e1f4e9d78a6a patch 8.1.2383: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents: 18773
diff changeset
7156 // Let the dialog_callback() function know which button to make default
e1f4e9d78a6a patch 8.1.2383: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents: 18773
diff changeset
7157 // If we have an edit box, make that the default. We also need to tell
e1f4e9d78a6a patch 8.1.2383: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents: 18773
diff changeset
7158 // dialog_callback() if this dialog contains an edit box or not. We do
e1f4e9d78a6a patch 8.1.2383: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents: 18773
diff changeset
7159 // this by setting s_textfield if it does.
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
7160 if (textfield != NULL)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
7161 {
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
7162 dialog_default_button = DLG_NONBUTTON_CONTROL + 2;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
7163 s_textfield = textfield;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
7164 }
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
7165 else
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
7166 {
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
7167 dialog_default_button = IDCANCEL + 1 + dfltbutton;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
7168 s_textfield = NULL;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
7169 }
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
7170
18788
e1f4e9d78a6a patch 8.1.2383: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents: 18773
diff changeset
7171 // show the dialog box modally and get a return value
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
7172 nchar = (int)DialogBoxIndirect(
16451
7ae2396cef62 patch 8.1.1230: a lot of code is shared between vim.exe and gvim.exe
Bram Moolenaar <Bram@vim.org>
parents: 16439
diff changeset
7173 g_hinst,
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
7174 (LPDLGTEMPLATE)pdlgtemplate,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
7175 s_hwnd,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
7176 (DLGPROC)dialog_callback);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
7177
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
7178 LocalFree(LocalHandle(pdlgtemplate));
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
7179 vim_free(tbuffer);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
7180 vim_free(buttonWidths);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
7181 vim_free(buttonPositions);
158
78423945b251 updated for version 7.0048
vimboss
parents: 153
diff changeset
7182 vim_free(ga.ga_data);
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
7183
18788
e1f4e9d78a6a patch 8.1.2383: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents: 18773
diff changeset
7184 // Focus back to our window (for when MDI is used).
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
7185 (void)SetFocus(s_hwnd);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
7186
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
7187 return nchar;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
7188 }
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
7189
18788
e1f4e9d78a6a patch 8.1.2383: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents: 18773
diff changeset
7190 #endif // FEAT_GUI_DIALOG
840
2c885fab04e3 updated for version 7.0e06
vimboss
parents: 837
diff changeset
7191
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
7192 /*
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
7193 * Put a simple element (basic class) onto a dialog template in memory.
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
7194 * return a pointer to where the next item should be added.
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
7195 *
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
7196 * parameters:
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
7197 * lStyle = additional style flags
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
7198 * (be careful, NT3.51 & Win32s will ignore the new ones)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
7199 * x,y = x & y positions IN DIALOG UNITS
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
7200 * w,h = width and height IN DIALOG UNITS
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
7201 * Id = ID used in messages
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
7202 * clss = class ID, e.g 0x0080 for a button, 0x0082 for a static
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
7203 * caption = usually text or resource name
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
7204 *
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
7205 * TODO: use the length information noted here to enable the dialog creation
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
7206 * routines to work out more exactly how much memory they need to alloc.
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
7207 */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
7208 static PWORD
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
7209 add_dialog_element(
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
7210 PWORD p,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
7211 DWORD lStyle,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
7212 WORD x,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
7213 WORD y,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
7214 WORD w,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
7215 WORD h,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
7216 WORD Id,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
7217 WORD clss,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
7218 const char *caption)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
7219 {
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
7220 int nchar;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
7221
18788
e1f4e9d78a6a patch 8.1.2383: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents: 18773
diff changeset
7222 p = lpwAlign(p); // Align to dword boundary
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
7223 lStyle = lStyle | WS_VISIBLE | WS_CHILD;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
7224 *p++ = LOWORD(lStyle);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
7225 *p++ = HIWORD(lStyle);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
7226 *p++ = 0; // LOWORD (lExtendedStyle)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
7227 *p++ = 0; // HIWORD (lExtendedStyle)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
7228 *p++ = x;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
7229 *p++ = y;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
7230 *p++ = w;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
7231 *p++ = h;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
7232 *p++ = Id; //9 or 10 words in all
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
7233
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
7234 *p++ = (WORD)0xffff;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
7235 *p++ = clss; //2 more here
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
7236
12543
e9028055f6d6 patch 8.0.1150: MS-Windows GUI: dialog font size is incorrect
Christian Brabandt <cb@256bit.org>
parents: 12513
diff changeset
7237 nchar = nCopyAnsiToWideChar(p, (LPSTR)caption, TRUE); //strlen(caption)+1
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
7238 p += nchar;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
7239
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
7240 *p++ = 0; // advance pointer over nExtraStuff WORD - 2 more
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
7241
26771
fc859aea8cec patch 8.2.3914: various spelling mistakes in comments
Bram Moolenaar <Bram@vim.org>
parents: 24804
diff changeset
7242 return p; // total = 15 + strlen(caption) words
fc859aea8cec patch 8.2.3914: various spelling mistakes in comments
Bram Moolenaar <Bram@vim.org>
parents: 24804
diff changeset
7243 // bytes read = 2 * total
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
7244 }
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
7245
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
7246
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
7247 /*
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
7248 * Helper routine. Take an input pointer, return closest pointer that is
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
7249 * aligned on a DWORD (4 byte) boundary. Taken from the Win32SDK samples.
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
7250 */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
7251 static LPWORD
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
7252 lpwAlign(
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
7253 LPWORD lpIn)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
7254 {
840
2c885fab04e3 updated for version 7.0e06
vimboss
parents: 837
diff changeset
7255 long_u ul;
2c885fab04e3 updated for version 7.0e06
vimboss
parents: 837
diff changeset
7256
2c885fab04e3 updated for version 7.0e06
vimboss
parents: 837
diff changeset
7257 ul = (long_u)lpIn;
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
7258 ul += 3;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
7259 ul >>= 2;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
7260 ul <<= 2;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
7261 return (LPWORD)ul;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
7262 }
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
7263
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
7264 /*
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
7265 * Helper routine. Takes second parameter as Ansi string, copies it to first
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
7266 * parameter as wide character (16-bits / char) string, and returns integer
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
7267 * number of wide characters (words) in string (including the trailing wide
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
7268 * char NULL). Partly taken from the Win32SDK samples.
12543
e9028055f6d6 patch 8.0.1150: MS-Windows GUI: dialog font size is incorrect
Christian Brabandt <cb@256bit.org>
parents: 12513
diff changeset
7269 * If "use_enc" is TRUE, 'encoding' is used for "lpAnsiIn". If FALSE, current
e9028055f6d6 patch 8.0.1150: MS-Windows GUI: dialog font size is incorrect
Christian Brabandt <cb@256bit.org>
parents: 12513
diff changeset
7270 * ACP is used for "lpAnsiIn". */
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
7271 static int
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
7272 nCopyAnsiToWideChar(
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
7273 LPWORD lpWCStr,
12543
e9028055f6d6 patch 8.0.1150: MS-Windows GUI: dialog font size is incorrect
Christian Brabandt <cb@256bit.org>
parents: 12513
diff changeset
7274 LPSTR lpAnsiIn,
e9028055f6d6 patch 8.0.1150: MS-Windows GUI: dialog font size is incorrect
Christian Brabandt <cb@256bit.org>
parents: 12513
diff changeset
7275 BOOL use_enc)
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
7276 {
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
7277 int nChar = 0;
18788
e1f4e9d78a6a patch 8.1.2383: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents: 18773
diff changeset
7278 int len = lstrlen(lpAnsiIn) + 1; // include NUL character
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
7279 int i;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
7280 WCHAR *wn;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
7281
12543
e9028055f6d6 patch 8.0.1150: MS-Windows GUI: dialog font size is incorrect
Christian Brabandt <cb@256bit.org>
parents: 12513
diff changeset
7282 if (use_enc && enc_codepage >= 0 && (int)GetACP() != enc_codepage)
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
7283 {
18788
e1f4e9d78a6a patch 8.1.2383: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents: 18773
diff changeset
7284 // Not a codepage, use our own conversion function.
8090
54cfe888c627 commit https://github.com/vim/vim/commit/418f81b5fa400ed59793384f2f3d9df45390f080
Christian Brabandt <cb@256bit.org>
parents: 7856
diff changeset
7285 wn = enc_to_utf16((char_u *)lpAnsiIn, NULL);
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
7286 if (wn != NULL)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
7287 {
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
7288 wcscpy(lpWCStr, wn);
835
8bebcabccc2c updated for version 7.0e01
vimboss
parents: 824
diff changeset
7289 nChar = (int)wcslen(wn) + 1;
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
7290 vim_free(wn);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
7291 }
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
7292 }
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
7293 if (nChar == 0)
18788
e1f4e9d78a6a patch 8.1.2383: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents: 18773
diff changeset
7294 // Use Win32 conversion function.
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
7295 nChar = MultiByteToWideChar(
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
7296 enc_codepage > 0 ? enc_codepage : CP_ACP,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
7297 MB_PRECOMPOSED,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
7298 lpAnsiIn, len,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
7299 lpWCStr, len);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
7300 for (i = 0; i < nChar; ++i)
18788
e1f4e9d78a6a patch 8.1.2383: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents: 18773
diff changeset
7301 if (lpWCStr[i] == (WORD)'\t') // replace tabs with spaces
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
7302 lpWCStr[i] = (WORD)' ';
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
7303
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
7304 return nChar;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
7305 }
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
7306
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
7307
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
7308 #ifdef FEAT_TEAROFF
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
7309 /*
12668
637096f179c4 patch 8.0.1212: MS-Windows: tear-off menu does not work on 64 bit
Christian Brabandt <cb@256bit.org>
parents: 12666
diff changeset
7310 * Lookup menu handle from "menu_id".
637096f179c4 patch 8.0.1212: MS-Windows: tear-off menu does not work on 64 bit
Christian Brabandt <cb@256bit.org>
parents: 12666
diff changeset
7311 */
637096f179c4 patch 8.0.1212: MS-Windows: tear-off menu does not work on 64 bit
Christian Brabandt <cb@256bit.org>
parents: 12666
diff changeset
7312 static HMENU
637096f179c4 patch 8.0.1212: MS-Windows: tear-off menu does not work on 64 bit
Christian Brabandt <cb@256bit.org>
parents: 12666
diff changeset
7313 tearoff_lookup_menuhandle(
637096f179c4 patch 8.0.1212: MS-Windows: tear-off menu does not work on 64 bit
Christian Brabandt <cb@256bit.org>
parents: 12666
diff changeset
7314 vimmenu_T *menu,
637096f179c4 patch 8.0.1212: MS-Windows: tear-off menu does not work on 64 bit
Christian Brabandt <cb@256bit.org>
parents: 12666
diff changeset
7315 WORD menu_id)
637096f179c4 patch 8.0.1212: MS-Windows: tear-off menu does not work on 64 bit
Christian Brabandt <cb@256bit.org>
parents: 12666
diff changeset
7316 {
637096f179c4 patch 8.0.1212: MS-Windows: tear-off menu does not work on 64 bit
Christian Brabandt <cb@256bit.org>
parents: 12666
diff changeset
7317 for ( ; menu != NULL; menu = menu->next)
637096f179c4 patch 8.0.1212: MS-Windows: tear-off menu does not work on 64 bit
Christian Brabandt <cb@256bit.org>
parents: 12666
diff changeset
7318 {
18788
e1f4e9d78a6a patch 8.1.2383: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents: 18773
diff changeset
7319 if (menu->modes == 0) // this menu has just been deleted
12668
637096f179c4 patch 8.0.1212: MS-Windows: tear-off menu does not work on 64 bit
Christian Brabandt <cb@256bit.org>
parents: 12666
diff changeset
7320 continue;
637096f179c4 patch 8.0.1212: MS-Windows: tear-off menu does not work on 64 bit
Christian Brabandt <cb@256bit.org>
parents: 12666
diff changeset
7321 if (menu_is_separator(menu->dname))
637096f179c4 patch 8.0.1212: MS-Windows: tear-off menu does not work on 64 bit
Christian Brabandt <cb@256bit.org>
parents: 12666
diff changeset
7322 continue;
637096f179c4 patch 8.0.1212: MS-Windows: tear-off menu does not work on 64 bit
Christian Brabandt <cb@256bit.org>
parents: 12666
diff changeset
7323 if ((WORD)((long_u)(menu->submenu_id) | (DWORD)0x8000) == menu_id)
637096f179c4 patch 8.0.1212: MS-Windows: tear-off menu does not work on 64 bit
Christian Brabandt <cb@256bit.org>
parents: 12666
diff changeset
7324 return menu->submenu_id;
637096f179c4 patch 8.0.1212: MS-Windows: tear-off menu does not work on 64 bit
Christian Brabandt <cb@256bit.org>
parents: 12666
diff changeset
7325 }
637096f179c4 patch 8.0.1212: MS-Windows: tear-off menu does not work on 64 bit
Christian Brabandt <cb@256bit.org>
parents: 12666
diff changeset
7326 return NULL;
637096f179c4 patch 8.0.1212: MS-Windows: tear-off menu does not work on 64 bit
Christian Brabandt <cb@256bit.org>
parents: 12666
diff changeset
7327 }
637096f179c4 patch 8.0.1212: MS-Windows: tear-off menu does not work on 64 bit
Christian Brabandt <cb@256bit.org>
parents: 12666
diff changeset
7328
637096f179c4 patch 8.0.1212: MS-Windows: tear-off menu does not work on 64 bit
Christian Brabandt <cb@256bit.org>
parents: 12666
diff changeset
7329 /*
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
7330 * The callback function for all the modeless dialogs that make up the
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
7331 * "tearoff menus" Very simple - forward button presses (to fool Vim into
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
7332 * thinking its menus have been clicked), and go away when closed.
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
7333 */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
7334 static LRESULT CALLBACK
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
7335 tearoff_callback(
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
7336 HWND hwnd,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
7337 UINT message,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
7338 WPARAM wParam,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
7339 LPARAM lParam)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
7340 {
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
7341 if (message == WM_INITDIALOG)
12668
637096f179c4 patch 8.0.1212: MS-Windows: tear-off menu does not work on 64 bit
Christian Brabandt <cb@256bit.org>
parents: 12666
diff changeset
7342 {
637096f179c4 patch 8.0.1212: MS-Windows: tear-off menu does not work on 64 bit
Christian Brabandt <cb@256bit.org>
parents: 12666
diff changeset
7343 SetWindowLongPtr(hwnd, DWLP_USER, (LONG_PTR)lParam);
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
7344 return (TRUE);
12668
637096f179c4 patch 8.0.1212: MS-Windows: tear-off menu does not work on 64 bit
Christian Brabandt <cb@256bit.org>
parents: 12666
diff changeset
7345 }
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
7346
18788
e1f4e9d78a6a patch 8.1.2383: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents: 18773
diff changeset
7347 // May show the mouse pointer again.
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
7348 HandleMouseHide(message, lParam);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
7349
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
7350 if (message == WM_COMMAND)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
7351 {
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
7352 if ((WORD)(LOWORD(wParam)) & 0x8000)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
7353 {
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
7354 POINT mp;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
7355 RECT rect;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
7356
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
7357 if (GetCursorPos(&mp) && GetWindowRect(hwnd, &rect))
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
7358 {
12668
637096f179c4 patch 8.0.1212: MS-Windows: tear-off menu does not work on 64 bit
Christian Brabandt <cb@256bit.org>
parents: 12666
diff changeset
7359 vimmenu_T *menu;
637096f179c4 patch 8.0.1212: MS-Windows: tear-off menu does not work on 64 bit
Christian Brabandt <cb@256bit.org>
parents: 12666
diff changeset
7360
637096f179c4 patch 8.0.1212: MS-Windows: tear-off menu does not work on 64 bit
Christian Brabandt <cb@256bit.org>
parents: 12666
diff changeset
7361 menu = (vimmenu_T*)GetWindowLongPtr(hwnd, DWLP_USER);
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
7362 (void)TrackPopupMenu(
12668
637096f179c4 patch 8.0.1212: MS-Windows: tear-off menu does not work on 64 bit
Christian Brabandt <cb@256bit.org>
parents: 12666
diff changeset
7363 tearoff_lookup_menuhandle(menu, LOWORD(wParam)),
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
7364 TPM_LEFTALIGN | TPM_LEFTBUTTON,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
7365 (int)rect.right - 8,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
7366 (int)mp.y,
18788
e1f4e9d78a6a patch 8.1.2383: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents: 18773
diff changeset
7367 (int)0, // reserved param
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
7368 s_hwnd,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
7369 NULL);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
7370 /*
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
7371 * NOTE: The pop-up menu can eat the mouse up event.
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
7372 * We deal with this in normal.c.
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
7373 */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
7374 }
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
7375 }
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
7376 else
18788
e1f4e9d78a6a patch 8.1.2383: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents: 18773
diff changeset
7377 // Pass on messages to the main Vim window
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
7378 PostMessage(s_hwnd, WM_COMMAND, LOWORD(wParam), 0);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
7379 /*
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
7380 * Give main window the focus back: this is so after
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
7381 * choosing a tearoff button you can start typing again
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
7382 * straight away.
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
7383 */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
7384 (void)SetFocus(s_hwnd);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
7385 return TRUE;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
7386 }
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
7387 if ((message == WM_SYSCOMMAND) && (wParam == SC_CLOSE))
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
7388 {
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
7389 DestroyWindow(hwnd);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
7390 return TRUE;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
7391 }
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
7392
18788
e1f4e9d78a6a patch 8.1.2383: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents: 18773
diff changeset
7393 // When moved around, give main window the focus back.
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
7394 if (message == WM_EXITSIZEMOVE)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
7395 (void)SetActiveWindow(s_hwnd);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
7396
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
7397 return FALSE;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
7398 }
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
7399 #endif
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
7400
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
7401
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
7402 /*
27322
574cd25f0962 patch 8.2.4189: MS-Windows: code for "old look" is obsolete
Bram Moolenaar <Bram@vim.org>
parents: 27293
diff changeset
7403 * Computes the dialog base units based on the current dialog font.
574cd25f0962 patch 8.2.4189: MS-Windows: code for "old look" is obsolete
Bram Moolenaar <Bram@vim.org>
parents: 27293
diff changeset
7404 * We don't use the GetDialogBaseUnits() API, because we don't use the
574cd25f0962 patch 8.2.4189: MS-Windows: code for "old look" is obsolete
Bram Moolenaar <Bram@vim.org>
parents: 27293
diff changeset
7405 * (old-style) system font.
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
7406 */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
7407 static void
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
7408 get_dialog_font_metrics(void)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
7409 {
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
7410 HDC hdc;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
7411 HFONT hfontTools = 0;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
7412 SIZE size;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
7413 #ifdef USE_SYSMENU_FONT
16152
8f4eccaaf2c0 patch 8.1.1081: MS-Windows: cannot use some fonts
Bram Moolenaar <Bram@vim.org>
parents: 16123
diff changeset
7414 LOGFONTW lfSysmenu;
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
7415 #endif
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
7416
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
7417 #ifdef USE_SYSMENU_FONT
10264
c036c0f636d5 commit https://github.com/vim/vim/commit/cea912af725c54f4727a0565e31661f6b29c6bb1
Christian Brabandt <cb@256bit.org>
parents: 10042
diff changeset
7418 if (gui_w32_get_menu_font(&lfSysmenu) == OK)
16152
8f4eccaaf2c0 patch 8.1.1081: MS-Windows: cannot use some fonts
Bram Moolenaar <Bram@vim.org>
parents: 16123
diff changeset
7419 hfontTools = CreateFontIndirectW(&lfSysmenu);
10264
c036c0f636d5 commit https://github.com/vim/vim/commit/cea912af725c54f4727a0565e31661f6b29c6bb1
Christian Brabandt <cb@256bit.org>
parents: 10042
diff changeset
7420 else
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
7421 #endif
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
7422 hfontTools = CreateFont(-DLG_FONT_POINT_SIZE, 0, 0, 0, 0, 0, 0, 0,
27160
4482dd5f8869 patch 8.2.4109: MS-Windows: high dpi support is outdated
Bram Moolenaar <Bram@vim.org>
parents: 26966
diff changeset
7423 0, 0, 0, 0, VARIABLE_PITCH, DLG_FONT_NAME);
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
7424
27322
574cd25f0962 patch 8.2.4189: MS-Windows: code for "old look" is obsolete
Bram Moolenaar <Bram@vim.org>
parents: 27293
diff changeset
7425 hdc = GetDC(s_hwnd);
574cd25f0962 patch 8.2.4189: MS-Windows: code for "old look" is obsolete
Bram Moolenaar <Bram@vim.org>
parents: 27293
diff changeset
7426 SelectObject(hdc, hfontTools);
27332
251cae25bb49 patch 8.2.4194: MS-Windows: code for calculating font size is duplicated
Bram Moolenaar <Bram@vim.org>
parents: 27322
diff changeset
7427 GetAverageFontSize(hdc, &size);
27322
574cd25f0962 patch 8.2.4189: MS-Windows: code for "old look" is obsolete
Bram Moolenaar <Bram@vim.org>
parents: 27293
diff changeset
7428 ReleaseDC(s_hwnd, hdc);
574cd25f0962 patch 8.2.4189: MS-Windows: code for "old look" is obsolete
Bram Moolenaar <Bram@vim.org>
parents: 27293
diff changeset
7429
27332
251cae25bb49 patch 8.2.4194: MS-Windows: code for calculating font size is duplicated
Bram Moolenaar <Bram@vim.org>
parents: 27322
diff changeset
7430 s_dlgfntwidth = (WORD)size.cx;
27322
574cd25f0962 patch 8.2.4189: MS-Windows: code for "old look" is obsolete
Bram Moolenaar <Bram@vim.org>
parents: 27293
diff changeset
7431 s_dlgfntheight = (WORD)size.cy;
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
7432 }
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
7433
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
7434 #if defined(FEAT_MENU) && defined(FEAT_TEAROFF)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
7435 /*
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
7436 * Create a pseudo-"tearoff menu" based on the child
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
7437 * items of a given menu pointer.
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
7438 */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
7439 static void
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
7440 gui_mch_tearoff(
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
7441 char_u *title,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
7442 vimmenu_T *menu,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
7443 int initX,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
7444 int initY)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
7445 {
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
7446 WORD *p, *pdlgtemplate, *pnumitems, *ptrueheight;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
7447 int template_len;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
7448 int nchar, textWidth, submenuWidth;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
7449 DWORD lStyle;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
7450 DWORD lExtendedStyle;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
7451 WORD dlgwidth;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
7452 WORD menuID;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
7453 vimmenu_T *pmenu;
12668
637096f179c4 patch 8.0.1212: MS-Windows: tear-off menu does not work on 64 bit
Christian Brabandt <cb@256bit.org>
parents: 12666
diff changeset
7454 vimmenu_T *top_menu;
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
7455 vimmenu_T *the_menu = menu;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
7456 HWND hwnd;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
7457 HDC hdc;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
7458 HFONT font, oldFont;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
7459 int col, spaceWidth, len;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
7460 int columnWidths[2];
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
7461 char_u *label, *text;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
7462 int acLen = 0;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
7463 int nameLen;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
7464 int padding0, padding1, padding2 = 0;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
7465 int sepPadding=0;
87
014ba200db86 updated for version 7.0035
vimboss
parents: 39
diff changeset
7466 int x;
014ba200db86 updated for version 7.0035
vimboss
parents: 39
diff changeset
7467 int y;
18773
38a3bef525e6 patch 8.1.2376: preprocessor indents are incorrect
Bram Moolenaar <Bram@vim.org>
parents: 18763
diff changeset
7468 # ifdef USE_SYSMENU_FONT
16152
8f4eccaaf2c0 patch 8.1.1081: MS-Windows: cannot use some fonts
Bram Moolenaar <Bram@vim.org>
parents: 16123
diff changeset
7469 LOGFONTW lfSysmenu;
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
7470 int use_lfSysmenu = FALSE;
18773
38a3bef525e6 patch 8.1.2376: preprocessor indents are incorrect
Bram Moolenaar <Bram@vim.org>
parents: 18763
diff changeset
7471 # endif
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
7472
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
7473 /*
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
7474 * If this menu is already torn off, move it to the mouse position.
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
7475 */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
7476 if (IsWindow(menu->tearoff_handle))
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
7477 {
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
7478 POINT mp;
27281
f7d73708b391 patch 8.2.4169: MS-Windows: unnessary casts and other minor things
Bram Moolenaar <Bram@vim.org>
parents: 27261
diff changeset
7479 if (GetCursorPos(&mp))
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
7480 {
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
7481 SetWindowPos(menu->tearoff_handle, NULL, mp.x, mp.y, 0, 0,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
7482 SWP_NOACTIVATE | SWP_NOSIZE | SWP_NOZORDER);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
7483 }
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
7484 return;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
7485 }
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
7486
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
7487 /*
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
7488 * Create a new tearoff.
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
7489 */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
7490 if (*title == MNU_HIDDEN_CHAR)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
7491 title++;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
7492
18788
e1f4e9d78a6a patch 8.1.2383: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents: 18773
diff changeset
7493 // Allocate memory to store the dialog template. It's made bigger when
e1f4e9d78a6a patch 8.1.2383: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents: 18773
diff changeset
7494 // needed.
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
7495 template_len = DLG_ALLOC_SIZE;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
7496 pdlgtemplate = p = (WORD *)LocalAlloc(LPTR, template_len);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
7497 if (p == NULL)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
7498 return;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
7499
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
7500 hwnd = GetDesktopWindow();
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
7501 hdc = GetWindowDC(hwnd);
18773
38a3bef525e6 patch 8.1.2376: preprocessor indents are incorrect
Bram Moolenaar <Bram@vim.org>
parents: 18763
diff changeset
7502 # ifdef USE_SYSMENU_FONT
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
7503 if (gui_w32_get_menu_font(&lfSysmenu) == OK)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
7504 {
16152
8f4eccaaf2c0 patch 8.1.1081: MS-Windows: cannot use some fonts
Bram Moolenaar <Bram@vim.org>
parents: 16123
diff changeset
7505 font = CreateFontIndirectW(&lfSysmenu);
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
7506 use_lfSysmenu = TRUE;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
7507 }
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
7508 else
18773
38a3bef525e6 patch 8.1.2376: preprocessor indents are incorrect
Bram Moolenaar <Bram@vim.org>
parents: 18763
diff changeset
7509 # endif
27322
574cd25f0962 patch 8.2.4189: MS-Windows: code for "old look" is obsolete
Bram Moolenaar <Bram@vim.org>
parents: 27293
diff changeset
7510 font = CreateFont(-DLG_FONT_POINT_SIZE, 0, 0, 0, 0, 0, 0, 0,
574cd25f0962 patch 8.2.4189: MS-Windows: code for "old look" is obsolete
Bram Moolenaar <Bram@vim.org>
parents: 27293
diff changeset
7511 0, 0, 0, 0, VARIABLE_PITCH, DLG_FONT_NAME);
574cd25f0962 patch 8.2.4189: MS-Windows: code for "old look" is obsolete
Bram Moolenaar <Bram@vim.org>
parents: 27293
diff changeset
7512
574cd25f0962 patch 8.2.4189: MS-Windows: code for "old look" is obsolete
Bram Moolenaar <Bram@vim.org>
parents: 27293
diff changeset
7513 oldFont = SelectFont(hdc, font);
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
7514
18788
e1f4e9d78a6a patch 8.1.2383: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents: 18773
diff changeset
7515 // Calculate width of a single space. Used for padding columns to the
e1f4e9d78a6a patch 8.1.2383: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents: 18773
diff changeset
7516 // right width.
8090
54cfe888c627 commit https://github.com/vim/vim/commit/418f81b5fa400ed59793384f2f3d9df45390f080
Christian Brabandt <cb@256bit.org>
parents: 7856
diff changeset
7517 spaceWidth = GetTextWidth(hdc, (char_u *)" ", 1);
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
7518
18788
e1f4e9d78a6a patch 8.1.2383: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents: 18773
diff changeset
7519 // Figure out max width of the text column, the accelerator column and the
e1f4e9d78a6a patch 8.1.2383: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents: 18773
diff changeset
7520 // optional submenu column.
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
7521 submenuWidth = 0;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
7522 for (col = 0; col < 2; col++)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
7523 {
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
7524 columnWidths[col] = 0;
19934
3ff714d765ba patch 8.2.0523: loops are repeated
Bram Moolenaar <Bram@vim.org>
parents: 18788
diff changeset
7525 FOR_ALL_CHILD_MENUS(menu, pmenu)
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
7526 {
18788
e1f4e9d78a6a patch 8.1.2383: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents: 18773
diff changeset
7527 // Use "dname" here to compute the width of the visible text.
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
7528 text = (col == 0) ? pmenu->dname : pmenu->actext;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
7529 if (text != NULL && *text != NUL)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
7530 {
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
7531 textWidth = GetTextWidthEnc(hdc, text, (int)STRLEN(text));
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
7532 if (textWidth > columnWidths[col])
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
7533 columnWidths[col] = textWidth;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
7534 }
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
7535 if (pmenu->children != NULL)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
7536 submenuWidth = TEAROFF_COLUMN_PADDING * spaceWidth;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
7537 }
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
7538 }
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
7539 if (columnWidths[1] == 0)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
7540 {
18788
e1f4e9d78a6a patch 8.1.2383: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents: 18773
diff changeset
7541 // no accelerators
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
7542 if (submenuWidth != 0)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
7543 columnWidths[0] += submenuWidth;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
7544 else
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
7545 columnWidths[0] += spaceWidth;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
7546 }
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
7547 else
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
7548 {
18788
e1f4e9d78a6a patch 8.1.2383: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents: 18773
diff changeset
7549 // there is an accelerator column
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
7550 columnWidths[0] += TEAROFF_COLUMN_PADDING * spaceWidth;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
7551 columnWidths[1] += submenuWidth;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
7552 }
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
7553
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
7554 /*
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
7555 * Now find the total width of our 'menu'.
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
7556 */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
7557 textWidth = columnWidths[0] + columnWidths[1];
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
7558 if (submenuWidth != 0)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
7559 {
8090
54cfe888c627 commit https://github.com/vim/vim/commit/418f81b5fa400ed59793384f2f3d9df45390f080
Christian Brabandt <cb@256bit.org>
parents: 7856
diff changeset
7560 submenuWidth = GetTextWidth(hdc, (char_u *)TEAROFF_SUBMENU_LABEL,
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
7561 (int)STRLEN(TEAROFF_SUBMENU_LABEL));
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
7562 textWidth += submenuWidth;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
7563 }
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
7564 dlgwidth = GetTextWidthEnc(hdc, title, (int)STRLEN(title));
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
7565 if (textWidth > dlgwidth)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
7566 dlgwidth = textWidth;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
7567 dlgwidth += 2 * TEAROFF_PADDING_X + TEAROFF_BUTTON_PAD_X;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
7568
18788
e1f4e9d78a6a patch 8.1.2383: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents: 18773
diff changeset
7569 // start to fill in the dlgtemplate information. addressing by WORDs
27322
574cd25f0962 patch 8.2.4189: MS-Windows: code for "old look" is obsolete
Bram Moolenaar <Bram@vim.org>
parents: 27293
diff changeset
7570 lStyle = DS_MODALFRAME | WS_CAPTION | WS_SYSMENU | DS_SETFONT | WS_VISIBLE;
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
7571
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
7572 lExtendedStyle = WS_EX_TOOLWINDOW|WS_EX_STATICEDGE;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
7573 *p++ = LOWORD(lStyle);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
7574 *p++ = HIWORD(lStyle);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
7575 *p++ = LOWORD(lExtendedStyle);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
7576 *p++ = HIWORD(lExtendedStyle);
18788
e1f4e9d78a6a patch 8.1.2383: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents: 18773
diff changeset
7577 pnumitems = p; // save where the number of items must be stored
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
7578 *p++ = 0; // NumberOfItems(will change later)
87
014ba200db86 updated for version 7.0035
vimboss
parents: 39
diff changeset
7579 gui_mch_getmouse(&x, &y);
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
7580 if (initX == 0xffffL)
87
014ba200db86 updated for version 7.0035
vimboss
parents: 39
diff changeset
7581 *p++ = PixelToDialogX(x); // x
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
7582 else
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
7583 *p++ = PixelToDialogX(initX); // x
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
7584 if (initY == 0xffffL)
87
014ba200db86 updated for version 7.0035
vimboss
parents: 39
diff changeset
7585 *p++ = PixelToDialogY(y); // y
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
7586 else
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
7587 *p++ = PixelToDialogY(initY); // y
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
7588 *p++ = PixelToDialogX(dlgwidth); // cx
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
7589 ptrueheight = p;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
7590 *p++ = 0; // dialog height: changed later anyway
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
7591 *p++ = 0; // Menu
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
7592 *p++ = 0; // Class
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
7593
18788
e1f4e9d78a6a patch 8.1.2383: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents: 18773
diff changeset
7594 // copy the title of the dialog
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
7595 nchar = nCopyAnsiToWideChar(p, ((*title)
12543
e9028055f6d6 patch 8.0.1150: MS-Windows GUI: dialog font size is incorrect
Christian Brabandt <cb@256bit.org>
parents: 12513
diff changeset
7596 ? (LPSTR)title
e9028055f6d6 patch 8.0.1150: MS-Windows GUI: dialog font size is incorrect
Christian Brabandt <cb@256bit.org>
parents: 12513
diff changeset
7597 : (LPSTR)("Vim "VIM_VERSION_MEDIUM)), TRUE);
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
7598 p += nchar;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
7599
27322
574cd25f0962 patch 8.2.4189: MS-Windows: code for "old look" is obsolete
Bram Moolenaar <Bram@vim.org>
parents: 27293
diff changeset
7600 // do the font, since DS_3DLOOK doesn't work properly
18773
38a3bef525e6 patch 8.1.2376: preprocessor indents are incorrect
Bram Moolenaar <Bram@vim.org>
parents: 18763
diff changeset
7601 # ifdef USE_SYSMENU_FONT
27322
574cd25f0962 patch 8.2.4189: MS-Windows: code for "old look" is obsolete
Bram Moolenaar <Bram@vim.org>
parents: 27293
diff changeset
7602 if (use_lfSysmenu)
574cd25f0962 patch 8.2.4189: MS-Windows: code for "old look" is obsolete
Bram Moolenaar <Bram@vim.org>
parents: 27293
diff changeset
7603 {
574cd25f0962 patch 8.2.4189: MS-Windows: code for "old look" is obsolete
Bram Moolenaar <Bram@vim.org>
parents: 27293
diff changeset
7604 // point size
574cd25f0962 patch 8.2.4189: MS-Windows: code for "old look" is obsolete
Bram Moolenaar <Bram@vim.org>
parents: 27293
diff changeset
7605 *p++ = -MulDiv(lfSysmenu.lfHeight, 72,
574cd25f0962 patch 8.2.4189: MS-Windows: code for "old look" is obsolete
Bram Moolenaar <Bram@vim.org>
parents: 27293
diff changeset
7606 GetDeviceCaps(hdc, LOGPIXELSY));
574cd25f0962 patch 8.2.4189: MS-Windows: code for "old look" is obsolete
Bram Moolenaar <Bram@vim.org>
parents: 27293
diff changeset
7607 wcscpy(p, lfSysmenu.lfFaceName);
574cd25f0962 patch 8.2.4189: MS-Windows: code for "old look" is obsolete
Bram Moolenaar <Bram@vim.org>
parents: 27293
diff changeset
7608 nchar = (int)wcslen(lfSysmenu.lfFaceName) + 1;
574cd25f0962 patch 8.2.4189: MS-Windows: code for "old look" is obsolete
Bram Moolenaar <Bram@vim.org>
parents: 27293
diff changeset
7609 }
574cd25f0962 patch 8.2.4189: MS-Windows: code for "old look" is obsolete
Bram Moolenaar <Bram@vim.org>
parents: 27293
diff changeset
7610 else
18773
38a3bef525e6 patch 8.1.2376: preprocessor indents are incorrect
Bram Moolenaar <Bram@vim.org>
parents: 18763
diff changeset
7611 # endif
27322
574cd25f0962 patch 8.2.4189: MS-Windows: code for "old look" is obsolete
Bram Moolenaar <Bram@vim.org>
parents: 27293
diff changeset
7612 {
574cd25f0962 patch 8.2.4189: MS-Windows: code for "old look" is obsolete
Bram Moolenaar <Bram@vim.org>
parents: 27293
diff changeset
7613 *p++ = DLG_FONT_POINT_SIZE; // point size
574cd25f0962 patch 8.2.4189: MS-Windows: code for "old look" is obsolete
Bram Moolenaar <Bram@vim.org>
parents: 27293
diff changeset
7614 nchar = nCopyAnsiToWideChar(p, DLG_FONT_NAME, FALSE);
574cd25f0962 patch 8.2.4189: MS-Windows: code for "old look" is obsolete
Bram Moolenaar <Bram@vim.org>
parents: 27293
diff changeset
7615 }
574cd25f0962 patch 8.2.4189: MS-Windows: code for "old look" is obsolete
Bram Moolenaar <Bram@vim.org>
parents: 27293
diff changeset
7616 p += nchar;
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
7617
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
7618 /*
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
7619 * Loop over all the items in the menu.
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
7620 * But skip over the tearbar.
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
7621 */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
7622 if (STRCMP(menu->children->name, TEAR_STRING) == 0)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
7623 menu = menu->children->next;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
7624 else
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
7625 menu = menu->children;
12668
637096f179c4 patch 8.0.1212: MS-Windows: tear-off menu does not work on 64 bit
Christian Brabandt <cb@256bit.org>
parents: 12666
diff changeset
7626 top_menu = menu;
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
7627 for ( ; menu != NULL; menu = menu->next)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
7628 {
18788
e1f4e9d78a6a patch 8.1.2383: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents: 18773
diff changeset
7629 if (menu->modes == 0) // this menu has just been deleted
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
7630 continue;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
7631 if (menu_is_separator(menu->dname))
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
7632 {
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
7633 sepPadding += 3;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
7634 continue;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
7635 }
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
7636
18788
e1f4e9d78a6a patch 8.1.2383: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents: 18773
diff changeset
7637 // Check if there still is plenty of room in the template. Make it
e1f4e9d78a6a patch 8.1.2383: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents: 18773
diff changeset
7638 // larger when needed.
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
7639 if (((char *)p - (char *)pdlgtemplate) + 1000 > template_len)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
7640 {
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
7641 WORD *newp;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
7642
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
7643 newp = (WORD *)LocalAlloc(LPTR, template_len + 4096);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
7644 if (newp != NULL)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
7645 {
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
7646 template_len += 4096;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
7647 mch_memmove(newp, pdlgtemplate,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
7648 (char *)p - (char *)pdlgtemplate);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
7649 p = newp + (p - pdlgtemplate);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
7650 pnumitems = newp + (pnumitems - pdlgtemplate);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
7651 ptrueheight = newp + (ptrueheight - pdlgtemplate);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
7652 LocalFree(LocalHandle(pdlgtemplate));
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
7653 pdlgtemplate = newp;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
7654 }
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
7655 }
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
7656
18788
e1f4e9d78a6a patch 8.1.2383: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents: 18773
diff changeset
7657 // Figure out minimal length of this menu label. Use "name" for the
e1f4e9d78a6a patch 8.1.2383: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents: 18773
diff changeset
7658 // actual text, "dname" for estimating the displayed size. "name"
e1f4e9d78a6a patch 8.1.2383: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents: 18773
diff changeset
7659 // has "&a" for mnemonic and includes the accelerator.
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
7660 len = nameLen = (int)STRLEN(menu->name);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
7661 padding0 = (columnWidths[0] - GetTextWidthEnc(hdc, menu->dname,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
7662 (int)STRLEN(menu->dname))) / spaceWidth;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
7663 len += padding0;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
7664
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
7665 if (menu->actext != NULL)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
7666 {
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
7667 acLen = (int)STRLEN(menu->actext);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
7668 len += acLen;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
7669 textWidth = GetTextWidthEnc(hdc, menu->actext, acLen);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
7670 }
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
7671 else
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
7672 textWidth = 0;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
7673 padding1 = (columnWidths[1] - textWidth) / spaceWidth;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
7674 len += padding1;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
7675
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
7676 if (menu->children == NULL)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
7677 {
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
7678 padding2 = submenuWidth / spaceWidth;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
7679 len += padding2;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
7680 menuID = (WORD)(menu->id);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
7681 }
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
7682 else
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
7683 {
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
7684 len += (int)STRLEN(TEAROFF_SUBMENU_LABEL);
840
2c885fab04e3 updated for version 7.0e06
vimboss
parents: 837
diff changeset
7685 menuID = (WORD)((long_u)(menu->submenu_id) | (DWORD)0x8000);
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
7686 }
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
7687
18788
e1f4e9d78a6a patch 8.1.2383: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents: 18773
diff changeset
7688 // Allocate menu label and fill it in
16764
ef00b6bc186b patch 8.1.1384: using "int" for alloc() often results in compiler warnings
Bram Moolenaar <Bram@vim.org>
parents: 16606
diff changeset
7689 text = label = alloc(len + 1);
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
7690 if (label == NULL)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
7691 break;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
7692
419
f713fc55bf7b updated for version 7.0109
vimboss
parents: 401
diff changeset
7693 vim_strncpy(text, menu->name, nameLen);
18788
e1f4e9d78a6a patch 8.1.2383: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents: 18773
diff changeset
7694 text = vim_strchr(text, TAB); // stop at TAB before actext
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
7695 if (text == NULL)
18788
e1f4e9d78a6a patch 8.1.2383: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents: 18773
diff changeset
7696 text = label + nameLen; // no actext, use whole name
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
7697 while (padding0-- > 0)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
7698 *text++ = ' ';
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
7699 if (menu->actext != NULL)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
7700 {
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
7701 STRNCPY(text, menu->actext, acLen);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
7702 text += acLen;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
7703 }
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
7704 while (padding1-- > 0)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
7705 *text++ = ' ';
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
7706 if (menu->children != NULL)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
7707 {
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
7708 STRCPY(text, TEAROFF_SUBMENU_LABEL);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
7709 text += STRLEN(TEAROFF_SUBMENU_LABEL);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
7710 }
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
7711 else
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
7712 {
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
7713 while (padding2-- > 0)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
7714 *text++ = ' ';
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
7715 }
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
7716 *text = NUL;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
7717
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
7718 /*
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
7719 * BS_LEFT will just be ignored on Win32s/NT3.5x - on
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
7720 * W95/NT4 it makes the tear-off look more like a menu.
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
7721 */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
7722 p = add_dialog_element(p,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
7723 BS_PUSHBUTTON|BS_LEFT,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
7724 (WORD)PixelToDialogX(TEAROFF_PADDING_X),
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
7725 (WORD)(sepPadding + 1 + 13 * (*pnumitems)),
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
7726 (WORD)PixelToDialogX(dlgwidth - 2 * TEAROFF_PADDING_X),
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
7727 (WORD)12,
8090
54cfe888c627 commit https://github.com/vim/vim/commit/418f81b5fa400ed59793384f2f3d9df45390f080
Christian Brabandt <cb@256bit.org>
parents: 7856
diff changeset
7728 menuID, (WORD)0x0080, (char *)label);
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
7729 vim_free(label);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
7730 (*pnumitems)++;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
7731 }
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
7732
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
7733 *ptrueheight = (WORD)(sepPadding + 1 + 13 * (*pnumitems));
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
7734
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
7735
18788
e1f4e9d78a6a patch 8.1.2383: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents: 18773
diff changeset
7736 // show modelessly
12668
637096f179c4 patch 8.0.1212: MS-Windows: tear-off menu does not work on 64 bit
Christian Brabandt <cb@256bit.org>
parents: 12666
diff changeset
7737 the_menu->tearoff_handle = CreateDialogIndirectParam(
16451
7ae2396cef62 patch 8.1.1230: a lot of code is shared between vim.exe and gvim.exe
Bram Moolenaar <Bram@vim.org>
parents: 16439
diff changeset
7738 g_hinst,
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
7739 (LPDLGTEMPLATE)pdlgtemplate,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
7740 s_hwnd,
12668
637096f179c4 patch 8.0.1212: MS-Windows: tear-off menu does not work on 64 bit
Christian Brabandt <cb@256bit.org>
parents: 12666
diff changeset
7741 (DLGPROC)tearoff_callback,
637096f179c4 patch 8.0.1212: MS-Windows: tear-off menu does not work on 64 bit
Christian Brabandt <cb@256bit.org>
parents: 12666
diff changeset
7742 (LPARAM)top_menu);
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
7743
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
7744 LocalFree(LocalHandle(pdlgtemplate));
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
7745 SelectFont(hdc, oldFont);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
7746 DeleteObject(font);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
7747 ReleaseDC(hwnd, hdc);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
7748
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
7749 /*
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
7750 * Reassert ourselves as the active window. This is so that after creating
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
7751 * a tearoff, the user doesn't have to click with the mouse just to start
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
7752 * typing again!
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
7753 */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
7754 (void)SetActiveWindow(s_hwnd);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
7755
18788
e1f4e9d78a6a patch 8.1.2383: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents: 18773
diff changeset
7756 // make sure the right buttons are enabled
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
7757 force_menu_update = TRUE;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
7758 }
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
7759 #endif
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
7760
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
7761 #if defined(FEAT_TOOLBAR) || defined(PROTO)
18773
38a3bef525e6 patch 8.1.2376: preprocessor indents are incorrect
Bram Moolenaar <Bram@vim.org>
parents: 18763
diff changeset
7762 # include "gui_w32_rc.h"
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
7763
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
7764 /*
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
7765 * Create the toolbar, initially unpopulated.
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
7766 * (just like the menu, there are no defaults, it's all
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
7767 * set up through menu.vim)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
7768 */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
7769 static void
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
7770 initialise_toolbar(void)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
7771 {
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
7772 InitCommonControls();
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
7773 s_toolbarhwnd = CreateToolbarEx(
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
7774 s_hwnd,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
7775 WS_CHILD | TBSTYLE_TOOLTIPS | TBSTYLE_FLAT,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
7776 4000, //any old big number
1213
8906c10ecbb0 updated for version 7.1b
vimboss
parents: 1153
diff changeset
7777 31, //number of images in initial bitmap
16451
7ae2396cef62 patch 8.1.1230: a lot of code is shared between vim.exe and gvim.exe
Bram Moolenaar <Bram@vim.org>
parents: 16439
diff changeset
7778 g_hinst,
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
7779 IDR_TOOLBAR1, // id of initial bitmap
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
7780 NULL,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
7781 0, // initial number of buttons
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
7782 TOOLBAR_BUTTON_WIDTH, //api guide is wrong!
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
7783 TOOLBAR_BUTTON_HEIGHT,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
7784 TOOLBAR_BUTTON_WIDTH,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
7785 TOOLBAR_BUTTON_HEIGHT,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
7786 sizeof(TBBUTTON)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
7787 );
18652
94b88fa5825d patch 8.1.2318: MS-Windows GUI: main background shows in toolbar
Bram Moolenaar <Bram@vim.org>
parents: 18617
diff changeset
7788
94b88fa5825d patch 8.1.2318: MS-Windows GUI: main background shows in toolbar
Bram Moolenaar <Bram@vim.org>
parents: 18617
diff changeset
7789 // Remove transparency from the toolbar to prevent the main window
94b88fa5825d patch 8.1.2318: MS-Windows GUI: main background shows in toolbar
Bram Moolenaar <Bram@vim.org>
parents: 18617
diff changeset
7790 // background colour showing through
94b88fa5825d patch 8.1.2318: MS-Windows GUI: main background shows in toolbar
Bram Moolenaar <Bram@vim.org>
parents: 18617
diff changeset
7791 SendMessage(s_toolbarhwnd, TB_SETSTYLE, 0,
94b88fa5825d patch 8.1.2318: MS-Windows GUI: main background shows in toolbar
Bram Moolenaar <Bram@vim.org>
parents: 18617
diff changeset
7792 SendMessage(s_toolbarhwnd, TB_GETSTYLE, 0, 0) & ~TBSTYLE_TRANSPARENT);
94b88fa5825d patch 8.1.2318: MS-Windows GUI: main background shows in toolbar
Bram Moolenaar <Bram@vim.org>
parents: 18617
diff changeset
7793
5223
91d478da863e updated for version 7.4a.037
Bram Moolenaar <bram@vim.org>
parents: 5020
diff changeset
7794 s_toolbar_wndproc = SubclassWindow(s_toolbarhwnd, toolbar_wndproc);
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
7795
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
7796 gui_mch_show_toolbar(vim_strchr(p_go, GO_TOOLBAR) != NULL);
27160
4482dd5f8869 patch 8.2.4109: MS-Windows: high dpi support is outdated
Bram Moolenaar <Bram@vim.org>
parents: 26966
diff changeset
7797
4482dd5f8869 patch 8.2.4109: MS-Windows: high dpi support is outdated
Bram Moolenaar <Bram@vim.org>
parents: 26966
diff changeset
7798 update_toolbar_size();
4482dd5f8869 patch 8.2.4109: MS-Windows: high dpi support is outdated
Bram Moolenaar <Bram@vim.org>
parents: 26966
diff changeset
7799 }
4482dd5f8869 patch 8.2.4109: MS-Windows: high dpi support is outdated
Bram Moolenaar <Bram@vim.org>
parents: 26966
diff changeset
7800
4482dd5f8869 patch 8.2.4109: MS-Windows: high dpi support is outdated
Bram Moolenaar <Bram@vim.org>
parents: 26966
diff changeset
7801 static void
4482dd5f8869 patch 8.2.4109: MS-Windows: high dpi support is outdated
Bram Moolenaar <Bram@vim.org>
parents: 26966
diff changeset
7802 update_toolbar_size(void)
4482dd5f8869 patch 8.2.4109: MS-Windows: high dpi support is outdated
Bram Moolenaar <Bram@vim.org>
parents: 26966
diff changeset
7803 {
4482dd5f8869 patch 8.2.4109: MS-Windows: high dpi support is outdated
Bram Moolenaar <Bram@vim.org>
parents: 26966
diff changeset
7804 int w, h;
29105
faf7fcd1c8d5 patch 8.2.5073: clang on MS-Windows produces warnings
Bram Moolenaar <Bram@vim.org>
parents: 29096
diff changeset
7805 TBMETRICS tbm;
faf7fcd1c8d5 patch 8.2.5073: clang on MS-Windows produces warnings
Bram Moolenaar <Bram@vim.org>
parents: 29096
diff changeset
7806
faf7fcd1c8d5 patch 8.2.5073: clang on MS-Windows produces warnings
Bram Moolenaar <Bram@vim.org>
parents: 29096
diff changeset
7807 tbm.cbSize = sizeof(TBMETRICS);
27160
4482dd5f8869 patch 8.2.4109: MS-Windows: high dpi support is outdated
Bram Moolenaar <Bram@vim.org>
parents: 26966
diff changeset
7808 tbm.dwMask = TBMF_PAD | TBMF_BUTTONSPACING;
4482dd5f8869 patch 8.2.4109: MS-Windows: high dpi support is outdated
Bram Moolenaar <Bram@vim.org>
parents: 26966
diff changeset
7809 SendMessage(s_toolbarhwnd, TB_GETMETRICS, 0, (LPARAM)&tbm);
4482dd5f8869 patch 8.2.4109: MS-Windows: high dpi support is outdated
Bram Moolenaar <Bram@vim.org>
parents: 26966
diff changeset
7810 //TRACE("Pad: %d, %d", tbm.cxPad, tbm.cyPad);
4482dd5f8869 patch 8.2.4109: MS-Windows: high dpi support is outdated
Bram Moolenaar <Bram@vim.org>
parents: 26966
diff changeset
7811 //TRACE("ButtonSpacing: %d, %d", tbm.cxButtonSpacing, tbm.cyButtonSpacing);
4482dd5f8869 patch 8.2.4109: MS-Windows: high dpi support is outdated
Bram Moolenaar <Bram@vim.org>
parents: 26966
diff changeset
7812
4482dd5f8869 patch 8.2.4109: MS-Windows: high dpi support is outdated
Bram Moolenaar <Bram@vim.org>
parents: 26966
diff changeset
7813 w = (TOOLBAR_BUTTON_WIDTH + tbm.cxPad) * s_dpi / DEFAULT_DPI;
4482dd5f8869 patch 8.2.4109: MS-Windows: high dpi support is outdated
Bram Moolenaar <Bram@vim.org>
parents: 26966
diff changeset
7814 h = (TOOLBAR_BUTTON_HEIGHT + tbm.cyPad) * s_dpi / DEFAULT_DPI;
4482dd5f8869 patch 8.2.4109: MS-Windows: high dpi support is outdated
Bram Moolenaar <Bram@vim.org>
parents: 26966
diff changeset
7815 //TRACE("button size: %d, %d", w, h);
4482dd5f8869 patch 8.2.4109: MS-Windows: high dpi support is outdated
Bram Moolenaar <Bram@vim.org>
parents: 26966
diff changeset
7816 SendMessage(s_toolbarhwnd, TB_SETBUTTONSIZE, 0, MAKELPARAM(w, h));
4482dd5f8869 patch 8.2.4109: MS-Windows: high dpi support is outdated
Bram Moolenaar <Bram@vim.org>
parents: 26966
diff changeset
7817 gui.toolbar_height = h + 6;
4482dd5f8869 patch 8.2.4109: MS-Windows: high dpi support is outdated
Bram Moolenaar <Bram@vim.org>
parents: 26966
diff changeset
7818
4482dd5f8869 patch 8.2.4109: MS-Windows: high dpi support is outdated
Bram Moolenaar <Bram@vim.org>
parents: 26966
diff changeset
7819 //DWORD s = SendMessage(s_toolbarhwnd, TB_GETBUTTONSIZE, 0, 0);
4482dd5f8869 patch 8.2.4109: MS-Windows: high dpi support is outdated
Bram Moolenaar <Bram@vim.org>
parents: 26966
diff changeset
7820 //TRACE("actual button size: %d, %d", LOWORD(s), HIWORD(s));
4482dd5f8869 patch 8.2.4109: MS-Windows: high dpi support is outdated
Bram Moolenaar <Bram@vim.org>
parents: 26966
diff changeset
7821
4482dd5f8869 patch 8.2.4109: MS-Windows: high dpi support is outdated
Bram Moolenaar <Bram@vim.org>
parents: 26966
diff changeset
7822 // TODO:
4482dd5f8869 patch 8.2.4109: MS-Windows: high dpi support is outdated
Bram Moolenaar <Bram@vim.org>
parents: 26966
diff changeset
7823 // Currently, this function only updates the size of toolbar buttons.
4482dd5f8869 patch 8.2.4109: MS-Windows: high dpi support is outdated
Bram Moolenaar <Bram@vim.org>
parents: 26966
diff changeset
7824 // It would be nice if the toolbar images are resized based on DPI.
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
7825 }
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
7826
5223
91d478da863e updated for version 7.4a.037
Bram Moolenaar <bram@vim.org>
parents: 5020
diff changeset
7827 static LRESULT CALLBACK
91d478da863e updated for version 7.4a.037
Bram Moolenaar <bram@vim.org>
parents: 5020
diff changeset
7828 toolbar_wndproc(
91d478da863e updated for version 7.4a.037
Bram Moolenaar <bram@vim.org>
parents: 5020
diff changeset
7829 HWND hwnd,
91d478da863e updated for version 7.4a.037
Bram Moolenaar <bram@vim.org>
parents: 5020
diff changeset
7830 UINT uMsg,
91d478da863e updated for version 7.4a.037
Bram Moolenaar <bram@vim.org>
parents: 5020
diff changeset
7831 WPARAM wParam,
91d478da863e updated for version 7.4a.037
Bram Moolenaar <bram@vim.org>
parents: 5020
diff changeset
7832 LPARAM lParam)
91d478da863e updated for version 7.4a.037
Bram Moolenaar <bram@vim.org>
parents: 5020
diff changeset
7833 {
91d478da863e updated for version 7.4a.037
Bram Moolenaar <bram@vim.org>
parents: 5020
diff changeset
7834 HandleMouseHide(uMsg, lParam);
91d478da863e updated for version 7.4a.037
Bram Moolenaar <bram@vim.org>
parents: 5020
diff changeset
7835 return CallWindowProc(s_toolbar_wndproc, hwnd, uMsg, wParam, lParam);
91d478da863e updated for version 7.4a.037
Bram Moolenaar <bram@vim.org>
parents: 5020
diff changeset
7836 }
91d478da863e updated for version 7.4a.037
Bram Moolenaar <bram@vim.org>
parents: 5020
diff changeset
7837
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
7838 static int
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
7839 get_toolbar_bitmap(vimmenu_T *menu)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
7840 {
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
7841 int i = -1;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
7842
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
7843 /*
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
7844 * Check user bitmaps first, unless builtin is specified.
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
7845 */
10264
c036c0f636d5 commit https://github.com/vim/vim/commit/cea912af725c54f4727a0565e31661f6b29c6bb1
Christian Brabandt <cb@256bit.org>
parents: 10042
diff changeset
7846 if (!menu->icon_builtin)
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
7847 {
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
7848 char_u fname[MAXPATHL];
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
7849 HANDLE hbitmap = NULL;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
7850
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
7851 if (menu->iconfile != NULL)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
7852 {
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
7853 gui_find_iconfile(menu->iconfile, fname, "bmp");
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
7854 hbitmap = LoadImage(
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
7855 NULL,
8090
54cfe888c627 commit https://github.com/vim/vim/commit/418f81b5fa400ed59793384f2f3d9df45390f080
Christian Brabandt <cb@256bit.org>
parents: 7856
diff changeset
7856 (LPCSTR)fname,
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
7857 IMAGE_BITMAP,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
7858 TOOLBAR_BUTTON_WIDTH,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
7859 TOOLBAR_BUTTON_HEIGHT,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
7860 LR_LOADFROMFILE |
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
7861 LR_LOADMAP3DCOLORS
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
7862 );
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
7863 }
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
7864
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
7865 /*
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
7866 * If the LoadImage call failed, or the "icon=" file
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
7867 * didn't exist or wasn't specified, try the menu name
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
7868 */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
7869 if (hbitmap == NULL
5020
5eff37e92f03 updated for version 7.3.1254
Bram Moolenaar <bram@vim.org>
parents: 5016
diff changeset
7870 && (gui_find_bitmap(
18773
38a3bef525e6 patch 8.1.2376: preprocessor indents are incorrect
Bram Moolenaar <Bram@vim.org>
parents: 18763
diff changeset
7871 # ifdef FEAT_MULTI_LANG
5020
5eff37e92f03 updated for version 7.3.1254
Bram Moolenaar <bram@vim.org>
parents: 5016
diff changeset
7872 menu->en_dname != NULL ? menu->en_dname :
18773
38a3bef525e6 patch 8.1.2376: preprocessor indents are incorrect
Bram Moolenaar <Bram@vim.org>
parents: 18763
diff changeset
7873 # endif
5020
5eff37e92f03 updated for version 7.3.1254
Bram Moolenaar <bram@vim.org>
parents: 5016
diff changeset
7874 menu->dname, fname, "bmp") == OK))
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
7875 hbitmap = LoadImage(
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
7876 NULL,
8090
54cfe888c627 commit https://github.com/vim/vim/commit/418f81b5fa400ed59793384f2f3d9df45390f080
Christian Brabandt <cb@256bit.org>
parents: 7856
diff changeset
7877 (LPCSTR)fname,
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
7878 IMAGE_BITMAP,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
7879 TOOLBAR_BUTTON_WIDTH,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
7880 TOOLBAR_BUTTON_HEIGHT,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
7881 LR_LOADFROMFILE |
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
7882 LR_LOADMAP3DCOLORS
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
7883 );
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
7884
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
7885 if (hbitmap != NULL)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
7886 {
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
7887 TBADDBITMAP tbAddBitmap;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
7888
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
7889 tbAddBitmap.hInst = NULL;
840
2c885fab04e3 updated for version 7.0e06
vimboss
parents: 837
diff changeset
7890 tbAddBitmap.nID = (long_u)hbitmap;
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
7891
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
7892 i = (int)SendMessage(s_toolbarhwnd, TB_ADDBITMAP,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
7893 (WPARAM)1, (LPARAM)&tbAddBitmap);
18788
e1f4e9d78a6a patch 8.1.2383: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents: 18773
diff changeset
7894 // i will be set to -1 if it fails
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
7895 }
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
7896 }
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
7897 if (i == -1 && menu->iconidx >= 0 && menu->iconidx < TOOLBAR_BITMAP_COUNT)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
7898 i = menu->iconidx;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
7899
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
7900 return i;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
7901 }
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
7902 #endif
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
7903
810
9f345c48220b updated for version 7.0c
vimboss
parents: 786
diff changeset
7904 #if defined(FEAT_GUI_TABLINE) || defined(PROTO)
9f345c48220b updated for version 7.0c
vimboss
parents: 786
diff changeset
7905 static void
9f345c48220b updated for version 7.0c
vimboss
parents: 786
diff changeset
7906 initialise_tabline(void)
9f345c48220b updated for version 7.0c
vimboss
parents: 786
diff changeset
7907 {
9f345c48220b updated for version 7.0c
vimboss
parents: 786
diff changeset
7908 InitCommonControls();
9f345c48220b updated for version 7.0c
vimboss
parents: 786
diff changeset
7909
819
23f82b5d2814 updated for version 7.0c10
vimboss
parents: 812
diff changeset
7910 s_tabhwnd = CreateWindow(WC_TABCONTROL, "Vim tabline",
840
2c885fab04e3 updated for version 7.0e06
vimboss
parents: 837
diff changeset
7911 WS_CHILD|TCS_FOCUSNEVER|TCS_TOOLTIPS,
810
9f345c48220b updated for version 7.0c
vimboss
parents: 786
diff changeset
7912 CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT,
16451
7ae2396cef62 patch 8.1.1230: a lot of code is shared between vim.exe and gvim.exe
Bram Moolenaar <Bram@vim.org>
parents: 16439
diff changeset
7913 CW_USEDEFAULT, s_hwnd, NULL, g_hinst, NULL);
5223
91d478da863e updated for version 7.4a.037
Bram Moolenaar <bram@vim.org>
parents: 5020
diff changeset
7914 s_tabline_wndproc = SubclassWindow(s_tabhwnd, tabline_wndproc);
819
23f82b5d2814 updated for version 7.0c10
vimboss
parents: 812
diff changeset
7915
843
9f279ebda751 updated for version 7.0f01
vimboss
parents: 842
diff changeset
7916 gui.tabline_height = TABLINE_HEIGHT;
9f279ebda751 updated for version 7.0f01
vimboss
parents: 842
diff changeset
7917
9f279ebda751 updated for version 7.0f01
vimboss
parents: 842
diff changeset
7918 set_tabline_font();
810
9f345c48220b updated for version 7.0c
vimboss
parents: 786
diff changeset
7919 }
5223
91d478da863e updated for version 7.4a.037
Bram Moolenaar <bram@vim.org>
parents: 5020
diff changeset
7920
12666
856a840679e3 patch 8.0.1211: cannot reorder tab pages with drag & drop
Christian Brabandt <cb@256bit.org>
parents: 12543
diff changeset
7921 /*
856a840679e3 patch 8.0.1211: cannot reorder tab pages with drag & drop
Christian Brabandt <cb@256bit.org>
parents: 12543
diff changeset
7922 * Get tabpage_T from POINT.
856a840679e3 patch 8.0.1211: cannot reorder tab pages with drag & drop
Christian Brabandt <cb@256bit.org>
parents: 12543
diff changeset
7923 */
856a840679e3 patch 8.0.1211: cannot reorder tab pages with drag & drop
Christian Brabandt <cb@256bit.org>
parents: 12543
diff changeset
7924 static tabpage_T *
856a840679e3 patch 8.0.1211: cannot reorder tab pages with drag & drop
Christian Brabandt <cb@256bit.org>
parents: 12543
diff changeset
7925 GetTabFromPoint(
856a840679e3 patch 8.0.1211: cannot reorder tab pages with drag & drop
Christian Brabandt <cb@256bit.org>
parents: 12543
diff changeset
7926 HWND hWnd,
856a840679e3 patch 8.0.1211: cannot reorder tab pages with drag & drop
Christian Brabandt <cb@256bit.org>
parents: 12543
diff changeset
7927 POINT pt)
856a840679e3 patch 8.0.1211: cannot reorder tab pages with drag & drop
Christian Brabandt <cb@256bit.org>
parents: 12543
diff changeset
7928 {
856a840679e3 patch 8.0.1211: cannot reorder tab pages with drag & drop
Christian Brabandt <cb@256bit.org>
parents: 12543
diff changeset
7929 tabpage_T *ptp = NULL;
856a840679e3 patch 8.0.1211: cannot reorder tab pages with drag & drop
Christian Brabandt <cb@256bit.org>
parents: 12543
diff changeset
7930
856a840679e3 patch 8.0.1211: cannot reorder tab pages with drag & drop
Christian Brabandt <cb@256bit.org>
parents: 12543
diff changeset
7931 if (gui_mch_showing_tabline())
856a840679e3 patch 8.0.1211: cannot reorder tab pages with drag & drop
Christian Brabandt <cb@256bit.org>
parents: 12543
diff changeset
7932 {
856a840679e3 patch 8.0.1211: cannot reorder tab pages with drag & drop
Christian Brabandt <cb@256bit.org>
parents: 12543
diff changeset
7933 TCHITTESTINFO htinfo;
856a840679e3 patch 8.0.1211: cannot reorder tab pages with drag & drop
Christian Brabandt <cb@256bit.org>
parents: 12543
diff changeset
7934 htinfo.pt = pt;
27160
4482dd5f8869 patch 8.2.4109: MS-Windows: high dpi support is outdated
Bram Moolenaar <Bram@vim.org>
parents: 26966
diff changeset
7935 // ignore if a window under cursor is not tabcontrol.
12666
856a840679e3 patch 8.0.1211: cannot reorder tab pages with drag & drop
Christian Brabandt <cb@256bit.org>
parents: 12543
diff changeset
7936 if (s_tabhwnd == hWnd)
856a840679e3 patch 8.0.1211: cannot reorder tab pages with drag & drop
Christian Brabandt <cb@256bit.org>
parents: 12543
diff changeset
7937 {
856a840679e3 patch 8.0.1211: cannot reorder tab pages with drag & drop
Christian Brabandt <cb@256bit.org>
parents: 12543
diff changeset
7938 int idx = TabCtrl_HitTest(s_tabhwnd, &htinfo);
856a840679e3 patch 8.0.1211: cannot reorder tab pages with drag & drop
Christian Brabandt <cb@256bit.org>
parents: 12543
diff changeset
7939 if (idx != -1)
856a840679e3 patch 8.0.1211: cannot reorder tab pages with drag & drop
Christian Brabandt <cb@256bit.org>
parents: 12543
diff changeset
7940 ptp = find_tabpage(idx + 1);
856a840679e3 patch 8.0.1211: cannot reorder tab pages with drag & drop
Christian Brabandt <cb@256bit.org>
parents: 12543
diff changeset
7941 }
856a840679e3 patch 8.0.1211: cannot reorder tab pages with drag & drop
Christian Brabandt <cb@256bit.org>
parents: 12543
diff changeset
7942 }
856a840679e3 patch 8.0.1211: cannot reorder tab pages with drag & drop
Christian Brabandt <cb@256bit.org>
parents: 12543
diff changeset
7943 return ptp;
856a840679e3 patch 8.0.1211: cannot reorder tab pages with drag & drop
Christian Brabandt <cb@256bit.org>
parents: 12543
diff changeset
7944 }
856a840679e3 patch 8.0.1211: cannot reorder tab pages with drag & drop
Christian Brabandt <cb@256bit.org>
parents: 12543
diff changeset
7945
856a840679e3 patch 8.0.1211: cannot reorder tab pages with drag & drop
Christian Brabandt <cb@256bit.org>
parents: 12543
diff changeset
7946 static POINT s_pt = {0, 0};
856a840679e3 patch 8.0.1211: cannot reorder tab pages with drag & drop
Christian Brabandt <cb@256bit.org>
parents: 12543
diff changeset
7947 static HCURSOR s_hCursor = NULL;
856a840679e3 patch 8.0.1211: cannot reorder tab pages with drag & drop
Christian Brabandt <cb@256bit.org>
parents: 12543
diff changeset
7948
5223
91d478da863e updated for version 7.4a.037
Bram Moolenaar <bram@vim.org>
parents: 5020
diff changeset
7949 static LRESULT CALLBACK
91d478da863e updated for version 7.4a.037
Bram Moolenaar <bram@vim.org>
parents: 5020
diff changeset
7950 tabline_wndproc(
91d478da863e updated for version 7.4a.037
Bram Moolenaar <bram@vim.org>
parents: 5020
diff changeset
7951 HWND hwnd,
91d478da863e updated for version 7.4a.037
Bram Moolenaar <bram@vim.org>
parents: 5020
diff changeset
7952 UINT uMsg,
91d478da863e updated for version 7.4a.037
Bram Moolenaar <bram@vim.org>
parents: 5020
diff changeset
7953 WPARAM wParam,
91d478da863e updated for version 7.4a.037
Bram Moolenaar <bram@vim.org>
parents: 5020
diff changeset
7954 LPARAM lParam)
91d478da863e updated for version 7.4a.037
Bram Moolenaar <bram@vim.org>
parents: 5020
diff changeset
7955 {
12666
856a840679e3 patch 8.0.1211: cannot reorder tab pages with drag & drop
Christian Brabandt <cb@256bit.org>
parents: 12543
diff changeset
7956 POINT pt;
856a840679e3 patch 8.0.1211: cannot reorder tab pages with drag & drop
Christian Brabandt <cb@256bit.org>
parents: 12543
diff changeset
7957 tabpage_T *tp;
856a840679e3 patch 8.0.1211: cannot reorder tab pages with drag & drop
Christian Brabandt <cb@256bit.org>
parents: 12543
diff changeset
7958 RECT rect;
856a840679e3 patch 8.0.1211: cannot reorder tab pages with drag & drop
Christian Brabandt <cb@256bit.org>
parents: 12543
diff changeset
7959 int nCenter;
856a840679e3 patch 8.0.1211: cannot reorder tab pages with drag & drop
Christian Brabandt <cb@256bit.org>
parents: 12543
diff changeset
7960 int idx0;
856a840679e3 patch 8.0.1211: cannot reorder tab pages with drag & drop
Christian Brabandt <cb@256bit.org>
parents: 12543
diff changeset
7961 int idx1;
856a840679e3 patch 8.0.1211: cannot reorder tab pages with drag & drop
Christian Brabandt <cb@256bit.org>
parents: 12543
diff changeset
7962
5223
91d478da863e updated for version 7.4a.037
Bram Moolenaar <bram@vim.org>
parents: 5020
diff changeset
7963 HandleMouseHide(uMsg, lParam);
12666
856a840679e3 patch 8.0.1211: cannot reorder tab pages with drag & drop
Christian Brabandt <cb@256bit.org>
parents: 12543
diff changeset
7964
856a840679e3 patch 8.0.1211: cannot reorder tab pages with drag & drop
Christian Brabandt <cb@256bit.org>
parents: 12543
diff changeset
7965 switch (uMsg)
856a840679e3 patch 8.0.1211: cannot reorder tab pages with drag & drop
Christian Brabandt <cb@256bit.org>
parents: 12543
diff changeset
7966 {
856a840679e3 patch 8.0.1211: cannot reorder tab pages with drag & drop
Christian Brabandt <cb@256bit.org>
parents: 12543
diff changeset
7967 case WM_LBUTTONDOWN:
856a840679e3 patch 8.0.1211: cannot reorder tab pages with drag & drop
Christian Brabandt <cb@256bit.org>
parents: 12543
diff changeset
7968 {
856a840679e3 patch 8.0.1211: cannot reorder tab pages with drag & drop
Christian Brabandt <cb@256bit.org>
parents: 12543
diff changeset
7969 s_pt.x = GET_X_LPARAM(lParam);
856a840679e3 patch 8.0.1211: cannot reorder tab pages with drag & drop
Christian Brabandt <cb@256bit.org>
parents: 12543
diff changeset
7970 s_pt.y = GET_Y_LPARAM(lParam);
856a840679e3 patch 8.0.1211: cannot reorder tab pages with drag & drop
Christian Brabandt <cb@256bit.org>
parents: 12543
diff changeset
7971 SetCapture(hwnd);
18788
e1f4e9d78a6a patch 8.1.2383: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents: 18773
diff changeset
7972 s_hCursor = GetCursor(); // backup default cursor
12666
856a840679e3 patch 8.0.1211: cannot reorder tab pages with drag & drop
Christian Brabandt <cb@256bit.org>
parents: 12543
diff changeset
7973 break;
856a840679e3 patch 8.0.1211: cannot reorder tab pages with drag & drop
Christian Brabandt <cb@256bit.org>
parents: 12543
diff changeset
7974 }
856a840679e3 patch 8.0.1211: cannot reorder tab pages with drag & drop
Christian Brabandt <cb@256bit.org>
parents: 12543
diff changeset
7975 case WM_MOUSEMOVE:
856a840679e3 patch 8.0.1211: cannot reorder tab pages with drag & drop
Christian Brabandt <cb@256bit.org>
parents: 12543
diff changeset
7976 if (GetCapture() == hwnd
856a840679e3 patch 8.0.1211: cannot reorder tab pages with drag & drop
Christian Brabandt <cb@256bit.org>
parents: 12543
diff changeset
7977 && ((wParam & MK_LBUTTON)) != 0)
856a840679e3 patch 8.0.1211: cannot reorder tab pages with drag & drop
Christian Brabandt <cb@256bit.org>
parents: 12543
diff changeset
7978 {
856a840679e3 patch 8.0.1211: cannot reorder tab pages with drag & drop
Christian Brabandt <cb@256bit.org>
parents: 12543
diff changeset
7979 pt.x = GET_X_LPARAM(lParam);
856a840679e3 patch 8.0.1211: cannot reorder tab pages with drag & drop
Christian Brabandt <cb@256bit.org>
parents: 12543
diff changeset
7980 pt.y = s_pt.y;
27160
4482dd5f8869 patch 8.2.4109: MS-Windows: high dpi support is outdated
Bram Moolenaar <Bram@vim.org>
parents: 26966
diff changeset
7981 if (abs(pt.x - s_pt.x) >
4482dd5f8869 patch 8.2.4109: MS-Windows: high dpi support is outdated
Bram Moolenaar <Bram@vim.org>
parents: 26966
diff changeset
7982 pGetSystemMetricsForDpi(SM_CXDRAG, s_dpi))
12666
856a840679e3 patch 8.0.1211: cannot reorder tab pages with drag & drop
Christian Brabandt <cb@256bit.org>
parents: 12543
diff changeset
7983 {
856a840679e3 patch 8.0.1211: cannot reorder tab pages with drag & drop
Christian Brabandt <cb@256bit.org>
parents: 12543
diff changeset
7984 SetCursor(LoadCursor(NULL, IDC_SIZEWE));
856a840679e3 patch 8.0.1211: cannot reorder tab pages with drag & drop
Christian Brabandt <cb@256bit.org>
parents: 12543
diff changeset
7985
856a840679e3 patch 8.0.1211: cannot reorder tab pages with drag & drop
Christian Brabandt <cb@256bit.org>
parents: 12543
diff changeset
7986 tp = GetTabFromPoint(hwnd, pt);
856a840679e3 patch 8.0.1211: cannot reorder tab pages with drag & drop
Christian Brabandt <cb@256bit.org>
parents: 12543
diff changeset
7987 if (tp != NULL)
856a840679e3 patch 8.0.1211: cannot reorder tab pages with drag & drop
Christian Brabandt <cb@256bit.org>
parents: 12543
diff changeset
7988 {
856a840679e3 patch 8.0.1211: cannot reorder tab pages with drag & drop
Christian Brabandt <cb@256bit.org>
parents: 12543
diff changeset
7989 idx0 = tabpage_index(curtab) - 1;
856a840679e3 patch 8.0.1211: cannot reorder tab pages with drag & drop
Christian Brabandt <cb@256bit.org>
parents: 12543
diff changeset
7990 idx1 = tabpage_index(tp) - 1;
856a840679e3 patch 8.0.1211: cannot reorder tab pages with drag & drop
Christian Brabandt <cb@256bit.org>
parents: 12543
diff changeset
7991
856a840679e3 patch 8.0.1211: cannot reorder tab pages with drag & drop
Christian Brabandt <cb@256bit.org>
parents: 12543
diff changeset
7992 TabCtrl_GetItemRect(hwnd, idx1, &rect);
856a840679e3 patch 8.0.1211: cannot reorder tab pages with drag & drop
Christian Brabandt <cb@256bit.org>
parents: 12543
diff changeset
7993 nCenter = rect.left + (rect.right - rect.left) / 2;
856a840679e3 patch 8.0.1211: cannot reorder tab pages with drag & drop
Christian Brabandt <cb@256bit.org>
parents: 12543
diff changeset
7994
18788
e1f4e9d78a6a patch 8.1.2383: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents: 18773
diff changeset
7995 // Check if the mouse cursor goes over the center of
e1f4e9d78a6a patch 8.1.2383: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents: 18773
diff changeset
7996 // the next tab to prevent "flickering".
12666
856a840679e3 patch 8.0.1211: cannot reorder tab pages with drag & drop
Christian Brabandt <cb@256bit.org>
parents: 12543
diff changeset
7997 if ((idx0 < idx1) && (nCenter < pt.x))
856a840679e3 patch 8.0.1211: cannot reorder tab pages with drag & drop
Christian Brabandt <cb@256bit.org>
parents: 12543
diff changeset
7998 {
856a840679e3 patch 8.0.1211: cannot reorder tab pages with drag & drop
Christian Brabandt <cb@256bit.org>
parents: 12543
diff changeset
7999 tabpage_move(idx1 + 1);
856a840679e3 patch 8.0.1211: cannot reorder tab pages with drag & drop
Christian Brabandt <cb@256bit.org>
parents: 12543
diff changeset
8000 update_screen(0);
856a840679e3 patch 8.0.1211: cannot reorder tab pages with drag & drop
Christian Brabandt <cb@256bit.org>
parents: 12543
diff changeset
8001 }
856a840679e3 patch 8.0.1211: cannot reorder tab pages with drag & drop
Christian Brabandt <cb@256bit.org>
parents: 12543
diff changeset
8002 else if ((idx1 < idx0) && (pt.x < nCenter))
856a840679e3 patch 8.0.1211: cannot reorder tab pages with drag & drop
Christian Brabandt <cb@256bit.org>
parents: 12543
diff changeset
8003 {
856a840679e3 patch 8.0.1211: cannot reorder tab pages with drag & drop
Christian Brabandt <cb@256bit.org>
parents: 12543
diff changeset
8004 tabpage_move(idx1);
856a840679e3 patch 8.0.1211: cannot reorder tab pages with drag & drop
Christian Brabandt <cb@256bit.org>
parents: 12543
diff changeset
8005 update_screen(0);
856a840679e3 patch 8.0.1211: cannot reorder tab pages with drag & drop
Christian Brabandt <cb@256bit.org>
parents: 12543
diff changeset
8006 }
856a840679e3 patch 8.0.1211: cannot reorder tab pages with drag & drop
Christian Brabandt <cb@256bit.org>
parents: 12543
diff changeset
8007 }
856a840679e3 patch 8.0.1211: cannot reorder tab pages with drag & drop
Christian Brabandt <cb@256bit.org>
parents: 12543
diff changeset
8008 }
856a840679e3 patch 8.0.1211: cannot reorder tab pages with drag & drop
Christian Brabandt <cb@256bit.org>
parents: 12543
diff changeset
8009 }
856a840679e3 patch 8.0.1211: cannot reorder tab pages with drag & drop
Christian Brabandt <cb@256bit.org>
parents: 12543
diff changeset
8010 break;
856a840679e3 patch 8.0.1211: cannot reorder tab pages with drag & drop
Christian Brabandt <cb@256bit.org>
parents: 12543
diff changeset
8011 case WM_LBUTTONUP:
856a840679e3 patch 8.0.1211: cannot reorder tab pages with drag & drop
Christian Brabandt <cb@256bit.org>
parents: 12543
diff changeset
8012 {
856a840679e3 patch 8.0.1211: cannot reorder tab pages with drag & drop
Christian Brabandt <cb@256bit.org>
parents: 12543
diff changeset
8013 if (GetCapture() == hwnd)
856a840679e3 patch 8.0.1211: cannot reorder tab pages with drag & drop
Christian Brabandt <cb@256bit.org>
parents: 12543
diff changeset
8014 {
856a840679e3 patch 8.0.1211: cannot reorder tab pages with drag & drop
Christian Brabandt <cb@256bit.org>
parents: 12543
diff changeset
8015 SetCursor(s_hCursor);
856a840679e3 patch 8.0.1211: cannot reorder tab pages with drag & drop
Christian Brabandt <cb@256bit.org>
parents: 12543
diff changeset
8016 ReleaseCapture();
856a840679e3 patch 8.0.1211: cannot reorder tab pages with drag & drop
Christian Brabandt <cb@256bit.org>
parents: 12543
diff changeset
8017 }
856a840679e3 patch 8.0.1211: cannot reorder tab pages with drag & drop
Christian Brabandt <cb@256bit.org>
parents: 12543
diff changeset
8018 break;
856a840679e3 patch 8.0.1211: cannot reorder tab pages with drag & drop
Christian Brabandt <cb@256bit.org>
parents: 12543
diff changeset
8019 }
856a840679e3 patch 8.0.1211: cannot reorder tab pages with drag & drop
Christian Brabandt <cb@256bit.org>
parents: 12543
diff changeset
8020 default:
856a840679e3 patch 8.0.1211: cannot reorder tab pages with drag & drop
Christian Brabandt <cb@256bit.org>
parents: 12543
diff changeset
8021 break;
856a840679e3 patch 8.0.1211: cannot reorder tab pages with drag & drop
Christian Brabandt <cb@256bit.org>
parents: 12543
diff changeset
8022 }
856a840679e3 patch 8.0.1211: cannot reorder tab pages with drag & drop
Christian Brabandt <cb@256bit.org>
parents: 12543
diff changeset
8023
5223
91d478da863e updated for version 7.4a.037
Bram Moolenaar <bram@vim.org>
parents: 5020
diff changeset
8024 return CallWindowProc(s_tabline_wndproc, hwnd, uMsg, wParam, lParam);
91d478da863e updated for version 7.4a.037
Bram Moolenaar <bram@vim.org>
parents: 5020
diff changeset
8025 }
810
9f345c48220b updated for version 7.0c
vimboss
parents: 786
diff changeset
8026 #endif
9f345c48220b updated for version 7.0c
vimboss
parents: 786
diff changeset
8027
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
8028 #if defined(FEAT_OLE) || defined(FEAT_EVAL) || defined(PROTO)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
8029 /*
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
8030 * Make the GUI window come to the foreground.
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
8031 */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
8032 void
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
8033 gui_mch_set_foreground(void)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
8034 {
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
8035 if (IsIconic(s_hwnd))
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
8036 SendMessage(s_hwnd, WM_SYSCOMMAND, SC_RESTORE, 0);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
8037 SetForegroundWindow(s_hwnd);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
8038 }
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
8039 #endif
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
8040
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
8041 #if defined(FEAT_MBYTE_IME) && defined(DYNAMIC_IME)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
8042 static void
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
8043 dyn_imm_load(void)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
8044 {
2612
fa5dee44df3f updated for version 7.3.034
Bram Moolenaar <bram@vim.org>
parents: 2520
diff changeset
8045 hLibImm = vimLoadLib("imm32.dll");
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
8046 if (hLibImm == NULL)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
8047 return;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
8048
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
8049 pImmGetCompositionStringW
29105
faf7fcd1c8d5 patch 8.2.5073: clang on MS-Windows produces warnings
Bram Moolenaar <Bram@vim.org>
parents: 29096
diff changeset
8050 = (LONG (WINAPI *)(HIMC, DWORD, LPVOID, DWORD))GetProcAddress(hLibImm, "ImmGetCompositionStringW");
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
8051 pImmGetContext
29105
faf7fcd1c8d5 patch 8.2.5073: clang on MS-Windows produces warnings
Bram Moolenaar <Bram@vim.org>
parents: 29096
diff changeset
8052 = (HIMC (WINAPI *)(HWND))GetProcAddress(hLibImm, "ImmGetContext");
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
8053 pImmAssociateContext
29105
faf7fcd1c8d5 patch 8.2.5073: clang on MS-Windows produces warnings
Bram Moolenaar <Bram@vim.org>
parents: 29096
diff changeset
8054 = (HIMC (WINAPI *)(HWND, HIMC))GetProcAddress(hLibImm, "ImmAssociateContext");
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
8055 pImmReleaseContext
29105
faf7fcd1c8d5 patch 8.2.5073: clang on MS-Windows produces warnings
Bram Moolenaar <Bram@vim.org>
parents: 29096
diff changeset
8056 = (BOOL (WINAPI *)(HWND, HIMC))GetProcAddress(hLibImm, "ImmReleaseContext");
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
8057 pImmGetOpenStatus
29105
faf7fcd1c8d5 patch 8.2.5073: clang on MS-Windows produces warnings
Bram Moolenaar <Bram@vim.org>
parents: 29096
diff changeset
8058 = (BOOL (WINAPI *)(HIMC))GetProcAddress(hLibImm, "ImmGetOpenStatus");
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
8059 pImmSetOpenStatus
29105
faf7fcd1c8d5 patch 8.2.5073: clang on MS-Windows produces warnings
Bram Moolenaar <Bram@vim.org>
parents: 29096
diff changeset
8060 = (BOOL (WINAPI *)(HIMC, BOOL))GetProcAddress(hLibImm, "ImmSetOpenStatus");
16152
8f4eccaaf2c0 patch 8.1.1081: MS-Windows: cannot use some fonts
Bram Moolenaar <Bram@vim.org>
parents: 16123
diff changeset
8061 pImmGetCompositionFontW
29105
faf7fcd1c8d5 patch 8.2.5073: clang on MS-Windows produces warnings
Bram Moolenaar <Bram@vim.org>
parents: 29096
diff changeset
8062 = (BOOL (WINAPI *)(HIMC, LPLOGFONTW))GetProcAddress(hLibImm, "ImmGetCompositionFontW");
16152
8f4eccaaf2c0 patch 8.1.1081: MS-Windows: cannot use some fonts
Bram Moolenaar <Bram@vim.org>
parents: 16123
diff changeset
8063 pImmSetCompositionFontW
29105
faf7fcd1c8d5 patch 8.2.5073: clang on MS-Windows produces warnings
Bram Moolenaar <Bram@vim.org>
parents: 29096
diff changeset
8064 = (BOOL (WINAPI *)(HIMC, LPLOGFONTW))GetProcAddress(hLibImm, "ImmSetCompositionFontW");
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
8065 pImmSetCompositionWindow
29105
faf7fcd1c8d5 patch 8.2.5073: clang on MS-Windows produces warnings
Bram Moolenaar <Bram@vim.org>
parents: 29096
diff changeset
8066 = (BOOL (WINAPI *)(HIMC, LPCOMPOSITIONFORM))GetProcAddress(hLibImm, "ImmSetCompositionWindow");
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
8067 pImmGetConversionStatus
29105
faf7fcd1c8d5 patch 8.2.5073: clang on MS-Windows produces warnings
Bram Moolenaar <Bram@vim.org>
parents: 29096
diff changeset
8068 = (BOOL (WINAPI *)(HIMC, LPDWORD, LPDWORD))GetProcAddress(hLibImm, "ImmGetConversionStatus");
777
f664cc974a7a updated for version 7.0227
vimboss
parents: 714
diff changeset
8069 pImmSetConversionStatus
29105
faf7fcd1c8d5 patch 8.2.5073: clang on MS-Windows produces warnings
Bram Moolenaar <Bram@vim.org>
parents: 29096
diff changeset
8070 = (BOOL (WINAPI *)(HIMC, DWORD, DWORD))GetProcAddress(hLibImm, "ImmSetConversionStatus");
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
8071
27229
6837d2c14dee patch 8.2.4143: MS-Windows: IME support for Win9x is obsolete
Bram Moolenaar <Bram@vim.org>
parents: 27160
diff changeset
8072 if ( pImmGetCompositionStringW == NULL
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
8073 || pImmGetContext == NULL
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
8074 || pImmAssociateContext == NULL
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
8075 || pImmReleaseContext == NULL
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
8076 || pImmGetOpenStatus == NULL
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
8077 || pImmSetOpenStatus == NULL
16152
8f4eccaaf2c0 patch 8.1.1081: MS-Windows: cannot use some fonts
Bram Moolenaar <Bram@vim.org>
parents: 16123
diff changeset
8078 || pImmGetCompositionFontW == NULL
8f4eccaaf2c0 patch 8.1.1081: MS-Windows: cannot use some fonts
Bram Moolenaar <Bram@vim.org>
parents: 16123
diff changeset
8079 || pImmSetCompositionFontW == NULL
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
8080 || pImmSetCompositionWindow == NULL
777
f664cc974a7a updated for version 7.0227
vimboss
parents: 714
diff changeset
8081 || pImmGetConversionStatus == NULL
f664cc974a7a updated for version 7.0227
vimboss
parents: 714
diff changeset
8082 || pImmSetConversionStatus == NULL)
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
8083 {
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
8084 FreeLibrary(hLibImm);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
8085 hLibImm = NULL;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
8086 pImmGetContext = NULL;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
8087 return;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
8088 }
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
8089
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
8090 return;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
8091 }
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
8092
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
8093 #endif
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
8094
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
8095 #if defined(FEAT_SIGN_ICONS) || defined(PROTO)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
8096
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
8097 # ifdef FEAT_XPM_W32
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
8098 # define IMAGE_XPM 100
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
8099 # endif
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
8100
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
8101 typedef struct _signicon_t
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
8102 {
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
8103 HANDLE hImage;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
8104 UINT uType;
18773
38a3bef525e6 patch 8.1.2376: preprocessor indents are incorrect
Bram Moolenaar <Bram@vim.org>
parents: 18763
diff changeset
8105 # ifdef FEAT_XPM_W32
18788
e1f4e9d78a6a patch 8.1.2383: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents: 18773
diff changeset
8106 HANDLE hShape; // Mask bitmap handle
18773
38a3bef525e6 patch 8.1.2376: preprocessor indents are incorrect
Bram Moolenaar <Bram@vim.org>
parents: 18763
diff changeset
8107 # endif
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
8108 } signicon_t;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
8109
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
8110 void
7823
bcef391c101c commit https://github.com/vim/vim/commit/68c2f638e65d914dc6e84eb7ce2624f08af525c0
Christian Brabandt <cb@256bit.org>
parents: 7807
diff changeset
8111 gui_mch_drawsign(int row, int col, int typenr)
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
8112 {
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
8113 signicon_t *sign;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
8114 int x, y, w, h;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
8115
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
8116 if (!gui.in_use || (sign = (signicon_t *)sign_get_image(typenr)) == NULL)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
8117 return;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
8118
18773
38a3bef525e6 patch 8.1.2376: preprocessor indents are incorrect
Bram Moolenaar <Bram@vim.org>
parents: 18763
diff changeset
8119 # if defined(FEAT_DIRECTX)
12934
2ebc3df65ca2 patch 8.0.1343: MS-Windows: does not show colored emojis
Christian Brabandt <cb@256bit.org>
parents: 12924
diff changeset
8120 if (IS_ENABLE_DIRECTX())
2ebc3df65ca2 patch 8.0.1343: MS-Windows: does not show colored emojis
Christian Brabandt <cb@256bit.org>
parents: 12924
diff changeset
8121 DWriteContext_Flush(s_dwc);
18773
38a3bef525e6 patch 8.1.2376: preprocessor indents are incorrect
Bram Moolenaar <Bram@vim.org>
parents: 18763
diff changeset
8122 # endif
12934
2ebc3df65ca2 patch 8.0.1343: MS-Windows: does not show colored emojis
Christian Brabandt <cb@256bit.org>
parents: 12924
diff changeset
8123
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
8124 x = TEXT_X(col);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
8125 y = TEXT_Y(row);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
8126 w = gui.char_width * 2;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
8127 h = gui.char_height;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
8128 switch (sign->uType)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
8129 {
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
8130 case IMAGE_BITMAP:
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
8131 {
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
8132 HDC hdcMem;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
8133 HBITMAP hbmpOld;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
8134
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
8135 hdcMem = CreateCompatibleDC(s_hdc);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
8136 hbmpOld = (HBITMAP)SelectObject(hdcMem, sign->hImage);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
8137 BitBlt(s_hdc, x, y, w, h, hdcMem, 0, 0, SRCCOPY);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
8138 SelectObject(hdcMem, hbmpOld);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
8139 DeleteDC(hdcMem);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
8140 }
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
8141 break;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
8142 case IMAGE_ICON:
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
8143 case IMAGE_CURSOR:
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
8144 DrawIconEx(s_hdc, x, y, (HICON)sign->hImage, w, h, 0, NULL, DI_NORMAL);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
8145 break;
18773
38a3bef525e6 patch 8.1.2376: preprocessor indents are incorrect
Bram Moolenaar <Bram@vim.org>
parents: 18763
diff changeset
8146 # ifdef FEAT_XPM_W32
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
8147 case IMAGE_XPM:
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
8148 {
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
8149 HDC hdcMem;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
8150 HBITMAP hbmpOld;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
8151
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
8152 hdcMem = CreateCompatibleDC(s_hdc);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
8153 hbmpOld = (HBITMAP)SelectObject(hdcMem, sign->hShape);
18788
e1f4e9d78a6a patch 8.1.2383: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents: 18773
diff changeset
8154 // Make hole
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
8155 BitBlt(s_hdc, x, y, w, h, hdcMem, 0, 0, SRCAND);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
8156
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
8157 SelectObject(hdcMem, sign->hImage);
18788
e1f4e9d78a6a patch 8.1.2383: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents: 18773
diff changeset
8158 // Paint sign
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
8159 BitBlt(s_hdc, x, y, w, h, hdcMem, 0, 0, SRCPAINT);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
8160 SelectObject(hdcMem, hbmpOld);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
8161 DeleteDC(hdcMem);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
8162 }
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
8163 break;
18773
38a3bef525e6 patch 8.1.2376: preprocessor indents are incorrect
Bram Moolenaar <Bram@vim.org>
parents: 18763
diff changeset
8164 # endif
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
8165 }
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
8166 }
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
8167
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
8168 static void
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
8169 close_signicon_image(signicon_t *sign)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
8170 {
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
8171 if (sign)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
8172 switch (sign->uType)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
8173 {
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
8174 case IMAGE_BITMAP:
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
8175 DeleteObject((HGDIOBJ)sign->hImage);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
8176 break;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
8177 case IMAGE_CURSOR:
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
8178 DestroyCursor((HCURSOR)sign->hImage);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
8179 break;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
8180 case IMAGE_ICON:
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
8181 DestroyIcon((HICON)sign->hImage);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
8182 break;
18773
38a3bef525e6 patch 8.1.2376: preprocessor indents are incorrect
Bram Moolenaar <Bram@vim.org>
parents: 18763
diff changeset
8183 # ifdef FEAT_XPM_W32
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
8184 case IMAGE_XPM:
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
8185 DeleteObject((HBITMAP)sign->hImage);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
8186 DeleteObject((HBITMAP)sign->hShape);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
8187 break;
18773
38a3bef525e6 patch 8.1.2376: preprocessor indents are incorrect
Bram Moolenaar <Bram@vim.org>
parents: 18763
diff changeset
8188 # endif
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
8189 }
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
8190 }
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
8191
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
8192 void *
7823
bcef391c101c commit https://github.com/vim/vim/commit/68c2f638e65d914dc6e84eb7ce2624f08af525c0
Christian Brabandt <cb@256bit.org>
parents: 7807
diff changeset
8193 gui_mch_register_sign(char_u *signfile)
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
8194 {
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
8195 signicon_t sign, *psign;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
8196 char_u *ext;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
8197
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
8198 sign.hImage = NULL;
18788
e1f4e9d78a6a patch 8.1.2383: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents: 18773
diff changeset
8199 ext = signfile + STRLEN(signfile) - 4; // get extension
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
8200 if (ext > signfile)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
8201 {
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
8202 int do_load = 1;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
8203
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
8204 if (!STRICMP(ext, ".bmp"))
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
8205 sign.uType = IMAGE_BITMAP;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
8206 else if (!STRICMP(ext, ".ico"))
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
8207 sign.uType = IMAGE_ICON;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
8208 else if (!STRICMP(ext, ".cur") || !STRICMP(ext, ".ani"))
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
8209 sign.uType = IMAGE_CURSOR;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
8210 else
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
8211 do_load = 0;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
8212
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
8213 if (do_load)
8090
54cfe888c627 commit https://github.com/vim/vim/commit/418f81b5fa400ed59793384f2f3d9df45390f080
Christian Brabandt <cb@256bit.org>
parents: 7856
diff changeset
8214 sign.hImage = (HANDLE)LoadImage(NULL, (LPCSTR)signfile, sign.uType,
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
8215 gui.char_width * 2, gui.char_height,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
8216 LR_LOADFROMFILE | LR_CREATEDIBSECTION);
18773
38a3bef525e6 patch 8.1.2376: preprocessor indents are incorrect
Bram Moolenaar <Bram@vim.org>
parents: 18763
diff changeset
8217 # ifdef FEAT_XPM_W32
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
8218 if (!STRICMP(ext, ".xpm"))
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
8219 {
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
8220 sign.uType = IMAGE_XPM;
8090
54cfe888c627 commit https://github.com/vim/vim/commit/418f81b5fa400ed59793384f2f3d9df45390f080
Christian Brabandt <cb@256bit.org>
parents: 7856
diff changeset
8221 LoadXpmImage((char *)signfile, (HBITMAP *)&sign.hImage,
54cfe888c627 commit https://github.com/vim/vim/commit/418f81b5fa400ed59793384f2f3d9df45390f080
Christian Brabandt <cb@256bit.org>
parents: 7856
diff changeset
8222 (HBITMAP *)&sign.hShape);
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
8223 }
18773
38a3bef525e6 patch 8.1.2376: preprocessor indents are incorrect
Bram Moolenaar <Bram@vim.org>
parents: 18763
diff changeset
8224 # endif
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
8225 }
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
8226
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
8227 psign = NULL;
16825
ce04ebdf26b8 patch 8.1.1414: alloc() returning "char_u *" causes a lot of type casts
Bram Moolenaar <Bram@vim.org>
parents: 16768
diff changeset
8228 if (sign.hImage && (psign = ALLOC_ONE(signicon_t)) != NULL)
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
8229 *psign = sign;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
8230
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
8231 if (!psign)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
8232 {
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
8233 if (sign.hImage)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
8234 close_signicon_image(&sign);
26883
7f150a4936f2 patch 8.2.3970: error messages are spread out
Bram Moolenaar <Bram@vim.org>
parents: 26865
diff changeset
8235 emsg(_(e_couldnt_read_in_sign_data));
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
8236 }
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
8237 return (void *)psign;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
8238
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
8239 }
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
8240
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
8241 void
7823
bcef391c101c commit https://github.com/vim/vim/commit/68c2f638e65d914dc6e84eb7ce2624f08af525c0
Christian Brabandt <cb@256bit.org>
parents: 7807
diff changeset
8242 gui_mch_destroy_sign(void *sign)
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
8243 {
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
8244 if (sign)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
8245 {
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
8246 close_signicon_image((signicon_t *)sign);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
8247 vim_free(sign);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
8248 }
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
8249 }
293
f811be6fa9b5 updated for version 7.0077
vimboss
parents: 236
diff changeset
8250 #endif
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
8251
12871
1a450ce6980c patch 8.0.1312: balloon_show() only works in terminal when compiled with GUI
Christian Brabandt <cb@256bit.org>
parents: 12802
diff changeset
8252 #if defined(FEAT_BEVAL_GUI) || defined(PROTO)
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
8253
18788
e1f4e9d78a6a patch 8.1.2383: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents: 18773
diff changeset
8254 /*
e1f4e9d78a6a patch 8.1.2383: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents: 18773
diff changeset
8255 * BALLOON-EVAL IMPLEMENTATION FOR WINDOWS.
148
72aefd4c1e0d updated for version 7.0046
vimboss
parents: 87
diff changeset
8256 * Added by Sergey Khorev <sergey.khorev@gmail.com>
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
8257 *
12871
1a450ce6980c patch 8.0.1312: balloon_show() only works in terminal when compiled with GUI
Christian Brabandt <cb@256bit.org>
parents: 12802
diff changeset
8258 * The only reused thing is beval.h and get_beval_info()
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
8259 * from gui_beval.c (note it uses x and y of the BalloonEval struct
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
8260 * to get current mouse position).
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
8261 *
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
8262 * Trying to use as more Windows services as possible, and as less
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
8263 * IE version as possible :)).
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
8264 *
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
8265 * 1) Don't create ToolTip in gui_mch_create_beval_area, only initialize
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
8266 * BalloonEval struct.
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
8267 * 2) Enable/Disable simply create/kill BalloonEval Timer
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
8268 * 3) When there was enough inactivity, timer procedure posts
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
8269 * async request to debugger
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
8270 * 4) gui_mch_post_balloon (invoked from netbeans.c) creates tooltip control
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
8271 * and performs some actions to show it ASAP
1621
82b5078be2dd updated for version 7.2a
vimboss
parents: 1489
diff changeset
8272 * 5) WM_NOTIFY:TTN_POP destroys created tooltip
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
8273 */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
8274
15277
71b762af30c3 patch 8.1.0647: MS-Windows: balloon_show() does not handle wide characters
Bram Moolenaar <Bram@vim.org>
parents: 15034
diff changeset
8275 static void
16196
973070a30381 patch 8.1.1103: MS-Windows: old API calls are no longer needed
Bram Moolenaar <Bram@vim.org>
parents: 16162
diff changeset
8276 make_tooltip(BalloonEval *beval, char *text, POINT pt)
15277
71b762af30c3 patch 8.1.0647: MS-Windows: balloon_show() does not handle wide characters
Bram Moolenaar <Bram@vim.org>
parents: 15034
diff changeset
8277 {
27370
584f91cc2508 patch 8.2.4213: too much code for supporting old MSVC versions
Bram Moolenaar <Bram@vim.org>
parents: 27342
diff changeset
8278 TOOLINFOW *pti;
584f91cc2508 patch 8.2.4213: too much code for supporting old MSVC versions
Bram Moolenaar <Bram@vim.org>
parents: 27342
diff changeset
8279 RECT rect;
584f91cc2508 patch 8.2.4213: too much code for supporting old MSVC versions
Bram Moolenaar <Bram@vim.org>
parents: 27342
diff changeset
8280
584f91cc2508 patch 8.2.4213: too much code for supporting old MSVC versions
Bram Moolenaar <Bram@vim.org>
parents: 27342
diff changeset
8281 pti = alloc(sizeof(TOOLINFOW));
15277
71b762af30c3 patch 8.1.0647: MS-Windows: balloon_show() does not handle wide characters
Bram Moolenaar <Bram@vim.org>
parents: 15034
diff changeset
8282 if (pti == NULL)
71b762af30c3 patch 8.1.0647: MS-Windows: balloon_show() does not handle wide characters
Bram Moolenaar <Bram@vim.org>
parents: 15034
diff changeset
8283 return;
71b762af30c3 patch 8.1.0647: MS-Windows: balloon_show() does not handle wide characters
Bram Moolenaar <Bram@vim.org>
parents: 15034
diff changeset
8284
71b762af30c3 patch 8.1.0647: MS-Windows: balloon_show() does not handle wide characters
Bram Moolenaar <Bram@vim.org>
parents: 15034
diff changeset
8285 beval->balloon = CreateWindowExW(WS_EX_TOPMOST, TOOLTIPS_CLASSW,
71b762af30c3 patch 8.1.0647: MS-Windows: balloon_show() does not handle wide characters
Bram Moolenaar <Bram@vim.org>
parents: 15034
diff changeset
8286 NULL, WS_POPUP | TTS_NOPREFIX | TTS_ALWAYSTIP,
71b762af30c3 patch 8.1.0647: MS-Windows: balloon_show() does not handle wide characters
Bram Moolenaar <Bram@vim.org>
parents: 15034
diff changeset
8287 CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT,
16451
7ae2396cef62 patch 8.1.1230: a lot of code is shared between vim.exe and gvim.exe
Bram Moolenaar <Bram@vim.org>
parents: 16439
diff changeset
8288 beval->target, NULL, g_hinst, NULL);
15277
71b762af30c3 patch 8.1.0647: MS-Windows: balloon_show() does not handle wide characters
Bram Moolenaar <Bram@vim.org>
parents: 15034
diff changeset
8289
71b762af30c3 patch 8.1.0647: MS-Windows: balloon_show() does not handle wide characters
Bram Moolenaar <Bram@vim.org>
parents: 15034
diff changeset
8290 SetWindowPos(beval->balloon, HWND_TOPMOST, 0, 0, 0, 0,
71b762af30c3 patch 8.1.0647: MS-Windows: balloon_show() does not handle wide characters
Bram Moolenaar <Bram@vim.org>
parents: 15034
diff changeset
8291 SWP_NOMOVE | SWP_NOSIZE | SWP_NOACTIVATE);
71b762af30c3 patch 8.1.0647: MS-Windows: balloon_show() does not handle wide characters
Bram Moolenaar <Bram@vim.org>
parents: 15034
diff changeset
8292
27370
584f91cc2508 patch 8.2.4213: too much code for supporting old MSVC versions
Bram Moolenaar <Bram@vim.org>
parents: 27342
diff changeset
8293 pti->cbSize = sizeof(TOOLINFOW);
15277
71b762af30c3 patch 8.1.0647: MS-Windows: balloon_show() does not handle wide characters
Bram Moolenaar <Bram@vim.org>
parents: 15034
diff changeset
8294 pti->uFlags = TTF_SUBCLASS;
71b762af30c3 patch 8.1.0647: MS-Windows: balloon_show() does not handle wide characters
Bram Moolenaar <Bram@vim.org>
parents: 15034
diff changeset
8295 pti->hwnd = beval->target;
71b762af30c3 patch 8.1.0647: MS-Windows: balloon_show() does not handle wide characters
Bram Moolenaar <Bram@vim.org>
parents: 15034
diff changeset
8296 pti->hinst = 0; // Don't use string resources
71b762af30c3 patch 8.1.0647: MS-Windows: balloon_show() does not handle wide characters
Bram Moolenaar <Bram@vim.org>
parents: 15034
diff changeset
8297 pti->uId = ID_BEVAL_TOOLTIP;
71b762af30c3 patch 8.1.0647: MS-Windows: balloon_show() does not handle wide characters
Bram Moolenaar <Bram@vim.org>
parents: 15034
diff changeset
8298
27293
e91b577be192 patch 8.2.4175: MS-Windows: runtime check for multi-line balloon is obsolete
Bram Moolenaar <Bram@vim.org>
parents: 27283
diff changeset
8299 pti->lpszText = LPSTR_TEXTCALLBACKW;
e91b577be192 patch 8.2.4175: MS-Windows: runtime check for multi-line balloon is obsolete
Bram Moolenaar <Bram@vim.org>
parents: 27283
diff changeset
8300 beval->tofree = enc_to_utf16((char_u*)text, NULL);
e91b577be192 patch 8.2.4175: MS-Windows: runtime check for multi-line balloon is obsolete
Bram Moolenaar <Bram@vim.org>
parents: 27283
diff changeset
8301 pti->lParam = (LPARAM)beval->tofree;
e91b577be192 patch 8.2.4175: MS-Windows: runtime check for multi-line balloon is obsolete
Bram Moolenaar <Bram@vim.org>
parents: 27283
diff changeset
8302 // switch multiline tooltips on
e91b577be192 patch 8.2.4175: MS-Windows: runtime check for multi-line balloon is obsolete
Bram Moolenaar <Bram@vim.org>
parents: 27283
diff changeset
8303 if (GetClientRect(s_textArea, &rect))
e91b577be192 patch 8.2.4175: MS-Windows: runtime check for multi-line balloon is obsolete
Bram Moolenaar <Bram@vim.org>
parents: 27283
diff changeset
8304 SendMessageW(beval->balloon, TTM_SETMAXTIPWIDTH, 0,
e91b577be192 patch 8.2.4175: MS-Windows: runtime check for multi-line balloon is obsolete
Bram Moolenaar <Bram@vim.org>
parents: 27283
diff changeset
8305 (LPARAM)rect.right);
15277
71b762af30c3 patch 8.1.0647: MS-Windows: balloon_show() does not handle wide characters
Bram Moolenaar <Bram@vim.org>
parents: 15034
diff changeset
8306
71b762af30c3 patch 8.1.0647: MS-Windows: balloon_show() does not handle wide characters
Bram Moolenaar <Bram@vim.org>
parents: 15034
diff changeset
8307 // Limit ballooneval bounding rect to CursorPos neighbourhood.
71b762af30c3 patch 8.1.0647: MS-Windows: balloon_show() does not handle wide characters
Bram Moolenaar <Bram@vim.org>
parents: 15034
diff changeset
8308 pti->rect.left = pt.x - 3;
71b762af30c3 patch 8.1.0647: MS-Windows: balloon_show() does not handle wide characters
Bram Moolenaar <Bram@vim.org>
parents: 15034
diff changeset
8309 pti->rect.top = pt.y - 3;
71b762af30c3 patch 8.1.0647: MS-Windows: balloon_show() does not handle wide characters
Bram Moolenaar <Bram@vim.org>
parents: 15034
diff changeset
8310 pti->rect.right = pt.x + 3;
71b762af30c3 patch 8.1.0647: MS-Windows: balloon_show() does not handle wide characters
Bram Moolenaar <Bram@vim.org>
parents: 15034
diff changeset
8311 pti->rect.bottom = pt.y + 3;
71b762af30c3 patch 8.1.0647: MS-Windows: balloon_show() does not handle wide characters
Bram Moolenaar <Bram@vim.org>
parents: 15034
diff changeset
8312
71b762af30c3 patch 8.1.0647: MS-Windows: balloon_show() does not handle wide characters
Bram Moolenaar <Bram@vim.org>
parents: 15034
diff changeset
8313 SendMessageW(beval->balloon, TTM_ADDTOOLW, 0, (LPARAM)pti);
71b762af30c3 patch 8.1.0647: MS-Windows: balloon_show() does not handle wide characters
Bram Moolenaar <Bram@vim.org>
parents: 15034
diff changeset
8314 // Make tooltip appear sooner.
71b762af30c3 patch 8.1.0647: MS-Windows: balloon_show() does not handle wide characters
Bram Moolenaar <Bram@vim.org>
parents: 15034
diff changeset
8315 SendMessageW(beval->balloon, TTM_SETDELAYTIME, TTDT_INITIAL, 10);
71b762af30c3 patch 8.1.0647: MS-Windows: balloon_show() does not handle wide characters
Bram Moolenaar <Bram@vim.org>
parents: 15034
diff changeset
8316 // I've performed some tests and it seems the longest possible life time
71b762af30c3 patch 8.1.0647: MS-Windows: balloon_show() does not handle wide characters
Bram Moolenaar <Bram@vim.org>
parents: 15034
diff changeset
8317 // of tooltip is 30 seconds.
71b762af30c3 patch 8.1.0647: MS-Windows: balloon_show() does not handle wide characters
Bram Moolenaar <Bram@vim.org>
parents: 15034
diff changeset
8318 SendMessageW(beval->balloon, TTM_SETDELAYTIME, TTDT_AUTOPOP, 30000);
71b762af30c3 patch 8.1.0647: MS-Windows: balloon_show() does not handle wide characters
Bram Moolenaar <Bram@vim.org>
parents: 15034
diff changeset
8319 /*
71b762af30c3 patch 8.1.0647: MS-Windows: balloon_show() does not handle wide characters
Bram Moolenaar <Bram@vim.org>
parents: 15034
diff changeset
8320 * HACK: force tooltip to appear, because it'll not appear until
71b762af30c3 patch 8.1.0647: MS-Windows: balloon_show() does not handle wide characters
Bram Moolenaar <Bram@vim.org>
parents: 15034
diff changeset
8321 * first mouse move. D*mn M$
71b762af30c3 patch 8.1.0647: MS-Windows: balloon_show() does not handle wide characters
Bram Moolenaar <Bram@vim.org>
parents: 15034
diff changeset
8322 * Amazingly moving (2, 2) and then (-1, -1) the mouse doesn't move.
71b762af30c3 patch 8.1.0647: MS-Windows: balloon_show() does not handle wide characters
Bram Moolenaar <Bram@vim.org>
parents: 15034
diff changeset
8323 */
71b762af30c3 patch 8.1.0647: MS-Windows: balloon_show() does not handle wide characters
Bram Moolenaar <Bram@vim.org>
parents: 15034
diff changeset
8324 mouse_event(MOUSEEVENTF_MOVE, 2, 2, 0, 0);
71b762af30c3 patch 8.1.0647: MS-Windows: balloon_show() does not handle wide characters
Bram Moolenaar <Bram@vim.org>
parents: 15034
diff changeset
8325 mouse_event(MOUSEEVENTF_MOVE, (DWORD)-1, (DWORD)-1, 0, 0);
71b762af30c3 patch 8.1.0647: MS-Windows: balloon_show() does not handle wide characters
Bram Moolenaar <Bram@vim.org>
parents: 15034
diff changeset
8326 vim_free(pti);
71b762af30c3 patch 8.1.0647: MS-Windows: balloon_show() does not handle wide characters
Bram Moolenaar <Bram@vim.org>
parents: 15034
diff changeset
8327 }
71b762af30c3 patch 8.1.0647: MS-Windows: balloon_show() does not handle wide characters
Bram Moolenaar <Bram@vim.org>
parents: 15034
diff changeset
8328
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
8329 static void
7823
bcef391c101c commit https://github.com/vim/vim/commit/68c2f638e65d914dc6e84eb7ce2624f08af525c0
Christian Brabandt <cb@256bit.org>
parents: 7807
diff changeset
8330 delete_tooltip(BalloonEval *beval)
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
8331 {
7056
1ebd7608cfd9 commit https://github.com/vim/vim/commit/8e5f5b47c2198ffa4161c21a4140eaa9bed46f37
Christian Brabandt <cb@256bit.org>
parents: 7032
diff changeset
8332 PostMessage(beval->balloon, WM_CLOSE, 0, 0);
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
8333 }
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
8334
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
8335 static VOID CALLBACK
27525
27694b525305 patch 8.2.4290: MS-Windows: using type casts for timer IDs
Bram Moolenaar <Bram@vim.org>
parents: 27455
diff changeset
8336 beval_timer_proc(
10783
04eb70c77cf4 patch 8.0.0281: some files are still using ARGSUSED instead of UNUSED
Christian Brabandt <cb@256bit.org>
parents: 10440
diff changeset
8337 HWND hwnd UNUSED,
04eb70c77cf4 patch 8.0.0281: some files are still using ARGSUSED instead of UNUSED
Christian Brabandt <cb@256bit.org>
parents: 10440
diff changeset
8338 UINT uMsg UNUSED,
27525
27694b525305 patch 8.2.4290: MS-Windows: using type casts for timer IDs
Bram Moolenaar <Bram@vim.org>
parents: 27455
diff changeset
8339 UINT_PTR idEvent UNUSED,
10783
04eb70c77cf4 patch 8.0.0281: some files are still using ARGSUSED instead of UNUSED
Christian Brabandt <cb@256bit.org>
parents: 10440
diff changeset
8340 DWORD dwTime)
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
8341 {
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
8342 POINT pt;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
8343 RECT rect;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
8344
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
8345 if (cur_beval == NULL || cur_beval->showState == ShS_SHOWING || !p_beval)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
8346 return;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
8347
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
8348 GetCursorPos(&pt);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
8349 if (WindowFromPoint(pt) != s_textArea)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
8350 return;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
8351
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
8352 ScreenToClient(s_textArea, &pt);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
8353 GetClientRect(s_textArea, &rect);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
8354 if (!PtInRect(&rect, pt))
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
8355 return;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
8356
27525
27694b525305 patch 8.2.4290: MS-Windows: using type casts for timer IDs
Bram Moolenaar <Bram@vim.org>
parents: 27455
diff changeset
8357 if (last_user_activity > 0
27694b525305 patch 8.2.4290: MS-Windows: using type casts for timer IDs
Bram Moolenaar <Bram@vim.org>
parents: 27455
diff changeset
8358 && (dwTime - last_user_activity) >= (DWORD)p_bdlay
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
8359 && (cur_beval->showState != ShS_PENDING
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
8360 || abs(cur_beval->x - pt.x) > 3
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
8361 || abs(cur_beval->y - pt.y) > 3))
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
8362 {
18788
e1f4e9d78a6a patch 8.1.2383: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents: 18773
diff changeset
8363 // Pointer resting in one place long enough, it's time to show
e1f4e9d78a6a patch 8.1.2383: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents: 18773
diff changeset
8364 // the tooltip.
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
8365 cur_beval->showState = ShS_PENDING;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
8366 cur_beval->x = pt.x;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
8367 cur_beval->y = pt.y;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
8368
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
8369 if (cur_beval->msgCB != NULL)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
8370 (*cur_beval->msgCB)(cur_beval, 0);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
8371 }
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
8372 }
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
8373
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
8374 void
10783
04eb70c77cf4 patch 8.0.0281: some files are still using ARGSUSED instead of UNUSED
Christian Brabandt <cb@256bit.org>
parents: 10440
diff changeset
8375 gui_mch_disable_beval_area(BalloonEval *beval UNUSED)
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
8376 {
27525
27694b525305 patch 8.2.4290: MS-Windows: using type casts for timer IDs
Bram Moolenaar <Bram@vim.org>
parents: 27455
diff changeset
8377 KillTimer(s_textArea, beval_timer_id);
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
8378 }
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
8379
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
8380 void
7823
bcef391c101c commit https://github.com/vim/vim/commit/68c2f638e65d914dc6e84eb7ce2624f08af525c0
Christian Brabandt <cb@256bit.org>
parents: 7807
diff changeset
8381 gui_mch_enable_beval_area(BalloonEval *beval)
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
8382 {
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
8383 if (beval == NULL)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
8384 return;
27525
27694b525305 patch 8.2.4290: MS-Windows: using type casts for timer IDs
Bram Moolenaar <Bram@vim.org>
parents: 27455
diff changeset
8385 beval_timer_id = SetTimer(s_textArea, 0, (UINT)(p_bdlay / 2),
27694b525305 patch 8.2.4290: MS-Windows: using type casts for timer IDs
Bram Moolenaar <Bram@vim.org>
parents: 27455
diff changeset
8386 beval_timer_proc);
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
8387 }
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
8388
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
8389 void
7823
bcef391c101c commit https://github.com/vim/vim/commit/68c2f638e65d914dc6e84eb7ce2624f08af525c0
Christian Brabandt <cb@256bit.org>
parents: 7807
diff changeset
8390 gui_mch_post_balloon(BalloonEval *beval, char_u *mesg)
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
8391 {
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
8392 POINT pt;
11129
f4ea50924c6d patch 8.0.0452: some macros are in lower case
Christian Brabandt <cb@256bit.org>
parents: 10783
diff changeset
8393
16600
ff3c99bd1038 patch 8.1.1303: not possible to hide a balloon
Bram Moolenaar <Bram@vim.org>
parents: 16596
diff changeset
8394 vim_free(beval->msg);
ff3c99bd1038 patch 8.1.1303: not possible to hide a balloon
Bram Moolenaar <Bram@vim.org>
parents: 16596
diff changeset
8395 beval->msg = mesg == NULL ? NULL : vim_strsave(mesg);
ff3c99bd1038 patch 8.1.1303: not possible to hide a balloon
Bram Moolenaar <Bram@vim.org>
parents: 16596
diff changeset
8396 if (beval->msg == NULL)
ff3c99bd1038 patch 8.1.1303: not possible to hide a balloon
Bram Moolenaar <Bram@vim.org>
parents: 16596
diff changeset
8397 {
ff3c99bd1038 patch 8.1.1303: not possible to hide a balloon
Bram Moolenaar <Bram@vim.org>
parents: 16596
diff changeset
8398 delete_tooltip(beval);
ff3c99bd1038 patch 8.1.1303: not possible to hide a balloon
Bram Moolenaar <Bram@vim.org>
parents: 16596
diff changeset
8399 beval->showState = ShS_NEUTRAL;
ff3c99bd1038 patch 8.1.1303: not possible to hide a balloon
Bram Moolenaar <Bram@vim.org>
parents: 16596
diff changeset
8400 return;
ff3c99bd1038 patch 8.1.1303: not possible to hide a balloon
Bram Moolenaar <Bram@vim.org>
parents: 16596
diff changeset
8401 }
ff3c99bd1038 patch 8.1.1303: not possible to hide a balloon
Bram Moolenaar <Bram@vim.org>
parents: 16596
diff changeset
8402
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
8403 if (beval->showState == ShS_SHOWING)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
8404 return;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
8405 GetCursorPos(&pt);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
8406 ScreenToClient(s_textArea, &pt);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
8407
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
8408 if (abs(beval->x - pt.x) < 3 && abs(beval->y - pt.y) < 3)
11129
f4ea50924c6d patch 8.0.0452: some macros are in lower case
Christian Brabandt <cb@256bit.org>
parents: 10783
diff changeset
8409 {
18788
e1f4e9d78a6a patch 8.1.2383: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents: 18773
diff changeset
8410 // cursor is still here
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
8411 gui_mch_disable_beval_area(cur_beval);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
8412 beval->showState = ShS_SHOWING;
8090
54cfe888c627 commit https://github.com/vim/vim/commit/418f81b5fa400ed59793384f2f3d9df45390f080
Christian Brabandt <cb@256bit.org>
parents: 7856
diff changeset
8413 make_tooltip(beval, (char *)mesg, pt);
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
8414 }
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
8415 }
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
8416
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
8417 BalloonEval *
7823
bcef391c101c commit https://github.com/vim/vim/commit/68c2f638e65d914dc6e84eb7ce2624f08af525c0
Christian Brabandt <cb@256bit.org>
parents: 7807
diff changeset
8418 gui_mch_create_beval_area(
18788
e1f4e9d78a6a patch 8.1.2383: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents: 18773
diff changeset
8419 void *target UNUSED, // ignored, always use s_textArea
7823
bcef391c101c commit https://github.com/vim/vim/commit/68c2f638e65d914dc6e84eb7ce2624f08af525c0
Christian Brabandt <cb@256bit.org>
parents: 7807
diff changeset
8420 char_u *mesg,
bcef391c101c commit https://github.com/vim/vim/commit/68c2f638e65d914dc6e84eb7ce2624f08af525c0
Christian Brabandt <cb@256bit.org>
parents: 7807
diff changeset
8421 void (*mesgCB)(BalloonEval *, int),
bcef391c101c commit https://github.com/vim/vim/commit/68c2f638e65d914dc6e84eb7ce2624f08af525c0
Christian Brabandt <cb@256bit.org>
parents: 7807
diff changeset
8422 void *clientData)
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
8423 {
18788
e1f4e9d78a6a patch 8.1.2383: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents: 18773
diff changeset
8424 // partially stolen from gui_beval.c
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
8425 BalloonEval *beval;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
8426
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
8427 if (mesg != NULL && mesgCB != NULL)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
8428 {
26893
79c76ca2c53c patch 8.2.3975: error messages are spread out
Bram Moolenaar <Bram@vim.org>
parents: 26883
diff changeset
8429 iemsg(_(e_cannot_create_ballooneval_with_both_message_and_callback));
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
8430 return NULL;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
8431 }
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
8432
16825
ce04ebdf26b8 patch 8.1.1414: alloc() returning "char_u *" causes a lot of type casts
Bram Moolenaar <Bram@vim.org>
parents: 16768
diff changeset
8433 beval = ALLOC_CLEAR_ONE(BalloonEval);
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
8434 if (beval != NULL)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
8435 {
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
8436 beval->target = s_textArea;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
8437
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
8438 beval->showState = ShS_NEUTRAL;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
8439 beval->msg = mesg;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
8440 beval->msgCB = mesgCB;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
8441 beval->clientData = clientData;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
8442
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
8443 InitCommonControls();
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
8444 cur_beval = beval;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
8445
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
8446 if (p_beval)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
8447 gui_mch_enable_beval_area(beval);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
8448 }
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
8449 return beval;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
8450 }
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
8451
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
8452 static void
10783
04eb70c77cf4 patch 8.0.0281: some files are still using ARGSUSED instead of UNUSED
Christian Brabandt <cb@256bit.org>
parents: 10440
diff changeset
8453 Handle_WM_Notify(HWND hwnd UNUSED, LPNMHDR pnmh)
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
8454 {
18788
e1f4e9d78a6a patch 8.1.2383: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents: 18773
diff changeset
8455 if (pnmh->idFrom != ID_BEVAL_TOOLTIP) // it is not our tooltip
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
8456 return;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
8457
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
8458 if (cur_beval != NULL)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
8459 {
435
73f016dbb279 updated for version 7.0112
vimboss
parents: 419
diff changeset
8460 switch (pnmh->code)
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
8461 {
435
73f016dbb279 updated for version 7.0112
vimboss
parents: 419
diff changeset
8462 case TTN_SHOW:
73f016dbb279 updated for version 7.0112
vimboss
parents: 419
diff changeset
8463 break;
18788
e1f4e9d78a6a patch 8.1.2383: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents: 18773
diff changeset
8464 case TTN_POP: // Before tooltip disappear
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
8465 delete_tooltip(cur_beval);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
8466 gui_mch_enable_beval_area(cur_beval);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
8467
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
8468 cur_beval->showState = ShS_NEUTRAL;
435
73f016dbb279 updated for version 7.0112
vimboss
parents: 419
diff changeset
8469 break;
73f016dbb279 updated for version 7.0112
vimboss
parents: 419
diff changeset
8470 case TTN_GETDISPINFO:
1481
0c61c201ba76 updated for version 7.1-196
vimboss
parents: 1376
diff changeset
8471 {
18788
e1f4e9d78a6a patch 8.1.2383: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents: 18773
diff changeset
8472 // if you get there then we have new common controls
27370
584f91cc2508 patch 8.2.4213: too much code for supporting old MSVC versions
Bram Moolenaar <Bram@vim.org>
parents: 27342
diff changeset
8473 NMTTDISPINFO *info = (NMTTDISPINFO *)pnmh;
1481
0c61c201ba76 updated for version 7.1-196
vimboss
parents: 1376
diff changeset
8474 info->lpszText = (LPSTR)info->lParam;
0c61c201ba76 updated for version 7.1-196
vimboss
parents: 1376
diff changeset
8475 info->uFlags |= TTF_DI_SETITEM;
0c61c201ba76 updated for version 7.1-196
vimboss
parents: 1376
diff changeset
8476 }
435
73f016dbb279 updated for version 7.0112
vimboss
parents: 419
diff changeset
8477 break;
15277
71b762af30c3 patch 8.1.0647: MS-Windows: balloon_show() does not handle wide characters
Bram Moolenaar <Bram@vim.org>
parents: 15034
diff changeset
8478 case TTN_GETDISPINFOW:
71b762af30c3 patch 8.1.0647: MS-Windows: balloon_show() does not handle wide characters
Bram Moolenaar <Bram@vim.org>
parents: 15034
diff changeset
8479 {
71b762af30c3 patch 8.1.0647: MS-Windows: balloon_show() does not handle wide characters
Bram Moolenaar <Bram@vim.org>
parents: 15034
diff changeset
8480 // if we get here then we have new common controls
27370
584f91cc2508 patch 8.2.4213: too much code for supporting old MSVC versions
Bram Moolenaar <Bram@vim.org>
parents: 27342
diff changeset
8481 NMTTDISPINFOW *info = (NMTTDISPINFOW *)pnmh;
15277
71b762af30c3 patch 8.1.0647: MS-Windows: balloon_show() does not handle wide characters
Bram Moolenaar <Bram@vim.org>
parents: 15034
diff changeset
8482 info->lpszText = (LPWSTR)info->lParam;
71b762af30c3 patch 8.1.0647: MS-Windows: balloon_show() does not handle wide characters
Bram Moolenaar <Bram@vim.org>
parents: 15034
diff changeset
8483 info->uFlags |= TTF_DI_SETITEM;
71b762af30c3 patch 8.1.0647: MS-Windows: balloon_show() does not handle wide characters
Bram Moolenaar <Bram@vim.org>
parents: 15034
diff changeset
8484 }
71b762af30c3 patch 8.1.0647: MS-Windows: balloon_show() does not handle wide characters
Bram Moolenaar <Bram@vim.org>
parents: 15034
diff changeset
8485 break;
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
8486 }
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
8487 }
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
8488 }
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
8489
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
8490 static void
27525
27694b525305 patch 8.2.4290: MS-Windows: using type casts for timer IDs
Bram Moolenaar <Bram@vim.org>
parents: 27455
diff changeset
8491 track_user_activity(UINT uMsg)
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
8492 {
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
8493 if ((uMsg >= WM_MOUSEFIRST && uMsg <= WM_MOUSELAST)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
8494 || (uMsg >= WM_KEYFIRST && uMsg <= WM_KEYLAST))
27525
27694b525305 patch 8.2.4290: MS-Windows: using type casts for timer IDs
Bram Moolenaar <Bram@vim.org>
parents: 27455
diff changeset
8495 last_user_activity = GetTickCount();
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
8496 }
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
8497
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
8498 void
7823
bcef391c101c commit https://github.com/vim/vim/commit/68c2f638e65d914dc6e84eb7ce2624f08af525c0
Christian Brabandt <cb@256bit.org>
parents: 7807
diff changeset
8499 gui_mch_destroy_beval_area(BalloonEval *beval)
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
8500 {
18773
38a3bef525e6 patch 8.1.2376: preprocessor indents are incorrect
Bram Moolenaar <Bram@vim.org>
parents: 18763
diff changeset
8501 # ifdef FEAT_VARTABS
15288
e3dfd25b0679 patch 8.1.0652: freeing memory for balloon eval too early
Bram Moolenaar <Bram@vim.org>
parents: 15277
diff changeset
8502 vim_free(beval->vts);
18773
38a3bef525e6 patch 8.1.2376: preprocessor indents are incorrect
Bram Moolenaar <Bram@vim.org>
parents: 18763
diff changeset
8503 # endif
15288
e3dfd25b0679 patch 8.1.0652: freeing memory for balloon eval too early
Bram Moolenaar <Bram@vim.org>
parents: 15277
diff changeset
8504 vim_free(beval->tofree);
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
8505 vim_free(beval);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
8506 }
18788
e1f4e9d78a6a patch 8.1.2383: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents: 18773
diff changeset
8507 #endif // FEAT_BEVAL_GUI
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
8508
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
8509 #if defined(FEAT_NETBEANS_INTG) || defined(PROTO)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
8510 /*
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
8511 * We have multiple signs to draw at the same location. Draw the
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
8512 * multi-sign indicator (down-arrow) instead. This is the Win32 version.
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
8513 */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
8514 void
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
8515 netbeans_draw_multisign_indicator(int row)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
8516 {
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
8517 int i;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
8518 int y;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
8519 int x;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
8520
2210
8c6a66e2b3cc Add :nbstart and :nbclose.
Bram Moolenaar <bram@vim.org>
parents: 2078
diff changeset
8521 if (!netbeans_active())
2311
ccda151dde4e Support completion for ":find". (Nazri Ramliy)
Bram Moolenaar <bram@vim.org>
parents: 2224
diff changeset
8522 return;
2210
8c6a66e2b3cc Add :nbstart and :nbclose.
Bram Moolenaar <bram@vim.org>
parents: 2078
diff changeset
8523
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
8524 x = 0;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
8525 y = TEXT_Y(row);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
8526
18773
38a3bef525e6 patch 8.1.2376: preprocessor indents are incorrect
Bram Moolenaar <Bram@vim.org>
parents: 18763
diff changeset
8527 # if defined(FEAT_DIRECTX)
12934
2ebc3df65ca2 patch 8.0.1343: MS-Windows: does not show colored emojis
Christian Brabandt <cb@256bit.org>
parents: 12924
diff changeset
8528 if (IS_ENABLE_DIRECTX())
2ebc3df65ca2 patch 8.0.1343: MS-Windows: does not show colored emojis
Christian Brabandt <cb@256bit.org>
parents: 12924
diff changeset
8529 DWriteContext_Flush(s_dwc);
18773
38a3bef525e6 patch 8.1.2376: preprocessor indents are incorrect
Bram Moolenaar <Bram@vim.org>
parents: 18763
diff changeset
8530 # endif
12934
2ebc3df65ca2 patch 8.0.1343: MS-Windows: does not show colored emojis
Christian Brabandt <cb@256bit.org>
parents: 12924
diff changeset
8531
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
8532 for (i = 0; i < gui.char_height - 3; i++)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
8533 SetPixel(s_hdc, x+2, y++, gui.currFgColor);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
8534
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
8535 SetPixel(s_hdc, x+0, y, gui.currFgColor);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
8536 SetPixel(s_hdc, x+2, y, gui.currFgColor);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
8537 SetPixel(s_hdc, x+4, y++, gui.currFgColor);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
8538 SetPixel(s_hdc, x+1, y, gui.currFgColor);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
8539 SetPixel(s_hdc, x+2, y, gui.currFgColor);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
8540 SetPixel(s_hdc, x+3, y++, gui.currFgColor);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
8541 SetPixel(s_hdc, x+2, y, gui.currFgColor);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
8542 }
7743
6069f43cea4e commit https://github.com/vim/vim/commit/e0874f8cbcddfcf9965a85ba35199964efb1d01a
Christian Brabandt <cb@256bit.org>
parents: 7560
diff changeset
8543 #endif
29432
339fe2968690 patch 9.0.0058: Win32: cannot test low level events
Bram Moolenaar <Bram@vim.org>
parents: 29310
diff changeset
8544
339fe2968690 patch 9.0.0058: Win32: cannot test low level events
Bram Moolenaar <Bram@vim.org>
parents: 29310
diff changeset
8545 #if defined(FEAT_EVAL) || defined(PROTO)
339fe2968690 patch 9.0.0058: Win32: cannot test low level events
Bram Moolenaar <Bram@vim.org>
parents: 29310
diff changeset
8546 int
339fe2968690 patch 9.0.0058: Win32: cannot test low level events
Bram Moolenaar <Bram@vim.org>
parents: 29310
diff changeset
8547 test_gui_w32_sendevent(dict_T *args)
339fe2968690 patch 9.0.0058: Win32: cannot test low level events
Bram Moolenaar <Bram@vim.org>
parents: 29310
diff changeset
8548 {
339fe2968690 patch 9.0.0058: Win32: cannot test low level events
Bram Moolenaar <Bram@vim.org>
parents: 29310
diff changeset
8549 char_u *event;
339fe2968690 patch 9.0.0058: Win32: cannot test low level events
Bram Moolenaar <Bram@vim.org>
parents: 29310
diff changeset
8550 INPUT inputs[1];
339fe2968690 patch 9.0.0058: Win32: cannot test low level events
Bram Moolenaar <Bram@vim.org>
parents: 29310
diff changeset
8551
29442
827d9f2b7a71 patch 9.0.0063: too many type casts for dict_get functions
Bram Moolenaar <Bram@vim.org>
parents: 29440
diff changeset
8552 event = dict_get_string(args, "event", TRUE);
29432
339fe2968690 patch 9.0.0058: Win32: cannot test low level events
Bram Moolenaar <Bram@vim.org>
parents: 29310
diff changeset
8553 if (event == NULL)
339fe2968690 patch 9.0.0058: Win32: cannot test low level events
Bram Moolenaar <Bram@vim.org>
parents: 29310
diff changeset
8554 return FALSE;
339fe2968690 patch 9.0.0058: Win32: cannot test low level events
Bram Moolenaar <Bram@vim.org>
parents: 29310
diff changeset
8555
339fe2968690 patch 9.0.0058: Win32: cannot test low level events
Bram Moolenaar <Bram@vim.org>
parents: 29310
diff changeset
8556 ZeroMemory(inputs, sizeof(inputs));
339fe2968690 patch 9.0.0058: Win32: cannot test low level events
Bram Moolenaar <Bram@vim.org>
parents: 29310
diff changeset
8557
339fe2968690 patch 9.0.0058: Win32: cannot test low level events
Bram Moolenaar <Bram@vim.org>
parents: 29310
diff changeset
8558 if (STRICMP(event, "keydown") == 0 || STRICMP(event, "keyup") == 0)
339fe2968690 patch 9.0.0058: Win32: cannot test low level events
Bram Moolenaar <Bram@vim.org>
parents: 29310
diff changeset
8559 {
339fe2968690 patch 9.0.0058: Win32: cannot test low level events
Bram Moolenaar <Bram@vim.org>
parents: 29310
diff changeset
8560 WORD vkCode;
339fe2968690 patch 9.0.0058: Win32: cannot test low level events
Bram Moolenaar <Bram@vim.org>
parents: 29310
diff changeset
8561
29442
827d9f2b7a71 patch 9.0.0063: too many type casts for dict_get functions
Bram Moolenaar <Bram@vim.org>
parents: 29440
diff changeset
8562 vkCode = dict_get_number_def(args, "keycode", 0);
29432
339fe2968690 patch 9.0.0058: Win32: cannot test low level events
Bram Moolenaar <Bram@vim.org>
parents: 29310
diff changeset
8563 if (vkCode <= 0 || vkCode >= 0xFF)
339fe2968690 patch 9.0.0058: Win32: cannot test low level events
Bram Moolenaar <Bram@vim.org>
parents: 29310
diff changeset
8564 {
339fe2968690 patch 9.0.0058: Win32: cannot test low level events
Bram Moolenaar <Bram@vim.org>
parents: 29310
diff changeset
8565 semsg(_(e_invalid_argument_nr), (long)vkCode);
339fe2968690 patch 9.0.0058: Win32: cannot test low level events
Bram Moolenaar <Bram@vim.org>
parents: 29310
diff changeset
8566 return FALSE;
339fe2968690 patch 9.0.0058: Win32: cannot test low level events
Bram Moolenaar <Bram@vim.org>
parents: 29310
diff changeset
8567 }
339fe2968690 patch 9.0.0058: Win32: cannot test low level events
Bram Moolenaar <Bram@vim.org>
parents: 29310
diff changeset
8568
339fe2968690 patch 9.0.0058: Win32: cannot test low level events
Bram Moolenaar <Bram@vim.org>
parents: 29310
diff changeset
8569 inputs[0].type = INPUT_KEYBOARD;
339fe2968690 patch 9.0.0058: Win32: cannot test low level events
Bram Moolenaar <Bram@vim.org>
parents: 29310
diff changeset
8570 inputs[0].ki.wVk = vkCode;
339fe2968690 patch 9.0.0058: Win32: cannot test low level events
Bram Moolenaar <Bram@vim.org>
parents: 29310
diff changeset
8571 if (STRICMP(event, "keyup") == 0)
339fe2968690 patch 9.0.0058: Win32: cannot test low level events
Bram Moolenaar <Bram@vim.org>
parents: 29310
diff changeset
8572 inputs[0].ki.dwFlags = KEYEVENTF_KEYUP;
339fe2968690 patch 9.0.0058: Win32: cannot test low level events
Bram Moolenaar <Bram@vim.org>
parents: 29310
diff changeset
8573 SendInput(ARRAYSIZE(inputs), inputs, sizeof(INPUT));
339fe2968690 patch 9.0.0058: Win32: cannot test low level events
Bram Moolenaar <Bram@vim.org>
parents: 29310
diff changeset
8574 }
339fe2968690 patch 9.0.0058: Win32: cannot test low level events
Bram Moolenaar <Bram@vim.org>
parents: 29310
diff changeset
8575 else
339fe2968690 patch 9.0.0058: Win32: cannot test low level events
Bram Moolenaar <Bram@vim.org>
parents: 29310
diff changeset
8576 semsg(_(e_invalid_argument_str), event);
339fe2968690 patch 9.0.0058: Win32: cannot test low level events
Bram Moolenaar <Bram@vim.org>
parents: 29310
diff changeset
8577
339fe2968690 patch 9.0.0058: Win32: cannot test low level events
Bram Moolenaar <Bram@vim.org>
parents: 29310
diff changeset
8578 vim_free(event);
339fe2968690 patch 9.0.0058: Win32: cannot test low level events
Bram Moolenaar <Bram@vim.org>
parents: 29310
diff changeset
8579
339fe2968690 patch 9.0.0058: Win32: cannot test low level events
Bram Moolenaar <Bram@vim.org>
parents: 29310
diff changeset
8580 return TRUE;
339fe2968690 patch 9.0.0058: Win32: cannot test low level events
Bram Moolenaar <Bram@vim.org>
parents: 29310
diff changeset
8581 }
339fe2968690 patch 9.0.0058: Win32: cannot test low level events
Bram Moolenaar <Bram@vim.org>
parents: 29310
diff changeset
8582 #endif