annotate src/gui.h @ 34420:c5a945f7f3da v9.1.0133

patch 9.1.0133: MS-Windows: ligatures not rendering correctly Commit: https://github.com/vim/vim/commit/8b1e749ca6ca6d09a174c57de6999f69393ee567 Author: Erik S. V. Jansson <caffeineviking@gmail.com> Date: Sat Feb 24 14:26:52 2024 +0100 patch 9.1.0133: MS-Windows: ligatures not rendering correctly Problem: font ligatures don't render correctly in the Win32 GUI-version of gvim even when set rop=type:directx is used. Setting guiligatures also doesn't make any difference. This leads to broken font ligatures when the cursor passes through them. It does not recover from this, and they remain broken until you re-render the whole buffer (e.g. by using Ctrl+L). Solution: the problem is that we only re-draw the current and previous character in gui_undraw_cursor() and only have the special case for GTK when it comes to rendering ligatures. So let's enable gui_adjust_undraw_cursor_for_ligatures() to also happen for Win32 GUI if guiligatures is setup correctly (all this does is expand the range of gui_undraw_cursor() with ligature characters). related: #9181 related: #12901 closes: #14084 Signed-off-by: Erik S. V. Jansson <caffeineviking@gmail.com> Signed-off-by: Christian Brabandt <cb@256bit.org>
author Christian Brabandt <cb@256bit.org>
date Sat, 24 Feb 2024 14:45:03 +0100
parents 995b539939c4
children
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: 9834
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 * Motif 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 */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
9
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
10 #ifdef FEAT_GUI_MOTIF
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
11 # include <Xm/Xm.h>
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
12 #endif
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
13
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
14 #ifdef FEAT_GUI_GTK
33888
cb88e5c589d0 patch 9.0.2153: no support to build on OpenVMS
Christian Brabandt <cb@256bit.org>
parents: 33404
diff changeset
15 # ifdef VMS
23408
bdda90ed5f6c patch 8.2.2247: VMS: various smaller problems
Bram Moolenaar <Bram@vim.org>
parents: 21745
diff changeset
16 # include "gui_gtk_vms.h"
33888
cb88e5c589d0 patch 9.0.2153: no support to build on OpenVMS
Christian Brabandt <cb@256bit.org>
parents: 33404
diff changeset
17 # endif
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
18 # include <X11/Intrinsic.h>
33404
9b35b4c6df4c patch 9.0.1960: Make CI checks more strict
Christian Brabandt <cb@256bit.org>
parents: 30075
diff changeset
19 # pragma GCC diagnostic push
9b35b4c6df4c patch 9.0.1960: Make CI checks more strict
Christian Brabandt <cb@256bit.org>
parents: 30075
diff changeset
20 # pragma GCC diagnostic ignored "-Wstrict-prototypes"
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
21 # include <gtk/gtk.h>
33404
9b35b4c6df4c patch 9.0.1960: Make CI checks more strict
Christian Brabandt <cb@256bit.org>
parents: 30075
diff changeset
22 # pragma GCC diagnostic pop
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
23 #endif
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
24
19526
22f0dda71638 patch 8.2.0320: no Haiku support
Bram Moolenaar <Bram@vim.org>
parents: 18753
diff changeset
25 #ifdef FEAT_GUI_HAIKU
22f0dda71638 patch 8.2.0320: no Haiku support
Bram Moolenaar <Bram@vim.org>
parents: 18753
diff changeset
26 # include "gui_haiku.h"
22f0dda71638 patch 8.2.0320: no Haiku support
Bram Moolenaar <Bram@vim.org>
parents: 18753
diff changeset
27 #endif
22f0dda71638 patch 8.2.0320: no Haiku support
Bram Moolenaar <Bram@vim.org>
parents: 18753
diff changeset
28
17268
00cd8830bab9 patch 8.1.1633: cannot generate prototypes with X11 but without GUI
Bram Moolenaar <Bram@vim.org>
parents: 16451
diff changeset
29 // Needed when generating prototypes, since FEAT_GUI is always defined then.
00cd8830bab9 patch 8.1.1633: cannot generate prototypes with X11 but without GUI
Bram Moolenaar <Bram@vim.org>
parents: 16451
diff changeset
30 #if defined(FEAT_XCLIPBOARD) && !defined(FEAT_GUI_MOTIF) \
28303
9849df834f1d patch 8.2.4677: the Athena GUI support is outdated
Bram Moolenaar <Bram@vim.org>
parents: 28226
diff changeset
31 && !defined(FEAT_GUI_GTK)
17268
00cd8830bab9 patch 8.1.1633: cannot generate prototypes with X11 but without GUI
Bram Moolenaar <Bram@vim.org>
parents: 16451
diff changeset
32 # include <X11/Intrinsic.h>
00cd8830bab9 patch 8.1.1633: cannot generate prototypes with X11 but without GUI
Bram Moolenaar <Bram@vim.org>
parents: 16451
diff changeset
33 #endif
00cd8830bab9 patch 8.1.1633: cannot generate prototypes with X11 but without GUI
Bram Moolenaar <Bram@vim.org>
parents: 16451
diff changeset
34
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
35 #ifdef FEAT_GUI_PHOTON
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
36 # include <Ph.h>
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
37 # include <Pt.h>
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
38 # include "photon/PxProto.h"
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
39 #endif
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
40
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
41 /*
1137
26a577a823aa updated for version 7.1a
vimboss
parents: 1106
diff changeset
42 * On some systems scrolling needs to be done right away instead of in the
26a577a823aa updated for version 7.1a
vimboss
parents: 1106
diff changeset
43 * main loop.
26a577a823aa updated for version 7.1a
vimboss
parents: 1106
diff changeset
44 */
21745
35921b7fc07a patch 8.2.1422: the Mac GUI implementation is outdated
Bram Moolenaar <Bram@vim.org>
parents: 19526
diff changeset
45 #if defined(FEAT_GUI_MSWIN) || defined(FEAT_GUI_GTK)
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
46 # define USE_ON_FLY_SCROLL
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
47 #endif
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
48
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
49 /*
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
50 * GUIs that support dropping files on a running Vim.
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
51 */
14428
aab5947be7c5 patch 8.1.0228: dropping files is ignored while Vim is busy
Christian Brabandt <cb@256bit.org>
parents: 13847
diff changeset
52 #if (defined(FEAT_DND) && defined(FEAT_GUI_GTK)) \
aab5947be7c5 patch 8.1.0228: dropping files is ignored while Vim is busy
Christian Brabandt <cb@256bit.org>
parents: 13847
diff changeset
53 || defined(FEAT_GUI_MSWIN) \
19526
22f0dda71638 patch 8.2.0320: no Haiku support
Bram Moolenaar <Bram@vim.org>
parents: 18753
diff changeset
54 || defined(FEAT_GUI_HAIKU)
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
55 # define HAVE_DROP_FILE
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
56 #endif
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
57
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
58 /*
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
59 * This define makes menus always use a fontset.
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
60 * We're not sure if this code always works, thus it can be disabled.
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
61 */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
62 #ifdef FEAT_XFONTSET
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
63 # define FONTSET_ALWAYS
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
64 #endif
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
65
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
66 /*
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
67 * These macros convert between character row/column and pixel coordinates.
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
68 * TEXT_X - Convert character column into X pixel coord for drawing strings.
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
69 * TEXT_Y - Convert character row into Y pixel coord for drawing strings.
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
70 * FILL_X - Convert character column into X pixel coord for filling the area
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
71 * under the character.
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
72 * FILL_Y - Convert character row into Y pixel coord for filling the area
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
73 * under the character.
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
74 * X_2_COL - Convert X pixel coord into character column.
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
75 * Y_2_ROW - Convert Y pixel coord into character row.
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
76 */
15868
7fad90423bd2 patch 8.1.0941: macros for MS-Windows are inconsistent
Bram Moolenaar <Bram@vim.org>
parents: 15605
diff changeset
77 #ifdef FEAT_GUI_MSWIN
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
78 # define TEXT_X(col) ((col) * gui.char_width)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
79 # define TEXT_Y(row) ((row) * gui.char_height + gui.char_ascent)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
80 # define FILL_X(col) ((col) * gui.char_width)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
81 # define FILL_Y(row) ((row) * gui.char_height)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
82 # define X_2_COL(x) ((x) / gui.char_width)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
83 # define Y_2_ROW(y) ((y) / gui.char_height)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
84 #else
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
85 # define TEXT_X(col) ((col) * gui.char_width + gui.border_offset)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
86 # define FILL_X(col) ((col) * gui.char_width + gui.border_offset)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
87 # define X_2_COL(x) (((x) - gui.border_offset) / gui.char_width)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
88 # define TEXT_Y(row) ((row) * gui.char_height + gui.char_ascent \
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
89 + gui.border_offset)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
90 # define FILL_Y(row) ((row) * gui.char_height + gui.border_offset)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
91 # define Y_2_ROW(y) (((y) - gui.border_offset) / gui.char_height)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
92 #endif
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
93
18753
6e3dc2d630c2 patch 8.1.2366: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents: 17268
diff changeset
94 // Indices for arrays of scrollbars
28226
89c181c99e23 patch 8.2.4639: not sufficient parenthesis in preprocessor macros
Bram Moolenaar <Bram@vim.org>
parents: 28067
diff changeset
95 #define SBAR_NONE (-1)
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
96 #define SBAR_LEFT 0
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
97 #define SBAR_RIGHT 1
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
98 #define SBAR_BOTTOM 2
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
99
18753
6e3dc2d630c2 patch 8.1.2366: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents: 17268
diff changeset
100 // Orientations for scrollbars
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
101 #define SBAR_VERT 0
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
102 #define SBAR_HORIZ 1
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
103
18753
6e3dc2d630c2 patch 8.1.2366: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents: 17268
diff changeset
104 // Default size of scrollbar
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
105 #define SB_DEFAULT_WIDTH 16
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
106
18753
6e3dc2d630c2 patch 8.1.2366: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents: 17268
diff changeset
107 // Default height of the menu bar
6e3dc2d630c2 patch 8.1.2366: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents: 17268
diff changeset
108 #define MENU_DEFAULT_HEIGHT 1 // figure it out at runtime
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
109
18753
6e3dc2d630c2 patch 8.1.2366: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents: 17268
diff changeset
110 // Flags for gui_mch_outstr_nowrap()
6e3dc2d630c2 patch 8.1.2366: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents: 17268
diff changeset
111 #define GUI_MON_WRAP_CURSOR 0x01 // wrap cursor at end of line
6e3dc2d630c2 patch 8.1.2366: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents: 17268
diff changeset
112 #define GUI_MON_INVERT 0x02 // invert the characters
6e3dc2d630c2 patch 8.1.2366: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents: 17268
diff changeset
113 #define GUI_MON_IS_CURSOR 0x04 // drawing cursor
6e3dc2d630c2 patch 8.1.2366: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents: 17268
diff changeset
114 #define GUI_MON_TRS_CURSOR 0x08 // drawing transparent cursor
6e3dc2d630c2 patch 8.1.2366: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents: 17268
diff changeset
115 #define GUI_MON_NOCLEAR 0x10 // don't clear selection
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
116
18753
6e3dc2d630c2 patch 8.1.2366: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents: 17268
diff changeset
117 // Flags for gui_mch_draw_string()
6e3dc2d630c2 patch 8.1.2366: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents: 17268
diff changeset
118 #define DRAW_TRANSP 0x01 // draw with transparent bg
6e3dc2d630c2 patch 8.1.2366: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents: 17268
diff changeset
119 #define DRAW_BOLD 0x02 // draw bold text
6e3dc2d630c2 patch 8.1.2366: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents: 17268
diff changeset
120 #define DRAW_UNDERL 0x04 // draw underline text
6e3dc2d630c2 patch 8.1.2366: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents: 17268
diff changeset
121 #define DRAW_UNDERC 0x08 // draw undercurl text
2823
8bd38abda314 updated for version 7.3.187
Bram Moolenaar <bram@vim.org>
parents: 2330
diff changeset
122 #if defined(FEAT_GUI_GTK)
18753
6e3dc2d630c2 patch 8.1.2366: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents: 17268
diff changeset
123 # define DRAW_ITALIC 0x10 // draw italic text
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
124 #endif
18753
6e3dc2d630c2 patch 8.1.2366: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents: 17268
diff changeset
125 #define DRAW_CURSOR 0x20 // drawing block cursor (win32)
6e3dc2d630c2 patch 8.1.2366: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents: 17268
diff changeset
126 #define DRAW_STRIKE 0x40 // strikethrough
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
127
18753
6e3dc2d630c2 patch 8.1.2366: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents: 17268
diff changeset
128 // For our own tearoff menu item
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
129 #define TEAR_STRING "-->Detach"
18753
6e3dc2d630c2 patch 8.1.2366: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents: 17268
diff changeset
130 #define TEAR_LEN (9) // length of above string
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
131
18753
6e3dc2d630c2 patch 8.1.2366: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents: 17268
diff changeset
132 // for the toolbar
8163
d8a8e86f39ad commit https://github.com/vim/vim/commit/e89ff0472bc33779583d48e8d38a5e794d05613a
Christian Brabandt <cb@256bit.org>
parents: 6448
diff changeset
133 #define TOOLBAR_BUTTON_HEIGHT 18
d8a8e86f39ad commit https://github.com/vim/vim/commit/e89ff0472bc33779583d48e8d38a5e794d05613a
Christian Brabandt <cb@256bit.org>
parents: 6448
diff changeset
134 #define TOOLBAR_BUTTON_WIDTH 18
18753
6e3dc2d630c2 patch 8.1.2366: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents: 17268
diff changeset
135 #define TOOLBAR_BORDER_HEIGHT 12 // room above+below buttons for MSWindows
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
136
810
9f345c48220b updated for version 7.0c
vimboss
parents: 714
diff changeset
137 #ifdef FEAT_GUI_MSWIN
811
d2c169a725c8 updated for version 7.0c01
vimboss
parents: 810
diff changeset
138 # define TABLINE_HEIGHT 22
810
9f345c48220b updated for version 7.0c
vimboss
parents: 714
diff changeset
139 #endif
819
23f82b5d2814 updated for version 7.0c10
vimboss
parents: 811
diff changeset
140 #ifdef FEAT_GUI_MOTIF
23f82b5d2814 updated for version 7.0c10
vimboss
parents: 811
diff changeset
141 # define TABLINE_HEIGHT 30
23f82b5d2814 updated for version 7.0c10
vimboss
parents: 811
diff changeset
142 #endif
810
9f345c48220b updated for version 7.0c
vimboss
parents: 714
diff changeset
143
574
25a70b1cd2da updated for version 7.0163
vimboss
parents: 444
diff changeset
144 #if defined(NO_CONSOLE) || defined(FEAT_GUI_GTK) || defined(FEAT_GUI_X11)
18753
6e3dc2d630c2 patch 8.1.2366: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents: 17268
diff changeset
145 # define NO_CONSOLE_INPUT // use no_console_input() to check if there
6e3dc2d630c2 patch 8.1.2366: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents: 17268
diff changeset
146 // is no console input possible
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
147 #endif
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
148
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
149 typedef struct GuiScrollbar
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
150 {
18753
6e3dc2d630c2 patch 8.1.2366: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents: 17268
diff changeset
151 long ident; // Unique identifier for each scrollbar
6e3dc2d630c2 patch 8.1.2366: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents: 17268
diff changeset
152 win_T *wp; // Scrollbar's window, NULL for bottom
6e3dc2d630c2 patch 8.1.2366: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents: 17268
diff changeset
153 int type; // one of SBAR_{LEFT,RIGHT,BOTTOM}
6e3dc2d630c2 patch 8.1.2366: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents: 17268
diff changeset
154 long value; // Represents top line number visible
6e3dc2d630c2 patch 8.1.2366: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents: 17268
diff changeset
155 long size; // Size of scrollbar thumb
6e3dc2d630c2 patch 8.1.2366: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents: 17268
diff changeset
156 long max; // Number of lines in buffer
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
157
18753
6e3dc2d630c2 patch 8.1.2366: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents: 17268
diff changeset
158 // Values measured in characters:
6e3dc2d630c2 patch 8.1.2366: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents: 17268
diff changeset
159 int top; // Top of scroll bar (chars from row 0)
6e3dc2d630c2 patch 8.1.2366: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents: 17268
diff changeset
160 int height; // Current height of scroll bar in rows
6e3dc2d630c2 patch 8.1.2366: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents: 17268
diff changeset
161 int width; // Current width of scroll bar in cols
6e3dc2d630c2 patch 8.1.2366: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents: 17268
diff changeset
162 int status_height; // Height of status line
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
163 #ifdef FEAT_GUI_X11
18753
6e3dc2d630c2 patch 8.1.2366: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents: 17268
diff changeset
164 Widget id; // Id of real scroll bar
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
165 #endif
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
166 #ifdef FEAT_GUI_GTK
18753
6e3dc2d630c2 patch 8.1.2366: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents: 17268
diff changeset
167 GtkWidget *id; // Id of real scroll bar
6e3dc2d630c2 patch 8.1.2366: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents: 17268
diff changeset
168 unsigned long handler_id; // Id of "value_changed" signal handler
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
169 #endif
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
170
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
171 #ifdef FEAT_GUI_MSWIN
18753
6e3dc2d630c2 patch 8.1.2366: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents: 17268
diff changeset
172 HWND id; // Id of real scroll bar
6e3dc2d630c2 patch 8.1.2366: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents: 17268
diff changeset
173 int scroll_shift; // The scrollbar stuff can handle only up to
6e3dc2d630c2 patch 8.1.2366: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents: 17268
diff changeset
174 // 32767 lines. When the file is longer,
6e3dc2d630c2 patch 8.1.2366: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents: 17268
diff changeset
175 // scroll_shift is set to the number of shifts
6e3dc2d630c2 patch 8.1.2366: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents: 17268
diff changeset
176 // to reduce the count.
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
177 #endif
19526
22f0dda71638 patch 8.2.0320: no Haiku support
Bram Moolenaar <Bram@vim.org>
parents: 18753
diff changeset
178
34108
14b69ff2c1ab patch 9.1.0018: use of #if instead of #ifdef
Christian Brabandt <cb@256bit.org>
parents: 33888
diff changeset
179 #ifdef FEAT_GUI_HAIKU
19526
22f0dda71638 patch 8.2.0320: no Haiku support
Bram Moolenaar <Bram@vim.org>
parents: 18753
diff changeset
180 VimScrollBar *id; // Pointer to real scroll bar
22f0dda71638 patch 8.2.0320: no Haiku support
Bram Moolenaar <Bram@vim.org>
parents: 18753
diff changeset
181 #endif
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
182 #ifdef FEAT_GUI_PHOTON
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
183 PtWidget_t *id;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
184 #endif
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
185 } scrollbar_T;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
186
18753
6e3dc2d630c2 patch 8.1.2366: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents: 17268
diff changeset
187 typedef long guicolor_T; // handle for a GUI color; for X11 this should
6e3dc2d630c2 patch 8.1.2366: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents: 17268
diff changeset
188 // be "Pixel", but that's an unsigned and we
6e3dc2d630c2 patch 8.1.2366: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents: 17268
diff changeset
189 // need a signed value
28226
89c181c99e23 patch 8.2.4639: not sufficient parenthesis in preprocessor macros
Bram Moolenaar <Bram@vim.org>
parents: 28067
diff changeset
190 #define INVALCOLOR ((guicolor_T)-11111) // number for invalid color; on 32 bit
18753
6e3dc2d630c2 patch 8.1.2366: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents: 17268
diff changeset
191 // displays there is a tiny chance this is an
6e3dc2d630c2 patch 8.1.2366: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents: 17268
diff changeset
192 // actual color
28226
89c181c99e23 patch 8.2.4639: not sufficient parenthesis in preprocessor macros
Bram Moolenaar <Bram@vim.org>
parents: 28067
diff changeset
193 #define CTERMCOLOR ((guicolor_T)-11110) // only used for cterm.bg_rgb and
18753
6e3dc2d630c2 patch 8.1.2366: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents: 17268
diff changeset
194 // cterm.fg_rgb: use cterm color
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
195
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
196 #ifdef FEAT_GUI_GTK
18753
6e3dc2d630c2 patch 8.1.2366: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents: 17268
diff changeset
197 typedef PangoFontDescription *GuiFont; // handle for a GUI font
6e3dc2d630c2 patch 8.1.2366: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents: 17268
diff changeset
198 typedef PangoFontDescription *GuiFontset; // handle for a GUI fontset
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
199 # define NOFONT (GuiFont)NULL
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
200 # define NOFONTSET (GuiFontset)NULL
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
201 #else
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
202 # ifdef FEAT_GUI_PHOTON
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
203 typedef char *GuiFont;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
204 typedef char *GuiFontset;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
205 # define NOFONT (GuiFont)NULL
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
206 # define NOFONTSET (GuiFontset)NULL
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
207 # else
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
208 # ifdef FEAT_GUI_X11
18753
6e3dc2d630c2 patch 8.1.2366: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents: 17268
diff changeset
209 typedef XFontStruct *GuiFont; // handle for a GUI font
6e3dc2d630c2 patch 8.1.2366: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents: 17268
diff changeset
210 typedef XFontSet GuiFontset; // handle for a GUI fontset
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
211 # define NOFONT (GuiFont)0
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
212 # define NOFONTSET (GuiFontset)0
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
213 # else
18753
6e3dc2d630c2 patch 8.1.2366: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents: 17268
diff changeset
214 typedef long_u GuiFont; // handle for a GUI font
6e3dc2d630c2 patch 8.1.2366: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents: 17268
diff changeset
215 typedef long_u GuiFontset; // handle for a GUI fontset
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
216 # define NOFONT (GuiFont)0
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
217 # define NOFONTSET (GuiFontset)0
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
218 # endif
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
219 # endif
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
220 #endif
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
221
16451
7ae2396cef62 patch 8.1.1230: a lot of code is shared between vim.exe and gvim.exe
Bram Moolenaar <Bram@vim.org>
parents: 15868
diff changeset
222 #ifdef VIMDLL
7ae2396cef62 patch 8.1.1230: a lot of code is shared between vim.exe and gvim.exe
Bram Moolenaar <Bram@vim.org>
parents: 15868
diff changeset
223 // Use spawn when GUI is starting.
7ae2396cef62 patch 8.1.1230: a lot of code is shared between vim.exe and gvim.exe
Bram Moolenaar <Bram@vim.org>
parents: 15868
diff changeset
224 # define GUI_MAY_SPAWN
7ae2396cef62 patch 8.1.1230: a lot of code is shared between vim.exe and gvim.exe
Bram Moolenaar <Bram@vim.org>
parents: 15868
diff changeset
225
7ae2396cef62 patch 8.1.1230: a lot of code is shared between vim.exe and gvim.exe
Bram Moolenaar <Bram@vim.org>
parents: 15868
diff changeset
226 // Uncomment the next definition if you want to use the `:gui` command on
7ae2396cef62 patch 8.1.1230: a lot of code is shared between vim.exe and gvim.exe
Bram Moolenaar <Bram@vim.org>
parents: 15868
diff changeset
227 // Windows. It uses `:mksession` to inherit the session from vim.exe to
7ae2396cef62 patch 8.1.1230: a lot of code is shared between vim.exe and gvim.exe
Bram Moolenaar <Bram@vim.org>
parents: 15868
diff changeset
228 // gvim.exe. So, it doesn't work perfectly. (EXPERIMENTAL)
7ae2396cef62 patch 8.1.1230: a lot of code is shared between vim.exe and gvim.exe
Bram Moolenaar <Bram@vim.org>
parents: 15868
diff changeset
229 //# define 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: 15868
diff changeset
230 #endif
7ae2396cef62 patch 8.1.1230: a lot of code is shared between vim.exe and gvim.exe
Bram Moolenaar <Bram@vim.org>
parents: 15868
diff changeset
231
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
232 typedef struct Gui
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
233 {
18753
6e3dc2d630c2 patch 8.1.2366: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents: 17268
diff changeset
234 int in_focus; // Vim has input focus
6e3dc2d630c2 patch 8.1.2366: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents: 17268
diff changeset
235 int in_use; // Is the GUI being used?
6e3dc2d630c2 patch 8.1.2366: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents: 17268
diff changeset
236 int starting; // GUI will start in a little while
6e3dc2d630c2 patch 8.1.2366: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents: 17268
diff changeset
237 int shell_created; // Has the shell been created yet?
6e3dc2d630c2 patch 8.1.2366: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents: 17268
diff changeset
238 int dying; // Is vim dying? Then output to terminal
6e3dc2d630c2 patch 8.1.2366: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents: 17268
diff changeset
239 int dofork; // Use fork() when GUI is starting
16451
7ae2396cef62 patch 8.1.1230: a lot of code is shared between vim.exe and gvim.exe
Bram Moolenaar <Bram@vim.org>
parents: 15868
diff changeset
240 #ifdef GUI_MAY_SPAWN
18753
6e3dc2d630c2 patch 8.1.2366: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents: 17268
diff changeset
241 int dospawn; // Use spawn() when GUI is starting
16451
7ae2396cef62 patch 8.1.1230: a lot of code is shared between vim.exe and gvim.exe
Bram Moolenaar <Bram@vim.org>
parents: 15868
diff changeset
242 #endif
18753
6e3dc2d630c2 patch 8.1.2366: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents: 17268
diff changeset
243 int dragged_sb; // Which scrollbar being dragged, if any?
6e3dc2d630c2 patch 8.1.2366: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents: 17268
diff changeset
244 win_T *dragged_wp; // Which WIN's sb being dragged, if any?
6e3dc2d630c2 patch 8.1.2366: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents: 17268
diff changeset
245 int pointer_hidden; // Is the mouse pointer hidden?
6e3dc2d630c2 patch 8.1.2366: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents: 17268
diff changeset
246 int col; // Current cursor column in GUI display
6e3dc2d630c2 patch 8.1.2366: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents: 17268
diff changeset
247 int row; // Current cursor row in GUI display
6e3dc2d630c2 patch 8.1.2366: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents: 17268
diff changeset
248 int cursor_col; // Physical cursor column in GUI display
6e3dc2d630c2 patch 8.1.2366: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents: 17268
diff changeset
249 int cursor_row; // Physical cursor row in GUI display
6e3dc2d630c2 patch 8.1.2366: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents: 17268
diff changeset
250 char cursor_is_valid; // There is a cursor at cursor_row/col
6e3dc2d630c2 patch 8.1.2366: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents: 17268
diff changeset
251 int num_cols; // Number of columns
6e3dc2d630c2 patch 8.1.2366: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents: 17268
diff changeset
252 int num_rows; // Number of rows
6e3dc2d630c2 patch 8.1.2366: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents: 17268
diff changeset
253 int scroll_region_top; // Top (first) line of scroll region
6e3dc2d630c2 patch 8.1.2366: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents: 17268
diff changeset
254 int scroll_region_bot; // Bottom (last) line of scroll region
6e3dc2d630c2 patch 8.1.2366: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents: 17268
diff changeset
255 int scroll_region_left; // Left (first) column of scroll region
6e3dc2d630c2 patch 8.1.2366: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents: 17268
diff changeset
256 int scroll_region_right; // Right (last) col. of scroll region
6e3dc2d630c2 patch 8.1.2366: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents: 17268
diff changeset
257 int highlight_mask; // Highlight attribute mask
6e3dc2d630c2 patch 8.1.2366: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents: 17268
diff changeset
258 int scrollbar_width; // Width of vertical scrollbars
6e3dc2d630c2 patch 8.1.2366: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents: 17268
diff changeset
259 int scrollbar_height; // Height of horizontal scrollbar
6e3dc2d630c2 patch 8.1.2366: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents: 17268
diff changeset
260 int left_sbar_x; // Calculated x coord for left scrollbar
6e3dc2d630c2 patch 8.1.2366: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents: 17268
diff changeset
261 int right_sbar_x; // Calculated x coord for right scrollbar
34238
995b539939c4 patch 9.1.0064: No Wayland support
Christian Brabandt <cb@256bit.org>
parents: 34108
diff changeset
262 int force_redraw; // Force a redraw even e.g. not resized
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
263
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
264 #ifdef FEAT_MENU
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
265 # ifndef FEAT_GUI_GTK
18753
6e3dc2d630c2 patch 8.1.2366: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents: 17268
diff changeset
266 int menu_height; // Height of the menu bar
6e3dc2d630c2 patch 8.1.2366: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents: 17268
diff changeset
267 int menu_width; // Width of the menu bar
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
268 # endif
18753
6e3dc2d630c2 patch 8.1.2366: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents: 17268
diff changeset
269 char menu_is_active; // TRUE if menu is present
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
270 #endif
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
271
18753
6e3dc2d630c2 patch 8.1.2366: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents: 17268
diff changeset
272 scrollbar_T bottom_sbar; // Bottom scrollbar
6e3dc2d630c2 patch 8.1.2366: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents: 17268
diff changeset
273 int which_scrollbars[3];// Which scrollbar boxes are active?
6e3dc2d630c2 patch 8.1.2366: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents: 17268
diff changeset
274 int prev_wrap; // For updating the horizontal scrollbar
6e3dc2d630c2 patch 8.1.2366: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents: 17268
diff changeset
275 int char_width; // Width of char cell in pixels
6e3dc2d630c2 patch 8.1.2366: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents: 17268
diff changeset
276 int char_height; // Height of char cell in pixels, includes
6e3dc2d630c2 patch 8.1.2366: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents: 17268
diff changeset
277 // 'linespace'
6e3dc2d630c2 patch 8.1.2366: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents: 17268
diff changeset
278 int char_ascent; // Ascent of char in pixels
6e3dc2d630c2 patch 8.1.2366: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents: 17268
diff changeset
279 int border_width; // Width of our border around text area
6e3dc2d630c2 patch 8.1.2366: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents: 17268
diff changeset
280 int border_offset; // Total pixel offset for all borders
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
281
18753
6e3dc2d630c2 patch 8.1.2366: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents: 17268
diff changeset
282 GuiFont norm_font; // Normal font
2277
f42e0b5ff9e9 Change remaining HAVE_GTK2 to FEAT_GUI_GTK.
Bram Moolenaar <bram@vim.org>
parents: 2275
diff changeset
283 #ifndef FEAT_GUI_GTK
18753
6e3dc2d630c2 patch 8.1.2366: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents: 17268
diff changeset
284 GuiFont bold_font; // Bold font
6e3dc2d630c2 patch 8.1.2366: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents: 17268
diff changeset
285 GuiFont ital_font; // Italic font
6e3dc2d630c2 patch 8.1.2366: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents: 17268
diff changeset
286 GuiFont boldital_font; // Bold-Italic font
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
287 #else
18753
6e3dc2d630c2 patch 8.1.2366: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents: 17268
diff changeset
288 int font_can_bold; // Whether norm_font supports bold weight.
6e3dc2d630c2 patch 8.1.2366: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents: 17268
diff changeset
289 // The styled font variants are not used.
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
290 #endif
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
291
2277
f42e0b5ff9e9 Change remaining HAVE_GTK2 to FEAT_GUI_GTK.
Bram Moolenaar <bram@vim.org>
parents: 2275
diff changeset
292 #if defined(FEAT_MENU) && !defined(FEAT_GUI_GTK)
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
293 # ifdef FONTSET_ALWAYS
18753
6e3dc2d630c2 patch 8.1.2366: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents: 17268
diff changeset
294 GuiFontset menu_fontset; // set of fonts for multi-byte chars
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
295 # else
18753
6e3dc2d630c2 patch 8.1.2366: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents: 17268
diff changeset
296 GuiFont menu_font; // menu item font
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
297 # endif
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
298 #endif
18753
6e3dc2d630c2 patch 8.1.2366: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents: 17268
diff changeset
299 GuiFont wide_font; // Normal 'guifontwide' font
15605
62b3805506b3 patch 8.1.0810: too many #ifdefs
Bram Moolenaar <Bram@vim.org>
parents: 14428
diff changeset
300 #ifndef FEAT_GUI_GTK
18753
6e3dc2d630c2 patch 8.1.2366: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents: 17268
diff changeset
301 GuiFont wide_bold_font; // Bold 'guifontwide' font
6e3dc2d630c2 patch 8.1.2366: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents: 17268
diff changeset
302 GuiFont wide_ital_font; // Italic 'guifontwide' font
6e3dc2d630c2 patch 8.1.2366: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents: 17268
diff changeset
303 GuiFont wide_boldital_font; // Bold-Italic 'guifontwide' font
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
304 #endif
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
305 #ifdef FEAT_XFONTSET
18753
6e3dc2d630c2 patch 8.1.2366: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents: 17268
diff changeset
306 GuiFontset fontset; // set of fonts for multi-byte chars
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
307 #endif
18753
6e3dc2d630c2 patch 8.1.2366: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents: 17268
diff changeset
308 guicolor_T back_pixel; // Color of background
6e3dc2d630c2 patch 8.1.2366: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents: 17268
diff changeset
309 guicolor_T norm_pixel; // Color of normal text
6e3dc2d630c2 patch 8.1.2366: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents: 17268
diff changeset
310 guicolor_T def_back_pixel; // default Color of background
6e3dc2d630c2 patch 8.1.2366: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents: 17268
diff changeset
311 guicolor_T def_norm_pixel; // default Color of normal text
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
312
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
313 #ifdef FEAT_GUI_X11
18753
6e3dc2d630c2 patch 8.1.2366: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents: 17268
diff changeset
314 char *rsrc_menu_fg_name; // Color of menu & dialog foreground
6e3dc2d630c2 patch 8.1.2366: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents: 17268
diff changeset
315 guicolor_T menu_fg_pixel; // Same in Pixel format
6e3dc2d630c2 patch 8.1.2366: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents: 17268
diff changeset
316 char *rsrc_menu_bg_name; // Color of menu & dialog background
6e3dc2d630c2 patch 8.1.2366: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents: 17268
diff changeset
317 guicolor_T menu_bg_pixel; // Same in Pixel format
6e3dc2d630c2 patch 8.1.2366: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents: 17268
diff changeset
318 char *rsrc_scroll_fg_name; // Color of scrollbar foreground
6e3dc2d630c2 patch 8.1.2366: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents: 17268
diff changeset
319 guicolor_T scroll_fg_pixel; // Same in Pixel format
6e3dc2d630c2 patch 8.1.2366: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents: 17268
diff changeset
320 char *rsrc_scroll_bg_name; // Color of scrollbar background
6e3dc2d630c2 patch 8.1.2366: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents: 17268
diff changeset
321 guicolor_T scroll_bg_pixel; // Same in Pixel format
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
322
18753
6e3dc2d630c2 patch 8.1.2366: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents: 17268
diff changeset
323 Display *dpy; // X display
6e3dc2d630c2 patch 8.1.2366: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents: 17268
diff changeset
324 Window wid; // Window id of text area
6e3dc2d630c2 patch 8.1.2366: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents: 17268
diff changeset
325 int visibility; // Is shell partially/fully obscured?
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
326 GC text_gc;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
327 GC back_gc;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
328 GC invert_gc;
18753
6e3dc2d630c2 patch 8.1.2366: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents: 17268
diff changeset
329 Cursor blank_pointer; // Blank pointer
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
330
18753
6e3dc2d630c2 patch 8.1.2366: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents: 17268
diff changeset
331 // X Resources
6e3dc2d630c2 patch 8.1.2366: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents: 17268
diff changeset
332 char_u *rsrc_font_name; // Resource font name, used if 'guifont'
6e3dc2d630c2 patch 8.1.2366: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents: 17268
diff changeset
333 // not set
6e3dc2d630c2 patch 8.1.2366: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents: 17268
diff changeset
334 char_u *rsrc_bold_font_name; // Resource bold font name
6e3dc2d630c2 patch 8.1.2366: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents: 17268
diff changeset
335 char_u *rsrc_ital_font_name; // Resource italic font name
6e3dc2d630c2 patch 8.1.2366: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents: 17268
diff changeset
336 char_u *rsrc_boldital_font_name; // Resource bold-italic font name
6e3dc2d630c2 patch 8.1.2366: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents: 17268
diff changeset
337 char_u *rsrc_menu_font_name; // Resource menu Font name
6e3dc2d630c2 patch 8.1.2366: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents: 17268
diff changeset
338 Bool rsrc_rev_video; // Use reverse video?
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
339
18753
6e3dc2d630c2 patch 8.1.2366: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents: 17268
diff changeset
340 char_u *geom; // Geometry, eg "80x24"
6e3dc2d630c2 patch 8.1.2366: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents: 17268
diff changeset
341 Bool color_approx; // Some color was approximated
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
342 #endif
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
343
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
344 #ifdef FEAT_GUI_GTK
8218
3456e2ebebd4 commit https://github.com/vim/vim/commit/9892189d2e7ab94b750f99e6da4cbfc3c8014517
Christian Brabandt <cb@256bit.org>
parents: 8163
diff changeset
345 # ifndef USE_GTK3
18753
6e3dc2d630c2 patch 8.1.2366: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents: 17268
diff changeset
346 int visibility; // Is shell partially/fully obscured?
8218
3456e2ebebd4 commit https://github.com/vim/vim/commit/9892189d2e7ab94b750f99e6da4cbfc3c8014517
Christian Brabandt <cb@256bit.org>
parents: 8163
diff changeset
347 # endif
18753
6e3dc2d630c2 patch 8.1.2366: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents: 17268
diff changeset
348 GdkCursor *blank_pointer; // Blank pointer
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
349
18753
6e3dc2d630c2 patch 8.1.2366: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents: 17268
diff changeset
350 // X Resources
6e3dc2d630c2 patch 8.1.2366: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents: 17268
diff changeset
351 char_u *geom; // Geometry, eg "80x24"
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
352
18753
6e3dc2d630c2 patch 8.1.2366: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents: 17268
diff changeset
353 GtkWidget *mainwin; // top level GTK window
6e3dc2d630c2 patch 8.1.2366: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents: 17268
diff changeset
354 GtkWidget *formwin; // manages all the windows below
6e3dc2d630c2 patch 8.1.2366: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents: 17268
diff changeset
355 GtkWidget *drawarea; // the "text" area
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
356 # ifdef FEAT_MENU
18753
6e3dc2d630c2 patch 8.1.2366: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents: 17268
diff changeset
357 GtkWidget *menubar; // menubar
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
358 # endif
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
359 # ifdef FEAT_TOOLBAR
18753
6e3dc2d630c2 patch 8.1.2366: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents: 17268
diff changeset
360 GtkWidget *toolbar; // toolbar
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
361 # endif
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
362 # ifdef FEAT_GUI_GNOME
18753
6e3dc2d630c2 patch 8.1.2366: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents: 17268
diff changeset
363 GtkWidget *menubar_h; // menubar handle
6e3dc2d630c2 patch 8.1.2366: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents: 17268
diff changeset
364 GtkWidget *toolbar_h; // toolbar handle
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
365 # endif
9624
d63b85fe3dc7 commit https://github.com/vim/vim/commit/36edf0685c8b55ee3ce709058d83ada8027fec1e
Christian Brabandt <cb@256bit.org>
parents: 8643
diff changeset
366 # ifdef USE_GTK3
18753
6e3dc2d630c2 patch 8.1.2366: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents: 17268
diff changeset
367 GdkRGBA *fgcolor; // GDK-styled foreground color
6e3dc2d630c2 patch 8.1.2366: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents: 17268
diff changeset
368 GdkRGBA *bgcolor; // GDK-styled background color
6e3dc2d630c2 patch 8.1.2366: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents: 17268
diff changeset
369 GdkRGBA *spcolor; // GDK-styled special color
9624
d63b85fe3dc7 commit https://github.com/vim/vim/commit/36edf0685c8b55ee3ce709058d83ada8027fec1e
Christian Brabandt <cb@256bit.org>
parents: 8643
diff changeset
370 # else
18753
6e3dc2d630c2 patch 8.1.2366: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents: 17268
diff changeset
371 GdkColor *fgcolor; // GDK-styled foreground color
6e3dc2d630c2 patch 8.1.2366: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents: 17268
diff changeset
372 GdkColor *bgcolor; // GDK-styled background color
6e3dc2d630c2 patch 8.1.2366: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents: 17268
diff changeset
373 GdkColor *spcolor; // GDK-styled special color
9624
d63b85fe3dc7 commit https://github.com/vim/vim/commit/36edf0685c8b55ee3ce709058d83ada8027fec1e
Christian Brabandt <cb@256bit.org>
parents: 8643
diff changeset
374 # endif
8218
3456e2ebebd4 commit https://github.com/vim/vim/commit/9892189d2e7ab94b750f99e6da4cbfc3c8014517
Christian Brabandt <cb@256bit.org>
parents: 8163
diff changeset
375 # ifdef USE_GTK3
18753
6e3dc2d630c2 patch 8.1.2366: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents: 17268
diff changeset
376 cairo_surface_t *surface; // drawarea surface
8218
3456e2ebebd4 commit https://github.com/vim/vim/commit/9892189d2e7ab94b750f99e6da4cbfc3c8014517
Christian Brabandt <cb@256bit.org>
parents: 8163
diff changeset
377 # else
18753
6e3dc2d630c2 patch 8.1.2366: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents: 17268
diff changeset
378 GdkGC *text_gc; // cached GC for normal text
8218
3456e2ebebd4 commit https://github.com/vim/vim/commit/9892189d2e7ab94b750f99e6da4cbfc3c8014517
Christian Brabandt <cb@256bit.org>
parents: 8163
diff changeset
379 # endif
18753
6e3dc2d630c2 patch 8.1.2366: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents: 17268
diff changeset
380 PangoContext *text_context; // the context used for all text
6e3dc2d630c2 patch 8.1.2366: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents: 17268
diff changeset
381 PangoFont *ascii_font; // cached font for ASCII strings
6e3dc2d630c2 patch 8.1.2366: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents: 17268
diff changeset
382 PangoGlyphString *ascii_glyphs; // cached code point -> glyph map
714
0f9f4761ad9c updated for version 7.0216
vimboss
parents: 691
diff changeset
383 # ifdef FEAT_GUI_TABLINE
18753
6e3dc2d630c2 patch 8.1.2366: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents: 17268
diff changeset
384 GtkWidget *tabline; // tab pages line handle
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
385 # endif
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
386
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
387 GtkAccelGroup *accel_group;
18753
6e3dc2d630c2 patch 8.1.2366: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents: 17268
diff changeset
388 GtkWidget *filedlg; // file selection dialog
6e3dc2d630c2 patch 8.1.2366: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents: 17268
diff changeset
389 char_u *browse_fname; // file name from filedlg
2923
7653420fdc45 updated for version 7.3.234
Bram Moolenaar <bram@vim.org>
parents: 2823
diff changeset
390
7653420fdc45 updated for version 7.3.234
Bram Moolenaar <bram@vim.org>
parents: 2823
diff changeset
391 guint32 event_time;
34420
c5a945f7f3da patch 9.1.0133: MS-Windows: ligatures not rendering correctly
Christian Brabandt <cb@256bit.org>
parents: 34238
diff changeset
392 #endif // FEAT_GUI_GTK
25982
aade8ef975d5 patch 8.2.3524: GUI: ligatures are not used
Bram Moolenaar <Bram@vim.org>
parents: 23408
diff changeset
393
34420
c5a945f7f3da patch 9.1.0133: MS-Windows: ligatures not rendering correctly
Christian Brabandt <cb@256bit.org>
parents: 34238
diff changeset
394 #if defined(FEAT_GUI_GTK) || defined(FEAT_GUI_MSWIN)
25982
aade8ef975d5 patch 8.2.3524: GUI: ligatures are not used
Bram Moolenaar <Bram@vim.org>
parents: 23408
diff changeset
395 char_u ligatures_map[256]; // ascii map for characters 0-255, value is
aade8ef975d5 patch 8.2.3524: GUI: ligatures are not used
Bram Moolenaar <Bram@vim.org>
parents: 23408
diff changeset
396 // 1 if in 'guiligatures'
34420
c5a945f7f3da patch 9.1.0133: MS-Windows: ligatures not rendering correctly
Christian Brabandt <cb@256bit.org>
parents: 34238
diff changeset
397 #endif
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
398
843
9f279ebda751 updated for version 7.0f01
vimboss
parents: 836
diff changeset
399 #if defined(FEAT_GUI_TABLINE) \
15868
7fad90423bd2 patch 8.1.0941: macros for MS-Windows are inconsistent
Bram Moolenaar <Bram@vim.org>
parents: 15605
diff changeset
400 && (defined(FEAT_GUI_MSWIN) || defined(FEAT_GUI_MOTIF) \
21745
35921b7fc07a patch 8.2.1422: the Mac GUI implementation is outdated
Bram Moolenaar <Bram@vim.org>
parents: 19526
diff changeset
401 || defined(FEAT_GUI_HAIKU))
843
9f279ebda751 updated for version 7.0f01
vimboss
parents: 836
diff changeset
402 int tabline_height;
9f279ebda751 updated for version 7.0f01
vimboss
parents: 836
diff changeset
403 #endif
9f279ebda751 updated for version 7.0f01
vimboss
parents: 836
diff changeset
404
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
405 #if defined(FEAT_TOOLBAR) \
28303
9849df834f1d patch 8.2.4677: the Athena GUI support is outdated
Bram Moolenaar <Bram@vim.org>
parents: 28226
diff changeset
406 && (defined(FEAT_GUI_MOTIF) || defined(FEAT_GUI_HAIKU) || defined(FEAT_GUI_MSWIN))
18753
6e3dc2d630c2 patch 8.1.2366: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents: 17268
diff changeset
407 int toolbar_height; // height of the toolbar
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
408 #endif
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
409
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
410 #ifdef FEAT_BEVAL_TIP
18753
6e3dc2d630c2 patch 8.1.2366: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents: 17268
diff changeset
411 // Tooltip properties; also used for balloon evaluation
6e3dc2d630c2 patch 8.1.2366: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents: 17268
diff changeset
412 char_u *rsrc_tooltip_font_name; // tooltip font name
6e3dc2d630c2 patch 8.1.2366: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents: 17268
diff changeset
413 char *rsrc_tooltip_fg_name; // tooltip foreground color name
6e3dc2d630c2 patch 8.1.2366: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents: 17268
diff changeset
414 char *rsrc_tooltip_bg_name; // tooltip background color name
6e3dc2d630c2 patch 8.1.2366: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents: 17268
diff changeset
415 guicolor_T tooltip_fg_pixel; // tooltip foreground color
6e3dc2d630c2 patch 8.1.2366: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents: 17268
diff changeset
416 guicolor_T tooltip_bg_pixel; // tooltip background color
6e3dc2d630c2 patch 8.1.2366: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents: 17268
diff changeset
417 XFontSet tooltip_fontset; // tooltip fontset
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
418 #endif
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
419
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
420 #ifdef FEAT_GUI_MSWIN
18753
6e3dc2d630c2 patch 8.1.2366: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents: 17268
diff changeset
421 GuiFont currFont; // Current font
6e3dc2d630c2 patch 8.1.2366: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents: 17268
diff changeset
422 guicolor_T currFgColor; // Current foreground text color
6e3dc2d630c2 patch 8.1.2366: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents: 17268
diff changeset
423 guicolor_T currBgColor; // Current background text color
6e3dc2d630c2 patch 8.1.2366: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents: 17268
diff changeset
424 guicolor_T currSpColor; // Current special text color
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
425 #endif
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
426
19526
22f0dda71638 patch 8.2.0320: no Haiku support
Bram Moolenaar <Bram@vim.org>
parents: 18753
diff changeset
427 #ifdef FEAT_GUI_HAIKU
22f0dda71638 patch 8.2.0320: no Haiku support
Bram Moolenaar <Bram@vim.org>
parents: 18753
diff changeset
428 VimApp *vimApp;
22f0dda71638 patch 8.2.0320: no Haiku support
Bram Moolenaar <Bram@vim.org>
parents: 18753
diff changeset
429 VimWindow *vimWindow;
22f0dda71638 patch 8.2.0320: no Haiku support
Bram Moolenaar <Bram@vim.org>
parents: 18753
diff changeset
430 VimFormView *vimForm;
22f0dda71638 patch 8.2.0320: no Haiku support
Bram Moolenaar <Bram@vim.org>
parents: 18753
diff changeset
431 VimTextAreaView *vimTextArea;
22f0dda71638 patch 8.2.0320: no Haiku support
Bram Moolenaar <Bram@vim.org>
parents: 18753
diff changeset
432 int vdcmp; // Vim Direct Communication Message Port
22f0dda71638 patch 8.2.0320: no Haiku support
Bram Moolenaar <Bram@vim.org>
parents: 18753
diff changeset
433 #endif
22f0dda71638 patch 8.2.0320: no Haiku support
Bram Moolenaar <Bram@vim.org>
parents: 18753
diff changeset
434
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
435 #ifdef FEAT_GUI_PHOTON
18753
6e3dc2d630c2 patch 8.1.2366: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents: 17268
diff changeset
436 PtWidget_t *vimWindow; // PtWindow
6e3dc2d630c2 patch 8.1.2366: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents: 17268
diff changeset
437 PtWidget_t *vimTextArea; // PtRaw
6e3dc2d630c2 patch 8.1.2366: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents: 17268
diff changeset
438 PtWidget_t *vimContainer; // PtPanel
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
439 # if defined(FEAT_MENU) || defined(FEAT_TOOLBAR)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
440 PtWidget_t *vimToolBarGroup;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
441 # endif
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
442 # ifdef FEAT_MENU
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
443 PtWidget_t *vimMenuBar;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
444 # endif
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
445 # ifdef FEAT_TOOLBAR
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
446 PtWidget_t *vimToolBar;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
447 int toolbar_height;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
448 # endif
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
449 PhEvent_t *event_buffer;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
450 #endif
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
451
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
452 #ifdef FEAT_XIM
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
453 char *rsrc_input_method;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
454 char *rsrc_preedit_type_name;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
455 #endif
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
456 } gui_T;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
457
18753
6e3dc2d630c2 patch 8.1.2366: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents: 17268
diff changeset
458 extern gui_T gui; // this is defined in gui.c
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
459
18753
6e3dc2d630c2 patch 8.1.2366: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents: 17268
diff changeset
460 // definitions of available window positionings for gui_*_position_in_parent()
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
461 typedef enum
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
462 {
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
463 VW_POS_MOUSE,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
464 VW_POS_CENTER,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
465 VW_POS_TOP_CENTER
325
ba378d4f9cf9 updated for version 7.0085
vimboss
parents: 203
diff changeset
466 } gui_win_pos_T;
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
467
28
726bdc53fa49 updated for version 7.0018
vimboss
parents: 11
diff changeset
468 #ifdef FIND_REPLACE_DIALOG
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
469 /*
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
470 * Flags used to distinguish the different contexts in which the
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
471 * find/replace callback may be called.
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
472 */
18753
6e3dc2d630c2 patch 8.1.2366: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents: 17268
diff changeset
473 # define FRD_FINDNEXT 1 // Find next in find dialog
6e3dc2d630c2 patch 8.1.2366: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents: 17268
diff changeset
474 # define FRD_R_FINDNEXT 2 // Find next in repl dialog
6e3dc2d630c2 patch 8.1.2366: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents: 17268
diff changeset
475 # define FRD_REPLACE 3 // Replace once
6e3dc2d630c2 patch 8.1.2366: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents: 17268
diff changeset
476 # define FRD_REPLACEALL 4 // Replace remaining matches
6e3dc2d630c2 patch 8.1.2366: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents: 17268
diff changeset
477 # define FRD_UNDO 5 // Undo replaced text
6e3dc2d630c2 patch 8.1.2366: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents: 17268
diff changeset
478 # define FRD_TYPE_MASK 7 // Mask for the callback type
6e3dc2d630c2 patch 8.1.2366: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents: 17268
diff changeset
479 // Flags which change the way searching is done.
6e3dc2d630c2 patch 8.1.2366: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents: 17268
diff changeset
480 # define FRD_WHOLE_WORD 0x08 // match whole word only
6e3dc2d630c2 patch 8.1.2366: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents: 17268
diff changeset
481 # define FRD_MATCH_CASE 0x10 // match case
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
482 #endif
836
5a7843c57316 updated for version 7.0e02
vimboss
parents: 819
diff changeset
483
2277
f42e0b5ff9e9 Change remaining HAVE_GTK2 to FEAT_GUI_GTK.
Bram Moolenaar <bram@vim.org>
parents: 2275
diff changeset
484 #ifdef FEAT_GUI_GTK
836
5a7843c57316 updated for version 7.0e02
vimboss
parents: 819
diff changeset
485 /*
5a7843c57316 updated for version 7.0e02
vimboss
parents: 819
diff changeset
486 * Convenience macros to convert from 'encoding' to 'termencoding' and
5a7843c57316 updated for version 7.0e02
vimboss
parents: 819
diff changeset
487 * vice versa. If no conversion is necessary the passed-in pointer is
5a7843c57316 updated for version 7.0e02
vimboss
parents: 819
diff changeset
488 * returned as is, without allocating any memory. Thus additional _FREE()
5a7843c57316 updated for version 7.0e02
vimboss
parents: 819
diff changeset
489 * macros are provided. The _FREE() macros also set the pointer to NULL,
5a7843c57316 updated for version 7.0e02
vimboss
parents: 819
diff changeset
490 * in order to avoid bugs due to illegal memory access only happening if
5a7843c57316 updated for version 7.0e02
vimboss
parents: 819
diff changeset
491 * 'encoding' != utf-8...
5a7843c57316 updated for version 7.0e02
vimboss
parents: 819
diff changeset
492 *
5a7843c57316 updated for version 7.0e02
vimboss
parents: 819
diff changeset
493 * Defining these macros as pure expressions looks a bit tricky but
5a7843c57316 updated for version 7.0e02
vimboss
parents: 819
diff changeset
494 * avoids depending on the context of the macro expansion. One of the
5a7843c57316 updated for version 7.0e02
vimboss
parents: 819
diff changeset
495 * rare occasions where the comma operator comes in handy :)
5a7843c57316 updated for version 7.0e02
vimboss
parents: 819
diff changeset
496 *
5a7843c57316 updated for version 7.0e02
vimboss
parents: 819
diff changeset
497 * Note: Do NOT keep the result around when handling control back to
5a7843c57316 updated for version 7.0e02
vimboss
parents: 819
diff changeset
498 * the main Vim! The user could change 'encoding' at any time.
5a7843c57316 updated for version 7.0e02
vimboss
parents: 819
diff changeset
499 */
5a7843c57316 updated for version 7.0e02
vimboss
parents: 819
diff changeset
500 # define CONVERT_TO_UTF8(String) \
5a7843c57316 updated for version 7.0e02
vimboss
parents: 819
diff changeset
501 ((output_conv.vc_type == CONV_NONE || (String) == NULL) \
5a7843c57316 updated for version 7.0e02
vimboss
parents: 819
diff changeset
502 ? (String) \
5a7843c57316 updated for version 7.0e02
vimboss
parents: 819
diff changeset
503 : string_convert(&output_conv, (String), NULL))
5a7843c57316 updated for version 7.0e02
vimboss
parents: 819
diff changeset
504
5a7843c57316 updated for version 7.0e02
vimboss
parents: 819
diff changeset
505 # define CONVERT_TO_UTF8_FREE(String) \
5a7843c57316 updated for version 7.0e02
vimboss
parents: 819
diff changeset
506 ((String) = ((output_conv.vc_type == CONV_NONE) \
5a7843c57316 updated for version 7.0e02
vimboss
parents: 819
diff changeset
507 ? (char_u *)NULL \
5a7843c57316 updated for version 7.0e02
vimboss
parents: 819
diff changeset
508 : (vim_free(String), (char_u *)NULL)))
5a7843c57316 updated for version 7.0e02
vimboss
parents: 819
diff changeset
509
5a7843c57316 updated for version 7.0e02
vimboss
parents: 819
diff changeset
510 # define CONVERT_FROM_UTF8(String) \
5a7843c57316 updated for version 7.0e02
vimboss
parents: 819
diff changeset
511 ((input_conv.vc_type == CONV_NONE || (String) == NULL) \
5a7843c57316 updated for version 7.0e02
vimboss
parents: 819
diff changeset
512 ? (String) \
5a7843c57316 updated for version 7.0e02
vimboss
parents: 819
diff changeset
513 : string_convert(&input_conv, (String), NULL))
5a7843c57316 updated for version 7.0e02
vimboss
parents: 819
diff changeset
514
5a7843c57316 updated for version 7.0e02
vimboss
parents: 819
diff changeset
515 # define CONVERT_FROM_UTF8_FREE(String) \
5a7843c57316 updated for version 7.0e02
vimboss
parents: 819
diff changeset
516 ((String) = ((input_conv.vc_type == CONV_NONE) \
5a7843c57316 updated for version 7.0e02
vimboss
parents: 819
diff changeset
517 ? (char_u *)NULL \
5a7843c57316 updated for version 7.0e02
vimboss
parents: 819
diff changeset
518 : (vim_free(String), (char_u *)NULL)))
5a7843c57316 updated for version 7.0e02
vimboss
parents: 819
diff changeset
519
5a7843c57316 updated for version 7.0e02
vimboss
parents: 819
diff changeset
520 #else
5a7843c57316 updated for version 7.0e02
vimboss
parents: 819
diff changeset
521 # define CONVERT_TO_UTF8(String) (String)
5a7843c57316 updated for version 7.0e02
vimboss
parents: 819
diff changeset
522 # define CONVERT_TO_UTF8_FREE(String) ((String) = (char_u *)NULL)
5a7843c57316 updated for version 7.0e02
vimboss
parents: 819
diff changeset
523 # define CONVERT_FROM_UTF8(String) (String)
5a7843c57316 updated for version 7.0e02
vimboss
parents: 819
diff changeset
524 # define CONVERT_FROM_UTF8_FREE(String) ((String) = (char_u *)NULL)
18753
6e3dc2d630c2 patch 8.1.2366: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents: 17268
diff changeset
525 #endif // FEAT_GUI_GTK
10176
51888fb2599f commit https://github.com/vim/vim/commit/d47d83745ff450232328ca7a4b8b00b31bad22fc
Christian Brabandt <cb@256bit.org>
parents: 10042
diff changeset
526
51888fb2599f commit https://github.com/vim/vim/commit/d47d83745ff450232328ca7a4b8b00b31bad22fc
Christian Brabandt <cb@256bit.org>
parents: 10042
diff changeset
527 #ifdef FEAT_GUI_GTK
51888fb2599f commit https://github.com/vim/vim/commit/d47d83745ff450232328ca7a4b8b00b31bad22fc
Christian Brabandt <cb@256bit.org>
parents: 10042
diff changeset
528 /*
51888fb2599f commit https://github.com/vim/vim/commit/d47d83745ff450232328ca7a4b8b00b31bad22fc
Christian Brabandt <cb@256bit.org>
parents: 10042
diff changeset
529 * The second parameter of g_signal_handlers_disconnect_by_func() is supposed
51888fb2599f commit https://github.com/vim/vim/commit/d47d83745ff450232328ca7a4b8b00b31bad22fc
Christian Brabandt <cb@256bit.org>
parents: 10042
diff changeset
530 * to be a function pointer which was passed to g_signal_connect_*() somewhere
51888fb2599f commit https://github.com/vim/vim/commit/d47d83745ff450232328ca7a4b8b00b31bad22fc
Christian Brabandt <cb@256bit.org>
parents: 10042
diff changeset
531 * previously, and hence it must be of type GCallback, i.e., void (*)(void).
51888fb2599f commit https://github.com/vim/vim/commit/d47d83745ff450232328ca7a4b8b00b31bad22fc
Christian Brabandt <cb@256bit.org>
parents: 10042
diff changeset
532 *
51888fb2599f commit https://github.com/vim/vim/commit/d47d83745ff450232328ca7a4b8b00b31bad22fc
Christian Brabandt <cb@256bit.org>
parents: 10042
diff changeset
533 * Meanwhile, g_signal_handlers_disconnect_by_func() is a macro calling
51888fb2599f commit https://github.com/vim/vim/commit/d47d83745ff450232328ca7a4b8b00b31bad22fc
Christian Brabandt <cb@256bit.org>
parents: 10042
diff changeset
534 * g_signal_handlers_disconnect_matched(), and the second parameter of the
51888fb2599f commit https://github.com/vim/vim/commit/d47d83745ff450232328ca7a4b8b00b31bad22fc
Christian Brabandt <cb@256bit.org>
parents: 10042
diff changeset
535 * former is to be passed to the sixth parameter of the latter the type of
51888fb2599f commit https://github.com/vim/vim/commit/d47d83745ff450232328ca7a4b8b00b31bad22fc
Christian Brabandt <cb@256bit.org>
parents: 10042
diff changeset
536 * which, however, is declared as void * in the function signature.
51888fb2599f commit https://github.com/vim/vim/commit/d47d83745ff450232328ca7a4b8b00b31bad22fc
Christian Brabandt <cb@256bit.org>
parents: 10042
diff changeset
537 *
51888fb2599f commit https://github.com/vim/vim/commit/d47d83745ff450232328ca7a4b8b00b31bad22fc
Christian Brabandt <cb@256bit.org>
parents: 10042
diff changeset
538 * While the ISO C Standard does not require that function pointers be
51888fb2599f commit https://github.com/vim/vim/commit/d47d83745ff450232328ca7a4b8b00b31bad22fc
Christian Brabandt <cb@256bit.org>
parents: 10042
diff changeset
539 * interconvertible to void *, widely-used compilers such as gcc and clang
51888fb2599f commit https://github.com/vim/vim/commit/d47d83745ff450232328ca7a4b8b00b31bad22fc
Christian Brabandt <cb@256bit.org>
parents: 10042
diff changeset
540 * do such conversion implicitly and automatically on some platforms without
51888fb2599f commit https://github.com/vim/vim/commit/d47d83745ff450232328ca7a4b8b00b31bad22fc
Christian Brabandt <cb@256bit.org>
parents: 10042
diff changeset
541 * issuing any warning.
51888fb2599f commit https://github.com/vim/vim/commit/d47d83745ff450232328ca7a4b8b00b31bad22fc
Christian Brabandt <cb@256bit.org>
parents: 10042
diff changeset
542 *
51888fb2599f commit https://github.com/vim/vim/commit/d47d83745ff450232328ca7a4b8b00b31bad22fc
Christian Brabandt <cb@256bit.org>
parents: 10042
diff changeset
543 * For Solaris Studio, that is not the case. An explicit type cast is needed
51888fb2599f commit https://github.com/vim/vim/commit/d47d83745ff450232328ca7a4b8b00b31bad22fc
Christian Brabandt <cb@256bit.org>
parents: 10042
diff changeset
544 * to suppress warnings on that particular conversion.
51888fb2599f commit https://github.com/vim/vim/commit/d47d83745ff450232328ca7a4b8b00b31bad22fc
Christian Brabandt <cb@256bit.org>
parents: 10042
diff changeset
545 */
51888fb2599f commit https://github.com/vim/vim/commit/d47d83745ff450232328ca7a4b8b00b31bad22fc
Christian Brabandt <cb@256bit.org>
parents: 10042
diff changeset
546 # if defined(__SUNPRO_C) && defined(USE_GTK3)
51888fb2599f commit https://github.com/vim/vim/commit/d47d83745ff450232328ca7a4b8b00b31bad22fc
Christian Brabandt <cb@256bit.org>
parents: 10042
diff changeset
547 # define FUNC2GENERIC(func) (void *)(func)
51888fb2599f commit https://github.com/vim/vim/commit/d47d83745ff450232328ca7a4b8b00b31bad22fc
Christian Brabandt <cb@256bit.org>
parents: 10042
diff changeset
548 # else
51888fb2599f commit https://github.com/vim/vim/commit/d47d83745ff450232328ca7a4b8b00b31bad22fc
Christian Brabandt <cb@256bit.org>
parents: 10042
diff changeset
549 # define FUNC2GENERIC(func) G_CALLBACK(func)
51888fb2599f commit https://github.com/vim/vim/commit/d47d83745ff450232328ca7a4b8b00b31bad22fc
Christian Brabandt <cb@256bit.org>
parents: 10042
diff changeset
550 # endif
18753
6e3dc2d630c2 patch 8.1.2366: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents: 17268
diff changeset
551 #endif // FEAT_GUI_GTK
13847
fa0dcdaec6a3 patch 8.0.1795: lose contact with jobs when :gui forks
Christian Brabandt <cb@256bit.org>
parents: 13339
diff changeset
552
21745
35921b7fc07a patch 8.2.1422: the Mac GUI implementation is outdated
Bram Moolenaar <Bram@vim.org>
parents: 19526
diff changeset
553 #if defined(UNIX)
13847
fa0dcdaec6a3 patch 8.0.1795: lose contact with jobs when :gui forks
Christian Brabandt <cb@256bit.org>
parents: 13339
diff changeset
554 # define GUI_MAY_FORK
fa0dcdaec6a3 patch 8.0.1795: lose contact with jobs when :gui forks
Christian Brabandt <cb@256bit.org>
parents: 13339
diff changeset
555 #endif