annotate src/gui_x11.c @ 33713:9aa03e12b2b5 v9.0.2090

patch 9.0.2090: complete_info() skips entries with 'noselect' Commit: https://github.com/vim/vim/commit/57f9ce1a0977da13e5923214086795ffa2d28ce1 Author: Christian Brabandt <cb@256bit.org> Date: Sat Nov 4 09:58:14 2023 +0100 patch 9.0.2090: complete_info() skips entries with 'noselect' Problem: complete_info() skips entries with 'noselect' Solution: Check, if first entry is at original text state Unfortunately, Commit daef8c74375141974d61b85199b383017644978c introduced a regression, that when ':set completeopt+=noselect' is set and no completion item has been selected yet, it did not fill the complete_info['items'] list. This happened, because the current match item did not have the CP_ORIGINAL_TEXT flag set and then the cp->prev pointer did point to the original flag item, which caused the following while loop to not being run but being skipped instead. So when the 'noselect' is set, only start with to the previous selection item, if the initial completion item has the CP_ORIGINAL_TEXT flag set, else use the 2nd previous item instead. fixes: #13451 closes: #13452 Signed-off-by: Christian Brabandt <cb@256bit.org>
author Christian Brabandt <cb@256bit.org>
date Sat, 04 Nov 2023 10:15:04 +0100
parents 03188d05289a
children 8f04cf65ecff
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: 9939
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/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 * 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 /*
28303
9849df834f1d patch 8.2.4677: the Athena GUI support is outdated
Bram Moolenaar <Bram@vim.org>
parents: 26915
diff changeset
11 * Code for the Motif GUI.
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
12 * Not used for GTK.
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
13 */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
14
10956
90af0c60d78d patch 8.0.0367: types in include files may be inconsistent
Christian Brabandt <cb@256bit.org>
parents: 10042
diff changeset
15 #include "vim.h"
90af0c60d78d patch 8.0.0367: types in include files may be inconsistent
Christian Brabandt <cb@256bit.org>
parents: 10042
diff changeset
16
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
17 #include <X11/keysym.h>
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
18 #include <X11/Xatom.h>
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
19 #include <X11/StringDefs.h>
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
20 #include <X11/Intrinsic.h>
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
21 #include <X11/Shell.h>
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
22 #include <X11/cursorfont.h>
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
23
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
24 /*
15510
41fbbcea0f1b patch 8.1.0763: nobody is using the Sun Workshop support
Bram Moolenaar <Bram@vim.org>
parents: 15500
diff changeset
25 * XpmP.h is preferred, because it makes the signs drawn with a transparent
41fbbcea0f1b patch 8.1.0763: nobody is using the Sun Workshop support
Bram Moolenaar <Bram@vim.org>
parents: 15500
diff changeset
26 * background instead of black.
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
27 */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
28 #if defined(HAVE_XM_XPMP_H) && defined(FEAT_GUI_MOTIF) \
15510
41fbbcea0f1b patch 8.1.0763: nobody is using the Sun Workshop support
Bram Moolenaar <Bram@vim.org>
parents: 15500
diff changeset
29 && !defined(HAVE_X11_XPM_H)
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
30 # include <Xm/XpmP.h>
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
31 #else
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
32 # ifdef HAVE_X11_XPM_H
15517
2ad5f0ffaa2e patch 8.1.0766: various problems when using Vim on VMS
Bram Moolenaar <Bram@vim.org>
parents: 15510
diff changeset
33 # ifdef VMS
2ad5f0ffaa2e patch 8.1.0766: various problems when using Vim on VMS
Bram Moolenaar <Bram@vim.org>
parents: 15510
diff changeset
34 # include <xpm.h>
2ad5f0ffaa2e patch 8.1.0766: various problems when using Vim on VMS
Bram Moolenaar <Bram@vim.org>
parents: 15510
diff changeset
35 # else
2ad5f0ffaa2e patch 8.1.0766: various problems when using Vim on VMS
Bram Moolenaar <Bram@vim.org>
parents: 15510
diff changeset
36 # include <X11/xpm.h>
2ad5f0ffaa2e patch 8.1.0766: various problems when using Vim on VMS
Bram Moolenaar <Bram@vim.org>
parents: 15510
diff changeset
37 # endif
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
38 # endif
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 #ifdef FEAT_XFONTSET
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
42 # ifdef X_LOCALE
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
43 # include <X11/Xlocale.h>
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
44 # else
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
45 # include <locale.h>
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
46 # endif
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 #ifdef HAVE_X11_SUNKEYSYM_H
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
50 # include <X11/Sunkeysym.h>
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
51 #endif
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
52
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
53 #ifdef HAVE_X11_XMU_EDITRES_H
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
54 # include <X11/Xmu/Editres.h>
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
55 #endif
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
56
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
57 #define VIM_NAME "vim"
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
58 #define VIM_CLASS "Vim"
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
59
18788
e1f4e9d78a6a patch 8.1.2383: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents: 18671
diff changeset
60 // Default resource values
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
61 #define DFLT_FONT "7x13"
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
62 #ifdef FONTSET_ALWAYS
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
63 # define DFLT_MENU_FONT XtDefaultFontSet
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
64 #else
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
65 # define DFLT_MENU_FONT XtDefaultFont
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
66 #endif
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
67 #define DFLT_TOOLTIP_FONT XtDefaultFontSet
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
68
18788
e1f4e9d78a6a patch 8.1.2383: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents: 18671
diff changeset
69 // use the default (CDE) colors
28303
9849df834f1d patch 8.2.4677: the Athena GUI support is outdated
Bram Moolenaar <Bram@vim.org>
parents: 26915
diff changeset
70 #define DFLT_MENU_BG_COLOR ""
9849df834f1d patch 8.2.4677: the Athena GUI support is outdated
Bram Moolenaar <Bram@vim.org>
parents: 26915
diff changeset
71 #define DFLT_MENU_FG_COLOR ""
9849df834f1d patch 8.2.4677: the Athena GUI support is outdated
Bram Moolenaar <Bram@vim.org>
parents: 26915
diff changeset
72 #define DFLT_SCROLL_BG_COLOR ""
9849df834f1d patch 8.2.4677: the Athena GUI support is outdated
Bram Moolenaar <Bram@vim.org>
parents: 26915
diff changeset
73 #define DFLT_SCROLL_FG_COLOR ""
9849df834f1d patch 8.2.4677: the Athena GUI support is outdated
Bram Moolenaar <Bram@vim.org>
parents: 26915
diff changeset
74 #define DFLT_TOOLTIP_BG_COLOR "#ffff91"
9849df834f1d patch 8.2.4677: the Athena GUI support is outdated
Bram Moolenaar <Bram@vim.org>
parents: 26915
diff changeset
75 #define DFLT_TOOLTIP_FG_COLOR "#000000"
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
76
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
77 Widget vimShell = (Widget)0;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
78
18788
e1f4e9d78a6a patch 8.1.2383: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents: 18671
diff changeset
79 static Atom wm_atoms[2]; // Window Manager Atoms
e1f4e9d78a6a patch 8.1.2383: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents: 18671
diff changeset
80 #define DELETE_WINDOW_IDX 0 // index in wm_atoms[] for WM_DELETE_WINDOW
e1f4e9d78a6a patch 8.1.2383: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents: 18671
diff changeset
81 #define SAVE_YOURSELF_IDX 1 // index in wm_atoms[] for WM_SAVE_YOURSELF
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
82
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
83 #ifdef FEAT_XFONTSET
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
84 /*
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
85 * We either draw with a fontset (when current_fontset != NULL) or with a
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
86 * normal font (current_fontset == NULL, use gui.text_gc and gui.back_gc).
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
87 */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
88 static XFontSet current_fontset = NULL;
23408
bdda90ed5f6c patch 8.2.2247: VMS: various smaller problems
Bram Moolenaar <Bram@vim.org>
parents: 22522
diff changeset
89 # if !defined(XDrawString)
bdda90ed5f6c patch 8.2.2247: VMS: various smaller problems
Bram Moolenaar <Bram@vim.org>
parents: 22522
diff changeset
90 # define XDrawString(dpy, win, gc, x, y, str, n) \
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
91 do \
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
92 { \
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
93 if (current_fontset != NULL) \
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
94 XmbDrawString(dpy, win, current_fontset, gc, x, y, str, n); \
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
95 else \
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
96 XDrawString(dpy, win, gc, x, y, str, n); \
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
97 } while (0)
23408
bdda90ed5f6c patch 8.2.2247: VMS: various smaller problems
Bram Moolenaar <Bram@vim.org>
parents: 22522
diff changeset
98 # endif
bdda90ed5f6c patch 8.2.2247: VMS: various smaller problems
Bram Moolenaar <Bram@vim.org>
parents: 22522
diff changeset
99 # if !defined(XDrawString16)
bdda90ed5f6c patch 8.2.2247: VMS: various smaller problems
Bram Moolenaar <Bram@vim.org>
parents: 22522
diff changeset
100 # define XDrawString16(dpy, win, gc, x, y, str, n) \
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
101 do \
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
102 { \
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
103 if (current_fontset != NULL) \
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
104 XwcDrawString(dpy, win, current_fontset, gc, x, y, (wchar_t *)str, n); \
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
105 else \
717
2fa8cb05b861 updated for version 7.0218
vimboss
parents: 557
diff changeset
106 XDrawString16(dpy, win, gc, x, y, (XChar2b *)str, n); \
2fa8cb05b861 updated for version 7.0218
vimboss
parents: 557
diff changeset
107 } while (0)
23408
bdda90ed5f6c patch 8.2.2247: VMS: various smaller problems
Bram Moolenaar <Bram@vim.org>
parents: 22522
diff changeset
108 # endif
bdda90ed5f6c patch 8.2.2247: VMS: various smaller problems
Bram Moolenaar <Bram@vim.org>
parents: 22522
diff changeset
109 # if !defined(XDrawImageString16)
bdda90ed5f6c patch 8.2.2247: VMS: various smaller problems
Bram Moolenaar <Bram@vim.org>
parents: 22522
diff changeset
110 # define XDrawImageString16(dpy, win, gc, x, y, str, n) \
717
2fa8cb05b861 updated for version 7.0218
vimboss
parents: 557
diff changeset
111 do \
2fa8cb05b861 updated for version 7.0218
vimboss
parents: 557
diff changeset
112 { \
2fa8cb05b861 updated for version 7.0218
vimboss
parents: 557
diff changeset
113 if (current_fontset != NULL) \
2fa8cb05b861 updated for version 7.0218
vimboss
parents: 557
diff changeset
114 XwcDrawImageString(dpy, win, current_fontset, gc, x, y, (wchar_t *)str, n); \
2fa8cb05b861 updated for version 7.0218
vimboss
parents: 557
diff changeset
115 else \
2fa8cb05b861 updated for version 7.0218
vimboss
parents: 557
diff changeset
116 XDrawImageString16(dpy, win, gc, x, y, (XChar2b *)str, n); \
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
117 } while (0)
23408
bdda90ed5f6c patch 8.2.2247: VMS: various smaller problems
Bram Moolenaar <Bram@vim.org>
parents: 22522
diff changeset
118 # endif
7803
37c929c4a073 commit https://github.com/vim/vim/commit/92b8b2d307e34117f146319872010b0ccc9d2713
Christian Brabandt <cb@256bit.org>
parents: 7260
diff changeset
119 static int check_fontset_sanity(XFontSet fs);
37c929c4a073 commit https://github.com/vim/vim/commit/92b8b2d307e34117f146319872010b0ccc9d2713
Christian Brabandt <cb@256bit.org>
parents: 7260
diff changeset
120 static int fontset_width(XFontSet fs);
37c929c4a073 commit https://github.com/vim/vim/commit/92b8b2d307e34117f146319872010b0ccc9d2713
Christian Brabandt <cb@256bit.org>
parents: 7260
diff changeset
121 static int fontset_ascent(XFontSet fs);
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
122 #endif
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
123
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
124 static guicolor_T prev_fg_color = INVALCOLOR;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
125 static guicolor_T prev_bg_color = INVALCOLOR;
206
87857ffdbf46 updated for version 7.0060
vimboss
parents: 179
diff changeset
126 static guicolor_T prev_sp_color = INVALCOLOR;
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
127
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
128 #if defined(FEAT_GUI_MOTIF) && defined(FEAT_MENU)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
129 static XButtonPressedEvent last_mouse_event;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
130 #endif
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
131
7803
37c929c4a073 commit https://github.com/vim/vim/commit/92b8b2d307e34117f146319872010b0ccc9d2713
Christian Brabandt <cb@256bit.org>
parents: 7260
diff changeset
132 static void gui_x11_check_copy_area(void);
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
133 #ifdef FEAT_CLIENTSERVER
7803
37c929c4a073 commit https://github.com/vim/vim/commit/92b8b2d307e34117f146319872010b0ccc9d2713
Christian Brabandt <cb@256bit.org>
parents: 7260
diff changeset
134 static void gui_x11_send_event_handler(Widget, XtPointer, XEvent *, Boolean *);
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
135 #endif
7803
37c929c4a073 commit https://github.com/vim/vim/commit/92b8b2d307e34117f146319872010b0ccc9d2713
Christian Brabandt <cb@256bit.org>
parents: 7260
diff changeset
136 static void gui_x11_wm_protocol_handler(Widget, XtPointer, XEvent *, Boolean *);
37c929c4a073 commit https://github.com/vim/vim/commit/92b8b2d307e34117f146319872010b0ccc9d2713
Christian Brabandt <cb@256bit.org>
parents: 7260
diff changeset
137 static Cursor gui_x11_create_blank_mouse(void);
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
138
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
139
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
140 /*
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
141 * Keycodes recognized by vim.
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
142 * NOTE: when changing this, the table in gui_gtk_x11.c probably needs the
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
143 * same change!
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
144 */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
145 static struct specialkey
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
146 {
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
147 KeySym key_sym;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
148 char_u vim_code0;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
149 char_u vim_code1;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
150 } special_keys[] =
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
151 {
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
152 {XK_Up, 'k', 'u'},
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
153 {XK_Down, 'k', 'd'},
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
154 {XK_Left, 'k', 'l'},
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
155 {XK_Right, 'k', 'r'},
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
156
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
157 {XK_F1, 'k', '1'},
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
158 {XK_F2, 'k', '2'},
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
159 {XK_F3, 'k', '3'},
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
160 {XK_F4, 'k', '4'},
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
161 {XK_F5, 'k', '5'},
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
162 {XK_F6, 'k', '6'},
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
163 {XK_F7, 'k', '7'},
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
164 {XK_F8, 'k', '8'},
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
165 {XK_F9, 'k', '9'},
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
166 {XK_F10, 'k', ';'},
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
167
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
168 {XK_F11, 'F', '1'},
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
169 {XK_F12, 'F', '2'},
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
170 {XK_F13, 'F', '3'},
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
171 {XK_F14, 'F', '4'},
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
172 {XK_F15, 'F', '5'},
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
173 {XK_F16, 'F', '6'},
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
174 {XK_F17, 'F', '7'},
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
175 {XK_F18, 'F', '8'},
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
176 {XK_F19, 'F', '9'},
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
177 {XK_F20, 'F', 'A'},
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
178
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
179 {XK_F21, 'F', 'B'},
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
180 {XK_F22, 'F', 'C'},
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
181 {XK_F23, 'F', 'D'},
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
182 {XK_F24, 'F', 'E'},
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
183 {XK_F25, 'F', 'F'},
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
184 {XK_F26, 'F', 'G'},
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
185 {XK_F27, 'F', 'H'},
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
186 {XK_F28, 'F', 'I'},
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
187 {XK_F29, 'F', 'J'},
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
188 {XK_F30, 'F', 'K'},
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
189
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
190 {XK_F31, 'F', 'L'},
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
191 {XK_F32, 'F', 'M'},
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
192 {XK_F33, 'F', 'N'},
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
193 {XK_F34, 'F', 'O'},
18788
e1f4e9d78a6a patch 8.1.2383: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents: 18671
diff changeset
194 {XK_F35, 'F', 'P'}, // keysymdef.h defines up to F35
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
195 #ifdef SunXK_F36
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
196 {SunXK_F36, 'F', 'Q'},
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
197 {SunXK_F37, 'F', 'R'},
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
198 #endif
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
199
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
200 {XK_Help, '%', '1'},
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
201 {XK_Undo, '&', '8'},
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
202 {XK_BackSpace, 'k', 'b'},
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
203 {XK_Insert, 'k', 'I'},
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
204 {XK_Delete, 'k', 'D'},
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
205 {XK_Home, 'k', 'h'},
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
206 {XK_End, '@', '7'},
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
207 {XK_Prior, 'k', 'P'},
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
208 {XK_Next, 'k', 'N'},
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
209 {XK_Print, '%', '9'},
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
210
18788
e1f4e9d78a6a patch 8.1.2383: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents: 18671
diff changeset
211 // Keypad keys:
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
212 #ifdef XK_KP_Left
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
213 {XK_KP_Left, 'k', 'l'},
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
214 {XK_KP_Right, 'k', 'r'},
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
215 {XK_KP_Up, 'k', 'u'},
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
216 {XK_KP_Down, 'k', 'd'},
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
217 {XK_KP_Insert, KS_EXTRA, (char_u)KE_KINS},
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
218 {XK_KP_Delete, KS_EXTRA, (char_u)KE_KDEL},
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
219 {XK_KP_Home, 'K', '1'},
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
220 {XK_KP_End, 'K', '4'},
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
221 {XK_KP_Prior, 'K', '3'},
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
222 {XK_KP_Next, 'K', '5'},
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
223
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
224 {XK_KP_Add, 'K', '6'},
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
225 {XK_KP_Subtract, 'K', '7'},
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
226 {XK_KP_Divide, 'K', '8'},
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
227 {XK_KP_Multiply, 'K', '9'},
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
228 {XK_KP_Enter, 'K', 'A'},
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
229 {XK_KP_Decimal, 'K', 'B'},
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
230
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
231 {XK_KP_0, 'K', 'C'},
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
232 {XK_KP_1, 'K', 'D'},
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
233 {XK_KP_2, 'K', 'E'},
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
234 {XK_KP_3, 'K', 'F'},
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
235 {XK_KP_4, 'K', 'G'},
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
236 {XK_KP_5, 'K', 'H'},
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
237 {XK_KP_6, 'K', 'I'},
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
238 {XK_KP_7, 'K', 'J'},
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
239 {XK_KP_8, 'K', 'K'},
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
240 {XK_KP_9, 'K', 'L'},
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
241 #endif
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
242
18788
e1f4e9d78a6a patch 8.1.2383: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents: 18671
diff changeset
243 // End of list marker:
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
244 {(KeySym)0, 0, 0}
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
245 };
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
246
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
247 #define XtNboldFont "boldFont"
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
248 #define XtCBoldFont "BoldFont"
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
249 #define XtNitalicFont "italicFont"
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
250 #define XtCItalicFont "ItalicFont"
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
251 #define XtNboldItalicFont "boldItalicFont"
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
252 #define XtCBoldItalicFont "BoldItalicFont"
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
253 #define XtNscrollbarWidth "scrollbarWidth"
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
254 #define XtCScrollbarWidth "ScrollbarWidth"
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
255 #define XtNmenuHeight "menuHeight"
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
256 #define XtCMenuHeight "MenuHeight"
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
257 #define XtNmenuFont "menuFont"
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
258 #define XtCMenuFont "MenuFont"
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
259 #define XtNmenuFontSet "menuFontSet"
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
260 #define XtCMenuFontSet "MenuFontSet"
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
261
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
262
18788
e1f4e9d78a6a patch 8.1.2383: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents: 18671
diff changeset
263 // Resources for setting the foreground and background colors of menus
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
264 #define XtNmenuBackground "menuBackground"
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
265 #define XtCMenuBackground "MenuBackground"
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
266 #define XtNmenuForeground "menuForeground"
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
267 #define XtCMenuForeground "MenuForeground"
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
268
18788
e1f4e9d78a6a patch 8.1.2383: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents: 18671
diff changeset
269 // Resources for setting the foreground and background colors of scrollbars
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
270 #define XtNscrollBackground "scrollBackground"
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
271 #define XtCScrollBackground "ScrollBackground"
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
272 #define XtNscrollForeground "scrollForeground"
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
273 #define XtCScrollForeground "ScrollForeground"
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
274
18788
e1f4e9d78a6a patch 8.1.2383: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents: 18671
diff changeset
275 // Resources for setting the foreground and background colors of tooltip
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
276 #define XtNtooltipBackground "tooltipBackground"
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
277 #define XtCTooltipBackground "TooltipBackground"
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
278 #define XtNtooltipForeground "tooltipForeground"
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
279 #define XtCTooltipForeground "TooltipForeground"
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
280 #define XtNtooltipFont "tooltipFont"
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
281 #define XtCTooltipFont "TooltipFont"
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
282
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
283 /*
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
284 * X Resources:
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
285 */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
286 static XtResource vim_resources[] =
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
287 {
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
288 {
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
289 XtNforeground,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
290 XtCForeground,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
291 XtRPixel,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
292 sizeof(Pixel),
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
293 XtOffsetOf(gui_T, def_norm_pixel),
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
294 XtRString,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
295 XtDefaultForeground
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
296 },
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
297 {
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
298 XtNbackground,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
299 XtCBackground,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
300 XtRPixel,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
301 sizeof(Pixel),
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
302 XtOffsetOf(gui_T, def_back_pixel),
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
303 XtRString,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
304 XtDefaultBackground
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
305 },
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
306 {
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
307 XtNfont,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
308 XtCFont,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
309 XtRString,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
310 sizeof(String *),
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
311 XtOffsetOf(gui_T, rsrc_font_name),
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
312 XtRImmediate,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
313 XtDefaultFont
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
314 },
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
315 {
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
316 XtNboldFont,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
317 XtCBoldFont,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
318 XtRString,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
319 sizeof(String *),
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
320 XtOffsetOf(gui_T, rsrc_bold_font_name),
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
321 XtRImmediate,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
322 ""
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
323 },
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
324 {
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
325 XtNitalicFont,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
326 XtCItalicFont,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
327 XtRString,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
328 sizeof(String *),
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
329 XtOffsetOf(gui_T, rsrc_ital_font_name),
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
330 XtRImmediate,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
331 ""
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
332 },
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
333 {
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
334 XtNboldItalicFont,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
335 XtCBoldItalicFont,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
336 XtRString,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
337 sizeof(String *),
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
338 XtOffsetOf(gui_T, rsrc_boldital_font_name),
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
339 XtRImmediate,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
340 ""
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
341 },
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
342 {
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
343 XtNgeometry,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
344 XtCGeometry,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
345 XtRString,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
346 sizeof(String *),
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
347 XtOffsetOf(gui_T, geom),
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
348 XtRImmediate,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
349 ""
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
350 },
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
351 {
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
352 XtNreverseVideo,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
353 XtCReverseVideo,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
354 XtRBool,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
355 sizeof(Bool),
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
356 XtOffsetOf(gui_T, rsrc_rev_video),
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
357 XtRImmediate,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
358 (XtPointer)False
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
359 },
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
360 {
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
361 XtNborderWidth,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
362 XtCBorderWidth,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
363 XtRInt,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
364 sizeof(int),
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
365 XtOffsetOf(gui_T, border_width),
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
366 XtRImmediate,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
367 (XtPointer)2
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
368 },
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
369 {
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
370 XtNscrollbarWidth,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
371 XtCScrollbarWidth,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
372 XtRInt,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
373 sizeof(int),
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
374 XtOffsetOf(gui_T, scrollbar_width),
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
375 XtRImmediate,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
376 (XtPointer)SB_DEFAULT_WIDTH
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
377 },
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
378 #ifdef FEAT_MENU
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
379 {
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
380 # ifdef FONTSET_ALWAYS
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
381 XtNmenuFontSet,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
382 XtCMenuFontSet,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
383 #else
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
384 XtNmenuFont,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
385 XtCMenuFont,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
386 #endif
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
387 XtRString,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
388 sizeof(char *),
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
389 XtOffsetOf(gui_T, rsrc_menu_font_name),
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
390 XtRString,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
391 DFLT_MENU_FONT
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
392 },
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
393 #endif
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
394 {
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
395 XtNmenuForeground,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
396 XtCMenuForeground,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
397 XtRString,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
398 sizeof(char *),
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
399 XtOffsetOf(gui_T, rsrc_menu_fg_name),
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
400 XtRString,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
401 DFLT_MENU_FG_COLOR
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
402 },
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
403 {
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
404 XtNmenuBackground,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
405 XtCMenuBackground,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
406 XtRString,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
407 sizeof(char *),
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
408 XtOffsetOf(gui_T, rsrc_menu_bg_name),
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
409 XtRString,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
410 DFLT_MENU_BG_COLOR
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
411 },
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
412 {
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
413 XtNscrollForeground,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
414 XtCScrollForeground,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
415 XtRString,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
416 sizeof(char *),
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
417 XtOffsetOf(gui_T, rsrc_scroll_fg_name),
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
418 XtRString,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
419 DFLT_SCROLL_FG_COLOR
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
420 },
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
421 {
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
422 XtNscrollBackground,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
423 XtCScrollBackground,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
424 XtRString,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
425 sizeof(char *),
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
426 XtOffsetOf(gui_T, rsrc_scroll_bg_name),
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
427 XtRString,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
428 DFLT_SCROLL_BG_COLOR
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
429 },
12871
1a450ce6980c patch 8.0.1312: balloon_show() only works in terminal when compiled with GUI
Christian Brabandt <cb@256bit.org>
parents: 12317
diff changeset
430 #ifdef FEAT_BEVAL_GUI
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
431 {
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
432 XtNtooltipForeground,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
433 XtCTooltipForeground,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
434 XtRString,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
435 sizeof(char *),
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
436 XtOffsetOf(gui_T, rsrc_tooltip_fg_name),
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
437 XtRString,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
438 DFLT_TOOLTIP_FG_COLOR
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
439 },
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
440 {
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
441 XtNtooltipBackground,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
442 XtCTooltipBackground,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
443 XtRString,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
444 sizeof(char *),
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
445 XtOffsetOf(gui_T, rsrc_tooltip_bg_name),
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
446 XtRString,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
447 DFLT_TOOLTIP_BG_COLOR
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
448 },
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
449 {
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
450 XtNtooltipFont,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
451 XtCTooltipFont,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
452 XtRString,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
453 sizeof(char *),
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
454 XtOffsetOf(gui_T, rsrc_tooltip_font_name),
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
455 XtRString,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
456 DFLT_TOOLTIP_FONT
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
457 },
18788
e1f4e9d78a6a patch 8.1.2383: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents: 18671
diff changeset
458 // This one may not be really needed?
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
459 {
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
460 "balloonEvalFontSet",
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
461 XtCFontSet,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
462 XtRFontSet,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
463 sizeof(XFontSet),
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
464 XtOffsetOf(gui_T, tooltip_fontset),
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
465 XtRImmediate,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
466 (XtPointer)NOFONTSET
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
467 },
18788
e1f4e9d78a6a patch 8.1.2383: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents: 18671
diff changeset
468 #endif // FEAT_BEVAL_GUI
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
469 #ifdef FEAT_XIM
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
470 {
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
471 "preeditType",
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
472 "PreeditType",
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
473 XtRString,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
474 sizeof(char*),
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
475 XtOffsetOf(gui_T, rsrc_preedit_type_name),
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
476 XtRString,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
477 (XtPointer)"OverTheSpot,OffTheSpot,Root"
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
478 },
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
479 {
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
480 "inputMethod",
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
481 "InputMethod",
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
482 XtRString,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
483 sizeof(char*),
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
484 XtOffsetOf(gui_T, rsrc_input_method),
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
485 XtRString,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
486 NULL
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
487 },
18788
e1f4e9d78a6a patch 8.1.2383: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents: 18671
diff changeset
488 #endif // FEAT_XIM
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
489 };
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
490
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
491 /*
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
492 * This table holds all the X GUI command line options allowed. This includes
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
493 * the standard ones so that we can skip them when vim is started without the
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
494 * GUI (but the GUI might start up later).
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
495 * When changing this, also update doc/vim_gui.txt and the usage message!!!
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
496 */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
497 static XrmOptionDescRec cmdline_options[] =
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
498 {
18788
e1f4e9d78a6a patch 8.1.2383: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents: 18671
diff changeset
499 // We handle these options ourselves
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
500 {"-bg", ".background", XrmoptionSepArg, NULL},
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
501 {"-background", ".background", XrmoptionSepArg, NULL},
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
502 {"-fg", ".foreground", XrmoptionSepArg, NULL},
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
503 {"-foreground", ".foreground", XrmoptionSepArg, NULL},
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
504 {"-fn", ".font", XrmoptionSepArg, NULL},
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
505 {"-font", ".font", XrmoptionSepArg, NULL},
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
506 {"-boldfont", ".boldFont", XrmoptionSepArg, NULL},
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
507 {"-italicfont", ".italicFont", XrmoptionSepArg, NULL},
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
508 {"-geom", ".geometry", XrmoptionSepArg, NULL},
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
509 {"-geometry", ".geometry", XrmoptionSepArg, NULL},
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
510 {"-reverse", "*reverseVideo", XrmoptionNoArg, "True"},
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
511 {"-rv", "*reverseVideo", XrmoptionNoArg, "True"},
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
512 {"+reverse", "*reverseVideo", XrmoptionNoArg, "False"},
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
513 {"+rv", "*reverseVideo", XrmoptionNoArg, "False"},
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
514 {"-display", ".display", XrmoptionSepArg, NULL},
557
862863033fdd updated for version 7.0158
vimboss
parents: 474
diff changeset
515 {"-iconic", ".iconic", XrmoptionNoArg, "True"},
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
516 {"-name", ".name", XrmoptionSepArg, NULL},
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
517 {"-bw", ".borderWidth", XrmoptionSepArg, NULL},
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
518 {"-borderwidth", ".borderWidth", XrmoptionSepArg, NULL},
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
519 {"-sw", ".scrollbarWidth", XrmoptionSepArg, NULL},
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
520 {"-scrollbarwidth", ".scrollbarWidth", XrmoptionSepArg, NULL},
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
521 {"-mh", ".menuHeight", XrmoptionSepArg, NULL},
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
522 {"-menuheight", ".menuHeight", XrmoptionSepArg, NULL},
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
523 #ifdef FONTSET_ALWAYS
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
524 {"-mf", ".menuFontSet", XrmoptionSepArg, NULL},
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
525 {"-menufont", ".menuFontSet", XrmoptionSepArg, NULL},
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
526 {"-menufontset", ".menuFontSet", XrmoptionSepArg, NULL},
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
527 #else
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
528 {"-mf", ".menuFont", XrmoptionSepArg, NULL},
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
529 {"-menufont", ".menuFont", XrmoptionSepArg, NULL},
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
530 #endif
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
531 {"-xrm", NULL, XrmoptionResArg, NULL}
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
532 };
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
533
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
534 static int gui_argc = 0;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
535 static char **gui_argv = NULL;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
536
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
537 /*
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
538 * Call-back routines.
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
539 */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
540
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
541 static void
7823
bcef391c101c commit https://github.com/vim/vim/commit/68c2f638e65d914dc6e84eb7ce2624f08af525c0
Christian Brabandt <cb@256bit.org>
parents: 7803
diff changeset
542 gui_x11_timer_cb(
bcef391c101c commit https://github.com/vim/vim/commit/68c2f638e65d914dc6e84eb7ce2624f08af525c0
Christian Brabandt <cb@256bit.org>
parents: 7803
diff changeset
543 XtPointer timed_out,
bcef391c101c commit https://github.com/vim/vim/commit/68c2f638e65d914dc6e84eb7ce2624f08af525c0
Christian Brabandt <cb@256bit.org>
parents: 7803
diff changeset
544 XtIntervalId *interval_id UNUSED)
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
545 {
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
546 *((int *)timed_out) = TRUE;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
547 }
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
548
12257
519e4e6bbc28 patch 8.0.1008: slow updating of terminal window in Motif
Christian Brabandt <cb@256bit.org>
parents: 11770
diff changeset
549 #ifdef FEAT_JOB_CHANNEL
519e4e6bbc28 patch 8.0.1008: slow updating of terminal window in Motif
Christian Brabandt <cb@256bit.org>
parents: 11770
diff changeset
550 static void
519e4e6bbc28 patch 8.0.1008: slow updating of terminal window in Motif
Christian Brabandt <cb@256bit.org>
parents: 11770
diff changeset
551 channel_poll_cb(
519e4e6bbc28 patch 8.0.1008: slow updating of terminal window in Motif
Christian Brabandt <cb@256bit.org>
parents: 11770
diff changeset
552 XtPointer client_data,
519e4e6bbc28 patch 8.0.1008: slow updating of terminal window in Motif
Christian Brabandt <cb@256bit.org>
parents: 11770
diff changeset
553 XtIntervalId *interval_id UNUSED)
519e4e6bbc28 patch 8.0.1008: slow updating of terminal window in Motif
Christian Brabandt <cb@256bit.org>
parents: 11770
diff changeset
554 {
519e4e6bbc28 patch 8.0.1008: slow updating of terminal window in Motif
Christian Brabandt <cb@256bit.org>
parents: 11770
diff changeset
555 XtIntervalId *channel_timer = (XtIntervalId *)client_data;
519e4e6bbc28 patch 8.0.1008: slow updating of terminal window in Motif
Christian Brabandt <cb@256bit.org>
parents: 11770
diff changeset
556
18788
e1f4e9d78a6a patch 8.1.2383: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents: 18671
diff changeset
557 // Using an event handler for a channel that may be disconnected does
e1f4e9d78a6a patch 8.1.2383: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents: 18671
diff changeset
558 // not work, it hangs. Instead poll for messages.
12257
519e4e6bbc28 patch 8.0.1008: slow updating of terminal window in Motif
Christian Brabandt <cb@256bit.org>
parents: 11770
diff changeset
559 channel_handle_events(TRUE);
519e4e6bbc28 patch 8.0.1008: slow updating of terminal window in Motif
Christian Brabandt <cb@256bit.org>
parents: 11770
diff changeset
560 parse_queued_messages();
519e4e6bbc28 patch 8.0.1008: slow updating of terminal window in Motif
Christian Brabandt <cb@256bit.org>
parents: 11770
diff changeset
561
18788
e1f4e9d78a6a patch 8.1.2383: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents: 18671
diff changeset
562 // repeat
12257
519e4e6bbc28 patch 8.0.1008: slow updating of terminal window in Motif
Christian Brabandt <cb@256bit.org>
parents: 11770
diff changeset
563 *channel_timer = XtAppAddTimeOut(app_context, (long_u)20,
519e4e6bbc28 patch 8.0.1008: slow updating of terminal window in Motif
Christian Brabandt <cb@256bit.org>
parents: 11770
diff changeset
564 channel_poll_cb, client_data);
519e4e6bbc28 patch 8.0.1008: slow updating of terminal window in Motif
Christian Brabandt <cb@256bit.org>
parents: 11770
diff changeset
565 }
519e4e6bbc28 patch 8.0.1008: slow updating of terminal window in Motif
Christian Brabandt <cb@256bit.org>
parents: 11770
diff changeset
566 #endif
519e4e6bbc28 patch 8.0.1008: slow updating of terminal window in Motif
Christian Brabandt <cb@256bit.org>
parents: 11770
diff changeset
567
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
568 static void
7823
bcef391c101c commit https://github.com/vim/vim/commit/68c2f638e65d914dc6e84eb7ce2624f08af525c0
Christian Brabandt <cb@256bit.org>
parents: 7803
diff changeset
569 gui_x11_visibility_cb(
bcef391c101c commit https://github.com/vim/vim/commit/68c2f638e65d914dc6e84eb7ce2624f08af525c0
Christian Brabandt <cb@256bit.org>
parents: 7803
diff changeset
570 Widget w UNUSED,
bcef391c101c commit https://github.com/vim/vim/commit/68c2f638e65d914dc6e84eb7ce2624f08af525c0
Christian Brabandt <cb@256bit.org>
parents: 7803
diff changeset
571 XtPointer dud UNUSED,
bcef391c101c commit https://github.com/vim/vim/commit/68c2f638e65d914dc6e84eb7ce2624f08af525c0
Christian Brabandt <cb@256bit.org>
parents: 7803
diff changeset
572 XEvent *event,
bcef391c101c commit https://github.com/vim/vim/commit/68c2f638e65d914dc6e84eb7ce2624f08af525c0
Christian Brabandt <cb@256bit.org>
parents: 7803
diff changeset
573 Boolean *dum UNUSED)
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
574 {
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
575 if (event->type != VisibilityNotify)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
576 return;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
577
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
578 gui.visibility = event->xvisibility.state;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
579
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
580 /*
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
581 * When we do an XCopyArea(), and the window is partially obscured, we want
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
582 * to receive an event to tell us whether it worked or not.
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
583 */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
584 XSetGraphicsExposures(gui.dpy, gui.text_gc,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
585 gui.visibility != VisibilityUnobscured);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
586
18788
e1f4e9d78a6a patch 8.1.2383: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents: 18671
diff changeset
587 // This is needed for when redrawing is slow.
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
588 gui_mch_update();
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
589 }
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
590
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
591 static void
7823
bcef391c101c commit https://github.com/vim/vim/commit/68c2f638e65d914dc6e84eb7ce2624f08af525c0
Christian Brabandt <cb@256bit.org>
parents: 7803
diff changeset
592 gui_x11_expose_cb(
bcef391c101c commit https://github.com/vim/vim/commit/68c2f638e65d914dc6e84eb7ce2624f08af525c0
Christian Brabandt <cb@256bit.org>
parents: 7803
diff changeset
593 Widget w UNUSED,
bcef391c101c commit https://github.com/vim/vim/commit/68c2f638e65d914dc6e84eb7ce2624f08af525c0
Christian Brabandt <cb@256bit.org>
parents: 7803
diff changeset
594 XtPointer dud UNUSED,
bcef391c101c commit https://github.com/vim/vim/commit/68c2f638e65d914dc6e84eb7ce2624f08af525c0
Christian Brabandt <cb@256bit.org>
parents: 7803
diff changeset
595 XEvent *event,
bcef391c101c commit https://github.com/vim/vim/commit/68c2f638e65d914dc6e84eb7ce2624f08af525c0
Christian Brabandt <cb@256bit.org>
parents: 7803
diff changeset
596 Boolean *dum UNUSED)
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
597 {
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
598 XExposeEvent *gevent;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
599 int new_x;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
600
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
601 if (event->type != Expose)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
602 return;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
603
18788
e1f4e9d78a6a patch 8.1.2383: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents: 18671
diff changeset
604 out_flush(); // make sure all output has been processed
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
605
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
606 gevent = (XExposeEvent *)event;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
607 gui_redraw(gevent->x, gevent->y, gevent->width, gevent->height);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
608
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
609 new_x = FILL_X(0);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
610
18788
e1f4e9d78a6a patch 8.1.2383: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents: 18671
diff changeset
611 // Clear the border areas if needed
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
612 if (gevent->x < new_x)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
613 XClearArea(gui.dpy, gui.wid, 0, 0, new_x, 0, False);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
614 if (gevent->y < FILL_Y(0))
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
615 XClearArea(gui.dpy, gui.wid, 0, 0, 0, FILL_Y(0), False);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
616 if (gevent->x > FILL_X(Columns))
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
617 XClearArea(gui.dpy, gui.wid, FILL_X((int)Columns), 0, 0, 0, False);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
618 if (gevent->y > FILL_Y(Rows))
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
619 XClearArea(gui.dpy, gui.wid, 0, FILL_Y((int)Rows), 0, 0, False);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
620
18788
e1f4e9d78a6a patch 8.1.2383: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents: 18671
diff changeset
621 // This is needed for when redrawing is slow.
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
622 gui_mch_update();
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
623 }
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
624
15510
41fbbcea0f1b patch 8.1.0763: nobody is using the Sun Workshop support
Bram Moolenaar <Bram@vim.org>
parents: 15500
diff changeset
625 #if (defined(FEAT_NETBEANS_INTG) && defined(FEAT_GUI_MOTIF)) || defined(PROTO)
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
626 /*
445
c773cb978acf updated for version 7.0116
vimboss
parents: 206
diff changeset
627 * This function fills in the XRectangle object with the current x,y
c773cb978acf updated for version 7.0116
vimboss
parents: 206
diff changeset
628 * coordinates and height, width so that an XtVaSetValues to the same shell of
1226
a49d06539452 updated for version 7.1b
vimboss
parents: 857
diff changeset
629 * those resources will restore the window to its former position and
445
c773cb978acf updated for version 7.0116
vimboss
parents: 206
diff changeset
630 * dimensions.
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
631 *
445
c773cb978acf updated for version 7.0116
vimboss
parents: 206
diff changeset
632 * Note: This function may fail, in which case the XRectangle will be
c773cb978acf updated for version 7.0116
vimboss
parents: 206
diff changeset
633 * unchanged. Be sure to have the XRectangle set with the proper values for a
c773cb978acf updated for version 7.0116
vimboss
parents: 206
diff changeset
634 * failed condition prior to calling this function.
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
635 */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
636 static void
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
637 shellRectangle(Widget shell, XRectangle *r)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
638 {
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
639 Window rootw, shellw, child, parentw;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
640 int absx, absy;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
641 XWindowAttributes a;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
642 Window *children;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
643 unsigned int childrenCount;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
644
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
645 shellw = XtWindow(shell);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
646 if (shellw == 0)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
647 return;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
648 for (;;)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
649 {
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
650 XQueryTree(XtDisplay(shell), shellw, &rootw, &parentw,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
651 &children, &childrenCount);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
652 XFree(children);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
653 if (parentw == rootw)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
654 break;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
655 shellw = parentw;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
656 }
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
657 XGetWindowAttributes(XtDisplay(shell), shellw, &a);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
658 XTranslateCoordinates(XtDisplay(shell), shellw, a.root, 0, 0,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
659 &absx, &absy, &child);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
660 r->x = absx;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
661 r->y = absy;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
662 XtVaGetValues(shell, XmNheight, &r->height, XmNwidth, &r->width, NULL);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
663 }
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
664 #endif
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
665
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
666 static void
7823
bcef391c101c commit https://github.com/vim/vim/commit/68c2f638e65d914dc6e84eb7ce2624f08af525c0
Christian Brabandt <cb@256bit.org>
parents: 7803
diff changeset
667 gui_x11_resize_window_cb(
bcef391c101c commit https://github.com/vim/vim/commit/68c2f638e65d914dc6e84eb7ce2624f08af525c0
Christian Brabandt <cb@256bit.org>
parents: 7803
diff changeset
668 Widget w UNUSED,
bcef391c101c commit https://github.com/vim/vim/commit/68c2f638e65d914dc6e84eb7ce2624f08af525c0
Christian Brabandt <cb@256bit.org>
parents: 7803
diff changeset
669 XtPointer dud UNUSED,
bcef391c101c commit https://github.com/vim/vim/commit/68c2f638e65d914dc6e84eb7ce2624f08af525c0
Christian Brabandt <cb@256bit.org>
parents: 7803
diff changeset
670 XEvent *event,
bcef391c101c commit https://github.com/vim/vim/commit/68c2f638e65d914dc6e84eb7ce2624f08af525c0
Christian Brabandt <cb@256bit.org>
parents: 7803
diff changeset
671 Boolean *dum UNUSED)
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
672 {
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
673 static int lastWidth, lastHeight;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
674
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
675 if (event->type != ConfigureNotify)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
676 return;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
677
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
678 if (event->xconfigure.width != lastWidth
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
679 || event->xconfigure.height != lastHeight)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
680 {
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
681 lastWidth = event->xconfigure.width;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
682 lastHeight = event->xconfigure.height;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
683 gui_resize_shell(event->xconfigure.width, event->xconfigure.height
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
684 #ifdef FEAT_XIM
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
685 - xim_get_status_area_height()
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
686 #endif
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
687 );
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
688 }
2209
d0ddf7ba1630 Included the patch to support netbeans in a terminal.
Bram Moolenaar <bram@vim.org>
parents: 1887
diff changeset
689 #if defined(FEAT_NETBEANS_INTG) && defined(FEAT_GUI_MOTIF)
2210
8c6a66e2b3cc Add :nbstart and :nbclose.
Bram Moolenaar <bram@vim.org>
parents: 2209
diff changeset
690 if (netbeans_active())
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
691 {
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
692 XRectangle rec;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
693
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
694 shellRectangle(w, &rec);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
695 netbeans_frame_moved(rec.x, rec.y);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
696 }
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
697 #endif
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
698 #ifdef FEAT_XIM
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
699 xim_set_preedit();
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
700 #endif
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
701 }
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
702
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
703 static void
7823
bcef391c101c commit https://github.com/vim/vim/commit/68c2f638e65d914dc6e84eb7ce2624f08af525c0
Christian Brabandt <cb@256bit.org>
parents: 7803
diff changeset
704 gui_x11_focus_change_cb(
bcef391c101c commit https://github.com/vim/vim/commit/68c2f638e65d914dc6e84eb7ce2624f08af525c0
Christian Brabandt <cb@256bit.org>
parents: 7803
diff changeset
705 Widget w UNUSED,
bcef391c101c commit https://github.com/vim/vim/commit/68c2f638e65d914dc6e84eb7ce2624f08af525c0
Christian Brabandt <cb@256bit.org>
parents: 7803
diff changeset
706 XtPointer data UNUSED,
bcef391c101c commit https://github.com/vim/vim/commit/68c2f638e65d914dc6e84eb7ce2624f08af525c0
Christian Brabandt <cb@256bit.org>
parents: 7803
diff changeset
707 XEvent *event,
bcef391c101c commit https://github.com/vim/vim/commit/68c2f638e65d914dc6e84eb7ce2624f08af525c0
Christian Brabandt <cb@256bit.org>
parents: 7803
diff changeset
708 Boolean *dum UNUSED)
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
709 {
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
710 gui_focus_change(event->type == FocusIn);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
711 }
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
712
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
713 static void
7823
bcef391c101c commit https://github.com/vim/vim/commit/68c2f638e65d914dc6e84eb7ce2624f08af525c0
Christian Brabandt <cb@256bit.org>
parents: 7803
diff changeset
714 gui_x11_enter_cb(
bcef391c101c commit https://github.com/vim/vim/commit/68c2f638e65d914dc6e84eb7ce2624f08af525c0
Christian Brabandt <cb@256bit.org>
parents: 7803
diff changeset
715 Widget w UNUSED,
bcef391c101c commit https://github.com/vim/vim/commit/68c2f638e65d914dc6e84eb7ce2624f08af525c0
Christian Brabandt <cb@256bit.org>
parents: 7803
diff changeset
716 XtPointer data UNUSED,
bcef391c101c commit https://github.com/vim/vim/commit/68c2f638e65d914dc6e84eb7ce2624f08af525c0
Christian Brabandt <cb@256bit.org>
parents: 7803
diff changeset
717 XEvent *event UNUSED,
bcef391c101c commit https://github.com/vim/vim/commit/68c2f638e65d914dc6e84eb7ce2624f08af525c0
Christian Brabandt <cb@256bit.org>
parents: 7803
diff changeset
718 Boolean *dum UNUSED)
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
719 {
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
720 gui_focus_change(TRUE);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
721 }
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
722
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
723 static void
7823
bcef391c101c commit https://github.com/vim/vim/commit/68c2f638e65d914dc6e84eb7ce2624f08af525c0
Christian Brabandt <cb@256bit.org>
parents: 7803
diff changeset
724 gui_x11_leave_cb(
bcef391c101c commit https://github.com/vim/vim/commit/68c2f638e65d914dc6e84eb7ce2624f08af525c0
Christian Brabandt <cb@256bit.org>
parents: 7803
diff changeset
725 Widget w UNUSED,
bcef391c101c commit https://github.com/vim/vim/commit/68c2f638e65d914dc6e84eb7ce2624f08af525c0
Christian Brabandt <cb@256bit.org>
parents: 7803
diff changeset
726 XtPointer data UNUSED,
bcef391c101c commit https://github.com/vim/vim/commit/68c2f638e65d914dc6e84eb7ce2624f08af525c0
Christian Brabandt <cb@256bit.org>
parents: 7803
diff changeset
727 XEvent *event UNUSED,
bcef391c101c commit https://github.com/vim/vim/commit/68c2f638e65d914dc6e84eb7ce2624f08af525c0
Christian Brabandt <cb@256bit.org>
parents: 7803
diff changeset
728 Boolean *dum UNUSED)
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
729 {
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
730 gui_focus_change(FALSE);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
731 }
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
732
15597
536dd2bc5ac9 patch 8.1.0806: too many #ifdefs
Bram Moolenaar <Bram@vim.org>
parents: 15517
diff changeset
733 #if defined(X_HAVE_UTF8_STRING)
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
734 # if X_HAVE_UTF8_STRING
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
735 # define USE_UTF8LOOKUP
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
736 # endif
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
737 #endif
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
738
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
739 void
7823
bcef391c101c commit https://github.com/vim/vim/commit/68c2f638e65d914dc6e84eb7ce2624f08af525c0
Christian Brabandt <cb@256bit.org>
parents: 7803
diff changeset
740 gui_x11_key_hit_cb(
bcef391c101c commit https://github.com/vim/vim/commit/68c2f638e65d914dc6e84eb7ce2624f08af525c0
Christian Brabandt <cb@256bit.org>
parents: 7803
diff changeset
741 Widget w UNUSED,
bcef391c101c commit https://github.com/vim/vim/commit/68c2f638e65d914dc6e84eb7ce2624f08af525c0
Christian Brabandt <cb@256bit.org>
parents: 7803
diff changeset
742 XtPointer dud UNUSED,
bcef391c101c commit https://github.com/vim/vim/commit/68c2f638e65d914dc6e84eb7ce2624f08af525c0
Christian Brabandt <cb@256bit.org>
parents: 7803
diff changeset
743 XEvent *event,
bcef391c101c commit https://github.com/vim/vim/commit/68c2f638e65d914dc6e84eb7ce2624f08af525c0
Christian Brabandt <cb@256bit.org>
parents: 7803
diff changeset
744 Boolean *dum UNUSED)
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
745 {
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
746 XKeyPressedEvent *ev_press;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
747 #ifdef FEAT_XIM
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
748 char_u string2[256];
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
749 char_u string_shortbuf[256];
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
750 char_u *string = string_shortbuf;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
751 Boolean string_alloced = False;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
752 Status status;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
753 #else
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
754 char_u string[4], string2[3];
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
755 #endif
20421
8590a462ad46 patch 8.2.0765: In the GUI can't use all the modifiers.
Bram Moolenaar <Bram@vim.org>
parents: 20007
diff changeset
756 KeySym key_sym;
8590a462ad46 patch 8.2.0765: In the GUI can't use all the modifiers.
Bram Moolenaar <Bram@vim.org>
parents: 20007
diff changeset
757 int len;
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
758 int i;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
759 int modifiers;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
760 int key;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
761
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
762 ev_press = (XKeyPressedEvent *)event;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
763
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
764 #ifdef FEAT_XIM
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
765 if (xic)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
766 {
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
767 # ifdef USE_UTF8LOOKUP
18788
e1f4e9d78a6a patch 8.1.2383: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents: 18671
diff changeset
768 // XFree86 4.0.2 or newer: Be able to get UTF-8 characters even when
e1f4e9d78a6a patch 8.1.2383: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents: 18671
diff changeset
769 // the locale isn't utf-8.
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
770 if (enc_utf8)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
771 len = Xutf8LookupString(xic, ev_press, (char *)string,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
772 sizeof(string_shortbuf), &key_sym, &status);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
773 else
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
774 # endif
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
775 len = XmbLookupString(xic, ev_press, (char *)string,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
776 sizeof(string_shortbuf), &key_sym, &status);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
777 if (status == XBufferOverflow)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
778 {
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
779 string = (char_u *)XtMalloc(len + 1);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
780 string_alloced = True;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
781 # ifdef USE_UTF8LOOKUP
18788
e1f4e9d78a6a patch 8.1.2383: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents: 18671
diff changeset
782 // XFree86 4.0.2 or newer: Be able to get UTF-8 characters even
e1f4e9d78a6a patch 8.1.2383: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents: 18671
diff changeset
783 // when the locale isn't utf-8.
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
784 if (enc_utf8)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
785 len = Xutf8LookupString(xic, ev_press, (char *)string,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
786 len, &key_sym, &status);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
787 else
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
788 # endif
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
789 len = XmbLookupString(xic, ev_press, (char *)string,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
790 len, &key_sym, &status);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
791 }
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
792 if (status == XLookupNone || status == XLookupChars)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
793 key_sym = XK_VoidSymbol;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
794
18788
e1f4e9d78a6a patch 8.1.2383: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents: 18671
diff changeset
795 // Do conversion from 'termencoding' to 'encoding'. When using
e1f4e9d78a6a patch 8.1.2383: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents: 18671
diff changeset
796 // Xutf8LookupString() it has already been done.
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
797 if (len > 0 && input_conv.vc_type != CONV_NONE
15597
536dd2bc5ac9 patch 8.1.0806: too many #ifdefs
Bram Moolenaar <Bram@vim.org>
parents: 15517
diff changeset
798 # ifdef USE_UTF8LOOKUP
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
799 && !enc_utf8
15597
536dd2bc5ac9 patch 8.1.0806: too many #ifdefs
Bram Moolenaar <Bram@vim.org>
parents: 15517
diff changeset
800 # endif
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
801 )
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
802 {
18788
e1f4e9d78a6a patch 8.1.2383: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents: 18671
diff changeset
803 int maxlen = len * 4 + 40; // guessed
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
804 char_u *p = (char_u *)XtMalloc(maxlen);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
805
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
806 mch_memmove(p, string, len);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
807 if (string_alloced)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
808 XtFree((char *)string);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
809 string = p;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
810 string_alloced = True;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
811 len = convert_input(p, len, maxlen);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
812 }
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
813
18788
e1f4e9d78a6a patch 8.1.2383: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents: 18671
diff changeset
814 // Translate CSI to K_CSI, otherwise it could be recognized as the
e1f4e9d78a6a patch 8.1.2383: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents: 18671
diff changeset
815 // start of a special key.
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
816 for (i = 0; i < len; ++i)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
817 if (string[i] == CSI)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
818 {
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
819 char_u *p = (char_u *)XtMalloc(len + 3);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
820
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
821 mch_memmove(p, string, i + 1);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
822 p[i + 1] = KS_EXTRA;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
823 p[i + 2] = (int)KE_CSI;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
824 mch_memmove(p + i + 3, string + i + 1, len - i);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
825 if (string_alloced)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
826 XtFree((char *)string);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
827 string = p;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
828 string_alloced = True;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
829 i += 2;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
830 len += 2;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
831 }
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
832 }
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
833 else
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
834 #endif
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
835 len = XLookupString(ev_press, (char *)string, sizeof(string),
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
836 &key_sym, NULL);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
837
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
838 #ifdef SunXK_F36
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
839 /*
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
840 * These keys have bogus lookup strings, and trapping them here is
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
841 * easier than trying to XRebindKeysym() on them with every possible
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
842 * combination of modifiers.
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
843 */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
844 if (key_sym == SunXK_F36 || key_sym == SunXK_F37)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
845 len = 0;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
846 #endif
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
847
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
848 if (key_sym == XK_space)
18788
e1f4e9d78a6a patch 8.1.2383: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents: 18671
diff changeset
849 string[0] = ' '; // Otherwise Ctrl-Space doesn't work
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
850
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
851 /*
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
852 * Only on some machines ^_ requires Ctrl+Shift+minus. For consistency,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
853 * allow just Ctrl+minus too.
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
854 */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
855 if (key_sym == XK_minus && (ev_press->state & ControlMask))
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
856 string[0] = Ctrl__;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
857
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
858 #ifdef XK_ISO_Left_Tab
18788
e1f4e9d78a6a patch 8.1.2383: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents: 18671
diff changeset
859 // why do we get XK_ISO_Left_Tab instead of XK_Tab for shift-tab?
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
860 if (key_sym == XK_ISO_Left_Tab)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
861 {
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
862 key_sym = XK_Tab;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
863 string[0] = TAB;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
864 len = 1;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
865 }
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
866 #endif
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
867
20421
8590a462ad46 patch 8.2.0765: In the GUI can't use all the modifiers.
Bram Moolenaar <Bram@vim.org>
parents: 20007
diff changeset
868 // We used to apply Alt/Meta to the key here (Mod1Mask), but that is now
8590a462ad46 patch 8.2.0765: In the GUI can't use all the modifiers.
Bram Moolenaar <Bram@vim.org>
parents: 20007
diff changeset
869 // done later, the same as it happens for the terminal. Hopefully that
8590a462ad46 patch 8.2.0765: In the GUI can't use all the modifiers.
Bram Moolenaar <Bram@vim.org>
parents: 20007
diff changeset
870 // works for everybody...
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
871
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
872 if (len == 1 && string[0] == CSI)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
873 {
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
874 string[1] = KS_EXTRA;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
875 string[2] = (int)KE_CSI;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
876 len = -3;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
877 }
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
878
18788
e1f4e9d78a6a patch 8.1.2383: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents: 18671
diff changeset
879 // Check for special keys. Also do this when len == 1 (key has an ASCII
e1f4e9d78a6a patch 8.1.2383: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents: 18671
diff changeset
880 // value) to detect backspace, delete and keypad keys.
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
881 if (len == 0 || len == 1)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
882 {
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
883 for (i = 0; special_keys[i].key_sym != (KeySym)0; i++)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
884 {
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
885 if (special_keys[i].key_sym == key_sym)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
886 {
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
887 string[0] = CSI;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
888 string[1] = special_keys[i].vim_code0;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
889 string[2] = special_keys[i].vim_code1;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
890 len = -3;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
891 break;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
892 }
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
893 }
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
894 }
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
895
18788
e1f4e9d78a6a patch 8.1.2383: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents: 18671
diff changeset
896 // Unrecognised key is ignored.
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
897 if (len == 0)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
898 goto theend;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
899
20421
8590a462ad46 patch 8.2.0765: In the GUI can't use all the modifiers.
Bram Moolenaar <Bram@vim.org>
parents: 20007
diff changeset
900 // Handle modifiers.
8590a462ad46 patch 8.2.0765: In the GUI can't use all the modifiers.
Bram Moolenaar <Bram@vim.org>
parents: 20007
diff changeset
901 modifiers = 0;
8590a462ad46 patch 8.2.0765: In the GUI can't use all the modifiers.
Bram Moolenaar <Bram@vim.org>
parents: 20007
diff changeset
902 if (ev_press->state & ShiftMask)
8590a462ad46 patch 8.2.0765: In the GUI can't use all the modifiers.
Bram Moolenaar <Bram@vim.org>
parents: 20007
diff changeset
903 modifiers |= MOD_MASK_SHIFT;
8590a462ad46 patch 8.2.0765: In the GUI can't use all the modifiers.
Bram Moolenaar <Bram@vim.org>
parents: 20007
diff changeset
904 if (ev_press->state & ControlMask)
20563
a5a24d688e11 patch 8.2.0835: Motif: mapping <C-bslash> still doesn't work
Bram Moolenaar <Bram@vim.org>
parents: 20553
diff changeset
905 {
20421
8590a462ad46 patch 8.2.0765: In the GUI can't use all the modifiers.
Bram Moolenaar <Bram@vim.org>
parents: 20007
diff changeset
906 modifiers |= MOD_MASK_CTRL;
20563
a5a24d688e11 patch 8.2.0835: Motif: mapping <C-bslash> still doesn't work
Bram Moolenaar <Bram@vim.org>
parents: 20553
diff changeset
907 if (len == 1 && string[0] < 0x20)
a5a24d688e11 patch 8.2.0835: Motif: mapping <C-bslash> still doesn't work
Bram Moolenaar <Bram@vim.org>
parents: 20553
diff changeset
908 // Use the character before applyng CTRL.
a5a24d688e11 patch 8.2.0835: Motif: mapping <C-bslash> still doesn't work
Bram Moolenaar <Bram@vim.org>
parents: 20553
diff changeset
909 string[0] += 0x40;
a5a24d688e11 patch 8.2.0835: Motif: mapping <C-bslash> still doesn't work
Bram Moolenaar <Bram@vim.org>
parents: 20553
diff changeset
910 }
20421
8590a462ad46 patch 8.2.0765: In the GUI can't use all the modifiers.
Bram Moolenaar <Bram@vim.org>
parents: 20007
diff changeset
911 if (ev_press->state & Mod1Mask)
8590a462ad46 patch 8.2.0765: In the GUI can't use all the modifiers.
Bram Moolenaar <Bram@vim.org>
parents: 20007
diff changeset
912 modifiers |= MOD_MASK_ALT;
8590a462ad46 patch 8.2.0765: In the GUI can't use all the modifiers.
Bram Moolenaar <Bram@vim.org>
parents: 20007
diff changeset
913 if (ev_press->state & Mod4Mask)
8590a462ad46 patch 8.2.0765: In the GUI can't use all the modifiers.
Bram Moolenaar <Bram@vim.org>
parents: 20007
diff changeset
914 modifiers |= MOD_MASK_META;
8590a462ad46 patch 8.2.0765: In the GUI can't use all the modifiers.
Bram Moolenaar <Bram@vim.org>
parents: 20007
diff changeset
915
8590a462ad46 patch 8.2.0765: In the GUI can't use all the modifiers.
Bram Moolenaar <Bram@vim.org>
parents: 20007
diff changeset
916 /*
8590a462ad46 patch 8.2.0765: In the GUI can't use all the modifiers.
Bram Moolenaar <Bram@vim.org>
parents: 20007
diff changeset
917 * For some keys a shift modifier is translated into another key
8590a462ad46 patch 8.2.0765: In the GUI can't use all the modifiers.
Bram Moolenaar <Bram@vim.org>
parents: 20007
diff changeset
918 * code.
8590a462ad46 patch 8.2.0765: In the GUI can't use all the modifiers.
Bram Moolenaar <Bram@vim.org>
parents: 20007
diff changeset
919 */
8590a462ad46 patch 8.2.0765: In the GUI can't use all the modifiers.
Bram Moolenaar <Bram@vim.org>
parents: 20007
diff changeset
920 if (len == -3)
8590a462ad46 patch 8.2.0765: In the GUI can't use all the modifiers.
Bram Moolenaar <Bram@vim.org>
parents: 20007
diff changeset
921 key = TO_SPECIAL(string[1], string[2]);
8590a462ad46 patch 8.2.0765: In the GUI can't use all the modifiers.
Bram Moolenaar <Bram@vim.org>
parents: 20007
diff changeset
922 else
20951
64c1b0796c46 patch 8.2.1027: GUI: multi-byte characters do not work in a terminal
Bram Moolenaar <Bram@vim.org>
parents: 20563
diff changeset
923 {
64c1b0796c46 patch 8.2.1027: GUI: multi-byte characters do not work in a terminal
Bram Moolenaar <Bram@vim.org>
parents: 20563
diff changeset
924 string[len] = NUL;
64c1b0796c46 patch 8.2.1027: GUI: multi-byte characters do not work in a terminal
Bram Moolenaar <Bram@vim.org>
parents: 20563
diff changeset
925 key = mb_ptr2char(string);
64c1b0796c46 patch 8.2.1027: GUI: multi-byte characters do not work in a terminal
Bram Moolenaar <Bram@vim.org>
parents: 20563
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 key = simplify_key(key, &modifiers);
8590a462ad46 patch 8.2.0765: In the GUI can't use all the modifiers.
Bram Moolenaar <Bram@vim.org>
parents: 20007
diff changeset
928 if (key == CSI)
8590a462ad46 patch 8.2.0765: In the GUI can't use all the modifiers.
Bram Moolenaar <Bram@vim.org>
parents: 20007
diff changeset
929 key = K_CSI;
8590a462ad46 patch 8.2.0765: In the GUI can't use all the modifiers.
Bram Moolenaar <Bram@vim.org>
parents: 20007
diff changeset
930 if (IS_SPECIAL(key))
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
931 {
20421
8590a462ad46 patch 8.2.0765: In the GUI can't use all the modifiers.
Bram Moolenaar <Bram@vim.org>
parents: 20007
diff changeset
932 string[0] = CSI;
8590a462ad46 patch 8.2.0765: In the GUI can't use all the modifiers.
Bram Moolenaar <Bram@vim.org>
parents: 20007
diff changeset
933 string[1] = K_SECOND(key);
8590a462ad46 patch 8.2.0765: In the GUI can't use all the modifiers.
Bram Moolenaar <Bram@vim.org>
parents: 20007
diff changeset
934 string[2] = K_THIRD(key);
8590a462ad46 patch 8.2.0765: In the GUI can't use all the modifiers.
Bram Moolenaar <Bram@vim.org>
parents: 20007
diff changeset
935 len = 3;
8590a462ad46 patch 8.2.0765: In the GUI can't use all the modifiers.
Bram Moolenaar <Bram@vim.org>
parents: 20007
diff changeset
936 }
8590a462ad46 patch 8.2.0765: In the GUI can't use all the modifiers.
Bram Moolenaar <Bram@vim.org>
parents: 20007
diff changeset
937 else
8590a462ad46 patch 8.2.0765: In the GUI can't use all the modifiers.
Bram Moolenaar <Bram@vim.org>
parents: 20007
diff changeset
938 {
22522
6c7e4db139a3 patch 8.2.1809: mapping some keys with Ctrl does not work properly
Bram Moolenaar <Bram@vim.org>
parents: 22407
diff changeset
939 // Some keys need adjustment when the Ctrl modifier is used.
6c7e4db139a3 patch 8.2.1809: mapping some keys with Ctrl does not work properly
Bram Moolenaar <Bram@vim.org>
parents: 22407
diff changeset
940 key = may_adjust_key_for_ctrl(modifiers, key);
6c7e4db139a3 patch 8.2.1809: mapping some keys with Ctrl does not work properly
Bram Moolenaar <Bram@vim.org>
parents: 22407
diff changeset
941
31940
03188d05289a patch 9.0.1302: on a Belgian keyboard CTRL-] does not work
Bram Moolenaar <Bram@vim.org>
parents: 31804
diff changeset
942 len = mb_char2bytes(key, string);
03188d05289a patch 9.0.1302: on a Belgian keyboard CTRL-] does not work
Bram Moolenaar <Bram@vim.org>
parents: 31804
diff changeset
943
20553
2c808d01a9fd patch 8.2.0830: Motif: can't map "!"
Bram Moolenaar <Bram@vim.org>
parents: 20421
diff changeset
944 // Remove the SHIFT modifier for keys where it's already included,
2c808d01a9fd patch 8.2.0830: Motif: can't map "!"
Bram Moolenaar <Bram@vim.org>
parents: 20421
diff changeset
945 // e.g., '(', '!' and '*'.
22407
c19acd92ee83 patch 8.2.1752: GTK GUI: cannot map alt-? with <A-?>
Bram Moolenaar <Bram@vim.org>
parents: 21570
diff changeset
946 modifiers = may_remove_shift_modifier(modifiers, key);
20421
8590a462ad46 patch 8.2.0765: In the GUI can't use all the modifiers.
Bram Moolenaar <Bram@vim.org>
parents: 20007
diff changeset
947 }
8590a462ad46 patch 8.2.0765: In the GUI can't use all the modifiers.
Bram Moolenaar <Bram@vim.org>
parents: 20007
diff changeset
948
8590a462ad46 patch 8.2.0765: In the GUI can't use all the modifiers.
Bram Moolenaar <Bram@vim.org>
parents: 20007
diff changeset
949 if (modifiers != 0)
8590a462ad46 patch 8.2.0765: In the GUI can't use all the modifiers.
Bram Moolenaar <Bram@vim.org>
parents: 20007
diff changeset
950 {
8590a462ad46 patch 8.2.0765: In the GUI can't use all the modifiers.
Bram Moolenaar <Bram@vim.org>
parents: 20007
diff changeset
951 string2[0] = CSI;
8590a462ad46 patch 8.2.0765: In the GUI can't use all the modifiers.
Bram Moolenaar <Bram@vim.org>
parents: 20007
diff changeset
952 string2[1] = KS_MODIFIER;
8590a462ad46 patch 8.2.0765: In the GUI can't use all the modifiers.
Bram Moolenaar <Bram@vim.org>
parents: 20007
diff changeset
953 string2[2] = modifiers;
8590a462ad46 patch 8.2.0765: In the GUI can't use all the modifiers.
Bram Moolenaar <Bram@vim.org>
parents: 20007
diff changeset
954 add_to_input_buf(string2, 3);
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
955 }
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
956
21570
f260c1411833 patch 8.2.1335: CTRL-C in the GUI doesn't interrupt
Bram Moolenaar <Bram@vim.org>
parents: 20951
diff changeset
957 // Check if the key interrupts.
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
958 {
21570
f260c1411833 patch 8.2.1335: CTRL-C in the GUI doesn't interrupt
Bram Moolenaar <Bram@vim.org>
parents: 20951
diff changeset
959 int int_ch = check_for_interrupt(key, modifiers);
f260c1411833 patch 8.2.1335: CTRL-C in the GUI doesn't interrupt
Bram Moolenaar <Bram@vim.org>
parents: 20951
diff changeset
960
f260c1411833 patch 8.2.1335: CTRL-C in the GUI doesn't interrupt
Bram Moolenaar <Bram@vim.org>
parents: 20951
diff changeset
961 if (int_ch != NUL)
f260c1411833 patch 8.2.1335: CTRL-C in the GUI doesn't interrupt
Bram Moolenaar <Bram@vim.org>
parents: 20951
diff changeset
962 {
f260c1411833 patch 8.2.1335: CTRL-C in the GUI doesn't interrupt
Bram Moolenaar <Bram@vim.org>
parents: 20951
diff changeset
963 trash_input_buf();
f260c1411833 patch 8.2.1335: CTRL-C in the GUI doesn't interrupt
Bram Moolenaar <Bram@vim.org>
parents: 20951
diff changeset
964 string[0] = int_ch;
f260c1411833 patch 8.2.1335: CTRL-C in the GUI doesn't interrupt
Bram Moolenaar <Bram@vim.org>
parents: 20951
diff changeset
965 len = 1;
f260c1411833 patch 8.2.1335: CTRL-C in the GUI doesn't interrupt
Bram Moolenaar <Bram@vim.org>
parents: 20951
diff changeset
966 }
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
967 }
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
968
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
969 add_to_input_buf(string, len);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
970
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
971 /*
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
972 * blank out the pointer if necessary
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
973 */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
974 if (p_mh)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
975 gui_mch_mousehide(TRUE);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
976
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
977 #if defined(FEAT_BEVAL_TIP)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
978 {
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
979 BalloonEval *be;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
980
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
981 if ((be = gui_mch_currently_showing_beval()) != NULL)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
982 gui_mch_unpost_balloon(be);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
983 }
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
984 #endif
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
985 theend:
18788
e1f4e9d78a6a patch 8.1.2383: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents: 18671
diff changeset
986 {} // some compilers need a statement here
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
987 #ifdef FEAT_XIM
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
988 if (string_alloced)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
989 XtFree((char *)string);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
990 #endif
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
991 }
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
992
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
993 static void
7823
bcef391c101c commit https://github.com/vim/vim/commit/68c2f638e65d914dc6e84eb7ce2624f08af525c0
Christian Brabandt <cb@256bit.org>
parents: 7803
diff changeset
994 gui_x11_mouse_cb(
bcef391c101c commit https://github.com/vim/vim/commit/68c2f638e65d914dc6e84eb7ce2624f08af525c0
Christian Brabandt <cb@256bit.org>
parents: 7803
diff changeset
995 Widget w UNUSED,
bcef391c101c commit https://github.com/vim/vim/commit/68c2f638e65d914dc6e84eb7ce2624f08af525c0
Christian Brabandt <cb@256bit.org>
parents: 7803
diff changeset
996 XtPointer dud UNUSED,
bcef391c101c commit https://github.com/vim/vim/commit/68c2f638e65d914dc6e84eb7ce2624f08af525c0
Christian Brabandt <cb@256bit.org>
parents: 7803
diff changeset
997 XEvent *event,
bcef391c101c commit https://github.com/vim/vim/commit/68c2f638e65d914dc6e84eb7ce2624f08af525c0
Christian Brabandt <cb@256bit.org>
parents: 7803
diff changeset
998 Boolean *dum UNUSED)
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
999 {
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1000 static XtIntervalId timer = (XtIntervalId)0;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1001 static int timed_out = TRUE;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1002
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1003 int button;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1004 int repeated_click = FALSE;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1005 int x, y;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1006 int_u x_modifiers;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1007 int_u vim_modifiers;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1008
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1009 if (event->type == MotionNotify)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1010 {
18788
e1f4e9d78a6a patch 8.1.2383: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents: 18671
diff changeset
1011 // Get the latest position, avoids lagging behind on a drag.
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1012 x = event->xmotion.x;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1013 y = event->xmotion.y;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1014 x_modifiers = event->xmotion.state;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1015 button = (x_modifiers & (Button1Mask | Button2Mask | Button3Mask))
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1016 ? MOUSE_DRAG : ' ';
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1017
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1018 /*
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1019 * if our pointer is currently hidden, then we should show it.
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1020 */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1021 gui_mch_mousehide(FALSE);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1022
18788
e1f4e9d78a6a patch 8.1.2383: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents: 18671
diff changeset
1023 if (button != MOUSE_DRAG) // just moving the rodent
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1024 {
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1025 #ifdef FEAT_MENU
18788
e1f4e9d78a6a patch 8.1.2383: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents: 18671
diff changeset
1026 if (dud) // moved in vimForm
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1027 y -= gui.menu_height;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1028 #endif
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1029 gui_mouse_moved(x, y);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1030 return;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1031 }
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1032 }
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1033 else
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1034 {
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1035 x = event->xbutton.x;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1036 y = event->xbutton.y;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1037 if (event->type == ButtonPress)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1038 {
18788
e1f4e9d78a6a patch 8.1.2383: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents: 18671
diff changeset
1039 // Handle multiple clicks
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1040 if (!timed_out)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1041 {
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1042 XtRemoveTimeOut(timer);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1043 repeated_click = TRUE;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1044 }
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1045 timed_out = FALSE;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1046 timer = XtAppAddTimeOut(app_context, (long_u)p_mouset,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1047 gui_x11_timer_cb, &timed_out);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1048 switch (event->xbutton.button)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1049 {
18788
e1f4e9d78a6a patch 8.1.2383: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents: 18671
diff changeset
1050 // keep in sync with gui_gtk_x11.c
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1051 case Button1: button = MOUSE_LEFT; break;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1052 case Button2: button = MOUSE_MIDDLE; break;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1053 case Button3: button = MOUSE_RIGHT; break;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1054 case Button4: button = MOUSE_4; break;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1055 case Button5: button = MOUSE_5; break;
7260
8ba562cb3e07 commit https://github.com/vim/vim/commit/88e484bf1b0afb5f2dec44f19335729578ace66a
Christian Brabandt <cb@256bit.org>
parents: 7109
diff changeset
1056 case 6: button = MOUSE_7; break;
8ba562cb3e07 commit https://github.com/vim/vim/commit/88e484bf1b0afb5f2dec44f19335729578ace66a
Christian Brabandt <cb@256bit.org>
parents: 7109
diff changeset
1057 case 7: button = MOUSE_6; break;
8ba562cb3e07 commit https://github.com/vim/vim/commit/88e484bf1b0afb5f2dec44f19335729578ace66a
Christian Brabandt <cb@256bit.org>
parents: 7109
diff changeset
1058 case 8: button = MOUSE_X1; break;
8ba562cb3e07 commit https://github.com/vim/vim/commit/88e484bf1b0afb5f2dec44f19335729578ace66a
Christian Brabandt <cb@256bit.org>
parents: 7109
diff changeset
1059 case 9: button = MOUSE_X2; break;
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1060 default:
18788
e1f4e9d78a6a patch 8.1.2383: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents: 18671
diff changeset
1061 return; // Unknown button
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1062 }
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1063 }
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1064 else if (event->type == ButtonRelease)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1065 button = MOUSE_RELEASE;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1066 else
18788
e1f4e9d78a6a patch 8.1.2383: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents: 18671
diff changeset
1067 return; // Unknown mouse event type
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1068
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1069 x_modifiers = event->xbutton.state;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1070 #if defined(FEAT_GUI_MOTIF) && defined(FEAT_MENU)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1071 last_mouse_event = event->xbutton;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1072 #endif
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1073 }
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1074
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1075 vim_modifiers = 0x0;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1076 if (x_modifiers & ShiftMask)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1077 vim_modifiers |= MOUSE_SHIFT;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1078 if (x_modifiers & ControlMask)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1079 vim_modifiers |= MOUSE_CTRL;
18788
e1f4e9d78a6a patch 8.1.2383: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents: 18671
diff changeset
1080 if (x_modifiers & Mod1Mask) // Alt or Meta key
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1081 vim_modifiers |= MOUSE_ALT;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1082
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1083 gui_send_mouse_event(button, x, y, repeated_click, vim_modifiers);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1084 }
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1085
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1086 /*
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1087 * End of call-back routines
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1088 */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1089
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1090 /*
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1091 * Parse the GUI related command-line arguments. Any arguments used are
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1092 * deleted from argv, and *argc is decremented accordingly. This is called
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1093 * when vim is started, whether or not the GUI has been started.
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1094 */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1095 void
7823
bcef391c101c commit https://github.com/vim/vim/commit/68c2f638e65d914dc6e84eb7ce2624f08af525c0
Christian Brabandt <cb@256bit.org>
parents: 7803
diff changeset
1096 gui_mch_prepare(int *argc, char **argv)
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1097 {
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1098 int arg;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1099 int i;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1100
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1101 /*
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1102 * Move all the entries in argv which are relevant to X into gui_argv.
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1103 */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1104 gui_argc = 0;
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
1105 gui_argv = LALLOC_MULT(char *, *argc);
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1106 if (gui_argv == NULL)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1107 return;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1108 gui_argv[gui_argc++] = argv[0];
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1109 arg = 1;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1110 while (arg < *argc)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1111 {
18788
e1f4e9d78a6a patch 8.1.2383: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents: 18671
diff changeset
1112 // Look for argv[arg] in cmdline_options[] table
1887
fc89a4f98a8b updated for version 7.2-184
vimboss
parents: 1827
diff changeset
1113 for (i = 0; i < (int)XtNumber(cmdline_options); i++)
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1114 if (strcmp(argv[arg], cmdline_options[i].option) == 0)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1115 break;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1116
1887
fc89a4f98a8b updated for version 7.2-184
vimboss
parents: 1827
diff changeset
1117 if (i < (int)XtNumber(cmdline_options))
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1118 {
18788
e1f4e9d78a6a patch 8.1.2383: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents: 18671
diff changeset
1119 // Remember finding "-rv" or "-reverse"
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1120 if (strcmp("-rv", argv[arg]) == 0
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1121 || strcmp("-reverse", argv[arg]) == 0)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1122 found_reverse_arg = TRUE;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1123 else if ((strcmp("-fn", argv[arg]) == 0
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1124 || strcmp("-font", argv[arg]) == 0)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1125 && arg + 1 < *argc)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1126 font_argument = argv[arg + 1];
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1127
18788
e1f4e9d78a6a patch 8.1.2383: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents: 18671
diff changeset
1128 // Found match in table, so move it into gui_argv
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1129 gui_argv[gui_argc++] = argv[arg];
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1130 if (--*argc > arg)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1131 {
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1132 mch_memmove(&argv[arg], &argv[arg + 1], (*argc - arg)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1133 * sizeof(char *));
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1134 if (cmdline_options[i].argKind != XrmoptionNoArg)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1135 {
18788
e1f4e9d78a6a patch 8.1.2383: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents: 18671
diff changeset
1136 // Move the options argument as well
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1137 gui_argv[gui_argc++] = argv[arg];
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1138 if (--*argc > arg)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1139 mch_memmove(&argv[arg], &argv[arg + 1], (*argc - arg)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1140 * sizeof(char *));
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1141 }
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1142 }
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1143 argv[*argc] = NULL;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1144 }
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1145 else
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1146 #ifdef FEAT_NETBEANS_INTG
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1147 if (strncmp("-nb", argv[arg], 3) == 0)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1148 {
18788
e1f4e9d78a6a patch 8.1.2383: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents: 18671
diff changeset
1149 gui.dofork = FALSE; // don't fork() when starting GUI
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1150 netbeansArg = argv[arg];
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1151 mch_memmove(&argv[arg], &argv[arg + 1],
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1152 (--*argc - arg) * sizeof(char *));
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1153 argv[*argc] = NULL;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1154 }
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1155 else
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1156 #endif
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1157 arg++;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1158 }
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1159 }
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1160
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1161 #ifndef XtSpecificationRelease
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1162 # define CARDINAL (Cardinal *)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1163 #else
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1164 # if XtSpecificationRelease == 4
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1165 # define CARDINAL (Cardinal *)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1166 # else
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1167 # define CARDINAL (int *)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1168 # endif
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1169 #endif
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1170
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1171 /*
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1172 * Check if the GUI can be started. Called before gvimrc is sourced.
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1173 * Return OK or FAIL.
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1174 */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1175 int
7823
bcef391c101c commit https://github.com/vim/vim/commit/68c2f638e65d914dc6e84eb7ce2624f08af525c0
Christian Brabandt <cb@256bit.org>
parents: 7803
diff changeset
1176 gui_mch_init_check(void)
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1177 {
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1178 #ifdef FEAT_XIM
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1179 XtSetLanguageProc(NULL, NULL, NULL);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1180 #endif
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1181 open_app_context();
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1182 if (app_context != NULL)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1183 gui.dpy = XtOpenDisplay(app_context, 0, VIM_NAME, VIM_CLASS,
51
8c25f10d49e7 updated for version 7.0028
vimboss
parents: 46
diff changeset
1184 cmdline_options, XtNumber(cmdline_options),
8c25f10d49e7 updated for version 7.0028
vimboss
parents: 46
diff changeset
1185 CARDINAL &gui_argc, gui_argv);
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1186
30310
029c59bf78f1 patch 9.0.0491: no good reason to build without the float feature
Bram Moolenaar <Bram@vim.org>
parents: 30003
diff changeset
1187 # if defined(LC_NUMERIC)
13925
eb264a775071 patch 8.0.1833: X11: ":echo 3.14" gives E806
Christian Brabandt <cb@256bit.org>
parents: 13858
diff changeset
1188 {
18788
e1f4e9d78a6a patch 8.1.2383: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents: 18671
diff changeset
1189 // The call to XtOpenDisplay() may have set the locale from the
e1f4e9d78a6a patch 8.1.2383: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents: 18671
diff changeset
1190 // environment. Set LC_NUMERIC to "C" to make sure that strtod() uses a
e1f4e9d78a6a patch 8.1.2383: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents: 18671
diff changeset
1191 // decimal point, not a comma.
13925
eb264a775071 patch 8.0.1833: X11: ":echo 3.14" gives E806
Christian Brabandt <cb@256bit.org>
parents: 13858
diff changeset
1192 char *p = setlocale(LC_NUMERIC, NULL);
eb264a775071 patch 8.0.1833: X11: ":echo 3.14" gives E806
Christian Brabandt <cb@256bit.org>
parents: 13858
diff changeset
1193
eb264a775071 patch 8.0.1833: X11: ":echo 3.14" gives E806
Christian Brabandt <cb@256bit.org>
parents: 13858
diff changeset
1194 if (p == NULL || strcmp(p, "C") != 0)
eb264a775071 patch 8.0.1833: X11: ":echo 3.14" gives E806
Christian Brabandt <cb@256bit.org>
parents: 13858
diff changeset
1195 setlocale(LC_NUMERIC, "C");
eb264a775071 patch 8.0.1833: X11: ":echo 3.14" gives E806
Christian Brabandt <cb@256bit.org>
parents: 13858
diff changeset
1196 }
eb264a775071 patch 8.0.1833: X11: ":echo 3.14" gives E806
Christian Brabandt <cb@256bit.org>
parents: 13858
diff changeset
1197 # endif
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1198 if (app_context == NULL || gui.dpy == NULL)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1199 {
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1200 gui.dying = TRUE;
26877
06a137af96f8 patch 8.2.3967: error messages are spread out
Bram Moolenaar <Bram@vim.org>
parents: 26865
diff changeset
1201 emsg(_(e_cannot_open_display));
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1202 return FAIL;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1203 }
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1204 return OK;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1205 }
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1206
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1207
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1208 #ifdef USE_XSMP
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1209 /*
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1210 * Handle XSMP processing, de-registering the attachment upon error
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1211 */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1212 static XtInputId _xsmp_xtinputid;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1213
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1214 static void
7823
bcef391c101c commit https://github.com/vim/vim/commit/68c2f638e65d914dc6e84eb7ce2624f08af525c0
Christian Brabandt <cb@256bit.org>
parents: 7803
diff changeset
1215 local_xsmp_handle_requests(
bcef391c101c commit https://github.com/vim/vim/commit/68c2f638e65d914dc6e84eb7ce2624f08af525c0
Christian Brabandt <cb@256bit.org>
parents: 7803
diff changeset
1216 XtPointer c UNUSED,
bcef391c101c commit https://github.com/vim/vim/commit/68c2f638e65d914dc6e84eb7ce2624f08af525c0
Christian Brabandt <cb@256bit.org>
parents: 7803
diff changeset
1217 int *s UNUSED,
bcef391c101c commit https://github.com/vim/vim/commit/68c2f638e65d914dc6e84eb7ce2624f08af525c0
Christian Brabandt <cb@256bit.org>
parents: 7803
diff changeset
1218 XtInputId *i UNUSED)
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1219 {
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1220 if (xsmp_handle_requests() == FAIL)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1221 XtRemoveInput(_xsmp_xtinputid);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1222 }
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1223 #endif
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1224
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1225
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1226 /*
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1227 * Initialise the X GUI. Create all the windows, set up all the call-backs etc.
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1228 * Returns OK for success, FAIL when the GUI can't be started.
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1229 */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1230 int
7823
bcef391c101c commit https://github.com/vim/vim/commit/68c2f638e65d914dc6e84eb7ce2624f08af525c0
Christian Brabandt <cb@256bit.org>
parents: 7803
diff changeset
1231 gui_mch_init(void)
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1232 {
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1233 XtGCMask gc_mask;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1234 XGCValues gc_vals;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1235 int x, y, mask;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1236 unsigned w, h;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1237
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1238 #if 0
18788
e1f4e9d78a6a patch 8.1.2383: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents: 18671
diff changeset
1239 // Uncomment this to enable synchronous mode for debugging
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1240 XSynchronize(gui.dpy, True);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1241 #endif
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1242
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1243 vimShell = XtVaAppCreateShell(VIM_NAME, VIM_CLASS,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1244 applicationShellWidgetClass, gui.dpy, NULL);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1245
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1246 /*
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1247 * Get the application resources
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1248 */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1249 XtVaGetApplicationResources(vimShell, (XtPointer)&gui,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1250 vim_resources, XtNumber(vim_resources), NULL);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1251
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1252 gui.scrollbar_height = gui.scrollbar_width;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1253
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1254 /*
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1255 * Get the colors ourselves. Using the automatic conversion doesn't
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1256 * handle looking for approximate colors.
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1257 */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1258 gui.menu_fg_pixel = gui_get_color((char_u *)gui.rsrc_menu_fg_name);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1259 gui.menu_bg_pixel = gui_get_color((char_u *)gui.rsrc_menu_bg_name);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1260 gui.scroll_fg_pixel = gui_get_color((char_u *)gui.rsrc_scroll_fg_name);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1261 gui.scroll_bg_pixel = gui_get_color((char_u *)gui.rsrc_scroll_bg_name);
12871
1a450ce6980c patch 8.0.1312: balloon_show() only works in terminal when compiled with GUI
Christian Brabandt <cb@256bit.org>
parents: 12317
diff changeset
1262 #ifdef FEAT_BEVAL_GUI
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1263 gui.tooltip_fg_pixel = gui_get_color((char_u *)gui.rsrc_tooltip_fg_name);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1264 gui.tooltip_bg_pixel = gui_get_color((char_u *)gui.rsrc_tooltip_bg_name);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1265 #endif
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1266
18788
e1f4e9d78a6a patch 8.1.2383: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents: 18671
diff changeset
1267 // Set default foreground and background colours
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1268 gui.norm_pixel = gui.def_norm_pixel;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1269 gui.back_pixel = gui.def_back_pixel;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1270
18788
e1f4e9d78a6a patch 8.1.2383: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents: 18671
diff changeset
1271 // Check if reverse video needs to be applied (on Sun it's done by X)
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1272 if (gui.rsrc_rev_video && gui_get_lightness(gui.back_pixel)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1273 > gui_get_lightness(gui.norm_pixel))
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1274 {
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1275 gui.norm_pixel = gui.def_back_pixel;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1276 gui.back_pixel = gui.def_norm_pixel;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1277 gui.def_norm_pixel = gui.norm_pixel;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1278 gui.def_back_pixel = gui.back_pixel;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1279 }
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1280
18788
e1f4e9d78a6a patch 8.1.2383: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents: 18671
diff changeset
1281 // Get the colors from the "Normal", "Tooltip", "Scrollbar" and "Menu"
e1f4e9d78a6a patch 8.1.2383: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents: 18671
diff changeset
1282 // group (set in syntax.c or in a vimrc file)
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1283 set_normal_colors();
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1284
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1285 /*
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1286 * Check that none of the colors are the same as the background color
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1287 */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1288 gui_check_colors();
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1289
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1290 /*
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1291 * Set up the GCs. The font attributes will be set in gui_init_font().
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1292 */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1293 gc_mask = GCForeground | GCBackground;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1294 gc_vals.foreground = gui.norm_pixel;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1295 gc_vals.background = gui.back_pixel;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1296 gui.text_gc = XtGetGC(vimShell, gc_mask, &gc_vals);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1297
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1298 gc_vals.foreground = gui.back_pixel;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1299 gc_vals.background = gui.norm_pixel;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1300 gui.back_gc = XtGetGC(vimShell, gc_mask, &gc_vals);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1301
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1302 gc_mask |= GCFunction;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1303 gc_vals.foreground = gui.norm_pixel ^ gui.back_pixel;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1304 gc_vals.background = gui.norm_pixel ^ gui.back_pixel;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1305 gc_vals.function = GXxor;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1306 gui.invert_gc = XtGetGC(vimShell, gc_mask, &gc_vals);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1307
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1308 gui.visibility = VisibilityUnobscured;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1309 x11_setup_atoms(gui.dpy);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1310
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1311 if (gui_win_x != -1 && gui_win_y != -1)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1312 gui_mch_set_winpos(gui_win_x, gui_win_y);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1313
18788
e1f4e9d78a6a patch 8.1.2383: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents: 18671
diff changeset
1314 // Now adapt the supplied(?) geometry-settings
e1f4e9d78a6a patch 8.1.2383: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents: 18671
diff changeset
1315 // Added by Kjetil Jacobsen <kjetilja@stud.cs.uit.no>
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1316 if (gui.geom != NULL && *gui.geom != NUL)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1317 {
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1318 mask = XParseGeometry((char *)gui.geom, &x, &y, &w, &h);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1319 if (mask & WidthValue)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1320 Columns = w;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1321 if (mask & HeightValue)
857
b933657f7c9d updated for version 7.0g01
vimboss
parents: 834
diff changeset
1322 {
1887
fc89a4f98a8b updated for version 7.2-184
vimboss
parents: 1827
diff changeset
1323 if (p_window > (long)h - 1 || !option_was_set((char_u *)"window"))
857
b933657f7c9d updated for version 7.0g01
vimboss
parents: 834
diff changeset
1324 p_window = h - 1;
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1325 Rows = h;
857
b933657f7c9d updated for version 7.0g01
vimboss
parents: 834
diff changeset
1326 }
5086
6ddc1785c4ff updated for version 7.3.1286
Bram Moolenaar <bram@vim.org>
parents: 4885
diff changeset
1327 limit_screen_size();
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1328 /*
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1329 * Set the (x,y) position of the main window only if specified in the
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1330 * users geometry, so we get good defaults when they don't. This needs
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1331 * to be done before the shell is popped up.
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1332 */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1333 if (mask & (XValue|YValue))
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1334 XtVaSetValues(vimShell, XtNgeometry, gui.geom, NULL);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1335 }
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1336
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1337 gui_x11_create_widgets();
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1338
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1339 /*
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1340 * Add an icon to Vim (Marcel Douben: 11 May 1998).
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1341 */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1342 if (vim_strchr(p_go, GO_ICON) != NULL)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1343 {
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1344 #ifndef HAVE_XPM
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1345 # include "vim_icon.xbm"
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1346 # include "vim_mask.xbm"
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1347
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1348 Arg arg[2];
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1349
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1350 XtSetArg(arg[0], XtNiconPixmap,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1351 XCreateBitmapFromData(gui.dpy,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1352 DefaultRootWindow(gui.dpy),
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1353 (char *)vim_icon_bits,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1354 vim_icon_width,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1355 vim_icon_height));
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1356 XtSetArg(arg[1], XtNiconMask,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1357 XCreateBitmapFromData(gui.dpy,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1358 DefaultRootWindow(gui.dpy),
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1359 (char *)vim_mask_icon_bits,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1360 vim_mask_icon_width,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1361 vim_mask_icon_height));
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1362 XtSetValues(vimShell, arg, (Cardinal)2);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1363 #else
18788
e1f4e9d78a6a patch 8.1.2383: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents: 18671
diff changeset
1364 // Use Pixmaps, looking much nicer.
e1f4e9d78a6a patch 8.1.2383: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents: 18671
diff changeset
1365
e1f4e9d78a6a patch 8.1.2383: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents: 18671
diff changeset
1366 // If you get an error message here, you still need to unpack the runtime
e1f4e9d78a6a patch 8.1.2383: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents: 18671
diff changeset
1367 // archive!
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1368 # ifdef magick
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1369 # undef magick
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1370 # endif
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1371 # define magick vim32x32
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1372 # include "../runtime/vim32x32.xpm"
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1373 # undef magick
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1374 # define magick vim16x16
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1375 # include "../runtime/vim16x16.xpm"
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1376 # undef magick
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1377 # define magick vim48x48
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1378 # include "../runtime/vim48x48.xpm"
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1379 # undef magick
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1380
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1381 static Pixmap icon = 0;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1382 static Pixmap icon_mask = 0;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1383 static char **magick = vim32x32;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1384 Window root_window;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1385 XIconSize *size;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1386 int number_sizes;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1387 Display *dsp;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1388 Screen *scr;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1389 XpmAttributes attr;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1390 Colormap cmap;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1391
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1392 /*
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1393 * Adjust the icon to the preferences of the actual window manager.
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1394 */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1395 root_window = XRootWindowOfScreen(XtScreen(vimShell));
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1396 if (XGetIconSizes(XtDisplay(vimShell), root_window,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1397 &size, &number_sizes) != 0)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1398 {
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1399 if (number_sizes > 0)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1400 {
5196
ba9a11fe2563 updated for version 7.4a.024
Bram Moolenaar <bram@vim.org>
parents: 5086
diff changeset
1401 if (size->max_height >= 48 && size->max_width >= 48)
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1402 magick = vim48x48;
5196
ba9a11fe2563 updated for version 7.4a.024
Bram Moolenaar <bram@vim.org>
parents: 5086
diff changeset
1403 else if (size->max_height >= 32 && size->max_width >= 32)
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1404 magick = vim32x32;
5196
ba9a11fe2563 updated for version 7.4a.024
Bram Moolenaar <bram@vim.org>
parents: 5086
diff changeset
1405 else if (size->max_height >= 16 && size->max_width >= 16)
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1406 magick = vim16x16;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1407 }
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1408 }
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1409
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1410 dsp = XtDisplay(vimShell);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1411 scr = XtScreen(vimShell);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1412
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1413 cmap = DefaultColormap(dsp, DefaultScreen(dsp));
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1414 XtVaSetValues(vimShell, XtNcolormap, cmap, NULL);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1415
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1416 attr.valuemask = 0L;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1417 attr.valuemask = XpmCloseness | XpmReturnPixels | XpmColormap | XpmDepth;
18788
e1f4e9d78a6a patch 8.1.2383: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents: 18671
diff changeset
1418 attr.closeness = 65535; // accuracy isn't crucial
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1419 attr.colormap = cmap;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1420 attr.depth = DefaultDepthOfScreen(scr);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1421
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1422 if (!icon)
1605
7d127d580b6d updated for version 7.1-318
vimboss
parents: 1226
diff changeset
1423 {
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1424 XpmCreatePixmapFromData(dsp, root_window, magick, &icon,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1425 &icon_mask, &attr);
1605
7d127d580b6d updated for version 7.1-318
vimboss
parents: 1226
diff changeset
1426 XpmFreeAttributes(&attr);
7d127d580b6d updated for version 7.1-318
vimboss
parents: 1226
diff changeset
1427 }
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1428
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1429 XtVaSetValues(vimShell, XmNiconPixmap, icon, XmNiconMask, icon_mask, NULL);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1430 #endif
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1431 }
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1432
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1433 if (gui.color_approx)
26915
3631d2deb36c patch 8.2.3986: error messages are spread out
Bram Moolenaar <Bram@vim.org>
parents: 26893
diff changeset
1434 emsg(_(e_cannot_allocate_colormap_entry_some_colors_may_be_incorrect));
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1435
12871
1a450ce6980c patch 8.0.1312: balloon_show() only works in terminal when compiled with GUI
Christian Brabandt <cb@256bit.org>
parents: 12317
diff changeset
1436 #ifdef FEAT_BEVAL_GUI
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1437 gui_init_tooltip_font();
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1438 #endif
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1439 #ifdef FEAT_MENU
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1440 gui_init_menu_font();
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1441 #endif
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1442
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1443 #ifdef USE_XSMP
18788
e1f4e9d78a6a patch 8.1.2383: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents: 18671
diff changeset
1444 // Attach listener on ICE connection
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1445 if (-1 != xsmp_icefd)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1446 _xsmp_xtinputid = XtAppAddInput(app_context, xsmp_icefd,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1447 (XtPointer)XtInputReadMask, local_xsmp_handle_requests, NULL);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1448 #endif
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1449
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1450 return OK;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1451 }
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1452
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1453 /*
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1454 * Called when starting the GUI fails after calling gui_mch_init().
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1455 */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1456 void
7823
bcef391c101c commit https://github.com/vim/vim/commit/68c2f638e65d914dc6e84eb7ce2624f08af525c0
Christian Brabandt <cb@256bit.org>
parents: 7803
diff changeset
1457 gui_mch_uninit(void)
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1458 {
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1459 gui_x11_destroy_widgets();
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1460 XtCloseDisplay(gui.dpy);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1461 gui.dpy = NULL;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1462 vimShell = (Widget)0;
13244
ac42c4b11dbc patch 8.0.1496: clearing a pointer takes two lines
Christian Brabandt <cb@256bit.org>
parents: 13152
diff changeset
1463 VIM_CLEAR(gui_argv);
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1464 }
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1465
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1466 /*
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1467 * Called when the foreground or background color has been changed.
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1468 */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1469 void
7823
bcef391c101c commit https://github.com/vim/vim/commit/68c2f638e65d914dc6e84eb7ce2624f08af525c0
Christian Brabandt <cb@256bit.org>
parents: 7803
diff changeset
1470 gui_mch_new_colors(void)
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1471 {
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1472 long_u gc_mask;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1473 XGCValues gc_vals;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1474
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1475 gc_mask = GCForeground | GCBackground;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1476 gc_vals.foreground = gui.norm_pixel;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1477 gc_vals.background = gui.back_pixel;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1478 if (gui.text_gc != NULL)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1479 XChangeGC(gui.dpy, gui.text_gc, gc_mask, &gc_vals);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1480
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1481 gc_vals.foreground = gui.back_pixel;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1482 gc_vals.background = gui.norm_pixel;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1483 if (gui.back_gc != NULL)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1484 XChangeGC(gui.dpy, gui.back_gc, gc_mask, &gc_vals);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1485
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1486 gc_mask |= GCFunction;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1487 gc_vals.foreground = gui.norm_pixel ^ gui.back_pixel;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1488 gc_vals.background = gui.norm_pixel ^ gui.back_pixel;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1489 gc_vals.function = GXxor;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1490 if (gui.invert_gc != NULL)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1491 XChangeGC(gui.dpy, gui.invert_gc, gc_mask, &gc_vals);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1492
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1493 gui_x11_set_back_color();
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1494 }
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1495
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1496 /*
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1497 * Open the GUI window which was created by a call to gui_mch_init().
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1498 */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1499 int
7823
bcef391c101c commit https://github.com/vim/vim/commit/68c2f638e65d914dc6e84eb7ce2624f08af525c0
Christian Brabandt <cb@256bit.org>
parents: 7803
diff changeset
1500 gui_mch_open(void)
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1501 {
18788
e1f4e9d78a6a patch 8.1.2383: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents: 18671
diff changeset
1502 // Actually open the window
557
862863033fdd updated for version 7.0158
vimboss
parents: 474
diff changeset
1503 XtRealizeWidget(vimShell);
862863033fdd updated for version 7.0158
vimboss
parents: 474
diff changeset
1504 XtManageChild(XtNameToWidget(vimShell, "*vimForm"));
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1505
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1506 gui.wid = gui_x11_get_wid();
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1507 gui.blank_pointer = gui_x11_create_blank_mouse();
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1508
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1509 /*
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1510 * Add a callback for the Close item on the window managers menu, and the
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1511 * save-yourself event.
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1512 */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1513 wm_atoms[SAVE_YOURSELF_IDX] =
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1514 XInternAtom(gui.dpy, "WM_SAVE_YOURSELF", False);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1515 wm_atoms[DELETE_WINDOW_IDX] =
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1516 XInternAtom(gui.dpy, "WM_DELETE_WINDOW", False);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1517 XSetWMProtocols(gui.dpy, XtWindow(vimShell), wm_atoms, 2);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1518 XtAddEventHandler(vimShell, NoEventMask, True, gui_x11_wm_protocol_handler,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1519 NULL);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1520 #ifdef HAVE_X11_XMU_EDITRES_H
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1521 /*
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1522 * Enable editres protocol (see "man editres").
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1523 * Usually will need to add -lXmu to the linker line as well.
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1524 */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1525 XtAddEventHandler(vimShell, (EventMask)0, True, _XEditResCheckMessages,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1526 (XtPointer)NULL);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1527 #endif
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1528
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1529 #ifdef FEAT_CLIENTSERVER
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1530 if (serverName == NULL && serverDelayedStartName != NULL)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1531 {
18788
e1f4e9d78a6a patch 8.1.2383: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents: 18671
diff changeset
1532 // This is a :gui command in a plain vim with no previous server
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1533 commWindow = XtWindow(vimShell);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1534 (void)serverRegisterName(gui.dpy, serverDelayedStartName);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1535 }
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1536 else
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1537 {
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1538 /*
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1539 * Cannot handle "widget-less" windows with XtProcessEvent() we'll
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1540 * have to change the "server" registration to that of the main window
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1541 * If we have not registered a name yet, remember the window
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1542 */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1543 serverChangeRegisteredWindow(gui.dpy, XtWindow(vimShell));
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1544 }
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1545 XtAddEventHandler(vimShell, PropertyChangeMask, False,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1546 gui_x11_send_event_handler, NULL);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1547 #endif
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1548
18788
e1f4e9d78a6a patch 8.1.2383: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents: 18671
diff changeset
1549 // 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: 18671
diff changeset
1550 // changed them)
e1f4e9d78a6a patch 8.1.2383: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents: 18671
diff changeset
1551 highlight_gui_started(); // re-init colors and fonts
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1552
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1553 #ifdef FEAT_XIM
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1554 xim_init();
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1555 #endif
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1556
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1557 return OK;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1558 }
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1559
12871
1a450ce6980c patch 8.0.1312: balloon_show() only works in terminal when compiled with GUI
Christian Brabandt <cb@256bit.org>
parents: 12317
diff changeset
1560 #if defined(FEAT_BEVAL_GUI) || defined(PROTO)
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1561 /*
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1562 * Convert the tooltip fontset name to an XFontSet.
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1563 */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1564 void
7823
bcef391c101c commit https://github.com/vim/vim/commit/68c2f638e65d914dc6e84eb7ce2624f08af525c0
Christian Brabandt <cb@256bit.org>
parents: 7803
diff changeset
1565 gui_init_tooltip_font(void)
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1566 {
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1567 XrmValue from, to;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1568
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1569 from.addr = (char *)gui.rsrc_tooltip_font_name;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1570 from.size = strlen(from.addr);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1571 to.addr = (XtPointer)&gui.tooltip_fontset;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1572 to.size = sizeof(XFontSet);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1573
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1574 if (XtConvertAndStore(vimShell, XtRString, &from, XtRFontSet, &to) == False)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1575 {
18788
e1f4e9d78a6a patch 8.1.2383: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents: 18671
diff changeset
1576 // Failed. What to do?
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1577 }
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1578 }
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1579 #endif
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1580
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1581 #if defined(FEAT_MENU) || defined(PROTO)
18788
e1f4e9d78a6a patch 8.1.2383: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents: 18671
diff changeset
1582 // Convert the menu font/fontset name to an XFontStruct/XFontset
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1583 void
7823
bcef391c101c commit https://github.com/vim/vim/commit/68c2f638e65d914dc6e84eb7ce2624f08af525c0
Christian Brabandt <cb@256bit.org>
parents: 7803
diff changeset
1584 gui_init_menu_font(void)
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1585 {
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1586 XrmValue from, to;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1587
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1588 #ifdef FONTSET_ALWAYS
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1589 from.addr = (char *)gui.rsrc_menu_font_name;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1590 from.size = strlen(from.addr);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1591 to.addr = (XtPointer)&gui.menu_fontset;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1592 to.size = sizeof(GuiFontset);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1593
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1594 if (XtConvertAndStore(vimShell, XtRString, &from, XtRFontSet, &to) == False)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1595 {
18788
e1f4e9d78a6a patch 8.1.2383: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents: 18671
diff changeset
1596 // Failed. What to do?
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1597 }
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1598 #else
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1599 from.addr = (char *)gui.rsrc_menu_font_name;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1600 from.size = strlen(from.addr);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1601 to.addr = (XtPointer)&gui.menu_font;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1602 to.size = sizeof(GuiFont);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1603
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1604 if (XtConvertAndStore(vimShell, XtRString, &from, XtRFontStruct, &to) == False)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1605 {
18788
e1f4e9d78a6a patch 8.1.2383: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents: 18671
diff changeset
1606 // Failed. What to do?
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1607 }
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1608 #endif
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1609 }
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1610 #endif
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1611
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1612 void
7823
bcef391c101c commit https://github.com/vim/vim/commit/68c2f638e65d914dc6e84eb7ce2624f08af525c0
Christian Brabandt <cb@256bit.org>
parents: 7803
diff changeset
1613 gui_mch_exit(int rc UNUSED)
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1614 {
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1615 #if 0
18788
e1f4e9d78a6a patch 8.1.2383: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents: 18671
diff changeset
1616 // Lesstif gives an error message here, and so does Solaris. The man page
e1f4e9d78a6a patch 8.1.2383: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents: 18671
diff changeset
1617 // says that this isn't needed when exiting, so just skip it.
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1618 XtCloseDisplay(gui.dpy);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1619 #endif
13244
ac42c4b11dbc patch 8.0.1496: clearing a pointer takes two lines
Christian Brabandt <cb@256bit.org>
parents: 13152
diff changeset
1620 VIM_CLEAR(gui_argv);
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1621 }
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1622
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1623 /*
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1624 * Get the position of the top left corner of the window.
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1625 */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1626 int
7825
7898da204b98 commit https://github.com/vim/vim/commit/02fdaeaa697fb5af4ba7fee6e209b3c2c825bb4f
Christian Brabandt <cb@256bit.org>
parents: 7823
diff changeset
1627 gui_mch_get_winpos(int *x, int *y)
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1628 {
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1629 Dimension xpos, ypos;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1630
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1631 XtVaGetValues(vimShell,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1632 XtNx, &xpos,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1633 XtNy, &ypos,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1634 NULL);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1635 *x = xpos;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1636 *y = ypos;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1637 return OK;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1638 }
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1639
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1640 /*
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1641 * Set the position of the top left corner of the window to the given
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1642 * coordinates.
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1643 */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1644 void
7825
7898da204b98 commit https://github.com/vim/vim/commit/02fdaeaa697fb5af4ba7fee6e209b3c2c825bb4f
Christian Brabandt <cb@256bit.org>
parents: 7823
diff changeset
1645 gui_mch_set_winpos(int x, int y)
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1646 {
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1647 XtVaSetValues(vimShell,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1648 XtNx, x,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1649 XtNy, y,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1650 NULL);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1651 }
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1652
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1653 void
7823
bcef391c101c commit https://github.com/vim/vim/commit/68c2f638e65d914dc6e84eb7ce2624f08af525c0
Christian Brabandt <cb@256bit.org>
parents: 7803
diff changeset
1654 gui_mch_set_shellsize(
bcef391c101c commit https://github.com/vim/vim/commit/68c2f638e65d914dc6e84eb7ce2624f08af525c0
Christian Brabandt <cb@256bit.org>
parents: 7803
diff changeset
1655 int width,
bcef391c101c commit https://github.com/vim/vim/commit/68c2f638e65d914dc6e84eb7ce2624f08af525c0
Christian Brabandt <cb@256bit.org>
parents: 7803
diff changeset
1656 int height,
bcef391c101c commit https://github.com/vim/vim/commit/68c2f638e65d914dc6e84eb7ce2624f08af525c0
Christian Brabandt <cb@256bit.org>
parents: 7803
diff changeset
1657 int min_width,
bcef391c101c commit https://github.com/vim/vim/commit/68c2f638e65d914dc6e84eb7ce2624f08af525c0
Christian Brabandt <cb@256bit.org>
parents: 7803
diff changeset
1658 int min_height,
bcef391c101c commit https://github.com/vim/vim/commit/68c2f638e65d914dc6e84eb7ce2624f08af525c0
Christian Brabandt <cb@256bit.org>
parents: 7803
diff changeset
1659 int base_width,
bcef391c101c commit https://github.com/vim/vim/commit/68c2f638e65d914dc6e84eb7ce2624f08af525c0
Christian Brabandt <cb@256bit.org>
parents: 7803
diff changeset
1660 int base_height,
bcef391c101c commit https://github.com/vim/vim/commit/68c2f638e65d914dc6e84eb7ce2624f08af525c0
Christian Brabandt <cb@256bit.org>
parents: 7803
diff changeset
1661 int direction UNUSED)
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1662 {
51
8c25f10d49e7 updated for version 7.0028
vimboss
parents: 46
diff changeset
1663 #ifdef FEAT_XIM
8c25f10d49e7 updated for version 7.0028
vimboss
parents: 46
diff changeset
1664 height += xim_get_status_area_height(),
8c25f10d49e7 updated for version 7.0028
vimboss
parents: 46
diff changeset
1665 #endif
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1666 XtVaSetValues(vimShell,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1667 XtNwidthInc, gui.char_width,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1668 XtNheightInc, gui.char_height,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1669 #if defined(XtSpecificationRelease) && XtSpecificationRelease >= 4
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1670 XtNbaseWidth, base_width,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1671 XtNbaseHeight, base_height,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1672 #endif
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1673 XtNminWidth, min_width,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1674 XtNminHeight, min_height,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1675 XtNwidth, width,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1676 XtNheight, height,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1677 NULL);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1678 }
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1679
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1680 /*
445
c773cb978acf updated for version 7.0116
vimboss
parents: 206
diff changeset
1681 * Allow 10 pixels for horizontal borders, 'guiheadroom' for vertical borders.
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1682 * Is there no way in X to find out how wide the borders really are?
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1683 */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1684 void
7823
bcef391c101c commit https://github.com/vim/vim/commit/68c2f638e65d914dc6e84eb7ce2624f08af525c0
Christian Brabandt <cb@256bit.org>
parents: 7803
diff changeset
1685 gui_mch_get_screen_dimensions(
bcef391c101c commit https://github.com/vim/vim/commit/68c2f638e65d914dc6e84eb7ce2624f08af525c0
Christian Brabandt <cb@256bit.org>
parents: 7803
diff changeset
1686 int *screen_w,
bcef391c101c commit https://github.com/vim/vim/commit/68c2f638e65d914dc6e84eb7ce2624f08af525c0
Christian Brabandt <cb@256bit.org>
parents: 7803
diff changeset
1687 int *screen_h)
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1688 {
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1689 *screen_w = DisplayWidth(gui.dpy, DefaultScreen(gui.dpy)) - 10;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1690 *screen_h = DisplayHeight(gui.dpy, DefaultScreen(gui.dpy)) - p_ghr;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1691 }
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1692
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1693 /*
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1694 * Initialise vim to use the font "font_name". If it's NULL, pick a default
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1695 * font.
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1696 * If "fontset" is TRUE, load the "font_name" as a fontset.
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1697 * Return FAIL if the font could not be loaded, OK otherwise.
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1698 */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1699 int
7823
bcef391c101c commit https://github.com/vim/vim/commit/68c2f638e65d914dc6e84eb7ce2624f08af525c0
Christian Brabandt <cb@256bit.org>
parents: 7803
diff changeset
1700 gui_mch_init_font(
bcef391c101c commit https://github.com/vim/vim/commit/68c2f638e65d914dc6e84eb7ce2624f08af525c0
Christian Brabandt <cb@256bit.org>
parents: 7803
diff changeset
1701 char_u *font_name,
bcef391c101c commit https://github.com/vim/vim/commit/68c2f638e65d914dc6e84eb7ce2624f08af525c0
Christian Brabandt <cb@256bit.org>
parents: 7803
diff changeset
1702 int do_fontset UNUSED)
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1703 {
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1704 XFontStruct *font = NULL;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1705
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1706 #ifdef FEAT_XFONTSET
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1707 XFontSet fontset = NULL;
46
46d39f2eff86 updated for version 7.0027
vimboss
parents: 39
diff changeset
1708 #endif
46d39f2eff86 updated for version 7.0027
vimboss
parents: 39
diff changeset
1709
46d39f2eff86 updated for version 7.0027
vimboss
parents: 39
diff changeset
1710 #ifdef FEAT_GUI_MOTIF
18788
e1f4e9d78a6a patch 8.1.2383: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents: 18671
diff changeset
1711 // A font name equal "*" is indicating, that we should activate the font
e1f4e9d78a6a patch 8.1.2383: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents: 18671
diff changeset
1712 // selection dialogue to get a new font name. So let us do it here.
46
46d39f2eff86 updated for version 7.0027
vimboss
parents: 39
diff changeset
1713 if (font_name != NULL && STRCMP(font_name, "*") == 0)
24266
982786f8454d patch 8.2.2674: Motif: cancelling the font dialog resets the font
Bram Moolenaar <Bram@vim.org>
parents: 23408
diff changeset
1714 {
46
46d39f2eff86 updated for version 7.0027
vimboss
parents: 39
diff changeset
1715 font_name = gui_xm_select_font(hl_get_font_name());
24266
982786f8454d patch 8.2.2674: Motif: cancelling the font dialog resets the font
Bram Moolenaar <Bram@vim.org>
parents: 23408
diff changeset
1716
982786f8454d patch 8.2.2674: Motif: cancelling the font dialog resets the font
Bram Moolenaar <Bram@vim.org>
parents: 23408
diff changeset
1717 // Do not reset to default font except on GUI startup.
982786f8454d patch 8.2.2674: Motif: cancelling the font dialog resets the font
Bram Moolenaar <Bram@vim.org>
parents: 23408
diff changeset
1718 if (font_name == NULL && !gui.starting)
982786f8454d patch 8.2.2674: Motif: cancelling the font dialog resets the font
Bram Moolenaar <Bram@vim.org>
parents: 23408
diff changeset
1719 return OK;
982786f8454d patch 8.2.2674: Motif: cancelling the font dialog resets the font
Bram Moolenaar <Bram@vim.org>
parents: 23408
diff changeset
1720 }
46
46d39f2eff86 updated for version 7.0027
vimboss
parents: 39
diff changeset
1721 #endif
46d39f2eff86 updated for version 7.0027
vimboss
parents: 39
diff changeset
1722
46d39f2eff86 updated for version 7.0027
vimboss
parents: 39
diff changeset
1723 #ifdef FEAT_XFONTSET
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1724 if (do_fontset)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1725 {
18788
e1f4e9d78a6a patch 8.1.2383: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents: 18671
diff changeset
1726 // If 'guifontset' is set, VIM treats all font specifications as if
e1f4e9d78a6a patch 8.1.2383: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents: 18671
diff changeset
1727 // they were fontsets, and 'guifontset' becomes the default.
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1728 if (font_name != NULL)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1729 {
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1730 fontset = (XFontSet)gui_mch_get_fontset(font_name, FALSE, TRUE);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1731 if (fontset == NULL)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1732 return FAIL;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1733 }
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1734 }
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1735 else
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1736 #endif
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1737 {
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1738 if (font_name == NULL)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1739 {
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1740 /*
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1741 * If none of the fonts in 'font' could be loaded, try the one set
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1742 * in the X resource, and finally just try using DFLT_FONT, which
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1743 * will hopefully always be there.
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1744 */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1745 font_name = gui.rsrc_font_name;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1746 font = (XFontStruct *)gui_mch_get_font(font_name, FALSE);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1747 if (font == NULL)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1748 font_name = (char_u *)DFLT_FONT;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1749 }
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1750 if (font == NULL)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1751 font = (XFontStruct *)gui_mch_get_font(font_name, FALSE);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1752 if (font == NULL)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1753 return FAIL;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1754 }
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1755
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1756 gui_mch_free_font(gui.norm_font);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1757 #ifdef FEAT_XFONTSET
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1758 gui_mch_free_fontset(gui.fontset);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1759
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1760 if (fontset != NULL)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1761 {
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1762 gui.norm_font = NOFONT;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1763 gui.fontset = (GuiFontset)fontset;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1764 gui.char_width = fontset_width(fontset);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1765 gui.char_height = fontset_height(fontset) + p_linespace;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1766 gui.char_ascent = fontset_ascent(fontset) + p_linespace / 2;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1767 }
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1768 else
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1769 #endif
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1770 {
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1771 gui.norm_font = (GuiFont)font;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1772 #ifdef FEAT_XFONTSET
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1773 gui.fontset = NOFONTSET;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1774 #endif
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1775 gui.char_width = font->max_bounds.width;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1776 gui.char_height = font->ascent + font->descent + p_linespace;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1777 gui.char_ascent = font->ascent + p_linespace / 2;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1778 }
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1779
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1780 hl_set_font_name(font_name);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1781
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1782 /*
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1783 * Try to load other fonts for bold, italic, and bold-italic.
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1784 * We should also try to work out what font to use for these when they are
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1785 * not specified by X resources, but we don't yet.
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1786 */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1787 if (font_name == gui.rsrc_font_name)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1788 {
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1789 if (gui.bold_font == NOFONT
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1790 && gui.rsrc_bold_font_name != NULL
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1791 && *gui.rsrc_bold_font_name != NUL)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1792 gui.bold_font = gui_mch_get_font(gui.rsrc_bold_font_name, FALSE);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1793 if (gui.ital_font == NOFONT
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1794 && gui.rsrc_ital_font_name != NULL
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1795 && *gui.rsrc_ital_font_name != NUL)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1796 gui.ital_font = gui_mch_get_font(gui.rsrc_ital_font_name, FALSE);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1797 if (gui.boldital_font == NOFONT
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1798 && gui.rsrc_boldital_font_name != NULL
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1799 && *gui.rsrc_boldital_font_name != NUL)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1800 gui.boldital_font = gui_mch_get_font(gui.rsrc_boldital_font_name,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1801 FALSE);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1802 }
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1803 else
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1804 {
18788
e1f4e9d78a6a patch 8.1.2383: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents: 18671
diff changeset
1805 // When not using the font specified by the resources, also don't use
e1f4e9d78a6a patch 8.1.2383: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents: 18671
diff changeset
1806 // the bold/italic fonts, otherwise setting 'guifont' will look very
e1f4e9d78a6a patch 8.1.2383: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents: 18671
diff changeset
1807 // strange.
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1808 if (gui.bold_font != NOFONT)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1809 {
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1810 XFreeFont(gui.dpy, (XFontStruct *)gui.bold_font);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1811 gui.bold_font = NOFONT;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1812 }
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1813 if (gui.ital_font != NOFONT)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1814 {
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1815 XFreeFont(gui.dpy, (XFontStruct *)gui.ital_font);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1816 gui.ital_font = NOFONT;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1817 }
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1818 if (gui.boldital_font != NOFONT)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1819 {
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1820 XFreeFont(gui.dpy, (XFontStruct *)gui.boldital_font);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1821 gui.boldital_font = NOFONT;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1822 }
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1823 }
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1824
46
46d39f2eff86 updated for version 7.0027
vimboss
parents: 39
diff changeset
1825 #ifdef FEAT_GUI_MOTIF
46d39f2eff86 updated for version 7.0027
vimboss
parents: 39
diff changeset
1826 gui_motif_synch_fonts();
46d39f2eff86 updated for version 7.0027
vimboss
parents: 39
diff changeset
1827 #endif
46d39f2eff86 updated for version 7.0027
vimboss
parents: 39
diff changeset
1828
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1829 return OK;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1830 }
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1831
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1832 /*
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1833 * Get a font structure for highlighting.
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1834 */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1835 GuiFont
7823
bcef391c101c commit https://github.com/vim/vim/commit/68c2f638e65d914dc6e84eb7ce2624f08af525c0
Christian Brabandt <cb@256bit.org>
parents: 7803
diff changeset
1836 gui_mch_get_font(char_u *name, int giveErrorIfMissing)
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1837 {
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1838 XFontStruct *font;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1839
18788
e1f4e9d78a6a patch 8.1.2383: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents: 18671
diff changeset
1840 if (!gui.in_use || name == NULL) // can't do this when GUI not running
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1841 return NOFONT;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1842
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1843 font = XLoadQueryFont(gui.dpy, (char *)name);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1844
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1845 if (font == NULL)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1846 {
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1847 if (giveErrorIfMissing)
26865
bce848ec8b1b patch 8.2.3961: error messages are spread out
Bram Moolenaar <Bram@vim.org>
parents: 24266
diff changeset
1848 semsg(_(e_unknown_font_str), name);
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1849 return NOFONT;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1850 }
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1851
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1852 #ifdef DEBUG
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1853 printf("Font Information for '%s':\n", name);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1854 printf(" w = %d, h = %d, ascent = %d, descent = %d\n",
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1855 font->max_bounds.width, font->ascent + font->descent,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1856 font->ascent, font->descent);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1857 printf(" max ascent = %d, max descent = %d, max h = %d\n",
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1858 font->max_bounds.ascent, font->max_bounds.descent,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1859 font->max_bounds.ascent + font->max_bounds.descent);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1860 printf(" min lbearing = %d, min rbearing = %d\n",
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1861 font->min_bounds.lbearing, font->min_bounds.rbearing);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1862 printf(" max lbearing = %d, max rbearing = %d\n",
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1863 font->max_bounds.lbearing, font->max_bounds.rbearing);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1864 printf(" leftink = %d, rightink = %d\n",
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1865 (font->min_bounds.lbearing < 0),
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1866 (font->max_bounds.rbearing > font->max_bounds.width));
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1867 printf("\n");
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1868 #endif
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1869
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1870 if (font->max_bounds.width != font->min_bounds.width)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1871 {
26865
bce848ec8b1b patch 8.2.3961: error messages are spread out
Bram Moolenaar <Bram@vim.org>
parents: 24266
diff changeset
1872 semsg(_(e_font_str_is_not_fixed_width), name);
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1873 XFreeFont(gui.dpy, font);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1874 return NOFONT;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1875 }
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1876 return (GuiFont)font;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1877 }
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1878
46
46d39f2eff86 updated for version 7.0027
vimboss
parents: 39
diff changeset
1879 #if defined(FEAT_EVAL) || defined(PROTO)
38
c524f99c7925 updated for version 7.0022
vimboss
parents: 34
diff changeset
1880 /*
c524f99c7925 updated for version 7.0022
vimboss
parents: 34
diff changeset
1881 * Return the name of font "font" in allocated memory.
c524f99c7925 updated for version 7.0022
vimboss
parents: 34
diff changeset
1882 */
c524f99c7925 updated for version 7.0022
vimboss
parents: 34
diff changeset
1883 char_u *
11119
d8a550329a97 patch 8.0.0447: getting font name does not work on X11
Christian Brabandt <cb@256bit.org>
parents: 10956
diff changeset
1884 gui_mch_get_fontname(GuiFont font, char_u *name)
38
c524f99c7925 updated for version 7.0022
vimboss
parents: 34
diff changeset
1885 {
11119
d8a550329a97 patch 8.0.0447: getting font name does not work on X11
Christian Brabandt <cb@256bit.org>
parents: 10956
diff changeset
1886 char_u *ret = NULL;
d8a550329a97 patch 8.0.0447: getting font name does not work on X11
Christian Brabandt <cb@256bit.org>
parents: 10956
diff changeset
1887
d8a550329a97 patch 8.0.0447: getting font name does not work on X11
Christian Brabandt <cb@256bit.org>
parents: 10956
diff changeset
1888 if (name != NULL && font == NULL)
d8a550329a97 patch 8.0.0447: getting font name does not work on X11
Christian Brabandt <cb@256bit.org>
parents: 10956
diff changeset
1889 {
18788
e1f4e9d78a6a patch 8.1.2383: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents: 18671
diff changeset
1890 // In this case, there's no way other than doing this.
11119
d8a550329a97 patch 8.0.0447: getting font name does not work on X11
Christian Brabandt <cb@256bit.org>
parents: 10956
diff changeset
1891 ret = vim_strsave(name);
d8a550329a97 patch 8.0.0447: getting font name does not work on X11
Christian Brabandt <cb@256bit.org>
parents: 10956
diff changeset
1892 }
d8a550329a97 patch 8.0.0447: getting font name does not work on X11
Christian Brabandt <cb@256bit.org>
parents: 10956
diff changeset
1893 else if (font != NULL)
d8a550329a97 patch 8.0.0447: getting font name does not work on X11
Christian Brabandt <cb@256bit.org>
parents: 10956
diff changeset
1894 {
18788
e1f4e9d78a6a patch 8.1.2383: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents: 18671
diff changeset
1895 // In this case, try to retrieve the XLFD corresponding to 'font'->fid;
e1f4e9d78a6a patch 8.1.2383: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents: 18671
diff changeset
1896 // if failed, use 'name' unless it's NULL.
11119
d8a550329a97 patch 8.0.0447: getting font name does not work on X11
Christian Brabandt <cb@256bit.org>
parents: 10956
diff changeset
1897 unsigned long value = 0L;
d8a550329a97 patch 8.0.0447: getting font name does not work on X11
Christian Brabandt <cb@256bit.org>
parents: 10956
diff changeset
1898
d8a550329a97 patch 8.0.0447: getting font name does not work on X11
Christian Brabandt <cb@256bit.org>
parents: 10956
diff changeset
1899 if (XGetFontProperty(font, XA_FONT, &value))
d8a550329a97 patch 8.0.0447: getting font name does not work on X11
Christian Brabandt <cb@256bit.org>
parents: 10956
diff changeset
1900 {
d8a550329a97 patch 8.0.0447: getting font name does not work on X11
Christian Brabandt <cb@256bit.org>
parents: 10956
diff changeset
1901 char *xa_font_name = NULL;
d8a550329a97 patch 8.0.0447: getting font name does not work on X11
Christian Brabandt <cb@256bit.org>
parents: 10956
diff changeset
1902
d8a550329a97 patch 8.0.0447: getting font name does not work on X11
Christian Brabandt <cb@256bit.org>
parents: 10956
diff changeset
1903 xa_font_name = XGetAtomName(gui.dpy, value);
d8a550329a97 patch 8.0.0447: getting font name does not work on X11
Christian Brabandt <cb@256bit.org>
parents: 10956
diff changeset
1904 if (xa_font_name != NULL)
d8a550329a97 patch 8.0.0447: getting font name does not work on X11
Christian Brabandt <cb@256bit.org>
parents: 10956
diff changeset
1905 {
d8a550329a97 patch 8.0.0447: getting font name does not work on X11
Christian Brabandt <cb@256bit.org>
parents: 10956
diff changeset
1906 ret = vim_strsave((char_u *)xa_font_name);
d8a550329a97 patch 8.0.0447: getting font name does not work on X11
Christian Brabandt <cb@256bit.org>
parents: 10956
diff changeset
1907 XFree(xa_font_name);
d8a550329a97 patch 8.0.0447: getting font name does not work on X11
Christian Brabandt <cb@256bit.org>
parents: 10956
diff changeset
1908 }
d8a550329a97 patch 8.0.0447: getting font name does not work on X11
Christian Brabandt <cb@256bit.org>
parents: 10956
diff changeset
1909 else if (name != NULL)
d8a550329a97 patch 8.0.0447: getting font name does not work on X11
Christian Brabandt <cb@256bit.org>
parents: 10956
diff changeset
1910 ret = vim_strsave(name);
d8a550329a97 patch 8.0.0447: getting font name does not work on X11
Christian Brabandt <cb@256bit.org>
parents: 10956
diff changeset
1911 }
d8a550329a97 patch 8.0.0447: getting font name does not work on X11
Christian Brabandt <cb@256bit.org>
parents: 10956
diff changeset
1912 else if (name != NULL)
d8a550329a97 patch 8.0.0447: getting font name does not work on X11
Christian Brabandt <cb@256bit.org>
parents: 10956
diff changeset
1913 ret = vim_strsave(name);
d8a550329a97 patch 8.0.0447: getting font name does not work on X11
Christian Brabandt <cb@256bit.org>
parents: 10956
diff changeset
1914 }
d8a550329a97 patch 8.0.0447: getting font name does not work on X11
Christian Brabandt <cb@256bit.org>
parents: 10956
diff changeset
1915 return ret;
38
c524f99c7925 updated for version 7.0022
vimboss
parents: 34
diff changeset
1916 }
46
46d39f2eff86 updated for version 7.0027
vimboss
parents: 39
diff changeset
1917 #endif
38
c524f99c7925 updated for version 7.0022
vimboss
parents: 34
diff changeset
1918
445
c773cb978acf updated for version 7.0116
vimboss
parents: 206
diff changeset
1919 /*
c773cb978acf updated for version 7.0116
vimboss
parents: 206
diff changeset
1920 * Adjust gui.char_height (after 'linespace' was changed).
c773cb978acf updated for version 7.0116
vimboss
parents: 206
diff changeset
1921 */
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1922 int
7823
bcef391c101c commit https://github.com/vim/vim/commit/68c2f638e65d914dc6e84eb7ce2624f08af525c0
Christian Brabandt <cb@256bit.org>
parents: 7803
diff changeset
1923 gui_mch_adjust_charheight(void)
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1924 {
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1925 #ifdef FEAT_XFONTSET
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1926 if (gui.fontset != NOFONTSET)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1927 {
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1928 gui.char_height = fontset_height((XFontSet)gui.fontset) + p_linespace;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1929 gui.char_ascent = fontset_ascent((XFontSet)gui.fontset)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1930 + p_linespace / 2;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1931 }
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1932 else
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1933 #endif
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1934 {
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1935 XFontStruct *font = (XFontStruct *)gui.norm_font;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1936
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1937 gui.char_height = font->ascent + font->descent + p_linespace;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1938 gui.char_ascent = font->ascent + p_linespace / 2;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1939 }
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1940 return OK;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1941 }
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1942
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1943 /*
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1944 * Set the current text font.
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1945 */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1946 void
7823
bcef391c101c commit https://github.com/vim/vim/commit/68c2f638e65d914dc6e84eb7ce2624f08af525c0
Christian Brabandt <cb@256bit.org>
parents: 7803
diff changeset
1947 gui_mch_set_font(GuiFont font)
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1948 {
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1949 static Font prev_font = (Font)-1;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1950 Font fid = ((XFontStruct *)font)->fid;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1951
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1952 if (fid != prev_font)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1953 {
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1954 XSetFont(gui.dpy, gui.text_gc, fid);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1955 XSetFont(gui.dpy, gui.back_gc, fid);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1956 prev_font = fid;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1957 gui.char_ascent = ((XFontStruct *)font)->ascent + p_linespace / 2;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1958 }
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1959 #ifdef FEAT_XFONTSET
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1960 current_fontset = (XFontSet)NULL;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1961 #endif
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1962 }
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1963
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1964 #if defined(FEAT_XFONTSET) || defined(PROTO)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1965 /*
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1966 * Set the current text fontset.
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1967 * Adjust the ascent, in case it's different.
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1968 */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1969 void
7823
bcef391c101c commit https://github.com/vim/vim/commit/68c2f638e65d914dc6e84eb7ce2624f08af525c0
Christian Brabandt <cb@256bit.org>
parents: 7803
diff changeset
1970 gui_mch_set_fontset(GuiFontset fontset)
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1971 {
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1972 current_fontset = (XFontSet)fontset;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1973 gui.char_ascent = fontset_ascent(current_fontset) + p_linespace / 2;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1974 }
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1975 #endif
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1976
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1977 /*
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1978 * If a font is not going to be used, free its structure.
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1979 */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1980 void
7823
bcef391c101c commit https://github.com/vim/vim/commit/68c2f638e65d914dc6e84eb7ce2624f08af525c0
Christian Brabandt <cb@256bit.org>
parents: 7803
diff changeset
1981 gui_mch_free_font(GuiFont font)
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1982 {
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1983 if (font != NOFONT)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1984 XFreeFont(gui.dpy, (XFontStruct *)font);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1985 }
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1986
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1987 #if defined(FEAT_XFONTSET) || defined(PROTO)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1988 /*
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1989 * If a fontset is not going to be used, free its structure.
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1990 */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1991 void
7823
bcef391c101c commit https://github.com/vim/vim/commit/68c2f638e65d914dc6e84eb7ce2624f08af525c0
Christian Brabandt <cb@256bit.org>
parents: 7803
diff changeset
1992 gui_mch_free_fontset(GuiFontset fontset)
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1993 {
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1994 if (fontset != NOFONTSET)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1995 XFreeFontSet(gui.dpy, (XFontSet)fontset);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1996 }
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1997
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1998 /*
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1999 * Load the fontset "name".
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2000 * Return a reference to the fontset, or NOFONTSET when failing.
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2001 */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2002 GuiFontset
7823
bcef391c101c commit https://github.com/vim/vim/commit/68c2f638e65d914dc6e84eb7ce2624f08af525c0
Christian Brabandt <cb@256bit.org>
parents: 7803
diff changeset
2003 gui_mch_get_fontset(
bcef391c101c commit https://github.com/vim/vim/commit/68c2f638e65d914dc6e84eb7ce2624f08af525c0
Christian Brabandt <cb@256bit.org>
parents: 7803
diff changeset
2004 char_u *name,
bcef391c101c commit https://github.com/vim/vim/commit/68c2f638e65d914dc6e84eb7ce2624f08af525c0
Christian Brabandt <cb@256bit.org>
parents: 7803
diff changeset
2005 int giveErrorIfMissing,
bcef391c101c commit https://github.com/vim/vim/commit/68c2f638e65d914dc6e84eb7ce2624f08af525c0
Christian Brabandt <cb@256bit.org>
parents: 7803
diff changeset
2006 int fixed_width)
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2007 {
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2008 XFontSet fontset;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2009 char **missing, *def_str;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2010 int num_missing;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2011
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2012 if (!gui.in_use || name == NULL)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2013 return NOFONTSET;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2014
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2015 fontset = XCreateFontSet(gui.dpy, (char *)name, &missing, &num_missing,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2016 &def_str);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2017 if (num_missing > 0)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2018 {
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2019 int i;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2020
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2021 if (giveErrorIfMissing)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2022 {
26893
79c76ca2c53c patch 8.2.3975: error messages are spread out
Bram Moolenaar <Bram@vim.org>
parents: 26883
diff changeset
2023 semsg(_(e_fonts_for_the_following_charsets_are_missing_in_fontset), name);
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2024 for (i = 0; i < num_missing; i++)
15470
55ccc2d353bd patch 8.1.0743: giving error messages is not flexible
Bram Moolenaar <Bram@vim.org>
parents: 14862
diff changeset
2025 semsg("%s", missing[i]);
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2026 }
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2027 XFreeStringList(missing);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2028 }
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2029
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2030 if (fontset == NULL)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2031 {
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2032 if (giveErrorIfMissing)
26865
bce848ec8b1b patch 8.2.3961: error messages are spread out
Bram Moolenaar <Bram@vim.org>
parents: 24266
diff changeset
2033 semsg(_(e_unknown_fontset_str), name);
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2034 return NOFONTSET;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2035 }
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2036
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2037 if (fixed_width && check_fontset_sanity(fontset) == FAIL)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2038 {
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2039 XFreeFontSet(gui.dpy, fontset);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2040 return NOFONTSET;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2041 }
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2042 return (GuiFontset)fontset;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2043 }
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2044
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2045 /*
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2046 * Check if fontset "fs" is fixed width.
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2047 */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2048 static int
7823
bcef391c101c commit https://github.com/vim/vim/commit/68c2f638e65d914dc6e84eb7ce2624f08af525c0
Christian Brabandt <cb@256bit.org>
parents: 7803
diff changeset
2049 check_fontset_sanity(XFontSet fs)
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2050 {
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2051 XFontStruct **xfs;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2052 char **font_name;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2053 int fn;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2054 char *base_name;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2055 int i;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2056 int min_width;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2057 int min_font_idx = 0;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2058
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2059 base_name = XBaseFontNameListOfFontSet(fs);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2060 fn = XFontsOfFontSet(fs, &xfs, &font_name);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2061 for (i = 0; i < fn; i++)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2062 {
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2063 if (xfs[i]->max_bounds.width != xfs[i]->min_bounds.width)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2064 {
26893
79c76ca2c53c patch 8.2.3975: error messages are spread out
Bram Moolenaar <Bram@vim.org>
parents: 26883
diff changeset
2065 semsg(_(e_fontsent_name_str_font_str_is_not_fixed_width),
79c76ca2c53c patch 8.2.3975: error messages are spread out
Bram Moolenaar <Bram@vim.org>
parents: 26883
diff changeset
2066 base_name, font_name[i]);
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2067 return FAIL;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2068 }
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2069 }
18788
e1f4e9d78a6a patch 8.1.2383: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents: 18671
diff changeset
2070 // scan base font width
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2071 min_width = 32767;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2072 for (i = 0; i < fn; i++)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2073 {
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2074 if (xfs[i]->max_bounds.width<min_width)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2075 {
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2076 min_width = xfs[i]->max_bounds.width;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2077 min_font_idx = i;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2078 }
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2079 }
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2080 for (i = 0; i < fn; i++)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2081 {
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2082 if ( xfs[i]->max_bounds.width != 2 * min_width
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2083 && xfs[i]->max_bounds.width != min_width)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2084 {
26893
79c76ca2c53c patch 8.2.3975: error messages are spread out
Bram Moolenaar <Bram@vim.org>
parents: 26883
diff changeset
2085 semsg(_(e_fontset_name_str), base_name);
15470
55ccc2d353bd patch 8.1.0743: giving error messages is not flexible
Bram Moolenaar <Bram@vim.org>
parents: 14862
diff changeset
2086 semsg(_("Font0: %s"), font_name[min_font_idx]);
15500
7ce4992e4ab7 patch 8.1.0758: font number is always one instead of the actual
Bram Moolenaar <Bram@vim.org>
parents: 15490
diff changeset
2087 semsg(_("Font%d: %s"), i, font_name[i]);
15490
98c35d312987 patch 8.1.0753: printf format not checked for semsg()
Bram Moolenaar <Bram@vim.org>
parents: 15470
diff changeset
2088 semsg(_("Font%d width is not twice that of font0"), i);
98c35d312987 patch 8.1.0753: printf format not checked for semsg()
Bram Moolenaar <Bram@vim.org>
parents: 15470
diff changeset
2089 semsg(_("Font0 width: %d"),
98c35d312987 patch 8.1.0753: printf format not checked for semsg()
Bram Moolenaar <Bram@vim.org>
parents: 15470
diff changeset
2090 (int)xfs[min_font_idx]->max_bounds.width);
98c35d312987 patch 8.1.0753: printf format not checked for semsg()
Bram Moolenaar <Bram@vim.org>
parents: 15470
diff changeset
2091 semsg(_("Font%d width: %d"), i, (int)xfs[i]->max_bounds.width);
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2092 return FAIL;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2093 }
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2094 }
18788
e1f4e9d78a6a patch 8.1.2383: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents: 18671
diff changeset
2095 // it seems ok. Good Luck!!
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2096 return OK;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2097 }
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2098
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2099 static int
7823
bcef391c101c commit https://github.com/vim/vim/commit/68c2f638e65d914dc6e84eb7ce2624f08af525c0
Christian Brabandt <cb@256bit.org>
parents: 7803
diff changeset
2100 fontset_width(XFontSet fs)
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2101 {
7823
bcef391c101c commit https://github.com/vim/vim/commit/68c2f638e65d914dc6e84eb7ce2624f08af525c0
Christian Brabandt <cb@256bit.org>
parents: 7803
diff changeset
2102 return XmbTextEscapement(fs, "Vim", 3) / 3;
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2103 }
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2104
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2105 int
7823
bcef391c101c commit https://github.com/vim/vim/commit/68c2f638e65d914dc6e84eb7ce2624f08af525c0
Christian Brabandt <cb@256bit.org>
parents: 7803
diff changeset
2106 fontset_height(
bcef391c101c commit https://github.com/vim/vim/commit/68c2f638e65d914dc6e84eb7ce2624f08af525c0
Christian Brabandt <cb@256bit.org>
parents: 7803
diff changeset
2107 XFontSet fs)
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2108 {
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2109 XFontSetExtents *extents;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2110
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2111 extents = XExtentsOfFontSet(fs);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2112 return extents->max_logical_extent.height;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2113 }
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2114
18788
e1f4e9d78a6a patch 8.1.2383: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents: 18671
diff changeset
2115 #if 0
e1f4e9d78a6a patch 8.1.2383: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents: 18671
diff changeset
2116 // NOT USED YET
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2117 static int
7856
226ed297307f commit https://github.com/vim/vim/commit/d14e00ea67afbaa8cb4a7e6b1eb306da6a2d5adb
Christian Brabandt <cb@256bit.org>
parents: 7825
diff changeset
2118 fontset_descent(XFontSet fs)
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2119 {
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2120 XFontSetExtents *extents;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2121
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2122 extents = XExtentsOfFontSet (fs);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2123 return extents->max_logical_extent.height + extents->max_logical_extent.y;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2124 }
18788
e1f4e9d78a6a patch 8.1.2383: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents: 18671
diff changeset
2125 #endif
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2126
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2127 static int
7823
bcef391c101c commit https://github.com/vim/vim/commit/68c2f638e65d914dc6e84eb7ce2624f08af525c0
Christian Brabandt <cb@256bit.org>
parents: 7803
diff changeset
2128 fontset_ascent(XFontSet fs)
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2129 {
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2130 XFontSetExtents *extents;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2131
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2132 extents = XExtentsOfFontSet(fs);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2133 return -extents->max_logical_extent.y;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2134 }
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2135
18788
e1f4e9d78a6a patch 8.1.2383: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents: 18671
diff changeset
2136 #endif // FEAT_XFONTSET
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2137
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2138 /*
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2139 * Return the Pixel value (color) for the given color name.
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2140 * Return INVALCOLOR for error.
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2141 */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2142 guicolor_T
9634
86d470495333 commit https://github.com/vim/vim/commit/4658228262f491fcb582d531d4e8e5754b0d5e83
Christian Brabandt <cb@256bit.org>
parents: 9428
diff changeset
2143 gui_mch_get_color(char_u *name)
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2144 {
13244
ac42c4b11dbc patch 8.0.1496: clearing a pointer takes two lines
Christian Brabandt <cb@256bit.org>
parents: 13152
diff changeset
2145 guicolor_T requested;
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2146
18788
e1f4e9d78a6a patch 8.1.2383: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents: 18671
diff changeset
2147 // can't do this when GUI not running
9634
86d470495333 commit https://github.com/vim/vim/commit/4658228262f491fcb582d531d4e8e5754b0d5e83
Christian Brabandt <cb@256bit.org>
parents: 9428
diff changeset
2148 if (!gui.in_use || name == NULL || *name == NUL)
86d470495333 commit https://github.com/vim/vim/commit/4658228262f491fcb582d531d4e8e5754b0d5e83
Christian Brabandt <cb@256bit.org>
parents: 9428
diff changeset
2149 return INVALCOLOR;
86d470495333 commit https://github.com/vim/vim/commit/4658228262f491fcb582d531d4e8e5754b0d5e83
Christian Brabandt <cb@256bit.org>
parents: 9428
diff changeset
2150
86d470495333 commit https://github.com/vim/vim/commit/4658228262f491fcb582d531d4e8e5754b0d5e83
Christian Brabandt <cb@256bit.org>
parents: 9428
diff changeset
2151 requested = gui_get_color_cmn(name);
86d470495333 commit https://github.com/vim/vim/commit/4658228262f491fcb582d531d4e8e5754b0d5e83
Christian Brabandt <cb@256bit.org>
parents: 9428
diff changeset
2152 if (requested == INVALCOLOR)
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2153 return INVALCOLOR;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2154
11745
5a5709918a98 patch 8.0.0755: terminal window does not have colors in the GUI
Christian Brabandt <cb@256bit.org>
parents: 11119
diff changeset
2155 return gui_mch_get_rgb_color(
9634
86d470495333 commit https://github.com/vim/vim/commit/4658228262f491fcb582d531d4e8e5754b0d5e83
Christian Brabandt <cb@256bit.org>
parents: 9428
diff changeset
2156 (requested & 0xff0000) >> 16,
86d470495333 commit https://github.com/vim/vim/commit/4658228262f491fcb582d531d4e8e5754b0d5e83
Christian Brabandt <cb@256bit.org>
parents: 9428
diff changeset
2157 (requested & 0xff00) >> 8,
86d470495333 commit https://github.com/vim/vim/commit/4658228262f491fcb582d531d4e8e5754b0d5e83
Christian Brabandt <cb@256bit.org>
parents: 9428
diff changeset
2158 requested & 0xff);
11745
5a5709918a98 patch 8.0.0755: terminal window does not have colors in the GUI
Christian Brabandt <cb@256bit.org>
parents: 11119
diff changeset
2159 }
5a5709918a98 patch 8.0.0755: terminal window does not have colors in the GUI
Christian Brabandt <cb@256bit.org>
parents: 11119
diff changeset
2160
5a5709918a98 patch 8.0.0755: terminal window does not have colors in the GUI
Christian Brabandt <cb@256bit.org>
parents: 11119
diff changeset
2161 /*
5a5709918a98 patch 8.0.0755: terminal window does not have colors in the GUI
Christian Brabandt <cb@256bit.org>
parents: 11119
diff changeset
2162 * Return the Pixel value (color) for the given RGB values.
5a5709918a98 patch 8.0.0755: terminal window does not have colors in the GUI
Christian Brabandt <cb@256bit.org>
parents: 11119
diff changeset
2163 * Return INVALCOLOR for error.
5a5709918a98 patch 8.0.0755: terminal window does not have colors in the GUI
Christian Brabandt <cb@256bit.org>
parents: 11119
diff changeset
2164 */
5a5709918a98 patch 8.0.0755: terminal window does not have colors in the GUI
Christian Brabandt <cb@256bit.org>
parents: 11119
diff changeset
2165 guicolor_T
5a5709918a98 patch 8.0.0755: terminal window does not have colors in the GUI
Christian Brabandt <cb@256bit.org>
parents: 11119
diff changeset
2166 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: 11119
diff changeset
2167 {
13244
ac42c4b11dbc patch 8.0.1496: clearing a pointer takes two lines
Christian Brabandt <cb@256bit.org>
parents: 13152
diff changeset
2168 XColor available;
11770
0aa1910a3dfa patch 8.0.0767: build failure with Athena and Motif
Christian Brabandt <cb@256bit.org>
parents: 11745
diff changeset
2169 Colormap colormap;
11745
5a5709918a98 patch 8.0.0755: terminal window does not have colors in the GUI
Christian Brabandt <cb@256bit.org>
parents: 11119
diff changeset
2170
18788
e1f4e9d78a6a patch 8.1.2383: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents: 18671
diff changeset
2171 #if 0
e1f4e9d78a6a patch 8.1.2383: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents: 18671
diff changeset
2172 // Using XParseColor() is very slow, put rgb in XColor directly.
13858
245c053021d3 patch 8.0.1800: X11: getting color is slow
Christian Brabandt <cb@256bit.org>
parents: 13244
diff changeset
2173
245c053021d3 patch 8.0.1800: X11: getting color is slow
Christian Brabandt <cb@256bit.org>
parents: 13244
diff changeset
2174 char spec[8]; // space enough to hold "#RRGGBB"
11745
5a5709918a98 patch 8.0.0755: terminal window does not have colors in the GUI
Christian Brabandt <cb@256bit.org>
parents: 11119
diff changeset
2175 vim_snprintf(spec, sizeof(spec), "#%.2x%.2x%.2x", r, g, b);
9634
86d470495333 commit https://github.com/vim/vim/commit/4658228262f491fcb582d531d4e8e5754b0d5e83
Christian Brabandt <cb@256bit.org>
parents: 9428
diff changeset
2176 if (XParseColor(gui.dpy, colormap, (char *)spec, &available) != 0
86d470495333 commit https://github.com/vim/vim/commit/4658228262f491fcb582d531d4e8e5754b0d5e83
Christian Brabandt <cb@256bit.org>
parents: 9428
diff changeset
2177 && XAllocColor(gui.dpy, colormap, &available) != 0)
86d470495333 commit https://github.com/vim/vim/commit/4658228262f491fcb582d531d4e8e5754b0d5e83
Christian Brabandt <cb@256bit.org>
parents: 9428
diff changeset
2178 return (guicolor_T)available.pixel;
18788
e1f4e9d78a6a patch 8.1.2383: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents: 18671
diff changeset
2179 #endif
13858
245c053021d3 patch 8.0.1800: X11: getting color is slow
Christian Brabandt <cb@256bit.org>
parents: 13244
diff changeset
2180 colormap = DefaultColormap(gui.dpy, DefaultScreen(gui.dpy));
20007
aadd1cae2ff5 patch 8.2.0559: clearing a struct is verbose
Bram Moolenaar <Bram@vim.org>
parents: 18788
diff changeset
2181 CLEAR_FIELD(available);
13858
245c053021d3 patch 8.0.1800: X11: getting color is slow
Christian Brabandt <cb@256bit.org>
parents: 13244
diff changeset
2182 available.red = r << 8;
245c053021d3 patch 8.0.1800: X11: getting color is slow
Christian Brabandt <cb@256bit.org>
parents: 13244
diff changeset
2183 available.green = g << 8;
245c053021d3 patch 8.0.1800: X11: getting color is slow
Christian Brabandt <cb@256bit.org>
parents: 13244
diff changeset
2184 available.blue = b << 8;
245c053021d3 patch 8.0.1800: X11: getting color is slow
Christian Brabandt <cb@256bit.org>
parents: 13244
diff changeset
2185 if (XAllocColor(gui.dpy, colormap, &available) != 0)
245c053021d3 patch 8.0.1800: X11: getting color is slow
Christian Brabandt <cb@256bit.org>
parents: 13244
diff changeset
2186 return (guicolor_T)available.pixel;
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2187
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2188 return INVALCOLOR;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2189 }
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2190
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2191 /*
206
87857ffdbf46 updated for version 7.0060
vimboss
parents: 179
diff changeset
2192 * Set the current text foreground color.
87857ffdbf46 updated for version 7.0060
vimboss
parents: 179
diff changeset
2193 */
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2194 void
7823
bcef391c101c commit https://github.com/vim/vim/commit/68c2f638e65d914dc6e84eb7ce2624f08af525c0
Christian Brabandt <cb@256bit.org>
parents: 7803
diff changeset
2195 gui_mch_set_fg_color(guicolor_T color)
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2196 {
31651
e5ee2ffd826a patch 9.0.1158: code is indented more than necessary
Bram Moolenaar <Bram@vim.org>
parents: 30310
diff changeset
2197 if (color == prev_fg_color)
e5ee2ffd826a patch 9.0.1158: code is indented more than necessary
Bram Moolenaar <Bram@vim.org>
parents: 30310
diff changeset
2198 return;
e5ee2ffd826a patch 9.0.1158: code is indented more than necessary
Bram Moolenaar <Bram@vim.org>
parents: 30310
diff changeset
2199
e5ee2ffd826a patch 9.0.1158: code is indented more than necessary
Bram Moolenaar <Bram@vim.org>
parents: 30310
diff changeset
2200 XSetForeground(gui.dpy, gui.text_gc, (Pixel)color);
e5ee2ffd826a patch 9.0.1158: code is indented more than necessary
Bram Moolenaar <Bram@vim.org>
parents: 30310
diff changeset
2201 prev_fg_color = color;
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2202 }
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2203
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2204 /*
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2205 * Set the current text background color.
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2206 */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2207 void
7823
bcef391c101c commit https://github.com/vim/vim/commit/68c2f638e65d914dc6e84eb7ce2624f08af525c0
Christian Brabandt <cb@256bit.org>
parents: 7803
diff changeset
2208 gui_mch_set_bg_color(guicolor_T color)
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2209 {
31651
e5ee2ffd826a patch 9.0.1158: code is indented more than necessary
Bram Moolenaar <Bram@vim.org>
parents: 30310
diff changeset
2210 if (color == prev_bg_color)
e5ee2ffd826a patch 9.0.1158: code is indented more than necessary
Bram Moolenaar <Bram@vim.org>
parents: 30310
diff changeset
2211 return;
e5ee2ffd826a patch 9.0.1158: code is indented more than necessary
Bram Moolenaar <Bram@vim.org>
parents: 30310
diff changeset
2212
e5ee2ffd826a patch 9.0.1158: code is indented more than necessary
Bram Moolenaar <Bram@vim.org>
parents: 30310
diff changeset
2213 XSetBackground(gui.dpy, gui.text_gc, (Pixel)color);
e5ee2ffd826a patch 9.0.1158: code is indented more than necessary
Bram Moolenaar <Bram@vim.org>
parents: 30310
diff changeset
2214 prev_bg_color = color;
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2215 }
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2216
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2217 /*
206
87857ffdbf46 updated for version 7.0060
vimboss
parents: 179
diff changeset
2218 * Set the current text special color.
87857ffdbf46 updated for version 7.0060
vimboss
parents: 179
diff changeset
2219 */
87857ffdbf46 updated for version 7.0060
vimboss
parents: 179
diff changeset
2220 void
7823
bcef391c101c commit https://github.com/vim/vim/commit/68c2f638e65d914dc6e84eb7ce2624f08af525c0
Christian Brabandt <cb@256bit.org>
parents: 7803
diff changeset
2221 gui_mch_set_sp_color(guicolor_T color)
206
87857ffdbf46 updated for version 7.0060
vimboss
parents: 179
diff changeset
2222 {
87857ffdbf46 updated for version 7.0060
vimboss
parents: 179
diff changeset
2223 prev_sp_color = color;
87857ffdbf46 updated for version 7.0060
vimboss
parents: 179
diff changeset
2224 }
87857ffdbf46 updated for version 7.0060
vimboss
parents: 179
diff changeset
2225
87857ffdbf46 updated for version 7.0060
vimboss
parents: 179
diff changeset
2226 /*
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2227 * create a mouse pointer that is blank
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2228 */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2229 static Cursor
7823
bcef391c101c commit https://github.com/vim/vim/commit/68c2f638e65d914dc6e84eb7ce2624f08af525c0
Christian Brabandt <cb@256bit.org>
parents: 7803
diff changeset
2230 gui_x11_create_blank_mouse(void)
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2231 {
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2232 Pixmap blank_pixmap = XCreatePixmap(gui.dpy, gui.wid, 1, 1, 1);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2233 GC gc = XCreateGC(gui.dpy, blank_pixmap, (unsigned long)0, (XGCValues*)0);
30003
01087b4630da patch 9.0.0339: no check if the return value of XChangeGC() is NULL
Bram Moolenaar <Bram@vim.org>
parents: 28303
diff changeset
2234
01087b4630da patch 9.0.0339: no check if the return value of XChangeGC() is NULL
Bram Moolenaar <Bram@vim.org>
parents: 28303
diff changeset
2235 if (gc != NULL)
01087b4630da patch 9.0.0339: no check if the return value of XChangeGC() is NULL
Bram Moolenaar <Bram@vim.org>
parents: 28303
diff changeset
2236 {
01087b4630da patch 9.0.0339: no check if the return value of XChangeGC() is NULL
Bram Moolenaar <Bram@vim.org>
parents: 28303
diff changeset
2237 XDrawPoint(gui.dpy, blank_pixmap, gc, 0, 0);
01087b4630da patch 9.0.0339: no check if the return value of XChangeGC() is NULL
Bram Moolenaar <Bram@vim.org>
parents: 28303
diff changeset
2238 XFreeGC(gui.dpy, gc);
01087b4630da patch 9.0.0339: no check if the return value of XChangeGC() is NULL
Bram Moolenaar <Bram@vim.org>
parents: 28303
diff changeset
2239 }
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2240 return XCreatePixmapCursor(gui.dpy, blank_pixmap, blank_pixmap,
30003
01087b4630da patch 9.0.0339: no check if the return value of XChangeGC() is NULL
Bram Moolenaar <Bram@vim.org>
parents: 28303
diff changeset
2241 (XColor*)&gui.norm_pixel, (XColor*)&gui.norm_pixel, 0, 0);
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2242 }
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2243
206
87857ffdbf46 updated for version 7.0060
vimboss
parents: 179
diff changeset
2244 /*
87857ffdbf46 updated for version 7.0060
vimboss
parents: 179
diff changeset
2245 * Draw a curled line at the bottom of the character cell.
87857ffdbf46 updated for version 7.0060
vimboss
parents: 179
diff changeset
2246 */
87857ffdbf46 updated for version 7.0060
vimboss
parents: 179
diff changeset
2247 static void
7823
bcef391c101c commit https://github.com/vim/vim/commit/68c2f638e65d914dc6e84eb7ce2624f08af525c0
Christian Brabandt <cb@256bit.org>
parents: 7803
diff changeset
2248 draw_curl(int row, int col, int cells)
206
87857ffdbf46 updated for version 7.0060
vimboss
parents: 179
diff changeset
2249 {
87857ffdbf46 updated for version 7.0060
vimboss
parents: 179
diff changeset
2250 int i;
87857ffdbf46 updated for version 7.0060
vimboss
parents: 179
diff changeset
2251 int offset;
1887
fc89a4f98a8b updated for version 7.2-184
vimboss
parents: 1827
diff changeset
2252 static const int val[8] = {1, 0, 0, 0, 1, 2, 2, 2 };
206
87857ffdbf46 updated for version 7.0060
vimboss
parents: 179
diff changeset
2253
87857ffdbf46 updated for version 7.0060
vimboss
parents: 179
diff changeset
2254 XSetForeground(gui.dpy, gui.text_gc, prev_sp_color);
87857ffdbf46 updated for version 7.0060
vimboss
parents: 179
diff changeset
2255 for (i = FILL_X(col); i < FILL_X(col + cells); ++i)
87857ffdbf46 updated for version 7.0060
vimboss
parents: 179
diff changeset
2256 {
87857ffdbf46 updated for version 7.0060
vimboss
parents: 179
diff changeset
2257 offset = val[i % 8];
87857ffdbf46 updated for version 7.0060
vimboss
parents: 179
diff changeset
2258 XDrawPoint(gui.dpy, gui.wid, gui.text_gc, i,
87857ffdbf46 updated for version 7.0060
vimboss
parents: 179
diff changeset
2259 FILL_Y(row + 1) - 1 - offset);
87857ffdbf46 updated for version 7.0060
vimboss
parents: 179
diff changeset
2260 }
87857ffdbf46 updated for version 7.0060
vimboss
parents: 179
diff changeset
2261 XSetForeground(gui.dpy, gui.text_gc, prev_fg_color);
87857ffdbf46 updated for version 7.0060
vimboss
parents: 179
diff changeset
2262 }
87857ffdbf46 updated for version 7.0060
vimboss
parents: 179
diff changeset
2263
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2264 void
7823
bcef391c101c commit https://github.com/vim/vim/commit/68c2f638e65d914dc6e84eb7ce2624f08af525c0
Christian Brabandt <cb@256bit.org>
parents: 7803
diff changeset
2265 gui_mch_draw_string(
bcef391c101c commit https://github.com/vim/vim/commit/68c2f638e65d914dc6e84eb7ce2624f08af525c0
Christian Brabandt <cb@256bit.org>
parents: 7803
diff changeset
2266 int row,
bcef391c101c commit https://github.com/vim/vim/commit/68c2f638e65d914dc6e84eb7ce2624f08af525c0
Christian Brabandt <cb@256bit.org>
parents: 7803
diff changeset
2267 int col,
bcef391c101c commit https://github.com/vim/vim/commit/68c2f638e65d914dc6e84eb7ce2624f08af525c0
Christian Brabandt <cb@256bit.org>
parents: 7803
diff changeset
2268 char_u *s,
bcef391c101c commit https://github.com/vim/vim/commit/68c2f638e65d914dc6e84eb7ce2624f08af525c0
Christian Brabandt <cb@256bit.org>
parents: 7803
diff changeset
2269 int len,
bcef391c101c commit https://github.com/vim/vim/commit/68c2f638e65d914dc6e84eb7ce2624f08af525c0
Christian Brabandt <cb@256bit.org>
parents: 7803
diff changeset
2270 int flags)
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2271 {
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2272 int cells = len;
717
2fa8cb05b861 updated for version 7.0218
vimboss
parents: 557
diff changeset
2273 static void *buf = NULL;
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2274 static int buflen = 0;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2275 char_u *p;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2276 int wlen = 0;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2277 int c;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2278
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2279 if (enc_utf8)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2280 {
18788
e1f4e9d78a6a patch 8.1.2383: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents: 18671
diff changeset
2281 // Convert UTF-8 byte sequence to 16 bit characters for the X
e1f4e9d78a6a patch 8.1.2383: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents: 18671
diff changeset
2282 // functions. Need a buffer for the 16 bit characters. Keep it
e1f4e9d78a6a patch 8.1.2383: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents: 18671
diff changeset
2283 // between calls, because allocating it each time is slow.
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2284 if (buflen < len)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2285 {
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2286 XtFree((char *)buf);
717
2fa8cb05b861 updated for version 7.0218
vimboss
parents: 557
diff changeset
2287 buf = (void *)XtMalloc(len * (sizeof(XChar2b) < sizeof(wchar_t)
2fa8cb05b861 updated for version 7.0218
vimboss
parents: 557
diff changeset
2288 ? sizeof(wchar_t) : sizeof(XChar2b)));
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2289 buflen = len;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2290 }
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2291 p = s;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2292 cells = 0;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2293 while (p < s + len)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2294 {
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2295 c = utf_ptr2char(p);
15597
536dd2bc5ac9 patch 8.1.0806: too many #ifdefs
Bram Moolenaar <Bram@vim.org>
parents: 15517
diff changeset
2296 #ifdef FEAT_XFONTSET
717
2fa8cb05b861 updated for version 7.0218
vimboss
parents: 557
diff changeset
2297 if (current_fontset != NULL)
2fa8cb05b861 updated for version 7.0218
vimboss
parents: 557
diff changeset
2298 {
15597
536dd2bc5ac9 patch 8.1.0806: too many #ifdefs
Bram Moolenaar <Bram@vim.org>
parents: 15517
diff changeset
2299 # ifdef SMALL_WCHAR_T
1887
fc89a4f98a8b updated for version 7.2-184
vimboss
parents: 1827
diff changeset
2300 if (c >= 0x10000)
18788
e1f4e9d78a6a patch 8.1.2383: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents: 18671
diff changeset
2301 c = 0xbf; // show chars > 0xffff as ?
15597
536dd2bc5ac9 patch 8.1.0806: too many #ifdefs
Bram Moolenaar <Bram@vim.org>
parents: 15517
diff changeset
2302 # endif
717
2fa8cb05b861 updated for version 7.0218
vimboss
parents: 557
diff changeset
2303 ((wchar_t *)buf)[wlen] = c;
2fa8cb05b861 updated for version 7.0218
vimboss
parents: 557
diff changeset
2304 }
2fa8cb05b861 updated for version 7.0218
vimboss
parents: 557
diff changeset
2305 else
15597
536dd2bc5ac9 patch 8.1.0806: too many #ifdefs
Bram Moolenaar <Bram@vim.org>
parents: 15517
diff changeset
2306 #endif
717
2fa8cb05b861 updated for version 7.0218
vimboss
parents: 557
diff changeset
2307 {
2fa8cb05b861 updated for version 7.0218
vimboss
parents: 557
diff changeset
2308 if (c >= 0x10000)
18788
e1f4e9d78a6a patch 8.1.2383: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents: 18671
diff changeset
2309 c = 0xbf; // show chars > 0xffff as ?
717
2fa8cb05b861 updated for version 7.0218
vimboss
parents: 557
diff changeset
2310 ((XChar2b *)buf)[wlen].byte1 = (unsigned)c >> 8;
2fa8cb05b861 updated for version 7.0218
vimboss
parents: 557
diff changeset
2311 ((XChar2b *)buf)[wlen].byte2 = c;
2fa8cb05b861 updated for version 7.0218
vimboss
parents: 557
diff changeset
2312 }
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2313 ++wlen;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2314 cells += utf_char2cells(c);
474
a5fcf36ef512 updated for version 7.0127
vimboss
parents: 445
diff changeset
2315 p += utf_ptr2len(p);
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2316 }
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2317 }
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2318 else if (has_mbyte)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2319 {
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2320 cells = 0;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2321 for (p = s; p < s + len; )
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2322 {
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2323 cells += ptr2cells(p);
474
a5fcf36ef512 updated for version 7.0127
vimboss
parents: 445
diff changeset
2324 p += (*mb_ptr2len)(p);
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2325 }
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2326 }
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2327
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2328 #ifdef FEAT_XFONTSET
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2329 if (current_fontset != NULL)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2330 {
18788
e1f4e9d78a6a patch 8.1.2383: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents: 18671
diff changeset
2331 // Setup a clip rectangle to avoid spilling over in the next or
e1f4e9d78a6a patch 8.1.2383: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents: 18671
diff changeset
2332 // previous line. This is apparently needed for some fonts which are
e1f4e9d78a6a patch 8.1.2383: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents: 18671
diff changeset
2333 // used in a fontset.
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2334 XRectangle clip;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2335
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2336 clip.x = 0;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2337 clip.y = 0;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2338 clip.height = gui.char_height;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2339 clip.width = gui.char_width * cells + 1;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2340 XSetClipRectangles(gui.dpy, gui.text_gc, FILL_X(col), FILL_Y(row),
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2341 &clip, 1, Unsorted);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2342 }
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2343 #endif
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2344
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2345 if (flags & DRAW_TRANSP)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2346 {
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2347 if (enc_utf8)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2348 XDrawString16(gui.dpy, gui.wid, gui.text_gc, TEXT_X(col),
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2349 TEXT_Y(row), buf, wlen);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2350 else
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2351 XDrawString(gui.dpy, gui.wid, gui.text_gc, TEXT_X(col),
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2352 TEXT_Y(row), (char *)s, len);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2353 }
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2354 else if (p_linespace != 0
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2355 #ifdef FEAT_XFONTSET
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2356 || current_fontset != NULL
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2357 #endif
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2358 )
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2359 {
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2360 XSetForeground(gui.dpy, gui.text_gc, prev_bg_color);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2361 XFillRectangle(gui.dpy, gui.wid, gui.text_gc, FILL_X(col),
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2362 FILL_Y(row), gui.char_width * cells, gui.char_height);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2363 XSetForeground(gui.dpy, gui.text_gc, prev_fg_color);
206
87857ffdbf46 updated for version 7.0060
vimboss
parents: 179
diff changeset
2364
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2365 if (enc_utf8)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2366 XDrawString16(gui.dpy, gui.wid, gui.text_gc, TEXT_X(col),
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2367 TEXT_Y(row), buf, wlen);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2368 else
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2369 XDrawString(gui.dpy, gui.wid, gui.text_gc, TEXT_X(col),
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2370 TEXT_Y(row), (char *)s, len);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2371 }
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2372 else
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2373 {
18788
e1f4e9d78a6a patch 8.1.2383: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents: 18671
diff changeset
2374 // XmbDrawImageString has bug, don't use it for fontset.
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2375 if (enc_utf8)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2376 XDrawImageString16(gui.dpy, gui.wid, gui.text_gc, TEXT_X(col),
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2377 TEXT_Y(row), buf, wlen);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2378 else
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2379 XDrawImageString(gui.dpy, gui.wid, gui.text_gc, TEXT_X(col),
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2380 TEXT_Y(row), (char *)s, len);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2381 }
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2382
18788
e1f4e9d78a6a patch 8.1.2383: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents: 18671
diff changeset
2383 // Bold trick: draw the text again with a one-pixel offset.
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2384 if (flags & DRAW_BOLD)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2385 {
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2386 if (enc_utf8)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2387 XDrawString16(gui.dpy, gui.wid, gui.text_gc, TEXT_X(col) + 1,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2388 TEXT_Y(row), buf, wlen);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2389 else
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2390 XDrawString(gui.dpy, gui.wid, gui.text_gc, TEXT_X(col) + 1,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2391 TEXT_Y(row), (char *)s, len);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2392 }
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2393
18788
e1f4e9d78a6a patch 8.1.2383: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents: 18671
diff changeset
2394 // Undercurl: draw curl at the bottom of the character cell.
206
87857ffdbf46 updated for version 7.0060
vimboss
parents: 179
diff changeset
2395 if (flags & DRAW_UNDERC)
87857ffdbf46 updated for version 7.0060
vimboss
parents: 179
diff changeset
2396 draw_curl(row, col, cells);
87857ffdbf46 updated for version 7.0060
vimboss
parents: 179
diff changeset
2397
18788
e1f4e9d78a6a patch 8.1.2383: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents: 18671
diff changeset
2398 // Underline: draw a line at the bottom of the character cell.
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2399 if (flags & DRAW_UNDERL)
206
87857ffdbf46 updated for version 7.0060
vimboss
parents: 179
diff changeset
2400 {
87857ffdbf46 updated for version 7.0060
vimboss
parents: 179
diff changeset
2401 int y = FILL_Y(row + 1) - 1;
87857ffdbf46 updated for version 7.0060
vimboss
parents: 179
diff changeset
2402
18788
e1f4e9d78a6a patch 8.1.2383: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents: 18671
diff changeset
2403 // 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: 18671
diff changeset
2404 // Otherwise put the line just below the character.
206
87857ffdbf46 updated for version 7.0060
vimboss
parents: 179
diff changeset
2405 if (p_linespace > 1)
87857ffdbf46 updated for version 7.0060
vimboss
parents: 179
diff changeset
2406 y -= p_linespace - 1;
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2407 XDrawLine(gui.dpy, gui.wid, gui.text_gc, FILL_X(col),
206
87857ffdbf46 updated for version 7.0060
vimboss
parents: 179
diff changeset
2408 y, FILL_X(col + cells) - 1, y);
87857ffdbf46 updated for version 7.0060
vimboss
parents: 179
diff changeset
2409 }
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2410
12317
2a8890b80923 patch 8.0.1038: strike-through text not supported
Christian Brabandt <cb@256bit.org>
parents: 12257
diff changeset
2411 if (flags & DRAW_STRIKE)
2a8890b80923 patch 8.0.1038: strike-through text not supported
Christian Brabandt <cb@256bit.org>
parents: 12257
diff changeset
2412 {
2a8890b80923 patch 8.0.1038: strike-through text not supported
Christian Brabandt <cb@256bit.org>
parents: 12257
diff changeset
2413 int y = FILL_Y(row + 1) - gui.char_height/2;
2a8890b80923 patch 8.0.1038: strike-through text not supported
Christian Brabandt <cb@256bit.org>
parents: 12257
diff changeset
2414
2a8890b80923 patch 8.0.1038: strike-through text not supported
Christian Brabandt <cb@256bit.org>
parents: 12257
diff changeset
2415 XSetForeground(gui.dpy, gui.text_gc, prev_sp_color);
2a8890b80923 patch 8.0.1038: strike-through text not supported
Christian Brabandt <cb@256bit.org>
parents: 12257
diff changeset
2416 XDrawLine(gui.dpy, gui.wid, gui.text_gc, FILL_X(col),
2a8890b80923 patch 8.0.1038: strike-through text not supported
Christian Brabandt <cb@256bit.org>
parents: 12257
diff changeset
2417 y, FILL_X(col + cells) - 1, y);
2a8890b80923 patch 8.0.1038: strike-through text not supported
Christian Brabandt <cb@256bit.org>
parents: 12257
diff changeset
2418 XSetForeground(gui.dpy, gui.text_gc, prev_fg_color);
2a8890b80923 patch 8.0.1038: strike-through text not supported
Christian Brabandt <cb@256bit.org>
parents: 12257
diff changeset
2419 }
2a8890b80923 patch 8.0.1038: strike-through text not supported
Christian Brabandt <cb@256bit.org>
parents: 12257
diff changeset
2420
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2421 #ifdef FEAT_XFONTSET
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2422 if (current_fontset != NULL)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2423 XSetClipMask(gui.dpy, gui.text_gc, None);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2424 #endif
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2425 }
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2426
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2427 /*
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2428 * Return OK if the key with the termcap name "name" is supported.
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2429 */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2430 int
7823
bcef391c101c commit https://github.com/vim/vim/commit/68c2f638e65d914dc6e84eb7ce2624f08af525c0
Christian Brabandt <cb@256bit.org>
parents: 7803
diff changeset
2431 gui_mch_haskey(char_u *name)
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2432 {
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2433 int i;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2434
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2435 for (i = 0; special_keys[i].key_sym != (KeySym)0; i++)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2436 if (name[0] == special_keys[i].vim_code0 &&
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2437 name[1] == special_keys[i].vim_code1)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2438 return OK;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2439 return FAIL;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2440 }
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2441
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2442 /*
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2443 * Return the text window-id and display. Only required for X-based GUI's
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2444 */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2445 int
7823
bcef391c101c commit https://github.com/vim/vim/commit/68c2f638e65d914dc6e84eb7ce2624f08af525c0
Christian Brabandt <cb@256bit.org>
parents: 7803
diff changeset
2446 gui_get_x11_windis(Window *win, Display **dis)
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2447 {
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2448 *win = XtWindow(vimShell);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2449 *dis = gui.dpy;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2450 return OK;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2451 }
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2452
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2453 void
7823
bcef391c101c commit https://github.com/vim/vim/commit/68c2f638e65d914dc6e84eb7ce2624f08af525c0
Christian Brabandt <cb@256bit.org>
parents: 7803
diff changeset
2454 gui_mch_beep(void)
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2455 {
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2456 XBell(gui.dpy, 0);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2457 }
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2458
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2459 void
7823
bcef391c101c commit https://github.com/vim/vim/commit/68c2f638e65d914dc6e84eb7ce2624f08af525c0
Christian Brabandt <cb@256bit.org>
parents: 7803
diff changeset
2460 gui_mch_flash(int msec)
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2461 {
18788
e1f4e9d78a6a patch 8.1.2383: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents: 18671
diff changeset
2462 // Do a visual beep by reversing the foreground and background colors
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2463 XFillRectangle(gui.dpy, gui.wid, gui.invert_gc, 0, 0,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2464 FILL_X((int)Columns) + gui.border_offset,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2465 FILL_Y((int)Rows) + gui.border_offset);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2466 XSync(gui.dpy, False);
18788
e1f4e9d78a6a patch 8.1.2383: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents: 18671
diff changeset
2467 ui_delay((long)msec, TRUE); // wait for a few msec
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2468 XFillRectangle(gui.dpy, gui.wid, gui.invert_gc, 0, 0,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2469 FILL_X((int)Columns) + gui.border_offset,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2470 FILL_Y((int)Rows) + gui.border_offset);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2471 }
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2472
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2473 /*
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2474 * Invert a rectangle from row r, column c, for nr rows and nc columns.
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2475 */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2476 void
7823
bcef391c101c commit https://github.com/vim/vim/commit/68c2f638e65d914dc6e84eb7ce2624f08af525c0
Christian Brabandt <cb@256bit.org>
parents: 7803
diff changeset
2477 gui_mch_invert_rectangle(
bcef391c101c commit https://github.com/vim/vim/commit/68c2f638e65d914dc6e84eb7ce2624f08af525c0
Christian Brabandt <cb@256bit.org>
parents: 7803
diff changeset
2478 int r,
bcef391c101c commit https://github.com/vim/vim/commit/68c2f638e65d914dc6e84eb7ce2624f08af525c0
Christian Brabandt <cb@256bit.org>
parents: 7803
diff changeset
2479 int c,
bcef391c101c commit https://github.com/vim/vim/commit/68c2f638e65d914dc6e84eb7ce2624f08af525c0
Christian Brabandt <cb@256bit.org>
parents: 7803
diff changeset
2480 int nr,
bcef391c101c commit https://github.com/vim/vim/commit/68c2f638e65d914dc6e84eb7ce2624f08af525c0
Christian Brabandt <cb@256bit.org>
parents: 7803
diff changeset
2481 int nc)
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2482 {
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2483 XFillRectangle(gui.dpy, gui.wid, gui.invert_gc,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2484 FILL_X(c), FILL_Y(r), (nc) * gui.char_width, (nr) * gui.char_height);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2485 }
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2486
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2487 /*
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2488 * Iconify the GUI window.
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2489 */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2490 void
7823
bcef391c101c commit https://github.com/vim/vim/commit/68c2f638e65d914dc6e84eb7ce2624f08af525c0
Christian Brabandt <cb@256bit.org>
parents: 7803
diff changeset
2491 gui_mch_iconify(void)
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2492 {
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2493 XIconifyWindow(gui.dpy, XtWindow(vimShell), DefaultScreen(gui.dpy));
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2494 }
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2495
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2496 #if defined(FEAT_EVAL) || defined(PROTO)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2497 /*
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2498 * Bring the Vim window to the foreground.
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2499 */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2500 void
7823
bcef391c101c commit https://github.com/vim/vim/commit/68c2f638e65d914dc6e84eb7ce2624f08af525c0
Christian Brabandt <cb@256bit.org>
parents: 7803
diff changeset
2501 gui_mch_set_foreground(void)
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2502 {
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2503 XMapRaised(gui.dpy, XtWindow(vimShell));
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2504 }
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2505 #endif
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2506
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2507 /*
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2508 * Draw a cursor without focus.
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2509 */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2510 void
7823
bcef391c101c commit https://github.com/vim/vim/commit/68c2f638e65d914dc6e84eb7ce2624f08af525c0
Christian Brabandt <cb@256bit.org>
parents: 7803
diff changeset
2511 gui_mch_draw_hollow_cursor(guicolor_T color)
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2512 {
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2513 int w = 1;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2514
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2515 if (mb_lefthalve(gui.row, gui.col))
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2516 w = 2;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2517 gui_mch_set_fg_color(color);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2518 XDrawRectangle(gui.dpy, gui.wid, gui.text_gc, FILL_X(gui.col),
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2519 FILL_Y(gui.row), w * gui.char_width - 1, gui.char_height - 1);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2520 }
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2521
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2522 /*
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2523 * Draw part of a cursor, "w" pixels wide, and "h" pixels high, using
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2524 * color "color".
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2525 */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2526 void
7823
bcef391c101c commit https://github.com/vim/vim/commit/68c2f638e65d914dc6e84eb7ce2624f08af525c0
Christian Brabandt <cb@256bit.org>
parents: 7803
diff changeset
2527 gui_mch_draw_part_cursor(int w, int h, guicolor_T color)
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2528 {
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2529 gui_mch_set_fg_color(color);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2530
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2531 XFillRectangle(gui.dpy, gui.wid, gui.text_gc,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2532 #ifdef FEAT_RIGHTLEFT
18788
e1f4e9d78a6a patch 8.1.2383: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents: 18671
diff changeset
2533 // vertical line should be on the right of current point
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2534 CURSOR_BAR_RIGHT ? FILL_X(gui.col + 1) - w :
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2535 #endif
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2536 FILL_X(gui.col),
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2537 FILL_Y(gui.row) + gui.char_height - h,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2538 w, h);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2539 }
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2540
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2541 /*
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2542 * Catch up with any queued X events. This may put keyboard input into the
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2543 * input buffer, call resize call-backs, trigger timers etc. If there is
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2544 * nothing in the X event queue (& no timers pending), then we return
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2545 * immediately.
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2546 */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2547 void
7823
bcef391c101c commit https://github.com/vim/vim/commit/68c2f638e65d914dc6e84eb7ce2624f08af525c0
Christian Brabandt <cb@256bit.org>
parents: 7803
diff changeset
2548 gui_mch_update(void)
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2549 {
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2550 XtInputMask mask, desired;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2551
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2552 #ifdef ALT_X_INPUT
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2553 if (suppress_alternate_input)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2554 desired = (XtIMXEvent | XtIMTimer);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2555 else
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2556 #endif
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2557 desired = (XtIMAll);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2558 while ((mask = XtAppPending(app_context)) && (mask & desired)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2559 && !vim_is_input_buf_full())
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2560 XtAppProcessEvent(app_context, desired);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2561 }
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2562
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2563 /*
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2564 * GUI input routine called by gui_wait_for_chars(). Waits for a character
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2565 * from the keyboard.
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2566 * wtime == -1 Wait forever.
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2567 * wtime == 0 This should never happen.
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2568 * wtime > 0 Wait wtime milliseconds for a character.
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2569 * Returns OK if a character was found to be available within the given time,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2570 * or FAIL otherwise.
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2571 */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2572 int
7823
bcef391c101c commit https://github.com/vim/vim/commit/68c2f638e65d914dc6e84eb7ce2624f08af525c0
Christian Brabandt <cb@256bit.org>
parents: 7803
diff changeset
2573 gui_mch_wait_for_chars(long wtime)
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2574 {
9179
5e18efdad322 commit https://github.com/vim/vim/commit/4231da403e3c879dd6ac261e51f4ca60813935e3
Christian Brabandt <cb@256bit.org>
parents: 8281
diff changeset
2575 int focus;
5e18efdad322 commit https://github.com/vim/vim/commit/4231da403e3c879dd6ac261e51f4ca60813935e3
Christian Brabandt <cb@256bit.org>
parents: 8281
diff changeset
2576 int retval = FAIL;
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2577
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2578 /*
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2579 * Make this static, in case gui_x11_timer_cb is called after leaving
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2580 * this function (otherwise a random value on the stack may be changed).
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2581 */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2582 static int timed_out;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2583 XtIntervalId timer = (XtIntervalId)0;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2584 XtInputMask desired;
12257
519e4e6bbc28 patch 8.0.1008: slow updating of terminal window in Motif
Christian Brabandt <cb@256bit.org>
parents: 11770
diff changeset
2585 #ifdef FEAT_JOB_CHANNEL
519e4e6bbc28 patch 8.0.1008: slow updating of terminal window in Motif
Christian Brabandt <cb@256bit.org>
parents: 11770
diff changeset
2586 XtIntervalId channel_timer = (XtIntervalId)0;
519e4e6bbc28 patch 8.0.1008: slow updating of terminal window in Motif
Christian Brabandt <cb@256bit.org>
parents: 11770
diff changeset
2587 #endif
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2588
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2589 timed_out = FALSE;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2590
15665
31367ce5aac7 patch 8.1.0840: getchar(0) never returns a character in the terminal
Bram Moolenaar <Bram@vim.org>
parents: 15597
diff changeset
2591 if (wtime >= 0)
31367ce5aac7 patch 8.1.0840: getchar(0) never returns a character in the terminal
Bram Moolenaar <Bram@vim.org>
parents: 15597
diff changeset
2592 timer = XtAppAddTimeOut(app_context,
31367ce5aac7 patch 8.1.0840: getchar(0) never returns a character in the terminal
Bram Moolenaar <Bram@vim.org>
parents: 15597
diff changeset
2593 (long_u)(wtime == 0 ? 1L : wtime),
31367ce5aac7 patch 8.1.0840: getchar(0) never returns a character in the terminal
Bram Moolenaar <Bram@vim.org>
parents: 15597
diff changeset
2594 gui_x11_timer_cb, &timed_out);
12257
519e4e6bbc28 patch 8.0.1008: slow updating of terminal window in Motif
Christian Brabandt <cb@256bit.org>
parents: 11770
diff changeset
2595 #ifdef FEAT_JOB_CHANNEL
18788
e1f4e9d78a6a patch 8.1.2383: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents: 18671
diff changeset
2596 // If there is a channel with the keep_open flag we need to poll for input
e1f4e9d78a6a patch 8.1.2383: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents: 18671
diff changeset
2597 // on them.
12257
519e4e6bbc28 patch 8.0.1008: slow updating of terminal window in Motif
Christian Brabandt <cb@256bit.org>
parents: 11770
diff changeset
2598 if (channel_any_keep_open())
519e4e6bbc28 patch 8.0.1008: slow updating of terminal window in Motif
Christian Brabandt <cb@256bit.org>
parents: 11770
diff changeset
2599 channel_timer = XtAppAddTimeOut(app_context, (long_u)20,
519e4e6bbc28 patch 8.0.1008: slow updating of terminal window in Motif
Christian Brabandt <cb@256bit.org>
parents: 11770
diff changeset
2600 channel_poll_cb, (XtPointer)&channel_timer);
519e4e6bbc28 patch 8.0.1008: slow updating of terminal window in Motif
Christian Brabandt <cb@256bit.org>
parents: 11770
diff changeset
2601 #endif
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2602
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2603 focus = gui.in_focus;
15510
41fbbcea0f1b patch 8.1.0763: nobody is using the Sun Workshop support
Bram Moolenaar <Bram@vim.org>
parents: 15500
diff changeset
2604 desired = (XtIMAll);
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2605 while (!timed_out)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2606 {
18788
e1f4e9d78a6a patch 8.1.2383: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents: 18671
diff changeset
2607 // Stop or start blinking when focus changes
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2608 if (gui.in_focus != focus)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2609 {
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2610 if (gui.in_focus)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2611 gui_mch_start_blink();
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2612 else
13152
f4c3a7f410f4 patch 8.0.1450: GUI: endless loop when stopping cursor blinking
Christian Brabandt <cb@256bit.org>
parents: 12871
diff changeset
2613 gui_mch_stop_blink(TRUE);
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2614 focus = gui.in_focus;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2615 }
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2616
7109
fa95595fbc52 commit https://github.com/vim/vim/commit/93c88e0f6a4a8f7634ed84721daf4af46fc0d5db
Christian Brabandt <cb@256bit.org>
parents: 5196
diff changeset
2617 #ifdef MESSAGE_QUEUE
9179
5e18efdad322 commit https://github.com/vim/vim/commit/4231da403e3c879dd6ac261e51f4ca60813935e3
Christian Brabandt <cb@256bit.org>
parents: 8281
diff changeset
2618 # ifdef FEAT_TIMERS
5e18efdad322 commit https://github.com/vim/vim/commit/4231da403e3c879dd6ac261e51f4ca60813935e3
Christian Brabandt <cb@256bit.org>
parents: 8281
diff changeset
2619 did_add_timer = FALSE;
5e18efdad322 commit https://github.com/vim/vim/commit/4231da403e3c879dd6ac261e51f4ca60813935e3
Christian Brabandt <cb@256bit.org>
parents: 8281
diff changeset
2620 # endif
7109
fa95595fbc52 commit https://github.com/vim/vim/commit/93c88e0f6a4a8f7634ed84721daf4af46fc0d5db
Christian Brabandt <cb@256bit.org>
parents: 5196
diff changeset
2621 parse_queued_messages();
9179
5e18efdad322 commit https://github.com/vim/vim/commit/4231da403e3c879dd6ac261e51f4ca60813935e3
Christian Brabandt <cb@256bit.org>
parents: 8281
diff changeset
2622 # ifdef FEAT_TIMERS
5e18efdad322 commit https://github.com/vim/vim/commit/4231da403e3c879dd6ac261e51f4ca60813935e3
Christian Brabandt <cb@256bit.org>
parents: 8281
diff changeset
2623 if (did_add_timer)
18788
e1f4e9d78a6a patch 8.1.2383: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents: 18671
diff changeset
2624 // Need to recompute the waiting time.
9179
5e18efdad322 commit https://github.com/vim/vim/commit/4231da403e3c879dd6ac261e51f4ca60813935e3
Christian Brabandt <cb@256bit.org>
parents: 8281
diff changeset
2625 break;
5e18efdad322 commit https://github.com/vim/vim/commit/4231da403e3c879dd6ac261e51f4ca60813935e3
Christian Brabandt <cb@256bit.org>
parents: 8281
diff changeset
2626 # endif
2638
75a89c7c204e updated for version 7.3.059
Bram Moolenaar <bram@vim.org>
parents: 2520
diff changeset
2627 #endif
75a89c7c204e updated for version 7.3.059
Bram Moolenaar <bram@vim.org>
parents: 2520
diff changeset
2628
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2629 /*
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2630 * Don't use gui_mch_update() because then we will spin-lock until a
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2631 * char arrives, instead we use XtAppProcessEvent() to hang until an
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2632 * event arrives. No need to check for input_buf_full because we are
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2633 * returning as soon as it contains a single char. Note that
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2634 * XtAppNextEvent() may not be used because it will not return after a
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2635 * timer event has arrived -- webb
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2636 */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2637 XtAppProcessEvent(app_context, desired);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2638
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2639 if (input_available())
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2640 {
9179
5e18efdad322 commit https://github.com/vim/vim/commit/4231da403e3c879dd6ac261e51f4ca60813935e3
Christian Brabandt <cb@256bit.org>
parents: 8281
diff changeset
2641 retval = OK;
5e18efdad322 commit https://github.com/vim/vim/commit/4231da403e3c879dd6ac261e51f4ca60813935e3
Christian Brabandt <cb@256bit.org>
parents: 8281
diff changeset
2642 break;
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2643 }
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2644 }
9179
5e18efdad322 commit https://github.com/vim/vim/commit/4231da403e3c879dd6ac261e51f4ca60813935e3
Christian Brabandt <cb@256bit.org>
parents: 8281
diff changeset
2645
5e18efdad322 commit https://github.com/vim/vim/commit/4231da403e3c879dd6ac261e51f4ca60813935e3
Christian Brabandt <cb@256bit.org>
parents: 8281
diff changeset
2646 if (timer != (XtIntervalId)0 && !timed_out)
5e18efdad322 commit https://github.com/vim/vim/commit/4231da403e3c879dd6ac261e51f4ca60813935e3
Christian Brabandt <cb@256bit.org>
parents: 8281
diff changeset
2647 XtRemoveTimeOut(timer);
12257
519e4e6bbc28 patch 8.0.1008: slow updating of terminal window in Motif
Christian Brabandt <cb@256bit.org>
parents: 11770
diff changeset
2648 #ifdef FEAT_JOB_CHANNEL
519e4e6bbc28 patch 8.0.1008: slow updating of terminal window in Motif
Christian Brabandt <cb@256bit.org>
parents: 11770
diff changeset
2649 if (channel_timer != (XtIntervalId)0)
519e4e6bbc28 patch 8.0.1008: slow updating of terminal window in Motif
Christian Brabandt <cb@256bit.org>
parents: 11770
diff changeset
2650 XtRemoveTimeOut(channel_timer);
519e4e6bbc28 patch 8.0.1008: slow updating of terminal window in Motif
Christian Brabandt <cb@256bit.org>
parents: 11770
diff changeset
2651 #endif
9179
5e18efdad322 commit https://github.com/vim/vim/commit/4231da403e3c879dd6ac261e51f4ca60813935e3
Christian Brabandt <cb@256bit.org>
parents: 8281
diff changeset
2652
5e18efdad322 commit https://github.com/vim/vim/commit/4231da403e3c879dd6ac261e51f4ca60813935e3
Christian Brabandt <cb@256bit.org>
parents: 8281
diff changeset
2653 return retval;
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2654 }
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2655
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2656 /*
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2657 * Output routines.
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2658 */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2659
18788
e1f4e9d78a6a patch 8.1.2383: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents: 18671
diff changeset
2660 /*
e1f4e9d78a6a patch 8.1.2383: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents: 18671
diff changeset
2661 * Flush any output to the screen
e1f4e9d78a6a patch 8.1.2383: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents: 18671
diff changeset
2662 */
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2663 void
7823
bcef391c101c commit https://github.com/vim/vim/commit/68c2f638e65d914dc6e84eb7ce2624f08af525c0
Christian Brabandt <cb@256bit.org>
parents: 7803
diff changeset
2664 gui_mch_flush(void)
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2665 {
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2666 XFlush(gui.dpy);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2667 }
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2668
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2669 /*
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2670 * Clear a rectangular region of the screen from text pos (row1, col1) to
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2671 * (row2, col2) inclusive.
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2672 */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2673 void
7823
bcef391c101c commit https://github.com/vim/vim/commit/68c2f638e65d914dc6e84eb7ce2624f08af525c0
Christian Brabandt <cb@256bit.org>
parents: 7803
diff changeset
2674 gui_mch_clear_block(
bcef391c101c commit https://github.com/vim/vim/commit/68c2f638e65d914dc6e84eb7ce2624f08af525c0
Christian Brabandt <cb@256bit.org>
parents: 7803
diff changeset
2675 int row1,
bcef391c101c commit https://github.com/vim/vim/commit/68c2f638e65d914dc6e84eb7ce2624f08af525c0
Christian Brabandt <cb@256bit.org>
parents: 7803
diff changeset
2676 int col1,
bcef391c101c commit https://github.com/vim/vim/commit/68c2f638e65d914dc6e84eb7ce2624f08af525c0
Christian Brabandt <cb@256bit.org>
parents: 7803
diff changeset
2677 int row2,
bcef391c101c commit https://github.com/vim/vim/commit/68c2f638e65d914dc6e84eb7ce2624f08af525c0
Christian Brabandt <cb@256bit.org>
parents: 7803
diff changeset
2678 int col2)
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2679 {
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2680 int x;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2681
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2682 x = FILL_X(col1);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2683
18788
e1f4e9d78a6a patch 8.1.2383: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents: 18671
diff changeset
2684 // Clear one extra pixel at the far right, for when bold characters have
e1f4e9d78a6a patch 8.1.2383: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents: 18671
diff changeset
2685 // spilled over to the next column.
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2686 XFillRectangle(gui.dpy, gui.wid, gui.back_gc, x, FILL_Y(row1),
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2687 (col2 - col1 + 1) * gui.char_width + (col2 == Columns - 1),
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2688 (row2 - row1 + 1) * gui.char_height);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2689 }
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2690
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2691 void
7823
bcef391c101c commit https://github.com/vim/vim/commit/68c2f638e65d914dc6e84eb7ce2624f08af525c0
Christian Brabandt <cb@256bit.org>
parents: 7803
diff changeset
2692 gui_mch_clear_all(void)
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2693 {
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2694 XClearArea(gui.dpy, gui.wid, 0, 0, 0, 0, False);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2695 }
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2696
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2697 /*
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2698 * Delete the given number of lines from the given row, scrolling up any
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2699 * text further down within the scroll region.
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2700 */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2701 void
7823
bcef391c101c commit https://github.com/vim/vim/commit/68c2f638e65d914dc6e84eb7ce2624f08af525c0
Christian Brabandt <cb@256bit.org>
parents: 7803
diff changeset
2702 gui_mch_delete_lines(int row, int num_lines)
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2703 {
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2704 if (gui.visibility == VisibilityFullyObscured)
18788
e1f4e9d78a6a patch 8.1.2383: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents: 18671
diff changeset
2705 return; // Can't see the window
e1f4e9d78a6a patch 8.1.2383: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents: 18671
diff changeset
2706
e1f4e9d78a6a patch 8.1.2383: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents: 18671
diff changeset
2707 // copy one extra pixel at the far right, for when bold has spilled
e1f4e9d78a6a patch 8.1.2383: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents: 18671
diff changeset
2708 // over
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2709 XCopyArea(gui.dpy, gui.wid, gui.wid, gui.text_gc,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2710 FILL_X(gui.scroll_region_left), FILL_Y(row + num_lines),
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2711 gui.char_width * (gui.scroll_region_right - gui.scroll_region_left + 1)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2712 + (gui.scroll_region_right == Columns - 1),
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2713 gui.char_height * (gui.scroll_region_bot - row - num_lines + 1),
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2714 FILL_X(gui.scroll_region_left), FILL_Y(row));
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2715
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2716 gui_clear_block(gui.scroll_region_bot - num_lines + 1,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2717 gui.scroll_region_left,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2718 gui.scroll_region_bot, gui.scroll_region_right);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2719 gui_x11_check_copy_area();
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2720 }
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2721
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2722 /*
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2723 * Insert the given number of lines before the given row, scrolling down any
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2724 * following text within the scroll region.
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2725 */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2726 void
7823
bcef391c101c commit https://github.com/vim/vim/commit/68c2f638e65d914dc6e84eb7ce2624f08af525c0
Christian Brabandt <cb@256bit.org>
parents: 7803
diff changeset
2727 gui_mch_insert_lines(int row, int num_lines)
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2728 {
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2729 if (gui.visibility == VisibilityFullyObscured)
18788
e1f4e9d78a6a patch 8.1.2383: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents: 18671
diff changeset
2730 return; // Can't see the window
e1f4e9d78a6a patch 8.1.2383: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents: 18671
diff changeset
2731
e1f4e9d78a6a patch 8.1.2383: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents: 18671
diff changeset
2732 // copy one extra pixel at the far right, for when bold has spilled
e1f4e9d78a6a patch 8.1.2383: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents: 18671
diff changeset
2733 // over
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2734 XCopyArea(gui.dpy, gui.wid, gui.wid, gui.text_gc,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2735 FILL_X(gui.scroll_region_left), FILL_Y(row),
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2736 gui.char_width * (gui.scroll_region_right - gui.scroll_region_left + 1)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2737 + (gui.scroll_region_right == Columns - 1),
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2738 gui.char_height * (gui.scroll_region_bot - row - num_lines + 1),
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2739 FILL_X(gui.scroll_region_left), FILL_Y(row + num_lines));
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2740
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2741 gui_clear_block(row, gui.scroll_region_left,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2742 row + num_lines - 1, gui.scroll_region_right);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2743 gui_x11_check_copy_area();
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2744 }
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2745
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2746 /*
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2747 * Update the region revealed by scrolling up/down.
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2748 */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2749 static void
7823
bcef391c101c commit https://github.com/vim/vim/commit/68c2f638e65d914dc6e84eb7ce2624f08af525c0
Christian Brabandt <cb@256bit.org>
parents: 7803
diff changeset
2750 gui_x11_check_copy_area(void)
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2751 {
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2752 XEvent event;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2753 XGraphicsExposeEvent *gevent;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2754
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2755 if (gui.visibility != VisibilityPartiallyObscured)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2756 return;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2757
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2758 XFlush(gui.dpy);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2759
18788
e1f4e9d78a6a patch 8.1.2383: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents: 18671
diff changeset
2760 // Wait to check whether the scroll worked or not
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2761 for (;;)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2762 {
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2763 if (XCheckTypedEvent(gui.dpy, NoExpose, &event))
18788
e1f4e9d78a6a patch 8.1.2383: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents: 18671
diff changeset
2764 return; // The scroll worked.
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2765
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2766 if (XCheckTypedEvent(gui.dpy, GraphicsExpose, &event))
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2767 {
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2768 gevent = (XGraphicsExposeEvent *)&event;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2769 gui_redraw(gevent->x, gevent->y, gevent->width, gevent->height);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2770 if (gevent->count == 0)
18788
e1f4e9d78a6a patch 8.1.2383: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents: 18671
diff changeset
2771 return; // This was the last expose event
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2772 }
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2773 XSync(gui.dpy, False);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2774 }
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2775 }
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2776
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2777 /*
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2778 * X Selection stuff, for cutting and pasting text to other windows.
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2779 */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2780
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2781 void
17063
3147c7c2e86b patch 8.1.1531: clipboard type name is inconsistent
Bram Moolenaar <Bram@vim.org>
parents: 16825
diff changeset
2782 clip_mch_lose_selection(Clipboard_T *cbd)
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2783 {
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2784 clip_x11_lose_selection(vimShell, cbd);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2785 }
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2786
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2787 int
17063
3147c7c2e86b patch 8.1.1531: clipboard type name is inconsistent
Bram Moolenaar <Bram@vim.org>
parents: 16825
diff changeset
2788 clip_mch_own_selection(Clipboard_T *cbd)
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2789 {
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2790 return clip_x11_own_selection(vimShell, cbd);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2791 }
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2792
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2793 void
17063
3147c7c2e86b patch 8.1.1531: clipboard type name is inconsistent
Bram Moolenaar <Bram@vim.org>
parents: 16825
diff changeset
2794 clip_mch_request_selection(Clipboard_T *cbd)
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2795 {
7823
bcef391c101c commit https://github.com/vim/vim/commit/68c2f638e65d914dc6e84eb7ce2624f08af525c0
Christian Brabandt <cb@256bit.org>
parents: 7803
diff changeset
2796 clip_x11_request_selection(vimShell, gui.dpy, cbd);
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2797 }
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2798
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2799 void
7823
bcef391c101c commit https://github.com/vim/vim/commit/68c2f638e65d914dc6e84eb7ce2624f08af525c0
Christian Brabandt <cb@256bit.org>
parents: 7803
diff changeset
2800 clip_mch_set_selection(
17063
3147c7c2e86b patch 8.1.1531: clipboard type name is inconsistent
Bram Moolenaar <Bram@vim.org>
parents: 16825
diff changeset
2801 Clipboard_T *cbd)
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2802 {
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2803 clip_x11_set_selection(cbd);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2804 }
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2805
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2806 #if defined(FEAT_MENU) || defined(PROTO)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2807 /*
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2808 * Menu stuff.
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2809 */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2810
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2811 /*
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2812 * Make a menu either grey or not grey.
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2813 */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2814 void
7823
bcef391c101c commit https://github.com/vim/vim/commit/68c2f638e65d914dc6e84eb7ce2624f08af525c0
Christian Brabandt <cb@256bit.org>
parents: 7803
diff changeset
2815 gui_mch_menu_grey(vimmenu_T *menu, int grey)
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2816 {
31651
e5ee2ffd826a patch 9.0.1158: code is indented more than necessary
Bram Moolenaar <Bram@vim.org>
parents: 30310
diff changeset
2817 if (menu->id == (Widget)0)
e5ee2ffd826a patch 9.0.1158: code is indented more than necessary
Bram Moolenaar <Bram@vim.org>
parents: 30310
diff changeset
2818 return;
e5ee2ffd826a patch 9.0.1158: code is indented more than necessary
Bram Moolenaar <Bram@vim.org>
parents: 30310
diff changeset
2819
e5ee2ffd826a patch 9.0.1158: code is indented more than necessary
Bram Moolenaar <Bram@vim.org>
parents: 30310
diff changeset
2820 gui_mch_menu_hidden(menu, False);
e5ee2ffd826a patch 9.0.1158: code is indented more than necessary
Bram Moolenaar <Bram@vim.org>
parents: 30310
diff changeset
2821 if (grey
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2822 #ifdef FEAT_GUI_MOTIF
31651
e5ee2ffd826a patch 9.0.1158: code is indented more than necessary
Bram Moolenaar <Bram@vim.org>
parents: 30310
diff changeset
2823 || !menu->sensitive
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2824 #endif
31651
e5ee2ffd826a patch 9.0.1158: code is indented more than necessary
Bram Moolenaar <Bram@vim.org>
parents: 30310
diff changeset
2825 )
e5ee2ffd826a patch 9.0.1158: code is indented more than necessary
Bram Moolenaar <Bram@vim.org>
parents: 30310
diff changeset
2826 XtSetSensitive(menu->id, False);
e5ee2ffd826a patch 9.0.1158: code is indented more than necessary
Bram Moolenaar <Bram@vim.org>
parents: 30310
diff changeset
2827 else
e5ee2ffd826a patch 9.0.1158: code is indented more than necessary
Bram Moolenaar <Bram@vim.org>
parents: 30310
diff changeset
2828 XtSetSensitive(menu->id, True);
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2829 }
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2830
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2831 /*
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2832 * Make menu item hidden or not hidden
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2833 */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2834 void
7823
bcef391c101c commit https://github.com/vim/vim/commit/68c2f638e65d914dc6e84eb7ce2624f08af525c0
Christian Brabandt <cb@256bit.org>
parents: 7803
diff changeset
2835 gui_mch_menu_hidden(vimmenu_T *menu, int hidden)
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2836 {
31651
e5ee2ffd826a patch 9.0.1158: code is indented more than necessary
Bram Moolenaar <Bram@vim.org>
parents: 30310
diff changeset
2837 if (menu->id == (Widget)0)
e5ee2ffd826a patch 9.0.1158: code is indented more than necessary
Bram Moolenaar <Bram@vim.org>
parents: 30310
diff changeset
2838 return;
e5ee2ffd826a patch 9.0.1158: code is indented more than necessary
Bram Moolenaar <Bram@vim.org>
parents: 30310
diff changeset
2839
e5ee2ffd826a patch 9.0.1158: code is indented more than necessary
Bram Moolenaar <Bram@vim.org>
parents: 30310
diff changeset
2840 if (hidden)
e5ee2ffd826a patch 9.0.1158: code is indented more than necessary
Bram Moolenaar <Bram@vim.org>
parents: 30310
diff changeset
2841 XtUnmanageChild(menu->id);
e5ee2ffd826a patch 9.0.1158: code is indented more than necessary
Bram Moolenaar <Bram@vim.org>
parents: 30310
diff changeset
2842 else
e5ee2ffd826a patch 9.0.1158: code is indented more than necessary
Bram Moolenaar <Bram@vim.org>
parents: 30310
diff changeset
2843 XtManageChild(menu->id);
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2844 }
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2845
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2846 /*
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2847 * This is called after setting all the menus to grey/hidden or not.
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2848 */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2849 void
7823
bcef391c101c commit https://github.com/vim/vim/commit/68c2f638e65d914dc6e84eb7ce2624f08af525c0
Christian Brabandt <cb@256bit.org>
parents: 7803
diff changeset
2850 gui_mch_draw_menubar(void)
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2851 {
18788
e1f4e9d78a6a patch 8.1.2383: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents: 18671
diff changeset
2852 // Nothing to do in X
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2853 }
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2854
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2855 void
7823
bcef391c101c commit https://github.com/vim/vim/commit/68c2f638e65d914dc6e84eb7ce2624f08af525c0
Christian Brabandt <cb@256bit.org>
parents: 7803
diff changeset
2856 gui_x11_menu_cb(
bcef391c101c commit https://github.com/vim/vim/commit/68c2f638e65d914dc6e84eb7ce2624f08af525c0
Christian Brabandt <cb@256bit.org>
parents: 7803
diff changeset
2857 Widget w UNUSED,
bcef391c101c commit https://github.com/vim/vim/commit/68c2f638e65d914dc6e84eb7ce2624f08af525c0
Christian Brabandt <cb@256bit.org>
parents: 7803
diff changeset
2858 XtPointer client_data,
bcef391c101c commit https://github.com/vim/vim/commit/68c2f638e65d914dc6e84eb7ce2624f08af525c0
Christian Brabandt <cb@256bit.org>
parents: 7803
diff changeset
2859 XtPointer call_data UNUSED)
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2860 {
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2861 gui_menu_cb((vimmenu_T *)client_data);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2862 }
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2863
18788
e1f4e9d78a6a patch 8.1.2383: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents: 18671
diff changeset
2864 #endif // FEAT_MENU
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2865
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2866
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2867
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2868 /*
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2869 * Function called when window closed. Works like ":qa".
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2870 * Should put up a requester!
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2871 */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2872 static void
7823
bcef391c101c commit https://github.com/vim/vim/commit/68c2f638e65d914dc6e84eb7ce2624f08af525c0
Christian Brabandt <cb@256bit.org>
parents: 7803
diff changeset
2873 gui_x11_wm_protocol_handler(
bcef391c101c commit https://github.com/vim/vim/commit/68c2f638e65d914dc6e84eb7ce2624f08af525c0
Christian Brabandt <cb@256bit.org>
parents: 7803
diff changeset
2874 Widget w UNUSED,
bcef391c101c commit https://github.com/vim/vim/commit/68c2f638e65d914dc6e84eb7ce2624f08af525c0
Christian Brabandt <cb@256bit.org>
parents: 7803
diff changeset
2875 XtPointer client_data UNUSED,
bcef391c101c commit https://github.com/vim/vim/commit/68c2f638e65d914dc6e84eb7ce2624f08af525c0
Christian Brabandt <cb@256bit.org>
parents: 7803
diff changeset
2876 XEvent *event,
bcef391c101c commit https://github.com/vim/vim/commit/68c2f638e65d914dc6e84eb7ce2624f08af525c0
Christian Brabandt <cb@256bit.org>
parents: 7803
diff changeset
2877 Boolean *dum UNUSED)
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2878 {
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2879 /*
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2880 * Only deal with Client messages.
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2881 */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2882 if (event->type != ClientMessage)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2883 return;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2884
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2885 /*
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2886 * The WM_SAVE_YOURSELF event arrives when the window manager wants to
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2887 * exit. That can be cancelled though, thus Vim shouldn't exit here.
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2888 * Just sync our swap files.
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2889 */
1887
fc89a4f98a8b updated for version 7.2-184
vimboss
parents: 1827
diff changeset
2890 if ((Atom)((XClientMessageEvent *)event)->data.l[0] ==
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2891 wm_atoms[SAVE_YOURSELF_IDX])
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2892 {
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2893 out_flush();
18788
e1f4e9d78a6a patch 8.1.2383: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents: 18671
diff changeset
2894 ml_sync_all(FALSE, FALSE); // preserve all swap files
e1f4e9d78a6a patch 8.1.2383: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents: 18671
diff changeset
2895
e1f4e9d78a6a patch 8.1.2383: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents: 18671
diff changeset
2896 // Set the window's WM_COMMAND property, to let the window manager
e1f4e9d78a6a patch 8.1.2383: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents: 18671
diff changeset
2897 // know we are done saving ourselves. We don't want to be restarted,
e1f4e9d78a6a patch 8.1.2383: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents: 18671
diff changeset
2898 // thus set argv to NULL.
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2899 XSetCommand(gui.dpy, XtWindow(vimShell), NULL, 0);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2900 return;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2901 }
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2902
1887
fc89a4f98a8b updated for version 7.2-184
vimboss
parents: 1827
diff changeset
2903 if ((Atom)((XClientMessageEvent *)event)->data.l[0] !=
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2904 wm_atoms[DELETE_WINDOW_IDX])
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2905 return;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2906
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2907 gui_shell_closed();
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2908 }
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2909
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2910 #ifdef FEAT_CLIENTSERVER
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2911 /*
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2912 * Function called when property changed. Check for incoming commands
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2913 */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2914 static void
7823
bcef391c101c commit https://github.com/vim/vim/commit/68c2f638e65d914dc6e84eb7ce2624f08af525c0
Christian Brabandt <cb@256bit.org>
parents: 7803
diff changeset
2915 gui_x11_send_event_handler(
bcef391c101c commit https://github.com/vim/vim/commit/68c2f638e65d914dc6e84eb7ce2624f08af525c0
Christian Brabandt <cb@256bit.org>
parents: 7803
diff changeset
2916 Widget w UNUSED,
bcef391c101c commit https://github.com/vim/vim/commit/68c2f638e65d914dc6e84eb7ce2624f08af525c0
Christian Brabandt <cb@256bit.org>
parents: 7803
diff changeset
2917 XtPointer client_data UNUSED,
bcef391c101c commit https://github.com/vim/vim/commit/68c2f638e65d914dc6e84eb7ce2624f08af525c0
Christian Brabandt <cb@256bit.org>
parents: 7803
diff changeset
2918 XEvent *event,
bcef391c101c commit https://github.com/vim/vim/commit/68c2f638e65d914dc6e84eb7ce2624f08af525c0
Christian Brabandt <cb@256bit.org>
parents: 7803
diff changeset
2919 Boolean *dum UNUSED)
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2920 {
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2921 XPropertyEvent *e = (XPropertyEvent *) event;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2922
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2923 if (e->type == PropertyNotify && e->window == commWindow
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2924 && e->atom == commProperty && e->state == PropertyNewValue)
7109
fa95595fbc52 commit https://github.com/vim/vim/commit/93c88e0f6a4a8f7634ed84721daf4af46fc0d5db
Christian Brabandt <cb@256bit.org>
parents: 5196
diff changeset
2925 serverEventProc(gui.dpy, event, 0);
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2926 }
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2927 #endif
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2928
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2929 /*
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2930 * Cursor blink functions.
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2931 *
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2932 * This is a simple state machine:
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2933 * BLINK_NONE not blinking at all
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2934 * BLINK_OFF blinking, cursor is not shown
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2935 * BLINK_ON blinking, cursor is shown
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2936 */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2937
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2938 #define BLINK_NONE 0
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2939 #define BLINK_OFF 1
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2940 #define BLINK_ON 2
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2941
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2942 static int blink_state = BLINK_NONE;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2943 static long_u blink_waittime = 700;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2944 static long_u blink_ontime = 400;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2945 static long_u blink_offtime = 250;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2946 static XtIntervalId blink_timer = (XtIntervalId)0;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2947
9213
bb86514cad15 commit https://github.com/vim/vim/commit/703a8044b5393d37d355b0b1054a9a5a13912a3f
Christian Brabandt <cb@256bit.org>
parents: 9179
diff changeset
2948 int
bb86514cad15 commit https://github.com/vim/vim/commit/703a8044b5393d37d355b0b1054a9a5a13912a3f
Christian Brabandt <cb@256bit.org>
parents: 9179
diff changeset
2949 gui_mch_is_blinking(void)
bb86514cad15 commit https://github.com/vim/vim/commit/703a8044b5393d37d355b0b1054a9a5a13912a3f
Christian Brabandt <cb@256bit.org>
parents: 9179
diff changeset
2950 {
bb86514cad15 commit https://github.com/vim/vim/commit/703a8044b5393d37d355b0b1054a9a5a13912a3f
Christian Brabandt <cb@256bit.org>
parents: 9179
diff changeset
2951 return blink_state != BLINK_NONE;
bb86514cad15 commit https://github.com/vim/vim/commit/703a8044b5393d37d355b0b1054a9a5a13912a3f
Christian Brabandt <cb@256bit.org>
parents: 9179
diff changeset
2952 }
bb86514cad15 commit https://github.com/vim/vim/commit/703a8044b5393d37d355b0b1054a9a5a13912a3f
Christian Brabandt <cb@256bit.org>
parents: 9179
diff changeset
2953
9428
0c7f47088e55 commit https://github.com/vim/vim/commit/9d5d3c9c4468ad76f16b50eabd3d9e7eab2ed44d
Christian Brabandt <cb@256bit.org>
parents: 9213
diff changeset
2954 int
0c7f47088e55 commit https://github.com/vim/vim/commit/9d5d3c9c4468ad76f16b50eabd3d9e7eab2ed44d
Christian Brabandt <cb@256bit.org>
parents: 9213
diff changeset
2955 gui_mch_is_blink_off(void)
0c7f47088e55 commit https://github.com/vim/vim/commit/9d5d3c9c4468ad76f16b50eabd3d9e7eab2ed44d
Christian Brabandt <cb@256bit.org>
parents: 9213
diff changeset
2956 {
0c7f47088e55 commit https://github.com/vim/vim/commit/9d5d3c9c4468ad76f16b50eabd3d9e7eab2ed44d
Christian Brabandt <cb@256bit.org>
parents: 9213
diff changeset
2957 return blink_state == BLINK_OFF;
0c7f47088e55 commit https://github.com/vim/vim/commit/9d5d3c9c4468ad76f16b50eabd3d9e7eab2ed44d
Christian Brabandt <cb@256bit.org>
parents: 9213
diff changeset
2958 }
0c7f47088e55 commit https://github.com/vim/vim/commit/9d5d3c9c4468ad76f16b50eabd3d9e7eab2ed44d
Christian Brabandt <cb@256bit.org>
parents: 9213
diff changeset
2959
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2960 void
7825
7898da204b98 commit https://github.com/vim/vim/commit/02fdaeaa697fb5af4ba7fee6e209b3c2c825bb4f
Christian Brabandt <cb@256bit.org>
parents: 7823
diff changeset
2961 gui_mch_set_blinking(long waittime, long on, long off)
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2962 {
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2963 blink_waittime = waittime;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2964 blink_ontime = on;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2965 blink_offtime = off;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2966 }
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2967
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2968 /*
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2969 * Stop the cursor blinking. Show the cursor if it wasn't shown.
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2970 */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2971 void
13152
f4c3a7f410f4 patch 8.0.1450: GUI: endless loop when stopping cursor blinking
Christian Brabandt <cb@256bit.org>
parents: 12871
diff changeset
2972 gui_mch_stop_blink(int may_call_gui_update_cursor)
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2973 {
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2974 if (blink_timer != (XtIntervalId)0)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2975 {
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2976 XtRemoveTimeOut(blink_timer);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2977 blink_timer = (XtIntervalId)0;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2978 }
13152
f4c3a7f410f4 patch 8.0.1450: GUI: endless loop when stopping cursor blinking
Christian Brabandt <cb@256bit.org>
parents: 12871
diff changeset
2979 if (blink_state == BLINK_OFF && may_call_gui_update_cursor)
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2980 gui_update_cursor(TRUE, FALSE);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2981 blink_state = BLINK_NONE;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2982 }
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2983
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2984 static void
7823
bcef391c101c commit https://github.com/vim/vim/commit/68c2f638e65d914dc6e84eb7ce2624f08af525c0
Christian Brabandt <cb@256bit.org>
parents: 7803
diff changeset
2985 gui_x11_blink_cb(
bcef391c101c commit https://github.com/vim/vim/commit/68c2f638e65d914dc6e84eb7ce2624f08af525c0
Christian Brabandt <cb@256bit.org>
parents: 7803
diff changeset
2986 XtPointer timed_out UNUSED,
bcef391c101c commit https://github.com/vim/vim/commit/68c2f638e65d914dc6e84eb7ce2624f08af525c0
Christian Brabandt <cb@256bit.org>
parents: 7803
diff changeset
2987 XtIntervalId *interval_id UNUSED)
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2988 {
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2989 if (blink_state == BLINK_ON)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2990 {
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2991 gui_undraw_cursor();
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2992 blink_state = BLINK_OFF;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2993 blink_timer = XtAppAddTimeOut(app_context, blink_offtime,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2994 gui_x11_blink_cb, NULL);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2995 }
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2996 else
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2997 {
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2998 gui_update_cursor(TRUE, FALSE);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2999 blink_state = BLINK_ON;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3000 blink_timer = XtAppAddTimeOut(app_context, blink_ontime,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3001 gui_x11_blink_cb, NULL);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3002 }
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3003 }
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3004
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3005 /*
12257
519e4e6bbc28 patch 8.0.1008: slow updating of terminal window in Motif
Christian Brabandt <cb@256bit.org>
parents: 11770
diff changeset
3006 * Start the cursor blinking. If it was already blinking, this restarts the
519e4e6bbc28 patch 8.0.1008: slow updating of terminal window in Motif
Christian Brabandt <cb@256bit.org>
parents: 11770
diff changeset
3007 * waiting time and shows the cursor.
519e4e6bbc28 patch 8.0.1008: slow updating of terminal window in Motif
Christian Brabandt <cb@256bit.org>
parents: 11770
diff changeset
3008 */
519e4e6bbc28 patch 8.0.1008: slow updating of terminal window in Motif
Christian Brabandt <cb@256bit.org>
parents: 11770
diff changeset
3009 void
519e4e6bbc28 patch 8.0.1008: slow updating of terminal window in Motif
Christian Brabandt <cb@256bit.org>
parents: 11770
diff changeset
3010 gui_mch_start_blink(void)
519e4e6bbc28 patch 8.0.1008: slow updating of terminal window in Motif
Christian Brabandt <cb@256bit.org>
parents: 11770
diff changeset
3011 {
519e4e6bbc28 patch 8.0.1008: slow updating of terminal window in Motif
Christian Brabandt <cb@256bit.org>
parents: 11770
diff changeset
3012 if (blink_timer != (XtIntervalId)0)
519e4e6bbc28 patch 8.0.1008: slow updating of terminal window in Motif
Christian Brabandt <cb@256bit.org>
parents: 11770
diff changeset
3013 XtRemoveTimeOut(blink_timer);
18788
e1f4e9d78a6a patch 8.1.2383: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents: 18671
diff changeset
3014 // Only switch blinking on if none of the times is zero
12257
519e4e6bbc28 patch 8.0.1008: slow updating of terminal window in Motif
Christian Brabandt <cb@256bit.org>
parents: 11770
diff changeset
3015 if (blink_waittime && blink_ontime && blink_offtime && gui.in_focus)
519e4e6bbc28 patch 8.0.1008: slow updating of terminal window in Motif
Christian Brabandt <cb@256bit.org>
parents: 11770
diff changeset
3016 {
519e4e6bbc28 patch 8.0.1008: slow updating of terminal window in Motif
Christian Brabandt <cb@256bit.org>
parents: 11770
diff changeset
3017 blink_timer = XtAppAddTimeOut(app_context, blink_waittime,
519e4e6bbc28 patch 8.0.1008: slow updating of terminal window in Motif
Christian Brabandt <cb@256bit.org>
parents: 11770
diff changeset
3018 gui_x11_blink_cb, NULL);
519e4e6bbc28 patch 8.0.1008: slow updating of terminal window in Motif
Christian Brabandt <cb@256bit.org>
parents: 11770
diff changeset
3019 blink_state = BLINK_ON;
519e4e6bbc28 patch 8.0.1008: slow updating of terminal window in Motif
Christian Brabandt <cb@256bit.org>
parents: 11770
diff changeset
3020 gui_update_cursor(TRUE, FALSE);
519e4e6bbc28 patch 8.0.1008: slow updating of terminal window in Motif
Christian Brabandt <cb@256bit.org>
parents: 11770
diff changeset
3021 }
519e4e6bbc28 patch 8.0.1008: slow updating of terminal window in Motif
Christian Brabandt <cb@256bit.org>
parents: 11770
diff changeset
3022 }
519e4e6bbc28 patch 8.0.1008: slow updating of terminal window in Motif
Christian Brabandt <cb@256bit.org>
parents: 11770
diff changeset
3023
519e4e6bbc28 patch 8.0.1008: slow updating of terminal window in Motif
Christian Brabandt <cb@256bit.org>
parents: 11770
diff changeset
3024 /*
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3025 * Return the RGB value of a pixel as a long.
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3026 */
9939
ccb6461b82df commit https://github.com/vim/vim/commit/1b58cdd160c2e0ada0f638679a2aa27e4665fc48
Christian Brabandt <cb@256bit.org>
parents: 9634
diff changeset
3027 guicolor_T
7823
bcef391c101c commit https://github.com/vim/vim/commit/68c2f638e65d914dc6e84eb7ce2624f08af525c0
Christian Brabandt <cb@256bit.org>
parents: 7803
diff changeset
3028 gui_mch_get_rgb(guicolor_T pixel)
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3029 {
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3030 XColor xc;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3031 Colormap colormap;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3032
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3033 colormap = DefaultColormap(gui.dpy, XDefaultScreen(gui.dpy));
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3034 xc.pixel = pixel;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3035 XQueryColor(gui.dpy, colormap, &xc);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3036
9939
ccb6461b82df commit https://github.com/vim/vim/commit/1b58cdd160c2e0ada0f638679a2aa27e4665fc48
Christian Brabandt <cb@256bit.org>
parents: 9634
diff changeset
3037 return (guicolor_T)(((xc.red & 0xff00) << 8) + (xc.green & 0xff00)
ccb6461b82df commit https://github.com/vim/vim/commit/1b58cdd160c2e0ada0f638679a2aa27e4665fc48
Christian Brabandt <cb@256bit.org>
parents: 9634
diff changeset
3038 + ((unsigned)xc.blue >> 8));
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3039 }
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3040
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3041 /*
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3042 * Add the callback functions.
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3043 */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3044 void
7823
bcef391c101c commit https://github.com/vim/vim/commit/68c2f638e65d914dc6e84eb7ce2624f08af525c0
Christian Brabandt <cb@256bit.org>
parents: 7803
diff changeset
3045 gui_x11_callbacks(Widget textArea, Widget vimForm)
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3046 {
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3047 XtAddEventHandler(textArea, VisibilityChangeMask, FALSE,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3048 gui_x11_visibility_cb, (XtPointer)0);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3049
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3050 XtAddEventHandler(textArea, ExposureMask, FALSE, gui_x11_expose_cb,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3051 (XtPointer)0);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3052
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3053 XtAddEventHandler(vimShell, StructureNotifyMask, FALSE,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3054 gui_x11_resize_window_cb, (XtPointer)0);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3055
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3056 XtAddEventHandler(vimShell, FocusChangeMask, FALSE, gui_x11_focus_change_cb,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3057 (XtPointer)0);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3058 /*
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3059 * Only install these enter/leave callbacks when 'p' in 'guioptions'.
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3060 * Only needed for some window managers.
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3061 */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3062 if (vim_strchr(p_go, GO_POINTER) != NULL)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3063 {
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3064 XtAddEventHandler(vimShell, LeaveWindowMask, FALSE, gui_x11_leave_cb,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3065 (XtPointer)0);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3066 XtAddEventHandler(textArea, LeaveWindowMask, FALSE, gui_x11_leave_cb,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3067 (XtPointer)0);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3068 XtAddEventHandler(textArea, EnterWindowMask, FALSE, gui_x11_enter_cb,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3069 (XtPointer)0);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3070 XtAddEventHandler(vimShell, EnterWindowMask, FALSE, gui_x11_enter_cb,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3071 (XtPointer)0);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3072 }
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3073
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3074 XtAddEventHandler(vimForm, KeyPressMask, FALSE, gui_x11_key_hit_cb,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3075 (XtPointer)0);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3076 XtAddEventHandler(textArea, KeyPressMask, FALSE, gui_x11_key_hit_cb,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3077 (XtPointer)0);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3078
18788
e1f4e9d78a6a patch 8.1.2383: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents: 18671
diff changeset
3079 // get pointer moved events from scrollbar, needed for 'mousefocus'
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3080 XtAddEventHandler(vimForm, PointerMotionMask,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3081 FALSE, gui_x11_mouse_cb, (XtPointer)1);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3082 XtAddEventHandler(textArea, ButtonPressMask | ButtonReleaseMask |
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3083 ButtonMotionMask | PointerMotionMask,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3084 FALSE, gui_x11_mouse_cb, (XtPointer)0);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3085 }
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3086
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3087 /*
88
2b4debdc8d2c updated for version 7.0035
vimboss
parents: 51
diff changeset
3088 * Get current mouse coordinates in text window.
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3089 */
88
2b4debdc8d2c updated for version 7.0035
vimboss
parents: 51
diff changeset
3090 void
2b4debdc8d2c updated for version 7.0035
vimboss
parents: 51
diff changeset
3091 gui_mch_getmouse(int *x, int *y)
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3092 {
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3093 int rootx, rooty, winx, winy;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3094 Window root, child;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3095 unsigned int mask;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3096
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3097 if (gui.wid && XQueryPointer(gui.dpy, gui.wid, &root, &child,
31804
50555279168b patch 9.0.1234: the code style has to be checked manually
Bram Moolenaar <Bram@vim.org>
parents: 31651
diff changeset
3098 &rootx, &rooty, &winx, &winy, &mask))
50555279168b patch 9.0.1234: the code style has to be checked manually
Bram Moolenaar <Bram@vim.org>
parents: 31651
diff changeset
3099 {
88
2b4debdc8d2c updated for version 7.0035
vimboss
parents: 51
diff changeset
3100 *x = winx;
2b4debdc8d2c updated for version 7.0035
vimboss
parents: 51
diff changeset
3101 *y = winy;
31804
50555279168b patch 9.0.1234: the code style has to be checked manually
Bram Moolenaar <Bram@vim.org>
parents: 31651
diff changeset
3102 }
50555279168b patch 9.0.1234: the code style has to be checked manually
Bram Moolenaar <Bram@vim.org>
parents: 31651
diff changeset
3103 else
50555279168b patch 9.0.1234: the code style has to be checked manually
Bram Moolenaar <Bram@vim.org>
parents: 31651
diff changeset
3104 {
88
2b4debdc8d2c updated for version 7.0035
vimboss
parents: 51
diff changeset
3105 *x = -1;
2b4debdc8d2c updated for version 7.0035
vimboss
parents: 51
diff changeset
3106 *y = -1;
2b4debdc8d2c updated for version 7.0035
vimboss
parents: 51
diff changeset
3107 }
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3108 }
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3109
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3110 void
7823
bcef391c101c commit https://github.com/vim/vim/commit/68c2f638e65d914dc6e84eb7ce2624f08af525c0
Christian Brabandt <cb@256bit.org>
parents: 7803
diff changeset
3111 gui_mch_setmouse(int x, int y)
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3112 {
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3113 if (gui.wid)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3114 XWarpPointer(gui.dpy, (Window)0, gui.wid, 0, 0, 0, 0, x, y);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3115 }
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3116
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3117 #if (defined(FEAT_GUI_MOTIF) && defined(FEAT_MENU)) || defined(PROTO)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3118 XButtonPressedEvent *
7823
bcef391c101c commit https://github.com/vim/vim/commit/68c2f638e65d914dc6e84eb7ce2624f08af525c0
Christian Brabandt <cb@256bit.org>
parents: 7803
diff changeset
3119 gui_x11_get_last_mouse_event(void)
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3120 {
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3121 return &last_mouse_event;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3122 }
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3123 #endif
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3124
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3125 #if defined(FEAT_SIGN_ICONS) || defined(PROTO)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3126
18788
e1f4e9d78a6a patch 8.1.2383: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents: 18671
diff changeset
3127 // Signs are currently always 2 chars wide. Hopefully the font is big enough
e1f4e9d78a6a patch 8.1.2383: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents: 18671
diff changeset
3128 // to provide room for the bitmap!
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3129 # define SIGN_WIDTH (gui.char_width * 2)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3130
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3131 void
7823
bcef391c101c commit https://github.com/vim/vim/commit/68c2f638e65d914dc6e84eb7ce2624f08af525c0
Christian Brabandt <cb@256bit.org>
parents: 7803
diff changeset
3132 gui_mch_drawsign(int row, int col, int typenr)
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3133 {
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3134 XImage *sign;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3135
31651
e5ee2ffd826a patch 9.0.1158: code is indented more than necessary
Bram Moolenaar <Bram@vim.org>
parents: 30310
diff changeset
3136 if (!gui.in_use || (sign = (XImage *)sign_get_image(typenr)) == NULL)
e5ee2ffd826a patch 9.0.1158: code is indented more than necessary
Bram Moolenaar <Bram@vim.org>
parents: 30310
diff changeset
3137 return;
e5ee2ffd826a patch 9.0.1158: code is indented more than necessary
Bram Moolenaar <Bram@vim.org>
parents: 30310
diff changeset
3138
e5ee2ffd826a patch 9.0.1158: code is indented more than necessary
Bram Moolenaar <Bram@vim.org>
parents: 30310
diff changeset
3139 XClearArea(gui.dpy, gui.wid, TEXT_X(col), TEXT_Y(row) - sign->height,
e5ee2ffd826a patch 9.0.1158: code is indented more than necessary
Bram Moolenaar <Bram@vim.org>
parents: 30310
diff changeset
3140 SIGN_WIDTH, gui.char_height, FALSE);
e5ee2ffd826a patch 9.0.1158: code is indented more than necessary
Bram Moolenaar <Bram@vim.org>
parents: 30310
diff changeset
3141 XPutImage(gui.dpy, gui.wid, gui.text_gc, sign, 0, 0,
e5ee2ffd826a patch 9.0.1158: code is indented more than necessary
Bram Moolenaar <Bram@vim.org>
parents: 30310
diff changeset
3142 TEXT_X(col) + (SIGN_WIDTH - sign->width) / 2,
e5ee2ffd826a patch 9.0.1158: code is indented more than necessary
Bram Moolenaar <Bram@vim.org>
parents: 30310
diff changeset
3143 TEXT_Y(row) - sign->height,
e5ee2ffd826a patch 9.0.1158: code is indented more than necessary
Bram Moolenaar <Bram@vim.org>
parents: 30310
diff changeset
3144 sign->width, sign->height);
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3145 }
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3146
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3147 void *
7823
bcef391c101c commit https://github.com/vim/vim/commit/68c2f638e65d914dc6e84eb7ce2624f08af525c0
Christian Brabandt <cb@256bit.org>
parents: 7803
diff changeset
3148 gui_mch_register_sign(char_u *signfile)
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3149 {
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3150 XpmAttributes attrs;
1827
0e4c64dfc611 updated for version 7.2-125
vimboss
parents: 1737
diff changeset
3151 XImage *sign = NULL;
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3152 int status;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3153
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3154 /*
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3155 * Setup the color substitution table.
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3156 */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3157 if (signfile[0] != NUL && signfile[0] != '-')
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3158 {
1827
0e4c64dfc611 updated for version 7.2-125
vimboss
parents: 1737
diff changeset
3159 XpmColorSymbol color[5] =
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3160 {
1827
0e4c64dfc611 updated for version 7.2-125
vimboss
parents: 1737
diff changeset
3161 {"none", NULL, 0},
0e4c64dfc611 updated for version 7.2-125
vimboss
parents: 1737
diff changeset
3162 {"iconColor1", NULL, 0},
0e4c64dfc611 updated for version 7.2-125
vimboss
parents: 1737
diff changeset
3163 {"bottomShadowColor", NULL, 0},
0e4c64dfc611 updated for version 7.2-125
vimboss
parents: 1737
diff changeset
3164 {"topShadowColor", NULL, 0},
0e4c64dfc611 updated for version 7.2-125
vimboss
parents: 1737
diff changeset
3165 {"selectColor", NULL, 0}
0e4c64dfc611 updated for version 7.2-125
vimboss
parents: 1737
diff changeset
3166 };
0e4c64dfc611 updated for version 7.2-125
vimboss
parents: 1737
diff changeset
3167 attrs.valuemask = XpmColorSymbols;
0e4c64dfc611 updated for version 7.2-125
vimboss
parents: 1737
diff changeset
3168 attrs.numsymbols = 2;
0e4c64dfc611 updated for version 7.2-125
vimboss
parents: 1737
diff changeset
3169 attrs.colorsymbols = color;
0e4c64dfc611 updated for version 7.2-125
vimboss
parents: 1737
diff changeset
3170 attrs.colorsymbols[0].pixel = gui.back_pixel;
0e4c64dfc611 updated for version 7.2-125
vimboss
parents: 1737
diff changeset
3171 attrs.colorsymbols[1].pixel = gui.norm_pixel;
0e4c64dfc611 updated for version 7.2-125
vimboss
parents: 1737
diff changeset
3172 status = XpmReadFileToImage(gui.dpy, (char *)signfile,
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3173 &sign, NULL, &attrs);
1827
0e4c64dfc611 updated for version 7.2-125
vimboss
parents: 1737
diff changeset
3174 if (status == 0)
0e4c64dfc611 updated for version 7.2-125
vimboss
parents: 1737
diff changeset
3175 {
18788
e1f4e9d78a6a patch 8.1.2383: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents: 18671
diff changeset
3176 // Sign width is fixed at two columns now.
e1f4e9d78a6a patch 8.1.2383: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents: 18671
diff changeset
3177 // if (sign->width > gui.sign_width)
e1f4e9d78a6a patch 8.1.2383: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents: 18671
diff changeset
3178 // gui.sign_width = sign->width + 8;
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3179 }
1827
0e4c64dfc611 updated for version 7.2-125
vimboss
parents: 1737
diff changeset
3180 else
26883
7f150a4936f2 patch 8.2.3970: error messages are spread out
Bram Moolenaar <Bram@vim.org>
parents: 26877
diff changeset
3181 emsg(_(e_couldnt_read_in_sign_data));
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3182 }
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3183
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3184 return (void *)sign;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3185 }
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3186
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3187 void
7823
bcef391c101c commit https://github.com/vim/vim/commit/68c2f638e65d914dc6e84eb7ce2624f08af525c0
Christian Brabandt <cb@256bit.org>
parents: 7803
diff changeset
3188 gui_mch_destroy_sign(void *sign)
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3189 {
1827
0e4c64dfc611 updated for version 7.2-125
vimboss
parents: 1737
diff changeset
3190 XDestroyImage((XImage*)sign);
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3191 }
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3192 #endif
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3193
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3194
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3195 #ifdef FEAT_MOUSESHAPE
18788
e1f4e9d78a6a patch 8.1.2383: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents: 18671
diff changeset
3196 // The last set mouse pointer shape is remembered, to be used when it goes
e1f4e9d78a6a patch 8.1.2383: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents: 18671
diff changeset
3197 // from hidden to not hidden.
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3198 static int last_shape = 0;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3199 #endif
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3200
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3201 /*
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3202 * Use the blank mouse pointer or not.
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3203 */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3204 void
7823
bcef391c101c commit https://github.com/vim/vim/commit/68c2f638e65d914dc6e84eb7ce2624f08af525c0
Christian Brabandt <cb@256bit.org>
parents: 7803
diff changeset
3205 gui_mch_mousehide(
18788
e1f4e9d78a6a patch 8.1.2383: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents: 18671
diff changeset
3206 int hide) // TRUE = use blank ptr, FALSE = use parent ptr
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3207 {
31651
e5ee2ffd826a patch 9.0.1158: code is indented more than necessary
Bram Moolenaar <Bram@vim.org>
parents: 30310
diff changeset
3208 if (gui.pointer_hidden == hide)
e5ee2ffd826a patch 9.0.1158: code is indented more than necessary
Bram Moolenaar <Bram@vim.org>
parents: 30310
diff changeset
3209 return;
e5ee2ffd826a patch 9.0.1158: code is indented more than necessary
Bram Moolenaar <Bram@vim.org>
parents: 30310
diff changeset
3210
e5ee2ffd826a patch 9.0.1158: code is indented more than necessary
Bram Moolenaar <Bram@vim.org>
parents: 30310
diff changeset
3211 gui.pointer_hidden = hide;
e5ee2ffd826a patch 9.0.1158: code is indented more than necessary
Bram Moolenaar <Bram@vim.org>
parents: 30310
diff changeset
3212 if (hide)
e5ee2ffd826a patch 9.0.1158: code is indented more than necessary
Bram Moolenaar <Bram@vim.org>
parents: 30310
diff changeset
3213 XDefineCursor(gui.dpy, gui.wid, gui.blank_pointer);
e5ee2ffd826a patch 9.0.1158: code is indented more than necessary
Bram Moolenaar <Bram@vim.org>
parents: 30310
diff changeset
3214 else
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3215 #ifdef FEAT_MOUSESHAPE
31651
e5ee2ffd826a patch 9.0.1158: code is indented more than necessary
Bram Moolenaar <Bram@vim.org>
parents: 30310
diff changeset
3216 mch_set_mouse_shape(last_shape);
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3217 #else
31651
e5ee2ffd826a patch 9.0.1158: code is indented more than necessary
Bram Moolenaar <Bram@vim.org>
parents: 30310
diff changeset
3218 XUndefineCursor(gui.dpy, gui.wid);
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3219 #endif
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3220 }
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3221
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3222 #if defined(FEAT_MOUSESHAPE) || defined(PROTO)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3223
18788
e1f4e9d78a6a patch 8.1.2383: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents: 18671
diff changeset
3224 // Table for shape IDs. 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: 18671
diff changeset
3225 // misc2.c!
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3226 static int mshape_ids[] =
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3227 {
18788
e1f4e9d78a6a patch 8.1.2383: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents: 18671
diff changeset
3228 XC_left_ptr, // arrow
e1f4e9d78a6a patch 8.1.2383: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents: 18671
diff changeset
3229 0, // blank
e1f4e9d78a6a patch 8.1.2383: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents: 18671
diff changeset
3230 XC_xterm, // beam
e1f4e9d78a6a patch 8.1.2383: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents: 18671
diff changeset
3231 XC_sb_v_double_arrow, // updown
e1f4e9d78a6a patch 8.1.2383: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents: 18671
diff changeset
3232 XC_sizing, // udsizing
e1f4e9d78a6a patch 8.1.2383: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents: 18671
diff changeset
3233 XC_sb_h_double_arrow, // leftright
e1f4e9d78a6a patch 8.1.2383: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents: 18671
diff changeset
3234 XC_sizing, // lrsizing
e1f4e9d78a6a patch 8.1.2383: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents: 18671
diff changeset
3235 XC_watch, // busy
e1f4e9d78a6a patch 8.1.2383: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents: 18671
diff changeset
3236 XC_X_cursor, // no
e1f4e9d78a6a patch 8.1.2383: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents: 18671
diff changeset
3237 XC_crosshair, // crosshair
e1f4e9d78a6a patch 8.1.2383: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents: 18671
diff changeset
3238 XC_hand1, // hand1
e1f4e9d78a6a patch 8.1.2383: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents: 18671
diff changeset
3239 XC_hand2, // hand2
e1f4e9d78a6a patch 8.1.2383: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents: 18671
diff changeset
3240 XC_pencil, // pencil
e1f4e9d78a6a patch 8.1.2383: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents: 18671
diff changeset
3241 XC_question_arrow, // question
e1f4e9d78a6a patch 8.1.2383: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents: 18671
diff changeset
3242 XC_right_ptr, // right-arrow
e1f4e9d78a6a patch 8.1.2383: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents: 18671
diff changeset
3243 XC_center_ptr, // up-arrow
e1f4e9d78a6a patch 8.1.2383: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents: 18671
diff changeset
3244 XC_left_ptr // last one
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3245 };
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3246
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3247 void
7823
bcef391c101c commit https://github.com/vim/vim/commit/68c2f638e65d914dc6e84eb7ce2624f08af525c0
Christian Brabandt <cb@256bit.org>
parents: 7803
diff changeset
3248 mch_set_mouse_shape(int shape)
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3249 {
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3250 int id;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3251
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3252 if (!gui.in_use)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3253 return;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3254
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3255 if (shape == MSHAPE_HIDE || gui.pointer_hidden)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3256 XDefineCursor(gui.dpy, gui.wid, gui.blank_pointer);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3257 else
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3258 {
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3259 if (shape >= MSHAPE_NUMBERED)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3260 {
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3261 id = shape - MSHAPE_NUMBERED;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3262 if (id >= XC_num_glyphs)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3263 id = XC_left_ptr;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3264 else
18788
e1f4e9d78a6a patch 8.1.2383: using old C style comments
Bram Moolenaar <Bram@vim.org>
parents: 18671
diff changeset
3265 id &= ~1; // they are always even (why?)
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3266 }
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3267 else
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3268 id = mshape_ids[shape];
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3269
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3270 XDefineCursor(gui.dpy, gui.wid, XCreateFontCursor(gui.dpy, id));
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3271 }
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3272 if (shape != MSHAPE_HIDE)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3273 last_shape = shape;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3274 }
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3275 #endif
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3276
12871
1a450ce6980c patch 8.0.1312: balloon_show() only works in terminal when compiled with GUI
Christian Brabandt <cb@256bit.org>
parents: 12317
diff changeset
3277 #if (defined(FEAT_TOOLBAR) && defined(FEAT_BEVAL_GUI)) || defined(PROTO)
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3278 /*
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3279 * Set the balloon-eval used for the tooltip of a toolbar menu item.
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3280 * The check for a non-toolbar item was added, because there is a crash when
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3281 * passing a normal menu item here. Can't explain that, but better avoid it.
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3282 */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3283 void
7823
bcef391c101c commit https://github.com/vim/vim/commit/68c2f638e65d914dc6e84eb7ce2624f08af525c0
Christian Brabandt <cb@256bit.org>
parents: 7803
diff changeset
3284 gui_mch_menu_set_tip(vimmenu_T *menu)
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3285 {
31651
e5ee2ffd826a patch 9.0.1158: code is indented more than necessary
Bram Moolenaar <Bram@vim.org>
parents: 30310
diff changeset
3286 if (menu->id == NULL || menu->parent == NULL
e5ee2ffd826a patch 9.0.1158: code is indented more than necessary
Bram Moolenaar <Bram@vim.org>
parents: 30310
diff changeset
3287 || !menu_is_toolbar(menu->parent->name))
e5ee2ffd826a patch 9.0.1158: code is indented more than necessary
Bram Moolenaar <Bram@vim.org>
parents: 30310
diff changeset
3288 return;
e5ee2ffd826a patch 9.0.1158: code is indented more than necessary
Bram Moolenaar <Bram@vim.org>
parents: 30310
diff changeset
3289
e5ee2ffd826a patch 9.0.1158: code is indented more than necessary
Bram Moolenaar <Bram@vim.org>
parents: 30310
diff changeset
3290 // Always destroy and create the balloon, in case the string was
e5ee2ffd826a patch 9.0.1158: code is indented more than necessary
Bram Moolenaar <Bram@vim.org>
parents: 30310
diff changeset
3291 // changed.
e5ee2ffd826a patch 9.0.1158: code is indented more than necessary
Bram Moolenaar <Bram@vim.org>
parents: 30310
diff changeset
3292 if (menu->tip != NULL)
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3293 {
31651
e5ee2ffd826a patch 9.0.1158: code is indented more than necessary
Bram Moolenaar <Bram@vim.org>
parents: 30310
diff changeset
3294 gui_mch_destroy_beval_area(menu->tip);
e5ee2ffd826a patch 9.0.1158: code is indented more than necessary
Bram Moolenaar <Bram@vim.org>
parents: 30310
diff changeset
3295 menu->tip = NULL;
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3296 }
31651
e5ee2ffd826a patch 9.0.1158: code is indented more than necessary
Bram Moolenaar <Bram@vim.org>
parents: 30310
diff changeset
3297 if (menu->strings[MENU_INDEX_TIP] != NULL)
e5ee2ffd826a patch 9.0.1158: code is indented more than necessary
Bram Moolenaar <Bram@vim.org>
parents: 30310
diff changeset
3298 menu->tip = gui_mch_create_beval_area(
e5ee2ffd826a patch 9.0.1158: code is indented more than necessary
Bram Moolenaar <Bram@vim.org>
parents: 30310
diff changeset
3299 menu->id,
e5ee2ffd826a patch 9.0.1158: code is indented more than necessary
Bram Moolenaar <Bram@vim.org>
parents: 30310
diff changeset
3300 menu->strings[MENU_INDEX_TIP],
e5ee2ffd826a patch 9.0.1158: code is indented more than necessary
Bram Moolenaar <Bram@vim.org>
parents: 30310
diff changeset
3301 NULL,
e5ee2ffd826a patch 9.0.1158: code is indented more than necessary
Bram Moolenaar <Bram@vim.org>
parents: 30310
diff changeset
3302 NULL);
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3303 }
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3304 #endif