annotate src/gui_photon.c @ 10098:72e4b7f90465 v7.4.2320

commit https://github.com/vim/vim/commit/dda933d06c06c2792bd686d059f6ad19191ad30b Author: Bram Moolenaar <Bram@vim.org> Date: Sat Sep 3 21:04:58 2016 +0200 patch 7.4.2320 Problem: Redraw problem when using 'incsearch'. Solution: Save the current view when deleting characters. (Christian Brabandt) Fix that the '" mark is set in the wrong position. Don't change the search start when using BS.
author Christian Brabandt <cb@256bit.org>
date Sat, 03 Sep 2016 21:15:06 +0200
parents 4aead6a9b7a9
children 5a5709918a98
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 * Photon GUI support by Julian Kinraid
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
5 *
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
6 * Do ":help uganda" in Vim to read copying and usage conditions.
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
7 * Do ":help credits" in Vim to see a list of people who contributed.
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
8 *
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
9 *
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
10 * Clipboard support is in os_qnx.c
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
11 * PhAttach() is called in os_qnx.c:qnx_init()
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
12 */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
13
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
14 #include "vim.h"
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
15
3927
e6d8b44065bc updated for version 7.3.719
Bram Moolenaar <bram@vim.org>
parents: 3076
diff changeset
16 /* cproto fails on missing include files */
e6d8b44065bc updated for version 7.3.719
Bram Moolenaar <bram@vim.org>
parents: 3076
diff changeset
17 #ifndef PROTO
e6d8b44065bc updated for version 7.3.719
Bram Moolenaar <bram@vim.org>
parents: 3076
diff changeset
18 # ifdef FEAT_TOOLBAR
e6d8b44065bc updated for version 7.3.719
Bram Moolenaar <bram@vim.org>
parents: 3076
diff changeset
19 # include <photon/PxImage.h>
e6d8b44065bc updated for version 7.3.719
Bram Moolenaar <bram@vim.org>
parents: 3076
diff changeset
20 # endif
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
21 #endif
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
22
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
23 #if !defined(__QNX__)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
24 /* Used when generating prototypes. */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
25 # define PgColor_t int
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
26 # define PhEvent_t int
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
27 # define PhPoint_t int
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
28 # define PtWidget_t int
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
29 # define Pg_BLACK 0
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
30 # define PtCallbackF_t int
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
31 # define PtCallbackInfo_t int
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
32 # define PhTile_t int
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
33 # define PtWidget_t int
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
34 # define PhImage_t int
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
35 #endif
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
36
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
37 #define ARRAY_LENGTH(a) (sizeof(a) / sizeof(a[0]))
2980
847733973bfd updated for version 7.3.262
Bram Moolenaar <bram@vim.org>
parents: 2684
diff changeset
38 #define RGB(r, g, b) PgRGB(r, g, b)
847733973bfd updated for version 7.3.262
Bram Moolenaar <bram@vim.org>
parents: 2684
diff changeset
39
847733973bfd updated for version 7.3.262
Bram Moolenaar <bram@vim.org>
parents: 2684
diff changeset
40 #define EVENT_BUFFER_SIZE sizeof(PhEvent_t) + 1000
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
41
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
42 /* Some defines for gui_mch_mousehide() */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
43 #define MOUSE_HIDE TRUE
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
44 #define MOUSE_SHOW FALSE
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
45
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
46 /* Optional support for using a PtPanelGroup widget, needs work */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
47 #undef USE_PANEL_GROUP
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
48
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
49 #ifdef USE_PANEL_GROUP
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
50 static char *empty_title = " ";
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
51 static char **panel_titles = NULL;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
52 static ushort_t num_panels = 0;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
53 static short pg_margin_left, pg_margin_right, pg_margin_top, pg_margin_bottom;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
54 #endif
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
55
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
56 #define GUI_PH_MARGIN 4 /* Size of the bevel */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
57
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
58 #define GUI_PH_MOUSE_TYPE Ph_CURSOR_INSERT
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
59 static PgColor_t gui_ph_mouse_color = Pg_BLACK;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
60
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
61 static PhPoint_t gui_ph_raw_offset;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
62 static PtWidget_t *gui_ph_timer_cursor; /* handle cursor blinking */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
63 static PtWidget_t *gui_ph_timer_timeout; /* used in gui_mch_wait_for_chars */
4352
04736b4030ec updated for version 7.3.925
Bram Moolenaar <bram@vim.org>
parents: 3927
diff changeset
64 static short is_timeout; /* Has the timeout occurred? */
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
65
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
66 /*
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
67 * This is set inside the mouse callback for a right mouse
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
68 * button click, and used for the popup menus
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
69 */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
70 static PhPoint_t abs_mouse;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
71
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
72 /* Try and avoid redraws while a resize is in progress */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
73 static int is_ignore_draw = FALSE;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
74
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
75 /* Used for converting to/from utf-8 and other charsets */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
76 static struct PxTransCtrl *charset_translate;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
77
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
78 /*
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
79 * Cursor blink functions.
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
80 *
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
81 * This is a simple state machine:
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
82 * BLINK_NONE not blinking at all
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
83 * BLINK_OFF blinking, cursor is not shown
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
84 * BLINK_ON blinking, cursor is shown
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
85 */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
86 static enum {
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
87 BLINK_NONE,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
88 BLINK_OFF,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
89 BLINK_ON
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
90 } blink_state = BLINK_NONE;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
91
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
92 static long_u blink_waittime = 700;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
93 static long_u blink_ontime = 400;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
94 static long_u blink_offtime = 250;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
95
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
96 static struct
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
97 {
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
98 int key_sym;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
99 char_u vim_code0;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
100 char_u vim_code1;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
101 } special_keys[] =
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
102 {
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
103 {Pk_Up, 'k', 'u'},
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
104 {Pk_Down, 'k', 'd'},
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
105 {Pk_Left, 'k', 'l'},
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
106 {Pk_Right, 'k', 'r'},
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
107
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
108 {Pk_F1, 'k', '1'},
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
109 {Pk_F2, 'k', '2'},
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
110 {Pk_F3, 'k', '3'},
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
111 {Pk_F4, 'k', '4'},
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
112 {Pk_F5, 'k', '5'},
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
113 {Pk_F6, 'k', '6'},
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
114 {Pk_F7, 'k', '7'},
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
115 {Pk_F8, 'k', '8'},
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
116 {Pk_F9, 'k', '9'},
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
117 {Pk_F10, 'k', ';'},
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
118
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
119 {Pk_F11, 'F', '1'},
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
120 {Pk_F12, 'F', '2'},
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
121 {Pk_F13, 'F', '3'},
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
122 {Pk_F14, 'F', '4'},
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
123 {Pk_F15, 'F', '5'},
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
124 {Pk_F16, 'F', '6'},
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
125 {Pk_F17, 'F', '7'},
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
126 {Pk_F18, 'F', '8'},
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
127 {Pk_F19, 'F', '9'},
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
128 {Pk_F20, 'F', 'A'},
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
129
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
130 {Pk_F21, 'F', 'B'},
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
131 {Pk_F22, 'F', 'C'},
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
132 {Pk_F23, 'F', 'D'},
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
133 {Pk_F24, 'F', 'E'},
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
134 {Pk_F25, 'F', 'F'},
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
135 {Pk_F26, 'F', 'G'},
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
136 {Pk_F27, 'F', 'H'},
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
137 {Pk_F28, 'F', 'I'},
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
138 {Pk_F29, 'F', 'J'},
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
139
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
140 {Pk_F30, 'F', 'K'},
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
141 {Pk_F31, 'F', 'L'},
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
142 {Pk_F32, 'F', 'M'},
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
143 {Pk_F33, 'F', 'N'},
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
144 {Pk_F34, 'F', 'O'},
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
145 {Pk_F35, 'F', 'P'},
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
146
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
147 {Pk_Help, '%', '1'},
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
148 {Pk_BackSpace, 'k', 'b'},
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
149 {Pk_Insert, 'k', 'I'},
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
150 {Pk_Delete, 'k', 'D'},
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
151 {Pk_Home, 'k', 'h'},
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
152 {Pk_End, '@', '7'},
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
153 {Pk_Prior, 'k', 'P'},
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
154 {Pk_Next, 'k', 'N'},
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
155 {Pk_Print, '%', '9'},
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
156
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
157 {Pk_KP_Add, 'K', '6'},
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
158 {Pk_KP_Subtract,'K', '7'},
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
159 {Pk_KP_Divide, 'K', '8'},
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
160 {Pk_KP_Multiply,'K', '9'},
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
161 {Pk_KP_Enter, 'K', 'A'},
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
162
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
163 {Pk_KP_0, KS_EXTRA, KE_KINS}, /* Insert */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
164 {Pk_KP_Decimal, KS_EXTRA, KE_KDEL}, /* Delete */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
165
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
166 {Pk_KP_4, 'k', 'l'}, /* Left */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
167 {Pk_KP_6, 'k', 'r'}, /* Right */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
168 {Pk_KP_8, 'k', 'u'}, /* Up */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
169 {Pk_KP_2, 'k', 'd'}, /* Down */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
170
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
171 {Pk_KP_7, 'K', '1'}, /* Home */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
172 {Pk_KP_1, 'K', '4'}, /* End */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
173
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
174 {Pk_KP_9, 'K', '3'}, /* Page Up */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
175 {Pk_KP_3, 'K', '5'}, /* Page Down */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
176
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
177 {Pk_KP_5, '&', '8'}, /* Undo */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
178
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
179 /* Keys that we want to be able to use any modifier with: */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
180 {Pk_Return, CAR, NUL},
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
181 {Pk_space, ' ', NUL},
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
182 {Pk_Tab, TAB, NUL},
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
183 {Pk_Escape, ESC, NUL},
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
184 {NL, NL, NUL},
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
185 {CAR, CAR, NUL},
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
186
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
187 /* End of list marker: */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
188 {0, 0, 0}
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
189 };
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
190
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
191
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
192 /****************************************************************************/
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
193
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
194 static PtCallbackF_t gui_ph_handle_timer_cursor;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
195 static PtCallbackF_t gui_ph_handle_timer_timeout;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
196
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
197 static PtCallbackF_t gui_ph_handle_window_cb;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
198
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
199 static PtCallbackF_t gui_ph_handle_scrollbar;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
200 static PtCallbackF_t gui_ph_handle_keyboard;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
201 static PtCallbackF_t gui_ph_handle_mouse;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
202 static PtCallbackF_t gui_ph_handle_pulldown_menu;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
203 static PtCallbackF_t gui_ph_handle_menu;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
204 static PtCallbackF_t gui_ph_handle_focus; /* focus change of text area */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
205
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
206 static PtCallbackF_t gui_ph_handle_menu_resize;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
207
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
208 /* When a menu is unrealized, give focus back to vimTextArea */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
209 static PtCallbackF_t gui_ph_handle_menu_unrealized;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
210
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
211 #ifdef USE_PANEL_GROUP
2980
847733973bfd updated for version 7.3.262
Bram Moolenaar <bram@vim.org>
parents: 2684
diff changeset
212 static void gui_ph_get_panelgroup_margins(short*, short*, short*, short*);
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
213 #endif
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
214
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
215 #ifdef FEAT_TOOLBAR
2980
847733973bfd updated for version 7.3.262
Bram Moolenaar <bram@vim.org>
parents: 2684
diff changeset
216 static PhImage_t *gui_ph_toolbar_find_icon(vimmenu_T *menu);
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
217 #endif
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
218
2980
847733973bfd updated for version 7.3.262
Bram Moolenaar <bram@vim.org>
parents: 2684
diff changeset
219 static void gui_ph_draw_start(void);
847733973bfd updated for version 7.3.262
Bram Moolenaar <bram@vim.org>
parents: 2684
diff changeset
220 static void gui_ph_draw_end(void);
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
221
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
222 /* Set the text for the balloon */
2980
847733973bfd updated for version 7.3.262
Bram Moolenaar <bram@vim.org>
parents: 2684
diff changeset
223 static PtWidget_t * gui_ph_show_tooltip(PtWidget_t *window,
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
224 PtWidget_t *widget,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
225 int position,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
226 char *text,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
227 char *font,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
228 PgColor_t fill_color,
2980
847733973bfd updated for version 7.3.262
Bram Moolenaar <bram@vim.org>
parents: 2684
diff changeset
229 PgColor_t text_color);
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
230
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
231 /****************************************************************************/
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
232
2980
847733973bfd updated for version 7.3.262
Bram Moolenaar <bram@vim.org>
parents: 2684
diff changeset
233 static PtWidget_t * gui_ph_show_tooltip(PtWidget_t *window,
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
234 PtWidget_t *widget,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
235 int position,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
236 char *text,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
237 char *font,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
238 PgColor_t fill_color,
2980
847733973bfd updated for version 7.3.262
Bram Moolenaar <bram@vim.org>
parents: 2684
diff changeset
239 PgColor_t text_color)
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
240 {
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
241 PtArg_t arg;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
242 vimmenu_T *menu;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
243 char_u *tooltip;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
244
2980
847733973bfd updated for version 7.3.262
Bram Moolenaar <bram@vim.org>
parents: 2684
diff changeset
245 PtSetArg(&arg, Pt_ARG_POINTER, &menu, 0);
847733973bfd updated for version 7.3.262
Bram Moolenaar <bram@vim.org>
parents: 2684
diff changeset
246 PtGetResources(widget, 1, &arg);
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
247
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
248 /* Override the text and position */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
249
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
250 tooltip = text;
2980
847733973bfd updated for version 7.3.262
Bram Moolenaar <bram@vim.org>
parents: 2684
diff changeset
251 if (menu != NULL)
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
252 {
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
253 int index = MENU_INDEX_TIP;
2980
847733973bfd updated for version 7.3.262
Bram Moolenaar <bram@vim.org>
parents: 2684
diff changeset
254 if (menu->strings[ index ] != NULL)
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
255 tooltip = menu->strings[ index ];
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
256 }
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
257
2980
847733973bfd updated for version 7.3.262
Bram Moolenaar <bram@vim.org>
parents: 2684
diff changeset
258 return PtInflateBalloon(
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
259 window,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
260 widget,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
261 /* Don't put the balloon at the bottom,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
262 * it gets drawn over by gfx done in the PtRaw */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
263 Pt_BALLOON_TOP,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
264 tooltip,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
265 font,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
266 fill_color,
2980
847733973bfd updated for version 7.3.262
Bram Moolenaar <bram@vim.org>
parents: 2684
diff changeset
267 text_color);
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
268 }
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
269
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
270 static void
2980
847733973bfd updated for version 7.3.262
Bram Moolenaar <bram@vim.org>
parents: 2684
diff changeset
271 gui_ph_resize_container(void)
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
272 {
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
273 PhArea_t area;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
274
2980
847733973bfd updated for version 7.3.262
Bram Moolenaar <bram@vim.org>
parents: 2684
diff changeset
275 PtWidgetArea(gui.vimWindow, &area);
847733973bfd updated for version 7.3.262
Bram Moolenaar <bram@vim.org>
parents: 2684
diff changeset
276 PtWidgetPos (gui.vimContainer, &area.pos);
847733973bfd updated for version 7.3.262
Bram Moolenaar <bram@vim.org>
parents: 2684
diff changeset
277
847733973bfd updated for version 7.3.262
Bram Moolenaar <bram@vim.org>
parents: 2684
diff changeset
278 PtSetResource(gui.vimContainer, Pt_ARG_AREA, &area, 0);
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
279 }
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
280
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
281 static int
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
282 gui_ph_handle_menu_resize(
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
283 PtWidget_t *widget,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
284 void *other,
2980
847733973bfd updated for version 7.3.262
Bram Moolenaar <bram@vim.org>
parents: 2684
diff changeset
285 PtCallbackInfo_t *info)
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
286 {
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
287 PtContainerCallback_t *sizes = info->cbdata;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
288 PtWidget_t *container;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
289 PhPoint_t below_menu;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
290 int_u height;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
291
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
292 height = sizes->new_dim.h;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
293
1214
a91a2e0c4108 updated for version 7.1b
vimboss
parents: 834
diff changeset
294 /* Because vim treats the toolbar and menubar separately,
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
295 * and here they're lumped together into a PtToolbarGroup,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
296 * we only need either menu_height or toolbar_height set at once */
2980
847733973bfd updated for version 7.3.262
Bram Moolenaar <bram@vim.org>
parents: 2684
diff changeset
297 if (gui.menu_is_active)
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
298 {
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
299 gui.menu_height = height;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
300 gui.toolbar_height = 0;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
301 }
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
302 #ifdef FEAT_TOOLBAR
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
303 else
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
304 gui.toolbar_height = height;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
305 #endif
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
306
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
307 below_menu.x = 0;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
308 below_menu.y = height;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
309
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
310 #ifdef USE_PANEL_GROUP
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
311 container = gui.vimPanelGroup;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
312 #else
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
313 container = gui.vimContainer;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
314 #endif
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
315
2980
847733973bfd updated for version 7.3.262
Bram Moolenaar <bram@vim.org>
parents: 2684
diff changeset
316 PtSetResource(container, Pt_ARG_POS, &below_menu, 0);
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
317
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
318 gui_ph_resize_container();
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
319
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
320 #ifdef USE_PANEL_GROUP
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
321 gui_ph_get_panelgroup_margins(
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
322 &pg_margin_top, &pg_margin_bottom,
2980
847733973bfd updated for version 7.3.262
Bram Moolenaar <bram@vim.org>
parents: 2684
diff changeset
323 &pg_margin_left, &pg_margin_right);
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
324 #endif
2980
847733973bfd updated for version 7.3.262
Bram Moolenaar <bram@vim.org>
parents: 2684
diff changeset
325 return Pt_CONTINUE;
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
326 }
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
327
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
328 /*
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
329 * Pt_ARG_TIMER_REPEAT isn't used because the on & off times
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
330 * are different
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
331 */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
332 static int
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
333 gui_ph_handle_timer_cursor(
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
334 PtWidget_t *widget,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
335 void *data,
2980
847733973bfd updated for version 7.3.262
Bram Moolenaar <bram@vim.org>
parents: 2684
diff changeset
336 PtCallbackInfo_t *info)
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
337 {
2980
847733973bfd updated for version 7.3.262
Bram Moolenaar <bram@vim.org>
parents: 2684
diff changeset
338 if (blink_state == BLINK_ON)
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
339 {
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
340 gui_undraw_cursor();
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
341 blink_state = BLINK_OFF;
2980
847733973bfd updated for version 7.3.262
Bram Moolenaar <bram@vim.org>
parents: 2684
diff changeset
342 PtSetResource(gui_ph_timer_cursor, Pt_ARG_TIMER_INITIAL,
847733973bfd updated for version 7.3.262
Bram Moolenaar <bram@vim.org>
parents: 2684
diff changeset
343 blink_offtime, 0);
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
344 }
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
345 else
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
346 {
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
347 gui_update_cursor(TRUE, FALSE);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
348 blink_state = BLINK_ON;
2980
847733973bfd updated for version 7.3.262
Bram Moolenaar <bram@vim.org>
parents: 2684
diff changeset
349 PtSetResource(gui_ph_timer_cursor, Pt_ARG_TIMER_INITIAL,
847733973bfd updated for version 7.3.262
Bram Moolenaar <bram@vim.org>
parents: 2684
diff changeset
350 blink_ontime, 0);
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
351 }
2980
847733973bfd updated for version 7.3.262
Bram Moolenaar <bram@vim.org>
parents: 2684
diff changeset
352 return Pt_CONTINUE;
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
353 }
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
354
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
355 static int
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
356 gui_ph_handle_timer_timeout(PtWidget_t *widget, void *data, PtCallbackInfo_t *info)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
357 {
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
358 is_timeout = TRUE;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
359
2980
847733973bfd updated for version 7.3.262
Bram Moolenaar <bram@vim.org>
parents: 2684
diff changeset
360 return Pt_CONTINUE;
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
361 }
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
362
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
363 static int
2998
32a52f06f33b updated for version 7.3.271
Bram Moolenaar <bram@vim.org>
parents: 2980
diff changeset
364 gui_ph_handle_window_cb(PtWidget_t *widget, void *data, PtCallbackInfo_t *info)
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
365 {
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
366 PhWindowEvent_t *we = info->cbdata;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
367 ushort_t *width, *height;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
368
2998
32a52f06f33b updated for version 7.3.271
Bram Moolenaar <bram@vim.org>
parents: 2980
diff changeset
369 switch (we->event_f) {
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
370 case Ph_WM_CLOSE:
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
371 gui_shell_closed();
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
372 break;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
373
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
374 case Ph_WM_FOCUS:
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
375 /* Just in case it's hidden and needs to be shown */
2998
32a52f06f33b updated for version 7.3.271
Bram Moolenaar <bram@vim.org>
parents: 2980
diff changeset
376 gui_mch_mousehide(MOUSE_SHOW);
32a52f06f33b updated for version 7.3.271
Bram Moolenaar <bram@vim.org>
parents: 2980
diff changeset
377
32a52f06f33b updated for version 7.3.271
Bram Moolenaar <bram@vim.org>
parents: 2980
diff changeset
378 if (we->event_state == Ph_WM_EVSTATE_FOCUS)
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
379 {
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
380 gui_focus_change(TRUE);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
381 gui_mch_start_blink();
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
382 }
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
383 else
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
384 {
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
385 gui_focus_change(FALSE);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
386 gui_mch_stop_blink();
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
387 }
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
388 break;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
389
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
390 case Ph_WM_RESIZE:
2998
32a52f06f33b updated for version 7.3.271
Bram Moolenaar <bram@vim.org>
parents: 2980
diff changeset
391 PtGetResource(gui.vimWindow, Pt_ARG_WIDTH, &width, 0);
32a52f06f33b updated for version 7.3.271
Bram Moolenaar <bram@vim.org>
parents: 2980
diff changeset
392 PtGetResource(gui.vimWindow, Pt_ARG_HEIGHT, &height, 0);
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
393 #ifdef USE_PANEL_GROUP
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
394 width -= (pg_margin_left + pg_margin_right);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
395 height -= (pg_margin_top + pg_margin_bottom);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
396 #endif
2998
32a52f06f33b updated for version 7.3.271
Bram Moolenaar <bram@vim.org>
parents: 2980
diff changeset
397 gui_resize_shell(*width, *height);
32a52f06f33b updated for version 7.3.271
Bram Moolenaar <bram@vim.org>
parents: 2980
diff changeset
398 gui_set_shellsize(FALSE, FALSE, RESIZE_BOTH);
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
399 is_ignore_draw = FALSE;
2998
32a52f06f33b updated for version 7.3.271
Bram Moolenaar <bram@vim.org>
parents: 2980
diff changeset
400 PtEndFlux(gui.vimContainer);
32a52f06f33b updated for version 7.3.271
Bram Moolenaar <bram@vim.org>
parents: 2980
diff changeset
401 PtContainerRelease(gui.vimContainer);
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
402 break;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
403
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
404 default:
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
405 break;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
406 }
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
407
2980
847733973bfd updated for version 7.3.262
Bram Moolenaar <bram@vim.org>
parents: 2684
diff changeset
408 return Pt_CONTINUE;
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
409 }
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
410
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
411 static int
2998
32a52f06f33b updated for version 7.3.271
Bram Moolenaar <bram@vim.org>
parents: 2980
diff changeset
412 gui_ph_handle_scrollbar(PtWidget_t *widget, void *data, PtCallbackInfo_t *info)
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
413 {
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
414 PtScrollbarCallback_t *scroll;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
415 scrollbar_T *sb;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
416 int value, dragging = FALSE;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
417
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
418 scroll = info->cbdata;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
419
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
420 sb = (scrollbar_T *) data;
2998
32a52f06f33b updated for version 7.3.271
Bram Moolenaar <bram@vim.org>
parents: 2980
diff changeset
421 if (sb != NULL)
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
422 {
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
423 value = scroll->position;
2998
32a52f06f33b updated for version 7.3.271
Bram Moolenaar <bram@vim.org>
parents: 2980
diff changeset
424 switch (scroll->action)
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
425 {
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
426 case Pt_SCROLL_DRAGGED:
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
427 dragging = TRUE;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
428 break;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
429
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
430 case Pt_SCROLL_SET:
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
431 /* FIXME: return straight away here? */
2980
847733973bfd updated for version 7.3.262
Bram Moolenaar <bram@vim.org>
parents: 2684
diff changeset
432 return Pt_CONTINUE;
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
433 break;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
434 }
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
435
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
436 gui_drag_scrollbar(sb, value, dragging);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
437 }
2980
847733973bfd updated for version 7.3.262
Bram Moolenaar <bram@vim.org>
parents: 2684
diff changeset
438 return Pt_CONTINUE;
7
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 static int
2998
32a52f06f33b updated for version 7.3.271
Bram Moolenaar <bram@vim.org>
parents: 2980
diff changeset
442 gui_ph_handle_keyboard(PtWidget_t *widget, void *data, PtCallbackInfo_t *info)
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
443 {
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
444 PhKeyEvent_t *key;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
445 unsigned char string[6];
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
446 int len, i;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
447 int ch, modifiers;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
448
2998
32a52f06f33b updated for version 7.3.271
Bram Moolenaar <bram@vim.org>
parents: 2980
diff changeset
449 key = PhGetData(info->event);
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
450
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
451 ch = modifiers = len = 0;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
452
2998
32a52f06f33b updated for version 7.3.271
Bram Moolenaar <bram@vim.org>
parents: 2980
diff changeset
453 if (p_mh)
32a52f06f33b updated for version 7.3.271
Bram Moolenaar <bram@vim.org>
parents: 2980
diff changeset
454 gui_mch_mousehide(MOUSE_HIDE);
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
455
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
456 /* We're a good lil photon program, aren't we? yes we are, yeess wee arrr */
2998
32a52f06f33b updated for version 7.3.271
Bram Moolenaar <bram@vim.org>
parents: 2980
diff changeset
457 if (key->key_flags & Pk_KF_Compose)
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
458 {
2980
847733973bfd updated for version 7.3.262
Bram Moolenaar <bram@vim.org>
parents: 2684
diff changeset
459 return Pt_CONTINUE;
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
460 }
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
461
2998
32a52f06f33b updated for version 7.3.271
Bram Moolenaar <bram@vim.org>
parents: 2980
diff changeset
462 if ((key->key_flags & Pk_KF_Cap_Valid) &&
32a52f06f33b updated for version 7.3.271
Bram Moolenaar <bram@vim.org>
parents: 2980
diff changeset
463 PkIsKeyDown(key->key_flags))
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
464 {
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
465 #ifdef FEAT_MENU
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
466 /*
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
467 * Only show the menu if the Alt key is down, and the Shift & Ctrl
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
468 * keys aren't down, as well as the other conditions
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
469 */
2998
32a52f06f33b updated for version 7.3.271
Bram Moolenaar <bram@vim.org>
parents: 2980
diff changeset
470 if (((key->key_mods & Pk_KM_Alt) &&
32a52f06f33b updated for version 7.3.271
Bram Moolenaar <bram@vim.org>
parents: 2980
diff changeset
471 !(key->key_mods & Pk_KM_Shift) &&
32a52f06f33b updated for version 7.3.271
Bram Moolenaar <bram@vim.org>
parents: 2980
diff changeset
472 !(key->key_mods & Pk_KM_Ctrl)) &&
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
473 gui.menu_is_active &&
2998
32a52f06f33b updated for version 7.3.271
Bram Moolenaar <bram@vim.org>
parents: 2980
diff changeset
474 (*p_wak == 'y' ||
32a52f06f33b updated for version 7.3.271
Bram Moolenaar <bram@vim.org>
parents: 2980
diff changeset
475 (*p_wak == 'm' &&
32a52f06f33b updated for version 7.3.271
Bram Moolenaar <bram@vim.org>
parents: 2980
diff changeset
476 gui_is_menu_shortcut(key->key_cap))))
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
477 {
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
478 /* Fallthrough and let photon look for the hotkey */
2980
847733973bfd updated for version 7.3.262
Bram Moolenaar <bram@vim.org>
parents: 2684
diff changeset
479 return Pt_CONTINUE;
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
480 }
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
481 #endif
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
482
3076
51ce22ba89d1 updated for version 7.3.310
Bram Moolenaar <bram@vim.org>
parents: 3054
diff changeset
483 for (i = 0; special_keys[i].key_sym != 0; i++)
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
484 {
2998
32a52f06f33b updated for version 7.3.271
Bram Moolenaar <bram@vim.org>
parents: 2980
diff changeset
485 if (special_keys[i].key_sym == key->key_cap)
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
486 {
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
487 len = 0;
2998
32a52f06f33b updated for version 7.3.271
Bram Moolenaar <bram@vim.org>
parents: 2980
diff changeset
488 if (special_keys[i].vim_code1 == NUL)
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
489 ch = special_keys[i].vim_code0;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
490 else
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
491 {
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
492 /* Detect if a keypad number key has been pressed
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
493 * and change the key if Num Lock is on */
2998
32a52f06f33b updated for version 7.3.271
Bram Moolenaar <bram@vim.org>
parents: 2980
diff changeset
494 if (key->key_cap >= Pk_KP_Enter && key->key_cap <= Pk_KP_9
32a52f06f33b updated for version 7.3.271
Bram Moolenaar <bram@vim.org>
parents: 2980
diff changeset
495 && (key->key_mods & Pk_KM_Num_Lock))
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
496 {
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
497 /* FIXME: For now, just map the key to a ascii value
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
498 * (see <photon/PkKeyDef.h>) */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
499 ch = key->key_cap - 0xf080;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
500 }
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
501 else
2998
32a52f06f33b updated for version 7.3.271
Bram Moolenaar <bram@vim.org>
parents: 2980
diff changeset
502 ch = TO_SPECIAL(special_keys[i].vim_code0,
32a52f06f33b updated for version 7.3.271
Bram Moolenaar <bram@vim.org>
parents: 2980
diff changeset
503 special_keys[i].vim_code1);
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
504 }
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
505 break;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
506 }
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
507 }
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
508
2998
32a52f06f33b updated for version 7.3.271
Bram Moolenaar <bram@vim.org>
parents: 2980
diff changeset
509 if (key->key_mods & Pk_KM_Ctrl)
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
510 modifiers |= MOD_MASK_CTRL;
2998
32a52f06f33b updated for version 7.3.271
Bram Moolenaar <bram@vim.org>
parents: 2980
diff changeset
511 if (key->key_mods & Pk_KM_Alt)
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
512 modifiers |= MOD_MASK_ALT;
2998
32a52f06f33b updated for version 7.3.271
Bram Moolenaar <bram@vim.org>
parents: 2980
diff changeset
513 if (key->key_mods & Pk_KM_Shift)
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
514 modifiers |= MOD_MASK_SHIFT;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
515
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
516 /* Is this not a special key? */
2998
32a52f06f33b updated for version 7.3.271
Bram Moolenaar <bram@vim.org>
parents: 2980
diff changeset
517 if (special_keys[i].key_sym == 0)
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
518 {
2998
32a52f06f33b updated for version 7.3.271
Bram Moolenaar <bram@vim.org>
parents: 2980
diff changeset
519 ch = PhTo8859_1(key);
32a52f06f33b updated for version 7.3.271
Bram Moolenaar <bram@vim.org>
parents: 2980
diff changeset
520 if (ch == -1
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
521 #ifdef FEAT_MBYTE
2998
32a52f06f33b updated for version 7.3.271
Bram Moolenaar <bram@vim.org>
parents: 2980
diff changeset
522 || (enc_utf8 && ch > 127)
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
523 #endif
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
524 )
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
525 {
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
526 #ifdef FEAT_MBYTE
2998
32a52f06f33b updated for version 7.3.271
Bram Moolenaar <bram@vim.org>
parents: 2980
diff changeset
527 len = PhKeyToMb(string, key);
32a52f06f33b updated for version 7.3.271
Bram Moolenaar <bram@vim.org>
parents: 2980
diff changeset
528 if (len > 0)
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
529 {
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
530 static char buf[6];
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
531 int src_taken, dst_made;
2998
32a52f06f33b updated for version 7.3.271
Bram Moolenaar <bram@vim.org>
parents: 2980
diff changeset
532 if (enc_utf8 != TRUE)
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
533 {
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
534 PxTranslateFromUTF(
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
535 charset_translate,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
536 string,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
537 len,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
538 &src_taken,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
539 buf,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
540 6,
3054
eb4972982bfe updated for version 7.3.299
Bram Moolenaar <bram@vim.org>
parents: 3052
diff changeset
541 &dst_made);
eb4972982bfe updated for version 7.3.299
Bram Moolenaar <bram@vim.org>
parents: 3052
diff changeset
542
eb4972982bfe updated for version 7.3.299
Bram Moolenaar <bram@vim.org>
parents: 3052
diff changeset
543 add_to_input_buf(buf, dst_made);
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
544 }
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
545 else
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
546 {
3054
eb4972982bfe updated for version 7.3.299
Bram Moolenaar <bram@vim.org>
parents: 3052
diff changeset
547 add_to_input_buf(string, len);
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
548 }
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
549
2980
847733973bfd updated for version 7.3.262
Bram Moolenaar <bram@vim.org>
parents: 2684
diff changeset
550 return Pt_CONSUME;
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
551 }
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
552 len = 0;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
553 #endif
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
554 ch = key->key_cap;
3054
eb4972982bfe updated for version 7.3.299
Bram Moolenaar <bram@vim.org>
parents: 3052
diff changeset
555 if (ch < 0xff)
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
556 {
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
557 /* FIXME: is this the right thing to do? */
3054
eb4972982bfe updated for version 7.3.299
Bram Moolenaar <bram@vim.org>
parents: 3052
diff changeset
558 if (modifiers & MOD_MASK_CTRL)
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
559 {
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
560 modifiers &= ~MOD_MASK_CTRL;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
561
3054
eb4972982bfe updated for version 7.3.299
Bram Moolenaar <bram@vim.org>
parents: 3052
diff changeset
562 if ((ch >= 'a' && ch <= 'z') ||
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
563 ch == '[' ||
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
564 ch == ']' ||
3054
eb4972982bfe updated for version 7.3.299
Bram Moolenaar <bram@vim.org>
parents: 3052
diff changeset
565 ch == '\\')
eb4972982bfe updated for version 7.3.299
Bram Moolenaar <bram@vim.org>
parents: 3052
diff changeset
566 ch = Ctrl_chr(ch);
eb4972982bfe updated for version 7.3.299
Bram Moolenaar <bram@vim.org>
parents: 3052
diff changeset
567 else if (ch == '2')
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
568 ch = NUL;
3054
eb4972982bfe updated for version 7.3.299
Bram Moolenaar <bram@vim.org>
parents: 3052
diff changeset
569 else if (ch == '6')
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
570 ch = 0x1e;
3054
eb4972982bfe updated for version 7.3.299
Bram Moolenaar <bram@vim.org>
parents: 3052
diff changeset
571 else if (ch == '-')
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
572 ch = 0x1f;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
573 else
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
574 modifiers |= MOD_MASK_CTRL;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
575 }
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
576
3054
eb4972982bfe updated for version 7.3.299
Bram Moolenaar <bram@vim.org>
parents: 3052
diff changeset
577 if (modifiers & MOD_MASK_ALT)
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
578 {
3054
eb4972982bfe updated for version 7.3.299
Bram Moolenaar <bram@vim.org>
parents: 3052
diff changeset
579 ch = Meta(ch);
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
580 modifiers &= ~MOD_MASK_ALT;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
581 }
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
582 }
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
583 else
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
584 {
2980
847733973bfd updated for version 7.3.262
Bram Moolenaar <bram@vim.org>
parents: 2684
diff changeset
585 return Pt_CONTINUE;
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
586 }
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
587 }
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
588 else
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
589 modifiers &= ~MOD_MASK_SHIFT;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
590 }
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
591
3054
eb4972982bfe updated for version 7.3.299
Bram Moolenaar <bram@vim.org>
parents: 3052
diff changeset
592 ch = simplify_key(ch, &modifiers);
eb4972982bfe updated for version 7.3.299
Bram Moolenaar <bram@vim.org>
parents: 3052
diff changeset
593 if (modifiers)
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
594 {
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
595 string[ len++ ] = CSI;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
596 string[ len++ ] = KS_MODIFIER;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
597 string[ len++ ] = modifiers;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
598 }
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
599
3054
eb4972982bfe updated for version 7.3.299
Bram Moolenaar <bram@vim.org>
parents: 3052
diff changeset
600 if (IS_SPECIAL(ch))
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
601 {
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
602 string[ len++ ] = CSI;
3054
eb4972982bfe updated for version 7.3.299
Bram Moolenaar <bram@vim.org>
parents: 3052
diff changeset
603 string[ len++ ] = K_SECOND(ch);
eb4972982bfe updated for version 7.3.299
Bram Moolenaar <bram@vim.org>
parents: 3052
diff changeset
604 string[ len++ ] = K_THIRD(ch);
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
605 }
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
606 else
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
607 {
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
608 string[ len++ ] = ch;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
609 }
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
610
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
611 if (len == 1 && ((ch == Ctrl_C && ctrl_c_interrupts)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
612 || ch == intr_char))
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
613 {
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
614 trash_input_buf();
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
615 got_int = TRUE;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
616 }
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
617
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
618 if (len == 1 && string[0] == CSI)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
619 {
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
620 /* Turn CSI into K_CSI. */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
621 string[ len++ ] = KS_EXTRA;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
622 string[ len++ ] = KE_CSI;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
623 }
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
624
3054
eb4972982bfe updated for version 7.3.299
Bram Moolenaar <bram@vim.org>
parents: 3052
diff changeset
625 if (len > 0)
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
626 {
3054
eb4972982bfe updated for version 7.3.299
Bram Moolenaar <bram@vim.org>
parents: 3052
diff changeset
627 add_to_input_buf(string, len);
2980
847733973bfd updated for version 7.3.262
Bram Moolenaar <bram@vim.org>
parents: 2684
diff changeset
628 return Pt_CONSUME;
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
629 }
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
630 }
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
631
2980
847733973bfd updated for version 7.3.262
Bram Moolenaar <bram@vim.org>
parents: 2684
diff changeset
632 return Pt_CONTINUE;
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
633 }
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
634
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
635 static int
3054
eb4972982bfe updated for version 7.3.299
Bram Moolenaar <bram@vim.org>
parents: 3052
diff changeset
636 gui_ph_handle_mouse(PtWidget_t *widget, void *data, PtCallbackInfo_t *info)
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
637 {
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
638 PhPointerEvent_t *pointer;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
639 PhRect_t *pos;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
640 int button = 0, repeated_click, modifiers = 0x0;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
641 short mouse_x, mouse_y;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
642
3054
eb4972982bfe updated for version 7.3.299
Bram Moolenaar <bram@vim.org>
parents: 3052
diff changeset
643 pointer = PhGetData(info->event);
eb4972982bfe updated for version 7.3.299
Bram Moolenaar <bram@vim.org>
parents: 3052
diff changeset
644 pos = PhGetRects(info->event);
eb4972982bfe updated for version 7.3.299
Bram Moolenaar <bram@vim.org>
parents: 3052
diff changeset
645
eb4972982bfe updated for version 7.3.299
Bram Moolenaar <bram@vim.org>
parents: 3052
diff changeset
646 gui_mch_mousehide(MOUSE_SHOW);
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
647
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
648 /*
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
649 * Coordinates need to be relative to the base window,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
650 * not relative to the vimTextArea widget
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
651 */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
652 mouse_x = pos->ul.x + gui.border_width;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
653 mouse_y = pos->ul.y + gui.border_width;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
654
3054
eb4972982bfe updated for version 7.3.299
Bram Moolenaar <bram@vim.org>
parents: 3052
diff changeset
655 if (info->event->type == Ph_EV_PTR_MOTION_NOBUTTON)
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
656 {
3054
eb4972982bfe updated for version 7.3.299
Bram Moolenaar <bram@vim.org>
parents: 3052
diff changeset
657 gui_mouse_moved(mouse_x, mouse_y);
2980
847733973bfd updated for version 7.3.262
Bram Moolenaar <bram@vim.org>
parents: 2684
diff changeset
658 return Pt_CONTINUE;
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
659 }
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
660
3054
eb4972982bfe updated for version 7.3.299
Bram Moolenaar <bram@vim.org>
parents: 3052
diff changeset
661 if (pointer->key_mods & Pk_KM_Shift)
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
662 modifiers |= MOUSE_SHIFT;
3054
eb4972982bfe updated for version 7.3.299
Bram Moolenaar <bram@vim.org>
parents: 3052
diff changeset
663 if (pointer->key_mods & Pk_KM_Ctrl)
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
664 modifiers |= MOUSE_CTRL;
3054
eb4972982bfe updated for version 7.3.299
Bram Moolenaar <bram@vim.org>
parents: 3052
diff changeset
665 if (pointer->key_mods & Pk_KM_Alt)
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
666 modifiers |= MOUSE_ALT;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
667
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
668 /*
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
669 * FIXME More than one button may be involved, but for
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
670 * now just deal with one
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
671 */
3054
eb4972982bfe updated for version 7.3.299
Bram Moolenaar <bram@vim.org>
parents: 3052
diff changeset
672 if (pointer->buttons & Ph_BUTTON_SELECT)
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
673 button = MOUSE_LEFT;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
674
3054
eb4972982bfe updated for version 7.3.299
Bram Moolenaar <bram@vim.org>
parents: 3052
diff changeset
675 if (pointer->buttons & Ph_BUTTON_MENU)
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
676 {
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
677 button = MOUSE_RIGHT;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
678 /* Need the absolute coordinates for the popup menu */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
679 abs_mouse.x = pointer->pos.x;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
680 abs_mouse.y = pointer->pos.y;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
681 }
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
682
3054
eb4972982bfe updated for version 7.3.299
Bram Moolenaar <bram@vim.org>
parents: 3052
diff changeset
683 if (pointer->buttons & Ph_BUTTON_ADJUST)
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
684 button = MOUSE_MIDDLE;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
685
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
686 /* Catch a real release (not phantom or other releases */
3054
eb4972982bfe updated for version 7.3.299
Bram Moolenaar <bram@vim.org>
parents: 3052
diff changeset
687 if (info->event->type == Ph_EV_BUT_RELEASE)
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
688 button = MOUSE_RELEASE;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
689
3054
eb4972982bfe updated for version 7.3.299
Bram Moolenaar <bram@vim.org>
parents: 3052
diff changeset
690 if (info->event->type & Ph_EV_PTR_MOTION_BUTTON)
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
691 button = MOUSE_DRAG;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
692
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
693 #if 0
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
694 /* Vim doesn't use button repeats */
3054
eb4972982bfe updated for version 7.3.299
Bram Moolenaar <bram@vim.org>
parents: 3052
diff changeset
695 if (info->event->type & Ph_EV_BUT_REPEAT)
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
696 button = MOUSE_DRAG;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
697 #endif
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
698
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
699 /* Don't do anything if it is one of the phantom mouse release events */
3054
eb4972982bfe updated for version 7.3.299
Bram Moolenaar <bram@vim.org>
parents: 3052
diff changeset
700 if ((button != MOUSE_RELEASE) ||
eb4972982bfe updated for version 7.3.299
Bram Moolenaar <bram@vim.org>
parents: 3052
diff changeset
701 (info->event->subtype == Ph_EV_RELEASE_REAL))
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
702 {
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
703 repeated_click = (pointer->click_count >= 2) ? TRUE : FALSE;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
704
3054
eb4972982bfe updated for version 7.3.299
Bram Moolenaar <bram@vim.org>
parents: 3052
diff changeset
705 gui_send_mouse_event(button , mouse_x, mouse_y, repeated_click, modifiers);
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
706 }
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
707
2980
847733973bfd updated for version 7.3.262
Bram Moolenaar <bram@vim.org>
parents: 2684
diff changeset
708 return Pt_CONTINUE;
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
709 }
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
710
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
711 /* Handle a focus change of the PtRaw widget */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
712 static int
3054
eb4972982bfe updated for version 7.3.299
Bram Moolenaar <bram@vim.org>
parents: 3052
diff changeset
713 gui_ph_handle_focus(PtWidget_t *widget, void *data, PtCallbackInfo_t *info)
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
714 {
3054
eb4972982bfe updated for version 7.3.299
Bram Moolenaar <bram@vim.org>
parents: 3052
diff changeset
715 if (info->reason == Pt_CB_LOST_FOCUS)
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
716 {
3054
eb4972982bfe updated for version 7.3.299
Bram Moolenaar <bram@vim.org>
parents: 3052
diff changeset
717 PtRemoveEventHandler(gui.vimTextArea, Ph_EV_PTR_MOTION_NOBUTTON,
eb4972982bfe updated for version 7.3.299
Bram Moolenaar <bram@vim.org>
parents: 3052
diff changeset
718 gui_ph_handle_mouse, NULL);
eb4972982bfe updated for version 7.3.299
Bram Moolenaar <bram@vim.org>
parents: 3052
diff changeset
719
eb4972982bfe updated for version 7.3.299
Bram Moolenaar <bram@vim.org>
parents: 3052
diff changeset
720 gui_mch_mousehide(MOUSE_SHOW);
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
721 }
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
722 else
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
723 {
3054
eb4972982bfe updated for version 7.3.299
Bram Moolenaar <bram@vim.org>
parents: 3052
diff changeset
724 PtAddEventHandler(gui.vimTextArea, Ph_EV_PTR_MOTION_NOBUTTON,
eb4972982bfe updated for version 7.3.299
Bram Moolenaar <bram@vim.org>
parents: 3052
diff changeset
725 gui_ph_handle_mouse, NULL);
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
726 }
2980
847733973bfd updated for version 7.3.262
Bram Moolenaar <bram@vim.org>
parents: 2684
diff changeset
727 return Pt_CONTINUE;
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
728 }
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
729
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
730 static void
3054
eb4972982bfe updated for version 7.3.299
Bram Moolenaar <bram@vim.org>
parents: 3052
diff changeset
731 gui_ph_handle_raw_draw(PtWidget_t *widget, PhTile_t *damage)
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
732 {
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
733 PhRect_t *r;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
734 PhPoint_t offset;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
735 PhPoint_t translation;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
736
3054
eb4972982bfe updated for version 7.3.299
Bram Moolenaar <bram@vim.org>
parents: 3052
diff changeset
737 if (is_ignore_draw == TRUE)
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
738 return;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
739
3054
eb4972982bfe updated for version 7.3.299
Bram Moolenaar <bram@vim.org>
parents: 3052
diff changeset
740 PtSuperClassDraw(PtBasic, widget, damage);
eb4972982bfe updated for version 7.3.299
Bram Moolenaar <bram@vim.org>
parents: 3052
diff changeset
741 PgGetTranslation(&translation);
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
742 PgClearTranslation();
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
743
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
744 #if 0
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
745 /*
1214
a91a2e0c4108 updated for version 7.1b
vimboss
parents: 834
diff changeset
746 * This causes some weird problems, with drawing being done from
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
747 * within this raw drawing function (rather than just simple clearing
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
748 * and text drawing done by gui_redraw)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
749 *
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
750 * The main problem is when PhBlit is used, and the cursor appearing
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
751 * in places where it shouldn't
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
752 */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
753 out_flush();
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
754 #endif
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
755
3054
eb4972982bfe updated for version 7.3.299
Bram Moolenaar <bram@vim.org>
parents: 3052
diff changeset
756 PtWidgetOffset(widget, &offset);
eb4972982bfe updated for version 7.3.299
Bram Moolenaar <bram@vim.org>
parents: 3052
diff changeset
757 PhTranslatePoint(&offset, PtWidgetPos(gui.vimTextArea, NULL));
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
758
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
759 #if 1
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
760 /* Redraw individual damage regions */
3054
eb4972982bfe updated for version 7.3.299
Bram Moolenaar <bram@vim.org>
parents: 3052
diff changeset
761 if (damage->next != NULL)
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
762 damage = damage->next;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
763
3076
51ce22ba89d1 updated for version 7.3.310
Bram Moolenaar <bram@vim.org>
parents: 3054
diff changeset
764 while (damage != NULL)
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
765 {
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
766 r = &damage->rect;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
767 gui_redraw(
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
768 r->ul.x - offset.x, r->ul.y - offset.y,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
769 r->lr.x - r->ul.x + 1,
3054
eb4972982bfe updated for version 7.3.299
Bram Moolenaar <bram@vim.org>
parents: 3052
diff changeset
770 r->lr.y - r->ul.y + 1);
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
771 damage = damage->next;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
772 }
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
773 #else
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
774 /* Redraw the rectangle that covers all the damaged regions */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
775 r = &damage->rect;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
776 gui_redraw(
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
777 r->ul.x - offset.x, r->ul.y - offset.y,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
778 r->lr.x - r->ul.x + 1,
3054
eb4972982bfe updated for version 7.3.299
Bram Moolenaar <bram@vim.org>
parents: 3052
diff changeset
779 r->lr.y - r->ul.y + 1);
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
780 #endif
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
781
3054
eb4972982bfe updated for version 7.3.299
Bram Moolenaar <bram@vim.org>
parents: 3052
diff changeset
782 PgSetTranslation(&translation, 0);
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
783 }
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
784
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
785 static int
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
786 gui_ph_handle_pulldown_menu(
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
787 PtWidget_t *widget,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
788 void *data,
3054
eb4972982bfe updated for version 7.3.299
Bram Moolenaar <bram@vim.org>
parents: 3052
diff changeset
789 PtCallbackInfo_t *info)
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
790 {
3054
eb4972982bfe updated for version 7.3.299
Bram Moolenaar <bram@vim.org>
parents: 3052
diff changeset
791 if (data != NULL)
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
792 {
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
793 vimmenu_T *menu = (vimmenu_T *) data;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
794
3054
eb4972982bfe updated for version 7.3.299
Bram Moolenaar <bram@vim.org>
parents: 3052
diff changeset
795 PtPositionMenu(menu->submenu_id, NULL);
eb4972982bfe updated for version 7.3.299
Bram Moolenaar <bram@vim.org>
parents: 3052
diff changeset
796 PtRealizeWidget(menu->submenu_id);
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
797 }
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
798
2980
847733973bfd updated for version 7.3.262
Bram Moolenaar <bram@vim.org>
parents: 2684
diff changeset
799 return Pt_CONTINUE;
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
800 }
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
801
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
802 /* This is used for pulldown/popup menus and also toolbar buttons */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
803 static int
3076
51ce22ba89d1 updated for version 7.3.310
Bram Moolenaar <bram@vim.org>
parents: 3054
diff changeset
804 gui_ph_handle_menu(PtWidget_t *widget, void *data, PtCallbackInfo_t *info)
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
805 {
3076
51ce22ba89d1 updated for version 7.3.310
Bram Moolenaar <bram@vim.org>
parents: 3054
diff changeset
806 if (data != NULL)
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
807 {
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
808 vimmenu_T *menu = (vimmenu_T *) data;
3076
51ce22ba89d1 updated for version 7.3.310
Bram Moolenaar <bram@vim.org>
parents: 3054
diff changeset
809 gui_menu_cb(menu);
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
810 }
2980
847733973bfd updated for version 7.3.262
Bram Moolenaar <bram@vim.org>
parents: 2684
diff changeset
811 return Pt_CONTINUE;
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
812 }
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
813
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
814 /* Stop focus from disappearing into the menubar... */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
815 static int
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
816 gui_ph_handle_menu_unrealized(
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
817 PtWidget_t *widget,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
818 void *data,
3076
51ce22ba89d1 updated for version 7.3.310
Bram Moolenaar <bram@vim.org>
parents: 3054
diff changeset
819 PtCallbackInfo_t *info)
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
820 {
3076
51ce22ba89d1 updated for version 7.3.310
Bram Moolenaar <bram@vim.org>
parents: 3054
diff changeset
821 PtGiveFocus(gui.vimTextArea, NULL);
2980
847733973bfd updated for version 7.3.262
Bram Moolenaar <bram@vim.org>
parents: 2684
diff changeset
822 return Pt_CONTINUE;
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
823 }
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
824
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
825 static int
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
826 gui_ph_handle_window_open(
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
827 PtWidget_t *widget,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
828 void *data,
3076
51ce22ba89d1 updated for version 7.3.310
Bram Moolenaar <bram@vim.org>
parents: 3054
diff changeset
829 PtCallbackInfo_t *info)
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
830 {
3076
51ce22ba89d1 updated for version 7.3.310
Bram Moolenaar <bram@vim.org>
parents: 3054
diff changeset
831 gui_set_shellsize(FALSE, TRUE, RESIZE_BOTH);
2980
847733973bfd updated for version 7.3.262
Bram Moolenaar <bram@vim.org>
parents: 2684
diff changeset
832 return Pt_CONTINUE;
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
833 }
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
834
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
835 /****************************************************************************/
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
836
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
837 #define DRAW_START gui_ph_draw_start()
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
838 #define DRAW_END gui_ph_draw_end()
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
839
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
840 /* TODO: Set a clipping rect? */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
841 static void
3076
51ce22ba89d1 updated for version 7.3.310
Bram Moolenaar <bram@vim.org>
parents: 3054
diff changeset
842 gui_ph_draw_start(void)
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
843 {
1922
e65e50609469 updated for version 7.2-219
vimboss
parents: 1214
diff changeset
844 PhGC_t *gc;
e65e50609469 updated for version 7.2-219
vimboss
parents: 1214
diff changeset
845
e65e50609469 updated for version 7.2-219
vimboss
parents: 1214
diff changeset
846 gc = PgGetGC();
3076
51ce22ba89d1 updated for version 7.3.310
Bram Moolenaar <bram@vim.org>
parents: 3054
diff changeset
847 PgSetRegion(PtWidgetRid(PtFindDisjoint(gui.vimTextArea)));
51ce22ba89d1 updated for version 7.3.310
Bram Moolenaar <bram@vim.org>
parents: 3054
diff changeset
848 PgClearClippingsCx(gc);
51ce22ba89d1 updated for version 7.3.310
Bram Moolenaar <bram@vim.org>
parents: 3054
diff changeset
849 PgClearTranslationCx(gc);
51ce22ba89d1 updated for version 7.3.310
Bram Moolenaar <bram@vim.org>
parents: 3054
diff changeset
850
51ce22ba89d1 updated for version 7.3.310
Bram Moolenaar <bram@vim.org>
parents: 3054
diff changeset
851 PtWidgetOffset(gui.vimTextArea, &gui_ph_raw_offset);
51ce22ba89d1 updated for version 7.3.310
Bram Moolenaar <bram@vim.org>
parents: 3054
diff changeset
852 PhTranslatePoint(&gui_ph_raw_offset, PtWidgetPos(gui.vimTextArea, NULL));
51ce22ba89d1 updated for version 7.3.310
Bram Moolenaar <bram@vim.org>
parents: 3054
diff changeset
853
51ce22ba89d1 updated for version 7.3.310
Bram Moolenaar <bram@vim.org>
parents: 3054
diff changeset
854 PgSetTranslation(&gui_ph_raw_offset, Pg_RELATIVE);
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
855 }
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
856
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
857 static void
3076
51ce22ba89d1 updated for version 7.3.310
Bram Moolenaar <bram@vim.org>
parents: 3054
diff changeset
858 gui_ph_draw_end(void)
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
859 {
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
860 gui_ph_raw_offset.x = -gui_ph_raw_offset.x;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
861 gui_ph_raw_offset.y = -gui_ph_raw_offset.y;
3076
51ce22ba89d1 updated for version 7.3.310
Bram Moolenaar <bram@vim.org>
parents: 3054
diff changeset
862 PgSetTranslation(&gui_ph_raw_offset, Pg_RELATIVE);
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
863 }
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
864
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
865 #ifdef USE_PANEL_GROUP
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
866 static vimmenu_T *
3076
51ce22ba89d1 updated for version 7.3.310
Bram Moolenaar <bram@vim.org>
parents: 3054
diff changeset
867 gui_ph_find_buffer_item(char_u *name)
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
868 {
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
869 vimmenu_T *top_level = root_menu;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
870 vimmenu_T *items = NULL;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
871
3076
51ce22ba89d1 updated for version 7.3.310
Bram Moolenaar <bram@vim.org>
parents: 3054
diff changeset
872 while (top_level != NULL &&
51ce22ba89d1 updated for version 7.3.310
Bram Moolenaar <bram@vim.org>
parents: 3054
diff changeset
873 (STRCMP(top_level->dname, "Buffers") != 0))
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
874 top_level = top_level->next;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
875
3076
51ce22ba89d1 updated for version 7.3.310
Bram Moolenaar <bram@vim.org>
parents: 3054
diff changeset
876 if (top_level != NULL)
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
877 {
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
878 items = top_level->children;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
879
3076
51ce22ba89d1 updated for version 7.3.310
Bram Moolenaar <bram@vim.org>
parents: 3054
diff changeset
880 while (items != NULL &&
51ce22ba89d1 updated for version 7.3.310
Bram Moolenaar <bram@vim.org>
parents: 3054
diff changeset
881 (STRCMP(items->dname, name) != 0))
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
882 items = items->next;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
883 }
2980
847733973bfd updated for version 7.3.262
Bram Moolenaar <bram@vim.org>
parents: 2684
diff changeset
884 return items;
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
885 }
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
886
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
887 static void
3076
51ce22ba89d1 updated for version 7.3.310
Bram Moolenaar <bram@vim.org>
parents: 3054
diff changeset
888 gui_ph_pg_set_buffer_num(int_u buf_num)
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
889 {
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
890 int i;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
891 char search[16];
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
892 char *mark;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
893
3076
51ce22ba89d1 updated for version 7.3.310
Bram Moolenaar <bram@vim.org>
parents: 3054
diff changeset
894 if (gui.vimTextArea == NULL || buf_num == 0)
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
895 return;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
896
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
897 search[0] = '(';
3076
51ce22ba89d1 updated for version 7.3.310
Bram Moolenaar <bram@vim.org>
parents: 3054
diff changeset
898 ultoa(buf_num, &search[1], 10);
51ce22ba89d1 updated for version 7.3.310
Bram Moolenaar <bram@vim.org>
parents: 3054
diff changeset
899 STRCAT(search, ")");
51ce22ba89d1 updated for version 7.3.310
Bram Moolenaar <bram@vim.org>
parents: 3054
diff changeset
900
51ce22ba89d1 updated for version 7.3.310
Bram Moolenaar <bram@vim.org>
parents: 3054
diff changeset
901 for (i = 0; i < num_panels; i++)
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
902 {
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
903 /* find the last "(" in the panel title and see if the buffer
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
904 * number in the title matches the one we're looking for */
3076
51ce22ba89d1 updated for version 7.3.310
Bram Moolenaar <bram@vim.org>
parents: 3054
diff changeset
905 mark = STRRCHR(panel_titles[ i ], '(');
51ce22ba89d1 updated for version 7.3.310
Bram Moolenaar <bram@vim.org>
parents: 3054
diff changeset
906 if (mark != NULL && STRCMP(mark, search) == 0)
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
907 {
3076
51ce22ba89d1 updated for version 7.3.310
Bram Moolenaar <bram@vim.org>
parents: 3054
diff changeset
908 PtSetResource(gui.vimPanelGroup, Pt_ARG_PG_CURRENT_INDEX,
51ce22ba89d1 updated for version 7.3.310
Bram Moolenaar <bram@vim.org>
parents: 3054
diff changeset
909 i, 0);
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
910 }
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
911 }
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
912 }
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
913
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
914 static int
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
915 gui_ph_handle_pg_change(
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
916 PtWidget_t *widget,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
917 void *data,
3076
51ce22ba89d1 updated for version 7.3.310
Bram Moolenaar <bram@vim.org>
parents: 3054
diff changeset
918 PtCallbackInfo_t *info)
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
919 {
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
920 vimmenu_T *menu;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
921 PtPanelGroupCallback_t *panel;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
922
3076
51ce22ba89d1 updated for version 7.3.310
Bram Moolenaar <bram@vim.org>
parents: 3054
diff changeset
923 if (info->event != NULL)
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
924 {
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
925 panel = info->cbdata;
3076
51ce22ba89d1 updated for version 7.3.310
Bram Moolenaar <bram@vim.org>
parents: 3054
diff changeset
926 if (panel->new_panel != NULL)
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
927 {
3076
51ce22ba89d1 updated for version 7.3.310
Bram Moolenaar <bram@vim.org>
parents: 3054
diff changeset
928 menu = gui_ph_find_buffer_item(panel->new_panel);
51ce22ba89d1 updated for version 7.3.310
Bram Moolenaar <bram@vim.org>
parents: 3054
diff changeset
929 if (menu)
51ce22ba89d1 updated for version 7.3.310
Bram Moolenaar <bram@vim.org>
parents: 3054
diff changeset
930 gui_menu_cb(menu);
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
931 }
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
932 }
2980
847733973bfd updated for version 7.3.262
Bram Moolenaar <bram@vim.org>
parents: 2684
diff changeset
933 return Pt_CONTINUE;
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
934 }
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
935
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
936 static void
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
937 gui_ph_get_panelgroup_margins(
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
938 short *top,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
939 short *bottom,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
940 short *left,
3076
51ce22ba89d1 updated for version 7.3.310
Bram Moolenaar <bram@vim.org>
parents: 3054
diff changeset
941 short *right)
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
942 {
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
943 unsigned short abs_raw_x, abs_raw_y, abs_panel_x, abs_panel_y;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
944 const unsigned short *margin_top, *margin_bottom;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
945 const unsigned short *margin_left, *margin_right;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
946
3076
51ce22ba89d1 updated for version 7.3.310
Bram Moolenaar <bram@vim.org>
parents: 3054
diff changeset
947 PtGetAbsPosition(gui.vimTextArea, &abs_raw_x, &abs_raw_y);
51ce22ba89d1 updated for version 7.3.310
Bram Moolenaar <bram@vim.org>
parents: 3054
diff changeset
948 PtGetAbsPosition(gui.vimPanelGroup, &abs_panel_x, &abs_panel_y);
51ce22ba89d1 updated for version 7.3.310
Bram Moolenaar <bram@vim.org>
parents: 3054
diff changeset
949
51ce22ba89d1 updated for version 7.3.310
Bram Moolenaar <bram@vim.org>
parents: 3054
diff changeset
950 PtGetResource(gui.vimPanelGroup, Pt_ARG_MARGIN_RIGHT, &margin_right, 0);
51ce22ba89d1 updated for version 7.3.310
Bram Moolenaar <bram@vim.org>
parents: 3054
diff changeset
951 PtGetResource(gui.vimPanelGroup, Pt_ARG_MARGIN_BOTTOM, &margin_bottom, 0);
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
952
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
953 abs_raw_x -= abs_panel_x;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
954 abs_raw_y -= abs_panel_y;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
955
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
956 *top = abs_raw_y;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
957 *bottom = *margin_bottom;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
958
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
959 *left = abs_raw_x;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
960 *right = *margin_right;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
961 }
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
962
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
963 /* Used for the tabs for PtPanelGroup */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
964 static int
3076
51ce22ba89d1 updated for version 7.3.310
Bram Moolenaar <bram@vim.org>
parents: 3054
diff changeset
965 gui_ph_is_buffer_item(vimmenu_T *menu, vimmenu_T *parent)
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
966 {
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
967 char *mark;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
968
3076
51ce22ba89d1 updated for version 7.3.310
Bram Moolenaar <bram@vim.org>
parents: 3054
diff changeset
969 if (STRCMP(parent->dname, "Buffers") == 0)
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
970 {
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
971 /* Look for '(' digits ')' */
3076
51ce22ba89d1 updated for version 7.3.310
Bram Moolenaar <bram@vim.org>
parents: 3054
diff changeset
972 mark = vim_strchr(menu->dname, '(');
51ce22ba89d1 updated for version 7.3.310
Bram Moolenaar <bram@vim.org>
parents: 3054
diff changeset
973 if (mark != NULL)
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
974 {
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
975 mark++;
3076
51ce22ba89d1 updated for version 7.3.310
Bram Moolenaar <bram@vim.org>
parents: 3054
diff changeset
976 while (isdigit(*mark))
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
977 mark++;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
978
3076
51ce22ba89d1 updated for version 7.3.310
Bram Moolenaar <bram@vim.org>
parents: 3054
diff changeset
979 if (*mark == ')')
2980
847733973bfd updated for version 7.3.262
Bram Moolenaar <bram@vim.org>
parents: 2684
diff changeset
980 return TRUE;
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
981 }
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
982 }
2980
847733973bfd updated for version 7.3.262
Bram Moolenaar <bram@vim.org>
parents: 2684
diff changeset
983 return FALSE;
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
984 }
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
985
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
986 static void
3076
51ce22ba89d1 updated for version 7.3.310
Bram Moolenaar <bram@vim.org>
parents: 3054
diff changeset
987 gui_ph_pg_add_buffer(char *name)
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
988 {
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
989 char **new_titles = NULL;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
990
3076
51ce22ba89d1 updated for version 7.3.310
Bram Moolenaar <bram@vim.org>
parents: 3054
diff changeset
991 new_titles = (char **) alloc((num_panels + 1) * sizeof(char **));
51ce22ba89d1 updated for version 7.3.310
Bram Moolenaar <bram@vim.org>
parents: 3054
diff changeset
992 if (new_titles != NULL)
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
993 {
3076
51ce22ba89d1 updated for version 7.3.310
Bram Moolenaar <bram@vim.org>
parents: 3054
diff changeset
994 if (num_panels > 0)
51ce22ba89d1 updated for version 7.3.310
Bram Moolenaar <bram@vim.org>
parents: 3054
diff changeset
995 memcpy(new_titles, panel_titles, num_panels * sizeof(char **));
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
996
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
997 new_titles[ num_panels++ ] = name;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
998
3076
51ce22ba89d1 updated for version 7.3.310
Bram Moolenaar <bram@vim.org>
parents: 3054
diff changeset
999 PtSetResource(gui.vimPanelGroup, Pt_ARG_PG_PANEL_TITLES, new_titles,
51ce22ba89d1 updated for version 7.3.310
Bram Moolenaar <bram@vim.org>
parents: 3054
diff changeset
1000 num_panels);
51ce22ba89d1 updated for version 7.3.310
Bram Moolenaar <bram@vim.org>
parents: 3054
diff changeset
1001
51ce22ba89d1 updated for version 7.3.310
Bram Moolenaar <bram@vim.org>
parents: 3054
diff changeset
1002 vim_free(panel_titles);
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1003 panel_titles = new_titles;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1004 }
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1005 }
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1006
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1007 static void
3076
51ce22ba89d1 updated for version 7.3.310
Bram Moolenaar <bram@vim.org>
parents: 3054
diff changeset
1008 gui_ph_pg_remove_buffer(char *name)
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1009 {
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1010 int i;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1011 char **new_titles = NULL;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1012
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1013 /* If there is only 1 panel, we just use the temporary place holder */
3076
51ce22ba89d1 updated for version 7.3.310
Bram Moolenaar <bram@vim.org>
parents: 3054
diff changeset
1014 if (num_panels > 1)
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1015 {
3076
51ce22ba89d1 updated for version 7.3.310
Bram Moolenaar <bram@vim.org>
parents: 3054
diff changeset
1016 new_titles = (char **) alloc((num_panels - 1) * sizeof(char **));
51ce22ba89d1 updated for version 7.3.310
Bram Moolenaar <bram@vim.org>
parents: 3054
diff changeset
1017 if (new_titles != NULL)
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1018 {
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1019 char **s = new_titles;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1020 /* Copy all the titles except the one we're removing */
3076
51ce22ba89d1 updated for version 7.3.310
Bram Moolenaar <bram@vim.org>
parents: 3054
diff changeset
1021 for (i = 0; i < num_panels; i++)
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1022 {
3076
51ce22ba89d1 updated for version 7.3.310
Bram Moolenaar <bram@vim.org>
parents: 3054
diff changeset
1023 if (STRCMP(panel_titles[ i ], name) != 0)
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1024 {
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1025 *s++ = panel_titles[ i ];
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1026 }
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1027 }
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1028 num_panels--;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1029
3076
51ce22ba89d1 updated for version 7.3.310
Bram Moolenaar <bram@vim.org>
parents: 3054
diff changeset
1030 PtSetResource(gui.vimPanelGroup, Pt_ARG_PG_PANEL_TITLES, new_titles,
51ce22ba89d1 updated for version 7.3.310
Bram Moolenaar <bram@vim.org>
parents: 3054
diff changeset
1031 num_panels);
51ce22ba89d1 updated for version 7.3.310
Bram Moolenaar <bram@vim.org>
parents: 3054
diff changeset
1032
51ce22ba89d1 updated for version 7.3.310
Bram Moolenaar <bram@vim.org>
parents: 3054
diff changeset
1033 vim_free(panel_titles);
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1034 panel_titles = new_titles;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1035 }
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1036 }
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1037 else
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1038 {
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1039 num_panels--;
3076
51ce22ba89d1 updated for version 7.3.310
Bram Moolenaar <bram@vim.org>
parents: 3054
diff changeset
1040 PtSetResource(gui.vimPanelGroup, Pt_ARG_PG_PANEL_TITLES, &empty_title,
51ce22ba89d1 updated for version 7.3.310
Bram Moolenaar <bram@vim.org>
parents: 3054
diff changeset
1041 1);
51ce22ba89d1 updated for version 7.3.310
Bram Moolenaar <bram@vim.org>
parents: 3054
diff changeset
1042
51ce22ba89d1 updated for version 7.3.310
Bram Moolenaar <bram@vim.org>
parents: 3054
diff changeset
1043 vim_free(panel_titles);
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1044 panel_titles = NULL;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1045 }
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1046 }
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1047
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1048 /* When a buffer item is deleted from the buffer menu */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1049 static int
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1050 gui_ph_handle_buffer_remove(
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1051 PtWidget_t *widget,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1052 void *data,
3076
51ce22ba89d1 updated for version 7.3.310
Bram Moolenaar <bram@vim.org>
parents: 3054
diff changeset
1053 PtCallbackInfo_t *info)
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1054 {
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1055 vimmenu_T *menu;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1056
3076
51ce22ba89d1 updated for version 7.3.310
Bram Moolenaar <bram@vim.org>
parents: 3054
diff changeset
1057 if (data != NULL)
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1058 {
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1059 menu = (vimmenu_T *) data;
3076
51ce22ba89d1 updated for version 7.3.310
Bram Moolenaar <bram@vim.org>
parents: 3054
diff changeset
1060 gui_ph_pg_remove_buffer(menu->dname);
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1061 }
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1062
2980
847733973bfd updated for version 7.3.262
Bram Moolenaar <bram@vim.org>
parents: 2684
diff changeset
1063 return Pt_CONTINUE;
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1064 }
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1065 #endif
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1066
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1067 static int
3076
51ce22ba89d1 updated for version 7.3.310
Bram Moolenaar <bram@vim.org>
parents: 3054
diff changeset
1068 gui_ph_pane_resize(PtWidget_t *widget, void *data, PtCallbackInfo_t *info)
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1069 {
3076
51ce22ba89d1 updated for version 7.3.310
Bram Moolenaar <bram@vim.org>
parents: 3054
diff changeset
1070 if (PtWidgetIsRealized(widget))
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1071 {
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1072 is_ignore_draw = TRUE;
3076
51ce22ba89d1 updated for version 7.3.310
Bram Moolenaar <bram@vim.org>
parents: 3054
diff changeset
1073 PtStartFlux(gui.vimContainer);
51ce22ba89d1 updated for version 7.3.310
Bram Moolenaar <bram@vim.org>
parents: 3054
diff changeset
1074 PtContainerHold(gui.vimContainer);
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1075 }
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1076
2980
847733973bfd updated for version 7.3.262
Bram Moolenaar <bram@vim.org>
parents: 2684
diff changeset
1077 return Pt_CONTINUE;
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1078 }
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1079
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1080 /****************************************************************************/
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1081
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1082 #ifdef FEAT_MBYTE
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1083 void
3076
51ce22ba89d1 updated for version 7.3.310
Bram Moolenaar <bram@vim.org>
parents: 3054
diff changeset
1084 gui_ph_encoding_changed(int new_encoding)
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1085 {
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1086 /* Default encoding is latin1 */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1087 char *charset = "latin1";
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1088 int i;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1089
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1090 struct {
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1091 int encoding;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1092 char *name;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1093 } charsets[] = {
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1094 { DBCS_JPN, "SHIFT_JIS" },
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1095 { DBCS_KOR, "csEUCKR" },
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1096 { DBCS_CHT, "big5" },
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1097 { DBCS_CHS, "gb" }
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1098 };
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1099
3076
51ce22ba89d1 updated for version 7.3.310
Bram Moolenaar <bram@vim.org>
parents: 3054
diff changeset
1100 for (i = 0; i < ARRAY_LENGTH(charsets); i++)
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1101 {
3076
51ce22ba89d1 updated for version 7.3.310
Bram Moolenaar <bram@vim.org>
parents: 3054
diff changeset
1102 if (new_encoding == charsets[ i ].encoding)
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1103 charset = charsets[ i ].name;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1104 }
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1105
3076
51ce22ba89d1 updated for version 7.3.310
Bram Moolenaar <bram@vim.org>
parents: 3054
diff changeset
1106 charset_translate = PxTranslateSet(charset_translate, charset);
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1107 }
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1108 #endif
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1109
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1110 /****************************************************************************/
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1111 /****************************************************************************/
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1112
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1113 void
7823
bcef391c101c commit https://github.com/vim/vim/commit/68c2f638e65d914dc6e84eb7ce2624f08af525c0
Christian Brabandt <cb@256bit.org>
parents: 4352
diff changeset
1114 gui_mch_prepare(int *argc, char **argv)
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1115 {
3076
51ce22ba89d1 updated for version 7.3.310
Bram Moolenaar <bram@vim.org>
parents: 3054
diff changeset
1116 PtInit(NULL);
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1117 }
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1118
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1119 int
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1120 gui_mch_init(void)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1121 {
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1122 PtArg_t args[10];
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1123 int flags = 0, n = 0;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1124
1214
a91a2e0c4108 updated for version 7.1b
vimboss
parents: 834
diff changeset
1125 PhDim_t window_size = {100, 100}; /* Arbitrary values */
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1126 PhPoint_t pos = {0, 0};
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1127
3076
51ce22ba89d1 updated for version 7.3.310
Bram Moolenaar <bram@vim.org>
parents: 3054
diff changeset
1128 gui.event_buffer = (PhEvent_t *) alloc(EVENT_BUFFER_SIZE);
51ce22ba89d1 updated for version 7.3.310
Bram Moolenaar <bram@vim.org>
parents: 3054
diff changeset
1129 if (gui.event_buffer == NULL)
2980
847733973bfd updated for version 7.3.262
Bram Moolenaar <bram@vim.org>
parents: 2684
diff changeset
1130 return FAIL;
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1131
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1132 /* Get a translation so we can convert from ISO Latin-1 to UTF */
3076
51ce22ba89d1 updated for version 7.3.310
Bram Moolenaar <bram@vim.org>
parents: 3054
diff changeset
1133 charset_translate = PxTranslateSet(NULL, "latin1");
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1134
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1135 /* The +2 is for the 1 pixel dark line on each side */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1136 gui.border_offset = gui.border_width = GUI_PH_MARGIN + 2;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1137
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1138 /* Handle close events ourselves */
3076
51ce22ba89d1 updated for version 7.3.310
Bram Moolenaar <bram@vim.org>
parents: 3054
diff changeset
1139 PtSetArg(&args[ n++ ], Pt_ARG_WINDOW_MANAGED_FLAGS, Pt_FALSE, Ph_WM_CLOSE);
51ce22ba89d1 updated for version 7.3.310
Bram Moolenaar <bram@vim.org>
parents: 3054
diff changeset
1140 PtSetArg(&args[ n++ ], Pt_ARG_WINDOW_NOTIFY_FLAGS, Pt_TRUE,
51ce22ba89d1 updated for version 7.3.310
Bram Moolenaar <bram@vim.org>
parents: 3054
diff changeset
1141 Ph_WM_CLOSE | Ph_WM_RESIZE | Ph_WM_FOCUS);
51ce22ba89d1 updated for version 7.3.310
Bram Moolenaar <bram@vim.org>
parents: 3054
diff changeset
1142 PtSetArg(&args[ n++ ], Pt_ARG_DIM, &window_size, 0);
51ce22ba89d1 updated for version 7.3.310
Bram Moolenaar <bram@vim.org>
parents: 3054
diff changeset
1143 gui.vimWindow = PtCreateWidget(PtWindow, NULL, n, args);
51ce22ba89d1 updated for version 7.3.310
Bram Moolenaar <bram@vim.org>
parents: 3054
diff changeset
1144 if (gui.vimWindow == NULL)
2980
847733973bfd updated for version 7.3.262
Bram Moolenaar <bram@vim.org>
parents: 2684
diff changeset
1145 return FAIL;
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1146
3076
51ce22ba89d1 updated for version 7.3.310
Bram Moolenaar <bram@vim.org>
parents: 3054
diff changeset
1147 PtAddCallback(gui.vimWindow, Pt_CB_WINDOW, gui_ph_handle_window_cb, NULL);
51ce22ba89d1 updated for version 7.3.310
Bram Moolenaar <bram@vim.org>
parents: 3054
diff changeset
1148 PtAddCallback(gui.vimWindow, Pt_CB_WINDOW_OPENING,
51ce22ba89d1 updated for version 7.3.310
Bram Moolenaar <bram@vim.org>
parents: 3054
diff changeset
1149 gui_ph_handle_window_open, NULL);
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1150
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1151 n = 0;
3076
51ce22ba89d1 updated for version 7.3.310
Bram Moolenaar <bram@vim.org>
parents: 3054
diff changeset
1152 PtSetArg(&args[ n++ ], Pt_ARG_ANCHOR_FLAGS, Pt_ANCHOR_ALL, Pt_IS_ANCHORED);
51ce22ba89d1 updated for version 7.3.310
Bram Moolenaar <bram@vim.org>
parents: 3054
diff changeset
1153 PtSetArg(&args[ n++ ], Pt_ARG_DIM, &window_size, 0);
51ce22ba89d1 updated for version 7.3.310
Bram Moolenaar <bram@vim.org>
parents: 3054
diff changeset
1154 PtSetArg(&args[ n++ ], Pt_ARG_POS, &pos, 0);
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1155
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1156 #ifdef USE_PANEL_GROUP
4352
04736b4030ec updated for version 7.3.925
Bram Moolenaar <bram@vim.org>
parents: 3927
diff changeset
1157 /* Put in a temporary place holder title */
3076
51ce22ba89d1 updated for version 7.3.310
Bram Moolenaar <bram@vim.org>
parents: 3054
diff changeset
1158 PtSetArg(&args[ n++ ], Pt_ARG_PG_PANEL_TITLES, &empty_title, 1);
51ce22ba89d1 updated for version 7.3.310
Bram Moolenaar <bram@vim.org>
parents: 3054
diff changeset
1159
51ce22ba89d1 updated for version 7.3.310
Bram Moolenaar <bram@vim.org>
parents: 3054
diff changeset
1160 gui.vimPanelGroup = PtCreateWidget(PtPanelGroup, gui.vimWindow, n, args);
51ce22ba89d1 updated for version 7.3.310
Bram Moolenaar <bram@vim.org>
parents: 3054
diff changeset
1161 if (gui.vimPanelGroup == NULL)
2980
847733973bfd updated for version 7.3.262
Bram Moolenaar <bram@vim.org>
parents: 2684
diff changeset
1162 return FAIL;
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1163
3076
51ce22ba89d1 updated for version 7.3.310
Bram Moolenaar <bram@vim.org>
parents: 3054
diff changeset
1164 PtAddCallback(gui.vimPanelGroup, Pt_CB_PG_PANEL_SWITCHING,
51ce22ba89d1 updated for version 7.3.310
Bram Moolenaar <bram@vim.org>
parents: 3054
diff changeset
1165 gui_ph_handle_pg_change, NULL);
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1166 #else
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1167 /* Turn off all edge decorations */
3076
51ce22ba89d1 updated for version 7.3.310
Bram Moolenaar <bram@vim.org>
parents: 3054
diff changeset
1168 PtSetArg(&args[ n++ ], Pt_ARG_BASIC_FLAGS, Pt_FALSE, Pt_ALL);
51ce22ba89d1 updated for version 7.3.310
Bram Moolenaar <bram@vim.org>
parents: 3054
diff changeset
1169 PtSetArg(&args[ n++ ], Pt_ARG_BEVEL_WIDTH, 0, 0);
51ce22ba89d1 updated for version 7.3.310
Bram Moolenaar <bram@vim.org>
parents: 3054
diff changeset
1170 PtSetArg(&args[ n++ ], Pt_ARG_MARGIN_WIDTH, 0, 0);
51ce22ba89d1 updated for version 7.3.310
Bram Moolenaar <bram@vim.org>
parents: 3054
diff changeset
1171 PtSetArg(&args[ n++ ], Pt_ARG_MARGIN_HEIGHT, 0, 0);
51ce22ba89d1 updated for version 7.3.310
Bram Moolenaar <bram@vim.org>
parents: 3054
diff changeset
1172 PtSetArg(&args[ n++ ], Pt_ARG_CONTAINER_FLAGS, Pt_TRUE, Pt_AUTO_EXTENT);
51ce22ba89d1 updated for version 7.3.310
Bram Moolenaar <bram@vim.org>
parents: 3054
diff changeset
1173
51ce22ba89d1 updated for version 7.3.310
Bram Moolenaar <bram@vim.org>
parents: 3054
diff changeset
1174 gui.vimContainer = PtCreateWidget(PtPane, gui.vimWindow, n, args);
51ce22ba89d1 updated for version 7.3.310
Bram Moolenaar <bram@vim.org>
parents: 3054
diff changeset
1175 if (gui.vimContainer == NULL)
2980
847733973bfd updated for version 7.3.262
Bram Moolenaar <bram@vim.org>
parents: 2684
diff changeset
1176 return FAIL;
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1177
3076
51ce22ba89d1 updated for version 7.3.310
Bram Moolenaar <bram@vim.org>
parents: 3054
diff changeset
1178 PtAddCallback(gui.vimContainer, Pt_CB_RESIZE, gui_ph_pane_resize, NULL);
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1179 #endif
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1180
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1181 /* Size for the text area is set in gui_mch_set_text_area_pos */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1182 n = 0;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1183
3076
51ce22ba89d1 updated for version 7.3.310
Bram Moolenaar <bram@vim.org>
parents: 3054
diff changeset
1184 PtSetArg(&args[ n++ ], Pt_ARG_RAW_DRAW_F, gui_ph_handle_raw_draw, 1);
51ce22ba89d1 updated for version 7.3.310
Bram Moolenaar <bram@vim.org>
parents: 3054
diff changeset
1185 PtSetArg(&args[ n++ ], Pt_ARG_BEVEL_WIDTH, GUI_PH_MARGIN, 0);
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1186 /*
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1187 * Using focus render also causes the whole widget to be redrawn
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1188 * whenever it changes focus, which is very annoying :p
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1189 */
3076
51ce22ba89d1 updated for version 7.3.310
Bram Moolenaar <bram@vim.org>
parents: 3054
diff changeset
1190 PtSetArg(&args[ n++ ], Pt_ARG_FLAGS, Pt_TRUE,
51ce22ba89d1 updated for version 7.3.310
Bram Moolenaar <bram@vim.org>
parents: 3054
diff changeset
1191 Pt_GETS_FOCUS | Pt_HIGHLIGHTED);
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1192 #ifndef FEAT_MOUSESHAPE
3076
51ce22ba89d1 updated for version 7.3.310
Bram Moolenaar <bram@vim.org>
parents: 3054
diff changeset
1193 PtSetArg(&args[ n++ ], Pt_ARG_CURSOR_TYPE, GUI_PH_MOUSE_TYPE, 0);
51ce22ba89d1 updated for version 7.3.310
Bram Moolenaar <bram@vim.org>
parents: 3054
diff changeset
1194 PtSetArg(&args[ n++ ], Pt_ARG_CURSOR_COLOR, gui_ph_mouse_color, 0);
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1195 #endif
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1196
3076
51ce22ba89d1 updated for version 7.3.310
Bram Moolenaar <bram@vim.org>
parents: 3054
diff changeset
1197 gui.vimTextArea = PtCreateWidget(PtRaw, Pt_DFLT_PARENT, n, args);
51ce22ba89d1 updated for version 7.3.310
Bram Moolenaar <bram@vim.org>
parents: 3054
diff changeset
1198 if (gui.vimTextArea == NULL)
2980
847733973bfd updated for version 7.3.262
Bram Moolenaar <bram@vim.org>
parents: 2684
diff changeset
1199 return FAIL;
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1200
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1201 /* TODO: use PtAddEventHandlers instead? */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1202 /* Not using Ph_EV_BUT_REPEAT because vim wouldn't use it anyway */
3076
51ce22ba89d1 updated for version 7.3.310
Bram Moolenaar <bram@vim.org>
parents: 3054
diff changeset
1203 PtAddEventHandler(gui.vimTextArea,
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1204 Ph_EV_BUT_PRESS | Ph_EV_BUT_RELEASE | Ph_EV_PTR_MOTION_BUTTON,
3076
51ce22ba89d1 updated for version 7.3.310
Bram Moolenaar <bram@vim.org>
parents: 3054
diff changeset
1205 gui_ph_handle_mouse, NULL);
51ce22ba89d1 updated for version 7.3.310
Bram Moolenaar <bram@vim.org>
parents: 3054
diff changeset
1206 PtAddEventHandler(gui.vimTextArea, Ph_EV_KEY,
51ce22ba89d1 updated for version 7.3.310
Bram Moolenaar <bram@vim.org>
parents: 3054
diff changeset
1207 gui_ph_handle_keyboard, NULL);
51ce22ba89d1 updated for version 7.3.310
Bram Moolenaar <bram@vim.org>
parents: 3054
diff changeset
1208 PtAddCallback(gui.vimTextArea, Pt_CB_GOT_FOCUS,
51ce22ba89d1 updated for version 7.3.310
Bram Moolenaar <bram@vim.org>
parents: 3054
diff changeset
1209 gui_ph_handle_focus, NULL);
51ce22ba89d1 updated for version 7.3.310
Bram Moolenaar <bram@vim.org>
parents: 3054
diff changeset
1210 PtAddCallback(gui.vimTextArea, Pt_CB_LOST_FOCUS,
51ce22ba89d1 updated for version 7.3.310
Bram Moolenaar <bram@vim.org>
parents: 3054
diff changeset
1211 gui_ph_handle_focus, NULL);
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1212
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1213 /*
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1214 * Now that the text area widget has been created, set up the colours,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1215 * which wil call PtSetResource from gui_mch_new_colors
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1216 */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1217
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1218 /*
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1219 * Create the two timers, not as accurate as using the kernel timer
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1220 * functions, but good enough
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1221 */
3076
51ce22ba89d1 updated for version 7.3.310
Bram Moolenaar <bram@vim.org>
parents: 3054
diff changeset
1222 gui_ph_timer_cursor = PtCreateWidget(PtTimer, gui.vimWindow, 0, NULL);
51ce22ba89d1 updated for version 7.3.310
Bram Moolenaar <bram@vim.org>
parents: 3054
diff changeset
1223 if (gui_ph_timer_cursor == NULL)
2980
847733973bfd updated for version 7.3.262
Bram Moolenaar <bram@vim.org>
parents: 2684
diff changeset
1224 return FAIL;
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1225
3076
51ce22ba89d1 updated for version 7.3.310
Bram Moolenaar <bram@vim.org>
parents: 3054
diff changeset
1226 gui_ph_timer_timeout = PtCreateWidget(PtTimer, gui.vimWindow, 0, NULL);
51ce22ba89d1 updated for version 7.3.310
Bram Moolenaar <bram@vim.org>
parents: 3054
diff changeset
1227 if (gui_ph_timer_timeout == NULL)
2980
847733973bfd updated for version 7.3.262
Bram Moolenaar <bram@vim.org>
parents: 2684
diff changeset
1228 return FAIL;
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1229
3076
51ce22ba89d1 updated for version 7.3.310
Bram Moolenaar <bram@vim.org>
parents: 3054
diff changeset
1230 PtAddCallback(gui_ph_timer_cursor, Pt_CB_TIMER_ACTIVATE,
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1231 gui_ph_handle_timer_cursor, NULL);
3076
51ce22ba89d1 updated for version 7.3.310
Bram Moolenaar <bram@vim.org>
parents: 3054
diff changeset
1232 PtAddCallback(gui_ph_timer_timeout, Pt_CB_TIMER_ACTIVATE,
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1233 gui_ph_handle_timer_timeout, NULL);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1234
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1235 #ifdef FEAT_MENU
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1236 n = 0;
3076
51ce22ba89d1 updated for version 7.3.310
Bram Moolenaar <bram@vim.org>
parents: 3054
diff changeset
1237 PtSetArg(&args[ n++ ], Pt_ARG_WIDTH, window_size.w, 0);
51ce22ba89d1 updated for version 7.3.310
Bram Moolenaar <bram@vim.org>
parents: 3054
diff changeset
1238 PtSetArg(&args[ n++ ], Pt_ARG_ANCHOR_FLAGS, Pt_ANCHOR_LEFT_RIGHT,
51ce22ba89d1 updated for version 7.3.310
Bram Moolenaar <bram@vim.org>
parents: 3054
diff changeset
1239 Pt_IS_ANCHORED);
51ce22ba89d1 updated for version 7.3.310
Bram Moolenaar <bram@vim.org>
parents: 3054
diff changeset
1240 gui.vimToolBarGroup = PtCreateWidget(PtToolbarGroup, gui.vimWindow,
51ce22ba89d1 updated for version 7.3.310
Bram Moolenaar <bram@vim.org>
parents: 3054
diff changeset
1241 n, args);
51ce22ba89d1 updated for version 7.3.310
Bram Moolenaar <bram@vim.org>
parents: 3054
diff changeset
1242 if (gui.vimToolBarGroup == NULL)
2980
847733973bfd updated for version 7.3.262
Bram Moolenaar <bram@vim.org>
parents: 2684
diff changeset
1243 return FAIL;
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1244
3076
51ce22ba89d1 updated for version 7.3.310
Bram Moolenaar <bram@vim.org>
parents: 3054
diff changeset
1245 PtAddCallback(gui.vimToolBarGroup, Pt_CB_RESIZE,
51ce22ba89d1 updated for version 7.3.310
Bram Moolenaar <bram@vim.org>
parents: 3054
diff changeset
1246 gui_ph_handle_menu_resize, NULL);
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1247
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1248 n = 0;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1249 flags = 0;
3076
51ce22ba89d1 updated for version 7.3.310
Bram Moolenaar <bram@vim.org>
parents: 3054
diff changeset
1250 PtSetArg(&args[ n++ ], Pt_ARG_WIDTH, window_size.w, 0);
51ce22ba89d1 updated for version 7.3.310
Bram Moolenaar <bram@vim.org>
parents: 3054
diff changeset
1251 if (! vim_strchr(p_go, GO_MENUS))
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1252 {
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1253 flags |= Pt_DELAY_REALIZE;
3076
51ce22ba89d1 updated for version 7.3.310
Bram Moolenaar <bram@vim.org>
parents: 3054
diff changeset
1254 PtSetArg(&args[ n++ ], Pt_ARG_FLAGS, Pt_TRUE, flags);
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1255 }
3076
51ce22ba89d1 updated for version 7.3.310
Bram Moolenaar <bram@vim.org>
parents: 3054
diff changeset
1256 gui.vimMenuBar = PtCreateWidget(PtMenuBar, gui.vimToolBarGroup, n, args);
51ce22ba89d1 updated for version 7.3.310
Bram Moolenaar <bram@vim.org>
parents: 3054
diff changeset
1257 if (gui.vimMenuBar == NULL)
2980
847733973bfd updated for version 7.3.262
Bram Moolenaar <bram@vim.org>
parents: 2684
diff changeset
1258 return FAIL;
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1259
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1260 # ifdef FEAT_TOOLBAR
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1261 n = 0;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1262
3076
51ce22ba89d1 updated for version 7.3.310
Bram Moolenaar <bram@vim.org>
parents: 3054
diff changeset
1263 PtSetArg(&args[ n++ ], Pt_ARG_ANCHOR_FLAGS,
51ce22ba89d1 updated for version 7.3.310
Bram Moolenaar <bram@vim.org>
parents: 3054
diff changeset
1264 Pt_ANCHOR_LEFT_RIGHT |Pt_TOP_ANCHORED_TOP, Pt_IS_ANCHORED);
51ce22ba89d1 updated for version 7.3.310
Bram Moolenaar <bram@vim.org>
parents: 3054
diff changeset
1265 PtSetArg(&args[ n++ ], Pt_ARG_RESIZE_FLAGS, Pt_TRUE,
51ce22ba89d1 updated for version 7.3.310
Bram Moolenaar <bram@vim.org>
parents: 3054
diff changeset
1266 Pt_RESIZE_Y_AS_REQUIRED);
51ce22ba89d1 updated for version 7.3.310
Bram Moolenaar <bram@vim.org>
parents: 3054
diff changeset
1267 PtSetArg(&args[ n++ ], Pt_ARG_WIDTH, window_size.w, 0);
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1268
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1269 flags = Pt_GETS_FOCUS;
3076
51ce22ba89d1 updated for version 7.3.310
Bram Moolenaar <bram@vim.org>
parents: 3054
diff changeset
1270 if (! vim_strchr(p_go, GO_TOOLBAR))
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1271 flags |= Pt_DELAY_REALIZE;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1272
3076
51ce22ba89d1 updated for version 7.3.310
Bram Moolenaar <bram@vim.org>
parents: 3054
diff changeset
1273 PtSetArg(&args[ n++ ], Pt_ARG_FLAGS, Pt_DELAY_REALIZE, flags);
51ce22ba89d1 updated for version 7.3.310
Bram Moolenaar <bram@vim.org>
parents: 3054
diff changeset
1274
51ce22ba89d1 updated for version 7.3.310
Bram Moolenaar <bram@vim.org>
parents: 3054
diff changeset
1275 gui.vimToolBar = PtCreateWidget(PtToolbar, gui.vimToolBarGroup, n, args);
51ce22ba89d1 updated for version 7.3.310
Bram Moolenaar <bram@vim.org>
parents: 3054
diff changeset
1276 if (gui.vimToolBar == NULL)
2980
847733973bfd updated for version 7.3.262
Bram Moolenaar <bram@vim.org>
parents: 2684
diff changeset
1277 return FAIL;
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1278
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1279 /*
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1280 * Size for the toolbar is fetched in gui_mch_show_toolbar, after
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1281 * the buttons have been added and the toolbar has resized it's height
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1282 * for the buttons to fit
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1283 */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1284 # endif
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1285
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1286 #endif
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1287
2980
847733973bfd updated for version 7.3.262
Bram Moolenaar <bram@vim.org>
parents: 2684
diff changeset
1288 return OK;
7
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 int
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1292 gui_mch_init_check(void)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1293 {
2980
847733973bfd updated for version 7.3.262
Bram Moolenaar <bram@vim.org>
parents: 2684
diff changeset
1294 return (is_photon_available == TRUE) ? OK : FAIL;
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1295 }
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1296
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1297 int
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1298 gui_mch_open(void)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1299 {
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1300 gui.norm_pixel = Pg_BLACK;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1301 gui.back_pixel = Pg_WHITE;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1302
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1303 set_normal_colors();
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1304
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1305 gui_check_colors();
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1306 gui.def_norm_pixel = gui.norm_pixel;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1307 gui.def_back_pixel = gui.back_pixel;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1308
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1309 highlight_gui_started();
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
3076
51ce22ba89d1 updated for version 7.3.310
Bram Moolenaar <bram@vim.org>
parents: 3054
diff changeset
1314 return (PtRealizeWidget(gui.vimWindow) == 0) ? OK : FAIL;
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1315 }
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1316
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1317 void
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1318 gui_mch_exit(int rc)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1319 {
3076
51ce22ba89d1 updated for version 7.3.310
Bram Moolenaar <bram@vim.org>
parents: 3054
diff changeset
1320 PtDestroyWidget(gui.vimWindow);
51ce22ba89d1 updated for version 7.3.310
Bram Moolenaar <bram@vim.org>
parents: 3054
diff changeset
1321
51ce22ba89d1 updated for version 7.3.310
Bram Moolenaar <bram@vim.org>
parents: 3054
diff changeset
1322 PxTranslateSet(charset_translate, NULL);
51ce22ba89d1 updated for version 7.3.310
Bram Moolenaar <bram@vim.org>
parents: 3054
diff changeset
1323
51ce22ba89d1 updated for version 7.3.310
Bram Moolenaar <bram@vim.org>
parents: 3054
diff changeset
1324 vim_free(gui.event_buffer);
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1325
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1326 #ifdef USE_PANEL_GROUPS
3076
51ce22ba89d1 updated for version 7.3.310
Bram Moolenaar <bram@vim.org>
parents: 3054
diff changeset
1327 vim_free(panel_titles);
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1328 #endif
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1329 }
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1330
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1331 /****************************************************************************/
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1332 /* events */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1333
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1334 /* When no events are available, photon will call this function, working is
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1335 * set to FALSE, and the gui_mch_update loop will exit. */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1336 static int
3076
51ce22ba89d1 updated for version 7.3.310
Bram Moolenaar <bram@vim.org>
parents: 3054
diff changeset
1337 exit_gui_mch_update(void *data)
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1338 {
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1339 *(int *)data = FALSE;
2980
847733973bfd updated for version 7.3.262
Bram Moolenaar <bram@vim.org>
parents: 2684
diff changeset
1340 return Pt_END;
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1341 }
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1342
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1343 void
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1344 gui_mch_update(void)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1345 {
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1346 int working = TRUE;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1347
3076
51ce22ba89d1 updated for version 7.3.310
Bram Moolenaar <bram@vim.org>
parents: 3054
diff changeset
1348 PtAppAddWorkProc(NULL, exit_gui_mch_update, &working);
51ce22ba89d1 updated for version 7.3.310
Bram Moolenaar <bram@vim.org>
parents: 3054
diff changeset
1349 while ((working == TRUE) && !vim_is_input_buf_full())
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1350 {
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1351 PtProcessEvent();
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1352 }
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1353 }
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1354
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1355 int
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1356 gui_mch_wait_for_chars(int wtime)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1357 {
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1358 is_timeout = FALSE;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1359
3076
51ce22ba89d1 updated for version 7.3.310
Bram Moolenaar <bram@vim.org>
parents: 3054
diff changeset
1360 if (wtime > 0)
51ce22ba89d1 updated for version 7.3.310
Bram Moolenaar <bram@vim.org>
parents: 3054
diff changeset
1361 PtSetResource(gui_ph_timer_timeout, Pt_ARG_TIMER_INITIAL, wtime, 0);
51ce22ba89d1 updated for version 7.3.310
Bram Moolenaar <bram@vim.org>
parents: 3054
diff changeset
1362
51ce22ba89d1 updated for version 7.3.310
Bram Moolenaar <bram@vim.org>
parents: 3054
diff changeset
1363 while (1)
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1364 {
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1365 PtProcessEvent();
3076
51ce22ba89d1 updated for version 7.3.310
Bram Moolenaar <bram@vim.org>
parents: 3054
diff changeset
1366 if (input_available())
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1367 {
3076
51ce22ba89d1 updated for version 7.3.310
Bram Moolenaar <bram@vim.org>
parents: 3054
diff changeset
1368 PtSetResource(gui_ph_timer_timeout, Pt_ARG_TIMER_INITIAL, 0, 0);
2980
847733973bfd updated for version 7.3.262
Bram Moolenaar <bram@vim.org>
parents: 2684
diff changeset
1369 return OK;
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1370 }
3076
51ce22ba89d1 updated for version 7.3.310
Bram Moolenaar <bram@vim.org>
parents: 3054
diff changeset
1371 else if (is_timeout == TRUE)
2980
847733973bfd updated for version 7.3.262
Bram Moolenaar <bram@vim.org>
parents: 2684
diff changeset
1372 return FAIL;
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1373 }
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1374 }
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1375
3076
51ce22ba89d1 updated for version 7.3.310
Bram Moolenaar <bram@vim.org>
parents: 3054
diff changeset
1376 #if defined(FEAT_BROWSE) || defined(PROTO)
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1377 /*
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1378 * Put up a file requester.
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1379 * Returns the selected name in allocated memory, or NULL for Cancel.
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1380 * saving, select file to write
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1381 * title title for the window
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1382 * default_name default name (well duh!)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1383 * ext not used (extension added)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1384 * initdir initial directory, NULL for current dir
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1385 * filter not used (file name filter)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1386 */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1387 char_u *
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1388 gui_mch_browse(
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1389 int saving,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1390 char_u *title,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1391 char_u *default_name,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1392 char_u *ext,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1393 char_u *initdir,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1394 char_u *filter)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1395 {
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1396 PtFileSelectionInfo_t file;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1397 int flags;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1398 char_u *default_path;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1399 char_u *open_text = NULL;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1400
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1401 flags = 0;
3076
51ce22ba89d1 updated for version 7.3.310
Bram Moolenaar <bram@vim.org>
parents: 3054
diff changeset
1402 memset(&file, 0, sizeof(file));
51ce22ba89d1 updated for version 7.3.310
Bram Moolenaar <bram@vim.org>
parents: 3054
diff changeset
1403
51ce22ba89d1 updated for version 7.3.310
Bram Moolenaar <bram@vim.org>
parents: 3054
diff changeset
1404 default_path = alloc(MAXPATHL + 1 + NAME_MAX + 1);
51ce22ba89d1 updated for version 7.3.310
Bram Moolenaar <bram@vim.org>
parents: 3054
diff changeset
1405 if (default_path != NULL)
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1406 {
3076
51ce22ba89d1 updated for version 7.3.310
Bram Moolenaar <bram@vim.org>
parents: 3054
diff changeset
1407 if (saving == TRUE)
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1408 {
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1409 /* Don't need Pt_FSR_CONFIRM_EXISTING, vim will ask anyway */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1410 flags |= Pt_FSR_NO_FCHECK;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1411 open_text = "&Save";
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1412 }
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1413
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1414 /* combine the directory and filename into a single path */
3076
51ce22ba89d1 updated for version 7.3.310
Bram Moolenaar <bram@vim.org>
parents: 3054
diff changeset
1415 if (initdir == NULL || *initdir == NUL)
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1416 {
3076
51ce22ba89d1 updated for version 7.3.310
Bram Moolenaar <bram@vim.org>
parents: 3054
diff changeset
1417 mch_dirname(default_path, MAXPATHL);
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1418 initdir = default_path;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1419 }
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1420 else
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1421 {
3076
51ce22ba89d1 updated for version 7.3.310
Bram Moolenaar <bram@vim.org>
parents: 3054
diff changeset
1422 STRCPY(default_path, initdir);
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1423 initdir = default_path;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1424 }
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1425
3076
51ce22ba89d1 updated for version 7.3.310
Bram Moolenaar <bram@vim.org>
parents: 3054
diff changeset
1426 if (default_name != NULL)
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1427 {
3076
51ce22ba89d1 updated for version 7.3.310
Bram Moolenaar <bram@vim.org>
parents: 3054
diff changeset
1428 if (default_path[ STRLEN(default_path) - 1 ] != '/')
51ce22ba89d1 updated for version 7.3.310
Bram Moolenaar <bram@vim.org>
parents: 3054
diff changeset
1429 STRCAT(default_path, "/");
51ce22ba89d1 updated for version 7.3.310
Bram Moolenaar <bram@vim.org>
parents: 3054
diff changeset
1430
51ce22ba89d1 updated for version 7.3.310
Bram Moolenaar <bram@vim.org>
parents: 3054
diff changeset
1431 STRCAT(default_path, default_name);
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1432 }
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1433
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1434 /* TODO: add a filter? */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1435 PtFileSelection(
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1436 gui.vimWindow,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1437 NULL,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1438 title,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1439 default_path,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1440 NULL,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1441 open_text,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1442 NULL,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1443 NULL,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1444 &file,
3076
51ce22ba89d1 updated for version 7.3.310
Bram Moolenaar <bram@vim.org>
parents: 3054
diff changeset
1445 flags);
51ce22ba89d1 updated for version 7.3.310
Bram Moolenaar <bram@vim.org>
parents: 3054
diff changeset
1446
51ce22ba89d1 updated for version 7.3.310
Bram Moolenaar <bram@vim.org>
parents: 3054
diff changeset
1447 vim_free(default_path);
51ce22ba89d1 updated for version 7.3.310
Bram Moolenaar <bram@vim.org>
parents: 3054
diff changeset
1448
51ce22ba89d1 updated for version 7.3.310
Bram Moolenaar <bram@vim.org>
parents: 3054
diff changeset
1449 if (file.ret == Pt_FSDIALOG_BTN1)
2980
847733973bfd updated for version 7.3.262
Bram Moolenaar <bram@vim.org>
parents: 2684
diff changeset
1450 return vim_strsave(file.path);
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1451 }
2980
847733973bfd updated for version 7.3.262
Bram Moolenaar <bram@vim.org>
parents: 2684
diff changeset
1452 return NULL;
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1453 }
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1454 #endif
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1455
3076
51ce22ba89d1 updated for version 7.3.310
Bram Moolenaar <bram@vim.org>
parents: 3054
diff changeset
1456 #if defined(FEAT_GUI_DIALOG) || defined(PROTO)
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1457 static PtWidget_t *gui_ph_dialog_text = NULL;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1458
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1459 static int
3076
51ce22ba89d1 updated for version 7.3.310
Bram Moolenaar <bram@vim.org>
parents: 3054
diff changeset
1460 gui_ph_dialog_close(int button, void *data)
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1461 {
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1462 PtModalCtrl_t *modal_ctrl = data;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1463 char_u *dialog_text, *vim_text;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1464
3076
51ce22ba89d1 updated for version 7.3.310
Bram Moolenaar <bram@vim.org>
parents: 3054
diff changeset
1465 if (gui_ph_dialog_text != NULL)
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1466 {
3076
51ce22ba89d1 updated for version 7.3.310
Bram Moolenaar <bram@vim.org>
parents: 3054
diff changeset
1467 PtGetResource(gui_ph_dialog_text, Pt_ARG_TEXT_STRING, &dialog_text, 0);
51ce22ba89d1 updated for version 7.3.310
Bram Moolenaar <bram@vim.org>
parents: 3054
diff changeset
1468 PtGetResource(gui_ph_dialog_text, Pt_ARG_POINTER, &vim_text, 0);
51ce22ba89d1 updated for version 7.3.310
Bram Moolenaar <bram@vim.org>
parents: 3054
diff changeset
1469 STRNCPY(vim_text, dialog_text, IOSIZE - 1);
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1470 }
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1471
3076
51ce22ba89d1 updated for version 7.3.310
Bram Moolenaar <bram@vim.org>
parents: 3054
diff changeset
1472 PtModalUnblock(modal_ctrl, (void *) button);
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1473
2980
847733973bfd updated for version 7.3.262
Bram Moolenaar <bram@vim.org>
parents: 2684
diff changeset
1474 return Pt_TRUE;
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1475 }
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1476
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1477 static int
3076
51ce22ba89d1 updated for version 7.3.310
Bram Moolenaar <bram@vim.org>
parents: 3054
diff changeset
1478 gui_ph_dialog_text_enter(PtWidget_t *widget, void *data, PtCallbackInfo_t *info)
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1479 {
3076
51ce22ba89d1 updated for version 7.3.310
Bram Moolenaar <bram@vim.org>
parents: 3054
diff changeset
1480 if (info->reason_subtype == Pt_EDIT_ACTIVATE)
51ce22ba89d1 updated for version 7.3.310
Bram Moolenaar <bram@vim.org>
parents: 3054
diff changeset
1481 gui_ph_dialog_close(1, data);
2980
847733973bfd updated for version 7.3.262
Bram Moolenaar <bram@vim.org>
parents: 2684
diff changeset
1482 return Pt_CONTINUE;
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1483 }
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1484
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1485 static int
3076
51ce22ba89d1 updated for version 7.3.310
Bram Moolenaar <bram@vim.org>
parents: 3054
diff changeset
1486 gui_ph_dialog_esc(PtWidget_t *widget, void *data, PtCallbackInfo_t *info)
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1487 {
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1488 PhKeyEvent_t *key;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1489
3076
51ce22ba89d1 updated for version 7.3.310
Bram Moolenaar <bram@vim.org>
parents: 3054
diff changeset
1490 key = PhGetData(info->event);
51ce22ba89d1 updated for version 7.3.310
Bram Moolenaar <bram@vim.org>
parents: 3054
diff changeset
1491 if ((key->key_flags & Pk_KF_Cap_Valid) && (key->key_cap == Pk_Escape))
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1492 {
3076
51ce22ba89d1 updated for version 7.3.310
Bram Moolenaar <bram@vim.org>
parents: 3054
diff changeset
1493 gui_ph_dialog_close(0, data);
2980
847733973bfd updated for version 7.3.262
Bram Moolenaar <bram@vim.org>
parents: 2684
diff changeset
1494 return Pt_CONSUME;
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1495 }
2980
847733973bfd updated for version 7.3.262
Bram Moolenaar <bram@vim.org>
parents: 2684
diff changeset
1496 return Pt_PROCESS;
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1497 }
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1498
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1499 int
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1500 gui_mch_dialog(
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1501 int type,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1502 char_u *title,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1503 char_u *message,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1504 char_u *buttons,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1505 int default_button,
2684
951641b8784d updated for version 7.3.102
Bram Moolenaar <bram@vim.org>
parents: 1922
diff changeset
1506 char_u *textfield,
951641b8784d updated for version 7.3.102
Bram Moolenaar <bram@vim.org>
parents: 1922
diff changeset
1507 int ex_cmd)
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1508 {
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1509 char_u *str;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1510 char_u **button_array;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1511 char_u *buttons_copy;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1512
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1513 int button_count;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1514 int i, len;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1515 int dialog_result = -1;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1516
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1517 /* FIXME: the vertical option in guioptions is blatantly ignored */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1518 /* FIXME: so is the type */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1519
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1520 button_count = len = i = 0;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1521
3076
51ce22ba89d1 updated for version 7.3.310
Bram Moolenaar <bram@vim.org>
parents: 3054
diff changeset
1522 if (buttons == NULL || *buttons == NUL)
2980
847733973bfd updated for version 7.3.262
Bram Moolenaar <bram@vim.org>
parents: 2684
diff changeset
1523 return -1;
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1524
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1525 /* There is one less separator than buttons, so bump up the button count */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1526 button_count = 1;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1527
4352
04736b4030ec updated for version 7.3.925
Bram Moolenaar <bram@vim.org>
parents: 3927
diff changeset
1528 /* Count string length and number of separators */
3076
51ce22ba89d1 updated for version 7.3.310
Bram Moolenaar <bram@vim.org>
parents: 3054
diff changeset
1529 for (str = buttons; *str; str++)
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1530 {
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1531 len++;
3076
51ce22ba89d1 updated for version 7.3.310
Bram Moolenaar <bram@vim.org>
parents: 3054
diff changeset
1532 if (*str == DLG_BUTTON_SEP)
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1533 button_count++;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1534 }
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1535
3076
51ce22ba89d1 updated for version 7.3.310
Bram Moolenaar <bram@vim.org>
parents: 3054
diff changeset
1536 if (title == NULL)
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1537 title = "Vim";
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1538
3076
51ce22ba89d1 updated for version 7.3.310
Bram Moolenaar <bram@vim.org>
parents: 3054
diff changeset
1539 buttons_copy = alloc(len + 1);
51ce22ba89d1 updated for version 7.3.310
Bram Moolenaar <bram@vim.org>
parents: 3054
diff changeset
1540 button_array = (char_u **) alloc(button_count * sizeof(char_u *));
51ce22ba89d1 updated for version 7.3.310
Bram Moolenaar <bram@vim.org>
parents: 3054
diff changeset
1541 if (buttons_copy != NULL && button_array != NULL)
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1542 {
3076
51ce22ba89d1 updated for version 7.3.310
Bram Moolenaar <bram@vim.org>
parents: 3054
diff changeset
1543 STRCPY(buttons_copy, buttons);
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1544
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1545 /*
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1546 * Convert DLG_BUTTON_SEP into NUL's and fill in
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1547 * button_array with the pointer to each NUL terminated string
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1548 */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1549 str = buttons_copy;
3076
51ce22ba89d1 updated for version 7.3.310
Bram Moolenaar <bram@vim.org>
parents: 3054
diff changeset
1550 for (i = 0; i < button_count; i++)
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1551 {
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1552 button_array[ i ] = str;
3076
51ce22ba89d1 updated for version 7.3.310
Bram Moolenaar <bram@vim.org>
parents: 3054
diff changeset
1553 for (; *str; str++)
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1554 {
3076
51ce22ba89d1 updated for version 7.3.310
Bram Moolenaar <bram@vim.org>
parents: 3054
diff changeset
1555 if (*str == DLG_BUTTON_SEP)
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1556 {
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1557 *str++ = NUL;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1558 break;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1559 }
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1560 }
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1561 }
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1562 #ifndef FEAT_GUI_TEXTDIALOG
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1563 dialog_result = PtAlert(
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1564 gui.vimWindow, NULL,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1565 title,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1566 NULL,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1567 message, NULL,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1568 button_count, (const char **) button_array, NULL,
3076
51ce22ba89d1 updated for version 7.3.310
Bram Moolenaar <bram@vim.org>
parents: 3054
diff changeset
1569 default_button, 0, Pt_MODAL);
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1570 #else
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1571 /* Writing the dialog ourselves lets us add extra features, like
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1572 * trapping the escape key and returning 0 to vim */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1573 {
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1574 int n;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1575 PtArg_t args[5];
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1576 PtWidget_t *dialog, *pane;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1577 PtModalCtrl_t modal_ctrl;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1578 PtDialogInfo_t di;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1579
3076
51ce22ba89d1 updated for version 7.3.310
Bram Moolenaar <bram@vim.org>
parents: 3054
diff changeset
1580 memset(&di, 0, sizeof(di));
51ce22ba89d1 updated for version 7.3.310
Bram Moolenaar <bram@vim.org>
parents: 3054
diff changeset
1581 memset(&modal_ctrl, 0, sizeof(modal_ctrl));
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1582
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1583 n = 0;
3076
51ce22ba89d1 updated for version 7.3.310
Bram Moolenaar <bram@vim.org>
parents: 3054
diff changeset
1584 PtSetArg(&args[n++], Pt_ARG_GROUP_ROWS_COLS, 0, 0);
51ce22ba89d1 updated for version 7.3.310
Bram Moolenaar <bram@vim.org>
parents: 3054
diff changeset
1585 PtSetArg(&args[n++], Pt_ARG_WIDTH, 350, 0);
51ce22ba89d1 updated for version 7.3.310
Bram Moolenaar <bram@vim.org>
parents: 3054
diff changeset
1586 PtSetArg(&args[n++], Pt_ARG_GROUP_ORIENTATION,
51ce22ba89d1 updated for version 7.3.310
Bram Moolenaar <bram@vim.org>
parents: 3054
diff changeset
1587 Pt_GROUP_VERTICAL, 0);
51ce22ba89d1 updated for version 7.3.310
Bram Moolenaar <bram@vim.org>
parents: 3054
diff changeset
1588 PtSetArg(&args[n++], Pt_ARG_GROUP_FLAGS,
51ce22ba89d1 updated for version 7.3.310
Bram Moolenaar <bram@vim.org>
parents: 3054
diff changeset
1589 Pt_TRUE, Pt_GROUP_NO_KEYS | Pt_GROUP_STRETCH_HORIZONTAL);
51ce22ba89d1 updated for version 7.3.310
Bram Moolenaar <bram@vim.org>
parents: 3054
diff changeset
1590 PtSetArg(&args[n++], Pt_ARG_CONTAINER_FLAGS, Pt_FALSE, Pt_TRUE);
51ce22ba89d1 updated for version 7.3.310
Bram Moolenaar <bram@vim.org>
parents: 3054
diff changeset
1591 pane = PtCreateWidget(PtGroup, NULL, n, args);
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1592
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1593 n = 0;
3076
51ce22ba89d1 updated for version 7.3.310
Bram Moolenaar <bram@vim.org>
parents: 3054
diff changeset
1594 PtSetArg(&args[n++], Pt_ARG_TEXT_STRING, message, 0);
51ce22ba89d1 updated for version 7.3.310
Bram Moolenaar <bram@vim.org>
parents: 3054
diff changeset
1595 PtCreateWidget(PtLabel, pane, n, args);
51ce22ba89d1 updated for version 7.3.310
Bram Moolenaar <bram@vim.org>
parents: 3054
diff changeset
1596
51ce22ba89d1 updated for version 7.3.310
Bram Moolenaar <bram@vim.org>
parents: 3054
diff changeset
1597 if (textfield != NULL)
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1598 {
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1599 n = 0;
3076
51ce22ba89d1 updated for version 7.3.310
Bram Moolenaar <bram@vim.org>
parents: 3054
diff changeset
1600 PtSetArg(&args[n++], Pt_ARG_MAX_LENGTH, IOSIZE - 1, 0);
51ce22ba89d1 updated for version 7.3.310
Bram Moolenaar <bram@vim.org>
parents: 3054
diff changeset
1601 PtSetArg(&args[n++], Pt_ARG_TEXT_STRING, textfield, 0);
51ce22ba89d1 updated for version 7.3.310
Bram Moolenaar <bram@vim.org>
parents: 3054
diff changeset
1602 PtSetArg(&args[n++], Pt_ARG_POINTER, textfield, 0);
51ce22ba89d1 updated for version 7.3.310
Bram Moolenaar <bram@vim.org>
parents: 3054
diff changeset
1603 gui_ph_dialog_text = PtCreateWidget(PtText, pane, n, args);
51ce22ba89d1 updated for version 7.3.310
Bram Moolenaar <bram@vim.org>
parents: 3054
diff changeset
1604 PtAddCallback(gui_ph_dialog_text, Pt_CB_ACTIVATE,
51ce22ba89d1 updated for version 7.3.310
Bram Moolenaar <bram@vim.org>
parents: 3054
diff changeset
1605 gui_ph_dialog_text_enter, &modal_ctrl);
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1606 }
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1607
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1608 di.parent = gui.vimWindow;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1609 di.pane = pane;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1610 di.title = title;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1611 di.buttons = (const char **) button_array;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1612 di.nbtns = button_count;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1613 di.def_btn = default_button;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1614 /* This is just to give the dialog the close button.
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1615 * We check for the Escape key ourselves and return 0 */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1616 di.esc_btn = button_count;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1617 di.callback = gui_ph_dialog_close;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1618 di.data = &modal_ctrl;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1619
3076
51ce22ba89d1 updated for version 7.3.310
Bram Moolenaar <bram@vim.org>
parents: 3054
diff changeset
1620 dialog = PtCreateDialog(&di);
51ce22ba89d1 updated for version 7.3.310
Bram Moolenaar <bram@vim.org>
parents: 3054
diff changeset
1621 PtAddFilterCallback(dialog, Ph_EV_KEY,
51ce22ba89d1 updated for version 7.3.310
Bram Moolenaar <bram@vim.org>
parents: 3054
diff changeset
1622 gui_ph_dialog_esc, &modal_ctrl);
51ce22ba89d1 updated for version 7.3.310
Bram Moolenaar <bram@vim.org>
parents: 3054
diff changeset
1623
51ce22ba89d1 updated for version 7.3.310
Bram Moolenaar <bram@vim.org>
parents: 3054
diff changeset
1624 if (gui_ph_dialog_text != NULL)
51ce22ba89d1 updated for version 7.3.310
Bram Moolenaar <bram@vim.org>
parents: 3054
diff changeset
1625 PtGiveFocus(gui_ph_dialog_text, NULL);
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1626
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1627 /* Open dialog, block the vim window and wait for the dialog to close */
3076
51ce22ba89d1 updated for version 7.3.310
Bram Moolenaar <bram@vim.org>
parents: 3054
diff changeset
1628 PtRealizeWidget(dialog);
51ce22ba89d1 updated for version 7.3.310
Bram Moolenaar <bram@vim.org>
parents: 3054
diff changeset
1629 PtMakeModal(dialog, Ph_CURSOR_NOINPUT, Ph_CURSOR_DEFAULT_COLOR);
51ce22ba89d1 updated for version 7.3.310
Bram Moolenaar <bram@vim.org>
parents: 3054
diff changeset
1630 dialog_result = (int) PtModalBlock(&modal_ctrl, 0);
51ce22ba89d1 updated for version 7.3.310
Bram Moolenaar <bram@vim.org>
parents: 3054
diff changeset
1631
51ce22ba89d1 updated for version 7.3.310
Bram Moolenaar <bram@vim.org>
parents: 3054
diff changeset
1632 PtDestroyWidget(dialog);
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1633 gui_ph_dialog_text = NULL;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1634 }
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1635 #endif
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1636 }
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1637
3076
51ce22ba89d1 updated for version 7.3.310
Bram Moolenaar <bram@vim.org>
parents: 3054
diff changeset
1638 vim_free(button_array);
51ce22ba89d1 updated for version 7.3.310
Bram Moolenaar <bram@vim.org>
parents: 3054
diff changeset
1639 vim_free(buttons_copy);
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1640
2980
847733973bfd updated for version 7.3.262
Bram Moolenaar <bram@vim.org>
parents: 2684
diff changeset
1641 return dialog_result;
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1642 }
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1643 #endif
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1644 /****************************************************************************/
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1645 /* window size/position/state */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1646
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1647 int
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1648 gui_mch_get_winpos(int *x, int *y)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1649 {
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1650 PhPoint_t *pos;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1651
3076
51ce22ba89d1 updated for version 7.3.310
Bram Moolenaar <bram@vim.org>
parents: 3054
diff changeset
1652 pos = PtWidgetPos(gui.vimWindow, NULL);
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1653
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1654 *x = pos->x;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1655 *y = pos->y;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1656
2980
847733973bfd updated for version 7.3.262
Bram Moolenaar <bram@vim.org>
parents: 2684
diff changeset
1657 return OK;
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1658 }
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1659
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1660 void
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1661 gui_mch_set_winpos(int x, int y)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1662 {
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1663 PhPoint_t pos = { x, y };
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1664
3076
51ce22ba89d1 updated for version 7.3.310
Bram Moolenaar <bram@vim.org>
parents: 3054
diff changeset
1665 PtSetResource(gui.vimWindow, Pt_ARG_POS, &pos, 0);
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1666 }
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1667
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1668 void
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1669 gui_mch_set_shellsize(int width, int height,
812
68c15f2c7d3f updated for version 7.0c01
vimboss
parents: 444
diff changeset
1670 int min_width, int min_height, int base_width, int base_height,
68c15f2c7d3f updated for version 7.0c01
vimboss
parents: 444
diff changeset
1671 int direction)
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1672 {
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1673 PhDim_t window_size = { width, height };
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1674 PhDim_t min_size = { min_width, min_height };
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1675
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1676 #ifdef USE_PANEL_GROUP
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1677 window_size.w += pg_margin_left + pg_margin_right;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1678 window_size.h += pg_margin_top + pg_margin_bottom;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1679 #endif
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1680
3076
51ce22ba89d1 updated for version 7.3.310
Bram Moolenaar <bram@vim.org>
parents: 3054
diff changeset
1681 PtSetResource(gui.vimWindow, Pt_ARG_MINIMUM_DIM, &min_size, 0);
51ce22ba89d1 updated for version 7.3.310
Bram Moolenaar <bram@vim.org>
parents: 3054
diff changeset
1682 PtSetResource(gui.vimWindow, Pt_ARG_DIM, &window_size, 0);
51ce22ba89d1 updated for version 7.3.310
Bram Moolenaar <bram@vim.org>
parents: 3054
diff changeset
1683
51ce22ba89d1 updated for version 7.3.310
Bram Moolenaar <bram@vim.org>
parents: 3054
diff changeset
1684 if (! PtWidgetIsRealized(gui.vimWindow))
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1685 gui_ph_resize_container();
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1686 }
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1687
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1688 /*
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1689 * Return the amount of screen space that hasn't been allocated (such as
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1690 * by the shelf).
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1691 */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1692 void
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1693 gui_mch_get_screen_dimensions(int *screen_w, int *screen_h)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1694 {
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1695 PhRect_t console;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1696
3076
51ce22ba89d1 updated for version 7.3.310
Bram Moolenaar <bram@vim.org>
parents: 3054
diff changeset
1697 PhWindowQueryVisible(Ph_QUERY_WORKSPACE, 0,
51ce22ba89d1 updated for version 7.3.310
Bram Moolenaar <bram@vim.org>
parents: 3054
diff changeset
1698 PhInputGroup(NULL), &console);
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1699
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1700 *screen_w = console.lr.x - console.ul.x + 1;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1701 *screen_h = console.lr.y - console.ul.y + 1;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1702 }
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1703
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1704 void
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1705 gui_mch_iconify(void)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1706 {
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1707 PhWindowEvent_t event;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1708
3076
51ce22ba89d1 updated for version 7.3.310
Bram Moolenaar <bram@vim.org>
parents: 3054
diff changeset
1709 memset(&event, 0, sizeof (event));
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1710 event.event_f = Ph_WM_HIDE;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1711 event.event_state = Ph_WM_EVSTATE_HIDE;
3076
51ce22ba89d1 updated for version 7.3.310
Bram Moolenaar <bram@vim.org>
parents: 3054
diff changeset
1712 event.rid = PtWidgetRid(gui.vimWindow);
51ce22ba89d1 updated for version 7.3.310
Bram Moolenaar <bram@vim.org>
parents: 3054
diff changeset
1713 PtForwardWindowEvent(&event);
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1714 }
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1715
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1716 #if defined(FEAT_EVAL) || defined(PROTO)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1717 /*
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1718 * Bring the Vim window to the foreground.
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1719 */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1720 void
7823
bcef391c101c commit https://github.com/vim/vim/commit/68c2f638e65d914dc6e84eb7ce2624f08af525c0
Christian Brabandt <cb@256bit.org>
parents: 4352
diff changeset
1721 gui_mch_set_foreground(void)
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1722 {
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1723 PhWindowEvent_t event;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1724
3076
51ce22ba89d1 updated for version 7.3.310
Bram Moolenaar <bram@vim.org>
parents: 3054
diff changeset
1725 memset(&event, 0, sizeof (event));
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1726 event.event_f = Ph_WM_TOFRONT;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1727 event.event_state = Ph_WM_EVSTATE_FFRONT;
3076
51ce22ba89d1 updated for version 7.3.310
Bram Moolenaar <bram@vim.org>
parents: 3054
diff changeset
1728 event.rid = PtWidgetRid(gui.vimWindow);
51ce22ba89d1 updated for version 7.3.310
Bram Moolenaar <bram@vim.org>
parents: 3054
diff changeset
1729 PtForwardWindowEvent(&event);
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1730 }
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1731 #endif
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1732
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1733 void
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1734 gui_mch_settitle(char_u *title, char_u *icon)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1735 {
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1736 #ifdef USE_PANEL_GROUP
3076
51ce22ba89d1 updated for version 7.3.310
Bram Moolenaar <bram@vim.org>
parents: 3054
diff changeset
1737 gui_ph_pg_set_buffer_num(curwin->w_buffer->b_fnum);
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1738 #endif
3076
51ce22ba89d1 updated for version 7.3.310
Bram Moolenaar <bram@vim.org>
parents: 3054
diff changeset
1739 PtSetResource(gui.vimWindow, Pt_ARG_WINDOW_TITLE, title, 0);
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1740 /* Not sure what to do with the icon text, set balloon text somehow? */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1741 }
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1742
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1743 /****************************************************************************/
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1744 /* Scrollbar */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1745
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1746 void
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1747 gui_mch_set_scrollbar_thumb(scrollbar_T *sb, int val, int size, int max)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1748 {
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1749 int n = 0;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1750 PtArg_t args[3];
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1751
3076
51ce22ba89d1 updated for version 7.3.310
Bram Moolenaar <bram@vim.org>
parents: 3054
diff changeset
1752 PtSetArg(&args[ n++ ], Pt_ARG_MAXIMUM, max, 0);
51ce22ba89d1 updated for version 7.3.310
Bram Moolenaar <bram@vim.org>
parents: 3054
diff changeset
1753 PtSetArg(&args[ n++ ], Pt_ARG_SLIDER_SIZE, size, 0);
51ce22ba89d1 updated for version 7.3.310
Bram Moolenaar <bram@vim.org>
parents: 3054
diff changeset
1754 PtSetArg(&args[ n++ ], Pt_ARG_GAUGE_VALUE, val, 0);
51ce22ba89d1 updated for version 7.3.310
Bram Moolenaar <bram@vim.org>
parents: 3054
diff changeset
1755 PtSetResources(sb->id, n, args);
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1756 }
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1757
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1758 void
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1759 gui_mch_set_scrollbar_pos(scrollbar_T *sb, int x, int y, int w, int h)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1760 {
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1761 PhArea_t area = {{ x, y }, { w, h }};
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1762
3076
51ce22ba89d1 updated for version 7.3.310
Bram Moolenaar <bram@vim.org>
parents: 3054
diff changeset
1763 PtSetResource(sb->id, Pt_ARG_AREA, &area, 0);
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1764 }
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1765
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1766 void
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1767 gui_mch_create_scrollbar(scrollbar_T *sb, int orient)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1768 {
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1769 int n = 0;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1770 /* int anchor_flags = 0;*/
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1771 PtArg_t args[4];
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1772
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1773 /*
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1774 * Stop the scrollbar from being realized when the parent
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1775 * is realized, so it can be explicitly realized by vim.
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1776 *
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1777 * Also, don't let the scrollbar get focus
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1778 */
3076
51ce22ba89d1 updated for version 7.3.310
Bram Moolenaar <bram@vim.org>
parents: 3054
diff changeset
1779 PtSetArg(&args[ n++ ], Pt_ARG_FLAGS, Pt_DELAY_REALIZE,
51ce22ba89d1 updated for version 7.3.310
Bram Moolenaar <bram@vim.org>
parents: 3054
diff changeset
1780 Pt_DELAY_REALIZE | Pt_GETS_FOCUS);
51ce22ba89d1 updated for version 7.3.310
Bram Moolenaar <bram@vim.org>
parents: 3054
diff changeset
1781 PtSetArg(&args[ n++ ], Pt_ARG_SCROLLBAR_FLAGS, Pt_SCROLLBAR_SHOW_ARROWS, 0);
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1782 #if 0
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1783 /* Don't need this anchoring for the scrollbars */
3076
51ce22ba89d1 updated for version 7.3.310
Bram Moolenaar <bram@vim.org>
parents: 3054
diff changeset
1784 if (orient == SBAR_HORIZ)
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1785 {
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1786 anchor_flags = Pt_BOTTOM_ANCHORED_BOTTOM |
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1787 Pt_LEFT_ANCHORED_LEFT | Pt_RIGHT_ANCHORED_RIGHT;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1788 }
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1789 else
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1790 {
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1791 anchor_flags = Pt_BOTTOM_ANCHORED_BOTTOM | Pt_TOP_ANCHORED_TOP;
3076
51ce22ba89d1 updated for version 7.3.310
Bram Moolenaar <bram@vim.org>
parents: 3054
diff changeset
1792 if (sb->wp != NULL)
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1793 {
3076
51ce22ba89d1 updated for version 7.3.310
Bram Moolenaar <bram@vim.org>
parents: 3054
diff changeset
1794 if (sb == &sb->wp->w_scrollbars[ SBAR_LEFT ])
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1795 anchor_flags |= Pt_LEFT_ANCHORED_LEFT;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1796 else
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1797 anchor_flags |= Pt_RIGHT_ANCHORED_RIGHT;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1798 }
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1799 }
3076
51ce22ba89d1 updated for version 7.3.310
Bram Moolenaar <bram@vim.org>
parents: 3054
diff changeset
1800 PtSetArg(&args[ n++ ], Pt_ARG_ANCHOR_FLAGS, anchor_flags, Pt_IS_ANCHORED);
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1801 #endif
3076
51ce22ba89d1 updated for version 7.3.310
Bram Moolenaar <bram@vim.org>
parents: 3054
diff changeset
1802 PtSetArg(&args[ n++ ], Pt_ARG_ORIENTATION,
51ce22ba89d1 updated for version 7.3.310
Bram Moolenaar <bram@vim.org>
parents: 3054
diff changeset
1803 (orient == SBAR_HORIZ) ? Pt_HORIZONTAL : Pt_VERTICAL, 0);
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1804 #ifdef USE_PANEL_GROUP
3076
51ce22ba89d1 updated for version 7.3.310
Bram Moolenaar <bram@vim.org>
parents: 3054
diff changeset
1805 sb->id = PtCreateWidget(PtScrollbar, gui.vimPanelGroup, n, args);
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1806 #else
3076
51ce22ba89d1 updated for version 7.3.310
Bram Moolenaar <bram@vim.org>
parents: 3054
diff changeset
1807 sb->id = PtCreateWidget(PtScrollbar, gui.vimContainer, n, args);
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1808 #endif
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1809
3076
51ce22ba89d1 updated for version 7.3.310
Bram Moolenaar <bram@vim.org>
parents: 3054
diff changeset
1810 PtAddCallback(sb->id, Pt_CB_SCROLLBAR_MOVE, gui_ph_handle_scrollbar, sb);
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1811 }
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1812
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1813 void
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1814 gui_mch_enable_scrollbar(scrollbar_T *sb, int flag)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1815 {
3076
51ce22ba89d1 updated for version 7.3.310
Bram Moolenaar <bram@vim.org>
parents: 3054
diff changeset
1816 if (flag != 0)
51ce22ba89d1 updated for version 7.3.310
Bram Moolenaar <bram@vim.org>
parents: 3054
diff changeset
1817 PtRealizeWidget(sb->id);
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1818 else
3076
51ce22ba89d1 updated for version 7.3.310
Bram Moolenaar <bram@vim.org>
parents: 3054
diff changeset
1819 PtUnrealizeWidget(sb->id);
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1820 }
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1821
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1822 void
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1823 gui_mch_destroy_scrollbar(scrollbar_T *sb)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1824 {
3076
51ce22ba89d1 updated for version 7.3.310
Bram Moolenaar <bram@vim.org>
parents: 3054
diff changeset
1825 PtDestroyWidget(sb->id);
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1826 sb->id = NULL;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1827 }
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1828
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1829 /****************************************************************************/
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1830 /* Mouse functions */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1831
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1832 #if defined(FEAT_MOUSESHAPE) || defined(PROTO)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1833 /* The last set mouse pointer shape is remembered, to be used when it goes
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1834 * from hidden to not hidden. */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1835 static int last_shape = 0;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1836
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1837 /* Table for shape IDs. Keep in sync with the mshape_names[] table in
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1838 * misc2.c! */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1839 static int mshape_ids[] =
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1840 {
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1841 Ph_CURSOR_POINTER, /* arrow */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1842 Ph_CURSOR_NONE, /* blank */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1843 Ph_CURSOR_INSERT, /* beam */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1844 Ph_CURSOR_DRAG_VERTICAL, /* updown */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1845 Ph_CURSOR_DRAG_VERTICAL, /* udsizing */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1846 Ph_CURSOR_DRAG_HORIZONTAL, /* leftright */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1847 Ph_CURSOR_DRAG_HORIZONTAL, /* lrsizing */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1848 Ph_CURSOR_WAIT, /* busy */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1849 Ph_CURSOR_DONT, /* no */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1850 Ph_CURSOR_CROSSHAIR, /* crosshair */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1851 Ph_CURSOR_FINGER, /* hand1 */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1852 Ph_CURSOR_FINGER, /* hand2 */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1853 Ph_CURSOR_FINGER, /* pencil */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1854 Ph_CURSOR_QUESTION_POINT, /* question */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1855 Ph_CURSOR_POINTER, /* right-arrow */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1856 Ph_CURSOR_POINTER, /* up-arrow */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1857 Ph_CURSOR_POINTER /* last one */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1858 };
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1859
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1860 void
7823
bcef391c101c commit https://github.com/vim/vim/commit/68c2f638e65d914dc6e84eb7ce2624f08af525c0
Christian Brabandt <cb@256bit.org>
parents: 4352
diff changeset
1861 mch_set_mouse_shape(int shape)
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1862 {
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1863 int id;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1864
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1865 if (!gui.in_use)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1866 return;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1867
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1868 if (shape == MSHAPE_HIDE || gui.pointer_hidden)
3076
51ce22ba89d1 updated for version 7.3.310
Bram Moolenaar <bram@vim.org>
parents: 3054
diff changeset
1869 PtSetResource(gui.vimTextArea, Pt_ARG_CURSOR_TYPE, Ph_CURSOR_NONE,
51ce22ba89d1 updated for version 7.3.310
Bram Moolenaar <bram@vim.org>
parents: 3054
diff changeset
1870 0);
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1871 else
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1872 {
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1873 if (shape >= MSHAPE_NUMBERED)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1874 id = Ph_CURSOR_POINTER;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1875 else
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1876 id = mshape_ids[shape];
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1877
3076
51ce22ba89d1 updated for version 7.3.310
Bram Moolenaar <bram@vim.org>
parents: 3054
diff changeset
1878 PtSetResource(gui.vimTextArea, Pt_ARG_CURSOR_TYPE, id, 0);
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1879 }
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1880 if (shape != MSHAPE_HIDE)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1881 last_shape = shape;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1882 }
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1883 #endif
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1884
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1885 void
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1886 gui_mch_mousehide(int hide)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1887 {
3076
51ce22ba89d1 updated for version 7.3.310
Bram Moolenaar <bram@vim.org>
parents: 3054
diff changeset
1888 if (gui.pointer_hidden != hide)
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1889 {
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1890 gui.pointer_hidden = hide;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1891 #ifdef FEAT_MOUSESHAPE
3076
51ce22ba89d1 updated for version 7.3.310
Bram Moolenaar <bram@vim.org>
parents: 3054
diff changeset
1892 if (hide)
51ce22ba89d1 updated for version 7.3.310
Bram Moolenaar <bram@vim.org>
parents: 3054
diff changeset
1893 PtSetResource(gui.vimTextArea, Pt_ARG_CURSOR_TYPE,
51ce22ba89d1 updated for version 7.3.310
Bram Moolenaar <bram@vim.org>
parents: 3054
diff changeset
1894 Ph_CURSOR_NONE, 0);
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1895 else
3076
51ce22ba89d1 updated for version 7.3.310
Bram Moolenaar <bram@vim.org>
parents: 3054
diff changeset
1896 mch_set_mouse_shape(last_shape);
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1897 #else
3076
51ce22ba89d1 updated for version 7.3.310
Bram Moolenaar <bram@vim.org>
parents: 3054
diff changeset
1898 PtSetResource(gui.vimTextArea, Pt_ARG_CURSOR_TYPE,
51ce22ba89d1 updated for version 7.3.310
Bram Moolenaar <bram@vim.org>
parents: 3054
diff changeset
1899 (hide == MOUSE_SHOW) ? GUI_PH_MOUSE_TYPE : Ph_CURSOR_NONE,
51ce22ba89d1 updated for version 7.3.310
Bram Moolenaar <bram@vim.org>
parents: 3054
diff changeset
1900 0);
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1901 #endif
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1902 }
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1903 }
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1904
95
a2081e6febb8 updated for version 7.0037
vimboss
parents: 87
diff changeset
1905 void
87
014ba200db86 updated for version 7.0035
vimboss
parents: 44
diff changeset
1906 gui_mch_getmouse(int *x, int *y)
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1907 {
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1908 PhCursorInfo_t info;
87
014ba200db86 updated for version 7.0035
vimboss
parents: 44
diff changeset
1909 short ix, iy;
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1910
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1911 /* FIXME: does this return the correct position,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1912 * with respect to the border? */
3076
51ce22ba89d1 updated for version 7.3.310
Bram Moolenaar <bram@vim.org>
parents: 3054
diff changeset
1913 PhQueryCursor(PhInputGroup(NULL), &info);
51ce22ba89d1 updated for version 7.3.310
Bram Moolenaar <bram@vim.org>
parents: 3054
diff changeset
1914 PtGetAbsPosition(gui.vimTextArea , &ix, &iy);
87
014ba200db86 updated for version 7.0035
vimboss
parents: 44
diff changeset
1915
014ba200db86 updated for version 7.0035
vimboss
parents: 44
diff changeset
1916 *x = info.pos.x - ix;
014ba200db86 updated for version 7.0035
vimboss
parents: 44
diff changeset
1917 *y = info.pos.y - iy;
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1918 }
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1919
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1920 void
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1921 gui_mch_setmouse(int x, int y)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1922 {
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1923 short abs_x, abs_y;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1924
3076
51ce22ba89d1 updated for version 7.3.310
Bram Moolenaar <bram@vim.org>
parents: 3054
diff changeset
1925 PtGetAbsPosition(gui.vimTextArea, &abs_x, &abs_y);
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1926 /* Add the border offset? */
3076
51ce22ba89d1 updated for version 7.3.310
Bram Moolenaar <bram@vim.org>
parents: 3054
diff changeset
1927 PhMoveCursorAbs(PhInputGroup(NULL), abs_x + x, abs_y + y);
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1928 }
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1929
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1930 /****************************************************************************/
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1931 /* Colours */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1932
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1933 /*
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1934 * Return the RGB value of a pixel as a long.
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1935 */
9939
ccb6461b82df commit https://github.com/vim/vim/commit/1b58cdd160c2e0ada0f638679a2aa27e4665fc48
Christian Brabandt <cb@256bit.org>
parents: 9428
diff changeset
1936 guicolor_T
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1937 gui_mch_get_rgb(guicolor_T pixel)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1938 {
9939
ccb6461b82df commit https://github.com/vim/vim/commit/1b58cdd160c2e0ada0f638679a2aa27e4665fc48
Christian Brabandt <cb@256bit.org>
parents: 9428
diff changeset
1939 return (guicolor_T)(PgRGB(PgRedValue(pixel),
ccb6461b82df commit https://github.com/vim/vim/commit/1b58cdd160c2e0ada0f638679a2aa27e4665fc48
Christian Brabandt <cb@256bit.org>
parents: 9428
diff changeset
1940 PgGreenValue(pixel), PgBlueValue(pixel)));
7
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 void
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1944 gui_mch_new_colors(void)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1945 {
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1946 #if 0 /* Don't bother changing the cursor colour */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1947 short color_diff;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1948
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1949 /*
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1950 * If there isn't enough difference between the background colour and
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1951 * the mouse pointer colour then change the mouse pointer colour
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1952 */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1953 color_diff = gui_get_lightness(gui_ph_mouse_color)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1954 - gui_get_lightness(gui.back_pixel);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1955
3076
51ce22ba89d1 updated for version 7.3.310
Bram Moolenaar <bram@vim.org>
parents: 3054
diff changeset
1956 if (abs(color_diff) < 64)
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1957 {
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1958 short r, g, b;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1959 /* not a great algorithm... */
3076
51ce22ba89d1 updated for version 7.3.310
Bram Moolenaar <bram@vim.org>
parents: 3054
diff changeset
1960 r = PgRedValue(gui_ph_mouse_color) ^ 255;
51ce22ba89d1 updated for version 7.3.310
Bram Moolenaar <bram@vim.org>
parents: 3054
diff changeset
1961 g = PgGreenValue(gui_ph_mouse_color) ^ 255;
51ce22ba89d1 updated for version 7.3.310
Bram Moolenaar <bram@vim.org>
parents: 3054
diff changeset
1962 b = PgBlueValue(gui_ph_mouse_color) ^ 255;
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1963
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1964 #ifndef FEAT_MOUSESHAPE
3076
51ce22ba89d1 updated for version 7.3.310
Bram Moolenaar <bram@vim.org>
parents: 3054
diff changeset
1965 gui_ph_mouse_color = PgRGB(r, g, b);
51ce22ba89d1 updated for version 7.3.310
Bram Moolenaar <bram@vim.org>
parents: 3054
diff changeset
1966 PtSetResource(gui.vimTextArea, Pt_ARG_CURSOR_COLOR,
51ce22ba89d1 updated for version 7.3.310
Bram Moolenaar <bram@vim.org>
parents: 3054
diff changeset
1967 gui_ph_mouse_color, 0);
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1968 #endif
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1969 }
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1970 #endif
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1971
3076
51ce22ba89d1 updated for version 7.3.310
Bram Moolenaar <bram@vim.org>
parents: 3054
diff changeset
1972 PtSetResource(gui.vimTextArea, Pt_ARG_FILL_COLOR, gui.back_pixel, 0);
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1973 }
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1974
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1975 /*
1214
a91a2e0c4108 updated for version 7.1b
vimboss
parents: 834
diff changeset
1976 * This should be split out into a separate file,
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1977 * every port does basically the same thing.
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1978 *
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1979 * This is the gui_w32.c version (i think..)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1980 * Return INVALCOLOR when failed.
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1981 */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1982
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1983 guicolor_T
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1984 gui_mch_get_color(char_u *name)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1985 {
9013
22c29a515b53 commit https://github.com/vim/vim/commit/ab3022196ea4f1496e79b8ee85996e31c45d02f1
Christian Brabandt <cb@256bit.org>
parents: 7823
diff changeset
1986 return gui_get_color_cmn(name);
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1987 }
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1988
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1989 void
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1990 gui_mch_set_fg_color(guicolor_T color)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1991 {
3076
51ce22ba89d1 updated for version 7.3.310
Bram Moolenaar <bram@vim.org>
parents: 3054
diff changeset
1992 PgSetTextColor(color);
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1993 }
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1994
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1995 void
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1996 gui_mch_set_bg_color(guicolor_T color)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1997 {
3076
51ce22ba89d1 updated for version 7.3.310
Bram Moolenaar <bram@vim.org>
parents: 3054
diff changeset
1998 PgSetFillColor(color);
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1999 }
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2000
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2001 void
205
d292c40ca788 updated for version 7.0060
vimboss
parents: 95
diff changeset
2002 gui_mch_set_sp_color(guicolor_T color)
d292c40ca788 updated for version 7.0060
vimboss
parents: 95
diff changeset
2003 {
d292c40ca788 updated for version 7.0060
vimboss
parents: 95
diff changeset
2004 }
d292c40ca788 updated for version 7.0060
vimboss
parents: 95
diff changeset
2005
d292c40ca788 updated for version 7.0060
vimboss
parents: 95
diff changeset
2006 void
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2007 gui_mch_invert_rectangle(int row, int col, int nr, int nc)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2008 {
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2009 PhRect_t rect;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2010
3076
51ce22ba89d1 updated for version 7.3.310
Bram Moolenaar <bram@vim.org>
parents: 3054
diff changeset
2011 rect.ul.x = FILL_X(col);
51ce22ba89d1 updated for version 7.3.310
Bram Moolenaar <bram@vim.org>
parents: 3054
diff changeset
2012 rect.ul.y = FILL_Y(row);
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2013
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2014 /* FIXME: This has an off by one pixel problem */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2015 rect.lr.x = rect.ul.x + nc * gui.char_width;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2016 rect.lr.y = rect.ul.y + nr * gui.char_height;
3076
51ce22ba89d1 updated for version 7.3.310
Bram Moolenaar <bram@vim.org>
parents: 3054
diff changeset
2017 if (nc > 0)
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2018 rect.lr.x -= 1;
3076
51ce22ba89d1 updated for version 7.3.310
Bram Moolenaar <bram@vim.org>
parents: 3054
diff changeset
2019 if (nr > 0)
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2020 rect.lr.y -= 1;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2021
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2022 DRAW_START;
3076
51ce22ba89d1 updated for version 7.3.310
Bram Moolenaar <bram@vim.org>
parents: 3054
diff changeset
2023 PgSetDrawMode(Pg_DrawModeDSTINVERT);
51ce22ba89d1 updated for version 7.3.310
Bram Moolenaar <bram@vim.org>
parents: 3054
diff changeset
2024 PgDrawRect(&rect, Pg_DRAW_FILL);
51ce22ba89d1 updated for version 7.3.310
Bram Moolenaar <bram@vim.org>
parents: 3054
diff changeset
2025 PgSetDrawMode(Pg_DrawModeSRCCOPY);
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2026 DRAW_END;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2027 }
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2028
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2029 void
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2030 gui_mch_clear_block(int row1, int col1, int row2, int col2)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2031 {
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2032 PhRect_t block = {
3076
51ce22ba89d1 updated for version 7.3.310
Bram Moolenaar <bram@vim.org>
parents: 3054
diff changeset
2033 { FILL_X(col1), FILL_Y(row1) },
51ce22ba89d1 updated for version 7.3.310
Bram Moolenaar <bram@vim.org>
parents: 3054
diff changeset
2034 { FILL_X(col2 + 1) - 1, FILL_Y(row2 + 1) - 1}
7
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 DRAW_START;
3076
51ce22ba89d1 updated for version 7.3.310
Bram Moolenaar <bram@vim.org>
parents: 3054
diff changeset
2038 gui_mch_set_bg_color(gui.back_pixel);
51ce22ba89d1 updated for version 7.3.310
Bram Moolenaar <bram@vim.org>
parents: 3054
diff changeset
2039 PgDrawRect(&block, Pg_DRAW_FILL);
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2040 DRAW_END;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2041 }
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2042
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2043 void
7823
bcef391c101c commit https://github.com/vim/vim/commit/68c2f638e65d914dc6e84eb7ce2624f08af525c0
Christian Brabandt <cb@256bit.org>
parents: 4352
diff changeset
2044 gui_mch_clear_all(void)
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2045 {
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2046 PhRect_t text_rect = {
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2047 { gui.border_width, gui.border_width },
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2048 { Columns * gui.char_width + gui.border_width - 1 ,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2049 Rows * gui.char_height + gui.border_width - 1 }
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2050 };
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2051
3076
51ce22ba89d1 updated for version 7.3.310
Bram Moolenaar <bram@vim.org>
parents: 3054
diff changeset
2052 if (is_ignore_draw == TRUE)
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2053 return;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2054
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2055 DRAW_START;
3076
51ce22ba89d1 updated for version 7.3.310
Bram Moolenaar <bram@vim.org>
parents: 3054
diff changeset
2056 gui_mch_set_bg_color(gui.back_pixel);
51ce22ba89d1 updated for version 7.3.310
Bram Moolenaar <bram@vim.org>
parents: 3054
diff changeset
2057 PgDrawRect(&text_rect, Pg_DRAW_FILL);
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2058 DRAW_END;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2059 }
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2060
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2061 void
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2062 gui_mch_delete_lines(int row, int num_lines)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2063 {
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2064 PhRect_t rect;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2065 PhPoint_t delta;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2066
3076
51ce22ba89d1 updated for version 7.3.310
Bram Moolenaar <bram@vim.org>
parents: 3054
diff changeset
2067 rect.ul.x = FILL_X(gui.scroll_region_left);
51ce22ba89d1 updated for version 7.3.310
Bram Moolenaar <bram@vim.org>
parents: 3054
diff changeset
2068 rect.ul.y = FILL_Y(row + num_lines);
51ce22ba89d1 updated for version 7.3.310
Bram Moolenaar <bram@vim.org>
parents: 3054
diff changeset
2069
51ce22ba89d1 updated for version 7.3.310
Bram Moolenaar <bram@vim.org>
parents: 3054
diff changeset
2070 rect.lr.x = FILL_X(gui.scroll_region_right + 1) - 1;
51ce22ba89d1 updated for version 7.3.310
Bram Moolenaar <bram@vim.org>
parents: 3054
diff changeset
2071 rect.lr.y = FILL_Y(gui.scroll_region_bot + 1) - 1;
51ce22ba89d1 updated for version 7.3.310
Bram Moolenaar <bram@vim.org>
parents: 3054
diff changeset
2072
51ce22ba89d1 updated for version 7.3.310
Bram Moolenaar <bram@vim.org>
parents: 3054
diff changeset
2073 PtWidgetOffset(gui.vimTextArea, &gui_ph_raw_offset);
51ce22ba89d1 updated for version 7.3.310
Bram Moolenaar <bram@vim.org>
parents: 3054
diff changeset
2074 PhTranslatePoint(&gui_ph_raw_offset, PtWidgetPos(gui.vimTextArea, NULL));
51ce22ba89d1 updated for version 7.3.310
Bram Moolenaar <bram@vim.org>
parents: 3054
diff changeset
2075 PhTranslateRect(&rect, &gui_ph_raw_offset);
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2076
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2077 delta.x = 0;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2078 delta.y = -num_lines * gui.char_height;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2079
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2080 PgFlush();
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2081
3076
51ce22ba89d1 updated for version 7.3.310
Bram Moolenaar <bram@vim.org>
parents: 3054
diff changeset
2082 PhBlit(PtWidgetRid(PtFindDisjoint(gui.vimTextArea)), &rect, &delta);
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2083
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2084 gui_clear_block(
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2085 gui.scroll_region_bot - num_lines + 1,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2086 gui.scroll_region_left,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2087 gui.scroll_region_bot,
3076
51ce22ba89d1 updated for version 7.3.310
Bram Moolenaar <bram@vim.org>
parents: 3054
diff changeset
2088 gui.scroll_region_right);
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2089 }
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2090
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2091 void
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2092 gui_mch_insert_lines(int row, int num_lines)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2093 {
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2094 PhRect_t rect;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2095 PhPoint_t delta;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2096
3076
51ce22ba89d1 updated for version 7.3.310
Bram Moolenaar <bram@vim.org>
parents: 3054
diff changeset
2097 rect.ul.x = FILL_X(gui.scroll_region_left);
51ce22ba89d1 updated for version 7.3.310
Bram Moolenaar <bram@vim.org>
parents: 3054
diff changeset
2098 rect.ul.y = FILL_Y(row);
51ce22ba89d1 updated for version 7.3.310
Bram Moolenaar <bram@vim.org>
parents: 3054
diff changeset
2099
51ce22ba89d1 updated for version 7.3.310
Bram Moolenaar <bram@vim.org>
parents: 3054
diff changeset
2100 rect.lr.x = FILL_X(gui.scroll_region_right + 1) - 1;
51ce22ba89d1 updated for version 7.3.310
Bram Moolenaar <bram@vim.org>
parents: 3054
diff changeset
2101 rect.lr.y = FILL_Y(gui.scroll_region_bot - num_lines + 1) - 1;
51ce22ba89d1 updated for version 7.3.310
Bram Moolenaar <bram@vim.org>
parents: 3054
diff changeset
2102
51ce22ba89d1 updated for version 7.3.310
Bram Moolenaar <bram@vim.org>
parents: 3054
diff changeset
2103 PtWidgetOffset(gui.vimTextArea, &gui_ph_raw_offset);
51ce22ba89d1 updated for version 7.3.310
Bram Moolenaar <bram@vim.org>
parents: 3054
diff changeset
2104 PhTranslatePoint(&gui_ph_raw_offset, PtWidgetPos(gui.vimTextArea, NULL));
51ce22ba89d1 updated for version 7.3.310
Bram Moolenaar <bram@vim.org>
parents: 3054
diff changeset
2105 PhTranslateRect(&rect, &gui_ph_raw_offset);
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2106
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2107 delta.x = 0;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2108 delta.y = num_lines * gui.char_height;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2109
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2110 PgFlush();
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2111
3076
51ce22ba89d1 updated for version 7.3.310
Bram Moolenaar <bram@vim.org>
parents: 3054
diff changeset
2112 PhBlit(PtWidgetRid(PtFindDisjoint(gui.vimTextArea)) , &rect, &delta);
51ce22ba89d1 updated for version 7.3.310
Bram Moolenaar <bram@vim.org>
parents: 3054
diff changeset
2113
51ce22ba89d1 updated for version 7.3.310
Bram Moolenaar <bram@vim.org>
parents: 3054
diff changeset
2114 gui_clear_block(row, gui.scroll_region_left,
51ce22ba89d1 updated for version 7.3.310
Bram Moolenaar <bram@vim.org>
parents: 3054
diff changeset
2115 row + num_lines - 1, gui.scroll_region_right);
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2116 }
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2117
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2118 void
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2119 gui_mch_draw_string(int row, int col, char_u *s, int len, int flags)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2120 {
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2121 static char *utf8_buffer = NULL;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2122 static int utf8_len = 0;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2123
3076
51ce22ba89d1 updated for version 7.3.310
Bram Moolenaar <bram@vim.org>
parents: 3054
diff changeset
2124 PhPoint_t pos = { TEXT_X(col), TEXT_Y(row) };
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2125 PhRect_t rect;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2126
3076
51ce22ba89d1 updated for version 7.3.310
Bram Moolenaar <bram@vim.org>
parents: 3054
diff changeset
2127 if (is_ignore_draw == TRUE)
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2128 return;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2129
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2130 DRAW_START;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2131
3076
51ce22ba89d1 updated for version 7.3.310
Bram Moolenaar <bram@vim.org>
parents: 3054
diff changeset
2132 if (!(flags & DRAW_TRANSP))
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2133 {
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2134 PgDrawIRect(
3076
51ce22ba89d1 updated for version 7.3.310
Bram Moolenaar <bram@vim.org>
parents: 3054
diff changeset
2135 FILL_X(col), FILL_Y(row),
51ce22ba89d1 updated for version 7.3.310
Bram Moolenaar <bram@vim.org>
parents: 3054
diff changeset
2136 FILL_X(col + len) - 1, FILL_Y(row + 1) - 1,
51ce22ba89d1 updated for version 7.3.310
Bram Moolenaar <bram@vim.org>
parents: 3054
diff changeset
2137 Pg_DRAW_FILL);
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2138 }
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2139
3076
51ce22ba89d1 updated for version 7.3.310
Bram Moolenaar <bram@vim.org>
parents: 3054
diff changeset
2140 if (flags & DRAW_UNDERL)
51ce22ba89d1 updated for version 7.3.310
Bram Moolenaar <bram@vim.org>
parents: 3054
diff changeset
2141 PgSetUnderline(gui.norm_pixel, Pg_TRANSPARENT, 0);
51ce22ba89d1 updated for version 7.3.310
Bram Moolenaar <bram@vim.org>
parents: 3054
diff changeset
2142
51ce22ba89d1 updated for version 7.3.310
Bram Moolenaar <bram@vim.org>
parents: 3054
diff changeset
2143 if (charset_translate != NULL
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2144 #ifdef FEAT_MBYTE
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2145 && enc_utf8 == 0
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2146 #endif
3076
51ce22ba89d1 updated for version 7.3.310
Bram Moolenaar <bram@vim.org>
parents: 3054
diff changeset
2147 )
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2148 {
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2149 int src_taken, dst_made;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2150
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2151 /* Use a static buffer to avoid large amounts of de/allocations */
3076
51ce22ba89d1 updated for version 7.3.310
Bram Moolenaar <bram@vim.org>
parents: 3054
diff changeset
2152 if (utf8_len < len)
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2153 {
3076
51ce22ba89d1 updated for version 7.3.310
Bram Moolenaar <bram@vim.org>
parents: 3054
diff changeset
2154 utf8_buffer = realloc(utf8_buffer, len * MB_LEN_MAX);
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2155 utf8_len = len;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2156 }
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2157
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2158 PxTranslateToUTF(
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2159 charset_translate,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2160 s,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2161 len,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2162 &src_taken,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2163 utf8_buffer,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2164 utf8_len,
3076
51ce22ba89d1 updated for version 7.3.310
Bram Moolenaar <bram@vim.org>
parents: 3054
diff changeset
2165 &dst_made);
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2166 s = utf8_buffer;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2167 len = dst_made;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2168 }
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2169
3076
51ce22ba89d1 updated for version 7.3.310
Bram Moolenaar <bram@vim.org>
parents: 3054
diff changeset
2170 PgDrawText(s, len, &pos, 0);
51ce22ba89d1 updated for version 7.3.310
Bram Moolenaar <bram@vim.org>
parents: 3054
diff changeset
2171
51ce22ba89d1 updated for version 7.3.310
Bram Moolenaar <bram@vim.org>
parents: 3054
diff changeset
2172 if (flags & DRAW_BOLD)
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2173 {
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2174 /* FIXME: try and only calculate these values once... */
3076
51ce22ba89d1 updated for version 7.3.310
Bram Moolenaar <bram@vim.org>
parents: 3054
diff changeset
2175 rect.ul.x = FILL_X(col) + 1;
51ce22ba89d1 updated for version 7.3.310
Bram Moolenaar <bram@vim.org>
parents: 3054
diff changeset
2176 rect.ul.y = FILL_Y(row);
51ce22ba89d1 updated for version 7.3.310
Bram Moolenaar <bram@vim.org>
parents: 3054
diff changeset
2177 rect.lr.x = FILL_X(col + len) - 1;
51ce22ba89d1 updated for version 7.3.310
Bram Moolenaar <bram@vim.org>
parents: 3054
diff changeset
2178 rect.lr.y = FILL_Y(row + 1) - 1;
51ce22ba89d1 updated for version 7.3.310
Bram Moolenaar <bram@vim.org>
parents: 3054
diff changeset
2179 /* PgSetUserClip(NULL) causes the scrollbar to not redraw... */
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2180 #if 0
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2181 pos.x++;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2182
3076
51ce22ba89d1 updated for version 7.3.310
Bram Moolenaar <bram@vim.org>
parents: 3054
diff changeset
2183 PgSetUserClip(&rect);
51ce22ba89d1 updated for version 7.3.310
Bram Moolenaar <bram@vim.org>
parents: 3054
diff changeset
2184 PgDrawText(s, len, &pos, 0);
51ce22ba89d1 updated for version 7.3.310
Bram Moolenaar <bram@vim.org>
parents: 3054
diff changeset
2185 PgSetUserClip(NULL);
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2186 #else
3076
51ce22ba89d1 updated for version 7.3.310
Bram Moolenaar <bram@vim.org>
parents: 3054
diff changeset
2187 rect.lr.y -= (p_linespace + 1) / 2;
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2188 /* XXX: DrawTextArea doesn't work with phditto */
3076
51ce22ba89d1 updated for version 7.3.310
Bram Moolenaar <bram@vim.org>
parents: 3054
diff changeset
2189 PgDrawTextArea(s, len, &rect, Pg_TEXT_BOTTOM);
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2190 #endif
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2191 }
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2192
3076
51ce22ba89d1 updated for version 7.3.310
Bram Moolenaar <bram@vim.org>
parents: 3054
diff changeset
2193 if (flags & DRAW_UNDERL)
51ce22ba89d1 updated for version 7.3.310
Bram Moolenaar <bram@vim.org>
parents: 3054
diff changeset
2194 PgSetUnderline(Pg_TRANSPARENT, Pg_TRANSPARENT, 0);
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2195
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2196 DRAW_END;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2197 }
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2198
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2199 /****************************************************************************/
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2200 /* Cursor */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2201
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2202 void
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2203 gui_mch_draw_hollow_cursor(guicolor_T color)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2204 {
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2205 PhRect_t r;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2206
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2207 /* FIXME: Double width characters */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2208
3076
51ce22ba89d1 updated for version 7.3.310
Bram Moolenaar <bram@vim.org>
parents: 3054
diff changeset
2209 r.ul.x = FILL_X(gui.col);
51ce22ba89d1 updated for version 7.3.310
Bram Moolenaar <bram@vim.org>
parents: 3054
diff changeset
2210 r.ul.y = FILL_Y(gui.row);
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2211 r.lr.x = r.ul.x + gui.char_width - 1;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2212 r.lr.y = r.ul.y + gui.char_height - 1;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2213
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2214 DRAW_START;
3076
51ce22ba89d1 updated for version 7.3.310
Bram Moolenaar <bram@vim.org>
parents: 3054
diff changeset
2215 PgSetStrokeColor(color);
51ce22ba89d1 updated for version 7.3.310
Bram Moolenaar <bram@vim.org>
parents: 3054
diff changeset
2216 PgDrawRect(&r, Pg_DRAW_STROKE);
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2217 DRAW_END;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2218 }
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2219
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2220 void
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2221 gui_mch_draw_part_cursor(int w, int h, guicolor_T color)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2222 {
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2223 PhRect_t r;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2224
3076
51ce22ba89d1 updated for version 7.3.310
Bram Moolenaar <bram@vim.org>
parents: 3054
diff changeset
2225 r.ul.x = FILL_X(gui.col);
51ce22ba89d1 updated for version 7.3.310
Bram Moolenaar <bram@vim.org>
parents: 3054
diff changeset
2226 r.ul.y = FILL_Y(gui.row) + gui.char_height - h;
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2227 r.lr.x = r.ul.x + w - 1;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2228 r.lr.y = r.ul.y + h - 1;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2229
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2230 DRAW_START;
3076
51ce22ba89d1 updated for version 7.3.310
Bram Moolenaar <bram@vim.org>
parents: 3054
diff changeset
2231 gui_mch_set_bg_color(color);
51ce22ba89d1 updated for version 7.3.310
Bram Moolenaar <bram@vim.org>
parents: 3054
diff changeset
2232 PgDrawRect(&r, Pg_DRAW_FILL);
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2233 DRAW_END;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2234 }
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2235
9213
bb86514cad15 commit https://github.com/vim/vim/commit/703a8044b5393d37d355b0b1054a9a5a13912a3f
Christian Brabandt <cb@256bit.org>
parents: 9013
diff changeset
2236 int
bb86514cad15 commit https://github.com/vim/vim/commit/703a8044b5393d37d355b0b1054a9a5a13912a3f
Christian Brabandt <cb@256bit.org>
parents: 9013
diff changeset
2237 gui_mch_is_blinking(void)
bb86514cad15 commit https://github.com/vim/vim/commit/703a8044b5393d37d355b0b1054a9a5a13912a3f
Christian Brabandt <cb@256bit.org>
parents: 9013
diff changeset
2238 {
bb86514cad15 commit https://github.com/vim/vim/commit/703a8044b5393d37d355b0b1054a9a5a13912a3f
Christian Brabandt <cb@256bit.org>
parents: 9013
diff changeset
2239 return blink_state != BLINK_NONE;
bb86514cad15 commit https://github.com/vim/vim/commit/703a8044b5393d37d355b0b1054a9a5a13912a3f
Christian Brabandt <cb@256bit.org>
parents: 9013
diff changeset
2240 }
bb86514cad15 commit https://github.com/vim/vim/commit/703a8044b5393d37d355b0b1054a9a5a13912a3f
Christian Brabandt <cb@256bit.org>
parents: 9013
diff changeset
2241
9428
0c7f47088e55 commit https://github.com/vim/vim/commit/9d5d3c9c4468ad76f16b50eabd3d9e7eab2ed44d
Christian Brabandt <cb@256bit.org>
parents: 9213
diff changeset
2242 int
0c7f47088e55 commit https://github.com/vim/vim/commit/9d5d3c9c4468ad76f16b50eabd3d9e7eab2ed44d
Christian Brabandt <cb@256bit.org>
parents: 9213
diff changeset
2243 gui_mch_is_blink_off(void)
0c7f47088e55 commit https://github.com/vim/vim/commit/9d5d3c9c4468ad76f16b50eabd3d9e7eab2ed44d
Christian Brabandt <cb@256bit.org>
parents: 9213
diff changeset
2244 {
0c7f47088e55 commit https://github.com/vim/vim/commit/9d5d3c9c4468ad76f16b50eabd3d9e7eab2ed44d
Christian Brabandt <cb@256bit.org>
parents: 9213
diff changeset
2245 return blink_state == BLINK_OFF;
0c7f47088e55 commit https://github.com/vim/vim/commit/9d5d3c9c4468ad76f16b50eabd3d9e7eab2ed44d
Christian Brabandt <cb@256bit.org>
parents: 9213
diff changeset
2246 }
0c7f47088e55 commit https://github.com/vim/vim/commit/9d5d3c9c4468ad76f16b50eabd3d9e7eab2ed44d
Christian Brabandt <cb@256bit.org>
parents: 9213
diff changeset
2247
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2248 void
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2249 gui_mch_set_blinking(long wait, long on, long off)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2250 {
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2251 blink_waittime = wait;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2252 blink_ontime = on;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2253 blink_offtime = off;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2254 }
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2255
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2256 void
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2257 gui_mch_start_blink(void)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2258 {
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2259 /* Only turn on the timer on if none of the times are zero */
3076
51ce22ba89d1 updated for version 7.3.310
Bram Moolenaar <bram@vim.org>
parents: 3054
diff changeset
2260 if (blink_waittime && blink_ontime && blink_offtime && gui.in_focus)
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2261 {
3076
51ce22ba89d1 updated for version 7.3.310
Bram Moolenaar <bram@vim.org>
parents: 3054
diff changeset
2262 PtSetResource(gui_ph_timer_cursor, Pt_ARG_TIMER_INITIAL,
51ce22ba89d1 updated for version 7.3.310
Bram Moolenaar <bram@vim.org>
parents: 3054
diff changeset
2263 blink_waittime, 0);
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2264 blink_state = BLINK_ON;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2265 gui_update_cursor(TRUE, FALSE);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2266 }
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2267 }
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2268
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2269 void
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2270 gui_mch_stop_blink(void)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2271 {
3076
51ce22ba89d1 updated for version 7.3.310
Bram Moolenaar <bram@vim.org>
parents: 3054
diff changeset
2272 PtSetResource(gui_ph_timer_cursor, Pt_ARG_TIMER_INITIAL, 0, 0);
51ce22ba89d1 updated for version 7.3.310
Bram Moolenaar <bram@vim.org>
parents: 3054
diff changeset
2273
51ce22ba89d1 updated for version 7.3.310
Bram Moolenaar <bram@vim.org>
parents: 3054
diff changeset
2274 if (blink_state == BLINK_OFF)
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2275 gui_update_cursor(TRUE, FALSE);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2276
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2277 blink_state = BLINK_NONE;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2278 }
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2279
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2280 /****************************************************************************/
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2281 /* miscellaneous functions */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2282
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2283 void
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2284 gui_mch_beep(void)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2285 {
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2286 PtBeep();
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2287 }
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2288
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2289 void
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2290 gui_mch_flash(int msec)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2291 {
3076
51ce22ba89d1 updated for version 7.3.310
Bram Moolenaar <bram@vim.org>
parents: 3054
diff changeset
2292 PgSetFillXORColor(Pg_BLACK, Pg_WHITE);
51ce22ba89d1 updated for version 7.3.310
Bram Moolenaar <bram@vim.org>
parents: 3054
diff changeset
2293 PgSetDrawMode(Pg_DRAWMODE_XOR);
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2294 gui_mch_clear_all();
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2295 gui_mch_flush();
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2296
3076
51ce22ba89d1 updated for version 7.3.310
Bram Moolenaar <bram@vim.org>
parents: 3054
diff changeset
2297 ui_delay((long) msec, TRUE);
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2298
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2299 gui_mch_clear_all();
3076
51ce22ba89d1 updated for version 7.3.310
Bram Moolenaar <bram@vim.org>
parents: 3054
diff changeset
2300 PgSetDrawMode(Pg_DRAWMODE_OPAQUE);
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2301 gui_mch_flush();
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2302 }
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2303
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2304 void
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2305 gui_mch_flush(void)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2306 {
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2307 PgFlush();
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2308 }
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2309
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2310 void
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2311 gui_mch_set_text_area_pos(int x, int y, int w, int h)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2312 {
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2313 PhArea_t area = {{x, y}, {w, h}};
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2314
3076
51ce22ba89d1 updated for version 7.3.310
Bram Moolenaar <bram@vim.org>
parents: 3054
diff changeset
2315 PtSetResource(gui.vimTextArea, Pt_ARG_AREA, &area, 0);
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 int
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2319 gui_mch_haskey(char_u *name)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2320 {
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2321 int i;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2322
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2323 for (i = 0; special_keys[i].key_sym != 0; i++)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2324 if (name[0] == special_keys[i].vim_code0 &&
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2325 name[1] == special_keys[i].vim_code1)
2980
847733973bfd updated for version 7.3.262
Bram Moolenaar <bram@vim.org>
parents: 2684
diff changeset
2326 return OK;
847733973bfd updated for version 7.3.262
Bram Moolenaar <bram@vim.org>
parents: 2684
diff changeset
2327 return FAIL;
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2328 }
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2329
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2330 /****************************************************************************/
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2331 /* Menu */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2332
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2333 #ifdef FEAT_TOOLBAR
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2334 #include "toolbar.phi"
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2335
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2336 static PhImage_t *gui_ph_toolbar_images[] = {
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2337 &tb_new_phi,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2338 &tb_open_phi,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2339 &tb_save_phi,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2340 &tb_undo_phi,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2341 &tb_redo_phi,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2342 &tb_cut_phi,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2343 &tb_copy_phi,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2344 &tb_paste_phi,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2345 &tb_print_phi,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2346 &tb_help_phi,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2347 &tb_find_phi,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2348 &tb_save_all_phi,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2349 &tb_save_session_phi,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2350 &tb_new_session_phi,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2351 &tb_load_session_phi,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2352 &tb_macro_phi,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2353 &tb_replace_phi,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2354 &tb_close_phi,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2355 &tb_maximize_phi,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2356 &tb_minimize_phi,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2357 &tb_split_phi,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2358 &tb_shell_phi,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2359 &tb_find_prev_phi,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2360 &tb_find_next_phi,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2361 &tb_find_help_phi,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2362 &tb_make_phi,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2363 &tb_jump_phi,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2364 &tb_ctags_phi,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2365 &tb_vsplit_phi,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2366 &tb_maxwidth_phi,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2367 &tb_minwidth_phi
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2368 };
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2369
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2370 static PhImage_t *
3076
51ce22ba89d1 updated for version 7.3.310
Bram Moolenaar <bram@vim.org>
parents: 3054
diff changeset
2371 gui_ph_toolbar_load_icon(char_u *iconfile)
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2372 {
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2373 static PhImage_t external_icon;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2374 PhImage_t *temp_phi = NULL;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2375
3076
51ce22ba89d1 updated for version 7.3.310
Bram Moolenaar <bram@vim.org>
parents: 3054
diff changeset
2376 temp_phi = PxLoadImage(iconfile, NULL);
51ce22ba89d1 updated for version 7.3.310
Bram Moolenaar <bram@vim.org>
parents: 3054
diff changeset
2377 if (temp_phi != NULL)
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2378 {
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2379 /* The label widget will free the image/palette/etc. for us when
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2380 * it's destroyed */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2381 temp_phi->flags |= Ph_RELEASE_IMAGE_ALL;
3076
51ce22ba89d1 updated for version 7.3.310
Bram Moolenaar <bram@vim.org>
parents: 3054
diff changeset
2382 memcpy(&external_icon, temp_phi, sizeof(external_icon));
51ce22ba89d1 updated for version 7.3.310
Bram Moolenaar <bram@vim.org>
parents: 3054
diff changeset
2383 free(temp_phi);
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2384
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2385 temp_phi = &external_icon;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2386 }
2980
847733973bfd updated for version 7.3.262
Bram Moolenaar <bram@vim.org>
parents: 2684
diff changeset
2387 return temp_phi;
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2388 }
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2389
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2390 /*
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2391 * This returns either a builtin icon image, an external image or NULL
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2392 * if it can't find either. The caller can't and doesn't need to try and
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2393 * free() the returned image, and it can't store the image pointer.
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2394 * (When setting the Pt_ARG_LABEL_IMAGE resource, the contents of the
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2395 * PhImage_t are copied, and the original PhImage_t aren't needed anymore).
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2396 */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2397 static PhImage_t *
3076
51ce22ba89d1 updated for version 7.3.310
Bram Moolenaar <bram@vim.org>
parents: 3054
diff changeset
2398 gui_ph_toolbar_find_icon(vimmenu_T *menu)
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2399 {
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2400 char_u full_pathname[ MAXPATHL + 1 ];
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2401 PhImage_t *icon = NULL;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2402
3076
51ce22ba89d1 updated for version 7.3.310
Bram Moolenaar <bram@vim.org>
parents: 3054
diff changeset
2403 if (menu->icon_builtin == FALSE)
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2404 {
3076
51ce22ba89d1 updated for version 7.3.310
Bram Moolenaar <bram@vim.org>
parents: 3054
diff changeset
2405 if (menu->iconfile != NULL)
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2406 /* TODO: use gui_find_iconfile() */
3076
51ce22ba89d1 updated for version 7.3.310
Bram Moolenaar <bram@vim.org>
parents: 3054
diff changeset
2407 icon = gui_ph_toolbar_load_icon(menu->iconfile);
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2408
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2409 /* TODO: Restrict loading to just .png? Search for any format? */
3076
51ce22ba89d1 updated for version 7.3.310
Bram Moolenaar <bram@vim.org>
parents: 3054
diff changeset
2410 if ((icon == NULL) &&
51ce22ba89d1 updated for version 7.3.310
Bram Moolenaar <bram@vim.org>
parents: 3054
diff changeset
2411 ((gui_find_bitmap(menu->name, full_pathname, "gif") == OK) ||
51ce22ba89d1 updated for version 7.3.310
Bram Moolenaar <bram@vim.org>
parents: 3054
diff changeset
2412 (gui_find_bitmap(menu->name, full_pathname, "png") == OK)))
51ce22ba89d1 updated for version 7.3.310
Bram Moolenaar <bram@vim.org>
parents: 3054
diff changeset
2413 icon = gui_ph_toolbar_load_icon(full_pathname);
51ce22ba89d1 updated for version 7.3.310
Bram Moolenaar <bram@vim.org>
parents: 3054
diff changeset
2414
51ce22ba89d1 updated for version 7.3.310
Bram Moolenaar <bram@vim.org>
parents: 3054
diff changeset
2415 if (icon != NULL)
2980
847733973bfd updated for version 7.3.262
Bram Moolenaar <bram@vim.org>
parents: 2684
diff changeset
2416 return icon;
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2417 }
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2418
3076
51ce22ba89d1 updated for version 7.3.310
Bram Moolenaar <bram@vim.org>
parents: 3054
diff changeset
2419 if (menu->iconidx >= 0 &&
51ce22ba89d1 updated for version 7.3.310
Bram Moolenaar <bram@vim.org>
parents: 3054
diff changeset
2420 (menu->iconidx < ARRAY_LENGTH(gui_ph_toolbar_images)))
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2421 {
2980
847733973bfd updated for version 7.3.262
Bram Moolenaar <bram@vim.org>
parents: 2684
diff changeset
2422 return gui_ph_toolbar_images[menu->iconidx];
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2423 }
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2424
2980
847733973bfd updated for version 7.3.262
Bram Moolenaar <bram@vim.org>
parents: 2684
diff changeset
2425 return NULL;
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2426 }
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2427 #endif
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2428
3076
51ce22ba89d1 updated for version 7.3.310
Bram Moolenaar <bram@vim.org>
parents: 3054
diff changeset
2429 #if defined(FEAT_MENU) || defined(PROTO)
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2430 void
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2431 gui_mch_enable_menu(int flag)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2432 {
3076
51ce22ba89d1 updated for version 7.3.310
Bram Moolenaar <bram@vim.org>
parents: 3054
diff changeset
2433 if (flag != 0)
51ce22ba89d1 updated for version 7.3.310
Bram Moolenaar <bram@vim.org>
parents: 3054
diff changeset
2434 PtRealizeWidget(gui.vimMenuBar);
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2435 else
3076
51ce22ba89d1 updated for version 7.3.310
Bram Moolenaar <bram@vim.org>
parents: 3054
diff changeset
2436 PtUnrealizeWidget(gui.vimMenuBar);
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2437 }
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2438
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2439 void
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2440 gui_mch_set_menu_pos(int x, int y, int w, int h)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2441 {
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2442 /* Nothing */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2443 }
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2444
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2445 /* Change the position of a menu button in the parent */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2446 static void
3076
51ce22ba89d1 updated for version 7.3.310
Bram Moolenaar <bram@vim.org>
parents: 3054
diff changeset
2447 gui_ph_position_menu(PtWidget_t *widget, int priority)
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2448 {
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2449 PtWidget_t *traverse;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2450 vimmenu_T *menu;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2451
3076
51ce22ba89d1 updated for version 7.3.310
Bram Moolenaar <bram@vim.org>
parents: 3054
diff changeset
2452 traverse = PtWidgetChildBack(PtWidgetParent(widget));
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2453
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2454 /* Iterate through the list of widgets in traverse, until
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2455 * we find the position we want to insert our widget into */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2456 /* TODO: traverse from front to back, possible speedup? */
3076
51ce22ba89d1 updated for version 7.3.310
Bram Moolenaar <bram@vim.org>
parents: 3054
diff changeset
2457 while (traverse != NULL)
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2458 {
3076
51ce22ba89d1 updated for version 7.3.310
Bram Moolenaar <bram@vim.org>
parents: 3054
diff changeset
2459 PtGetResource(traverse, Pt_ARG_POINTER, &menu, 0);
51ce22ba89d1 updated for version 7.3.310
Bram Moolenaar <bram@vim.org>
parents: 3054
diff changeset
2460
51ce22ba89d1 updated for version 7.3.310
Bram Moolenaar <bram@vim.org>
parents: 3054
diff changeset
2461 if (menu != NULL &&
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2462 priority < menu->priority &&
3076
51ce22ba89d1 updated for version 7.3.310
Bram Moolenaar <bram@vim.org>
parents: 3054
diff changeset
2463 widget != traverse)
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2464 {
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2465 /* Insert the widget before the current traverse widget */
3076
51ce22ba89d1 updated for version 7.3.310
Bram Moolenaar <bram@vim.org>
parents: 3054
diff changeset
2466 PtWidgetInsert(widget, traverse, 1);
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2467 return;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2468 }
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2469
3076
51ce22ba89d1 updated for version 7.3.310
Bram Moolenaar <bram@vim.org>
parents: 3054
diff changeset
2470 traverse = PtWidgetBrotherInFront(traverse);
7
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 /* the index is ignored because it's not useful for our purposes */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2475 void
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2476 gui_mch_add_menu(vimmenu_T *menu, int index)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2477 {
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2478 vimmenu_T *parent = menu->parent;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2479 char_u *accel_key;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2480 char_u mnemonic_str[MB_LEN_MAX];
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2481 int n;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2482 PtArg_t args[5];
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2483
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2484 menu->submenu_id = menu->id = NULL;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2485
3076
51ce22ba89d1 updated for version 7.3.310
Bram Moolenaar <bram@vim.org>
parents: 3054
diff changeset
2486 if (menu_is_menubar(menu->name))
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2487 {
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2488
3076
51ce22ba89d1 updated for version 7.3.310
Bram Moolenaar <bram@vim.org>
parents: 3054
diff changeset
2489 accel_key = vim_strchr(menu->name, '&');
51ce22ba89d1 updated for version 7.3.310
Bram Moolenaar <bram@vim.org>
parents: 3054
diff changeset
2490 if (accel_key != NULL)
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2491 {
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2492 mnemonic_str[0] = accel_key[1];
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2493 mnemonic_str[1] = NUL;
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 /* Create the menu button */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2497 n = 0;
3076
51ce22ba89d1 updated for version 7.3.310
Bram Moolenaar <bram@vim.org>
parents: 3054
diff changeset
2498 PtSetArg(&args[ n++ ], Pt_ARG_TEXT_STRING, menu->dname, 0);
51ce22ba89d1 updated for version 7.3.310
Bram Moolenaar <bram@vim.org>
parents: 3054
diff changeset
2499 PtSetArg(&args[ n++ ], Pt_ARG_ACCEL_TEXT, menu->actext, 0);
51ce22ba89d1 updated for version 7.3.310
Bram Moolenaar <bram@vim.org>
parents: 3054
diff changeset
2500 if (accel_key != NULL)
51ce22ba89d1 updated for version 7.3.310
Bram Moolenaar <bram@vim.org>
parents: 3054
diff changeset
2501 PtSetArg(&args[ n++ ], Pt_ARG_ACCEL_KEY, mnemonic_str, 0);
51ce22ba89d1 updated for version 7.3.310
Bram Moolenaar <bram@vim.org>
parents: 3054
diff changeset
2502 PtSetArg(&args[ n++ ], Pt_ARG_POINTER, menu, 0);
51ce22ba89d1 updated for version 7.3.310
Bram Moolenaar <bram@vim.org>
parents: 3054
diff changeset
2503
51ce22ba89d1 updated for version 7.3.310
Bram Moolenaar <bram@vim.org>
parents: 3054
diff changeset
2504 if (parent != NULL)
51ce22ba89d1 updated for version 7.3.310
Bram Moolenaar <bram@vim.org>
parents: 3054
diff changeset
2505 PtSetArg(&args[ n++ ], Pt_ARG_BUTTON_TYPE, Pt_MENU_RIGHT, 0);
51ce22ba89d1 updated for version 7.3.310
Bram Moolenaar <bram@vim.org>
parents: 3054
diff changeset
2506
51ce22ba89d1 updated for version 7.3.310
Bram Moolenaar <bram@vim.org>
parents: 3054
diff changeset
2507 menu->id = PtCreateWidget(PtMenuButton,
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2508 (parent == NULL) ? gui.vimMenuBar : parent->submenu_id,
3076
51ce22ba89d1 updated for version 7.3.310
Bram Moolenaar <bram@vim.org>
parents: 3054
diff changeset
2509 n, args);
51ce22ba89d1 updated for version 7.3.310
Bram Moolenaar <bram@vim.org>
parents: 3054
diff changeset
2510
51ce22ba89d1 updated for version 7.3.310
Bram Moolenaar <bram@vim.org>
parents: 3054
diff changeset
2511 PtAddCallback(menu->id, Pt_CB_ARM, gui_ph_handle_pulldown_menu, menu);
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2512
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2513 /* Create the actual menu */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2514 n = 0;
3076
51ce22ba89d1 updated for version 7.3.310
Bram Moolenaar <bram@vim.org>
parents: 3054
diff changeset
2515 if (parent != NULL)
51ce22ba89d1 updated for version 7.3.310
Bram Moolenaar <bram@vim.org>
parents: 3054
diff changeset
2516 PtSetArg(&args[ n++ ], Pt_ARG_MENU_FLAGS, Pt_TRUE, Pt_MENU_CHILD);
51ce22ba89d1 updated for version 7.3.310
Bram Moolenaar <bram@vim.org>
parents: 3054
diff changeset
2517
51ce22ba89d1 updated for version 7.3.310
Bram Moolenaar <bram@vim.org>
parents: 3054
diff changeset
2518 menu->submenu_id = PtCreateWidget(PtMenu, menu->id, n, args);
51ce22ba89d1 updated for version 7.3.310
Bram Moolenaar <bram@vim.org>
parents: 3054
diff changeset
2519
51ce22ba89d1 updated for version 7.3.310
Bram Moolenaar <bram@vim.org>
parents: 3054
diff changeset
2520 if (parent == NULL)
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2521 {
3076
51ce22ba89d1 updated for version 7.3.310
Bram Moolenaar <bram@vim.org>
parents: 3054
diff changeset
2522 PtAddCallback(menu->submenu_id, Pt_CB_UNREALIZED,
51ce22ba89d1 updated for version 7.3.310
Bram Moolenaar <bram@vim.org>
parents: 3054
diff changeset
2523 gui_ph_handle_menu_unrealized, menu);
51ce22ba89d1 updated for version 7.3.310
Bram Moolenaar <bram@vim.org>
parents: 3054
diff changeset
2524
51ce22ba89d1 updated for version 7.3.310
Bram Moolenaar <bram@vim.org>
parents: 3054
diff changeset
2525 if (menu->mnemonic != 0)
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2526 {
3076
51ce22ba89d1 updated for version 7.3.310
Bram Moolenaar <bram@vim.org>
parents: 3054
diff changeset
2527 PtAddHotkeyHandler(gui.vimWindow, tolower(menu->mnemonic),
51ce22ba89d1 updated for version 7.3.310
Bram Moolenaar <bram@vim.org>
parents: 3054
diff changeset
2528 Pk_KM_Alt, 0, menu, gui_ph_handle_pulldown_menu);
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2529 }
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2530 }
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2531
3076
51ce22ba89d1 updated for version 7.3.310
Bram Moolenaar <bram@vim.org>
parents: 3054
diff changeset
2532 gui_ph_position_menu(menu->id, menu->priority);
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2533
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2534 /* Redraw menubar here instead of gui_mch_draw_menubar */
3076
51ce22ba89d1 updated for version 7.3.310
Bram Moolenaar <bram@vim.org>
parents: 3054
diff changeset
2535 if (gui.menu_is_active)
51ce22ba89d1 updated for version 7.3.310
Bram Moolenaar <bram@vim.org>
parents: 3054
diff changeset
2536 PtRealizeWidget(menu->id);
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2537 }
3076
51ce22ba89d1 updated for version 7.3.310
Bram Moolenaar <bram@vim.org>
parents: 3054
diff changeset
2538 else if (menu_is_popup(menu->name))
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2539 {
3076
51ce22ba89d1 updated for version 7.3.310
Bram Moolenaar <bram@vim.org>
parents: 3054
diff changeset
2540 menu->submenu_id = PtCreateWidget(PtMenu, gui.vimWindow, 0, NULL);
51ce22ba89d1 updated for version 7.3.310
Bram Moolenaar <bram@vim.org>
parents: 3054
diff changeset
2541 PtAddCallback(menu->submenu_id, Pt_CB_UNREALIZED,
51ce22ba89d1 updated for version 7.3.310
Bram Moolenaar <bram@vim.org>
parents: 3054
diff changeset
2542 gui_ph_handle_menu_unrealized, menu);
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2543 }
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2544 }
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2545
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2546 void
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2547 gui_mch_add_menu_item(vimmenu_T *menu, int index)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2548 {
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2549 vimmenu_T *parent = menu->parent;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2550 char_u *accel_key;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2551 char_u mnemonic_str[MB_LEN_MAX];
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2552 int n;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2553 PtArg_t args[13];
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2554
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2555 n = 0;
3076
51ce22ba89d1 updated for version 7.3.310
Bram Moolenaar <bram@vim.org>
parents: 3054
diff changeset
2556 PtSetArg(&args[ n++ ], Pt_ARG_POINTER, menu, 0);
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2557
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2558 #ifdef FEAT_TOOLBAR
3076
51ce22ba89d1 updated for version 7.3.310
Bram Moolenaar <bram@vim.org>
parents: 3054
diff changeset
2559 if (menu_is_toolbar(parent->name))
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2560 {
3076
51ce22ba89d1 updated for version 7.3.310
Bram Moolenaar <bram@vim.org>
parents: 3054
diff changeset
2561 if (menu_is_separator(menu->name))
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2562 {
3076
51ce22ba89d1 updated for version 7.3.310
Bram Moolenaar <bram@vim.org>
parents: 3054
diff changeset
2563 PtSetArg(&args[ n++ ], Pt_ARG_SEP_FLAGS,
51ce22ba89d1 updated for version 7.3.310
Bram Moolenaar <bram@vim.org>
parents: 3054
diff changeset
2564 Pt_SEP_VERTICAL, Pt_SEP_ORIENTATION);
51ce22ba89d1 updated for version 7.3.310
Bram Moolenaar <bram@vim.org>
parents: 3054
diff changeset
2565 PtSetArg(&args[ n++ ], Pt_ARG_SEP_TYPE, Pt_ETCHED_IN, 0);
51ce22ba89d1 updated for version 7.3.310
Bram Moolenaar <bram@vim.org>
parents: 3054
diff changeset
2566 PtSetArg(&args[ n++ ], Pt_ARG_ANCHOR_FLAGS,
51ce22ba89d1 updated for version 7.3.310
Bram Moolenaar <bram@vim.org>
parents: 3054
diff changeset
2567 Pt_TRUE, Pt_ANCHOR_TOP_BOTTOM);
51ce22ba89d1 updated for version 7.3.310
Bram Moolenaar <bram@vim.org>
parents: 3054
diff changeset
2568 PtSetArg(&args[ n++ ], Pt_ARG_WIDTH, 2, 0);
51ce22ba89d1 updated for version 7.3.310
Bram Moolenaar <bram@vim.org>
parents: 3054
diff changeset
2569 menu->id = PtCreateWidget(PtSeparator, gui.vimToolBar, n, args);
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2570 }
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2571 else
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2572 {
3076
51ce22ba89d1 updated for version 7.3.310
Bram Moolenaar <bram@vim.org>
parents: 3054
diff changeset
2573 if (strstr((const char *) p_toolbar, "text") != NULL)
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2574 {
3076
51ce22ba89d1 updated for version 7.3.310
Bram Moolenaar <bram@vim.org>
parents: 3054
diff changeset
2575 PtSetArg(&args[ n++ ], Pt_ARG_BALLOON_POSITION,
51ce22ba89d1 updated for version 7.3.310
Bram Moolenaar <bram@vim.org>
parents: 3054
diff changeset
2576 Pt_BALLOON_BOTTOM, 0);
51ce22ba89d1 updated for version 7.3.310
Bram Moolenaar <bram@vim.org>
parents: 3054
diff changeset
2577 PtSetArg(&args[ n++ ], Pt_ARG_TEXT_STRING, menu->dname, 0);
51ce22ba89d1 updated for version 7.3.310
Bram Moolenaar <bram@vim.org>
parents: 3054
diff changeset
2578 PtSetArg(&args[ n++ ], Pt_ARG_TEXT_FONT, "TextFont08", 0);
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2579 }
3076
51ce22ba89d1 updated for version 7.3.310
Bram Moolenaar <bram@vim.org>
parents: 3054
diff changeset
2580 if ((strstr((const char *) p_toolbar, "icons") != NULL) &&
51ce22ba89d1 updated for version 7.3.310
Bram Moolenaar <bram@vim.org>
parents: 3054
diff changeset
2581 (gui_ph_toolbar_images != NULL))
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2582 {
3076
51ce22ba89d1 updated for version 7.3.310
Bram Moolenaar <bram@vim.org>
parents: 3054
diff changeset
2583 PtSetArg(&args[ n++ ], Pt_ARG_LABEL_IMAGE,
51ce22ba89d1 updated for version 7.3.310
Bram Moolenaar <bram@vim.org>
parents: 3054
diff changeset
2584 gui_ph_toolbar_find_icon(menu), 0);
51ce22ba89d1 updated for version 7.3.310
Bram Moolenaar <bram@vim.org>
parents: 3054
diff changeset
2585 PtSetArg(&args[ n++ ], Pt_ARG_LABEL_TYPE, Pt_TEXT_IMAGE, 0);
51ce22ba89d1 updated for version 7.3.310
Bram Moolenaar <bram@vim.org>
parents: 3054
diff changeset
2586 PtSetArg(&args[ n++ ], Pt_ARG_TEXT_IMAGE_SPACING, 0, 0);
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2587 }
3076
51ce22ba89d1 updated for version 7.3.310
Bram Moolenaar <bram@vim.org>
parents: 3054
diff changeset
2588 if (strstr((const char *) p_toolbar, "tooltips") != NULL)
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2589 {
3076
51ce22ba89d1 updated for version 7.3.310
Bram Moolenaar <bram@vim.org>
parents: 3054
diff changeset
2590 PtSetArg(&args[ n++ ], Pt_ARG_LABEL_BALLOON,
51ce22ba89d1 updated for version 7.3.310
Bram Moolenaar <bram@vim.org>
parents: 3054
diff changeset
2591 gui_ph_show_tooltip, 0);
51ce22ba89d1 updated for version 7.3.310
Bram Moolenaar <bram@vim.org>
parents: 3054
diff changeset
2592 PtSetArg(&args[ n++ ], Pt_ARG_LABEL_FLAGS,
51ce22ba89d1 updated for version 7.3.310
Bram Moolenaar <bram@vim.org>
parents: 3054
diff changeset
2593 Pt_TRUE, Pt_SHOW_BALLOON);
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2594 }
3076
51ce22ba89d1 updated for version 7.3.310
Bram Moolenaar <bram@vim.org>
parents: 3054
diff changeset
2595 PtSetArg(&args[ n++ ], Pt_ARG_MARGIN_HEIGHT, 1, 0);
51ce22ba89d1 updated for version 7.3.310
Bram Moolenaar <bram@vim.org>
parents: 3054
diff changeset
2596 PtSetArg(&args[ n++ ], Pt_ARG_MARGIN_WIDTH, 1, 0);
51ce22ba89d1 updated for version 7.3.310
Bram Moolenaar <bram@vim.org>
parents: 3054
diff changeset
2597 PtSetArg(&args[ n++ ], Pt_ARG_FLAGS, Pt_FALSE,
51ce22ba89d1 updated for version 7.3.310
Bram Moolenaar <bram@vim.org>
parents: 3054
diff changeset
2598 Pt_HIGHLIGHTED | Pt_GETS_FOCUS);
51ce22ba89d1 updated for version 7.3.310
Bram Moolenaar <bram@vim.org>
parents: 3054
diff changeset
2599 PtSetArg(&args[ n++ ], Pt_ARG_FILL_COLOR, Pg_TRANSPARENT, 0);
51ce22ba89d1 updated for version 7.3.310
Bram Moolenaar <bram@vim.org>
parents: 3054
diff changeset
2600 menu->id = PtCreateWidget(PtButton, gui.vimToolBar, n, args);
51ce22ba89d1 updated for version 7.3.310
Bram Moolenaar <bram@vim.org>
parents: 3054
diff changeset
2601
51ce22ba89d1 updated for version 7.3.310
Bram Moolenaar <bram@vim.org>
parents: 3054
diff changeset
2602 PtAddCallback(menu->id, Pt_CB_ACTIVATE, gui_ph_handle_menu, menu);
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2603 }
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2604 /* Update toolbar if it's open */
3076
51ce22ba89d1 updated for version 7.3.310
Bram Moolenaar <bram@vim.org>
parents: 3054
diff changeset
2605 if (PtWidgetIsRealized(gui.vimToolBar))
51ce22ba89d1 updated for version 7.3.310
Bram Moolenaar <bram@vim.org>
parents: 3054
diff changeset
2606 PtRealizeWidget(menu->id);
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2607 }
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2608 else
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2609 #endif
3076
51ce22ba89d1 updated for version 7.3.310
Bram Moolenaar <bram@vim.org>
parents: 3054
diff changeset
2610 if (menu_is_separator(menu->name))
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2611 {
3076
51ce22ba89d1 updated for version 7.3.310
Bram Moolenaar <bram@vim.org>
parents: 3054
diff changeset
2612 menu->id = PtCreateWidget(PtSeparator, parent->submenu_id, n, args);
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2613 }
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2614 else
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2615 {
3076
51ce22ba89d1 updated for version 7.3.310
Bram Moolenaar <bram@vim.org>
parents: 3054
diff changeset
2616 accel_key = vim_strchr(menu->name, '&');
51ce22ba89d1 updated for version 7.3.310
Bram Moolenaar <bram@vim.org>
parents: 3054
diff changeset
2617 if (accel_key != NULL)
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2618 {
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2619 mnemonic_str[0] = accel_key[1];
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2620 mnemonic_str[1] = NUL;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2621 }
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2622
3076
51ce22ba89d1 updated for version 7.3.310
Bram Moolenaar <bram@vim.org>
parents: 3054
diff changeset
2623 PtSetArg(&args[ n++ ], Pt_ARG_TEXT_STRING, menu->dname, 0);
51ce22ba89d1 updated for version 7.3.310
Bram Moolenaar <bram@vim.org>
parents: 3054
diff changeset
2624 if (accel_key != NULL)
51ce22ba89d1 updated for version 7.3.310
Bram Moolenaar <bram@vim.org>
parents: 3054
diff changeset
2625 PtSetArg(&args[ n++ ], Pt_ARG_ACCEL_KEY, mnemonic_str,
51ce22ba89d1 updated for version 7.3.310
Bram Moolenaar <bram@vim.org>
parents: 3054
diff changeset
2626 0);
51ce22ba89d1 updated for version 7.3.310
Bram Moolenaar <bram@vim.org>
parents: 3054
diff changeset
2627
51ce22ba89d1 updated for version 7.3.310
Bram Moolenaar <bram@vim.org>
parents: 3054
diff changeset
2628 PtSetArg(&args[ n++ ], Pt_ARG_ACCEL_TEXT, menu->actext, 0);
51ce22ba89d1 updated for version 7.3.310
Bram Moolenaar <bram@vim.org>
parents: 3054
diff changeset
2629
51ce22ba89d1 updated for version 7.3.310
Bram Moolenaar <bram@vim.org>
parents: 3054
diff changeset
2630 menu->id = PtCreateWidget(PtMenuButton, parent->submenu_id, n, args);
51ce22ba89d1 updated for version 7.3.310
Bram Moolenaar <bram@vim.org>
parents: 3054
diff changeset
2631
51ce22ba89d1 updated for version 7.3.310
Bram Moolenaar <bram@vim.org>
parents: 3054
diff changeset
2632 PtAddCallback(menu->id, Pt_CB_ACTIVATE, gui_ph_handle_menu, menu);
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2633
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2634 #ifdef USE_PANEL_GROUP
3076
51ce22ba89d1 updated for version 7.3.310
Bram Moolenaar <bram@vim.org>
parents: 3054
diff changeset
2635 if (gui_ph_is_buffer_item(menu, parent) == TRUE)
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2636 {
3076
51ce22ba89d1 updated for version 7.3.310
Bram Moolenaar <bram@vim.org>
parents: 3054
diff changeset
2637 PtAddCallback(menu->id, Pt_CB_DESTROYED,
51ce22ba89d1 updated for version 7.3.310
Bram Moolenaar <bram@vim.org>
parents: 3054
diff changeset
2638 gui_ph_handle_buffer_remove, menu);
51ce22ba89d1 updated for version 7.3.310
Bram Moolenaar <bram@vim.org>
parents: 3054
diff changeset
2639 gui_ph_pg_add_buffer(menu->dname);
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2640 }
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2641 #endif
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2642 }
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2643
3076
51ce22ba89d1 updated for version 7.3.310
Bram Moolenaar <bram@vim.org>
parents: 3054
diff changeset
2644 gui_ph_position_menu(menu->id, menu->priority);
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2645 }
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2646
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2647 void
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2648 gui_mch_destroy_menu(vimmenu_T *menu)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2649 {
3076
51ce22ba89d1 updated for version 7.3.310
Bram Moolenaar <bram@vim.org>
parents: 3054
diff changeset
2650 if (menu->submenu_id != NULL)
51ce22ba89d1 updated for version 7.3.310
Bram Moolenaar <bram@vim.org>
parents: 3054
diff changeset
2651 PtDestroyWidget(menu->submenu_id);
51ce22ba89d1 updated for version 7.3.310
Bram Moolenaar <bram@vim.org>
parents: 3054
diff changeset
2652 if (menu->id != NULL)
51ce22ba89d1 updated for version 7.3.310
Bram Moolenaar <bram@vim.org>
parents: 3054
diff changeset
2653 PtDestroyWidget(menu->id);
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2654
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2655 menu->submenu_id = NULL;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2656 menu->id = NULL;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2657 }
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2658
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2659 void
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2660 gui_mch_menu_grey(vimmenu_T *menu, int grey)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2661 {
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2662 long flags, mask, fields;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2663
3076
51ce22ba89d1 updated for version 7.3.310
Bram Moolenaar <bram@vim.org>
parents: 3054
diff changeset
2664 if (menu->id == NULL)
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2665 return;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2666
3076
51ce22ba89d1 updated for version 7.3.310
Bram Moolenaar <bram@vim.org>
parents: 3054
diff changeset
2667 flags = PtWidgetFlags(menu->id);
51ce22ba89d1 updated for version 7.3.310
Bram Moolenaar <bram@vim.org>
parents: 3054
diff changeset
2668 if (PtWidgetIsClass(menu->id, PtMenuButton) &&
51ce22ba89d1 updated for version 7.3.310
Bram Moolenaar <bram@vim.org>
parents: 3054
diff changeset
2669 PtWidgetIsClass(PtWidgetParent(menu->id), PtMenu))
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2670 {
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2671 fields = Pt_FALSE;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2672 mask = Pt_SELECTABLE | Pt_HIGHLIGHTED;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2673 }
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2674 else
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2675 {
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2676 fields = Pt_TRUE;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2677 mask = Pt_BLOCKED | Pt_GHOST;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2678 }
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2679
3076
51ce22ba89d1 updated for version 7.3.310
Bram Moolenaar <bram@vim.org>
parents: 3054
diff changeset
2680 if (! grey)
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2681 fields = ~fields;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2682
3076
51ce22ba89d1 updated for version 7.3.310
Bram Moolenaar <bram@vim.org>
parents: 3054
diff changeset
2683 PtSetResource(menu->id, Pt_ARG_FLAGS, fields,
51ce22ba89d1 updated for version 7.3.310
Bram Moolenaar <bram@vim.org>
parents: 3054
diff changeset
2684 mask);
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2685 }
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2686
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2687 void
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2688 gui_mch_menu_hidden(vimmenu_T *menu, int hidden)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2689 {
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2690 /* TODO: [un]realize the widget? */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2691 }
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2692
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2693 void
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2694 gui_mch_draw_menubar(void)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2695 {
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2696 /* The only time a redraw is needed is when a menu button
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2697 * is added to the menubar, and that is detected and the bar
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2698 * redrawn in gui_mch_add_menu_item
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2699 */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2700 }
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2701
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2702 void
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2703 gui_mch_show_popupmenu(vimmenu_T *menu)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2704 {
3076
51ce22ba89d1 updated for version 7.3.310
Bram Moolenaar <bram@vim.org>
parents: 3054
diff changeset
2705 PtSetResource(menu->submenu_id, Pt_ARG_POS, &abs_mouse, 0);
51ce22ba89d1 updated for version 7.3.310
Bram Moolenaar <bram@vim.org>
parents: 3054
diff changeset
2706 PtRealizeWidget(menu->submenu_id);
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2707 }
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2708
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2709 void
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2710 gui_mch_toggle_tearoffs(int enable)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2711 {
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2712 /* No tearoffs yet */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2713 }
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2714
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2715 #endif
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2716
3076
51ce22ba89d1 updated for version 7.3.310
Bram Moolenaar <bram@vim.org>
parents: 3054
diff changeset
2717 #if defined(FEAT_TOOLBAR) || defined(PROTO)
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2718 void
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2719 gui_mch_show_toolbar(int showit)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2720 {
3076
51ce22ba89d1 updated for version 7.3.310
Bram Moolenaar <bram@vim.org>
parents: 3054
diff changeset
2721 if (showit)
51ce22ba89d1 updated for version 7.3.310
Bram Moolenaar <bram@vim.org>
parents: 3054
diff changeset
2722 PtRealizeWidget(gui.vimToolBar);
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2723 else
3076
51ce22ba89d1 updated for version 7.3.310
Bram Moolenaar <bram@vim.org>
parents: 3054
diff changeset
2724 PtUnrealizeWidget(gui.vimToolBar);
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2725 }
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2726 #endif
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2727
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2728 /****************************************************************************/
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2729 /* Fonts */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2730
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2731 static GuiFont
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2732 gui_ph_get_font(
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2733 char_u *font_name,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2734 int_u font_flags,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2735 int_u font_size,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2736 /* Check whether the resulting font has the font flags and size that
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2737 * was asked for */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2738 int_u enforce
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2739 )
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2740 {
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2741 char_u *font_tag;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2742 FontQueryInfo info;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2743 int_u style;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2744
3076
51ce22ba89d1 updated for version 7.3.310
Bram Moolenaar <bram@vim.org>
parents: 3054
diff changeset
2745 font_tag = alloc(MAX_FONT_TAG);
51ce22ba89d1 updated for version 7.3.310
Bram Moolenaar <bram@vim.org>
parents: 3054
diff changeset
2746 if (font_tag != NULL)
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2747 {
3076
51ce22ba89d1 updated for version 7.3.310
Bram Moolenaar <bram@vim.org>
parents: 3054
diff changeset
2748 if (PfGenerateFontName(font_name, font_flags, font_size,
51ce22ba89d1 updated for version 7.3.310
Bram Moolenaar <bram@vim.org>
parents: 3054
diff changeset
2749 font_tag) != NULL)
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2750 {
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2751 /* Enforce some limits on the font used */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2752 style = PHFONT_INFO_FIXED;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2753
3076
51ce22ba89d1 updated for version 7.3.310
Bram Moolenaar <bram@vim.org>
parents: 3054
diff changeset
2754 if (enforce & PF_STYLE_BOLD)
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2755 style |= PHFONT_INFO_BOLD;
3076
51ce22ba89d1 updated for version 7.3.310
Bram Moolenaar <bram@vim.org>
parents: 3054
diff changeset
2756 if (enforce & PF_STYLE_ANTIALIAS)
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2757 style |= PHFONT_INFO_ALIAS;
3076
51ce22ba89d1 updated for version 7.3.310
Bram Moolenaar <bram@vim.org>
parents: 3054
diff changeset
2758 if (enforce & PF_STYLE_ITALIC)
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2759 style |= PHFONT_INFO_ITALIC;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2760
3076
51ce22ba89d1 updated for version 7.3.310
Bram Moolenaar <bram@vim.org>
parents: 3054
diff changeset
2761 PfQueryFontInfo(font_tag, &info);
51ce22ba89d1 updated for version 7.3.310
Bram Moolenaar <bram@vim.org>
parents: 3054
diff changeset
2762
51ce22ba89d1 updated for version 7.3.310
Bram Moolenaar <bram@vim.org>
parents: 3054
diff changeset
2763 if (info.size == 0)
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2764 font_size = 0;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2765
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2766 /* Make sure font size matches, and that the font style
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2767 * at least has the bits we're checking for */
3076
51ce22ba89d1 updated for version 7.3.310
Bram Moolenaar <bram@vim.org>
parents: 3054
diff changeset
2768 if (font_size == info.size &&
51ce22ba89d1 updated for version 7.3.310
Bram Moolenaar <bram@vim.org>
parents: 3054
diff changeset
2769 style == (info.style & style))
2980
847733973bfd updated for version 7.3.262
Bram Moolenaar <bram@vim.org>
parents: 2684
diff changeset
2770 return (GuiFont)font_tag;
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2771 }
3076
51ce22ba89d1 updated for version 7.3.310
Bram Moolenaar <bram@vim.org>
parents: 3054
diff changeset
2772 vim_free(font_tag);
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2773 }
2980
847733973bfd updated for version 7.3.262
Bram Moolenaar <bram@vim.org>
parents: 2684
diff changeset
2774 return NULL;
7
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 * Split up the vim font name
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2779 *
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2780 * vim_font is in the form of
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2781 * <name>:s<height>:a:b:i
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2782 *
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2783 * a = antialias
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2784 * b = bold
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2785 * i = italic
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2786 *
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2787 */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2788
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2789 static int
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2790 gui_ph_parse_font_name(
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2791 char_u *vim_font,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2792 char_u **font_name,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2793 int_u *font_flags,
3076
51ce22ba89d1 updated for version 7.3.310
Bram Moolenaar <bram@vim.org>
parents: 3054
diff changeset
2794 int_u *font_size)
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2795 {
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2796 char_u *mark;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2797 int_u name_len, size;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2798
3076
51ce22ba89d1 updated for version 7.3.310
Bram Moolenaar <bram@vim.org>
parents: 3054
diff changeset
2799 mark = vim_strchr(vim_font, ':');
51ce22ba89d1 updated for version 7.3.310
Bram Moolenaar <bram@vim.org>
parents: 3054
diff changeset
2800 if (mark == NULL)
51ce22ba89d1 updated for version 7.3.310
Bram Moolenaar <bram@vim.org>
parents: 3054
diff changeset
2801 name_len = STRLEN(vim_font);
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2802 else
3076
51ce22ba89d1 updated for version 7.3.310
Bram Moolenaar <bram@vim.org>
parents: 3054
diff changeset
2803 name_len = (int_u) (mark - vim_font);
51ce22ba89d1 updated for version 7.3.310
Bram Moolenaar <bram@vim.org>
parents: 3054
diff changeset
2804
51ce22ba89d1 updated for version 7.3.310
Bram Moolenaar <bram@vim.org>
parents: 3054
diff changeset
2805 *font_name = vim_strnsave(vim_font, name_len);
2998
32a52f06f33b updated for version 7.3.271
Bram Moolenaar <bram@vim.org>
parents: 2980
diff changeset
2806 if (*font_name != NULL)
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2807 {
2998
32a52f06f33b updated for version 7.3.271
Bram Moolenaar <bram@vim.org>
parents: 2980
diff changeset
2808 if (mark != NULL)
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2809 {
2998
32a52f06f33b updated for version 7.3.271
Bram Moolenaar <bram@vim.org>
parents: 2980
diff changeset
2810 while (*mark != NUL && *mark++ == ':')
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2811 {
2998
32a52f06f33b updated for version 7.3.271
Bram Moolenaar <bram@vim.org>
parents: 2980
diff changeset
2812 switch (tolower(*mark++))
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2813 {
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2814 case 'a': *font_flags |= PF_STYLE_ANTIALIAS; break;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2815 case 'b': *font_flags |= PF_STYLE_BOLD; break;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2816 case 'i': *font_flags |= PF_STYLE_ITALIC; break;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2817
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2818 case 's':
3076
51ce22ba89d1 updated for version 7.3.310
Bram Moolenaar <bram@vim.org>
parents: 3054
diff changeset
2819 size = getdigits(&mark);
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2820 /* Restrict the size to some vague limits */
2998
32a52f06f33b updated for version 7.3.271
Bram Moolenaar <bram@vim.org>
parents: 2980
diff changeset
2821 if (size < 1 || size > 100)
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2822 size = 8;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2823
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2824 *font_size = size;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2825 break;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2826
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2827 default:
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2828 break;
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 }
2980
847733973bfd updated for version 7.3.262
Bram Moolenaar <bram@vim.org>
parents: 2684
diff changeset
2832 return TRUE;
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2833 }
2980
847733973bfd updated for version 7.3.262
Bram Moolenaar <bram@vim.org>
parents: 2684
diff changeset
2834 return FALSE;
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2835 }
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2836
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2837 int
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2838 gui_mch_init_font(char_u *vim_font_name, int fontset)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2839 {
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2840 char_u *font_tag;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2841 char_u *font_name = NULL;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2842 int_u font_flags = 0;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2843 int_u font_size = 12;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2844
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2845 FontQueryInfo info;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2846 PhRect_t extent;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2847
2998
32a52f06f33b updated for version 7.3.271
Bram Moolenaar <bram@vim.org>
parents: 2980
diff changeset
2848 if (vim_font_name == NULL)
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2849 {
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2850 /* Default font */
1922
e65e50609469 updated for version 7.2-219
vimboss
parents: 1214
diff changeset
2851 vim_font_name = "PC Terminal";
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2852 }
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2853
3076
51ce22ba89d1 updated for version 7.3.310
Bram Moolenaar <bram@vim.org>
parents: 3054
diff changeset
2854 if (STRCMP(vim_font_name, "*") == 0)
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2855 {
3076
51ce22ba89d1 updated for version 7.3.310
Bram Moolenaar <bram@vim.org>
parents: 3054
diff changeset
2856 font_tag = PtFontSelection(gui.vimWindow, NULL, NULL,
51ce22ba89d1 updated for version 7.3.310
Bram Moolenaar <bram@vim.org>
parents: 3054
diff changeset
2857 "pcterm12", -1, PHFONT_FIXED, NULL);
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2858
2998
32a52f06f33b updated for version 7.3.271
Bram Moolenaar <bram@vim.org>
parents: 2980
diff changeset
2859 if (font_tag == NULL)
2980
847733973bfd updated for version 7.3.262
Bram Moolenaar <bram@vim.org>
parents: 2684
diff changeset
2860 return FAIL;
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2861
3076
51ce22ba89d1 updated for version 7.3.310
Bram Moolenaar <bram@vim.org>
parents: 3054
diff changeset
2862 gui_mch_free_font(gui.norm_font);
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2863 gui.norm_font = font_tag;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2864
3076
51ce22ba89d1 updated for version 7.3.310
Bram Moolenaar <bram@vim.org>
parents: 3054
diff changeset
2865 PfQueryFontInfo(font_tag, &info);
51ce22ba89d1 updated for version 7.3.310
Bram Moolenaar <bram@vim.org>
parents: 3054
diff changeset
2866 font_name = vim_strsave(info.font);
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2867 }
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2868 else
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2869 {
3076
51ce22ba89d1 updated for version 7.3.310
Bram Moolenaar <bram@vim.org>
parents: 3054
diff changeset
2870 if (gui_ph_parse_font_name(vim_font_name, &font_name, &font_flags,
51ce22ba89d1 updated for version 7.3.310
Bram Moolenaar <bram@vim.org>
parents: 3054
diff changeset
2871 &font_size) == FALSE)
2980
847733973bfd updated for version 7.3.262
Bram Moolenaar <bram@vim.org>
parents: 2684
diff changeset
2872 return FAIL;
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2873
3076
51ce22ba89d1 updated for version 7.3.310
Bram Moolenaar <bram@vim.org>
parents: 3054
diff changeset
2874 font_tag = gui_ph_get_font(font_name, font_flags, font_size, 0);
2998
32a52f06f33b updated for version 7.3.271
Bram Moolenaar <bram@vim.org>
parents: 2980
diff changeset
2875 if (font_tag == NULL)
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2876 {
3076
51ce22ba89d1 updated for version 7.3.310
Bram Moolenaar <bram@vim.org>
parents: 3054
diff changeset
2877 vim_free(font_name);
2980
847733973bfd updated for version 7.3.262
Bram Moolenaar <bram@vim.org>
parents: 2684
diff changeset
2878 return FAIL;
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2879 }
37
fdf55076c53f updated for version 7.0022
vimboss
parents: 7
diff changeset
2880
3076
51ce22ba89d1 updated for version 7.3.310
Bram Moolenaar <bram@vim.org>
parents: 3054
diff changeset
2881 gui_mch_free_font(gui.norm_font);
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2882 gui.norm_font = font_tag;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2883 }
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2884
3076
51ce22ba89d1 updated for version 7.3.310
Bram Moolenaar <bram@vim.org>
parents: 3054
diff changeset
2885 gui_mch_free_font(gui.bold_font);
51ce22ba89d1 updated for version 7.3.310
Bram Moolenaar <bram@vim.org>
parents: 3054
diff changeset
2886 gui.bold_font = gui_ph_get_font(font_name, font_flags | PF_STYLE_BOLD,
51ce22ba89d1 updated for version 7.3.310
Bram Moolenaar <bram@vim.org>
parents: 3054
diff changeset
2887 font_size, PF_STYLE_BOLD);
51ce22ba89d1 updated for version 7.3.310
Bram Moolenaar <bram@vim.org>
parents: 3054
diff changeset
2888
51ce22ba89d1 updated for version 7.3.310
Bram Moolenaar <bram@vim.org>
parents: 3054
diff changeset
2889 gui_mch_free_font(gui.ital_font);
51ce22ba89d1 updated for version 7.3.310
Bram Moolenaar <bram@vim.org>
parents: 3054
diff changeset
2890 gui.ital_font = gui_ph_get_font(font_name, font_flags | PF_STYLE_ITALIC,
51ce22ba89d1 updated for version 7.3.310
Bram Moolenaar <bram@vim.org>
parents: 3054
diff changeset
2891 font_size, PF_STYLE_ITALIC);
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2892
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2893 /* This extent was brought to you by the letter 'g' */
3076
51ce22ba89d1 updated for version 7.3.310
Bram Moolenaar <bram@vim.org>
parents: 3054
diff changeset
2894 PfExtentText(&extent, NULL, font_tag, "g", 1);
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2895
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2896 gui.char_width = extent.lr.x - extent.ul.x + 1;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2897 gui.char_height = (- extent.ul.y) + extent.lr.y + 1;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2898 gui.char_ascent = - extent.ul.y;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2899
3076
51ce22ba89d1 updated for version 7.3.310
Bram Moolenaar <bram@vim.org>
parents: 3054
diff changeset
2900 vim_free(font_name);
2980
847733973bfd updated for version 7.3.262
Bram Moolenaar <bram@vim.org>
parents: 2684
diff changeset
2901 return OK;
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2902 }
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2903
444
d0d15b184c56 updated for version 7.0116
vimboss
parents: 205
diff changeset
2904 /*
d0d15b184c56 updated for version 7.0116
vimboss
parents: 205
diff changeset
2905 * Adjust gui.char_height (after 'linespace' was changed).
d0d15b184c56 updated for version 7.0116
vimboss
parents: 205
diff changeset
2906 */
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2907 int
444
d0d15b184c56 updated for version 7.0116
vimboss
parents: 205
diff changeset
2908 gui_mch_adjust_charheight(void)
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2909 {
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2910 FontQueryInfo info;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2911
3076
51ce22ba89d1 updated for version 7.3.310
Bram Moolenaar <bram@vim.org>
parents: 3054
diff changeset
2912 PfQueryFontInfo(gui.norm_font, &info);
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2913
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2914 gui.char_height = - info.ascender + info.descender + p_linespace;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2915 gui.char_ascent = - info.ascender + p_linespace / 2;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2916
2980
847733973bfd updated for version 7.3.262
Bram Moolenaar <bram@vim.org>
parents: 2684
diff changeset
2917 return OK;
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2918 }
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2919
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2920 GuiFont
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2921 gui_mch_get_font(char_u *vim_font_name, int report_error)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2922 {
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2923 char_u *font_name;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2924 char_u *font_tag;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2925 int_u font_size = 12;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2926 int_u font_flags = 0;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2927
3076
51ce22ba89d1 updated for version 7.3.310
Bram Moolenaar <bram@vim.org>
parents: 3054
diff changeset
2928 if (gui_ph_parse_font_name(vim_font_name, &font_name, &font_flags,
51ce22ba89d1 updated for version 7.3.310
Bram Moolenaar <bram@vim.org>
parents: 3054
diff changeset
2929 &font_size) != FALSE)
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2930 {
3076
51ce22ba89d1 updated for version 7.3.310
Bram Moolenaar <bram@vim.org>
parents: 3054
diff changeset
2931 font_tag = gui_ph_get_font(font_name, font_flags, font_size, -1);
51ce22ba89d1 updated for version 7.3.310
Bram Moolenaar <bram@vim.org>
parents: 3054
diff changeset
2932 vim_free(font_name);
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2933
2998
32a52f06f33b updated for version 7.3.271
Bram Moolenaar <bram@vim.org>
parents: 2980
diff changeset
2934 if (font_tag != NULL)
2980
847733973bfd updated for version 7.3.262
Bram Moolenaar <bram@vim.org>
parents: 2684
diff changeset
2935 return (GuiFont)font_tag;
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2936 }
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2937
2998
32a52f06f33b updated for version 7.3.271
Bram Moolenaar <bram@vim.org>
parents: 2980
diff changeset
2938 if (report_error)
3076
51ce22ba89d1 updated for version 7.3.310
Bram Moolenaar <bram@vim.org>
parents: 3054
diff changeset
2939 EMSG2(e_font, vim_font_name);
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2940
2980
847733973bfd updated for version 7.3.262
Bram Moolenaar <bram@vim.org>
parents: 2684
diff changeset
2941 return FAIL;
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2942 }
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2943
44
af1bcb9a13c0 updated for version 7.0027
vimboss
parents: 37
diff changeset
2944 #if defined(FEAT_EVAL) || defined(PROTO)
37
fdf55076c53f updated for version 7.0022
vimboss
parents: 7
diff changeset
2945 /*
fdf55076c53f updated for version 7.0022
vimboss
parents: 7
diff changeset
2946 * Return the name of font "font" in allocated memory.
fdf55076c53f updated for version 7.0022
vimboss
parents: 7
diff changeset
2947 * Don't know how to get the actual name, thus use the provided name.
fdf55076c53f updated for version 7.0022
vimboss
parents: 7
diff changeset
2948 */
fdf55076c53f updated for version 7.0022
vimboss
parents: 7
diff changeset
2949 char_u *
7823
bcef391c101c commit https://github.com/vim/vim/commit/68c2f638e65d914dc6e84eb7ce2624f08af525c0
Christian Brabandt <cb@256bit.org>
parents: 4352
diff changeset
2950 gui_mch_get_fontname(GuiFont font, char_u *name)
37
fdf55076c53f updated for version 7.0022
vimboss
parents: 7
diff changeset
2951 {
fdf55076c53f updated for version 7.0022
vimboss
parents: 7
diff changeset
2952 if (name == NULL)
fdf55076c53f updated for version 7.0022
vimboss
parents: 7
diff changeset
2953 return NULL;
fdf55076c53f updated for version 7.0022
vimboss
parents: 7
diff changeset
2954 return vim_strsave(name);
fdf55076c53f updated for version 7.0022
vimboss
parents: 7
diff changeset
2955 }
44
af1bcb9a13c0 updated for version 7.0027
vimboss
parents: 37
diff changeset
2956 #endif
37
fdf55076c53f updated for version 7.0022
vimboss
parents: 7
diff changeset
2957
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2958 void
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2959 gui_mch_set_font(GuiFont font)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2960 {
3076
51ce22ba89d1 updated for version 7.3.310
Bram Moolenaar <bram@vim.org>
parents: 3054
diff changeset
2961 PgSetFont(font);
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2962 }
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2963
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2964 void
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2965 gui_mch_free_font(GuiFont font)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2966 {
3076
51ce22ba89d1 updated for version 7.3.310
Bram Moolenaar <bram@vim.org>
parents: 3054
diff changeset
2967 vim_free(font);
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2968 }
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2969